Skip to content

Commit 134ac40

Browse files
authored
Conditional defines to support older boringssl+fips configurations (#6)
* Older boringssl versions do not have the kdf.h header * Revert "Remove BoringSSL dh-primes addition (#5)" This reverts commit c2a9093. * Avoid use of BN_GENCB_get_arg API is not defined in older versions of openssl and boringssl * More support for older boringssl+fips
1 parent c2a9093 commit 134ac40

File tree

3 files changed

+411
-20
lines changed

3 files changed

+411
-20
lines changed

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+
* licensing@OpenSSL.org.
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+
* (eay@cryptsoft.com). This product includes software written by Tim
51+
* Hudson (tjh@cryptsoft.com). */
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: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <openssl/err.h>
99
#include <openssl/evp.h>
1010
#include <openssl/hmac.h>
11-
#include <openssl/kdf.h>
1211
#include <openssl/rsa.h>
1312
#include <openssl/ssl.h>
1413
#include <openssl/x509.h>
@@ -49,6 +48,12 @@ using OPENSSL_SIZE_T = size_t;
4948
using OPENSSL_SIZE_T = int;
5049
#endif
5150

51+
#ifdef OPENSSL_IS_BORINGSSL
52+
#ifdef NCRYPTO_BSSL_NEEDS_DH_PRIMES
53+
#include "dh-primes.h"
54+
#endif // NCRYPTO_BSSL_NEEDS_DH_PRIMES
55+
#endif // OPENSSL_IS_BORINGSSL
56+
5257
namespace ncrypto {
5358

5459
// ============================================================================

0 commit comments

Comments
 (0)