diff options
author | Tink Team <tink-dev@google.com> | 2021-09-01 05:45:27 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2021-09-01 05:46:25 -0700 |
commit | 70a0e55376a879011540bcdf96dd6a9dfd6517bc (patch) | |
tree | 901091cbc781ff0ec8263ca67b56eb9547d99d39 /cc/experimental | |
parent | 86ee8737b44b5383c3ecd3346334fd3a360afad2 (diff) | |
download | tink-70a0e55376a879011540bcdf96dd6a9dfd6517bc.tar.gz |
Add AES versions of dilithium to the subtle wrappers.
PiperOrigin-RevId: 394210115
Diffstat (limited to 'cc/experimental')
12 files changed, 1481 insertions, 725 deletions
diff --git a/cc/experimental/pqcrypto/signature/dilithium_sign_key_manager.cc b/cc/experimental/pqcrypto/signature/dilithium_sign_key_manager.cc index 46087c07c..fc3e92bd0 100644 --- a/cc/experimental/pqcrypto/signature/dilithium_sign_key_manager.cc +++ b/cc/experimental/pqcrypto/signature/dilithium_sign_key_manager.cc @@ -57,8 +57,9 @@ StatusOr<DilithiumPrivateKey> DilithiumSignKeyManager::CreateKey( util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(key_format.key_size()); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + key_format.key_size(), + subtle::DilithiumSeedExpansion::SHAKE_SEED_EXPANSION); if (!key_pair.status().ok()) { return key_pair.status(); } @@ -77,7 +78,8 @@ DilithiumSignKeyManager::PublicKeySignFactory::Create( util::SecretDataFromStringView(private_key.key_value()); util::StatusOr<DilithiumPrivateKeyPqclean> dilithium_private_key = - DilithiumPrivateKeyPqclean::NewPrivateKey(sk_data); + DilithiumPrivateKeyPqclean::NewPrivateKey( + sk_data, subtle::DilithiumSeedExpansion::SHAKE_SEED_EXPANSION); if (!dilithium_private_key.ok()) return dilithium_private_key.status(); diff --git a/cc/experimental/pqcrypto/signature/dilithium_sign_key_manager_test.cc b/cc/experimental/pqcrypto/signature/dilithium_sign_key_manager_test.cc index ad15e8b33..c92f26271 100644 --- a/cc/experimental/pqcrypto/signature/dilithium_sign_key_manager_test.cc +++ b/cc/experimental/pqcrypto/signature/dilithium_sign_key_manager_test.cc @@ -167,7 +167,8 @@ TEST_P(DilithiumSignKeyManagerTest, Create) { util::StatusOr<DilithiumPublicKeyPqclean> dilithium_public_key = DilithiumPublicKeyPqclean::NewPublicKey( - private_key->public_key().key_value()); + private_key->public_key().key_value(), + subtle::DilithiumSeedExpansion::SHAKE_SEED_EXPANSION); util::StatusOr<std::unique_ptr<PublicKeyVerify>> verifier = subtle::DilithiumAvx2Verify::New(*dilithium_public_key); @@ -195,7 +196,9 @@ TEST_P(DilithiumSignKeyManagerTest, CreateDifferentKey) { std::string bad_public_key_data(test_case.public_key_size, '@'); util::StatusOr<DilithiumPublicKeyPqclean> dilithium_public_key = - DilithiumPublicKeyPqclean::NewPublicKey(bad_public_key_data); + DilithiumPublicKeyPqclean::NewPublicKey( + bad_public_key_data, + subtle::DilithiumSeedExpansion::SHAKE_SEED_EXPANSION); util::StatusOr<std::unique_ptr<PublicKeyVerify>> verifier = subtle::DilithiumAvx2Verify::New(*dilithium_public_key); ASSERT_THAT(verifier.status(), IsOk()); diff --git a/cc/experimental/pqcrypto/signature/dilithium_verify_key_manager.cc b/cc/experimental/pqcrypto/signature/dilithium_verify_key_manager.cc index 134403e1a..cfba6ca1b 100644 --- a/cc/experimental/pqcrypto/signature/dilithium_verify_key_manager.cc +++ b/cc/experimental/pqcrypto/signature/dilithium_verify_key_manager.cc @@ -48,7 +48,9 @@ StatusOr<std::unique_ptr<PublicKeyVerify>> DilithiumVerifyKeyManager::PublicKeyVerifyFactory::Create( const DilithiumPublicKey& public_key) const { util::StatusOr<DilithiumPublicKeyPqclean> dilithium_public_key = - DilithiumPublicKeyPqclean::NewPublicKey(public_key.key_value()); + DilithiumPublicKeyPqclean::NewPublicKey( + public_key.key_value(), + subtle::DilithiumSeedExpansion::SHAKE_SEED_EXPANSION); if (!dilithium_public_key.ok()) return dilithium_public_key.status(); diff --git a/cc/experimental/pqcrypto/signature/dilithium_verify_key_manager_test.cc b/cc/experimental/pqcrypto/signature/dilithium_verify_key_manager_test.cc index 478577063..8ca697cbc 100644 --- a/cc/experimental/pqcrypto/signature/dilithium_verify_key_manager_test.cc +++ b/cc/experimental/pqcrypto/signature/dilithium_verify_key_manager_test.cc @@ -138,7 +138,8 @@ TEST_P(DilithiumVerifyKeyManagerTest, Create) { util::StatusOr<DilithiumPrivateKeyPqclean> dilithium_private_key = DilithiumPrivateKeyPqclean::NewPrivateKey( - util::SecretDataFromStringView(private_key->key_value())); + util::SecretDataFromStringView(private_key->key_value()), + subtle::DilithiumSeedExpansion::SHAKE_SEED_EXPANSION); ASSERT_THAT(dilithium_private_key.status(), IsOk()); util::StatusOr<std::unique_ptr<PublicKeySign>> direct_signer = @@ -172,7 +173,8 @@ TEST_P(DilithiumVerifyKeyManagerTest, CreateDifferentPublicKey) { util::StatusOr<DilithiumPrivateKeyPqclean> dilithium_private_key = DilithiumPrivateKeyPqclean::NewPrivateKey( - util::SecretDataFromStringView(private_key->key_value())); + util::SecretDataFromStringView(private_key->key_value()), + subtle::DilithiumSeedExpansion::SHAKE_SEED_EXPANSION); ASSERT_THAT(dilithium_private_key.status(), IsOk()); util::StatusOr<std::unique_ptr<PublicKeySign>> direct_signer = diff --git a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign.cc b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign.cc index f10bbd5f8..8d01c3160 100644 --- a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign.cc +++ b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign.cc @@ -26,13 +26,17 @@ #include "absl/memory/memory.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" +#include "tink/experimental/pqcrypto/signature/subtle/dilithium_key.h" #include "tink/public_key_sign.h" #include "tink/util/statusor.h" extern "C" { #include "third_party/pqclean/crypto_sign/dilithium2/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium2aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium3/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium3aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium5/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium5aes/avx2/api.h" } namespace crypto { @@ -45,7 +49,7 @@ util::StatusOr<std::unique_ptr<PublicKeySign>> DilithiumAvx2Sign::New( auto status = internal::CheckFipsCompatibility<DilithiumAvx2Sign>(); if (!status.ok()) return status; - uint32 key_size = private_key.GetKeyData().size(); + int32_t key_size = private_key.GetKeyData().size(); if (key_size != PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES && key_size != PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES && @@ -66,40 +70,78 @@ util::StatusOr<std::unique_ptr<PublicKeySign>> DilithiumAvx2Sign::New( util::StatusOr<std::string> DilithiumAvx2Sign::Sign( absl::string_view data) const { size_t sig_length; - uint32 key_size = private_key_.GetKeyData().size(); + int32_t key_size = private_key_.GetKeyData().size(); std::string signature; + int result = 1; switch (key_size) { case PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES: { - signature.resize(PQCLEAN_DILITHIUM2_AVX2_CRYPTO_BYTES, '0'); - if (PQCLEAN_DILITHIUM2_AVX2_crypto_sign_signature( + switch (private_key_.GetSeedExpansion()) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + signature.resize(PQCLEAN_DILITHIUM2AES_AVX2_CRYPTO_BYTES, '0'); + result = PQCLEAN_DILITHIUM2AES_AVX2_crypto_sign_signature( reinterpret_cast<uint8_t *>(signature.data()), &sig_length, reinterpret_cast<const uint8_t *>(data.data()), data.size(), reinterpret_cast<const uint8_t *>( - private_key_.GetKeyData().data())) != 0) { - return util::Status(util::error::INTERNAL, "Signing failed."); + private_key_.GetKeyData().data())); + break; + } + default: { + signature.resize(PQCLEAN_DILITHIUM2_AVX2_CRYPTO_BYTES, '0'); + result = PQCLEAN_DILITHIUM2_AVX2_crypto_sign_signature( + reinterpret_cast<uint8_t *>(signature.data()), &sig_length, + reinterpret_cast<const uint8_t *>(data.data()), data.size(), + reinterpret_cast<const uint8_t *>( + private_key_.GetKeyData().data())); + + break; + } } break; } case PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES: { - signature.resize(PQCLEAN_DILITHIUM3_AVX2_CRYPTO_BYTES, '0'); - if (PQCLEAN_DILITHIUM3_AVX2_crypto_sign_signature( + switch (private_key_.GetSeedExpansion()) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + signature.resize(PQCLEAN_DILITHIUM3AES_AVX2_CRYPTO_BYTES, '0'); + result = PQCLEAN_DILITHIUM3AES_AVX2_crypto_sign_signature( + reinterpret_cast<uint8_t *>(signature.data()), &sig_length, + reinterpret_cast<const uint8_t *>(data.data()), data.size(), + reinterpret_cast<const uint8_t *>( + private_key_.GetKeyData().data())); + break; + } + default: { + signature.resize(PQCLEAN_DILITHIUM3_AVX2_CRYPTO_BYTES, '0'); + result = PQCLEAN_DILITHIUM3_AVX2_crypto_sign_signature( reinterpret_cast<uint8_t *>(signature.data()), &sig_length, reinterpret_cast<const uint8_t *>(data.data()), data.size(), reinterpret_cast<const uint8_t *>( - private_key_.GetKeyData().data())) != 0) { - return util::Status(util::error::INTERNAL, "Signing failed."); + private_key_.GetKeyData().data())); + break; + } } break; } case PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES: { - signature.resize(PQCLEAN_DILITHIUM5_AVX2_CRYPTO_BYTES, '0'); - if (PQCLEAN_DILITHIUM5_AVX2_crypto_sign_signature( + switch (private_key_.GetSeedExpansion()) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + signature.resize(PQCLEAN_DILITHIUM5AES_AVX2_CRYPTO_BYTES, '0'); + result = PQCLEAN_DILITHIUM5AES_AVX2_crypto_sign_signature( + reinterpret_cast<uint8_t *>(signature.data()), &sig_length, + reinterpret_cast<const uint8_t *>(data.data()), data.size(), + reinterpret_cast<const uint8_t *>( + private_key_.GetKeyData().data())); + break; + } + default: { + signature.resize(PQCLEAN_DILITHIUM5_AVX2_CRYPTO_BYTES, '0'); + result = PQCLEAN_DILITHIUM5_AVX2_crypto_sign_signature( reinterpret_cast<uint8_t *>(signature.data()), &sig_length, reinterpret_cast<const uint8_t *>(data.data()), data.size(), reinterpret_cast<const uint8_t *>( - private_key_.GetKeyData().data())) != 0) { - return util::Status(util::error::INTERNAL, "Signing failed."); + private_key_.GetKeyData().data())); + break; + } } break; } @@ -107,6 +149,10 @@ util::StatusOr<std::string> DilithiumAvx2Sign::Sign( return util::Status(util::error::INTERNAL, "Invalid keysize."); } + if (result != 0) { + return util::Status(util::error::INTERNAL, "Signing failed."); + } + return signature; } diff --git a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign_test.cc b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign_test.cc index 7818fe042..b79662b6b 100644 --- a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign_test.cc +++ b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign_test.cc @@ -24,6 +24,7 @@ #include "gtest/gtest.h" #include "absl/strings/str_cat.h" #include "tink/config/tink_fips.h" +#include "tink/experimental/pqcrypto/signature/subtle/dilithium_key.h" #include "tink/public_key_sign.h" #include "tink/public_key_verify.h" #include "tink/util/secret_data.h" @@ -33,8 +34,11 @@ extern "C" { #include "third_party/pqclean/crypto_sign/dilithium2/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium2aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium3/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium3aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium5/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium5aes/avx2/api.h" } namespace crypto { @@ -44,8 +48,9 @@ namespace { struct DilithiumTestCase { std::string test_name; - int key_size = 0; - int signature_length = 0; + int32_t key_size; + int32_t signature_length; + DilithiumSeedExpansion seed_expansion; }; using ::crypto::tink::test::IsOk; @@ -69,9 +74,11 @@ TEST(DilithiumAvx2SignTest, InvalidPrivateKeys) { } util::SecretData key_data(keysize, 'x'); - EXPECT_FALSE(DilithiumAvx2Sign::New( - *DilithiumPrivateKeyPqclean::NewPrivateKey(key_data)) - .ok()); + EXPECT_FALSE( + DilithiumAvx2Sign::New( + *DilithiumPrivateKeyPqclean::NewPrivateKey( + key_data, DilithiumSeedExpansion::SHAKE_SEED_EXPANSION)) + .ok()); } } @@ -85,8 +92,8 @@ TEST_P(DilithiumAvx2SignTest, SignatureLength) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(test_case.key_size); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + test_case.key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -115,8 +122,8 @@ TEST_P(DilithiumAvx2SignTest, Determinism) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(test_case.key_size); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + test_case.key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -160,8 +167,8 @@ TEST_P(DilithiumAvx2SignTest, FipsMode) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(test_case.key_size); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + test_case.key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -174,11 +181,23 @@ INSTANTIATE_TEST_SUITE_P( DilithiumAvx2SignTests, DilithiumAvx2SignTest, testing::ValuesIn<DilithiumTestCase>({ {"Dilithium2", PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES, - PQCLEAN_DILITHIUM2_AVX2_CRYPTO_BYTES}, + PQCLEAN_DILITHIUM2_AVX2_CRYPTO_BYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, {"Dilithium3", PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES, - PQCLEAN_DILITHIUM3_AVX2_CRYPTO_BYTES}, + PQCLEAN_DILITHIUM3_AVX2_CRYPTO_BYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, {"Dilithium5", PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES, - PQCLEAN_DILITHIUM5_AVX2_CRYPTO_BYTES}, + PQCLEAN_DILITHIUM5_AVX2_CRYPTO_BYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, + {"Dilithium2Aes", PQCLEAN_DILITHIUM2AES_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM2AES_AVX2_CRYPTO_BYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, + {"Dilithium3Aes", PQCLEAN_DILITHIUM3AES_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM3_AVX2_CRYPTO_BYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, + {"Dilithium5Aes", PQCLEAN_DILITHIUM5AES_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM5AES_AVX2_CRYPTO_BYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, }), [](const testing::TestParamInfo<DilithiumAvx2SignTest::ParamType>& info) { return info.param.test_name; diff --git a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.cc b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.cc index 0bf61a4cc..c98e54f38 100644 --- a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.cc +++ b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.cc @@ -25,13 +25,17 @@ #include "absl/memory/memory.h" #include "absl/strings/str_format.h" #include "absl/strings/string_view.h" +#include "tink/experimental/pqcrypto/signature/subtle/dilithium_key.h" #include "tink/public_key_verify.h" #include "tink/util/statusor.h" extern "C" { #include "third_party/pqclean/crypto_sign/dilithium2/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium2aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium3/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium3aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium5/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium5aes/avx2/api.h" } namespace crypto { @@ -44,7 +48,7 @@ util::StatusOr<std::unique_ptr<PublicKeyVerify>> DilithiumAvx2Verify::New( auto status = internal::CheckFipsCompatibility<DilithiumAvx2Verify>(); if (!status.ok()) return status; - uint32 key_size = public_key.GetKeyData().size(); + int32_t key_size = public_key.GetKeyData().size(); if (key_size != PQCLEAN_DILITHIUM2_AVX2_CRYPTO_PUBLICKEYBYTES && key_size != PQCLEAN_DILITHIUM3_AVX2_CRYPTO_PUBLICKEYBYTES && @@ -63,41 +67,77 @@ util::StatusOr<std::unique_ptr<PublicKeyVerify>> DilithiumAvx2Verify::New( util::Status DilithiumAvx2Verify::Verify(absl::string_view signature, absl::string_view data) const { - uint32 key_size = public_key_.GetKeyData().size(); + int32_t key_size = public_key_.GetKeyData().size(); + int result = 1; + switch (key_size) { case PQCLEAN_DILITHIUM2_AVX2_CRYPTO_PUBLICKEYBYTES: { - if (0 != PQCLEAN_DILITHIUM2_AVX2_crypto_sign_verify( - reinterpret_cast<const uint8_t *>(signature.data()), - signature.size(), - reinterpret_cast<const uint8_t *>(data.data()), data.size(), - reinterpret_cast<const uint8_t *>( - public_key_.GetKeyData().data()))) { - return util::Status(util::error::INVALID_ARGUMENT, - "Signature is not valid."); + switch (public_key_.GetSeedExpansion()) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + result = PQCLEAN_DILITHIUM2AES_AVX2_crypto_sign_verify( + reinterpret_cast<const uint8_t *>(signature.data()), + signature.size(), reinterpret_cast<const uint8_t *>(data.data()), + data.size(), + reinterpret_cast<const uint8_t *>( + public_key_.GetKeyData().data())); + + break; + } + default: { + result = PQCLEAN_DILITHIUM2_AVX2_crypto_sign_verify( + reinterpret_cast<const uint8_t *>(signature.data()), + signature.size(), reinterpret_cast<const uint8_t *>(data.data()), + data.size(), + reinterpret_cast<const uint8_t *>( + public_key_.GetKeyData().data())); + break; + } } break; } case PQCLEAN_DILITHIUM3_AVX2_CRYPTO_PUBLICKEYBYTES: { - if (0 != PQCLEAN_DILITHIUM3_AVX2_crypto_sign_verify( - reinterpret_cast<const uint8_t *>(signature.data()), - signature.size(), - reinterpret_cast<const uint8_t *>(data.data()), data.size(), - reinterpret_cast<const uint8_t *>( - public_key_.GetKeyData().data()))) { - return util::Status(util::error::INVALID_ARGUMENT, - "Signature is not valid."); + switch (public_key_.GetSeedExpansion()) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + result = PQCLEAN_DILITHIUM3AES_AVX2_crypto_sign_verify( + reinterpret_cast<const uint8_t *>(signature.data()), + signature.size(), reinterpret_cast<const uint8_t *>(data.data()), + data.size(), + reinterpret_cast<const uint8_t *>( + public_key_.GetKeyData().data())); + break; + } + default: { + result = PQCLEAN_DILITHIUM3_AVX2_crypto_sign_verify( + reinterpret_cast<const uint8_t *>(signature.data()), + signature.size(), reinterpret_cast<const uint8_t *>(data.data()), + data.size(), + reinterpret_cast<const uint8_t *>( + public_key_.GetKeyData().data())); + break; + } } break; } case PQCLEAN_DILITHIUM5_AVX2_CRYPTO_PUBLICKEYBYTES: { - if (0 != PQCLEAN_DILITHIUM5_AVX2_crypto_sign_verify( - reinterpret_cast<const uint8_t *>(signature.data()), - signature.size(), - reinterpret_cast<const uint8_t *>(data.data()), data.size(), - reinterpret_cast<const uint8_t *>( - public_key_.GetKeyData().data()))) { - return util::Status(util::error::INVALID_ARGUMENT, - "Signature is not valid."); + switch (public_key_.GetSeedExpansion()) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + result = PQCLEAN_DILITHIUM5AES_AVX2_crypto_sign_verify( + reinterpret_cast<const uint8_t *>(signature.data()), + signature.size(), reinterpret_cast<const uint8_t *>(data.data()), + data.size(), + reinterpret_cast<const uint8_t *>( + public_key_.GetKeyData().data())); + break; + } + default: { + result = PQCLEAN_DILITHIUM5_AVX2_crypto_sign_verify( + reinterpret_cast<const uint8_t *>(signature.data()), + signature.size(), reinterpret_cast<const uint8_t *>(data.data()), + data.size(), + reinterpret_cast<const uint8_t *>( + public_key_.GetKeyData().data())); + break; + } } break; } @@ -105,6 +145,11 @@ util::Status DilithiumAvx2Verify::Verify(absl::string_view signature, return util::Status(util::error::INTERNAL, "Invalid keysize."); } + if (result != 0) { + return util::Status(util::error::INVALID_ARGUMENT, + "Signature is not valid."); + } + return util::Status::OK; } diff --git a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.h b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.h index 7aeb3ffa1..ac23656f8 100644 --- a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.h +++ b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify.h @@ -43,10 +43,10 @@ class DilithiumAvx2Verify : public PublicKeyVerify { crypto::tink::internal::FipsCompatibility::kNotFips; private: - DilithiumPublicKeyPqclean public_key_; - explicit DilithiumAvx2Verify(DilithiumPublicKeyPqclean public_key) : public_key_(public_key) {} + + DilithiumPublicKeyPqclean public_key_; }; } // namespace subtle diff --git a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify_test.cc b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify_test.cc index 8fd3bd8f0..19e416662 100644 --- a/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify_test.cc +++ b/cc/experimental/pqcrypto/signature/subtle/dilithium_avx2_verify_test.cc @@ -26,6 +26,7 @@ #include "absl/strings/str_cat.h" #include "tink/config/tink_fips.h" #include "tink/experimental/pqcrypto/signature/subtle/dilithium_avx2_sign.h" +#include "tink/experimental/pqcrypto/signature/subtle/dilithium_key.h" #include "tink/public_key_sign.h" #include "tink/public_key_verify.h" #include "tink/util/secret_data.h" @@ -35,8 +36,11 @@ extern "C" { #include "third_party/pqclean/crypto_sign/dilithium2/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium2aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium3/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium3aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium5/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium5aes/avx2/api.h" } namespace crypto { @@ -46,7 +50,8 @@ namespace { struct DilithiumTestCase { std::string test_name; - int key_size = 0; + int32_t key_size; + DilithiumSeedExpansion seed_expansion; }; using ::crypto::tink::test::IsOk; @@ -62,9 +67,11 @@ TEST(DilithiumAvx2VerifyTest, InvalidPublicKeys) { // Null public key. const absl::string_view null_public_key; - EXPECT_FALSE(DilithiumAvx2Verify::New( - *DilithiumPublicKeyPqclean::NewPublicKey(null_public_key)) - .ok()); + EXPECT_FALSE( + DilithiumAvx2Verify::New( + *DilithiumPublicKeyPqclean::NewPublicKey( + null_public_key, DilithiumSeedExpansion::SHAKE_SEED_EXPANSION)) + .ok()); for (int keysize = 0; keysize < PQCLEAN_DILITHIUM2_AVX2_CRYPTO_PUBLICKEYBYTES; keysize++) { @@ -75,9 +82,10 @@ TEST(DilithiumAvx2VerifyTest, InvalidPublicKeys) { continue; } std::string key(keysize, 'x'); - EXPECT_FALSE( - DilithiumAvx2Verify::New(*DilithiumPublicKeyPqclean::NewPublicKey(key)) - .ok()); + EXPECT_FALSE(DilithiumAvx2Verify::New( + *DilithiumPublicKeyPqclean::NewPublicKey( + key, DilithiumSeedExpansion::SHAKE_SEED_EXPANSION)) + .ok()); } } @@ -91,8 +99,8 @@ TEST_P(DilithiumAvx2VerifyTest, BasicSignVerify) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(test_case.key_size); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + test_case.key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -126,8 +134,8 @@ TEST_P(DilithiumAvx2VerifyTest, FailsWithWrongMessage) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(test_case.key_size); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + test_case.key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -161,8 +169,8 @@ TEST_P(DilithiumAvx2VerifyTest, FailsWithWrongSignature) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(test_case.key_size); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + test_case.key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -197,8 +205,8 @@ TEST_P(DilithiumAvx2VerifyTest, FailsWithByteFlipped) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(test_case.key_size); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + test_case.key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -235,8 +243,8 @@ TEST_P(DilithiumAvx2VerifyTest, FipsMode) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = - DilithiumPrivateKeyPqclean::GenerateKeyPair(test_case.key_size); + key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( + test_case.key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -254,613 +262,1163 @@ struct TestVector { // commit 9dddb2a0537734e749ec2c8d4f952cb90cd9e67b TEST(DilithiumAvx2VerifyTest, Vectors) { TestVector dilithium_vectors[] = { + {/*TEST Dilithium2*/ + /*public_key= */ absl::HexStringToBytes( + "1C0EE1111B08003F28E65E8B3BDEB037CF8F221DFCDAF5950EDB38D506D85BEF" + "6177E3DE0D4F1EF5847735947B56D08E841DB2444FA2B729ADEB1417CA7ADF42" + "A1490C5A097F002760C1FC419BE8325AAD0197C52CED80D3DF18E7774265B289" + "912CECA1BE3A90D8A4FDE65C84C610864E47DEECAE3EEA4430B9909559408D11" + "A6ABDB7DB9336DF7F96EAB4864A6579791265FA56C348CB7D2DDC90E133A95C3" + "F6B13601429F5408BD999AA479C1018159550EC55A113C493BE648F4E036DD4F" + "8C809E036B4FBB918C2C484AD8E1747AE05585AB433FDF461AF03C25A7737007" + "21AA05F7379FE7F5ED96175D4021076E7F52B60308EFF5D42BA6E093B3D0815E" + "B3496646E49230A9B35C8D41900C2BB8D3B446A23127F7E096D85A1C794AD4C8" + "9277904FC6BFEC57B1CDD80DF9955030FDCA741AFBDAC827B13CCD5403588AF4" + "644003C2265DFA4D419DBCCD2064892386518BE9D51C16498275EBECF5CDC7A8" + "20F2C29314AC4A6F08B2252AD3CFB199AA42FE0B4FB571975C1020D949E194EE" + "1EAD937BFB550BB3BA8E357A029C29F077554602E1CA2F2289CB9169941C3AAF" + "DB8E58C7F2AC77291FB4147C65F6B031D3EBA42F2ACFD9448A5BC22B476E07CC" + "CEDA2306C554EC9B7AB655F1D7318C2B7E67D5F69BEDF56000FDA98986B5AB1B" + "3A22D8DFD6681697B23A55C96E8710F3F98C044FB15F606313EE56C0F1F5CA0F" + "512E08484FCB358E6E528FFA89F8A866CCFF3C0C5813147EC59AF0470C4AAD01" + "41D34F101DA2E5E1BD52D0D4C9B13B3E3D87D1586105796754E7978CA1C68A7D" + "85DF112B7AB921B359A9F03CBD27A7EAC87A9A80B0B26B4C9657ED85AD7FA261" + "6AB345EB8226F69FC0F48183FF574BCD767B5676413ADB12EA2150A0E97683EE" + "54243C25B7EA8A718606F86993D8D0DACE834ED341EEB724FE3D5FF0BC8B8A7B" + "8104BA269D34133A4CF8300A2D688496B59B6FCBC61AE96062EA1D8E5B410C56" + "71F424417ED693329CD983001FFCD10023D598859FB7AD5FD263547117100690" + "C6CE7438956E6CC57F1B5DE53BB0DC72CE9B6DEAA85789599A70F0051F1A0E25" + "E86D888B00DF36BDBC93EF7217C45ACE11C0790D70E9953E5B417BA2FD9A4CAF" + "82F1FCE6F45F53E215B8355EF61D891DF1C794231C162DD24164B534A9D48467" + "CDC323624C2F95D4402FF9D66AB1191A8124144AFA35D4E31DC86CAA797C31F6" + "8B85854CD959C4FAC5EC53B3B56D374B888A9E979A6576B6345EC8522C960699" + "0281BF3EF7C5945D10FD21A2A1D2E5404C5CF21220641391B98BCF825398305B" + "56E58B611FE5253203E3DF0D22466A73B3F0FBE43B9A62928091898B8A0E5B26" + "9DB586B0E4DDEF50D682A12D2C1BE824149AA254C6381BB412D77C3F9AA902B6" + "88C81715A59C839558556D35ED4FC83B4AB18181F40F73DCD76860D8D8BF9452" + "0237C2AC0E463BA09E3C9782380DC07FE4FCBA340CC2003439FD231461063807" + "0D6C9EEA0A70BAE83B5D5D3C5D3FDE26DD01606C8C520158E7E5104020F248CE" + "AA666457C10AEBF068F8A3BD5CE7B52C6AF0ABD5944AF1AD4752C9113976083C" + "03B6C34E1D47ED69644CAD782C2F7D05F8A148961D965FA2E1723A8DDEBC22A9" + "0CD783DD1F4DB38FB9AE5A6714B3D946781643D317B7DD79381CF789A9588BB3" + "E193B92A0B60D6B07D047F6984B0609EC57543C394CA8D5E5BCC2A731A79618B" + "D1E2E0DA8704AF98F20F5F8F5452DDF646B95B341DD7F0D2CC1FA15BD9895CD5" + "B65AA1CB94B5E2E788FDA9825B656639193D98328154A4F2C35495A38B6EA0D2" + "FFAAA35DF92C203C7F31CBBCA7BD03C3C2302190CECD161FD49237E4F839E3F" + "3"), + + /*message = */ + absl::HexStringToBytes("D81C4D8D734FCBFBEADE3D3F8A039FAA2A2C9957E835A" + "D55B22E75BF57BB556AC8"), + /*signature = */ + absl::HexStringToBytes( + "AF5920774603D20E98A79AA3ABFA32B6E22519E673E37AC4AC73FE85341E2C29" + "23C1992E1B0BBE3873D7C8FC5662F207BF58EA381CD4A3A0C062DEC45BDAF8BA" + "0AA52BEF6FA14F3F6CF28F7620BF94A92CC27D045414A64D65C0149630528024" + "28BF3987A2D47516CA5C78AAB96B7BE11BCA5F2C5A26F3FCE3A26E8E09A2738F" + "386F75D448F937EF19A846BD4DD949CAAF36DB5629884AF53A023E3F180FE4C0" + "FAFF7BE5DFE4E89ADE3095A65600421461AD08C129D6CEA851BB39C0D7A7D151" + "405689A091FA4DEBAC373CF54AE078F0AF7557BBC6F06A535AE8949E0C65308A" + "59840072375295802D0E2CE9A3DA98426A00FF03FE80218C0EEC8EFE581CB9CC" + "9A7D66B20645A8CD0490D3CE4F7E6FEAE9C9EB7A57F964D0EBC7C90B7A9F8630" + "0B3E8095E64D1294CFC4B4D9E272E8FA8DB5707D7004AF22DBFF9CFD4863DF57" + "3FE004341DA3CD4A3082532C2620455FA37C562BAFD5684EA128AFC79E01FC9B" + "31E8433BAD7C029F2F13CC10592D2332E3E08B80D350463DE72750B1F806F493" + "E143BD5FCA7D1698081B31BF876B2A1BC9DF50952D13B6C1321B1111172145A6" + "27AE0B4427B98975CBFFF7D68275754B45B682D709E168522E84FEA7DD3BB0F4" + "1505FF71926431D1A90D4CBF9A527AD4E284976FFF8BD9D6224A4F260391A987" + "FB6DA6EE42C2A4900F407CE1F02E322475D313FBEBB68C2E05730809448A7428" + "A5940139EBDF1B5556FCC5D42E1A13F32230CB6F0724831D0D071BBA5A670480" + "6F475B74BA91B6E385D48620958D0AB1BF2B184E10F3E753B71337BE9EB65378" + "6785B43AC7E5C494AC1BCB043D461425B36098AC93055A0105AB8523B61D024A" + "6E9B56A42D3C04726512AE4CFE05710446B06F694234EE4FA8FEEDDDC5F28A65" + "EDE2EB58E965FE3627A571BC45B397ED092AB4BE00041729C4D192FE30678279" + "D223A848CF4366E92B3F68DEE97C9B4A7FF22F937BE6C56639961DB29FA3CFEC" + "FFF293140886FFB92EBC79DAB59CEAF869C64F8EAF585CE97DD6B78F892772DB" + "88A958CF0AB557A7FAA83FE621477E2B84497AB5A8ECF4A7BD32DFB902F05D2C" + "A31047D0F1919ADDE1EE6DFD58E59BC4DAB3CCBBA36AAAF6AFCCC7B095CA94A1" + "95BE9A289526B588C3A9C56876FC415D521D442BAC0298D302419AD527DA249C" + "2A660CD064213FFAD563183F37972578EEB9F70AC67AEE6CC2B71F283A95930B" + "554738555791C25E7A399E685636D58D69CB6BE793B45C1969E7D5615627EBC3" + "2EED45440F87880D2829FA4FC871866164D259ED95D2731871017FF51894066F" + "AE1FFA6F4B4A6F84FCFFDA09E718FA17135EDB3F48558D5BA67F9E6F0900340B" + "D04DFE59B7BD67745884FB84AE3F8EE763D202743652D4F7333450580490B9C7" + "44935B19C1D5FB0DB5FBB461411362838037EB7EC3F63F26C893E7CC1C3B3F47" + "67ABAE00FEB7BB99B1420BB29EA614747896D9EDCF8107FE504C9C308A8264DA" + "CE318D87CFE4761803E9A60DEFA6144AABC1F10A45B140DED754E73586C467BB" + "7BF19EDEF25BE0C65E93C5E5EB8F880CCE4A858757F8FF56062B1067F4106F76" + "B7007F6EA6F945047E85BD0FAD9D26994F678A0612B87CCF9C0CF9A433D889C9" + "6E4C12BE372277005B06AD127105D16D8FB142AEAE5373ABD61D9ADCFC5550D6" + "23CA3B8824B0E2E08C2BF4E2841EAC4C5DC56CF8954CF207C263F27C9F309F10" + "307C0D84A65878425031375DD810D2D7E51098A3814350795C4A077FA40DD44F" + "0FA7510F7C3F631407CF34F604C7B335632A20D2AD419BD7CC6D4242B1C66C35" + "E5A5EDCCB13CA37D3B50465F3B4AAFF7E3161E7936088AE08401FD2C37D67A2F" + "F91D3E6F08686D64BC2FC6C57106E49FA384AC22219F07EE8996CA3DFF59DCC5" + "092A4BADBE87AEDE7F69A04C79B33BDF35D4A0E4CB4B55019CB0BF275295B93B" + "DABEA516CA2B616A56918600B724BE7A01EC4EF54312B30D66F507815F2780FF" + "EE7C30F8425A92252CE550FAB4E902E7B382D46DBD20EFE1BB0EF8A496873C09" + "C4CEB0303C7F1DABA0102DE94190B6AC6DC810F72BCA3AA292FF38BD51A7FAB8" + "509EC4FBE0EAA3C986166A674B7871155C348C477EF8CEDC832B5ABEE71A8D18" + "D06DD0F5221160ABEB71E6E82CFABF731EA3515A76EF07B2C16C63B37F7AB73B" + "67F005929A753E453B930C0AF432277FD77D8A1EB8022CDE9665763B014F0A67" + "2A04160B0A06F5540F4C264B7F22740690A2352DC863B588303AD51F0AE162BF" + "79797F07B534501CBBFDB713A724AA98E19532187180CCFADC6EBE3142FA7DB6" + "6CD4DE7B9FBD4C8235686DB68CAF489AFA4E1E87AEF0CEFD8037E3A578EE62EB" + "7F94ED5BC0B58EEA4B4C45FC56D31D29944D095AC96C29083DA2C77181D97A55" + "FE6E903A2F2783DE0BAA5F47D704785C33E8D5C87ED61E65459167310EB7A995" + "74EF819AE9161A3BD09634803D9E1E4EC7386D7946984517213AB9CF66AEA551" + "CC457C39F86AF294CF7B073F563ED4DAB9419BDF004BD05C92B4E80EC3CFEAC9" + "7E1DDA554FDA625C4B9B039BAA7C5A2F6F97057792483CF5F852D4C3AC71AD50" + "F779953DCFE2F63ED235D8E1D5345D6C6DF0555CC2631DEAD9B714BC4C16501E" + "01261381F3679715345123388C852D57DCF1941D0911D49FEA7143FD2FC343A5" + "075B64CCA48291DC28B83F76074589EAB217C7847840652C0E3AE278B3B6FB0D" + "800C5E7DB79D5CB9CC1A87450C00B7677812D22EE20FDE8C1753A7FB93BA8BBB" + "8595A6393DF54AA9CDB6E0879A26E49BD3B01513C6053A0746C8596CE5E5B225" + "CFCA26AB8BF12F1FE0A647A9E4453039A1226194C46E8B98ACD710F18FB7EC05" + "476C1CD8FC3112CCDDB1582B8817C18FE315353E7A47C821E9EE3A43CADE1B80" + "D92A0AE8DCEB4DFF766A54DF3665FEFE3C252B72DAD7B1E3359E7FA25562C3E3" + "9DB521CE1874111FB090DBD38B3180AD034B57B031DC4DD6AF7C1A8AF3F6CE7E" + "DB1A9E4B6D4A5920E3620818820659762EF7A4243F51DF2D8A900737D5810569" + "9B4E10CBCB359C7F3A4007697C482050EC33CF8041916A3B919A50D96EF0F589" + "FD4556F30DBDD942EAB79DFA97C07E30247074352E1BF98E349CC7EFA5A1B8FC" + "E4F18F1FAF6F07C99C321448B0395C8A9CBC466412F89C1A98BF5715842844F0" + "E8236FA4696C4658B8FDE4425D09D67A38AC7258E5D5966F2D3FF66A0C0CE76E" + "7F6B81A1BCD047FD3A205BF0CCAEA3B11079909C6CE5698F32E1F3409658FFA0" + "1EAECB4AE2B092B78989DAAD6623BB11F49F0F8F8699EC05661502FFCAD03CF4" + "15191A222D3C4C7B8AB0B5B9BBC2D9DCEFF7202D3F4244494F525364666974C4" + "D9E6F5FA0001041927373D5A7680B8C1C9FE2029383B3C484D565F65799D9EA6" + "A9ADD2DEE5E7F7F9000000000000000012243248")}, + {/*TEST Dilithium3*/ + /*public_key= */ absl::HexStringToBytes( + "1C0EE1111B08003F28E65E8B3BDEB037CF8F221DFCDAF5950EDB38D506D85BEF" + "032369A2CE572FD08BFC304B4848E78D752D77E97A28B99B9BB6FB5C7C633751" + "4B321ECDC1FB669F26D4171AB42B72720EE70E0519A6E1D3D6D9914EC1B21CDE" + "38B41AAC1D3ABEE6F2B7495C4C820C1FC0CC9E71E24CFB5C9C0D8EEF4264AF48" + "4FAE4D6E5DDE65D4DF72B61C6DBD26F861A5E0B853AC5413226FEBBABA5EB474" + "C6FB25A82678EA1606B452A23112221017B8C073C10378F9145641A8C078C0ED" + "9E421650F748892522AB9FB7D1FF8CF1CC71B8566E8DA33CD7361770C044349A" + "C440CCCDC6BBE35E6C55782766F38E688BF47821037299E344ECDECA17AD5D15" + "CD27A4F7B070661138EDE8ED72A8959C5AE36B1C46094A53CB21A7A42673F140" + "1C2B259494090E2F53D7EE7063431EE5858002D850AF909C3783436010F7EA88" + "625A36A0F0189FDE75B7E8C7E4B19D8527008328ADBC929BBC86E964CFC48B8C" + "F1DA5D7ED3333AB55C15072832214A779A5FD10CC04005F46C1AA8884A161992" + "472FD535B95ED18BDE1C6D8CE678D2817D69F90571103E8520E7313CE7B930C5" + "EBFAF2F4EC758B626B5543A068CDE0FD0E94E6A64475B23268BF0380D075508F" + "85128CA26F31A90C4A7D28440D54D4066B404588588B4CCF850B975C73AFE68C" + "BCD102755F61EB3E60323C576E529EC0BF23BFA5BEA39CB73C37E8395D8DBD4C" + "8DC8AB2F70A0BFC3A78C0D413F08D14D632BC0403B0383DBBB22BD9B113C8945" + "2AEAB11210097947FEAAA3C9F05D1D300C33A55E3FBC81259E862705C3A13B9E" + "E35F6B23ED10F4EDEA9519FA91B7BCD0D501B5ED57D9049FAB91AA779C725FF8" + "E9F78017EA7807FA254B7105E826D096C01ADAE2C5D138251A92A478A33373F4" + "DE912B83B6FB4B0D0DE6BC1118BB2FCFB07BD227A5F7F991439A13DE1238180C" + "DC55119E65C418584D807A926E4A9C0F70155EE196FB07656D9AA7982B8795DB" + "AD43D1059CA7F580D3320C0438A5ED5A7032B2E959678410F11AD98BE8826A44" + "262615645D759A862B2AC52D3B014A25E8473F1F1EA4CFA819930AB3A34D710D" + "EEE70CA13E88FD71AA064E6CB4697DE0E463B1370A6A3BFE98FDFE7B5471FF8D" + "F6A6879FBEF9AFB3519D780757D67440AC36E837BAC3833EEAA980BD82B79364" + "36A0307D164B6438869AE606E980518E913D0EE302396EF4EB25D9866E4BAFA1" + "01E5992931361C4A982253D58ABE3BD57107635A46F09512085F4ADA08EC8B1B" + "3910B0153B2AAFCAE5033EDD4153248DCD85B02C9A25D8BDC4068BB857417262" + "97A25AEC55C44AA28059B71BB9F34067887ADE4C1CA4908B19B3D78123453876" + "DB4DCEB42773069572CD8777E62CFBAF7203F020F281A6678F790720EAA20E34" + "327D7A63688B09A01F4D7088F7B5059EDDEB45C0CE39321C79521D79A59ECDD4" + "68CED0EA82CA484928702F57D6FC18D347AF3ED22AAF45ABB0F20BAB9E015576" + "07AE3ED9CF0E26D34D305449669EC6FC1BECEADCE183F7A594CEA196D059A1E5" + "50E547866CC087333F030E628F2CF1147925410ED0421DC7506138B1D19099C6" + "95E1AFDACE4153825B66A8ECF55A021D21EB9F848FE55C21769A755FA9807EF7" + "3A6C5BA15A06347D3F1C5C619A315598629106AC0B86AE0D8E55578292517258" + "AE85F72E737AF5638D096B76A3C57F1B9C80E770A2D4EA4E42FE469AD4212852" + "41960A8A86355EF22F583FE3BACADF8DA31D5C2DE254161BC6D10F9841DD27ED" + "462A6B94B6DEEA90CBAB687FB84B56395DA763AB4B7FE3095D572D77EFF3FF0D" + "8F9D19AA5AF7B676053DBEF64E61DD0A41D402318E3308669106259BF7A4CE31" + "B346A9E983EDABA05180149AB057F9972977DA7C6F46E0CDF86F3091F04FD4E8" + "3C6022E18CE4382B54D5DABA82E4DF1E53BF31FE4BB65A8524EDA83FD29D07E4" + "9747B75291CBC8F8EE1415EC921E19022ADE2C047E4DF3507289E9D79A8E6992" + "B48B8864204A416B769CC787D6DF4407E93D121F7FBEE0E408963E0609A9C75C" + "B3117CA583DF6E79F31C635BF0F1BE98DF550727A45D3CA337D79DE5DCDB0B91" + "CABBC30D7EF0AE1CA1E94904F78C1FD8FBA87545FDC174AD8190F9B5ED7B5869" + "494FFA91033FDC6117BF662EC5F2AF2634BA3F8C02210F1C9BCDDA9BB39760E0" + "0F25A7270C345666FB6DF85C919AA150CA7FC80FC0EACFE242EF55F429806362" + "8E61056C966DB9964428D9CE99108271E29A12328E23999734E036F18A0EB8F0" + "30E88062C56717E7A36314E44ECF357FF56EEDF90D3FB11B22A1B25905B379FC" + "CA5CA1ACB956E178AD3F51D535AD119813B1E70F7317651BC75CAC64276BB981" + "10B54EA0EF34541D73910721D657387677E332E9C8811C3FC1B923B2EE9C512F" + "6D09DF372A5F97FAD7123389CEE197B5C269E221D7EED3160A521E56FF8AAFAB" + "686179D09D78FC387B3EA6A672034D24AC7999D196B2316475F37DB8E9ED431D" + "F58341FA88003D3C6489E78053D8E44CE7E16AEF416859B3D2AECE09086A748B" + "7BCFD10F73E3CF8B31F0CC44DA059C69ABA5BC8EFAD45D3F376AF3A0DE6E1698" + "78BD842E28798E4743F843844BCDF8506F136391EC8E721DC2B6282D9C50FAB6" + "53A6ABF28947420E8C22A9A487D76A938933B34E497DA95394176B2774C09EF0" + "BB1ED8C3B131A21957B31A0B47CBFBFF0533CAF33125221DB6BA4A518864892C" + "F21D3D4D58B599A37A08F344AA7EF98E7D7D9D3316A6B115D9B8F20F93BC6865" + "734699EB54C888D7E5A0ACAFD1915352B294243712CFE82F85248B00045CF3D0" + "90C0C00D7CA0E3A1F147703FD94F717E49C81A7C3A76946E20A63F3B7C3EABA9" + "225ABE0B34CB0CF235063967D16BC8A69C130CCE287615CC053114167EAC4E95" + "BBABDFBBCF96BC0C0D65EA000AEAF490D723955BD1B4D69154D262F6A6D3534B" + "B0BC397C29ECC6B1447B75C953AF441DE2E7133A7AC98988A7EF9E6EE63558AA" + "ADA0603BD529776F05558D2DF5641C412E7347440F65EB823AFC7CCAE6B97108" + "B857287A0486DBBE689D770CA92471309E73AD390ABF56912B2B7C49242CEC15" + "7BDBBD493553735CB1D9B40AFC214DA153359C9DF576135901C2FDA58C0095B6" + "FCE3FD0731DF34863AF2882D53773CE7C182473722AA79A6B37D3EDDDE38FA71" + "DF8C0EDC081EFED8CE606E48299180EC6FE35FAB649910C48A6A29F9D0F85557" + "E10BC5AE2ECF028AE399F55CD7976028935CC03C0CAFD5003C9EAED247FBE30A" + "284CC4470A5525A6498E1DBBD3085C3F9D77C6064D0181BC5A829561560AA9A4" + "EA8173D7937A9428109CB3A66B2B3DE11F88F55AB21EB49B77A39762CA9264E0" + "156566765E2D3626B72B80BD1411E4EC53552828A24BC8CDC47F465FDDF4772C" + "7BC02066854011287F739ABA6047596747F4234AE227DBFFABF0E13153E2E069" + "F0B790251BE877FE5A198E808258639F5E79D3D5CD16F1A573724DD6A9F6990C" + "4502334DC66F65493490673AB30DCA7C031F0C212C0D8BC9D0C874B319A97AD1" + "CE9395D3D154203156C51CC3B9CB13D0BA1BDF618BC8EECA9DDD9412050CFA09" + "235727AA50D46F79AD6F3C5A1BB6B284C8311DCF93756859704DF8FC3BB8D2F5" + "E094E04502354942E9C852B208D4901834332EBC603270CB57ED418C34CE48A" + "A"), + + /*message = */ + absl::HexStringToBytes("D81C4D8D734FCBFBEADE3D3F8A039FAA2A2C9957E835A" + "D55B22E75BF57BB556AC8"), + /*signature = */ + absl::HexStringToBytes( + "BBF85FFD0E01C80C8C1C1931CD640BF273D49693C4C4BFF5DD20D94CF3757ABD" + "45473B9D01B1871305DA90EDC6707D5417129467F61F723950C1AEDF7055EC1D" + "4777AD8808E8B347D1D0921EBAB890CCA8E3A0DFD3003DE9F9CB4A97D884E1DD" + "042C958B816F7237032B20F8399A5182F46525EC357D2F03437403E0CB5DCA4A" + "13FD2F1B09205B9890F02EE5AF542943E6F9375ED08A38533042D6BBD50F3725" + "1B1590F63B4B58A7D1E1F31CE62E3D2AA91E1C767B9C3F5CB26823F97AD1D9FF" + "AB2875EB68FFA9B09946EF1D7012C02919EF13CB100C2E2C7987A0A5785B5F3F" + "3B948B7FD64B85B165AE2FBF3C47E039C3073CA78FC900BBCDC069FE906885D5" + "B13740A223AF5254F98C1D58E2FC92B0373E2A933353CC3EECD39F71D59CFA09" + "294E38262A4489400D222982F9C780CD0731D4EED916C5A31ABCD02A590ED8C6" + "FFE18B5FC7B6888E74726940D02CCC62D78BCAEDDA2E028E535CDAFC0E091BEF" + "50DE2DFD124F1E854F568527AEF4DC8455FDA01B6D0D43048ED5AB42B1D40813" + "994B9F6AA0C036C0DCF08F46B00FDA014477CF879B8FE5EAC4541B82DA00B434" + "6046865B092ED6AE0115FC834B58F75FF928D7D99AC8691FF70020ABA25480AB" + "BCC709E46EC510F4B8CADD60045954D3EDDA7C23E03D91694D3C3EA292C92535" + "E6B5FE171C567DF3729406CDBA2A5EFA59F156E9CCD0302FDC0F8BB759B05DFF" + "5DD802CE4D5506A19A69D70B3AB48AB17A2FE59589F73083CCA547FFB3F14683" + "C914BC1345E7387E831EE6037501495C92C357705A69F952A2F7CD30E03336AF" + "AAFC9C56604CD545E82AA12AF058DABA974387FE8DCDEC699A1E3853E26D29E1" + "578189AA8C2BBA1550DFBEDD1E4F224EFCD65491E54E56128AE7C2DC8566797A" + "BF2D9455915203A5C89E55DD23DF827436A8D6DCC5ACA82F9B183692159EC03F" + "2B798E557D147346D835A8D81B2E3D40863966863A54D9C87B5AACE963CD529A" + "DBAE07070CEA00B780E18131E64F0AD70E9158F590D00AD9177908B90345FD79" + "D0255771C608AF65EE5AC3C50166BAD057380258681941560F1133405FC2D761" + "1314B4381D5459DCDEDE4D39F3823BC4422BB1D736E7474A8089F0ECFA3C30AA" + "C119FFA42BF743F48E0FDD960292D3E49A14EB0590C8E02E421D54AE8A521951" + "5E21895989A0D71D4F451669CD652DA3489E5CDBC0876BA0A0899E7D8773B24A" + "FC2CD6D37CA380A5D0DD436304D6E1A4DCD638E8B95E6C95465C6690D4EFE8F4" + "4691E48DE22CFC691C7561AD8CC1A2C3CC9FB86FF6F4705A573A720471ED33A0" + "0E8A60203818A3961E4D213A78B8626394F75C282315574CCD725A67E20F0BF2" + "24BFFCABD702BFD4E1CC5F78BEC0E042E12ED4C9474BDD5EED2AEB53F4A958D7" + "F84EFD56EC030A94D200A539DE164E53C82AFE8C5F71BB99A01F7230B7AEBC21" + "3ECDDBEF5B9E9064874396F8A91B0575F68A4515DD158178BF277A90A3FEA200" + "9200DA2EDA2C8B3A47C104D350DF68E94C8A4023D3AEFBB70718FA2E27E6A5C3" + "F9927EC596AB540F463AE010EF71B89B49497F0CFD2939FFAB2A7DD1247DC4A5" + "9D8411A843BD84F1EA8DA33C0701D70AC27C4BDBD0D9A0CAB86B1FC5BE12458A" + "2580A6CAB4B765B842C67AD54CA5D40A24E2DDBCF01E466E08D9B3449F13E82E" + "16D61C723FB9462E97B7ABC70B2210ECA16B160D5B8F98A1794DCA92CD4F027F" + "3E4152EA879507DDFE7F1F21514153F036AABC33F172C95A9B774722800F2E08" + "CC44F923540D8AF64B429968B280364C1B7B4B3E9BEE40C50002657D994631F3" + "3A8F8F134A27EB69BA4395908BA40634B8F2703149275FFBBE8B483EA1BBA91C" + "28105136D97C470EE83CD21CEB2B21AAED98DB8AB165A7B4BE559E7EACA68460" + "3015BC349B0A51214E4E8FBE1D2D883F79FD3F1EDCDD3FA6D4B5BBD2A5B3003A" + "80F1DADE975B502C7F72037316BC55C1E57E500627D60E31087431D2C9D02CA9" + "F0EBCCD4BFE3C4BB536D4CFEF7510750452D444BE2C3D64D84A832965305264A" + "BB53E3614940F9B2F1EA6F41CA8F69E726690BA630630F8A916EE856268251B7" + "73DC2A5DB45D22DFB2439CA4B7AB70215D23E1F2E2617394FF783B0BFF6DF034" + "5CC927053D02C65FE2A86DEFBEBF5243A2EF6A6312BAEDB6E60DBB0C67CC9A65" + "5585CB458D6A04181194815F03BE87F6E800492A24C5D502D5ECD53DD6DA3679" + "95D32E8BBAA3EF62727E8A610E8D6B5C8FABCBE8893BDB5E038627F707E8464C" + "55DCBB76F0836ADD298A967C459508BC4E88BA5CA38F5A561A6D2D6CB2178D90" + "AC850CA2734B45C4A89AA0F152A3B53BCF1E13532B2B5B3878B205BD2B327DC4" + "9EB6660B9511BFAE90C1DEA5BDEB6DC5DA068BCBDC6C093E5727E387374F452F" + "963C307DEE865D41AA124CA803C12F9AE9299C3CB1345FCC568C6E71BE3366BF" + "30EFEEEFC7693C36ACE576B0D10F402F380009FD0EC068CB2D45984884EDF16B" + "C90B0FF6DC96309EA377A3CEC043CB76B6C885BBB848C4745B71E18C58E78050" + "E19BD7BE0831EFE9052A6A7DF8D4E8B9FC3E082A4D40AD73E4B3185E2F6DEDE7" + "EE51A4068FF2DA57373FD7E7BD46E0080F4C2C1F41BC250E6DA45A341F214771" + "F5531A67B0FD97B53CD72CFAC7215BC4111F094030A91383D20182210FCECD75" + "E59C4B0B33A3F93D865D847EC241E1B98481C5D9D27F0AE262B328650CDC13CD" + "99866BE9A5A030E83D84E32BD213C94BD6AF950433A4F00C6149783B00750CDF" + "D4F47AE75217EED1F60C366FA02CDB206FEB2A685D6B7D6A4C13553E2BE27794" + "F53B0EF57315203263EB026EA5E67067D22F92E26E98DF9AB386C2705B4316A6" + "9892688E601E7427595ACEE6E47F5EC598CC48C2F2DA1C32E062A349D89DCC8C" + "05C62E7B0CED6F2E93A7BD48A8004A8C5C605DFFC805DE079EDEE7CED98639A9" + "2F6CBA92F2089B145D2D61D9638C07347A2EF6B30FD90E111A7F5913F6E18795" + "C19E0B9F60F85BD8F5C9A963339441E4A5B79EB2E867961B18A1884A01A74483" + "D80B403EFBDBD4EDDDC1922DA3FBB37BEA97E0A5B6343E4367601BD21DB66941" + "C2698BF506B04861B5F3D3D80AC6DCB684D9C4369ABD04BC4BDBEF49C66E3844" + "513A3F3BDD400C080AC6EAD81E8BB0E7CB36DB7B7EAB4728391857F597A34648" + "63C312645B20AF02F7D0BD9A74DE2361A0D2D98A698975B30F1010D90A126078" + "584A45FFBCC65B47976AF657EA84E9730D9E363733736AC80103DC1C7573C4DE" + "E28A7BAC9EF72CB829450B53EAF984CD01AA31416CE8914B7D7EF849EB9CC172" + "D7096DEFDACF596B9B21A573E346A47A5A469E1D7939BE1982CB3954C214ED3A" + "3707D740C033E3EF780F4C48BADD863848BBFC9DAA8E3806A84B2CAC0CA23200" + "0CAF0203E908FCE18B5D62777225D2D7D584F2ED71885DFAF5A4DBEE02F285BC" + "34559B88EA9CE15B47A3B92A8D6F91591C329A5AA21A1BC424BA2BDBD164CE1A" + "8B78B38BEF2B47F21F7FB7A3C54E3EA4536E816E01656C8E26AD42F3CB906169" + "67C0DD079F956C9F3C844D5F339C62EE8A358C4BEC2D278AF718AD509C6B6661" + "3B580443FA6F11CD8D107693B5D7B738AA7E2FE662502D7504A9F596194180F8" + "700DC4E6F7E8E7D2307234494B8DF1D57EE14D6C97926EB1D8904D8089BE7D13" + "5B13D6DE30AA8720D67159BB50A834DE9079922B88931D458500626834DA040D" + "B768DDDBE67A758A02B448E36BA455034ADE36802AA42A7F2F234A5E1CC241E5" + "661C63AFCE59DFDCC0898347D2834D7264F5B21A47C5214ADC57AF76CE9EBDB6" + "8C71029BCF0C4C745A33454ACF0CF6D5C68DEA06C45E7D4D1755C5ACDC37FC24" + "34140EF707FD55FAF06CBB1707C27CE9D905905E37E2F147C9CB8808ECD05DF7" + "1FC5F1DAF910D7BD68B6914938BF0CABCF66C905C49563D7D70F2C3D3A4A4F62" + "9E3AFDE53BD14CD6E527E4F038D6A331D01468E22DFE93A379B3EC6DA6D1C2F6" + "D5EAB141E575F93C8CC5580DF4A3DB5C4C87D8548E9A851946D1B90D7527407F" + "1BA1121EAC54A11E6EDA45ABB08A7A78AB36A76EAD7FAC4678E52464EFF398E9" + "0215AC316DE5A6EFE5A7B4A95DF92E4129F3F91B316F756708BDF37C01C12BBA" + "A091F94884E38AFF3C7B8140888CAB4F7F867EADB0418584B6F770740250936A" + "138AFF52888840677D8121C583806FE27104DE528813E56226B652C5869BB500" + "303834D9C9D197DBA1DD5C4734307AB8BD006B66EF45ABED2E31377BEAA19DAE" + "6EC82AD77C4C07744F9B93A8DD4CEE1A62A552EDF4E277CACFF1F964DA7AF8FA" + "FF6B56E3EBC06850A9F76ECFB2C2BAA660958C6D1BA96BA8578D066D6AFE6E8F" + "B2052B7421D57DE5AB4C1FD55170E9EE33EB32FB3D2C886142055EE8428BD745" + "AABE1D15191FFC93A3FA7A86B427EB2370B78A67A485AF963BBE1F2246119FB4" + "69A002D7029FC4F5F7E0125FDA7305ACF6C80C7BD3F668897BA81435F426B842" + "5C9855CD46C3448BBAD0739BA88ABC273BCD0FA1FDA7F4F8183B5D73D16C407C" + "452AEFA2E3CA9F2D9D638D966A58788B48BFC57D3FC2085FE85A7F7ADDD91EFD" + "1BA0226046B127A97BC480479B92881A58A0BC04D8DD9E68B6D2BC5034CF2343" + "0D1FE54991A6908B019EE018C843B9FA53EC7EE5F114ABE2B750D4E1E72EAFB4" + "FBB33A1E2C4D6272CEE27BBB13B5D23E24F6129CF5825F34AFC056F95F53A09F" + "6FCA9435CD5FB6C05F88B4DCE86CEABD7E0C785361D253BB9CDB3A0C6BC85183" + "01FF44F9E87F7A97EC9F02FAB5134F3BBFA1CBE44FA83F1C543ED9B870657543" + "5AC6A15F7B0DEBA9D45AF554BB0CCBCA12A6C16E5EE6FAD63721E4C3CC8D9EA6" + "8C6149993080952407AFA203F504A887B3BF84D2BB6E45E7CC5326533D63963F" + "FB72A9272C8FF637BE6E2473E9FCAB6B5E5E7CF3EDBDDAEF51C98D53170F9B64" + "BCA5D49F76AF176D01A6F2ECB339151F49E49A8F6E286C6D4122D650D5015910" + "FF7F28024693895C5803DDFFCB1EDC4679C8F535AC1597D9B28AC46E62888101" + "29C179556AF7882DEE17D58A97F434DF83646B33CFBAB90A6250851CF53D4BDB" + "4526337DCCB9D98A921676B51365DD08A5304D2A93534C52427E9AE5C1440592" + "C5536E171CF4FD1F43578FEAFB32FF01D4FED635D752568F90ECFBB164A5B176" + "3F70C72FD5BCDF61D01FF3236639C91C063C0B7A56AD03F4020E80BD9A5E2F16" + "1E0578469B9950266BA96BBB73C08E7FAE856E1703CF3CBD21418089148F7A9F" + "40D4D91151DBC4BAE8542359E882A19A9949CED5B75FF7B192DC279B3ED10076" + "053F58DE435FC5875654E98633A397141142229D8CD613C66344326D83992B3C" + "08F17BE0EC28FBDBABA12CB000B2A2B04E24D0C41BD6B580E999B257C007965C" + "4475A9D5314CD6C1FB9FEDD516E6B3C0DDD404D68D78FD4DE40931B1B872D4D0" + "1A2D46C9B293900D34EC91D3B693F4E72C228ED0294F6DC9B717260EBE75A471" + "EA4D7800A3E7B7B476D64DEA6F4DA726B376F07800DB5F83C0A3DCC2C7026A4C" + "378E880994885D6F7A8819D91A2D50D16D22BE592BED38330410E14CDDD4CE0C" + "48D62B7797DE44C07F26A79EF3A5830F321A35AC507E943C6DE63FE136823225" + "D6FC73D86D4C84399013E064E6683492907C7B78AEF2AAB180DC33E5E6BDBD6D" + "490E3AA8BE8E82FA6CB13BEA360C510F9B4B5BA6640427ADDDF3D66DED41D1E2" + "A06131E950136842732C273498D6A47CED4ED189B6E739361F68CCA0A99D5602" + "B97655AB2682E837DBD688C173DD4950DD4CD4D3A338F3FCFF8C7116EBC630D0" + "5AFAB8DF7C7560F4DE9AD92216268EE143A722C03497CE17EFE98F67580F0DDE" + "F57F15255E68856D39A4EB338A653346FEDE46663A62307F6590E2EE7AB928AC" + "5E8FA163AA74E40255D8D241668A1C717E3F28994350F49908A32E6FEC6206BD" + "F7936DD2CF6A87B9994045552ACCE6EAF1294E7327A13E6EAC16221A676F605D" + "6DA6365D0DB01135405013F874481A68330455281A41E83DF76D20D1DF75DFEC" + "A0917F3E94BED22D1ECED8A9FC7B2A2E4A5B74D0B0C9282BD612A48648993F9F" + "012BD70A0E43DC3D1C0A16711EBF6EA479DB941F68A6701B57F7B837B30C0A6D" + "771123D6FC70BDBE24440CE4E254A070534F1C1813C516791260A73689DFE1BE" + "AD6EBF6AFF7EE48DE1D59C62228B383E0ACA0690F805FEFDC54FC4F974BFACCD" + "FE33216CD2BC06BA7C2F55D7A0708C48014FF0C535CD83D54708FD703E8EF510" + "FA6072E25FDAEB9533D4806053076CB8E4FE6946FD1A670D1BDA92311D5ED5FA" + "245FA74A6F04AE66E3C9E0A7182CFDB210E5A2F28C95439964742A987A162985" + "DB91DF91D9529D8B850B8628A9C5C8455BDB417C927224A9A8FFCDFE00C228FA" + "284C5052577098151E33787F8287CB0D2431324555848A8D9CDFE3E4F0F14261" + "D0FBFC023C596C749EAEFB0A1784C8CFE5E7448A989FD8D94366B4C7D6FF0000" + "0000000000000000000000070F1E232B32383E")}, + {/*TEST Dilithium5*/ + /*public_key= */ absl::HexStringToBytes( + "1C0EE1111B08003F28E65E8B3BDEB037CF8F221DFCDAF5950EDB38D506D85BEF" + "032369A2CE572FD08BFC304B4848E78D752D77E97A28B99B9BB6FB5C7C633751" + "4B321ECDC1FB669F26D4171AB42B72720EE70E0519A6E1D3D6D9914EC1B21CDE" + "38B41AAC1D3ABEE6F2B7495C4C820C1FC0CC9E71E24CFB5C9C0D8EEF4264AF48" + "4FAE4D6E5DDE65D4DF72B61C6DBD26F861A5E0B853AC5413226FEBBABA5EB474" + "C6FB25A82678EA1606B452A23112221017B8C073C10378F9145641A8C078C0ED" + "9E421650F748892522AB9FB7D1FF8CF1CC71B8566E8DA33CD7361770C044349A" + "C440CCCDC6BBE35E6C55782766F38E688BF47821037299E344ECDECA17AD5D15" + "CD27A4F7B070661138EDE8ED72A8959C5AE36B1C46094A53CB21A7A42673F140" + "1C2B259494090E2F53D7EE7063431EE5858002D850AF909C3783436010F7EA88" + "625A36A0F0189FDE75B7E8C7E4B19D8527008328ADBC929BBC86E964CFC48B8C" + "F1DA5D7ED3333AB55C15072832214A779A5FD10CC04005F46C1AA8884A161992" + "472FD535B95ED18BDE1C6D8CE678D2817D69F90571103E8520E7313CE7B930C5" + "EBFAF2F4EC758B626B5543A068CDE0FD0E94E6A64475B23268BF0380D075508F" + "85128CA26F31A90C4A7D28440D54D4066B404588588B4CCF850B975C73AFE68C" + "BCD102755F61EB3E60323C576E529EC0BF23BFA5BEA39CB73C37E8395D8DBD4C" + "8DC8AB2F70A0BFC3A78C0D413F08D14D632BC0403B0383DBBB22BD9B113C8945" + "2AEAB11210097947FEAAA3C9F05D1D300C33A55E3FBC81259E862705C3A13B9E" + "E35F6B23ED10F4EDEA9519FA91B7BCD0D501B5ED57D9049FAB91AA779C725FF8" + "E9F78017EA7807FA254B7105E826D096C01ADAE2C5D138251A92A478A33373F4" + "DE912B83B6FB4B0D0DE6BC1118BB2FCFB07BD227A5F7F991439A13DE1238180C" + "DC55119E65C418584D807A926E4A9C0F70155EE196FB07656D9AA7982B8795DB" + "AD43D1059CA7F580D3320C0438A5ED5A7032B2E959678410F11AD98BE8826A44" + "262615645D759A862B2AC52D3B014A25E8473F1F1EA4CFA819930AB3A34D710D" + "EEE70CA13E88FD71AA064E6CB4697DE0E463B1370A6A3BFE98FDFE7B5471FF8D" + "F6A6879FBEF9AFB3519D780757D67440AC36E837BAC3833EEAA980BD82B79364" + "36A0307D164B6438869AE606E980518E913D0EE302396EF4EB25D9866E4BAFA1" + "01E5992931361C4A982253D58ABE3BD57107635A46F09512085F4ADA08EC8B1B" + "3910B0153B2AAFCAE5033EDD4153248DCD85B02C9A25D8BDC4068BB857417262" + "97A25AEC55C44AA28059B71BB9F34067887ADE4C1CA4908B19B3D78123453876" + "DB4DCEB42773069572CD8777E62CFBAF7203F020F281A6678F790720EAA20E34" + "327D7A63688B09A01F4D7088F7B5059EDDEB45C0CE39321C79521D79A59ECDD4" + "68CED0EA82CA484928702F57D6FC18D347AF3ED22AAF45ABB0F20BAB9E015576" + "07AE3ED9CF0E26D34D305449669EC6FC1BECEADCE183F7A594CEA196D059A1E5" + "50E547866CC087333F030E628F2CF1147925410ED0421DC7506138B1D19099C6" + "95E1AFDACE4153825B66A8ECF55A021D21EB9F848FE55C21769A755FA9807EF7" + "3A6C5BA15A06347D3F1C5C619A315598629106AC0B86AE0D8E55578292517258" + "AE85F72E737AF5638D096B76A3C57F1B9C80E770A2D4EA4E42FE469AD4212852" + "41960A8A86355EF22F583FE3BACADF8DA31D5C2DE254161BC6D10F9841DD27ED" + "462A6B94B6DEEA90CBAB687FB84B56395DA763AB4B7FE3095D572D77EFF3FF0D" + "8F9D19AA5AF7B676053DBEF64E61DD0A41D402318E3308669106259BF7A4CE31" + "B346A9E983EDABA05180149AB057F9972977DA7C6F46E0CDF86F3091F04FD4E8" + "3C6022E18CE4382B54D5DABA82E4DF1E53BF31FE4BB65A8524EDA83FD29D07E4" + "9747B75291CBC8F8EE1415EC921E19022ADE2C047E4DF3507289E9D79A8E6992" + "B48B8864204A416B769CC787D6DF4407E93D121F7FBEE0E408963E0609A9C75C" + "B3117CA583DF6E79F31C635BF0F1BE98DF550727A45D3CA337D79DE5DCDB0B91" + "CABBC30D7EF0AE1CA1E94904F78C1FD8FBA87545FDC174AD8190F9B5ED7B5869" + "494FFA91033FDC6117BF662EC5F2AF2634BA3F8C02210F1C9BCDDA9BB39760E0" + "0F25A7270C345666FB6DF85C919AA150CA7FC80FC0EACFE242EF55F429806362" + "8E61056C966DB9964428D9CE99108271E29A12328E23999734E036F18A0EB8F0" + "30E88062C56717E7A36314E44ECF357FF56EEDF90D3FB11B22A1B25905B379FC" + "CA5CA1ACB956E178AD3F51D535AD119813B1E70F7317651BC75CAC64276BB981" + "10B54EA0EF34541D73910721D657387677E332E9C8811C3FC1B923B2EE9C512F" + "6D09DF372A5F97FAD7123389CEE197B5C269E221D7EED3160A521E56FF8AAFAB" + "686179D09D78FC387B3EA6A672034D24AC7999D196B2316475F37DB8E9ED431D" + "F58341FA88003D3C6489E78053D8E44CE7E16AEF416859B3D2AECE09086A748B" + "7BCFD10F73E3CF8B31F0CC44DA059C69ABA5BC8EFAD45D3F376AF3A0DE6E1698" + "78BD842E28798E4743F843844BCDF8506F136391EC8E721DC2B6282D9C50FAB6" + "53A6ABF28947420E8C22A9A487D76A938933B34E497DA95394176B2774C09EF0" + "BB1ED8C3B131A21957B31A0B47CBFBFF0533CAF33125221DB6BA4A518864892C" + "F21D3D4D58B599A37A08F344AA7EF98E7D7D9D3316A6B115D9B8F20F93BC6865" + "734699EB54C888D7E5A0ACAFD1915352B294243712CFE82F85248B00045CF3D0" + "90C0C00D7CA0E3A1F147703FD94F717E49C81A7C3A76946E20A63F3B7C3EABA9" + "225ABE0B34CB0CF235063967D16BC8A69C130CCE287615CC053114167EAC4E95" + "BBABDFBBCF96BC0C0D65EA000AEAF490D723955BD1B4D69154D262F6A6D3534B" + "B0BC397C29ECC6B1447B75C953AF441DE2E7133A7AC98988A7EF9E6EE63558AA" + "ADA0603BD529776F05558D2DF5641C412E7347440F65EB823AFC7CCAE6B97108" + "B857287A0486DBBE689D770CA92471309E73AD390ABF56912B2B7C49242CEC15" + "7BDBBD493553735CB1D9B40AFC214DA153359C9DF576135901C2FDA58C0095B6" + "FCE3FD0731DF34863AF2882D53773CE7C182473722AA79A6B37D3EDDDE38FA71" + "DF8C0EDC081EFED8CE606E48299180EC6FE35FAB649910C48A6A29F9D0F85557" + "E10BC5AE2ECF028AE399F55CD7976028935CC03C0CAFD5003C9EAED247FBE30A" + "284CC4470A5525A6498E1DBBD3085C3F9D77C6064D0181BC5A829561560AA9A4" + "EA8173D7937A9428109CB3A66B2B3DE11F88F55AB21EB49B77A39762CA9264E0" + "156566765E2D3626B72B80BD1411E4EC53552828A24BC8CDC47F465FDDF4772C" + "7BC02066854011287F739ABA6047596747F4234AE227DBFFABF0E13153E2E069" + "F0B790251BE877FE5A198E808258639F5E79D3D5CD16F1A573724DD6A9F6990C" + "4502334DC66F65493490673AB30DCA7C031F0C212C0D8BC9D0C874B319A97AD1" + "CE9395D3D154203156C51CC3B9CB13D0BA1BDF618BC8EECA9DDD9412050CFA09" + "235727AA50D46F79AD6F3C5A1BB6B284C8311DCF93756859704DF8FC3BB8D2F5" + "E094E04502354942E9C852B208D4901834332EBC603270CB57ED418C34CE48A" + "A"), + + /*message = */ + absl::HexStringToBytes("D81C4D8D734FCBFBEADE3D3F8A039FAA2A2C9957E835A" + "D55B22E75BF57BB556AC8"), + /*signature = */ + absl::HexStringToBytes( + "BBF85FFD0E01C80C8C1C1931CD640BF273D49693C4C4BFF5DD20D94CF3757ABD" + "45473B9D01B1871305DA90EDC6707D5417129467F61F723950C1AEDF7055EC1D" + "4777AD8808E8B347D1D0921EBAB890CCA8E3A0DFD3003DE9F9CB4A97D884E1DD" + "042C958B816F7237032B20F8399A5182F46525EC357D2F03437403E0CB5DCA4A" + "13FD2F1B09205B9890F02EE5AF542943E6F9375ED08A38533042D6BBD50F3725" + "1B1590F63B4B58A7D1E1F31CE62E3D2AA91E1C767B9C3F5CB26823F97AD1D9FF" + "AB2875EB68FFA9B09946EF1D7012C02919EF13CB100C2E2C7987A0A5785B5F3F" + "3B948B7FD64B85B165AE2FBF3C47E039C3073CA78FC900BBCDC069FE906885D5" + "B13740A223AF5254F98C1D58E2FC92B0373E2A933353CC3EECD39F71D59CFA09" + "294E38262A4489400D222982F9C780CD0731D4EED916C5A31ABCD02A590ED8C6" + "FFE18B5FC7B6888E74726940D02CCC62D78BCAEDDA2E028E535CDAFC0E091BEF" + "50DE2DFD124F1E854F568527AEF4DC8455FDA01B6D0D43048ED5AB42B1D40813" + "994B9F6AA0C036C0DCF08F46B00FDA014477CF879B8FE5EAC4541B82DA00B434" + "6046865B092ED6AE0115FC834B58F75FF928D7D99AC8691FF70020ABA25480AB" + "BCC709E46EC510F4B8CADD60045954D3EDDA7C23E03D91694D3C3EA292C92535" + "E6B5FE171C567DF3729406CDBA2A5EFA59F156E9CCD0302FDC0F8BB759B05DFF" + "5DD802CE4D5506A19A69D70B3AB48AB17A2FE59589F73083CCA547FFB3F14683" + "C914BC1345E7387E831EE6037501495C92C357705A69F952A2F7CD30E03336AF" + "AAFC9C56604CD545E82AA12AF058DABA974387FE8DCDEC699A1E3853E26D29E1" + "578189AA8C2BBA1550DFBEDD1E4F224EFCD65491E54E56128AE7C2DC8566797A" + "BF2D9455915203A5C89E55DD23DF827436A8D6DCC5ACA82F9B183692159EC03F" + "2B798E557D147346D835A8D81B2E3D40863966863A54D9C87B5AACE963CD529A" + "DBAE07070CEA00B780E18131E64F0AD70E9158F590D00AD9177908B90345FD79" + "D0255771C608AF65EE5AC3C50166BAD057380258681941560F1133405FC2D761" + "1314B4381D5459DCDEDE4D39F3823BC4422BB1D736E7474A8089F0ECFA3C30AA" + "C119FFA42BF743F48E0FDD960292D3E49A14EB0590C8E02E421D54AE8A521951" + "5E21895989A0D71D4F451669CD652DA3489E5CDBC0876BA0A0899E7D8773B24A" + "FC2CD6D37CA380A5D0DD436304D6E1A4DCD638E8B95E6C95465C6690D4EFE8F4" + "4691E48DE22CFC691C7561AD8CC1A2C3CC9FB86FF6F4705A573A720471ED33A0" + "0E8A60203818A3961E4D213A78B8626394F75C282315574CCD725A67E20F0BF2" + "24BFFCABD702BFD4E1CC5F78BEC0E042E12ED4C9474BDD5EED2AEB53F4A958D7" + "F84EFD56EC030A94D200A539DE164E53C82AFE8C5F71BB99A01F7230B7AEBC21" + "3ECDDBEF5B9E9064874396F8A91B0575F68A4515DD158178BF277A90A3FEA200" + "9200DA2EDA2C8B3A47C104D350DF68E94C8A4023D3AEFBB70718FA2E27E6A5C3" + "F9927EC596AB540F463AE010EF71B89B49497F0CFD2939FFAB2A7DD1247DC4A5" + "9D8411A843BD84F1EA8DA33C0701D70AC27C4BDBD0D9A0CAB86B1FC5BE12458A" + "2580A6CAB4B765B842C67AD54CA5D40A24E2DDBCF01E466E08D9B3449F13E82E" + "16D61C723FB9462E97B7ABC70B2210ECA16B160D5B8F98A1794DCA92CD4F027F" + "3E4152EA879507DDFE7F1F21514153F036AABC33F172C95A9B774722800F2E08" + "CC44F923540D8AF64B429968B280364C1B7B4B3E9BEE40C50002657D994631F3" + "3A8F8F134A27EB69BA4395908BA40634B8F2703149275FFBBE8B483EA1BBA91C" + "28105136D97C470EE83CD21CEB2B21AAED98DB8AB165A7B4BE559E7EACA68460" + "3015BC349B0A51214E4E8FBE1D2D883F79FD3F1EDCDD3FA6D4B5BBD2A5B3003A" + "80F1DADE975B502C7F72037316BC55C1E57E500627D60E31087431D2C9D02CA9" + "F0EBCCD4BFE3C4BB536D4CFEF7510750452D444BE2C3D64D84A832965305264A" + "BB53E3614940F9B2F1EA6F41CA8F69E726690BA630630F8A916EE856268251B7" + "73DC2A5DB45D22DFB2439CA4B7AB70215D23E1F2E2617394FF783B0BFF6DF034" + "5CC927053D02C65FE2A86DEFBEBF5243A2EF6A6312BAEDB6E60DBB0C67CC9A65" + "5585CB458D6A04181194815F03BE87F6E800492A24C5D502D5ECD53DD6DA3679" + "95D32E8BBAA3EF62727E8A610E8D6B5C8FABCBE8893BDB5E038627F707E8464C" + "55DCBB76F0836ADD298A967C459508BC4E88BA5CA38F5A561A6D2D6CB2178D90" + "AC850CA2734B45C4A89AA0F152A3B53BCF1E13532B2B5B3878B205BD2B327DC4" + "9EB6660B9511BFAE90C1DEA5BDEB6DC5DA068BCBDC6C093E5727E387374F452F" + "963C307DEE865D41AA124CA803C12F9AE9299C3CB1345FCC568C6E71BE3366BF" + "30EFEEEFC7693C36ACE576B0D10F402F380009FD0EC068CB2D45984884EDF16B" + "C90B0FF6DC96309EA377A3CEC043CB76B6C885BBB848C4745B71E18C58E78050" + "E19BD7BE0831EFE9052A6A7DF8D4E8B9FC3E082A4D40AD73E4B3185E2F6DEDE7" + "EE51A4068FF2DA57373FD7E7BD46E0080F4C2C1F41BC250E6DA45A341F214771" + "F5531A67B0FD97B53CD72CFAC7215BC4111F094030A91383D20182210FCECD75" + "E59C4B0B33A3F93D865D847EC241E1B98481C5D9D27F0AE262B328650CDC13CD" + "99866BE9A5A030E83D84E32BD213C94BD6AF950433A4F00C6149783B00750CDF" + "D4F47AE75217EED1F60C366FA02CDB206FEB2A685D6B7D6A4C13553E2BE27794" + "F53B0EF57315203263EB026EA5E67067D22F92E26E98DF9AB386C2705B4316A6" + "9892688E601E7427595ACEE6E47F5EC598CC48C2F2DA1C32E062A349D89DCC8C" + "05C62E7B0CED6F2E93A7BD48A8004A8C5C605DFFC805DE079EDEE7CED98639A9" + "2F6CBA92F2089B145D2D61D9638C07347A2EF6B30FD90E111A7F5913F6E18795" + "C19E0B9F60F85BD8F5C9A963339441E4A5B79EB2E867961B18A1884A01A74483" + "D80B403EFBDBD4EDDDC1922DA3FBB37BEA97E0A5B6343E4367601BD21DB66941" + "C2698BF506B04861B5F3D3D80AC6DCB684D9C4369ABD04BC4BDBEF49C66E3844" + "513A3F3BDD400C080AC6EAD81E8BB0E7CB36DB7B7EAB4728391857F597A34648" + "63C312645B20AF02F7D0BD9A74DE2361A0D2D98A698975B30F1010D90A126078" + "584A45FFBCC65B47976AF657EA84E9730D9E363733736AC80103DC1C7573C4DE" + "E28A7BAC9EF72CB829450B53EAF984CD01AA31416CE8914B7D7EF849EB9CC172" + "D7096DEFDACF596B9B21A573E346A47A5A469E1D7939BE1982CB3954C214ED3A" + "3707D740C033E3EF780F4C48BADD863848BBFC9DAA8E3806A84B2CAC0CA23200" + "0CAF0203E908FCE18B5D62777225D2D7D584F2ED71885DFAF5A4DBEE02F285BC" + "34559B88EA9CE15B47A3B92A8D6F91591C329A5AA21A1BC424BA2BDBD164CE1A" + "8B78B38BEF2B47F21F7FB7A3C54E3EA4536E816E01656C8E26AD42F3CB906169" + "67C0DD079F956C9F3C844D5F339C62EE8A358C4BEC2D278AF718AD509C6B6661" + "3B580443FA6F11CD8D107693B5D7B738AA7E2FE662502D7504A9F596194180F8" + "700DC4E6F7E8E7D2307234494B8DF1D57EE14D6C97926EB1D8904D8089BE7D13" + "5B13D6DE30AA8720D67159BB50A834DE9079922B88931D458500626834DA040D" + "B768DDDBE67A758A02B448E36BA455034ADE36802AA42A7F2F234A5E1CC241E5" + "661C63AFCE59DFDCC0898347D2834D7264F5B21A47C5214ADC57AF76CE9EBDB6" + "8C71029BCF0C4C745A33454ACF0CF6D5C68DEA06C45E7D4D1755C5ACDC37FC24" + "34140EF707FD55FAF06CBB1707C27CE9D905905E37E2F147C9CB8808ECD05DF7" + "1FC5F1DAF910D7BD68B6914938BF0CABCF66C905C49563D7D70F2C3D3A4A4F62" + "9E3AFDE53BD14CD6E527E4F038D6A331D01468E22DFE93A379B3EC6DA6D1C2F6" + "D5EAB141E575F93C8CC5580DF4A3DB5C4C87D8548E9A851946D1B90D7527407F" + "1BA1121EAC54A11E6EDA45ABB08A7A78AB36A76EAD7FAC4678E52464EFF398E9" + "0215AC316DE5A6EFE5A7B4A95DF92E4129F3F91B316F756708BDF37C01C12BBA" + "A091F94884E38AFF3C7B8140888CAB4F7F867EADB0418584B6F770740250936A" + "138AFF52888840677D8121C583806FE27104DE528813E56226B652C5869BB500" + "303834D9C9D197DBA1DD5C4734307AB8BD006B66EF45ABED2E31377BEAA19DAE" + "6EC82AD77C4C07744F9B93A8DD4CEE1A62A552EDF4E277CACFF1F964DA7AF8FA" + "FF6B56E3EBC06850A9F76ECFB2C2BAA660958C6D1BA96BA8578D066D6AFE6E8F" + "B2052B7421D57DE5AB4C1FD55170E9EE33EB32FB3D2C886142055EE8428BD745" + "AABE1D15191FFC93A3FA7A86B427EB2370B78A67A485AF963BBE1F2246119FB4" + "69A002D7029FC4F5F7E0125FDA7305ACF6C80C7BD3F668897BA81435F426B842" + "5C9855CD46C3448BBAD0739BA88ABC273BCD0FA1FDA7F4F8183B5D73D16C407C" + "452AEFA2E3CA9F2D9D638D966A58788B48BFC57D3FC2085FE85A7F7ADDD91EFD" + "1BA0226046B127A97BC480479B92881A58A0BC04D8DD9E68B6D2BC5034CF2343" + "0D1FE54991A6908B019EE018C843B9FA53EC7EE5F114ABE2B750D4E1E72EAFB4" + "FBB33A1E2C4D6272CEE27BBB13B5D23E24F6129CF5825F34AFC056F95F53A09F" + "6FCA9435CD5FB6C05F88B4DCE86CEABD7E0C785361D253BB9CDB3A0C6BC85183" + "01FF44F9E87F7A97EC9F02FAB5134F3BBFA1CBE44FA83F1C543ED9B870657543" + "5AC6A15F7B0DEBA9D45AF554BB0CCBCA12A6C16E5EE6FAD63721E4C3CC8D9EA6" + "8C6149993080952407AFA203F504A887B3BF84D2BB6E45E7CC5326533D63963F" + "FB72A9272C8FF637BE6E2473E9FCAB6B5E5E7CF3EDBDDAEF51C98D53170F9B64" + "BCA5D49F76AF176D01A6F2ECB339151F49E49A8F6E286C6D4122D650D5015910" + "FF7F28024693895C5803DDFFCB1EDC4679C8F535AC1597D9B28AC46E62888101" + "29C179556AF7882DEE17D58A97F434DF83646B33CFBAB90A6250851CF53D4BDB" + "4526337DCCB9D98A921676B51365DD08A5304D2A93534C52427E9AE5C1440592" + "C5536E171CF4FD1F43578FEAFB32FF01D4FED635D752568F90ECFBB164A5B176" + "3F70C72FD5BCDF61D01FF3236639C91C063C0B7A56AD03F4020E80BD9A5E2F16" + "1E0578469B9950266BA96BBB73C08E7FAE856E1703CF3CBD21418089148F7A9F" + "40D4D91151DBC4BAE8542359E882A19A9949CED5B75FF7B192DC279B3ED10076" + "053F58DE435FC5875654E98633A397141142229D8CD613C66344326D83992B3C" + "08F17BE0EC28FBDBABA12CB000B2A2B04E24D0C41BD6B580E999B257C007965C" + "4475A9D5314CD6C1FB9FEDD516E6B3C0DDD404D68D78FD4DE40931B1B872D4D0" + "1A2D46C9B293900D34EC91D3B693F4E72C228ED0294F6DC9B717260EBE75A471" + "EA4D7800A3E7B7B476D64DEA6F4DA726B376F07800DB5F83C0A3DCC2C7026A4C" + "378E880994885D6F7A8819D91A2D50D16D22BE592BED38330410E14CDDD4CE0C" + "48D62B7797DE44C07F26A79EF3A5830F321A35AC507E943C6DE63FE136823225" + "D6FC73D86D4C84399013E064E6683492907C7B78AEF2AAB180DC33E5E6BDBD6D" + "490E3AA8BE8E82FA6CB13BEA360C510F9B4B5BA6640427ADDDF3D66DED41D1E2" + "A06131E950136842732C273498D6A47CED4ED189B6E739361F68CCA0A99D5602" + "B97655AB2682E837DBD688C173DD4950DD4CD4D3A338F3FCFF8C7116EBC630D0" + "5AFAB8DF7C7560F4DE9AD92216268EE143A722C03497CE17EFE98F67580F0DDE" + "F57F15255E68856D39A4EB338A653346FEDE46663A62307F6590E2EE7AB928AC" + "5E8FA163AA74E40255D8D241668A1C717E3F28994350F49908A32E6FEC6206BD" + "F7936DD2CF6A87B9994045552ACCE6EAF1294E7327A13E6EAC16221A676F605D" + "6DA6365D0DB01135405013F874481A68330455281A41E83DF76D20D1DF75DFEC" + "A0917F3E94BED22D1ECED8A9FC7B2A2E4A5B74D0B0C9282BD612A48648993F9F" + "012BD70A0E43DC3D1C0A16711EBF6EA479DB941F68A6701B57F7B837B30C0A6D" + "771123D6FC70BDBE24440CE4E254A070534F1C1813C516791260A73689DFE1BE" + "AD6EBF6AFF7EE48DE1D59C62228B383E0ACA0690F805FEFDC54FC4F974BFACCD" + "FE33216CD2BC06BA7C2F55D7A0708C48014FF0C535CD83D54708FD703E8EF510" + "FA6072E25FDAEB9533D4806053076CB8E4FE6946FD1A670D1BDA92311D5ED5FA" + "245FA74A6F04AE66E3C9E0A7182CFDB210E5A2F28C95439964742A987A162985" + "DB91DF91D9529D8B850B8628A9C5C8455BDB417C927224A9A8FFCDFE00C228FA" + "284C5052577098151E33787F8287CB0D2431324555848A8D9CDFE3E4F0F14261" + "D0FBFC023C596C749EAEFB0A1784C8CFE5E7448A989FD8D94366B4C7D6FF0000" + "0000000000000000000000070F1E232B32383E")}, + }; + + for (const TestVector& v : dilithium_vectors) { + // Create a new verifier. + absl::StatusOr<std::unique_ptr<PublicKeyVerify>> verifier = + DilithiumAvx2Verify::New(*DilithiumPublicKeyPqclean::NewPublicKey( + v.public_key, DilithiumSeedExpansion::SHAKE_SEED_EXPANSION)); + ASSERT_THAT(verifier.status(), IsOk()); + + // Verify signature. + Status status = (*verifier)->Verify(v.signature, v.message); + EXPECT_THAT(status, IsOk()); + } +} + +TEST(DilithiumAvx2VerifyTest, AesVectors) { + TestVector dilithium_aes_vectors[] = { { - /*TEST Dilithium2*/ + /*TEST Dilithium2 AES*/ /*public_key= */ absl::HexStringToBytes( "1C0EE1111B08003F28E65E8B3BDEB037CF8F221DFCDAF5950EDB38D506D85BEF" - "6177E3DE0D4F1EF5847735947B56D08E841DB2444FA2B729ADEB1417CA7ADF42" - "A1490C5A097F002760C1FC419BE8325AAD0197C52CED80D3DF18E7774265B289" - "912CECA1BE3A90D8A4FDE65C84C610864E47DEECAE3EEA4430B9909559408D11" - "A6ABDB7DB9336DF7F96EAB4864A6579791265FA56C348CB7D2DDC90E133A95C3" - "F6B13601429F5408BD999AA479C1018159550EC55A113C493BE648F4E036DD4F" - "8C809E036B4FBB918C2C484AD8E1747AE05585AB433FDF461AF03C25A7737007" - "21AA05F7379FE7F5ED96175D4021076E7F52B60308EFF5D42BA6E093B3D0815E" - "B3496646E49230A9B35C8D41900C2BB8D3B446A23127F7E096D85A1C794AD4C8" - "9277904FC6BFEC57B1CDD80DF9955030FDCA741AFBDAC827B13CCD5403588AF4" - "644003C2265DFA4D419DBCCD2064892386518BE9D51C16498275EBECF5CDC7A8" - "20F2C29314AC4A6F08B2252AD3CFB199AA42FE0B4FB571975C1020D949E194EE" - "1EAD937BFB550BB3BA8E357A029C29F077554602E1CA2F2289CB9169941C3AAF" - "DB8E58C7F2AC77291FB4147C65F6B031D3EBA42F2ACFD9448A5BC22B476E07CC" - "CEDA2306C554EC9B7AB655F1D7318C2B7E67D5F69BEDF56000FDA98986B5AB1B" - "3A22D8DFD6681697B23A55C96E8710F3F98C044FB15F606313EE56C0F1F5CA0F" - "512E08484FCB358E6E528FFA89F8A866CCFF3C0C5813147EC59AF0470C4AAD01" - "41D34F101DA2E5E1BD52D0D4C9B13B3E3D87D1586105796754E7978CA1C68A7D" - "85DF112B7AB921B359A9F03CBD27A7EAC87A9A80B0B26B4C9657ED85AD7FA261" - "6AB345EB8226F69FC0F48183FF574BCD767B5676413ADB12EA2150A0E97683EE" - "54243C25B7EA8A718606F86993D8D0DACE834ED341EEB724FE3D5FF0BC8B8A7B" - "8104BA269D34133A4CF8300A2D688496B59B6FCBC61AE96062EA1D8E5B410C56" - "71F424417ED693329CD983001FFCD10023D598859FB7AD5FD263547117100690" - "C6CE7438956E6CC57F1B5DE53BB0DC72CE9B6DEAA85789599A70F0051F1A0E25" - "E86D888B00DF36BDBC93EF7217C45ACE11C0790D70E9953E5B417BA2FD9A4CAF" - "82F1FCE6F45F53E215B8355EF61D891DF1C794231C162DD24164B534A9D48467" - "CDC323624C2F95D4402FF9D66AB1191A8124144AFA35D4E31DC86CAA797C31F6" - "8B85854CD959C4FAC5EC53B3B56D374B888A9E979A6576B6345EC8522C960699" - "0281BF3EF7C5945D10FD21A2A1D2E5404C5CF21220641391B98BCF825398305B" - "56E58B611FE5253203E3DF0D22466A73B3F0FBE43B9A62928091898B8A0E5B26" - "9DB586B0E4DDEF50D682A12D2C1BE824149AA254C6381BB412D77C3F9AA902B6" - "88C81715A59C839558556D35ED4FC83B4AB18181F40F73DCD76860D8D8BF9452" - "0237C2AC0E463BA09E3C9782380DC07FE4FCBA340CC2003439FD231461063807" - "0D6C9EEA0A70BAE83B5D5D3C5D3FDE26DD01606C8C520158E7E5104020F248CE" - "AA666457C10AEBF068F8A3BD5CE7B52C6AF0ABD5944AF1AD4752C9113976083C" - "03B6C34E1D47ED69644CAD782C2F7D05F8A148961D965FA2E1723A8DDEBC22A9" - "0CD783DD1F4DB38FB9AE5A6714B3D946781643D317B7DD79381CF789A9588BB3" - "E193B92A0B60D6B07D047F6984B0609EC57543C394CA8D5E5BCC2A731A79618B" - "D1E2E0DA8704AF98F20F5F8F5452DDF646B95B341DD7F0D2CC1FA15BD9895CD5" - "B65AA1CB94B5E2E788FDA9825B656639193D98328154A4F2C35495A38B6EA0D2" - "FFAAA35DF92C203C7F31CBBCA7BD03C3C2302190CECD161FD49237E4F839E3F" - "3"), + "7E0188CEFDBAB31CF94FABE34E3C383EFCA7FA815D2C70826B1A046818E2A05F" + "16B29C1C0BBBFC5707BB7051262FD0A2E34B7107D4619C54FE277549DBC23ED5" + "75FB86BF077464CEC3394F2620FA11DDDABB793A9EDD03E66760E98D145234B1" + "E8E66E1EB1FFBE34D368617BD99C01AFF2445A27B364ABDDCCD4CCF7CA3EFCB5" + "7F5FF27C88AF9EA999C25EC73D1584E11C38898A77308D03097CD4AADE9C5FEB" + "D06976E85558798084325BAA98F1C7F7BB8F39FB8B5BC8C14C48D88B8E600D23" + "A17F2E342B6AF7DF689B74593DD3D6A8780D88895576526642ACE1C13636BCBB" + "BAB8C7837BF10D59AEC63FA8DA5F24DE87190E5224DDE315B86E83A4E2647ECB" + "674F51C85DBA38D6C585E61484942DB8C5407D87B8BDD4BB81E6BD2FC88DC6F0" + "DFC3B0868B74E1FB36B3D39D0C5478273BEDB1B63AAED9342DF9527535B76C02" + "1FB26B994C18B45E1EC91717A34FD2714D39FEBE73CC4A95B17D7CAA8F19A005" + "91A3AA7249B084178BFF5A0F95B0E09D04D17021AF73DB6E3CD328492C0308F8" + "EF8C50BD3E7C1AD22274DAD26626A21E606AF3F513D1E465AC526593450E1D3E" + "02EBBBE48A5D053926E48D15B5F105E1952263A8C8F14C588598BBA82B1CDCB3" + "E4E5D1F7D9E811F90F5D899C61F700B56D3B6571FE97E1CAE97B42EC0C4D33FE" + "91B4EB518879677FABF02B369D7920AF961B3059683E9275498EC7D574E4C2BD" + "CC35EA1C731B151F30188930DBEFDB25DC7A4C6622929D69AFCF67E6493F6F73" + "0AD61F86B490936B0CDDC274353A26A69F471EF5B08837356167A9BB9835EBA1" + "778B5DF38AE2CE7FFD0817BCD868A758584CD6175A1C48E3F380B7CFB385E585" + "35597C6FC0412653F5DBA4BB3996543FEC8EBA277C7481AC0C7D5B7036213A90" + "6A65B76DB7F1602C06CD792EEEBD001353CE82DCD9731773B55BB712E3F1C156" + "9454903E87ECE65110BE634F6BD5E8622EED535824781C921B3D242AEF8B6867" + "84BB870D8866593FC4B9287A5387C3D4AB6E4FFF4752C4CE3B5ED895E7F914F7" + "8A25819BD5A3CB909A72D192A77BDDC5CE15137C28FB7FACBF06070A68BC11A8" + "95F5D45832A11F81651F720B1FAA979FE7F375DCB11D240F1004E52FDCC07791" + "D66C7AAB16BE58AB0A5BEF8425B45D9F9804FCDC83334ECD459DCDCE4EF51092" + "A57314F249BFD7B2A11EFB2AC2C83E4F9453880AF8B19323F292D978B4C0EDE2" + "D2C78E4A96BF8E6B6F4E4F519F226C9B634E9335C52290119F57B81577BC756F" + "3146A056114DC877509F9DA9ADB614278D09284F8746D54420E2373F74AC06FD" + "69B6DD4322273337360582661AF26060ECCFA680AA4AB56A5715E169F6202094" + "3FDB1509A029A0514C028535EC4413E78A335680F59A078F279768D55B67FC21" + "76CAE7AD4CF66765FC3C84FEE0010267747AE8CFDEAB4E47F280ADE944C102A0" + "487F5FC2C1A7C81BAF61C574CADC911808E427D99339E54B2CB7CDB673209B8C" + "6453EC879202DAB26221CA1C7F4C42D8823E8795E73904A9CB8F154B04D7B621" + "B90880542BE50006CEFCB58442F02F92B4FCBBA4EAD0FF87673F4B8BC8160353" + "41DCB4B260B93F9C4C6A650AEF7A5BFBECC0A5E5BECDF8AB8F6C42C5DEA1003A" + "66386CFE8163229A973FBDEBB589FAA4CA291B2C4CFB095B18F03A7876F87854" + "6DBE6D5D75FC6CB2741D3902346F182A1FE400D443256C92EB26B7840EB5FA4B" + "CF67C1566E34E868A4F26CB33DA4C4E6904EC3DE60256077B2D0D742B942C738" + "2A8214FF519EC3C2C61E841D7860975A2112AFAB01FEC4A221CAD2CD07A742A" + "2"), /*message = */ absl::HexStringToBytes("D81C4D8D734FCBFBEADE3D3F8A039FAA2A2C9957E835A" "D55B22E75BF57BB556AC8"), /*signature = */ absl::HexStringToBytes( - "AF5920774603D20E98A79AA3ABFA32B6E22519E673E37AC4AC73FE85341E2C29" - "23C1992E1B0BBE3873D7C8FC5662F207BF58EA381CD4A3A0C062DEC45BDAF8BA" - "0AA52BEF6FA14F3F6CF28F7620BF94A92CC27D045414A64D65C0149630528024" - "28BF3987A2D47516CA5C78AAB96B7BE11BCA5F2C5A26F3FCE3A26E8E09A2738F" - "386F75D448F937EF19A846BD4DD949CAAF36DB5629884AF53A023E3F180FE4C0" - "FAFF7BE5DFE4E89ADE3095A65600421461AD08C129D6CEA851BB39C0D7A7D151" - "405689A091FA4DEBAC373CF54AE078F0AF7557BBC6F06A535AE8949E0C65308A" - "59840072375295802D0E2CE9A3DA98426A00FF03FE80218C0EEC8EFE581CB9CC" - "9A7D66B20645A8CD0490D3CE4F7E6FEAE9C9EB7A57F964D0EBC7C90B7A9F8630" - "0B3E8095E64D1294CFC4B4D9E272E8FA8DB5707D7004AF22DBFF9CFD4863DF57" - "3FE004341DA3CD4A3082532C2620455FA37C562BAFD5684EA128AFC79E01FC9B" - "31E8433BAD7C029F2F13CC10592D2332E3E08B80D350463DE72750B1F806F493" - "E143BD5FCA7D1698081B31BF876B2A1BC9DF50952D13B6C1321B1111172145A6" - "27AE0B4427B98975CBFFF7D68275754B45B682D709E168522E84FEA7DD3BB0F4" - "1505FF71926431D1A90D4CBF9A527AD4E284976FFF8BD9D6224A4F260391A987" - "FB6DA6EE42C2A4900F407CE1F02E322475D313FBEBB68C2E05730809448A7428" - "A5940139EBDF1B5556FCC5D42E1A13F32230CB6F0724831D0D071BBA5A670480" - "6F475B74BA91B6E385D48620958D0AB1BF2B184E10F3E753B71337BE9EB65378" - "6785B43AC7E5C494AC1BCB043D461425B36098AC93055A0105AB8523B61D024A" - "6E9B56A42D3C04726512AE4CFE05710446B06F694234EE4FA8FEEDDDC5F28A65" - "EDE2EB58E965FE3627A571BC45B397ED092AB4BE00041729C4D192FE30678279" - "D223A848CF4366E92B3F68DEE97C9B4A7FF22F937BE6C56639961DB29FA3CFEC" - "FFF293140886FFB92EBC79DAB59CEAF869C64F8EAF585CE97DD6B78F892772DB" - "88A958CF0AB557A7FAA83FE621477E2B84497AB5A8ECF4A7BD32DFB902F05D2C" - "A31047D0F1919ADDE1EE6DFD58E59BC4DAB3CCBBA36AAAF6AFCCC7B095CA94A1" - "95BE9A289526B588C3A9C56876FC415D521D442BAC0298D302419AD527DA249C" - "2A660CD064213FFAD563183F37972578EEB9F70AC67AEE6CC2B71F283A95930B" - "554738555791C25E7A399E685636D58D69CB6BE793B45C1969E7D5615627EBC3" - "2EED45440F87880D2829FA4FC871866164D259ED95D2731871017FF51894066F" - "AE1FFA6F4B4A6F84FCFFDA09E718FA17135EDB3F48558D5BA67F9E6F0900340B" - "D04DFE59B7BD67745884FB84AE3F8EE763D202743652D4F7333450580490B9C7" - "44935B19C1D5FB0DB5FBB461411362838037EB7EC3F63F26C893E7CC1C3B3F47" - "67ABAE00FEB7BB99B1420BB29EA614747896D9EDCF8107FE504C9C308A8264DA" - "CE318D87CFE4761803E9A60DEFA6144AABC1F10A45B140DED754E73586C467BB" - "7BF19EDEF25BE0C65E93C5E5EB8F880CCE4A858757F8FF56062B1067F4106F76" - "B7007F6EA6F945047E85BD0FAD9D26994F678A0612B87CCF9C0CF9A433D889C9" - "6E4C12BE372277005B06AD127105D16D8FB142AEAE5373ABD61D9ADCFC5550D6" - "23CA3B8824B0E2E08C2BF4E2841EAC4C5DC56CF8954CF207C263F27C9F309F10" - "307C0D84A65878425031375DD810D2D7E51098A3814350795C4A077FA40DD44F" - "0FA7510F7C3F631407CF34F604C7B335632A20D2AD419BD7CC6D4242B1C66C35" - "E5A5EDCCB13CA37D3B50465F3B4AAFF7E3161E7936088AE08401FD2C37D67A2F" - "F91D3E6F08686D64BC2FC6C57106E49FA384AC22219F07EE8996CA3DFF59DCC5" - "092A4BADBE87AEDE7F69A04C79B33BDF35D4A0E4CB4B55019CB0BF275295B93B" - "DABEA516CA2B616A56918600B724BE7A01EC4EF54312B30D66F507815F2780FF" - "EE7C30F8425A92252CE550FAB4E902E7B382D46DBD20EFE1BB0EF8A496873C09" - "C4CEB0303C7F1DABA0102DE94190B6AC6DC810F72BCA3AA292FF38BD51A7FAB8" - "509EC4FBE0EAA3C986166A674B7871155C348C477EF8CEDC832B5ABEE71A8D18" - "D06DD0F5221160ABEB71E6E82CFABF731EA3515A76EF07B2C16C63B37F7AB73B" - "67F005929A753E453B930C0AF432277FD77D8A1EB8022CDE9665763B014F0A67" - "2A04160B0A06F5540F4C264B7F22740690A2352DC863B588303AD51F0AE162BF" - "79797F07B534501CBBFDB713A724AA98E19532187180CCFADC6EBE3142FA7DB6" - "6CD4DE7B9FBD4C8235686DB68CAF489AFA4E1E87AEF0CEFD8037E3A578EE62EB" - "7F94ED5BC0B58EEA4B4C45FC56D31D29944D095AC96C29083DA2C77181D97A55" - "FE6E903A2F2783DE0BAA5F47D704785C33E8D5C87ED61E65459167310EB7A995" - "74EF819AE9161A3BD09634803D9E1E4EC7386D7946984517213AB9CF66AEA551" - "CC457C39F86AF294CF7B073F563ED4DAB9419BDF004BD05C92B4E80EC3CFEAC9" - "7E1DDA554FDA625C4B9B039BAA7C5A2F6F97057792483CF5F852D4C3AC71AD50" - "F779953DCFE2F63ED235D8E1D5345D6C6DF0555CC2631DEAD9B714BC4C16501E" - "01261381F3679715345123388C852D57DCF1941D0911D49FEA7143FD2FC343A5" - "075B64CCA48291DC28B83F76074589EAB217C7847840652C0E3AE278B3B6FB0D" - "800C5E7DB79D5CB9CC1A87450C00B7677812D22EE20FDE8C1753A7FB93BA8BBB" - "8595A6393DF54AA9CDB6E0879A26E49BD3B01513C6053A0746C8596CE5E5B225" - "CFCA26AB8BF12F1FE0A647A9E4453039A1226194C46E8B98ACD710F18FB7EC05" - "476C1CD8FC3112CCDDB1582B8817C18FE315353E7A47C821E9EE3A43CADE1B80" - "D92A0AE8DCEB4DFF766A54DF3665FEFE3C252B72DAD7B1E3359E7FA25562C3E3" - "9DB521CE1874111FB090DBD38B3180AD034B57B031DC4DD6AF7C1A8AF3F6CE7E" - "DB1A9E4B6D4A5920E3620818820659762EF7A4243F51DF2D8A900737D5810569" - "9B4E10CBCB359C7F3A4007697C482050EC33CF8041916A3B919A50D96EF0F589" - "FD4556F30DBDD942EAB79DFA97C07E30247074352E1BF98E349CC7EFA5A1B8FC" - "E4F18F1FAF6F07C99C321448B0395C8A9CBC466412F89C1A98BF5715842844F0" - "E8236FA4696C4658B8FDE4425D09D67A38AC7258E5D5966F2D3FF66A0C0CE76E" - "7F6B81A1BCD047FD3A205BF0CCAEA3B11079909C6CE5698F32E1F3409658FFA0" - "1EAECB4AE2B092B78989DAAD6623BB11F49F0F8F8699EC05661502FFCAD03CF4" - "15191A222D3C4C7B8AB0B5B9BBC2D9DCEFF7202D3F4244494F525364666974C4" - "D9E6F5FA0001041927373D5A7680B8C1C9FE2029383B3C484D565F65799D9EA6" - "A9ADD2DEE5E7F7F9000000000000000012243248"), + "EB5742B00BD29D1365DE0E434DA8A154B0D939088507EABF21C68FF30BAEA9F0" + "E6FEB469B6D4F14FCFA520ED2233A54778CE4FACF32A82593F741C3F1351DC21" + "248C06F0688F3566AE473B0602E20DFD336FCDEEB016206C1F3AE2639466F143" + "76391C675CF50839FE2C29C3D159BF45413CB9119B7626FE5D4365D7A910D579" + "FACCFF17CFF7959FA9DF0E73C3DAECF1892E7C5A19F009A19186A99D2864E951" + "6E50FF8703E10BC320C976AA76E43064C88FA5AE0342FEBD206B3D365667CEDD" + "C8301C80FD5E0FBB344256907A4634F7C28DF75B6B8C959A9F659584A5E0B1EE" + "70C2AA757EE84D878E52992D01EF38D77625CD9544B8281958EC99AC5C735506" + "BEA736BB9FD82CCFF5B3FA30BDC61EB6FB16C6729A0657E4DEDA0CC7841E11E0" + "5087DF7724A6FCAA8C9F538662FF043C54FFBDC4DCE9F76CF07DB4A2DFF1D1E0" + "63D94C71730F0AAABFC67F8E97DBBA4714F84948F4B8E85BFD9B745833B3490C" + "5B4FD166B2A128E8843A2C9D3D852599BDC7C365990EC971C4F1D2B1E7E34686" + "66FBB7D2CCC31FC1B64D0E97BEFDBE7FD3F47318C3DFD70A9B3A0506CAE57623" + "E77E2953E62DFDBD1EC81C63EAA41C58E835206914C5A60884EB0A4DA40F9542" + "582FCEB8E5400EDE7C75ABDD0C97DE2C1842AF5D5C667CF49F8C459529EB0CDF" + "D2F8F29570D637AE6F1B87B929D9D0C394C7D18C32E3179B4F089C0B2D31DE59" + "0E32A06DE6EFE438246864729FE67739BAB47429F23A460BE5E3584432A3CCB7" + "39619CF750405157C405C3C8F18C7BD351F3A31F7CB3442BC8ABAF8D1BD7EE2C" + "299F12A80A5BAC18FCB3A35E4D908AEFD35E4EC283749960333DA17B670FB434" + "D4519CB3A89FCCEE6D9DAA514C4033D44DE0B44BC2313FCC0D971C84798CEC07" + "786B9788305950C776D3FA28045E795CE83C9BEE884B4DA3C9C52DBEC6C918DB" + "E2925CEEB303D8A9BCF82280EF93487E6F11BF5427274A39D0AEC18A97AA8220" + "E32A88DD0FF84A762D08674408197BB33D79F489CBA1EF67EE978E78B7C96720" + "E44CE9C63146739311E752671D14529F616EF55B9375DBF5D4065428BD38FEF2" + "E348AD8660F7D1A89DF1B4E997D1D9F7A1A3C920D3CDB86279E823F9640D5A0D" + "A87C72257F1B147A881FD6E878EB1196C7A2DE7602D21D69055C927BC593CBA3" + "80687CE2CA0B7E40EB175C02409282318363D36AC8009306D913758204F394DE" + "0D5B49FE7882B3665BEDFF8B6B49AA1A7B26E5CAE27E6A0FCA4986468703B2D3" + "2675B3812F59B7E6DCCCE73CAAAF7FE503B766AD05D5B2E5DBC77999B6927158" + "90AFF83BFD63205A42A59F6EE3BC13C13E3A53C4130D0FE1024F871C1C149AB6" + "DD715EF9BD810237EB0FDCC21645BDF31CE91D324F76E7CFD7F09B0506CBAFF3" + "7BE519FBE9C8AC7C44AB78382BCBB2AA303C662BBDAAF8C3B8EA07BCD5EE1EC1" + "A57356BE728FEBBD4463502AC998832A3CA40BA5B64F1A2D020BF350017DBEEF" + "E43C292CCC13E8B44FF8D929BE6C5B9517FA9EED7259C7C87EA63D54E3F61789" + "08CC80EB036B0D0FCD9398CC194B21E45A0E0A9AFF15D2EE81B497BD55DE0B60" + "8DC5CF278AEE096D241C73C7385D2087F4B86DD890538F37A297E41A0E7F2F97" + "917FBBF369E36EB0A4C12733A8473C7636393FDAF40932E3DD02B67A3A3A838F" + "93D1EA0DBBC6D6685C5E82DC2B91D86FBDA077CA826FF515383768F4D03A7BDC" + "41F4F91695C01C02666B4134C51EE1F6E6F8283E336D2CCC41154A23211F9DB0" + "6530A3707095A4F21F2D3E423B5D059A8DF17E62E84DB880477F0E6A7CA063B5" + "2AD819FE9F11D4822467EA80272BBA5A56608FF5748EE521876F89EEF035EB83" + "B092E7CDA8329850BCBC323583AE31D9FE5725B8ADCFEB41EE8297ED7D84EF47" + "E76B7193891572DE286F1630FB03A93262DE3E893949B0671E7343DADB408E2E" + "76793F53AF0346581D41D12CEFA435B9EBAB31134811A237DC0E815B5925C664" + "9E6D51AFC7DC9F3416F3A84C1A440D82753D54BF17AC51DD047C3F90B3455D4E" + "31B9DF9E41E99F26800FBDDEC1F62777CBA1ED83F15D1E807F4DC638EAC9AD86" + "CAE3BF25AB460EEF4E55C37C2225C3BA2FE12D8ADFFAF06488FB839369407ABF" + "DDA75DA47446414B76522011EA4084C521DC423FDA10EEDCB864383517936DBA" + "DBA395433E4AD4ABBAC6E58F3586BA22908AD9984673B540BA45F01AE9F1CB83" + "4B6EA8E56E4280036F7FE9E61C5BA2AABAD0161BE181D1CFBAC87BFA2AF311D1" + "14812894C8E92A7243C37C1E3DCBAD00F536DBAEA1156D0062C1265450B005BC" + "1C20C637CDDD7378EA4CC08771AE4D5F86A43518B660FDBB93DEBA344026405C" + "5BE26FF5F62AA491C5A9593C11FAE4191AF7BAD9044E60D426598A9CF42BD88F" + "90A2DDFA8F51E45FB593054680A4871D8A6886D978D82D0F715905E80837D843" + "0CE568DD7D70D055EAF6F36DA9335905D4EFBB9CFA2250F61992B162623150AB" + "C0F151A55FBB0A9564CAADB134D0619854EA664985B02ABF8A76F7B9A15C95D0" + "190FD709226EC0684E804F6E7B5A9CCABF99790232F60132FDBB29024F8B4FE4" + "CA7C7234F10B58133098DA1CB0EB456363DE9C9F2D0A3EB3851855A50ADC06FE" + "5C4FA08084B2B5056F9DAB5B5107397CF52F98C1AEB5CC62BC53C47F0F1E6F90" + "7224C384EDFCE3382D00E04394678564E6914C46848BDE4ECE80394D494D484A" + "C4454D06F3188F24001B7CB605BF525CAC0B1B8B1D80B4481D3373828C6C5DAF" + "1599EF7C47FB9AF4F790749FB5330AF057C1A9A38B493C2451719D239037009E" + "4D09738F07BB4DBFE2093279338F5D2C2524988EF5FB9B3BA864D520A5196681" + "57847791960EC557076E628E92A81E7BE0D3D0F5310348BA0ADEA97FE9E6FD5B" + "264B31CC1068FF8516A6157E1440AE2DAD72DB883E3FBFCEBA66A595461A9CD4" + "BCABB8EB629E0A8ECCF011B30F90FE2EEF622A8C9BD30AFBBAE92EEFE075BB47" + "CA020CB1B7309B7B1E46D8999B3A8EAB58A5CD7C79FD287E78EDDB5602C17972" + "BD417073D78355E0C83BC0315847D348C7A61054688AA0E633331900F08DC24C" + "B324ABCC29A8ADB18F6B2AA74EA5E6E506F5AD4E870DE2B965682D7503368F2E" + "971781B5E63FB68507D6781837E91E0C880E094732B65F08DEC61813DE64A626" + "9EC0557D3A00611F5D1C9BE130DE092C80E603EEBFCECA6343819CA7FAC59A95" + "14691A7376F026C226B345CAF856F04B9A704388F223DE421D95EDD2EC184B94" + "582D8A97798FC2E14B6493679A2BBAD860DE418460114E8F218F989CC638A10D" + "22284A546C7A7B858C91A4ACBDC0C5D2FD132C3E4B85AEB2BFC0C8D5DBE9ED03" + "13181E283944516C7A8596A2A8AAB2DEE1E2E3E5F41F2021263F545D65676F74" + "99A2A7B4BFCAD2EDFD00000000000000111F3549"), }, { - /*TEST Dilithium3*/ + /*TEST Dilithium3 AES*/ /*public_key= */ absl::HexStringToBytes( "1C0EE1111B08003F28E65E8B3BDEB037CF8F221DFCDAF5950EDB38D506D85BEF" - "032369A2CE572FD08BFC304B4848E78D752D77E97A28B99B9BB6FB5C7C633751" - "4B321ECDC1FB669F26D4171AB42B72720EE70E0519A6E1D3D6D9914EC1B21CDE" - "38B41AAC1D3ABEE6F2B7495C4C820C1FC0CC9E71E24CFB5C9C0D8EEF4264AF48" - "4FAE4D6E5DDE65D4DF72B61C6DBD26F861A5E0B853AC5413226FEBBABA5EB474" - "C6FB25A82678EA1606B452A23112221017B8C073C10378F9145641A8C078C0ED" - "9E421650F748892522AB9FB7D1FF8CF1CC71B8566E8DA33CD7361770C044349A" - "C440CCCDC6BBE35E6C55782766F38E688BF47821037299E344ECDECA17AD5D15" - "CD27A4F7B070661138EDE8ED72A8959C5AE36B1C46094A53CB21A7A42673F140" - "1C2B259494090E2F53D7EE7063431EE5858002D850AF909C3783436010F7EA88" - "625A36A0F0189FDE75B7E8C7E4B19D8527008328ADBC929BBC86E964CFC48B8C" - "F1DA5D7ED3333AB55C15072832214A779A5FD10CC04005F46C1AA8884A161992" - "472FD535B95ED18BDE1C6D8CE678D2817D69F90571103E8520E7313CE7B930C5" - "EBFAF2F4EC758B626B5543A068CDE0FD0E94E6A64475B23268BF0380D075508F" - "85128CA26F31A90C4A7D28440D54D4066B404588588B4CCF850B975C73AFE68C" - "BCD102755F61EB3E60323C576E529EC0BF23BFA5BEA39CB73C37E8395D8DBD4C" - "8DC8AB2F70A0BFC3A78C0D413F08D14D632BC0403B0383DBBB22BD9B113C8945" - "2AEAB11210097947FEAAA3C9F05D1D300C33A55E3FBC81259E862705C3A13B9E" - "E35F6B23ED10F4EDEA9519FA91B7BCD0D501B5ED57D9049FAB91AA779C725FF8" - "E9F78017EA7807FA254B7105E826D096C01ADAE2C5D138251A92A478A33373F4" - "DE912B83B6FB4B0D0DE6BC1118BB2FCFB07BD227A5F7F991439A13DE1238180C" - "DC55119E65C418584D807A926E4A9C0F70155EE196FB07656D9AA7982B8795DB" - "AD43D1059CA7F580D3320C0438A5ED5A7032B2E959678410F11AD98BE8826A44" - "262615645D759A862B2AC52D3B014A25E8473F1F1EA4CFA819930AB3A34D710D" - "EEE70CA13E88FD71AA064E6CB4697DE0E463B1370A6A3BFE98FDFE7B5471FF8D" - "F6A6879FBEF9AFB3519D780757D67440AC36E837BAC3833EEAA980BD82B79364" - "36A0307D164B6438869AE606E980518E913D0EE302396EF4EB25D9866E4BAFA1" - "01E5992931361C4A982253D58ABE3BD57107635A46F09512085F4ADA08EC8B1B" - "3910B0153B2AAFCAE5033EDD4153248DCD85B02C9A25D8BDC4068BB857417262" - "97A25AEC55C44AA28059B71BB9F34067887ADE4C1CA4908B19B3D78123453876" - "DB4DCEB42773069572CD8777E62CFBAF7203F020F281A6678F790720EAA20E34" - "327D7A63688B09A01F4D7088F7B5059EDDEB45C0CE39321C79521D79A59ECDD4" - "68CED0EA82CA484928702F57D6FC18D347AF3ED22AAF45ABB0F20BAB9E015576" - "07AE3ED9CF0E26D34D305449669EC6FC1BECEADCE183F7A594CEA196D059A1E5" - "50E547866CC087333F030E628F2CF1147925410ED0421DC7506138B1D19099C6" - "95E1AFDACE4153825B66A8ECF55A021D21EB9F848FE55C21769A755FA9807EF7" - "3A6C5BA15A06347D3F1C5C619A315598629106AC0B86AE0D8E55578292517258" - "AE85F72E737AF5638D096B76A3C57F1B9C80E770A2D4EA4E42FE469AD4212852" - "41960A8A86355EF22F583FE3BACADF8DA31D5C2DE254161BC6D10F9841DD27ED" - "462A6B94B6DEEA90CBAB687FB84B56395DA763AB4B7FE3095D572D77EFF3FF0D" - "8F9D19AA5AF7B676053DBEF64E61DD0A41D402318E3308669106259BF7A4CE31" - "B346A9E983EDABA05180149AB057F9972977DA7C6F46E0CDF86F3091F04FD4E8" - "3C6022E18CE4382B54D5DABA82E4DF1E53BF31FE4BB65A8524EDA83FD29D07E4" - "9747B75291CBC8F8EE1415EC921E19022ADE2C047E4DF3507289E9D79A8E6992" - "B48B8864204A416B769CC787D6DF4407E93D121F7FBEE0E408963E0609A9C75C" - "B3117CA583DF6E79F31C635BF0F1BE98DF550727A45D3CA337D79DE5DCDB0B91" - "CABBC30D7EF0AE1CA1E94904F78C1FD8FBA87545FDC174AD8190F9B5ED7B5869" - "494FFA91033FDC6117BF662EC5F2AF2634BA3F8C02210F1C9BCDDA9BB39760E0" - "0F25A7270C345666FB6DF85C919AA150CA7FC80FC0EACFE242EF55F429806362" - "8E61056C966DB9964428D9CE99108271E29A12328E23999734E036F18A0EB8F0" - "30E88062C56717E7A36314E44ECF357FF56EEDF90D3FB11B22A1B25905B379FC" - "CA5CA1ACB956E178AD3F51D535AD119813B1E70F7317651BC75CAC64276BB981" - "10B54EA0EF34541D73910721D657387677E332E9C8811C3FC1B923B2EE9C512F" - "6D09DF372A5F97FAD7123389CEE197B5C269E221D7EED3160A521E56FF8AAFAB" - "686179D09D78FC387B3EA6A672034D24AC7999D196B2316475F37DB8E9ED431D" - "F58341FA88003D3C6489E78053D8E44CE7E16AEF416859B3D2AECE09086A748B" - "7BCFD10F73E3CF8B31F0CC44DA059C69ABA5BC8EFAD45D3F376AF3A0DE6E1698" - "78BD842E28798E4743F843844BCDF8506F136391EC8E721DC2B6282D9C50FAB6" - "53A6ABF28947420E8C22A9A487D76A938933B34E497DA95394176B2774C09EF0" - "BB1ED8C3B131A21957B31A0B47CBFBFF0533CAF33125221DB6BA4A518864892C" - "F21D3D4D58B599A37A08F344AA7EF98E7D7D9D3316A6B115D9B8F20F93BC6865" - "734699EB54C888D7E5A0ACAFD1915352B294243712CFE82F85248B00045CF3D0" - "90C0C00D7CA0E3A1F147703FD94F717E49C81A7C3A76946E20A63F3B7C3EABA9" - "225ABE0B34CB0CF235063967D16BC8A69C130CCE287615CC053114167EAC4E95" - "BBABDFBBCF96BC0C0D65EA000AEAF490D723955BD1B4D69154D262F6A6D3534B" - "B0BC397C29ECC6B1447B75C953AF441DE2E7133A7AC98988A7EF9E6EE63558AA" - "ADA0603BD529776F05558D2DF5641C412E7347440F65EB823AFC7CCAE6B97108" - "B857287A0486DBBE689D770CA92471309E73AD390ABF56912B2B7C49242CEC15" - "7BDBBD493553735CB1D9B40AFC214DA153359C9DF576135901C2FDA58C0095B6" - "FCE3FD0731DF34863AF2882D53773CE7C182473722AA79A6B37D3EDDDE38FA71" - "DF8C0EDC081EFED8CE606E48299180EC6FE35FAB649910C48A6A29F9D0F85557" - "E10BC5AE2ECF028AE399F55CD7976028935CC03C0CAFD5003C9EAED247FBE30A" - "284CC4470A5525A6498E1DBBD3085C3F9D77C6064D0181BC5A829561560AA9A4" - "EA8173D7937A9428109CB3A66B2B3DE11F88F55AB21EB49B77A39762CA9264E0" - "156566765E2D3626B72B80BD1411E4EC53552828A24BC8CDC47F465FDDF4772C" - "7BC02066854011287F739ABA6047596747F4234AE227DBFFABF0E13153E2E069" - "F0B790251BE877FE5A198E808258639F5E79D3D5CD16F1A573724DD6A9F6990C" - "4502334DC66F65493490673AB30DCA7C031F0C212C0D8BC9D0C874B319A97AD1" - "CE9395D3D154203156C51CC3B9CB13D0BA1BDF618BC8EECA9DDD9412050CFA09" - "235727AA50D46F79AD6F3C5A1BB6B284C8311DCF93756859704DF8FC3BB8D2F5" - "E094E04502354942E9C852B208D4901834332EBC603270CB57ED418C34CE48A" - "A"), + "939D474DC88E95C73766FD2228B27F4DCFFADFB35D22DCB8050237E977399E52" + "E32C9939AEA889B14201AB02A2C4ED8DA6143693A7A6F0E4ACC419C16E5A1B5B" + "A0DA078BB888CD4929052D096BF6C444847152CE38959B2DE2372834D59CF4E0" + "2942692F97E68401C03B23288A53B9292CC0D0487A356C5B0B0F1399114F4D3D" + "25D8C30AF7E528FE62FF0FDD42B5835C59E7F30EF9B56843DC289DD83677D810" + "0E2950A86338D1187A6B241CDA7F414808E0266425F4E4278FD1D63194FD531A" + "D8994CD2810CDC9F5EA830B3A876BE6D61719B7AD574BC248FEB3D0BE101CB9D" + "5218CD474C2063F35459989981B7924EC49646520C16948D2D825F54FB3A99E2" + "5129E7943D853CCFFAF6E34B6CD9C6D169D18DFEDC1B226B0FC5A889F291E03D" + "782E5CA36257EACC9848BE58C146A81AF8B05B446EB8DFA31A1D99FD1D365E29" + "C99C3C669D6348F76474344396995E0618F80CAD1DFCD90299B30B3DBCDD0C2A" + "FE678910013649B6B5F03EE50E7A1D6E7115081DF6E822E711783DD383A93A5D" + "BE3D223D854F617915FFC89327C616BB0ED65437F0200CEF72EBADDB3E26F9AD" + "BAE75F656809847CE4BDDC4931BA09081F884E427ED7C8117CAB12B86AC52D6C" + "9D2C54DB8475B2FBF49931C32CA65122ACD3A54EA57B2FE3B8CCB472F66B871A" + "D9895A0BD1C71A8232A8327897DA9C848A57ADCCA587B508091E5FAC044BF0A7" + "B7F8F98B5EF9C72CC488F290F059C44C32DA22DC941DAD863242AFAB941A003E" + "90AE65DD6C27D8DD84F85C9538DF407EE40430AC86C67BB67B8B694730CA3B9A" + "D4E0A3EBAEBF221207FC2650957D0E041E68602C2246AD646D32565AD0863465" + "11E466FEE7C18934D2C87E49239EC4643B0211203E97F60D13876FB5CB5DC61A" + "9156C1AB90DC3A70CD0EBB5757B4F601201C694FBC55DCE12A6033A59B373457" + "01121A71B233CEBE7F229E10DDDEDCAD61A0AA713F45F48ACBE4FD9EFA88B119" + "8DA00C030A6C662E85E0792FAF2A286D94EA4F04BFB6CD50E09837C2B1362C94" + "76B3E268481C2084A3D64B58612CC5754CC23131B0CAD378198FBC39379C46D1" + "1F669B65B749001AD28C4B3363C16D11CF14AB986A63A92E0BC7DE55F8B1578B" + "692A4F074843DFCFCF66B3059E87BE7B624A93EA07BEA33672F048C91E5EB9DC" + "07A61D496397BBED5B9CFDB3EB7C6E96DA540C80684AA96B319456E3798FA145" + "3C3B24160ECE6CF7E8A39CD4453FEABADA160A4CB99716BD3D91EE6DD2585153" + "DAD576B9F91A54248FD3CDC3ED469DEDF38180F29C6B6707DFD03B00B9DF9857" + "31016943F248683E596B0C52950CC1413E6AAC82139ED1F10C02B3661CE4799C" + "8478D83D5DFA536BB700C317EC07A59F8A3DE03B18664AE9B2C0648949299D3E" + "62F17963648EB7C0BF5EAD36D28DF480D51ACB92E867ADF84C646F2330E34F47" + "A8AB992EFB81783B2DE46E22961DDA72615E3B9C2E09C7DA4BBA604B1A22FF43" + "D31C539F6979F0A8F6A8DC3CFE2AB38BF642C8DD20992726E90BDA6C1DDA79C7" + "1BF7E7BDC82F83EB194378418883A5DDF85DFC2CDF9BF98F4F86891D023111CC" + "ACB829B3BD6A8AA8D061E098D79978855FA8712E150C723F6EDAB16B2AF72A71" + "ECE74FB4DA1499E1BB66F393DA5ABD60ACB9A40F480D7D39773A0792AAD44551" + "13B48F790F82AF69391B9F5F5BF8BD6151BBFF28BE1CD54988DB6E7C7B49AC37" + "D022ACDD6E5E96816BACE860C71B909F57621B4BEA989F286C85EAECFE291E49" + "3D740D2BB089FDF210F62A9B4A33E80F7BFCC7102FD25957AC237FB9A9E6E114" + "1F97B37D417B89DE2D0D2BF8BF3EC7F62D2F86FF1DB89A503164BB8D72BE0A1F" + "4A3307661490175D289D38C7E4A00936B147900ADF917584427ED587477A24E7" + "74E9F325A0679E69551361FCC26AE3A581002BFAB4BC664709472D14FB65E4B5" + "B7606E578FF19F45C459BA2AED0065E7904D6FBB4AA3298264AC7FC0A978425A" + "A9FCFA609C90ED18FC038CEA70C3FA5D4B5456AEAFCF8388E8F874E2370E2211" + "D040448FD7C81C102B882AFE4591FF41686A88161AD67EBEB52A4CF1FA761B79" + "92B28EDED607BE0C567F494A42267CBB9B5C576449A5FBEE81E5B00F7730D81C" + "6C2B21188489D6AB8572BB6A2B9345AABF91914FB16BD0084CCDDCE17740A2E7" + "D8D45F56692702F320E50FE02DCC1B65F402753352753F21D49F17081152C07C" + "B4B23D65B8ABDC7A7BCE72975C1A04A7DFC58FF0EC5EE9B43F57A3C698531DCF" + "6FD6C286AA0E1603D6001C04531A29954A7636EC66FA7F55192D8ECB36C21E3F" + "096AA74641D9A1635E3D20D6CBFDFB4600A0684971C64133258904B8501E5483" + "743AA6ADF116B7DEB75BAD06C5626C2F6AA9933FFA57715A6C2B0383E07A1AB3" + "B5B58EFBA06365745DA4D28FD15F1864A066BC805A1BF598D715D15A7BDCB265" + "2D0E0A4A001202AAD8C5C09D641B32077500324A19A188E3A3A7672980AF9AC2" + "3862B41DBC7E7BE48FF3C8C3634D86E163D7613FF93057758A330FCABEF0A3B6" + "0B2A540F82AAA09E7990B4D5A8B90710284D4DD7EBB40640231C591F3BEDF4DB" + "B6144F53156656F098A5E8F417D148318018CA972F7DBBFB9D71C11ECC18786C" + "CD471477E9C563117CE44B328FA103A9A8364EEA95C8DE24C7DDA504259FF4F5" + "4525B32A0E60630065B23CE7E1DEC1B2A29790FA9F3CDB0797E23E69A5EDEED" + "E"), /*message = */ absl::HexStringToBytes("D81C4D8D734FCBFBEADE3D3F8A039FAA2A2C9957E835A" "D55B22E75BF57BB556AC8"), /*signature = */ absl::HexStringToBytes( - "BBF85FFD0E01C80C8C1C1931CD640BF273D49693C4C4BFF5DD20D94CF3757ABD" - "45473B9D01B1871305DA90EDC6707D5417129467F61F723950C1AEDF7055EC1D" - "4777AD8808E8B347D1D0921EBAB890CCA8E3A0DFD3003DE9F9CB4A97D884E1DD" - "042C958B816F7237032B20F8399A5182F46525EC357D2F03437403E0CB5DCA4A" - "13FD2F1B09205B9890F02EE5AF542943E6F9375ED08A38533042D6BBD50F3725" - "1B1590F63B4B58A7D1E1F31CE62E3D2AA91E1C767B9C3F5CB26823F97AD1D9FF" - "AB2875EB68FFA9B09946EF1D7012C02919EF13CB100C2E2C7987A0A5785B5F3F" - "3B948B7FD64B85B165AE2FBF3C47E039C3073CA78FC900BBCDC069FE906885D5" - "B13740A223AF5254F98C1D58E2FC92B0373E2A933353CC3EECD39F71D59CFA09" - "294E38262A4489400D222982F9C780CD0731D4EED916C5A31ABCD02A590ED8C6" - "FFE18B5FC7B6888E74726940D02CCC62D78BCAEDDA2E028E535CDAFC0E091BEF" - "50DE2DFD124F1E854F568527AEF4DC8455FDA01B6D0D43048ED5AB42B1D40813" - "994B9F6AA0C036C0DCF08F46B00FDA014477CF879B8FE5EAC4541B82DA00B434" - "6046865B092ED6AE0115FC834B58F75FF928D7D99AC8691FF70020ABA25480AB" - "BCC709E46EC510F4B8CADD60045954D3EDDA7C23E03D91694D3C3EA292C92535" - "E6B5FE171C567DF3729406CDBA2A5EFA59F156E9CCD0302FDC0F8BB759B05DFF" - "5DD802CE4D5506A19A69D70B3AB48AB17A2FE59589F73083CCA547FFB3F14683" - "C914BC1345E7387E831EE6037501495C92C357705A69F952A2F7CD30E03336AF" - "AAFC9C56604CD545E82AA12AF058DABA974387FE8DCDEC699A1E3853E26D29E1" - "578189AA8C2BBA1550DFBEDD1E4F224EFCD65491E54E56128AE7C2DC8566797A" - "BF2D9455915203A5C89E55DD23DF827436A8D6DCC5ACA82F9B183692159EC03F" - "2B798E557D147346D835A8D81B2E3D40863966863A54D9C87B5AACE963CD529A" - "DBAE07070CEA00B780E18131E64F0AD70E9158F590D00AD9177908B90345FD79" - "D0255771C608AF65EE5AC3C50166BAD057380258681941560F1133405FC2D761" - "1314B4381D5459DCDEDE4D39F3823BC4422BB1D736E7474A8089F0ECFA3C30AA" - "C119FFA42BF743F48E0FDD960292D3E49A14EB0590C8E02E421D54AE8A521951" - "5E21895989A0D71D4F451669CD652DA3489E5CDBC0876BA0A0899E7D8773B24A" - "FC2CD6D37CA380A5D0DD436304D6E1A4DCD638E8B95E6C95465C6690D4EFE8F4" - "4691E48DE22CFC691C7561AD8CC1A2C3CC9FB86FF6F4705A573A720471ED33A0" - "0E8A60203818A3961E4D213A78B8626394F75C282315574CCD725A67E20F0BF2" - "24BFFCABD702BFD4E1CC5F78BEC0E042E12ED4C9474BDD5EED2AEB53F4A958D7" - "F84EFD56EC030A94D200A539DE164E53C82AFE8C5F71BB99A01F7230B7AEBC21" - "3ECDDBEF5B9E9064874396F8A91B0575F68A4515DD158178BF277A90A3FEA200" - "9200DA2EDA2C8B3A47C104D350DF68E94C8A4023D3AEFBB70718FA2E27E6A5C3" - "F9927EC596AB540F463AE010EF71B89B49497F0CFD2939FFAB2A7DD1247DC4A5" - "9D8411A843BD84F1EA8DA33C0701D70AC27C4BDBD0D9A0CAB86B1FC5BE12458A" - "2580A6CAB4B765B842C67AD54CA5D40A24E2DDBCF01E466E08D9B3449F13E82E" - "16D61C723FB9462E97B7ABC70B2210ECA16B160D5B8F98A1794DCA92CD4F027F" - "3E4152EA879507DDFE7F1F21514153F036AABC33F172C95A9B774722800F2E08" - "CC44F923540D8AF64B429968B280364C1B7B4B3E9BEE40C50002657D994631F3" - "3A8F8F134A27EB69BA4395908BA40634B8F2703149275FFBBE8B483EA1BBA91C" - "28105136D97C470EE83CD21CEB2B21AAED98DB8AB165A7B4BE559E7EACA68460" - "3015BC349B0A51214E4E8FBE1D2D883F79FD3F1EDCDD3FA6D4B5BBD2A5B3003A" - "80F1DADE975B502C7F72037316BC55C1E57E500627D60E31087431D2C9D02CA9" - "F0EBCCD4BFE3C4BB536D4CFEF7510750452D444BE2C3D64D84A832965305264A" - "BB53E3614940F9B2F1EA6F41CA8F69E726690BA630630F8A916EE856268251B7" - "73DC2A5DB45D22DFB2439CA4B7AB70215D23E1F2E2617394FF783B0BFF6DF034" - "5CC927053D02C65FE2A86DEFBEBF5243A2EF6A6312BAEDB6E60DBB0C67CC9A65" - "5585CB458D6A04181194815F03BE87F6E800492A24C5D502D5ECD53DD6DA3679" - "95D32E8BBAA3EF62727E8A610E8D6B5C8FABCBE8893BDB5E038627F707E8464C" - "55DCBB76F0836ADD298A967C459508BC4E88BA5CA38F5A561A6D2D6CB2178D90" - "AC850CA2734B45C4A89AA0F152A3B53BCF1E13532B2B5B3878B205BD2B327DC4" - "9EB6660B9511BFAE90C1DEA5BDEB6DC5DA068BCBDC6C093E5727E387374F452F" - "963C307DEE865D41AA124CA803C12F9AE9299C3CB1345FCC568C6E71BE3366BF" - "30EFEEEFC7693C36ACE576B0D10F402F380009FD0EC068CB2D45984884EDF16B" - "C90B0FF6DC96309EA377A3CEC043CB76B6C885BBB848C4745B71E18C58E78050" - "E19BD7BE0831EFE9052A6A7DF8D4E8B9FC3E082A4D40AD73E4B3185E2F6DEDE7" - "EE51A4068FF2DA57373FD7E7BD46E0080F4C2C1F41BC250E6DA45A341F214771" - "F5531A67B0FD97B53CD72CFAC7215BC4111F094030A91383D20182210FCECD75" - "E59C4B0B33A3F93D865D847EC241E1B98481C5D9D27F0AE262B328650CDC13CD" - "99866BE9A5A030E83D84E32BD213C94BD6AF950433A4F00C6149783B00750CDF" - "D4F47AE75217EED1F60C366FA02CDB206FEB2A685D6B7D6A4C13553E2BE27794" - "F53B0EF57315203263EB026EA5E67067D22F92E26E98DF9AB386C2705B4316A6" - "9892688E601E7427595ACEE6E47F5EC598CC48C2F2DA1C32E062A349D89DCC8C" - "05C62E7B0CED6F2E93A7BD48A8004A8C5C605DFFC805DE079EDEE7CED98639A9" - "2F6CBA92F2089B145D2D61D9638C07347A2EF6B30FD90E111A7F5913F6E18795" - "C19E0B9F60F85BD8F5C9A963339441E4A5B79EB2E867961B18A1884A01A74483" - "D80B403EFBDBD4EDDDC1922DA3FBB37BEA97E0A5B6343E4367601BD21DB66941" - "C2698BF506B04861B5F3D3D80AC6DCB684D9C4369ABD04BC4BDBEF49C66E3844" - "513A3F3BDD400C080AC6EAD81E8BB0E7CB36DB7B7EAB4728391857F597A34648" - "63C312645B20AF02F7D0BD9A74DE2361A0D2D98A698975B30F1010D90A126078" - "584A45FFBCC65B47976AF657EA84E9730D9E363733736AC80103DC1C7573C4DE" - "E28A7BAC9EF72CB829450B53EAF984CD01AA31416CE8914B7D7EF849EB9CC172" - "D7096DEFDACF596B9B21A573E346A47A5A469E1D7939BE1982CB3954C214ED3A" - "3707D740C033E3EF780F4C48BADD863848BBFC9DAA8E3806A84B2CAC0CA23200" - "0CAF0203E908FCE18B5D62777225D2D7D584F2ED71885DFAF5A4DBEE02F285BC" - "34559B88EA9CE15B47A3B92A8D6F91591C329A5AA21A1BC424BA2BDBD164CE1A" - "8B78B38BEF2B47F21F7FB7A3C54E3EA4536E816E01656C8E26AD42F3CB906169" - "67C0DD079F956C9F3C844D5F339C62EE8A358C4BEC2D278AF718AD509C6B6661" - "3B580443FA6F11CD8D107693B5D7B738AA7E2FE662502D7504A9F596194180F8" - "700DC4E6F7E8E7D2307234494B8DF1D57EE14D6C97926EB1D8904D8089BE7D13" - "5B13D6DE30AA8720D67159BB50A834DE9079922B88931D458500626834DA040D" - "B768DDDBE67A758A02B448E36BA455034ADE36802AA42A7F2F234A5E1CC241E5" - "661C63AFCE59DFDCC0898347D2834D7264F5B21A47C5214ADC57AF76CE9EBDB6" - "8C71029BCF0C4C745A33454ACF0CF6D5C68DEA06C45E7D4D1755C5ACDC37FC24" - "34140EF707FD55FAF06CBB1707C27CE9D905905E37E2F147C9CB8808ECD05DF7" - "1FC5F1DAF910D7BD68B6914938BF0CABCF66C905C49563D7D70F2C3D3A4A4F62" - "9E3AFDE53BD14CD6E527E4F038D6A331D01468E22DFE93A379B3EC6DA6D1C2F6" - "D5EAB141E575F93C8CC5580DF4A3DB5C4C87D8548E9A851946D1B90D7527407F" - "1BA1121EAC54A11E6EDA45ABB08A7A78AB36A76EAD7FAC4678E52464EFF398E9" - "0215AC316DE5A6EFE5A7B4A95DF92E4129F3F91B316F756708BDF37C01C12BBA" - "A091F94884E38AFF3C7B8140888CAB4F7F867EADB0418584B6F770740250936A" - "138AFF52888840677D8121C583806FE27104DE528813E56226B652C5869BB500" - "303834D9C9D197DBA1DD5C4734307AB8BD006B66EF45ABED2E31377BEAA19DAE" - "6EC82AD77C4C07744F9B93A8DD4CEE1A62A552EDF4E277CACFF1F964DA7AF8FA" - "FF6B56E3EBC06850A9F76ECFB2C2BAA660958C6D1BA96BA8578D066D6AFE6E8F" - "B2052B7421D57DE5AB4C1FD55170E9EE33EB32FB3D2C886142055EE8428BD745" - "AABE1D15191FFC93A3FA7A86B427EB2370B78A67A485AF963BBE1F2246119FB4" - "69A002D7029FC4F5F7E0125FDA7305ACF6C80C7BD3F668897BA81435F426B842" - "5C9855CD46C3448BBAD0739BA88ABC273BCD0FA1FDA7F4F8183B5D73D16C407C" - "452AEFA2E3CA9F2D9D638D966A58788B48BFC57D3FC2085FE85A7F7ADDD91EFD" - "1BA0226046B127A97BC480479B92881A58A0BC04D8DD9E68B6D2BC5034CF2343" - "0D1FE54991A6908B019EE018C843B9FA53EC7EE5F114ABE2B750D4E1E72EAFB4" - "FBB33A1E2C4D6272CEE27BBB13B5D23E24F6129CF5825F34AFC056F95F53A09F" - "6FCA9435CD5FB6C05F88B4DCE86CEABD7E0C785361D253BB9CDB3A0C6BC85183" - "01FF44F9E87F7A97EC9F02FAB5134F3BBFA1CBE44FA83F1C543ED9B870657543" - "5AC6A15F7B0DEBA9D45AF554BB0CCBCA12A6C16E5EE6FAD63721E4C3CC8D9EA6" - "8C6149993080952407AFA203F504A887B3BF84D2BB6E45E7CC5326533D63963F" - "FB72A9272C8FF637BE6E2473E9FCAB6B5E5E7CF3EDBDDAEF51C98D53170F9B64" - "BCA5D49F76AF176D01A6F2ECB339151F49E49A8F6E286C6D4122D650D5015910" - "FF7F28024693895C5803DDFFCB1EDC4679C8F535AC1597D9B28AC46E62888101" - "29C179556AF7882DEE17D58A97F434DF83646B33CFBAB90A6250851CF53D4BDB" - "4526337DCCB9D98A921676B51365DD08A5304D2A93534C52427E9AE5C1440592" - "C5536E171CF4FD1F43578FEAFB32FF01D4FED635D752568F90ECFBB164A5B176" - "3F70C72FD5BCDF61D01FF3236639C91C063C0B7A56AD03F4020E80BD9A5E2F16" - "1E0578469B9950266BA96BBB73C08E7FAE856E1703CF3CBD21418089148F7A9F" - "40D4D91151DBC4BAE8542359E882A19A9949CED5B75FF7B192DC279B3ED10076" - "053F58DE435FC5875654E98633A397141142229D8CD613C66344326D83992B3C" - "08F17BE0EC28FBDBABA12CB000B2A2B04E24D0C41BD6B580E999B257C007965C" - "4475A9D5314CD6C1FB9FEDD516E6B3C0DDD404D68D78FD4DE40931B1B872D4D0" - "1A2D46C9B293900D34EC91D3B693F4E72C228ED0294F6DC9B717260EBE75A471" - "EA4D7800A3E7B7B476D64DEA6F4DA726B376F07800DB5F83C0A3DCC2C7026A4C" - "378E880994885D6F7A8819D91A2D50D16D22BE592BED38330410E14CDDD4CE0C" - "48D62B7797DE44C07F26A79EF3A5830F321A35AC507E943C6DE63FE136823225" - "D6FC73D86D4C84399013E064E6683492907C7B78AEF2AAB180DC33E5E6BDBD6D" - "490E3AA8BE8E82FA6CB13BEA360C510F9B4B5BA6640427ADDDF3D66DED41D1E2" - "A06131E950136842732C273498D6A47CED4ED189B6E739361F68CCA0A99D5602" - "B97655AB2682E837DBD688C173DD4950DD4CD4D3A338F3FCFF8C7116EBC630D0" - "5AFAB8DF7C7560F4DE9AD92216268EE143A722C03497CE17EFE98F67580F0DDE" - "F57F15255E68856D39A4EB338A653346FEDE46663A62307F6590E2EE7AB928AC" - "5E8FA163AA74E40255D8D241668A1C717E3F28994350F49908A32E6FEC6206BD" - "F7936DD2CF6A87B9994045552ACCE6EAF1294E7327A13E6EAC16221A676F605D" - "6DA6365D0DB01135405013F874481A68330455281A41E83DF76D20D1DF75DFEC" - "A0917F3E94BED22D1ECED8A9FC7B2A2E4A5B74D0B0C9282BD612A48648993F9F" - "012BD70A0E43DC3D1C0A16711EBF6EA479DB941F68A6701B57F7B837B30C0A6D" - "771123D6FC70BDBE24440CE4E254A070534F1C1813C516791260A73689DFE1BE" - "AD6EBF6AFF7EE48DE1D59C62228B383E0ACA0690F805FEFDC54FC4F974BFACCD" - "FE33216CD2BC06BA7C2F55D7A0708C48014FF0C535CD83D54708FD703E8EF510" - "FA6072E25FDAEB9533D4806053076CB8E4FE6946FD1A670D1BDA92311D5ED5FA" - "245FA74A6F04AE66E3C9E0A7182CFDB210E5A2F28C95439964742A987A162985" - "DB91DF91D9529D8B850B8628A9C5C8455BDB417C927224A9A8FFCDFE00C228FA" - "284C5052577098151E33787F8287CB0D2431324555848A8D9CDFE3E4F0F14261" - "D0FBFC023C596C749EAEFB0A1784C8CFE5E7448A989FD8D94366B4C7D6FF0000" - "0000000000000000000000070F1E232B32383E"), + "84EC9F59B6A2FDD5869CF5524ED3FF70BB40FE6BDC99C3B6733FB63DA094FA3F" + "2815FE466856A22366F4F61351DE657481263D526A397E19548DF524932EF1D7" + "7D71156AB32589BFCA3E79493AE2E8A48DC120812DFC80223F011BCFE26F7858" + "60A7CC29B79CFCC33735EE33C5CA4CB5ACA0AD6A724C0EAEE7BA4FBA7752DCF3" + "9D3AAF35D79E628BF0416744AF3268827895FC7E5E7261C023C204A407727BAA" + "32058349B440AA3741052824BA52D3581FB44F4DC9D05FF05EF0AEEA8AF5622A" + "4CC4384B1B24FAC53193CAE56663556D1C3456E04AAA42949CDA637C7F780D08" + "E1B3221670981B24B03158B54FF2B1E06ABFDC3C21245573DF6A9C0025970484" + "2AC618F8FB331942D64B88F5F659005887FCE8E4B78C37FAA506A2EC0C7A2343" + "5B1D59AC6B168F9F2AE606BE0B4BDB819301E30A09598603959C702A9EE6D150" + "E1039D4CD6F2A7B761D9711422101EF6DE7B7802EF9A5C6716FF527E286E3602" + "4C1027D2E5AD899D50D88CEF875F7E185806EB002F7002DC06D8C57A1E41F3D9" + "EED932ADF81534A5B347306A9A50156E176C7F284CEA470B024EAC92E0E829FB" + "AA483FA26978FC85AC069319D5F201FF8D56556BE1756DC25AB7DF3894223A33" + "5287FEBB15C768BA0D99AB3B3AA31E63F0445033CE31A8E12D308E877733525F" + "ED4ECD878E5A6F513613CEC04F24E198F6BB081D7B2BAA7C04F3051A01EBB674" + "CB99137771071FE73181E57F10950B8E952DDB1223023B791E957C4FB7F69316" + "2DA8790550B8507306ABEC65843B1BC7910A5AD93B8EC49D94544E0DE11F9738" + "468D4A71BC8EDCBF96ADD1A1D3A0EEFBF41BEE1593672FB0076FCD60BC0BA147" + "D6436E3AC71D12EEC4CEEDC8CC4A794A7874B6D8B628BD17DB93246EA4075B22" + "9D86E191D56CBFF091BCFF79E645094F06BBAB143882177DACA9FBB9D9BFF2C7" + "46775D908F32F4D926480A01AE22AC6B2A63414FD8A77285A85A6EFDDD3F9BDC" + "BAD3A8B613B0647D776A008029846E0D1664D7E290868A7D2A4F2A83D2F6E043" + "4C8AD6CA664BE2A1A4B1C8B517492224FD1AD4AAED4A200DA2BF7AB0FF2693DC" + "FCC026CD77D76111DCE7B3431BE13EF462F1A56EA87AA1647436429733D8B011" + "0F34C7222A6A1C49CC772604D3856B5A82B2DE6E39D0112B438F74B37CEF4A39" + "43530C02D0CD4BC70A98DEB62016D392CF9D8FD86EDC430407B6D01C203327C5" + "4AAD87B63E93231D6F75AE9B6B8FF4DA71D3C6455448544FBF11AEF8861A720A" + "5CEC13D07EB5F8EFF82C6DCCF8087F07B3573529FE8AD1972B0F490731D4ECC2" + "5D6BEEB7CC540A38C2EA11B823FE424191893B2A22DB025C5AC3B688C578593A" + "A3B0DE87A1A11BBF913DF07DAEBB8AC80F8B2BC545DE3AA10D12D2B2AD34400B" + "366C507B6BF33E33CEBFC06B6E47EA6FA381E58876F8195DDA0A6DDCF88105C4" + "753ABA652E4C7644544B08F2DA3403F5DFF7DEB68E5BE7824851D9EADB9FE04F" + "DCDA8C5CBCCF01B720019DD977546FE0BE494E5C40FC5BD6C7E7DFC1073556C9" + "7BFA9EE1BC15C1A80E097CF82E228825F16E8F2EB5078D223AAF2184196964DF" + "44BB37052F528D84B7AA37E7E26E664BA94271F4A45BD89135FBCBCC69F25A12" + "6C1CF457FB8040F6789E01936183956A9A95F95F7AF017775746F4DB5D6A8230" + "05B0BB209389F9EC4D86371D44F4BABD585907F0E60E70263C32B9053978083E" + "D22EFEADC228C831204EE2920626C90A2DF829A3CD1BC4447D05634DBAEC0660" + "0B1DF87EC60C1D3C228CD2F1C4D8F1F58B48994ED1BCF68CC829121B0909B7D2" + "99C5B97AC2B0E5A70D1782D8EC8553A2643A444B025245895A684E2F718BC5DC" + "5D5C4027633DCDCADEBD4E432B30713979B479BFB64DE40E265E4569899D146C" + "5FC8AE6FDE3EFEEF568484C8EC51635F05E0DDA9BBD2E5369B04C5F42D63782F" + "062A1E5F7FA1D5262BBE90BB9FBC30A850FD79A87586BE6B9F7DD78B54D73378" + "A7A8837217B32C6F98A1CDD30E00590D2B912407327D4F21B8EE134BE6BFA4C7" + "4591715B293C6AFF4B458C2F3651CB129DED0A98181DF52F79321F5AFAB07F1E" + "834583F16DBD84E22F4CF91674E0C368394950AB3AF90444E651D0AB5E65E395" + "93BFF15BECD3815D8BAA1373A43D5EE1BEDF4EB71938ECF45C0830AB8E24C02F" + "59D86781775D374EB860F8ADCC1012281DE73D68614BE9D7BF33445E64EA2F5B" + "E0DA78E67E49BCEC4EA7AEAC2E579504DCF019AB9053297098CA649580A1EA01" + "C8C31B71C327A99E7397411796FF2C23EDC1CF2229D728A0F13D7765ED46B99C" + "9190ED7A0FBC47508C42D315D3D14AF691189CD9C9736BF5A052BF54E266817E" + "DE8290585CAF02630A54575838B586F4355FEE407A10F8031C385B4AF8951052" + "9F684A00499EAA516F4261B4FCAE2F7235DE044693A567B7E7D94C6E70564E54" + "8F005610AD1063731974AFB946D44451B77C3C51B6CCF9653CBB2AA0A7A553E8" + "F3C041204D116CF1F24B136782E6F20CCB8BB5612395CF2C8FE24DF4F6DB35CD" + "06358B2D1DA9906CDC6491F4428399DCF171F2F1ADB791A8A01E4F5F3FE6FAEC" + "DF38E135060942CAC880C720EEE4E2428E0B8ED272F18552A79CE0CB069BFA9D" + "AB8A6C8210C7A0568ADCA57EC83A3191BBE50D00A01F871AF40D19EBA1186878" + "BF1076077EBCB8355777CA3BC2EBD2AE147696AC5F89C4BCE186AEDF4DDA2647" + "1AE7B45BB0BC641D5B658AED6B1A319BF568BC528EB417755F52103E37EE3E9C" + "793DEE05F6D347452B60BFD82C51E1A8CAE61A079D253B97468CBD32020422AB" + "540F4F82F7C7442613038989B9BCE865E2673F759FE182578D202B803CD5F865" + "0E3F53957BF8FA21F7CF77A69DB41283C1428A0B1BD7D9BDAE26315D90BD929E" + "8A7ED7591C6A6E4EBDF4B0D4007CCDD2CA6BAE16531E69C7BFF76B6FDCA61D41" + "CB7C32DD333981BBDF0404166D77C31BA64A97C465DCE86B3143C9967645ECD5" + "B1930063AD08E2CEACA8E2DA9FF189ECB37A432A147EC9F557142ABA369353C0" + "CE571864ECF06A7647B177CF97137E0143CC81547FC09D54A174B8251AF0DDDB" + "8E81554ABD5F1F3217346C36518CAD182EC423E2661E735E2DD72423D06E1674" + "AF0D490B248BB1E0BF9EE7347E5510615AB8959BF69931361A71C527D06D9D3C" + "3D525621A182DDBC5494B0CC1836263E4FB6E90BBC0E471436E895115F9409CD" + "13E19B736A3C8AB169B68F62659CADBB4FECB9DE6C655BB63D2216FA0BB5049E" + "E8165E0EF2BD2259B684A7FA1B1868CABBA476FF33C298C8327A0FCFCB32C7AB" + "10FF8F775EDC16031E1B767B7E7DD0B2E3394994A23B8D3DD27437BC68F337DC" + "5F784A204C8E1255C89BD9A39FAA3F0F601E23C2016ACEA507BB4A072BA13AB1" + "05C8377E6C6D3B42A150A270C5EFEF8AB5EBD1D3AE549CEA563420E70A4AE801" + "447E7B5DCC4BA64F0BE0AE062909B685FF2D2E1CC2B4F8AC41B9E16F87FCAA96" + "E4AD032DDC6333251CDAEEC47177C879164F2F0A1B9EFA827203AD99223C54DE" + "F7D517CA44D0CBC04150264060850014B302D2709591B874CF9A7B90C6E831BB" + "C69C3F38D18EE4273D3B1FD6681C73F9ABE767F16033D7A65B39F41B0FCEDB91" + "B02853ED35A7B899A08A700CC8B998A12ADCD53AE848606E3BA20899F533616A" + "624B416732E0A6D33A893E4B5170FC8672859792E0867826528EFC70A8D08BC6" + "451B4CF38A3DAA4CD0742DCB5332717B5241BE781276D72C38CA0CBAD6E24EB4" + "7FBBB4BCCC3BB5E9D0E8FD1872864F23E922CB87EF94ADB4C045AF55897029A7" + "AD4446EA14BC07E1BD60BB7433C48D9E06E11B25D70C7799933A78B75961E79C" + "9D68FCB02208738EAC9BF5745CD615963ABB365C7CB396C3800E9536DBB7251C" + "C6223D40176A027D2A9D1550D09562C59354B851AC7D90B1B435708B6F3BE37E" + "C267A1EC1045AF287869B5EEA620C688383CD917068FB87E828782E946A494C4" + "FFD4F6667A977D11156D30EF9E4C67DEB48151DB5898EEBE83CF756160924C0B" + "D77E62F539EE5FF6186C5F1398CFA3AF59A1EDDCE36A0BD689207B710DC4B85F" + "6664FE4CDB614C93C77DB1FE0004E47CD1CF77B95642B866935062E598704B30" + "741F8B60FBC903FA85A3547FC72CDBC12935199C98ECF6C02B0AC93367FB1C16" + "D7BCE9E5C3E4832B88D469A8A02B001B5B268C10099B17BA3E3E0D67C97E33A4" + "DAF941BBAC7EF3C81EEB21EBC3C4778C23A6F8718B572D291B1DD81D32B2BBE0" + "F75D9A40B89E47FE7D6A9928B857D740DA77A4D2113C7F267E87C277659F3594" + "208C2AF2D5094FFFB9D1FF9FD978631FC0334661285A58538493CE47EFDC9687" + "A8B09342D68D15F92E8959A7EE119F564723C40B1F41D21E919D3F7F18958949" + "55921FAB129819E81D8FFF2D92C0657EA4D27895894F6139B688A2E31DD8D7D0" + "5E2AF6D1BF1EAFBAC9D75F179F997B717D6215F8418AC93EA6FF002A388F5322" + "37A2BAE82C4C12C81E8C7A5BB2F9660D0476B81208BF69BC8F336EA17A77CED6" + "7A80DD81399BC5665FFB1B6427FDF980E4F3C0E9C6C41C93462DB0A14E5A3CBD" + "346A749FD2E70D0F24293B90A1D2DDACFC2C3B55C2FC02454756AEDC06545E62" + "7900000000000000000000000000000000000000000000060F11161C21"), }, { - /*TEST Dilithium5*/ + /*TEST Dilithium5 AES*/ /*public_key= */ absl::HexStringToBytes( "1C0EE1111B08003F28E65E8B3BDEB037CF8F221DFCDAF5950EDB38D506D85BEF" - "032369A2CE572FD08BFC304B4848E78D752D77E97A28B99B9BB6FB5C7C633751" - "4B321ECDC1FB669F26D4171AB42B72720EE70E0519A6E1D3D6D9914EC1B21CDE" - "38B41AAC1D3ABEE6F2B7495C4C820C1FC0CC9E71E24CFB5C9C0D8EEF4264AF48" - "4FAE4D6E5DDE65D4DF72B61C6DBD26F861A5E0B853AC5413226FEBBABA5EB474" - "C6FB25A82678EA1606B452A23112221017B8C073C10378F9145641A8C078C0ED" - "9E421650F748892522AB9FB7D1FF8CF1CC71B8566E8DA33CD7361770C044349A" - "C440CCCDC6BBE35E6C55782766F38E688BF47821037299E344ECDECA17AD5D15" - "CD27A4F7B070661138EDE8ED72A8959C5AE36B1C46094A53CB21A7A42673F140" - "1C2B259494090E2F53D7EE7063431EE5858002D850AF909C3783436010F7EA88" - "625A36A0F0189FDE75B7E8C7E4B19D8527008328ADBC929BBC86E964CFC48B8C" - "F1DA5D7ED3333AB55C15072832214A779A5FD10CC04005F46C1AA8884A161992" - "472FD535B95ED18BDE1C6D8CE678D2817D69F90571103E8520E7313CE7B930C5" - "EBFAF2F4EC758B626B5543A068CDE0FD0E94E6A64475B23268BF0380D075508F" - "85128CA26F31A90C4A7D28440D54D4066B404588588B4CCF850B975C73AFE68C" - "BCD102755F61EB3E60323C576E529EC0BF23BFA5BEA39CB73C37E8395D8DBD4C" - "8DC8AB2F70A0BFC3A78C0D413F08D14D632BC0403B0383DBBB22BD9B113C8945" - "2AEAB11210097947FEAAA3C9F05D1D300C33A55E3FBC81259E862705C3A13B9E" - "E35F6B23ED10F4EDEA9519FA91B7BCD0D501B5ED57D9049FAB91AA779C725FF8" - "E9F78017EA7807FA254B7105E826D096C01ADAE2C5D138251A92A478A33373F4" - "DE912B83B6FB4B0D0DE6BC1118BB2FCFB07BD227A5F7F991439A13DE1238180C" - "DC55119E65C418584D807A926E4A9C0F70155EE196FB07656D9AA7982B8795DB" - "AD43D1059CA7F580D3320C0438A5ED5A7032B2E959678410F11AD98BE8826A44" - "262615645D759A862B2AC52D3B014A25E8473F1F1EA4CFA819930AB3A34D710D" - "EEE70CA13E88FD71AA064E6CB4697DE0E463B1370A6A3BFE98FDFE7B5471FF8D" - "F6A6879FBEF9AFB3519D780757D67440AC36E837BAC3833EEAA980BD82B79364" - "36A0307D164B6438869AE606E980518E913D0EE302396EF4EB25D9866E4BAFA1" - "01E5992931361C4A982253D58ABE3BD57107635A46F09512085F4ADA08EC8B1B" - "3910B0153B2AAFCAE5033EDD4153248DCD85B02C9A25D8BDC4068BB857417262" - "97A25AEC55C44AA28059B71BB9F34067887ADE4C1CA4908B19B3D78123453876" - "DB4DCEB42773069572CD8777E62CFBAF7203F020F281A6678F790720EAA20E34" - "327D7A63688B09A01F4D7088F7B5059EDDEB45C0CE39321C79521D79A59ECDD4" - "68CED0EA82CA484928702F57D6FC18D347AF3ED22AAF45ABB0F20BAB9E015576" - "07AE3ED9CF0E26D34D305449669EC6FC1BECEADCE183F7A594CEA196D059A1E5" - "50E547866CC087333F030E628F2CF1147925410ED0421DC7506138B1D19099C6" - "95E1AFDACE4153825B66A8ECF55A021D21EB9F848FE55C21769A755FA9807EF7" - "3A6C5BA15A06347D3F1C5C619A315598629106AC0B86AE0D8E55578292517258" - "AE85F72E737AF5638D096B76A3C57F1B9C80E770A2D4EA4E42FE469AD4212852" - "41960A8A86355EF22F583FE3BACADF8DA31D5C2DE254161BC6D10F9841DD27ED" - "462A6B94B6DEEA90CBAB687FB84B56395DA763AB4B7FE3095D572D77EFF3FF0D" - "8F9D19AA5AF7B676053DBEF64E61DD0A41D402318E3308669106259BF7A4CE31" - "B346A9E983EDABA05180149AB057F9972977DA7C6F46E0CDF86F3091F04FD4E8" - "3C6022E18CE4382B54D5DABA82E4DF1E53BF31FE4BB65A8524EDA83FD29D07E4" - "9747B75291CBC8F8EE1415EC921E19022ADE2C047E4DF3507289E9D79A8E6992" - "B48B8864204A416B769CC787D6DF4407E93D121F7FBEE0E408963E0609A9C75C" - "B3117CA583DF6E79F31C635BF0F1BE98DF550727A45D3CA337D79DE5DCDB0B91" - "CABBC30D7EF0AE1CA1E94904F78C1FD8FBA87545FDC174AD8190F9B5ED7B5869" - "494FFA91033FDC6117BF662EC5F2AF2634BA3F8C02210F1C9BCDDA9BB39760E0" - "0F25A7270C345666FB6DF85C919AA150CA7FC80FC0EACFE242EF55F429806362" - "8E61056C966DB9964428D9CE99108271E29A12328E23999734E036F18A0EB8F0" - "30E88062C56717E7A36314E44ECF357FF56EEDF90D3FB11B22A1B25905B379FC" - "CA5CA1ACB956E178AD3F51D535AD119813B1E70F7317651BC75CAC64276BB981" - "10B54EA0EF34541D73910721D657387677E332E9C8811C3FC1B923B2EE9C512F" - "6D09DF372A5F97FAD7123389CEE197B5C269E221D7EED3160A521E56FF8AAFAB" - "686179D09D78FC387B3EA6A672034D24AC7999D196B2316475F37DB8E9ED431D" - "F58341FA88003D3C6489E78053D8E44CE7E16AEF416859B3D2AECE09086A748B" - "7BCFD10F73E3CF8B31F0CC44DA059C69ABA5BC8EFAD45D3F376AF3A0DE6E1698" - "78BD842E28798E4743F843844BCDF8506F136391EC8E721DC2B6282D9C50FAB6" - "53A6ABF28947420E8C22A9A487D76A938933B34E497DA95394176B2774C09EF0" - "BB1ED8C3B131A21957B31A0B47CBFBFF0533CAF33125221DB6BA4A518864892C" - "F21D3D4D58B599A37A08F344AA7EF98E7D7D9D3316A6B115D9B8F20F93BC6865" - "734699EB54C888D7E5A0ACAFD1915352B294243712CFE82F85248B00045CF3D0" - "90C0C00D7CA0E3A1F147703FD94F717E49C81A7C3A76946E20A63F3B7C3EABA9" - "225ABE0B34CB0CF235063967D16BC8A69C130CCE287615CC053114167EAC4E95" - "BBABDFBBCF96BC0C0D65EA000AEAF490D723955BD1B4D69154D262F6A6D3534B" - "B0BC397C29ECC6B1447B75C953AF441DE2E7133A7AC98988A7EF9E6EE63558AA" - "ADA0603BD529776F05558D2DF5641C412E7347440F65EB823AFC7CCAE6B97108" - "B857287A0486DBBE689D770CA92471309E73AD390ABF56912B2B7C49242CEC15" - "7BDBBD493553735CB1D9B40AFC214DA153359C9DF576135901C2FDA58C0095B6" - "FCE3FD0731DF34863AF2882D53773CE7C182473722AA79A6B37D3EDDDE38FA71" - "DF8C0EDC081EFED8CE606E48299180EC6FE35FAB649910C48A6A29F9D0F85557" - "E10BC5AE2ECF028AE399F55CD7976028935CC03C0CAFD5003C9EAED247FBE30A" - "284CC4470A5525A6498E1DBBD3085C3F9D77C6064D0181BC5A829561560AA9A4" - "EA8173D7937A9428109CB3A66B2B3DE11F88F55AB21EB49B77A39762CA9264E0" - "156566765E2D3626B72B80BD1411E4EC53552828A24BC8CDC47F465FDDF4772C" - "7BC02066854011287F739ABA6047596747F4234AE227DBFFABF0E13153E2E069" - "F0B790251BE877FE5A198E808258639F5E79D3D5CD16F1A573724DD6A9F6990C" - "4502334DC66F65493490673AB30DCA7C031F0C212C0D8BC9D0C874B319A97AD1" - "CE9395D3D154203156C51CC3B9CB13D0BA1BDF618BC8EECA9DDD9412050CFA09" - "235727AA50D46F79AD6F3C5A1BB6B284C8311DCF93756859704DF8FC3BB8D2F5" - "E094E04502354942E9C852B208D4901834332EBC603270CB57ED418C34CE48A" - "A"), + "66D02BD8299B815AB461FB6043BC1059C1850C557F629421BACB553D862C7F7B" + "4461D75A2795D428F42F87D9B6FEDC924BF55402C3E98B1DD0A56069414E5D56" + "42AB19C3BEA56B2B0B01811223E8EAEF97B25C925A1B414C350E473B81F588D8" + "7A3A686CF9ECF44932AF571299F3D6DDB01C29B1C5935F49D9089AC82A0E8C8E" + "04B388083AD1B454172B7BC1E334ADF871C5012679186FFF0BCFA1F842DE7C20" + "38BB2E91848B6F60C4FFDA664A03058CC3EABADF70500189A456703332ECBB41" + "3904A9FB06E943BAB4D77CDA89058DC49551F38CD347B030047ACDDFF5958FDA" + "7FEB5C3136A826646A3C452FB4EDB368FDBCDE506EE0D7AB53E0931379A12AB5" + "32AEA06A8C18B8AA839ABE02EF1018296CB5953AA21D9A634F4A40EBBA25481D" + "E20F1D2B9FB1C2B745F528DD51E0C246013EC2121337C8A63B637C926B296224" + "FEDCABA72F28489E016B0857116AE84DC1FB40CCBB9607B8261DA2E0DD150C71" + "616D1EB95158778F8DB92C0FC155444ADE9229D2A62DEB7AED858155BDDB439C" + "8C4FAA455714929B128E2F46A436BC3E807F7E426EA5E3310A6C591158B343CC" + "3C50189D6129FF32C328F5E6A6296CE6D7235F1178373756B80B3A14CCC260A8" + "423DC921AA9E7D6A4FF255318F036BECB16EAEC315DDED0FA5E2FD6FACDA118A" + "0B737416DD6F3470791B62212D11A86FF045BA503EB872428513463B4B59C29F" + "4B7D0EC7F470DB1F779531A4202C5B8AAFDC17AD3A76F39A59AF9C555780F31F" + "610AE3497E0DAD70CD424AB616E952A41E20D2749074FEB15649152D49A9A84D" + "5F2BF2376DAB936FDE9BDDC420C62BAEF6FEEA9FF069EBD0ADAFCF7B74F76D05" + "732F8375FAAB0CB05CE67F87C512A91213A05E728225B92BAC8DD21F3DD5556D" + "FE03E8BC27B7611E42A0F3CD309C0E0CF65473523A2AA89571540D3F1EEB91DC" + "B5E41587BFB1926076545D673D0157C312F0BE43CE8FEFC5004FA35AF29B6E55" + "CDDC87CE8E2C470D2299C8834A25BB1BEB02DF73DCC5289081026C6FDA6B72EC" + "818848D694A69CBFB562D4D61625CFDF625C363468013D9E8F271F5C872BC959" + "4015690ACF575428E2B4F79DAF14FA0562D757CEB1D7FBB837FD2EF6D19EB0EB" + "1FCAA5399A0E1C2C723D9B18B80F896E26F0BEF62D96312243FE48EE5AE53BF8" + "2B4CC1259BB55377689C9A3AAD964504E22F0A7B198E3B7DA88ECC926C8BDD28" + "4D46ADDC9ACD49A0CF0DB3C36412A2DEBD1B0A65FEF211ABE40C78AE4441A9A3" + "F81798DDD7C6C4C9121EE88D42D7FBC6DE13AFD4715DD71664B5404133993DC5" + "AB8A10CBF3D1268A830DE41F90EF28A252620EA02402E9DCDB4C3470DE10C191" + "2064F6C4CF79BBD126E215AC68216AABD1E4E46A4847CDC5F4E91CF4BFA9734D" + "14A56D71843ECEA5E058BC33182876342DC05CC85C5F832059A6F616A3506F1B" + "EECC1068A1849B8DFEDB57863304DAAD2AC2D246C16C210D807474A020812DB1" + "DD7E3AB0ED2A9A5BD6481550CEEEFEA51531FAB03E5A25117988A58D34F98F4E" + "96FDE2B4D0976C257DBBA78BE0248C20CBB1238C5A824E617909CB45E0D6D50A" + "1A1E8CD3A4100C742279B1F3838E99D69F98F61FAA722585437C1D82C3AECDF0" + "F14EB0D89AB5997797195F4F4B0601A67D5F0C29609C266876E6160C46B38704" + "91E13EAAB7FB62B4030D160B959C4DB423E5D2BAA3DFCF960EB930958B1105B9" + "00D9E629A941271833216C35539CD7C2C40030035AC1E630E9EC4B8324543DC7" + "3138F6E9AE58F804556818CEAD6B1A8D526878386A0BBBC697565148D2986E27" + "C376DFDF199991D067BED705C7A1FF419A45F188FBB715C06F9077E862E2B67E" + "05F5386FABED0BBF587D935A25AF86F6B945C9E90CEB539EA3D820912F87CAD7" + "BADBC3ECA84588ABEEC56910B84703618FD2491AE68C7FDB88CD5131F2C5D694" + "336495E0AE434549F7E835CFBBCD2DE770D14209FB54F8CAEE092202F12C4D0B" + "6A9F6C1ED7F9413D509CAC8F31E7393C717B340FEDECB77003305B54858C01C1" + "7D3B281E894D59442B1D66944B59B3FCDF96EC6FD4B69ABDE2C5DF78B50E7DDB" + "DE0A75054D93B6BE8E474CAAAF102FD1B577374FBB940748FF9F40482F2EA955" + "7D3735E5355D74E97B824B30F80F85D2EC8179000B7912D5DD37984434A5C6C5" + "A19F42C91F9220616DDA34DC54FDD47472BF95123A8EA0116FA65C5A53FC77CC" + "F69F52A2FD373FA836BC214E6F2B4F3D64E5EF2D8F08DBB38F07520FA97D82ED" + "F789D9387607E74DBAE2EBAE24EA2479A19CE185E2B0CCA4354AB7C40E8A502F" + "BDA7A7666DABBE9C8A18A82B1F8FAF9322BF0C5743D4AE46346A10C365BD8F6F" + "14F4118E022E910430013448E921D7B81AB74AFA11B9484B7049865B516FE2F8" + "8F06B89C8823B81BF1E593CF8F0487AC065E732C29028B42FEB43BECB67E78C0" + "9E4E74256B81C8E2F8AC317DE028F966F3E282913FE9860F16CD7055CBDEC81B" + "60E00A12D4D94AF0FC3725E1574A32D5450C9840EEE663BC51360AECA9CDAFB4" + "EC1EA6BD272997E7FB3EECCE1FA436EC19FD0AAA3CFFF1A1FD44098DDC9B16FD" + "E5395EB16613ECFB0C1C40B8295066EDDF5F7B5BE3A2189D7D5BEA5065974177" + "974D71395FE5D7A69D72F5466ACA864265C472ADAC2BB8122844ACA252C0A85F" + "94C770226BC57EE92CE194F637D83CEF658F9528A9E2061712C399AC22C56021" + "DB32647246AC2378F9D0436CEC6A2DAA87F5124BA4715591F5C489FD27CF27FF" + "FAFCA66DD3C8E192664DD75AB63EC60D218583876E6051FA6B349404F412F477" + "D9A74BF168E1CAD6BD0B21B013C4643060A46FD011D2B36BCDEA8E87BDAAF5FD" + "F7C9DB5EDBC6E7D0F00444B464D365009CC074C6666F1497CA583AD445F759E5" + "930E0917FE018DC0CF7058899BD1BFFA1DFB0689C50600E9322339C8A32A8ABD" + "07B8817743F1EBDDC1732C704D887454DAD00769444F4E261D68B5C4A5A8EA49" + "98FAFB4E77427BE737210DEAF20E4CF28EFBF524365E821B1960B1D761098253" + "B2FE18D46CF6A892F9C38D6F3E8F5E2B719B73F8AA0B67A99B85BB9BF920AC7A" + "3CE2F1B44A394E758EA7821D2503DFDB53BF4E1BA0C0912299AFCD096B3265C5" + "BA95696980451CAE3248FA8D0D9E14AF8285DDC36C1A5AF0174D34DB2A5CD508" + "E6CB19A33A2A9A26E76E1BCF3291CE184A11DA239C4D24826C6EB63CA2A5CE95" + "CDFE130209E76E02C3057D6AB6CBDE61BD4E31DBECB56C271E11B45382F6BA06" + "74334ADE92F26AFE57F433201E3DAF56FA8B3E08959FB6A45CDE1E9E4971C8D0" + "05228C58C3A8632FDE53B7DEA834241B9C72CAA3C9FBAAAD249541C06FC5E21E" + "3D19866373EBA687EF594B0D27E4A5CFA2CB6425DFAC1335BF9D4D04AA65F6DD" + "B0481272702F15081FA4A1310717C214974C258A37B7969B69659A6602659482" + "30B17BB6F32359F51918033A6F9E84645FFBF642F1BC16F28C314FD0150BD65C" + "3D4E43562851207DEF5AAF80E851F4648DDA20DDAD03C1965855FD3684FD384E" + "FD9E19169550D4337FAA85267639E6A9EEEFA3CB516B44C3CBCF07D1D5E585AF" + "D6EE5099AB4F594494D7F6871ADA5B769FB9D3AD841F03DC942A4C049D181A2" + "0"), /*message = */ absl::HexStringToBytes("D81C4D8D734FCBFBEADE3D3F8A039FAA2A2C9957E835A" "D55B22E75BF57BB556AC8"), /*signature = */ absl::HexStringToBytes( - "BBF85FFD0E01C80C8C1C1931CD640BF273D49693C4C4BFF5DD20D94CF3757ABD" - "45473B9D01B1871305DA90EDC6707D5417129467F61F723950C1AEDF7055EC1D" - "4777AD8808E8B347D1D0921EBAB890CCA8E3A0DFD3003DE9F9CB4A97D884E1DD" - "042C958B816F7237032B20F8399A5182F46525EC357D2F03437403E0CB5DCA4A" - "13FD2F1B09205B9890F02EE5AF542943E6F9375ED08A38533042D6BBD50F3725" - "1B1590F63B4B58A7D1E1F31CE62E3D2AA91E1C767B9C3F5CB26823F97AD1D9FF" - "AB2875EB68FFA9B09946EF1D7012C02919EF13CB100C2E2C7987A0A5785B5F3F" - "3B948B7FD64B85B165AE2FBF3C47E039C3073CA78FC900BBCDC069FE906885D5" - "B13740A223AF5254F98C1D58E2FC92B0373E2A933353CC3EECD39F71D59CFA09" - "294E38262A4489400D222982F9C780CD0731D4EED916C5A31ABCD02A590ED8C6" - "FFE18B5FC7B6888E74726940D02CCC62D78BCAEDDA2E028E535CDAFC0E091BEF" - "50DE2DFD124F1E854F568527AEF4DC8455FDA01B6D0D43048ED5AB42B1D40813" - "994B9F6AA0C036C0DCF08F46B00FDA014477CF879B8FE5EAC4541B82DA00B434" - "6046865B092ED6AE0115FC834B58F75FF928D7D99AC8691FF70020ABA25480AB" - "BCC709E46EC510F4B8CADD60045954D3EDDA7C23E03D91694D3C3EA292C92535" - "E6B5FE171C567DF3729406CDBA2A5EFA59F156E9CCD0302FDC0F8BB759B05DFF" - "5DD802CE4D5506A19A69D70B3AB48AB17A2FE59589F73083CCA547FFB3F14683" - "C914BC1345E7387E831EE6037501495C92C357705A69F952A2F7CD30E03336AF" - "AAFC9C56604CD545E82AA12AF058DABA974387FE8DCDEC699A1E3853E26D29E1" - "578189AA8C2BBA1550DFBEDD1E4F224EFCD65491E54E56128AE7C2DC8566797A" - "BF2D9455915203A5C89E55DD23DF827436A8D6DCC5ACA82F9B183692159EC03F" - "2B798E557D147346D835A8D81B2E3D40863966863A54D9C87B5AACE963CD529A" - "DBAE07070CEA00B780E18131E64F0AD70E9158F590D00AD9177908B90345FD79" - "D0255771C608AF65EE5AC3C50166BAD057380258681941560F1133405FC2D761" - "1314B4381D5459DCDEDE4D39F3823BC4422BB1D736E7474A8089F0ECFA3C30AA" - "C119FFA42BF743F48E0FDD960292D3E49A14EB0590C8E02E421D54AE8A521951" - "5E21895989A0D71D4F451669CD652DA3489E5CDBC0876BA0A0899E7D8773B24A" - "FC2CD6D37CA380A5D0DD436304D6E1A4DCD638E8B95E6C95465C6690D4EFE8F4" - "4691E48DE22CFC691C7561AD8CC1A2C3CC9FB86FF6F4705A573A720471ED33A0" - "0E8A60203818A3961E4D213A78B8626394F75C282315574CCD725A67E20F0BF2" - "24BFFCABD702BFD4E1CC5F78BEC0E042E12ED4C9474BDD5EED2AEB53F4A958D7" - "F84EFD56EC030A94D200A539DE164E53C82AFE8C5F71BB99A01F7230B7AEBC21" - "3ECDDBEF5B9E9064874396F8A91B0575F68A4515DD158178BF277A90A3FEA200" - "9200DA2EDA2C8B3A47C104D350DF68E94C8A4023D3AEFBB70718FA2E27E6A5C3" - "F9927EC596AB540F463AE010EF71B89B49497F0CFD2939FFAB2A7DD1247DC4A5" - "9D8411A843BD84F1EA8DA33C0701D70AC27C4BDBD0D9A0CAB86B1FC5BE12458A" - "2580A6CAB4B765B842C67AD54CA5D40A24E2DDBCF01E466E08D9B3449F13E82E" - "16D61C723FB9462E97B7ABC70B2210ECA16B160D5B8F98A1794DCA92CD4F027F" - "3E4152EA879507DDFE7F1F21514153F036AABC33F172C95A9B774722800F2E08" - "CC44F923540D8AF64B429968B280364C1B7B4B3E9BEE40C50002657D994631F3" - "3A8F8F134A27EB69BA4395908BA40634B8F2703149275FFBBE8B483EA1BBA91C" - "28105136D97C470EE83CD21CEB2B21AAED98DB8AB165A7B4BE559E7EACA68460" - "3015BC349B0A51214E4E8FBE1D2D883F79FD3F1EDCDD3FA6D4B5BBD2A5B3003A" - "80F1DADE975B502C7F72037316BC55C1E57E500627D60E31087431D2C9D02CA9" - "F0EBCCD4BFE3C4BB536D4CFEF7510750452D444BE2C3D64D84A832965305264A" - "BB53E3614940F9B2F1EA6F41CA8F69E726690BA630630F8A916EE856268251B7" - "73DC2A5DB45D22DFB2439CA4B7AB70215D23E1F2E2617394FF783B0BFF6DF034" - "5CC927053D02C65FE2A86DEFBEBF5243A2EF6A6312BAEDB6E60DBB0C67CC9A65" - "5585CB458D6A04181194815F03BE87F6E800492A24C5D502D5ECD53DD6DA3679" - "95D32E8BBAA3EF62727E8A610E8D6B5C8FABCBE8893BDB5E038627F707E8464C" - "55DCBB76F0836ADD298A967C459508BC4E88BA5CA38F5A561A6D2D6CB2178D90" - "AC850CA2734B45C4A89AA0F152A3B53BCF1E13532B2B5B3878B205BD2B327DC4" - "9EB6660B9511BFAE90C1DEA5BDEB6DC5DA068BCBDC6C093E5727E387374F452F" - "963C307DEE865D41AA124CA803C12F9AE9299C3CB1345FCC568C6E71BE3366BF" - "30EFEEEFC7693C36ACE576B0D10F402F380009FD0EC068CB2D45984884EDF16B" - "C90B0FF6DC96309EA377A3CEC043CB76B6C885BBB848C4745B71E18C58E78050" - "E19BD7BE0831EFE9052A6A7DF8D4E8B9FC3E082A4D40AD73E4B3185E2F6DEDE7" - "EE51A4068FF2DA57373FD7E7BD46E0080F4C2C1F41BC250E6DA45A341F214771" - "F5531A67B0FD97B53CD72CFAC7215BC4111F094030A91383D20182210FCECD75" - "E59C4B0B33A3F93D865D847EC241E1B98481C5D9D27F0AE262B328650CDC13CD" - "99866BE9A5A030E83D84E32BD213C94BD6AF950433A4F00C6149783B00750CDF" - "D4F47AE75217EED1F60C366FA02CDB206FEB2A685D6B7D6A4C13553E2BE27794" - "F53B0EF57315203263EB026EA5E67067D22F92E26E98DF9AB386C2705B4316A6" - "9892688E601E7427595ACEE6E47F5EC598CC48C2F2DA1C32E062A349D89DCC8C" - "05C62E7B0CED6F2E93A7BD48A8004A8C5C605DFFC805DE079EDEE7CED98639A9" - "2F6CBA92F2089B145D2D61D9638C07347A2EF6B30FD90E111A7F5913F6E18795" - "C19E0B9F60F85BD8F5C9A963339441E4A5B79EB2E867961B18A1884A01A74483" - "D80B403EFBDBD4EDDDC1922DA3FBB37BEA97E0A5B6343E4367601BD21DB66941" - "C2698BF506B04861B5F3D3D80AC6DCB684D9C4369ABD04BC4BDBEF49C66E3844" - "513A3F3BDD400C080AC6EAD81E8BB0E7CB36DB7B7EAB4728391857F597A34648" - "63C312645B20AF02F7D0BD9A74DE2361A0D2D98A698975B30F1010D90A126078" - "584A45FFBCC65B47976AF657EA84E9730D9E363733736AC80103DC1C7573C4DE" - "E28A7BAC9EF72CB829450B53EAF984CD01AA31416CE8914B7D7EF849EB9CC172" - "D7096DEFDACF596B9B21A573E346A47A5A469E1D7939BE1982CB3954C214ED3A" - "3707D740C033E3EF780F4C48BADD863848BBFC9DAA8E3806A84B2CAC0CA23200" - "0CAF0203E908FCE18B5D62777225D2D7D584F2ED71885DFAF5A4DBEE02F285BC" - "34559B88EA9CE15B47A3B92A8D6F91591C329A5AA21A1BC424BA2BDBD164CE1A" - "8B78B38BEF2B47F21F7FB7A3C54E3EA4536E816E01656C8E26AD42F3CB906169" - "67C0DD079F956C9F3C844D5F339C62EE8A358C4BEC2D278AF718AD509C6B6661" - "3B580443FA6F11CD8D107693B5D7B738AA7E2FE662502D7504A9F596194180F8" - "700DC4E6F7E8E7D2307234494B8DF1D57EE14D6C97926EB1D8904D8089BE7D13" - "5B13D6DE30AA8720D67159BB50A834DE9079922B88931D458500626834DA040D" - "B768DDDBE67A758A02B448E36BA455034ADE36802AA42A7F2F234A5E1CC241E5" - "661C63AFCE59DFDCC0898347D2834D7264F5B21A47C5214ADC57AF76CE9EBDB6" - "8C71029BCF0C4C745A33454ACF0CF6D5C68DEA06C45E7D4D1755C5ACDC37FC24" - "34140EF707FD55FAF06CBB1707C27CE9D905905E37E2F147C9CB8808ECD05DF7" - "1FC5F1DAF910D7BD68B6914938BF0CABCF66C905C49563D7D70F2C3D3A4A4F62" - "9E3AFDE53BD14CD6E527E4F038D6A331D01468E22DFE93A379B3EC6DA6D1C2F6" - "D5EAB141E575F93C8CC5580DF4A3DB5C4C87D8548E9A851946D1B90D7527407F" - "1BA1121EAC54A11E6EDA45ABB08A7A78AB36A76EAD7FAC4678E52464EFF398E9" - "0215AC316DE5A6EFE5A7B4A95DF92E4129F3F91B316F756708BDF37C01C12BBA" - "A091F94884E38AFF3C7B8140888CAB4F7F867EADB0418584B6F770740250936A" - "138AFF52888840677D8121C583806FE27104DE528813E56226B652C5869BB500" - "303834D9C9D197DBA1DD5C4734307AB8BD006B66EF45ABED2E31377BEAA19DAE" - "6EC82AD77C4C07744F9B93A8DD4CEE1A62A552EDF4E277CACFF1F964DA7AF8FA" - "FF6B56E3EBC06850A9F76ECFB2C2BAA660958C6D1BA96BA8578D066D6AFE6E8F" - "B2052B7421D57DE5AB4C1FD55170E9EE33EB32FB3D2C886142055EE8428BD745" - "AABE1D15191FFC93A3FA7A86B427EB2370B78A67A485AF963BBE1F2246119FB4" - "69A002D7029FC4F5F7E0125FDA7305ACF6C80C7BD3F668897BA81435F426B842" - "5C9855CD46C3448BBAD0739BA88ABC273BCD0FA1FDA7F4F8183B5D73D16C407C" - "452AEFA2E3CA9F2D9D638D966A58788B48BFC57D3FC2085FE85A7F7ADDD91EFD" - "1BA0226046B127A97BC480479B92881A58A0BC04D8DD9E68B6D2BC5034CF2343" - "0D1FE54991A6908B019EE018C843B9FA53EC7EE5F114ABE2B750D4E1E72EAFB4" - "FBB33A1E2C4D6272CEE27BBB13B5D23E24F6129CF5825F34AFC056F95F53A09F" - "6FCA9435CD5FB6C05F88B4DCE86CEABD7E0C785361D253BB9CDB3A0C6BC85183" - "01FF44F9E87F7A97EC9F02FAB5134F3BBFA1CBE44FA83F1C543ED9B870657543" - "5AC6A15F7B0DEBA9D45AF554BB0CCBCA12A6C16E5EE6FAD63721E4C3CC8D9EA6" - "8C6149993080952407AFA203F504A887B3BF84D2BB6E45E7CC5326533D63963F" - "FB72A9272C8FF637BE6E2473E9FCAB6B5E5E7CF3EDBDDAEF51C98D53170F9B64" - "BCA5D49F76AF176D01A6F2ECB339151F49E49A8F6E286C6D4122D650D5015910" - "FF7F28024693895C5803DDFFCB1EDC4679C8F535AC1597D9B28AC46E62888101" - "29C179556AF7882DEE17D58A97F434DF83646B33CFBAB90A6250851CF53D4BDB" - "4526337DCCB9D98A921676B51365DD08A5304D2A93534C52427E9AE5C1440592" - "C5536E171CF4FD1F43578FEAFB32FF01D4FED635D752568F90ECFBB164A5B176" - "3F70C72FD5BCDF61D01FF3236639C91C063C0B7A56AD03F4020E80BD9A5E2F16" - "1E0578469B9950266BA96BBB73C08E7FAE856E1703CF3CBD21418089148F7A9F" - "40D4D91151DBC4BAE8542359E882A19A9949CED5B75FF7B192DC279B3ED10076" - "053F58DE435FC5875654E98633A397141142229D8CD613C66344326D83992B3C" - "08F17BE0EC28FBDBABA12CB000B2A2B04E24D0C41BD6B580E999B257C007965C" - "4475A9D5314CD6C1FB9FEDD516E6B3C0DDD404D68D78FD4DE40931B1B872D4D0" - "1A2D46C9B293900D34EC91D3B693F4E72C228ED0294F6DC9B717260EBE75A471" - "EA4D7800A3E7B7B476D64DEA6F4DA726B376F07800DB5F83C0A3DCC2C7026A4C" - "378E880994885D6F7A8819D91A2D50D16D22BE592BED38330410E14CDDD4CE0C" - "48D62B7797DE44C07F26A79EF3A5830F321A35AC507E943C6DE63FE136823225" - "D6FC73D86D4C84399013E064E6683492907C7B78AEF2AAB180DC33E5E6BDBD6D" - "490E3AA8BE8E82FA6CB13BEA360C510F9B4B5BA6640427ADDDF3D66DED41D1E2" - "A06131E950136842732C273498D6A47CED4ED189B6E739361F68CCA0A99D5602" - "B97655AB2682E837DBD688C173DD4950DD4CD4D3A338F3FCFF8C7116EBC630D0" - "5AFAB8DF7C7560F4DE9AD92216268EE143A722C03497CE17EFE98F67580F0DDE" - "F57F15255E68856D39A4EB338A653346FEDE46663A62307F6590E2EE7AB928AC" - "5E8FA163AA74E40255D8D241668A1C717E3F28994350F49908A32E6FEC6206BD" - "F7936DD2CF6A87B9994045552ACCE6EAF1294E7327A13E6EAC16221A676F605D" - "6DA6365D0DB01135405013F874481A68330455281A41E83DF76D20D1DF75DFEC" - "A0917F3E94BED22D1ECED8A9FC7B2A2E4A5B74D0B0C9282BD612A48648993F9F" - "012BD70A0E43DC3D1C0A16711EBF6EA479DB941F68A6701B57F7B837B30C0A6D" - "771123D6FC70BDBE24440CE4E254A070534F1C1813C516791260A73689DFE1BE" - "AD6EBF6AFF7EE48DE1D59C62228B383E0ACA0690F805FEFDC54FC4F974BFACCD" - "FE33216CD2BC06BA7C2F55D7A0708C48014FF0C535CD83D54708FD703E8EF510" - "FA6072E25FDAEB9533D4806053076CB8E4FE6946FD1A670D1BDA92311D5ED5FA" - "245FA74A6F04AE66E3C9E0A7182CFDB210E5A2F28C95439964742A987A162985" - "DB91DF91D9529D8B850B8628A9C5C8455BDB417C927224A9A8FFCDFE00C228FA" - "284C5052577098151E33787F8287CB0D2431324555848A8D9CDFE3E4F0F14261" - "D0FBFC023C596C749EAEFB0A1784C8CFE5E7448A989FD8D94366B4C7D6FF0000" - "0000000000000000000000070F1E232B32383E"), + "71F7F7FD6276C18539BF89D27B86C26716771342AD46F1FBC8594496B3C85B36" + "1B2CBEEE99CF0BD6E8E43F31F6154D49C1ED65EF51F8BAE947469C3772B60065" + "EA5FA1B02895D9DC1A02E063054420ADCAC38079419D1F02D89753ABAF499E28" + "45F723609AD1F9341D6FD912DF241F0B9727BAF8A6D547E1DA8FEBB5A963C2B5" + "3F2322B1CC2F4BBCD13B4F50A095166C7C918412737C9CD03C83CBC8A9AA64D7" + "3399106BA0FC4827AC20B59889278CA7BBE8C06B4FE571C3C603C0FD1FE6AB15" + "8A7778D4A76E425D048FEE82D0F8F95A84FD93818131A5A8B6C2A1DBE3DA04CC" + "0D68013B9D5D1E3E3CDDD844335FC8F80CA5BC715C2D4DB8E80466256C2BF89D" + "324FA709B4683F2E3CDCE00B9985CE75B931F378E8950CD1DF3F80190B162C2C" + "4CB0297F16FC16908C1067F98211AF5AFF9036023799ABC95A5D6E91CA360049" + "E1AD1CFF1B95245C692363D6BEFBA1B1E4F48E3DC33E490A0EACB7C3A9534EEC" + "F7C66CE1CBDA457F76DB9540CC7A8E62331640001AA6CF0EEDEAE1805EE03F25" + "23ED318DC2430BC096BD7BD830A88CF2CBCA2D11C511866C8E414CEF9F3C0CFC" + "E915A0AD0547FE3BBBA8D0020981AF7F9D35494D883CBF9F32B457394794E0EA" + "A06126E4516C1D71F44F7FB14925FFF6528C5277E60C16191717357560F2E9B7" + "4E51BCB0E5E334D945972D26CCFFC7453630CA135FA005D3B1EFE929096A8E70" + "AB90D3874E881035CED16297ABBD4A7D6647B89D213C251527EB644C1B133C18" + "02350BE47CC90ADEFB83281A521C382BF55D376AD58AAAC68EBB3ECCD7A9E784" + "83FE48965339368C9DF41BD34482A8357D0FE4A723A0C0881ED385E63F16B467" + "81585B1B339D121250A26F1608AD0617CCCD6668F1E6EDD25B16AC43326F7E99" + "B5245A8AA4A647D03DCA63C26C7BBA83F8A69A3BA807A8DF9CAEE0F5DF54BAC0" + "E022FFD9F635DA265ADD24D90DAFFB86295CCDD510A3044563B276D1D406BC83" + "4C7AA106D26EC3B3783F69AD001CBA0279580C499CC4D99996F36EBD8C711C78" + "95F625D50BA375409646E0C2E6208877A4ACF92587B6D302401A25510D059FB4" + "E3793BA52BE7E1C383D2E238804AB19837A9D2A1FBC96AB2C29B5496B0AF5F42" + "57D51DB9AADCA5D67D0613579D40EF1FEF1A1D177B23FFAB218CF49073A6064E" + "2531CF25A23C5C47AD4D71133FF6BF07673DEAA1D45ED860C5C58CFF65888BC6" + "496FA5A2DF20DE617BFC0DECB4078CF081F7F18FFB350AD891F5FC80E5FCBB1E" + "DE3653A4B760DE68046EF68524B4EB19D541905F7A3826148FE9FED184AE3A78" + "D511B801967F40826D5267095271F7FE3FF423B0B5E741DC876F85C5959657A9" + "6FD247481DAD3CEBC500660EEC6A31A89634005F6F5AF51662B16161AB561235" + "A4F7547BE90354564A0B912FD576BD6F18F238BF9E7A20DD5537517AE11FC649" + "46A8CCBAD13F14E13785E942D89B4AB084192A48DF017F9F87DC0641B21D132F" + "6DFE7E25D993801287E7A5F073150C8DC43B08ACFA8001F0BE6FAF23CE83C4F5" + "B49D6F2D04E4768E573D1EA1C703E7F7C2E892E63B654D8900B2307CA6C78F2C" + "D8C98D8B00A484893D07CCAE09FF6602D2D2E17124EA7CE843A230ABF20DEE59" + "303CDE65289D8BC354ADE66EFC23CB76ABEE4A3205212C51BEAE793DF29D2CA9" + "57786A6DFAADA9A269707FC4F55AE554410851D7F1C7A22C730A669191DBDCAF" + "6E24866B291218FCFC79CA19585A75672EFBC03239FB158DCBF402324099F33B" + "7CADF4F4D35C65CCE5D33594F3F8F350A9520D1C47A8386F6342B462E560192A" + "337429684B4497E20110946F6E9C8A87E93A51ECEA96E426E5D20F1AACC8773B" + "281DA492976F8375538BE088033D5CE271ECDCA4B139E517194798721C16ECC8" + "CB8B2DC4200D31B8BF87869960D7E0F8A46773D0C99BC76594F41859E6A92368" + "73D7149CD9ACFFC8D075C532881AC55ACEBF062453FBBF4C329071DF798948E2" + "21D68E7BFF4E7DE446EADD71005D38243FB61CEC26275D54A4A111323115CA8A" + "17E9A8F401E8360B3BAFC52C0CA9535232FC57EB29342E322A8333A14972E9E1" + "C38C9391330A030D19E96562A34D798A094C54CA834B376FF28ACF6CC70926EE" + "25B0FA8C34D2E43C9593A8627409FA51ECD48572C015D4673329AF4AF047ACF1" + "0590BAEB30919F1ABEBD2C79F337A2E860196E74531389B52BD03A8ED1011B60" + "28B1019A0F52433B00D7EC5460E4226082A6D0BDD4B4DC03A97561EBF6881CE0" + "7B768E096C05E6FC3E03A03F8057B310C70FAC81F26BE9A6DF94F7D0676061C8" + "4E611F07F963A5F7FABEF8CBAE908C1DD706CE100D0A737F0D1BF349207A09CC" + "BC45997C41352AB92A537F34CF64D1D82EBD7BE5DE3DEF74657BEDF2370D7E9C" + "7B74A8E1F256F0E273E17C41E122D72E5E2382E3309C1BCFEB4430C3C7A50C5B" + "A82E82E638FEA34391CB84B6B7A01ECB384E399419F9A71053C9C182D0EE2035" + "76E3D40EDC3B1A59071092F2ACC1F49D65CDC71BA960DA38ED0F84858589A85C" + "F2CEA9EB373D650C89D2E29408ED80AE7F01E06D01761F1D79BC38116CA97BF1" + "844FD68999C3C75F51D534F032462F2BCC08655D1DE4BF1C8915178948DFB371" + "8117CF9E1ABA63EFAA0FA9C8BDF3F7F422875574C090BDA33B741106672361D8" + "86B025AB8CDE990D0F4159F522AB985426FA1BBFFFD6E83DB7FBF006207F02EF" + "03E6AB6FC16B4306B1D437E4AFAD9CB7249217D7DCB3C20A2206CD29C088188F" + "8DF36466D1ED6FC892789453EEE07F6D82BC8FCCFEBEEBF867964564BFA36D9A" + "68BB05462B81DC5B0F30142C38E0EB31FBFE4C6651A08DD20644A7137DBA397B" + "07763483CEF14897FF3D318C3A6F84913312E655C362E2EA37C0B1B406DC275F" + "23687B7D6AD0580F545F88B9429B33892B85FE25FE86EBC9DA69E07C7F56F191" + "C6FF43AA390FDAD81C9D7F9417BBFCD4A25317C3671D31D99FE9D5720B265D37" + "892BB34883B668408B88936A166F12CE6A3FD6A90A4AA29DF4F8B07B987E9691" + "EC6C6FFB279C4BFA6908BF05FAC22844717B6290B671321D5F865974D745DC81" + "47D934588CBDEB138EBBC9AECB8120653F6ACE9ED40A2794D0BFBA2AF435EF58" + "7FE07ED65B79F3C835B9E8D214A8F60CA8E942368B5E30E7F4C7BB27EFD0D2F3" + "1C678733B75B202563C810847BF864B16CB1CC75DEADD5D1A994AD8A43077BA4" + "DB51145CE8FE30E487748FB81AFA7D06C9CB2D20D9C741C91455E29C082DAB9B" + "559A0B01579664E127BA51E2A53E79830E9C907DBAEF96E6B24D42035D94B7E4" + "993EBB5CBA4E96DBFFAC4EAEAD7FC085A0B3D8FEDC8F2688FFD5CE96445DD452" + "A5D680E61E5984395D88EA47E0AB2EEB4958E3FA70314866B6E767DBF346F014" + "67ADCE60654758D3524A1A451036600C98329F78BCE31A9E238109867B647E1E" + "73472C55BBE18B37436029C8FBFCD35FFAFC336C7CFE3E16994874ACD0347524" + "4F663163789622B75D29F937737D5E91D4119616400066A0F710E740F578703B" + "E692055AC486C66B4E6B0CCAA3DC82B55FADDEB9A2B0B27050DB015404EF4A2E" + "BEAF52BF6EEC18A6A7DD955105784D232F921617560ADFC60E6F0750B628F72E" + "8B2EE29D43C609C1EEE0BB2E60F166F11449139E0993A3DA27AE6104948DE565" + "DB0EFC178E28AAADEF18271C086E29BFBF15A8F9E1ACFE86A6607A14E974067D" + "B4E8054757FC996534684E44D9CB088553BA4762B17FF609AEEDD47895A07100" + "6382C12190D002AC4D54B558169B5E486791BE0EFFFF17CEE0BAC7CBDB974149" + "AF4D530587E2E732498BAF9BC3C9D59202CA94BBB657EB0DD909EC683E07016B" + "62E8550EC4D2911741DC09265F8BCC15E10837E693C4FC47ED95B85020739A11" + "230287E000E975B78D1461F74889422D4313F3646F3645BCA2685A954A5E6D32" + "75DC98AFA40BA0065A77D5206C2DAD9A64C55F54E3B81803A9BAC6781F6065A6" + "54B2D19126DA7AEE33C3EC3F43DB88F98D76BE744132B49DF9C8DD5CD7DFEA58" + "B069A1669B7BD3C405A40154F66D7DF47AD3AF18C20641552345932A7E971229" + "096F856D90A5DA032827CC74F8E30E48F7B8D1E64FAB11B8D0E941CEFD3BF948" + "73C091C30EA47BC8A1840B7D9BCD248FF3B2B6542B19A228E5AD4B26B262F889" + "97D25AFF20996088D75D920F4CFFA10138228C3F2236728F2173CF064CC3230F" + "4FD1912434ED47CA75DE5DB2D93AC5AB9F4383B9E96A3B77C12E35283C4415CD" + "6DA9C14EA2CD09666DDE33C95D89A9DE6DA18E05CB07961EC8EA4550290CA3E9" + "7BAF9CAE6C720B7E6E33A15335ED342A75E91D6349AB18092352F6C28B4E0FB4" + "8992EB48E498CE68557BC97DD8EF10C02A78F68B573047EC3F69F1ABF44229F0" + "4B0097971575B16068F6D54AC63F85D4F309A070AFC5ADA6E99F2EAC1CACF52A" + "40AA8E993D7475D0080F9C02F9A3E7BF6AC62CE0D67F820616551A6B7703ECAD" + "2BBCF726149ACAB0569BD5C58C48BF1D8C6A811FA04762BF8AA92EC844E775F9" + "94F106F05625B1493449C640E24483A49199C81FB7F7953BF3FDCD1105944789" + "295E629578078955A93BB1CECEEABCB29FF35F43A37549F60ABB3EFB344A9151" + "F93C617E7E710D8E8C48EBAAE83FEF43985AE5EDFCC716A700BDEB552037D286" + "20121F6FEC1F3D2EA97E0346517D11A84FE969ECB3EF4F7787F8BD86C97EB2D6" + "39AD8D97506B10C1AD10D2BBFF58307CD744A8FDC9141D873B13F78E6F74F820" + "16DC3BFF252EC58933401C7BF14B0E0275881B96198E6FB6E5CBF22D29E286A8" + "47B2857DC9D6214AFBFA2787A4FC0D65C65C6BF48A22F4001D8F538E63A2C3D7" + "D6E0914DE4DA0A7BCA5DC5BE4578212F9CAED253CDA04ADC81D7DE8056165177" + "54F1E8FCEB26B468789522CF42E400F5E1918EA3D3EF93E16CB10A234EAC91F2" + "5801B1E2AC958FDC724B90F079E77C3EA89FBDD4566790DA20C0CE254DE71148" + "9EFC4F7C0D5A31067D3A82A00CDB3C4E4475497A4A54FEA8C17C6836B6C3B70B" + "00612152490C238B127EA698DC7E93CE8B1E0CE7E7902EA5EABBDF205732ECFF" + "AE35D485D8E5D0DF235F2FE98848197E5AA9402EA3E987A46CE8B365A2E046CE" + "819543FBAECA042C626B0F36F2E34328EC8AFFCCD799983026199729FE6EF74C" + "81473BB2FF1CA4D8A5C9E78BB849AEB8B0F81A745A73119F6B07FDCA012F3431" + "EFF38152A1DCDDA9A95D8593B17FB3D547508A1B09E00BBE8B44E50892968FBC" + "6C3447901DBA193E75859A33475DC43422D296BB9547255374BED89BF6664533" + "57A85452DCE35F044DB4FCC0FA68EBE6527ACC1E1A2453D56CBB3490BD08C086" + "77E2BE61C94D570E5CF7EE97D03CCD971AFBD5225E1EAF18CF791742C3CF8CD8" + "D0E26FBD2A6B15E452C182A271BF4E16866755BDE269F13AC6DF0199240A0690" + "7BA634C9399EFD092D9137869AC79ABD42D0BC157D8FEBF1B77D322E808A21C4" + "557ABB70D53E63AB101F4CF7A42A7BA796CEF56862064955736CEDABFAEB6F9B" + "E1A1B22B93E803883104CBD532F0416E61576FC3FB75D7AE6C139FAEF577C62C" + "481C4046D3B4954452B58AC5AE24B72E8E0D540BD714F0FE347BCD41C0E9D507" + "B7F5A90299ADBD0D936EB49AFCDE0A4CA3A817F5D7360811F61D96D05B7C003B" + "659D4025E96679793DCE976A0BA97E61ABAD5A15E2401FBA2146E9DAFCD31347" + "6665F02A70BBAE96E39A3DE1282FA7961712A1EC2402B48DB4E2297BF6293B3E" + "D7D8D4619E791C1CB6C50C61AE8B915A0E108FF82968CB0F1EDDA73E0CEE45FA" + "D58422A02CD47736AC503CB4DE1A07C049F0FE5A2A5B1D282F8978FBB722B89C" + "D7D389D9A4F0725C73A6442CA529DB3DCDE379A667D135A835B04450E0DE0BBE" + "A8B8EE8FB98BBB2493A1FAF9B3F1C83A42B0EFC7F5672FBFCDCE3A5C62CC366E" + "D063EA96758F2809DF1AE378AF893A44A6EF6CDC440350F5A56421AEDDA266FC" + "B55435697A26E622E0E05D1ADB43CDE1F438979B3F7264D94A9C3640A8BA87A8" + "1D3F917C1238AC025A929F862212A2CCB9F3A9A0D153E634195145E24160564D" + "F84D38731206AEEC5B9F4120F5DF56C6500D0ABB9BB5B7EAAF890E875827EAB0" + "A7C5761C67CA41D405A41D330B36601D94CC507787E6939EEB8345EB6A8BE7D7" + "5DBD458877DC4414120C4F6AFAC87F8C15CC2CD02EEB40BF12176422437438D1" + "E938CFF9F2196FDDB68D17E8ECDE577F105427009A9C31B7D944128B5E610635" + "69367F5194E50B7D583FEEA7BE7B0B36BCDC2C0BC100F47820FE43061B1EBD64" + "C2EFCDE9CDCDB1E59ABCE72882EE0295B35C26E5648846DA0E68E291EEEB1A91" + "21AF9025F060AE6AD07A2805DE4E0D84B88D4FB1DE0CB6D5604614C1180AE4CE" + "525983A8C3D3F42932575E7F89B28BC6011116667A80A8AEB0DEEBEEF545569C" + "A4B1BAC6D2355D9DB3BAC1090A267C7E4E7F8292D7FE00000000000000000000" + "0000000000000000000000070E101D252B3036"), }, }; - for (const TestVector& v : dilithium_vectors) { + for (const TestVector& v : dilithium_aes_vectors) { // Create a new verifier. absl::StatusOr<std::unique_ptr<PublicKeyVerify>> verifier = - DilithiumAvx2Verify::New( - *DilithiumPublicKeyPqclean::NewPublicKey(v.public_key)); + DilithiumAvx2Verify::New(*DilithiumPublicKeyPqclean::NewPublicKey( + v.public_key, DilithiumSeedExpansion::AES_SEED_EXPANSION)); ASSERT_THAT(verifier.status(), IsOk()); // Verify signature. @@ -872,9 +1430,18 @@ TEST(DilithiumAvx2VerifyTest, Vectors) { INSTANTIATE_TEST_SUITE_P( DilithiumAvx2VerifyTests, DilithiumAvx2VerifyTest, testing::ValuesIn<DilithiumTestCase>({ - {"Dilithium2", PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES}, - {"Dilithium3", PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES}, - {"Dilithium5", PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES}, + {"Dilithium2", PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, + {"Dilithium3", PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, + {"Dilithium5", PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, + {"Dilithium2Aes", PQCLEAN_DILITHIUM2AES_AVX2_CRYPTO_SECRETKEYBYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, + {"Dilithium3Aes", PQCLEAN_DILITHIUM3AES_AVX2_CRYPTO_SECRETKEYBYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, + {"Dilithium5Aes", PQCLEAN_DILITHIUM5AES_AVX2_CRYPTO_SECRETKEYBYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, }), [](const testing::TestParamInfo<DilithiumAvx2VerifyTest::ParamType>& info) { return info.param.test_name; diff --git a/cc/experimental/pqcrypto/signature/subtle/dilithium_key.cc b/cc/experimental/pqcrypto/signature/subtle/dilithium_key.cc index 03bbcdc7f..5b6953ea2 100644 --- a/cc/experimental/pqcrypto/signature/subtle/dilithium_key.cc +++ b/cc/experimental/pqcrypto/signature/subtle/dilithium_key.cc @@ -26,8 +26,11 @@ extern "C" { #include "third_party/pqclean/crypto_sign/dilithium2/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium2aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium3/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium3aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium5/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium5aes/avx2/api.h" } namespace crypto { @@ -36,13 +39,15 @@ namespace subtle { // static util::StatusOr<DilithiumPrivateKeyPqclean> -DilithiumPrivateKeyPqclean::NewPrivateKey(util::SecretData key_data) { - return DilithiumPrivateKeyPqclean(key_data); +DilithiumPrivateKeyPqclean::NewPrivateKey( + util::SecretData key_data, DilithiumSeedExpansion seed_expansion) { + return DilithiumPrivateKeyPqclean(key_data, seed_expansion); } // static util::StatusOr<std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> -DilithiumPrivateKeyPqclean::GenerateKeyPair(uint32 private_key_size) { +DilithiumPrivateKeyPqclean::GenerateKeyPair( + int32_t private_key_size, DilithiumSeedExpansion seed_expansion) { std::string public_key; std::string private_key; private_key.resize(private_key_size); @@ -51,26 +56,62 @@ DilithiumPrivateKeyPqclean::GenerateKeyPair(uint32 private_key_size) { switch (private_key_size) { // Dilithium2. case PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES: { - public_key.resize(PQCLEAN_DILITHIUM2_AVX2_CRYPTO_PUBLICKEYBYTES); - PQCLEAN_DILITHIUM2_AVX2_crypto_sign_keypair( - reinterpret_cast<uint8_t*>(public_key.data()), - reinterpret_cast<uint8_t*>(private_key.data())); + switch (seed_expansion) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + public_key.resize(PQCLEAN_DILITHIUM2AES_AVX2_CRYPTO_PUBLICKEYBYTES); + PQCLEAN_DILITHIUM2AES_AVX2_crypto_sign_keypair( + reinterpret_cast<uint8_t*>(public_key.data()), + reinterpret_cast<uint8_t*>(private_key.data())); + break; + } + default: { + public_key.resize(PQCLEAN_DILITHIUM2_AVX2_CRYPTO_PUBLICKEYBYTES); + PQCLEAN_DILITHIUM2_AVX2_crypto_sign_keypair( + reinterpret_cast<uint8_t*>(public_key.data()), + reinterpret_cast<uint8_t*>(private_key.data())); + break; + } + } break; } // Dilithium3. case PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES: { - public_key.resize(PQCLEAN_DILITHIUM3_AVX2_CRYPTO_PUBLICKEYBYTES); - PQCLEAN_DILITHIUM3_AVX2_crypto_sign_keypair( - reinterpret_cast<uint8_t*>(public_key.data()), - reinterpret_cast<uint8_t*>(private_key.data())); + switch (seed_expansion) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + public_key.resize(PQCLEAN_DILITHIUM3AES_AVX2_CRYPTO_PUBLICKEYBYTES); + PQCLEAN_DILITHIUM3AES_AVX2_crypto_sign_keypair( + reinterpret_cast<uint8_t*>(public_key.data()), + reinterpret_cast<uint8_t*>(private_key.data())); + break; + } + default: { + public_key.resize(PQCLEAN_DILITHIUM3_AVX2_CRYPTO_PUBLICKEYBYTES); + PQCLEAN_DILITHIUM3_AVX2_crypto_sign_keypair( + reinterpret_cast<uint8_t*>(public_key.data()), + reinterpret_cast<uint8_t*>(private_key.data())); + break; + } + } break; } // Dilithium5. case PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES: { - public_key.resize(PQCLEAN_DILITHIUM5_AVX2_CRYPTO_PUBLICKEYBYTES); - PQCLEAN_DILITHIUM5_AVX2_crypto_sign_keypair( - reinterpret_cast<uint8_t*>(public_key.data()), - reinterpret_cast<uint8_t*>(private_key.data())); + switch (seed_expansion) { + case DilithiumSeedExpansion::AES_SEED_EXPANSION: { + public_key.resize(PQCLEAN_DILITHIUM5AES_AVX2_CRYPTO_PUBLICKEYBYTES); + PQCLEAN_DILITHIUM5AES_AVX2_crypto_sign_keypair( + reinterpret_cast<uint8_t*>(public_key.data()), + reinterpret_cast<uint8_t*>(private_key.data())); + break; + } + default: { + public_key.resize(PQCLEAN_DILITHIUM5_AVX2_CRYPTO_PUBLICKEYBYTES); + PQCLEAN_DILITHIUM5_AVX2_crypto_sign_keypair( + reinterpret_cast<uint8_t*>(public_key.data()), + reinterpret_cast<uint8_t*>(private_key.data())); + break; + } + } break; } // Invalid key size. @@ -90,9 +131,10 @@ DilithiumPrivateKeyPqclean::GenerateKeyPair(uint32 private_key_size) { util::SecretDataFromStringView(private_key); util::StatusOr<DilithiumPrivateKeyPqclean> dilithium_private_key = - DilithiumPrivateKeyPqclean::NewPrivateKey(std::move(private_key_data)); + DilithiumPrivateKeyPqclean::NewPrivateKey(std::move(private_key_data), + seed_expansion); util::StatusOr<DilithiumPublicKeyPqclean> dilithium_public_key = - DilithiumPublicKeyPqclean::NewPublicKey(public_key); + DilithiumPublicKeyPqclean::NewPublicKey(public_key, seed_expansion); return std::make_pair(*dilithium_private_key, *dilithium_public_key); } @@ -101,16 +143,27 @@ const util::SecretData& DilithiumPrivateKeyPqclean::GetKeyData() const { return key_data_; } +const DilithiumSeedExpansion& DilithiumPrivateKeyPqclean::GetSeedExpansion() + const { + return seed_expansion_; +} + // static util::StatusOr<DilithiumPublicKeyPqclean> -DilithiumPublicKeyPqclean::NewPublicKey(absl::string_view key_data) { - return DilithiumPublicKeyPqclean(key_data); +DilithiumPublicKeyPqclean::NewPublicKey(absl::string_view key_data, + DilithiumSeedExpansion seed_expansion) { + return DilithiumPublicKeyPqclean(key_data, seed_expansion); } const std::string& DilithiumPublicKeyPqclean::GetKeyData() const { return key_data_; } +const DilithiumSeedExpansion& DilithiumPublicKeyPqclean::GetSeedExpansion() + const { + return seed_expansion_; +} + } // namespace subtle } // namespace tink } // namespace crypto diff --git a/cc/experimental/pqcrypto/signature/subtle/dilithium_key.h b/cc/experimental/pqcrypto/signature/subtle/dilithium_key.h index 2b89a09e3..0723eaef5 100644 --- a/cc/experimental/pqcrypto/signature/subtle/dilithium_key.h +++ b/cc/experimental/pqcrypto/signature/subtle/dilithium_key.h @@ -29,25 +29,33 @@ namespace crypto { namespace tink { namespace subtle { +enum class DilithiumSeedExpansion { + SHAKE_SEED_EXPANSION = 0, + AES_SEED_EXPANSION = 1, +}; + // Dilithium public key representation. class DilithiumPublicKeyPqclean { public: // Creates a new DilithiumPublicKeyPqclean from key_data. Should only be // called with the result of a previous call to GetKeyData(). static util::StatusOr<DilithiumPublicKeyPqclean> NewPublicKey( - std::string_view key_data); + absl::string_view key_data, DilithiumSeedExpansion seed_expansion); DilithiumPublicKeyPqclean(const DilithiumPublicKeyPqclean& other) = default; DilithiumPublicKeyPqclean& operator=(const DilithiumPublicKeyPqclean& other) = default; const std::string& GetKeyData() const; + const DilithiumSeedExpansion& GetSeedExpansion() const; private: - explicit DilithiumPublicKeyPqclean(absl::string_view key_data) - : key_data_(std::move(key_data)) {} + DilithiumPublicKeyPqclean(absl::string_view key_data, + DilithiumSeedExpansion seed_expansion) + : key_data_(std::move(key_data)), seed_expansion_(seed_expansion) {} const std::string key_data_; + const DilithiumSeedExpansion seed_expansion_; }; // Dilithium private key representation. @@ -56,7 +64,11 @@ class DilithiumPrivateKeyPqclean { // Creates a new DilithiumPrivateKeyPqclean from key_data. Should only be // called with the result of a previous call to GetKeyData(). static util::StatusOr<DilithiumPrivateKeyPqclean> NewPrivateKey( - util::SecretData key_data); + util::SecretData key_data, DilithiumSeedExpansion seed_expansion); + + DilithiumPrivateKeyPqclean(const DilithiumPrivateKeyPqclean& other) = default; + DilithiumPrivateKeyPqclean& operator=( + const DilithiumPrivateKeyPqclean& other) = default; // Generates a new dilithium key pair (different key sizes based on version). // Possible values for the private key size are: @@ -65,19 +77,18 @@ class DilithiumPrivateKeyPqclean { // 4864 - Dilithium5 static util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - GenerateKeyPair(uint32 key_size); - - DilithiumPrivateKeyPqclean(const DilithiumPrivateKeyPqclean& other) = default; - DilithiumPrivateKeyPqclean& operator=( - const DilithiumPrivateKeyPqclean& other) = default; + GenerateKeyPair(int32_t key_size, DilithiumSeedExpansion seed_expansion); const util::SecretData& GetKeyData() const; + const DilithiumSeedExpansion& GetSeedExpansion() const; private: - explicit DilithiumPrivateKeyPqclean(util::SecretData key_data) - : key_data_(std::move(key_data)) {} + DilithiumPrivateKeyPqclean(util::SecretData key_data, + DilithiumSeedExpansion seed_expansion) + : key_data_(std::move(key_data)), seed_expansion_(seed_expansion) {} const util::SecretData key_data_; + const DilithiumSeedExpansion seed_expansion_; }; } // namespace subtle diff --git a/cc/experimental/pqcrypto/signature/subtle/dilithium_key_test.cc b/cc/experimental/pqcrypto/signature/subtle/dilithium_key_test.cc index 606ff0758..1bf59a408 100644 --- a/cc/experimental/pqcrypto/signature/subtle/dilithium_key_test.cc +++ b/cc/experimental/pqcrypto/signature/subtle/dilithium_key_test.cc @@ -28,8 +28,11 @@ extern "C" { #include "third_party/pqclean/crypto_sign/dilithium2/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium2aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium3/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium3aes/avx2/api.h" #include "third_party/pqclean/crypto_sign/dilithium5/avx2/api.h" +#include "third_party/pqclean/crypto_sign/dilithium5aes/avx2/api.h" } namespace crypto { @@ -39,62 +42,39 @@ namespace { using ::crypto::tink::test::IsOk; -class DilithiumKeyTest : public ::testing::Test {}; +struct DilithiumTestCase { + std::string test_name; + int32_t private_key_size; + int32_t public_key_size; + DilithiumSeedExpansion seed_expansion; +}; -TEST_F(DilithiumKeyTest, Dilithium2KeysLength) { - // Generate key pair. - util::StatusOr< - std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( - PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES); +using DilithiumKeyTest = testing::TestWithParam<DilithiumTestCase>; - ASSERT_THAT(key_pair.status(), IsOk()); +TEST_P(DilithiumKeyTest, DilithiumKeysLength) { + const DilithiumTestCase& test_case = GetParam(); - // Check keys size. - EXPECT_EQ((key_pair->first).GetKeyData().size(), - PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES); - EXPECT_EQ((key_pair->second).GetKeyData().size(), - PQCLEAN_DILITHIUM2_AVX2_CRYPTO_PUBLICKEYBYTES); -} - -TEST_F(DilithiumKeyTest, Dilithium3KeysLength) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( - PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES); + test_case.private_key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); // Check keys size. - EXPECT_EQ((key_pair->first).GetKeyData().size(), - PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES); - EXPECT_EQ((key_pair->second).GetKeyData().size(), - PQCLEAN_DILITHIUM3_AVX2_CRYPTO_PUBLICKEYBYTES); + EXPECT_EQ((key_pair->first).GetKeyData().size(), test_case.private_key_size); + EXPECT_EQ((key_pair->second).GetKeyData().size(), test_case.public_key_size); } -TEST_F(DilithiumKeyTest, Dilithium5KeysLength) { - // Generate key pair. - util::StatusOr< - std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> - key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( - PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES); - - ASSERT_THAT(key_pair.status(), IsOk()); +TEST_P(DilithiumKeyTest, DifferentContent) { + const DilithiumTestCase& test_case = GetParam(); - // Check keys size. - EXPECT_EQ((key_pair->first).GetKeyData().size(), - PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES); - EXPECT_EQ((key_pair->second).GetKeyData().size(), - PQCLEAN_DILITHIUM5_AVX2_CRYPTO_PUBLICKEYBYTES); -} - -TEST_F(DilithiumKeyTest, DifferentContent) { // Generate key pair. util::StatusOr< std::pair<DilithiumPrivateKeyPqclean, DilithiumPublicKeyPqclean>> key_pair = DilithiumPrivateKeyPqclean::GenerateKeyPair( - PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES); + test_case.private_key_size, test_case.seed_expansion); ASSERT_THAT(key_pair.status(), IsOk()); @@ -103,6 +83,32 @@ TEST_F(DilithiumKeyTest, DifferentContent) { key_pair->second.GetKeyData()); } +INSTANTIATE_TEST_SUITE_P( + DilithiumKeyTesta, DilithiumKeyTest, + testing::ValuesIn<DilithiumTestCase>({ + {"Dilithium2", PQCLEAN_DILITHIUM2_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM2_AVX2_CRYPTO_PUBLICKEYBYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, + {"Dilithium3", PQCLEAN_DILITHIUM3_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM3_AVX2_CRYPTO_PUBLICKEYBYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, + {"Dilithium5", PQCLEAN_DILITHIUM5_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM5_AVX2_CRYPTO_PUBLICKEYBYTES, + DilithiumSeedExpansion::SHAKE_SEED_EXPANSION}, + {"Dilithium2Aes", PQCLEAN_DILITHIUM2AES_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM2AES_AVX2_CRYPTO_PUBLICKEYBYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, + {"Dilithium3Aes", PQCLEAN_DILITHIUM3AES_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM3AES_AVX2_CRYPTO_PUBLICKEYBYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, + {"Dilithium5Aes", PQCLEAN_DILITHIUM5AES_AVX2_CRYPTO_SECRETKEYBYTES, + PQCLEAN_DILITHIUM5AES_AVX2_CRYPTO_PUBLICKEYBYTES, + DilithiumSeedExpansion::AES_SEED_EXPANSION}, + }), + [](const testing::TestParamInfo<DilithiumKeyTest::ParamType>& info) { + return info.param.test_name; + }); + } // namespace } // namespace subtle } // namespace tink |