Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge main into fips-NetOS-2024-06-11 #1673

Closed
wants to merge 61 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
31e078a
Move SSL_CIPHER_get_version test to SSLVersionTest.Version (#1631)
WillChilds-Klein Jun 11, 2024
bbfb3b2
Fix AES key size for AES256 in ABI test (#1629)
andrewhop Jun 11, 2024
001e90d
chacha: Move ARMv8 OPENSSL_armcap_P dispatching from assembly to C.
briansmith Nov 27, 2023
22d6f7a
chacha: Move 32-bit Arm CPU dispatch from assembly to C
davidben Dec 19, 2023
884ad00
Remove X509_STORE_set_get_issuer
davidben Dec 19, 2023
6a47d6b
Simplify some logic around X509_verify_cert callbacks
davidben Dec 20, 2023
60755fb
Warn more explicitly not to use the callback in SSL_set_verify
davidben Dec 20, 2023
abd4607
Do a better job testing expiration checks
davidben Dec 21, 2023
d0eea90
Fix X509_PUBKEY_set0_param to clear the cached EVP_PKEY
davidben Dec 21, 2023
2854985
Test signature verification in X509_verify_cert
davidben Dec 21, 2023
0917e72
Eagerly compute the cached EVP_PKEY in X509_PUBKEY
davidben Dec 22, 2023
3320372
Use X509_get0_pubkey to simplify things slightly
davidben Dec 22, 2023
b63ccff
Make configure_callback in x509_test.cc take the X509_STORE_CTX
davidben Dec 22, 2023
7c20b96
Test the X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE codepath
davidben Dec 22, 2023
0647e1a
align X509_SIG_INFO initialization with OpenSSL
samuel40791765 Jun 4, 2024
1997f31
Update build files in generated-src
samuel40791765 Jun 4, 2024
8ce36af
add test for X509_REQ_check_private_key
samuel40791765 Jun 7, 2024
5f78ef3
Upstream merge 2024 06 03 (#1621)
samuel40791765 Jun 12, 2024
37ba0e2
[EC] Unify point addition for P-256/384/521 (#1602)
dkostic Jun 12, 2024
a0d636e
Add Intel Indirect Branch Tracking support.
Jun 8, 2023
425cf23
Generated ASM files
justsmth Jun 7, 2024
b765d4a
Fix spelling nits
Jul 10, 2023
8075b54
align gcc version with curl's CI (#1633)
samuel40791765 Jun 14, 2024
e7e64f8
Add support for NETSCAPE_SPKI_print (#1624)
samuel40791765 Jun 14, 2024
98735a2
More minor symbols for Ruby support (#1581)
samuel40791765 Jun 14, 2024
45c93fe
Make X509_V_FLAG_NOTIFY_POLICY into a no-op
davidben Jan 3, 2024
0fb94c8
Forbid unusual return values out of verify_cb
davidben Jan 3, 2024
bb1a585
Const-correct X509_alias_get0 and X509_keyid_get0
davidben Dec 17, 2023
0b66a45
Move some deprecated X.509 functions into the deprecated section
davidben Jan 5, 2024
6597674
Some miscellaneous openssl/x509.h documentation fixes
davidben Dec 25, 2023
f8a37fa
Remove X509_{PURPOSE,TRUST}_{MIN,MAX}
davidben Dec 25, 2023
daa4251
Upstream merge 2024-06-13 (#1636)
dkostic Jun 17, 2024
e3d34d7
NIST.SP.800-56Cr2 One-Step Key Derivation (#1607)
skmcgrail Jun 18, 2024
6a949d8
OpenVPN error codes, SSL_get_peer_signature_* funcs, and first patch …
smittals2 Jun 18, 2024
2beaec9
Require newer assembler for _CET_ENDBR (#1641)
justsmth Jun 18, 2024
34d5e8f
Patch for OpenVPN certificate setting behavioral difference (#1643)
smittals2 Jun 18, 2024
c65d98a
Add de-randomized ML-KEM modes to experimental EVP API (#1578)
jakemas Jun 19, 2024
6b26139
Add EVP_md_null and SSL_set_ciphersuites (#1637)
WillChilds-Klein Jun 19, 2024
f31fd31
Snapsafe-type uniqueness breaking event detection (#1640)
justsmth Jun 20, 2024
0fa574d
Prepare for release v1.30.0 (#1646)
justsmth Jun 20, 2024
c1c4383
Close FD in Snapsafe test function (#1649)
justsmth Jun 20, 2024
b681bb0
Revert `_CET_ENDBR` (#1656)
justsmth Jun 21, 2024
1fe2480
Prepare for release v1.30.1 (#1657)
justsmth Jun 21, 2024
4368aaa
Fix for loading JCA stripped private keys (#1658)
dkostic Jun 21, 2024
845ef24
Add point add/dbl to ec_nistp_felem_meth and rename it to ec_nistp_me…
dkostic Jun 25, 2024
a6f7dc3
Added constant_time_select array and entry_from_table (#1660)
dkostic Jun 25, 2024
b2bbd9c
Use params to build_compilation_database.sh (#1647)
justsmth Jun 25, 2024
cea04a6
Replace OPENSSL_NO_TLS_PHA with SSL_VERIFY_POST_HANDSHAKE (#1668)
WillChilds-Klein Jun 26, 2024
88faaa2
Make DH_check consistent with OpenSSL (#1642)
dkostic Jun 27, 2024
772e22d
Update ACVP SHAKE test implementations (#1663)
billbo-yang Jun 28, 2024
431177a
Make SSL_select_next_proto more robust to invalid calls.
davidben May 22, 2024
8415b37
[main] Make SSL_select_next_proto more robust to invalid calls. (#1675)
skmcgrail Jun 29, 2024
ba94617
Better support legacy DES customers (#1671)
andrewhop Jul 1, 2024
972832d
AT_HWCAP2 not always defined (#1682)
justsmth Jul 1, 2024
dd7bb4a
Added generic EC scalar rwnaf encoding for ec_nistp (#1664)
dkostic Jul 1, 2024
05d3bfd
Prepare for release v1.31.0 (#1683)
andrewhop Jul 1, 2024
21c5e48
Update HMAC to fail when null value is passed to out parameter (#1662)
kexgaber Jul 1, 2024
f6f9bdd
Add EC seed functions as deprecated no-ops (#1674)
samuel40791765 Jul 1, 2024
5a47ea1
Remove source patches for python main integration test (#1681)
WillChilds-Klein Jul 1, 2024
5d71da8
extend ec2-test-framework instance timeout (#1688)
samuel40791765 Jul 2, 2024
3da2c4a
Add initial x509 tool (#1666)
ecdeye Jul 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/integrations.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,19 @@ jobs:
env:
FIPS: ${{ matrix.fips }}
AWS_CRT_BUILD_USE_SYSTEM_LIBCRYPTO: ${{ matrix.openssl_in_crt }}
openldap:
if: github.repository_owner == 'aws'
runs-on: ubuntu-latest
name: OpenLDAP
steps:
- name: Install OS Dependencies
run: |
sudo apt-get update
sudo apt-get -y --no-install-recommends install cmake gcc ninja-build golang make
- uses: actions/checkout@v3
- name: Build AWS-LC, build openldap, run tests
run: |
./tests/ci/integration/run_openldap_integration.sh master OPENLDAP_REL_ENG_2_5
bind9:
if: github.repository_owner == 'aws'
runs-on: ubuntu-latest
Expand Down
12 changes: 12 additions & 0 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,3 +222,15 @@ range of unit tests, as well as running valgrind and SDE tests. Building without
produces a new target, `run_minimal_tests` in place of `run_tests`.

More information on this can be found in [INCORPORATING.md](/INCORPORATING.md).

# Snapsafe Detection

AWS-LC supports Snapsafe-type uniqueness breaking event detection
on Linux using SysGenID (https://lkml.org/lkml/2021/3/8/677). This mechanism
is used for security hardening. If a SysGenID interface is not found, then the
mechanism is ignored.

## Snapsafe Prerequisites

Snapshots taken on active hosts can potentially be unsafe to use.
See "Snapshot Safety Prerequisites" here: https://lkml.org/lkml/2021/3/8/677
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,13 @@ install(DIRECTORY include/openssl
PATTERN boringssl_prefix_symbols_nasm.inc EXCLUDE
)

if (TEST_SYSGENID_PATH)
message(STATUS "Setting AWSLC_SNAPSAFE_TESTING=1")
add_definitions(-DAWSLC_SNAPSAFE_TESTING=1)
message(STATUS "Setting AWSLC_SYSGENID_PATH=${TEST_SYSGENID_PATH}")
add_definitions(-DAWSLC_SYSGENID_PATH=\"${TEST_SYSGENID_PATH}\")
endif()

if(ANDROID)
# Android-NDK CMake files reconfigure the path and so Perl won't be found.
# However, ninja will still find them in $PATH if we just name them.
Expand Down Expand Up @@ -942,6 +949,7 @@ if(BUILD_LIBSSL)
add_subdirectory(ssl)
if(BUILD_TOOL)
add_subdirectory(tool)
add_subdirectory(tool-openssl)
endif()
endif()
add_subdirectory(util/fipstools)
Expand Down
2 changes: 2 additions & 0 deletions PORTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,8 @@ In order to use buffers, the application code also needs to implement its own ce

Once those changes have been completed, the whole of the OpenSSL X.509 and ASN.1 code should be eliminated by the linker if BoringSSL is linked statically.

Using [`CRYPTO_BUFFER`](https://commondatastorage.googleapis.com/chromium-boringssl-docs/pool.h.html) instead of `X509` or `X509_NAME` can also have some side effects, leading to a difference in behavior from OpenSSL. For example, when calling `SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list)`, OpenSSL stores a reference to `|name_list|`, transferring ownership while leaving the passed-in parameter untouched. In contrast, AWS-LC stores `|name_list|` as a stack of type `CRYPTO_BUFFER`, which results in creating a copy and freeing the passed-in list. This can lead to errors in applications that expect access to the passed-in list after calling such functions.

### Asynchronous and opaque private keys

OpenSSL offers the ENGINE API for implementing opaque private keys (i.e. private keys where software only has oracle access because the secrets are held in special hardware or on another machine). While the ENGINE API has been mostly removed from BoringSSL, it is still possible to support opaque keys in this way. However, when using such keys with TLS and BoringSSL, you should strongly prefer using `SSL_PRIVATE_KEY_METHOD` via `SSL[_CTX]_set_private_key_method`. This allows a handshake to be suspended while the private operation is in progress. It also supports more forms of opaque key as it exposes higher-level information about the operation to be performed.
3 changes: 3 additions & 0 deletions crypto/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -721,6 +721,7 @@ if(BUILD_TESTING)
digest_extra/digest_test.cc
dilithium/p_dilithium_test.cc
dsa/dsa_test.cc
des/des_test.cc
endian_test.cc
err/err_test.cc
evp_extra/evp_extra_test.cc
Expand All @@ -733,13 +734,15 @@ if(BUILD_TESTING)
fipsmodule/ec/ec_test.cc
fipsmodule/ec/p256-nistz_test.cc
fipsmodule/ecdsa/ecdsa_test.cc
fipsmodule/kdf/kdf_test.cc
fipsmodule/md5/md5_test.cc
fipsmodule/modes/gcm_test.cc
fipsmodule/modes/xts_test.cc
fipsmodule/pbkdf/pbkdf_test.cc
fipsmodule/rand/ctrdrbg_test.cc
fipsmodule/rand/cpu_jitter_test.cc
fipsmodule/rand/fork_detect_test.cc
fipsmodule/rand/snapsafe_detect_test.cc
fipsmodule/service_indicator/service_indicator_test.cc
fipsmodule/sha/sha_test.cc
fipsmodule/sha/sha3_test.cc
Expand Down
43 changes: 8 additions & 35 deletions crypto/chacha/asm/chacha-armv4.pl
Original file line number Diff line number Diff line change
Expand Up @@ -199,39 +199,14 @@ sub ROUND {
.long 0x61707865,0x3320646e,0x79622d32,0x6b206574 @ endian-neutral
.Lone:
.long 1,0,0,0
#if __ARM_MAX_ARCH__>=7
.LOPENSSL_armcap:
.word OPENSSL_armcap_P-.Lsigma
#else
.word -1
#endif

.globl ChaCha20_ctr32
.type ChaCha20_ctr32,%function
.globl ChaCha20_ctr32_nohw
.type ChaCha20_ctr32_nohw,%function
.align 5
ChaCha20_ctr32:
.LChaCha20_ctr32:
ChaCha20_ctr32_nohw:
ldr r12,[sp,#0] @ pull pointer to counter and nonce
stmdb sp!,{r0-r2,r4-r11,lr}
adr r14,.Lsigma
cmp r2,#0 @ len==0?
#ifdef __thumb2__
itt eq
#endif
addeq sp,sp,#4*3
beq .Lno_data
#if __ARM_MAX_ARCH__>=7
cmp r2,#192 @ test len
bls .Lshort
ldr r4,[r14,#32]
ldr r4,[r14,r4]
# ifdef __APPLE__
ldr r4,[r4]
# endif
tst r4,#ARMV7_NEON
bne .LChaCha20_neon
.Lshort:
#endif
ldmia r12,{r4-r7} @ load counter and nonce
sub sp,sp,#4*(16) @ off-load area
stmdb sp!,{r4-r7} @ copy counter and nonce
Expand Down Expand Up @@ -624,9 +599,8 @@ sub ROUND {

.Ldone:
add sp,sp,#4*(32+3)
.Lno_data:
ldmia sp!,{r4-r11,pc}
.size ChaCha20_ctr32,.-ChaCha20_ctr32
.size ChaCha20_ctr32_nohw,.-ChaCha20_ctr32_nohw
___

{{{
Expand Down Expand Up @@ -668,12 +642,12 @@ sub NEONROUND {
.arch armv7-a
.fpu neon

.type ChaCha20_neon,%function
.globl ChaCha20_ctr32_neon
.type ChaCha20_ctr32_neon,%function
.align 5
ChaCha20_neon:
ChaCha20_ctr32_neon:
ldr r12,[sp,#0] @ pull pointer to counter and nonce
stmdb sp!,{r0-r2,r4-r11,lr}
.LChaCha20_neon:
adr r14,.Lsigma
vstmdb sp!,{d8-d15} @ ABI spec says so
stmdb sp!,{r0-r3}
Expand Down Expand Up @@ -1148,8 +1122,7 @@ sub NEONROUND {
vldmia sp,{d8-d15}
add sp,sp,#4*(16+3)
ldmia sp!,{r4-r11,pc}
.size ChaCha20_neon,.-ChaCha20_neon
.comm OPENSSL_armcap_P,4,4
.size ChaCha20_ctr32_neon,.-ChaCha20_ctr32_neon
#endif
___
}}}
Expand Down
33 changes: 8 additions & 25 deletions crypto/chacha/asm/chacha-armv8.pl
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,6 @@ sub ROUND {
$code.=<<___;
#include <openssl/arm_arch.h>

.extern OPENSSL_armcap_P
.hidden OPENSSL_armcap_P

.section .rodata

.align 5
Expand All @@ -140,24 +137,10 @@ sub ROUND {

.text

.globl ChaCha20_ctr32
.type ChaCha20_ctr32,%function
.globl ChaCha20_ctr32_nohw
.type ChaCha20_ctr32_nohw,%function
.align 5
ChaCha20_ctr32:
AARCH64_VALID_CALL_TARGET
cbz $len,.Labort
#if defined(OPENSSL_HWASAN) && __clang_major__ >= 10
adrp @x[0],:pg_hi21_nc:OPENSSL_armcap_P
#else
adrp @x[0],:pg_hi21:OPENSSL_armcap_P
#endif
cmp $len,#192
b.lo .Lshort
ldr w17,[@x[0],:lo12:OPENSSL_armcap_P]
tst w17,#ARMV7_NEON
b.ne ChaCha20_neon

.Lshort:
ChaCha20_ctr32_nohw:
AARCH64_SIGN_LINK_REGISTER
stp x29,x30,[sp,#-96]!
add x29,sp,#0
Expand Down Expand Up @@ -280,7 +263,6 @@ sub ROUND {
ldp x27,x28,[x29,#80]
ldp x29,x30,[sp],#96
AARCH64_VALIDATE_LINK_REGISTER
.Labort:
ret

.align 4
Expand Down Expand Up @@ -338,7 +320,7 @@ sub ROUND {
ldp x29,x30,[sp],#96
AARCH64_VALIDATE_LINK_REGISTER
ret
.size ChaCha20_ctr32,.-ChaCha20_ctr32
.size ChaCha20_ctr32_nohw,.-ChaCha20_ctr32_nohw
___

{{{
Expand Down Expand Up @@ -379,9 +361,10 @@ sub NEONROUND {

$code.=<<___;

.type ChaCha20_neon,%function
.globl ChaCha20_ctr32_neon
.type ChaCha20_ctr32_neon,%function
.align 5
ChaCha20_neon:
ChaCha20_ctr32_neon:
AARCH64_SIGN_LINK_REGISTER
stp x29,x30,[sp,#-96]!
add x29,sp,#0
Expand Down Expand Up @@ -694,7 +677,7 @@ sub NEONROUND {
ldp x29,x30,[sp],#96
AARCH64_VALIDATE_LINK_REGISTER
ret
.size ChaCha20_neon,.-ChaCha20_neon
.size ChaCha20_ctr32_neon,.-ChaCha20_ctr32_neon
___
{
my ($T0,$T1,$T2,$T3,$T4,$T5)=@K;
Expand Down
17 changes: 16 additions & 1 deletion crypto/chacha/chacha.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,22 @@ void CRYPTO_hchacha20(uint8_t out[32], const uint8_t key[32],
#endif
}

#if defined(CHACHA20_ASM)
#if defined(CHACHA20_ASM_NOHW)
static void ChaCha20_ctr32(uint8_t *out, const uint8_t *in, size_t in_len,
const uint32_t key[8], const uint32_t counter[4]) {
#if defined(CHACHA20_ASM_NEON)
if (ChaCha20_ctr32_neon_capable(in_len)) {
ChaCha20_ctr32_neon(out, in, in_len, key, counter);
return;
}
#endif
if (in_len > 0) {
ChaCha20_ctr32_nohw(out, in, in_len, key, counter);
}
}
#endif

#if defined(CHACHA20_ASM) || defined(CHACHA20_ASM_NOHW)

void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len,
const uint8_t key[32], const uint8_t nonce[12],
Expand Down
29 changes: 24 additions & 5 deletions crypto/chacha/chacha_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,25 @@ TEST(ChaChaTest, CounterOverflow) {
}
}

#if defined(CHACHA20_ASM) && defined(SUPPORTS_ABI_TEST)
#if defined(SUPPORTS_ABI_TEST)

static void check_abi(uint8_t *out, const uint8_t *in, size_t in_len,
const uint32_t key[8], const uint32_t counter[4]) {
#if defined(CHACHA20_ASM)
CHECK_ABI(ChaCha20_ctr32, out, in, in_len, key, counter);
#endif
#if defined(CHACHA20_ASM_NEON)
if (ChaCha20_ctr32_neon_capable(in_len)) {
CHECK_ABI(ChaCha20_ctr32_neon, out, in, in_len, key, counter);
}
#endif
#if defined(CHACHA20_ASM_NOHW)
if (in_len > 0) {
CHECK_ABI(ChaCha20_ctr32_nohw, out, in, in_len, key, counter);
}
#endif
}

TEST(ChaChaTest, ABI) {
uint32_t key[8];
OPENSSL_memcpy(key, kKey, sizeof(key));
Expand All @@ -357,14 +375,15 @@ TEST(ChaChaTest, ABI) {
std::unique_ptr<uint8_t[]> buf(new uint8_t[sizeof(kInput)]);
for (size_t len = 0; len <= 32; len++) {
SCOPED_TRACE(len);
CHECK_ABI(ChaCha20_ctr32, buf.get(), kInput, len, key, kCounterNonce);
check_abi(buf.get(), kInput, len, key, kCounterNonce);
}

for (size_t len : {32 * 2, 32 * 4, 32 * 8, 32 * 16, 32 * 24}) {
SCOPED_TRACE(len);
CHECK_ABI(ChaCha20_ctr32, buf.get(), kInput, len, key, kCounterNonce);
check_abi(buf.get(), kInput, len, key, kCounterNonce);
// Cover the partial block paths.
CHECK_ABI(ChaCha20_ctr32, buf.get(), kInput, len + 15, key, kCounterNonce);
check_abi(buf.get(), kInput, len + 15, key, kCounterNonce);
}
}
#endif // CHACHA20_ASM && SUPPORTS_ABI_TEST

#endif // SUPPORTS_ABI_TEST
29 changes: 26 additions & 3 deletions crypto/chacha/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@

#include <openssl/base.h>

#include "../fipsmodule/cpucap/internal.h"
#include "../internal.h"

#if defined(__cplusplus)
extern "C" {
#endif
Expand All @@ -27,11 +30,25 @@ extern "C" {
void CRYPTO_hchacha20(uint8_t out[32], const uint8_t key[32],
const uint8_t nonce[16]);

#if !defined(OPENSSL_NO_ASM) && \
(defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
#if !defined(OPENSSL_NO_ASM) && \
(defined(OPENSSL_X86) || defined(OPENSSL_X86_64))

#define CHACHA20_ASM

#elif !defined(OPENSSL_NO_ASM) && \
(defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))

#define CHACHA20_ASM_NOHW

#define CHACHA20_ASM_NEON
OPENSSL_INLINE int ChaCha20_ctr32_neon_capable(size_t len) {
return (len >= 192) && CRYPTO_is_NEON_capable();
}
void ChaCha20_ctr32_neon(uint8_t *out, const uint8_t *in, size_t in_len,
const uint32_t key[8], const uint32_t counter[4]);
#endif

#if defined(CHACHA20_ASM)
// ChaCha20_ctr32 encrypts |in_len| bytes from |in| and writes the result to
// |out|. If |in| and |out| alias, they must be equal.
//
Expand All @@ -44,6 +61,12 @@ void ChaCha20_ctr32(uint8_t *out, const uint8_t *in, size_t in_len,
const uint32_t key[8], const uint32_t counter[4]);
#endif

#if defined(CHACHA20_ASM_NOHW)
// ChaCha20_ctr32_nohw is like |ChaCha20_ctr32| except |in_len| must be nonzero.
void ChaCha20_ctr32_nohw(uint8_t *out, const uint8_t *in, size_t in_len,
const uint32_t key[8], const uint32_t counter[4]);
#endif


#if defined(__cplusplus)
} // extern C
Expand Down
5 changes: 4 additions & 1 deletion crypto/cipher_extra/cipher_extra.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,10 @@ static const struct {
} kCipherAliases[] = {
{"3des", "des-ede3-cbc"},
{"aes256", "aes-256-cbc"},
{"aes128", "aes-128-cbc"}
{"aes128", "aes-128-cbc"},
{"id-aes128-gcm", "aes-128-gcm"},
{"id-aes192-gcm", "aes-192-gcm"},
{"id-aes256-gcm", "aes-256-gcm"}
};

const EVP_CIPHER *EVP_get_cipherbynid(int nid) {
Expand Down
Loading
Loading