/* * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. * * Licensed under the OpenSSL license (the "License"). You may not use * this file except in compliance with the License. You can obtain a copy * in the file LICENSE in the source distribution or at * https://www.openssl.org/source/license.html */ /* * Header for dynamic hash table routines Author - Eric Young */ #ifndef HEADER_LHASH_H # define HEADER_LHASH_H # include <openssl/e_os2.h> # include <openssl/bio.h> #ifdef __cplusplus extern "C" { #endif typedef struct lhash_node_st OPENSSL_LH_NODE; typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); typedef struct lhash_st OPENSSL_LHASH; /* * Macros for declaring and implementing type-safe wrappers for LHASH * callbacks. This way, callbacks can be provided to LHASH structures without * function pointer casting and the macro-defined callbacks provide * per-variable casting before deferring to the underlying type-specific * callbacks. NB: It is possible to place a "static" in front of both the * DECLARE and IMPLEMENT macros if the functions are strictly internal. */ /* First: "hash" functions */ # define DECLARE_LHASH_HASH_FN(name, o_type) \ unsigned long name##_LHASH_HASH(const void *); # define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ unsigned long name##_LHASH_HASH(const void *arg) { \ const o_type *a = arg; \ return name##_hash(a); } # define LHASH_HASH_FN(name) name##_LHASH_HASH /* Second: "compare" functions */ # define DECLARE_LHASH_COMP_FN(name, o_type) \ int name##_LHASH_COMP(const void *, const void *); # define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ int name##_LHASH_COMP(const void *arg1, const void *arg2) { \ const o_type *a = arg1; \ const o_type *b = arg2; \ return name##_cmp(a,b); } # define LHASH_COMP_FN(name) name##_LHASH_COMP /* Fourth: "doall_arg" functions */ # define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ void name##_LHASH_DOALL_ARG(void *, void *); # define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ o_type *a = arg1; \ a_type *b = arg2; \ name##_doall_arg(a, b); } # define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG # define LH_LOAD_MULT 256 int OPENSSL_LH_error(OPENSSL_LHASH *lh); OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); void OPENSSL_LH_free(OPENSSL_LHASH *lh); void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); unsigned long OPENSSL_LH_strhash(const char *c); unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); # ifndef OPENSSL_NO_STDIO void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); # endif void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); # if OPENSSL_API_COMPAT < 0x10100000L # define _LHASH OPENSSL_LHASH # define LHASH_NODE OPENSSL_LH_NODE # define lh_error OPENSSL_LH_error # define lh_new OPENSSL_LH_new # define lh_free OPENSSL_LH_free # define lh_insert OPENSSL_LH_insert # define lh_delete OPENSSL_LH_delete # define lh_retrieve OPENSSL_LH_retrieve # define lh_doall OPENSSL_LH_doall # define lh_doall_arg OPENSSL_LH_doall_arg # define lh_strhash OPENSSL_LH_strhash # define lh_num_items OPENSSL_LH_num_items # ifndef OPENSSL_NO_STDIO # define lh_stats OPENSSL_LH_stats # define lh_node_stats OPENSSL_LH_node_stats # define lh_node_usage_stats OPENSSL_LH_node_usage_stats # endif # define lh_stats_bio OPENSSL_LH_stats_bio # define lh_node_stats_bio OPENSSL_LH_node_stats_bio # define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio # endif /* Type checking... */ # define LHASH_OF(type) struct lhash_st_##type # define DEFINE_LHASH_OF(type) \ LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ int (*cfn)(const type *, const type *)) \ { \ return (LHASH_OF(type) *) \ OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ } \ static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ { \ OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ } \ static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ { \ return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ } \ static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ } \ static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ { \ return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ } \ static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ } \ static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ } \ static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ { \ OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ } \ static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ { \ return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ } \ static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ { \ OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ } \ static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ void (*doall)(type *)) \ { \ OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ } \ LHASH_OF(type) #define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ int_implement_lhash_doall(type, argtype, const type) #define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ int_implement_lhash_doall(type, argtype, type) #define int_implement_lhash_doall(type, argtype, cbargtype) \ static ossl_unused ossl_inline void \ lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ void (*fn)(cbargtype *, argtype *), \ argtype *arg) \ { \ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ } \ LHASH_OF(type) DEFINE_LHASH_OF(OPENSSL_STRING); # ifdef _MSC_VER /* * push and pop this warning: * warning C4090: 'function': different 'const' qualifiers */ # pragma warning (push) # pragma warning (disable: 4090) # endif DEFINE_LHASH_OF(OPENSSL_CSTRING); # ifdef _MSC_VER # pragma warning (pop) # endif /* * If called without higher optimization (min. -xO3) the Oracle Developer * Studio compiler generates code for the defined (static inline) functions * above. * This would later lead to the linker complaining about missing symbols when * this header file is included but the resulting object is not linked against * the Crypto library (openssl#6912). */ # ifdef __SUNPRO_C # pragma weak OPENSSL_LH_new # pragma weak OPENSSL_LH_free # pragma weak OPENSSL_LH_insert # pragma weak OPENSSL_LH_delete # pragma weak OPENSSL_LH_retrieve # pragma weak OPENSSL_LH_error # pragma weak OPENSSL_LH_num_items # pragma weak OPENSSL_LH_node_stats_bio # pragma weak OPENSSL_LH_node_usage_stats_bio # pragma weak OPENSSL_LH_stats_bio # pragma weak OPENSSL_LH_get_down_load # pragma weak OPENSSL_LH_set_down_load # pragma weak OPENSSL_LH_doall # pragma weak OPENSSL_LH_doall_arg # endif /* __SUNPRO_C */ #ifdef __cplusplus } #endif #endif
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
archs | Folder | 0755 |
|
|
aes.h | File | 3.27 KB | 0644 |
|
asn1.h | File | 32.84 KB | 0644 |
|
asn1_asm.h | File | 2.66 KB | 0644 |
|
asn1_mac.h | File | 395 B | 0644 |
|
asn1_no-asm.h | File | 2.82 KB | 0644 |
|
asn1err.h | File | 14.34 KB | 0644 |
|
asn1t.h | File | 32.17 KB | 0644 |
|
asn1t_asm.h | File | 2.68 KB | 0644 |
|
asn1t_no-asm.h | File | 2.84 KB | 0644 |
|
async.h | File | 2.34 KB | 0644 |
|
asyncerr.h | File | 1.29 KB | 0644 |
|
bio.h | File | 34.09 KB | 0644 |
|
bio_asm.h | File | 2.64 KB | 0644 |
|
bio_no-asm.h | File | 2.8 KB | 0644 |
|
bioerr.h | File | 6.25 KB | 0644 |
|
blowfish.h | File | 1.8 KB | 0644 |
|
bn.h | File | 21.62 KB | 0644 |
|
bn_conf.h | File | 100 B | 0644 |
|
bn_conf_asm.h | File | 2.88 KB | 0644 |
|
bn_conf_no-asm.h | File | 3.05 KB | 0644 |
|
bnerr.h | File | 4.85 KB | 0644 |
|
buffer.h | File | 1.56 KB | 0644 |
|
buffererr.h | File | 820 B | 0644 |
|
camellia.h | File | 3.1 KB | 0644 |
|
cast.h | File | 1.63 KB | 0644 |
|
cmac.h | File | 1.04 KB | 0644 |
|
cmp_asm.h | File | 2.64 KB | 0644 |
|
cmp_no-asm.h | File | 2.8 KB | 0644 |
|
cms.h | File | 16 KB | 0644 |
|
cms_asm.h | File | 2.64 KB | 0644 |
|
cms_no-asm.h | File | 2.8 KB | 0644 |
|
cmserr.h | File | 10.96 KB | 0644 |
|
comp.h | File | 1.3 KB | 0644 |
|
comperr.h | File | 1.18 KB | 0644 |
|
conf.h | File | 5.47 KB | 0644 |
|
conf_api.h | File | 1.27 KB | 0644 |
|
conf_asm.h | File | 2.66 KB | 0644 |
|
conf_no-asm.h | File | 2.82 KB | 0644 |
|
conferr.h | File | 3.35 KB | 0644 |
|
configuration_asm.h | File | 2.84 KB | 0644 |
|
configuration_no-asm.h | File | 3.02 KB | 0644 |
|
crmf_asm.h | File | 2.66 KB | 0644 |
|
crmf_no-asm.h | File | 2.82 KB | 0644 |
|
crypto.h | File | 16.91 KB | 0644 |
|
crypto_asm.h | File | 2.7 KB | 0644 |
|
crypto_no-asm.h | File | 2.87 KB | 0644 |
|
cryptoerr.h | File | 2.21 KB | 0644 |
|
ct.h | File | 15.5 KB | 0644 |
|
ct_asm.h | File | 2.62 KB | 0644 |
|
ct_no-asm.h | File | 2.78 KB | 0644 |
|
cterr.h | File | 3.39 KB | 0644 |
|
des.h | File | 7.45 KB | 0644 |
|
dh.h | File | 13.19 KB | 0644 |
|
dherr.h | File | 3.94 KB | 0644 |
|
dsa.h | File | 9.82 KB | 0644 |
|
dsaerr.h | File | 2.9 KB | 0644 |
|
dso_conf.h | File | 102 B | 0644 |
|
dso_conf_asm.h | File | 2.9 KB | 0644 |
|
dso_conf_no-asm.h | File | 3.08 KB | 0644 |
|
dtls1.h | File | 1.54 KB | 0644 |
|
e_os2.h | File | 8.71 KB | 0644 |
|
ebcdic.h | File | 924 B | 0644 |
|
ec.h | File | 62.19 KB | 0644 |
|
ecdh.h | File | 358 B | 0644 |
|
ecdsa.h | File | 358 B | 0644 |
|
ecerr.h | File | 15.45 KB | 0644 |
|
engine.h | File | 33.91 KB | 0644 |
|
engineerr.h | File | 5.32 KB | 0644 |
|
err.h | File | 11 KB | 0644 |
|
err_asm.h | File | 2.64 KB | 0644 |
|
err_no-asm.h | File | 2.8 KB | 0644 |
|
ess_asm.h | File | 2.64 KB | 0644 |
|
ess_no-asm.h | File | 2.8 KB | 0644 |
|
evp.h | File | 75.14 KB | 0644 |
|
evperr.h | File | 11.18 KB | 0644 |
|
fipskey_asm.h | File | 2.72 KB | 0644 |
|
fipskey_no-asm.h | File | 2.89 KB | 0644 |
|
hmac.h | File | 1.55 KB | 0644 |
|
idea.h | File | 2.05 KB | 0644 |
|
kdf.h | File | 4.22 KB | 0644 |
|
kdferr.h | File | 2.07 KB | 0644 |
|
lhash.h | File | 9.05 KB | 0644 |
|
lhash_asm.h | File | 2.68 KB | 0644 |
|
lhash_no-asm.h | File | 2.84 KB | 0644 |
|
md2.h | File | 1.03 KB | 0644 |
|
md4.h | File | 1.29 KB | 0644 |
|
md5.h | File | 1.29 KB | 0644 |
|
mdc2.h | File | 1.03 KB | 0644 |
|
modes.h | File | 10.23 KB | 0644 |
|
obj_mac.h | File | 212.42 KB | 0644 |
|
objects.h | File | 6.48 KB | 0644 |
|
objectserr.h | File | 1.29 KB | 0644 |
|
ocsp.h | File | 14.95 KB | 0644 |
|
ocsp_asm.h | File | 2.66 KB | 0644 |
|
ocsp_no-asm.h | File | 2.82 KB | 0644 |
|
ocsperr.h | File | 3.28 KB | 0644 |
|
opensslconf.h | File | 590 B | 0644 |
|
opensslconf_asm.h | File | 6.76 KB | 0644 |
|
opensslconf_no-asm.h | File | 2.8 KB | 0644 |
|
opensslv.h | File | 4.01 KB | 0644 |
|
opensslv_asm.h | File | 2.74 KB | 0644 |
|
opensslv_no-asm.h | File | 2.91 KB | 0644 |
|
ossl_typ.h | File | 6.17 KB | 0644 |
|
pem.h | File | 15.11 KB | 0644 |
|
pem2.h | File | 415 B | 0644 |
|
pemerr.h | File | 5.1 KB | 0644 |
|
pkcs12.h | File | 9.64 KB | 0644 |
|
pkcs12_asm.h | File | 2.7 KB | 0644 |
|
pkcs12_no-asm.h | File | 2.87 KB | 0644 |
|
pkcs12err.h | File | 3.66 KB | 0644 |
|
pkcs7.h | File | 11.32 KB | 0644 |
|
pkcs7_asm.h | File | 2.68 KB | 0644 |
|
pkcs7_no-asm.h | File | 2.84 KB | 0644 |
|
pkcs7err.h | File | 4.99 KB | 0644 |
|
rand.h | File | 2.16 KB | 0644 |
|
rand_drbg.h | File | 4.65 KB | 0644 |
|
randerr.h | File | 4.52 KB | 0644 |
|
rc2.h | File | 1.5 KB | 0644 |
|
rc4.h | File | 825 B | 0644 |
|
rc5.h | File | 1.94 KB | 0644 |
|
ripemd.h | File | 1.21 KB | 0644 |
|
rsa.h | File | 21.68 KB | 0644 |
|
rsaerr.h | File | 8.86 KB | 0644 |
|
safestack.h | File | 7.95 KB | 0644 |
|
safestack_asm.h | File | 2.76 KB | 0644 |
|
safestack_no-asm.h | File | 2.93 KB | 0644 |
|
seed.h | File | 3.4 KB | 0644 |
|
sha.h | File | 3.74 KB | 0644 |
|
srp.h | File | 3.74 KB | 0644 |
|
srp_asm.h | File | 2.64 KB | 0644 |
|
srp_no-asm.h | File | 2.8 KB | 0644 |
|
srtp.h | File | 1.29 KB | 0644 |
|
ssl.h | File | 111.71 KB | 0644 |
|
ssl2.h | File | 542 B | 0644 |
|
ssl3.h | File | 14.36 KB | 0644 |
|
ssl_asm.h | File | 2.64 KB | 0644 |
|
ssl_no-asm.h | File | 2.8 KB | 0644 |
|
sslerr.h | File | 46.94 KB | 0644 |
|
stack.h | File | 3.02 KB | 0644 |
|
store.h | File | 10.94 KB | 0644 |
|
storeerr.h | File | 4.3 KB | 0644 |
|
symhacks.h | File | 1.28 KB | 0644 |
|
tls1.h | File | 70.97 KB | 0644 |
|
ts.h | File | 21.9 KB | 0644 |
|
tserr.h | File | 6.59 KB | 0644 |
|
txt_db.h | File | 1.63 KB | 0644 |
|
ui.h | File | 15.68 KB | 0644 |
|
ui_asm.h | File | 2.62 KB | 0644 |
|
ui_no-asm.h | File | 2.78 KB | 0644 |
|
uierr.h | File | 2.67 KB | 0644 |
|
whrlpool.h | File | 1.34 KB | 0644 |
|
x509.h | File | 42.31 KB | 0644 |
|
x509_asm.h | File | 2.66 KB | 0644 |
|
x509_no-asm.h | File | 2.82 KB | 0644 |
|
x509_vfy.h | File | 31.69 KB | 0644 |
|
x509_vfy_asm.h | File | 2.74 KB | 0644 |
|
x509_vfy_no-asm.h | File | 2.91 KB | 0644 |
|
x509err.h | File | 6.64 KB | 0644 |
|
x509v3.h | File | 32.66 KB | 0644 |
|
x509v3_asm.h | File | 2.7 KB | 0644 |
|
x509v3_no-asm.h | File | 2.87 KB | 0644 |
|
x509v3err.h | File | 8.69 KB | 0644 |
|