Skip to content

Commit 13ae23c

Browse files
committed
squash! fix build with boringssl
1 parent f55658f commit 13ae23c

3 files changed

Lines changed: 88 additions & 3 deletions

File tree

include/dh-primes.h

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/* ====================================================================
2+
* Copyright (c) 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+
* This product includes cryptographic software written by Eric Young
50+
* ([email protected]). This product includes software written by Tim
51+
* Hudson ([email protected]). */
52+
53+
#ifndef DEPS_NCRYPTO_DH_PRIMES_H_
54+
#define DEPS_NCRYPTO_DH_PRIMES_H_
55+
56+
#include <openssl/bn.h>
57+
58+
// Backporting primes that may not be supported in earlier boringssl versions.
59+
// Intentionally keeping the existing C-style formatting.
60+
61+
BIGNUM* BN_get_rfc3526_prime_2048(BIGNUM* ret);
62+
BIGNUM* BN_get_rfc3526_prime_3072(BIGNUM* ret);
63+
BIGNUM* BN_get_rfc3526_prime_4096(BIGNUM* ret);
64+
BIGNUM* BN_get_rfc3526_prime_6144(BIGNUM* ret);
65+
BIGNUM* BN_get_rfc3526_prime_8192(BIGNUM* ret);
66+
67+
#endif // DEPS_NCRYPTO_DH_PRIMES_H_

include/ncrypto.h

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@
1212
#include <openssl/rsa.h>
1313
#include <openssl/ssl.h>
1414
#include <openssl/x509.h>
15+
16+
#ifdef OPENSSL_IS_BORINGSSL
17+
#include <openssl/aead.h>
18+
#endif
19+
1520
#include <cstddef>
1621
#include <functional>
1722
#include <list>
@@ -57,6 +62,12 @@ using OPENSSL_SIZE_T = size_t;
5762
using OPENSSL_SIZE_T = int;
5863
#endif
5964

65+
#ifdef OPENSSL_IS_BORINGSSL
66+
#ifdef NCRYPTO_BSSL_NEEDS_DH_PRIMES
67+
#include "dh-primes.h"
68+
#endif // NCRYPTO_BSSL_NEEDS_DH_PRIMES
69+
#endif // OPENSSL_IS_BORINGSSL
70+
6071
namespace ncrypto {
6172

6273
// ============================================================================
@@ -309,9 +320,12 @@ class Cipher final {
309320
#else
310321
static constexpr size_t MAX_AUTH_TAG_LENGTH = 16;
311322
#endif
312-
static_assert(EVP_GCM_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH &&
313-
EVP_CCM_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH &&
314-
EVP_CHACHAPOLY_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH);
323+
static_assert(EVP_GCM_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH
324+
#ifndef OPENSSL_IS_BORINGSSL
325+
&& EVP_CCM_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH &&
326+
EVP_CHACHAPOLY_TLS_TAG_LEN <= MAX_AUTH_TAG_LENGTH
327+
#endif
328+
);
315329

316330
Cipher() = default;
317331
Cipher(const EVP_CIPHER* cipher) : cipher_(cipher) {}

src/ncrypto.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3090,9 +3090,13 @@ const Cipher Cipher::AES_256_GCM = Cipher::FromNid(NID_aes_256_gcm);
30903090
const Cipher Cipher::AES_128_KW = Cipher::FromNid(NID_id_aes128_wrap);
30913091
const Cipher Cipher::AES_192_KW = Cipher::FromNid(NID_id_aes192_wrap);
30923092
const Cipher Cipher::AES_256_KW = Cipher::FromNid(NID_id_aes256_wrap);
3093+
3094+
#ifndef OPENSSL_IS_BORINGSSL
30933095
const Cipher Cipher::AES_128_OCB = Cipher::FromNid(NID_aes_128_ocb);
30943096
const Cipher Cipher::AES_192_OCB = Cipher::FromNid(NID_aes_192_ocb);
30953097
const Cipher Cipher::AES_256_OCB = Cipher::FromNid(NID_aes_256_ocb);
3098+
#endif
3099+
30963100
const Cipher Cipher::CHACHA20_POLY1305 = Cipher::FromNid(NID_chacha20_poly1305);
30973101

30983102
bool Cipher::isGcmMode() const {

0 commit comments

Comments
 (0)