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 21 struct __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;
35 typedef void (HASH_CTX::*HashInitFn)();
36 typedef void (HASH_CTX::*HashUpdateFn)(
const unsigned char *,
unsigned int);
37 typedef void (HASH_CTX::*HashFinalFn)(
unsigned char *);
38 typedef int (HASH_CTX::*HashDigestLenFn)()
const;
39 typedef int (HASH_CTX::*HashOIDLenFn)()
const;
40 typedef const unsigned char *(HASH_CTX::*HashOIDFn)()
const;
42 struct __vtable_HASH_CTX_t
47 HashDigestLenFn _GetDigestLen;
48 HashOIDLenFn _GetOIDLen;
52 inline void HASH_CTX::Init()
54 (this->*(this->__vtable->_Init))();
56 inline void HASH_CTX::Update(
const unsigned char *data,
unsigned int len)
58 (this->*(this->__vtable->_Update))(data, len);
61 inline void HASH_CTX::Final(
unsigned char *digest)
63 (this->*(this->__vtable->_Final))(digest);
65 inline int HASH_CTX::GetDigestLen()
const 67 return (this->*(this->__vtable->_GetDigestLen))();
69 inline int HASH_CTX::GetOIDLen()
const 71 return (this->*(this->__vtable->_GetOIDLen))();
73 inline const unsigned char *HASH_CTX::GetOID()
const 75 return (this->*(this->__vtable->_GetOID))();