[PATCH 9/9] drop weakness of SHA384 symbols

Michael Haubenwallner michael.haubenwallner at ssi-schaefer.com
Mon Apr 10 11:10:46 UTC 2017


There is no reason for SHA384Transform/Update/Pad to be less strong than
their SHA512 implementations.  Beyond that, defining weak symbols is
hard to keep portable.
---
 src/md2.c  |  7 -------
 src/sha2.c | 24 +++++++++++++++++-------
 2 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/src/md2.c b/src/md2.c
index 73f3160..7b4b009 100644
--- a/src/md2.c
+++ b/src/md2.c
@@ -101,13 +101,6 @@ static const unsigned char *pad[] = {
  */
 /*static*/ void MD2Transform (MD2_CTX *);
 
-#ifdef __weak_alias
-__weak_alias(MD2Init,_MD2Init)
-__weak_alias(MD2Update,_MD2Update)
-__weak_alias(MD2Final,_MD2Final)
-__weak_alias(MD2Transform,_MD2Transform)
-#endif
-
 void
 MD2Init(MD2_CTX *context)
 {
diff --git a/src/sha2.c b/src/sha2.c
index e048e5a..fb753b7 100644
--- a/src/sha2.c
+++ b/src/sha2.c
@@ -45,10 +45,6 @@
 
 #define _C_LABEL_STRING(x)	x
 
-#define	__weak_alias(alias,sym)						\
-	__asm(".weak " _C_LABEL_STRING(#alias) "\n"			\
-		_C_LABEL_STRING(#alias) " = " _C_LABEL_STRING(#sym));
-
 /*
  * UNROLLED TRANSFORM LOOP NOTE:
  * You can define SHA2_UNROLL_TRANSFORM to use the unrolled transform
@@ -822,9 +818,23 @@ SHA384Init(SHA2_CTX *context)
 	context->bitcount[0] = context->bitcount[1] = 0;
 }
 
-__weak_alias(SHA384Transform, SHA512Transform);
-__weak_alias(SHA384Update, SHA512Update);
-__weak_alias(SHA384Pad, SHA512Pad);
+void
+SHA384Transform(uint64_t state[8], const uint8_t data[SHA512_BLOCK_LENGTH])
+{
+	SHA512Transform(state, data);
+}
+
+void
+SHA384Update(SHA2_CTX *context, const uint8_t *data, size_t len)
+{
+	SHA512Update(context, data, len);
+}
+
+void
+SHA384Pad(SHA2_CTX *context)
+{
+	SHA512Pad(context);
+}
 
 void
 SHA384Final(uint8_t digest[SHA384_DIGEST_LENGTH], SHA2_CTX *context)
-- 
2.10.2



More information about the libbsd mailing list