diff options
| author | jca <> | 2013-12-19 22:09:26 +0000 | 
|---|---|---|
| committer | jca <> | 2013-12-19 22:09:26 +0000 | 
| commit | ef9aa2102a3cb0551023e47d951666fdbd83d004 (patch) | |
| tree | eb1fdec3649915051bf54fa7b620527f41e03cd2 /src | |
| parent | fc6d94c70f5f2496601a5901351c1d1decc89b71 (diff) | |
| download | openbsd-ef9aa2102a3cb0551023e47d951666fdbd83d004.tar.gz openbsd-ef9aa2102a3cb0551023e47d951666fdbd83d004.tar.bz2 openbsd-ef9aa2102a3cb0551023e47d951666fdbd83d004.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
Diffstat (limited to 'src')
| -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 | { | 
