libcrypt - Internalize additional symbols
authorMatthew Dillon <dillon@apollo.backplane.com>
Mon, 24 Oct 2016 06:38:34 +0000 (23:38 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Mon, 24 Oct 2016 06:38:34 +0000 (23:38 -0700)
* Internalize additional symbols which conflict with libssl or libressl.
  This works around the apache https issue we had by avoiding a buggy
  error path that will be fixed upstream.  This also fixes a bogus fetch
  failures we were having while testing https.

* Make the *_Init() API for MD5, SHA*, etc in libmd compatible with libssl
  and libressl.

* Note that libmd is inheritently incompatible with lib[re]ssl, so look
  for an upcoming fix for that (maybe we can remove it entirely).

16 files changed:
lib/libcrypt/Makefile
lib/libmd/md2.h
lib/libmd/md2c.c
lib/libmd/md4.h
lib/libmd/md4c.c
lib/libmd/md5c.c
lib/libmd/ripemd.h
lib/libmd/rmd160c.c
lib/libmd/sha.h
lib/libmd/sha0c.c
lib/libmd/sha1c.c
lib/libmd/sha256.h
lib/libmd/sha256c.c
lib/libmd/sha512.h
lib/libmd/sha512c.c
sys/sys/md5.h

index ea514e2..584c4ad 100644 (file)
@@ -31,9 +31,10 @@ CFLAGS+=     -I${.CURDIR} -DHAS_DES -DHAS_BLOWFISH
 SRCS+=         auth.c property.c
 .for sym in MD5Init MD5Final MD5Update MD5Pad auth_getval \
            property_find properties_read properties_free \
-           SHA256_Init SHA256_Update SHA256_Final \
-           SHA512_Init SHA512_Update SHA512_Final
-CFLAGS+=       -D${sym}=__${sym}
+           SHA256_Init SHA256_Update SHA256_Final SHA256_Transform \
+           SHA384_Init SHA384_Update SHA384_Final SHA384_Transform \
+           SHA512_Init SHA512_Update SHA512_Final SHA512_Transform
+CFLAGS+=       -D${sym}=_libcrypt_${sym}
 .endfor
 PRECIOUSLIB=   yes
 
index f75edf8..b3a4605 100644 (file)
@@ -34,7 +34,7 @@ typedef struct MD2Context {
 #include <sys/cdefs.h>
 
 __BEGIN_DECLS
-void   MD2Init(MD2_CTX *);
+int   MD2Init(MD2_CTX *);
 void   MD2Update(MD2_CTX *, const void *, unsigned int);
 void   MD2Pad(MD2_CTX *);
 void   MD2Final(unsigned char [16], MD2_CTX *);
index 61f94da..6a7fd08 100644 (file)
@@ -85,13 +85,14 @@ static unsigned char *PADDING[] = {
 
 /* MD2 initialization. Begins an MD2 operation, writing a new context.
  */
-void
+int
 MD2Init (MD2_CTX *context)
 {
   context->count = 0;
   memset ((POINTER)context->state, 0, sizeof (context->state));
   memset
     ((POINTER)context->checksum, 0, sizeof (context->checksum));
+  return 1;
 }
 
 /* MD2 block update operation. Continues an MD2 message-digest
index bb8fd71..04afb3d 100644 (file)
@@ -36,7 +36,7 @@ typedef struct MD4Context {
 #include <sys/cdefs.h>
 
 __BEGIN_DECLS
-void   MD4Init(MD4_CTX *);
+int   MD4Init(MD4_CTX *);
 void   MD4Update(MD4_CTX *, const void *, unsigned int);
 void   MD4Pad(MD4_CTX *);
 void   MD4Final(unsigned char [16], MD4_CTX *);
index 117e49d..045675e 100644 (file)
@@ -89,7 +89,7 @@ static unsigned char PADDING[64] = {
 
 /* MD4 initialization. Begins an MD4 operation, writing a new context.
  */
-void
+int
 MD4Init (MD4_CTX *context)
 {
   context->count[0] = context->count[1] = 0;
@@ -100,6 +100,7 @@ MD4Init (MD4_CTX *context)
   context->state[1] = 0xefcdab89;
   context->state[2] = 0x98badcfe;
   context->state[3] = 0x10325476;
+  return 1;
 }
 
 /* MD4 block update operation. Continues an MD4 message-digest
index 719388e..1f47f12 100644 (file)
@@ -126,7 +126,7 @@ static unsigned char PADDING[64] = {
 
 /* MD5 initialization. Begins an MD5 operation, writing a new context. */
 
-void
+int
 MD5Init (MD5_CTX *context)
 {
 
@@ -137,6 +137,7 @@ MD5Init (MD5_CTX *context)
        context->state[1] = 0xefcdab89;
        context->state[2] = 0x98badcfe;
        context->state[3] = 0x10325476;
+       return 1;
 }
 
 /* 
index 9d252b5..623c6f5 100644 (file)
@@ -82,7 +82,7 @@ typedef struct RIPEMD160state_st {
 } RIPEMD160_CTX;
 
 __BEGIN_DECLS
-void   RIPEMD160_Init(RIPEMD160_CTX *c);
+int    RIPEMD160_Init(RIPEMD160_CTX *c);
 void   RIPEMD160_Update(RIPEMD160_CTX *c, const void *data,
                         size_t len);
 void   RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c);
index 98a1d9f..7fbe80c 100644 (file)
@@ -85,7 +85,7 @@ void ripemd160_block_x86(RIPEMD160_CTX *c, const u_int32_t *p,int num);
 void ripemd160_block(RIPEMD160_CTX *c, const u_int32_t *p,int num);
 #endif
 
-void
+int
 RIPEMD160_Init(RIPEMD160_CTX *c)
        {
        c->A=RIPEMD160_A;
@@ -96,6 +96,7 @@ RIPEMD160_Init(RIPEMD160_CTX *c)
        c->Nl=0;
        c->Nh=0;
        c->num=0;
+       return 1;
        }
 
 void
index 8451b41..490bfa7 100644 (file)
@@ -80,14 +80,14 @@ typedef struct SHAstate_st {
 #define        SHA1_CTX        SHA_CTX
 
 __BEGIN_DECLS
-void   SHA_Init(SHA_CTX *c);
+int    SHA_Init(SHA_CTX *c);
 void   SHA_Update(SHA_CTX *c, const void *data, size_t len);
 void   SHA_Final(unsigned char *md, SHA_CTX *c);
 char   *SHA_End(SHA_CTX *, char *);
 char   *SHA_File(const char *, char *);
 char   *SHA_FileChunk(const char *, char *, off_t, off_t);
 char   *SHA_Data(const void *, unsigned int, char *);
-void   SHA1_Init(SHA_CTX *c);
+int    SHA1_Init(SHA_CTX *c);
 void   SHA1_Update(SHA_CTX *c, const void *data, size_t len);
 void   SHA1_Final(unsigned char *md, SHA_CTX *c);
 char   *SHA1_End(SHA_CTX *, char *);
index 9dc72db..333b8c4 100644 (file)
@@ -99,7 +99,7 @@ char *SHA_version="SHA part of SSLeay 0.9.0b 11-Oct-1998";
 #define        M_p_c2nl_p      p_c2nl_p
 #define        M_nl2c          nl2c
 
-void
+int
 SHA_Init(SHA_CTX *c)
        {
        c->h0=INIT_DATA_h0;
@@ -110,6 +110,7 @@ SHA_Init(SHA_CTX *c)
        c->Nl=0;
        c->Nh=0;
        c->num=0;
+       return 1;
        }
 
 void
index 5c93c46..f555649 100644 (file)
@@ -126,7 +126,7 @@ char *SHA1_version="SHA1 part of SSLeay 0.9.0b 11-Oct-1998";
 #  define      M_nl2c          nl2c
 #endif
 
-void
+int
 SHA1_Init(SHA_CTX *c)
        {
        c->h0=INIT_DATA_h0;
@@ -137,6 +137,7 @@ SHA1_Init(SHA_CTX *c)
        c->Nl=0;
        c->Nh=0;
        c->num=0;
+       return 1;
        }
 
 void
index 770e2b8..34d94ad 100644 (file)
@@ -39,7 +39,7 @@ typedef struct SHA256Context {
 } SHA256_CTX;
 
 __BEGIN_DECLS
-void   SHA256_Init(SHA256_CTX *);
+int    SHA256_Init(SHA256_CTX *);
 void   SHA256_Update(SHA256_CTX *, const void *, size_t);
 void   SHA256_Final(unsigned char [32], SHA256_CTX *);
 char   *SHA256_End(SHA256_CTX *, char *);
index f9e86dd..f3665b5 100644 (file)
@@ -219,7 +219,7 @@ SHA256_Pad(SHA256_CTX * ctx)
 }
 
 /* SHA-256 initialization.  Begins a SHA-256 operation. */
-void
+int
 SHA256_Init(SHA256_CTX * ctx)
 {
 
@@ -235,6 +235,7 @@ SHA256_Init(SHA256_CTX * ctx)
        ctx->state[5] = 0x9B05688C;
        ctx->state[6] = 0x1F83D9AB;
        ctx->state[7] = 0x5BE0CD19;
+       return 1;
 }
 
 /* Add bytes into the hash */
index dc8c68c..1871a20 100644 (file)
@@ -47,10 +47,10 @@ typedef struct _SHA512_CTX {
 typedef SHA512_CTX SHA384_CTX;
 
 __BEGIN_DECLS
-void   SHA384_Init(SHA384_CTX *);
+int    SHA384_Init(SHA384_CTX *);
 void   SHA384_Update(SHA384_CTX *, const u_int8_t *, size_t);
 void   SHA384_Final(u_int8_t[SHA384_DIGEST_LENGTH], SHA384_CTX *);
-void   SHA512_Init(SHA512_CTX*);
+int    SHA512_Init(SHA512_CTX*);
 void   SHA512_Update(SHA512_CTX*, const void *, size_t);
 void   SHA512_Final(unsigned char [SHA512_DIGEST_LENGTH], SHA512_CTX *);
 char*  SHA512_End(SHA512_CTX *, char *);
index da8d616..5eb50db 100644 (file)
@@ -170,13 +170,14 @@ static const sha2_word64 K512[80] = {
        0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL
 };
 /*** SHA-512: *********************************************************/
-void SHA512_Init(SHA512_CTX* context) {
+int SHA512_Init(SHA512_CTX* context) {
        if (context == NULL) {
-               return;
+               return 0;
        }
        bcopy(sha512_initial_hash_value, context->state, SHA512_DIGEST_LENGTH);
        bzero(context->buffer, SHA512_BLOCK_LENGTH);
        context->bitcount[0] = context->bitcount[1] =  0;
+       return 1;
 }
 
 /* Unrolled SHA-512 round macros: */
@@ -422,13 +423,14 @@ char* SHA512_Data(const void *data, size_t len, char *digest) {
 
 
 /*** SHA-384: *********************************************************/
-void SHA384_Init(SHA384_CTX* context) {
+int SHA384_Init(SHA384_CTX* context) {
        if (context == NULL) {
-               return;
+               return 0;
        }
        bcopy(sha384_initial_hash_value, context->state, SHA512_DIGEST_LENGTH);
        bzero(context->buffer, SHA384_BLOCK_LENGTH);
        context->bitcount[0] = context->bitcount[1] = 0;
+       return 1;
 }
 
 void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) {
index ab1f6f9..381c6f9 100644 (file)
@@ -47,7 +47,7 @@ typedef struct MD5Context {
 #include <sys/cdefs.h>
 
 __BEGIN_DECLS
-void   MD5Init (MD5_CTX *);
+int   MD5Init (MD5_CTX *);
 void   MD5Update (MD5_CTX *, const void *, unsigned int);
 void   MD5Pad (MD5_CTX *);
 void   MD5Final (unsigned char [16], MD5_CTX *);