1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 
5 #ifndef _HASH_H_
6 #define _HASH_H_
7 
8 #include "seccomon.h"
9 #include "hasht.h"
10 #include "secoidt.h"
11 
12 SEC_BEGIN_PROTOS
13 
14 /*
15 ** Generic hash api.
16 */
17 
18 extern unsigned int HASH_ResultLen(HASH_HashType type);
19 
20 extern unsigned int HASH_ResultLenContext(HASHContext *context);
21 
22 extern unsigned int HASH_ResultLenByOidTag(SECOidTag hashOid);
23 
24 extern SECStatus HASH_HashBuf(HASH_HashType type,
25                               unsigned char *dest,
26                               const unsigned char *src,
27                               PRUint32 src_len);
28 
29 extern HASHContext *HASH_Create(HASH_HashType type);
30 
31 extern HASHContext *HASH_Clone(HASHContext *context);
32 
33 extern void HASH_Destroy(HASHContext *context);
34 
35 extern void HASH_Begin(HASHContext *context);
36 
37 extern void HASH_Update(HASHContext *context,
38                         const unsigned char *src,
39                         unsigned int len);
40 
41 extern void HASH_End(HASHContext *context,
42                      unsigned char *result,
43                      unsigned int *result_len,
44                      unsigned int max_result_len);
45 
46 extern HASH_HashType HASH_GetType(HASHContext *context);
47 
48 extern const SECHashObject *HASH_GetHashObject(HASH_HashType type);
49 
50 extern const SECHashObject *HASH_GetHashObjectByOidTag(SECOidTag hashOid);
51 
52 extern HASH_HashType HASH_GetHashTypeByOidTag(SECOidTag hashOid);
53 extern SECOidTag HASH_GetHashOidTagByHMACOidTag(SECOidTag hmacOid);
54 extern SECOidTag HASH_GetHMACOidTagByHashOidTag(SECOidTag hashOid);
55 
56 SEC_END_PROTOS
57 
58 #endif /* _HASH_H_ */
59