8 #include "wvserialize.h" 9 #include <openssl/evp.h> 10 #include <openssl/hmac.h> 16 WvEVPMDDigest::WvEVPMDDigest(
const env_md_st *_evpmd) :
17 evpmd(_evpmd), active(false)
19 evpctx =
new EVP_MD_CTX;
24 WvEVPMDDigest::~WvEVPMDDigest()
37 const unsigned char *data = inbuf.
get(len);
38 EVP_DigestUpdate(evpctx, data, len);
47 unsigned char digest[EVP_MAX_MD_SIZE];
49 EVP_DigestFinal(evpctx, digest, & size);
51 outbuf.put(digest, size);
63 EVP_DigestInit(evpctx, (env_md_st *)evpmd);
69 void WvEVPMDDigest::cleanup()
74 unsigned char digest[EVP_MAX_MD_SIZE];
75 EVP_DigestFinal(evpctx, digest, NULL);
82 return EVP_MD_size((env_md_st *)evpmd);
102 const void *_key,
size_t _keysize) :
103 digest(_digest), keysize(_keysize), active(false)
105 key =
new unsigned char[keysize];
106 memcpy(key, _key, keysize);
107 hmacctx =
new HMAC_CTX;
111 WvHMACDigest::~WvHMACDigest()
126 const unsigned char *data = inbuf.
get(len);
127 HMAC_Update(hmacctx, data, len);
136 unsigned char digest[EVP_MAX_MD_SIZE];
138 HMAC_Final(hmacctx, digest, & size);
140 outbuf.put(digest, size);
148 HMAC_Init(hmacctx, key, keysize, (env_md_st *)digest->getevpmd());
154 void WvHMACDigest::cleanup()
159 unsigned char digest[EVP_MAX_MD_SIZE];
160 HMAC_Final(hmacctx, digest, NULL);
172 WvCrc32Digest::WvCrc32Digest()
182 crc = crc32(crc, inbuf.
get(len), len);
189 wv_serialize(outbuf, crc);
196 crc = crc32(0, NULL, 0);
207 WvAdler32Digest::WvAdler32Digest()
217 crc = adler32(crc, inbuf.
get(len), len);
224 wv_serialize(outbuf, crc);
231 crc = adler32(0, NULL, 0);
bool flush(WvBuf &inbuf, WvBuf &outbuf, bool finish=false)
Flushes the encoder and optionally finishes it.
WvMD5Digest()
Creates an MD5 digest encoder.
virtual size_t digestsize() const
Returns the number of bytes in the message digest.
virtual bool _reset()
Template method implementation of reset().
virtual bool _finish(WvBuf &outbuf)
Template method implementation of finish().
virtual size_t digestsize() const
Returns the number of bytes in the message digest.
WvSHA1Digest()
Creates an SHA1 digest encoder.
size_t optgettable() const
Returns the optimal maximum number of elements in the buffer currently available for reading without ...
virtual size_t digestsize() const
Returns the number of bytes in the message digest.
virtual bool _finish(WvBuf &outbuf)
Template method implementation of finish().
virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush)
Template method implementation of encode().
virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush)
Template method implementation of encode().
WvHMACDigest(WvEVPMDDigest *_digest, const void *_key, size_t _keysize)
Creates an HMAC digest encoder.
virtual size_t digestsize() const
Returns the number of bytes in the message digest.
Specialization of WvBufBase for unsigned char type buffers intended for use with raw memory buffers...
#define deletev
Remplacement for delete[].
virtual bool _finish(WvBuf &outbuf)
Template method implementation of finish().
virtual bool _reset()
Template method implementation of reset().
virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush)
Template method implementation of encode().
virtual bool _reset()
Template method implementation of reset().
virtual bool _finish(WvBuf &outbuf)
Template method implementation of finish().
const T * get(size_t count)
Reads exactly the specified number of elements and returns a pointer to a storage location owned by t...
virtual bool _encode(WvBuf &inbuf, WvBuf &outbuf, bool flush)
Template method implementation of encode().
virtual bool _reset()
Template method implementation of reset().