diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/md4/md4.c | 54 |
1 files changed, 28 insertions, 26 deletions
diff --git a/src/lib/libcrypto/md4/md4.c b/src/lib/libcrypto/md4/md4.c index fa40f5bdef..94de291260 100644 --- a/src/lib/libcrypto/md4/md4.c +++ b/src/lib/libcrypto/md4/md4.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: md4.c,v 1.9 2024/03/26 06:40:29 jsing Exp $ */ | 1 | /* $OpenBSD: md4.c,v 1.10 2024/03/26 06:54:20 jsing Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -93,47 +93,47 @@ __END_HIDDEN_DECLS | |||
| 93 | #include "md32_common.h" | 93 | #include "md32_common.h" |
| 94 | 94 | ||
| 95 | int | 95 | int |
| 96 | HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len) | 96 | MD4_Update(MD4_CTX *c, const void *data_, size_t len) |
| 97 | { | 97 | { |
| 98 | const unsigned char *data = data_; | 98 | const unsigned char *data = data_; |
| 99 | unsigned char *p; | 99 | unsigned char *p; |
| 100 | HASH_LONG l; | 100 | MD4_LONG l; |
| 101 | size_t n; | 101 | size_t n; |
| 102 | 102 | ||
| 103 | if (len == 0) | 103 | if (len == 0) |
| 104 | return 1; | 104 | return 1; |
| 105 | 105 | ||
| 106 | l = (c->Nl + (((HASH_LONG)len) << 3))&0xffffffffUL; | 106 | l = (c->Nl + (((MD4_LONG)len) << 3))&0xffffffffUL; |
| 107 | /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to | 107 | /* 95-05-24 eay Fixed a bug with the overflow handling, thanks to |
| 108 | * Wei Dai <weidai@eskimo.com> for pointing it out. */ | 108 | * Wei Dai <weidai@eskimo.com> for pointing it out. */ |
| 109 | if (l < c->Nl) /* overflow */ | 109 | if (l < c->Nl) /* overflow */ |
| 110 | c->Nh++; | 110 | c->Nh++; |
| 111 | c->Nh+=(HASH_LONG)(len>>29); /* might cause compiler warning on 16-bit */ | 111 | c->Nh+=(MD4_LONG)(len>>29); /* might cause compiler warning on 16-bit */ |
| 112 | c->Nl = l; | 112 | c->Nl = l; |
| 113 | 113 | ||
| 114 | n = c->num; | 114 | n = c->num; |
| 115 | if (n != 0) { | 115 | if (n != 0) { |
| 116 | p = (unsigned char *)c->data; | 116 | p = (unsigned char *)c->data; |
| 117 | 117 | ||
| 118 | if (len >= HASH_CBLOCK || len + n >= HASH_CBLOCK) { | 118 | if (len >= MD4_CBLOCK || len + n >= MD4_CBLOCK) { |
| 119 | memcpy (p + n, data, HASH_CBLOCK - n); | 119 | memcpy (p + n, data, MD4_CBLOCK - n); |
| 120 | HASH_BLOCK_DATA_ORDER (c, p, 1); | 120 | md4_block_data_order (c, p, 1); |
| 121 | n = HASH_CBLOCK - n; | 121 | n = MD4_CBLOCK - n; |
| 122 | data += n; | 122 | data += n; |
| 123 | len -= n; | 123 | len -= n; |
| 124 | c->num = 0; | 124 | c->num = 0; |
| 125 | memset (p,0,HASH_CBLOCK); /* keep it zeroed */ | 125 | memset(p, 0, MD4_CBLOCK); /* keep it zeroed */ |
| 126 | } else { | 126 | } else { |
| 127 | memcpy (p + n, data, len); | 127 | memcpy(p + n, data, len); |
| 128 | c->num += (unsigned int)len; | 128 | c->num += (unsigned int)len; |
| 129 | return 1; | 129 | return 1; |
| 130 | } | 130 | } |
| 131 | } | 131 | } |
| 132 | 132 | ||
| 133 | n = len/HASH_CBLOCK; | 133 | n = len / MD4_CBLOCK; |
| 134 | if (n > 0) { | 134 | if (n > 0) { |
| 135 | HASH_BLOCK_DATA_ORDER (c, data, n); | 135 | md4_block_data_order(c, data, n); |
| 136 | n *= HASH_CBLOCK; | 136 | n *= MD4_CBLOCK; |
| 137 | data += n; | 137 | data += n; |
| 138 | len -= n; | 138 | len -= n; |
| 139 | } | 139 | } |
| @@ -141,17 +141,19 @@ HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len) | |||
| 141 | if (len != 0) { | 141 | if (len != 0) { |
| 142 | p = (unsigned char *)c->data; | 142 | p = (unsigned char *)c->data; |
| 143 | c->num = (unsigned int)len; | 143 | c->num = (unsigned int)len; |
| 144 | memcpy (p, data, len); | 144 | memcpy(p, data, len); |
| 145 | } | 145 | } |
| 146 | return 1; | 146 | return 1; |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | void HASH_TRANSFORM (HASH_CTX *c, const unsigned char *data) | 149 | void |
| 150 | MD4_Transform(MD4_CTX *c, const unsigned char *data) | ||
| 150 | { | 151 | { |
| 151 | HASH_BLOCK_DATA_ORDER (c, data, 1); | 152 | md4_block_data_order(c, data, 1); |
| 152 | } | 153 | } |
| 153 | 154 | ||
| 154 | int HASH_FINAL (unsigned char *md, HASH_CTX *c) | 155 | int |
| 156 | MD4_Final(unsigned char *md, MD4_CTX *c) | ||
| 155 | { | 157 | { |
| 156 | unsigned char *p = (unsigned char *)c->data; | 158 | unsigned char *p = (unsigned char *)c->data; |
| 157 | size_t n = c->num; | 159 | size_t n = c->num; |
| @@ -159,14 +161,14 @@ int HASH_FINAL (unsigned char *md, HASH_CTX *c) | |||
| 159 | p[n] = 0x80; /* there is always room for one */ | 161 | p[n] = 0x80; /* there is always room for one */ |
| 160 | n++; | 162 | n++; |
| 161 | 163 | ||
| 162 | if (n > (HASH_CBLOCK - 8)) { | 164 | if (n > (MD4_CBLOCK - 8)) { |
| 163 | memset (p + n, 0, HASH_CBLOCK - n); | 165 | memset(p + n, 0, MD4_CBLOCK - n); |
| 164 | n = 0; | 166 | n = 0; |
| 165 | HASH_BLOCK_DATA_ORDER (c, p, 1); | 167 | md4_block_data_order(c, p, 1); |
| 166 | } | 168 | } |
| 167 | memset (p + n, 0, HASH_CBLOCK - 8 - n); | 169 | memset(p + n, 0, MD4_CBLOCK - 8 - n); |
| 168 | 170 | ||
| 169 | p += HASH_CBLOCK - 8; | 171 | p += MD4_CBLOCK - 8; |
| 170 | #if defined(DATA_ORDER_IS_BIG_ENDIAN) | 172 | #if defined(DATA_ORDER_IS_BIG_ENDIAN) |
| 171 | HOST_l2c(c->Nh, p); | 173 | HOST_l2c(c->Nh, p); |
| 172 | HOST_l2c(c->Nl, p); | 174 | HOST_l2c(c->Nl, p); |
| @@ -174,10 +176,10 @@ int HASH_FINAL (unsigned char *md, HASH_CTX *c) | |||
| 174 | HOST_l2c(c->Nl, p); | 176 | HOST_l2c(c->Nl, p); |
| 175 | HOST_l2c(c->Nh, p); | 177 | HOST_l2c(c->Nh, p); |
| 176 | #endif | 178 | #endif |
| 177 | p -= HASH_CBLOCK; | 179 | p -= MD4_CBLOCK; |
| 178 | HASH_BLOCK_DATA_ORDER (c, p, 1); | 180 | md4_block_data_order(c, p, 1); |
| 179 | c->num = 0; | 181 | c->num = 0; |
| 180 | memset (p, 0, HASH_CBLOCK); | 182 | memset(p, 0, MD4_CBLOCK); |
| 181 | 183 | ||
| 182 | #ifndef HASH_MAKE_STRING | 184 | #ifndef HASH_MAKE_STRING |
| 183 | #error "HASH_MAKE_STRING must be defined!" | 185 | #error "HASH_MAKE_STRING must be defined!" |
