From 2db78a2cd72d0c95111d5f4884fbc17307a4238d Mon Sep 17 00:00:00 2001 From: Nick Banks Date: Tue, 24 Jan 2023 13:05:17 -0500 Subject: [PATCH] Backports for v2.1.7 (#3374) * Use the new onebranch linux docker image (#3315) * Address onebranch pipeline warnings (#3325) * gamecore_console: avoid importing timeGetDevCaps (#3332) it is not part of WINAPI_FAMILY_GAMES available to GDK platforms The proper fix is to refactor our link dependencies on Windows platforms. That is however a risker and more involved change, so this PR intends to address the immediate issue rendering msquic unusable on GDK gaming platform. Signed-off-by: Jianye Chen Signed-off-by: Jianye Chen * Adds Hashtable Restructuring (#3344) * Adds Hashtable Restructuring * Extra line in contract path * Make compiler happy * A bit of refactor * Remove unnecessary declaration * formatting * Forgot to remove a few #ifdefs * Updated PGO files * Fix a tag * Update src/platform/hashtable.c * Update src/platform/hashtable.c * Update src/platform/hashtable.c * Rename CXPLAT_HASHTABLE_MAX_RESTRUCT_ATTEMPTS to CXPLAT_HASHTABLE_MAX_RESIZE_ATTEMPTS Co-authored-by: Matt Olson * gamecore_console: default to latest Windows SDK (#3343) Signed-off-by: Jianye Chen * Update Quic VNE and Version 2 constants. (#3324) * gamecore_console: fix build with 10.0.20348.0 (#6) (#3348) updated min. SDK to 10.0.20348.0 for SetThreadIdealProcessor Signed-off-by: Jianye Chen Signed-off-by: Jianye Chen * Fix QUIC_SETTINGS param validation tests. (#3331) * Fix credscan warnings (#3359) * build: fix onebranch pipelines (#3360) changed base image to ltsc2019/vse2019 installed additional SDK to the image added pipeline parameter to specify the target branch Signed-off-by: Jianye Chen Signed-off-by: Jianye Chen * Update patch version * Use Ubuntu 20.04 to Build OpenSSL-Systemcrypto Variant (#3267) * Fix/suppress some new clang/cppcheck warnings (#3064) Signed-off-by: Jianye Chen Co-authored-by: Yi Huang Co-authored-by: Jianye Chen Co-authored-by: Matt Olson Co-authored-by: Anthony Rossi <41394064+anrossi@users.noreply.github.com> Co-authored-by: Lars Eggert --- .azure/CredScanSuppressions.json | 873 ++++++++++++++++++ .azure/OneBranch.Docker.Official.yml | 2 +- .azure/OneBranch.Official.yml | 14 +- .azure/OneBranch.PullRequest.yml | 2 +- .azure/azure-pipelines.ci.yml | 4 +- .azure/dockers/ob/windows/Dockerfile | 5 +- .../dockers/ob/windows/install-workloads.ps1 | 34 + .azure/dockers/ob/windows/vsconfig.2019 | 8 + .azure/obtemplates/push-vpack.yml | 2 +- .azure/templates/test-distribution.yml | 2 +- CMakeLists.txt | 18 +- Cargo.toml | 2 +- scripts/build.ps1 | 4 +- scripts/package-distribution.ps1 | 2 +- scripts/package-nuget.ps1 | 2 +- scripts/write-versions.ps1 | 2 +- src/core/api.c | 2 +- src/core/crypto_tls.c | 2 +- src/core/frame.h | 2 +- src/core/packet.c | 4 +- src/distribution/Info.plist | 2 +- src/inc/msquic.ver | 2 +- src/inc/quic_hashtable.h | 16 - src/inc/quic_versions.h | 4 +- src/platform/datapath_kqueue.c | 12 +- src/platform/hashtable.c | 118 ++- src/platform/tls_schannel.c | 2 - src/plugins/trace/dll/DataModel/QuicEvents.cs | 2 +- src/test/lib/ApiTest.cpp | 31 +- src/test/lib/TestHelpers.h | 15 +- 30 files changed, 1103 insertions(+), 87 deletions(-) create mode 100644 .azure/CredScanSuppressions.json create mode 100644 .azure/dockers/ob/windows/install-workloads.ps1 create mode 100644 .azure/dockers/ob/windows/vsconfig.2019 diff --git a/.azure/CredScanSuppressions.json b/.azure/CredScanSuppressions.json new file mode 100644 index 0000000000..5111bcc542 --- /dev/null +++ b/.azure/CredScanSuppressions.json @@ -0,0 +1,873 @@ + +{ + "tool": "Credential Scanner", + "suppressions": [ + { + "file": [ + "submodules/openssl/test/testrsa_withattrs.pem", + "submodules/openssl/.github/workflows/ci.yml", + "submodules/openssl/.github/workflows/run-checker-daily.yml", + "submodules/openssl/appveyor.yml", + "submodules/googletest/docs/advanced.md", + "submodules/googletest/docs/gmock_faq.md", + "submodules/googletest/docs/gmock_faq.md", + "submodules/openssl/apps/apps.h", + "submodules/openssl/apps/ca-key.pem", + "submodules/openssl/apps/client.pem", + "submodules/openssl/apps/dsa-ca.pem", + "submodules/openssl/apps/dsa-pca.pem", + "submodules/openssl/apps/pca-key.pem", + "submodules/openssl/apps/privkey.pem", + "submodules/openssl/apps/rsa8192.pem", + "submodules/openssl/apps/s1024key.pem", + "submodules/openssl/apps/s512-key.pem", + "submodules/openssl/apps/server.pem", + "submodules/openssl/apps/server2.pem", + "submodules/openssl/crypto/mem_dbg.c", + "submodules/openssl/crypto/ppccap.c", + "submodules/openssl/engines/e_ossltest.c", + "submodules/openssl/engines/e_capi.c", + "submodules/openssl/fuzz/oids.txt", + "submodules/openssl/fuzz/oids.txt", + "submodules/openssl/ssl/s3_lib.c", + "submodules/openssl/ssl/s3_lib.c", + "submodules/openssl/ssl/ssl_ciph.c", + "submodules/openssl/ssl/ssl_ciph.c", + "submodules/openssl/ssl/ssl_conf.c", + "submodules/openssl/ssl/ssl_local.h", + "submodules/openssl/test/shibboleth.pfx", + "submodules/openssl/test/testdsa.pem", + "submodules/openssl/test/testec-p256.pem", + "submodules/openssl/test/tested25519.pem", + "submodules/openssl/test/tested448.pem", + "submodules/openssl/test/testrsa.pem", + "submodules/googletest/googletest/src/gtest-death-test.cc", + "submodules/openssl/.github/workflows/ci.yml", + "submodules/openssl/crypto/asn1/f_int.c", + "submodules/openssl/crypto/asn1/f_string.c", + "submodules/openssl/crypto/bio/bss_dgram.c", + "submodules/openssl/crypto/bio/bss_dgram.c", + "submodules/openssl/crypto/bio/b_sock2.c", + "submodules/openssl/crypto/chacha/chacha_enc.c", + "submodules/openssl/crypto/chacha/chacha_enc.c", + "submodules/openssl/crypto/chacha/chacha_enc.c", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/err/openssl.txt", + "submodules/openssl/crypto/evp/e_chacha20_poly1305.c", + "submodules/openssl/crypto/objects/objects.txt", + "submodules/openssl/crypto/objects/objects.txt", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/drbg_lib.c", + "submodules/openssl/crypto/rand/rand_local.h", + "submodules/openssl/crypto/rand/rand_local.h", + "submodules/openssl/crypto/rc2/rc2_skey.c", + "submodules/openssl/demos/bio/server-ec.pem", + "submodules/openssl/demos/bio/server.pem", + "submodules/openssl/demos/cms/cakey.pem", + "submodules/openssl/demos/cms/signer.pem", + "submodules/openssl/demos/cms/signer2.pem", + "submodules/openssl/demos/smime/cakey.pem", + "submodules/openssl/demos/smime/signer.pem", + "submodules/openssl/demos/smime/signer2.pem", + "submodules/openssl/include/openssl/bio.h", + "submodules/openssl/include/openssl/rand_drbg.h", + "submodules/openssl/include/openssl/rand_drbg.h", + "submodules/openssl/ssl/record/rec_layer_s3.c", + "submodules/openssl/ssl/statem/statem_clnt.c", + "submodules/openssl/ssl/statem/statem_lib.c", + "submodules/openssl/ssl/statem/statem_lib.c", + "submodules/openssl/ssl/statem/statem_lib.c", + "submodules/openssl/test/certs/alt1-key.pem", + "submodules/openssl/test/certs/alt2-key.pem", + "submodules/openssl/test/certs/alt3-key.pem", + "submodules/openssl/test/certs/bad-pc3-key.pem", + "submodules/openssl/test/certs/bad-pc4-key.pem", + "submodules/openssl/test/certs/bad-pc6-key.pem", + "submodules/openssl/test/certs/bad.key", + "submodules/openssl/test/certs/badalt1-key.pem", + "submodules/openssl/test/certs/badalt10-key.pem", + "submodules/openssl/test/certs/badalt2-key.pem", + "submodules/openssl/test/certs/badalt3-key.pem", + "submodules/openssl/test/certs/badalt4-key.pem", + "submodules/openssl/test/certs/badalt5-key.pem", + "submodules/openssl/test/certs/badalt6-key.pem", + "submodules/openssl/test/certs/badalt7-key.pem", + "submodules/openssl/test/certs/badalt8-key.pem", + "submodules/openssl/test/certs/badalt9-key.pem", + "submodules/openssl/test/certs/badcn1-key.pem", + "submodules/openssl/test/certs/ca-key-768.pem", + "submodules/openssl/test/certs/ca-key-ec-named.pem", + "submodules/openssl/test/certs/ca-key.pem", + "submodules/openssl/test/certs/ca-key2.pem", + "submodules/openssl/test/certs/ca-pss-key.pem", + "submodules/openssl/test/certs/client-ed25519-key.pem", + "submodules/openssl/test/certs/client-ed448-key.pem", + "submodules/openssl/test/certs/ee-ecdsa-key.pem", + "submodules/openssl/test/certs/ee-key-768.pem", + "submodules/openssl/test/certs/ee-key-ec-named-explicit.pem", + "submodules/openssl/test/certs/ee-key-ec-named-named.pem", + "submodules/openssl/test/certs/ee-key.pem", + "submodules/openssl/test/certs/embeddedSCTs1-key.pem", + "submodules/openssl/test/certs/goodcn1-key.pem", + "submodules/openssl/test/certs/interCA.key", + "submodules/openssl/test/certs/leaf.key", + "submodules/openssl/test/certs/ncca-key.pem", + "submodules/openssl/test/certs/ncca1-key.pem", + "submodules/openssl/test/certs/ncca2-key.pem", + "submodules/openssl/test/certs/ncca3-key.pem", + "submodules/openssl/test/certs/p256-server-key.pem", + "submodules/openssl/test/certs/p384-root-key.pem", + "submodules/openssl/test/certs/p384-server-key.pem", + "submodules/openssl/test/certs/pc1-key.pem", + "submodules/openssl/test/certs/pc2-key.pem", + "submodules/openssl/test/certs/pc5-key.pem", + "submodules/openssl/test/certs/root-ed448-key.pem", + "submodules/openssl/test/certs/root-key-768.pem", + "submodules/openssl/test/certs/root-key.pem", + "submodules/openssl/test/certs/root-key2.pem", + "submodules/openssl/test/certs/rootCA.key", + "submodules/openssl/test/certs/rootkey.pem", + "submodules/openssl/test/certs/server-cecdsa-key.pem", + "submodules/openssl/test/certs/server-dsa-key.pem", + "submodules/openssl/test/certs/server-ecdsa-brainpoolP256r1-key.pem", + "submodules/openssl/test/certs/server-ecdsa-key.pem", + "submodules/openssl/test/certs/server-ed25519-key.pem", + "submodules/openssl/test/certs/server-ed448-key.pem", + "submodules/openssl/test/certs/server-pss-key.pem", + "submodules/openssl/test/certs/server-pss-restrict-key.pem", + "submodules/openssl/test/certs/serverkey.pem", + "submodules/openssl/test/certs/subinterCA.key", + "submodules/openssl/test/certs/wrongkey.pem", + "submodules/openssl/test/certs/x509-check-key.pem", + "submodules/openssl/test/smime-certs/smdh.pem", + "submodules/openssl/test/smime-certs/smdsa1.pem", + "submodules/openssl/test/smime-certs/smdsa2.pem", + "submodules/openssl/test/smime-certs/smdsa3.pem", + "submodules/openssl/test/smime-certs/smec1.pem", + "submodules/openssl/test/smime-certs/smec2.pem", + "submodules/openssl/test/smime-certs/smec3.pem", + "submodules/openssl/test/smime-certs/smroot.pem", + "submodules/openssl/test/smime-certs/smrsa1.pem", + "submodules/openssl/test/smime-certs/smrsa2.pem", + "submodules/openssl/test/smime-certs/smrsa3.pem", + "submodules/openssl/test/ssl-tests/23-srp.conf", + "submodules/googletest/googlemock/include/gmock/gmock-actions.h", + "submodules/openssl/demos/certs/apps/ckey.pem", + "submodules/openssl/demos/certs/apps/intkey.pem", + "submodules/openssl/demos/certs/apps/rootkey.pem", + "submodules/openssl/demos/certs/apps/skey.pem", + "submodules/openssl/demos/certs/apps/skey2.pem", + "submodules/openssl/test/recipes/04-test_pem_data/beermug.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-1023line.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-1024line.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-1025line.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-255line.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-256line.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-257line.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-blankline.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-comment.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-corruptiv.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-earlypad.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-extrapad.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-infixwhitespace.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-junk.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-longline.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-misalignedpad.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-onecolumn.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-oneline.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-onelineheader.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-shortandlongline.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-shortline.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-threecolumn.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa-trailingwhitespace.pem", + "submodules/openssl/test/recipes/04-test_pem_data/dsa.pem", + "submodules/openssl/test/recipes/04-test_pem_data/key.pem", + "submodules/openssl/test/recipes/30-test_evp_data/evpkdf.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evpkdf.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evpkdf.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evpkdf.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppbe.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppbe.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppbe.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppbe.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/30-test_evp_data/evppkey_ecc.txt", + "submodules/openssl/test/recipes/80-test_ocsp_data/key.pem", + "submodules/openssl/test/recipes/90-test_gost_data/server-key2001.pem", + "submodules/openssl/test/recipes/90-test_gost_data/server-key2012.pem", + "submodules/openssl/Configurations/00-base-templates.conf", + "submodules/openssl/Configurations/00-base-templates.conf", + "submodules/openssl/Configurations/00-base-templates.conf", + "submodules/openssl/Configurations/00-base-templates.conf", + "submodules/openssl/Configurations/00-base-templates.conf", + "submodules/openssl/Configurations/00-base-templates.conf", + "submodules/openssl/Configurations/10-main.conf", + "submodules/openssl/test/certs/cross-key.pem", + "submodules/openssl/test/certs/embeddedSCTs1_issuer-key.pem", + "submodules/openssl/external/perl/Text-Template-1.46/lib/Text/Template.pm" + ], + "_justification": "external modules" + }, + { + "file": [ + "src/core/cubic.c", + "src/core/cubic.c", + "src/core/cubic.c", + "src/core/cubic.c", + "docs/TSG.md", + "docs/TSG.md", + "docs/TSG.md", + "src/core/congestion_control.c", + "src/core/congestion_control.c", + "src/platform/crypt_bcrypt.c", + "src/platform/tls_schannel.c", + "src/platform/tls_schannel.c", + "src/platform/tls_schannel.c", + "src/platform/tls_schannel.c", + "src/generated/linux/crypt_bcrypt.c.clog.h", + "src/generated/linux/tls_schannel.c.clog.h", + "src/generated/linux/tls_schannel.c.clog.h" + ], + "_justification": "false positives" + } + ] +} diff --git a/.azure/OneBranch.Docker.Official.yml b/.azure/OneBranch.Docker.Official.yml index 30ffc2eaa1..002dc7b906 100644 --- a/.azure/OneBranch.Docker.Official.yml +++ b/.azure/OneBranch.Docker.Official.yml @@ -106,7 +106,7 @@ extends: displayName: '🔒 Download artifacts' inputs: targetPath: $(Build.SourcesDirectory)\dst\.azure\dockers\ob\windows - artifact: drop_main_download_external_libs + artifact: drop_docker_download_external_libs - task: onebranch.pipeline.imagebuildinfo@1 inputs: repositoryName: msquicbuild diff --git a/.azure/OneBranch.Official.yml b/.azure/OneBranch.Official.yml index 35c95c5905..0cd2ceedfd 100644 --- a/.azure/OneBranch.Official.yml +++ b/.azure/OneBranch.Official.yml @@ -24,6 +24,10 @@ parameters: # parameters are shown up in ADO UI in a build queue time displayName: 'Enable debug output' type: boolean default: false +- name: 'WindowsContainerImage2DockerTag' + displayName: 'WindowsContainerImage2 DockerTag' + type: string + default: 'latest' variables: CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning @@ -36,9 +40,9 @@ variables: NUGET_XMLDOC_MODE: none ONEBRANCH_AME_ACR_LOGIN: onebranch.azurecr.io, cdpxb7b51c2f738e43e48f7605d9a8e5f6d700.azurecr.io - WindowsContainerImage: 'cdpxwin1809.azurecr.io/global/vse2019:latest' - WindowsContainerImage2: 'cdpxb7b51c2f738e43e48f7605d9a8e5f6d700.azurecr.io/b7b51c2f-738e-43e4-8f76-05d9a8e5f6d7/official/msquicbuild:20220812.8' - LinuxContainerImage: 'cdpxb7b51c2f738e43e48f7605d9a8e5f6d700.azurecr.io/b7b51c2f-738e-43e4-8f76-05d9a8e5f6d7/official/msquicbuild:xcomp1' + WindowsContainerImage: 'onebranch.azurecr.io/windows/ltsc2019/vse2019:latest' + WindowsContainerImage2: 'cdpxb7b51c2f738e43e48f7605d9a8e5f6d700.azurecr.io/b7b51c2f-738e-43e4-8f76-05d9a8e5f6d7/official/msquicbuild:${{ parameters.WindowsContainerImage2DockerTag }}' + LinuxContainerImage: 'cdpxb7b51c2f738e43e48f7605d9a8e5f6d700.azurecr.io/b7b51c2f-738e-43e4-8f76-05d9a8e5f6d7/official/msquicbuild:xcomp2' LinuxContainerImage2: 'cdpxlinux.azurecr.io/global/ubuntu-1804:latest' resources: @@ -58,8 +62,8 @@ extends: validate: false tsa: enabled: false # onebranch publish all sdl results to TSA. If TSA is disabled all SDL tools will forced into 'break' build mode. - # credscan: - # suppressionsFile: $(Build.SourcesDirectory)\.config\CredScanSuppressions.json + credscan: + suppressionsFile: $(Build.SourcesDirectory)\.azure\CredScanSuppressions.json binskim: break: true # always break the build on binskim issues in addition to TSA upload policheck: diff --git a/.azure/OneBranch.PullRequest.yml b/.azure/OneBranch.PullRequest.yml index 5b7cf79e43..e0d4c7eff6 100644 --- a/.azure/OneBranch.PullRequest.yml +++ b/.azure/OneBranch.PullRequest.yml @@ -32,7 +32,7 @@ variables: OUTPUTROOT: $(REPOROOT)\out NUGET_XMLDOC_MODE: none - WindowsContainerImage: 'cdpxwin1809.azurecr.io/global/vse2019:latest' + WindowsContainerImage: 'onebranch.azurecr.io/windows/ltsc2019/vse2019:latest' WindowsContainerImage2: 'cdpxwin1809.azurecr.io/user/corenet/msquic:latest' # Docker image which is used to build the project https://aka.ms/obpipelines/containers LinuxContainerImage: 'cdpxlinux.azurecr.io/user/corenet/msquic:latest' diff --git a/.azure/azure-pipelines.ci.yml b/.azure/azure-pipelines.ci.yml index 4f35e6f65b..14acdc5da3 100644 --- a/.azure/azure-pipelines.ci.yml +++ b/.azure/azure-pipelines.ci.yml @@ -327,7 +327,7 @@ stages: config: Debug - template: ./templates/build-config-user.yml parameters: - image: ubuntu-latest + image: ubuntu-20.04 platform: linux arch: x64 tls: openssl @@ -405,7 +405,7 @@ stages: extraName: 'codecheck' - template: ./templates/build-config-user.yml parameters: - image: ubuntu-latest + image: ubuntu-20.04 platform: linux arch: x64 tls: openssl diff --git a/.azure/dockers/ob/windows/Dockerfile b/.azure/dockers/ob/windows/Dockerfile index 5f7ee84444..27c001099e 100644 --- a/.azure/dockers/ob/windows/Dockerfile +++ b/.azure/dockers/ob/windows/Dockerfile @@ -1,5 +1,5 @@ # escape=` -FROM cdpxwin1809.azurecr.io/global/vse2019:latest +FROM onebranch.azurecr.io/windows/ltsc2019/vse2019:latest # Default .NET FX images switch shell to PS. Switch it back. SHELL ["cmd", "/S", "/C"] @@ -7,9 +7,12 @@ SHELL ["cmd", "/S", "/C"] COPY win-installer-helper.psm1 C:\ COPY install*.* C:\ COPY xgameplatform.lib C:\ +COPY vsconfig.2019 C:\ RUN dir C:\ +RUN C:\install.cmd C:\install-workloads.ps1 + RUN C:\install.cmd C:\install-ewdk.ps1 RUN C:\install.cmd C:\install-tools.ps1 diff --git a/.azure/dockers/ob/windows/install-workloads.ps1 b/.azure/dockers/ob/windows/install-workloads.ps1 new file mode 100644 index 0000000000..2f94e476f4 --- /dev/null +++ b/.azure/dockers/ob/windows/install-workloads.ps1 @@ -0,0 +1,34 @@ + +if (Test-Path "$PSScriptRoot\win-installer-helper.psm1") +{ + Import-Module "$PSScriptRoot\win-installer-helper.psm1" +} +elseif (Test-Path "C:\win-installer-helper.psm1") +{ + Import-Module "C:\win-installer-helper.psm1" +} + +$ProgressPreference = 'SilentlyContinue' + +Start-Setup + +try { + + Write-Host "Installing additional visual studio workloads" + + $vsInstallerPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vs_installer.exe" + + $installerArgs = "modify --config `"C:\vsconfig.2019`" --installPath `"${env:VS2019}`" --quiet --norestart --nocache" + Install-FromEXE -Path $vsInstallerPath -Arguments $installerArgs + + Write-Output "Installed additional visual studio workloads" + +} catch { + Write-Host "Error during workloads installation" + dir $Env:TEMP -Filter *.log | where Length -gt 0 | Get-Content + dir $Env:TEMP -Filter *.txt | where Length -gt 0 | Get-Content + $_.Exception | Format-List -Force + exit 1 +} finally { + Stop-Setup +} diff --git a/.azure/dockers/ob/windows/vsconfig.2019 b/.azure/dockers/ob/windows/vsconfig.2019 new file mode 100644 index 0000000000..ebc08e0f64 --- /dev/null +++ b/.azure/dockers/ob/windows/vsconfig.2019 @@ -0,0 +1,8 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Component.VC.Runtimes.ARM64.Spectre", + "Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre", + "Microsoft.VisualStudio.Component.Windows10SDK.20348" + ] +} \ No newline at end of file diff --git a/.azure/obtemplates/push-vpack.yml b/.azure/obtemplates/push-vpack.yml index 94d9a37165..2b0b3f1045 100644 --- a/.azure/obtemplates/push-vpack.yml +++ b/.azure/obtemplates/push-vpack.yml @@ -29,7 +29,7 @@ jobs: vpackToken: $(VPACK_PAT) majorVer: 2 minorVer: 1 - patchVer: 6 + patchVer: 7 prereleaseVer: $(Build.BuildId) - publish: $(XES_VPACKMANIFESTDIRECTORY) diff --git a/.azure/templates/test-distribution.yml b/.azure/templates/test-distribution.yml index 945fc9a195..f6ecd4daf5 100644 --- a/.azure/templates/test-distribution.yml +++ b/.azure/templates/test-distribution.yml @@ -26,7 +26,7 @@ jobs: sudo apt-add-repository ppa:lttng/stable-2.12 sudo apt-get update sudo apt-get install -y lttng-tools - sudo dpkg -i $(Build.SourcesDirectory)/distribution/libmsquic_2.1.6_amd64.deb + sudo dpkg -i $(Build.SourcesDirectory)/distribution/libmsquic_2.1.7_amd64.deb - pwsh: | chmod +x $(Build.SourcesDirectory)/artifacts/bin/linux/x64_Release_openssl/msquictest $(Build.SourcesDirectory)/artifacts/bin/linux/x64_Release_openssl/msquictest --gtest_filter=ParameterValidation.ValidateApi diff --git a/CMakeLists.txt b/CMakeLists.txt index 1112c2fed0..397e35e9e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,8 +22,9 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON) message(STATUS "Source Dir: ${CMAKE_CURRENT_SOURCE_DIR}") message(STATUS "Host System name: ${CMAKE_HOST_SYSTEM_NAME}") if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows") - set(CMAKE_SYSTEM_VERSION 10.0.18362.0 CACHE STRING INTERNAL FORCE) - set(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION 10.0.18362.0 CACHE STRING INTERNAL FORCE) + if (NOT DEFINED CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION 10.0.18362 CACHE STRING INTERNAL FORCE) + endif() endif() if(POLICY CMP0091) @@ -55,7 +56,7 @@ message(STATUS "Platform version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}") message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") set(QUIC_MAJOR_VERSION 2) -set(QUIC_FULL_VERSION 2.1.6) +set(QUIC_FULL_VERSION 2.1.7) if (WIN32) set(CX_PLATFORM "windows") @@ -106,6 +107,12 @@ option(QUIC_OFFICIAL_RELEASE "Configured the build for an official release" OFF) set(QUIC_FOLDER_PREFIX "" CACHE STRING "Optional prefix for source group folders when using an IDE generator") set(QUIC_LIBRARY_NAME "msquic" CACHE STRING "Override the output library name") +if (QUIC_GAMECORE_BUILD) + if(${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION} VERSION_LESS "10.0.20348.0") + message(FATAL_ERROR "gamecore builds require Windows 10 SDK version 20348 or later.") + endif() +endif() + if (QUIC_UWP_BUILD OR QUIC_GAMECORE_BUILD) message(STATUS "UWP And GameCore builds disable all executables, and force shared CRT") set(QUIC_BUILD_TOOLS OFF) @@ -641,14 +648,17 @@ if(QUIC_CODE_CHECK) -altera-* -android-cloexec-fopen -android-cloexec-socket + -bugprone-assignment-in-if-condition -bugprone-easily-swappable-parameters -bugprone-implicit-widening-of-multiplication-result -bugprone-macro-parentheses -bugprone-narrowing-conversions -bugprone-reserved-identifier -bugprone-sizeof-expression + -modernize-macro-to-enum -cert-dcl37-c -cert-dcl51-cpp + -cert-err33-c -clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling -clang-diagnostic-microsoft-anon-tag -concurrency-mt-unsafe @@ -662,7 +672,9 @@ if(QUIC_CODE_CHECK) -llvmlibc-restrict-system-libc-headers -misc-no-recursion # do you really need recursion? -readability-avoid-const-params-in-decls + -readability-duplicate-include -readability-function-cognitive-complexity + -readability-identifier-length -readability-isolate-declaration -readability-magic-numbers -readability-non-const-parameter diff --git a/Cargo.toml b/Cargo.toml index 34165414af..5dad73d2c8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "msquic" -version = "2.1.6-beta" +version = "2.1.7-beta" edition = "2018" authors = ["Microsoft"] description = "Microsoft implementation of the IETF QUIC protocol" diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 37c02cb0ab..71d9aba3e1 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -430,10 +430,10 @@ function CMake-Generate { $Arguments += " -DQUIC_PGO=on" } if ($Platform -eq "uwp") { - $Arguments += " -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10 -DQUIC_UWP_BUILD=on" + $Arguments += " -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0 -DQUIC_UWP_BUILD=on" } if ($Platform -eq "gamecore_console") { - $Arguments += " -DQUIC_GAMECORE_BUILD=on" + $Arguments += " -DCMAKE_SYSTEM_VERSION=10.0 -DQUIC_GAMECORE_BUILD=on" } if ($ToolchainFile -ne "") { $Arguments += " -DCMAKE_TOOLCHAIN_FILE=""$ToolchainFile""" diff --git a/scripts/package-distribution.ps1 b/scripts/package-distribution.ps1 index 1241725e17..e9fbed42fb 100644 --- a/scripts/package-distribution.ps1 +++ b/scripts/package-distribution.ps1 @@ -19,7 +19,7 @@ $ArtifactsBinDir = Join-Path $BaseArtifactsDir "bin" # All direct subfolders are OS's $Platforms = Get-ChildItem -Path $ArtifactsBinDir -$Version = "2.1.6" +$Version = "2.1.7" $WindowsBuilds = @() $AllBuilds = @() diff --git a/scripts/package-nuget.ps1 b/scripts/package-nuget.ps1 index 5f12853987..99042c82a1 100644 --- a/scripts/package-nuget.ps1 +++ b/scripts/package-nuget.ps1 @@ -155,7 +155,7 @@ $DistDir = Join-Path $BaseArtifactsDir "dist" $CurrentCommitHash = Get-GitHash -RepoDir $RootDir $RepoRemote = Get-GitRemote -RepoDir $RootDir -$Version = "2.1.6" +$Version = "2.1.7" $BuildId = $env:BUILD_BUILDID if ($null -ne $BuildId) { diff --git a/scripts/write-versions.ps1 b/scripts/write-versions.ps1 index 2746d6e1eb..df3390faac 100644 --- a/scripts/write-versions.ps1 +++ b/scripts/write-versions.ps1 @@ -26,7 +26,7 @@ $ArtifactsDir = $BuildConfig.ArtifactsDir $SourceVersion = $env:BUILD_SOURCEVERSION; $SourceBranch = $env:BUILD_SOURCEBRANCH; $BuildId = $env:BUILD_BUILDID; -$VersionNumber = "2.1.6"; +$VersionNumber = "2.1.7"; class BuildData { [string]$SourceVersion; diff --git a/src/core/api.c b/src/core/api.c index 675ecd5f7c..fcabc1419b 100644 --- a/src/core/api.c +++ b/src/core/api.c @@ -521,7 +521,7 @@ MsQuicConnectionSendResumptionTicket( goto Error; } - if (Flags > (QUIC_SEND_RESUMPTION_FLAG_FINAL | QUIC_SEND_RESUMPTION_FLAG_NONE)) { + if (Flags > QUIC_SEND_RESUMPTION_FLAG_FINAL) { Status = QUIC_STATUS_INVALID_PARAMETER; goto Error; } diff --git a/src/core/crypto_tls.c b/src/core/crypto_tls.c index 4ca4dd3cfb..7a5ea0148f 100644 --- a/src/core/crypto_tls.c +++ b/src/core/crypto_tls.c @@ -62,7 +62,7 @@ typedef enum eSniNameType { // #define QUIC_TP_ID_MAX_DATAGRAM_FRAME_SIZE 32 // varint #define QUIC_TP_ID_DISABLE_1RTT_ENCRYPTION 0xBAAD // N/A -#define QUIC_TP_ID_VERSION_NEGOTIATION_EXT 0xFF73DB // Blob +#define QUIC_TP_ID_VERSION_NEGOTIATION_EXT 0x11 // Blob #define QUIC_TP_ID_MIN_ACK_DELAY 0xFF03DE1AULL // varint #define QUIC_TP_ID_CIBIR_ENCODING 0x1000 // {varint, varint} diff --git a/src/core/frame.h b/src/core/frame.h index e95feed908..5f34471422 100644 --- a/src/core/frame.h +++ b/src/core/frame.h @@ -94,7 +94,7 @@ extern "C" { #define QUIC_ERROR_CRYPTO_USER_CANCELED QUIC_ERROR_CRYPTO_ERROR(90) // TLS error code for 'user_canceled' #define QUIC_ERROR_CRYPTO_NO_APPLICATION_PROTOCOL QUIC_ERROR_CRYPTO_ERROR(120) // TLS error code for 'no_application_protocol' -#define QUIC_ERROR_VERSION_NEGOTIATION_ERROR 0x53F8 +#define QUIC_ERROR_VERSION_NEGOTIATION_ERROR 0x11 // // Used for determining which errors to count for performance counters. diff --git a/src/core/packet.c b/src/core/packet.c index c0b56228a7..2f139ead50 100644 --- a/src/core/packet.c +++ b/src/core/packet.c @@ -20,8 +20,8 @@ // const QUIC_VERSION_INFO QuicSupportedVersionList[] = { { QUIC_VERSION_2, - { 0xa7, 0x07, 0xc2, 0x03, 0xa5, 0x9b, 0x47, 0x18, 0x4a, 0x1d, - 0x62, 0xca, 0x57, 0x04, 0x06, 0xea, 0x7a, 0xe3, 0xe5, 0xd3 }, + { 0x0d, 0xed, 0xe3, 0xde, 0xf7, 0x00, 0xa6, 0xdb, 0x81, 0x93, + 0x81, 0xbe, 0x6e, 0x26, 0x9d, 0xcb, 0xf9, 0xbd, 0x2e, 0xd9 }, { 0x34, 0x25, 0xc2, 0x0c, 0xf8, 0x87, 0x79, 0xdf, 0x2f, 0xf7, 0x1e, 0x8a, 0xbf, 0xa7, 0x82, 0x49, 0x89, 0x1e, 0x76, 0x3b, 0xbe, 0xd2, 0xf1, 0x3c, 0x04, 0x83, 0x43, 0xd3, 0x48, 0xc0, 0x60, 0xe2 }, { "quicv2 key", "quicv2 iv", "quicv2 hp", "quicv2 ku" } }, diff --git a/src/distribution/Info.plist b/src/distribution/Info.plist index 3d91ffee9e..2dc58084f2 100644 --- a/src/distribution/Info.plist +++ b/src/distribution/Info.plist @@ -19,7 +19,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleVersion - 2.1.6 + 2.1.7 NSHumanReadableCopyright MIT CFBundleGetInfoString diff --git a/src/inc/msquic.ver b/src/inc/msquic.ver index e93ecd75b3..3a519024ac 100644 --- a/src/inc/msquic.ver +++ b/src/inc/msquic.ver @@ -12,7 +12,7 @@ #endif #ifndef VER_PATCH -#define VER_PATCH 6 +#define VER_PATCH 7 #endif #ifndef VER_BUILD_ID diff --git a/src/inc/quic_hashtable.h b/src/inc/quic_hashtable.h index c8aac05771..cbba9c06bf 100644 --- a/src/inc/quic_hashtable.h +++ b/src/inc/quic_hashtable.h @@ -132,10 +132,8 @@ typedef struct CXPLAT_HASHTABLE { // Entries used in bucket computation. uint32_t TableSize; -#ifdef CXPLAT_HASHTABLE_RESIZE_SUPPORT uint32_t Pivot; uint32_t DivisorMask; -#endif // Counters uint32_t NumEntries; @@ -229,20 +227,6 @@ CxPlatHashtableEnumerateEnd( _Inout_ CXPLAT_HASHTABLE_ENUMERATOR* Enumerator ); -#ifdef CXPLAT_HASHTABLE_RESIZE_SUPPORT - -BOOLEAN -CxPlatHashTableExpand( - _Inout_ CXPLAT_HASHTABLE* HashTable - ); - -BOOLEAN -CxPlatHashTableContract( - _Inout_ CXPLAT_HASHTABLE* HashTable - ); - -#endif // CXPLAT_HASHTABLE_RESIZE_SUPPORT - // // Simple helper hash function. // diff --git a/src/inc/quic_versions.h b/src/inc/quic_versions.h index d2bda70eb7..2fb86e5504 100644 --- a/src/inc/quic_versions.h +++ b/src/inc/quic_versions.h @@ -15,7 +15,7 @@ // The QUIC version numbers, in network byte order. // #define QUIC_VERSION_VER_NEG 0x00000000U // Version for 'Version Negotiation' -#define QUIC_VERSION_2 0xc4509a70U // Second official version +#define QUIC_VERSION_2 0xcf43336bU // Second official version #define QUIC_VERSION_1 0x01000000U // First official version #define QUIC_VERSION_MS_1 0x0000cdabU // First Microsoft version (currently same as latest draft) #define QUIC_VERSION_DRAFT_29 0x1d0000ffU // IETF draft 29 @@ -24,7 +24,7 @@ // The QUIC version numbers, in host byte order. // #define QUIC_VERSION_VER_NEG_H 0x00000000U // Version for 'Version Negotiation' -#define QUIC_VERSION_2_H 0x709a50c4U // Second official version +#define QUIC_VERSION_2_H 0x6b3343cfU // Second official version #define QUIC_VERSION_1_H 0x00000001U // First official version #define QUIC_VERSION_1_MS_H 0xabcd0000U // First Microsoft version (-1412628480 in decimal) #define QUIC_VERSION_DRAFT_29_H 0xff00001dU // IETF draft 29 diff --git a/src/platform/datapath_kqueue.c b/src/platform/datapath_kqueue.c index 786036bccc..facfbfa4d6 100644 --- a/src/platform/datapath_kqueue.c +++ b/src/platform/datapath_kqueue.c @@ -1171,14 +1171,14 @@ CxPlatSocketContextRecvComplete( _In_ ssize_t BytesTransferred ) { - QUIC_STATUS Status = QUIC_STATUS_SUCCESS; + QUIC_STATUS Status = QUIC_STATUS_SUCCESS; // cppcheck-suppress unreadVariable CXPLAT_DBG_ASSERT(SocketContext->CurrentRecvBlock != NULL); CXPLAT_RECV_DATA* RecvPacket = &SocketContext->CurrentRecvBlock->RecvPacket; SocketContext->CurrentRecvBlock = NULL; - BOOLEAN FoundLocalAddr = FALSE; - BOOLEAN FoundTOS = FALSE; + BOOLEAN FoundLocalAddr = FALSE; // cppcheck-suppress unreadVariable + BOOLEAN FoundTOS = FALSE; // cppcheck-suppress unreadVariable QUIC_ADDR* LocalAddr = &RecvPacket->Route->LocalAddress; if (LocalAddr->Ipv6.sin6_family == AF_INET6) { LocalAddr->Ipv6.sin6_family = QUIC_ADDRESS_FAMILY_INET6; @@ -1205,10 +1205,10 @@ CxPlatSocketContextRecvComplete( CxPlatConvertFromMappedV6(LocalAddr, LocalAddr); LocalAddr->Ipv6.sin6_scope_id = PktInfo6->ipi6_ifindex; - FoundLocalAddr = TRUE; + FoundLocalAddr = TRUE; // cppcheck-suppress unreadVariable } else if (CMsg->cmsg_type == IPV6_TCLASS) { RecvPacket->TypeOfService = *(uint8_t *)CMSG_DATA(CMsg); - FoundTOS = TRUE; + FoundTOS = TRUE; // cppcheck-suppress unreadVariable } } else if (CMsg->cmsg_level == IPPROTO_IP) { if (CMsg->cmsg_type == IP_PKTINFO) { @@ -1220,7 +1220,7 @@ CxPlatSocketContextRecvComplete( FoundLocalAddr = TRUE; } else if (CMsg->cmsg_type == IP_TOS || CMsg->cmsg_type == IP_RECVTOS) { RecvPacket->TypeOfService = *(uint8_t *)CMSG_DATA(CMsg); - FoundTOS = TRUE; + FoundTOS = TRUE; // cppcheck-suppress unreadVariable } } } diff --git a/src/platform/hashtable.c b/src/platform/hashtable.c index fac9a62a1e..21037f6cb8 100644 --- a/src/platform/hashtable.c +++ b/src/platform/hashtable.c @@ -81,6 +81,45 @@ CXPLAT_STATIC_ASSERT( CXPLAT_HASH_MIN_SIZE == BASE_HASH_TABLE_SIZE, "Hash table sizes should match!"); +// +// The maximum number of hash table resizes allowed at a time. This limits +// the time spent expanding/contracting a hash table at dispatch. +// +#define CXPLAT_HASHTABLE_MAX_RESIZE_ATTEMPTS 1 + +// +// The maximum average chain length in a hash table bucket. If a hash table's +// average chain length goes above this limit, it needs to be expanded. +// +#define CXPLAT_HASHTABLE_MAX_CHAIN_LENGTH 4 + +// +// The maximum percentage of empty buckets in the hash table. If a hash table +// has more empty buckets, it needs to be contracted. +// +#define CXPLAT_HASHTABLE_MAX_EMPTY_BUCKET_PERCENTAGE 25 + +#if CXPLAT_HASHTABLE_CONTRACT_SUPPORT +uint32_t +CxPlatHashtableGetEmptyBuckets( + _In_ const CXPLAT_HASHTABLE* HashTable + ) +{ + CXPLAT_DBG_ASSERT(HashTable->TableSize >= HashTable->NonEmptyBuckets); + return HashTable->TableSize - HashTable->NonEmptyBuckets; +} + +BOOLEAN +CxPlatHashTableContract( + _Inout_ CXPLAT_HASHTABLE* HashTable + ); +#endif // CXPLAT_HASHTABLE_CONTRACT_SUPPORT + +BOOLEAN +CxPlatHashTableExpand( + _Inout_ CXPLAT_HASHTABLE* HashTable + ); + #ifndef BitScanReverse static uint8_t @@ -160,6 +199,7 @@ Routine Description: CXPLAT_DBG_ASSERT(BucketIndex < MAX_HASH_TABLE_SIZE); uint32_t AbsoluteIndex = BucketIndex + HT_SECOND_LEVEL_DIR_MIN_SIZE; + CXPLAT_DBG_ASSERT(AbsoluteIndex != 0); // // Find the most significant set bit. Since AbsoluteIndex is always nonzero, @@ -350,15 +390,10 @@ Return Value: --*/ { -#ifdef CXPLAT_HASHTABLE_RESIZE_SUPPORT uint32_t BucketIndex = ((uint32_t)Signature) & HashTable->DivisorMask; if (BucketIndex < HashTable->Pivot) { BucketIndex = ((uint32_t)Signature) & ((HashTable->DivisorMask << 1) | 1); } -#else - uint32_t BucketIndex = ((uint32_t)Signature) & (HashTable->TableSize - 1); -#endif - return BucketIndex; } @@ -498,10 +533,8 @@ Return Value: CxPlatZeroMemory(Table, sizeof(CXPLAT_HASHTABLE)); Table->Flags = LocalFlags; Table->TableSize = InitialSize; -#ifdef CXPLAT_HASHTABLE_RESIZE_SUPPORT Table->DivisorMask = Table->TableSize - 1; Table->Pivot = 0; -#endif // // Now we allocate the second level entries. @@ -707,7 +740,7 @@ Routine Description: --*/ { - CXPLAT_HASHTABLE_LOOKUP_CONTEXT LocalContext = {0}; + CXPLAT_HASHTABLE_LOOKUP_CONTEXT LocalContext; CXPLAT_HASHTABLE_LOOKUP_CONTEXT* ContextPtr = NULL; if (Signature == CXPLAT_HASH_RESERVED_SIGNATURE) { @@ -740,6 +773,22 @@ Routine Description: } CxPlatListInsertHead(ContextPtr->PrevLinkage, &Entry->Linkage); + + // + // Expand the table if necessary. + // + if (HashTable->NumEntries > CXPLAT_HASHTABLE_MAX_CHAIN_LENGTH * HashTable->NonEmptyBuckets) { + uint32_t RestructAttempts = CXPLAT_HASHTABLE_MAX_RESIZE_ATTEMPTS; + do { + if (!CxPlatHashTableExpand(HashTable)) { + break; + } + + RestructAttempts--; + + } while ((RestructAttempts > 0) && + (HashTable->NumEntries > CXPLAT_HASHTABLE_MAX_CHAIN_LENGTH * HashTable->NonEmptyBuckets)); + } } void @@ -799,6 +848,30 @@ Routine Description: CXPLAT_DBG_ASSERT(Signature == Context->Signature); } } + +#if CXPLAT_HASHTABLE_CONTRACT_SUPPORT + // + // Contract the table if necessary. + // + uint32_t EmptyBuckets = CxPlatHashtableGetEmptyBuckets(HashTable); + if (EmptyBuckets > + (CXPLAT_HASHTABLE_MAX_EMPTY_BUCKET_PERCENTAGE * HashTable->TableSize / 100)) { + + uint32_t RestructAttempts = CXPLAT_HASHTABLE_MAX_RESIZE_ATTEMPTS; + do { + if (!CxPlatHashTableContract(HashTable)) { + break; + } + + EmptyBuckets = RtlEmptyBucketsHashTable(HashTable); + RestructAttempts--; + + } while ((RestructAttempts > 0) && + (EmptyBuckets > + (CXPLAT_HASHTABLE_MAX_EMPTY_BUCKET_PERCENTAGE * + HashTable->TableSize / 100))); + } +#endif // CXPLAT_HASHTABLE_CONTRACT_SUPPORT } _Must_inspect_result_ @@ -843,7 +916,7 @@ Return Value: CXPLAT_HASHTABLE_LOOKUP_CONTEXT LocalContext; CXPLAT_HASHTABLE_LOOKUP_CONTEXT* ContextPtr = - (Context != NULL) ? Context : &LocalContext; + (Context != NULL) ? Context : &LocalContext; // cppcheck-suppress uninitvar CxPlatPopulateContext(HashTable, ContextPtr, Signature); @@ -1143,8 +1216,6 @@ Routine Description: Enumerator->ChainHead = FALSE; } -#ifdef CXPLAT_HASHTABLE_RESIZE_SUPPORT - BOOLEAN CxPlatHashTableExpand( _Inout_ CXPLAT_HASHTABLE* HashTable @@ -1168,7 +1239,7 @@ CxPlatHashTableExpand( // the hash table is increased by one, the highest bucket index will be the // current table size, which is what we use in the calculations below // - uint32_t FirstLevelIndex, SecondLevelIndex; + uint32_t FirstLevelIndex = 0, SecondLevelIndex; CxPlatComputeDirIndices( HashTable->TableSize, &FirstLevelIndex, &SecondLevelIndex); @@ -1181,9 +1252,11 @@ CxPlatHashTableExpand( CXPLAT_LIST_ENTRY** FirstLevelDir; if (HT_SECOND_LEVEL_DIR_MIN_SIZE == HashTable->TableSize) { - SecondLevelDir = (CXPLAT_LIST_ENTRY*)HashTable->SecondLevelDir; - FirstLevelDir = CXPLAT_ALLOC_NONPAGED(sizeof(CXPLAT_LIST_ENTRY*) * HT_FIRST_LEVEL_DIR_SIZE); - + SecondLevelDir = HashTable->SecondLevelDir; + FirstLevelDir = + CXPLAT_ALLOC_NONPAGED( + sizeof(CXPLAT_LIST_ENTRY*) * HT_FIRST_LEVEL_DIR_SIZE, + QUIC_POOL_HASHTABLE_MEMBER); if (FirstLevelDir == NULL) { return FALSE; } @@ -1207,7 +1280,8 @@ CxPlatHashTableExpand( // SecondLevelDir = CXPLAT_ALLOC_NONPAGED( - CxPlatComputeSecondLevelDirSize(FirstLevelIndex) * sizeof(CXPLAT_LIST_ENTRY)); + CxPlatComputeSecondLevelDirSize(FirstLevelIndex) * sizeof(CXPLAT_LIST_ENTRY), + QUIC_POOL_HASHTABLE_MEMBER); if (NULL == SecondLevelDir) { // @@ -1220,7 +1294,7 @@ CxPlatHashTableExpand( CXPLAT_DBG_ASSERT(FirstLevelIndex == 1); HashTable->SecondLevelDir = FirstLevelDir[0]; - CXPLAT_FREE(FirstLevelDir); + CXPLAT_FREE(FirstLevelDir, QUIC_POOL_HASHTABLE_MEMBER); } return FALSE; @@ -1293,6 +1367,8 @@ CxPlatHashTableExpand( return TRUE; } +#ifdef CXPLAT_HASHTABLE_CONTRACT_SUPPORT + BOOLEAN CxPlatHashTableContract( _Inout_ CXPLAT_HASHTABLE* HashTable @@ -1371,7 +1447,7 @@ CxPlatHashTableContract( // Finally free any extra memory if possible. // - uint32_t FirstLevelIndex, SecondLevelIndex; + uint32_t FirstLevelIndex = 0, SecondLevelIndex; CxPlatComputeDirIndices( HashTable->TableSize, &FirstLevelIndex, &SecondLevelIndex); @@ -1380,7 +1456,7 @@ CxPlatHashTableContract( CXPLAT_LIST_ENTRY** FirstLevelDir = HashTable->FirstLevelDir; CXPLAT_LIST_ENTRY* SecondLevelDir = FirstLevelDir[FirstLevelIndex]; - CXPLAT_FREE(SecondLevelDir); + CXPLAT_FREE(SecondLevelDir, QUIC_POOL_HASHTABLE_MEMBER); FirstLevelDir[FirstLevelIndex] = NULL; // @@ -1389,11 +1465,11 @@ CxPlatHashTableContract( if (HT_SECOND_LEVEL_DIR_MIN_SIZE == HashTable->TableSize) { HashTable->SecondLevelDir = FirstLevelDir[0]; - CXPLAT_FREE(FirstLevelDir); + CXPLAT_FREE(FirstLevelDir, QUIC_POOL_HASHTABLE_MEMBER); } } return TRUE; } -#endif // CXPLAT_HASHTABLE_RESIZE_SUPPORT +#endif // CXPLAT_HASHTABLE_CONTRACT_SUPPORT diff --git a/src/platform/tls_schannel.c b/src/platform/tls_schannel.c index ceb4b0dc76..5472eac756 100644 --- a/src/platform/tls_schannel.c +++ b/src/platform/tls_schannel.c @@ -329,14 +329,12 @@ typedef struct _SecPkgContext_ConnectionInfo #if (defined(QUIC_GAMECORE_BUILD)) #include -#ifdef NTDDI_WIN10_CO typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } UNICODE_STRING, *PUNICODE_STRING; #endif -#endif #include diff --git a/src/plugins/trace/dll/DataModel/QuicEvents.cs b/src/plugins/trace/dll/DataModel/QuicEvents.cs index 28ed6cf611..2142ce9511 100644 --- a/src/plugins/trace/dll/DataModel/QuicEvents.cs +++ b/src/plugins/trace/dll/DataModel/QuicEvents.cs @@ -94,7 +94,7 @@ public enum QuicErrorCode TLS_CERTIFICATE_REQUIRED = 0x174, TLS_NO_APPLICATION_PROTOCOL = 0x178, - QUIC_VERSION_NEGOTIATION_ERROR = 0x53F8 + QUIC_VERSION_NEGOTIATION_ERROR = 0x11 } public enum QuicExecutionType diff --git a/src/test/lib/ApiTest.cpp b/src/test/lib/ApiTest.cpp index a31eaf2a90..698c05b22f 100644 --- a/src/test/lib/ApiTest.cpp +++ b/src/test/lib/ApiTest.cpp @@ -2171,7 +2171,7 @@ void QuicTestGlobalParam() // in src/core/packet.h QUIC_VERSION_INFO and QuicSupportedVersionList are defined // but dependency issue happen when including it. // sizeof(QUIC_VERSION_INFO[4]) is 88 * 4 - SimpleGetParamTest(nullptr, QUIC_PARAM_GLOBAL_SUPPORTED_VERSIONS, 88 * 4, nullptr); + SimpleGetParamTest(nullptr, QUIC_PARAM_GLOBAL_SUPPORTED_VERSIONS, 88 * 4, nullptr, true); } // @@ -2237,7 +2237,7 @@ void QuicTestGlobalParam() TestScopeLogger LogScope1("GetParam"); { int64_t Buffer[QUIC_PERF_COUNTER_MAX] = {}; - SimpleGetParamTest(nullptr, QUIC_PARAM_GLOBAL_PERF_COUNTERS, QUIC_PERF_COUNTER_MAX * sizeof(int64_t), &Buffer); + SimpleGetParamTest(nullptr, QUIC_PARAM_GLOBAL_PERF_COUNTERS, QUIC_PERF_COUNTER_MAX * sizeof(int64_t), &Buffer, true); } // @@ -2340,7 +2340,7 @@ void QuicTestGlobalParam() { TestScopeLogger LogScope1("GetParam"); - SimpleGetParamTest(nullptr, QUIC_PARAM_GLOBAL_SETTINGS, sizeof(QUIC_SETTINGS), nullptr); + SimpleGetParamTest(nullptr, QUIC_PARAM_GLOBAL_SETTINGS, sizeof(QUIC_SETTINGS), nullptr, true); } } @@ -2707,6 +2707,9 @@ void QuicTestRegistrationParam() } } +#define SETTINGS_SIZE_THRU_FIELD(SettingsType, Field) \ + (FIELD_OFFSET(SettingsType, Field) + sizeof(((SettingsType*)0)->Field)) + void QuicTestConfigurationParam() { MsQuicRegistration Registration; @@ -2760,7 +2763,17 @@ void QuicTestConfigurationParam() QUIC_PARAM_CONFIGURATION_SETTINGS, &Length, nullptr)); - TEST_EQUAL(Length, sizeof(QUIC_SETTINGS)); + TEST_TRUE(Length >= sizeof(QUIC_SETTINGS)); + + Length = 1; + TEST_QUIC_STATUS( + QUIC_STATUS_BUFFER_TOO_SMALL, + MsQuic->GetParam( + Configuration.Handle, + QUIC_PARAM_CONFIGURATION_SETTINGS, + &Length, + nullptr)); + TEST_EQUAL(Length, SETTINGS_SIZE_THRU_FIELD(QUIC_SETTINGS, MtuDiscoveryMissingProbeCount)); QUIC_SETTINGS Settings{0}; TEST_QUIC_SUCCEEDED( @@ -3517,7 +3530,7 @@ void QuicTestConnectionParam() TestScopeLogger LogScope1("GetParam"); MsQuicConnection Connection(Registration); TEST_QUIC_SUCCEEDED(Connection.GetInitStatus()); - SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_SETTINGS, sizeof(QUIC_SETTINGS), nullptr); + SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_SETTINGS, sizeof(QUIC_SETTINGS), nullptr, true); } } @@ -3546,7 +3559,7 @@ void QuicTestConnectionParam() TestScopeLogger LogScope1("GetParam"); MsQuicConnection Connection(Registration); TEST_QUIC_SUCCEEDED(Connection.GetInitStatus()); - SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_STATISTICS, sizeof(QUIC_STATISTICS), nullptr); + SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_STATISTICS, sizeof(QUIC_STATISTICS), nullptr, true); } } @@ -3575,7 +3588,7 @@ void QuicTestConnectionParam() TestScopeLogger LogScope1("GetParam"); MsQuicConnection Connection(Registration); TEST_QUIC_SUCCEEDED(Connection.GetInitStatus()); - SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_STATISTICS_PLAT, sizeof(QUIC_STATISTICS), nullptr); + SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_STATISTICS_PLAT, sizeof(QUIC_STATISTICS), nullptr, true); } } @@ -4199,7 +4212,7 @@ void QuicTestConnectionParam() TestScopeLogger LogScope1("GetParam"); MsQuicConnection Connection(Registration); TEST_QUIC_SUCCEEDED(Connection.GetInitStatus()); - SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_STATISTICS_V2, sizeof(QUIC_STATISTICS_V2), nullptr); + SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_STATISTICS_V2, sizeof(QUIC_STATISTICS_V2), nullptr, true); } } @@ -4225,7 +4238,7 @@ void QuicTestConnectionParam() TestScopeLogger LogScope1("GetParam"); MsQuicConnection Connection(Registration); TEST_QUIC_SUCCEEDED(Connection.GetInitStatus()); - SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_STATISTICS_V2_PLAT, sizeof(QUIC_STATISTICS_V2), nullptr); + SimpleGetParamTest(Connection.Handle, QUIC_PARAM_CONN_STATISTICS_V2_PLAT, sizeof(QUIC_STATISTICS_V2), nullptr, true); } } } diff --git a/src/test/lib/TestHelpers.h b/src/test/lib/TestHelpers.h index 25c9db2edb..049e2c394b 100644 --- a/src/test/lib/TestHelpers.h +++ b/src/test/lib/TestHelpers.h @@ -146,7 +146,7 @@ void SimulateConnBadStartState(MsQuicConnection& Connection, MsQuicConfiguration // 3. call again to get actual value in Buffer // inline -void SimpleGetParamTest(HQUIC Handle, uint32_t Param, size_t ExpectedLength, void* ExpectedData) { +void SimpleGetParamTest(HQUIC Handle, uint32_t Param, size_t ExpectedLength, void* ExpectedData, bool GreaterOrEqualLength = false) { uint32_t Length = 0; TEST_QUIC_STATUS( QUIC_STATUS_BUFFER_TOO_SMALL, @@ -155,8 +155,19 @@ void SimpleGetParamTest(HQUIC Handle, uint32_t Param, size_t ExpectedLength, voi Param, &Length, nullptr)); - TEST_EQUAL(ExpectedLength, Length); + if (GreaterOrEqualLength) { + if (Length < ExpectedLength) { + TEST_FAILURE("ExpectedLength (%u) > Length (%u)", ExpectedLength, Length); + return; + } + } else { + if (ExpectedLength != Length) { + TEST_FAILURE("ExpectedLength (%u) != Length (%u)", ExpectedLength, Length); + return; + } + } + Length = (uint32_t)ExpectedLength; // Only query the expected size, which might be less. void* Value = CXPLAT_ALLOC_NONPAGED(Length, QUIC_POOL_TEST); if (Value == nullptr) { TEST_FAILURE("Out of memory for testing SetParam for global parameter");