aws-crt 0.1.9 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/VERSION +1 -1
- data/aws-crt-ffi/crt/aws-c-auth/include/aws/auth/auth.h +1 -0
- data/aws-crt-ffi/crt/aws-c-auth/include/aws/auth/aws_imds_client.h +5 -0
- data/aws-crt-ffi/crt/aws-c-auth/include/aws/auth/credentials.h +5 -0
- data/aws-crt-ffi/crt/aws-c-auth/include/aws/auth/private/aws_signing.h +1 -0
- data/aws-crt-ffi/crt/aws-c-auth/include/aws/auth/private/credentials_utils.h +2 -0
- data/aws-crt-ffi/crt/aws-c-auth/include/aws/auth/signing_config.h +1 -0
- data/aws-crt-ffi/crt/aws-c-auth/source/auth.c +3 -1
- data/aws-crt-ffi/crt/aws-c-auth/source/aws_imds_client.c +146 -63
- data/aws-crt-ffi/crt/aws-c-auth/source/aws_signing.c +41 -19
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_provider_imds.c +1 -0
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_utils.c +1 -0
- data/aws-crt-ffi/crt/aws-c-auth/source/signable_http_request.c +2 -1
- data/aws-crt-ffi/crt/aws-c-auth/source/signing_config.c +25 -0
- data/aws-crt-ffi/crt/aws-c-auth/tests/CMakeLists.txt +3 -0
- data/aws-crt-ffi/crt/aws-c-auth/tests/aws_imds_client_test.c +197 -31
- data/aws-crt-ffi/crt/aws-c-auth/tests/credentials_provider_imds_tests.c +16 -18
- data/aws-crt-ffi/crt/aws-c-auth/tests/sigv4_signing_tests.c +3 -1
- data/aws-crt-ffi/crt/aws-c-cal/include/aws/cal/private/opensslcrypto_common.h +22 -0
- data/aws-crt-ffi/crt/aws-c-cal/source/darwin/commoncrypto_aes.c +46 -17
- data/aws-crt-ffi/crt/aws-c-cal/source/unix/openssl_aes.c +1 -0
- data/aws-crt-ffi/crt/aws-c-cal/source/unix/openssl_platform_init.c +7 -0
- data/aws-crt-ffi/crt/aws-c-cal/source/unix/openssl_rsa.c +59 -2
- data/aws-crt-ffi/crt/aws-c-cal/source/unix/opensslcrypto_ecc.c +1 -0
- data/aws-crt-ffi/crt/aws-c-common/CMakeLists.txt +13 -1
- data/aws-crt-ffi/crt/aws-c-common/THIRD-PARTY-LICENSES.txt +28 -7
- data/aws-crt-ffi/crt/aws-c-common/bin/system_info/CMakeLists.txt +18 -0
- data/aws-crt-ffi/crt/aws-c-common/bin/system_info/print_system_info.c +48 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/allocator.h +23 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/byte_buf.h +12 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/cross_process_lock.h +35 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/hash_table.h +1 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/priority_queue.h +24 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/private/system_info_priv.h +37 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/system_info.h +47 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/system_resource_util.h +30 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/testing/aws_test_harness.h +3 -2
- data/aws-crt-ffi/crt/aws-c-common/source/allocator.c +64 -13
- data/aws-crt-ffi/crt/aws-c-common/source/android/logging.c +14 -0
- data/aws-crt-ffi/crt/aws-c-common/source/common.c +3 -3
- data/aws-crt-ffi/crt/aws-c-common/source/file.c +96 -35
- data/aws-crt-ffi/crt/aws-c-common/source/linux/system_info.c +24 -0
- data/aws-crt-ffi/crt/aws-c-common/source/memtrace.c +10 -3
- data/aws-crt-ffi/crt/aws-c-common/source/platform_fallback_stubs/system_info.c +21 -0
- data/aws-crt-ffi/crt/aws-c-common/source/posix/cross_process_lock.c +141 -0
- data/aws-crt-ffi/crt/aws-c-common/source/posix/system_info.c +1 -1
- data/aws-crt-ffi/crt/aws-c-common/source/posix/system_resource_utils.c +32 -0
- data/aws-crt-ffi/crt/aws-c-common/source/priority_queue.c +24 -0
- data/aws-crt-ffi/crt/aws-c-common/source/system_info.c +80 -0
- data/aws-crt-ffi/crt/aws-c-common/source/task_scheduler.c +2 -2
- data/aws-crt-ffi/crt/aws-c-common/source/windows/cross_process_lock.c +93 -0
- data/aws-crt-ffi/crt/aws-c-common/source/windows/system_resource_utils.c +31 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/CMakeLists.txt +16 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/alloc_test.c +83 -22
- data/aws-crt-ffi/crt/aws-c-common/tests/cross_process_lock_tests.c +116 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/file_test.c +103 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/priority_queue_test.c +36 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/system_info_tests.c +19 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/system_resource_util_test.c +37 -0
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/connection.h +9 -0
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/http.h +1 -0
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/connection_impl.h +5 -4
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/connection_manager_system_vtable.h +10 -18
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/proxy_impl.h +5 -1
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/request_response_impl.h +5 -0
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/request_response.h +10 -0
- data/aws-crt-ffi/crt/aws-c-http/source/connection.c +5 -2
- data/aws-crt-ffi/crt/aws-c-http/source/connection_manager.c +22 -21
- data/aws-crt-ffi/crt/aws-c-http/source/h1_connection.c +102 -17
- data/aws-crt-ffi/crt/aws-c-http/source/h1_stream.c +1 -0
- data/aws-crt-ffi/crt/aws-c-http/source/http.c +3 -0
- data/aws-crt-ffi/crt/aws-c-http/source/proxy_connection.c +2 -2
- data/aws-crt-ffi/crt/aws-c-http/tests/CMakeLists.txt +2 -0
- data/aws-crt-ffi/crt/aws-c-http/tests/test_connection_manager.c +18 -18
- data/aws-crt-ffi/crt/aws-c-http/tests/test_h1_client.c +111 -1
- data/aws-crt-ffi/crt/aws-c-http/tests/test_proxy.c +2 -2
- data/aws-crt-ffi/crt/aws-c-http/tests/test_stream_manager.c +2 -2
- data/aws-crt-ffi/crt/aws-c-io/include/aws/io/retry_strategy.h +1 -1
- data/aws-crt-ffi/crt/aws-c-io/source/exponential_backoff_retry_strategy.c +1 -1
- data/aws-crt-ffi/crt/aws-c-io/source/pkcs11_tls_op_handler.c +2 -4
- data/aws-crt-ffi/crt/aws-lc/CMakeLists.txt +16 -8
- data/aws-crt-ffi/crt/aws-lc/cmake/go.cmake +6 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/CMakeLists.txt +6 -9
- data/aws-crt-ffi/crt/aws-lc/crypto/asn1/a_time.c +34 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/asn1/a_utctm.c +4 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/asn1/asn1_test.cc +41 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/bio/bio_mem.c +6 -7
- data/aws-crt-ffi/crt/aws-lc/crypto/bio/bio_test.cc +152 -16
- data/aws-crt-ffi/crt/aws-lc/crypto/bio/connect.c +6 -12
- data/aws-crt-ffi/crt/aws-lc/crypto/bio/fd.c +2 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/bio/file.c +20 -8
- data/aws-crt-ffi/crt/aws-lc/crypto/bio/socket.c +2 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/bio/socket_helper.c +2 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/blake2/blake2.c +11 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/bytestring/cbb.c +13 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/bytestring/cbs.c +9 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/chacha/asm/chacha-armv8.pl +1 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/chacha/chacha.c +49 -8
- data/aws-crt-ffi/crt/aws-lc/crypto/chacha/chacha_test.cc +110 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/chacha/internal.h +8 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/compiler_test.cc +4 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/conf/conf_test.cc +1 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/crypto_test.cc +9 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/curve25519/curve25519.c +189 -108
- data/aws-crt-ffi/crt/aws-lc/crypto/curve25519/curve25519_nohw.c +78 -6
- data/aws-crt-ffi/crt/aws-lc/crypto/curve25519/ed25519_test.cc +9 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/curve25519/internal.h +24 -10
- data/aws-crt-ffi/crt/aws-lc/crypto/curve25519/spake25519.c +4 -4
- data/aws-crt-ffi/crt/aws-lc/crypto/curve25519/x25519_test.cc +80 -11
- data/aws-crt-ffi/crt/aws-lc/crypto/decrepit/evp/evp_do_all.c +2 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/digest_extra/digest_extra.c +8 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/digest_extra/digest_test.cc +110 -45
- data/aws-crt-ffi/crt/aws-lc/crypto/dsa/dsa_test.cc +8 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/dsa/internal.h +18 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/dynamic_loading_test.c +8 -5
- data/aws-crt-ffi/crt/aws-lc/crypto/ec_extra/ec_derive.c +4 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/ec_extra/hash_to_curve.c +6 -18
- data/aws-crt-ffi/crt/aws-lc/crypto/endian_test.cc +308 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/err/ssl.errordata +2 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/evp_extra/evp_extra_test.cc +2 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/evp_extra/evp_test.cc +11 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/evp_extra/evp_tests.txt +25 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/evp_extra/p_ec_asn1.c +1 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/evp_extra/p_kem.c +2 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/evp_extra/p_rsa_asn1.c +1 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/evp_extra/print.c +7 -6
- data/aws-crt-ffi/crt/aws-lc/crypto/evp_extra/scrypt.c +13 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/CMakeLists.txt +13 -4
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/aes/aes_nohw.c +18 -6
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bcm.c +12 -4
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/bn_assert_test.cc +77 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/bn_test.cc +30 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/bytes.c +112 -22
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/div.c +12 -5
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/exponentiation.c +54 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/gcd.c +5 -6
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/internal.h +37 -15
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/montgomery.c +4 -11
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/cipher/aead.c +2 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/digest/digest.c +29 -6
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/digest/digests.c +89 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/digest/internal.h +4 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/ec.c +19 -36
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/ec_key.c +3 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/ec_montgomery.c +9 -7
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/ec_test.cc +33 -9
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/internal.h +17 -12
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/p224-64.c +5 -8
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/p256-nistz.c +8 -8
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/p256.c +9 -8
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/p384.c +33 -16
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/p521.c +14 -6
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/scalar.c +26 -24
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/simple_mul.c +8 -5
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ec/wnaf.c +3 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/ecdsa/ecdsa.c +9 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/evp/evp.c +43 -12
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/evp/p_ec.c +4 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/hmac/hmac.c +3 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/modes/xts.c +26 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/rand/cpu_jitter_test.cc +1 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/rand/internal.h +20 -11
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/rand/rand.c +10 -10
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/rand/urandom.c +2 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/rsa/internal.h +59 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/rsa/padding.c +9 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/rsa/rsa.c +7 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/rsa/rsa_impl.c +51 -60
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/service_indicator/service_indicator.c +5 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/service_indicator/service_indicator_test.cc +205 -5
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/sha/asm/sha1-armv8.pl +1 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/sha/asm/sha512-armv8.pl +1 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/sha/internal.h +8 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/sha/sha3.c +37 -15
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/sha/sha3_test.cc +115 -110
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/sha/sha512.c +55 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/fipsmodule/sshkdf/sshkdf.c +2 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/hmac_extra/hmac_test.cc +12 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/hmac_extra/hmac_tests.txt +10 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/hrss/asm/poly_rq_mul.S +2 -6
- data/aws-crt-ffi/crt/aws-lc/crypto/impl_dispatch_test.cc +9 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/internal.h +90 -8
- data/aws-crt-ffi/crt/aws-lc/crypto/kem/kem.c +28 -27
- data/aws-crt-ffi/crt/aws-lc/crypto/kyber/kem_kyber.h +14 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/obj/obj_dat.h +52 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/obj/obj_mac.num +5 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/obj/objects.txt +7 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/perlasm/arm-xlate.pl +3 -14
- data/aws-crt-ffi/crt/aws-lc/crypto/perlasm/ppc-xlate.pl +1 -5
- data/aws-crt-ffi/crt/aws-lc/crypto/perlasm/x86_64-xlate.pl +4 -15
- data/aws-crt-ffi/crt/aws-lc/crypto/perlasm/x86asm.pl +4 -13
- data/aws-crt-ffi/crt/aws-lc/crypto/poly1305/poly1305_arm_asm.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/crypto/rand_extra/deterministic.c +4 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/rand_extra/fuchsia.c +4 -4
- data/aws-crt-ffi/crt/aws-lc/crypto/rand_extra/rand_test.cc +0 -63
- data/aws-crt-ffi/crt/aws-lc/crypto/rand_extra/windows.c +41 -19
- data/aws-crt-ffi/crt/aws-lc/crypto/rsa_extra/rsa_test.cc +3 -3
- data/aws-crt-ffi/crt/aws-lc/crypto/siphash/siphash.c +12 -5
- data/aws-crt-ffi/crt/aws-lc/crypto/siphash/siphash_test.cc +5 -5
- data/aws-crt-ffi/crt/aws-lc/crypto/stack/stack.c +68 -46
- data/aws-crt-ffi/crt/aws-lc/crypto/trust_token/pmbtoken.c +4 -4
- data/aws-crt-ffi/crt/aws-lc/crypto/trust_token/voprf.c +2 -2
- data/aws-crt-ffi/crt/aws-lc/crypto/x509/by_dir.c +0 -6
- data/aws-crt-ffi/crt/aws-lc/crypto/x509/internal.h +4 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/x509/x509_lu.c +33 -9
- data/aws-crt-ffi/crt/aws-lc/crypto/x509/x509_test.cc +87 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/x509/x509_trs.c +1 -1
- data/aws-crt-ffi/crt/aws-lc/crypto/x509/x509_vfy.c +35 -13
- data/aws-crt-ffi/crt/aws-lc/crypto/x509v3/v3_lib.c +2 -0
- data/aws-crt-ffi/crt/aws-lc/crypto/x509v3/v3_purp.c +4 -6
- data/aws-crt-ffi/crt/aws-lc/generated-src/crypto_test_data.cc +179 -151
- data/aws-crt-ffi/crt/aws-lc/generated-src/err_data.c +353 -349
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/chacha/chacha-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/aesv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-unroll8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/aesv8-gcm-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/armv8-mont.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/bn-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/ghash-neon-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/ghashv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/keccak1600-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/md5-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/p256-armv8-asm.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/sha1-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/sha256-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/sha512-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/fipsmodule/vpaes-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-aarch64/crypto/test/trampoline-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/chacha/chacha-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/aesv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/armv4-mont.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/bsaes-armv7.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/ghash-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/ghashv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/sha1-armv4-large.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/sha256-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/sha512-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/fipsmodule/vpaes-armv7.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/ios-arm/crypto/test/trampoline-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/chacha/chacha-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/aesv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-unroll8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/armv8-mont.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/bn-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/ghashv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/keccak1600-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/md5-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/p256-armv8-asm.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/sha1-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/sha256-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/sha512-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/fipsmodule/vpaes-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-aarch64/crypto/test/trampoline-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/chacha/chacha-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/aesv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/armv4-mont.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/bsaes-armv7.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/ghash-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/ghashv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/sha1-armv4-large.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/sha256-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/sha512-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/fipsmodule/vpaes-armv7.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-arm/crypto/test/trampoline-armv4.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-ppc64le/crypto/fipsmodule/aesp8-ppc.S +1 -5
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-ppc64le/crypto/fipsmodule/ghashp8-ppc.S +1 -5
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-ppc64le/crypto/test/trampoline-ppc.S +1 -5
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/chacha/chacha-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/aesni-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/bn-586.S +4 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/co-586.S +4 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/ghash-ssse3-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/ghash-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/md5-586.S +4 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/sha1-586.S +4 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/sha256-586.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/sha512-586.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/vpaes-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/fipsmodule/x86-mont.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86/crypto/test/trampoline-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/chacha/chacha-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/cipher_extra/aesni-sha1-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/cipher_extra/aesni-sha256-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/aesni-gcm-avx512.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/aesni-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/aesni-xts-avx512.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/ghash-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/md5-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/rdrand-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/rsaz-avx2.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/sha1-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/sha256-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/sha512-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/vpaes-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/x86_64-mont.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/fipsmodule/x86_64-mont5.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/linux-x86_64/crypto/test/trampoline-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/chacha/chacha-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/aesni-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/bn-586.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/co-586.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/ghash-ssse3-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/ghash-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/md5-586.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/sha1-586.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/sha256-586.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/sha512-586.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/vpaes-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/fipsmodule/x86-mont.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86/crypto/test/trampoline-x86.S +3 -12
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/chacha/chacha-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/cipher_extra/aesni-sha1-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/cipher_extra/aesni-sha256-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/aesni-gcm-avx512.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/aesni-gcm-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/aesni-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/aesni-xts-avx512.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/ghash-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/md5-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/rdrand-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/rsaz-avx2.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/sha1-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/sha256-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/sha512-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/vpaes-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/x86_64-mont.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/fipsmodule/x86_64-mont5.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/mac-x86_64/crypto/test/trampoline-x86_64.S +2 -11
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/chacha/chacha-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/aesv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-unroll8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/aesv8-gcm-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/armv8-mont.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/bn-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/ghash-neon-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/ghashv8-armx.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/keccak1600-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/md5-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/p256-armv8-asm.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/sha1-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/sha256-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/sha512-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/fipsmodule/vpaes-armv8.S +3 -13
- data/aws-crt-ffi/crt/aws-lc/generated-src/win-aarch64/crypto/test/trampoline-armv8.S +4 -14
- data/aws-crt-ffi/crt/aws-lc/go.mod +4 -4
- data/aws-crt-ffi/crt/aws-lc/go.sum +8 -10
- data/aws-crt-ffi/crt/aws-lc/include/openssl/aead.h +2 -2
- data/aws-crt-ffi/crt/aws-lc/include/openssl/arm_arch.h +4 -119
- data/aws-crt-ffi/crt/aws-lc/include/openssl/asm_base.h +185 -0
- data/aws-crt-ffi/crt/aws-lc/include/openssl/asn1.h +5 -0
- data/aws-crt-ffi/crt/aws-lc/include/openssl/base.h +31 -134
- data/aws-crt-ffi/crt/aws-lc/include/openssl/bio.h +30 -18
- data/aws-crt-ffi/crt/aws-lc/include/openssl/bn.h +0 -2
- data/aws-crt-ffi/crt/aws-lc/include/openssl/chacha.h +6 -0
- data/aws-crt-ffi/crt/aws-lc/include/openssl/cipher.h +2 -2
- data/aws-crt-ffi/crt/aws-lc/include/openssl/digest.h +9 -6
- data/aws-crt-ffi/crt/aws-lc/include/openssl/dsa.h +0 -21
- data/aws-crt-ffi/crt/aws-lc/include/openssl/ec.h +1 -1
- data/aws-crt-ffi/crt/aws-lc/include/openssl/err.h +1 -1
- data/aws-crt-ffi/crt/aws-lc/include/openssl/evp.h +8 -5
- data/aws-crt-ffi/crt/aws-lc/include/openssl/nid.h +21 -0
- data/aws-crt-ffi/crt/aws-lc/include/openssl/rsa.h +1 -65
- data/aws-crt-ffi/crt/aws-lc/include/openssl/sha.h +22 -1
- data/aws-crt-ffi/crt/aws-lc/include/openssl/ssl.h +121 -13
- data/aws-crt-ffi/crt/aws-lc/include/openssl/stack.h +229 -208
- data/aws-crt-ffi/crt/aws-lc/include/openssl/target.h +166 -0
- data/aws-crt-ffi/crt/aws-lc/include/openssl/x509.h +30 -10
- data/aws-crt-ffi/crt/aws-lc/include/openssl/x509v3.h +6 -4
- data/aws-crt-ffi/crt/aws-lc/sources.cmake +2 -0
- data/aws-crt-ffi/crt/aws-lc/ssl/extensions.cc +12 -7
- data/aws-crt-ffi/crt/aws-lc/ssl/handshake_server.cc +28 -18
- data/aws-crt-ffi/crt/aws-lc/ssl/internal.h +41 -6
- data/aws-crt-ffi/crt/aws-lc/ssl/s3_both.cc +9 -17
- data/aws-crt-ffi/crt/aws-lc/ssl/ssl_cipher.cc +13 -5
- data/aws-crt-ffi/crt/aws-lc/ssl/ssl_key_share.cc +542 -2
- data/aws-crt-ffi/crt/aws-lc/ssl/ssl_lib.cc +35 -0
- data/aws-crt-ffi/crt/aws-lc/ssl/ssl_test.cc +1847 -14
- data/aws-crt-ffi/crt/aws-lc/ssl/ssl_x509.cc +128 -0
- data/aws-crt-ffi/crt/aws-lc/ssl/test/PORTING.md +10 -7
- data/aws-crt-ffi/crt/aws-lc/ssl/test/bssl_shim.cc +133 -77
- data/aws-crt-ffi/crt/aws-lc/ssl/test/handshake_util.cc +3 -3
- data/aws-crt-ffi/crt/aws-lc/ssl/test/handshaker.cc +4 -0
- data/aws-crt-ffi/crt/aws-lc/ssl/test/runner/handshake_client.go +6 -2
- data/aws-crt-ffi/crt/aws-lc/ssl/test/runner/handshake_messages.go +894 -1042
- data/aws-crt-ffi/crt/aws-lc/ssl/test/runner/handshake_server.go +24 -23
- data/aws-crt-ffi/crt/aws-lc/ssl/test/runner/prf.go +6 -5
- data/aws-crt-ffi/crt/aws-lc/ssl/test/runner/runner.go +56 -55
- data/aws-crt-ffi/crt/aws-lc/ssl/test/runner/shim_dispatcher.go +188 -0
- data/aws-crt-ffi/crt/aws-lc/ssl/test/runner/ticket.go +37 -39
- data/aws-crt-ffi/crt/aws-lc/ssl/test/test_config.cc +59 -24
- data/aws-crt-ffi/crt/aws-lc/ssl/test/test_config.h +3 -2
- data/aws-crt-ffi/crt/aws-lc/ssl/tls13_server.cc +10 -11
- data/aws-crt-ffi/crt/aws-lc/tests/ci/cdk/app.py +4 -4
- data/aws-crt-ffi/crt/aws-lc/tests/ci/cdk/cdk/{aws_lc_mac_arm_ci_stack.py → aws_lc_ec2_test_framework_ci_stack.py} +13 -29
- data/aws-crt-ffi/crt/aws-lc/tests/ci/cdk/cdk/ssm/general_test_run_ssm_document.yaml +43 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/common_posix_setup.sh +10 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/linux-aarch/amazonlinux-2023_base/Dockerfile +5 -1
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/linux-aarch/ubuntu-22.04_base/Dockerfile +19 -3
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/linux-x86/amazonlinux-2_gcc-7x-intel-sde/Dockerfile +5 -4
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/linux-x86/build_images.sh +1 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/linux-x86/push_images.sh +2 -1
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/linux-x86/ubuntu-20.04_clang-10x_formal-verification/create_image.sh +1 -1
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/linux-x86/ubuntu-22.04_base/Dockerfile +1 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/linux-x86/ubuntu-22.04_clang-14x-sde/Dockerfile +42 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/windows/vs2017/Dockerfile +14 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/docker_images/windows/windows_base/Dockerfile +3 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/integration/README.md +12 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/integration/nginx_patch/aws-lc-nginx.patch +68 -23
- data/aws-crt-ffi/crt/aws-lc/tests/ci/integration/run_crt_integration.sh +27 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/integration/run_monit_integration.sh +56 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/integration/sslproxy_patch/aws-lc-sslproxy.patch +2 -2
- data/aws-crt-ffi/crt/aws-lc/tests/ci/run_ec2_test_framework.sh +135 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/run_fips_tests.sh +14 -2
- data/aws-crt-ffi/crt/aws-lc/tests/ci/run_tests_with_sde.sh +4 -1
- data/aws-crt-ffi/crt/aws-lc/tests/ci/run_tests_with_sde_asan.sh +14 -0
- data/aws-crt-ffi/crt/aws-lc/tests/ci/run_windows_tests.bat +39 -3
- data/aws-crt-ffi/crt/aws-lc/third_party/fiat/README.md +21 -6
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/bignum_madd_n25519.S +284 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/bignum_madd_n25519_alt.S +210 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/bignum_mod_n25519.S +186 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/bignum_neg_p25519.S +65 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/curve25519_x25519.S +1043 -352
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/curve25519_x25519_alt.S +1043 -352
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/curve25519_x25519_byte.S +1043 -352
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/curve25519_x25519_byte_alt.S +1043 -352
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/curve25519_x25519base.S +1042 -352
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_alt.S +1042 -352
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_byte.S +1042 -352
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/curve25519_x25519base_byte_alt.S +1043 -354
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/edwards25519_decode.S +700 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/edwards25519_decode_alt.S +563 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/edwards25519_encode.S +131 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmulbase.S +9626 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmulbase_alt.S +9468 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmuldouble.S +3157 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/curve25519/edwards25519_scalarmuldouble_alt.S +2941 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/p384/Makefile +1 -1
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/arm/p521/Makefile +1 -1
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/include/s2n-bignum_aws-lc.h +34 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/bignum_madd_n25519.S +219 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/bignum_madd_n25519_alt.S +245 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/bignum_mod_n25519.S +228 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/bignum_neg_p25519.S +86 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519.S +1350 -407
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519_alt.S +1350 -407
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519base.S +1344 -400
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/curve25519_x25519base_alt.S +1348 -402
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/edwards25519_decode.S +670 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/edwards25519_decode_alt.S +751 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/edwards25519_encode.S +81 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmulbase.S +9910 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmulbase_alt.S +9986 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmuldouble.S +3619 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/s2n-bignum/x86_att/curve25519/edwards25519_scalarmuldouble_alt.S +3736 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/wycheproof_testvectors/hmac_sha512_224_test.json +1978 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/wycheproof_testvectors/hmac_sha512_224_test.txt +1403 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/wycheproof_testvectors/hmac_sha512_256_test.json +1993 -0
- data/aws-crt-ffi/crt/aws-lc/third_party/wycheproof_testvectors/hmac_sha512_256_test.txt +1416 -0
- data/aws-crt-ffi/crt/aws-lc/tool/digest.cc +4 -0
- data/aws-crt-ffi/crt/aws-lc/tool/internal.h +1 -0
- data/aws-crt-ffi/crt/aws-lc/tool/speed.cc +53 -6
- data/aws-crt-ffi/crt/aws-lc/util/all_tests.go +43 -12
- data/aws-crt-ffi/crt/aws-lc/util/all_tests.json +13 -5
- data/aws-crt-ffi/crt/aws-lc/util/bot/DEPS +4 -4
- data/aws-crt-ffi/crt/aws-lc/util/bot/update_clang.py +8 -2
- data/aws-crt-ffi/crt/aws-lc/util/codecov-ci.sh +82 -0
- data/aws-crt-ffi/crt/aws-lc/util/convert_wycheproof/convert_wycheproof.go +7 -5
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/ACVP.md +7 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/subprocess/hash.go +24 -9
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/subprocess/rsa.go +3 -4
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/subprocess/subprocess.go +15 -10
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/expected/HMAC-SHA2-512-224.bz2 +0 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/expected/SHA2-512-224.bz2 +0 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/expected/SHAKE-128.bz2 +0 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/expected/SHAKE-256.bz2 +0 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/sha-tests/sha512-224-tests.json +1 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/sha-tests/shake-128-tests.json +1 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/sha-tests/shake-256-tests.json +1 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/tests.json +1 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/vectors/HMAC-SHA2-512-224.bz2 +0 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/vectors/SHA2-512-224.bz2 +0 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/vectors/SHAKE-128.bz2 +0 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/acvptool/test/vectors/SHAKE-256.bz2 +0 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/modulewrapper/main.cc +4 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/acvp/modulewrapper/modulewrapper.cc +144 -1
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/delocate/delocate.go +9 -3
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/delocate/testdata/aarch64-Basic/in.s +4 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/delocate/testdata/aarch64-Basic/out.s +11 -0
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/inject_hash/inject_hash.go +13 -4
- data/aws-crt-ffi/crt/aws-lc/util/fipstools/test-break-kat.sh +2 -0
- data/aws-crt-ffi/crt/aws-lc/util/testconfig/testconfig.go +2 -1
- data/aws-crt-ffi/crt/s2n/api/s2n.h +9 -5
- data/aws-crt-ffi/crt/s2n/bindings/rust/bench/benches/handshake.rs +9 -6
- data/aws-crt-ffi/crt/s2n/bindings/rust/bench/benches/resumption.rs +14 -14
- data/aws-crt-ffi/crt/s2n/bindings/rust/bench/benches/throughput.rs +9 -6
- data/aws-crt-ffi/crt/s2n/bindings/rust/bench/src/harness.rs +106 -102
- data/aws-crt-ffi/crt/s2n/bindings/rust/bench/src/openssl.rs +24 -20
- data/aws-crt-ffi/crt/s2n/bindings/rust/bench/src/rustls.rs +28 -24
- data/aws-crt-ffi/crt/s2n/bindings/rust/bench/src/s2n_tls.rs +52 -50
- data/aws-crt-ffi/crt/s2n/bindings/rust/generate/Cargo.toml +1 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/integration/Cargo.toml +3 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls/Cargo.toml +2 -2
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls/src/connection.rs +9 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-sys/templates/Cargo.template +2 -1
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-tokio/Cargo.toml +2 -2
- data/aws-crt-ffi/crt/s2n/tests/cbmc/sources/make_common_datastructures.c +9 -2
- data/aws-crt-ffi/crt/s2n/tests/fuzz/s2n_client_cert_verify_recv_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/fuzz/s2n_hybrid_ecdhe_kyber_r3_fuzz_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/fuzz/s2n_tls13_cert_verify_recv_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_version_negotiation.py +4 -4
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_auth_selection_test.c +19 -9
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_client_auth_handshake_test.c +3 -3
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_client_cert_verify_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_client_hello_recv_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_client_hello_test.c +4 -4
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_client_signature_algorithms_extension_test.c +4 -5
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_connection_protocol_versions_test.c +390 -0
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_connection_test.c +8 -4
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_handshake_test.c +2 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_quic_support_io_test.c +106 -0
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_security_policies_test.c +6 -2
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_self_talk_offload_signing_test.c +3 -3
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_self_talk_session_resumption_test.c +135 -0
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_server_new_session_ticket_test.c +32 -0
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_server_signature_algorithms_extension_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_signature_algorithms_test.c +307 -283
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_cert_request_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_cert_verify_test.c +18 -17
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_x509_validator_test.c +125 -0
- data/aws-crt-ffi/crt/s2n/tls/extensions/s2n_client_signature_algorithms.c +8 -1
- data/aws-crt-ffi/crt/s2n/tls/extensions/s2n_client_supported_versions.c +43 -11
- data/aws-crt-ffi/crt/s2n/tls/extensions/s2n_client_supported_versions.h +3 -0
- data/aws-crt-ffi/crt/s2n/tls/extensions/s2n_server_signature_algorithms.c +8 -1
- data/aws-crt-ffi/crt/s2n/tls/s2n_auth_selection.c +4 -2
- data/aws-crt-ffi/crt/s2n/tls/s2n_client_cert_verify.c +7 -10
- data/aws-crt-ffi/crt/s2n/tls/s2n_client_hello.c +2 -2
- data/aws-crt-ffi/crt/s2n/tls/s2n_connection.c +75 -14
- data/aws-crt-ffi/crt/s2n/tls/s2n_handshake.h +2 -2
- data/aws-crt-ffi/crt/s2n/tls/s2n_post_handshake.c +1 -1
- data/aws-crt-ffi/crt/s2n/tls/s2n_post_handshake.h +1 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_quic_support.c +29 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_quic_support.h +5 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_security_policies.c +40 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_security_policies.h +4 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_server_cert_request.c +1 -1
- data/aws-crt-ffi/crt/s2n/tls/s2n_server_hello.c +0 -3
- data/aws-crt-ffi/crt/s2n/tls/s2n_server_key_exchange.c +8 -9
- data/aws-crt-ffi/crt/s2n/tls/s2n_server_new_session_ticket.c +8 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_signature_algorithms.c +111 -72
- data/aws-crt-ffi/crt/s2n/tls/s2n_signature_algorithms.h +11 -9
- data/aws-crt-ffi/crt/s2n/tls/s2n_signature_scheme.c +9 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_signature_scheme.h +2 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_tls13_certificate_verify.c +12 -18
- data/aws-crt-ffi/crt/s2n/tls/s2n_x509_validator.c +7 -7
- data/aws-crt-ffi/src/api.h +1 -0
- data/lib/aws-crt/native.rb +1 -1
- metadata +68 -5
- data/aws-crt-ffi/crt/aws-lc/tests/ci/cdk/cdk/ssm/m1_tests_ssm_document.yaml +0 -34
- data/aws-crt-ffi/crt/aws-lc/tests/ci/run_m1_ec2_instance.sh +0 -96
@@ -61,222 +61,259 @@ int main(int argc, char **argv)
|
|
61
61
|
|
62
62
|
struct s2n_cert_chain_and_key *certs[] = { ecdsa_cert_chain, rsa_cert_chain };
|
63
63
|
|
64
|
-
/*
|
64
|
+
/* s2n_signature_algorithms_supported_list_send */
|
65
65
|
{
|
66
|
-
struct
|
67
|
-
|
68
|
-
struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT);
|
69
|
-
s2n_connection_set_config(conn, config);
|
70
|
-
|
71
|
-
const struct s2n_security_policy *security_policy = NULL;
|
72
|
-
EXPECT_SUCCESS(s2n_connection_get_security_policy(conn, &security_policy));
|
73
|
-
EXPECT_NOT_NULL(security_policy);
|
74
|
-
|
75
|
-
struct s2n_security_policy test_security_policy = {
|
76
|
-
.minimum_protocol_version = security_policy->minimum_protocol_version,
|
77
|
-
.cipher_preferences = security_policy->cipher_preferences,
|
78
|
-
.kem_preferences = security_policy->kem_preferences,
|
79
|
-
.signature_preferences = &test_preferences,
|
80
|
-
.ecc_preferences = security_policy->ecc_preferences,
|
81
|
-
};
|
82
|
-
|
83
|
-
config->security_policy = &test_security_policy;
|
84
|
-
|
85
|
-
/* Test: if all signatures supported, count all signatures */
|
86
|
-
{
|
87
|
-
conn->actual_protocol_version = S2N_TLS13;
|
88
|
-
EXPECT_EQUAL(s2n_supported_sig_schemes_count(conn), LENGTH);
|
89
|
-
EXPECT_EQUAL(s2n_supported_sig_scheme_list_size(conn), LENGTH * TLS_SIGNATURE_SCHEME_LEN);
|
90
|
-
};
|
91
|
-
|
92
|
-
/* Test: if some signatures are not supported, exclude them from the count */
|
93
|
-
{
|
94
|
-
conn->actual_protocol_version = S2N_TLS10;
|
95
|
-
/* Do not include s2n_ecdsa_secp384r1_sha384, which has a minimum version of tls13 */
|
96
|
-
EXPECT_EQUAL(s2n_supported_sig_schemes_count(conn), LENGTH - 1);
|
97
|
-
EXPECT_EQUAL(s2n_supported_sig_scheme_list_size(conn), (LENGTH - 1) * TLS_SIGNATURE_SCHEME_LEN);
|
98
|
-
};
|
99
|
-
|
100
|
-
s2n_connection_free(conn);
|
101
|
-
s2n_config_free(config);
|
102
|
-
};
|
103
|
-
|
104
|
-
/* s2n_send_supported_sig_scheme_list */
|
105
|
-
{
|
106
|
-
struct s2n_config *config = s2n_config_new();
|
107
|
-
|
108
|
-
struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT);
|
109
|
-
s2n_connection_set_config(conn, config);
|
110
|
-
|
111
|
-
const struct s2n_security_policy *security_policy = NULL;
|
112
|
-
EXPECT_SUCCESS(s2n_connection_get_security_policy(conn, &security_policy));
|
113
|
-
EXPECT_NOT_NULL(security_policy);
|
114
|
-
|
115
|
-
struct s2n_security_policy test_security_policy = {
|
116
|
-
.minimum_protocol_version = security_policy->minimum_protocol_version,
|
117
|
-
.cipher_preferences = security_policy->cipher_preferences,
|
118
|
-
.kem_preferences = security_policy->kem_preferences,
|
119
|
-
.signature_preferences = &test_preferences,
|
120
|
-
.ecc_preferences = security_policy->ecc_preferences,
|
121
|
-
};
|
122
|
-
|
123
|
-
config->security_policy = &test_security_policy;
|
124
|
-
|
125
|
-
struct s2n_stuffer result = { 0 };
|
126
|
-
s2n_stuffer_growable_alloc(&result, STUFFER_SIZE);
|
127
|
-
|
128
|
-
uint16_t size, iana_value;
|
66
|
+
struct s2n_security_policy test_security_policy = *s2n_fetch_default_config()->security_policy;
|
67
|
+
test_security_policy.signature_preferences = &test_preferences;
|
129
68
|
|
130
69
|
/* Test: if all signatures supported, send all signatures */
|
131
70
|
{
|
132
|
-
|
133
|
-
|
71
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
72
|
+
s2n_connection_ptr_free);
|
73
|
+
EXPECT_NOT_NULL(conn);
|
74
|
+
conn->security_policy_override = &test_security_policy;
|
134
75
|
conn->actual_protocol_version = S2N_TLS13;
|
135
|
-
EXPECT_SUCCESS(s2n_send_supported_sig_scheme_list(conn, &result));
|
136
76
|
|
77
|
+
DEFER_CLEANUP(struct s2n_stuffer result = { 0 }, s2n_stuffer_free);
|
78
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&result, 0));
|
79
|
+
EXPECT_OK(s2n_signature_algorithms_supported_list_send(conn, &result));
|
80
|
+
|
81
|
+
uint16_t size = 0;
|
137
82
|
EXPECT_SUCCESS(s2n_stuffer_read_uint16(&result, &size));
|
138
|
-
EXPECT_EQUAL(size,
|
83
|
+
EXPECT_EQUAL(size, s2n_stuffer_data_available(&result));
|
139
84
|
|
140
|
-
for (
|
85
|
+
for (size_t i = 0; i < s2n_array_len(test_signature_schemes); i++) {
|
86
|
+
uint16_t iana_value = 0;
|
141
87
|
EXPECT_SUCCESS(s2n_stuffer_read_uint16(&result, &iana_value));
|
142
88
|
EXPECT_EQUAL(iana_value, test_signature_schemes[i]->iana_value);
|
143
89
|
}
|
144
|
-
|
145
90
|
EXPECT_EQUAL(s2n_stuffer_data_available(&result), 0);
|
146
91
|
};
|
147
92
|
|
148
93
|
/* Test: do not send unsupported signatures */
|
149
94
|
{
|
150
|
-
|
151
|
-
|
95
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
96
|
+
s2n_connection_ptr_free);
|
97
|
+
EXPECT_NOT_NULL(conn);
|
98
|
+
conn->security_policy_override = &test_security_policy;
|
152
99
|
conn->actual_protocol_version = S2N_TLS12;
|
153
|
-
EXPECT_SUCCESS(s2n_send_supported_sig_scheme_list(conn, &result));
|
154
100
|
|
101
|
+
DEFER_CLEANUP(struct s2n_stuffer result = { 0 }, s2n_stuffer_free);
|
102
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&result, 0));
|
103
|
+
EXPECT_OK(s2n_signature_algorithms_supported_list_send(conn, &result));
|
104
|
+
|
105
|
+
uint16_t size = 0;
|
155
106
|
EXPECT_SUCCESS(s2n_stuffer_read_uint16(&result, &size));
|
156
|
-
EXPECT_EQUAL(size,
|
107
|
+
EXPECT_EQUAL(size, s2n_stuffer_data_available(&result));
|
157
108
|
|
158
|
-
for (
|
109
|
+
for (size_t i = 0; i < s2n_array_len(test_signature_schemes); i++) {
|
159
110
|
if (test_signature_schemes[i] != &s2n_ecdsa_secp384r1_sha384) {
|
111
|
+
uint16_t iana_value = 0;
|
160
112
|
EXPECT_SUCCESS(s2n_stuffer_read_uint16(&result, &iana_value));
|
161
113
|
EXPECT_EQUAL(iana_value, test_signature_schemes[i]->iana_value);
|
162
114
|
}
|
163
115
|
}
|
164
|
-
|
165
116
|
EXPECT_EQUAL(s2n_stuffer_data_available(&result), 0);
|
166
|
-
}
|
117
|
+
};
|
167
118
|
|
168
119
|
/* Test: written signatures readable */
|
169
120
|
{
|
170
|
-
|
121
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
122
|
+
s2n_connection_ptr_free);
|
123
|
+
EXPECT_NOT_NULL(conn);
|
124
|
+
conn->security_policy_override = &test_security_policy;
|
171
125
|
conn->actual_protocol_version = S2N_TLS13;
|
172
126
|
|
173
|
-
struct
|
127
|
+
DEFER_CLEANUP(struct s2n_stuffer result = { 0 }, s2n_stuffer_free);
|
128
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&result, 0));
|
129
|
+
EXPECT_OK(s2n_signature_algorithms_supported_list_send(conn, &result));
|
174
130
|
|
175
|
-
|
131
|
+
struct s2n_sig_scheme_list signatures = { 0 };
|
176
132
|
EXPECT_SUCCESS(s2n_recv_supported_sig_scheme_list(&result, &signatures));
|
177
133
|
EXPECT_EQUAL(s2n_stuffer_data_available(&result), 0);
|
178
134
|
|
179
|
-
EXPECT_EQUAL(signatures.len,
|
180
|
-
for (
|
135
|
+
EXPECT_EQUAL(signatures.len, s2n_array_len(test_signature_schemes));
|
136
|
+
for (size_t i = 0; i < s2n_array_len(test_signature_schemes); i++) {
|
181
137
|
EXPECT_EQUAL(signatures.iana_list[i], test_signature_schemes[i]->iana_value);
|
182
138
|
}
|
183
139
|
};
|
184
140
|
|
185
141
|
/* Test: do not send TLS1.2 signature schemes if QUIC enabled */
|
186
142
|
{
|
187
|
-
|
188
|
-
|
189
|
-
|
143
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
144
|
+
s2n_connection_ptr_free);
|
145
|
+
EXPECT_NOT_NULL(conn);
|
146
|
+
conn->security_policy_override = &test_security_policy;
|
190
147
|
conn->actual_protocol_version = S2N_TLS13;
|
191
|
-
|
148
|
+
conn->quic_enabled = true;
|
192
149
|
|
150
|
+
DEFER_CLEANUP(struct s2n_stuffer result = { 0 }, s2n_stuffer_free);
|
151
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&result, 0));
|
152
|
+
EXPECT_OK(s2n_signature_algorithms_supported_list_send(conn, &result));
|
153
|
+
|
154
|
+
uint16_t size = 0;
|
193
155
|
EXPECT_SUCCESS(s2n_stuffer_read_uint16(&result, &size));
|
194
|
-
|
195
|
-
EXPECT_EQUAL(size, s2n_supported_sig_scheme_list_size(conn));
|
156
|
+
EXPECT_EQUAL(size, s2n_stuffer_data_available(&result));
|
196
157
|
|
158
|
+
uint16_t iana_value = 0;
|
197
159
|
EXPECT_SUCCESS(s2n_stuffer_read_uint16(&result, &iana_value));
|
198
160
|
EXPECT_EQUAL(iana_value, s2n_ecdsa_secp384r1_sha384.iana_value);
|
199
161
|
EXPECT_EQUAL(s2n_stuffer_data_available(&result), 0);
|
200
|
-
|
201
|
-
config->quic_enabled = false;
|
202
|
-
}
|
203
|
-
|
204
|
-
s2n_connection_free(conn);
|
205
|
-
s2n_config_free(config);
|
206
|
-
s2n_stuffer_free(&result);
|
162
|
+
};
|
207
163
|
};
|
208
164
|
|
209
|
-
/*
|
165
|
+
/* s2n_signature_algorithm_recv */
|
210
166
|
{
|
211
|
-
struct
|
167
|
+
struct s2n_security_policy test_security_policy = *s2n_fetch_default_config()->security_policy;
|
168
|
+
test_security_policy.signature_preferences = &test_preferences;
|
212
169
|
|
213
|
-
|
214
|
-
|
170
|
+
/* Test: successfully choose valid server signature */
|
171
|
+
{
|
172
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
173
|
+
s2n_connection_ptr_free);
|
174
|
+
conn->security_policy_override = &test_security_policy;
|
175
|
+
conn->actual_protocol_version = S2N_TLS12;
|
215
176
|
|
216
|
-
|
217
|
-
|
218
|
-
|
177
|
+
DEFER_CLEANUP(struct s2n_stuffer input = { 0 }, s2n_stuffer_free);
|
178
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&input, 0));
|
179
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, s2n_rsa_pkcs1_sha256.iana_value));
|
219
180
|
|
220
|
-
|
221
|
-
.
|
222
|
-
.cipher_preferences = security_policy->cipher_preferences,
|
223
|
-
.kem_preferences = security_policy->kem_preferences,
|
224
|
-
.signature_preferences = &test_preferences,
|
225
|
-
.ecc_preferences = security_policy->ecc_preferences,
|
181
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &input));
|
182
|
+
EXPECT_EQUAL(conn->handshake_params.server_cert_sig_scheme, &s2n_rsa_pkcs1_sha256);
|
226
183
|
};
|
227
184
|
|
228
|
-
|
185
|
+
/* Test: successfully choose valid client signature */
|
186
|
+
{
|
187
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_SERVER),
|
188
|
+
s2n_connection_ptr_free);
|
189
|
+
conn->security_policy_override = &test_security_policy;
|
190
|
+
conn->actual_protocol_version = S2N_TLS12;
|
229
191
|
|
230
|
-
|
231
|
-
|
192
|
+
DEFER_CLEANUP(struct s2n_stuffer input = { 0 }, s2n_stuffer_free);
|
193
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&input, 0));
|
194
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, s2n_rsa_pkcs1_sha256.iana_value));
|
232
195
|
|
233
|
-
|
196
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &input));
|
197
|
+
EXPECT_EQUAL(conn->handshake_params.client_cert_sig_scheme, &s2n_rsa_pkcs1_sha256);
|
198
|
+
};
|
234
199
|
|
235
|
-
/* Test:
|
200
|
+
/* Test: algorithm not included in message */
|
236
201
|
{
|
237
|
-
|
238
|
-
|
202
|
+
struct s2n_stuffer empty = { 0 };
|
203
|
+
|
204
|
+
/* Algorithm must be provided if >= TLS1.2 */
|
205
|
+
{
|
206
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
207
|
+
s2n_connection_ptr_free);
|
208
|
+
conn->security_policy_override = &test_security_policy;
|
209
|
+
conn->actual_protocol_version = S2N_TLS12;
|
210
|
+
|
211
|
+
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
212
|
+
EXPECT_ERROR_WITH_ERRNO(s2n_signature_algorithm_recv(conn, &empty),
|
213
|
+
S2N_ERR_BAD_MESSAGE);
|
214
|
+
}
|
239
215
|
|
240
|
-
|
241
|
-
|
242
|
-
|
216
|
+
/* Client chooses default based on cipher suite */
|
217
|
+
{
|
218
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
219
|
+
s2n_connection_ptr_free);
|
220
|
+
conn->security_policy_override = &test_security_policy;
|
221
|
+
conn->actual_protocol_version = S2N_TLS11;
|
222
|
+
|
223
|
+
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
224
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &empty));
|
225
|
+
EXPECT_EQUAL(conn->handshake_params.server_cert_sig_scheme, &s2n_rsa_pkcs1_md5_sha1);
|
226
|
+
|
227
|
+
conn->secure->cipher_suite = ECDSA_CIPHER_SUITE;
|
228
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &empty));
|
229
|
+
EXPECT_EQUAL(conn->handshake_params.server_cert_sig_scheme, &s2n_ecdsa_sha1);
|
230
|
+
};
|
231
|
+
|
232
|
+
/* Server chooses default based on client cert type */
|
233
|
+
{
|
234
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_SERVER),
|
235
|
+
s2n_connection_ptr_free);
|
236
|
+
conn->security_policy_override = &test_security_policy;
|
237
|
+
conn->actual_protocol_version = S2N_TLS11;
|
238
|
+
|
239
|
+
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_RSA;
|
240
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &empty));
|
241
|
+
EXPECT_EQUAL(conn->handshake_params.client_cert_sig_scheme, &s2n_rsa_pkcs1_md5_sha1);
|
242
|
+
|
243
|
+
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_ECDSA;
|
244
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &empty));
|
245
|
+
EXPECT_EQUAL(conn->handshake_params.client_cert_sig_scheme, &s2n_ecdsa_sha1);
|
246
|
+
};
|
243
247
|
};
|
244
248
|
|
245
|
-
/* Test: don't negotiate
|
249
|
+
/* Test: don't negotiate signature scheme not allowed by security policy */
|
246
250
|
{
|
247
|
-
|
248
|
-
|
251
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
252
|
+
s2n_connection_ptr_free);
|
249
253
|
|
250
|
-
|
251
|
-
EXPECT_SUCCESS(
|
252
|
-
EXPECT_EQUAL(result.iana_value, s2n_ecdsa_secp384r1_sha384.iana_value);
|
253
|
-
EXPECT_BYTEARRAY_EQUAL(&result, &s2n_ecdsa_secp384r1_sha384, sizeof(struct s2n_signature_scheme));
|
254
|
+
DEFER_CLEANUP(struct s2n_stuffer input = { 0 }, s2n_stuffer_free);
|
255
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&input, 0));
|
254
256
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
257
|
+
const struct s2n_signature_scheme *const test_schemes[] = {
|
258
|
+
&s2n_rsa_pkcs1_sha256,
|
259
|
+
&s2n_ecdsa_sha256,
|
260
|
+
/* Include legacy defaults to ensure no exceptions made for defaults */
|
261
|
+
&s2n_rsa_pkcs1_md5_sha1,
|
262
|
+
&s2n_ecdsa_sha1,
|
263
|
+
};
|
264
|
+
const struct s2n_signature_scheme *const supported_schemes[] = {
|
265
|
+
&s2n_ecdsa_sha384,
|
266
|
+
};
|
267
|
+
|
268
|
+
struct s2n_security_policy test_policy = test_security_policy;
|
269
|
+
struct s2n_signature_preferences test_prefs = {
|
270
|
+
.signature_schemes = supported_schemes,
|
271
|
+
.count = s2n_array_len(supported_schemes),
|
272
|
+
};
|
273
|
+
test_policy.signature_preferences = &test_prefs;
|
274
|
+
|
275
|
+
struct s2n_security_policy control_policy = test_security_policy;
|
276
|
+
struct s2n_signature_preferences control_prefs = {
|
277
|
+
.signature_schemes = test_schemes,
|
278
|
+
.count = s2n_array_len(test_schemes),
|
279
|
+
};
|
280
|
+
control_policy.signature_preferences = &control_prefs;
|
281
|
+
|
282
|
+
/* Signature algorithms not allowed by policy rejected */
|
283
|
+
conn->security_policy_override = &test_policy;
|
284
|
+
for (size_t i = 0; i < s2n_array_len(test_schemes); i++) {
|
285
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, test_schemes[i]->iana_value));
|
286
|
+
EXPECT_ERROR_WITH_ERRNO(s2n_signature_algorithm_recv(conn, &input),
|
287
|
+
S2N_ERR_INVALID_SIGNATURE_SCHEME);
|
288
|
+
}
|
289
|
+
|
290
|
+
/* Signature algorithms allowed by policy accepted */
|
291
|
+
conn->security_policy_override = &control_policy;
|
292
|
+
for (size_t i = 0; i < s2n_array_len(test_schemes); i++) {
|
293
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, test_schemes[i]->iana_value));
|
294
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &input));
|
295
|
+
}
|
259
296
|
};
|
260
297
|
|
261
298
|
/* Test: don't negotiate invalid signatures (protocol too high) */
|
262
299
|
{
|
263
|
-
|
264
|
-
|
300
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
301
|
+
s2n_connection_ptr_free);
|
302
|
+
conn->security_policy_override = &test_security_policy;
|
303
|
+
|
304
|
+
DEFER_CLEANUP(struct s2n_stuffer input = { 0 }, s2n_stuffer_free);
|
305
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&input, 0));
|
265
306
|
|
266
307
|
conn->actual_protocol_version = S2N_TLS12;
|
267
|
-
EXPECT_SUCCESS(
|
268
|
-
|
269
|
-
|
308
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, s2n_rsa_pkcs1_sha224.iana_value));
|
309
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &input));
|
310
|
+
EXPECT_EQUAL(conn->handshake_params.server_cert_sig_scheme, &s2n_rsa_pkcs1_sha224);
|
270
311
|
|
271
|
-
s2n_stuffer_reread(&choice);
|
272
312
|
conn->actual_protocol_version = S2N_TLS13;
|
273
|
-
|
313
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, s2n_rsa_pkcs1_sha224.iana_value));
|
314
|
+
EXPECT_ERROR_WITH_ERRNO(s2n_signature_algorithm_recv(conn, &input),
|
274
315
|
S2N_ERR_INVALID_SIGNATURE_SCHEME);
|
275
316
|
};
|
276
|
-
|
277
|
-
s2n_connection_free(conn);
|
278
|
-
s2n_config_free(config);
|
279
|
-
s2n_stuffer_free(&choice);
|
280
317
|
};
|
281
318
|
|
282
319
|
/* Test: choose correct signature for duplicate iana values.
|
@@ -293,45 +330,28 @@ int main(int argc, char **argv)
|
|
293
330
|
.signature_schemes = dup_test_signature_schemes,
|
294
331
|
};
|
295
332
|
|
296
|
-
struct
|
297
|
-
|
298
|
-
struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT);
|
299
|
-
s2n_connection_set_config(conn, config);
|
333
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
334
|
+
s2n_connection_ptr_free);
|
300
335
|
|
301
336
|
const struct s2n_security_policy *security_policy = NULL;
|
302
337
|
EXPECT_SUCCESS(s2n_connection_get_security_policy(conn, &security_policy));
|
303
338
|
EXPECT_NOT_NULL(security_policy);
|
339
|
+
struct s2n_security_policy test_security_policy = *security_policy;
|
340
|
+
test_security_policy.signature_preferences = &dup_test_preferences;
|
341
|
+
conn->security_policy_override = &test_security_policy;
|
304
342
|
|
305
|
-
struct
|
306
|
-
|
307
|
-
.cipher_preferences = security_policy->cipher_preferences,
|
308
|
-
.kem_preferences = security_policy->kem_preferences,
|
309
|
-
.signature_preferences = &dup_test_preferences,
|
310
|
-
.ecc_preferences = security_policy->ecc_preferences,
|
311
|
-
};
|
312
|
-
|
313
|
-
config->security_policy = &test_security_policy;
|
314
|
-
|
315
|
-
struct s2n_stuffer choice = { 0 };
|
316
|
-
s2n_stuffer_growable_alloc(&choice, STUFFER_SIZE);
|
317
|
-
|
318
|
-
struct s2n_signature_scheme result;
|
343
|
+
DEFER_CLEANUP(struct s2n_stuffer input = { 0 }, s2n_stuffer_free);
|
344
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&input, 0));
|
319
345
|
|
320
346
|
conn->actual_protocol_version = S2N_TLS13;
|
321
|
-
s2n_stuffer_write_uint16(&
|
322
|
-
|
323
|
-
EXPECT_EQUAL(
|
324
|
-
EXPECT_BYTEARRAY_EQUAL(&result, &s2n_ecdsa_secp384r1_sha384, sizeof(struct s2n_signature_scheme));
|
347
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, s2n_ecdsa_sha384.iana_value));
|
348
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &input));
|
349
|
+
EXPECT_EQUAL(conn->handshake_params.server_cert_sig_scheme, &s2n_ecdsa_secp384r1_sha384);
|
325
350
|
|
326
351
|
conn->actual_protocol_version = S2N_TLS12;
|
327
|
-
s2n_stuffer_write_uint16(&
|
328
|
-
|
329
|
-
EXPECT_EQUAL(
|
330
|
-
EXPECT_BYTEARRAY_EQUAL(&result, &s2n_ecdsa_sha384, sizeof(struct s2n_signature_scheme));
|
331
|
-
|
332
|
-
s2n_connection_free(conn);
|
333
|
-
s2n_config_free(config);
|
334
|
-
s2n_stuffer_free(&choice);
|
352
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, s2n_ecdsa_sha384.iana_value));
|
353
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &input));
|
354
|
+
EXPECT_EQUAL(conn->handshake_params.server_cert_sig_scheme, &s2n_ecdsa_sha384);
|
335
355
|
};
|
336
356
|
|
337
357
|
/* s2n_choose_default_sig_scheme */
|
@@ -360,8 +380,6 @@ int main(int argc, char **argv)
|
|
360
380
|
|
361
381
|
config->security_policy = &test_security_policy;
|
362
382
|
|
363
|
-
struct s2n_signature_scheme result = { 0 };
|
364
|
-
|
365
383
|
/*
|
366
384
|
* For pre-TLS1.2, always choose either RSA or ECDSA depending on the auth method.
|
367
385
|
* Only use RSA-SHA1 if forced to by FIPS.
|
@@ -373,31 +391,35 @@ int main(int argc, char **argv)
|
|
373
391
|
{
|
374
392
|
/* Choose RSA for an RSA cipher suite. */
|
375
393
|
{
|
394
|
+
const struct s2n_signature_scheme *result = NULL;
|
376
395
|
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
377
396
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_SERVER));
|
378
|
-
EXPECT_EQUAL(result
|
397
|
+
EXPECT_EQUAL(result, &s2n_rsa_pkcs1_md5_sha1);
|
379
398
|
};
|
380
399
|
|
381
400
|
/* Choose ECDSA for a ECDSA cipher suite. */
|
382
401
|
{
|
402
|
+
const struct s2n_signature_scheme *result = NULL;
|
383
403
|
conn->secure->cipher_suite = ECDSA_CIPHER_SUITE;
|
384
404
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_SERVER));
|
385
|
-
EXPECT_EQUAL(result
|
405
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_sha1);
|
386
406
|
};
|
387
407
|
|
388
408
|
/* Ignore the type of the client certificate. */
|
389
409
|
{
|
410
|
+
const struct s2n_signature_scheme *result = NULL;
|
390
411
|
conn->secure->cipher_suite = ECDSA_CIPHER_SUITE;
|
391
412
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_RSA;
|
392
413
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_SERVER));
|
393
|
-
EXPECT_EQUAL(result
|
414
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_sha1);
|
394
415
|
};
|
395
416
|
|
396
417
|
/* When in doubt, choose RSA. */
|
397
418
|
{
|
419
|
+
const struct s2n_signature_scheme *result = NULL;
|
398
420
|
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
399
421
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_SERVER));
|
400
|
-
EXPECT_EQUAL(result
|
422
|
+
EXPECT_EQUAL(result, &s2n_rsa_pkcs1_md5_sha1);
|
401
423
|
};
|
402
424
|
};
|
403
425
|
|
@@ -405,24 +427,27 @@ int main(int argc, char **argv)
|
|
405
427
|
{
|
406
428
|
/* Choose RSA for an RSA certificate */
|
407
429
|
{
|
430
|
+
const struct s2n_signature_scheme *result = NULL;
|
408
431
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_RSA;
|
409
432
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_CLIENT));
|
410
|
-
EXPECT_EQUAL(result
|
433
|
+
EXPECT_EQUAL(result, &s2n_rsa_pkcs1_md5_sha1);
|
411
434
|
};
|
412
435
|
|
413
436
|
/* Choose ECDSA for a ECDSA certificate */
|
414
437
|
{
|
438
|
+
const struct s2n_signature_scheme *result = NULL;
|
415
439
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_ECDSA;
|
416
440
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_CLIENT));
|
417
|
-
EXPECT_EQUAL(result
|
441
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_sha1);
|
418
442
|
};
|
419
443
|
|
420
444
|
/* Ignore the auth type of the cipher suite */
|
421
445
|
{
|
446
|
+
const struct s2n_signature_scheme *result = NULL;
|
422
447
|
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
423
448
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_ECDSA;
|
424
449
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_CLIENT));
|
425
|
-
EXPECT_EQUAL(result
|
450
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_sha1);
|
426
451
|
};
|
427
452
|
};
|
428
453
|
};
|
@@ -437,31 +462,35 @@ int main(int argc, char **argv)
|
|
437
462
|
{
|
438
463
|
/* Choose RSA for an RSA cipher suite. */
|
439
464
|
{
|
465
|
+
const struct s2n_signature_scheme *result = NULL;
|
440
466
|
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
441
467
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_SERVER));
|
442
|
-
EXPECT_EQUAL(result
|
468
|
+
EXPECT_EQUAL(result, &s2n_rsa_pkcs1_sha1);
|
443
469
|
};
|
444
470
|
|
445
471
|
/* Choose ECDSA for a ECDSA cipher suite. */
|
446
472
|
{
|
473
|
+
const struct s2n_signature_scheme *result = NULL;
|
447
474
|
conn->secure->cipher_suite = ECDSA_CIPHER_SUITE;
|
448
475
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_SERVER));
|
449
|
-
EXPECT_EQUAL(result
|
476
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_sha1);
|
450
477
|
};
|
451
478
|
|
452
479
|
/* Ignore the type of the client certificate. */
|
453
480
|
{
|
481
|
+
const struct s2n_signature_scheme *result = NULL;
|
454
482
|
conn->secure->cipher_suite = ECDSA_CIPHER_SUITE;
|
455
483
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_RSA;
|
456
484
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_SERVER));
|
457
|
-
EXPECT_EQUAL(result
|
485
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_sha1);
|
458
486
|
};
|
459
487
|
|
460
488
|
/* When in doubt, choose RSA. */
|
461
489
|
{
|
490
|
+
const struct s2n_signature_scheme *result = NULL;
|
462
491
|
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
463
492
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_SERVER));
|
464
|
-
EXPECT_EQUAL(result
|
493
|
+
EXPECT_EQUAL(result, &s2n_rsa_pkcs1_sha1);
|
465
494
|
};
|
466
495
|
};
|
467
496
|
|
@@ -469,24 +498,27 @@ int main(int argc, char **argv)
|
|
469
498
|
{
|
470
499
|
/* Choose RSA for an RSA certificate */
|
471
500
|
{
|
501
|
+
const struct s2n_signature_scheme *result = NULL;
|
472
502
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_RSA;
|
473
503
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_CLIENT));
|
474
|
-
EXPECT_EQUAL(result
|
504
|
+
EXPECT_EQUAL(result, &s2n_rsa_pkcs1_sha1);
|
475
505
|
};
|
476
506
|
|
477
507
|
/* Choose ECDSA for a ECDSA certificate */
|
478
508
|
{
|
509
|
+
const struct s2n_signature_scheme *result = NULL;
|
479
510
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_ECDSA;
|
480
511
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_CLIENT));
|
481
|
-
EXPECT_EQUAL(result
|
512
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_sha1);
|
482
513
|
};
|
483
514
|
|
484
515
|
/* Ignore the auth type of the cipher suite */
|
485
516
|
{
|
517
|
+
const struct s2n_signature_scheme *result = NULL;
|
486
518
|
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
487
519
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_ECDSA;
|
488
520
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &result, S2N_CLIENT));
|
489
|
-
EXPECT_EQUAL(result
|
521
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_sha1);
|
490
522
|
};
|
491
523
|
};
|
492
524
|
|
@@ -514,18 +546,18 @@ int main(int argc, char **argv)
|
|
514
546
|
|
515
547
|
/* Client / RSA */
|
516
548
|
{
|
517
|
-
struct s2n_signature_scheme actual =
|
549
|
+
const struct s2n_signature_scheme *actual = NULL;
|
518
550
|
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
519
551
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &actual, S2N_SERVER));
|
520
|
-
EXPECT_EQUAL(actual
|
552
|
+
EXPECT_EQUAL(actual, &s2n_null_sig_scheme);
|
521
553
|
};
|
522
554
|
|
523
555
|
/* Server / ECDSA */
|
524
556
|
{
|
525
|
-
struct s2n_signature_scheme actual =
|
557
|
+
const struct s2n_signature_scheme *actual = NULL;
|
526
558
|
conn->handshake_params.client_cert_pkey_type = S2N_PKEY_TYPE_ECDSA;
|
527
559
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &actual, S2N_CLIENT));
|
528
|
-
EXPECT_EQUAL(actual
|
560
|
+
EXPECT_EQUAL(actual, &s2n_null_sig_scheme);
|
529
561
|
};
|
530
562
|
};
|
531
563
|
};
|
@@ -558,17 +590,17 @@ int main(int argc, char **argv)
|
|
558
590
|
|
559
591
|
config->security_policy = &test_security_policy;
|
560
592
|
|
561
|
-
struct s2n_signature_scheme result;
|
562
|
-
|
563
593
|
/* Test: no peer list */
|
564
594
|
{
|
595
|
+
const struct s2n_signature_scheme *result = NULL;
|
596
|
+
|
565
597
|
conn->secure->cipher_suite = ECDSA_CIPHER_SUITE;
|
566
598
|
conn->actual_protocol_version = S2N_TLS10;
|
567
|
-
struct s2n_signature_scheme default_scheme = s2n_ecdsa_sha1;
|
599
|
+
const struct s2n_signature_scheme *default_scheme = &s2n_ecdsa_sha1;
|
568
600
|
|
569
601
|
/* Choose default if NULL peer list */
|
570
602
|
EXPECT_SUCCESS(s2n_choose_sig_scheme_from_peer_preference_list(conn, NULL, &result));
|
571
|
-
EXPECT_EQUAL(result
|
603
|
+
EXPECT_EQUAL(result, default_scheme);
|
572
604
|
|
573
605
|
/* Choose default if empty peer list */
|
574
606
|
struct s2n_sig_scheme_list peer_list = {
|
@@ -576,7 +608,7 @@ int main(int argc, char **argv)
|
|
576
608
|
.iana_list = { 0 },
|
577
609
|
};
|
578
610
|
EXPECT_SUCCESS(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result));
|
579
|
-
EXPECT_EQUAL(result
|
611
|
+
EXPECT_EQUAL(result, default_scheme);
|
580
612
|
|
581
613
|
/* If we cannot find a match in TLS1.3, allow defaults for success */
|
582
614
|
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
@@ -586,6 +618,8 @@ int main(int argc, char **argv)
|
|
586
618
|
|
587
619
|
/* Test: no shared valid signature schemes, using TLS1.3. Server picks preferred */
|
588
620
|
{
|
621
|
+
const struct s2n_signature_scheme *result = NULL;
|
622
|
+
|
589
623
|
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
590
624
|
conn->actual_protocol_version = S2N_TLS13;
|
591
625
|
|
@@ -599,11 +633,13 @@ int main(int argc, char **argv)
|
|
599
633
|
|
600
634
|
/* behavior is that we fallback to a preferred signature algorithm */
|
601
635
|
EXPECT_SUCCESS(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result));
|
602
|
-
EXPECT_EQUAL(result
|
636
|
+
EXPECT_EQUAL(result, &s2n_ecdsa_secp384r1_sha384);
|
603
637
|
};
|
604
638
|
|
605
639
|
/* Test: no shared valid signature schemes, using TLS1.2 */
|
606
640
|
{
|
641
|
+
const struct s2n_signature_scheme *result = NULL;
|
642
|
+
|
607
643
|
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
608
644
|
conn->actual_protocol_version = S2N_TLS12;
|
609
645
|
|
@@ -616,19 +652,22 @@ int main(int argc, char **argv)
|
|
616
652
|
EXPECT_SUCCESS(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result));
|
617
653
|
|
618
654
|
/* Verify that we did not choose the peer's offered signature scheme */
|
619
|
-
|
655
|
+
EXPECT_NOT_NULL(result);
|
656
|
+
EXPECT_NOT_EQUAL(result->iana_value, peer_list.iana_list[0]);
|
620
657
|
|
621
658
|
/* Verify that we chose the default signature scheme, even though it wasn't in
|
622
659
|
* the peer's offered list. This proves that when we share no signature schemes
|
623
660
|
* with the peer, then calling s2n_choose_sig_scheme_from_peer_preference_list
|
624
661
|
* is equivalent to calling s2n_choose_default_sig_scheme. */
|
625
|
-
struct s2n_signature_scheme default_scheme;
|
662
|
+
const struct s2n_signature_scheme *default_scheme = NULL;
|
626
663
|
EXPECT_SUCCESS(s2n_choose_default_sig_scheme(conn, &default_scheme, S2N_SERVER));
|
627
|
-
EXPECT_EQUAL(result
|
664
|
+
EXPECT_EQUAL(result, default_scheme);
|
628
665
|
};
|
629
666
|
|
630
667
|
/* Test: choose valid signature from peer list */
|
631
668
|
{
|
669
|
+
const struct s2n_signature_scheme *result = NULL;
|
670
|
+
|
632
671
|
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
633
672
|
conn->actual_protocol_version = S2N_TLS12;
|
634
673
|
|
@@ -643,12 +682,13 @@ int main(int argc, char **argv)
|
|
643
682
|
};
|
644
683
|
|
645
684
|
EXPECT_SUCCESS(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result));
|
646
|
-
EXPECT_EQUAL(result
|
647
|
-
EXPECT_BYTEARRAY_EQUAL(&result, &s2n_rsa_pkcs1_sha256, sizeof(struct s2n_signature_scheme));
|
685
|
+
EXPECT_EQUAL(result, &s2n_rsa_pkcs1_sha256);
|
648
686
|
};
|
649
687
|
|
650
688
|
/* Test: invalid scheme, because wrong protocol version */
|
651
689
|
{
|
690
|
+
const struct s2n_signature_scheme *result = NULL;
|
691
|
+
|
652
692
|
conn->secure->cipher_suite = RSA_CIPHER_SUITE;
|
653
693
|
|
654
694
|
struct s2n_sig_scheme_list peer_list = {
|
@@ -658,8 +698,7 @@ int main(int argc, char **argv)
|
|
658
698
|
|
659
699
|
conn->actual_protocol_version = S2N_TLS12;
|
660
700
|
EXPECT_SUCCESS(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result));
|
661
|
-
EXPECT_EQUAL(result
|
662
|
-
EXPECT_BYTEARRAY_EQUAL(&result, &s2n_rsa_pkcs1_sha224, sizeof(struct s2n_signature_scheme));
|
701
|
+
EXPECT_EQUAL(result, &s2n_rsa_pkcs1_sha224);
|
663
702
|
|
664
703
|
conn->actual_protocol_version = S2N_TLS13;
|
665
704
|
EXPECT_FAILURE_WITH_ERRNO(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result),
|
@@ -671,41 +710,33 @@ int main(int argc, char **argv)
|
|
671
710
|
};
|
672
711
|
|
673
712
|
/* Test: send and receive default signature preferences */
|
674
|
-
{
|
675
|
-
struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT)
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
struct
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
iana = signatures.iana_list[a];
|
697
|
-
for (int b = 0; b < signatures.len; b++) {
|
698
|
-
if (a == b) {
|
699
|
-
continue;
|
700
|
-
}
|
701
|
-
other_iana = signatures.iana_list[b];
|
702
|
-
EXPECT_NOT_EQUAL(iana, other_iana);
|
713
|
+
for (size_t i = S2N_TLS10; i < S2N_TLS13; i++) {
|
714
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
715
|
+
s2n_connection_ptr_free);
|
716
|
+
EXPECT_NOT_NULL(conn);
|
717
|
+
conn->actual_protocol_version = i;
|
718
|
+
|
719
|
+
DEFER_CLEANUP(struct s2n_stuffer result = { 0 }, s2n_stuffer_free);
|
720
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&result, 0));
|
721
|
+
EXPECT_OK(s2n_signature_algorithms_supported_list_send(conn, &result));
|
722
|
+
|
723
|
+
struct s2n_sig_scheme_list signatures = { 0 };
|
724
|
+
EXPECT_SUCCESS(s2n_recv_supported_sig_scheme_list(&result, &signatures));
|
725
|
+
EXPECT_EQUAL(s2n_stuffer_data_available(&result), 0);
|
726
|
+
|
727
|
+
/* Verify no duplicates - some preferences contain duplicates, but only
|
728
|
+
* one should be valid at a time. */
|
729
|
+
uint16_t iana = 0, other_iana = 0;
|
730
|
+
for (size_t a = 0; a < signatures.len; a++) {
|
731
|
+
iana = signatures.iana_list[a];
|
732
|
+
for (int b = 0; b < signatures.len; b++) {
|
733
|
+
if (a == b) {
|
734
|
+
continue;
|
703
735
|
}
|
736
|
+
other_iana = signatures.iana_list[b];
|
737
|
+
EXPECT_NOT_EQUAL(iana, other_iana);
|
704
738
|
}
|
705
739
|
}
|
706
|
-
|
707
|
-
s2n_connection_free(conn);
|
708
|
-
s2n_stuffer_free(&result);
|
709
740
|
};
|
710
741
|
|
711
742
|
/* Test: libcrypto may not support PSS signatures */
|
@@ -720,39 +751,29 @@ int main(int argc, char **argv)
|
|
720
751
|
.signature_schemes = pss_test_signature_schemes,
|
721
752
|
};
|
722
753
|
|
723
|
-
struct s2n_config *config = s2n_config_new();
|
754
|
+
DEFER_CLEANUP(struct s2n_config *config = s2n_config_new(), s2n_config_ptr_free);
|
724
755
|
EXPECT_SUCCESS(s2n_config_add_cert_chain_and_key_to_store(config, rsa_cert_chain));
|
725
756
|
|
726
|
-
struct
|
727
|
-
|
728
|
-
conn->actual_protocol_version = S2N_TLS13;
|
729
|
-
EXPECT_SUCCESS(s2n_connection_set_config(conn, config));
|
730
|
-
|
731
|
-
const struct s2n_security_policy *security_policy = NULL;
|
732
|
-
EXPECT_SUCCESS(s2n_connection_get_security_policy(conn, &security_policy));
|
733
|
-
EXPECT_NOT_NULL(security_policy);
|
734
|
-
|
735
|
-
struct s2n_security_policy test_security_policy = {
|
736
|
-
.minimum_protocol_version = security_policy->minimum_protocol_version,
|
737
|
-
.cipher_preferences = security_policy->cipher_preferences,
|
738
|
-
.kem_preferences = security_policy->kem_preferences,
|
739
|
-
.signature_preferences = &pss_test_preferences,
|
740
|
-
.ecc_preferences = security_policy->ecc_preferences,
|
741
|
-
};
|
742
|
-
|
757
|
+
struct s2n_security_policy test_security_policy = *s2n_fetch_default_config()->security_policy;
|
758
|
+
test_security_policy.signature_preferences = &pss_test_preferences,
|
743
759
|
config->security_policy = &test_security_policy;
|
744
760
|
|
745
761
|
/* Do not offer PSS signatures schemes if unsupported:
|
746
|
-
*
|
762
|
+
* s2n_signature_algorithms_supported_list_send + PSS */
|
747
763
|
{
|
748
|
-
struct
|
749
|
-
|
764
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
765
|
+
s2n_connection_ptr_free);
|
766
|
+
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
767
|
+
conn->actual_protocol_version = S2N_TLS13;
|
768
|
+
EXPECT_SUCCESS(s2n_connection_set_config(conn, config));
|
750
769
|
|
751
|
-
|
770
|
+
DEFER_CLEANUP(struct s2n_stuffer result = { 0 }, s2n_stuffer_free);
|
771
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&result, 0));
|
772
|
+
EXPECT_OK(s2n_signature_algorithms_supported_list_send(conn, &result));
|
752
773
|
|
753
|
-
uint16_t size;
|
774
|
+
uint16_t size = 0;
|
754
775
|
EXPECT_SUCCESS(s2n_stuffer_read_uint16(&result, &size));
|
755
|
-
EXPECT_EQUAL(size,
|
776
|
+
EXPECT_EQUAL(size, s2n_stuffer_data_available(&result));
|
756
777
|
if (s2n_is_rsa_pss_certs_supported()) {
|
757
778
|
EXPECT_EQUAL(size, 2 * sizeof(uint16_t));
|
758
779
|
} else if (s2n_is_rsa_pss_signing_supported()) {
|
@@ -760,51 +781,54 @@ int main(int argc, char **argv)
|
|
760
781
|
} else {
|
761
782
|
EXPECT_EQUAL(size, 0);
|
762
783
|
}
|
763
|
-
|
764
|
-
s2n_stuffer_free(&result);
|
765
784
|
};
|
766
785
|
|
767
786
|
/* Do not accept a PSS signature scheme if unsupported:
|
768
|
-
*
|
787
|
+
* s2n_signature_algorithm_recv + PSS */
|
769
788
|
{
|
770
|
-
struct
|
771
|
-
|
772
|
-
|
789
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
790
|
+
s2n_connection_ptr_free);
|
791
|
+
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
792
|
+
conn->actual_protocol_version = S2N_TLS13;
|
793
|
+
EXPECT_SUCCESS(s2n_connection_set_config(conn, config));
|
773
794
|
|
774
|
-
struct
|
795
|
+
DEFER_CLEANUP(struct s2n_stuffer input = { 0 }, s2n_stuffer_free);
|
796
|
+
EXPECT_SUCCESS(s2n_stuffer_growable_alloc(&input, 0));
|
797
|
+
EXPECT_SUCCESS(s2n_stuffer_write_uint16(&input, s2n_rsa_pss_rsae_sha256.iana_value));
|
775
798
|
|
776
799
|
if (s2n_is_rsa_pss_signing_supported()) {
|
777
|
-
|
778
|
-
EXPECT_EQUAL(
|
800
|
+
EXPECT_OK(s2n_signature_algorithm_recv(conn, &input));
|
801
|
+
EXPECT_EQUAL(conn->handshake_params.server_cert_sig_scheme, &s2n_rsa_pss_rsae_sha256);
|
779
802
|
} else {
|
780
|
-
|
803
|
+
EXPECT_ERROR_WITH_ERRNO(s2n_signature_algorithm_recv(conn, &input),
|
781
804
|
S2N_ERR_INVALID_SIGNATURE_SCHEME);
|
782
805
|
}
|
783
|
-
|
784
|
-
s2n_stuffer_free(&choice);
|
785
806
|
};
|
786
807
|
|
787
808
|
/* Do not choose a PSS signature scheme if unsupported:
|
788
809
|
* s2n_choose_sig_scheme_from_peer_preference_list + PSS */
|
789
810
|
{
|
811
|
+
DEFER_CLEANUP(struct s2n_connection *conn = s2n_connection_new(S2N_CLIENT),
|
812
|
+
s2n_connection_ptr_free);
|
813
|
+
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
814
|
+
conn->actual_protocol_version = S2N_TLS13;
|
815
|
+
EXPECT_SUCCESS(s2n_connection_set_config(conn, config));
|
816
|
+
|
790
817
|
struct s2n_sig_scheme_list peer_list = {
|
791
818
|
.len = 1,
|
792
819
|
.iana_list = { s2n_rsa_pss_rsae_sha256.iana_value },
|
793
820
|
};
|
794
821
|
|
795
|
-
struct s2n_signature_scheme result;
|
822
|
+
const struct s2n_signature_scheme *result = NULL;
|
796
823
|
|
797
824
|
if (s2n_is_rsa_pss_signing_supported()) {
|
798
825
|
EXPECT_SUCCESS(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result));
|
799
|
-
EXPECT_EQUAL(result
|
826
|
+
EXPECT_EQUAL(result, &s2n_rsa_pss_rsae_sha256);
|
800
827
|
} else {
|
801
828
|
EXPECT_FAILURE_WITH_ERRNO(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result),
|
802
829
|
S2N_ERR_INVALID_SIGNATURE_SCHEME);
|
803
830
|
}
|
804
831
|
};
|
805
|
-
|
806
|
-
s2n_connection_free(conn);
|
807
|
-
s2n_config_free(config);
|
808
832
|
};
|
809
833
|
|
810
834
|
/* Test fallback of TLS 1.3 signature algorithms */
|
@@ -837,10 +861,9 @@ int main(int argc, char **argv)
|
|
837
861
|
|
838
862
|
config->security_policy = &test_security_policy;
|
839
863
|
|
840
|
-
struct s2n_signature_scheme result;
|
841
|
-
|
842
864
|
/* Test: no shared valid signature schemes, using TLS1.3. Server cant pick preferred */
|
843
865
|
{
|
866
|
+
const struct s2n_signature_scheme *result = NULL;
|
844
867
|
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
845
868
|
conn->actual_protocol_version = S2N_TLS13;
|
846
869
|
|
@@ -859,6 +882,7 @@ int main(int argc, char **argv)
|
|
859
882
|
|
860
883
|
/* Test: no shared valid signature schemes, using TLS1.3. Server picks a preferred */
|
861
884
|
{
|
885
|
+
const struct s2n_signature_scheme *result = NULL;
|
862
886
|
conn->secure->cipher_suite = TLS13_CIPHER_SUITE;
|
863
887
|
conn->actual_protocol_version = S2N_TLS13;
|
864
888
|
|
@@ -871,7 +895,7 @@ int main(int argc, char **argv)
|
|
871
895
|
|
872
896
|
/* behavior is that we fallback to a preferred signature algorithm */
|
873
897
|
EXPECT_SUCCESS(s2n_choose_sig_scheme_from_peer_preference_list(conn, &peer_list, &result));
|
874
|
-
EXPECT_EQUAL(result
|
898
|
+
EXPECT_EQUAL(result, &s2n_rsa_pss_rsae_sha256);
|
875
899
|
};
|
876
900
|
|
877
901
|
s2n_connection_free(conn);
|
@@ -904,8 +928,8 @@ int main(int argc, char **argv)
|
|
904
928
|
.count = s2n_array_len(sha256_schemes),
|
905
929
|
.signature_schemes = sha256_schemes,
|
906
930
|
};
|
907
|
-
for(size_t i = 0; i < sha256_preferences.count; i++) {
|
908
|
-
for(size_t j = 0; j < defaults_preferences.count; j++) {
|
931
|
+
for (size_t i = 0; i < sha256_preferences.count; i++) {
|
932
|
+
for (size_t j = 0; j < defaults_preferences.count; j++) {
|
909
933
|
EXPECT_NOT_EQUAL(sha256_preferences.signature_schemes[i]->iana_value,
|
910
934
|
defaults_preferences.signature_schemes[j]->iana_value);
|
911
935
|
}
|
@@ -915,8 +939,8 @@ int main(int argc, char **argv)
|
|
915
939
|
.count = s2n_array_len(sha384_schemes),
|
916
940
|
.signature_schemes = sha384_schemes,
|
917
941
|
};
|
918
|
-
for(size_t i = 0; i < sha384_preferences.count; i++) {
|
919
|
-
for(size_t j = 0; j < defaults_preferences.count; j++) {
|
942
|
+
for (size_t i = 0; i < sha384_preferences.count; i++) {
|
943
|
+
for (size_t j = 0; j < defaults_preferences.count; j++) {
|
920
944
|
EXPECT_NOT_EQUAL(sha384_preferences.signature_schemes[i]->iana_value,
|
921
945
|
defaults_preferences.signature_schemes[j]->iana_value);
|
922
946
|
}
|