diff options
author | jca <> | 2013-12-19 22:09:26 +0000 |
---|---|---|
committer | jca <> | 2013-12-19 22:09:26 +0000 |
commit | feb1df3dac5b4906695ecd5078f62a9e8381ccb9 (patch) | |
tree | eb1fdec3649915051bf54fa7b620527f41e03cd2 | |
parent | e9b8af9101b84fecac7034057f8fb1084724d7ba (diff) | |
download | openbsd-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.c | 9 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/sha/sha512.c | 9 |
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 | ||
234 | void SHA512_Transform (SHA512_CTX *c, const unsigned char *data) | 234 | void 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 | ||
237 | unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md) | 244 | unsigned 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 | ||
234 | void SHA512_Transform (SHA512_CTX *c, const unsigned char *data) | 234 | void 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 | ||
237 | unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md) | 244 | unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md) |
238 | { | 245 | { |