1 /* $NetBSD: lutil_hash.h,v 1.3 2021/08/14 16:14:55 christos Exp $ */ 2 3 /* $OpenLDAP$ */ 4 /* This work is part of OpenLDAP Software <http://www.openldap.org/>. 5 * 6 * Copyright 1998-2021 The OpenLDAP Foundation. 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted only as authorized by the OpenLDAP 11 * Public License. 12 * 13 * A copy of this license is available in file LICENSE in the 14 * top-level directory of the distribution or, alternatively, at 15 * <http://www.OpenLDAP.org/license.html>. 16 */ 17 18 #ifndef _LUTIL_HASH_H_ 19 #define _LUTIL_HASH_H_ 20 21 #include <lber_types.h> 22 23 LDAP_BEGIN_DECL 24 25 #define LUTIL_HASH_BYTES 4 26 27 #ifdef HAVE_LONG_LONG 28 29 typedef union lutil_HASHContext { 30 ber_uint_t hash; 31 unsigned long long hash64; 32 } lutil_HASH_CTX; 33 34 #else /* !HAVE_LONG_LONG */ 35 36 typedef struct lutil_HASHContext { 37 ber_uint_t hash; 38 } lutil_HASH_CTX; 39 40 #endif /* HAVE_LONG_LONG */ 41 42 LDAP_LUTIL_F( void ) 43 lutil_HASHInit LDAP_P(( 44 lutil_HASH_CTX *context)); 45 46 LDAP_LUTIL_F( void ) 47 lutil_HASHUpdate LDAP_P(( 48 lutil_HASH_CTX *context, 49 unsigned char const *buf, 50 ber_len_t len)); 51 52 LDAP_LUTIL_F( void ) 53 lutil_HASHFinal LDAP_P(( 54 unsigned char digest[LUTIL_HASH_BYTES], 55 lutil_HASH_CTX *context)); 56 57 #ifdef HAVE_LONG_LONG 58 59 #define LUTIL_HASH64_BYTES 8 60 61 LDAP_LUTIL_F( void ) 62 lutil_HASH64Init LDAP_P(( 63 lutil_HASH_CTX *context)); 64 65 LDAP_LUTIL_F( void ) 66 lutil_HASH64Update LDAP_P(( 67 lutil_HASH_CTX *context, 68 unsigned char const *buf, 69 ber_len_t len)); 70 71 LDAP_LUTIL_F( void ) 72 lutil_HASH64Final LDAP_P(( 73 unsigned char digest[LUTIL_HASH64_BYTES], 74 lutil_HASH_CTX *context)); 75 76 #endif /* HAVE_LONG_LONG */ 77 78 LDAP_END_DECL 79 80 #endif /* _LUTIL_HASH_H_ */ 81