aws-crt 0.1.5 → 0.1.6
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/CMakeLists.txt +49 -41
- data/aws-crt-ffi/crt/aws-c-auth/CMakeLists.txt +0 -10
- data/aws-crt-ffi/crt/aws-c-auth/include/aws/auth/credentials.h +3 -2
- data/aws-crt-ffi/crt/aws-c-auth/include/aws/auth/private/credentials_utils.h +4 -4
- data/aws-crt-ffi/crt/aws-c-auth/source/auth.c +1 -14
- data/aws-crt-ffi/crt/aws-c-auth/source/aws_imds_client.c +206 -68
- data/aws-crt-ffi/crt/aws-c-auth/source/aws_signing.c +5 -0
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_provider_cached.c +6 -6
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_provider_default_chain.c +16 -1
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_provider_ecs.c +0 -1
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_provider_process.c +0 -1
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_provider_sts_web_identity.c +0 -1
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_provider_x509.c +10 -7
- data/aws-crt-ffi/crt/aws-c-auth/source/credentials_utils.c +35 -26
- data/aws-crt-ffi/crt/aws-c-auth/source/signable_chunk.c +3 -2
- data/aws-crt-ffi/crt/aws-c-auth/tests/CMakeLists.txt +3 -2
- data/aws-crt-ffi/crt/aws-c-auth/tests/aws_imds_client_test.c +1 -0
- data/aws-crt-ffi/crt/aws-c-auth/tests/credentials_provider_ecs_tests.c +3 -0
- data/aws-crt-ffi/crt/aws-c-auth/tests/credentials_provider_process_tests.c +65 -16
- data/aws-crt-ffi/crt/aws-c-auth/tests/credentials_tests.c +125 -0
- data/aws-crt-ffi/crt/aws-c-auth/tests/sigv4_signing_tests.c +68 -46
- data/aws-crt-ffi/crt/aws-c-cal/CMakeLists.txt +8 -3
- data/aws-crt-ffi/crt/aws-c-cal/bin/run_x_platform_fuzz_corpus/main.c +9 -0
- data/aws-crt-ffi/crt/aws-c-cal/builder.json +11 -3
- data/aws-crt-ffi/crt/aws-c-cal/cmake/aws-c-cal-config.cmake +14 -5
- data/aws-crt-ffi/crt/aws-c-cal/source/darwin/securityframework_ecc.c +6 -6
- data/aws-crt-ffi/crt/aws-c-cal/source/windows/bcrypt_ecc.c +12 -12
- data/aws-crt-ffi/crt/aws-c-cal/tests/test_case_helper.h +14 -14
- data/aws-crt-ffi/crt/aws-c-common/CMakeLists.txt +21 -1
- data/aws-crt-ffi/crt/aws-c-common/README.md +8 -0
- data/aws-crt-ffi/crt/aws-c-common/cmake/AwsCFlags.cmake +20 -5
- data/aws-crt-ffi/crt/aws-c-common/cmake/AwsFeatureTests.cmake +7 -1
- data/aws-crt-ffi/crt/aws-c-common/format-check.sh +1 -1
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/byte_buf.h +14 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/config.h.in +1 -0
- data/aws-crt-ffi/crt/{aws-c-auth/include/aws/auth → aws-c-common/include/aws/common}/external/cJSON.h +82 -74
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/json.h +335 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/logging.h +1 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/math.inl +2 -2
- data/aws-crt-ffi/crt/aws-c-common/include/aws/common/private/json_impl.h +22 -0
- data/aws-crt-ffi/crt/aws-c-common/include/aws/testing/aws_test_harness.h +2 -0
- data/aws-crt-ffi/crt/aws-c-common/source/byte_buf.c +36 -0
- data/aws-crt-ffi/crt/aws-c-common/source/common.c +5 -2
- data/aws-crt-ffi/crt/aws-c-common/source/external/cJSON.c +3113 -0
- data/aws-crt-ffi/crt/aws-c-common/source/file.c +9 -0
- data/aws-crt-ffi/crt/aws-c-common/source/json.c +348 -0
- data/aws-crt-ffi/crt/aws-c-common/source/logging.c +7 -2
- data/aws-crt-ffi/crt/aws-c-common/source/posix/system_info.c +8 -0
- data/aws-crt-ffi/crt/aws-c-common/source/ref_count.c +3 -1
- data/aws-crt-ffi/crt/aws-c-common/source/windows/file.c +47 -0
- data/aws-crt-ffi/crt/aws-c-common/source/windows/system_info.c +2 -1
- data/aws-crt-ffi/crt/aws-c-common/tests/CMakeLists.txt +5 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/byte_buf_test.c +69 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/json_test.c +134 -0
- data/aws-crt-ffi/crt/aws-c-common/tests/memtrace_test.c +6 -2
- data/aws-crt-ffi/crt/aws-c-event-stream/README.md +18 -35
- data/aws-crt-ffi/crt/aws-c-event-stream/include/aws/event-stream/event_stream.h +21 -2
- data/aws-crt-ffi/crt/aws-c-event-stream/include/aws/event-stream/event_stream_rpc_client.h +14 -2
- data/aws-crt-ffi/crt/aws-c-event-stream/include/aws/event-stream/event_stream_rpc_server.h +13 -0
- data/aws-crt-ffi/crt/aws-c-event-stream/include/aws/event-stream/private/event_stream_rpc_priv.h +7 -7
- data/aws-crt-ffi/crt/aws-c-event-stream/source/event_stream.c +257 -141
- data/aws-crt-ffi/crt/aws-c-event-stream/source/event_stream_channel_handler.c +1 -1
- data/aws-crt-ffi/crt/aws-c-event-stream/source/event_stream_rpc_client.c +31 -8
- data/aws-crt-ffi/crt/aws-c-event-stream/source/event_stream_rpc_server.c +63 -10
- data/aws-crt-ffi/crt/aws-c-event-stream/tests/CMakeLists.txt +2 -0
- data/aws-crt-ffi/crt/aws-c-event-stream/tests/event_stream_rpc_client_connection_test.c +157 -106
- data/aws-crt-ffi/crt/aws-c-event-stream/tests/event_stream_rpc_server_connection_test.c +168 -1
- data/aws-crt-ffi/crt/aws-c-event-stream/tests/message_deserializer_test.c +4 -2
- data/aws-crt-ffi/crt/aws-c-http/CMakeLists.txt +1 -0
- data/aws-crt-ffi/crt/aws-c-http/README.md +8 -0
- data/aws-crt-ffi/crt/aws-c-http/bin/elasticurl/main.c +1 -1
- data/aws-crt-ffi/crt/aws-c-http/builder.json +4 -3
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/connection.h +8 -1
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/connection_manager.h +45 -1
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/http2_stream_manager.h +63 -12
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/connection_impl.h +2 -1
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/h2_connection.h +20 -2
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/h2_frames.h +1 -0
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/h2_stream.h +42 -13
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/http2_stream_manager_impl.h +17 -0
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/http_impl.h +3 -0
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/random_access_set.h +10 -3
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/private/request_response_impl.h +3 -17
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/request_response.h +108 -4
- data/aws-crt-ffi/crt/aws-c-http/include/aws/http/statistics.h +22 -0
- data/aws-crt-ffi/crt/aws-c-http/source/connection.c +8 -3
- data/aws-crt-ffi/crt/aws-c-http/source/connection_manager.c +22 -3
- data/aws-crt-ffi/crt/aws-c-http/source/connection_monitor.c +32 -14
- data/aws-crt-ffi/crt/aws-c-http/source/h1_connection.c +14 -0
- data/aws-crt-ffi/crt/aws-c-http/source/h1_encoder.c +7 -4
- data/aws-crt-ffi/crt/aws-c-http/source/h2_connection.c +161 -45
- data/aws-crt-ffi/crt/aws-c-http/source/h2_decoder.c +37 -8
- data/aws-crt-ffi/crt/aws-c-http/source/h2_frames.c +13 -1
- data/aws-crt-ffi/crt/aws-c-http/source/h2_stream.c +345 -87
- data/aws-crt-ffi/crt/aws-c-http/source/hpack.c +3 -0
- data/aws-crt-ffi/crt/aws-c-http/source/http.c +3 -0
- data/aws-crt-ffi/crt/aws-c-http/source/http2_stream_manager.c +266 -39
- data/aws-crt-ffi/crt/aws-c-http/source/random_access_set.c +9 -3
- data/aws-crt-ffi/crt/aws-c-http/source/request_response.c +80 -20
- data/aws-crt-ffi/crt/aws-c-http/source/statistics.c +11 -0
- data/aws-crt-ffi/crt/aws-c-http/tests/CMakeLists.txt +28 -1
- data/aws-crt-ffi/crt/aws-c-http/tests/fuzz/fuzz_h2_decoder_correct.c +5 -3
- data/aws-crt-ffi/crt/aws-c-http/tests/h2_test_helper.c +133 -29
- data/aws-crt-ffi/crt/aws-c-http/tests/h2_test_helper.h +6 -0
- data/aws-crt-ffi/crt/aws-c-http/tests/py_localhost/README.md +40 -0
- data/aws-crt-ffi/crt/aws-c-http/tests/py_localhost/non_tls_server.py +56 -0
- data/aws-crt-ffi/crt/aws-c-http/tests/py_localhost/server.py +329 -0
- data/aws-crt-ffi/crt/aws-c-http/tests/test_connection_manager.c +1 -1
- data/aws-crt-ffi/crt/aws-c-http/tests/test_connection_monitor.c +2 -2
- data/aws-crt-ffi/crt/aws-c-http/tests/test_h1_client.c +47 -34
- data/aws-crt-ffi/crt/aws-c-http/tests/test_h1_encoder.c +4 -4
- data/aws-crt-ffi/crt/aws-c-http/tests/test_h1_server.c +15 -12
- data/aws-crt-ffi/crt/aws-c-http/tests/test_h2_client.c +582 -25
- data/aws-crt-ffi/crt/aws-c-http/tests/test_h2_encoder.c +3 -3
- data/aws-crt-ffi/crt/aws-c-http/tests/test_localhost_integ.c +530 -0
- data/aws-crt-ffi/crt/aws-c-http/tests/test_stream_manager.c +459 -67
- data/aws-crt-ffi/crt/aws-c-io/CMakeLists.txt +4 -0
- data/aws-crt-ffi/crt/aws-c-io/builder.json +3 -2
- data/aws-crt-ffi/crt/aws-c-io/include/aws/io/channel.h +21 -0
- data/aws-crt-ffi/crt/aws-c-io/include/aws/io/io.h +3 -0
- data/aws-crt-ffi/crt/aws-c-io/include/aws/io/socket.h +6 -0
- data/aws-crt-ffi/crt/aws-c-io/include/aws/io/stream.h +35 -5
- data/aws-crt-ffi/crt/aws-c-io/include/aws/io/tls_channel_handler.h +211 -15
- data/aws-crt-ffi/crt/aws-c-io/source/channel.c +56 -30
- data/aws-crt-ffi/crt/aws-c-io/source/darwin/secure_transport_tls_channel_handler.c +0 -24
- data/aws-crt-ffi/crt/aws-c-io/source/io.c +9 -0
- data/aws-crt-ffi/crt/aws-c-io/source/{pkcs11.c → pkcs11_lib.c} +162 -22
- data/aws-crt-ffi/crt/aws-c-io/source/pkcs11_private.h +18 -20
- data/aws-crt-ffi/crt/aws-c-io/source/pkcs11_tls_op_handler.c +221 -0
- data/aws-crt-ffi/crt/aws-c-io/source/posix/socket.c +135 -81
- data/aws-crt-ffi/crt/aws-c-io/source/retry_strategy.c +12 -8
- data/aws-crt-ffi/crt/aws-c-io/source/s2n/s2n_tls_channel_handler.c +252 -215
- data/aws-crt-ffi/crt/aws-c-io/source/stream.c +65 -82
- data/aws-crt-ffi/crt/aws-c-io/source/tls_channel_handler.c +188 -57
- data/aws-crt-ffi/crt/aws-c-io/source/windows/iocp/socket.c +271 -256
- data/aws-crt-ffi/crt/aws-c-io/tests/CMakeLists.txt +21 -12
- data/aws-crt-ffi/crt/aws-c-io/tests/channel_test.c +32 -4
- data/aws-crt-ffi/crt/aws-c-io/tests/io_lib_test.c +37 -0
- data/aws-crt-ffi/crt/aws-c-io/tests/pkcs11_test.c +412 -93
- data/aws-crt-ffi/crt/aws-c-io/tests/resources/ec_unittests.crt +15 -0
- data/aws-crt-ffi/crt/aws-c-io/tests/resources/ec_unittests.key +5 -0
- data/aws-crt-ffi/crt/aws-c-io/tests/resources/ec_unittests.p12 +0 -0
- data/aws-crt-ffi/crt/aws-c-io/tests/resources/ec_unittests.p8 +5 -0
- data/aws-crt-ffi/crt/aws-c-io/tests/resources/generateCerts.sh +24 -15
- data/aws-crt-ffi/crt/aws-c-io/tests/socket_test.c +72 -1
- data/aws-crt-ffi/crt/s2n/CMakeLists.txt +6 -1
- data/aws-crt-ffi/crt/s2n/bindings/rust/Cargo.toml +1 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/generate/src/main.rs +105 -82
- data/aws-crt-ffi/crt/s2n/bindings/rust/generate.sh +1 -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/raw/config.rs +1 -1
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-sys/Cargo.toml +1 -1
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-sys/build.rs +84 -30
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-sys/src/lib.rs +4 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-tokio/Cargo.toml +21 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-tokio/examples/certs/cert.pem +14 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-tokio/examples/certs/key.pem +8 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-tokio/examples/client.rs +45 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-tokio/examples/server.rs +60 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-tokio/src/lib.rs +150 -0
- data/aws-crt-ffi/crt/s2n/bindings/rust/s2n-tls-tokio/tests/handshake.rs +51 -0
- data/aws-crt-ffi/crt/s2n/crypto/s2n_drbg.c +98 -77
- data/aws-crt-ffi/crt/s2n/crypto/s2n_drbg.h +10 -7
- data/aws-crt-ffi/crt/s2n/crypto/s2n_openssl.h +2 -0
- data/aws-crt-ffi/crt/s2n/error/s2n_errno.c +1 -1
- data/aws-crt-ffi/crt/s2n/error/s2n_errno.h +1 -0
- data/aws-crt-ffi/crt/s2n/s2n.mk +7 -0
- data/aws-crt-ffi/crt/s2n/tests/cbmc/templates/scripts/repository.py +233 -0
- data/aws-crt-ffi/crt/s2n/tests/cbmc/templates/scripts/setup-proof.py +8 -7
- data/aws-crt-ffi/crt/s2n/tests/cbmc/templates/scripts/setup.py +17 -18
- data/aws-crt-ffi/crt/s2n/tests/cbmc/templates/scripts/util.py +41 -23
- data/aws-crt-ffi/crt/s2n/tests/fuzz/LD_PRELOAD/global_overrides.c +3 -3
- data/aws-crt-ffi/crt/s2n/tests/integration/s2n_client_endpoint_handshake_test.py +2 -2
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/Makefile +13 -42
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/README.md +6 -1
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/common.py +118 -53
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/configuration.py +108 -88
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/conftest.py +6 -3
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/constants.py +6 -4
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/fixtures.py +21 -12
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/global_flags.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/processes.py +62 -19
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/providers.py +304 -48
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_client_authentication.py +20 -11
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_cross_compatibility.py +41 -17
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_dynamic_record_sizes.py +6 -3
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_early_data.py +105 -48
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_external_psk.py +160 -76
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_fragmentation.py +59 -26
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_happy_path.py +42 -28
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_hello_retry_requests.py +33 -13
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_key_update.py +29 -11
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_ocsp.py +138 -0
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_pq_handshake.py +103 -36
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_session_resumption.py +52 -25
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_signature_algorithms.py +47 -21
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_sni_match.py +13 -9
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_sslyze.py +88 -17
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_version_negotiation.py +71 -22
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/test_well_known_endpoints.py +4 -3
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/tox.ini +1 -0
- data/aws-crt-ffi/crt/s2n/tests/integrationv2/utils.py +50 -15
- data/aws-crt-ffi/crt/s2n/tests/litani/CHANGELOG +131 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/CONTRIBUTING.md +16 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/README.md +36 -14
- data/aws-crt-ffi/crt/s2n/tests/litani/THIRD-PARTY +205 -41
- data/aws-crt-ffi/crt/s2n/tests/litani/doc/bin/build-html-doc +7 -7
- data/aws-crt-ffi/crt/s2n/tests/litani/doc/configure +27 -23
- data/aws-crt-ffi/crt/s2n/tests/litani/doc/src/man/litani-add-job.scdoc +7 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/doc/src/man/litani-dump-run.scdoc +7 -5
- data/aws-crt-ffi/crt/s2n/tests/litani/doc/src/man/litani-transform-jobs.scdoc +248 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/doc/src/man/litani.scdoc +2 -2
- data/aws-crt-ffi/crt/s2n/tests/litani/doc/templates/index.jinja.html +4 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/add-root-node/README +12 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/add-root-node/original-run.sh +52 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/add-root-node/run-all.py +71 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/no-standalone-transform/README +13 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/no-standalone-transform/run-1.sh +34 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/no-standalone-transform/run-2.sh +35 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/no-standalone-transform/run-3.sh +34 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/no-standalone-transform/run-all.py +60 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/README.md +10 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/assumptions.html +42 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/file.dat +7 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/histogram.dat +7 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/run-1.sh +41 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/run-2.sh +47 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/run-3.sh +41 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/run-all.py +34 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/scripts/fib-table.py +40 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/scripts/fib.plt +5 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/scripts/fib.py +32 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/scripts/sin-output.py +40 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/scripts/sin.plt +5 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/scripts/sin.py +30 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/templates/fib-table.jinja.html +45 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/examples/rich-output/templates/sin-output.jinja.html +30 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/lib/add_job.py +55 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/lib/graph.py +2 -2
- data/aws-crt-ffi/crt/s2n/tests/litani/lib/litani.py +6 -1
- data/aws-crt-ffi/crt/s2n/tests/litani/lib/litani_report.py +18 -21
- data/aws-crt-ffi/crt/s2n/tests/litani/lib/ninja.py +2 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/lib/run_printer.py +26 -7
- data/aws-crt-ffi/crt/s2n/tests/litani/lib/transform_jobs.py +84 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/litani +28 -33
- data/aws-crt-ffi/crt/s2n/tests/litani/script/release +220 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/templates/dashboard.jinja.html +78 -15
- data/aws-crt-ffi/crt/s2n/tests/litani/templates/pipeline.jinja.html +21 -5
- data/aws-crt-ffi/crt/s2n/tests/litani/test/README +15 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/run +56 -33
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/custom_stages.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/cwd.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/dump_run.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/graph_line_break.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/html_node.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/job_id_env.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/multiproc_dump_run.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/no_pool_serialize.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/no_pool_serialize_graph.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/no_timed_out.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/no_timed_out_timeout_ignored.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/no_timed_out_timeout_ok.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/pipeline_order.py +53 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/pool_serialize.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/pool_serialize_graph.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/single_pool.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/timed_out.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/timed_out_subprocess.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/timed_out_subprocess_multi_shell.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/timed_out_subprocess_shell.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/timed_out_timeout_ignored.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/timed_out_timeout_ok.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/transform_delete_job.py +54 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/transform_modify_job.py +46 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/transform_no_change_job.py +44 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/e2e/tests/zero_pool.py +1 -0
- data/aws-crt-ffi/crt/s2n/tests/litani/test/run +82 -12
- data/aws-crt-ffi/crt/s2n/tests/s2n_test.h +58 -33
- data/aws-crt-ffi/crt/s2n/tests/testlib/s2n_key_schedule_testlib.c +18 -6
- data/aws-crt-ffi/crt/s2n/tests/testlib/s2n_pq_kat_test_utils.c +4 -4
- data/aws-crt-ffi/crt/s2n/tests/testlib/s2n_testlib.h +2 -0
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_client_hello_retry_test.c +66 -2
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_connection_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_drbg_test.c +34 -14
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_fork_generation_number_test.c +28 -5
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_mem_usage_test.c +6 -0
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_override_openssl_random_test.c +1 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_random_test.c +60 -41
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_self_talk_broken_pipe_test.c +2 -2
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_handshake_early_data_test.c +3 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_hybrid_shared_secret_test.c +9 -1
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_key_schedule_rfc8448_test.c +31 -130
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_key_schedule_test.c +2 -4
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_pq_handshake_test.c +11 -6
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_secrets_rfc8448_test.c +19 -21
- data/aws-crt-ffi/crt/s2n/tests/unit/s2n_tls13_secrets_test.c +109 -60
- data/aws-crt-ffi/crt/s2n/tls/s2n_config.c +1 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_config.h +1 -1
- data/aws-crt-ffi/crt/s2n/tls/s2n_connection.c +29 -24
- data/aws-crt-ffi/crt/s2n/tls/s2n_connection.h +5 -5
- data/aws-crt-ffi/crt/s2n/tls/s2n_handshake_hashes.h +1 -7
- data/aws-crt-ffi/crt/s2n/tls/s2n_handshake_io.c +2 -0
- data/aws-crt-ffi/crt/s2n/tls/s2n_handshake_transcript.c +0 -44
- data/aws-crt-ffi/crt/s2n/tls/s2n_internal.h +0 -1
- data/aws-crt-ffi/crt/s2n/tls/s2n_quic_support.h +1 -1
- data/aws-crt-ffi/crt/s2n/tls/s2n_tls13_key_schedule.c +1 -2
- data/aws-crt-ffi/crt/s2n/tls/s2n_tls13_secrets.c +84 -44
- data/aws-crt-ffi/crt/s2n/tls/s2n_tls13_secrets.h +3 -9
- data/aws-crt-ffi/crt/s2n/utils/s2n_blob.h +15 -8
- data/aws-crt-ffi/crt/s2n/utils/s2n_fork_detection.c +2 -6
- data/aws-crt-ffi/crt/s2n/utils/s2n_random.c +9 -9
- data/aws-crt-ffi/src/input_stream.c +32 -15
- data/ext/compile.rb +13 -5
- data/lib/aws-crt/platforms.rb +14 -5
- data/lib/aws-crt/string_blob.rb +3 -3
- metadata +61 -7
- data/aws-crt-ffi/crt/aws-c-auth/source/external/cJSON.c +0 -2987
- data/aws-crt-ffi/crt/aws-c-auth/tests/external/cJSON.c +0 -2986
- data/aws-crt-ffi/crt/aws-c-io/tests/error_test.c +0 -20
@@ -5,9 +5,12 @@
|
|
5
5
|
|
6
6
|
"""Set up the CBMC proof instrastructure."""
|
7
7
|
|
8
|
+
from pathlib import Path
|
8
9
|
import logging
|
9
10
|
import os
|
11
|
+
import shutil
|
10
12
|
|
13
|
+
import repository
|
11
14
|
import util
|
12
15
|
|
13
16
|
SRCDIR_TEXT = """
|
@@ -19,7 +22,7 @@ SRCDIR ?= $(abspath $(PROOF_ROOT)/{})
|
|
19
22
|
LITANI_TEXT = """
|
20
23
|
# Absolute path to the litani script.
|
21
24
|
#
|
22
|
-
LITANI ?=
|
25
|
+
LITANI ?= {}
|
23
26
|
"""
|
24
27
|
|
25
28
|
PROJECT_TEXT = """
|
@@ -40,11 +43,10 @@ def create_makefile_template_defines(
|
|
40
43
|
if os.path.exists(makefile):
|
41
44
|
logging.warning("Overwriting %s", makefile)
|
42
45
|
|
43
|
-
with open(makefile, "w") as fileobj:
|
46
|
+
with open(makefile, "w", encoding='utf-8') as fileobj:
|
44
47
|
print(SRCDIR_TEXT.format(os.path.relpath(source_root, proof_root)),
|
45
48
|
file=fileobj)
|
46
|
-
print(LITANI_TEXT.format(
|
47
|
-
file=fileobj)
|
49
|
+
print(LITANI_TEXT.format(litani), file=fileobj)
|
48
50
|
print(PROJECT_TEXT.format(project_name), file=fileobj)
|
49
51
|
|
50
52
|
def main():
|
@@ -52,23 +54,20 @@ def main():
|
|
52
54
|
|
53
55
|
logging.basicConfig(format='%(levelname)s: %(message)s')
|
54
56
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
litani = util.read_litani_path()
|
65
|
-
|
66
|
-
# the name of the project used in project verification reports
|
67
|
-
project_name = util.read_project_name()
|
57
|
+
cbmc_root = Path.cwd()
|
58
|
+
proof_root = cbmc_root / "proofs"
|
59
|
+
source_root = repository.repository_root()
|
60
|
+
litani = "litani" if shutil.which("litani") else \
|
61
|
+
repository.litani_root() / "litani"
|
62
|
+
if litani != "litani":
|
63
|
+
relpath_from_litani_to_proof_root = os.path.relpath(litani, proof_root)
|
64
|
+
litani = f"$(abspath $(PROOF_ROOT)/{relpath_from_litani_to_proof_root})"
|
65
|
+
project_name = util.ask_for_project_name()
|
68
66
|
|
69
67
|
util.copy_repository_templates(cbmc_root)
|
70
68
|
create_makefile_template_defines(
|
71
|
-
proof_root, source_root, litani, project_name
|
69
|
+
proof_root, source_root, litani, project_name
|
70
|
+
)
|
72
71
|
|
73
72
|
if __name__ == "__main__":
|
74
73
|
main()
|
@@ -3,9 +3,11 @@
|
|
3
3
|
|
4
4
|
"""Methods of manipulating the templates repository."""
|
5
5
|
|
6
|
+
from pathlib import Path
|
6
7
|
import logging
|
7
8
|
import os
|
8
9
|
import shutil
|
10
|
+
import repository
|
9
11
|
|
10
12
|
REPOSITORY_TEMPLATES = "template-for-repository"
|
11
13
|
PROOF_TEMPLATES = "template-for-proof"
|
@@ -36,34 +38,47 @@ def templates_root():
|
|
36
38
|
return os.path.dirname(script_dir())
|
37
39
|
|
38
40
|
################################################################
|
39
|
-
#
|
41
|
+
# Ask the user for set up information
|
40
42
|
|
41
|
-
def
|
42
|
-
|
43
|
+
def ask_for_project_name():
|
44
|
+
"""Ask user for project name."""
|
43
45
|
|
44
|
-
|
45
|
-
print("What is the path to {}? ".format(description), end="")
|
46
|
-
return os.path.abspath(os.path.expanduser(read_from_stdin()))
|
46
|
+
return input("What is the project name? ").strip()
|
47
47
|
|
48
|
-
def
|
49
|
-
|
48
|
+
def ask_for_function_name():
|
49
|
+
"""Ask user for function name."""
|
50
50
|
|
51
|
-
|
52
|
-
return read_path_from_stdin("the 'proofs' directory (usually '.')")
|
51
|
+
return input("What is the function name? ").strip()
|
53
52
|
|
54
|
-
def
|
55
|
-
|
53
|
+
def ask_for_source_file(func, cwd=None, repo=None):
|
54
|
+
"""Ask user to select path to source file defining function func."""
|
56
55
|
|
57
|
-
|
58
|
-
|
56
|
+
cwd = Path(cwd or Path.cwd()).resolve()
|
57
|
+
repo = Path(repo or repository.repository_root(cwd=cwd)).resolve()
|
58
|
+
sources = repository.function_sources(func, cwd=cwd, repo=repo, abspath=False)
|
59
|
+
options = sources + ["The source file is not listed here"]
|
60
|
+
choices = [str(idx) for idx in range(len(options))]
|
61
|
+
index = choices[-1]
|
59
62
|
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
+
if sources:
|
64
|
+
print(f"These source files define a function '{func}':")
|
65
|
+
for idx, src in enumerate(options):
|
66
|
+
print(f" {idx:3} {src}")
|
67
|
+
index = input(
|
68
|
+
f"Select a source file (the options are {', '.join(choices)}): "
|
69
|
+
).strip() or choices[-1]
|
63
70
|
|
64
|
-
|
65
|
-
|
66
|
-
|
71
|
+
if index not in choices:
|
72
|
+
raise UserWarning(f"{index} is not in {', '.join(choices)}")
|
73
|
+
if index == choices[-1]:
|
74
|
+
src = input(f"Enter path to source file defining {func}: ").strip()
|
75
|
+
else:
|
76
|
+
src = sources[int(index)]
|
77
|
+
src = Path(src)
|
78
|
+
if not src.is_file():
|
79
|
+
raise UserWarning(f"Source file '{src}' does not exist")
|
80
|
+
|
81
|
+
return src
|
67
82
|
|
68
83
|
################################################################
|
69
84
|
|
@@ -99,12 +114,12 @@ def link_files(name, src, dst):
|
|
99
114
|
install_method[0], name, src_link)
|
100
115
|
return 1
|
101
116
|
|
102
|
-
logging.
|
117
|
+
logging.debug(
|
103
118
|
"Creating %s %s -> %s", install_method[0], name, src_link)
|
104
119
|
install_method[1](src_link, dst_name)
|
105
120
|
return 0
|
106
121
|
|
107
|
-
def copy_directory_contents(src, dst):
|
122
|
+
def copy_directory_contents(src, dst, exclude=None):
|
108
123
|
"""Link the contents of one directory into another."""
|
109
124
|
|
110
125
|
src = os.path.normpath(src)
|
@@ -116,6 +131,8 @@ def copy_directory_contents(src, dst):
|
|
116
131
|
skipped = 0
|
117
132
|
for name in files_under_root(src):
|
118
133
|
name = os.path.normpath(name)
|
134
|
+
if exclude and name.startswith(exclude):
|
135
|
+
continue
|
119
136
|
skipped += link_files(name, src, dst)
|
120
137
|
|
121
138
|
if skipped:
|
@@ -127,4 +144,5 @@ def copy_repository_templates(cbmc_root):
|
|
127
144
|
|
128
145
|
copy_directory_contents(os.path.join(templates_root(),
|
129
146
|
REPOSITORY_TEMPLATES),
|
130
|
-
cbmc_root
|
147
|
+
cbmc_root,
|
148
|
+
exclude="negative_tests")
|
@@ -27,15 +27,15 @@
|
|
27
27
|
#include "utils/s2n_safety.h"
|
28
28
|
#include "utils/s2n_random.h"
|
29
29
|
|
30
|
-
|
30
|
+
S2N_RESULT s2n_drbg_generate(struct s2n_drbg *drbg, struct s2n_blob *blob) {
|
31
31
|
|
32
32
|
/* If fuzzing, only generate "fake" random numbers in order to ensure that fuzz tests are deterministic and repeatable.
|
33
33
|
* This function should generate non-zero values since this function may be called repeatedly at startup until a
|
34
34
|
* non-zero value is generated.
|
35
35
|
*/
|
36
|
-
|
36
|
+
RESULT_GUARD(s2n_get_public_random_data(blob));
|
37
37
|
drbg->bytes_used += blob->size;
|
38
|
-
return
|
38
|
+
return S2N_RESULT_OK;
|
39
39
|
}
|
40
40
|
|
41
41
|
int s2n_stuffer_send_to_fd(struct s2n_stuffer *stuffer, const int wfd, const uint32_t len, uint32_t *bytes_sent)
|
@@ -39,8 +39,8 @@ well_known_endpoints = [
|
|
39
39
|
{"endpoint": "rsa2048.badssl.com"},
|
40
40
|
{"endpoint": "rsa4096.badssl.com"},
|
41
41
|
{"endpoint": "sha256.badssl.com"},
|
42
|
-
{"endpoint": "sha384.badssl.com"},
|
43
|
-
{"endpoint": "sha512.badssl.com"},
|
42
|
+
# {"endpoint": "sha384.badssl.com"},
|
43
|
+
# {"endpoint": "sha512.badssl.com"},
|
44
44
|
{"endpoint": "tls-v1-0.badssl.com"},
|
45
45
|
{"endpoint": "tls-v1-1.badssl.com"},
|
46
46
|
{"endpoint": "tls-v1-2.badssl.com"},
|
@@ -28,54 +28,25 @@ endif
|
|
28
28
|
define run_tox
|
29
29
|
( \
|
30
30
|
DYLD_LIBRARY_PATH="$(LIBCRYPTO_ROOT)/lib:$$DYLD_LIBRARY_PATH" \
|
31
|
-
LD_LIBRARY_PATH="$(LIBCRYPTO_ROOT)/lib:$$LD_LIBRARY_PATH" \
|
31
|
+
LD_LIBRARY_PATH="$(LIBCRYPTO_ROOT)/lib:"$(S2N_ROOT)/test-deps/gnutls37/nettle/lib":$$LD_LIBRARY_PATH" \
|
32
32
|
S2N_INTEG_TEST=1 \
|
33
|
-
PATH="
|
33
|
+
PATH="$(S2N_ROOT)/bin":"$(S2N_ROOT)/test-deps/openssl-1.1.1/bin":"$(S2N_ROOT)/test-deps/gnutls37/bin":$(PATH) \
|
34
34
|
PYTHONNOUSERSITE=1 \
|
35
|
-
TOX_TEST_NAME=$(1) \
|
35
|
+
TOX_TEST_NAME=$(1).py \
|
36
36
|
python3.9 -m tox \
|
37
37
|
)
|
38
38
|
endef
|
39
39
|
|
40
|
-
ifdef TOX_TEST_NAME
|
41
|
-
default: test_single
|
42
|
-
else
|
43
|
-
default: all
|
44
|
-
endif
|
45
40
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
test_early_data:
|
53
|
-
$(call run_tox,$@.py)
|
54
|
-
test_external_psk:
|
55
|
-
$(call run_tox,$@.py)
|
56
|
-
test_happy_path:
|
57
|
-
$(call run_tox,$@.py)
|
58
|
-
test_session_resumption:
|
59
|
-
$(call run_tox,$@.py)
|
60
|
-
test_sni_match:
|
61
|
-
$(call run_tox,$@.py)
|
62
|
-
test_well_known_endpoints:
|
63
|
-
$(call run_tox,$@.py)
|
64
|
-
test_fragmentation:
|
65
|
-
$(call run_tox,$@.py)
|
66
|
-
test_hello_retry_requests:
|
67
|
-
$(call run_tox,$@.py)
|
68
|
-
test_pq_handshake:
|
69
|
-
$(call run_tox,$@.py)
|
70
|
-
test_signature_algorithms:
|
71
|
-
$(call run_tox,$@.py)
|
72
|
-
test_version_negotiation:
|
73
|
-
$(call run_tox,$@.py)
|
74
|
-
test_cross_compatibility:
|
75
|
-
$(call run_tox,$@.py)
|
76
|
-
test_single:
|
77
|
-
$(call run_tox,$(TOX_TEST_NAME))
|
41
|
+
TESTS=$(wildcard test_*.py)
|
42
|
+
TEST_NAMES=$(TESTS:.py=)
|
43
|
+
|
44
|
+
ifndef TOX_TEST_NAME
|
45
|
+
TOX_TEST_NAME := ${TEST_NAMES}
|
46
|
+
endif
|
78
47
|
|
79
|
-
.PHONY :
|
80
|
-
all:
|
48
|
+
.PHONY : all
|
49
|
+
all: $(TOX_TEST_NAME)
|
81
50
|
|
51
|
+
$(TOX_TEST_NAME):
|
52
|
+
$(call run_tox,$@)
|
@@ -28,7 +28,12 @@ Python environment. Then all the integration tests will be collected and execute
|
|
28
28
|
If you only want to run a single test, you can set the `TOX_TEST_NAME` environment variable:
|
29
29
|
|
30
30
|
```
|
31
|
-
ubuntu@host:s2n_root/ $ TOX_TEST_NAME=test_happy_path
|
31
|
+
ubuntu@host:s2n_root/ $ TOX_TEST_NAME=test_happy_path make -C tests/integrationv2
|
32
|
+
```
|
33
|
+
|
34
|
+
Multiple specific tests can also be run as follows:
|
35
|
+
```
|
36
|
+
ubuntu@host:s2n_root/ $ TOX_TEST_NAME="test_happy_path test_sslyze" make -C tests/integrationv2
|
32
37
|
```
|
33
38
|
|
34
39
|
# Writing tests
|
@@ -79,6 +79,7 @@ class TimeoutException(subprocess.SubprocessError):
|
|
79
79
|
TimeoutException wraps the subprocess class giving more control
|
80
80
|
over the formatting of output.
|
81
81
|
"""
|
82
|
+
|
82
83
|
def __init__(self, timeout_exception):
|
83
84
|
self.exception = timeout_exception
|
84
85
|
|
@@ -141,8 +142,13 @@ class Certificates(object):
|
|
141
142
|
ECDSA_256 = Cert("ECDSA_256", "localhost_ecdsa_p256")
|
142
143
|
ECDSA_384 = Cert("ECDSA_384", "ecdsa_p384_pkcs1")
|
143
144
|
|
144
|
-
RSA_2048_SHA256_WILDCARD = Cert(
|
145
|
-
|
145
|
+
RSA_2048_SHA256_WILDCARD = Cert(
|
146
|
+
"RSA_2048_SHA256_WILDCARD", "rsa_2048_sha256_wildcard")
|
147
|
+
RSA_PSS_2048_SHA256 = Cert(
|
148
|
+
"RSA_PSS_2048_SHA256", "localhost_rsa_pss_2048_sha256")
|
149
|
+
|
150
|
+
OCSP = Cert("OCSP_RSA", "ocsp/server")
|
151
|
+
OCSP_ECDSA = Cert("OCSP_ECDSA_256", "ocsp/server_ecdsa")
|
146
152
|
|
147
153
|
|
148
154
|
class Protocol(object):
|
@@ -220,56 +226,94 @@ class Ciphers(object):
|
|
220
226
|
"""
|
221
227
|
When referencing ciphers, use these class values.
|
222
228
|
"""
|
223
|
-
DHE_RSA_DES_CBC3_SHA = Cipher("DHE-RSA-DES-CBC3-SHA", Protocols.SSLv3,
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
229
|
+
DHE_RSA_DES_CBC3_SHA = Cipher("DHE-RSA-DES-CBC3-SHA", Protocols.SSLv3,
|
230
|
+
False, False, iana_standard_name="SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA")
|
231
|
+
DHE_RSA_AES128_SHA = Cipher("DHE-RSA-AES128-SHA", Protocols.SSLv3, True, False, TEST_CERT_DIRECTORY +
|
232
|
+
'dhparams_2048.pem', iana_standard_name="TLS_DHE_RSA_WITH_AES_128_CBC_SHA")
|
233
|
+
DHE_RSA_AES256_SHA = Cipher("DHE-RSA-AES256-SHA", Protocols.SSLv3, True, False, TEST_CERT_DIRECTORY +
|
234
|
+
'dhparams_2048.pem', iana_standard_name="TLS_DHE_RSA_WITH_AES_256_CBC_SHA")
|
235
|
+
DHE_RSA_AES128_SHA256 = Cipher("DHE-RSA-AES128-SHA256", Protocols.TLS12, True, True, TEST_CERT_DIRECTORY +
|
236
|
+
'dhparams_2048.pem', iana_standard_name="TLS_DHE_RSA_WITH_AES_128_CBC_SHA256")
|
237
|
+
DHE_RSA_AES256_SHA256 = Cipher("DHE-RSA-AES256-SHA256", Protocols.TLS12, True, True, TEST_CERT_DIRECTORY +
|
238
|
+
'dhparams_2048.pem', iana_standard_name="TLS_DHE_RSA_WITH_AES_256_CBC_SHA256")
|
239
|
+
DHE_RSA_AES128_GCM_SHA256 = Cipher("DHE-RSA-AES128-GCM-SHA256", Protocols.TLS12, True, True,
|
240
|
+
TEST_CERT_DIRECTORY + 'dhparams_2048.pem', iana_standard_name="TLS_DHE_RSA_WITH_AES_128_GCM_SHA256")
|
241
|
+
DHE_RSA_AES256_GCM_SHA384 = Cipher("DHE-RSA-AES256-GCM-SHA384", Protocols.TLS12, True, True,
|
242
|
+
TEST_CERT_DIRECTORY + 'dhparams_2048.pem', iana_standard_name="TLS_DHE_RSA_WITH_AES_256_GCM_SHA384")
|
243
|
+
DHE_RSA_CHACHA20_POLY1305 = Cipher("DHE-RSA-CHACHA20-POLY1305", Protocols.TLS12, True, False,
|
244
|
+
TEST_CERT_DIRECTORY + 'dhparams_2048.pem', iana_standard_name="TLS_DHE_RSA_WITH_AES_256_GCM_SHA384")
|
245
|
+
|
246
|
+
AES128_SHA = Cipher("AES128-SHA", Protocols.SSLv3, True,
|
247
|
+
True, iana_standard_name="TLS_RSA_WITH_AES_128_CBC_SHA")
|
248
|
+
AES256_SHA = Cipher("AES256-SHA", Protocols.SSLv3, True,
|
249
|
+
True, iana_standard_name="TLS_RSA_WITH_AES_256_CBC_SHA")
|
250
|
+
AES128_SHA256 = Cipher("AES128-SHA256", Protocols.TLS12, True,
|
251
|
+
True, iana_standard_name="TLS_RSA_WITH_AES_128_CBC_SHA256")
|
252
|
+
AES256_SHA256 = Cipher("AES256-SHA256", Protocols.TLS12, True,
|
253
|
+
True, iana_standard_name="TLS_RSA_WITH_AES_256_CBC_SHA256")
|
254
|
+
AES128_GCM_SHA256 = Cipher("TLS_AES_128_GCM_SHA256", Protocols.TLS13,
|
255
|
+
True, True, iana_standard_name="TLS_AES_128_GCM_SHA256")
|
256
|
+
AES256_GCM_SHA384 = Cipher("TLS_AES_256_GCM_SHA384", Protocols.TLS13,
|
257
|
+
True, True, iana_standard_name="TLS_AES_256_GCM_SHA384")
|
258
|
+
|
259
|
+
ECDHE_ECDSA_AES128_SHA = Cipher("ECDHE-ECDSA-AES128-SHA", Protocols.SSLv3,
|
260
|
+
True, False, iana_standard_name="TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA")
|
261
|
+
ECDHE_ECDSA_AES256_SHA = Cipher("ECDHE-ECDSA-AES256-SHA", Protocols.SSLv3,
|
262
|
+
True, False, iana_standard_name="TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA")
|
263
|
+
ECDHE_ECDSA_AES128_SHA256 = Cipher("ECDHE-ECDSA-AES128-SHA256", Protocols.TLS12,
|
264
|
+
True, True, iana_standard_name="TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256")
|
265
|
+
ECDHE_ECDSA_AES256_SHA384 = Cipher("ECDHE-ECDSA-AES256-SHA384", Protocols.TLS12,
|
266
|
+
True, True, iana_standard_name="TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384")
|
267
|
+
ECDHE_ECDSA_AES128_GCM_SHA256 = Cipher("ECDHE-ECDSA-AES128-GCM-SHA256", Protocols.TLS12,
|
268
|
+
True, True, iana_standard_name="TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256")
|
269
|
+
ECDHE_ECDSA_AES256_GCM_SHA384 = Cipher("ECDHE-ECDSA-AES256-GCM-SHA384", Protocols.TLS12,
|
270
|
+
True, True, iana_standard_name="TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384")
|
271
|
+
ECDHE_ECDSA_CHACHA20_POLY1305 = Cipher("ECDHE-ECDSA-CHACHA20-POLY1305", Protocols.TLS12,
|
272
|
+
True, False, iana_standard_name="TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256")
|
273
|
+
|
274
|
+
ECDHE_RSA_DES_CBC3_SHA = Cipher("ECDHE-RSA-DES-CBC3-SHA", Protocols.SSLv3,
|
275
|
+
False, False, iana_standard_name="TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA")
|
276
|
+
ECDHE_RSA_AES128_SHA = Cipher("ECDHE-RSA-AES128-SHA", Protocols.SSLv3,
|
277
|
+
True, False, iana_standard_name="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA")
|
278
|
+
ECDHE_RSA_AES256_SHA = Cipher("ECDHE-RSA-AES256-SHA", Protocols.SSLv3,
|
279
|
+
True, False, iana_standard_name="TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA")
|
280
|
+
ECDHE_RSA_RC4_SHA = Cipher("ECDHE-RSA-RC4-SHA", Protocols.SSLv3,
|
281
|
+
False, False, iana_standard_name="TLS_ECDHE_RSA_WITH_RC4_128_SHA")
|
282
|
+
ECDHE_RSA_AES128_SHA256 = Cipher("ECDHE-RSA-AES128-SHA256", Protocols.TLS12,
|
283
|
+
True, True, iana_standard_name="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256")
|
284
|
+
ECDHE_RSA_AES256_SHA384 = Cipher("ECDHE-RSA-AES256-SHA384", Protocols.TLS12,
|
285
|
+
True, True, iana_standard_name="TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384")
|
286
|
+
ECDHE_RSA_AES128_GCM_SHA256 = Cipher("ECDHE-RSA-AES128-GCM-SHA256", Protocols.TLS12,
|
287
|
+
True, True, iana_standard_name="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256")
|
288
|
+
ECDHE_RSA_AES256_GCM_SHA384 = Cipher("ECDHE-RSA-AES256-GCM-SHA384", Protocols.TLS12,
|
289
|
+
True, True, iana_standard_name="TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384")
|
290
|
+
ECDHE_RSA_CHACHA20_POLY1305 = Cipher("ECDHE-RSA-CHACHA20-POLY1305", Protocols.TLS12,
|
291
|
+
True, False, iana_standard_name="TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256")
|
292
|
+
CHACHA20_POLY1305_SHA256 = Cipher("TLS_CHACHA20_POLY1305_SHA256", Protocols.TLS13,
|
293
|
+
True, False, iana_standard_name="TLS_CHACHA20_POLY1305_SHA256")
|
294
|
+
|
295
|
+
KMS_TLS_1_0_2018_10 = Cipher(
|
296
|
+
"KMS-TLS-1-0-2018-10", Protocols.TLS10, False, False, s2n=True)
|
297
|
+
KMS_PQ_TLS_1_0_2019_06 = Cipher(
|
298
|
+
"KMS-PQ-TLS-1-0-2019-06", Protocols.TLS10, False, False, s2n=True, pq=True)
|
299
|
+
KMS_PQ_TLS_1_0_2020_02 = Cipher(
|
300
|
+
"KMS-PQ-TLS-1-0-2020-02", Protocols.TLS10, False, False, s2n=True, pq=True)
|
301
|
+
KMS_PQ_TLS_1_0_2020_07 = Cipher(
|
302
|
+
"KMS-PQ-TLS-1-0-2020-07", Protocols.TLS10, False, False, s2n=True, pq=True)
|
303
|
+
PQ_SIKE_TEST_TLS_1_0_2019_11 = Cipher(
|
304
|
+
"PQ-SIKE-TEST-TLS-1-0-2019-11", Protocols.TLS10, False, False, s2n=True, pq=True)
|
305
|
+
PQ_SIKE_TEST_TLS_1_0_2020_02 = Cipher(
|
306
|
+
"PQ-SIKE-TEST-TLS-1-0-2020-02", Protocols.TLS10, False, False, s2n=True, pq=True)
|
307
|
+
PQ_TLS_1_0_2020_12 = Cipher(
|
308
|
+
"PQ-TLS-1-0-2020-12", Protocols.TLS10, False, False, s2n=True, pq=True)
|
265
309
|
|
266
310
|
@staticmethod
|
267
311
|
def from_iana(iana_name):
|
268
312
|
ciphers = [
|
269
313
|
cipher for attr in vars(Ciphers)
|
270
314
|
if not callable(cipher := getattr(Ciphers, attr))
|
271
|
-
|
272
|
-
|
315
|
+
and not attr.startswith("_")
|
316
|
+
and cipher.iana_standard_name
|
273
317
|
]
|
274
318
|
return {
|
275
319
|
cipher.iana_standard_name: cipher
|
@@ -337,7 +381,7 @@ class Signature(object):
|
|
337
381
|
|
338
382
|
|
339
383
|
class Signatures(object):
|
340
|
-
RSA_SHA1
|
384
|
+
RSA_SHA1 = Signature('RSA+SHA1', max_protocol=Protocols.TLS12)
|
341
385
|
RSA_SHA224 = Signature('RSA+SHA224', max_protocol=Protocols.TLS12)
|
342
386
|
RSA_SHA256 = Signature('RSA+SHA256', max_protocol=Protocols.TLS12)
|
343
387
|
RSA_SHA384 = Signature('RSA+SHA384', max_protocol=Protocols.TLS12)
|
@@ -379,25 +423,31 @@ class Results(object):
|
|
379
423
|
# Any exception thrown while running the process
|
380
424
|
exception = None
|
381
425
|
|
382
|
-
def __init__(self, stdout, stderr, exit_code, exception, expect_stderr=False):
|
426
|
+
def __init__(self, stdout, stderr, exit_code, exception, expect_stderr=False, expect_nonzero_exit=False):
|
383
427
|
self.stdout = stdout
|
384
428
|
self.stderr = stderr
|
385
429
|
self.exit_code = exit_code
|
386
430
|
self.exception = exception
|
387
431
|
self.expect_stderr = expect_stderr
|
432
|
+
self.expect_nonzero_exit = expect_nonzero_exit
|
388
433
|
|
389
434
|
def __str__(self):
|
390
435
|
return "Stdout: {}\nStderr: {}\nExit code: {}\nException: {}".format(self.stdout, self.stderr, self.exit_code, self.exception)
|
391
436
|
|
392
437
|
def assert_success(self):
|
393
|
-
assert self.exception is None
|
394
|
-
|
438
|
+
assert self.exception is None, self.exception
|
439
|
+
if not self.expect_nonzero_exit:
|
440
|
+
assert self.exit_code == 0, f"exit code: {self.exit_code}"
|
395
441
|
if not self.expect_stderr:
|
396
|
-
assert not self.stderr
|
442
|
+
assert not self.stderr, self.stderr
|
443
|
+
|
444
|
+
def output_streams(self):
|
445
|
+
return {self.stdout, self.stderr}
|
397
446
|
|
398
447
|
|
399
448
|
class ProviderOptions(object):
|
400
|
-
def __init__(
|
449
|
+
def __init__(
|
450
|
+
self,
|
401
451
|
mode=None,
|
402
452
|
host=None,
|
403
453
|
port=None,
|
@@ -417,7 +467,12 @@ class ProviderOptions(object):
|
|
417
467
|
server_name=None,
|
418
468
|
protocol=None,
|
419
469
|
use_mainline_version=None,
|
420
|
-
env_overrides=dict()
|
470
|
+
env_overrides=dict(),
|
471
|
+
enable_client_ocsp=False,
|
472
|
+
ocsp_response=None,
|
473
|
+
signature_algorithm=None,
|
474
|
+
record_size=None
|
475
|
+
):
|
421
476
|
|
422
477
|
# Client or server
|
423
478
|
self.mode = mode
|
@@ -480,3 +535,13 @@ class ProviderOptions(object):
|
|
480
535
|
|
481
536
|
# Extra environment parameters
|
482
537
|
self.env_overrides = env_overrides
|
538
|
+
|
539
|
+
# Enable OCSP on the client
|
540
|
+
self.enable_client_ocsp = enable_client_ocsp
|
541
|
+
|
542
|
+
# Path to OCSP response on the server
|
543
|
+
self.ocsp_response = ocsp_response
|
544
|
+
|
545
|
+
self.signature_algorithm = signature_algorithm
|
546
|
+
|
547
|
+
self.record_size = record_size
|