git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Debug: fix transport-wait DB message. Bug 3082
[exim.git]
/
src
/
src
/
hash.c
diff --git
a/src/src/hash.c
b/src/src/hash.c
index b5323b69c2496f21dc64e48a63b9262ad8369e96..17a52fe43effc6b5976546410d5d19e968c48fa7 100644
(file)
--- a/
src/src/hash.c
+++ b/
src/src/hash.c
@@
-1,8
+1,9
@@
/*
* Exim - an Internet mail transport agent
*
/*
* Exim - an Internet mail transport agent
*
- * Copyright (
C) 2010 - 2018 Exim maintainers
+ * Copyright (
c) The Exim Maintainers 2010 - 2023
* Copyright (c) University of Cambridge 1995 - 2009
* Copyright (c) University of Cambridge 1995 - 2009
+ * SPDX-License-Identifier: GPL-2.0-or-later
*
* Hash interface functions
*/
*
* Hash interface functions
*/
@@
-29,6
+30,7
@@
sha1;
/******************************************************************************/
#ifdef SHA_OPENSSL
/******************************************************************************/
#ifdef SHA_OPENSSL
+# define HAVE_PARTIAL_SHA
BOOL
exim_sha_init(hctx * h, hashmethod m)
BOOL
exim_sha_init(hctx * h, hashmethod m)
@@
-146,6
+148,7
@@
EVP_MD_CTX_free(h->u.mctx);
#elif defined(SHA_GNUTLS)
#elif defined(SHA_GNUTLS)
+# define HAVE_PARTIAL_SHA
/******************************************************************************/
BOOL
/******************************************************************************/
BOOL
@@
-186,6
+189,7
@@
gnutls_hash_output(h->sha, b->data);
#elif defined(SHA_GCRYPT)
#elif defined(SHA_GCRYPT)
+# define HAVE_PARTIAL_SHA
/******************************************************************************/
BOOL
/******************************************************************************/
BOOL
@@
-224,6
+228,7
@@
memcpy(b->data, gcry_md_read(h->sha, 0), h->hashlen);
#elif defined(SHA_POLARSSL)
#elif defined(SHA_POLARSSL)
+# define HAVE_PARTIAL_SHA
/******************************************************************************/
BOOL
/******************************************************************************/
BOOL
@@
-403,7
+408,7
@@
Returns: nothing
*/
static void
*/
static void
-native_sha1_end(sha1 *
base, const uschar *text, int length, uschar *
digest)
+native_sha1_end(sha1 *
base, const uschar * text, int length, uschar *
digest)
{
uschar work[64];
{
uschar work[64];
@@
-421,7
+426,7
@@
out to 64, process it, and then set up the final chunk as 56 bytes of
padding. If it has less than 56 bytes, we pad it out to 56 bytes as the
final chunk. */
padding. If it has less than 56 bytes, we pad it out to 56 bytes as the
final chunk. */
-memcpy(work, text, length);
+
if (length)
memcpy(work, text, length);
work[length] = 0x80;
if (length > 55)
work[length] = 0x80;
if (length > 55)
@@
-432,9
+437,7
@@
if (length > 55)
memset(work, 0, 56);
}
else
memset(work, 0, 56);
}
else
- {
memset(work+length+1, 0, 55-length);
memset(work+length+1, 0, 55-length);
- }
/* The final 8 bytes of the final chunk are a 64-bit representation of the
length of the input string *bits*, before padding, high order word first, and
/* The final 8 bytes of the final chunk are a 64-bit representation of the
length of the input string *bits*, before padding, high order word first, and
@@
-556,6
+559,14
@@
memcpy(digest, b.data, 20);
+#ifdef HAVE_PARTIAL_SHA
+# undef HAVE_PARTIAL_SHA
+void
+exim_sha_update_string(hctx * h, const uschar * s)
+{
+if (s) exim_sha_update(h, s, Ustrlen(s));
+}
+#endif
@@
-565,7
+576,7
@@
memcpy(digest, b.data, 20);
**************************************************
*************************************************/
**************************************************
*************************************************/
-#
ifdef STAND_ALONE
+#ifdef STAND_ALONE
/* Test values. The first 128 may contain binary zeros and have increasing
length. */
/* Test values. The first 128 may contain binary zeros and have increasing
length. */
@@
-880,6
+891,6
@@
printf("Computed: %s\n", s);
if (strcmp(s, atest) != 0) printf("*** No match ***\n");
}
if (strcmp(s, atest) != 0) printf("*** No match ***\n");
}
-#
endif
/*STAND_ALONE*/
+#
endif
/*STAND_ALONE*/
/* End of File */
/* End of File */