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
#include <openssl/evp.h>
13
14
31
class
WvDigest
:
public
WvEncoder
32
{
33
public
:
35
virtual
size_t
digestsize
()
const
= 0;
36
};
37
38
43
class
WvEVPMDDigest
:
public
WvDigest
44
{
45
friend
class
WvHMACDigest
;
46
const
EVP_MD *evpmd;
47
EVP_MD_CTX *evpctx;
48
bool
active;
49
50
public
:
51
virtual
~
WvEVPMDDigest
();
52
virtual
size_t
digestsize
()
const
;
53
54
protected
:
55
WvEVPMDDigest
(
const
EVP_MD *_evpmd);
56
virtual
bool
_encode
(
WvBuf
&inbuf,
WvBuf
&outbuf,
57
bool
flush
);
// consumes input
58
virtual
bool
_finish
(
WvBuf
&outbuf);
// outputs digest
59
virtual
bool
_reset
();
// supported: resets digest value
60
61
const
EVP_MD *getevpmd()
62
{
return
evpmd; }
63
64
private
:
65
void
cleanup();
66
};
67
68
73
class
WvMD5Digest
:
public
WvEVPMDDigest
74
{
75
public
:
77
WvMD5Digest
();
78
virtual
~
WvMD5Digest
() { }
79
};
80
81
86
class
WvSHA1Digest
:
public
WvEVPMDDigest
87
{
88
public
:
90
WvSHA1Digest
();
91
virtual
~
WvSHA1Digest
() { }
92
};
93
94
100
class
WvHMACDigest
:
public
WvDigest
101
{
102
WvEVPMDDigest
*digest;
103
unsigned
char
*key;
104
size_t
keysize;
105
HMAC_CTX *hmacctx;
106
bool
active;
107
108
public
:
117
WvHMACDigest
(
WvEVPMDDigest
*_digest,
const
void
*_key,
118
size_t
_keysize);
119
virtual
~
WvHMACDigest
();
120
virtual
size_t
digestsize
()
const
;
121
122
protected
:
123
virtual
bool
_encode
(
WvBuf
&inbuf,
WvBuf
&outbuf,
124
bool
flush
);
// consumes input
125
virtual
bool
_finish
(
WvBuf
&outbuf);
// outputs digest
126
virtual
bool
_reset
();
// supported: resets digest value
127
128
private
:
129
void
cleanup();
130
};
131
132
137
class
WvCrc32Digest
:
public
WvDigest
138
{
139
uint32_t crc;
140
141
public
:
142
WvCrc32Digest
();
143
virtual
~
WvCrc32Digest
() { }
144
145
virtual
size_t
digestsize
()
const
;
146
virtual
bool
_encode
(
WvBuf
&inbuf,
WvBuf
&outbuf,
147
bool
flush
);
// consumes input
148
virtual
bool
_finish
(
WvBuf
&outbuf);
// outputs digest
149
virtual
bool
_reset
();
// supported: resets digest value
150
};
151
152
157
class
WvAdler32Digest
:
public
WvDigest
158
{
159
uint32_t crc;
160
161
public
:
162
WvAdler32Digest
();
163
virtual
~
WvAdler32Digest
() { }
164
165
virtual
size_t
digestsize
()
const
;
166
virtual
bool
_encode
(
WvBuf
&inbuf,
WvBuf
&outbuf,
167
bool
flush
);
// consumes input
168
virtual
bool
_finish
(
WvBuf
&outbuf);
// outputs digest
169
virtual
bool
_reset
();
// supported: resets digest value
170
};
171
172
#endif // __WVDIGEST_H
Generated on Wed Aug 28 2019 23:57:17 for WvStreams by
1.8.3.1