summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjca <>2013-12-19 22:09:26 +0000
committerjca <>2013-12-19 22:09:26 +0000
commitfeb1df3dac5b4906695ecd5078f62a9e8381ccb9 (patch)
treeeb1fdec3649915051bf54fa7b620527f41e03cd2
parente9b8af9101b84fecac7034057f8fb1084724d7ba (diff)
downloadopenbsd-feb1df3dac5b4906695ecd5078f62a9e8381ccb9.tar.gz
openbsd-feb1df3dac5b4906695ecd5078f62a9e8381ccb9.tar.bz2
openbsd-feb1df3dac5b4906695ecd5078f62a9e8381ccb9.zip
Reliability fix for SHA384 SSL/TLS ciphers on strict alignment
architectures. ok miod@ djm@ Upstream patch: commit cdd1acd788020d2c525331da1712ada778f1373c Author: Andy Polyakov <appro@openssl.org> Date: Wed Dec 18 21:27:35 2013 +0100
-rw-r--r--src/lib/libcrypto/sha/sha512.c9
-rw-r--r--src/lib/libssl/src/crypto/sha/sha512.c9
2 files changed, 16 insertions, 2 deletions
diff --git a/src/lib/libcrypto/sha/sha512.c b/src/lib/libcrypto/sha/sha512.c
index 50dd7dc744..50c229ddeb 100644
--- a/src/lib/libcrypto/sha/sha512.c
+++ b/src/lib/libcrypto/sha/sha512.c
@@ -232,7 +232,14 @@ int SHA384_Update (SHA512_CTX *c, const void *data, size_t len)
232{ return SHA512_Update (c,data,len); } 232{ return SHA512_Update (c,data,len); }
233 233
234void SHA512_Transform (SHA512_CTX *c, const unsigned char *data) 234void SHA512_Transform (SHA512_CTX *c, const unsigned char *data)
235{ sha512_block_data_order (c,data,1); } 235 {
236#ifndef SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
237 if ((size_t)data%sizeof(c->u.d[0]) != 0)
238 memcpy(c->u.p,data,sizeof(c->u.p)),
239 data = c->u.p;
240#endif
241 sha512_block_data_order (c,data,1);
242 }
236 243
237unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md) 244unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md)
238 { 245 {
diff --git a/src/lib/libssl/src/crypto/sha/sha512.c b/src/lib/libssl/src/crypto/sha/sha512.c
index 50dd7dc744..50c229ddeb 100644
--- a/src/lib/libssl/src/crypto/sha/sha512.c
+++ b/src/lib/libssl/src/crypto/sha/sha512.c
@@ -232,7 +232,14 @@ int SHA384_Update (SHA512_CTX *c, const void *data, size_t len)
232{ return SHA512_Update (c,data,len); } 232{ return SHA512_Update (c,data,len); }
233 233
234void SHA512_Transform (SHA512_CTX *c, const unsigned char *data) 234void SHA512_Transform (SHA512_CTX *c, const unsigned char *data)
235{ sha512_block_data_order (c,data,1); } 235 {
236#ifndef SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
237 if ((size_t)data%sizeof(c->u.d[0]) != 0)
238 memcpy(c->u.p,data,sizeof(c->u.p)),
239 data = c->u.p;
240#endif
241 sha512_block_data_order (c,data,1);
242 }
236 243
237unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md) 244unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md)
238 { 245 {