Remove union from |SHA512_CTX|.
With 2fe0360a4e1b988e7b0aa0b4348bf55805512c09, we no longer use the
other member of this union so it can be removed.
Change-Id: Ideb7c47a72df0b420eb1e7d8c718e1cacb2129f5
Reviewed-on: https://boringssl-review.googlesource.com/c/34449
Commit-Queue: Adam Langley <agl@google.com>
Commit-Queue: David Benjamin <davidben@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/crypto/fipsmodule/sha/sha512.c b/crypto/fipsmodule/sha/sha512.c
index 517e9b0..f96cfbd 100644
--- a/crypto/fipsmodule/sha/sha512.c
+++ b/crypto/fipsmodule/sha/sha512.c
@@ -143,7 +143,7 @@
int SHA512_Update(SHA512_CTX *c, const void *in_data, size_t len) {
uint64_t l;
- uint8_t *p = c->u.p;
+ uint8_t *p = c->p;
const uint8_t *data = in_data;
if (len == 0) {
@@ -160,7 +160,7 @@
c->Nl = l;
if (c->num != 0) {
- size_t n = sizeof(c->u) - c->num;
+ size_t n = sizeof(c->p) - c->num;
if (len < n) {
OPENSSL_memcpy(p + c->num, data, len);
@@ -174,10 +174,10 @@
}
}
- if (len >= sizeof(c->u)) {
- sha512_block_data_order(c->h, data, len / sizeof(c->u));
+ if (len >= sizeof(c->p)) {
+ sha512_block_data_order(c->h, data, len / sizeof(c->p));
data += len;
- len %= sizeof(c->u);
+ len %= sizeof(c->p);
data -= len;
}
@@ -190,34 +190,34 @@
}
int SHA512_Final(uint8_t *md, SHA512_CTX *sha) {
- uint8_t *p = sha->u.p;
+ uint8_t *p = sha->p;
size_t n = sha->num;
p[n] = 0x80; // There always is a room for one
n++;
- if (n > (sizeof(sha->u) - 16)) {
- OPENSSL_memset(p + n, 0, sizeof(sha->u) - n);
+ if (n > (sizeof(sha->p) - 16)) {
+ OPENSSL_memset(p + n, 0, sizeof(sha->p) - n);
n = 0;
sha512_block_data_order(sha->h, p, 1);
}
- OPENSSL_memset(p + n, 0, sizeof(sha->u) - 16 - n);
- p[sizeof(sha->u) - 1] = (uint8_t)(sha->Nl);
- p[sizeof(sha->u) - 2] = (uint8_t)(sha->Nl >> 8);
- p[sizeof(sha->u) - 3] = (uint8_t)(sha->Nl >> 16);
- p[sizeof(sha->u) - 4] = (uint8_t)(sha->Nl >> 24);
- p[sizeof(sha->u) - 5] = (uint8_t)(sha->Nl >> 32);
- p[sizeof(sha->u) - 6] = (uint8_t)(sha->Nl >> 40);
- p[sizeof(sha->u) - 7] = (uint8_t)(sha->Nl >> 48);
- p[sizeof(sha->u) - 8] = (uint8_t)(sha->Nl >> 56);
- p[sizeof(sha->u) - 9] = (uint8_t)(sha->Nh);
- p[sizeof(sha->u) - 10] = (uint8_t)(sha->Nh >> 8);
- p[sizeof(sha->u) - 11] = (uint8_t)(sha->Nh >> 16);
- p[sizeof(sha->u) - 12] = (uint8_t)(sha->Nh >> 24);
- p[sizeof(sha->u) - 13] = (uint8_t)(sha->Nh >> 32);
- p[sizeof(sha->u) - 14] = (uint8_t)(sha->Nh >> 40);
- p[sizeof(sha->u) - 15] = (uint8_t)(sha->Nh >> 48);
- p[sizeof(sha->u) - 16] = (uint8_t)(sha->Nh >> 56);
+ OPENSSL_memset(p + n, 0, sizeof(sha->p) - 16 - n);
+ p[sizeof(sha->p) - 1] = (uint8_t)(sha->Nl);
+ p[sizeof(sha->p) - 2] = (uint8_t)(sha->Nl >> 8);
+ p[sizeof(sha->p) - 3] = (uint8_t)(sha->Nl >> 16);
+ p[sizeof(sha->p) - 4] = (uint8_t)(sha->Nl >> 24);
+ p[sizeof(sha->p) - 5] = (uint8_t)(sha->Nl >> 32);
+ p[sizeof(sha->p) - 6] = (uint8_t)(sha->Nl >> 40);
+ p[sizeof(sha->p) - 7] = (uint8_t)(sha->Nl >> 48);
+ p[sizeof(sha->p) - 8] = (uint8_t)(sha->Nl >> 56);
+ p[sizeof(sha->p) - 9] = (uint8_t)(sha->Nh);
+ p[sizeof(sha->p) - 10] = (uint8_t)(sha->Nh >> 8);
+ p[sizeof(sha->p) - 11] = (uint8_t)(sha->Nh >> 16);
+ p[sizeof(sha->p) - 12] = (uint8_t)(sha->Nh >> 24);
+ p[sizeof(sha->p) - 13] = (uint8_t)(sha->Nh >> 32);
+ p[sizeof(sha->p) - 14] = (uint8_t)(sha->Nh >> 40);
+ p[sizeof(sha->p) - 15] = (uint8_t)(sha->Nh >> 48);
+ p[sizeof(sha->p) - 16] = (uint8_t)(sha->Nh >> 56);
sha512_block_data_order(sha->h, p, 1);
diff --git a/include/openssl/sha.h b/include/openssl/sha.h
index 2c0dcb7..c9b327d 100644
--- a/include/openssl/sha.h
+++ b/include/openssl/sha.h
@@ -244,10 +244,7 @@
struct sha512_state_st {
uint64_t h[8];
uint64_t Nl, Nh;
- union {
- uint64_t d[16];
- uint8_t p[128];
- } u;
+ uint8_t p[128];
unsigned num, md_len;
};