13#define MD5_HASH_LENGTH (16)
14#define SHA1_HASH_LENGTH (20)
15#define SHA2_HASH_LENGTH (32)
16#define TLS1_HASH_LENGTH MD5_HASH_LENGTH + SHA1_HASH_LENGTH
17#define TLS1_2_HASH_LENGTH SHA1_HASH_LENGTH + SHA2_HASH_LENGTH
18#define MAX_HASH_LENGTH SHA2_HASH_LENGTH
19#define MAX_COMBINED_HASH_LENGTH TLS1_HASH_LENGTH
21struct __vtable_HASH_CTX_t;
25 __vtable_HASH_CTX_t *__vtable;
28 void Update(
const unsigned char *data,
unsigned int len);
29 void Final(
unsigned char *digest);
30 int GetDigestLen()
const;
31 int GetOIDLen()
const;
32 const unsigned char *GetOID()
const;
35typedef void (HASH_CTX::*HashInitFn)();
36typedef void (HASH_CTX::*HashUpdateFn)(const unsigned char *, unsigned int);
37typedef void (HASH_CTX::*HashFinalFn)(unsigned char *);
38typedef int (HASH_CTX::*HashDigestLenFn)() const;
39typedef int (HASH_CTX::*HashOIDLenFn)() const;
40typedef const unsigned char *(HASH_CTX::*HashOIDFn)()
const;
42struct __vtable_HASH_CTX_t
47 HashDigestLenFn _GetDigestLen;
48 HashOIDLenFn _GetOIDLen;
52inline void HASH_CTX::Init()
54 (this->*(this->__vtable->_Init))();
56inline void HASH_CTX::Update(
const unsigned char *data,
unsigned int len)
58 (this->*(this->__vtable->_Update))(data, len);
61inline void HASH_CTX::Final(
unsigned char *digest)
63 (this->*(this->__vtable->_Final))(digest);
65inline int HASH_CTX::GetDigestLen()
const
67 return (this->*(this->__vtable->_GetDigestLen))();
69inline int HASH_CTX::GetOIDLen()
const
71 return (this->*(this->__vtable->_GetOIDLen))();
73inline const unsigned char *HASH_CTX::GetOID()
const
75 return (this->*(this->__vtable->_GetOID))();