diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/sha/sha512.c | 54 |
1 files changed, 5 insertions, 49 deletions
diff --git a/src/lib/libcrypto/sha/sha512.c b/src/lib/libcrypto/sha/sha512.c index cbc0e58c48..50dd7dc744 100644 --- a/src/lib/libcrypto/sha/sha512.c +++ b/src/lib/libcrypto/sha/sha512.c | |||
| @@ -59,21 +59,8 @@ const char SHA512_version[]="SHA-512" OPENSSL_VERSION_PTEXT; | |||
| 59 | #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA | 59 | #define SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA |
| 60 | #endif | 60 | #endif |
| 61 | 61 | ||
| 62 | int SHA384_Init (SHA512_CTX *c) | 62 | fips_md_init_ctx(SHA384, SHA512) |
| 63 | { | 63 | { |
| 64 | #if defined(SHA512_ASM) && (defined(__arm__) || defined(__arm)) | ||
| 65 | /* maintain dword order required by assembler module */ | ||
| 66 | unsigned int *h = (unsigned int *)c->h; | ||
| 67 | |||
| 68 | h[0] = 0xcbbb9d5d; h[1] = 0xc1059ed8; | ||
| 69 | h[2] = 0x629a292a; h[3] = 0x367cd507; | ||
| 70 | h[4] = 0x9159015a; h[5] = 0x3070dd17; | ||
| 71 | h[6] = 0x152fecd8; h[7] = 0xf70e5939; | ||
| 72 | h[8] = 0x67332667; h[9] = 0xffc00b31; | ||
| 73 | h[10] = 0x8eb44a87; h[11] = 0x68581511; | ||
| 74 | h[12] = 0xdb0c2e0d; h[13] = 0x64f98fa7; | ||
| 75 | h[14] = 0x47b5481d; h[15] = 0xbefa4fa4; | ||
| 76 | #else | ||
| 77 | c->h[0]=U64(0xcbbb9d5dc1059ed8); | 64 | c->h[0]=U64(0xcbbb9d5dc1059ed8); |
| 78 | c->h[1]=U64(0x629a292a367cd507); | 65 | c->h[1]=U64(0x629a292a367cd507); |
| 79 | c->h[2]=U64(0x9159015a3070dd17); | 66 | c->h[2]=U64(0x9159015a3070dd17); |
| @@ -82,27 +69,14 @@ int SHA384_Init (SHA512_CTX *c) | |||
| 82 | c->h[5]=U64(0x8eb44a8768581511); | 69 | c->h[5]=U64(0x8eb44a8768581511); |
| 83 | c->h[6]=U64(0xdb0c2e0d64f98fa7); | 70 | c->h[6]=U64(0xdb0c2e0d64f98fa7); |
| 84 | c->h[7]=U64(0x47b5481dbefa4fa4); | 71 | c->h[7]=U64(0x47b5481dbefa4fa4); |
| 85 | #endif | 72 | |
| 86 | c->Nl=0; c->Nh=0; | 73 | c->Nl=0; c->Nh=0; |
| 87 | c->num=0; c->md_len=SHA384_DIGEST_LENGTH; | 74 | c->num=0; c->md_len=SHA384_DIGEST_LENGTH; |
| 88 | return 1; | 75 | return 1; |
| 89 | } | 76 | } |
| 90 | 77 | ||
| 91 | int SHA512_Init (SHA512_CTX *c) | 78 | fips_md_init(SHA512) |
| 92 | { | 79 | { |
| 93 | #if defined(SHA512_ASM) && (defined(__arm__) || defined(__arm)) | ||
| 94 | /* maintain dword order required by assembler module */ | ||
| 95 | unsigned int *h = (unsigned int *)c->h; | ||
| 96 | |||
| 97 | h[0] = 0x6a09e667; h[1] = 0xf3bcc908; | ||
| 98 | h[2] = 0xbb67ae85; h[3] = 0x84caa73b; | ||
| 99 | h[4] = 0x3c6ef372; h[5] = 0xfe94f82b; | ||
| 100 | h[6] = 0xa54ff53a; h[7] = 0x5f1d36f1; | ||
| 101 | h[8] = 0x510e527f; h[9] = 0xade682d1; | ||
| 102 | h[10] = 0x9b05688c; h[11] = 0x2b3e6c1f; | ||
| 103 | h[12] = 0x1f83d9ab; h[13] = 0xfb41bd6b; | ||
| 104 | h[14] = 0x5be0cd19; h[15] = 0x137e2179; | ||
| 105 | #else | ||
| 106 | c->h[0]=U64(0x6a09e667f3bcc908); | 80 | c->h[0]=U64(0x6a09e667f3bcc908); |
| 107 | c->h[1]=U64(0xbb67ae8584caa73b); | 81 | c->h[1]=U64(0xbb67ae8584caa73b); |
| 108 | c->h[2]=U64(0x3c6ef372fe94f82b); | 82 | c->h[2]=U64(0x3c6ef372fe94f82b); |
| @@ -111,7 +85,7 @@ int SHA512_Init (SHA512_CTX *c) | |||
| 111 | c->h[5]=U64(0x9b05688c2b3e6c1f); | 85 | c->h[5]=U64(0x9b05688c2b3e6c1f); |
| 112 | c->h[6]=U64(0x1f83d9abfb41bd6b); | 86 | c->h[6]=U64(0x1f83d9abfb41bd6b); |
| 113 | c->h[7]=U64(0x5be0cd19137e2179); | 87 | c->h[7]=U64(0x5be0cd19137e2179); |
| 114 | #endif | 88 | |
| 115 | c->Nl=0; c->Nh=0; | 89 | c->Nl=0; c->Nh=0; |
| 116 | c->num=0; c->md_len=SHA512_DIGEST_LENGTH; | 90 | c->num=0; c->md_len=SHA512_DIGEST_LENGTH; |
| 117 | return 1; | 91 | return 1; |
| @@ -160,24 +134,6 @@ int SHA512_Final (unsigned char *md, SHA512_CTX *c) | |||
| 160 | 134 | ||
| 161 | if (md==0) return 0; | 135 | if (md==0) return 0; |
| 162 | 136 | ||
| 163 | #if defined(SHA512_ASM) && (defined(__arm__) || defined(__arm)) | ||
| 164 | /* recall assembler dword order... */ | ||
| 165 | n = c->md_len; | ||
| 166 | if (n == SHA384_DIGEST_LENGTH || n == SHA512_DIGEST_LENGTH) | ||
| 167 | { | ||
| 168 | unsigned int *h = (unsigned int *)c->h, t; | ||
| 169 | |||
| 170 | for (n/=4;n;n--) | ||
| 171 | { | ||
| 172 | t = *(h++); | ||
| 173 | *(md++) = (unsigned char)(t>>24); | ||
| 174 | *(md++) = (unsigned char)(t>>16); | ||
| 175 | *(md++) = (unsigned char)(t>>8); | ||
| 176 | *(md++) = (unsigned char)(t); | ||
| 177 | } | ||
| 178 | } | ||
| 179 | else return 0; | ||
| 180 | #else | ||
| 181 | switch (c->md_len) | 137 | switch (c->md_len) |
| 182 | { | 138 | { |
| 183 | /* Let compiler decide if it's appropriate to unroll... */ | 139 | /* Let compiler decide if it's appropriate to unroll... */ |
| @@ -214,7 +170,7 @@ int SHA512_Final (unsigned char *md, SHA512_CTX *c) | |||
| 214 | /* ... as well as make sure md_len is not abused. */ | 170 | /* ... as well as make sure md_len is not abused. */ |
| 215 | default: return 0; | 171 | default: return 0; |
| 216 | } | 172 | } |
| 217 | #endif | 173 | |
| 218 | return 1; | 174 | return 1; |
| 219 | } | 175 | } |
| 220 | 176 | ||
