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