diff options
Diffstat (limited to 'src/lib/libcrypto/sha/sha512.c')
-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 | ||