Skip to content

Commit ffe96e6

Browse files
committed
Updating for grpc-1.4.5, WIP. Builds but does not pass tests.
1 parent a536d38 commit ffe96e6

File tree

994 files changed

+90837
-71060
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

994 files changed

+90837
-71060
lines changed

Sources/BoringSSL/crypto/aes/aes.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1066,32 +1066,32 @@ static int hwaes_capable(void) {
10661066
return CRYPTO_is_ARMv8_AES_capable();
10671067
}
10681068

1069-
int aes_v8_set_encrypt_key(const uint8_t *user_key, const int bits,
1069+
int aes_hw_set_encrypt_key(const uint8_t *user_key, const int bits,
10701070
AES_KEY *key);
1071-
int aes_v8_set_decrypt_key(const uint8_t *user_key, const int bits,
1071+
int aes_hw_set_decrypt_key(const uint8_t *user_key, const int bits,
10721072
AES_KEY *key);
1073-
void aes_v8_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key);
1074-
void aes_v8_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key);
1073+
void aes_hw_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key);
1074+
void aes_hw_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key);
10751075

10761076
#else
10771077

10781078
static int hwaes_capable(void) {
10791079
return 0;
10801080
}
10811081

1082-
static int aes_v8_set_encrypt_key(const uint8_t *user_key, int bits, AES_KEY *key) {
1082+
static int aes_hw_set_encrypt_key(const uint8_t *user_key, int bits, AES_KEY *key) {
10831083
abort();
10841084
}
10851085

1086-
static int aes_v8_set_decrypt_key(const uint8_t *user_key, int bits, AES_KEY *key) {
1086+
static int aes_hw_set_decrypt_key(const uint8_t *user_key, int bits, AES_KEY *key) {
10871087
abort();
10881088
}
10891089

1090-
static void aes_v8_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
1090+
static void aes_hw_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
10911091
abort();
10921092
}
10931093

1094-
static void aes_v8_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
1094+
static void aes_hw_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
10951095
abort();
10961096
}
10971097

@@ -1106,7 +1106,7 @@ static void aes_v8_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key)
11061106
void asm_AES_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key);
11071107
void AES_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
11081108
if (hwaes_capable()) {
1109-
aes_v8_encrypt(in, out, key);
1109+
aes_hw_encrypt(in, out, key);
11101110
} else {
11111111
asm_AES_encrypt(in, out, key);
11121112
}
@@ -1115,7 +1115,7 @@ void AES_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
11151115
void asm_AES_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key);
11161116
void AES_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
11171117
if (hwaes_capable()) {
1118-
aes_v8_decrypt(in, out, key);
1118+
aes_hw_decrypt(in, out, key);
11191119
} else {
11201120
asm_AES_decrypt(in, out, key);
11211121
}
@@ -1124,7 +1124,7 @@ void AES_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
11241124
int asm_AES_set_encrypt_key(const uint8_t *key, unsigned bits, AES_KEY *aeskey);
11251125
int AES_set_encrypt_key(const uint8_t *key, unsigned bits, AES_KEY *aeskey) {
11261126
if (hwaes_capable()) {
1127-
return aes_v8_set_encrypt_key(key, bits, aeskey);
1127+
return aes_hw_set_encrypt_key(key, bits, aeskey);
11281128
} else {
11291129
return asm_AES_set_encrypt_key(key, bits, aeskey);
11301130
}
@@ -1133,7 +1133,7 @@ int AES_set_encrypt_key(const uint8_t *key, unsigned bits, AES_KEY *aeskey) {
11331133
int asm_AES_set_decrypt_key(const uint8_t *key, unsigned bits, AES_KEY *aeskey);
11341134
int AES_set_decrypt_key(const uint8_t *key, unsigned bits, AES_KEY *aeskey) {
11351135
if (hwaes_capable()) {
1136-
return aes_v8_set_decrypt_key(key, bits, aeskey);
1136+
return aes_hw_set_decrypt_key(key, bits, aeskey);
11371137
} else {
11381138
return asm_AES_set_decrypt_key(key, bits, aeskey);
11391139
}
Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
/* ====================================================================
2+
* Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved.
3+
*
4+
* Redistribution and use in source and binary forms, with or without
5+
* modification, are permitted provided that the following conditions
6+
* are met:
7+
*
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
*
11+
* 2. Redistributions in binary form must reproduce the above copyright
12+
* notice, this list of conditions and the following disclaimer in
13+
* the documentation and/or other materials provided with the
14+
* distribution.
15+
*
16+
* 3. All advertising materials mentioning features or use of this
17+
* software must display the following acknowledgment:
18+
* "This product includes software developed by the OpenSSL Project
19+
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
20+
*
21+
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
22+
* endorse or promote products derived from this software without
23+
* prior written permission. For written permission, please contact
24+
25+
*
26+
* 5. Products derived from this software may not be called "OpenSSL"
27+
* nor may "OpenSSL" appear in their names without prior written
28+
* permission of the OpenSSL Project.
29+
*
30+
* 6. Redistributions of any form whatsoever must retain the following
31+
* acknowledgment:
32+
* "This product includes software developed by the OpenSSL Project
33+
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
34+
*
35+
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
36+
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
37+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
38+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
39+
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
41+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
42+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
43+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
44+
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
45+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
46+
* OF THE POSSIBILITY OF SUCH DAMAGE.
47+
* ==================================================================== */
48+
49+
#include <openssl/aes.h>
50+
51+
#include <limits.h>
52+
#include <string.h>
53+
54+
#include <openssl/mem.h>
55+
56+
#include "../internal.h"
57+
58+
59+
/* kDefaultIV is the default IV value given in RFC 3394, 2.2.3.1. */
60+
static const uint8_t kDefaultIV[] = {
61+
0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6,
62+
};
63+
64+
static const unsigned kBound = 6;
65+
66+
int AES_wrap_key(const AES_KEY *key, const uint8_t *iv, uint8_t *out,
67+
const uint8_t *in, size_t in_len) {
68+
/* See RFC 3394, section 2.2.1. */
69+
70+
if (in_len > INT_MAX - 8 || in_len < 8 || in_len % 8 != 0) {
71+
return -1;
72+
}
73+
74+
if (iv == NULL) {
75+
iv = kDefaultIV;
76+
}
77+
78+
OPENSSL_memmove(out + 8, in, in_len);
79+
uint8_t A[AES_BLOCK_SIZE];
80+
OPENSSL_memcpy(A, iv, 8);
81+
82+
size_t n = in_len / 8;
83+
84+
for (unsigned j = 0; j < kBound; j++) {
85+
for (size_t i = 1; i <= n; i++) {
86+
OPENSSL_memcpy(A + 8, out + 8 * i, 8);
87+
AES_encrypt(A, A, key);
88+
89+
uint32_t t = (uint32_t)(n * j + i);
90+
A[7] ^= t & 0xff;
91+
A[6] ^= (t >> 8) & 0xff;
92+
A[5] ^= (t >> 16) & 0xff;
93+
A[4] ^= (t >> 24) & 0xff;
94+
OPENSSL_memcpy(out + 8 * i, A + 8, 8);
95+
}
96+
}
97+
98+
OPENSSL_memcpy(out, A, 8);
99+
return (int)in_len + 8;
100+
}
101+
102+
int AES_unwrap_key(const AES_KEY *key, const uint8_t *iv, uint8_t *out,
103+
const uint8_t *in, size_t in_len) {
104+
/* See RFC 3394, section 2.2.2. */
105+
106+
if (in_len > INT_MAX || in_len < 16 || in_len % 8 != 0) {
107+
return -1;
108+
}
109+
110+
if (iv == NULL) {
111+
iv = kDefaultIV;
112+
}
113+
114+
uint8_t A[AES_BLOCK_SIZE];
115+
OPENSSL_memcpy(A, in, 8);
116+
OPENSSL_memmove(out, in + 8, in_len - 8);
117+
118+
size_t n = (in_len / 8) - 1;
119+
120+
for (unsigned j = kBound - 1; j < kBound; j--) {
121+
for (size_t i = n; i > 0; i--) {
122+
uint32_t t = (uint32_t)(n * j + i);
123+
A[7] ^= t & 0xff;
124+
A[6] ^= (t >> 8) & 0xff;
125+
A[5] ^= (t >> 16) & 0xff;
126+
A[4] ^= (t >> 24) & 0xff;
127+
OPENSSL_memcpy(A + 8, out + 8 * (i - 1), 8);
128+
AES_decrypt(A, A, key);
129+
OPENSSL_memcpy(out + 8 * (i - 1), A + 8, 8);
130+
}
131+
}
132+
133+
if (CRYPTO_memcmp(A, iv, 8) != 0) {
134+
return -1;
135+
}
136+
137+
return (int)in_len - 8;
138+
}

Sources/BoringSSL/crypto/aes/mode_wrappers.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,17 @@ void AES_cbc_encrypt(const uint8_t *in, uint8_t *out, size_t len,
9696

9797
void AES_ofb128_encrypt(const uint8_t *in, uint8_t *out, size_t length,
9898
const AES_KEY *key, uint8_t *ivec, int *num) {
99-
CRYPTO_ofb128_encrypt(in, out, length, key, ivec, num,
99+
unsigned num_u = (unsigned)(*num);
100+
CRYPTO_ofb128_encrypt(in, out, length, key, ivec, &num_u,
100101
(block128_f)AES_encrypt);
102+
*num = (int)num_u;
101103
}
102104

103105
void AES_cfb128_encrypt(const uint8_t *in, uint8_t *out, size_t length,
104106
const AES_KEY *key, uint8_t *ivec, int *num,
105107
int enc) {
106-
CRYPTO_cfb128_encrypt(in, out, length, key, ivec, num, enc,
108+
unsigned num_u = (unsigned)(*num);
109+
CRYPTO_cfb128_encrypt(in, out, length, key, ivec, &num_u, enc,
107110
(block128_f)AES_encrypt);
111+
*num = (int)num_u;
108112
}

Sources/BoringSSL/crypto/asn1/a_bitstr.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@
6161
#include <openssl/err.h>
6262
#include <openssl/mem.h>
6363

64+
#include "../internal.h"
65+
66+
6467
int ASN1_BIT_STRING_set(ASN1_BIT_STRING *x, unsigned char *d, int len)
6568
{
6669
return M_ASN1_BIT_STRING_set(x, d, len);
@@ -115,7 +118,7 @@ int i2c_ASN1_BIT_STRING(ASN1_BIT_STRING *a, unsigned char **pp)
115118

116119
*(p++) = (unsigned char)bits;
117120
d = a->data;
118-
memcpy(p, d, len);
121+
OPENSSL_memcpy(p, d, len);
119122
p += len;
120123
if (len > 0)
121124
p[-1] &= (0xff << bits);
@@ -162,7 +165,7 @@ ASN1_BIT_STRING *c2i_ASN1_BIT_STRING(ASN1_BIT_STRING **a,
162165
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
163166
goto err;
164167
}
165-
memcpy(s, p, (int)len);
168+
OPENSSL_memcpy(s, p, (int)len);
166169
s[len - 1] &= (0xff << padding);
167170
p += len;
168171
} else
@@ -215,7 +218,7 @@ int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value)
215218
return 0;
216219
}
217220
if (w + 1 - a->length > 0)
218-
memset(c + a->length, 0, w + 1 - a->length);
221+
OPENSSL_memset(c + a->length, 0, w + 1 - a->length);
219222
a->data = c;
220223
a->length = w + 1;
221224
}

0 commit comments

Comments
 (0)