openssl: Add conditional macros around SHA_CTX for AWS-LC
AWS-LC is a BoringSSL-based libcrypto implementation. SHA_CTX is declared with the hash data specified as an array rather than as a field in upstream OpenSSL. Since AWS-LC builds against C99, we are unable to handle this with anonymous unions like BoringSSL. The workaround I propose is to add these conditional macros around the accessors within openssl_sha1_prf. After this change, everything builds successfully with AWS-LC headers. Closes strongswan/strongswan#2103
This commit is contained in:
committed by
Tobias Brunner
parent
a7493ab57d
commit
7f1ba3cc68
@@ -58,12 +58,19 @@ METHOD(prf_t, get_bytes, bool,
|
|||||||
if (bytes)
|
if (bytes)
|
||||||
{
|
{
|
||||||
uint32_t *hash = (uint32_t*)bytes;
|
uint32_t *hash = (uint32_t*)bytes;
|
||||||
|
#ifndef OPENSSL_IS_AWSLC
|
||||||
hash[0] = htonl(this->ctx.h0);
|
hash[0] = htonl(this->ctx.h0);
|
||||||
hash[1] = htonl(this->ctx.h1);
|
hash[1] = htonl(this->ctx.h1);
|
||||||
hash[2] = htonl(this->ctx.h2);
|
hash[2] = htonl(this->ctx.h2);
|
||||||
hash[3] = htonl(this->ctx.h3);
|
hash[3] = htonl(this->ctx.h3);
|
||||||
hash[4] = htonl(this->ctx.h4);
|
hash[4] = htonl(this->ctx.h4);
|
||||||
|
#else
|
||||||
|
hash[0] = htonl(this->ctx.h[0]);
|
||||||
|
hash[1] = htonl(this->ctx.h[1]);
|
||||||
|
hash[2] = htonl(this->ctx.h[2]);
|
||||||
|
hash[3] = htonl(this->ctx.h[3]);
|
||||||
|
hash[4] = htonl(this->ctx.h[4]);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -104,6 +111,7 @@ METHOD(prf_t, set_key, bool,
|
|||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
#ifndef OPENSSL_IS_AWSLC
|
||||||
if (key.len >= 4)
|
if (key.len >= 4)
|
||||||
{
|
{
|
||||||
this->ctx.h0 ^= untoh32(key.ptr);
|
this->ctx.h0 ^= untoh32(key.ptr);
|
||||||
@@ -124,6 +132,28 @@ METHOD(prf_t, set_key, bool,
|
|||||||
{
|
{
|
||||||
this->ctx.h4 ^= untoh32(key.ptr + 16);
|
this->ctx.h4 ^= untoh32(key.ptr + 16);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (key.len >= 4)
|
||||||
|
{
|
||||||
|
this->ctx.h[0] ^= untoh32(key.ptr);
|
||||||
|
}
|
||||||
|
if (key.len >= 8)
|
||||||
|
{
|
||||||
|
this->ctx.h[1] ^= untoh32(key.ptr + 4);
|
||||||
|
}
|
||||||
|
if (key.len >= 12)
|
||||||
|
{
|
||||||
|
this->ctx.h[2] ^= untoh32(key.ptr + 8);
|
||||||
|
}
|
||||||
|
if (key.len >= 16)
|
||||||
|
{
|
||||||
|
this->ctx.h[3] ^= untoh32(key.ptr + 12);
|
||||||
|
}
|
||||||
|
if (key.len >= 20)
|
||||||
|
{
|
||||||
|
this->ctx.h[4] ^= untoh32(key.ptr + 16);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user