xref: /netbsd-src/external/bsd/openldap/dist/include/lutil_hash.h (revision 549b59ed3ccf0d36d3097190a0db27b770f3a839)
1*549b59edSchristos /*	$NetBSD: lutil_hash.h,v 1.3 2021/08/14 16:14:55 christos Exp $	*/
24e6df137Slukem 
3d11b170bStron /* $OpenLDAP$ */
42de962bdSlukem /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
52de962bdSlukem  *
6*549b59edSchristos  * Copyright 1998-2021 The OpenLDAP Foundation.
72de962bdSlukem  * All rights reserved.
82de962bdSlukem  *
92de962bdSlukem  * Redistribution and use in source and binary forms, with or without
102de962bdSlukem  * modification, are permitted only as authorized by the OpenLDAP
112de962bdSlukem  * Public License.
122de962bdSlukem  *
132de962bdSlukem  * A copy of this license is available in file LICENSE in the
142de962bdSlukem  * top-level directory of the distribution or, alternatively, at
152de962bdSlukem  * <http://www.OpenLDAP.org/license.html>.
162de962bdSlukem  */
172de962bdSlukem 
182de962bdSlukem #ifndef _LUTIL_HASH_H_
192de962bdSlukem #define _LUTIL_HASH_H_
202de962bdSlukem 
212de962bdSlukem #include <lber_types.h>
222de962bdSlukem 
232de962bdSlukem LDAP_BEGIN_DECL
242de962bdSlukem 
252de962bdSlukem #define LUTIL_HASH_BYTES 4
262de962bdSlukem 
27*549b59edSchristos #ifdef HAVE_LONG_LONG
28*549b59edSchristos 
29*549b59edSchristos typedef union lutil_HASHContext {
302de962bdSlukem 	ber_uint_t hash;
31*549b59edSchristos 	unsigned long long hash64;
32*549b59edSchristos } lutil_HASH_CTX;
33*549b59edSchristos 
34*549b59edSchristos #else /* !HAVE_LONG_LONG */
35*549b59edSchristos 
36*549b59edSchristos typedef struct lutil_HASHContext {
37*549b59edSchristos 	ber_uint_t hash;
38*549b59edSchristos } lutil_HASH_CTX;
39*549b59edSchristos 
40*549b59edSchristos #endif /* HAVE_LONG_LONG */
412de962bdSlukem 
422de962bdSlukem LDAP_LUTIL_F( void )
432de962bdSlukem lutil_HASHInit LDAP_P((
44*549b59edSchristos 	lutil_HASH_CTX *context));
452de962bdSlukem 
462de962bdSlukem LDAP_LUTIL_F( void )
472de962bdSlukem lutil_HASHUpdate LDAP_P((
48*549b59edSchristos 	lutil_HASH_CTX *context,
492de962bdSlukem 	unsigned char const *buf,
502de962bdSlukem 	ber_len_t len));
512de962bdSlukem 
522de962bdSlukem LDAP_LUTIL_F( void )
532de962bdSlukem lutil_HASHFinal LDAP_P((
542de962bdSlukem 	unsigned char digest[LUTIL_HASH_BYTES],
55*549b59edSchristos 	lutil_HASH_CTX *context));
562de962bdSlukem 
57*549b59edSchristos #ifdef HAVE_LONG_LONG
58*549b59edSchristos 
59*549b59edSchristos #define LUTIL_HASH64_BYTES	8
60*549b59edSchristos 
61*549b59edSchristos LDAP_LUTIL_F( void )
62*549b59edSchristos lutil_HASH64Init LDAP_P((
63*549b59edSchristos 	lutil_HASH_CTX *context));
64*549b59edSchristos 
65*549b59edSchristos LDAP_LUTIL_F( void )
66*549b59edSchristos lutil_HASH64Update LDAP_P((
67*549b59edSchristos 	lutil_HASH_CTX *context,
68*549b59edSchristos 	unsigned char const *buf,
69*549b59edSchristos 	ber_len_t len));
70*549b59edSchristos 
71*549b59edSchristos LDAP_LUTIL_F( void )
72*549b59edSchristos lutil_HASH64Final LDAP_P((
73*549b59edSchristos 	unsigned char digest[LUTIL_HASH64_BYTES],
74*549b59edSchristos 	lutil_HASH_CTX *context));
75*549b59edSchristos 
76*549b59edSchristos #endif /* HAVE_LONG_LONG */
772de962bdSlukem 
782de962bdSlukem LDAP_END_DECL
792de962bdSlukem 
802de962bdSlukem #endif /* _LUTIL_HASH_H_ */
81