mirror of
https://github.com/warmcat/libwebsockets.git
synced 2025-03-09 00:00:04 +01:00
genhash: add MD5
This commit is contained in:
parent
7a626ef320
commit
080373f18f
7 changed files with 29 additions and 1 deletions
|
@ -539,6 +539,7 @@ struct lws;
|
|||
#if defined(LWS_WITH_TLS)
|
||||
|
||||
#if defined(LWS_WITH_MBEDTLS)
|
||||
#include <mbedtls/md5.h>
|
||||
#include <mbedtls/sha1.h>
|
||||
#include <mbedtls/sha256.h>
|
||||
#include <mbedtls/sha512.h>
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
|
||||
enum lws_genhash_types {
|
||||
LWS_GENHASH_TYPE_UNKNOWN,
|
||||
LWS_GENHASH_TYPE_MD5,
|
||||
LWS_GENHASH_TYPE_SHA1,
|
||||
LWS_GENHASH_TYPE_SHA256,
|
||||
LWS_GENHASH_TYPE_SHA384,
|
||||
|
@ -53,7 +54,8 @@ struct lws_genhash_ctx {
|
|||
uint8_t type;
|
||||
#if defined(LWS_WITH_MBEDTLS)
|
||||
union {
|
||||
mbedtls_sha1_context sha1;
|
||||
mbedtls_md5_context md5;
|
||||
mbedtls_sha1_context sha1;
|
||||
mbedtls_sha256_context sha256;
|
||||
mbedtls_sha512_context sha512; /* 384 also uses this */
|
||||
const mbedtls_md_info_t *hmac;
|
||||
|
|
|
@ -626,6 +626,8 @@ lws_genhash_size(enum lws_genhash_types type)
|
|||
switch(type) {
|
||||
case LWS_GENHASH_TYPE_UNKNOWN:
|
||||
return 0;
|
||||
case LWS_GENHASH_TYPE_MD5:
|
||||
return 16;
|
||||
case LWS_GENHASH_TYPE_SHA1:
|
||||
return 20;
|
||||
case LWS_GENHASH_TYPE_SHA256:
|
||||
|
|
|
@ -30,6 +30,9 @@ lws_gencrypto_mbedtls_hash_to_MD_TYPE(enum lws_genhash_types hash_type)
|
|||
mbedtls_md_type_t h = -1;
|
||||
|
||||
switch (hash_type) {
|
||||
case LWS_GENHASH_TYPE_MD5:
|
||||
h = MBEDTLS_MD_MD5;
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_SHA1:
|
||||
h = MBEDTLS_MD_SHA1;
|
||||
break;
|
||||
|
|
|
@ -36,6 +36,10 @@ lws_genhash_init(struct lws_genhash_ctx *ctx, enum lws_genhash_types type)
|
|||
ctx->type = type;
|
||||
|
||||
switch (ctx->type) {
|
||||
case LWS_GENHASH_TYPE_MD5:
|
||||
mbedtls_md5_init(&ctx->u.md5);
|
||||
MBA(mbedtls_md5_starts)(&ctx->u.md5);
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_SHA1:
|
||||
mbedtls_sha1_init(&ctx->u.sha1);
|
||||
MBA(mbedtls_sha1_starts)(&ctx->u.sha1);
|
||||
|
@ -66,6 +70,9 @@ lws_genhash_update(struct lws_genhash_ctx *ctx, const void *in, size_t len)
|
|||
return 0;
|
||||
|
||||
switch (ctx->type) {
|
||||
case LWS_GENHASH_TYPE_MD5:
|
||||
MBA(mbedtls_md5_update)(&ctx->u.md5, in, len);
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_SHA1:
|
||||
MBA(mbedtls_sha1_update)(&ctx->u.sha1, in, len);
|
||||
break;
|
||||
|
@ -87,6 +94,10 @@ int
|
|||
lws_genhash_destroy(struct lws_genhash_ctx *ctx, void *result)
|
||||
{
|
||||
switch (ctx->type) {
|
||||
case LWS_GENHASH_TYPE_MD5:
|
||||
MBA(mbedtls_md5_finish)(&ctx->u.md5, result);
|
||||
mbedtls_md5_free(&ctx->u.md5);
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_SHA1:
|
||||
MBA(mbedtls_sha1_finish)(&ctx->u.sha1, result);
|
||||
mbedtls_sha1_free(&ctx->u.sha1);
|
||||
|
|
|
@ -37,6 +37,9 @@ lws_gencrypto_openssl_hash_to_NID(enum lws_genhash_types hash_type)
|
|||
switch (hash_type) {
|
||||
case LWS_GENHASH_TYPE_UNKNOWN:
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_MD5:
|
||||
h = NID_md5;
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_SHA1:
|
||||
h = NID_sha1;
|
||||
break;
|
||||
|
@ -62,6 +65,9 @@ lws_gencrypto_openssl_hash_to_EVP_MD(enum lws_genhash_types hash_type)
|
|||
switch (hash_type) {
|
||||
case LWS_GENHASH_TYPE_UNKNOWN:
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_MD5:
|
||||
h = EVP_md5();
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_SHA1:
|
||||
h = EVP_sha1();
|
||||
break;
|
||||
|
|
|
@ -37,6 +37,9 @@ lws_genhash_init(struct lws_genhash_ctx *ctx, enum lws_genhash_types type)
|
|||
return 1;
|
||||
|
||||
switch (ctx->type) {
|
||||
case LWS_GENHASH_TYPE_MD5:
|
||||
ctx->evp_type = EVP_md5();
|
||||
break;
|
||||
case LWS_GENHASH_TYPE_SHA1:
|
||||
ctx->evp_type = EVP_sha1();
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue