[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd] 13/15: digest: small internal refactoring to clarify use
From: |
gnunet |
Subject: |
[libmicrohttpd] 13/15: digest: small internal refactoring to clarify used hash type |
Date: |
Tue, 19 Jul 2022 16:51:21 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd.
commit 1a8a2b8d19758a59eb2bf0a4c981040250ba4e48
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
AuthorDate: Tue Jul 19 17:42:42 2022 +0300
digest: small internal refactoring to clarify used hash type
---
src/microhttpd/digestauth.c | 70 +++++++++++++++++++++++++++++++--------------
1 file changed, 49 insertions(+), 21 deletions(-)
diff --git a/src/microhttpd/digestauth.c b/src/microhttpd/digestauth.c
index d282aa62..35dd0264 100644
--- a/src/microhttpd/digestauth.c
+++ b/src/microhttpd/digestauth.c
@@ -234,10 +234,11 @@ struct DigestAlgorithm
* Digest in binary form.
*/
union DigestBin digest;
+
/**
- * The digest algorithm.
+ * The hash calculation algorithm.
*/
- enum MHD_DigestAuthAlgorithm algo;
+ enum MHD_DigestBaseAlgo algo;
/**
* Buffer for hex-print of the final digest.
@@ -259,9 +260,9 @@ _MHD_static_inline const char *
digest_get_algo_name (struct DigestAlgorithm *da)
{
mhd_assert (da->setup);
- if (MHD_DIGEST_ALG_MD5 == da->algo)
+ if (MHD_DIGEST_BASE_ALGO_MD5 == da->algo)
return _MHD_MD5_TOKEN;
- if (MHD_DIGEST_ALG_SHA256 == da->algo)
+ if (MHD_DIGEST_BASE_ALGO_SHA256 == da->algo)
return _MHD_SHA256_TOKEN;
mhd_assert (0); /* May not happen */
return "";
@@ -277,9 +278,9 @@ _MHD_static_inline unsigned int
digest_get_size (struct DigestAlgorithm *da)
{
mhd_assert (da->setup);
- if (MHD_DIGEST_ALG_MD5 == da->algo)
+ if (MHD_DIGEST_BASE_ALGO_MD5 == da->algo)
return MD5_DIGEST_SIZE;
- if (MHD_DIGEST_ALG_SHA256 == da->algo)
+ if (MHD_DIGEST_BASE_ALGO_SHA256 == da->algo)
return SHA256_DIGEST_SIZE;
mhd_assert (0); /* May not happen */
return 0;
@@ -295,18 +296,15 @@ digest_get_size (struct DigestAlgorithm *da)
*/
_MHD_static_inline bool
digest_setup (struct DigestAlgorithm *da,
- enum MHD_DigestAuthAlgorithm algo)
+ enum MHD_DigestBaseAlgo algo)
{
#ifdef _DEBUG
da->setup = false;
da->inited = false;
da->digest_calculated = false;
#endif /* _DEBUG */
- if (MHD_DIGEST_ALG_AUTO == algo)
- algo = MHD_DIGEST_ALG_SHA256;
-
- if ((MHD_DIGEST_ALG_MD5 == algo) ||
- (MHD_DIGEST_ALG_SHA256 == algo))
+ if ((MHD_DIGEST_BASE_ALGO_MD5 == algo) ||
+ (MHD_DIGEST_BASE_ALGO_SHA256 == algo))
{
da->algo = algo;
#ifdef _DEBUG
@@ -330,14 +328,14 @@ digest_init (struct DigestAlgorithm *da)
#ifdef _DEBUG
da->digest_calculated = false;
#endif
- if (MHD_DIGEST_ALG_MD5 == da->algo)
+ if (MHD_DIGEST_BASE_ALGO_MD5 == da->algo)
{
MHD_MD5Init (&da->ctx.md5_ctx);
#ifdef _DEBUG
da->inited = true;
#endif
}
- else if (MHD_DIGEST_ALG_SHA256 == da->algo)
+ else if (MHD_DIGEST_BASE_ALGO_SHA256 == da->algo)
{
MHD_SHA256_init (&da->ctx.sha256_ctx);
#ifdef _DEBUG
@@ -367,9 +365,9 @@ digest_update (struct DigestAlgorithm *da,
{
mhd_assert (da->inited);
mhd_assert (! da->digest_calculated);
- if (MHD_DIGEST_ALG_MD5 == da->algo)
+ if (MHD_DIGEST_BASE_ALGO_MD5 == da->algo)
MHD_MD5Update (&da->ctx.md5_ctx, data, length);
- else if (MHD_DIGEST_ALG_SHA256 == da->algo)
+ else if (MHD_DIGEST_BASE_ALGO_SHA256 == da->algo)
MHD_SHA256_update (&da->ctx.sha256_ctx, data, length);
else
mhd_assert (0); /* May not happen */
@@ -399,9 +397,9 @@ digest_calc_hash (struct DigestAlgorithm *da)
{
mhd_assert (da->inited);
mhd_assert (! da->digest_calculated);
- if (MHD_DIGEST_ALG_MD5 == da->algo)
+ if (MHD_DIGEST_BASE_ALGO_MD5 == da->algo)
MHD_MD5Final (&da->ctx.md5_ctx, da->digest.md5);
- else if (MHD_DIGEST_ALG_SHA256 == da->algo)
+ else if (MHD_DIGEST_BASE_ALGO_SHA256 == da->algo)
MHD_SHA256_finish (&da->ctx.sha256_ctx, da->digest.sha256);
else
mhd_assert (0); /* May not happen */
@@ -2331,7 +2329,17 @@ MHD_digest_auth_check3 (struct MHD_Connection
*connection,
mhd_assert (NULL != password);
- if (! digest_setup (&da, algo))
+ if ((MHD_DIGEST_ALG_MD5 == algo) || (MHD_DIGEST_ALG_AUTO == algo))
+ {
+ if (! digest_setup (&da, MHD_DIGEST_BASE_ALGO_MD5))
+ MHD_PANIC (_ ("Error initialising hash algorithm.\n"));
+ }
+ else if (MHD_DIGEST_ALG_SHA256 == algo)
+ {
+ if (! digest_setup (&da, MHD_DIGEST_BASE_ALGO_SHA256))
+ MHD_PANIC (_ ("Error initialising hash algorithm.\n"));
+ }
+ else
MHD_PANIC (_ ("Wrong algo value.\n")); /* API violation! */
return digest_auth_check_all (connection,
@@ -2373,7 +2381,17 @@ MHD_digest_auth_check_digest3 (struct MHD_Connection
*connection,
struct DigestAlgorithm da;
mhd_assert (NULL != digest);
- if (! digest_setup (&da, algo))
+ if ((MHD_DIGEST_ALG_MD5 == algo) || (MHD_DIGEST_ALG_AUTO == algo))
+ {
+ if (! digest_setup (&da, MHD_DIGEST_BASE_ALGO_MD5))
+ MHD_PANIC (_ ("Error initialising hash algorithm.\n"));
+ }
+ else if (MHD_DIGEST_ALG_SHA256 == algo)
+ {
+ if (! digest_setup (&da, MHD_DIGEST_BASE_ALGO_SHA256))
+ MHD_PANIC (_ ("Error initialising hash algorithm.\n"));
+ }
+ else
MHD_PANIC (_ ("Wrong algo value.\n")); /* API violation! */
if (digest_get_size (&da) != digest_size)
@@ -2539,7 +2557,17 @@ MHD_queue_auth_fail_response2 (struct MHD_Connection
*connection,
struct DigestAlgorithm da;
- if (! digest_setup (&da, algo))
+ if ((MHD_DIGEST_ALG_MD5 == algo) || (MHD_DIGEST_ALG_AUTO == algo))
+ {
+ if (! digest_setup (&da, MHD_DIGEST_BASE_ALGO_MD5))
+ MHD_PANIC (_ ("Error initialising hash algorithm.\n"));
+ }
+ else if (MHD_DIGEST_ALG_SHA256 == algo)
+ {
+ if (! digest_setup (&da, MHD_DIGEST_BASE_ALGO_SHA256))
+ MHD_PANIC (_ ("Error initialising hash algorithm.\n"));
+ }
+ else
MHD_PANIC (_ ("Wrong algo value.\n")); /* API violation! */
if (NULL == response)
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [libmicrohttpd] 05/15: Added tests for hex <-> binary functions, (continued)
- [libmicrohttpd] 05/15: Added tests for hex <-> binary functions, gnunet, 2022/07/19
- [libmicrohttpd] 12/15: microhttpd.h: added special enum for hash types, gnunet, 2022/07/19
- [libmicrohttpd] 04/15: mhd_str: added MHD_hex_to_bin() internal function, gnunet, 2022/07/19
- [libmicrohttpd] 09/15: Digest: check whether all required parameters are present before doing heavy calculations, gnunet, 2022/07/19
- [libmicrohttpd] 06/15: mhd_str: added macros for simple comparison against static strings, gnunet, 2022/07/19
- [libmicrohttpd] 08/15: Digest: use binary zero to separate get params in digest, gnunet, 2022/07/19
- [libmicrohttpd] 07/15: Added new functions MHD_digest_auth_get_request_info3() and MHD_digest_auth_get_username3(), gnunet, 2022/07/19
- [libmicrohttpd] 15/15: microhttpd.h: formatted some deprecation warnings, gnunet, 2022/07/19
- [libmicrohttpd] 10/15: Digest: moved URI match check to separate function, avoid one memcpy(), gnunet, 2022/07/19
- [libmicrohttpd] 11/15: digest_auth_check: mostly rewritten, simplified, optimised, gnunet, 2022/07/19
- [libmicrohttpd] 13/15: digest: small internal refactoring to clarify used hash type,
gnunet <=
- [libmicrohttpd] 14/15: digest_auth_check(): check and report wrong algorithm, gnunet, 2022/07/19