<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/58248ca252e65f6733c683ccdc04966b0206acfc">https://github.com/macports/macports-ports/commit/58248ca252e65f6733c683ccdc04966b0206acfc</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 58248ca252e65f6733c683ccdc04966b0206acfc
</span>Author: Sergey Fedorov <barracuda@macos-powerpc.org>
AuthorDate: Sat Jun 8 16:35:26 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    fizz: update to 2024.06.03.00
</span>---
 devel/fizz/Portfile                                |  21 ++--
 ...-b64-encoded-ECH-Config-List-in-fizz-clie.patch | 129 ---------------------
 ...-235358c8b2e613b85d47b2088c21f7bd344910ec.patch | 104 -----------------
 .../3fc48355eb4a8d86f1fb8818ac6009a489156956.patch |  49 ++++++++
 4 files changed, 58 insertions(+), 245 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/fizz/Portfile b/devel/fizz/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index eaef77e5db3..b139c771116 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/fizz/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/fizz/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -13,11 +13,11 @@ legacysupport.newest_darwin_requires_legacy 10
</span> 
 boost.version       1.81
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup        facebookincubator fizz 2024.01.22.00 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        facebookincubator fizz 2024.06.03.00 v
</span> revision            0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums           rmd160  0ee5499538022431f588c0c17b18695f1d867e68 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    sha256  52781edd21618dc6ff4c65c5be9b7b674cc6b9c33dbd688f9bbf2360894f505f \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    size    681625
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  e766d7f41ceed942e92b01f26ba1d32d5dd9689c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  cd56534020ab07f8f638c206d2a13089bb021f4656992e4a6c04fda75930de21 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    743365
</span> 
 categories          devel
 license             BSD
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -40,6 +40,7 @@ depends_lib-append  port:bzip2 \
</span>                     port:gflags \
                     port:google-glog \
                     port:libevent \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:liboqs \
</span>                     port:libsodium \
                     port:libunwind \
                     port:lz4 \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -49,14 +50,8 @@ depends_lib-append  port:bzip2 \
</span> 
 cmake.source_dir    ${worksrcpath}/${name}
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Confirmed to fail both on powerpc and i386
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# if libstdc++ with gcc are used.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# https://github.com/facebookincubator/fizz/issues/109
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${configure.cxx_stdlib} ne "libc++"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    patchfiles-append \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    0001-Revert-Read-b64-encoded-ECH-Config-List-in-fizz-clie.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    0002-Revert-235358c8b2e613b85d47b2088c21f7bd344910ec.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Undefined symbols: "__ZTVN4fizz7openssl20OpenSSLECKeyExchangeE"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   3fc48355eb4a8d86f1fb8818ac6009a489156956.patch
</span> 
 # Fix error: invalid output constraint '=@ccc' in asm
 compiler.blacklist-append \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -69,6 +64,8 @@ configure.args-append \
</span>                     -DBUILD_TESTS=OFF \
                     -DBUILD_SHARED_LIBS=ON
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# There is a configure check, but it is broken:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/facebookincubator/fizz/issues/139
</span> if {[string match *gcc* ${configure.compiler}]} {
     # ___atomic_fetch_add_8
     configure.ldflags-append  -latomic
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/fizz/files/0001-Revert-Read-b64-encoded-ECH-Config-List-in-fizz-clie.patch b/devel/fizz/files/0001-Revert-Read-b64-encoded-ECH-Config-List-in-fizz-clie.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 4fb00362ba3..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/fizz/files/0001-Revert-Read-b64-encoded-ECH-Config-List-in-fizz-clie.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,129 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This fails to build, so for now revert until fixed properly.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From ab7f198d2edb9494e45800e401d43be1ed7ff168 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 12 Jan 2024 09:34:52 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Revert "Read b64 encoded ECH Config List in fizz client
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- command tool"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-This reverts commit 6efc106e48e4f7d9c63f7b52b14e596fe8b7c741.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fizz/tool/FizzCommandCommon.cpp          | 24 +++-------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fizz/tool/FizzCommandCommon.h            | 11 ----------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fizz/tool/test/FizzCommandCommonTest.cpp | 26 ------------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 3 files changed, 3 insertions(+), 58 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git fizz/tool/FizzCommandCommon.cpp fizz/tool/FizzCommandCommon.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index b4d188cc..39d6e6a1 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- fizz/tool/FizzCommandCommon.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ fizz/tool/FizzCommandCommon.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -14,7 +14,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <fizz/tool/FizzCommandCommon.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <folly/FileUtil.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <folly/String.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--#include <folly/base64.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <fstream>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -144,20 +143,15 @@ hpke::KEMId getKEMId(std::string kemStr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   throw std::runtime_error("Input doesn't match any KEM id");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--std::string tryReadFile(const std::string& echFile) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+folly::Optional<folly::dynamic> readECHConfigsJson(std::string echFile) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (echFile.empty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     throw std::runtime_error("No file provided");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  std::string echConfigStr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (!folly::readFile(echFile.c_str(), echConfigStr)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  std::string echConfigJson;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (!folly::readFile(echFile.c_str(), echConfigJson)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     throw std::runtime_error("Unable to read file provided");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  return echConfigStr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--folly::Optional<folly::dynamic> readECHConfigsJson(std::string echFile) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  auto echConfigJson = tryReadFile(echFile);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   auto json = folly::parseJson(echConfigJson);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (!json.isObject()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -170,18 +164,6 @@ folly::Optional<folly::dynamic> readECHConfigsJson(std::string echFile) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   return json;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--folly::Optional<ech::ECHConfigList> parseECHConfigsBase64(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    std::string echConfigListBase64) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  std::vector<ech::ECHConfig> echConfigs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  echConfigListBase64.erase(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      std::remove(echConfigListBase64.begin(), echConfigListBase64.end(), '\n'),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      echConfigListBase64.cend());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  auto configBuf =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      folly::IOBuf::copyBuffer(folly::base64Decode(echConfigListBase64));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  folly::io::Cursor cursor(configBuf.get());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  return decode<ech::ECHConfigList>(cursor);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly::Optional<ech::ECHConfigList> parseECHConfigs(folly::dynamic json) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   auto getKDFId = [](std::string kdfStr) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (kdfStr == "Sha256") {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git fizz/tool/FizzCommandCommon.h fizz/tool/FizzCommandCommon.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index dbc1af7f..7f024999 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- fizz/tool/FizzCommandCommon.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ fizz/tool/FizzCommandCommon.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -35,17 +35,6 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- namespace fizz {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- namespace tool {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--std::string tryReadFile(const std::string& echFile);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--/** Parses base64 encoded ECH config list.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- * @param echConfigListBase64 ECH config list encoded in base64. It must use
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- * the format specified in the ECH RFC
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- *(https://www.ietf.org/archive/id/draft-ietf-tls-esni-16.html#name-encrypted-clienthello-confi)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- * @return Parsed ECH config list.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- **/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--folly::Optional<ech::ECHConfigList> parseECHConfigsBase64(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    std::string echConfigListBase64);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly::Optional<ech::ECHConfigList> parseECHConfigs(folly::dynamic json);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- folly::Optional<folly::dynamic> readECHConfigsJson(std::string echFile);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git fizz/tool/test/FizzCommandCommonTest.cpp fizz/tool/test/FizzCommandCommonTest.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 59689964..bab9e227 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- fizz/tool/test/FizzCommandCommonTest.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ fizz/tool/test/FizzCommandCommonTest.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -17,32 +17,6 @@ namespace fizz {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- namespace tool {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- namespace test {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--TEST(FizzCommandCommonTest, TestParseECHConfigsBase64) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  auto echConfig64 =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      "AEj+DQBEAQAgACAX5SnnUbopIr5I/MqIqLWuSAZckHI2sR+aIr0slN2uGAAEAAEAAWQVZWNoLXB1YmxpYy5hdG1ldGEuY29tAAA=";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  auto expectedPubKey =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      "17e529e751ba2922be48fcca88a8b5ae48065c907236b11f9a22bd2c94ddae18";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  auto echConfigs = parseECHConfigsBase64(echConfig64);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ASSERT_EQ(echConfigs->configs.size(), 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  auto firstConfig = echConfigs->configs[0];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ASSERT_EQ(firstConfig.version, ech::ECHVersion::Draft15);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  folly::io::Cursor cursor(firstConfig.ech_config_content.get());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  auto echConfigContent = decode<ech::ECHConfigContentDraft>(cursor);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ASSERT_TRUE(folly::IOBufEqualTo()(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      echConfigContent.public_name,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      folly::IOBuf::copyBuffer("ech-public.atmeta.com")));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ASSERT_EQ(echConfigContent.key_config.kem_id, hpke::KEMId::x25519);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ASSERT_EQ(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      echConfigContent.key_config.cipher_suites[0].kdf_id, hpke::KDFId::Sha256);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ASSERT_EQ(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      echConfigContent.key_config.cipher_suites[0].aead_id,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      hpke::AeadId::TLS_AES_128_GCM_SHA256);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ASSERT_EQ(echConfigContent.maximum_name_length, 100);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  ASSERT_TRUE(folly::IOBufEqualTo()(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      echConfigContent.key_config.public_key,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      folly::IOBuf::copyBuffer(folly::unhexlify(expectedPubKey))));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- TEST(FizzCommandCommonTest, TestValidHostPortFromString) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   struct ExpectedValues {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     std::string input;
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/fizz/files/0002-Revert-235358c8b2e613b85d47b2088c21f7bd344910ec.patch b/devel/fizz/files/0002-Revert-235358c8b2e613b85d47b2088c21f7bd344910ec.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index f4f5fbc6b2a..00000000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/devel/fizz/files/0002-Revert-235358c8b2e613b85d47b2088c21f7bd344910ec.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,104 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From 8da95253f706a9de52c3d89b2d5a1488815d14ff Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-From: Sergey Fedorov <vital.had@gmail.com>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Date: Fri, 12 Jan 2024 09:57:06 +0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-Subject: [PATCH] Revert 235358c8b2e613b85d47b2088c21f7bd344910ec
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>----
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fizz/tool/FizzClientCommand.cpp | 32 +++++++++-----------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- fizz/tool/FizzServerCommand.cpp |  4 ++--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 2 files changed, 11 insertions(+), 25 deletions(-)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git fizz/tool/FizzClientCommand.cpp fizz/tool/FizzClientCommand.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 02ee86a4..69eb31de 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- fizz/tool/FizzClientCommand.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ fizz/tool/FizzClientCommand.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -83,8 +83,6 @@ void printUsage() {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     << "                          (JSON format: {echconfigs: [${your ECH config here with all the fields..}]})\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     << "                          (See FizzCommandCommonTest for an example.)\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     << "                          (Note: Setting ech configs implicitly enables ECH.)\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    << " -echbase64 echConfigList (base64 encoded string of echconfigs.)"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    << "                          (The echconfigs file argument must match the ECH Config List format specified in the ECH RFC.)\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef FIZZ_TOOL_ENABLE_OQS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     << " -hybridkex               (Use experimental hybrid key exchange. Currently the only supported named groups under\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     << "                          this mode are secp384r1_bikel3 and secp521r1_x25519)\n"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -542,7 +540,6 @@ int fizzClientCommand(const std::vector<std::string>& args) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool delegatedCredentials = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool ech = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   std::string echConfigsFile;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  std::string echConfigsBase64;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool uring = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool uringAsync = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   bool uringRegisterFds = false;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -616,9 +613,6 @@ int fizzClientCommand(const std::vector<std::string>& args) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }}},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     {"-echconfigs", {true, [&echConfigsFile](const std::string& arg) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-         echConfigsFile = arg;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }}},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    {"-echbase64", {true, [&echConfigsBase64](const std::string& arg) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--        echConfigsBase64 = arg;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }}}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef FIZZ_TOOL_ENABLE_OQS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     ,{"-hybridkex", {false, [&useHybridKexFactory](const std::string&) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -794,26 +788,22 @@ int fizzClientCommand(const std::vector<std::string>& args) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-             clientContext->getSupportedSigSchemes());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  folly::Optional<ech::ECHConfigList> echConfigList = folly::none;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  folly::Optional<std::vector<ech::ECHConfig>> echConfigs = folly::none;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (ech) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     // Use default ECH config values.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    auto echConfigContents = getDefaultECHConfigs();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    echConfigList->configs = std::move(echConfigContents);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  } else if (!echConfigsBase64.empty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    echConfigList = parseECHConfigsBase64(echConfigsBase64);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (!echConfigList.has_value()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      LOG(ERROR) << "Unable to parse ECHConfigList base64.";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--      return 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  } else if (!echConfigsFile.empty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    echConfigs = getDefaultECHConfigs();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  if (!echConfigsFile.empty()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    // Parse user set ECH configs.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     auto echConfigsJson = readECHConfigsJson(echConfigsFile);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     if (!echConfigsJson.has_value()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       LOG(ERROR) << "Unable to load ECH configs from json file";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    echConfigList = parseECHConfigs(echConfigsJson.value());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    if (!echConfigList.has_value()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    auto gotECHConfigs = parseECHConfigs(echConfigsJson.value());
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!gotECHConfigs.has_value()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       LOG(ERROR)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           << "Unable to parse JSON file and make ECH config."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           << "Ensure the format matches what is expected."
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -821,11 +811,7 @@ int fizzClientCommand(const std::vector<std::string>& args) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           << "See FizzCommandCommonTest for a more concrete example.";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-       return 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  folly::Optional<std::vector<ech::ECHConfig>> echConfigs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  if (echConfigList.has_value()) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--    echConfigs = std::move(echConfigList->configs);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    echConfigs = std::move(gotECHConfigs.value().configs);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   try {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git fizz/tool/FizzServerCommand.cpp fizz/tool/FizzServerCommand.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index e2da1621..18fd0e26 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- fizz/tool/FizzServerCommand.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ fizz/tool/FizzServerCommand.cpp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -597,8 +597,8 @@ std::shared_ptr<ech::Decrypter> setupDecrypterFromInputs(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   std::string privKeyStrHex;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   folly::readFile(echPrivateKeyFile.c_str(), privKeyStrHex);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--  folly::ByteRange privKeyBuf(folly::trimWhitespace(privKeyStrHex));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  auto privKeyStr = folly::unhexlify(privKeyStrHex);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  folly::ByteRange privKeyBuf((folly::StringPiece(privKeyStr)));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   // Create a key exchange and set the private key
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   auto kexWithPrivateKey =
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/devel/fizz/files/3fc48355eb4a8d86f1fb8818ac6009a489156956.patch b/devel/fizz/files/3fc48355eb4a8d86f1fb8818ac6009a489156956.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..db7c4610a77
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/devel/fizz/files/3fc48355eb4a8d86f1fb8818ac6009a489156956.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,49 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 3fc48355eb4a8d86f1fb8818ac6009a489156956 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Paul Cruz <paulcruz74@meta.com>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Mon, 3 Jun 2024 14:27:54 -0700
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Add OpenSSLKeyExchange.cpp to Cmake sources
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Summary:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Context: FBOSS OSS builds depend on fizz and are currently failing with the following error message:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/bin/ld: /data/sandcastle/temp/skycastle/fbcode_builder_getdeps/installed/fizz/lib/libfizz.a(FizzUtil.cpp.o): in function `std::_MakeUniq<fizz::openssl::OpenSSLECKeyExchange>::__single_object std::make_unique<fizz::openssl::OpenSSLECKeyExchange, int const&, int const&>(int const&, int const&) [clone .isra.0]':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FizzUtil.cpp:(.text+0x15c): undefined reference to `vtable for fizz::openssl::OpenSSLECKeyExchange'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/bin/ld: /data/sandcastle/temp/skycastle/fbcode_builder_getdeps/installed/fizz/lib/libfizz.a(FizzUtil.cpp.o): in function `fizz::FizzUtil::createKeyExchangeFromBuf(fizz::hpke::KEMId, folly::Range<unsigned char const*>)':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FizzUtil.cpp:(.text+0xc88): undefined reference to `fizz::openssl::OpenSSLECKeyExchange::setPrivateKey(std::unique_ptr<evp_pkey_st, folly::static_function_deleter<evp_pkey_st, &EVP_PKEY_free> >)'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/bin/ld: FizzUtil.cpp:(.text+0xcea): undefined reference to `fizz::openssl::OpenSSLECKeyExchange::setPrivateKey(std::unique_ptr<evp_pkey_st, folly::static_function_deleter<evp_pkey_st, &EVP_PKEY_free> >)'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/bin/ld: FizzUtil.cpp:(.text+0xd49): undefined reference to `fizz::openssl::OpenSSLECKeyExchange::setPrivateKey(std::unique_ptr<evp_pkey_st, folly::static_function_deleter<evp_pkey_st, &EVP_PKEY_free> >)'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/bin/ld: /data/sandcastle/temp/skycastle/fbcode_builder_getdeps/installed/fizz/lib/libfizz.a(OpenSSLFactory.cpp.o): in function `std::_MakeUniq<fizz::openssl::OpenSSLECKeyExchange>::__single_object std::make_unique<fizz::openssl::OpenSSLECKeyExchange, int const&, int const&>(int const&, int const&) [clone .isra.0]':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+OpenSSLFactory.cpp:(.text+0x1b7): undefined reference to `vtable for fizz::openssl::OpenSSLECKeyExchange'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/bin/ld: /data/sandcastle/temp/skycastle/fbcode_builder_getdeps/installed/fizz/lib/libfizz.a(Utils.cpp.o): in function `std::_MakeUniq<fizz::openssl::OpenSSLECKeyExchange>::__single_object std::make_unique<fizz::openssl::OpenSSLECKeyExchange, int const&, int const&>(int const&, int const&) [clone .isra.0]':
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Utils.cpp:(.text+0x18): undefined reference to `vtable for fizz::openssl::OpenSSLECKeyExchange'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+collect2: error: ld returned 1 exit status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+[1064/1080] Building CXX object CMakeFiles/fsdb_handler.dir/fboss/fsdb/server/ServiceHandler.cpp.o
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+FAILED: CMakeFiles/fsdb_handler.dir/fboss/fsdb/server/ServiceHandler.cpp.o
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+```
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+taken from: https://www.internalfb.com/sandcastle/job/18014399822757787?no_redirect=true
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+This seems to be caused by the fact that OpenSSLKeyExchange.cpp was recently added, but was not added to the OSS build via CMakeLists.txt, so we add it in this PR.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Reviewed By: zalecodez
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Differential Revision: D58099797
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+fbshipit-source-id: 2dcb05192f796a087786c34f3280f8996157f612
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fizz/CMakeLists.txt | 1 +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/fizz/CMakeLists.txt b/fizz/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 574f9aa381..0c292004eb 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- fizz/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ fizz/CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -192,6 +192,7 @@ set(FIZZ_SOURCES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   crypto/hpke/Hpke.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   crypto/hpke/Utils.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   backend/openssl/crypto/OpenSSLKeyUtils.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  backend/openssl/crypto/exchange/OpenSSLKeyExchange.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   record/Types.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   record/RecordLayer.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   record/EncryptedRecordLayer.cpp
</span></pre><pre style='margin:0'>

</pre>