1
0
Fork 0
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:
Andy Green 2019-07-17 13:09:40 -07:00
parent 7a626ef320
commit 080373f18f
7 changed files with 29 additions and 1 deletions

View file

@ -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>

View file

@ -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;

View file

@ -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:

View file

@ -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;

View file

@ -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);

View file

@ -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;

View file

@ -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;