sha512.c: fullfull implicit API contract in SHA512_Transform.
SHA512_Transform was initially added rather as tribute to tradition than for practucal reasons. But use was recently found in ssl/s3_cbc.c and it turned to be problematic on platforms that don't tolerate misasligned references to memory and lack assembly subroutine.
This commit is contained in:
parent
128e1d101b
commit
cdd1acd788
@ -234,7 +234,14 @@ int SHA384_Update (SHA512_CTX *c, const void *data, size_t len)
|
|||||||
{ return SHA512_Update (c,data,len); }
|
{ return SHA512_Update (c,data,len); }
|
||||||
|
|
||||||
void SHA512_Transform (SHA512_CTX *c, const unsigned char *data)
|
void SHA512_Transform (SHA512_CTX *c, const unsigned char *data)
|
||||||
{ sha512_block_data_order (c,data,1); }
|
{
|
||||||
|
#ifndef SHA512_BLOCK_CAN_MANAGE_UNALIGNED_DATA
|
||||||
|
if ((size_t)data%sizeof(c->u.d[0]) != 0)
|
||||||
|
memcpy(c->u.p,data,sizeof(c->u.p)),
|
||||||
|
data = c->u.p;
|
||||||
|
#endif
|
||||||
|
sha512_block_data_order (c,data,1);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md)
|
unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user