36#if defined(LWS_WITH_AWSLC) || defined(LWS_WITH_BORINGSSL) 
   37#include <openssl/hmac.h> 
   57#define LWS_GENHASH_LARGEST 64 
   59#if defined(LWS_WITH_TLS) && defined(LWS_WITH_GENCRYPTO) 
   61struct lws_genhash_ctx {
 
   63#if defined(LWS_WITH_MBEDTLS) 
   65                mbedtls_md5_context md5;
 
   66                mbedtls_sha1_context sha1;
 
   67                mbedtls_sha256_context sha256;
 
   68                mbedtls_sha512_context sha512; 
 
   69                const mbedtls_md_info_t *hmac;
 
   72        const EVP_MD *evp_type;
 
   77struct lws_genhmac_ctx {
 
   79#if defined(LWS_WITH_MBEDTLS) 
   80        const mbedtls_md_info_t *hmac;
 
   81        mbedtls_md_context_t ctx;
 
   83        const EVP_MD *evp_type;
 
   85#if !defined(LWS_WITH_BORINGSSL) &&\ 
   86    defined(LWS_HAVE_EVP_PKEY_new_raw_private_key) 
   90#if defined(LWS_HAVE_HMAC_CTX_new) 
  139lws_genhash_update(
struct lws_genhash_ctx *ctx, 
const void *in, 
size_t len);
 
  153lws_genhash_destroy(
struct lws_genhash_ctx *ctx, 
void *result);
 
  169                 const uint8_t *key, 
size_t key_len);
 
  182lws_genhmac_update(
struct lws_genhmac_ctx *ctx, 
const void *in, 
size_t len);
 
  196lws_genhmac_destroy(
struct lws_genhmac_ctx *ctx, 
void *result);
 
@ LWS_GENHASH_TYPE_SHA384
 
@ LWS_GENHASH_TYPE_UNKNOWN
 
@ LWS_GENHASH_TYPE_SHA512
 
@ LWS_GENHASH_TYPE_SHA256
 
@ LWS_GENHMAC_TYPE_SHA384
 
@ LWS_GENHMAC_TYPE_SHA512
 
@ LWS_GENHMAC_TYPE_UNKNOWN
 
@ LWS_GENHMAC_TYPE_SHA256
 
#define LWS_WARN_UNUSED_RESULT