WvStreams
Main Page
Modules
Classes
Files
File List
File Members
include
wvdigest.h
1
/* -*- Mode: C++ -*-
2
* Worldvisions Tunnel Vision Software:
3
* Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4
*
5
* MD5, SHA-1 and HMAC digest abstractions.
6
*/
7
#ifndef __WVDIGEST_H
8
#define __WVDIGEST_H
9
10
#include "wvencoder.h"
11
#include <stdint.h>
12
13
struct
env_md_st;
14
struct
env_md_ctx_st;
15
struct
hmac_ctx_st;
16
33
class
WvDigest
:
public
WvEncoder
34
{
35
public
:
37
virtual
size_t
digestsize
()
const
= 0;
38
};
39
40
45
class
WvEVPMDDigest
:
public
WvDigest
46
{
47
friend
class
WvHMACDigest
;
48
const
env_md_st *evpmd;
49
env_md_ctx_st *evpctx;
50
bool
active;
51
52
public
:
53
virtual
~
WvEVPMDDigest
();
54
virtual
size_t
digestsize
()
const
;
55
56
protected
:
57
WvEVPMDDigest
(
const
env_md_st *_evpmd);
58
virtual
bool
_encode
(
WvBuf
&inbuf,
WvBuf
&outbuf,
59
bool
flush
);
// consumes input
60
virtual
bool
_finish
(
WvBuf
&outbuf);
// outputs digest
61
virtual
bool
_reset
();
// supported: resets digest value
62
63
const
env_md_st *getevpmd()
64
{
return
evpmd; }
65
66
private
:
67
void
cleanup();
68
};
69
70
75
class
WvMD5Digest
:
public
WvEVPMDDigest
76
{
77
public
:
79
WvMD5Digest
();
80
virtual
~
WvMD5Digest
() { }
81
};
82
83
88
class
WvSHA1Digest
:
public
WvEVPMDDigest
89
{
90
public
:
92
WvSHA1Digest
();
93
virtual
~
WvSHA1Digest
() { }
94
};
95
96
102
class
WvHMACDigest
:
public
WvDigest
103
{
104
WvEVPMDDigest
*digest;
105
unsigned
char
*key;
106
size_t
keysize;
107
hmac_ctx_st *hmacctx;
108
bool
active;
109
110
public
:
119
WvHMACDigest
(
WvEVPMDDigest
*_digest,
const
void
*_key,
120
size_t
_keysize);
121
virtual
~
WvHMACDigest
();
122
virtual
size_t
digestsize
()
const
;
123
124
protected
:
125
virtual
bool
_encode
(
WvBuf
&inbuf,
WvBuf
&outbuf,
126
bool
flush
);
// consumes input
127
virtual
bool
_finish
(
WvBuf
&outbuf);
// outputs digest
128
virtual
bool
_reset
();
// supported: resets digest value
129
130
private
:
131
void
cleanup();
132
};
133
134
139
class
WvCrc32Digest
:
public
WvDigest
140
{
141
uint32_t crc;
142
143
public
:
144
WvCrc32Digest
();
145
virtual
~
WvCrc32Digest
() { }
146
147
virtual
size_t
digestsize
()
const
;
148
virtual
bool
_encode
(
WvBuf
&inbuf,
WvBuf
&outbuf,
149
bool
flush
);
// consumes input
150
virtual
bool
_finish
(
WvBuf
&outbuf);
// outputs digest
151
virtual
bool
_reset
();
// supported: resets digest value
152
};
153
154
159
class
WvAdler32Digest
:
public
WvDigest
160
{
161
uint32_t crc;
162
163
public
:
164
WvAdler32Digest
();
165
virtual
~
WvAdler32Digest
() { }
166
167
virtual
size_t
digestsize
()
const
;
168
virtual
bool
_encode
(
WvBuf
&inbuf,
WvBuf
&outbuf,
169
bool
flush
);
// consumes input
170
virtual
bool
_finish
(
WvBuf
&outbuf);
// outputs digest
171
virtual
bool
_reset
();
// supported: resets digest value
172
};
173
174
#endif // __WVDIGEST_H
Generated on Thu Oct 31 2013 23:17:04 for WvStreams by
1.8.4