WvStreams
include/wvtripledes.h
1/* -*- Mode: C++ -*-
2 * Worldvisions Tunnel Vision Software:
3 * Copyright (C) 1997-2003 Net Integration Technologies, Inc.
4 *
5 * TripleDES cryptography abstractions.
6 */
7#ifndef __WVTRIPLEDES_H
8#define __WVTRIPLEDES_H
9
10#include "wvencoder.h"
11#include "wvencoderstream.h"
12#include "wvcrypto.h"
13
14#include <openssl/des.h>
15
23{
24public:
33
34 /*
35 * Creates a new TripleDES cipher encoder.
36 *
37 * "mode" is the encryption mode
38 * "key[1-3]" are the initial keys
39 */
40 WvTripleDESEncoder(Mode mode, const void *key1, const void *key2,
41 const void *key3);
42/* virtual ~WvTripleDESEncoder(); */
43
44 /*
45 * Sets the current TripleDES keys and resets the initialization
46 * vector to all nulls.
47 *
48 * "key[1-3]" are the new keys
49 */
50 virtual void setkey(const void *key)
51 {
52 setkey(key, (unsigned char*)key+DES_KEY_SZ,
53 (unsigned char *)key+(DES_KEY_SZ*2));
54 return;
55 }
56 virtual void setkey(const void *_key1, const void *_key2,
57 const void *_key3);
58
59 /*
60 * Sets the current TripleDES initialization vector.
61 *
62 * "iv" is the new IV must be 8 bytes
63 */
64 virtual void setiv(const void *iv);
65
66protected:
67 virtual bool _encode(WvBuf &in, WvBuf &out, bool flush);
68 virtual bool _reset(); // supported: restores most recently set
69 // key and initialization vector
70
71private:
72 Mode mode;
73 DES_cblock key;
74 DES_key_schedule deskey1;
75 DES_key_schedule deskey2;
76 DES_key_schedule deskey3;
77 DES_cblock ivec; // initialization vector
78 int ivecoff; // current offset into initvec
79};
80
81
92{
93public:
94 WvTripleDESStream(WvStream *_cloned, const void *_key1,
95 const void *_key2, const void *_key3,
98 virtual ~WvTripleDESStream() { }
99};
100
101#endif // __WVTRIPLEDES_H
WvEncoderStream chains a series of encoders on the input and output ports of the underlying stream to...
bool flush(WvBuf &inbuf, WvBuf &outbuf, bool finish=false)
Flushes the encoder and optionally finishes it.
Unified support for streams, that is, sequences of bytes that may or may not be ready for read/write ...
An encoder implementing the TripleDES encryption method.
virtual bool _reset()
Template method implementation of reset().
virtual bool _encode(WvBuf &in, WvBuf &out, bool flush)
Template method implementation of encode().
A crypto stream implementing TripleDES encryption.