From 738fa405ec00ab2d7828099ec6c187a51e60e1e6 Mon Sep 17 00:00:00 2001 From: Crt Vavros - smlu Date: Thu, 14 Dec 2023 01:41:05 +0100 Subject: [PATCH] Fix RSA signature malleability --- include/ack/rsa.hpp | 113 +- tests/include/ack/tests/rsa_test.hpp | 9505 ++++++++++++++++++++++++-- 2 files changed, 9075 insertions(+), 543 deletions(-) diff --git a/include/ack/rsa.hpp b/include/ack/rsa.hpp index ccd5499..08b405e 100644 --- a/include/ack/rsa.hpp +++ b/include/ack/rsa.hpp @@ -43,28 +43,64 @@ namespace ack { }; constexpr size_t pkcs1_v1_5_t_sha512_size = sha512_digest_info_prefix.size() + sizeof(hash512); static_assert( pkcs1_v1_5_t_sha512_size == 83 ); - } + /** + * Functions check if signature representative s <= n - 1. + * @note function expects s to bi positive integer. + * + * @param s - signature representative + * @param n - public key modulus + * @return true if s < n else false. + */ + inline bool is_s_valid(const bytes_view& s, std::span n) { + // Skip leading zeros of s + size_t sofs = 0; + while (sofs < s.size() && s[sofs] == 0x00) { + ++sofs; + } - void uECC_vli_clear(uint32_t *vli, uint32_t num_words) { - uint32_t i; - for (i = 0; i < num_words; ++i) { - vli[i] = 0; - } - } - void uECC_vli_bytesToNative(uint32_t *native, - const uint8_t *bytes, - int num_bytes) { - int i; - uECC_vli_clear(native, (num_bytes + (sizeof(uint32_t) - 1)) / sizeof(uint32_t)); - for (i = 0; i < num_bytes; ++i) { - unsigned b = num_bytes - 1 - i; - native[b / sizeof(uint32_t)] |= - (uint32_t)bytes[i] << (8 * (b % sizeof(uint32_t))); + // Check if s is zero + if ( sofs == s.size() ) { + return true; + } + + // Skip leading zeros of n + size_t nofs = 0; + while (nofs < n.size() && n[nofs] == 0x00) { + ++nofs; + } + + // Check if s is smaller than nofs + if (sofs < nofs) { + return true; + } + + // Check if s is greater than n + if ( ( s.size() - sofs ) > ( n.size() - nofs ) ) { + return false; + } + + // Check if s is smaller than n + if ( ( s.size() - sofs ) < ( n.size() - nofs ) ) { + return true; + } + + // Compare the remaining bytes (s.size() == n.size()) + #pragma unroll + for (; sofs < s.size(); ++sofs, ++nofs) { + if (s[sofs] < n[nofs]) { + return true; + } + else if (s[sofs] > n[nofs]) { + return false; + } + } + + // s == n + return false; } } - /** * Returns result of modular exponentiation. * @param base - base byte array @@ -105,42 +141,6 @@ namespace ack { auto res = rsa_mod_exp_sw( (const uint8_t*)base, base_len, prop, (uint8_t *)out ); rsa_free_key_prop( prop ); - - // assert(false); - // using rsa_int = bigint<8192>; - // rsa_int bn_base; - - // // std::array aa_base; - // // uECC_vli_bytesToNative(aa_base.data(), (const uint8_t*)base, base_len); - // // bn_base.set_array(aa_base.data(), aa_base.size()); - - // if (!bn_base.set_bytes(bytes_view{ reinterpret_cast(base), base_len })) { - // return 0; - // } - - // bigint<32> bn_exp; - // // // std::array aa_exp; - // // // uECC_vli_bytesToNative(aa_exp.data(), (const uint8_t*)exponent, exponent_len); - // // // bn_exp.set_array(aa_exp.data(), aa_exp.size()); - // if (!bn_exp.set_bytes(bytes_view{ reinterpret_cast(exponent), exponent_len })) { - // return 0; - // } - - // //constexpr word_t expp = 555; - - // rsa_int bn_mod; - // // std::array aa_mod; - // // uECC_vli_bytesToNative(aa_mod.data(), (const uint8_t*)modulus, modulus_len); - // // bn_mod.set_array(aa_mod.data(), aa_mod.size()); - // if (!bn_mod.set_bytes(bytes_view{ reinterpret_cast(modulus), modulus_len })) { - // return 0; - // } - - // if (!bn_base.mod_exp(bn_exp, bn_mod)) { - // return 0; - // } - - // return bn_base.get_bytes(std::span{ reinterpret_cast(out), out_len }) ? base_len : 0; #endif return res == 0 ? base_len : 0; } @@ -171,13 +171,16 @@ namespace ack { return result; } - [[nodiscard]] inline bytes rsavp1(const rsa_public_key_view pub_key, const bytes_view& signature) { + [[nodiscard]] inline bytes rsavp1(const rsa_public_key_view pub_key, const bytes_view signature) { // Note: Missing check for signature representative (integer between 0 and n - 1) + if ( !detail::is_s_valid( signature, pub_key.modulus ) ) { + return bytes(); + } return powm( signature, pub_key.exponent, pub_key.modulus ); } template - [[nodiscard]] bool rsassa_pkcs1_v1_5_verify(const rsa_public_key_view& pub_key, const bytes_view& signature, Lambda&& gen_t) + [[nodiscard]] bool rsassa_pkcs1_v1_5_verify(const rsa_public_key_view& pub_key, const bytes_view signature, Lambda&& gen_t) { if ( signature.size() != pub_key.modulus.size() ) { ACK_LOG_DEBUG( "[ERROR] rsassa_pkcs1_v1_5_verify: invalid signature" ); diff --git a/tests/include/ack/tests/rsa_test.hpp b/tests/include/ack/tests/rsa_test.hpp index 54f4c1d..96d8c19 100644 --- a/tests/include/ack/tests/rsa_test.hpp +++ b/tests/include/ack/tests/rsa_test.hpp @@ -641,8 +641,8 @@ namespace ack::tests { "RSA PKCS1.5 SHA1 signature verification failed" ); }) - } // End of // NIST FIPS 186-4 test vectors - EOSIO_TEST_END + } // End of NIST FIPS 186-4 test vectors + EOSIO_TEST_END // rsa_pkcs_1_5_sha1_test EOSIO_TEST_BEGIN(rsa_pkcs_1_5_sha256_test) // NIST FIPS 186-4 test vectors @@ -3904,69 +3904,81 @@ namespace ack::tests { } // End of Google's Wycheproof tests // Test vectors from Google's Wycheproof RSA signature verification tests. - // Generated from: 'rsa_signature_3072_sha256_test.json' - // URL: 'https://raw.githubusercontent.com/google/wycheproof/4672ff74d68766e7785c2cac4c597effccef2c5c/testvectors/rsa_signature_3072_sha256_test.json' + // Generated from: 'rsa_signature_2048_sha256_test.json' + // URL: 'https://raw.githubusercontent.com/google/wycheproof/b2cc2fdbeb3cf802811da0082a9f8324dc334c3b/testvectors_v1/rsa_signature_2048_sha256_test.json' // // Algorithm: RSASSA-PKCS1-v1_5 - // GeneratorVersion: 0.8r12 + // GeneratorVersion: 0.9rc5 // Header: Test vectors of class RsassaPkcs1Verify are intended for checking the verification of RSA PKCS #1 v 1.5 signatures. - // Notes: MissingNull - Some legacy implementation of RSA PKCS#1 signatures did omit the parameter field instead of using an ASN NULL. Some libraries still accept these legacy signatures. This test vector contains such a legacy signature - // SmallPublicKey - The key for this test vector uses a small public key. + // Notes: BerEncodedPadding - {'bugType': 'CAN_OF_WORMS', 'description': 'The padding in a RSA PKCS#1 signature must be DER encoded. This signature uses an alternative BER encoded padding.', 'effect': 'It is unclear if accepting a small number of alternative BER encodings leads to a vulnerability. This needs to be analyzed in detail. Libraries that verify RSA signatures by using an ASN.1 parser are difficult to analyze.', 'cves': ['CVE-2006-4339']} + // EdgeCaseSignature - {'bugType': 'EDGE_CASE', 'description': 'The test vector contains a signature with a value close to n.The test vector checks for arithmetic errors in the implementation. The construction of the test vector requires the use of a small public exponent and unusual key sizes. These parameter choices may be a reason for a library to reject the signature.'} + // InvalidAsnInPadding - {'bugType': 'AUTH_BYPASS', 'description': 'The signature contains an invalid padding. RSA PKCS#1 verification must not accept incorrect paddings. ', 'effect': 'If the verification of the padding is weak enough so that arbitrary data can be included in the ASN encoding of the padding then it may be possible to forge RSA signatures with low public exponents.', 'cves': ['CVE-2006-4339']} + // InvalidPadding - {'bugType': 'AUTH_BYPASS', 'description': 'RSA PKCS#1 signature with invalid padding. The padding of RSA PKCS #1 signatures is deterministic. Only signatures with the padding specified in the standard are valid. Other paddings should be rejected.', 'effect': 'Signature forgeries may be possible if the RSA signature verification accepts a large number of alternative paddings.', 'cves': ['CVE-2006-4339']} + // InvalidSignature - {'bugType': 'AUTH_BYPASS', 'description': 'The signature is an edge case integer. Edge cases such as a value exactly equal to the modulus are sometimes mishandled by an implementation. This can lead to simple forgeries or denial of service attacks through crashes.', 'cves': ['CVE-2017-11185']} + // MissingNull - {'bugType': 'LEGACY', 'description': 'Some legacy implementations of RSA PKCS#1 signatures did omit a NULL in the ASN encoding. While such signatures are indeed invalid some libraries are accepting such signatures for compatibility.', 'effect': 'Accepting such legacy signatures is not a vulnerability. However, implementations often use ASN parsing to verify the signature. Faulty ASN parsing can add vulnerabilities.'} + // ModifiedPadding - {'bugType': 'AUTH_BYPASS', 'description': 'The padding of this test vector has been modified. RSA PKCS#1 verification must not accept modified paddings. ', 'effect': 'If the verification of the padding is weak enough so that arbitrary data can be included in the ASN encoding of the padding then it may be possible to forge RSA signatures with low public exponents.', 'cves': ['CVE-2006-4339']} + // NoHash - {'bugType': 'AUTH_BYPASS', 'description': 'The signature uses no hash function. ', 'effect': 'Collision resistant hash functions are essential for the security of RSA signatures. Accepting signatures without proper hashing and padding probably allows signature forgeries.'} + // ShortPadding - {'bugType': 'CAN_OF_WORMS', 'description': 'The signature contains a short PKCS#1 padding. One cause for accepting such signatures are libraries that parse the padding without comparing it to the length of the RSA key.', 'effect': 'The effect of accepting short paddings is unclear. It is usually necessary to analyze the implementation and determine the bug that allows signatures with short paddings to be accepted.'} + // SignatureMalleability - {'bugType': 'SIGNATURE_MALLEABILITY', 'description': 'The signature uses a modified encoding. Each message has exactly one valid RSA PKCS#1 signature.', 'effect': 'One effect of accepting alternative encodings of a signature is signature malleability.'} + // SmallPublicKey - {'bugType': 'WEAK_PARAMS', 'description': 'The public key of this test vector has a small public exponent.For example NIST SP 800-56B rev. 2 requires that e > 2**16. Thus, libraries may reject RSA keys with smaller exponents.'} + // SmallSignature - {'bugType': 'EDGE_CASE', 'description': 'The test vector contains a signature with a small value.The test vector checks for arithmetic errors in the implementation. The construction of the test vector requires the use of a small public exponent and unusual key sizes. These parameter choices may be a reason for a library to reject the signature.'} + // WrongHash - {'bugType': 'WRONG_PRIMITIVE', 'description': 'The signature uses an incorrect hash function. RSA PKCS#1 verification must not accept signatures using alternative hash functions.', 'effect': 'The security of the signature scheme is reduced to the security of the weakest accepted hash function. Bugs in the verification are difficult to detect.'} + // WrongPrimitive - {'bugType': 'WRONG_PRIMITIVE', 'description': 'The signature uses RSASSA-PSS instead of RSA PKCS#1 padding. Signature verification must not accept signatures for distinct paddings.', 'effect': 'The security of the signature scheme is reduced to the security of the weakest padding. Bugs in the verification are difficult to detect.', 'links': ['https://bugzilla.redhat.com/show_bug.cgi?id=1510156']} { - auto n = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1203"_hex; + auto n = "a2b451a07d0aa5f96e455671513550514a8a5b462ebef717094fa1fee82224e637f9746d3f7cafd31878d80325b6ef5a1700f65903b469429e89d6eac8845097b5ab393189db92512ed8a7711a1253facd20f79c15e8247f3d3e42e46e48c98e254a2fe9765313a03eff8f17e1a029397a1fa26a8dce26f490ed81299615d9814c22da610428e09c7d9658594266f5c021d0fceca08d945a12be82de4d1ece6b4c03145b5d3495d4ed5411eb878daf05fd7afc3e09ada0f1126422f590975a1969816f48698bcbba1b4d9cae79d460d8f9f85e7975005d9bc22c4e5ac0f7c1a45d12569a62807d3b9a02e5a530e773066f453d1f5b4c2e9cf7820283f742b9d5"_hex; auto e = "010001"_hex; { auto m = ""_hex; - auto s = "157ffb942b1363b5989ec4beb93fb0187ef016de4ce055620825d13c3dafd4fff621c71920e884ba28c5e98b328baac29ad4bfc4d2cae2f0ecb9d1b6c9fbdfc385aa565aaf6c5b3150e085e0316e21d7d440a873074e5d2700d961114ed420478647a4769d832691f7a004d934a89dc249c9343341902d5d0c3d1a623001265634216beacd5f756821f21c3b58111790657690918a2eafa9e85ab1ee44edd3d8bb89e892acf411ba9eaaeef88eca37dffbda72751c117364fd1b38c840d7b42318fcd011a4449aeffc2de32836d3a4f704d4c8ad4e078315d0d1758f098f2ea749ccce62aac592ac4041b5e733ba0431b88332a39a2af7f68f9bb1f469a793b280b964f285ce5cd1ff3adcd7dbd464a7c9414ed45791073f08415be2dd9f01dc2fec8c3a26fe97d9778e2b2fccf71a1ea5e9ce017d2d46778d7e37bb832ebd5825b3257a7852db5cb6c132bcf9ba3522a670b0e866585444ed3601fd32a922818ef6611626eee3ea99cfcfeeaa4c370567cc65e0479bd35e091b772d7445cade"_hex; + auto s = "840f5dac53106dd1f9c57219224cf51289290c42f20466875ba8e830ac5690e541536fcc8ab03b731f82bf66d83f194e7e180b3963ec7a2f3f7904a7ce49aed47da4d4b79421eaf937d301b3e696169297b797c32c076a12be4de0b58e003c5123051a84a10c62f8dac2f42a8640008eb3c7cccd6760ff5b51b689763922582845f048fb8150e5a7a6ca2eccc7bdc85349ad5b26c52137a79fa3fe5c29ab5cd7615013219c1941b6708e9c3c23feff5febaf0c8ebca5750b54e3e6e99a3e876b396f27860b7f3ec4e9191703c6332d944f6f69751167680c79c4f6b57f1cc8755d24b6ec158ccdbacdb23107a33cb6b332516c13274d1f9dccc21dced869e486"_hex; auto r = true; // result = valid auto d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); m = "0000000000000000000000000000000000000000"_hex; - s = "631cb4bed6b79dcd3827879f6d64de3ae17e0fdb022be013e733bbfe0031cf204f0508ab87a2e2bbdfaa16cf24acc96b3fd2e72bc4a224428e515d6f1e0ea6927eba6ed7282a959e5df5e52eb3be9a39cfe139ea2fa45c21eb81b3197eff655b918f7c5fff6abab33945557a922063f9600a372ae7701db686f7e1fe4a6e804a0f624331fbb59536733bed3710dcacd22ec74b1a1386d045372853cac91130703ecafad7f6f42ec1aade5cb865339743c83e882f248b0db0855f487a6d3b55442f67773611a11813ff46a58c762b1bd70b5e870c3095507f23758e90b3c84526f47a825f0ae787acfd3ed349ca6786a2e84ec500c6042a9027a994c328c7a6868e6a81481b294383edda62773fd224af46e782ea3f00468515f6100486d94e818afca1bdb81851e62b3bf4f9236f061afafb3e399b93e6f6a295ae200c9bba5ff5aabcac8361c84f2e69aff8a8a21720b900d52ea4bddcfbaba3a231bb9b0dd48f0a4ef1cdd255b3524ca0633d04907ab672314c5e3173108313ff4a97df3772"_hex; + s = "8a1b220cb2ab415dc760eb7f5bb10335a3cca269d7dbbf7d0962ba79f9cf7b43a5fc09c99a1584f07403473d6c189a836897a5b6f8ea9fa22d601e6ba5f7411fe27c638b81b1a22363583a80fce8c7df3e40fb51bd0e60d0a6653f79f3bcb7ec3e9dc14cfb5b31ab1735bca692d50ac03f979dda92747c6430f8045efa3513ba6e0ce3e9e35570e1c30c8ebe589b44192e1344ca83dfa576fc6fdc7bf1cd7cee875b001c8c02ce8d602769e4bd9d241c4857182a0089a8b67644e73eef105c550efa47a40874289395ac0c4e02fd4ba98e130a4c2d1b95521c6af4a002ac3bdc6e52122ae4c08cc3da1c896e059acbddec574ac0432f6103dd97273d8803c102"_hex; r = true; // result = valid d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); m = "54657374"_hex; - s = "5819a699691c01a7f35f0bb1831a1cb65631ef693f7c9ef89f1e8460ee2ec312f6fd38fe382b3bf4db8f5d208146c32c5ed2d3b13105743767a73529bfddb5753c8cc13148d41db97f69ea1dee0ef1e1de990ff565f633bd3cfd315a7dafc70aa7f27d4f6486a2f1e2711e7919c5c73c518069338c0ac984d75f58b00fb0eee0f7da6c9c84d97955137417df8f20c02b7893b5cd929ba37f6b3278a1bd35748e14086c5f7100abf2edebeab5f767bb83d999a61cc27531bb67e44a92004fba9944b9c5f770bc66671d2efc74e01fbbd2885c5175a1fd72b91937c324b8d99d3592bfb73efb9641b87949266de441b61d180e141de510ae0cdefc2160df918c08c53799f050ca4eeb3a8b6b5ed35b8b59d3acd13a600a8a137eb1b8c1abbf55f3e99cf52d7092d1e3acc08583b04aa25a052668bc982abf060ffb17c1782daf76fbd69e7fc9510c5c6a68bd525719be5b81d0f2a8b961f1aeac7dc13aeeeef9986c7a47b34f8b96167d79f7ec458fef7345c1c31bba599d09b3fe33e738bc7da1"_hex; + s = "264491e844c119f14e425c03282139a558dcdaeb82a4628173cd407fd319f9076eaebc0dd87a1c22e4d17839096886d58a9d5b7f7aeb63efec56c45ac7bead4203b6886e1faa90e028ec0ae094d46bf3f97efdd19045cfbc25a1abda2432639f9876405c0d68f8edbf047c12a454f7681d5d5a2b54bd3723d193dbad4338baad753264006e2d08931c4b8bb79aa1c9cad10eb6605f87c5831f6e2b08e002f9c6f21141f5841d92727dd3e1d99c36bc560da3c9067df99fcaf818941f72588be33032bad22caf6704223bb114d575b6d02d9d222b580005d930e8f40cce9f672eebb634a20177d84351627964b83f2053d736a84ab1a005f63bd5ba943de6205c"_hex; r = true; // result = valid d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); m = "313233343030"_hex; - s = "636d31d8d5dfe0fc6ab01ef2ccd4602dfea62d386b002c429e7e846e7a98d0cb1d448d25be039d5158887ab46a9dd49c41537a89036a065fc10329df051e5f2e5c1d4436e84790ff6db4d3f31575e5f0fbdfcaee625722c5492fceaa3fb29d0a865200dec06e117b04753ca9450a7ca7f7d1a1176cc38ecab721864413a0d7a22d8fc1595b6cd0032fbf154fbbb31b56d3bf963761ce8ec9fb38bba3419716d0d39e976857e79b1faefd5f5a2ce0ebd94968da1ec3a387804694d90f37b34033c7f70ccfb26beffaafb7bf56c1b8385d489217458e0a68b5d680f9fa45382fd1c227ff3c11e3ec82426ec648a564f0e886e5b12e695dd2fc8465bd9d08731fb140084c79be64d915bcb4ba10f1edb4c37e35231753be2d9f339d37d7b5f22c91584a68a973f9cc469a23d3b5800157dbd72a8405fef4e444ff01f7fd23efa143c1887504e81773743843d8a73209a1deb66c5f305df539bc30e871332e82330e5b66fa6ea253b2b64b4c9781011d20e80ddd8cb83916834eb8fa696b0a4b6bcd"_hex; + s = "1758eb94588e6fc4f50c1be1afcaa41027869f304cad513b1fb12c2f446d63cdc05c4830a7e3e630da7b2da4f7867cc173bf6420f9732277282596de41ded32e21d0cc31441174da8765f57419c7764ea758f55bc17646eb100c435d1ac0eed6fc7ba6de5f832094ee2f479979765e05ac9976788db3c241a9e32a0da864f0019a87646ba623d63f4411af5dee1be9ec488c7e3e1b231479de70b9ac5f78a17b1f4120aece45f26c07e7bb345fdfeb05e14bcaacc614672a465fc523624cb19f66f9c6c3f642b832ca44cb25176d679f0e05606c3fed022cac24c2bf960a406d48818e3eb7ed53b0446032469047dfed95fc18088c92d91d93722c47f88163a8"_hex; r = true; // result = valid d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); m = "4d657373616765"_hex; - s = "08e0ae3dc0d16c927c423f12a87313afd1d66fbd5d09f48a4dd1a8b52102bbdd208284cdd692932869803a5c7f041a4492ac2e664bb6dd981c370e0c79ee3f7c5c6dd37018986fc2cc618139fe3eb85c0616f0673403c4afe7cbca49c1eff27bbf6d7e541b285ffff20b80bf61dcebcc4250068e25ef5a8e7c3306e49fcc2a1ee0f500a3ec603b472082f12ce4a6a12a6ac66cd4da8b6efac0796e9dcdc66c095a6282ae9a32ad274efe63f43e725410e6ed4c480828ed876b76b71b1cb8c142d0c7a51dc202af796d7bb55cf544dbde2f564f31994911ec7307015b0da2c51abe265a04a74b9afd0791a68e725cd7d8b473296c5d948157c10bc4682f74d843ce72e9ee8719a7a49d9de2f982c5d4490451eaed62c305eae3d0f9cb3493bff056a0dbca8579b7b41dc8deb1becfd5abb455634569d58c5b5535ff1356ccfaddd14e0f9f7f69a7ae9cb9f4c0c9f661fde349facd21f0021423d3a9ee5031855dd242f27009090ff0c15d1655317383231799b18c01fad231385aa5020990f41e"_hex; + s = "513a5abde16b5e0ecb8659d3ca0845800adf75cfc4437d42fa34e7aafbbe35fc5984d3560cba938f9a622e932bb6162b7fbb6cd8c1cf8815f28c495995ac18cdbe8fabfdce29c17aa021df192ac02d080d7c5eda6bd4c99154178a9d5e1cf3ff4177106315f4e6d74c991b601069acd60b55b3bb4dbf6316c35096a487d6756181d3394944f1c742a2f4d608ce4f6abbfb72347ad7d342ae15dd6d1049fbd0ff55f4d7c43ab805f81ff1fbe9256b5c78c2de6beb787f4b6d66d290a3d4c4857368aea5f7ebaa1296020c8f9e3670441a08038bb810e853a654e44316a4e52428745123ce2714020d00e55a9eb82f7fb41c73d852a82b003670246c6ca2045fc8"_hex; r = true; // result = valid d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); m = "61"_hex; - s = "9858e2557c6b99fbd84bc7eac3e31283a4efb351ff019343760a1e282368938e29ad902d3eb6cb29b35a036dfbcc7e06d2f1d15548df59ced35326295375bacd7a9d28a01b4e8acfb676d80b6295e19c6b7a259df56456e1df72f6a746e9cd31fed9b79b35d7a30a7aa257e9e8ac60ea886042b9194e7a383d1c9f71c84511faf6c96f7ae0e690112b26bb60cf7bb10f684e4fbe2a3a1b1c0caa9b1bdc79fde23fb758c2ba57880a4de461ecd2bc696689438183e2b9724fa68258f461bb4405425620a4d95c87ddd83e04be381bc743b05d26ede2ceff8a858636baadf56ef1dab54080da0f516307c579833717def053c8906d4f102448ab22693e7f52d5850193a40ccf0d68d1303953771a73924e4bcddd8486e1477d96250bf6b480a5f4b822822183694c52a2edacb331564444f0335d3b17d511ece59889b6d961767a3192d7f081caf7e671addb3757451776d4bd3b03f7b689843dcd59019ae4f292dba54738a88b86cc6ce3b123c61a446f4878b627a7f3585d8ab7bca9b258f10b"_hex; + s = "38c042a00d6f27742a46f1f963a7b2e04f0eac637849631a491b8e4e58fc721c6ce620d5e705dc8e73409c3909c1c68b6bdb2b30f882cf2797e65030b38c4e7daf6fef9d1f115c890086cf54ca3e7c2b21dcbfd1250ed1d925810970f17dbf482d1784f296adee9ace6979075c1e12f5580cfb322e8737db9d127d38e1b99ed87ec49448a18a6fee650d3c27e4a2a86a3d6e3ce4fe64120be60872fa07a3f78a112715c167fb6c900698ba1afd824087a4cf733335c4a6d5120e3b29bc42f3b3d5db79973e4e321e0910a288d18cdba172d060283c4f4c6656e9175a18b756b7d06251e9060bbfcab04978853eec6032850a0e757bc0c61ad38aa4eb6bb6d907"_hex; r = true; // result = valid d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); m = "e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"_hex; - s = "1294490626bdb36a31c93fa7853d93152d920b022f1b473bde3083a99e11aeba8c03218fa07d6c4a5f8b2504d2cb54505c40130fef5a2412f7a5ddfec5e2c8b5058f7cbde7ace0ac01c7ba8a1bd897e8974d991ad2b95c2f03100a34ff408a788c70ab5ec73b5356a4e3c7beb44fcb9e2f3f25d1c974ed962b148167684351dc2a223a174c9744b092071d58dfd39c38364f47d292651e7806ad7962bbedb64739d7ea298f0254244790e3971c15b861c95f00f65532aa1c77fba5c04ad078525128e92ed2b4f1269ae744547e3efd4ebb63e9df844df152a098c47fa492bfe0f1917ec973867c7491f64c172cf3ea1bc3f97b42a397e6ad88d12e150d3dbe360071a3285d6a68ee6e736eb4d7d637c649c2f545259ecd430b25b38a1618d69a4602ca8a2a151066f12c3807f5dc7cbd06bf095711e4483cb0a89c26dd9e4b0b03e05beca349f601c894f9a245aca3204584a9bd844772dd87b83d481c8df18b615307eaf643cbe856488c160e077458e899755301749d2d27bc190d68a5da11"_hex; + s = "2ae8d95b19cbd64d0e343ff413fffb85d8e6713c06ac8a1ceba7f3924fa740f8d2b3e120fd71f22711e795cd6468c5e263b1a5ba6ac6b8fa9e23d2d6e7243f510592a61d134e68b8ead00612dbf38c5b7302abc3bf33f23e6d4816a6e3ddcea6482566e84f57464f7d56de4cef0b2256ef21874dda4c131a47292ff8ef853f93804483c8e6373d39ca3a22552e75427b812b861de6a310ff4c366f6f6604116efd9770170aa423554c4ebbd2b5c0698950e66bb5b7c5c346285d9f5c35146255736b6e818e8e77983c93b21e7f60b04a7a525598e7fd8049b181000bffc7f3753a504370f6bb70617ac8e914deb05a198a5758a459c9fcd2fce1aede48e8a852"_hex; r = true; // result = valid d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); m = "313233343030"_hex; - s = "8b889902d581f3be759dab7e53cf3419d5dcfc825d203c736a374f37ac5570da2b87239c938bd299691a46387fb47ca656bb9ab639f6736207e19680ad1a0c7a7818f2498ec98e4693c51bfe414fcecff4bae7afc6db0d72cb9dc447e2ce4ce9ff435b9daa98cb125d77b7c7d2fe2e39ba15122da11bf19d341b9878de33d3cc134bcb77b9963d19a3037a67458b17eec462eb0d7eb7ce69b71f41287d3b104b45757c76440f370dedb720a0c721c08c055c5b815650737fa478898246d36f7722e913c0913612e753908400bf6b456f269538102b778257af0c7c14339d0ae1ddcbaa357369a065c0b3627cade311a627e1e3179514cd3761463eab7f9485f6651793cdff282daba9b16c2f79adbd24ba54ce4890a9685ca78d73e8785d722825c9fd22ff327b97f38d5e0b95f449928114ee9756aef5213eb95cc40774fa1733fd02bf37cf5243e7ca76f88e7e3fa8d28a754b5adaedf31a91e6911688a6149ecb52eab8024e72e1bc3a98579d9eb242e08fc42bd491e3b0924b03fb95bd1d"_hex; + s = "095dad1fd82bcd36652a381b7f4dd656bd89b40aa58b56da4f6aa8247874b935e65d2b86752d537df7103884d39dd9ad3d65f87404526b09094c5615c6249979b0dc58d2199ae8696a5b76b4bb03eaf08c2ab6aec686c6b1b289c9b44f648bd30cb1ac6a64a73d68e59cd05e7aa1b780f4bfd7b83dfe3b884ec11821a93dc5bbb47a00eea4557b6b96b5656276001f1f295ddbbbc511a99b9a665b9c2674c8af0d812286d0be3ce74817ba2cad283757de35dfb149f2835f60cb03ff155524a57f78b148feceb84cd20b0ae22e3e48f433fbd9bfd60be8afec93165ee0310be961d3695f309d031320c830aa6ba08b5a51d943797097c57630be391bd23736cc"_hex; r = false; // result = acceptable - flags: ['MissingNull'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); @@ -3977,8 +3989,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "46da0267738cab66df530dbea6fbbebbe904ad3d6ea7e7a06e39a3b5f3e38bf5856624185080fc756941b226a52c8e6126d07714deb781f6f7944f47147c680aeb0dce310c7d6f429429ac73e562510678c23042b635116174a2c2f4e8e8becfee1e4ba3cfbf4e2ee541c7f7c27b1916a2aa165cdeeaafb9f81c84e9754d196c3a9bdc777fc55d86b6bbd16270bc4d3cc75c2960f2a7a661105184b436a31de2cefad722a14abc1cd2f2c75738b2c81580fecff78d7d385b20d1a03d4aa2c21a168e13da18fd628e34be16d821b48136b6dcf7594ab3e1243c0a2a9e785fe40436cc6fc460879b673b068cd35a9114b59c2dc61fb875310e103610b74aa5e3620c51a257dcc3b9b0adbe774426ede0f779ea9d370f18a19d8844ed9f5d90ebfc4e0607a467645711da2b500840d4851e3de63723283bda8d08acc51a012699df0e8f5aabe269206f93ba4ca6597e17cdc01d2ead46b5dd2433b82237da01518ee3168b133b6a42e9a73194fcf9162b71d08528254c34b20d692e141c657c969d"_hex; - r = false; // result = invalid + s = "8a0e82d4f334aca72a718b6f8f643f69c6048d619d5eba71263a5d2d3ac7a7af133b780c7595ca2c982c006e861948f543cd0210c758691f9626842c25de2843ea314ca8eff285d47e0cffa54180af416004017034962a80a5959c3d3f1bfc154a4824462a93c014f6dfe920824f414a6e30e0e5944d480b99949ec7bf64c4a7461575933b17d7d6b0178b5192392ace3ed8469e8ac1dacae51ad5d3ad73dcb213e056d04596e64d8c0703def3110c7cecc93ba8ac8059f0f3d66b89d8712c62b41d407e4b4a104f4569558b0290c213cad6d0653898b9df8f4a453ab07d13bfb7598d505abbd0c4987e4f1ac66e1a523e113e370ab7cf990f0cc63f50f4f0a4"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -3988,8 +4000,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "39c1fd7fd0bc4578c3370787ea5a133e8a34ec9702dc1456c1ca7f8c3cda7bdcb8beed72e4098de5ab3e467f325141a324ff55af1390ff6f3d0cdf680f4319378f099604c9044025e04ed1af1ba5c74805265d8963684c7555cb835e8b1bfc162812698679e47b96744809002c805b75bcc5233f378fdfdf3e56593bfd6b0228f416f58b4c32ec0c2d32fe113cf7f3c347425b69e8bda1a2c5bbc3cfd0c1bbc609086d91175fab0adf050a8b3e904fc4a700d747500433fb72c55cdc25bd283d1bfa1db93604f18b8960127e9b7080227235e6ce234880de8e3c49d5edfa205140b8ea383e546e0bbd4c5dc59d0c058670ed91a02a3bee241ccceac20d434a442bf35ec6d5922196d78b080b1c14aca63b827434679d7b6e666db10dd9a85b2da60c6b47fc97979974f11b6051fe9378d96c78328ccf4e5cf5c120c2641b3f6b7abdfd0832fbcf59fd3787100032ae65aef2b076631788e7be1019feed9b863f39759525be659f3ec50dd7e9724bf6d09d8b771bc60e8a8e788ced8d945c89ab"_hex; - r = false; // result = invalid + s = "8d9c25235cdcdcc7ca2558c0be14f83afeb303f00c13106ac5affc952af527a0585cf4801104a7d019fa2e63fd0b923c061a24b8be7c3105443c8eedf4a033d3de802adfd80f872d3c505f41e3feb116f5d5f31f04df3e448bc7e7cbc2343f7dd4f4c3d2670ed3d3c66f91d626bb12a2001160a123d03b77d2a6ec53445db517147171e3ba3cd7dde902c486c74e8d8d33d4f7699791179d1df4fac78cda67da9138c18f2cc8863018e1739fb309408c62051b715096512602c5c4c7e7c394282593ec087832fd48b4f353d8046600e4152c2092632a79bf05497a13840e171047d79c23a76896235e9d5f0f56a78d3fe472fded2899e228f714690b40b66ee7"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -3999,8 +4011,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "530bfb86fd2a4b31587767d5809e5ec2002cbdd9121e135391392c242354844a9b4c8993ae61bd85810a0ed240203cc4be48ded5997832570875a7b775206460067b30df7c3b7f7af9d98e436f0007ce0d6360de0c1a4e75912b885d1154ebc25df90465ecb5f07a6cc477e44d3579f3a629bb49b7a19a619f44e6b630b684f3ac4daee5eb386dea0386593be825a696656e130ec0e4a4bd5411c45ade6ddb4a6284f343b0a746bbaeaf03cef31120f19f2845dd9a7fb818406b0cba91598ece880836e0b17e6f375b8941381d0b301d0ed1bf746c992649b40899d2ed2b39d488981970cea6da2453b5fc85f23c8d671a3c7544f4a7133fb500f5448da44d4c405bb70e85aa3aa399204148c01d1a79de3f784dc5a9141dcb41872461e62deca48dc567b984ee80097a099290e413e575411faa54f7f3387cd7759f71b8013ddcf9ff2079503ef802c54fb731e3131316c93182dead523f41551bdd3a96a4261bf6c3dc72a952ed4b7cc95d116741c653494b5ba8ed9aa565ee57ad22a4dc83"_hex; - r = false; // result = invalid + s = "9947c137ebf7013ea9e41f1ce93fd29022e340e6ade56c1119cd826430acf9833bbc1ed05c1899757a79d3104c9b4133ff0aef7e1cbeaafc2ada2422bdf9e29926626527f947124d5549d9f4fddb809f84923aa335d331c392a5ae5e29cb0f503e230ce7bff114206d5dfd51b812f9ed5448d9100125a8cc2324e560c69f4a492988045c97ab90a2806df900c3b95ab95bd634dd0a50edc5312eeef6463bc4b62e54261cc67e9cb9caa9a0a7550183c9e03f26bd5c8718dd77f54290b3a27a054d7d3e39e8cb45529d585ac0e507b8688219d2b8032268020b68d2284f9f743debab5cd47fb3fbd77fdfe3a9d7984b11a37cce190ac89a472578a3332b150f5d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4010,8 +4022,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "94e0075930de07ea37f0eca5023be15c472a674513654d837befcf17765225c73d17e93ac4c69d855027747c7ab81c6bfb3080ccd5b6dbdd41e2ea4871fe30131bf2dbc143ddad0292dd4156c60cfe5172fd9703729daf99b2067334af23a2aaffd0f74d574955c406ef8ccb1796189c140d1a45701c993737b9de11e44112c4df9a5b2c7ac827c9329c5f63f4bd740f3f1baf69a8fb6b69ddf500272beccfc2f24902c592b91de99783242fbe9767f3809b38368f04b02d973c761fd999b0c69eab43a2187d6de4fe5455e070e20bec5bcb8ffa5e439b04e3883804a5dbeeae652260a405ef5e2e6b9b7bf7e8018065a900cd831b05674a093650644c42341c3f5429d59fa3aa93737a6b525a80e0748518cfe19e6a4de792d3bf842e2a864f04da31a8ecd0b191ea656f1c2987a1973ba1b10e16b09524a3cd07c96814b395b29ae1a434e76bde8e0b6e4e29ea3c6871ca447fddf077f53a4c2c3499c7e96dc6de112cf28ba83d8d274ec03fcd1d570b74e22ddddece554b7645380a2a7483"_hex; - r = false; // result = invalid + s = "259cc7e43882850415f4d7f2321fde08212490f6e9929c37c6a60cf686eec1dee385fc513f5e4105f19f2d63565b2d3762080634306b4ca87f857912bc062f31de6cccae9b48213c1b661ec9874d426d74e4c23c0ca53abc8f7bfdfb9d32dc6b5559f6aec33a5b9445ec4490302af6893890f57969de00287203d8df9a511b678caee2a7d666d9fca912826216ae3c62a37f12dac1412100c966ec7c8ff347eb79566784ef86943e999d0d1aa46fc9e5b90e9b91f4d16bfc2d5b9ffd4515f1d23cd0ce9612d19c28079702e1bc96b98cd86a5708b9000a5d61777a92d7d033557492f9ab1a4aee6719dbb14e6c3b4998480a8d49013898a5418bc8c63c41c5f1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4021,8 +4033,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "3e65342b3d9322ee9b0473f54f0c3be5a17f56f2cfa5a8168bcf3001ca1256be867d3a575b07c3d7d020037590aa10d75dd764a1d57a123976116286ced29b68e3b625c3ce0c235a629e27e4f8011afe4b383117a8bfc927a7718bd81ec4a156ef6ec5cb206c2f23941b595ab3e8e4a3eed825c8e2af444cc7b0ae0e303c8f109cc149fed6e8a2679c55a2f483dc64642170d0f62f0f20a5387a80c5ee3e72d275a8c3e18c65de6f9af8a7ce886b83d84cd0270bddbca64db5d6de42619ab0f37ec18594a09a80c0183d44dd3ec6b46ca4846daab73effe1d5e2d8ce302db26708ae9223369ba5c488bd11ad27751abbf994e2bd18cc999dfff0f65e8c6d6d04e229252a5d6704483458d7d094dfdc96cd5a7b0573a2e0b50fc14a8d291fc856e63d82343534b75b25298c6ab7af401ce1215cebedf87635ec80d0cc228831d26c40efa5997105fe4b3786d0a44c17be443a67181d35a5ee56da18b7e97db573879686a406c3bf340851d12d8ed57c0530433d655aea85eb3211bb7f128c91c0"_hex; - r = false; // result = invalid + s = "129990973396b70468d380897ccbe6930a485460bfc199c7c8efeedf81c7fc6a98f47c0afc29546c92d3ac2d93d8b1c6909642757fa52de1375867a197dac0ee58c5b62f12182a5b4e703ca981ad344411e2dc3aa6c456dc69651cde35bfe136ca323753137b4a28571eccf8d1f0cc4cb4977238dc33827f1bf670d938f5b902e6389c10b564608b396feb0cdca57f5bc3ad6bbb2cd324d531b0c5538de37482a09ce103ef6399cdfb404021c836151c81adf6f852f9a96919e4e78ce76aec77a48bc5eb224a3fc404373e28f07a1488ce2fb3181075b852a87941bd11735b3cd6f5bc0b660031fbf7671d3bb4f8c9f653b8c36e89320f7532ac0fab23dfadb0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4032,8 +4044,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a7ecbb2fac0916fc1bc793f4503d496cf2683d1529632eaeeee4fc89bb8174e7797a8d78faa95a52da0c4c887585d61c680fc4d1224e02d3a0dd2b33031120a14be8ad16e267656c683c179d261f6aa6089a14122168748a4bfccb59ecb086c0b7edd342bc61d2a9a2f5aab2f4558d458971ca04672e513d3db5784db83fdb93816bf8f1b443470973d96ed20a7d85adf93bcb497ae07022db0f939028b9387a1d448b3fab2408c2754478621640cae0ee6af76fb6e653e4d418e83d431f7967e435b748e8c7a26384addf77115e0dbbf7cb5be6ec0d11b183edd6def81d0554a2e7fffe692e3cdaa6c138cd73bff960f047c0226ff0ce1abf9d16ecca4c3b998ae8ab1fd1e35f80b04979ecf0338497d1df5cea3108bdcb1d0bbb6636ae234cd81e6f2df123d263ae38924783a2a11c85b7605808e84433dfd72d9ae5b9d82fc6a8cf385b0994d32afabf3ba62e8578ffac2073d81d69c808a2c9f46b1115ce7f26885d1be3052ca23e2cfd05e92469795bbb274c4cca1b992612d0610c27f0"_hex; - r = false; // result = invalid + s = "002faa1b204fd30ee0d3d6d79274f3b498f736bf6e6b34c0ec6eb418b7a4c105c1a75669c092f52fb1d39b2247a8d5692aaa44d4a4d70b8f9e636dfef370db9315fc1b35434af3ca21afd366c3295424bc1230a898186105a07788b92bd42c56d5b66a336fca64fbe58a843f391fcb58588466e0ba484502aa26c50ae35585eb95fe0ebf248b7a57782373cbac21a00928a091455347127910eb0b9ac35c1bac4a99eee0b718550ad282b4210eabe0602823209902b2bfac9283baac38940800515877366117a2d383e8f0cd09de7c946cff1eada4f1f97c44cbb3bf3562ce21af7f499af8ff40e13b907e5f4d1696dd52e3726570228095b89d4ed958e618a4"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4043,8 +4055,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7c2c6b135814accef0caafe8a22b8cbdb832a30c997edfd33e01a9578e309988322f08c64704080dbec0469274fcbfb131b4388cc1181ae2004a63cfec1080087dbd3b9e7409fc0f960ca721d456755f1bce99bc91ba36c65e747e4cb693ec4253f0ca37d8b9d64d5f7d0526ab809a4f476e6537263adc00f20d4261d78e5b6f22896706c665e885d5283716dd959400d2a7cb35974a3a3adb1a4bf3bf36e9773ca539787c0f6a05d17b75837452e247f065803513eb8c6c995e989a52a5d48bec77930a91cdfc1f373c58b344cb1700b7707a1801a758246267c8ce932035f8a93241f57e9ea8c4d2dab3ff4c5fe06caf37e5c996e60e7bcc4f3a6176a69e61df24f8cc080b7489bfd8395d30b6a4cde92ede49a26a0a03c766cef25ca6bf982fc3126ed7b1b1b2bf4a7ad9ddbe1a3a456a6720953460cebe6e1bd5c333b9ab2812f9b47452b2759436137424832753d8a97fd456603c5585620342fa1dd056be6247297d5758529c152d24fa2644e613244dbb66815278385be78cfa4224b5"_hex; - r = false; // result = invalid + s = "4c698321f4342f64a87fe6b199d5800af12d39725e449c79706e9af98b51a2d0d724663ab87618b06c49d3c1b98d97db35fbd8746c1d9a61f31ead8893ecc072057ad4004a53009703f66bc2b4fa7fa6826f54e8b873c79bc19ef71fe61a182a8be6cdb6dd35d87d1f46746022f98360f3870f49aceac4bb1a839977af2096539a2d182dfc4bd97af34ea075ba96c39c4a85b3ca83002f97e992c110d40cb6c668eb9fd022a4ef89988095e8c513153f99e37d9cce75a7ffa0a55af6b7d8314de4690934d55895b99cb0882adb346feb8af0480a4fc46251649d6cb2e4358dbadecf27ac713dfda9b8f40cfecb642b39bc1cca681d5628f4fd30e8788635e937"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4054,8 +4066,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "27b9f6f0a34cfa0a71fe15c15c910b7c8f2096225213e7021649aa3689ccccd5e2041578ab5be9d110a05456fdc516c5675561dc82a23fca94cd66df6dbd4b0805ab85b57734f5dd2d6efcb1a0bd8c3da6f8ae7a68f54e015a324212b916a0eae4095975f76f509ea383edc4fd888217abb893693f821f4a3c72dff39dfb0fa7abace8c16151d01bb81be374122f0e479748df2c82ec87b443325ba908bd00b2cab985e64c7f6a1edc62787c64b84410d93ffaf6d9a33bf3164e4348d7e1afeb6cc7d3e8a51d723ba6ff27ff5ef1358001ffb8eaf651cf48ca5534bf5d86650e73b540226fc2a2c1a7c52e6003d89a108a65e1c9df183b47d1753ea697f05e77b3a13cbeba8daf25683a6bd423b2b7acefa66eb5e6d08ac1984007aedb7df5d4fa1da1aa3c6ea5f383571aebfa42ae1d42060d996cd9dcbcbfa605f002dd7ae653e7c295eb3c3d03c9f6c479068456a8b0087f0c61492ff7c125e3bffe30cc45a136d72c75b047b246dba18ebb41f3fb9ad0216a09d888885b4402200291e6f1"_hex; - r = false; // result = invalid + s = "64401a452e3b56bebb1d5f3cdcac3dbb0a6f6e81bf2fe938143b9df7e8f6380687249a0c30a2bc5ba0fdb1e4d0fdecfdfc74064d365fb8dbca0cefeec0ba6fb4f775b4650839f03dc681c1f78d298f6c789ef4734d0a3ceed09ba8850671911e5e68af41ba2f37f3e56f7864fe4775ccc6af928876290ffcd20b988540c0146db97e333da0eadd4772cf15cb494e366f1f3bae740dbc69cd339a5d1f8a5e608cd61eafed4e85886796520ec5ad7240d11f1ce25463b57d0723509fc368f8f81a6c63ed2c61a216629dcdb9fd226215f8b248e2dbab5cd4f62600fbf921f4fb666384333d92251578dbdc5dcecfacc2c4435a211cc984346bf254b7cd52aa2bf5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4065,8 +4077,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "39c7a8c06ac4835655fa719be214556e0adc5a00ab466d88d33e694c30882e7c41d7fdefde724fb8255a44ec4bdbbd03d1ed528b4ea980bde20717349c0f2eb78141ed6f4490173e62cb2c48b76357c7816d1b0eb5f85391143d04cf6a100ed6917c46ec661a35860b3210ebf71bd7e6b8e4b8909914226ebe925c99a7a5a66f1d02c876f25d80ad4482899193d9a444a8a1d0ad8d5afa912b53995dc36ea89599f4f181241a6f4fbe698de8c7c794a82f1f576c255e701751d3815f5b6fe93efe9a678d2422ec9a4a5d090beef2e552db07a4d146f90bb4cdf1ea6fb844ffa1948542bdaaece102fa3359d2bd23c6447ddd64dfd7e4c94c801c2b6ae17b07b07a4dc79bd69ce5ec46aca637845a0185a372feb8adb7d60996133b9c37c32a9ad869ff5534f39aad8701e3487e1e6c8fb9ddaf71a1c34374a09ffb85fe44790ddea79439bae8eb51ce12e5abed6af335ad1ddbda07a8507b6df0d0f3ce80dec487968d29d92a139eb1d5ede5c28240320c5ad9cd0edefb69fd156f0626f6d45d"_hex; - r = false; // result = invalid + s = "09634aaa108980fb190dbaa425d9908a4237a2531c6471ad47dced90ff65e217baa0d9a8b5167d1c07fb414c88214e6caeeb6a1809cbf28f9c6083bd54cb2fea79296ad2dc1e27de2e96c056842ad7694391b40c6b6a6693c64fc1e3dab13185f8c1406ad4d2c39a04c3f6437519489b3d6185d9415d97e9cc405dcafcd488cc4b93a9df5100c1fa8dd31c60575dc64067f2fcd26d1f5c44919a4e28ae00688487c279130d087161137d6fd480111d45b03057bfb7f79ae75362439775f28e84839156b9f1fd1aac698f1b1874ca19964d30a725e92d4ab784b8da18258291f86e0116c9d3d4be6931568c109068ec52af3a26aed5ec136abadab1688f06488a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4076,8 +4088,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4c8a79462d5c62f418c83b35e67899db78b04883afddd506855ba23e7ef8c5336c1492faeaf1d57444d1049bd008c317fe7249d5decc09fb4f39d7858edd097c3949c53bca1a439674a61b355ff5a9388a60b7d5c7255961af7079e72c07fade552d0b77c36ea3d2f0c7c9985b8ce478df8658de208dbf4690299db7f1d32660585b918af94bbedbbde7ae9444972abcca2f6b3c4004e3c87940793f1a625d932ba14e715dc1b5f9231e0f34956b2920eaced888b3a320ec8376b059fd48ff369beb1ebfd32b9e9c9623d28b54856919b3af12239df425a055cf43e448541af94b88a223a90580977a72782b831ba0a88877cad65f8fb49c68d5e3b2f6224637e61f4b356fda8b8ab916cc31b18e6f92d33e0e27971a480491fde857715cc55388b281e7d313ebb0abe3337f7d4544ef9d144e402f49c2b71eed30f8ffe8e600c31de5960947bb07fcc4e15ac0d7bf00bee0920c9f092c8bed16ad9ab7d752433a96dbe49ac2cf33445257a51dd347dd77dd5ae0d08b223c457db3b57d727f52"_hex; - r = false; // result = invalid + s = "467e9fdad9a1f83ffaf7622a156384920eae46b89f63c3fa61c5066786c34108ff73213ffc7ee9102f367726854aebdd9eaed49b32c88517e136778dcdd7e231716bd618261615d029241a77f148c1e5e39777a9f85fc3d4e9320f2455cdfd3280184ae17e35bd9be0a0a0d1c2a2d321a3bc86588fce12d929de1a2f473026e0920b1cb8b6dbadbe3810af22a3e95dabc9553733afa026e0c7847493182aa1f3057a3b227775a3d7ba139c1724b3196f6300ca4ef457c2bb3f09bb2be6fb4e7caee6d4502c962291da0e499213209a28cbf2c4adf5d559e44075631c3035990aceca49bf6161203390509a80bcec1d274f1e9a1bf26c9f59244a695adb2c5fb0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4087,8 +4099,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "93391857ce1fae6df31b1ad972189803a1fc3ae91b89a264ff86246d6efbdc599003bb7c35814a4215dfdd3932834d4064b497f464fa93054363f1fa5e365825d1b87881e125a50deaf22d75aae32fc0fe1e8f3115f7cab6af0c2aca54d6f21f5a72fa77a0731c9f8ea82ac2e31155fe56a7950f61fc1b22c274203ea91b28a4bba0a925ecaaa017b9258e1d0f492c24336334e328054a12df916e1e4108d0b7e5d8b2bdb3d4a10282cc1653b9df2a24a7ecbd753cc7677c88c2acb7f741e3d56d670c226a827fd6b19aefa445bd277eed60dd13619427a048616dd26770ce76a3031bf5856b50f0ceacc7bbef257d86f6e9fae62aa6af550c9d526a6076d1de77a9097acc15728cbab9fedd1428c33a89e07c0a49dc89822558da1da6db6f8f738ae309fec8f033ceda8773ed3eb5bf6203fed189c3b7a774cc5f44073dd0db9e4a614bf7c8005d5c6e022fda36b82dcfe66f4679eea23269ff39213851798e63e42c1ec5be20b3cb5e20787597b43248d4fadd1c10cc94d066639736b7781e"_hex; - r = false; // result = invalid + s = "5afcf0d327a427f6d51b87aec24789fd7ebaca9c4eebcc307664aa6e92b6acc22b112faa3918ea3ef24552665965842639a532a09b914bcb3b953a0726d5f88eeac1bf65bbdec56d55bbdac534da0f83e182dc8cfd6e9a59095bc82b5f0f5f56a1163f716ce722d80394a712bf0d5d24cc13961079082e4598c8df5510e20febb3d1a778fc5876c65a3e1d3700ea537c8d67f7534780fa8d1cb0ef9c39e439dcb8a4c8b76a723ff8309e3f3cf39e6cdd6e52edca5308aa6be2628608d5206e82251f9f7cd711183f3604d83e1c23ba71041b92d33a695225b1a3f61fc742f969726d79504b224be259e9115f1988bca3c1e2b61541527227c3d629b22a95791a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4098,8 +4110,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "1d9a1575ce2cd06e5f160063d03199cac5e912cea51439f738d98ede05aaf7b821d8b26082ecaf4d12fd01d0f64be9ea2e1831388cdb5e7c7564b73146de8f9b5314ad6738d98e1053ad0d7d594425043ece575c75128888d0d7b090ba5d5e008be46abadbea23c9b7741a023151ef281d99fdfd684408992a8aa9f2c85376a40e53d9d223ef4ced563fca832ef03bef29a47bf381eb6728830ba37c69a99568494efc85370e8e9c3fcaace1a59d6c98afd03a0e8bd5da2f5c909df5710e385ceac35ab0fab92a6cd918ca8d32cd5d4bfee5dd644e0adb3d188a5d0e7a20a305bda34ec10bb65c922a0c074e8427cec78a590c095a0c670cea6d34bc7a88b2f1f06b00b368b8009cbfe6a14b18bdf2b01caab7041d46e6b76fbb1f63e9b309f60fdb4f1a6033a11dd7dc1eb15d7faf922b3fdde28796c44e226633813a969ae1fc54388525d0a125414060862718bd0ee1337de2133fc773d06bf83987a22e4d2e883765e3affe55ff8d92771da79ea0898258f0d7e858fa3937ff24f122669d"_hex; - r = false; // result = invalid + s = "5f912ddc495c20f1975219b0b5cdf0629585a98d5565e8ef2c98fd945cd851d703be32da38e6a376c1269734de5e72734cc685cded8a31d430f526dc3788dc2b54de838ce6514ef970afecb8bcc0b2cfe0c5e8de29d2a6c009813050114374e1db8d7f4cb714ab291a6095b7e2713a28b5dffdbe3ef127307e10155e0386e3af886cbc8e1b9b66086dc9c48d07e460fa4cf66197414a4e1a72f6bf09ca94964d668666ec1daeffc52a3384cb61abe1a4ee0c26674df776c7769fd0c89667a421855de0b060b169eeab02ce0005a1e7d7a126c8583da8a4900f14fbce7ec1b4120994ebebd3e97e0d9465bfb53f2ebef725a10fccd0359a2724a9ca18b2b7f715"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4109,8 +4121,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c0177318feee842e802480dbe0dcfc6215d75431a30bb8492cfb1cb84f7ebc73dc37f56cd0dbca1f6a6516c6eee3de3addbcbd569bbc79d533a4f5955d95babc717cd4c8f5039ce49ce7dd20aa44bdb96a394f8499172079f8ed20c4ed780ffbe11cb00d04aeab80c882eac517c153993892549f2d4203d8e3fdc719fd745b06103b49f54ad51b6dfd0f4c94b08b7059875073ac11701e16af0b73d7b305d9a420fcb560b490d01c4afcc52b9b21a467e95bce62da8f559527066116c602bbcc29a434ca04ea3227a25a07d733f1b867040ad1c85b001904c749505166635c217d8858e637cbd74ebd1b86a400961f2713cd00e64947c2b5d2b97a4ef795822eae56328bc4bf8e8c9c8bb8d759a3743cbe9d368d985299d8338796ad6e24df7eb7db18147450d2db91000c8667681b47aa9f0f2e08b48aebadaeeca32976dd03ba94ae72950803a07f566e091670c83c8ad01cf1a2a921467010c20975e1b9653a7b56d2137799eee863a576a2275c33320445307670bc62fa039c7cdc8094c1"_hex; - r = false; // result = invalid + s = "498209f59a0679a1f926eccf3056da2cba553d7ab3064e7c41ad1d739f038249f02f5ad12ee246073d101bc3cdb563e8b6be61562056422b7e6c16ad53deb12af5de744197753a35859833f41bb59c6597f3980132b7478fd0b95fd27dfad64a20fd5c25312bbd41a85286cd2a83c8df5efa0779158d01b0747ff165b055eb2880ea27095700a295593196d8c5922cf6aa9d7e29b5056db5ded5eb20aeb31b8942e26b15a5188a4934cd7e39cfe379a197f49a204343a493452deebca436ee614f4daf989e355544489f7e69ffa8ccc6a1e81cf0ab33c3e6d7591091485a6a31bda3b33946490057b9a3003d3fd9daf7c4778b43fd46144d945d815f12628ff4"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4120,8 +4132,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "5675e16b96e961dd428de891451ed0d23706165d65392d277eaf846e24f0c4388536b2b52e519c07d0e10686a164bed5a05314249a77f77d140dd16d42fba947bbed204ef4c8a958e49f3aa4e62438ee333812d6a9719ff166839e467080d8762a4268fb575a33070209013741ae8ea0c757bb44d12450579ac8e22870569c6892edf1fdd0bc12a7823b695c4c90e93c3cea57c2fa004eb3306d13ba60cfa7aa3f1465a232c3f4cbb765a82bd59551d0f130137829871bd35cea7c59cfa12f188c91dfc214d8102810a7deccce40f204562993633ba4669f4d7d02418d5a66db59af8ad001884969b8e00951492bd846ad7db619d623b3466cfa062ae9282a1cddf150e761c90a3413e92f2f1fb2b5b62d410cdaf6bd8885d635f05f20331416fc3808fccd342764b7c244c1aaf78fa7a1166b1b204058a16ab750ac3fafbafdb2610f52164f75e7cff8a4c3cb899ebd5fbe1834682ee94e6cd810a4015ed7f0fea7f1494c5a477b572d172056629320307e8ece3f72de5dc0652e688d79d154"_hex; - r = false; // result = invalid + s = "1aff9b9ad34e142421069661c71e35b98108a8f976191b45a97cf12e8ae8ebccd64c0fc6a795f4ed798fa4a2f79746c57a86f894110c1a5402dd72577c2bd9817a9e7a1b0b7e389527428140d53f4918b305e154f7c143011dc27ddb874c52b57758a3f4ee4395108897f0cf7b4fd7136ebf991dd9758bd2cb85cdc6f9d96a40f8e6a0c12970c18325d5742b80ae499da45655f972f33a80373a93572fe302dca03cf7e004690618c5b725e3b9be6e05dfd0ab8f28b8b994ea202875268837d3876681a63e88a410a0bf4a4c41f7336be2799c6e62514a5ee0422cb6d5c57c2e45e9f96d667f8629e0987421f01a9391a3334dc1e8a35425501bef6641f9e6de"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4131,8 +4143,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "562cb29e3b27d68a9f8741a57006296a943bee15c1e0cff97e8748ad822a321234a15fb3b89f4e07c1756d693507461172981189e9191e0175c71accbc258d3e79bbc627365c95f19fa416aaabf223bf22fbfd46cb8022a88600fdaf84aee70e9c8939e24de4e8a5fb2536c4fda5e3e3d71adc377708c1f4d7982c0c2267265d4f85d9e27f689de2c216a21239d6d4f95dd30ce102da43ec1b3e72ee5696db8c63cf06d94b8ccba75e197b2d26350d35336475f66de615daf8c1900ba37d7699ea881c0f7af84e936c402c08e15d3923733aad0894b4e78216225911ceae7f4c770a17d90fd7178a196050bef7218d7e0fe7fd22eb5c3854c806a5cd179e3a82b59d9b4e9e2dd1d4cd998ed32ffbf19a91cb19149c948b74861fd0e92174c2f35c82c9232a8413adeee723fe489dffc8aded50c7716403c02549802e083f16584b05e3f67a4e726dd8ec6d4adcfedc0695a47ab75e6d0b0486e946b6485f89162349eeeb88f20dc3095ec5f45bae1c2b7af4352138e864e6fec18b9bbe98fbf4"_hex; - r = false; // result = invalid + s = "7a1eca54a78ee1e92b8c29d667bc89e9ffbb404c5bf13a87a864e99c7d3089c458865a8e3ab714fd76ea4f01edf15e1f80fc9109cdc53184de1443efa533939f498bac27b0f127beb07e4f788ac5d9390da29dc156aa156d342158df68b825732a8d8e852644afd1bf230bf01c15ebced9f710f062b5aba0ba0edb2c1bf9f4fb453d6ba7cc9808d763930b6d8dabe8224db6004aab4a9ed4495fba8ddf371592b05bc057aadeeb3d4b800dc849eefca86f7414b2ca3af53e04b524ec566f646974c17acc6c76e66f7689b9824cf4f98f75de9b3997233cdadc1a79679c47dafcfcc107351f7e64084d67bb986dc2cf693f9e9af2d46c5f8a560b1c7ba2d3a202"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4142,8 +4154,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2302f69cbfe30dbdfb830918913fb556f2634e268210efcd0afff8bc527fe30ea1dc36833b01fc1b7b1d8781913a5004a24c2412b9e0713b84f228b6b08349eaec2ac6908861157576c89bcf472572be53c0075e48534d335b954f46aa456c90653912e07137a418f8eb59329996e86fbcab8e585d80b7a8f97e7aacad3d08d24dbe30a76ef8f47788d36926e74c0f24df942f73fbdfd649ffe9a952acddf3fd8ed9aad055c3a950e749dfce25d0c45114f40dae0a449f23d7915dea8ee1f6f163849affa4b7b8105badbbffc5690190fce192f4a647b81b14101b4fd9b1f0379b08379901f0908ccb48d5c88e8a3d0b6563bf01117ebcecbd84dd61e6bf05b77dd2a3c63d9c36a394843df28b8184de81cde4f381eea84822002008938d3549550cdeafe31606fcc282ef2c2a4ab90b437d0975a6d576fb705e26131bd07add5bcd34887496b653f3e9c2a7760eb367935cc8052ea896c6f2023f0d2a5bf3267835cb4adb079019b8974426953ef1447069a79cdb51fe8c32fff14a9bb8f78e"_hex; - r = false; // result = invalid + s = "0e6eb88e130cf0d79056bdcb87f016f99edd9f35519c44bb509a38cd346d996e3d9b7b21a40fc976a935f2904a6423dc0f251d8a89c4e1424d3312b1e7e0c14f057fa3a45841dcda2bfcf107c2103c0475cbb34d4c769e98b08cbd35964aefc3a8dc4178725c16ed7da6b438107da2488af8fd5cb2c15a8849a531e1a955c40cd6c147956fc3e8a15a1082e9e9a7878efab929c50d52fd6c14cad0987f667221a0c8ab29a682de04e437b20c82e9a759291dabd22fb38e86121b71b3ab473ea0977441db6b137d01b63e328412996ccb8dc27e57c8cd6cbeb31e321160df29ea3151f34ba36846495b6e4bb766f0bcdba00062265ad7d01847e22c06a463dfeb"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4153,8 +4165,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "92218f94fc3552f215e98d21758992429cb17fc3313f780feea3f482d0e32cf97fc8832205e74286e69a1fa35062b984635687692d15e6050376afd8e8501b4a07e8c61006a2fa6eb27e2a4c310f54b907808027eaf9cb0530f8ade781c4fa9095a41bb6630c1e0973783eab65cb0849f9c8e89f3c997ea3ab930b4fc629028dda3d5e0e7dcd99b2951282c31b8e3739b6724a414dbc254802e63a1a6a268e7fc6a91934cbb27d9cf0ec994fd02334a7451c3658e7ab13aa5dd27e81736c9cb316679eb9a3d3f87c3739ca07a7be08a0402ab2883d860867a4eccd2476c8d9e37e2ec214d6895664bdda7ce7344c95622791cdfaca32508c8b7388391846b720659de2aea7bbb84520fae9edea66638270e735677f175f115c582f8d76185e8edb3d105e3d6c0f490ec486f7ba41f750add6d50997ec85ed351a2b14a4c328a41faf70ff3e50fd4ddfae6f9c74fd72a7c1bc0df045e31fd72f04b6a797e0cced07bf2fce788d75ef6d783cd6e4eff98c49e99487c76ccd4e08ea26d36c29aae1"_hex; - r = false; // result = invalid + s = "8083dde7cef1b018fab0e9aa58744a665c24dad0791dfa6e8fe3e95b320a94038926f6cbaaf19562fc53f3a69e0aca0d9780af9eb9267f19a081343294356fba81518fdb961574a7ef38625c201036ae954238b889c8eeb3677f7f9df07badd5f27ceb0ccbeaebedc41b977609f8b964f028454b4406e22e0034c3655ab499d01d1b6be0c19bfc9e4ee2e209dc033ba1a66b50ffececa532c2c806cd2ed2586325d5bbc57f42840d8df88636b488ea363bb7f3ec35d65a635befe9d96ce2cb8c4b7b0f90ae3eea677debde8c6b2f63a0bd6b694922ffcdbf8e54864f4a90202eff266678490e53923dc48d70e9fbb756536fe6196553c8492fb5ecbd0a5e66d1"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4164,8 +4176,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "55a36002b43d9b5a2f99ba0acf767cb04b54b7849fc2443d123bae5b6c6b6fb666d7ffb96e09580462df5fc560cbe9744c166f8f43be98b7b61ab71b86323d771eb6aed87ca4261b4e4d76af84813173c01cd82a87fda653c47f3700fc2110a852def8c785da96dbc779615335ec871a31ac3590562e8f50972b5e217d45089a217e8b0b1905693e7dcd121542d11c0083b967b04a8927211ce89262329ba2f7875412b8785ebe47693b8f3b76f98192bdadd3f4359999d48d751290e87264a5f2e53ef5814225931b253b451a3246f22ee3fc7295806ead7992bee92e74b19dba84b1228a8fcec6fc0729f4840d2b467956f86a916129c57025c7465fbfd760e0ddfb480f748c422c08a98fd0f73a5ef04b28fac58355e6d9bbeafe84d0b24e6ba19ed317bba9dd6b9f0008d5d150b3a27b839ec2bd72205c345211c99c8bd92db11c1bc16415b082f0e6f23bfdf9fb00b80a6921a023cd2d8565d2c98c60b5d44b2593126f6ebea96c6529e54d3f2a503262bff664c955d6435185247b32b9"_hex; - r = false; // result = invalid + s = "51e52edd65ff6f2fb812d2fd4f3f9852eedd745630c9bf12e6f63347c2c80402ab0da654155046e4831ea02fec6dafffe94e6c450a96cf56831a0bf8e48b99456da7e17b9f642e9d6e033153f740095a67c86f5fa4fb37eec9cffacd7dbc368bf07ee00050606748dc887fe0778871ff64953c249244e78ceb4b62efffd2e9cae6803c25504a67fd94941eff1a320b1e0618eb9cc350d8241892adfc42790f24745be12ecdc63f891bb6c0066ee28895c78a9f1773ca527e976eb29abf4f649f83f0fdd7a7f72b7dd3343149b4c1b699588948e5508a58bbc481fbda5115cb5822cb10834cc01989264c79794ba032967271a7d2af9c12a493d1bf3c070b7207"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4175,8 +4187,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "79ae98a76ace727161e1ce51f127445bad0f3aa45443a099d246b3e04057097bdf2c99e744fee3a55a6feb7f386e89b3b4efca1cd4bda07c0fb4a06c3130c9d23550f56899480f4dac7b74af496e74271eb23f96236d61e12d5fb616b3bab8c53845816efde0d33a8f041fd0b8b01391e99811bc4723941a0b5cef0974eeeb2d4726b51e9a8687709788abc5376374af650724ba6aaca36b854afd09fe978de357de3ff1cbaba28b8afc24887742656fbf6007f61715e9102aee9c1544d8e7300196f5ed3d86d3e665db7b8f98d16d249f92f34b0faf3025387c31b5aa572404b8d3338ead9d7e4a9891f0796cd6866ae0b34ac57592ead287b984794d6ce7da2c89ab5b352b79ea94f8c0a47e03eb11fcb7cb55d2d00a88a09e22b9b8d5040003e4a8b9b5d411b21673ecaa59424bbc59a2e564d7d7fd8a3730c09eeed6b6f3f1a6af60b9e96b2021e27df6893a8c9c7bfd394c7aa02bcf2af96a392497ef1587cc271755b84db15957d30064fa1be2bfd8bb46de4285640e551bb8cbb843ed"_hex; - r = false; // result = invalid + s = "19ba81c3e688c41625d6714da91efb9bfc95a634409325f1cfab3dba44b807fe063740fae7604a839efce051d254af50efe044bec96280a831ae8e4e93a0d0611e0a43de6aeafeb3eebbe0d6ec74e84fdfbae3ac8cadf657fa342921274be801d05e553f589e8f48d2af38b79404d965e0a4def7c0975d6d9b5351ea82451b6bc26db3fc64729325b059f45089c90f5c8792933487d4c5317b62a02b9367a99e8d5c4148faa1781ae21200f1c39be49353d0976502ff19e08f374ee685d58f14dacf613fbb3a56ae3f1bff1afc060ba36aac11e2d038272c01c430bd463fcf55b311024cd7ce10bf59c32ba3d9943f75f8f76870bf0a8dc3e786e0718df3c01b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4186,8 +4198,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "3894bf87b1af9047d10bbf45a65671c8f96c5603ec84ac2edb97684354cc7e1ce2050afdce800626c238b3de0b7d94e59f03c1926fee2ff49b52b11fe64c8825eedfb9fedc4b58fb53b9bed5d5f0447514e6e5af4dba869632bf92051e268835883d16f08ed8ebbc9ce5decfba43acafb72f8776a2cfcfea0d2b43e17d4185782cefbbc27a3a249275cf47456c1486fdb57396d5ac0321c6676432d25ffd946ccc781d521c67995493ca3e6fb05e46a1b906cb0e48096611383a072d5a2b0fa58c003e5c58311267922bdb4217a19f9405b79d0fec5a177de5247f1f939d5b9201378d09328aa98d1e5a7e1efb63ac9bcee721208cabee3e488a4551e444d47236f89a6846d1459abdbbc2096cd7dc1fe69bc3cad5ec7ddd02359c6b96398b455a39022129ca179e1da702fe7019f9d73b8a8bc25fdec727bb70dc1e69e57faae10c8fe6a71fc903b1c2272901a94fc2721fdd8642a61666211f8557bf5f184e524ce64978596e8477ec4ef9abfd9ebd170ccb632b76da9d015d3d7f3306a0aa"_hex; - r = false; // result = invalid + s = "5e97f3122d202fc0c7688f28a0eba5f5ae8795438b09f6532a2bc3e75a164075146f72e0b3397bf086ec8e7299b67f5c54e4263aa0111f4ff3c16de9aa06682d63be4d8e82b5e2b3c15d913093e29ad844c70f9ff9b3a084d41648e322a2212463ec758823591117e03d90997d6264e5bfcc15b834ce7ae785bf22399a85fc454f6fe9cacae568e0d9bfead7ba998cfa1f25a1b7392edda3115801eb31c9bd0eaf6b5c070224fed09fdb071f87266a6247cc4e3c72c591c5a88a6b41241c491215512a810efa993b0c77e9d3ea4fd78fe9ed4baae8cd8d41196efa3d5f2fa2b4fa6c027f4c385f98c88a296cbc5c6459f91dee01bbdfa059c50b42639641b29f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4197,8 +4209,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4bce06246b965920ba5768f11973b7773576c8ca811031d091fbf88f0aeeef793859aeee2220a543df5dcb0a6932ab7eda80ca2d9a45687d00c570c0494deb6960424d936a21664108047a4b4f0a3f120d337c7e010e56098e9b707319b1e306a499843d53ae351db6eac5538a4cef9d49660345bcb5bb18900381850b371ad17a47ac57860d1ade90b839402c6bdd8479c79e27fc9cc3fbbb8ded4348da6d70ceb8b6c95d9c8efdc6fc0a51f952ba0e7dcd21f28dfbd39362f2a817c4045b1a3cd6da4c2bfce76516bc918a11dafb9f0c4776bf3f23802b38be8d03cfdc6b3551998842a028ee1585a6c232409469a869b3b144d5d02debfefe09a8e14d0e915dfcc722fccdb87e055929140257428de416d6caeb2437857d585ee6c3a4eb64a5d8f51df2050f28286e3e1987c6e3e3b22131597ed1c83410a2569c8d7cb04a80ef8f37bd043230502987013f560d7ba865759a01f588611d9a9783753093d87e3da0827c7903851ae9601d1d0e7766ba645a0a386d49ae2c5eccac6667f449"_hex; - r = false; // result = invalid + s = "8f32f73f3387f371465e3a75a0d1c7df7c52c11abecdb69ba83602c9f8980177e7df76438f2e95ccbb031e0ab972c30279dd2641e5cb43a24ece04d7477879bf989e504887513eaa197c0b5e6365ba62134eb51fcd3a713c69acce9332ca50ec1796d88ac9921631a1fa182e6fddbeecaeb9ec468773cada71f908915259967fd7932f41a3734f09d230b1dd487f3ba1df1ad1be8306096f3dcca684548bd458b0211738c79a8104a17689bef8bb9050cf59df1b0efd3aa3f203b10cfdbd3deafa36d79802126de196c9bffa362b797ccf253af546c4751b68f7a0b819a5b634a9baa6b981b1bc325ecf2b0c48c0463f85b02031589dd793eb682023cfdc7058"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4208,8 +4220,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7af993a700d939dc8e6b16384c311e092883680d4825c26cea5c25d4b738365473b0dbd01e944d84af0f658993b35c1dbf8a657cbedcb1e4b003694aa401c8e568b4e65c9646cc861d689c02f4f1b176acb79aa8eb9006f0f68da78f41eecd4869ecc576f849e9a20e6c1132f9af34eb92da154a459b5a3034abc8ab4c5b26d8721b89ae1099f88c971a9cd58c28369a9274bc7e2df4eb2dec049fea944ba505f61f3d6c4d65e643fa15ed99e915471d2631840ba05e7e05c714b84f102c8fcd94fae291ab216f0845bbee06a5452ed71d9e429bdbd50d11710890673c28de3cd07448a68c92ae052256837429590176c160e7eb42371753e778a6728a40dcec33d58d46ae03ba97fe2f337288a7ef67d71a42ff3944c1a0ff29b8d59820e5b3429342ac74f2978bcb4b56d455ed7b0f035237863f0dbb249f570c591d46a67ef2ec54bc9fca010d9b6c018c415fb4eaa81bb6fad502c273e72bae7acf4b4e3497c9d42bcdbf731c0bcd04604d85171fedc4b750b63d31fdcca389b6ff7e6dcb"_hex; - r = false; // result = invalid + s = "2f02de916b44a1aa31811b48ae20efdc26319f2569fffe23d0734dc4f4085352945135b209d4609bace95f8b850146b35f703854d4435536d00c3fbd9e9fd93812b4741f64c33271c01ded56a6c103121dba041b6fa1ca7f9f8e26fb98c6741ffb9e2c7abb10d3581e8f0a8ebcefd386957daf36d0aed4861a2b480467eef8fe5109012b765c6219dfb260a2aa016432dfe74ff2e71c2a748d9c99e1a6a9a98659ad6b5934d7e538c7aceca9534e6a48d27469a6ad582ddd838f135a5fef309e0efdf815485756e7d8046e0db84cf136a725f5defdd78935047dbba4dcca1ba153c68cca59844e1691dcfce73a4fb11cc915a4ee9549c26d08a86ec51a69e104"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4219,8 +4231,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "1123e2e0acbc7c8816b6dbe2af9359a2e0b6c10dd522bb3fdfae93855ba73a95961290ed808b3ff8eee8a9f58f3a77f05d03ea1c09d849080c415b3d4214a706692fc72692a75c07b6bc21b9ba4e79f842519b1a5c67259f028995d34c993d0ee0d71262892e3e76d677e838a308a2b4bac5fe20a6ec073148b1a420d5eb5bc4f2c9a45b10ca993d51be5146ca9ad4597ac6ef522e0441e2977fa6470545b086d434d69871561033419e8540299d92f5425e91f82ec902a2d2f5ae8f9017131644107d120786802f30746a116cc67f85ee9676d1738dbca0b360ef257588879f2f6a441d66d5aaa20a98ed3f57a73c3b96e4ced07b8129b50865efe1b8e20f0b81ea5cea294dc99f67cb515a25c646b749b2cc3cf18a41f1e3e66d77710b1854c3af1938a74c991a7e7a93971acc3fc3de3dbab92a84b498d711718106c98c3fb39d3c6eaf5c3621af25d3872e0de8d7588f742183918267458e5975bf5cf0f6c43846ccba256f76529580ff9913776600d1538002690dce5bfb8cc3356d96d7"_hex; - r = false; // result = invalid + s = "3e7d8ce9db20f4b8f3ce10a548544cadbd05f23a7d7c21233bd12641692a4cc153f17e890385b7047b0997f5368b3162078e4fb7fc12b250423ac365f0651c5ba2d0e92f74886ef2f5624e6677679a64acac595c30d8bc3b0d1e838e18705373124adb1f6f01aa816f871eaed99240d6e6d4a18088944ffb11da666b6fe5dbd1ecda75dcb8b5ccee024b0ff9a4f1788fcef403af316d5b1d1611a1ad3f36f9a7bafe1b209a7dfb091f7e63858a119dbcb793bdee7e68234acf06979c0dd5b869dc4c92921422907f01bd3dcf2517b2ead3d1ccacc68da587531d773e1934d766f9ff40566ab3757df02e20a5147e39c92d65534160cbd33d32036e4f7beab5ef"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4230,8 +4242,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "194494470fb927c96faff5627eaba83b85cfec16ad38d166a5d7858d6c77580a4a8bb94c16eabf9b22e7653b7957aaed312695df9bade2b4722dab393a286fc2b734cf6f7876083d42f238d0af3082eaeb85e61158e9dc352bf151de4f1329e7c379b40aeb312fe331df8c460c423ce08bcb6290d7e772a75ba6679eaf4be77227c296246eaadc05fe3451203479eebc0fa86ae86ba9d3b42160f0f58ec0652805000ee8e520fd58f80421ee5e78436ce64a58a8273d512bffd3794b04b37a3f83e7b5805d19595f61d07f7a4790bbffb57565b27e8edba4273339ca62fa711c22ef459e78429e9c1f06f6cf8c6c8d5e0aec1bb88bd29a516f6bc1789fc790188c26c484231a78696bbcb181f608b08084426e49daef7d7cd080ff0a82f9c70605748bcba1fd4ec4976319de01a44b76097f86e627c37c37e92ba35bdd51027651b47f9e87e8490f7ce2d2ef8e1566da7f3bfa880e98564bbe2f80c642d30949391081801af2bd79e4a9de3116658216b9bd7949752661d7ccb7ca3ed5918288"_hex; - r = false; // result = invalid + s = "84b76f221b3b7d29be54cfaefd1d16d0ebcdd06f30fc49d9c432b7112039d99bc8fd5bbd8e1e8b2ffc0d6adc9df34a7319ec33f86c39819b4ffbdb5de30e94ac6b725690a4a3fae09aa91c0001f9e526b2315ea1e766c5685754101fcc1eeba20cc078f12f166191a5bac18045894d673cc6159738c6901f5edeec291243b42f2390f13006d4f3a29e020744a7889139b7d4b1d8378a80da405e2ec7428ca751ffc17e2186daf177b8762244e059abf697563728ea8fd6a1df30b4b390fb7b0bcc1fa11503777ab66c589ac097e0be98f39a8a2e21ecdf5404ff9b17d092bee119e32001e10cdb11493498094423257291a0d835a1c1b90b87c521fb1c559e36"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4241,8 +4253,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "9f6c7acabb5676d40357d7f58dc188aa11da3b032e0fec24d1d377e9dc4aa71d52945873bd82a6b1540b07f6bfa3158a11beb46513446cfd8af28118e693a4f700ce677988221f2cb0f308e29b42feb8c5ce768e34a9ce889fe5429b6b1d9dd5cce537c311228bc524a983ec83d5326cf1141cceabec8170a8ef00d3e003a86962ac760d6de2f906499e60ddf6cdaa394ff2880c4cbd7d658e02c3babdc8c39707e4ab59ece61eebe3e6266d635e0d594e1cb114b699022149b2105157d20c0d4e289c8558348820250a03931033b2cafd400cf62c21a617b16e83cf9c4a79a1df59101eaa180d8b61e5ac2c387f190bc5d01c0766641c8e796afdddaea9a8f625a7eccef21cf8c9bbb391f13fcab5f253f598b880e0391c2e34a64d1aeb028fcd84a3158f692466cd953334db71f4512030534f31a21eb65b459969a00307e9b2ab828f6e4966fbcadec694a394a8b89f94ce1eedd3d2731fc01395d30794ac2abdb0b60dfd14a46b533727d137168fd5b42183cbcb79d38b9259b725fd2485"_hex; - r = false; // result = invalid + s = "7ecc2550cfd058167ab406f7f4b3af4180b4b84526ce4fa1d0751a8f3947e027f4b93991409dcf5b4abcc902ad136cde8f65ec2566df0076d46ae2a34b971bf792e5032f026dd03c6f6a1e9bfc535cb15d8c52374bcf09eb2777d38a7767fd1a6baaf65335fc679b8289ee22a32745731ec7c8bd2319b1898286062cbe9302853d42ae61ff0a97cadbce838826c604c042fc6a0579078bfd9dff2bb2d9af7e29f12943fc0dbeeb81b65e3cd6dbb53724bbc3df590fdf9660b634443d485cdb05e18d57e7f9c06f4696c55930b83d70b17e15f49971783133041f6bede672c59df0486b914f61efe622dadec842e85c1da50567decc57dcc842ba946c4cc77e07"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4252,8 +4264,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "315f909380797c58724f05150a19becb372342fc5fb8f0073633808be07fa49be3cccd3892417c925674707c1e36e7188d5f1313eadf99a9907d6b0ba2093ddaa28c3e030d64448d935e2a56b7d989475a7a7e577f2329c6e8e2b2ece2a553679ec90a15089b494028c914d883c460eacaee1eac472f000076a4642136ffd2558c5b7033d71cee3a592899fcdaa05ec41de962f19060a32ec686b34f85b105a413f3baa819bc6cdea0f00fdd07900a8b041fde463d7e44cc6c45c48f7a1974e76e0fd67eb495b6448d739fe091a99eaa79f8436839daf485085253ced9ae1d5ea2dd5135fb5caa44d51d728c4e70479c6f0c239fa585fa557e08062edd07141754543c5af6e554afe5b54e7be52d886c83c7ce6ca9f3fcb3e8329816cc6c0d046bb1daeafb271ad6ed3da795a1b8fbaa3a056d407aedafb457045b6e067582be605a7abcd4643bdc2fa492df1e0fd43cc3e8cbac05ae240392ea02db489e6a5561895dfd14f47cb5ec6ac594427642eac91cafec05182f3415dbdfd12a348c3d"_hex; - r = false; // result = invalid + s = "30e738086ddf782ba014fa326769c14b9e23818f48dedf3a3d09252dce42c160dbd7fbac9a72b8d3b6c3d6fb0e4f726c20b8c4ed31d8eb2f92a8b6d239fb78668f3687703515fbd9adcf64d272443a457735cce9eb102f881596c416739b316be58cfcf0e4d1fce32a25c2483253b3d7571a9c72479f86123d830a721ccde80e4c243e6bbcd1a895cc17dfbd0e2f8d7bbbabbced4973d578e4da5299ff15ba170d15d87ca2652e724d533288012fdba420e8427a2d1009e3ace74c03d80ac5d0b5949bd1ff42c6a728f28511264fa4152ad77e09ff60caf1cd5ee13a78d67a838294717a23f3940ed7356473dd07ff58c360fa0cffb3dcfcc2a2b673d9d574ad"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4263,8 +4275,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2bff6effa697277d05bb0a7c6a7f714a0c2f23f9870f51c6b2a678d3b06f5c892d75f377f24fbb14c3c9aba52ae06d3741ebe3e116c0d49dc4e651251367fc63720c8553646bd7465298ccb7b4bf765607dd05052fe5a660c84e0e516aa67540af1ca35befb2250602742a53d4cd97cbd98b9136049336e553c3e7dc64eb39f3d96be6fb1146c16f2180992d0f16fdb9a4c9012753901fb7b293e6af23187c76d9ef55a6956b299bf9e9c9c27c9a4fd524360a4a6988ca1168f35f8bd2038869d77f117ce6d20e710a78b363973a08a5eb091a5ae7332e83617deca9911a2b241aca731624905b91ae63a87045bb2c356c934c70a6cc22bcecd7eb26adb6f98b1c1d727582d7329235a438e1161dcc01f82f760833bfd8d54f8d856ec475ef342072c3d6066425cd0309c4bed7a0861afd7e64b92cdf969ca4d2655a2ee47679134fc2ed39b41cd1cf2665eaaf1e21e8bb9fe6f19b16a057d8277d68ea7a240c95978deedff766e84ef46490720a3809e3ce2a9994af4a04de2059c5a393cf3a"_hex; - r = false; // result = invalid + s = "45e4acfe9e0f98d8841778018db1d3280a75a08231bc511bfb2392a6120b629df7bc59b2cb2f3f327ba07cbfb4e48b62aa7f871e44e614a824bf7b7852cc020b17147a35dc0bb8baee6479b8a1cdc032514fa412bf4bba8ab531615839f1c4e5730994131f8c01103c8ca84417a84e95d3fc35c94a2cde9437518ba74ac91e9c2e48432a16277310f867764b72ed1c656a627b2f4cd3991708536369e4dad049d45c5ced889c5dc61dfd36ed30060c7bc0bed22d06ec212b68dd7385aeaa25813424653831f7515c4de611a664e1e43205d016e622c632ab297abe51673b447d3a3e067cba4bfd21af1c25ac6cd24e26567e654f12f0cce613edea5c4f14eb56"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4274,8 +4286,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6e8ac44ae4bfe2af008414861bcdba58127d547d3b4ba6516ab18875ca3dd015dfe303d54b50b2fa8c001951d16e64aa9c2b14da674b4547317f14d2921f1f22ff72f1529dc8074725872720f3799bb9364e27add3c4eed2da587a6a8fa45387a80a68b879b309447874b8d81b74c69486c53aee543ec53c02433c9d405b86d0bca97b34f38db3e7536b838a87c2e007cdb675b7c93be81d1b102ef60672b740f3a9c8124885b6228bb3aae713b69224c5278cf9d4b23028d8fe0890f9897b215929e110265d93b66b98357bbdcd7efd51598012c313b120233911001a8519a9d98b742650296f8c5a67ff0fd0446b3006ac254cf8085036bf6074da96230fb0ccd02fcd95fe4b1e8dc7cdadfa2677da92a80efe36081333c557a4704422c3780a00beb6670a7ca95a30c9ecd78d46c88e30a081d0445142761ffa4e8c8682610395d2de0602043e6567a6d62a77cd6c697fcd362b13aee3fa92946036086ca3b002f1eef8dd5550a4aec137a6f60f7d943c9522f55cdc14dfe58639b17350a3"_hex; - r = false; // result = invalid + s = "274dabbe063aba2a29f31badac85f874657725510e1f194ff51b43aa4034d86de9b6542720792d2bc07e95e8106b6072e9337ef0c721a07e3ebbb23edb76ec2b93e97a3f0b777d3e28d18cdf4167efff6fe548a1344834f7c92c6fa379070da86240096a030f6362301a601c2da026d72590f0ef30d94acf676c603809f619f432571666b57015a1e41de41a0140b6b79ac5d6613ac3f9fe1eb1345b198f495c27eb8d5ce83e1126a90559a62befa469e7e6ff41d81627b4da0b67891e09b9db22c76f653eddfe83b5b1626c6dc3c13024b27a66e04c070792a6345953a7832aa6ebb963a745914516e1e8a3887ef953934cbda4419b5e6e1080fe379b1eaca0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4285,8 +4297,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "83dc093ac399d896efeaf13a4e5b9f5404592c7740af42186b01f2147e3de7f3f46ba323dfa3dec885e10d92c4f5871f50861dad583794b25e3ca2b68eb1458ac3640c7d13711d3338dc509f10df2c52620e0b7c2e2a72608fb52b981b6191765ffe4e675c6a7896c0f026598a3b156f1777b781b6ee688ccced77b95b61ff54b1bf492cf732b9c7a8212b18b5c899929acadc622069c6b4b905add8de54a2332436b5e6f6e16d572ffe46fbb76067e1c67c7bf58d449d2cecfebba5cd7f8246d6511cac17b106e7421c6c65e704a2496773fe86b937265cf27e81a37a3f4f5b21e47fe214e84a9163cc89781468b3e5868ac3414dc112f0fe159d909fd312382a8b76fe194c32bab360d9d694fae4a1c9639103556a7d283252bc922d889c0d5eb6cc657373bbb02119cc8527e6aff051d555ed12806f7b22a5df8bf13c5fd35d5095ac6af7e106b02d4b18dc4400d2404a3221e1f1c8027e722ebcea1d6271cb878d0e6b825f4e3a692fe7eca65c4287a63a3586810c3865cbd7fddf450f99"_hex; - r = false; // result = invalid + s = "507bc632e1a5a2f787b0befa375b322f1989d6dbf4254df8d6e37208c9bc6ce1991a8600abfbb36b9b8fb954b4e5fa134e66bb528d63cdd6c6b05be5844e80d63ebb1503580997c817eecfe7fec54392614f79e2a3c27878e7261b78b433cff39c9a4805502aba917955da4c7bb816a5e636300d75d47b93ca0676ca35ddd15e6d562f8d376f3b60ab5e88290a2a2e0d884392921416d3405e3a3ce3e7e4e6e549c1361be042d060b0a6d5b418369509cd63dfc538fa648083574937ac49ae02246c2a0aabbd6a710f7826bf06dc16e47572e0ed990f3d2392cefb5c6e7eb4b6cdcfa39b08496f172481e20b4cd0c1d529d98e411e0025fa6aa3caa9446a6c9f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4296,8 +4308,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6823574bd9fdd7e59ced33e5660e9b5cdc90417fc350cb4535d78dda72c07ce81ac1aee37b90a85ae15f8f59be9461e846a45bdaf3e5f5868b83d1c9465b080d5bffeb933aa9341b6d508b059cfd2e62dad31f35d7fe9058bbe65024d0f73d43a3450eaa707957fc452a69ab9a8ecbb8ba002c870950ebefb06fbd9399bd08d64f72dfb4b2d3dbf662daf7c2c1dd8c3c445e1402e2009b47fd92c3a23864a495037b7f2fbc3adf19355f171e2a9f65f5a3a2c45b131e5398c434ac6daff018e5b5e44b9cf1564cdbab39f407a334fe1f05ecf84f49cfee88836d1068012b4fac6b50f85f8b1a8c37a333028e38f719ee6445a9fcdf7bc0fabaeff32dea7e45d6e1c12003cec8dc5680be584ef2cb478b9988fd7484e8d374d825a95efa5163309eebaf962d0b8ead00b4b9e4791dd5c6bd26c085c96462f2e4d19cfef3a0a97cfdbceb8c6ac2b45aac1df4be4e6c775021c6730e88f86babd96bddeb0e36d0fc573c9ea9346d6a93bd096c8fce248b93dbb0ad00596788cfa6fc0635fc0d0778"_hex; - r = false; // result = invalid + s = "21d55371d842235e234aeaba3f33e6d7f5fea10b7940939250a07d8938e70f073d1514f54bf9e5bca902190f1149955e3e6251c98e297576f726e2c982969317ec7416c7df93b9340c879dd167431153bd64d3010456d40dee836d71d405bd3127f90a6cb61d837b4355d30ddd1ddaafa5e4204815221f562d10684a6881d7bca66b1e462b8a1b3c889e916c848c4f88b179bfb76debb18208946d40f464f9e5e385cefa1c9065118b104f216f4ac22abbf0bda8583870bfbcc339ccd6a0da7bc46338e90dbb90964100c47dc3af08ead7978e39dd7369084f5f9f941a3a2d7d1fad0dd4b60658b5931296d6357e28fca5fc8d84fee546e1f06e07efcf8f1e4e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4307,8 +4319,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "90954e5cdd1888a510092205c3f66fa1cc9ebe82b14e80e0353ffd417876c69701801153402aaba503e98fe9020f54f717b0af8968fc2524a3081e709974ca8001dd93e52fe0d1782e3eba03a51d260582e4222937252e454ae7d5ac8ede7a4888ff826547350c594186126efac622a44e9731620a57cb73de7e29bbfd727c2dabb6a5f6cf3eb0dbe072990a8b8ead67b8a719e5734d7f4d96fd674c404491becb4b3ecddab7f872afa3326b7e18d47d3332f654793323e13b4d9d2f77871c7ab50ac4d76f57fce635da6656b1e09b3571b8e841835023b2226a4ba8cd0b95588b0827bdd4b6f45fd183100d327777c2bdc0a0d55f0e4e1760cdfa7a2b701f06c0c5800fb49bd48d57a077ac90f1726ce2ead834fa1bdf735b13fc234a07685537a5eb01ec44ff8dcf086d2de02007981bd2338bb2b455a1379d72ca8a552bab119692b9ae1f2851ae5e838c33d1d2255114cb3223edc18512cd41057b71c4185022c4765049089836d62020905faf3eb92ba80dd91db64e51a75dd4f206c140"_hex; - r = false; // result = invalid + s = "8c76ad15a8de757cfe122ab8759991a1374236f7bedc12495201053b9adf0042ee64665abc4b9485a52818ebb2f5e0dba6d667cc1aae89163fbe0db066b80011f6342ebc22bb3decf96a3901e0fbc44ba79cb17adc811c15bef290026bd9e33ef69bc5717f2c774b208cbfbe88f0e2097595e6cef35745a512690593ac1f0799655a73318e8bf1e1403e42c29622b09d0000f9756ba9a0fc44692e7f86e6be28467cefb8f95aff478965226205ea082848dc503fa0f16b4cb636b916de0e9b0e91216a72950a65855692d1595b5fc9bb55a48cf584048317aa10b63acd505a45537c751c4e898aaff55f0e4e75570b36babc13ca158dc7b009fc4901ed407015"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4318,8 +4330,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "058742fca1521993d7e3bf04b3369a8cbdd505da63f7684ba9279dc8db6841342664a5d780dab0b87cde7b2dea6a0fe77ec1b723a47592ea932f895faf2d1e8dd8ab16228942a217db65d51c5cd29c05590ce9ddbf6f19111c9092e60e48ac5ff720e0f76cce93c6de41023033a902be28cd5c0203d06f589e7b63431dd741a3e227709e73793d0e2bbe0fd22dfbbbc1bfd8343dbdb8ec3614d771f1c58e107b567b81105546a3b2b54d3b56f8c5785d50f3cac892e03f7f879f22c80c4cef3faceb1038234e6bcdf2382d8565d3ef3ed668b05c64e08e0c7bec759ad77c6178161652b95142ff1bb1b3ef0d1738e444082f113a448e4aa7d3bd182ef8caaf6e2d07448ef5ca7cf7933690040d6d41b5d19378f41bb9cc7e659251bb63444c3983377bb01a176828dae9b255885bc0d872d33a0a257940f3b30b352986f201646efeec10796c6bc43031813f33634b6450a2d9a9d3d96ea95a6660caba876a0f311e4b083b25e2fa9f69e405e59fe81d337ef0b27996e76c816bfa84929b8a73"_hex; - r = false; // result = invalid + s = "8322390ab9d742c87b5b105f63940d9e4ecc613c12a921798c2b2a00c1e5c6f6fa38b33339c3fa762487629bd589cda879977e257de58a0d3ad4eb9bee9e3d41c57ababe557d0f3f8bef808dd7d5666b8a635b1a1d08a94bd24ddf10db4d6a366c3ed7a6891b7878328ae5d928a6a14bb425c4c1e917044a08ae0cc679b646be53177962bf04f19a345428f7a0c877f5749264edbf0835cec2f5aa66b7a1ae9b5e8db22748bb8b8f37636de4d02c9edc5dd182fe1f3c227d7fff6111005326ca3fd693248759fcd56a356068d3be8f78ab03d484a363fba9a13491ff5752bb263db2d905a90c556c8e5b12315b577786e038c989d13ded424adef4932c87a5ea"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4329,8 +4341,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "bcf07d322c37a507d2288f6a079b037a6cfb1b5bbbe07de90c9a13b00d400f94a03c8101a2f9a4ea258e3d8ce167fd40e48e5ac42be2095302071f23596474e22d2b9fc20800c2cfceb3b92ba847717eeeb030e4304a5e1138976166ffd83467ae7790bcc4d0e1d093ff09b41b62cd389a612ff3b9204af9a24efee6ced39de96bffb1ad3636d7aba49f8deda056735afc848381546d9c2aeb0a72ed2602b4a619ab9a534186f8bbf5924618b49cbc35bb021e575c68ce5ccd886ad2d0c968292f2dcdd411826470b34717fc2853f52e10307136add9b68f7c79c56d992a08b461418781ce66311f8bc37abbb1dbd3551f924be3b1edfa7340267303cb48de616e7cfde59111dd1f91592f268b20581fd1936d8b3ace85cdf3e0d4cf55e170ac99de5bf5df69b851024858f8f3bcebf3f45d7831ccf72016877ac59ef49ed5d81112a2fbd9f97e40ff1e6f4cb42511dc246a75af9fff33bcde3ba9dfa3249a8df3c8429e700c1b3d701914802b5edebe909ef86b8f57b556da3b1f4e675711d9"_hex; - r = false; // result = invalid + s = "24c8587350927113af79616a76bc5aee56e9b580452eec608dc4b25e8ae4101244bc456368e14b1cb595aee9c1d05bfd169981d2f5819023c43fcbb857b5feb7f11e2e3469cb1d53bfe66313cf662057b84b8f9fc1743547d848d24d1678d14bf44fd29b2c10b24da5f42b93534dd535505415c32f05e4078a8d31461bf42f2e465ab90d33c24f2ffc4cf430253f50478fff57dc1eb91debf89e0fac9c382f8acefd9f1dd2f2fa2203dddfa56fb275309bed0671f623f24927abd562b8a4cadec561a530f04dd58863458b802e8fe5fa57cb22708b700be9b250a6163b6e54bc9921944c9a8d468d02981b7fc41b9c6ef92fd705b24da3cce58a90b6b112dcfa"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4340,8 +4352,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7c6c491e6fe9fd16192b3baf32127f4f9f7dc21b1d2950e67006453f472cf4ba3fd7bcd7cf6f4fbff726b4d757bba414e1a848df8759a0ed67ac8275962c5e812a0e5ee123fc87a0bfbd9428e9f5fb0b484bc0e28b507606a71a5df14a02e968bef67e1a55f66bf54260e5563f8cb14d98ee2567a7653ab93050bc443f6cd857ad4e26e129350cf283ff7c6141ed0a5c5f9034c5e3a4a740ec1e80017c9f2806e87eb946fe7c2e322091632746788d9763a2c11563f871cdf0917ffbcaefa858e03503ea4ac73c6491ae12e9e32f67f217f903f6cff2b3f1beaea6d2fe4aa82dba43d07fc1cadf48f4891acdaf8e622edb0c8d7e0eb745e02f39e69efd6803105fc8413f16e891113272b1c3800b336867a1a303cf8b80527611fa2328c444d293287b226ca32172af6aa79f191811dcce404f5cfda1084e8b8cc8f26c875213ee3ff2d758f58db2e7eac571ab62d4095283083e5287e61623ea9b01be7b2ad31e887146f73ef3a1d70e86428b33db66de0a0e12d9b6960c00d9048b266958ac"_hex; - r = false; // result = invalid + s = "58b5bdce097aa778d5232055b695fe11a01fd06dd2c76f6c4ddbd89b28d823a6dde045d541bf3baa04651fede28dd5bff79719e0310b285c4b5ef39f426ca9eb9d20b759b6455c8ca94b08f14e8b237429cc93e6cfdc8d5f9590ab9eb1a05243a6205cf26323dc5b4c1ea1f815c3d26e9a4d5f58e99b06e213117f6ef7fce8ecd63e661381aafcf2134c0cefe49b9432ee68e9e366d7ef85ac82befedc5c7476befcefcd7a6ca7f0267585576680c6ac901cb4ef12c3abd319f74183c4b5d852e898a955628775b941f91594cc00d281b3e69b034765077e967f9282a1bc16043a162ef1fd193921a3da4e4974cb63bdaa7745278175ac3183976b4bf1534f7a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4351,8 +4363,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "43d99d627869bb5cb798be4db332583afc162875ef4200b10b0f019cb186a44894b511fb674ee02f4adb6e2d529ed86812e559797a7d60512747cc6a135dd708bc12f1acc01aaa6f6584a8f9c02351e23b77bdd2999b79660ee956e9bac5b98647068c0c6e1c5c5907f712b6993050abc872a217699ad5468cb420b90f5d74812e9d9af4e5a200212c01469799de9669f28d7b6e9726518a2c4fbe5fd1ec5ad66a1d472e8710fc5559b9e75d3aa625825886e9045c2c8019be254d2f11d3a55b9a3fb87f083a009a7a6634198fb9f4e6521d2706e3192e3e669fe201e60bd80574b5e8f66e8ea08740f3b0f0f3cb78ad90ddc95843e42bf4baac25adb2b57f667618ba7bd1c10b00c5ec14dfc3ff1f8f5c036ca7aa149f71e7560f1b1490baefb2b7d656fd6ed6e9115b9b59167a304ab7383e091c57f57e3bcf1ff57e3a4b99192b91f4297abbe9a5d94b6bac7fbc9a5bdb64657949ff0040ad276e2d9de21df2c02d68929a6c366ba3d0514b8b50ebb3224ca32ff88511d35e5ac6e51a28ca"_hex; - r = false; // result = invalid + s = "5498ddd6aa8ec6434d4d772df218db7724d4df79dbaac872d187a9cf58bfc62b194c263660e663b2d50583dfb1e232a6a855c3be31a7297ca1c801b065a13871686f1e379f50935f754243dabea67176fc4d92351e9bf1e3c9655b5de16d725f0e925d554d215bccd55020e749afb612420d30ac95c5723855e2414c9d7bc8d2a9ddf33787c521888852e1946bf866411f72ebaad3ae730ffd13648fd8e5464036e800064472806ba78a0ef8a10c1739fd512cb2913d91325cad3fae38a922c3f0e5482781bfaee6e097e09bdcc6eb67772ff79d358079e522f9c8f32fe5f8b227f126803f0e78554c513bc0316ea267b51aaaf17f1dca423f1e0996dbcdc6bd"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4362,8 +4374,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "544f8bc68d5fe49ca8188815dabf1c434ac7379a3796c5c78fea5fd2a9e36a71d50a194724f65cdd9c9562fbebd44f5ae3a690946fb6e528554f51353ccdc899c0c3f635bd83afd3429ea7cccef96f69cd6de7ff58ba4d22ba032bd0a113dbebaa780f149a47203a65973c27f0bf00c168382f2311de1e900253418c77d521d5c5838d4fedf6c3255d8c05051c396f0f6705cd511a94b19a96b043e3c4f95422cdce64c34767ff6373199ae1d3168b62ebc353b8c7e044f4a1ac36b1f692183729f8865d24966101ef047422c284cd9dae44f968b209cb1dc11c60cbe2880c3745862bc1c64899480ffd3229a551fa6e765f4c01731a978a1e2722f1fa0d7f235ef114523756848816cba51a561744355d5d484119faffb953f5ee9b32be692a09ae40bdd8860687197544c39535b196766e69ac8a05dc40c733a0d906d0f7735014810621a6d83a9e6234e6d2d9dc7b1417f8ff782c8f7c44c713dc9fe30757ff95cbcbd159f80fdfb86eae00bb8565d497aedbf3c4233c616ea852b60b199e"_hex; - r = false; // result = invalid + s = "3b2299256cea4f270aa108ace666ff3a44b693c27fe72e21e3f0443956dc277b1f24ce72a48d512d7545825db729983bdfe4ff9fb0ecc6f0893a9d326d39a46e7040f8891ced1174d2abd7acc27f79781501c3a972d562f0b5c57a3ff2ec703100b7fad948c7e46494cabc1955dea0e8734ceb47239b915476b969f317a9953653e0e5d4820bb28a5c81b9a4f1d0f18479096a60b53d0808acdd4efcf16cdc4ed82b69b33d6e5e5261347e821c2e366f2826fd81e8f282840495f6f2613be6b9f1efa989d912b86257d5449c88f7b3cdb39c7bee6d411187a0f2cb83115e5cf3a187d9cbbbbffd9da0a62780b265c2a5a33465abf90e41550f8b7f62747f5252"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4373,8 +4385,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "866c67760ebdc192e302d47ddb40a927392833cf3a3a3b9c33923600fa08443da118b47db980ea74bb73518382723e375fcd9baa773f3b022d37a4b0fdfc817edf2a4d9e71987e034cb5cd80caeb97881abc45e8e6b965941dab478d17039d98c989178daa541507b84df445655f1171431da75bbac810729f973cf8f3606529c89b036e046ad7265e4e15c7f18b319a3c870cbfb7953e069794978aeabd9c20d3b8a3b9a44b68b620196eb1817d70162b22078fc4a63921a7f35c5500de7ec0aefa27d93282ce80d2ccd42c2d3ef1212c10a833582b42be78c6e866e887b8ee329b883cb08f3e374ec5064f7d1b760b717976761a44eed64d12021e2fd58c9640398e616ad96ab2e56ac95e32421f7c577e00c35b1fc95f1825a0214cb49047ede981a0db76c18e7ef8a9628702ddb4e9d5dcfe55da36857c497b44d182761a7c185fff68f136846c698b5dc0753956209c2c0e0d247b815d711d49683e9386387e82f6b4ca232b653c365485efafa988e799ce681f3c7c37275391e56a3233"_hex; - r = false; // result = invalid + s = "6224ef796a605bb30a142e4671549288d3ce9a7ca6ce58ef79d08b25e95a81143b99c84efc7a0b92885029752b8bc1bab7fc56048c19d50ca21e8c009024dc9dac2746a9b961db242a1454f0df944bbbbe28a9598878f9392746798aa1db8c69c6d36af64726704f9252ad71e655a02adb6f3e8453ad59a0a45ecd1ea512eedab7867fc50b508c49caa7399f343097f76b2361fb7ac2544f6ab1b745965a8d7e83bb9a1d39a21fa6b4c14e9a800983f5c76fd8de81fcce99f4926e48bdaaaabbe09528a203f5e76dc19982021618f231e37758e8e729968c267390fdd759e0ba88c9492e4ae0ae7512ea389bfc6b64d90eee12c012fe278da80a915da794f6e0"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4384,8 +4396,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0767adfd75befa190f623ce2a00fd6c0dd2a8f1e53456489f8329a2ff6dfae00ec4dbd3156cb278c41c197bc80b260c9b8332d5f0d39fdeed33c772c45c17d3594bc37349a31a9ae58b4426860036680546c66d10d3d539ab377c2fd3ae25de99476f94187b895ef9384c7515aaf9b8d580eed7ed9273354eaba4ab57e4bc9b7b48529072dc691fd7e1a51a4164a795e2a3ccb2520cab25b8e78fa7ecfb057b05e8c056fbd407895e83cad14b6840ca773d6e6c8f2c3e7e34d77e3f746351562829a81e04450076c144176bf52c42189336313a71924964bdd34b207c9e69c424030e15e9f2daa50b4f162d2c872828606b12d71cc845e38149d76ce72cd11c33c46e837094b73905534cbe6ea9d9f84f74e9125a07c23dc32ff7535177eed47f979e7d98f62864ced2545a5e994eccce3c9ebab7c746f9a79eca3fa8523cafbe69b5fcadeafe8ccd00d91c1b0f12fc2868aeb19ba57863bea62391235eb35fa7924ba74b73bbd0929aa33862419982fae0389352840833e4c8442449a392105"_hex; - r = false; // result = invalid + s = "95ddc932d45b05c0a1f4c2bbf30ec6aba93ee9ae560b4a9c124c6be307cf930b754b6b7b1c8fff23c43c2354b847d37073214ca3c95d27e0551aa45ca36e873122c109c0067df39797563168e5e6cd8d20e972ad364a6c3f162415595ae273574b7b35807072b71a8b17afd06bc26d3ab8374df32ece1da2ceb9daa582ac11fdd9246d162fe4830846d08fcec90234ffd9622e4db5576d86fc4b913882da7bc5b1779b2acc0261cf434cace117090546d86dbf5056d0453fc003ce9c3918a015086583d266602403353f0c62eaff4ef4f5697f6e682163277818af6f487600ac326c76f34cdf49654d3eebc7913c0f12a669fb6bcdc809b2621d7ff5050da3d6"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4395,8 +4407,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "1baf2ccfd98c3c37b60101bc5c8f3ef871937f3e4cd7a21fd765023f03437c3179e6fc9715d6ae00425c7838e5a5eaaf1effe9f7b591f588667a596c539326e8b7d8765d78bec33e057a25067209dd26e7a9d149b0e0a3ba13d7af57c436ab9bebd871a2cf4f88b26da4ac30d6aeed5e67b871eca23c2dc34d0685a7bb9ece53ec9e99228c0561578f39c269cdf19e8c98cbaa2731ba1faa1008fce7df30a1e5f26beabf6cf0716faafb81d1de203a1aae8f6ebab2b123697838b3c0896786fee11e2953667900a7ebd359bb81b340c0b9e4353af1091b008b5d5f8ecb64d75c574193aaf772be64ed106b374cb842ad62adf9c98461327f254f866bc28290b425a3ec9d8e17e126fe930d58fab0a5985d7844d85ada69803bc29026e5be9c9a9bfba5e4ae00c91afcd2901bfa399e459ba87bdef0577366b6a546b91a8bd858e33a3ead31ee07405199b9638f09848af52b21092a5690719c75b28f12b983712b2c79035eb727e928e81df39fec2d939510927e749c4833c02c12139f19447e"_hex; - r = false; // result = invalid + s = "1a9f00a0a13bb63a9a2b98a93a53cead0f0d0f0befcf19404e838996ea86c67919611edf2962f621480741ae34eec18e6c87b5f40b2115f81e73bd1ba59dd32ad41534d143bd82f982f4ed60d84dea28d77ec78dd6301145c63a0778e465e973e963502cf1c9a21ff5a84f5f4a673d81a9f74906fa0f28b81fd4c1be7eba5974266802149a616d5b7b9bfdbf51aaa9ab3051082a0483b33e7b43b52f86bbcb33f07783e3dcc3ade6c70acde471613b6d7863c4dd091017ca9f0d9fbf7405fcc7e7a012f38404fb0c3ce03b2e601611fcbffa985535c238b5a1d529ba092a3c41c8c255da68eab9e84a7b3f6f29eca3b52bb4b977b6c5e1375b691f6ea413b557"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4406,8 +4418,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c5dba54644047fe0d229d54710c0ed4f226380e4d1ac8aa865f3e8060ff6c5b3decff0836898d75b59d6e7a6bff092ced3782a8d46af8f3861eee72045a297b25edb181d1ef69c3ae0e69da6c04fc9286e2f919a531c44af2b2cab59a815f3c02f67a1a2d0b5ac5dc1d8a1fc7f6fd07ef6e3e5415987523d06a9a6a46a6e71f8892756fb18ad6307c22cf97075f6e3abe18992b55925d26dd2fd8227f34f992358736f22ec94ddf9b1401e901931e035fabe04abde7fc3e1b3aae5ea51d5e8c1e4cd6ae0adae1f0840a2c990109bd1fd39d6ad66cdf56b9759067c10d743f39ddf608c8fc7792c753cbadcf5ae6088bcb485c851025c5d7d0f28b099977d619b5b78c3ac9ae15c1fec85ce2ade0743c11bf7709e6e48823a9371e380a9fd0c06f2f7abf6177ebe017ae8d9c1008f04b93a8588848dc963cdcdc26ff6275a7680dc0e5039414d746decb067d058f767291cd1a0ea62850496460f75540ddda51171db09e45098833e2d67e53bb6f3ff7da92b48191c0d7b4b3161bec990359001"_hex; - r = false; // result = invalid + s = "0f7e36a02137a094719570754763ccf4cbfe21a05b95634fffe0cf0cb46210d379b5e7dda7ad815081d12dc43452e35a89b1fb715e4a507b364da2b73b3fdf91ecf1b04a6aa3ab9b90718660291478e6ac0cbd29c18d4beda2b0bfeb53979facf2e5d8ef1bed5a36686cb034082feff665686c41572441a673e7426a89866f65529de9fecfa32a2cd1c7098e7e7bcf2a720d46cebf23988c259dc880a3acf8e1b17f1ba8de6e8e9cfb8af2b6398f7541d45162438c3f14c308dc6d778bc91106c7d48332d8968fb083bdadf1edcba30638853e5bf1398d61bb8eb6b61363cdd859ce4f6160f7e819758afa067c612be054b4c0e2567fe39a81550001cfa081d3"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4417,8 +4429,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "1a9716b7cd0e7d9b2c348076459a9384544de7d52a597fda1d6227247028e21b910472a11e6f3924118a364936c895eb4c3ff4cc4064c43175a78f0b4de4464fa32c14c3593af96f262ddf302abcf7e6756b2a79b821dbb195640e8d30ce57d216b178a4a34415dad08f4cca150e39a901aa478d3f5fe4d4ab351d41a66df0e0677780f84becb4ba59655e211ee6f421685cd42616fbba2c7cc8cef92508b022e525195476fcff4357b79f292ef7e4fc754de490400364ff0969946c9c76366f17cc985aabe0fe6011e734d9dbfe6501a13dbb60daa4c78673a25d84565a1e13b7e981157576b8bd3e33ba750c9bb7b5eccc8f8fffc4ed817e2444425bb5b5d42a5d702d8b0cc093a57336d4becafcee90a65a35ef4800e0e0a5fab2018b1bb5ea153ca23ec59ba40d05b8a3df4cf807d934483fb0d8a2e7c174eb8c3f2efa7f82ac8a047d0b700134eac76a469d6f40e87d2ca2408642218f47e4359e697c62355813e7df722ef622659784406eb5ea26c1fe3c5b3e917b13a12363b20c5d17"_hex; - r = false; // result = invalid + s = "0571ed711f75daa6e7c7b65645cc10ad040b37fcc3230d4e8655b9b40cbac0e1c5e7d9ddf18f7995bb2a630235f7959791b1bc21c72ccd88ee50b5136472fe63c13a4a391452782b673b90fd6e768385e9f09023ed975c9fd5187b86d0d147418396a971faba4c5d968b29df04a28f90f0a2eb89a0777dedb38e4f41cb1c373f88906da1218a80b47334ed4e5cc0bfd1a93d2ddc5141b243bb002dcc513d98e68d512728204bd0d0d9ea5046ca21bd6d32169b69ba8b1f829fdbc4b4c931d0d29ca72e4fc2d92a74d2b5e1569a222f4b8c93c6cac09c67c08ab08fa08b1fe9ba78fd016aec186cf2f9443b8a3af242019a4888839f8c6021f26476e32300af4c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4428,8 +4440,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "191593fff20301e6587a3e57b9228b77260edae7e376416eb8fd4d80b31a4e7326d0e59f3ad3e178e84936c66501a8fafe8f2f4c9e4ba138cd63991342eb5be66c4b6231e995d6dab798efe105f7133db0cfdebe8862b21c447a2acfa9626e4307a0c7ae0fc7f4de3c78f9ec480dc3756c4d2b8c2d748bce4a7865fcdfa5753d72f2b84b609af4c0039425a0b80ee4ebac04bece2e11725f9f766f93917f3822c94c8a186f4ff7855ed54da3a959ccbab54b7ec2a3f41073d5254a06ddd8a240a997e391b06b083dc4d9b3fe7feef65453f356c84492d3842e957ab113897ed874ae9c5ce061be8fac4da3228c0fddb7cabc89c8a2edbb3a1b3f78a8cb41810863f9b1ab8e0e2a6a2782045002d4bd07cbf0c6ce589dddac5878599be97cec0c04dc42594e2366493919c6306d1b2abb1c1279daaf85c90be4904b93064acc73a7d59eff8191e3d4d9e3a763dfdcbaea492741e2e17707285a9ab8d9aaf8d2d95cb4ee0bf1402297917ab025cbae8a201099c4c06ea7eaf0c6808d142057797b"_hex; - r = false; // result = invalid + s = "054582c86eb3bac23c330ebe275884ec6c740b477ff69795681bbd88d9da5369ee5d15fa2dd64910947cc4b3a713520716ac747834058f50852233fff1465b4c582ddfa2411ee43d26abe6a26aedd5bb79384b44a45d24b1a374cc9d193c3686fcf7290569173b07b5a698ca75653eb83ce3feecc40767680f6253fbd0d7151b42c82ed7126e6a2d73cd1c64378294932eb790f5997746af7cf87dc5292058c2ae575f5929426fefe7d78867b725fdf6cf2e40c052b69fd8104fec8c017561737e02651aee89c11327f866875dba4cc6a6e69a5f2ab612b4e72671c8206d22c2a9d69dbf1dd29eaf06745bf2267ec2cd89552338136a8981da13b4223d79abe1"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4439,8 +4451,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "105aa4e5e08da8705bd94fda6efaecf22363716f59ec83d0d4fe1a40160276a6cbbaf1fbf3501ae445be06c9c04b541caf22b58357404eeed16093e3d295391732dbbc3eec7589f80c02a5f01dd2b371197b46ec2e45723f086d6e4a72efa11a609c7e528b04a519afee2d01453d8504fe4e039dea8f5fc1035918829b59940eb97f428910186d6569af61371736f3c3aa65913b4b0a585494d386cf83bf6eef442f9e763fa1f205e49a80c35c7906264d5d07012147b557d0f8f5728d1d533b578d0a8294defe7174c3838289ff2505dda63ca7a1d261b754555572fae41db05ea1f3994d4469d490fd9d251d4b53df0a7ee9f091657a717368c4275e3c3e1a2cfb05cb64cf22d1e7d9bcabd4c91da37aa73a05a2f2092b218c081217456aa69962d5660cda5393408cdf1d2c7fd1968bd1d3232bc5fb90041dbe707b63f082c8ee743cf3102792d4b1cc9650d5d9f6004a31b3b32e9613d3fabd94395b1a01026a33fe3a42db19100d3c0eda29b849ce420e4ac0c71fb9a610c730f27bb026"_hex; - r = false; // result = invalid + s = "67ba3a10105822c5f34c661cf7765419ebe52142b5ee9358674a174abf5981fb845d4877315a6a5f856c6a30992f520bf3e979a7169adf0e1666457905d49b91481b641158817cf2ee2b8725bee0d7a659777a128fc7509d3f0fad7a53b04a77339074401cc306328d7fca7876b06a54a2fb46edb4d763598e5fe21b9818c1d61ece98a4fdbc0376fa2f9b3c50217f576124f292d6032234a0a6e34835a8480b25a5254b9718c665911aec227c0f432d2dfdf0a6aae40030a05d3c03a02e54507ce0652cab324a2b29814451c985be5f4dfa2546e5b310e670f9fa510c24352e534d3c46beb8767224d90ca8dfe1ac534a5a8b80fffd5704caed8d5180adcd3b"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4450,8 +4462,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "396b9f59618e6b824e1ebc57b8f18a133b49d96bd3fa39c66bc4a206e79ee7984013a324dc41d00bc469285e8d255dacd178f106c9a37f11344e21a24275417ac29f2dbe14377d0feac8061fc24d5b178762700c60d6cb0a9d3896961daadddd11712c2c006eecf154b5b0a9fa5786106e8c12cea3e3968c42a165f640fa0bcd5bbb3734c55f57d14506169d7f805a4ec4e055f5ab2f1c0b0968b396119e2d64d8eb81cd0ab78e09790e33ae752e21b1b64dd5aca05259aba1c2014b390e84ff25f2dae3cc198a7ba5d9e4b104ac6a5466e1270a1631e6ffe777860eb63120f1fe8b3422a467a083463a133ba9db8bd18978ec559676f969e5e466ff2a8f0998bab5bde97bd4b759eb3b14b8171f0f5c19a2d590a344284b69d0b08729ed67824665701c360fabc9a48cca7591e8bc3b2300f1c76e4c6c13002f53b2fd5d45da382a63c1073cc6f4c43fd06bfd4d70104c4d5e2c74ae18a5dea531f5a6c2e9e23c381b1fb0fa1fab4fc94d662db842ff202d55f8cb0732628c6f15f824aab121"_hex; - r = false; // result = invalid + s = "8eccc4b661d66f3c8b4e26791927ac035e2a633b872c60fc006324886d45a88ab29b9bff8075701e61cdfb7d85b3f6d41bb78ae12d2d40b046f1f7bc6ba11cda5eafacf3002457aa6951dd7e574b6ccc7e0621f6e4110336003ac2f368b50969dc45370ed7a673f9b8cfaef3c40a6814afc2ab4ae6eeb8749e8d0230b38658c17fd44aaa9ff65773d001430d0963167fbd08fc72343b1ff40920741423439ee3795c036c912e53f9e75b2d255160e67cac99ccc2db7faa8b488e7f1f56ae3bd0fa6a277b9de387651debe4e16ef29215054d9565ac23a3830ce37b326a4eb5c6cb5db7a8cd961f6d7d7497ac14aa459b3b64f2300da1f95b42687d2126e60d8b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4461,8 +4473,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "82d26da118ac4ce272ad266f402323cfc25d45c885d8a8880e04a6ef52d7de7971b00ea0adb51768b31348f590bda5e41a8fff36939b59cd0012eccf474552ccbe2308db3b3910ea4856a290babe54fbdb1f482f524d3fe81d1037cccb5dfb6a570c898680f19af007abec62fa233f9396279d0c6f9e8f9bf87f7a7e088f9193febca5316f0f10e139fd010de1a37173ee90d2b35467b768625dc59ac028505b885934e55c2bda0a97f3def80a2e26f14a4f2f9ea4fffab807eb2670aedfc85c2f95f9898f7a07dc2295c4f91ce2b96134e92aa9e053dfc2cc012513e39788a6f0af4e14ca6eded4e8e7befa85d69e9c45b98ef9bf0a067e9fe8ba29314b2be334f4a5438ae4bae6ee85b6b9086bd3bc13838ad27f033208c834ddd3f48fcd9c556bd6a6ebd6ca625372ef84f6bd44dd0c24c0184b3815e893952bbc42fb790b472e89beb93338dfc23198551ac7257ccf7ad1ddd776c7eb620dd6e6d341dd0693dcd91cef175f1b3165cd7d99a2623c7607dec9d0eacc0b6c487ee1f90e4236"_hex; - r = false; // result = invalid + s = "574192671e303ee2fa10bb741b24c8632d520a54dbc24184dd70ddae468e71971ead18932c8b74cd6e27b13014a2ea96f2074a9fbdaf432153f408118306922d111e861ff91f549e8e669fbda98c4975a60d36019b2c4bd25ee2fee0e319c56be4554f5334edf152f911a2317123aac2ff0d11359e43189223673e4b4b613cf070841364470b08f5390951e8d9c6f8c3422f79e3bf4863b2e4ae694d63d57f77620511eb308c3fb454270a4d2190c83828bec4c0fe2283e0d9fe945f6aefe7b806151caf38bbc963a40a97d92b8f71428fe89e8f468509f34b2cb35542fa717e5feaa6cf4cd6c8ad87d8921d5b62d97fdd58642a5d8d782c87f8f6a53a9aaefc"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4472,8 +4484,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "02cfa2d1774246a4fa94a7f9142ac84270792fba20b09a47f0ddf702a41e671dda6690451937b0063ce2797c2146eb68d2e84c87211cd3f9e8d169579e88e522c98469ba814c5a0ee2f0f42386d44e07c8d447b77b04fe3799db3f2d7d20843027408a4f1f08a0eebdfec3c3ef81e8d9b4fec722a5782b2e2e920cb60b0cb8a28e7ab9b8c82ebf6dc25d439bdce586f4dbf41b01a2f777ddefb13fcd0e268aed975d5aa986cfff0403b0bc260bdbba4db2b51bf1f0dd88c54b0a7a6bcbf3ebc8840e751c6dbe405d6cbf94f12820c536700ba940a70a4ca8aea4c7690e33ab09c0d1fab7a962167e5a8fc51e4b07c82312b0c97e07d42bb2e2abdbb57442e9a8520b0085af7f3168077a842195a4e19c7fca15f2e7471caebfa80f949528d81b619632fb3345bb7bbccc825ae8bd20fe34474b70b7420fdc17317f711495040cbaf5ae21d7cb70b47a2997b794de3d9bf805d1dcb8104b50ea69429f3861e61b1a0dbeff7a03432f98a8d537a03b37ac38d9838a7c6a7ed0977f29f96b858ad0"_hex; - r = false; // result = invalid + s = "90bc6a2164881905a53cf42cd42753f61a47cf4703d4658343dbcc30b46f97d8656ff1ac6c395e1a36f27562d7c23ae859239c1086b1a6473eb4f57d9e0d47f626f8de059084f681032e6fdea27590a08d5e57f06adc0b8960b640d156b31047d26180f1a9c510dcdb316948ebddade72ae3c8d9d6fe49642394f30951a614d03d37c5ea640f0f72435b49a0d382b93121603a424fc84307bea44e0ab83f25389c639eaa2614819d6039c721bd622b86822ceaba916ce302d2be47f38d4ef37e5ce40c3771cea37bbb200cc64f4180199a7e6aa2863e0fa8355b1b456f748fd1cebee88972fc17d9fd77fe9bf8bb7f2ca4299843434b3ed24910c5e2abff7c42"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4483,8 +4495,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "5efc66fac14f6c109e9a2e219bd3852b28cfaca26f3c26fc8777959dfea55c738c5c086e819377f8f4baceb66b4980de412c63fd5a1e329d13a14ffcfeaed1d89047dab579e243b3fd6b85f87069997aa7d07f71ef40250ae307b280f0db1c30a4a7c2411ef723746eab7045f973277a174068bb8bbbe69c0773ae9977a7f20e971d405bfa5f0f975b5acc17237e7341f0ead535ba863c61c155377c47d4bca280c6312c0fdcd76f52eabbca08b442e0eb629a44a0169c6c63e5e1c52cf7e2c61dd29abb9142fa7c83439306c2c1f6cdc3257ad63d0a57ee0d5f41341acc7f452519353aed51d739ea9153bea1f6f029bc4eca33ae0511db90df1bcc780b3ceb6edf3213b0b2e20530d26bb6ba112aa6e1363da049d669266a956fa36e890464399fbc43baf7c8fd3d47ec6db5e1029bf6e603b8e1cf5ed9ddf6536bd8d6a7648af7fde533bd51cd8f9a6cc28779163947dbfecbd6f50917839b900e3fa37274d97a2049daede1525c145bfd1660d4577caad7888f5c84867c6fff30ee8356de"_hex; - r = false; // result = invalid + s = "7b590ff6d404fec472f9231d39a4ecf4ce6b5e9438b8597c082e01bfdf0909c7aeed2268a3e568c49d9959352378840454f9119beccccc07b46ef2c1f143da08818c578c6b2f7acca6a85109c8acb719fe9f06282c25728d466b4f138a4b129de607de9ca3bc6180f4a2a45941416f8f5c60ea19c921f76047e0dd0738853c0b24c25476025ed4291beeec5db8e2c744795de8367530cd5f5d0876c3b99ed248cef9f83c54a9faa6565eb0662d6a126c15a5a4a55ae3433cdf37c6e8854563d2b9c06363a86f4a648951226a34c612c3e6b6b883c974d4d2a8e07d99f88fc4eba0a9ed28799c95fbb1404b3599578a164721121ee387b0509ed5e00b3df84033"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4494,8 +4506,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a4e7378d2aba9bc6cebe5c8e5603fac9bce6e3c193c1675df95ab30904a149ac3f3d7a1312429cd63eec085f7392051a2bb883c0e078af0bdf29464bac2268a8139074ec53330722e1482b935fb57956214c7445d8a778686b624944bbeee7a608dd15ed277ba378f4e2dea04b33103e437f94404a09517f4327c80530a1f183e046756c166e526aeef53565cfe34122ec23312bfaed429369ccf08f52c2351e102f439751f26ebbd5423f9efb3da3d3da0edfcfee3b9607fd77dbbcd7546ca4df84905fdfafb469bcbd78d6cfe6e420993740b64e0846b5c0026990224cf3b5e1c325326376c5d6f3d1971365ff31498089482c7df06dd92f7952e0472bfd81a52b0fcb2058f5abdc70bd7d55e2d843821083bf6e8d13b3c11cb4fa420fc90721f226526ee677a8eff890b664e2a5aa5735db7e752b6c06218a1fac315d6f1cd6120a30fc46e8ac220a1bf2e6e4cea5f352ceca4ed4c5675ebfe68ab15da158a22fd044459a4aa9673a5fc078e7851170faf652c9791b665ebf62e16891b54a"_hex; - r = false; // result = invalid + s = "8dd4b03ddf0c4f8c044fcfe70a0b97ec8d8f31b519d11d7e00702296ac731dac508e074024305a285fd32d93aa80b26e6c1d9bca4dcdf07dd141557f685c473f8a323492e9674ed28fc0f78f141418da63e24ff1d82a9e280d2b63819107190cf0018941a440291ef291fbca9616074efb977c2debe71b4609a6510138754d126d203ffd9c234ab334506bc2607eeb9a64e0600ae45e45b2ec398316f4ffbf405d985be94b23566f71b77679eb34dfd560bcf81d790dd1a30dbbef3b928d13534890d4640d47237b11c56a22401e8354b3327101cfe07be6da690d1b43df4486eb185728d7abdd8e4139b506821640a432a219b1787569cac4a870cf17a3dc28"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4505,8 +4517,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "616a47c86dc9e2423c5678dc0ddb74cd9555f63c219caaf182f82cc0b47fc5505afb0405a693c4b45ed670e009908b6316d22692d89798521b477d45c913cd31042b8a0a52626e1727bc36878d1303c52ead0cd69c0e9711e8c5693ca3fcadd48e2641cd73e40eaa26fb7de1aa89f54228fe67cef381f52a571c054ec1b815e37d071054b08280e940735569f452dfea10d86e742ee8db6c52c696699b99b730bcae337f093418598bc4b648276b6a7f65130bf8bfa1b2b2c7893e408a6eadee77bab6c28aecaa0e3a200da9fd4a7d06ab00c38e7c0cd7e41f64dc43526fa28e5d9779730b41e90b6366fa7fd10055d76c95cb694d07c3dda1776fcc774c2b42eced3c82c9327d6865ce3c76b6666770b625eb49d6b7df9fb1eaa4867a8b13ec1d15af66bb5c37ad8ffcb7b059ebd9f198fa9388d706efbb20d7bd6f1a2d6a192e55c5adbca41fbf1f27c9afe7f94775c123cfb7f1b13a980e86b812f5a8a848b9bc76472c52f31f556c02eeb4b71e388c7cdde33b22bf4a5ebe1e9e10a08afe"_hex; - r = false; // result = invalid + s = "3c6f82cff4559f83ea73f58e5303b37ac576572fb8f94041640e6bfc0d1e527f77af011e5b62f8e854ad052500439a9a6386ec01504a899860eba9f67d78badddf2e72fc92e0ecf25895a807431cb8381cf0bc5eb2fdb28f96340efbf7e54af7d1bf132b53dd9af5b8d8ae37fccddb32f4469b880bb01a84892cc43b394e94f82b22c454e4d308fdfd7e893369498aab4d42ff7048578a5e2d85893c16f8f12e2f8e7be48490fbc8f82c405d1ec3fe8bdc0243898c58dd4306796c40890fd467d024b033ba724c67a1119fb98da9d8c0c9d3673f9d45e3f40811fd223265c8e75fba57dffddd9ef6f94ba03552d18773d009ff142cf09e62cba6330916453f5b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4516,8 +4528,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a158c783c6141376270cf0ab8f4c08e5a4534b576786e0249fee264afee8d92558a2cc1224422a5b33f1d0661fbd2891f72edf381f9b52aad268dfe82effc96bbca66f4eecc7abf2449aa3fb858ef5606299af5d477242cf91e54edbe042a766cf108731ad6b7b038f28a3534360906272027d2a83ae32cc0ef53c1a89e1372c50edf86b2f9f09f06e49e1072a5260cba1528e8607b8336286fee545e325f34568bb2867f3344a7fd53729da935589671d6ce956462b4729f8a1c97aad3380852760f1c16dc0f9fe9b9f64e7e0317e242cd777ecba0bcda61c19d6e21ce54f007da49e2ef35c10a0bf42ed8c522e6bebab94eeb5557df840c23739751e7cd05f02c52306827c71e14b6f8771e2d3af07670a7956eef491cc26a512a32c3a21a547925406184fe55882303c17c8bc2392cd44a77f3723dfb4c24936dc66b66da9c72a3ed5346ac14d31f5efd227b87faee10e5cd88a1ac73f67e5e6527752d55a12490afee5f500c4b12a28e2ab4ecb8928aa5c889f8aa9696e9d5116f748da8f"_hex; - r = false; // result = invalid + s = "0f8deaf286c4e55b6e1a936abf3467b99ccda07cbabadec1798d81db7c720d6d8c278c14c494faa48a4def3bd4877b5054ae0dc7cfb6842b69ea1626b667ecb22dd8864a55b7d39205141c5068559874495738c6b9b756c0e46b69ef21ace864740e300c57d3dbbd356d992d08afd4f78d4b0813ba6ff629fc837e04032e6831f931823cc43076a69a91c3da38f76ae4ce127d11ee0aa6c436e68e3b4c496ef04f00778bad4b51807791e901000f6c75f81568b86fa1c606acd36661b1487a45cf36c2991a7bb87e7fc9da54c1f8a98b1ee0ecf26336c4a4088bdfdd7ee463ef3944100785ac16fdf77cbf8d6f6f578418495efecad9dd1c279be63fe5fe9319"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4527,8 +4539,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0f442a9b1d7aaebd50a48a9f81623bed9a6e57a9aafb22f8cb6e56f28086ab3609a8c13f9f676451271325d453f9e3b31c0310a38e71f91ae90899ff610bbf474138a9e610cbdeaa52985446d873695e35d1de1c777efe02eab419d8f0fd5184c850112bfc8a271307f2a9997155383a85b80ac99f6031d94639a6603fa842f731c4920c7841228441136cc0b07ae11c4a07c28b3305ad2cf6a8594ddb6fa357f17a9fd7a72635323265a9a5eab8029215d21f2b3d2ea41350d031c93bf8d3ecc314d6ed13ed0517e12df45ade2f7a3cbdf0b17b220e83031ee06f4a670b47c7d5bda77c0da7f3df5278882049582faa073667a6270467d8b4c28b5930856ff55400aa1c7f7fb52d838d5e9508b8fd4211e130dced03a6996b9afb860c066a56a6d3e1f1f7fde8179adebaeffb2b8bb91b83b7c1c56a6dada297497b8d8de0069e31ea452c0fc4f820d769c12a744d22ed110fd99476a4524caeba7f766e1fd0e0ee01e91825bb5913c0e2f87497427d2687d776e2ca91055e38fcb6be3f843b"_hex; - r = false; // result = invalid + s = "7b600cb582f01b2093b8c6836b1ea72a27bb54d167c3cd067de1b9f285e824f46b5712f0024cf4115e69bad8c6caec74742076dbe365acda52fd50368edb854d63020e9d698a4f1f753b4817b282acd37a625e88997c6d067f5f80e43c2f000008a57514989c8ddb6ac36e6ae15858f16a6436588e79391b7fe142be5b66cae553f4b998ea9ec2dc8712af14b9a2a7086631889501f77bb81ce8899dd57f75fb3cedf82394627a72fcf7e1fb5670edb260f71e5a67c502501e1531111978048cd181cd28ba37f20e3c24f9895af9b9067d1c59f69794e43bb64eb8f5b1519255623fdc64bb85e1b85b7c793b0ec42de4d850bd542160791d6e543c633ee21171"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4538,8 +4550,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6e317cb8fc092da3e09b63590743ba17426826083697bdd526f85d1ebf0270afc0fd89ad67762836567f36d2bfb52252a2a54ef9f753a4afbfe520e857a503385ab6c16df6d4e3494954912ecb31c514f6427b676a1c61c83ed38009693ebc39add66a1af1ac1834381df1144fe5f0444fc955334a2cff4aee6f3cdd3abe5dc54cc4ec25c5c66286e91d29a5c498872e7edbf3f4235bebb402dec4b91e629123e841dea66643f224c472f75caf31fbaf18943e7bbd09fdfa8dd908ae92631129b404f7414037d42b5914b532e7ff5a618876a550fdfb80289c5d635adbbc60e41ab577c59bb6895e2c4f02140b95a47dc327d5f414293b3577acb277427285f82dbfca53a4acbbe4497141efd0afea149a7c12b6c702fb9e48dc7dcb0d4ff1f96cb238d34e35fece1436b14592d3eee800641800dd9df1b9541435cb2ce933a0150498f9416446c95172a2116ffb58cf5f397f0d0af2e025e2951444d204291b1c04281c9242058b937b5d01f74b6cfa2d55d975c6622198c6cb271f289110d2"_hex; - r = false; // result = invalid + s = "16378bb4a3a00a1916e10733b6db3b960c20c82929d1d50f6ce694f691b8b1a2be1377d6860b6d678fd27e797d7dec9850d99aec1079ab45e08a70a54b6c6b13ef7c335d48a7119fc855ba69130e08af62540a0327dee39ead88e5dd923edb41f0e0c840737eb35704cf5a3f2320a1b4eaacac70846d05eaafd743046200a5cd25d37ca312d1800fde082652a8e802f15ed775e055b781aaa7375de845378d57ecc516e23d445844edc1442cdf7eacfa60a995c7a9b062765dfda8aac031287b72044af30d5b0ed4e815aaa55b068212b187845e829adbdb2902dfbe2023870d006b8bf77779b8ba205dcbb3225e3c854d853587b08482264c5083576cca1107"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4549,8 +4561,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "41a99f4e616d19dbfec0e1e5ab8ab605ebd218c107176b2d90c58e41e01cd6f6950fe4a71c3b0ce81dcfd6f88b57e7345dcd466e43e3b5dce645ead38d0f5df81d307dc89ae059b3738b7900eda146f0ad965e67e760231ba58fe7e33d3f14fba66978e3eb7bc5dd6960b24ba2d59332760492961b5b81af6e37fc3065105915a4505fd239c79e6fa6cd8ba4bb585fe937d5d87955f659cbebd6bd9f0d0030e8a52341591fbd1624cd2236352e9e6bd91d7c121357a4af1184efd102fa911a7eb8d7dce098fbc02e34ec92d14ae333e502ab8bad7ffc275dc770913eee42a316b1fac871863e0f10899d72d0802bea9c07bf21b91050850547d6c8ff99ef52b1bddbd655352ef0fc4748c44d4bc4a4dc4ad3110b367e63620cf76139fff563a7c76a9b3a24cab86bede3568ef1524d476f8e39b9df374d1d2161167af5a00c61e0aea1bee56ae05ff1759e0826c4bb0b2058b5dc92a5c4dc865110bfa05506121ae58583179bd981100f42d1d89fd604db4f13db7ee6c49ecd381a546813b284"_hex; - r = false; // result = invalid + s = "64316a2c63e71413bcf87cd2d8efa6e88a527483bf4329a27520217903dd7b4a74ce427cc388786fad14061d50755ae6514e8161dc596a5eac1260a24716523e5016dd55174b25f826a7e806e4204949e8d23a4a7a0a244df064c57432f39d4ff3c90c282fd4f49712d6a922b9b3ce8297f35611ae846bafb060bcaff0fb5c484f9766b0b36b2727c11cd7f6e95410b8398ac5ae1f1473ce16df25b2b4edd80ac083a3796863e2b55428a900ecde671f84c21fd8fe224c03878c62b8d988f487d063e2c972ee46f72a8d859e9659483a860938613c9f4b4c26313d27e828dfdb4fdad98d4edc31e07b050962cdca2f2980cd2034a5a4eb82bedde65f837a04c3"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4560,8 +4572,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "9e64f806c7528a1cd1c8dd5b67ab67335b8f9a1ef1fba99afe67e9fb2cb11263c79dc422d51a68728464422307a0a445ac823d10021ab7789e6f701182f632786f77c23806b81324b5cd78e462c35e495532c2330a08e0e9ab7b44bc6dc5d99c70e052752a4718fff47d00c9b82c4dca22fe3302cec11026564288eda51b692f36fc23ab6b3a9091c332378be3582aa551c8471a9df5f9451291a1da952019788f461fc5262e822bf5d5e11f80b91fd8748bcd2d856e0bf7ee29333b627d6c44ec0ead86c0ab18f93ae9f29dc3a91562387a703b42a17cc4b7b310b6b6fc7d9bd7bdd907520dec948d2048d556dd6db3b0e5e95788d88d0d643c6336604d0b81fc996bb85d2b4993036635a15acab8dc486e061c8e2eab891daee57bf08563bc018401087ba854f300a97b9c5fd6c5a3915ffb240a577e7ed23c76fda89407be57aa7869db4c6e72fb69ae2af877f189992d99dc17a071894a2c6293ebc9e205ee3792c4da94de734b77c47b21c7a6572759126bdda03f4984bfeec0afd744d3"_hex; - r = false; // result = invalid + s = "49cd3a96260855d9a0ba3005b8ab18f077e18dc88923a4acbffa7ce91a948601db5317c6e6d7e55a7686f735d378ea12bd17ecb26638dc1ef5f613c527c52dd91ec1fab9d3823ccd51d7ad1af5383f4920478116e20fe43996a8ee7b61116cba0f69f42d5661c97c71e62a0ca792d592e6e0ef28e67e27b1ff7260ac427f35f7788ac81dcc69ed4f4ac4eea07a69303cfe083a7cde808e75abf62283424a8727cf0a85df2e26060de2dc04dd12fa6a0471a00f003b30eb4d14b65438d7090c2bdc953588207c0951f39d0aee482dabb782cf593d631900eebb3dca524f9d1607440ada91e20bdb7117486ae90d77fc44cf5e4aacf4c850093ca883ddb7b3a040"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4571,8 +4583,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "71555a4df579d3970cc515fab9cd2775782e87a7eeb0cdf0fb9614db00ae74a78d495110577e29ba7d7ed8c2f71b8f476a87bc569aba9926c75811241b2a3525e6dbf3c339363b9d85511a89726ade496fb45fb476e0fbbd7bed7ac1fdc9e8948f622b2f2532cdc139fbd500f2807022739cc396023e09833f513caae70374296f6324e31f27b1f00978ad68a65a87f63e868f66589becdd34dcf732f7fb85a79a28975fad578cec2ff9f2b89fa7c03b03fcb14a0cf2cdc4d989b6131fd3ee11907f9405ded3963c2efb6c1bf79cd42335cfa143e108b8b9c2aa8f7d1e417c0fc7891456fd7ef72fc1d0d50affe882d0a31139df99a6366e7b5ca2cf5c11e7f50e2c52f91a36543c554e2e467185e0bb4fe29dda115c214c306dd450bd9c261aaa2844091796c2e8bec02b40c7876495b7b4d327c6ab19e1a0a90dce923ce8f8cd7cff7b6ddf59a011d821f2c86207b356d0badac5c1028b3b3727933f4fdad43c923495af16a23e913ccb998ba0975863dea15a42ddffff3f0b4f04a153372a"_hex; - r = false; // result = invalid + s = "9dfe688124026010b835f972719361baf84e104ead160ece75d8778200f1dfac867d262f6e8dd12cf25a8018c16f176d032b28150079c35a6d831f9825c80e986a9768131fc6e221e897e221a14be3355921369d5accc9fba6ab8649bb444913603db70cf09188c1f2f34eebd06907dea1b7a970add4c01aa4858d78dd2910c251dc832157e0f373e4d6bc532e1fdc85b8f6d3bda13585e789607e823ea8808e71c1bb61fa40dd219c2980f5a84b502363be708ed3a115c5711c69d16427d60a7a605a9c282c5659d6cd203e0dd181e41aaff5dea6233985882978172f03ff34b651f3592155adc34b26ba7a32df6cf5ccfdf15a7ab95d2f217a0565f4564fda"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4582,8 +4594,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a9ffef059db6395dcf691eff9ab53fdb762000fefdc58b964af85ddddbed15049cc8bb2eaed4aef8974bd3c9e65386f3a11effadc26a9f85f648bae5334d08ce23db566fcc8a6ddafb127dc95d4c3ba0d7b71546e1c010085d0e5c9e7f6d1f396b50c9fe712ca30e78dca2ffb58ac5fa5816702caea67b932f4b8669f2cd3a61a412c685d15678b2fcd982f3b8853ffc2efd841d59136501ba65707e9488fc0078bc03c318356968e7478ee3eba9aa0b186660f08b055cf025866db2d7162cf152c6caf4a3d68b5010ad9e9fb346e47cee9c95ca4dd5455211d0897ce239ab92a495cf2db2df2e1a3d8cd1039351984277ace1888b0194dde50d53cb9b05b28bd51939d95683160a9d7d36df412632ce7cd693fa89bace61a6a36347339d6e068f8a7d99f76b470f381553a1f901e5de43bdc8ebe32807670abed2d1d7cbfb212ce10fd5bd3769eea5c175f006aff33677b20383e61433f5b63da31404ae940675d3fc1c3cd39f56aa2cbb30efa646427614c2d61ee19e7d5b8ec5686a071b8b"_hex; - r = false; // result = invalid + s = "7b17d3b2cde9c95d954e3d795eb7fadec93e788101d337ff0366a3d2fd7de8294761b0d11daa19dbe5fefea7bbba4986853bcb065a0d5fc34d4386bd0d9ca9f1dfab415377a8ca0c8e879aa2ceee9adb3aa57287adc2b2ce1b4ab07c09212b3d443d29297fc206968dd22ee2160716bece2ac0cd9bc9550cf0bcc71319e97818cf1658f0384d991b2eff0001da8329d50935b3d3efb4a045cf1f88c98a8c91f316a320b90c73487a6b132304c547437c5581c2c66cc1b23f2361e65d888872cad4c16de7138c1ac2cb13a6d84cacc93019e7fd84ea99409d8d8184cbe40bbd75792aaa283183eb290d517d46c7da3b1ecd6a2ce086fad43c565b696ed3fc8250"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4593,8 +4605,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c3ee2d5e72370734429ea8efb80d949ad0f0281909af720183edc0f10c83699f8549fa7820631d084c812d37e17e37d656f2749721b90db083ac0334b56a413399a92977b73fe292822433c1c97b2a176722259e9d19e28618dc7a42aa8585e9665b55f3ce00dfd28c7861eea80583fa99d68c8dbd5accddbfd8dc2f74b9205059637a5a09952b03ea2ec0bc2bdf8ad211e8cd6bd410337eae3331715f92391b631b5f1e2c339dba0cd6ccf9cbaf17c30346987236366ae14882046dacc32b676d84f4378c3f605eb81529c398882450f833969c8849c489934e0225cdb54ad6539f81e276f16004761361ac114581ab1fcb94bd05854687c8117c590683d7a49f7b5d2b80287cf47e001a7c11c74583ef2dcdd096bca5a38326f87e67d4ca1b5e36f88f0f0914ef5405d49349febbfea2ffd44932b7e5b12c7eb0b78c4de0accd9aac30612f6de12e710ca0d5c1db70cadd03e88198c07731995e4b5627dab808d82e2fb47a538323a65327f236c1fb192967fcea14f88c03beea4c31319fc2"_hex; - r = false; // result = invalid + s = "5ba48570aea8cea4f6f76ce4d92a9588a6478e6a6dfb82d26eeeb6319420419eb8553dff3fc9843d01c9c708947a413bef9c5e7beee54a57d3ea9a01a81c7fcac04c4a3f0c7ce17bc8fa7c3e47b03d3be004a2f4340fb8c119d6134981d9933b9510e7b89fbae037809b8e49c429fa9e01ba6af5899f0c2f60666d42a62f4ec1f8e2182e9bca160116bd447e9aba05c9ffe8cbd6f9abf3061679a50d567221c2b808a48f1694188820f7ad07e9883fd67ef7f9f2d78ccd13fd8017d8836101de319d17f05beea9d7b1a2c8b1f7dcdca212d332befce5c0c2a89bd29dfe2bcd6be1dc9600baa0ff970393469ac32996c2710bc3d07763b481b6a713abb9880604"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4604,8 +4616,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c67ba5369bf9eab5141829d0ba753245c885cf33ec6e9ce6751f2abfa172beb3db01ed0513f3b936b48619c64d6cf58cf8fb1a6b85e0771dd9450e3b4535740e7078a06c7a9afa4cc28ed0ffc695a0f9bc532594f0410987d5a308cd2a8607f231186247a89e8babbc6a2adcb71827535d11a95228c38790236ad2fc4de9fbee03c2b2d1ea809f60ac8ee770209e39b3260796bcd63187ded4e70efdbfd89606e9e85b13c26396261b3c907954bb0d7d8cfe2dfaf9a94ba6d54d98c082fba79d254592bbdc3e190c8dffd24d84e03da96eb0d291f5cedc2a9aec051be76dcc9841e6a2201323f79d9f18ddc42fd45bb64d62151a30d1111782a9ac4b8b5893145285eddc0eeda0768e1218a693a863ae2ee5a959e4249ed995f85f1a9f8692e19ab609fccb0a93e986786bd548f0bd70022b61bff520d19aeb97597f98034a5b78d6454e55e8f4caf4eb019d6aa00ff736f9a3105f9e75ced7a5e30882bb5945f71a7c8a401cfed0c07f0347d46cbdce7bc1e931c6b0d5c1488206e39dca2512"_hex; - r = false; // result = invalid + s = "45aadbe78b131670705fff8a10c088e832a6917cfad4b985d20d6c3173b2cc26bb95670dfcfcd927873410d2d3e87850d1c64bccbd2e3246f81ce2b6be32a5a7acd9b2df660e279740b4b916ede28fe1488cbff230bfd359a77269023daf8f897a4adcc6929d9a2414ad2d2ea151953fad387ab963f8da7608b1253cf88800848b68dbbf4f8cfd42bac58e37599de5390e6e0dd9b3c763d963589945fefb33c33d9b0597434a2ac2e36db4e4f52812ad24a76bb91bac54a6843e0b20d5fabb5aabc2f07c857bea2446085bcaa27ef51ca194f9b1b3a16a7be01a4cebb5b641c12c78cfc2dee0c0c7480efbfd4fcf6c8d1379dc026a11109bf3d0d359ff7e6ab3"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4615,8 +4627,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4c3e2c6d82ddb5af78bbced9b7d3543f69deef0d7b0acc29652b13fbc2b0a256a733f8201b334918dc8354b3817d2cff4a2ca7d00b329ca88217f28087020528c6c30a75a1f82e0c3ef3e49d8335c1c354c31b31562dcc2f98e6b960e52452d0a37cef4ac21c41110070eed657f2ff30839976c98f38151fa55aae5780ab72fe2f5a254b4f83c8493001a598f2b57197fb3d5eaf439671b4d4a596f7c4a4537d5ba3937c9baa57623aeacf54cfdb708dff8aaf09a23d285ee0ae6aad50ada1f51c1ff5c5a6468f791cdd7619138c06855675da115043795517395716cc8c0d282f5aa5c46b92a2d1cf20c50ff7f69749277611a36f18271d2ad91ca371ab2e87aba74f83c37523b50419e5debd36e56452b39059a32823e3ac57929452052ceebbcf517a8733300ef3500ef4b08e4d2f6533ff3193e866dbfcfb2e841dfc133163ad3d7b605efb3a8c7715f0dcf1aaf848c4721f9c5de2c49e31e92cca767b0fd34d34c1bd1db1dde2edb1eedb119079a4cd25b0862a4b2447dba751e3f3cf"_hex; - r = false; // result = invalid + s = "52dbc8c5468f1417f3b9a57c3cab9bf8338e6096590418fe057f4c4313b8462ca42b25b9af14ba65cfa64326d5ffa512d603fbacabd46bb3d381427173e3a91af99e6faa7da7507f1bcbe794dc236086c5d3cc30bf0e1cefaa3dd0e24d759a7ca00ef7cf2ef335ea192f597bd954f2531e19c68e492afe2b4e1c12d5bded1ab9d1c7b494ba52ec017c5ef02ed4797ee0a27d44de9a9a365da76bf5fefb549058ff1ffa21c2b77c7e365267e14d6ed209ec0739619d8ff2ea3174619e82abde0732b1ed9ef3dfb04c9fe4fab5125e1b5de4bf8f4d183ba04fd13130982196e8d603be1c2a69c3919179e8c3b9f189b54e4e268402db11a50724809919de67ea5b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4626,8 +4638,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "80fc40a92375cf58a2730a709f08395c7f7a7577ef00c7c4730781b806afd5f69cc0c990012c62ac76cd4f860ecbd8b6f96c4e9a7828595bcb56861cac5a0a1d39040d96637a8628431641115a1f298c144e3e2bdb3b43f8edbf943ca9b1378f256da835a560b35fabb3d0bdfed894643daca246a6e22cd6089bcfe033329a3d18f5a27194cb8c915ba5763b44e51e5380ec4096f7cf5296db6c7ed57ef8b8812edaa10d9f12adca6dd83bec5bab1561e174226896a46d104c134b3c17c876856d54eed489d64c2121d68e48cb1da6357d9ab3128e25f16b1809288c35ae38c901ed6bd1b80961853c1d4e9a60273cc39656078abb4ca9e8afa057df58a5fa851a4dfaacac3631e2065fa8e2e423b4692dfc96a73faa7c2af3d89cf1e98dcf3e69c35dcf38847fad526eb56706ff4f9edc068be609417e60d169ede36e4a9301cdb58a408bd12eb37457f05af1f96e431241354e181f92f1199d2bb45681caf56ddd13542994fab6bdc2027775564b782cfa2cc31d305e7e70692a96182a71aa"_hex; - r = false; // result = invalid + s = "0fb0e3ef6ceaad48cd21634244d88906c312a80663ccafc95ad6de4e8788313ab350b6bd595c3e15cb25c5d59f44137bfe316becd75ec2e112f5e7490efeec9ecdacca2931a4c0a1930c4145d63970ad533b4cc927ea75155e484f421c80bff1d9e65c0c51805a8a43ef9ae179eaa42fbb120a000cd5121504b4c4bae88557b526656fbcd149558eb0a4fd5c265f632be040a00a269752b95638a244956d2442bdcbd1376ee749ef8d5667df959e1d8c8ee575ee46a209b5eb3b74565e78342c956e580dc537c68724be349880824d6ffd7e3fb5c6008b6b117edf725109f7a410b86824b8e38569fd8eb140721ed7bdf47f92a7c1b9f8e3f79f139a92d4cab7"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4637,8 +4649,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "756428ea39f0895138538845d40ff1a8957b5c3e913e7b475198268e40efc604cfdfa189619f60f9dde5694932fe5419b666b10abd4adf096d6af10360e1c6937f3c0ef1e37e2af4faf064831ec44d1f581398121c29c1a4b3a056b20cad0fdcc99ad6f68a51e12717f72d2981038ba2b860f7347a435a69ff01cbacf8d4c66ef98959049bf90f6c78d2215e66b8453fd7de0c2d6ffef90fb003192d053046872fbef084fb1b104a37980c2604d61db8340254b37c8f4df3d5c1ddf6745a00274e7b826398e756d5ebaf19aca16a137a6a38e51612b580ca3fcfbc4d7eef58a743c8c7862135eed1926b4592071ceebb6133eadfd8ae270e1367f705f19b44e0232db2173a261dadb3c61aeeb9ab05dded16d95b6b0ac7815e9aef31314003949e19cd76ed5d7e57509057e6031cda36d17b1988479c2bf217e21a4865743452695415b70e905f836561f08e8df78c593e5a64efbb19b42929c4fc9d875a8769895f21b887b1780dc38937d0dc2efd10a14030e43ed63554b1ffac50b801de08"_hex; - r = false; // result = invalid + s = "0e6c0bc61155bdcb29e1fe88767666f8a29430c9c065374ccbab61dea01ef4571b75d3c1f63b7ef0d183389a4c49601fa80e981944b6a661a01bf55f3a6d38d8944d5a93ab58c610c4046ae457ea4a4db4599682231014e79ab8134fcd9130d2bd636299c1ee6480c587ca3f7e24b61b62b7ea4ad969208aa80ce2e8d1973e51c7b648d6e62e21a19dc9423b66238e225ea9fff5f0cbf54051c55fe33cbc5703b38a67183ea20e7b0a72023c85fa60539f88c7b84271251ba52016c55f63a240d05224b1fa650b82ce3ea39efb072cb10da217de343a9f112ce8361b6d7812974efcb9a233386ea3c9ce818bd66623f4185b9ea34b8bff413499a5bfb75547e8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4648,8 +4660,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "579bb79622238ac1cbc0af03c3c0d1ccbaadbb29ad974f67b76d752b960df0928d364e33eb04fae281992aaa01fafcc0669eaf87791cb8a7142b597050afa58571f9fe78a93c647307ea0db9017e0c41a0ba712dc8871063bac01da6a3dae7d0c5bb5a40f633b45cd35213fdfccd296221a0275f3b552e56ef8c856f5bd96722ee3cd9799abf956dbcc0bde6bf65b1b2641658f04e063298cdab2029c8c0af0566878822737fa9d6cc48c175fccaf7e866d80e1e478d7568a3e67d39c3a14508711fadd84c3e7be8cc226a23368e9982138128628bbe97a3c572ee68606bf6427ee5b9862bebeaa4f6b08325241da15c9f223bd18b797e1d6e88b2b08a4cf95baadf4d684c8fcb7cd44711aaf203862ec79bd5f071247636623b88709f6686d6ef3178fcee04e2de0d661d92444f5cbf3216b07a5f6cdde0657b2d4596ed148255957b0a23e8f262b1ff628cbd7ec7e88267d100809ab5eea908aa05e11d823e794a0d1e4cfb82c76b0cf9affce1fa0fe370503accaaedcaec65d1ef3a696df0"_hex; - r = false; // result = invalid + s = "6c2954e02df08a94839b0fd26868d7a8a0f2fd86a1e1cc1560063ca9e74280422ffcde2a270a7d46f9b258e68f9f6ae881363b73cb6d7842b07d73ac3e2ede0c602304868038749829a79d55c5f84eddb4fc4eaa285bd732a4b2aca2ab7c646640e34894a2ee80ea288e68384982083e03449ee95d99b2765de2ce69f50b5a94f2a5a45eab379012b8b7fe47cf9dec8f07697bb1e0191a8757363e31c78686c5c6f17d2ed68a0e83e522c99c70d50153d1fb2a2f34588c5e96601a8606ef994b68d36bbf9c735bb823a09ad4ecfcd1d33db96ee26bb50d3f973951417a922417de6d1b2119f9343acb5a740e9254451a24b89e3ed59379e68a97a45299d6da57"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4659,8 +4671,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "9a32e4a06f502fc0991ba84079044501b140af892bc3a3c46f9c41fa75c47745292de23fa60443adbd2e705ff47ebd1338771b157741c019c2187a2c8a08e06583a5e4d83aefb3146a6eae37ff79c499646116f2e457b9baff4543d2cb0c266fe0a6f75218a0f565c78904777fd63e1958320f084c9abd89056d118a269c11e00f199782353950c005316cd87058ed794235fb0997fccd6c17c7cf9d5784cf8cdbbbafb96d6111824e658c3bf574d123f6dfaa1ddf77f093ded9e636f5b921ba9b205667e3914932407aac17813457ba75e9f4380ba08eebb8abf5ebd281fcf5b2e5d138585651f25c1ca7194edead3507d6e69467013512b679dcd9ce400c66c1f3c0a600c9d0f6c33a56c366e56c1e413433f904eab089075ee9396650849d70faa450c1695400b2f88d42818ac212a13fd9bc2f6926e2ce92d7394f8627b4ebd27b8d45e179ad927099e3bb5e71cfe6ce275b65db98ec4fcdea0b43e2dcde6601f0a1c54de549ebb03d98d1b361be9239fe8dba8dae94cf9d1bae5c51007b"_hex; - r = false; // result = invalid + s = "4ab9e5f20111f14f63dee5d414bf2f76642508a26774b094b9559ad163f44d56b1ae0e6b85b372756a3cd7115a380b603e4ad1213a97dc84c4184f68605cd3a20d7645e20a7834edebbe3fcc5a7e7f6081735302972f2a17899efb38e972883c9117db1615811dcbc26b06597ef3f3f54def9061513b8cae059af93b18cfcd324495ef49d68d01166416b9ecdd87f75d42798f55da109201d4c7aad81b946a0581b16f91e8db4632c79c4cd31b5e4885af16a14608645f20b6a0df68b2776af3047a4306a1f3f772cc2f4162aafb79b83182c75e2f62871bbe4768594e6b4882bf4d708a1b3aac57c37f730bec9898d7919de690a5a260dff6960a78253baa28"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4670,8 +4682,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b5efca28b066937c2cab27c339106a0f40139a1e1a5b6d66ec3a76abb62824c06a3e4dff6bc0dd204610fdf386e1ce13c87159f4aa0e88f1c29d07b1320217347c52e58c57ccff23c01c2039c2a385625072f974b690aed9cc5f6341c33dcd2aaca6c260d5945d49c5963c4fec651423c765c973e457ea2ef33eb57b4b4eb88f0ffb66789303c725e3db8b76e4eecec73c5a466b25745ebc00dc347d33a71f787e7723358270d0e258719093736f72182ef5cf2c4f513fe648531d755d6e945b3c44843978ab009b0b6809bb0db6794a4bb2311991b1493fc15226c15739e2b3d621cbbeeb891286d747dbc71a7c9cf06b51442c8086d839f52d73a072647832309b59edb37522dc61a97a31b7bf3c63980060304fc647c5743687c15389f4d996e38c83bd9e631c3bae53c1ac35486e9348b730f066069bce7e840f1b83d5215a52284972f2258576e608c35c4521d87e9e52cc1f4f284674f1269730bafd4f5727ac61d9d179302c99ccdd4d9e024578803ae6e9fb76ab5f74c23d234313c5"_hex; - r = false; // result = invalid + s = "25918876ee17947c7ea13c95b6f5e693cfee2ab988a68b72765853a4f47b0075d105952afd7d271e3aa39a88bb35549b18d0aab49a48a0ff25c64ec8d052cdadc92418e84436f3e930f6ffafd0614b5e0af4f87e0c6e646be9e7dfd996139cb73838de8699916317c79fb16df1272efeedf3044fcdff7255fd45ecf26677f8e3cf7e86b40f48e7aad2f4185433b5f04e06bd105c1081e5452d4292346e07f91f9b29cf2e4dd9ea335c065cab8daaff554fdfa1990130dc1650124fd7af5be1eca9c38a4bf2813af9f50e51d293b4b8fe4fc6b40f8da779ea595ec0b43c4db3abf7751c74e92e28481ca919857d9a92c8db1387be5f4ae4b8cd3372d350e57cb3"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4681,8 +4693,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0e5130e5c5145ff0822edeead396c87963494102b8a4a0e38d9f55c1e698d677e5fca1375cf5e027024966ee4fa8e2d8b4f25cc2ae8cbe49050bd675f39be5931ddcce426e1977576f60c6b79174a763f57395890026d762df6c8db0f79f02227196606256ef9af7f6a211b38cb1aa0c2af9be830e8bfa9d30169381a22b74f138939081a5261f3b277f01aabffc2dd3af713b3cf11bf772d69d157d7ed34c2ee7682745129cc7c45881e00a235c5103c09ab3719bf56f22cf29c4e962cf7bf4f633e01dd3e49fbdbb019cf2b56475fca8007fca63202e02dda6866bad778538e459e7df0bcd234abf919b5e6713a68a9981227f8d3ad204d077bf2d70117ac606e03caaeab26d8ff04c3583967a77c63a3a7cbf3d820d650d56c76d31c71173e9577d238f1ec9bff8faa48f3ca49f531b38eea21b192435e0b0138f83b54635e07c12ad6d7f06b5ef51bf5c21083e9170e86189a47f9907a9622201cf3c689b62373f94c540206c8600ba48a049210f1ecf93757d22a70c88402a17ca6a94ea"_hex; - r = false; // result = invalid + s = "3dd518a77a43fd87d8923314e8a78d4dac476188c113377fa71ed7d2fda4be726b17e10bd7870ed018368a3c36be143d4c3d59ce35a18cb46e457ed2afabd69bff77fe94ad6fb95b360249944fa6228faa4159531e67490c8ea44dd64b471d96c48bae5d1da7c6fb144604ca8e8abfde84f681b9b700d62649009c135fdfec200c92096bdf9a699eb1b8936e8769044ca0127070b40e2cb8289a9f98b91be61ec77861013cd9ce5b33fd2837ba8a93caa480632aeddbe283fef6ccb953f2e4af9ff6fe5bd01beb0d1a0b3f08e9d22f26749b5c9f5f302002f89af05c7f9a09fd416691abfa0ced5eee4aeba83113bda1ffd418ac4030443b9072cd6602fcf797"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4692,8 +4704,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "eff78b2945917f92e9ba0847516157ed33cc85c64bd1f5bcdcbd62c3906c5b77b247c892536b115e6bb03ae3e692bfe94c9d6b58ae0627bb96bcc53a85975d2929bc930cda5308f8dc797d0b0d6a5f4ab5a36e096fa4e934a7854355c1562553738099640c3ba675399a9d386b6a9c61854d00f7b6fa5998bcd05191a9001987f9621d1469c9b094d72590d76dfdfaf9b9f52f4f8d28315ee6fc22550e5feeba3a41f223dc9284d26955247fbebede5a3d643b4308843165f658ea0887a9661b26a707d22f5a827f33b2a60eecac67e9c730983810952247fb903e62317d835d9cf6140559941c3cc5ee7333ebc4bf43d036983d0cd3a3dc2330062f22933c295b05e6680ad053e8f64898151c72680f4ce8af1583fbd2f730f7d63e6d00a3e6991f809909b6cc8843ffb25016701fafbd6393e65289106cca59f73bba012b0bfe29aefb4a2f458b52d4736add4c2732c7ab1264a33b9074153b5699dc5e9566882a29efad79309fab974fc32b96750f411e62ef0acde9f9bdfbc8ae78ceb8"_hex; - r = false; // result = invalid + s = "56e666f4c8b916f556ae1139f9626a6862de59780f148165f924965aeeb35ca681b7fe2a603bfb1098ecd06e3e185564e031699ba6f5b7c4192e60f1c7e06131eea6a6e772f9b7e9be4ec4e94d89eddc0351347c5cd7dfc58e2c9795099144428563b77bc3e3d5dad50cbd19374ff5c7915c8987f046df62907b7ded38deceb2f04f18a868abbbf3f095ac660774be8274d0788b88001c17b7c3a59f792e81e18fd01bf8d67289012f60a887202968c17f2ac684e5a4a05673a0b2189206ca3358ddbef03b54488d5a794d3a5767de1e4e9032e35bbf1c8fbfb9b9be9a8bc5ddd98f12d3853485cb6a38cbc7044e10a61b704c6987e4b76331aef926a843f85a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4703,8 +4715,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8d636450d02664f8fd18ca58d208b87ae5efab968fee42eb399f09ef0f3e6dc0ffa4217fa262d1c2cb488ef9625895018abb27feabca718268ff274a84358336375949bfadb21584dd59410c48968ed76b0f5b60e01adb37048416f1360f997d99477f0a18b367f91d68117aa9a0fc229cbf0198ee2f69493330dde8156a265e660f9169d874df428bbce40f00a366a5d6df2bfba9fd6f78da60155af0a5f72bb971fbcd64e144146e037bfeab5692b740bd61c28ccb5fb330bf5f10e595692608881ec857bfef1fdb94a1c4ba63e50ae0dcaf2de94bf50c7fc5d8efe099a51785aa42638d07cc0c23f796bf55d6032fa3027afa5b8d6072aebbb56546f15addebd36495830d7c08ce99533343e182e7d08031b95e50f729f5dde2d276a1be47e93d66ae45547fcd6e90c9a5141439c5a5d3b4000ce58e38ba4809657a622d9d659de3eaac858b6e8e34d16997a2fceaf43a9a733dc67f272f3bcbe560a75542784b7a16cebde20bbd90218466b5501b1f7299de1d9874f682fa0bfd41d6d54f"_hex; - r = false; // result = invalid + s = "759f6957706866606f2ebec1d6400b87afa134067897d332edd191036f318e1e21a71dbcc88e0e3b7599123cc8fbe19a15273b481a795303eb7941139e7d48afc490b61e3fd38078ef756ffa8de344f2e930b56452c619089062c27a47b594c5fff1fd7f5870cb5dc7c30f83b245cc838724639785c2ac7d8295e9e1a99004284ce1a5a5f4c90f1edf87be994e2176ced8b0339bca21068db978864e75e84bf9b65b5b28c3bc9fdfa451b39125a271dc280b9c6cffcdda1d883f5be07cf8c14aa4aef6f7993e86dd9dac620ca24c027b83be7cae015d2a55b85cca9ef1e6d080c298e58c4f0730de7820951df305d85eaaea46f087c74f3ffefeee09aabd5827"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4714,8 +4726,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "633e28886ac6e7c2c36a69e3c1d6d46caec4d115e852c8030ece2c5ae1489fbd795affa8478b23f484b22baac6d1571f6f2f33f36fd28c66cf9b2c963f051cbbbcf5c33764bf54867a757f6c74bf6574e3b7778eae92b55495bde44a9def4d1a31fc8dc783d60cc23d1e6ca973ec0832d6979e56a42269d6fecb6bffc3eefa36e2c340f89311a89902b40d2179e25df9c841993f245fd644b0bb65e5394beb84b1544fe878b165f2f6bf49b77f8ca4337c60be4a89bf7840dc642da1937f9a933276320d0488bb6cf4535e68cc4a558c95fddf04c65400500fa580b476dc53d60fc33ebd06191ce23ac289c7850a9f6c96caeb68732bbb028f10c496364e673236e55d54eb6b187d6905c9b894b7222b68d90b82da7bf29d1c0ff5a2aa552ca13dd49a9f50d7e69ad40cee65ec7ad140642002e75c3c6cd55d5892528d2503b33debd4be946a3c48d7ba46abc96ce2e79396116c329ce4e967ca28ebd56712fd6a9de4ce1a5ed00df621d18713d508f6f1fb959e2ce8ca9f8eec2e3a5a80c771"_hex; - r = false; // result = invalid + s = "3a380c29ce2f304f33a08aed4bd92cc6e8cf56596928fbde6b640cfdbe1dca564cb01421789c7fbb49856bbafb34da6e1c8351fb12f79a4614c33e50197939e237e0b987efdbc042bdd09073f02624c520f1e9524ec1cd10e917b9237166e3689afb710e6c4ef644e08ce866da6dc8849e0b2b4c6615b0aa803bf112e9a4883c8e60660935c43fbae9d939fdce49af603dceea05246b220a5cf99044f0c09dc98f3640eb23fa218d1421adea7898563144085f2c2d1c113e7046f80ff359b2f65742c58551ad62eb6dc6e7465553f7080fe100fcf1aad89fb079bfed32c8c4c15c84d2193de22385df91e9825717feb5209f1dbb47962df24f3b43c114417ae2"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4725,8 +4737,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4f7025ce36f71e0b1c0a4659ddd25396a83e4911287700bf27f72ee19f8990235af6d6f33f3b3d3f7d400370a914de2ff23af964e4eef9c8a1b15a63d38935698ff70b7c2d2d2d34cb8bc82133d70fc1fc3c19d9f47f0fe463393b60a61fc19d49f84385836278bffd710a7ae72005821718d42b2f195b6a3bb5b1b6862443a84d6a4ae04449b6bb6b4347fa14fbb4ed802cfba5dd00aba3e5e1fff2143db0acd4e50bb9951460b1e6ae5608ab642780706522e971aa350b13390df5aec8585c3b4c2bff9b64c5950357fa6c91f88e981882c52a8d93f156718af5c91c7009b3f57ffaf98d9e280ed51148d5b2d0b57495276fdd8a5fe0885ce37426760789e671b4cbf64e2e21b6fe4a1fd3f538675fbbffe51d8cce7b74c9bb9c25e9caa84b88161630a8afa49265d172e68ad42836f6b9b619fe32a1b84734ae58f09a0d8c8a5f3181a5130a503306bcc2535b0cb325c060afe57e29c7346a5489f9dee3206d8eea75e07514ca3ec547c816d88a4e5ce4b7e4a61b3488d2c13eaf62204766"_hex; - r = false; // result = invalid + s = "884b4b6838fb629fe42914cf15257111b502385d71dae543d03597a46cb10a6122f6d539ab411161ee278f16cd3b5f4bb7dfea0f907256d96cbdad1f1fb40093e9f5c97880814d86091bfa080bfaa5a955af9d15e9460610d4c859332c5beafc24fc9e02848e951eee2797246bef20dfb89e8e949ed52af39663f5f088690f1a24abf8a8e221582282127344bf740308d146d6d16b127d1639071037fdcfd630342ac134ec24791cb8905b77dccf45eb3ed7e9b2e72e60b5e19367fbb5d1c41853d79965530b3181e4cc7c24b198a61bcc2e63806cb6b3c76757737e35066b7f1bf0dd709216fcdab4f35d550b31ccfbda9eb8165aa78ba4b4e66e316ee07282"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4736,8 +4748,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "90db572ad2c25dd02aee6f8e0ddd5d42f5434b9b59f0bc7057abda8924c2a061404f345b9ed3e2fd0486fe34e2be725bd9446f031071c4ec13772fe468ab4961623d16469a5b9577683f20035caf524d557291b700a6903dd6c472b50cd09455779289b990e86ed6f7135af290b320957c93db1a34bd66289b5304828a71d2928fdbbc3a90af3884fa2f710455d2e909422e66aaa1c01565fb67367223f2bf30661ac72b9c6a84fbf977927a86611514c0c387371cd94bb703f2325e3a11cf83cbc6727b5bd49f6fb31b7238c1a464b22ef6c5db0dd2d5039ab3d5a4a7b1ea01cae494c5dafa48b73a411c982389abe5fb2de35d6abd5d9dc33e7703f67d58feda3a17fb6e9ce3200f44fc614638f7931099f13bc175164d9d68e2a4d38f2c12224fe136fba4e7fca1fbfe3344afd2f52d8812624a1af39c4f128e1c9c1eeccc0ada519f27b694fd982ffb6467f791461a2b803cbd298a4467cecaf274f855583ddcf470092f642edc79b23eecdf4067169a2ee72ae95c93e3ee5d23ec407185"_hex; - r = false; // result = invalid + s = "8965489287b5c6732e9269f3ea349830169f9ab644076423519bd18d744e9547dfa82d9bba9a8cf4e1ff5bcd79ce2c4168a8b6b1c7931bf4eff64dd18a1728715274a735b9f529a2fe7b02cdc2a8740c2f16bed7e0ef2ef003089a30937f04c2d0617f70db8d67ae9f6200b8279200a21a7862b7cdb406d4855d8fc950a10d5430424e4872714cbe07ea03f36689f756ae0bc09b08cf1f3343cac1e1ae6f943b5d0b2a3df116b0bbf2d433a8c03fe27c6cf2de2c0603b2fbe174a6a4d0009248c0a04ee4b6f393195955ba0818d5e3abea276d9eac469b5eccf6b37d42e38d840513d7130009bb93fc3d208b89429d053ec1fb5b635e6240b3f0021c7a243640"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4747,8 +4759,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a2f7d989b2b509b4d774f5de9acf12e5eaab05684edeae1eb42dc090356e58b8e15a32d8fa313252633a8356476327d32915c52449aac56fefc012929988fa5cfbda0d04d81392eb35ea340dfe449511f5fdab774f7e659ca0a8c91911a255d828e00d93d64638f805d63cc926c17804cf1d857c40be5d10318fe06bc311a66329128bd1102756da5da819afaed6ec6864287c44952244e4a8fbf98a90ada98bc1b5519cb81173b64357ce82f29ff16e5d76a929d4b7db51d9f3a7f4c91491dbc6a0550bcaf5fd37646bd8f71ef459540ae8eba668723a81b941939540d92c4a7f9cb0543dba1cb7969c4d644c8f15bfc13aae4a778a81b27b82903dd223ba4d5d5c157a35371ea1443788d973d953318b204f232cd5c53a9a2517d571cafb62d3378655dcde55f46597295c89bf882041ba6f4352a88dd7c1748761728a2d8dd628433855364024d42a0097346443459b840415b5a56934ea476c5f9de84419d564e493c594a9049352ea82700b1767d75244ef84ae2c8a3d5b1853a0ad08a4"_hex; - r = false; // result = invalid + s = "2503d3586cf23777bcf02ac28f32daa1664ffd2e2bc3c34377d80718cd02195de3de6d10cbb057db69ca2bac07881497189bcd66b181972aa8def94a879dfcc1175aca14781a2abb39cd71569b721e69e9d9504b4ed54a58a4d8baa5f17bcaa8ca9524ed86cde37a86139bd62502afa770f4eef4293a0ba157968e42e77dd690a3920311d24013522295cb726e006a2e7f26dc287fd2754087f784151ac30188937c99cb20ae8d26db527d5dd3020742e8964f518bf13bf2cd36d99eacb1c81a6a9a46155894153d3c1a98e7671233febbf4f30bfad312e0dc4a9520a97098c634966c204aeffe7e55543a436ed003ce0772d9f57c8b0d3164ddb785639314a4"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4758,8 +4770,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "5c662670149791048df0ad6c95a119bfae057011d7155851087c0085b901dcd6e95252391f9661159f909def924cc165b140f02db3863ebaeca40b57ad68cd77459ad258b892c090de55b93cb48bed9a96b5ef294e9c73325e4aa595431e780058a392c0b9d512e3731509fd537df0378caba38c3e20d17e3f8c4047181becf3a505acfca94a961cc6d952b387175e8e4274b81acb168f63df180210752fcc72dce93ee2e23333e547f4561ffaac06597757712ba8ce776f0a2c714c40be54b562ad693d631aa1c3a840c8749c833401e73dd05a9592a477dc43e52d140af0b2841a14b945a10bbc5e4d4f47dfda159646ef1d49d39054550dfd188203585d0201c33a42afae62aebccb463e3d2dd8748b8db65a3f5aa3ce7a1b227139041bc805b7a71144510abadff548318f9a76d8a7f64eb9d269f7739319e9a3da728d001e29628ee1366f53b752f7354055ae2e511a6d9fff4c9b1caacba36be1bde8fbfd0a4274145ef6f122cc203fcad66d8f51e97b0f8f25a08ea8c9860849940fe4"_hex; - r = false; // result = invalid + s = "2a004204ec4ec1515b855f1dd802299780835fbf7430f8f5861a4c6d86adaf38159858810d8645a3076fad16d6daac69b942890d6cadfbd12affcc3d3fad8f07e90c2b1e5aecfd9716ac9a12349e4a4b29eedd9bf59d875cbf028bc9a1a0cb4f5ea77b7ad026f09a208d3d39477a1ab59329cb64e9edb6e7e552b8875a73490551df742ab300f254b7805b4a9ad72b650ca944289a9c7c5223d760baad3dea1fc36d2b5961684840939fab0ffaf7fbb7e181ce3b92d9f7eb833235d97431b76891ef910827d110ca9fc88f7e4f98e84d00a98a1b5c6c70d86d89f56bb4f33cc88936db2b7f8127d11cf94d91f56a07aa7880f6a7c3c25b0df691d8657c330a5e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4769,8 +4781,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "30596e00b2ad31f266f2b47b598029146aba9d0cf372b4eccdc5fc9f475c36567e6a159a454b417c77b7bc576721c52f64a31204279d524409434b73de9ae4d819390c3124ccffa5b4aafa135fa753e71c1b3b3f05ead6e6899277d0e994ce6111f61f2464155f539b8871ad0167a30c234e0541b1f39def8deb531ed476d81418218c682dbbbc0f4c3cdfd674c5e7a7bd057eee05a9f1b8b796260380e38631303d227cd9df7e76fe9cc161f8db2d9db7306834b67ecc33ff91b3c59f35f789a65b6f1433f1cffd69545a146fcddbd047a847f55acf4adc9be2f2595faeadcfe39127edeaa9a1144a5a726edeb7b1a48fa900881b157f7f3516f47dc0c108630cfc9304a2acf821a93a867b063217db60c0514143eb53557ec8f86eb8a83a83219f8c3310baa122b79d49d48bff90492acd83de8c3b9d5f07cb2d061b243d813cb1be42c658e2ed52a9b31ef07360df5945406e7c81a80337169fedf5ea76b25a69a1900a673b648831745f3b04815df9ed7d71acde44fe36aec0a85a7d6ec5"_hex; - r = false; // result = invalid + s = "6d8de4a2cc01e33812da2d364cf3cb4fea7c6f37b4314c123eccbb2e4e9ec5d593934c60dadd5fef2a273d01447519573f701d398cfbb72b0c19937e9f7805fc4d354e292c5d0fc18bb872f6843a9211802f5980538ec6b100e3b2b744693a9b8d07654d2655414550a1645f047c865291ea8043137758a13dfb1652ef7dd42182603ba597eace857f39a0b7ea0c9a987326f55358910cb51e4141653e9f3c3d73f09686463433520ef0786163efc39bba3c62cd5c3599678a28b90470bb6f19fa1a56cf60e8c3465f8d7082728c20730227a2a3d2a6a4cc50fe0217f35a45459809de1f921ac5b6aa833a85bda15e288abe640829bc4a0af1aa9b3692a414a0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4780,8 +4792,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "23bbc7627ae0069673b6de161c79fc721fa169d7719400aaf7d60d53773649bbe5cbeb4ec3b553dbab1b0cfe63142d21ad3a46ee475b7b50ee617e6f58aeb6942b0793b94ea0dee9347ba233b05895b457d478449787cab04fd0c4b01e025088884272bf060a82405172d8da5e0b4e070c61af641d311885519215b0fbc4947097c765e87ee46a4a642bc44b7212bb8b64a2cffaec496ae139c248f6b00f203de256adb345be3f46c11bed0811bab43961e9d78646cf14be18b891552998782a413b6adf9829bc47926178ca118ae0722af0aaf6694d5aa64bf970d530f71e309319dc43f2077fc66afa48365d90061c0e1696ecd2ec29a15007bbb47278641b27e10a28b60e4e7405fbe5a05e5ffb8c0a52472ed51330f169440dd10d828f1830a23dade9fef0c4a2373eae849977e1cd15054e4ff004b9daf6ce8fe8010f9102d09bb4b18ed4e30cc9c3dae2629650e00f139eb433138fb49e2a896dea8a13253282d8e42c1dc42d490b719373b3c723b8c991566474257e96fcd0027808a5"_hex; - r = false; // result = invalid + s = "43fe92f5ab6b2583fbba40b493ce45f9eb5f9e0254c6e2547ed4b9543a2c3a927d5b9c1c12525f4f94fcddcc4c586f4e16626ef48fb0688e07eccf77dc65a26c28f374aa4bcca05c72555e7f54d896065f3d44a728bd2ef9c8adfa698b963c16b13c1d5346457beb6a66c964330e0945dafc5bf75f4ff26e84c0a8bbc854c6c877ffad409b11627ba951181939ba9a2e28764de34704a5575f43f70c3f4bc5d74f4d651e25f32fe238f193d4ca55c04463dafcc2bfe50e017fe9d3bd319311bd2d972f5e04d8324a4b26842fd66115ebd139440fe89bdd55d10e14aea5d9e3f6a5c5fac4acada9d9e2006e6a0c36f4b94956493c9a582eab35c69c9add972d40"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4791,8 +4803,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "37a98cbe608f10cdefb4d787a23681902d7a3a02837438ffcc778091a12dc473aa6cd38d7abe75c362a877456e4b29db13659b4f3d9bb1ef73e0cab33ec2b11d06782ae4ca0a13d15f8856223abe0131f5ec5437b2b001e4f5903a78afd4c46d6a47af171271f3a4cf267b0afec0a1f368a789f4c03193e2f365fe6c0b8dcce1b2f1e6f1e0cbd7c6f1a98a8ab747bbd27485aa61ac84e837a95a178efba0b23725c53f00c94b3cee6831f4d000ecfe84af2a63f341e7bfc2cef7f5654d253654139245c4205c0b2418e8de35da690a8884507134a0b2f0bb9d20eb8f39fb134adbf171f1a8edb4e1489671005f8474708708d1a627d22c76b8ed0993a9c16a6b635fc090e3b38b96f37b28ec44089b17173647eae6ac4439bac2019ae8b928d094665aed8ba0ff89c308097b1e7ba74fd2579f1c21f63296712cf4f5405cf0f3eb60ae1600a5b8d717a09ed23034368c9739ef2f880c659bbfe855f809adbe231ef20d0eb6300f2b6ff02e9f3666876971a9d41f8f0f8fe954f00bf52c0ce013"_hex; - r = false; // result = invalid + s = "8998ed832b496be462a431b1b32c3696374d816bbdd2e348d98795a5ad27b02766aca9b161d8e8c94370fa38c56ab0ea9aeaa0bb37fee33a7bc27024024d321b25504874343cbd50dc31ef1429b16e2ecf53deeef15b4a8e5a447cc3f1b212179ccc5ae4a62e5af2127c02e53e8a23cec5f1863ed53e62f472ea65d599272a5e4c0a0802553f31dd22103b7fb7155fc8ef4a3a7061f78f6e72c265e561436159722da4b8850204a7d85f7d45c18f5ed4e452cb146c47963e38cd29f2dd3652720fd4206bf96ba2c7601895c8771d1b73f03fa88ecf81b8a8f2f290094d85521048ae0c097460cf8340ab32262115b5332abd75950d46ae77ff03cb618dd69e52"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4802,8 +4814,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2c269aac4605a5e25a660071fba9f97d4b9e4c0f0d2e567459e5620884f889cbfb33ea6094feb6d2817747859f8c203c548d5bda97821c3b6744711ed3f0bf02954ef75ad6b9afcb6872273f1c164ba168db9a8bd72d715bef221420491ab6b67d5f4847743770ed4136280bda363c1fcc2f35ddadd1be3093eede6922cb95e3e206d02d98e91194a7fd39c304c848c1731e1f90e8a9433db71d94e7d76d7b5f2fdabfe20e8e1ac7deb56f81331fedd7a7e9ace76887dba2fcd72ebd2017f5bb85de1cd309b3b7f7fbb9d8901f61bf8992fd9a63f861e8054c9d4fc1472786d6efec3cf4bd1543116e2bf36698de85a6a3c17c200c73001b3218e72b8bd515f9f96d9ced500a1c6da4c0173f35ba24ee746e51cfc3ef00ce60441031bdcc2742d981833006bc05a513f1cf67d6a9e59ad4acc029995608fd05b744d48be829148552e13c7c76450f30b5acd4fab819a71c158c82d587fa7e839c3959a8150395f567387024f7b786006ec0b1f6960d3b5de347742eda16bc76e3359becd2e184"_hex; - r = false; // result = invalid + s = "4e63d527dd005236fbe35e838f51ffb09afd2669b684d9bf7488ba49730154be9147a63dd33473ebf547272cb6105b114f72f544e4568d45dc814a3c5250acbcbcab008dcaed3458e02159bf5be9e4b20420f9e4c075d27bb980748528327a1bbbc93f63db57ab03e7fd86c61db3ff8c39bf7d818a26d573fe57f5010718021e45299624e25a2f5acabcb3a1ca608fbde28d13cf74a3f58d283fa5a41e875854cc480c5948d2c0d57f2b857988a28e34a7dc5159c86ae1f970f3e318e9dc9d29641a521eabc66353ff0dbea4f237bce4ae546b8d05f6ad19a4ad8d4cd086b22458b311eb970ca33c484f0b9dc544ed4ddd88e7f70edc32702d66ba570b749428"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4813,8 +4825,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a2009e307ff24560348c7d796e1d69c5726c8389eb26423ce21cdb701623343a25d2a4841f994f3933fa82242f9d525464e3b6c770584567dd8bff3ae75f22f94139a9ba2612063e8117a23adbf72fb8c425aec994219c16d42299682eeffce61f4a0663d173980066009d542f09fe1186a28698109e0d5ec28ee2848e0a91185b492e53f67123c3f6d81826a943c60cd888e7d332310838f306913e3321c5ca89794f27a0ed36c697abcf665be1253637cf2226d7591884a9e7636b8f49972df71dabb14b6a4cfc4b4689e3c37869043bc0d802fb906a902a24b4445ada3b51f7661cff461c4b7b5a59c1974a8fda528039006f1a860eef799f15f606ec8fc23a20d4b80c01a639d34b9de0eaaef84855082e443f9a85964766473326d6ab6bf49f198c62269356e28eb920f858f3695cdcd77f3fb513121470c64c25f305a00977d0d61ab75143bac7eb57d9c99c8d51ddeefc41e3929f35da3dd544f55d878a9abdc0ead983a08d3d35d54b2afd653f61ddecfbbd936dc6d9721a959aac0c"_hex; - r = false; // result = invalid + s = "063b7dddb7483a77af978f1f09180b98557643574b40522da25e8636d5e5a71888c79ebc5de9ba6ac0e4c30c8dbcc4399661b117e4252d980822cee7cbd4d2aed3a10f91011d11ff92228d02393cadac68030123f52529d76ca2d41546cbfbfd28a43c5d52026ff582a6bcdd10a3dd944fd7232bb950ed162f8827a5625ff322bf98e079dedc770e4d586a7f28b4e19452a353eef2defdf56e0d07dc2fe5625d91651629c5b7bf6e180dd27a1cb51787ff264f0138b46bbbd32c5e1ea63722b4baa8e235f27e283ba6c46f1af28bd744e2db92e326ee7139b9e5370fa5b5e2c2bb79b60c9f9e305a8acaf29340edabf7531d17fffca6f43ff07ef5cccb50eb32"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4824,8 +4836,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8431b3c74190f8c0086d779639fed56544ad0fc422dabb1b5dbb600a7021a2e25fd9e69ef305d0a3da9af97e24ecefc11f515412edcc6a6685b3c4e8c251386a7728e3add07ccee395a851e5c1330fdd05c033269fe7a52df15a1e81764facb46718ddf598a83943d35716e3fe1f216b2e17075fde3751148290040a56535eba7e5d05ce7738d2fc7f6e8450bec68a0a35a5cbe8aa3ca0adca3886bcde8649fe491c4629be8a1b8eca64cdb226eb6a0e32397a7e0dffca2fe7b27b99754a428ba300cd62d0ee228e925d96418e75138f56d7219198d04dd7713c8e8d606d7a9bfa9f1b9d731ab9e0ec8553d1515a32994ef29f2d2e9c1ce8a32ebf8d970121655810b1afcb96fbfa0495c39b759921624498acdfc8d9abe95a0693e04ff6eaf8939e4961c32b86f3a5af479d294d6dbd01f90437cf6f830db644ad9466262333829fc2243ed32ca9fb08b9b56633bacc450d86af6b4733034ab987db01a118c5c41b9b792a83be1b4e068216cb642b11075a43efe7e3a81f0872c4481ad696eb"_hex; - r = false; // result = invalid + s = "543ffa8db719767c9eaeacdee487311bd4c1d3b6bca2a07c6a3989eaad5f39042dae40b45a9b5aff326a2994f36f0a2a59ff3d46a3d4abc705d26afa3cd35a35bb662292c6ae3a47cea9b32de37cdadf797cf72c7c62f7c9b61024ad8c7c82f5efa27c8dfac28840677116183f1f0721fa36ccfc13ee5863589b0433b20b6e1c954cca97b3796232a3b0b2b6205382de80db8487bd00b620a4b423acfcaad649a683b915de7caa65a4efa6b0a1249a6d90348171b816deb0cf8c99013ffd84b8ebdc660866b56545de6dc4aa23156cd86c5bf3d5765ab48d8d601f43dc898ea6e05fc0460a28bfa2a776e8917c59f02f1c8e1cc454558658768acfd717718c6b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4835,7 +4847,7351 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "421b2b4795661bf967bf5e679f69d06c0fb9a02192d839a440d364533de5c3f620f8531a68603119ec4045391c8f3ed297ba295bc1215d4c4f0f315a73b338f31547c110d4fa1e3deb385eeccc2d57e03c0f6309f6c3c28e4d837d22787bc0b6d626201da55b605f4e8522ef75b92dd1d6dfa0a177b0e666f04fd211b713fce8b2fdd96bfd4c07e64e4b8253289e400da12fd99c2c0620395208b7f2d04a2eb696f9992b0b0485e3147c5b18aba35c8a90d10b0429f3fec71e59d019f270a5e0cb0fe0b5eef004461b5c6286f33ccda3ef358d99784500084cfb5c9d3ed8e1c5327c4ce81eb1ca34390ff613807f5a24e0428eb48c97900fe9c3dd68d201a1d2a55a20174adbed47e53a0d0f032acd4d65978c8afb55487af30439bb2f151e343a47b2ca3b5e082ea741e375885377a2e3769c712f4d4144d80c2a6f2b1f0fe41e9fdf9bb43d7370332ca51bb2f1325f4d1aefcb5dbc42614f9cf11a4ac72eaa350a9c2222a6e2d82f6aa29df12b33979fff1ea265fc2a5055600b9f96c8688f"_hex; + s = "5dec8ec2a5ccc79cec9d4455a2479f562c049430d572b98e5bd44b83ccf6a08d94cffe4699dd29568dbecddbd28c92c771e37e2ce716ab7455e4a92ad87f9e5b76aa1ef1a08e3a77633bc71b3756e3ac956eb8d5974cb50b88a6f49f36d5d0e84bfc4d379621fde3bdfebfd9cd916e1294c854330218d50aef788aaff97e68f7cdb2e7a12e8350dedad00a0ede2d72fe294effd152ec33f95d66fdc648904c657eaf6fb0c322f5881bdc1f16305c3ef90c3df597a0e75222b82d79f5d6dfd913b2f9620092f418a3e67c48823b85e96b1fe85d306f3653a799811a1ed3dc612461383a6c1eeac737dbd2c6c20fbb56567bf544d199a474bdc38621c8b9bc7920"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4da37914ee4ecf0c0973cc89f9476e2d872eeb2fdb3eddf6fcbcad9b21b8eeff2dde26be6a26d5d5aae6300b4caf4f77f2ab7907af2434026c3369d76268c88b1a4c555c9d54723b17ac48ca1118d94e147a4c63c2c4baefd244235cde4f9c254bce8c8c21b45b7a2fd9d5971b21abad1bef74b9d5583d352ef67483ee611ff3f97198c023cfc56c667c81ef03bda4729b2eff85c24e75aafdaaa4c0f47419d8a63fb2ff72c074ffe985ec7f88bb0e93cfd375c656137722fc6aa45069771c6c66d4b109a5dfd8500331d8d840edf9a5c8024b2520daa56641ead240033b0aa300ff3f951009ac46a97ab9311f8af9467b8ecbde36c9744e44168314f092529d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "755f090081189878ea1ad03070944d3466c773ffb2632b045ea28655c8527488aca42357718436f6c9222a16ac61ae8d752ea18dcd9f0c5370e76730c31eeb772755e3a763509a9126b64007341c5fa48bf95bbf3e3a9ddc36096625b0f6bb27108dc1c4bfa191d66a403e11df2838fd401215cd2dcfb5806ad0955edc2feda4a19e0d84968a6e1756036bf0aac8990d7b8bdbe45a6c0edd8f55720f105d70be7e42aac114a528f1b3beb81ae796d455beb05b4936ea3b0893e8c2fceb8a6b8e1bb6de37c40e4b3da2a1ebe9a52244a5f4bbd1ee201d218d3a120d6add7171ab56da3062de4952495b602dcfb4404d0c900144bef9d46cbce6d7ef936160342c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "85a965f4cfddb17eb81195bdcb081d307fd7f218de37c6daf043d1be8c9bdfa85b3a7a0951569e670cfcc695365dc45e3b9e44a7d79fdc3b8ba92912a642ecbcea85d56654161b777b280b46be78abf7f0ee220dda1ae3eb4e39fa7ae4d2511d4111b31fe17dfeb897bad9ffb1fb367076ab336b1f48530f7d39f106cba2fb8961e59ed3b060c64f5b2873ee51ae59526e782afd794905923c8753be18ec9cd3791e96eb00433548f2f2da478053c7bc222281e7342a0510224c9f9e53c082a11331f0923c44da8533b56563adb781c76f4bc303ac5754bd6d7448df0e23e41063992ce6abb3d31378be040aa815fcbfb333559fb402124c53f1a5b4e6fab559"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "84a55f8bd78994a9e204bf57292e1c29d663a8963c01225686cd646ff8b23f7ce6be18817bfd284d2649b075fbfe233a2f8cd59ae465af14602108da6bdad31fc97500f791ae1bf4459a4b3be350362b46f84697742c6fb6671533cbe73dd15304e7c569c673c799227a6523a54eaa4e4abba2e451c3f75cff2ffa6cbd9b04cf4a73a35e6bbccb4445a99a1380fbfc2cdd5fda03bde573b4bb88a205fbb38344648ab03829f4e3687117ef7c12522ade2ef736b24633ddefd0ce6da208e860ca6f3a79492bf4db6b466500371e40de78d5d2708c2a97999239e38852de7a02981203c8402274cb1aa24fdb3e2cd27a4305b15797a498145848e74d5dedab41f8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2f84141b773914947f72db6981d6d0815aa77fa8ffb0444c13b7612d6d89038b02eb60a7641dec20079d6d87961502330f228b936aba65ff8c59a651656bc3ad7a3131e55312d334da0f600f3538f3b65ed61a5d298e32f74453385d09ae45eb93a4d35ed2dd7a7497085d5d3a36e65f1a0bd8683480397dad3b304e49cee02201a9a1ca5b778e91e68ea35ff72827f968426465845698ac0999f7311e5c532438e8fb494d8d92efb520293c503cedac0036fb42907e78377f897bd7b94328f6a1a594ea2ce3770a49bff8702e534798e1eff6324310c6ecc71e5363a0b23f5604a2aa245808b72c9f6eee364bcbb22e8f144460c5300d3f89f3b8b6fd26c15f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1c6cc57e11fa138c36bdb069b0787fb67a46c70f39124ab2aa2326386e0b055b8195897e024a7e43b7840df0c0d94459830cac7e33ec3f127cb1e9563167b61b3767964122a243e95b15ba9c8e1a992e20d4e70ce14134f932cb5453e795d84fe5856dc5ce39da38af6ea4b6029fafa7f804977ed075c30412ffefeef27277e541e3877f439e49154bf25383c9517162b1d6e469f5e861c385f2e8c45fecbd26504747ce9378f3f25a77ada8ba8343f50cb040f2f8c224d16834c6a4d97b4b8af5d1a08598e9b7c0fb1026ee19feb2a7063f73d78bb9cec8f499c4f66c1fe55049d4fa183b1a5779240b9a7c908c84ef1405e8ed3c53cafb92956d1ba2445ac8"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "077b81fdd849f2ef237cf278e10e506dde35069cc046c4d491cf74ce419f11e4cadd66ab1acb99a33f23654a65c860c9901ca1f8ebca29f0cd78e8eda1f69eca20eb12a6c1448eb679fe5255fdf634f3fe2e716c590b5345515c02636a4f2ba30a2b62efcf5cdc13a6c09757b2d1ebe5943a7804249f5ce9901d95b3030eaa0a2065d9fb5eac8006a176bce1f4ac537941c6d74c9dc73e85264ab058cf5043633535b09abafff891ca6a83c45a7e998de6c8b9b275ae9fd0e7e0ada7ce1434146ab6bd86a6eb790d724b8d3ff921231f92d5fd86f0634ec45b911b07cdd6f0fe275f22ae2219f9497db982e55033dd9867357e6a09a9f4dc281c6aa36d8d984f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "048d13daae417db317d655fd73b112cfeb8cb8be13cb34bf3235cea1e81c4248a7657a005ce89d81fe85f4706a478dd9739fe438373edf453db22fc3480edcaad7acfbee27424173ab89dc37aa50c722a9404bf697f333c5cce65c0394c3a86845029bab0f3e2be57bd98b707e3caeb270d5c0ca72f7fb11d8d6e4717cd0dd6dec4ec5b0829c66d44ecfbcf0b9b46aad8f192c66f1da67c2520fbbb8cf847278ffc665b7d97760ed0581cfa4ebba4333f03f3f7d30b366ee313a8dc3eaa68f1c596b87a848ecfcffeceb961f0e970da56aecad945dd78660446bcf7d5890d0f66ec012c8f2a84a38ac528050a9dc883fbe95b7bc9f289f7762292ee51133ecd2"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6970f7dfb793edd1ad41c0d6f57137a9ebff66e04efbfb82c882df25d24f0913b9c906f4214b2b776e6cd6c158f701af8e17487fa77dcc9d66732c568356104ae5450e1e2559d3475cb27858ff8bae188cfb778a587eb243ff6adec6117eae055ffa5de62cf50ee16e0924b0afeb927bad811316a1c2abf01b6a72de25ac30e466d0051d1fea51ca2cf160cddfc9a373d4c796a19885237afac7aac698cbfdc2d10de86c58de9f6597cf5a701d2281f7343176cbea53f088bd7c5c755219066f4b35ccda85c7c8e67ca08cb70a02439a49238e5309f6bd647e1076d67b0b339bf4d5323ddc1e406b13c29010bc325cc17c0c338c38102fb523bf0f4f341c22c4"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "67bc94022123f356e465b4f42ea02200cc8b526ea393a0c35da34e612b8f7d85853ea31a0b869515ee783ef903f86186b97eb7269420cc1a3c55295119ecbd51ca47c7b3caf4ac6a53433d3aa23d953606ce3692a248c9e43ea5eb067533f4f03369417c8c5d469e9c56b2dd1a60b7a0c520de2ed2d16cdbc323ca43dcb0d0886be11ccf1dd4ec687e205d33eb771531a9bb46d7847aee7017690bd1748b1d39b6c669342a83eb93a070718970c161e8c4c3cfcd83e562d9e4fc87abc1882b16f1c63dfde2d34e230ebc9959e0936fb48aabe716ee751fc4abc62007e4cb875dabe9f7a5533d99514b5296d481df6481ad3bdfeea5a85fc6cfb928ffaad6584b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "84567b5a2cd8993fa4297e61067d1d0b34a4d7015c46438bf4e02cdc934c3c586f9f80316307928cb20fd4637852674d99a560352c931559e26e414d67eae6661a34a52809d4a8e1e9b94c72e5afdccc78bcd99f444cbf4617c18f481b36fa36d4dcef140986f2fe6fecdf8864a99d32cf2ca43e7b30d9a5faa61237177ece4fae0f03debc9dc07d1b9de0eeccb76a8b84852bd534cbad9b0845d7f9e9af5d55ff49832ef725e74fd91c45a6bf9d2a519d0c0b0c4e42b42eaaf5b1cc5aeaf18228695838cfab32a47b1b048ff6cd7833ba54d8b83afc3a45fe546b68cc26434b1021217c1a5ee8254ed50508cf79521abbccf81e9d3ade87f236b13b2aef8151"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3a8c6928a87795c3025ec336cbf4aaa80e1ca6e758c41c7df1b63e223cc140e7703815300ea7ca9c169a972a3049bcfa9452fafa34e0491c99a1867d6f0e1ff45be4feb071c9c1f2e72c12f8aaa2a9542e0a3a037305e57fdc8f2584036b619ca5a30bae66e8c212c8e2e2013209f502bd6478d112bfba869427870e84023ca06229969818ed557e5617c6ccc23f908423c87bbdb03d011d328c81f0c24057d8245bb8d4f861dc76d3a9eed3e31a16af114147d7b17b4753b8294290a3c8fd3d135d7ec144f2eed11e4dbd4dc1e89d96a06d7860e5b1f806e5d15badbe05a310b9da804abb41297b179cf4e8d077258b2f7df549092ec6c8e7274f25aaf257fb"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0279b5b3e03f864b05e41a6e964c5cea2b777be5e670bbc43d2550c9c443bdf68069a0eb91e4ef95dc9918eb1786a123acb034fbdef2690e5f2f4f5aa0dd10627342b90f2c3ec1e3b6ec77c01a92b0c24e7760cb49f845a168afc256686dc428f48667d1971d56ad81153e7a54a59f10a4b00986d9752f1ba11774923374a990996388bc26dae6be26cdbb4c1eb76cd0d98532720e94caa2904fed7b937cd94481e4212037c628df3e213d5d856776a337ecdb52a4d256b3267fb66f0cef10e39a5330a9899e103817ebe6c32c741dd4eff16f37fb6ac91facfbce7f467397739b1557f0ea4234cbd8d393abb1f842a2a182e8ad9047c7ed643bcfc02156b106"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "81297d38465c4346e408293d770242ca6e9ba2f2ea9a66dd932eb3bf42e72bad344ff31bf058e38bdc716e5a747963e6eb96ea1a48813f39200596d6d589f2164bab35c15f545f80d10276eb6d3b7d13bc7bfebfd0f6949fd7547c45266fe6573389c2343e3adf9fd64ba627baed14e0e753a8fb75a3d1821e2fd03f5422bab3e71dede7470b43449e7e49dec566464fde545a1ca53a567ae460a1d994d295355eb301048413cc92aa34963fc59e054e88bbf2af2ebb0ac0df18b06d1c5d9ddc4f5c3046c5b609a9965a646db2a1c70b0c851e7aac01a5df8e2c822300d3732ec182e3d868adb99d6c0186cc5dd17dd8c89658c0ae021475fae278e7ff464501"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "73b38e74ba14249c5fb4d2b3923e2a848898a2a5b1b9e6c17848177e6b0053fbf768d5b393088c3b7c5e12d41d24cbbf214a5bebbea6661229ca55f79b76b1d1118a2f7a6a96f36f88e1388283d446b8f8fa4b10b3a6d8c54ca207ceeed96e06147475a3d47d68cb2790dd0ada7d816fc1edac6e10f4f8e6bcd807cb70d995d7d6029dc774b1ab86de3b31c4fe1033517a64163b4867861d6ca0bacb3e32ffe4761de071a03fb79f8bae8515973a4eda2d7676cdf5ff05974654f97d6dadc6bde754f7b297264945b3bb69b950000a4d597c071fc1b9198fc1ade0047bcc7e79dca09e8f01bf4ab46183cd48c8b243865eb6267f0974e29072e38f65957594b9"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "56502d3cc755778ce731048dfff628943f94a966763917f8a9244be934208ca6fff2100faeddea5693273b965e62e08672a2ae4037b2a6681e1037ec8d4f00b7ca75b792d596e01f6312733929751dcb629ab54a6f910a57dc01895cc92d2338b4ddb1271be183f906e128ecdcb5cafe1096beac38e3e49eac7ebca6c91bd3900e83d96910feb192496aae8f55ceac814e6829d9c068f2619b048f1e30e2cc0b7d64e7e335ebc1b566f12b545a5e610fbf5317a2efcfd5d18adebe17b3b71bd788bbd581afda953dead19a0241c6beb851581249d780e780be43c995f23e90ea4190fca6b9e81885031beebe6a65a53db274bede417c35e7e1e597c6610a1ce5"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c49a57abc1b7cdd2699b2d64c9ed240c4ea19ce2dce960f611b5264acd37fc4e1efb3ebb5699a4e2292d9d63dde3b80f30c34118614c617444d7e2b770d6434c58b176db042b74810b40fac6006bfd84a51e32aee8900ff40bc8de3fc77277f9c34c174769afe2bf9c8674712c645db823741a4425043b6152940bce8eadfce213dc4de62fddb626fd12b56efbdd3fbf0b570dfce0ef3ee7b3f7c7ac383fca18e04a4b347fd589e30f283ce56fa60b9761e9d5f584b493062f490680ddb7a2a6a23ba0145ab184cd8e3c5a2f2b297b85db51438233db7d3c72739b7074f6d7a524ad83aea2465f6c1bb236d5ee34e5f66297d549679574a9847ec45180a8aab"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "41abeab011f029748cd5651c173ffb01f3a5ffb4e198549bacbf8f98523b404791704f52c8ce631d77b31066b1891728e761047a0464e8160fc6093c9ece6f359860da1ce8b229327cd683a2854047aee8afd36540d35c424a19f0db5ea444cf91cdc548dbb9a196f3aac9dc9c4365522618c354c0d99e7a0efe40a2b69b9b99d18f3b941044ab37e0e564543a51cc919870c38a4843d3ff4c6a7d503dd38126b5b76ae7736c9e1790f64f5f6e2faac7fadca3a8f75e6998270004f1836624b580e1430a31c386506b9def2adbcb01c716b74f6a4e1e85e55623d8d3dc4fe8553e1e1feb75eaa4c71829315f67b46c2e018caed17c9dc2a31642ce574a599ffd"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "51c0e29286c44d53354c2e11b057c373690cc8a6979ac1e184bd4bdf560c0a3fa76e80aabd7041b0b1cb40e703966312b8037dc40a36acd170ec8fc70e35c1edb41d9fcc8ddafa54bc1e96199b842c72f2421803f8e95c734f19ac169e581fb3ce0da042108b21218f28faacf7141baa0e2b72fc3bd38930f4ab139c1347a9806115b25d3cad3e00fc29296b2d90e403e5ad0dbb9901dd2855fb49f4b7c9500e9428e4037abd6aa767b604edf426cc68e39bacd9862dd61612f0f5c5666e1593bdcc6ba38682f19c5512b1217f05d1905bc47eff2625ea5d6581f3657caa3d84ea9b948aadce632b3bd4ff33699f384f618350b93a223e037d6790bdf7be128b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8270bd31d9183e02c4423798ea8f1092bdabc33e144cb9e79187586cf92a2239cf52ff324848461bcc89d0409574655b8374bca84c38df11facf035a6f54f25a7c2e691adaa074d5ebc08b0d20b45346679d94da1fc67f57444a9663704bcce7a6964a7e7d6a98bc89b674bd3037b15639ec5bea57c313331dfdb0bc0d2017f1381cf5f29245af5bace9b7a690b573bc7abd9c36fce49307f0524b37b29776fed6722bcef049e566c8a5a0db44ca6932bf11e2e7447b82318c71eacd164093eaf40b7b122f306cbae65098b68b5b920e96f2143637db6d70070036c2cfd64db05ac87d77806d53096bc63d6fbbf2efc29d8514c8b909ab79495a04639f27b882"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "690df1372a35a30d9c76a4bf91cb951cff5291bccf26a1043bf84805d75d27a28c0567d353a95685d3411acde938df718f2c845d72c4676044f692e8ceda2b22da5fdf32bf493462fc83c59cd8e5ed0f62f607bfc6d04fa38a6b01a5b3cb6b58d55d9fc2c0a36fc4ab80fa3a0dff60d55a0ca946c568451616441fc9f14685077388a069c3892f1b208c5431b69bcd5e6ca8f789e210f63af6b4ead0a8f3380e818f0463b2287599f5c4cc08bffc460ae8404069cbc01e2b1fef6fdaa810478abcabad6b7405d01e5d3f44884ed0c3d69b614b2c794721066887e5389d72fc634d14716f0cec8fbea5a12c70cf6b4471df4f46058c0db75ad3783b2dfe3ce2d0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "13ed9422722bfb8b6172cb5656b9951610f509bfff5d10e2b91ddcb4c2e8ca58879a7db943375343fdb794302c28e3db0e1b850e8428653c09208dfd46f065e3996927d85979927930b89ae12590753ff03889b8eab41acee725b7092472ed00ad66d00a96370c909c2f39fb6300175d510b368d3ec06ebeb0f62f179e191fc1ac9f7abc36d19d0180f50f7a33337daaf73a76f9b38361e91ed7c0af2c9a3519b4f538c532f3bccab27258d711856b29c41f215ac87f6c7f3ea52c3bf30db5e7930f44e489205396e94c0bf11700499b5a72b26c9f3641c45bb248a235b42c410a908e5ddefcb481ae619b23f8a5ed7afc1a9cd782020aa119af745abecbfc57"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "24faf2f1b73eeca67814b066b8099b41a973b1c55f319d5e3f7a9943efb958e8f5a7ad9c9a7dfd64e2be0231d341a822a8ce31cf3e008e65e9e7ff7d7076c3ec62632a4c5cc4bc867c54c9789cb248bcd5afd0f8a2fa8b1884f630a0663758a6d472e4e7a085fdcdddcb1917630dc5e19857569208108123c0e87089f2f247b6dcd5940bc35c25dc10718649effbb56048bc03991851b0d50cb82eba64e6726c41567b5c708a8311c22e477a4614a2bb476e5fdb8cd7f14f461118bec1b6defc26a56df14ec3f64707d3d462378f6de72499639c01b6a745402fa46fb09578f52ac50f9db82c83e3041745300029b665701c595476e3e8651f86e1ffa6e0a045"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "73cb10d068ce0168ddabc2dc7ccaef8026edd5517c0de9b4c8becf660ba62c3df0fc47710a9628ea478cc75adcae248bdcd3c555cebbc4f1d99ec1f6c0674e092548e20c747f84959cbd0a5589b8db3e464889d537c6977f13668fd02ceebad3d74d7ade6deb16c6c8c5d30fb0778c3db5d7cc9df986596a0768a0d30c199fb8ffe5511d99c8592679febb5f8851a388f291e194fcd19b9423ad4b47f492dd720b9f38c3b0b20bcb816d463ab9680bfde66132a54a8675be19944a5e648e0bf942427f404d9f810f2a9d4626df659f54b6a5d3a6878e113c48b733066b3a83f5b26ac75f20dfbb8efc1ffbdc2cb6b9f198545f95ca0c3f54dec2f8307fb1b6dd"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3aa737bfa89b66e9ce0508aa68da6c9760d5de6c50e1dc472073d4f5f280794b8e5f2ed5446cd73bbfe29d54c7f7f5ba69880158809b447a39e0363a59f46f83ade8032c7dfd090784c582141a5e4a9114082a2d91538bf55d7370525f31c0209342d78d327c53e21a64d9c81330003dc63b84d1ff3dc7a63528153e3d3028b66ec2c58182fa818d3c333f69b6dc9935cb670fdeeb226bfec9f3f7d04f5aad6947444e72dff3c46858ff89ab9a642b697f8c37fc6d58abd30d7e07061cbd366a566c22784e84d836a8b4d550a0617c4ea1ae7af61e2c78c9c67bb50c0982098faa9e14bbe0bd007e81c6c556bb3ac19b05057d7b4efc0d3d4238943ed1a552b3"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1be82c7d86945e9d8bbbcbbf58216b20f2b44f68af6be2b538c52b0fa7809345aa227017a0854d462b74e287b20783cfd871fd85496dc39e8258b22e6befcefec67c69432ec269af2b4b348ec85ccc03a64523f038bf3dcd2de8cf6b6c6343b374419802d055902569d9188c9f7f795aa2ad22c8551392fedb3c5dadeeed4c1ea0ccf9ad237dbd73fc590f0920ba1ce11a130304bb3c4b923484a4922cdb87c032b16ba940885569e4a8a81fedf839f86e0d264e5c773b2530cfef13614de349779c08b9c18ca8e53348b62d9324c13e7222a99ef4b085cd8bb91d90b37e7bc6a5014a4906d7c3e5c59b56df9322a06434142bec6b066759658aa822c86bb5af"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1730655b946726d5db32d09c48c6b06937597b5766f4bea6d2a851faa90d83877887f3250ab9b8b4fef104a2fc0c22d603b28023087536c11da54fca390f4a3bd038e63ad1abf12c5bccf7f80519e941862dd673624ab04390a68fae6e1fc5874ca2dff234172cacf54c565fb999598b372523f4e3730acf43e3a747bc067215bb4f235133a7bc20a9dcf3916d619bfbf6abf0d565bb3e922fa93116725017bb7055e75b455de9b10f00716f448410f6ee84a5612d2646809050eb8b27bb8707b6026c168958b068c5406384e031768defd754d94bc497079982012edf7f966fa81a954e9c9be118001977773def1f29aed719e51e73fa618fb9d61fcbc4b34f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "264fa8d38bb793a078fe9d9f39a484a8d42f4aae23c9486e2d987c7fd18a3e38111c78d4e90a4b0152ef18bcddfc346b901e3029b11ad5c95f92f0c53b62cc7b1f8e489392b323b81f5502e69920e7bddcfd212e32233f569d42ac9c511779de6618ec5411a95475126455e9d3d83d35620eab93f18f7b9080be87298079c5aa2e31f612727d979c7571b7736a8cccf6f3f053cd9e25ec502c8d61ee4a2ac94a879452c4a9aa88c094f73dfe3dc31a5fa3d2802fe2400ee8885f5527100fc82222d4470c979eea045db6e068e9a1b09591754eade5dd48f401da26c44dcdc13ed482b2202b10212d99378cb0f848d19f67e3f3d5351c5698c72f38b2d7f71c0e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8908cf495fae96c593c04e0bc329ed29cb7fc151c8d66546057554b7f59e2da70b164dc6bc26aa19370903eaf5fb60a0c33ba9f8d39cc015a8a5e10e24d9d292227e1a52bd6640b8de82202c2effc973341e0dbf0bf7a47ffe500309699a9787fa74ced281ce129019df96930d66d1f95619abfd5127a85d9e0aa6757e7c8ea29fa339214074580b8181804bd224dd6d4be45c1681158ffac6ebf5399737b5538ead3fbbfa68b9407fe717d255c7e1f3cd02c6c2793095999d0e35493c67766ce320d4bc4c984bd4af0c1a6744357508c2bc23c2eac58b72a181963d7838e8f8d5f979ab3b9c505f177ac3350657cb84c52a4be3976141ca5727190a2f570c08"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9175f30fa7863284e06e3a81a23f56b639d0ae37a4f42779c71a6765e6a2e94aaf76fa32e7c29a8d936b9936bd02181c2de75a41a703e99d35ffd4dd3074803e77fddac42fb4ccdb5793b7e6a530297efc326559253d493a8677cebace5ce7b5f5b61c253b4512c3fd58ddc94a5e7c241bb4046ee1b3d955a80d02eacf0b231b3093cc17f18e84ad6d2631d225aff74f66f3e0afb1ed290e8ad10ba44ebb9e3ac198a17044c3abb4e41c4351a7d6d86847f654d3839870a78641aedcded01de60665d8edbbd9d7ff46953d2fcb6127c3e4864a7a64cd4872a2f7074e4ada781e25f18ab3b60d712775b45cac1230e403adcba7af3aad81e532490fda65c5f044"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "36f243ff8df76718fcb54fb3ee26a497df468d14cb2e9463797349c85de2fd05ccd1d3c8b969414add075a55c9c4eee7c1b046aa5a9b65c47db59c236ee44b165c38b224379d39b131b63b6df44d6119c947c01eaa14980df1a5e8d7d6e6c5e8306151b16dfd001773331a408b7442dd83a63adb705cdc171d4b43591817a7abec70ac6f85a73db930b651ade05c9d119b63937109ea17aaf72582427e174ce84a1b82b51cba8483d41d06dba51f0355db3e4f48aeeebc3df5942eaecac74ca56a588da107df4be3edd56c4510f12b85760da6676b778024fecaa217cd0f359834cf2fc94985136001d50cc7b38d6f7c7383d3ab58df97a464968aa651d6ddb0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7757a37d09443fcd3836e17cd254d3d03dc705d23f1d656112bf3aba485ee6220c7844912405d41978a94a2be8a16d8afb098b87f2b641e0f9a7d3845b02f10a7d63c2d871cd1d832679209e4a8c66095757b723557a7fcc9a7b6f6f9bc9a167364412905e38a843883fa7b9761e7fa664cd2bfb0a5f0043cf2a6eb7804ea07f79a6ca6633664b3813d8c6e95ab7f376182f315b7c6b043913e19759485d583fa92a4464d76140a9be4305fab54219dfe69590d6841f024bc29d48b39563b6053456dadcb8c7903c7bacbb3a80e3d0a8acfd222758b2647592ca4c4f2bb2a26a04ef15ed65e90c14272d15fb4e0464ed31e0a3203c6242c102f480aac6bcbc6a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1b7e55659dcbd51e3c3de5eb5cc2c4224009489948385cdc8d5e564a49402ae38c1e51f2fa9affe9575b2f768e21565c39b5c0ad107cc1e5e466cc77328b8919321ffefe5431cafcac48bd7d45fb2830a548cb1424e3c94ffbd85e9bc4e6392f56c2b6931a301230b37135e93e460a30026da53bb55e3c6adb68800b694172174615bd2e749e8678023cd7c07fa3021e3bbf75a7ce81ba849efecc3a7d8a0af088a5c437b114bf45be2d10d2280da8a6208049143620134c76933278d54c236065b795b005ffd7be8dcdbbbc7ad822f3ce7a0426dc4eb0194768470b0e7317466899f60c40ee3d49d7902b9c355f6cad7dc26386227c1fe8a264d3b7c0b830e8"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a2ada8ff1c1821fadf49dfc156293dd59ac8f51367633f73d2200bbb65bd960f7b888d1a843920044ce98528773f3d3df57de92f129c03e1f6d425d39ac83978c7c8ed7cdcc8d47a778350f99f8fde4f6028d5ea77d46091f98f72279c59fb39ff8f73b35ab1c6748970d325c65ff49fdf833e8c2f40621bb770f2dcbdfc34fb22422f0105f5f582c90be73e664c215cc6d89419a8909f0d13f6535182aa567d4e16a2f7ce1e562a6cda4582304a5cef821c538de46c68509f3936166c109da8ef13f2000117644024ee1ec10e8ee4056879c07a6604956e1d03828dae5ae0eb60c322dbc6ff183a57b258c06a2b837021d4df94baab66be636b505a5a5b2697"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4e856814cca0d9c39a2ad4efe2b425ca0ddf90634278255edb4b7f643a868ea468f8d1afeb72b1bb60455139f44c046ecc121354f1a9507accf5865aa1268448935790cd1b02604cd800f6f2f0aee5adda9bddb6b5b32e0504e2fe2012896ff9b8f670364ffe6e563e1a9a19b491ba3414f779863bc8bf411ee0e8a0e6ddf1b4d4a70bdf6a9a743818be75628773558bad898e4842fa9727770a15a6aabde3b503709d1e9f602f6fb23115aa46706cc78e48bfe57cc1fc4409c4f1b5f440a3281f955b73eaa662adb9fffaa40b4a8495659625c6b7b51218df928d51cd66f59c25d7b94b798c9fb6e97b43ade5f4d17f59111deeb03d442edfd144f26d3df606"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7dab5f7f0430ba2ed6dc53d9db80579ad10343b72a9d8a37ce0bb38403224a4abab252c3a0b5a950170d2f663ff4a8d03217e289d715b27c069432c5fc9591972f1b4ac468ab8e933c1fd4831978c0381ff9b8ec85baaed76d1351a8abc38a53329e9c8bb3c1f77a8bd15c29e509b198d46bb28c8d98f03c01f9ced381d24ed9d28ffd1d2eab5416ed5754ccbfc1214b5ebc3339f5a6d667581fee46d60eaec42074de8200d71e1773a9c83061f2ba4b9a2475f552f9ba99fec5028a020f4ac2208196f55c9fa8901c31ac31fbf671be577c9cf64f7fbf3ef7ed60132f2a204f6589d23bbcac7a87dcd46607871988b5f9afa5299f35562d58e93478f1d973ab"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7b677618a244ccf2d2b9ad60413580b07be0460cbcb449e663f1d3504772c369684eb6fa5a3a18e2bde19f8f2584a3a3204bc9026c492137738058ae433d68836889e72aecdbe0385c9fd56c4df102d979f7ed6b59c1be1627575be24401bbaa88ec2346f6633e8b01afff790a4ec4bc1900214d8b9d34f29e0a548e3acef57c197425afac9e4dc2b9d8b9da30e771e34740e5780a52d028ff2016399f78a802f032b92e9f1c4c9b9d8ba9be494f8e652c43cc0a0b4952b5d03795359a130e4cbb0708dde79db136f256f1dd885f340e7a870fb4c3e8efe2bd20deb63fc63a01a8e1161eee493e4bda9879c814d9f16123071dce45209341c54476539a9b1a2f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2a69e572a00d5d2fab1f91c04c151ab21e1cda5a7675b9e6f67277b120781494f5ace1ad3cdf78e6b6022eece7db55301f5749966c89df5dbf2852bdb182a75baa295697fb1e78122400d013e579cecf3789396102aa494623b5a4145c9bba954e80473fe613513cb9fcaa6792ba67660a9a754d6ed6e3568079a7966396794c1ab9016cf980dd3963179c8f3f0c010f3f136c4b611170fc11c133836cce42fd43952c00d3a7dd868b1715da5ef403e93a64673b15ed114e671caac4109bd2392b43062434c19a68dfbb71938aa8d45b96711950380de2a1c259d770cc5e98ae79fab1a7fda2f53e3098aba41b6fc486b521eb330bb226d0f95fd14aa83e2b14"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "36536ad1227a5d13acae18d8233a00d21e8064b14964a6d0fdb43ce46a76b9ee1749d77d82227d5bbb031ecbcb2030586360460ce3bf14c7a4d1a0202be3a46913913498b3390cdf96ee89914e7e78548f902a175a7f5f35b48838add2418b25cb7f919c1a0ca558f9ba77dfb6e4df85432071ba78fb6fd0edcd343f8c735f061ca9033e5b3441756188ed588564902602e18745a5ce8b57e3af413173801ddf0cc914d1b4d29e3377110a7b844be6c19773f9db22d5b266b12e8e3d4833b721b1497fe7194c0fb4e3d83ea9193e0a12053680a1396ca5fbf69a717758c5bff5b794ea18e56c0e82af3a1b97f6420f4d268f298f75d7c3a7b820d5557b44d035"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "325957b2999e0ee32b5ef7302fde0299c7c3647ee225d51ff330f7cc67b6b406cc4dbfd6a33ab2c831c78fc01685c4c3bea94f2194cdde48b6ed1e87f5984de990b5a8525470dd23153e329660bf31e433159addf094b6edac8f118d9fe59c34b83db1dfd26df7154d13e874830e42cad61cb3186fa80b54b7d7ec9da3274d2544dfb42bd8f29a3bcf976752589ece5b731f63f3b072b7bf95b930fef428c121560e1daae7d8636a5f40312786dadb81c07577d4a04ac94dbaf9b161a7f8987fae51077a7caa74da3c84e46c3e1000f2590ac2b0c04d17a7a3cbddd639e762e80d30608289bc6b7211d69af76602d2ef33c5750cb3c183c11450a3423d6dcf4a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "20c0e1476060b1ed708c5f7e15d973eb79f23c14d6746cf1f1c0fdc0fa9c3b2acf6593f6d67a541ee279751b384df714a3ae13c1919947638504f0caa2c84291ea00f5b323b38e720035e8ba409b0ad77ca1ccfe909582c4de83e32661be7da06950d959ee812471d878563c75469ed82ddf806a06a4859166d7e7a65953779f9f1a3b72a2063b5c5e6b546beb42bd7a41cca54ff06abfd093a9470202856da9b8709bf1615d7a4520f6842ed29c8911c701e312669d8f7927ea16e4519cb573ac1915061407e957d0ad1e2e732c4f7c75f4c5ee71f25d0aa6c55d2ef7af05deb50656dfce222cdb049a77e6c30d6d8cd1a88938be1cc04ddb1a542409e6a881"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "210413ed83069efa72a4215cae4e59f23edbd5d1385294cfca4a8408e69200d3bb73748ca484a5af10b5e665e23942c9e9672ace86228484a8ab0d76f8f5ba63d66c1c6b8d1c032f82c531e4a96856d19dae24b7e090955e9c5716643a81e6a4af6e67d4225f6c3ed2293b8e536c333aa82fc80386249590af1a60307d8787b50419772fa738a753a8d592cdcbd8eab403b744ab87fcf8d42b03040b74a6479acdb21b7b8262aa3d393d34a8f5a5cbc7966bfeaa771641d25611f1e9ecd8acd8532d0c79d3eb80b41c2c6ba03600dde2b555a5b2b7e5970921b6a7f2c341ed1ce44d70dbbf9f038acbed1a4d16004d48fe697ee38a6261c107a6c488f1330a57"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "19c1b847f37fe29638684cd2aaf0a8b09af6812685d503713d357d4c97cfa552703d3690f9f3c87d6c95ee417cd47f1ffcbdae96b01e31c59dd4519d5c0d8ac706b6a365394df9c7a49078b489fd612a07d147b98a4b58ce9a0f812f35dfb725e2b53ba807b891e87cb735deb40bae7bb1842c52b924a9413bc893450da1b36edf0a02f8835330a54a2b1ef7bda97f3cb9f3bf354a0c119eb54ef38aaacdcd60aa3e92272754de6d51a54994be7ab44c8dcb11dbd61a593a3ea71f4d616bf055749438f53225b1c0746c6c491c726664ef80e20391e510e6ac99ee8f7453848be2562c173b87742ba48b0596e3080a48e7091cedb9c23fb7d9208990381e815e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5da303d9c88ba80e7df9c1bb650e8317c601676af8fbadd86550d15da9aa9f3d465d2719096e738e922b8bbd1b2e032f7cdebb111266814641fc45857af8b10ebf328c9a434170101a04be7cb2559394debb8a5efac20c6ed858b13d185536270f056913790a4cd269c424075183620c6a312aca860f7d3d694bf5e969fd0fb9333f7e42e8955ace71d957f8eb9fe1965117684c2e73eb2dbdd97c1b2f7802dc68fb9824254b128055932399c796dd3ab14d62b917b7520760e678f7c5eafd82f6510906d959faad867c92a5bd8bbe8c1e64a34025621b20dfa166e37251bda6e76c296dc823acd8ddc73aaa29a5572fac2344f8d213c21e5fcfa1e50b8b2eba"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "71f92fa1a1d60a965e0fc90f260a322a561ae3d4017409566ff113b0d8f03022d96eb0129755de4d62d8b031c20c93b8c476c3dabfe00f15975029797f593a63a971d465940657a3f147a359fa8dc6f22d0e0b43cca953bed63117670e345ee6c12d2fec365a2b6b49433f1c1b2fd656c8604ce2d83112f457486b8bc5ad376568468487f3539a981ad9c8ebb196f49c797e7a4542e95d7ff77135f533be20222db369f59df8a4e9d081510698409828d0567e0d28a0c1cca2cf674027b18b51122800fc97cb45193592d264cf5e74f707287df9deb77a26f2323b3ec1c1c17be5e11cffcf4ced2508525026deed6b8cf84c5cf7a9ed19e322043a81c0f7f519"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "211b7ced5b5d0732453757fd3b828aad6d5fe12752d17e79577f7604f282037ce5df075908b53bee8eb9df54098c8c44f8da32fdf95b778a51f333ddcae7069a6e8afad390dce5640ae25597823f0bad036e50dcffc224f86c3ebf09e3ec0679019cf7637ab0b2ab77377266dc5762314bfcbd3a90cb7a3d7cdeb72585ca9a11e1965f029a29c769e003f6abe8bfc1214e4e0cd044d16d0eda0c7357f5a94a71af57d076baf455f56d0c27a437bb649aff9100d55d2988995eed9980999da0271c5c533ae9055a07302d65cf16bb26846ca04c87a72c2efb3355bf6c125524a445250535d984675ff99be9abc0c544fe3fe8d33a9442d2a57b98f159129b23e6"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "64b01c13163085cab7ace03109a35f5aaef67670699dff14720a7d9ca0afafe396746a997ff3efc0eaea70a658bf0eba2d0a146fe93dd5a8b45d8693054e52f4969cf021b6395c8b57abaeba260a4b2e6ffc328069ed30e992191bd17f7be889bfac716d24dfb47667a40eb72f7514ae2feae5ba11bc24793b3e324909fbff67f5000fe7e6e71986e2b79c7825aca40cf6c426def806d59415d6f477d321ef69ecc8eed7d061f242b088df548427ba6188cbedeaccc6dd4d75311658e4dde6d838a8049699893997b6e268d54d5ab13f7d1e38729d1e0f55ff607b74d6f869a5ef50980118047ac859d8cc57c79e0f3cf1f0562dd705689bb471c459c3cdcf4d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "73ae94e6749a14bf9e157305231ca7941d8cc42892410520060f916e1de657e11b50e42a4766c5e7b55494c605ad3324e78d80f8c4b31b1055a599a3b31843c900980ce057cb8bcf09906c8832a97536fba159723e7ef271a8017545bea5bc0f3cfe19f967f9ecfe0bc9f786daf5367be00456f97d4f3b69d932fc5d119779de21f7a4e0a9e80b65bbee18494c4c48c4be3a62a19b483bd56d194ff1c88cf146c2eac3fa2a05afaf3a813d5efe29342f6b0fba81c1241d565306d0936699dd20248689c5b6b4ec2f31a12c0d5909013ed97799c47ef089b9d98ee7e79c8d89d7a27563c529917977ff12a0753bdf8b4f62b660d33f7f6da7860ed4b021f51d01"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "468c5f910fbcd2e2e412de22199a9ec2e46d084e2450e3752e58170fc7a7cd9870c24859ca131b967e0a734d555a78795ada986a1b13b81ac3bc5b7e858fb3075708d2cb03e4cada94455970fa7d849479ec8e5484270196147ac77c20c0a14628b8d3a69388973e17d571005ae218fef67c70f62436ba32e5a53566ff6310944417c7dd0f7e1e5aafbbb9d4d0853d84624f9d6e3c8078c17c34aa16f0bc8971580f456c2dc49f13af44cad2e3dd7120b70d3bd2c0a0957d5a739a95932b24ffc564bb94d748242cb95875814fbedf58e8c036a516b540ab62a7afdd6e3f304242173fc69ceeb95871bdcd530d53b7145459ccf41afe2c8ca9ccbffa28d405e0"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9e7e0c0d929bc15ef8ad6b64f9dfac6a7f0b55942eca76df1ada99e443fc3925a5dd9e2b25befc7a9e1c09c9d9c19a3bb842c0f35e8ecd4229807012de47130335175d6f558b79aae6fd7bf2bee86ea2902fcd9067927f485b007723af826511d1a01042ed6a7a2b2c558c929a580cabbd83c5676e1af860c596ef784b043d5c5ed963c859761499111337cfcf9d4cdf8a305d6da83ac6239a4b2c16281d1f4f30a06310bf4237ba6594b93de279e8fda3406bd5c7be52a0d3cb2c7362a6ba028e74572c8f21e3ebb608ce284b4b378b211ccc8f42471ee86923f57fd7c2b8926c9fe0a915e160171cd595b37924ebda6ee187f4a5e7e4a63161e246f27eb829"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "92617dc932c110bf61e88895560638df4f8d05172f435af4457231ad08a5650f1f505604029f423028247d4231c86af51db339c180177bade39076dc67f9691fb7234d9b8c097e650ab3f2822414757f3633a047c5d5082eb469c35757678be46db32c4cb628f30121fd8f5894eeef27707c8689ada5fab7ab0c2e2290a76a1327828f41869eec62c2c03ff50d95a678bd95bbf56f533eabc5474df2f23ce2f8c0bb71b8bd79e2dcc28a682ea34eb20e670018becd44200115ae5116664cdd0429fe227fd0d599b60c6bd3911082a7428ae1f57bcff5b9377fb30994129e2bec9429d6e613c1b527e9f51c6e9921f59be1763dcc210cb2e4ce86297b774b1a0f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "144d33ca3e767af7d1cf7de00481c6dd6541189cd4899cbbe3125463469e8d317018d0feeb5f3c875a4b7217bf1128f448068af845886de43a4bf4bfccbe7f4d02ec30569760119ea1446ad2937a0ce28ebe3cf65b8212cfac09d19988c3ebceac6ee62d7ed3d716e12517f2c9aee98561ccdc8e7430c6f9f48e13e1061e18c02d037d22fd4b40ca203b7eecea229d155182fa8c4d70905ef9b42885fae0b99bdb945283be021a521a57de94958785bb9fd8b9ff5f7a334a0062892ec1967db6db2f9d9af726432162857996faa863ead0f7ed761643961e80192b72c7bc2210d80600bdc5d9d766fd4c1e82053f42c54e79f2605705181a4d7039377dc36c02"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8cac0ec2416e1ffcb37acb5b86227e5a6b88b7e4f50981aa54a1ead401e9b968f68b1e0278e55300070f3f05963cd74124ed58fa3969c41c5106a145490174001338c504fc01d2574384223eca0a755142697631e59556669e686b6ac89561c283c855e6ac27e4c9e4c6989c97d86f7f9ce042a65f20ea442bff4f6e3025854a2db562f4a25e2e9d0cbbdca056c09bbf2308c3d34a0c0e39b932cb6c6ffa47f471f6276439b320044c8d9d00dffd9f01442326a209fc01cf034ab84b0d9fa8f63c2c342deaa9baf32b904b66451590febe4c1821fd6b6e88a5c1307b053cd0fe9040abc3257766a82e4d9c6f9a059fbb41bb7116bb6d71e6fa778085930895bc"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8cf2a2d4f7e3bce319cbf1f2611c9209edb696e61ba984512067db8a91e7faf6bd1bc399cfc9e7e744662d07437f677b1fd04fab3de3f9c89499d4a15a90c194048b7723ff22572acf54187852381c3453ae11da318b92513d3544e671f742bbc3bd69c8552f1d4c58b43a6f7e6bfcc9eaf78f9b94cf59b7be21ceb2de33e50e50fb8a4592441e0919c621477a49f87d5190fcefcf4164ff7d2d5803f03a8dbdbe74258342e50c33fe307294ca1ee3b2dc6f400a12cba00002871bbd852e105b350dc11e4b551182ecf2088cc46af1a899e606bef793897f538792a09901150cf40efdae87e838d6c2a5ac84771599daa0e5ed9db1cd35468ab3b5e2c12a6d1d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2dd458297ce1a8845a767f0a1e40bc30d3b9b54b4a82f6240a3b993cde0f70695435de7973ab17352699e8e383391f17f35caff60e64587e2714fc6807b00e98344acb71195e20673d7ae0360e2aeb66a5831e1165432534f873c0f625eb3aba9307ecfb7a460ba4e28610a7242cf0f76a73e33d6b15c489e2755f91cc4dc47acd6e9261a2e34641fafe52da98a10e4a8306c843ccc8f1bc3c98f1b4d7e3ebde5607243e4a4bc442f87d2a2d09a83c9acad25e558dbb72277512b284a0f93be155172b9f8463e27a701b3616c3021801f893b72abf7919f9963a20d151a5a8d0bf2dbe528d199084a2d7d4f3d1c0ed5893117620cc6800ad3d7d246ca074c54b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "09b1fcf9a76a1cc0819fbfcc70d54d52ec5c5007c13581415b742cfed2185c2a26784aa85a208dd4ed140654df11436c5487c170bb213e9898650019848b26413f8dd6f0aae6edb41ac017c079b63de311fab7dcce522b9361feeb941e9371bc20936689d0a7e464c869ff8db1f85890d604e814a3fa9c39d101bf7a4b40ae89e122d314462606f8a5e5039f86bbd3da35f8d213b64fa82aff067817936da0c009d9f724abb2060588f8ce3bdc13ac587d51a197acff533d0e4e03083589d1d7363827c34f2616162b085715417d3b8cb1782c04cd0a37dc91780dbfb5218d674a2d2c1096c2f05b28aaa575b60e38123a8ed8d343ef95f777081eee898ea455"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "889bcf54a28525d32db03e8452c6e0f0aef9941716dbff0497014ea9b0b181be70d319574c24fbbd752dbb9ffce4b198ab43b950b05c2a1288542b6052c557c87450168e4cdd399ed8d9b7aa7c841a39b28c7bef5bab0f1716e8e9de9a15c1132bc12cfbb77f237409608fb8baaa2e851742655e272e03f28866723b202d639f28e29372f18579c4482570b3816e037f8f256d7a95116988b676e0599885cea80d3c24b6984ec8080a80af020e7d5631ce8646c9d270d4a521122c009ff626d2c428b1b8334569a7e79aa64a5dcecc7c7e4881746bc3754a87fe51018cb401bdcd6982c4fb4b3782008b951847d64d3eafe4e974bf61d215e63b750313163c47"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "14dbd0f32a7fd64ca18913ef840e113d7bdaf22aea671414c9c44de02218b474d6d4867a9a4b6144bc6274deae6f615ddfc54a9e74b4c657187c818781e399798db8e62987a128105086fbcff4d5a06bb43823b1f754e485dc24d9f952d1d4ede9504c92a2511cf51e68eb67db959152ba1700af0e0aed533246d7ce9e0c012eda62d66ab5be82b0ee5fe4863d3c16b59ed6d463c382b25a9c8ace7dbb26b125afaf44bf93edf6a63942b38f40deef43ae354934056917c9af6655872b010b0840403c1cd5c053355fabaa23ba39dd381f4867a2264c476ba67d46767c546ed3ea59488c5500c79cf5e0670ce744c2603e01e7c53f452c22ba15a8c5930c61e1"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4bad954b43b0fb966ac33ed7c8ccf2fa8246279677172b39854268b3c2a3fa670840aab9e0f53a754bbd105f2e52a29b132991ed814cfee0a102e293451420deac214bdb5a574f9cb4b3661b10f6804f5c27d1239556413db01cf123132882972d04b9a0b8d046b8993eedae811f67d9acb9e28b3ab4b6c4d0e42f85879623f1901ac082c93ef0fbc12f3ffcaf252c8953bbf8abd6fc01b2f272e27448f4f77fb369f2c5215c7eb68b2fcfe2e584fea33e505e22a2aad0844d1c8689160a19ef377e7513e96dfd4efb1aaf180b8d5dd8e6168cea4b34156f2ee20a97deea0fda18c6438485fdca6c705806d7d48ff93f3b8dcb847eacd2235ce1db391bab325b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0043058ff1d0e41ca8034e843d17284e41a93df84ec80c927a2443e954025f74630f118b683d6fc4e3c6b7ee4538cc6b4bbe3505f70ae40a336948f7da8d83b1d7fd4ae3541b885537e92e86570c2b7f622d2c4f63b0e0380e3d13be8ac930d06ac9cb1f3d33882cc235f93702a4118038a343b6da20914c40e52a2842009bf9c8312090bc2abbc4e48541a6b2dffbed3c1d51e989479d017c60e6cd2d76ec292e75ba550c1c195c6ce06c017e5349e10a90adecbcc43f71f3d24493796d464dc89737264dc102d1fdb9fa1262ca696528d87dbf45996b7087e755ee07075c8fbcb2036050c8946866bd972b0fa59a2995fce09e12250341a2e43d5e2c8df8c2"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6afc343f91b6e24958dd3da7ed8261a127ca3a5641d38f17ef5da8bde5581d87cbea823241b0c7990c31972e53288cb253fa1477405b020de6dad1f0d48b30ef11547a84f2edad859f6f9f11c1cf3a22033050d04ae41b19c43d6a6c079e46df4c38ddfa7c0482a47b5aa00ba4b244d423328c09fa1589d412775f260e55a8d10b9930ec6988ffc138ede59c32e995bcd85ea83d935eec5c870b49b88b0a7826683f614812449a00a9a67e11cf55f5d16f9763934d20c7a206b0cc86227d33498f492ddb98db5fe7312e25654309f848b271563c5c75d246ffa0ab2aa04ce3573468902212e938b8b6927b5baf3620f75c20e3b5d878707837110027c6165c24"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "539a9b1ffcb0880d93d7676fbfad02b11efbd713f273caa558755cedbfc0bc838d10823ce56c2d506c7979d96433d6777fbb749c52ba263c77d4e33790f78bc54d696e1124650681d260af084be5ff47ce9a69eee44d54ea31b9e401b7f558413d66790bb69e938f45e545318c8b7886cf8c0a3c84c331f4c334ea59ce3076fd163ee17c6786e7908c3356f1c81916f7ba36d65fd31c9350dcabf3623b6f2bc3fe5c247a32c8313da0e67e8375f8163f63e84feac04dce2ce2950a56b6fe285ed06039df5b9329677b2619639af36137bfbb75ef07cd3ba5db5104aa015b0da57f70f773edc6bf01d5c68390073749bf253ef999d7d1dd964fac0cd3e39526de"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "757a75f982883fd9dbefaf8ad051ab35c965607fcd55f656dae97ce949a17b5829efb8cc34179242c2d442000da7ee7bdda0a5c114a86c7d0f8ad79bfa76c4774edbcb79827029179c9b7cd7925de898d09fae39516ea1da61aeba1f31f53380ab9edd6cc7170cf70a35b169cc9390b20823ef0d5e7e3a078b31f877a1f6f9c447dd979915b0716fed43236ade3086cc794e8bd210140f0c65c79d2e57f387f22e2d7dc12454f9ea384b928779fac27bb2e614e947e3307cfaf0f0899dc320d4e5bf47b9e92cc3649e35854d709df56f55dbabeb61bb5dd0e77fa8c499eb9654c277b34218b7c0a92088a0909da3070f5c2736c8edf91fa7ef038e091629aa7c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0d146c7968ef5f1e85feddf8d27847de4b28e5ebab16f8af3b6b6e58396aaca752052764b8db3b1140a0a0cbf529dee7f1cde601bd42ab916e0f183b0d37c843a7568d24b07d7e1f26ad7ab6a96129f447ccb28849f83b92cf9d002a93b904e63c80d8e58a57fe586736d129663ffc6c6fcf58cc6de1955fc7bca9ef16aa6789d61016212307ea1e059c43c5350e485cf6158a25cd1e8f726a1473a4f598cd53bd7b6862735ad8e66491e6ddd0ead13bce9c14fae69dee16ff6dde8f0fc33e85684e3745cfb3cae708dc8b599142821c49e5d5d93e26e251924da8d711a731ab9caeebeee7d764b87d633374125dc14d8f8b944f2cea2450d89bab9ea1ec7370"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2fb7010afce511f6c6563db8fe3e623313fa82e37f81a1da359f9cd27ca423788cb0c65a6ae7c01ca82410929fe57ccb8f4f3158a3d9016712876f7accd970d30dbf6bd90c1b0393f11279b3febe760ad1786d593a8e0a3944b4cc7c5e8ca41ed5e698ba367975b2ab7c7c0a6be919f36ed1771b1648f22ad899af51ea469b1ee47206e8174fa148a9670a4e45a3d36fcdb948ee994888f07252a37d636ce541c70da9d6c0f3ae2a860bd660ce553d5e94b1bf2687e036e77da61586b18189558906cf12a63c2850e28cb595c46a85a59d84be6c28151f81b10ef8ddaf6297e5ccb5c009bd0d51463fb48dbe48e9dbcf7b325dfa258322cf6acf30ab8d566874"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3f52510fde9cc0425aa29ab11dd95bb0063c94b9e835dc4ad839b409e1cd8994c87ef018e0dbc1571d3e3e321d35d88e2694bbdb9422c31cd64331945a8f6133fb8079dd5cd8a55ca761a88f280725f6e13c178ea94bd7b7395b4327d572e2615cc60366acffff56d3f555397b2cc348844c42dce283c948c28fc8d077d07c390b8c78193dae608056c93950cee202d68f02b3d8fd58026a690cbd8a95f4d1f1fd15a19e119b3340d02710faaf1ddb66af60fdd5dbe8f0cac69a370cea0a4297a8a2ba728141886f6aea3aaa113a42b6f9acb2fbdc9f7a0eb295066a1862b75acbeee9eefa0adf208867cbf173aebcd4a9151a657a041577cc4265c0c1ff9e47"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "743209d44a3c907ca08c0b236b9cbabcaf210bf522de862005c977bf7099cb7a38eb9fb15b765a044703c9410082b6a35a7866821f33bc2e2a58ca8bde08b78ff6b3c53e771f8d7fb43503d8060a884ff6012101278564edd6d64fabb6add5f4d4c62707c2ffc45f904acb43ca2ab5609a23daf9cdc58aaaa638f6325a54a5e272b253bd57246d0935bcd19c7aa31f878c474c8298ec567b6a7e165c2e7eedcc80748953c90d20699ab8303062580d4693c058ac761678df6c875bd91d465430afc93cf0bce027ed00a35842ad560d79bb640cf3ea55d8ade362c258fa707397663fec6787d44ec075d857a6fc55c50f8df898da77252d8903220641005177e5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "78695d7dc94b3ad16254631482570bc97bbe1e5601c5d437660c9ffbf3d7864321e0a5fa4ea6136084ea004e71bd0ce76432f9b68e3c5e8995bc6e33bde9a93bdabdc6bfe5f8ffa30f22d4a13d453e26f975a7ef6fa21acf7903818df3a008b818e829d00e93f0fbde717f7c9de12e65581cd430993ac5d8ac840d5ab0dfed1834913c66e2689364e30f595c673a3c6c8191e80118e8cb2b36b1b613cbdb40d89444694b2609694ad877df3e42173b8f07f8d0089c34d8d6a539ae508105ee91a3d0cef2208ca74c57b57ac193412a713ad9ddfd10f63a6a9adcafb8c3eaffab0d0aa38fae362de560665022ac755fcea073aa905be19177debd5b00e9434f20"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3501fae15b0d575cbae58228a1debcbb44575dbfe77fe1aa9dbb45ffeb821031933ca8f2b0e38900b84c86b4825bd587b28b94f27cf83cc8f36ce1e4f565124b2fc3426de04b3951800e54276ec31534a987536ef0e3d081dded8252bec64b432958df9ae045b29c1a85b9d4207fe4941356149dd0ced33fc5de142458a856151fc246c6626e9f1e00c326a00959f9080f5dbdb7e82fa79e100b03b6fe42e2d5c03cbb07b8d0ef8db22d323d9e8acdfc1dc30c765f7db9c9a14d9f41c451c3e037db9468148d8564b63fab33d5637183db20d27cb6a231491d6ac08d70d9a82e6e8ab04da8bc60659a3f9e31f793c2f0f090b6811f1dd634da057b3c4aea5e84"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "989c7cce6a8018a5a2b05310bccc3dc0aa8f58fb3752111eaac000a2daed122d44293203ea9eea41eab79d0cae1bfb526a131e8a8bd021e5b98907de2b066a33165c30c7705c7cc684c21fac98d03e3c5e9dffb78d87fd57018cbca50e4cf1bd44e1799c03b0b44bb7a9971c314f2fcb1345269d27dc0375ef89d1062f1ab8220fe57ccf46a04e32b815f2c10a4045fd3b814113c679106f70d9ba9c746be24354e99b54e3dc1aafe2e9d83a668aa440194be87e914eb986c3d21447516efa0051f6a30d89acf520d697776b9b854d49230c6a221c5f67b3d66793b97741200b9f73d9ea7558df17e44de5480d99a4399e72a380c30b314d8b504fe160427df5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "98ebc21ca822ccf9c7e82166aef286277d2335a8f68d48c1f4cee180bd6003a89e6137885113c2af09e805020ef5c0e13f913d6add5316396654325d04b40c268c3eaf3a0cfcbc5963e5d7e14e8bbe95a8b15f9dc0244b202537cbc561c91e22e933f4ffc96499e6a3b0b33a33d9329f8178f35f5b1a15940f34ff47aa1a6381d8216343cd40a02b4472b5a4ab2f3116803740b947258ec85e3404c375d97ce73e00f9fbace9a53844b8ae669b9743e8f7bf59b3623c0fa1d7c60fbeabe35ad5796a9d8a6d32eaba6c045a6aa2530b6cf1cc045326db85b4f2f567a8a38f58c8d978f3f2fff2098eb6dae5ad4bde60d9d3913eb23f378ce41ba198ac273778fd"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "94ed6235a870a8ac919051f7204f809e6bc1da3c22eaf7df3f238f7b183a7fac66adc90b51688e3e00764a45990845d542b04181d618c383f632a5f5193e77b48e423c0db3e266c5b87b7f38d95cdeacdaeb29e419619ccea4899cc2d1489e10034560aa52f6b17ff5f650659ccbd403c6e89b2812211894fba188748786b2babaf913a03c432f22da99c44cad95272e6cc16dbc44ac6d0a9afe23946d93299ca8840108dfdf25cb25846a8fa9234bbd92ab5712ae6d7f7f162fc76baabf30e0efeb42cf0a68d8c02dd45a7f4fbbee275dc14a96b6d010823d604f46e09dd1b99939a625f9a419be178bf6244929897d1387928e5013a0c76db37e7c048f60bb"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "12c8a3d061fad3c4cc7b6cacb83a8abcee495ff2255464495c9d6a600c6e64a57fa9dcb18cd648ef5133dcab0f1a9c57361e4b2b9b0b996a673615f292601fea09dad776659b014dcf62c35ac063dcfb7186fadcae0b506e7b95c2b8794d771856d0ecf907025675d980746c5dbeeb71482ba4141e50f67dbea79f78b40875a98ec80fe1d7fe2eba043a966543a79317c28a824c3c6b382c0c57068a3036687fa53149788990dacd547723b3f0051f57829b10aa97a15cb4f9fce9617158e77a8399a22629e9d4a708114a1497d0465e3b5a4e1bbbd0096dafdba7b12cb10dbaa54834025043055e5fc6cec45c6ce9c0946e055ef77ed49522892a267ea2c123"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "789094730a65d2a48085a67c9018839b2187bde7a2898c13b17fe25e509a437c152f9376ad710423e8a08e6c98fc43f9039b630e77cee3629791bfeefe37eb168a46053c80805221fec513e796db2d58f119ab33b6d0a1a62e1fe2824f2d5145de791d651ce86ea84c8740ed423938339d786964139b6e62680c991ab404cfeb166069d8c27a560780722d8b6b9299086904308458b47b9d85ea48fa78f861b396c630b3bdc1111edff7441b37afd526a4066e0a130b0953d51e5c3812dbb054f188440e5d0cc8e134a17e770d5a93d8b1cb500c72ef1f49b7e760828f92ad65050ebe4131ef295c7f8afe19a0d0c5be318353641d02262d557cead9a6052f6f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8b2e3c17fe8adaa8e7c8eaa0e3d98369131c8e9b76f36bc97fc95888c4a0f6ae4bb85fdb2435bc85d6763dd07dd923e29a8eb046512279ff6947b12bb2e2a6b6a3ccd64c7de88ef6b53676b25472997163fd7da09815af219120d6cf58f3a0fb3f408ebedf235e5e0d7bf6231cd87d95cd26c2ed506a0749abf45884c22d795bbee01b01884eedccdc7ec04d6394e4200233b8da3dbf148555e4168123749267f0ace21e1b468ab0d4f99a59ad10bd3bb35f517836d0034e53efa6f4a042434a69d6987b59110cfc99267835d7ebd2ddd0a621116e0fbfeb1b60ae85b9e80bdcc52fa3341f82da73bbb841a0e665b084c6cafaef5bef5de609f4f94005488f68"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4706e77141ec16f6936a2bfc200f9c5ec3e147be7e2e6b71790750ec513ca2ff2ac2a84b76fb96ad5f9af0c766af1b7fe8927af940c2487631fef6f7fdbed533df4f5da4f1aeb89c8f8a34c3a6ed7e5e10e28fa1c64f33985ada66a92e9c3b8b5f5366f075b2e9ecc0a41a061712ccbaf2add75254f62e1b66a820924b18239559791dab3dad8f60500fbaa3d76dc754df7a848912aca54e6cf627c5e9f9db9bb22c2cd3ce0fa13838125d88e80b3ae6baf8b65f0530885d307d47f1e3eb4bf6126dd631a4b6de235ab136886ef70d2f483cfc962cdb52e291ca899d108b9980b91eb47087b3132d154c317622077a28a904de3daf415a5634d79625f926fee6"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "78e59ab23d412938f10996b4332f5a412d85b8bb8b3d55c9d017337357823b3cc83d2d1f2b9fe0025fd3f898d2661ac2e7d7a834465f096a0d29315fce69ecd15241750df027eb082d799e4d56497bff65a115e69c2cc57cf1b5e1c62edb25d8646fcc89a74082b9ba36c6aa92ddbccae8858ecc06391f6b39ff5a740be97f012b39f2d48134701cf27b5172297d217e8eb679732253591f45bdf97957f29b596f27ec29f7c471a966818c50296ced411e5010fe6da1c26b9e3489316cb16e55f8b65fc5a1b1bad4077dc34c7c9730402205f12e4e61983e6f5ad163324345a59381fbc3cadcb460aebfedf15323cf1be78c45198afcc803719bf13e42ac560a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "46412b003a67d7cac1dc7992d31259013069a1aad4292368ebe0e597f41883e8291aaea88c2a8115b47fb87265ebb9eba6fe9006bc1e34795a1c2bd8a39c46a28ad075d5cad833beddcb116221411efcb8e86863063b5f6b5885082c8fdb6501e708d734df29c87a723e103b3cb487138cccae90c7431a16189ea8971ae152cca07678491c5b3b68d88c4de18ad771fc252a9bef889b963b353621a0d52ddcd043ebccd4bdcfc5fd4f878aa2fecedb11236de9f44cae8559668f9d035f7adf90e03a707d5e0f97ae84c2da6866f85d49a8dd09106616519df0f5d94a59b1199ab50884cf6d912a061c7488fb5491df32c58d1af741a164a21c5a271feab9a2d5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5f6143cc96b7343e57cc83612c6e85d46352b1eaa4b6bfdabee0af42609a9ebde9dd07db4c10d130f58318f7210cff30f122d9dbc1d0f88a3a0b7c04442c6f23794411dfea767609dc5c767ded7662e5996051052f98ce4eb0e6bcb72fb0109370b86fb0d4ea99d0f02a4e0101cc88d01ec56168510d77b0e7890015bb3b22a032957d8f1ade702aa70a360bab6bb77f08e9340c1c53b72b992187cd4f7c879ed83d462fc69062746e7f0041801709b05a58ca4b034060ad14d25257ce4aa93573db71779072c5c5b21168cda09ac775b37b2975f2d5ed8ad4bd07872e74e6fae98e6d9e8e46f7a2623b940ccb662e897ed6df058c8081ad78c9cbc5468b2afc"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "324d4aa12baa7237b487b756f251b41bcc3cc8c516e582187035127e1cb3dcc789d5306370ab39f243ed45b8834e844fec49c0a190eeb5b4428a9925057a9f26ed57bf34592bd5676b7db1cbd95378c397a6818b75a65da03767038e5d111f5fee2a6d81663f1c8317ea6c4e64498253bc55f07659d14e0efb0de842af6b823884e7dc2eca3ac56c53f618c10362671c575a1cae42416b1e39962bb06fba2369afb336ce44f3fa3868c835d831746c30c3a609ae5e44d528f7f6c7d306d3839bb46b0da1edefb5eaf59b03dcf9c5116ce49b03cf03c1fed3f3ba474ee078ce37970173408660120b342c4b547e9c400c81be8a6d3852a07ab299556ecb868730"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "90a3025f33b6508e08d407443f139b1c03e1fdf203334763e4f010c69d7b1728d37ed146ae7a3667a655ab8ba20c93b5dc432d9d546dcbc41f9a2c4b9411785efd530543f78f5d98e2490a9eaae9164e085a3e50a8aa56ee11f9c27c471a433c6c48da518b890630185ea711a5b3bb0a966af679506ffad0c1f1d2937a6c39ce7e908cab5597c5cd5267f5e724460b12938c70e5b8b589f16a845534702706980b3781ed12bf2a76f9d3a19ee771dc561a84a8b7f4587d4f0763357bd512a1193f07830e64813b6abacb922bf31af6a23d7e2c6d44cd8283b301060b6f6fce58bba01623306bdb761e40fb298a300bc7148c379a4f778f2af934bec60db7c586"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "951b3c537c26d27fe06f602bd224906b1c1d26e41d22c7a22479f11f913978c9a0f7791eac42601122e6a812730cfccd410aec252b203cb0020d3998fd6bd469e335cd664230fb6dd59e0c141dbca861346ff2af394d86b8fdd2e6d5f0cb3d942c3393d917d62cd0148ba82666adfe4c1d999e1a254cc466ce268cc0f14d352e7b0bea8548a5b6fd3745a81f15a72b00d278f881a55677fe37044394ea83630dc15f794b4f6192b7546e841fae0cdf9c00cd3a455596fe9c5fa37d3f3973c58f189db8d39e8ae149f57bdc0b16f9853b798c87e08ae5ca75e89d4b4f3baf87c8c0b699e8c216509e51ea60b52d569491b186abd2365ef5cab983f71abb233b67"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9e1300bf1ac3f95d20bed0c450beada85fb878c4e280f3ceaef1ddf6c1723be2023aae1c5adc0c8565c76615e6d8dbc491506a4b086bcafcd211327a01ced188fe1e1802f7bafd3f79a434486d07b417e3fb8139de422ae29d921ec2e8e5b6843719ce8af35349e69623f2d39eef26970c80f67f23409a8b4e4c4b8ca3e5db512eaff96499302f7828a44eee7e277e58e578de56118a7d5e647f8aada1c03eed1beda3e7c57ccce9cc7585b2bf75427747b0e09310c4f9f9e0d2f48cc62e3f413e445ae2a6eb706269a0a1941021222be8663508657557c49433bdbbc7bc4727a405bc12bb0ba3ab7fd46b7458b9112ad010076bb96c596b9682de58ae074863"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1271847c6516bb1deb1487be33819ea16e72cc739f4752b75c8e899fdfa28ef0b40de5112734f6b4a0e2921ea34966da45998834e8429e7a7c8dce6bd432fe90febaefc201e421a93d21aee907210c97efc2890d0c094ae82a5e734958d4e5509b85cd0c17267e1fe1cbee894cb0838508acf9a3e31402352cf4134eabf882f69afa24a7fa490f22d60c180ccdbb14b41ea53aa549044e940f5e5e519b04824f9c97099e83593fd48c36d71dd7151c1e212fd772abdb72429b3931a67cd7527fd45aca652536ef3476955747ef98759c1e561bfda80733d6dfa927e1e32ba070941bcadcfcc21c3bae98e362586b82fb4ad48d347915ed5c89c15b2a13950704"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "82240214858bcce755f761d3b6416c15322aa97b4e130a01263cefc1cb11fbb10ac28c5c22207b609f86cd63759a689d6e7f825ed84e6042b66d06362441998c715db426157554e8384898cd63177a1ea538bc589bf7441ff9d3256b851f9ba519e3213da248645e22314b34a53739f035157e222006112c1f6ba8e7add0326d618afbefe456e530532bb29769db477089330c0f0dffdd4302666b128069d8ddcb764f154c8700c45e5a8cdea403f4e4231b6260f18e6039bf497fbf09420163f1dd976af573068e0f87047d338c6446d480c585e6a6b82eb387a8549b7a28c909d88d3361a80baa25eb606e4e5f9eb61be9bb8bab17eaa7a98d5f5e406cb0b9"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4b75061a5487fe328a32c9f454bcd7e40f234cb1acf55f7d3bb8a50ee75edb8b4ad16c46b8da533792983de2dc2d6371d7eb08762e2bcefc45467c82130d483819ba06735985b26a19c391f94f854e31e56cc09ca20d542e62e4474d40d5000910a9a24b1443c66451878656d3a5f00a19f476f1c9be86379036555de05b3198f749e40c51e87772a5ecc59abaa9e9a8d0a1681a3964c9f022215a71be814c8859a63b2a62caca2b6e98f5b10a872bab1ee1c00bf0d640926b867a87640f64402596df229d7bdb74f1e39973aeaea0661787a3878b7fec9d31274e227b59d14b1ce2f707da4521e430f17d09fd6e3d61c97d08bea35631611737780f2ac40bbc"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "490cbd8f51a6f8aa64af8eae7f76ba045aefefa5bd072a3de5590d7ed120f21aa4f91decd13ae7e9f414bada7916ce26854cb8cb0dc63731c58c94a9a9e621163546f19152c6666648ba9291f5e477ee86ee735cf326958afc468ef7dd9a5b2131505c7fffd17dbb7b35b14cb81058d533c7e9f6ede933825dfa689457af1e1b6ded479e1508f167199be1d8c640d7373283b3fc76d7c3c1354ba725eeab08a24b5529553dd38cef48b9d45f2b90f9aba0663839de4de17e2a838e243b898cf040cf6053a3be2a4bb346b1199a93bb8295c9c4e1ed40d0a5d5628a1be1ba21f45c1c28b936452c3e163810f0a20fa717dd484e46ef92477853592ed3fbe71da5"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7f23aa1e2965383e38563ab246870c43817dbfef46b008de4b1744e3610b1adfb89c96ca9a9e575edb97c471861bf613cc67428234dca7bd72c422f0c75877da341bae476ff43487b087f1bec13d31fb777e94bff6830527bde2bbe83578ae2173fed5a03f142c2a41b8ee8873492c21b623cb8143134f9de25872b39644fafdb1fc96ac072935efcbdcd0fa5a97cf036248388946223399053770197b886b39673a438f67b0ea789b9d206257f9a3be5a13017cba89d28ea493ffbfe596f9f5d040ac3098a9d968198e3d004d79d6d704aa42801ad6de597cedb3676125e9a23f971083b2bff18e42aabeba6ec760ae8b8c19fbffd18947061d44060f754600"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "13db6c6f0fae5be1caaec197b79dcf6784582e508c7e0ed3e56c2674e8a74c0b542beab6b7dffb0773a87f00e4648332d4e9771ba85df0ac1f9ca2874dd7792480799209155773e39f1bdfaa561b2d8133f67d47c96275e6b1098d1b56a8b8ab5525c14555f4c9b1f241be6dba874e5d794d0fecbbd82a624b7d31b12bd60ce27451125594c744f7f32029c6c7cd0663627b99f7c5636a836e115d0c55a44f62775eb19444020506b6988e11b2726b2330471536066e1f0d194ff9e6e457442b9154261eae83a178ee2f1eed06ef36e417a04cd007060ab83c53e28056fcf49a26e022ec2baf2badba859490243a0d71e5de61c75d259b53cd3baf7675a1db0c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6a0b7c4e2b7efa7002c444307bd3848306d2ffc70c8e767a9d5b17dfb3df076c06ac0374a1c23a011d466c095184616abc028b74bc58b91df76aaecf8070d509d7c7b9f6403bbac80040ae854d139af21bf7a0909cd8e059b5a9b444b11fea701bb1e052d77c7863b557647c7d468fd8ac2f6540eaf18896284f56ee01aa66ad89fda43cb38cdf1ba553e63d4301869bf9ddf076cbf68fde5706787470cbfe78174a516c53ffb6d5d1a91ed78b4e297971f30afbb5bdd02dfbd1097128837541e2974be63541f8df256c8a77a3800fc340093355b5690326242b0d90b3dfe63160382fb3bbbdf9bcbd5b0309ca9d748a343f4a5f8a54b3a2736199e27386a4fe"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4f611ad1c6ae7158bfdc5ade114098ab879a79e7c70184884f97dd875bbd6b1b869bfcd82ae7f3ee6fe88de98d813103df76f4001fd430de68b0e18c5bf4c8e0805f46d1f98e44112cce945943f682e1af1444e20a4f5e5ce05f12c00e4af3d871730d5e18609a7abe3b7142fc2042077d03e6184ce935e668570271ceaea52c36e553fe791bdca3d966c31299138a2690a671a76dda745cf2aac5e5153a06d89aa4396aca684938c0ad142d5e75e6615364c921c8d18d2841e9a4722fa1ef136adb3aec7be74a018ebd97d48f62358623a7c8d13a76fecfb0ef73c9477aa59ba225416582faad0d7d466d6de53749c3b51f1c55c92fa9a2a08b83b6dd42848c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5ca68695f420c181c082921645f30d562c1e004bb469277664fa7fe20eb317faf0664d266c3d5cc76aaf90ac74c6a4650ba2fe6e143809c4629c33f0a267015f16f82cb1243f786cbab518ef8a1dbb3abc4e58b1c85f4d04dfe795696927cc20bc26d9889a2fdc74634cc0e697426388609e30b6195da66e114fb2505ecd15ab8c5982769e7675cf76181a0e791e0e211367d736d6dbd90bf27eb7985fb3b33ced721c46c2a25b4dc849f0946de01b94b463be005fede931fb41a3231403c800db10c7783d442cba0b58dae9cdd02d4ec144513ce74732936b31be61e11715d91bde3998399bafb18b690e5972fd0d579470a98391c475f91f5f90fcb9d41ccc"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9b35b207ca21297aac4b6b7d64614d610e43af5d21cf3c024aebdda0947fab0be7c397491eeef644cc31c73b7a51bdec1dfa4b6c34f831ce7044a1ba0ab50882886393c5b714fd3efc762d6d1c9cd51b8972171d998ab884658a8887607ac9b57f730238849806920f2a5da51f1b4247ad8ccb4f6cfd44ce76b9a8ebc57a3593574f8640d553c74a3fb4d36fab9d6cff6241f6d9c48488799b384fe3d8a3b88ec0aca5f8978b2194e7d9ea6d6a0cfd5b4601bedc90cb63b4ce02e03b736bd5249fef55a5259d0001d4a78ec392e3889a6863fc0c9acf9cc2761739e75ba7f940e424992aa9e63609df63a6c2cdc5a15e02e11dc4248d940275bca51142c6602c"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "15e12377d3c5d50865371a69fd5e9f41ba3eb5ab2f9882aaa1729198dbf16299572898e6897b615d7c70d57719591184170321df750358f6b6ab9e7aa5a2e150a77fc4532b6d23fadbc1bb810c8498ee5ed2f8708faac2c80eb704ea65244f731e85e82aeee3c195eb01de1dda86bd80634b586118c1f2c144809f527a4b522d20b241c8e50d679506e7ce8f016cbbb8dcb57fe6cdffb860f0afb090b5007f81c61c87dac85fc0136477823da4011dd65bcd6eb67977091197ef02a1670993113199392b8d8173c971a03de1e1e15872188ab951e21da015a17959527be12fed5fe4cc3019741ede5706c472fc7befce0d9dae71083d61eec4679f3bbf222d75"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1365fd05a76a548057742f631e0d957c020f670c74a339c4fe0d78aab13b4a960953201e12d75a8b221c0f30be8a9364f8925c6e1d8717222946f7410014b85eecd0ce632147798eaab5ffbc43df3db7207ad776bfba6d5d356307f9c8c17bacf6aed2a35979dd304e5400541e999aebeb35049c695fb5f6ea15b2f5a5734e14a90ba5126b34b296c5981e13f23fe560ca11bfd934082fe3223e381b24fa17677ff85da1709135e150af32c42415eb954746c0183ec648b7aa2f25ed94bf92afbc3398869f6fcfeca70977a6c6f2505b350e8a647affcb203dd836c80f178007dfc3b4e4ca6d50ada50dc73d3971cb055496f7af889ddb31d73f71501f4309a1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1fc4b5129a8b50e734dc531aa0b503c61fae5ae5202aaaddcee197270ec30d8d8e9e06ea5a4b83d113cb430a5b275d8273314c094fbee06047f8d9a090baf8f3f57c52247516b1ac84c1674a4788952dbcffc8c4b50bc3ed0ea16f95887cbe8121fce8c425fb0409494d5a511bcdf9a25fb4590dab75c2ebbaca4f66f6c11229f9367c9ede1214e726c8e3df12c764fd5b3b41121fbf240e92873739dfabdee2a634b142810b04d024b48a8f105682b5999bcec61bbb6fbed1d947922ae808cbc5b7c96eac9a7a94a184ddbf789a816202a19ad9c5a16d10a05e86a870eada53fad5d5cda3ece11b304c2da1c6ba743322ed24417803b1959f2a12c92b9939fd"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5c0038ea42c3adc50e88f90780e9b0dab64b67c5507f5de0119c0fd2bc7d7a66d6baf1a47c7994fd39e33bd77b31d85db7f7eb1c3e5a5513a507b8c531be20303987382515d84a403ea3f9f3ed7c1b2fb5e5ca7d94458a7fd6fa6a522e92717510a167dd0cd2d27cccae6f29b3dcbd189448834e3ef5c029f6753826ed166f4148269fbb1785bb52a00ca635485c10abc64dcbe1fd7fc39dc9e6499bc72cc0099d6d2c8abdec7beeec586667af53683412ec0491534af62431d650752aa7da5cea0ceb298e24a5166f9df4cd1a05762dca43c5a2ee4687cd230b35d50d811d6cf33c8cfd49f222d5ce2ff0403f95c21f9e6d6d3c38eff74b35a392bbc50f0ea0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "188571e345ba738adb4d1c4867474faf486c7a4813bb0dbcaf3f051b4fb5205412cabd2f8279930d1038976d5a23e0b064ca804cdd3a5b82b7e8e45c70381386ee84e2b9198206749f79b343677408731853bdeab4b5849abd3e603e612b857e2f63f59ebd66ca977d60e8d66f115394ad06c1c42ca0eafa8f32133ce8737ea606fa17db0f81898de3c3d8f4bbaaf7f6e48aa01424f870a8ecbbc97a6d71f828e91ba3a90c13540c1a3c3c7de2d4708edeb22987574fc9c9be0917cd40b8c75225d71a9b0dc9164d3c194043add6f6cd636a3bf42e0f6dc2f856085ce23e5a9c62f81e120b619551cbeda6e3eb0fbe693b19f2047245281dd6591af89fba425d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6c5623ed04e763ad3bd1f370b1bb67ff8e9029e0c34d81e160c580fe548aed6964d9187a45e8fa87f79dd3d8a94d521f2bb8a52cfc34f76385a924c88e63722a7ca365127c0c56e0125ed29ac2f8c960ddf1c99700a19d42cde3e5e46b96bf319fbeb93c2b54076628e81c2ee998f4257afa27a681e8dbb49fa149acdcce9d55222960d307b2e18b33729a61ecfbb01461e3b159c2c958fa1111ad7b4ea80d8897bfeacaee2afe4b17b9b0c7b19f9c2e394429649aea3eeeab3503fe9966c8f3e6b7f0d5e482d6a07d93dfa1eea617a99e55bba32f957c1472d7605a4ba93669d15365f989be09187a9eb58beb942948b9fc7b658a1c06289bbe0d2e6a1e0084"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "27e64c5bc5ad2b95b745e868c21585b53a912249344faa36cc0a963bff4783ee128fa6a8251991c76cedca73b70f7fb27210dc89a93574c2e3a61a8ced2986a1578179c969135656b07502a622fa7c4d208442a8318509f0a736fed1b0dd33dc8a30a5c3249aed7a0aef71ab8858d9f1f9cad06d9802ca9bc125a7fc0354bbb55069d73434b98aa9c7be61fab59fd5c96cd0e64bf704c1b213bed2cfe97e66fc6f6b061cd0a9b01421784c32e71775bed2bb2890c8135c42372f208602ad9c4e3e18ff2cfe24871598803845618308d7956c8314a58eb188e083fed8a11533c933970c2bc313137726273f09e36e827c9e1af36b7ac450e0b544a03eee9a074f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6cb9ed3d4ae69ca29c8d865135a86758317510bb3576086999f6985c9f605376f778e9c5f3b80ec6730be4bae0cd4d5d2361a3441ff41118cd4ae3a3bf875c7725f97fcf32805fca3a1e686d408fcb4695db384a179d3c59e3260b17031f971b1c5088ff1849022dedf2d1ba55259c407e57bc01203a2397c7a9ceaa1053a1a75df95ba6a9878e1e40237642c7a4fed84162f4124a1ad45e6f4b98b7e607d730b872467ccd0079d2037e2d4850ac59cddaf4ecc0d2070983f44155eaf26ed4b57308a44d52a36f8093ed35561130e34708c9a3a33285ebf11cef99a4a06fe9318c6bbeb1e770cb71e1645fe343652ec8174aceb462745d4721c8af3e3d2f4b54"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "58f32013534e2feaf9a78986204ba3912715c4ab8f1e04ad4edff544a3c29d80959a0d5a169af564a4bdd5a9ba3b6e485cb76438c3fceaed89bd7d3aca0096627cf2b6135914c7ace9df9a9c8b5b1c97ba2db844c5e1b73d105fc033571ef8e652e4d95bc8605b28a0cbf92f373e2f31a6fc254c2eb9ad944ea376c150b88bb1887848c290d42314f1c512759d25ef7a79d18c8e5f81318d28f9794f1d6cb30be36bb30c6dcae2cbaf489678f87a008042c02e6eeb067f99ede27043b2b4166d46e1ef02cdd26e9189dc2794bac12334e34e8f93bff071961b52e693f01fd875af73784e8d142a22ec9c477890d47edce8251026aa4e4b001d0d046bda8519eb"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1a6de4aae4ad4de60bf01b8557e47a805fb435ee7e8214b2152bf22655e7f3d6c7e090a79674acdb67126a7c01568f5592ff68d4210104ab92eac884887122b3d489055a55a4d7407862356d192a9d7f15edf8a2eb4ae9ce615c594c0f6918a427e5e27e725b292d2109d94de5afd37d1228ffb293c73ea7ca1c6add14e8f420780d2006109a47d04b70eef26741b846a47387d5fefaecb391063ae1af3e77f493111493bfc5554e164dbc5584f74b3fd833e6d1f3d346d17a3bbc8c171d997d06780d9ba149b688ec575740313181de87f371aac306cdb79b2d256deab35b1806f63aaf2eec73099c937a94ddbf706189ee046fb060d0e586bbb7f951e17861"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "098464aad869fbb37c36f56d750ba97ba6bbcf96c9e25d92fbd5778fcf214f6a24d1fa276a14b5945320eeb37dc9ce4cfdae21ba57185246052ae26718b549a59a81cf26387356b3d3fe39a45cf303741587e664244233fa2263cfc6f209f796112d61ca5e9f16e362765b0651e8e197920137a3842483772428b1088e7c1a7aec2152b62688c5655410ebc4907680753079706931359e893ac76ebce92a3572c7eb32c58b386d7ab0f3af24acc5047258b5b7c0db4c1ea4a4b64203d65aaf6c879ed89bf046ce5ffb1c647e95630ca485acc9fcd6beb6a5d17bd54fb518cbfa226d9738beb55325f1883ceebed860d54f5db3f1670ca910762d877f78af80d7"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7d36a779f2d88b6e0b55fd0cacda1295fea91d1fba45a992befd742c19f3d955ef16b6d2f5e8a98be0cb72f0aa71356c14919d67e546d69d8ff47aa393b8da04a3b73188b0980bb3a638c962940829a6903dfb28f3d68bae1334d2b63b11cfd22baafb231b5b93cdcb405b43a0c6e7a2cbac3c70054bd8e48f458893ae7a4ff62764bd17254aa4db52d67e7a7d1b44a277580786dfd9fb702efd9727d2808f4f859bab9b3da9d6a18fae30742857892d04a3bd001ac10d04842dfa4be2c6209a87defd735000d5704b1f754bdc254fc131765e573510abb5b7307eba62299ed9c3696e88c3a54cbd56305f2a3010b67ce54cf9e77b86ac50d69b8400017e7052"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0b7312cc652255319e75a857440a77c01a73de1cc26fe95aa0d6296cb037c79839584b67684f57d3b2959df2bed426eafb6b364ea283674b5bc8ff6f400298781134e56e080b227d47cfa088774ec73f478602c9e4a571ae383a572fa951e8b9ac66e86a532512ceb862339a5050adfe723f1c1e016a3cb944d29ff6d55f9056e6ddce98ee4a80e998f6fa4d535d3f42ebbb2382dcfd5bd4ed179240c2178019e184b957bceec26283575c00a9bc22f8a6ac8dfb99e85657f33a7f52c44e9feaf89ca7fbabfb947032d112dbc99f05badcc995dc012955a7b3169d9956cc091b69051c5f18b1aacaf30653599068d0ab6d380923fcd7b7c8435b88a7344ede84"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "24599a537c2958d7ffd18b4d935ccb1d045c8d10afd74452ddc10f8811023584950c546b9920f92cbfd0c08dbc85cacf6a16c76f6cb52bba27ec14837d4b3861b59b9645bba8ad588c07cdaf73d873004d0c4a51aedacfdce1bf3dd63c68e0f2c4b7c9d4f2027b7f35d60e9e2e9c913ab58a21f054f2a2257f46afa9cd300e16a37a4ee116b43f3fc4ca2c58dcf41a99f10835bb788d27f061fa790ad503a9be81ffc01599edb722aa5787a94c99904993676fde027c3395a3260ef9fc9195c85af4db3f15dfdf03178caaaeffa3e33e5b9c454047b2016a82d09ba7521e273b022688f7af5d885b2942a296f2d1bb666b4c2cb2cca98c7462de5ae85749119c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0a16c4a930b1abf1dcb5e65a48096dea21c0631fdf403c382de73326642d693159ea82831ee14be40cb8a15709e359d6838fad5cc26aebee85e50320cfd2c4f74da82d243b6d9b4212d2977259f36c5c08d31a75fdd920b40543c36b73c8c244ed1766164f99e2aaca92346705583f0b5df277270951a39aa22dc456417b21586b618043da2ba6835eb46f58590f4c21512db1e1965ec8e39bd0aac87c4473af7e1cfc3eaaf3fbdcf30055fd9a47058ce214aa02c0f96b2492c489c5b563954da1651eb7d4bc6d07d49346fcdf7afef5d9b649e67243f900ccb867452f54f73fed48e671fb65dd4f5508d495df8f54228a707e339fc590a1ab9527ce4f328657"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3c1543d5cadefa71b2b00aa9bf5ed02fcba33eaa8237adcf6eea90f100e3133c944f434961a115e8bc8c757ce82734328dc2b442887ea984ab74c5fd415941b0876e45b3a338868aa07dde0463459a358ffe8e625ee2c2f94dad9aecc0d011dca6ba841357d308e0d3d2928f85c42ebeb5613918063c4cf398f9d9c6e57337d4a3c50e900c6035ca0833d4bcb705a0ef8565cc591fb67159bfa1e58c9c9e4985c0860126bb4853d700b13cf0c34ead0f691ae046778e8cd8596fe9189136541429887ccef244b71fd494770c6819ad3ee62a89f8cfbb6a9d7d7b01af6482cedf328ba7b3d7c30c179409b6a6a659978dd26c3e3bffb93cc985a747811b45f69d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8897b2a9b6d6eb401b297f006e7b1a81b26bdcc6ec530968c4bf9558c3648beab5e706954ac50b18e20f3bb2f1061215e5013111e651c456516ae34e63f1d4e15d380abe36baddb7c3d0ad38c0f3f59621024c8cc37bf35871dadfb49c1795a87136d5b04a827a4f8fea6a7f6a2612f6866965cbd6635fdc2dee4e582d602c230ccfc29450810be09390125da052823766729a1c005506b975cf22c49c6854dedd737da6de60632e583bcfb4fed6f5a5c8593e999db7db53642f091e9792843d142411b16bc3683fe6a748de93c49a712b405227f1536ffe257c00b3eb525cbd91274ff8472f113c50621e3221173a058c923bd40e28ecf0faf42c9fb7b01f9c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6c1eced47b60318495f7cce7800139d09229c4804482063413e96868ce3074fd99f8880dd01937dc0b956470494afd577d35d5c76ace00bf484c2eb2b9ccb48bee3e85697bef79d7d2b6f541ce5a83d3a71c09d5b8d80943030e6e54c5dc29c5d6e4837078c763cc018cff3c4b214de76d0ebf5bf2d7dcda39fdcb936d1a26c25ecf79342e8a3703cd929aaba16ce0340e5b8134894e6b3b2145969826cc5f1c2f72c1c8035a920c7c00b108ca796dc077e1d19692b92f5d9f12a7cfa3506ef449e13c41530044c1195cc7658b3d0a295877bae7d2fd74044c318d34889004a4f1e14a727c66807e5be4124f5a6819064065c0b14d7545cf0395cea881734f8b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9ef084bc6824070ddb5af82344467ac985d82e6de8b5e988f92ec1ab41ba5f41ede314b6e64b0ceec5c9e6800a72d79c1d64ed1caf2179f82764a52fc491e5cd20796f040812e38a15c40a4a4509367de92b22af477b2286cd5ef3587480be05b63c513df02c728c30051ba1770de61e4826282d82ca8d80125186870b17256f9fee25f81ff55a8a0a92b1648c09e9f58ac66711087126c1e773a881a10c06168664899bbf1d0e68f256620689f85f1f8254c59a30803966e55012e28ff90a07359d66a73b80945e016ba1381aa66c490662441ab6d6c19d330b4fe39838780be91c07f74bbdb189354557e2f9524856a466c948d350f57aa87e8e97f5bfe616"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "79da043a98e24a49eb5c250a5cdd0ca01c744b411774e1e660e7dcb41c12fcde79c90270e750f2758ff1d6d3d73621a13e27424f93c57f777277666964304655a0bedf717daf19915acfa00313ad4f4dc33d69a048741f04c601a009bd27eb9586c41080c56bf8e0b7abaabd76a2d5e9e57a8b8b9d91f30daae3342dd292692915231354db1a665d9c231310b9805d616920a51c66bad7094d6836697161542e09041c12220ca26a3fb6d22cc62420bc3f07ae349b91d3826ace394b0210d710e240468ce7fb821b3a01b8c38287382ec64b093392a82884df2fd0bb530adbd49ae71528f268fd51fc10b43cbb8f383dfa3874b7cfb4722e047e7f0b941ada31"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7d4c142eabfb72a880070621ef9fcd351129f31664ed11a744cfa209a4199b9293f8b603f1d0672b7a2160b4c620982ee7d2553e46f5056ee8ec2711946566f08d23adbf904ce1ab8d744e6df61c6788b22154ac9a516682e26ec31846b6a5fe8a9a519931ab61a9fd424b2babd883c3410c772b89328df17296b464c8914b31b3ad63d6984d46c772b6b9d791c21d3e3ce0984ccbf7f2902deb0961898e8ef835c658db4aa14387857b6b7ab8b38dd06a4885622abdc3669d37bd953584a3f3d19d2d77115d9bea244a65b7b26faf747aec73e8dfc0bed10a85e4ea6398dbf8d9a10154ed3f1ee51e6b3ead792ed2da838c0a25d0b2ea3190fc33bc9902e579"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3b243a065df77eaf4fc8665e8439377181c422acd42da5642ef55ba548555795ee700b156d690d9fd29cc31d7ccc59d6b29472feba8fa644cc49c4f5d46722516820554e3f98e1dc03e44bad5040ce4f0748c82a5a44bec4c4b5d1b0312e74cad9e87c022385dfa034e91f507e72d7c1f7fe99c6933801eb202c8314c5b60fbd67427fc14efa9e7569d401c6af268e9e3d864fd108f78ea5ed1a2ecfd1c41da2e9353aba41d4df48d3f2535d5ec60cdebf7497eb25db4415875f7ccc15a49ebb493a7eb9476dbc11815eb414577ff76953a63991938fb6ea73e0b77a8cbb77eabf3b893c22aacfcab7108dcb9a3bbe3ec048c17b416b146d4251c7c36fbf0445"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "15739f4caf4284e47e7b53dcc8167964f8772bba88a2692da445edfa2eb0f96d2a0a9f25be5f22e8658eda0f9e29881b47229c103bdc0f19f24560da6ed9f8f2c768bac88c19bde510ee301e188f8d86b3ea5d4ad9bc410ded0015213b4044d0b2ad4f0c88a4ea987f5829521a3283214ec3d7e6779f98c29873f302bfc58307e11dccd964fe0f7745bf2e4e92acc1d120342a8e6aab8abc57aec2bcf932efc971532057844758508e00e1abe74c6b6fccc083aaf862b939ed4771c04e2e5f8b7eac4ea4517e3b87084de8eecc6a3ad06ef87f5e4cafd4a1d313fd8e4b19c69493d227f09b72e1b65e08b40837b8c1d275743b699c4a49f3f59bf43e47c1125c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0f9b7c0622ce7129ec1d6108b3664fcc7c5fb9e38163897ffc30eee20b5e502f64b2211d903ceb7e14a26ec8720a38cb2801dbaf4d86b42aa87347de85a21e3f648706afa774eb50d10db3afcfb1943d3cdf20240b9322403487baef167571acb0a035cfaa6aa1c0be9450c5a36c02373a6a71c19ed3e4f4941c35b4be82014c915e839f31c27c4338bd5ea954ba2433c4003bd2898ae197c8a276b10afac3538049630f0af67767aed14f646e0303c372ff4f97683f543d7be01960f1d772890e290b44abe59f4e218fdd7b324720dccaa33d380e99ca5d5dd53ab5950dd3aef373643e53f184e36b7f2b399bcb5c6a30780fdc2ee9387e6c13c537913910a4"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3f070db7471e7d6c9d32dc5dd19bcb518fdcf2ef2d48a1724d6e3dd6299cdde3b5ed771a0f1a872d872e401373cdb53fbd7bb92a4a13442059f55bf0522d48539db5b52f67b444046a923c7dae3f07230d602bee9f29afcf4880f123d0363de4efc18f6e4fa08610d4203dca4705d26ded912498f653a5ac8a811068c1f3ba547aec31cac73825540e208438e22ee61f20e0506ccb0d6be3459cede4edb91916afd453eed5088df58e023c6040d794e3cf7f531fbb8b0200939ef7c035320356c491c0851a598dc6984c8d98533172ecce1622b7010e49083b5d10ad71c7bfd089ee5695b42eb263b005827928c3f93aba26fe7b6382df948ba761de80dfc187"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "96a45e04e0fc9a701e680882fdffbd56f5ca0067b93e59f06fb9be63720781790ddaf2d6a981d669e8eca75d5975203c77bbe7cc0e4254cbe40d5d59145f746e3d14f1e393600a150471c4f3f288ac40b8d53de28dca2537dfd1265803bfce7c423179e3483ac86e72865707b0e9b05a8f6f932044b90dff67c444286e8c9cab31df8f70f0658a4497e596526572645b282baab02462e5f34656b0d22d94370339cf52408f71105b668f6b7c37020b12e807c05848b627246d94789e2543a9f69db7ebb1172203c00495ebd64f380ebdd1a1180ea08a323ec88972263e7ee2ba644ce3bfadf46634fae4a2e149bc275fc798f021541145cb2783474bc4060e6d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "038c6f8d890722a43126f4d9a053e45f2e10447a62cb931bfdd8b14b342bf651482fc194165853fee8491263e7a7170d13d56eb45449fa09c3c2b2df0dcf51e823d24f7533a348ca00acf910fd10fe2dd9b1ba5b46876763db3a83dcf6311cd9abd02e28331b433961c55c2fe1ad51ed4a4066ed83a0f03b619c411dc8b4542297555d468f6f083331c55b85c89a44e0aaf58c7c953d92f0797b137253061c0f218d48d5cd30d7bd47c7449673304980979d79adb93b91c1eed4f046b45d05f1b3b27eb9e62eca141fa6ac866ad947ff3210987c7d75275362ccbad1792d68d3b8060c5f089aa2a07f06a164641ff5288ac2408bf4c3a9a934f264f962fb9a43"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "682f3723b4d560faaf6f6b52fa4b387d9b94bf4c436dbee647efd892d661b601a4df467e192b489ba4f3d7a2712da2b09cad25cc3aab2af21ab3ba0d51503c02a577236822e31ca2cf382063d60229003128645ed54ba9813c1de735506a1a63ddda51c3320f60151eb383e56bf6fcea8f6def400305a55ff2103d3697922833eaef804d65f9c1ade60fa5b69eca886b6d472626d444efb74397d37d2182df0db192d382566a6cca3acec93495a61a0802c1197a062b0231f3aca1d1a9e1482dccab4198a0a9df40aa1b354a4e884174d1f4f517776e1054286347623e3b123528b68598dad94cfc79e7a418493eef4db4af8237950018881ec12629f9cfdf79"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "321fabda209fa9eb11a555f2d5642274ac93f47dc6b09dc98d870117945e0ec326da4cdd92c9262885387c9660bd5101feeb536bca7de135d517e4c9163672c86e9d47c7ca05e8f6b4d1a472a2a91565029909bc7b007eb39e8d6e6a28c1b80f7c289431b144c99da8264420b8a22ecac431daae7e9627665c64e93c9fd38917d27aefcb74015bf2b4aac0abbf3aa2b1be74e4ea28b4bab05c5181097e50b56e2f3c2143914780ce7b4861dd142b0432f05d23ba926c51a91cd875e7cbea9e65ec7a5d2ef9128eb9857b290314be39b7b9e102f3d3884179ef16fe98fd9ad72e9dfb62a8a5ae81a9f7831159fdc601101d20293ba20042a7736dee9448077c0e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "656c5b616e74f4337340a6ed4db988edaaf677dda18e9871806abde19f26231ccadb30ead180ab3cfa27c74a7ad40eef610d5c99dbc321b049417cb9a36b27026d63940dc05149d030d0e9e34e291416ec857f9b4736f9100a691f8f10a6023258d62e0e1483bd03166fe7640b21de04a533f0d5e9c726f4eda195db54409792889712eee58d56d0b4b2e70f90cb8edc2f55792add333ce591425a0f2a748e97331109e677b72ffd372a88d3518fb7cd716fcd096e3b5393fecd86206947168dd91559ad915874df3bad476e4ec8dd97884190bf6356542878c19e3ca7c7748fe7a639f863482ab230e5ac01ae85e4ed26036ec281017f7cb2f41cf02e6877f4"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "22f31138d107f7f74ce012c46e9ac322874648bd1e3388d588098e952d7273ab97d1d17f265485eeb2ab0521b91ce47cdcb74342571e5ae103d228dfc1b967aacb0d4afdee4bbcba330abc3ad445e0e7d94ef39e05b4db732240af7ef1538859866750a039697abb79ce91d377a9907271ba865a64d57c4db4ff886e4e9b157d3e9ada5eca127478483fc7548abc1aa27f8ed088dd437ffa9d3959dbd8768b1d1c35c7bfa390d9aa6e8554bb990ac89da7e49b4bc086438be7670a5f9b1871491e2ae8a23f06ca3e7b87a7fb87ed0bb5e6fd64ad6f1af7b8514115af4e9ae53e35ebe90a5912c45d6dc3aa4b9c7c46a3b4d20ec48a7fae3a5ef8981e965dfcef"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4142f9fb5e58eb4ed8c1dab74515c643b9bc4a013373e79c0280547fab695e88729600167ceba6460d7fe8bb2885d6488f0d929be7be7528910828106f16cc5e39685450c8a859fd4b65a383dec054af0756e67b2ee0b2ea756b17e602c9f5ae20b062c5845596c5cce1b13572f54f251e2976c5d137168a6ade05a14227f719bab6c40da8e8015687099fe78f79eae35a00bcbaa56729f60b8ce6b965ad03cef2c33c3519f07c1dd63e6d199cc56be298d027231d0b6e8471038da9f26474adbf28d52c6a582617046cc678f2cb19abe5491cfe9c8e396477fdd878adf244fbc19d78e9419035f3249ce52dbf281622df55fd8b3cb2c5131591e1d565f4f0bd"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "66d88b8adc0caf4ee0524546be91a69aa3a7c8bb4f68e3a199b8d4b0a0cb52158f785f9ca26fa30bf5827524facff27b9f0b1ed06870c35033bd55ff386c4946facacd0bf3be3393777d3043e6050e5750cf6da7a7f4fd495262158dd4f6b0fbe01b601451fc4f090d03eddba5cb140fb01a65ee6912a8bb594f9e25a9b73608c058705a0a41b17ecea9e0016fa7128ddbc561285e3238aeeef72f8133ea6fdd755e3a910e2e2f2c4c5c7e1c7f608f5796b943f2e860f37bb311628153bc7baaf11d4f33e8aedde79f4fd080636739129dbe2a951725fdee5f32e471c9d267999d9a11bb13ad40b315647b3f7e91c373c53f845ba8db9b30b31d6740da10964d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9f24ecb03b77a906c8a865182b5cf5921a98f8002d1c59f7c398c469444776fb38d7221b386c5bee4f72ca5dc36ca1b08c2a21947832c4e6e7e755faa4ad61fb1362cc084d0adbed10ac8165f5e13eaa1f6c77bb2e058050b5f902abbf0041c1a3a93497a95608d9dcb5f7d4cfbb4c037453d5558f0f9bd2b1d3a769e2b651252e9054071dd34f065c0350524a39cfea3bb0dd10620288f9e5ca0c92cdbde4277f9961be882ae2f07b1b75f279fb48062945139cb28ea464b4e00b2a5259aae4397f0ce063321df7ef6045d4dad8ac0649c992bf2d22e728827f4c992045f376cabebe75e58e97edb43991bcb38c66009872a5d5c235c483d8d5bea083c6231d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "16b5347808defc31a231c28edac36a3f1789d4c549e8f5c71e2fcf5d5304ba437b4c7c0eb7ffbd80f5c5b2277bf24412b39ee3e74c368517717c438bb88b80b12ad14f7295ecf8841947e5e7457e66d2f869c30d28e9ac2019d7e5eca6229812b649c8b6b4ccd4e17b254e7ab496aa5325525e7974be348dcd53c652e6315e670236bbbef2f501e246631b735c50e388ea3af8bb0030fb7fba9743eb70fc6687cfdb92d46a4537ce88dba96ef52744e22fb7257af1538e3ffc4e2d9ac9101d6f71bc2f5aab71ddcc73a6c635500fa0a9174d25ebcc85dcd7dd85a7d2e8d3138effd171176bbdf23296ba3df630ee42185720ec141ceeaed1681a6ad0c156e099"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9492ac64c45a6ee14fa5996c865c18a0310bad275a26be5f4df7eed2f49bb3fb76b222c9f7e92d413d00fcc9cd6dbe590a48c1250ec6807ef5d231585c202934182266f9bf931be91bafa1ea47d0d6dfbd39b5516585142cb52daee704a6c36f5a216b5e42a20b8deaa3e6d8b26e97cee7ff4cbe4b72980edf50283a48034b1b0deb36730439509424d7a5229a5dbe08005f372057b7bc6c45d7633d509d833b90be33e706b023027165e2be40a165240f28f7708cea38ee9fb87aeb8ffbe53637d6f652755f312038f6dfaf5db3b89df86a7031f4d92d1a1b1886fc9594b8e2c29135aab5e6a66ba428552559ab9cda9d915de834505297471145e0a64fed3d"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3ec58a94c9495ecec016babf77fa114d78097e484840d82c3cfe7de98d2ee21b499992bfe3a778161e781f89d20745bfd1ea6037c2e7fd67c3f95479315dda5b87fb53badf0b813f28410de6e79a11b351b1668586500917feb44aae0fc18ba6de2bdfb6444d89b9b8b67490c1f2b81e3081e5c5c7c39f4f8f9bca2ae2a9246465610a9e6a5a67162a3a40857fea59e128f21903afa9143bff67df9679918a0f5c7288af9154f096c03a13601db5724356131051ce39037c6b870bfca5198cb9385137b7cf5383630b459cc6132b7ac611d13712f91b2911b9f8526e02a8c61acb7d184a7c6d86d6246cdc6bd13174b6969e5033bb90c4abaa907968edeec362"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "67bd60f61e110aa2c8c20b1306267590740e17afdd7af7fb0016386fd553e82d2d88b2d3a8f9bee078bba1c6c3fb16f6ed8fe2a767ba464f662b511db05adb394628efd7afd1bdd16d7a4653e4bcb3586733684e0cb6e81fd2f720de71e59ef25c80d91c50b1ab560a254f6ccaf0a35d2177c74463d4af5c887c2bdc1a92633ee3615dcbde57d3e763ab7c51168a0cfac2d9df98ec3723a3a8fc566ffe1fc07b14374c340f3afd12d5192ade20d7ce2788549459b6fb0d342e8ae6eaa611a61959e4dd42b183aedf21fc1fe873e66cc8c06bec8f5f69a7fb8776e9ad26bfa675981c7f23e937fdd08924673694dd08f6b1164085e3cb91b2e8e58e55ae617631"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8468035b326c93a4e0befa9f465495d69d781e883f5153eeceadff075fb1df736c60917a4d4dba19a853c56fba7c1dbfdbe1dd9c2f6b2de5210f8b90dd73e4c5c8911446d9cf60848a81dea4484c2a60ab2a8e6928b4224f9ed74c48e881e6163efa1943511bec57eca0a01fe82fcdf786f846a17922812ef53ba608fced517d3861d151e771bf9a24ec74739e3b608bd33881235b14c4096188892d523ec6ca0a4f9408068e64597489b6e1c7cfac3fbbcc4b15a6fe574692ae8675f87f84bbf14bb9c1b5c7567f252246d3538c680b6cff913e9866801f13b34b973ad7474554ebe5b26ba1933c2ad6a72a42c93fd15e6a31f274d1f01e139777d1e29f62cf"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "57d9d9356676927b5b073de32f930db717a920d484b220ed784cbe2805abed86a27ce84f3c9b5c00b5c9bd146249ed776b02c1494faf4dbb2e435d0b914bab59f3e716121fd212a6967f17b82bf1f96911e126d8251279ae28749e24ce8958d54b126e623b880c1c80d15b0c1f5bcddffbca8b957276fe73a076dcf5627f54f36f35195ae5a777479f945abfed5298531c581ae5f71d2ab6fc34aa08a84d53a03829e756f21cb4482649ada260daea8befdaabd2addedcc5515dc439059739f13ac77d1049fedbf38dc00b11fcf2a1432debdd694118e3cfa7ba1cc6ff716255af532c80784fe570fd5b48cda8c50878377ce4503a8ddfb88e7e3dfcb466b8ea"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "73225d8f91bef922f7fa479aa9cf384df5cf30ca893ebf8be19f09250b35df80cb8fccc5e13e550b926a852d40c6ba0edcf9645d0965e469d38b1212637b1e4041e47ab1af8fe8b738901bb916270061c1032907f6240f33abceb57dcc93da9cadbaf1c26f42922b3a3e0b407bcc4927658d4a465cdae48a138ba7859c303d23b135a3413751f25b108b0058a313271343ad6f0b81458ae7b050bfeebaca51891d94ec9fc07a698471ee3a0a52fe61dd7c028a70fb4c22314ce3f251a21db5e13c8514809ddd0e8e4ed76a01efd1ccd10f73e29fcdb8d8d4f4c60341e166e376d8a60d05816fe1abcb30152bbfbadc9172ae15e58fdf41e4bc53f39f5b0f477b"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "628db8142e4a89ace83835d484ff84f40e70a0983fc97ad5874c2bf78361ae02f925b41e6af645c0c5d99c3e59929146b3e6de62070cd03be2eaaf760874ca6879b6cd695050bdb8a6c0aff0785918d3b83d214bc1ae73e3207f9dc7ac550cda509dbceb5309658fc52cd1873d747df01ba52a28b09ab4c0eddeab6108e3b75740a80369c0a3296d3514af9a966c5edc9127b88797279291f1dcd3da2a512601880d2ca98cb20d512c0426140f30c11dcf49e769529a72270542501961a5fd3fbde56af7d85bce7521160a95e5388d941fec7a0f312ef9efc8382676735a6ece2d31716e1cde8bcc86063741457644e0a47474f5aac76c618fc960dd9c6d3f29"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3d1e67d3b6f474f7e23ee14223cf10d3d28beb454dc7f7ba972bb3eabf6b66eddf245f34c2b9a2486c693fb193891a084bde18576b50b17dec8f9390a8d10dd80a4498cd718f7134ade41538559ab1140e28aa5753bba7a60a515cfc6aa245d3104a598ae06cadf881be563b42dc138af99de76b080eec50f59c0620136525a8b4a3bfd861a24fe5a2467dc23da5b0a7c298435172e3f280fcf14a2ecac790dbf1907ab0670974433861a2ea6e097feb99827c9626b7464d1fbecd7d2d939db1474c30d9be20b77b1adb92094fe1ddd55c1f66d8cc37bceb1460a120fff35dfc24a7e1e3a0b7f7ff4442b36d147ccb635513f415cfe6305b8b713f813497e6ea"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "64e3253d0c7b8e9910a07e7a9ced46b224ee524428aa60afdded2bdbe21645ca2843ae341b8338a75d13d9c0ff6da9aa814b3ef2d8968fca55cfb1941f1066ba8ad957bf4129e57780bfbc3d79391b4698da3f9d0b52a5d2ac9f125050c492f86162d57c874ab212a9731d4d4a116ab68fa3ef887304375a65b0774000945a90de17733815e9365298219bca1cbe43400e20c5828cd70a5caf9f0c6bbbe51c61c04d8a2d3f6e86cde6776da4038a2137802bff10abaed495d3b95ee9d7b0402bb8d4199cd3624d83b2a53613f116cf6af9cc3af24a4f70cb95e9a42803f7e1309f26186ddd454a4c0cf7c76f4c46d7ca2a3b0a64d8ac73f3e29512b63d40db61"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8c747f6dcdf201dcfb5676f6857ed685419315f40bee132bb08659d50212028289ac45e14c7c2e7068c3eeebd9705037579efabf169bd79d2a2a97cdfd48fded1883d2f7bcdb5c035370e746afa5ba66b7e9a2e596ac066831b0922e8d1792b4e563703949daf41191686ce6ce7d18c3af2ac9eaf1da16dd15c0a2e5370412f13c1484af003f549ba54c3b01a2746bdb3b7e531cb68eb24f7f08921bb775bcba5630638594a8cc4653fe68800786e4742f53034ce36dd6fe1202cbced095aa310657472e6e0a14dc1864cd7f9355c7538e7a0ae1b95a3c481b3329d7c4b401a84f47ff10c30eb219e5bc1b9b897b98783d271e17bc7761bd51b0ddc829b61e26"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a11f1559f7a6b0f73829e17b369f67c02ad920a70474b9e90bc201b9004ae5d880cc9ca722b74e726ab2878f3190bac5feb753029a8a90509e82fc524fcd282ba747b7eb417c1850506ef63ad148df0b0b9f81da9a477b457041a020ed590f6e7cc6b84ead186a35921e87f9fab990dff91282ddc3f5c3b1f2de28fd89222e5dc3087e745d541f3c8b45ccd0fe2ec7683f479bda66aad2d61bedacdd804846296a6bd5c681b8a8d3285293f8c1311fb4e2c924624ea26eb851bdd8ea55129b923384a1cc5f4c8a56baa3159de4eeb9afcd4c332fa0467bd3191536e676f22f1934a1976e8104c8fe8e050da3011e2b947c1a43b3ad5102a441f524b03bfb8911"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "10a8cccd9d24f727863282b3570cd7e24bfc8fcce6917f7b13dd25e77dcf6dae644f5adfa42dc4a32541a01c4ce561aaa6ec53cc2be966892aa6966a5a93db469004888bafed96276b15c618b469a43991f73a64a627961a41dccc751f709997b24dcea97bfd68902fc34403ee304a89cd8ed5b06c261f61741207da3c02bef77075387993282e94e1a30774fd4e137986f0ff17f37e0a717e34c5494579330d42b7cd856f120d947dfa463a10f24c1c6ebe4e3fa9b3053bd162baeb829faa0a6e6e4f76f84c3ff90a25ff536a671719bd02f9748f0939bebdd1c88de2251cf8d2e445b2fb283f7400446b9775f711cc0066c3e6253aae5e017d0785d749f464"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8d6624cedb4db00fa250ee7b9bf001a184044334a1b55e7e27beb7a5b26fadc9e4cd5efdea2b816c898323f6f7005425bf9edb82d2ec70e9339445836f59647ffce77b1445f2786e5a4d0021b6445529c31aae9eb16d73af2000e1d6942ed00f9a121c45807cae178ab2629e84eb75ed586a898ba3cd83aff61a82fe1e22913b0a5c0d518aa94b6e3c888e81eabb9068bf61dce54609b4219ec575bad172db782c3bd853a1f3db883c4b03ffb47204b8ed30e516295dc3d2d6204e3bfb618e012c75a9071bc34208e7c50df04b7ed94113dff57bca2d832bb86a3bb218ff778b9825bc3b8f573f5c1c3edf1fbcc2098c73d4c83b108bc88dc0e91bce6a196fd7"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "416dbcc47fb2c7bc1917b7468a1bd155c48a61bab0ec4ec5c09660de7418e865f7418d625ca911f2222542985c27bdd127377331d00164fef0508e891e396594efb985fd9e0246e622f6c8f236bce32b7dfb33893cda54c0053a33259f15e7fcbd7ebed0c2901ad5777b49950568ad9effb4d5d28d04bad2e026c73a9945ff52059591b4878bf9a3fbeb5a70ce9e9c190cbe17ca89a9c4c86ae251db7877cd65443018dca2d8dc2551ea4c521b6b75668a274945159e7ab2d67ad2b623739ff27cfa07ec850f54cd4394f9f1178c3887878794d88979cfa7102ab99d089c09d770d5565e89b109eb0facaa96ef0b19b39c6fdaae673de0c0bd86608a3b50b3e2"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c1b5d066f05b999461cf9c9047fada7e9026d112a1e6cb2343184c0149942ec2ea9ff85ffeeb4d950eae57e0530a4f4734751f8d9b7fa4bbe3bb79676b5752c3e75eb77c7b12c119e204c502f03a50e6e2c48648a9803fd2a8fea331948d08c85830eea9fca62bcd0b3b083e67d43b045e450bce195ad731483474a1c5c81e071dccc9aa7a569961ebbf5f7badf76ba29e5e6e0814bec7eaa49a8ddd048e76c3551f7891d96c3c0eedd392b82a6a28edea21321f9f71ff91060425ba6d986cdbadf6a9e5d65bc3288878de460dd217eab19ff8b79032ac770fd7cd7929f4e0ec3d830e7651a3c924b1c3c4ef96d2c5d0820944500b1c8e669a9796a1f68129d"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1461944df85c91214e1386f6160422c6a01071ca6a3c410841018896d1b4c10fad0ace90564eedea5d9fcc8cd65742f0f3809267d07665d3a4e4006a5fe93dea92eaeb6c03b4409f1820908c5b12d206909e964a5e16c1e9d73469d6321929ad9d942e86de027a12be3c7b22bebc6c2459fe8335d23f04edaa40fa5c4a3b4887031013696976a9ade4132ae719836b45c0072a083f0c5e57ac1e9fcaa89920132788399ee1b4ba8b4f87ee44e04b54a51174fc65c56795c12a945423ff92b511ac7ead5261d8552fa2b46ffbbecead02edd2477ee15e48a5c1444e252d38fb386bab43cd7fb0662ac4f3a247ce192538f9f0a0c00601697a2c61b75c46ee88df"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8caee4a873b9e0b443f2987a6c846b39bf5f4bd117e9b492c13dc65345be279a1a033209a1b46cacf75795a8d13f29a3356923596449a20fa668c8fbfa7b14ca3854eba1d345bcb45b3c0259fbc88367743923620f066ead8d320502005e63240c6b470c97bd9c0e9e1f175531b44d0171c61422b3cfa8f9b1b92b3716649b6f78d9925c97e3280e145582ded00a670163e2333f0c9e26933b911358dbc990b02d5442b1d33415e26d26e738277abed72603cabde0d442e0584bf1192cb4fad5c0464c46bc939305ea84ae548449248303d757a5baef6d9a4df88772af757545dbccd07adda08e4ea23c54f3408bbd4f00c8eb569fea81022e53c8a85f008339"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2c2fca89786d8fe2b4f0f936865d7a70fb7cb640fb18e22817f4e13d82c831805a456ff5bebe87e927f023d04520e64f07114696d0561be1cbc6c167a7adb1eb66a455044e3ff458fd53c761b15e313cda6dd6ebe81ab57d50d2e323ea4b60d38a7e8750238f2baa0972325ca351da6b184eb761bd3c06433a99922219e329b31dcea51ebc6fed292cb1ddb3759f5d2ad641194c4c5699d9b85ed430ae78365374006e35301ae827910f032c5625e33adc4eb477445d80c933d4bdada99a1e9b78a7a45e140a684b59a12ec6b5e12dc75b619c11aaeaea3b31b5df29f31aa91b6d032e052709b1332c2bdebdcaf121100558ad1706ad67ce3677f606a5c5ec88"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "975542413ea1a6e5068cc59402da62102f5c33efa4203f42d7939a03589191b33d3960c7a438c9ff6e73a67212972bd549ba3e025df8cf9db5575286c9f28783b08fae71d8c2463bd021493280dac99bbd3574c3674c64e4d5b16d8b5028697654b2554959a24172768db7127234aa3bddccb9c2efef4e5a04018cfe593d8f3e19a5e1c9db980f6fde9f0361a41a31729dbe5c3b7dc655ccb6eb70b2dcd18569effb9f8fee88edca800ff0b726c8a5c1e44768f8deae687e4763f1e6d14ee553b977d5df8729a719543646e5709e1f38589f1ed1a390ae495c254680d91c5ec0a7c56c78a5be3ff42e696cde45fc614e52c4eba25b3efb91577920c9c0879ee5"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0e8c3d50067f044bcbe0985c866390a87c6f6b7b2b1592b31ee85828d4f584f1b004ee15fb778afe8707168f0572786d098542306be1a5b5d7fd442ab48908406b85d8d67f62824d883c985e5b81f0de26102f03ddf5be2853256a38bb14e985b2c77e40c88ebea441c11c9467c30d2fa2cc10084bd824d417a651967ac27635ff97e3201f4b89ad15f4256a9afdc38c5a12f63d79ef98234e9a0cefca55cd287ba7d850945a2b86be1dd751745689f38cb00aea6a4e61146aaf00d7bfe19a4f224f6740e00455ce3bb36d0ef1ccad62a2513c5922338500e87d8e4f548c2b04b795a73747f6c192e13cd1fa876323e60cd634995b1eb32938574b9d4843b306"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "891f1354e36c2b7faca0981c64f249f73940ae03da86f0a413a971031b00c2bed14489345225fea317d9d551cced9c6c6f6f7134cb6bdca1b0319d931a1d7a1e24a744eb98fcb0d3254660066f688531fde00822917d07deb9d78aa337bdc2ca3a4a050d8debb6c1283cb90e6991429887311f72b95bf3b18d1c5cd68f65f8ed934d9e516e2a8503613fc4dc2e786c36d77ea2d5dff75c26dced572298f27de39459c55c6bec73295f20cf1c6e876b345c6fbb2ff23adf52d9d4ece53877a2bd6e7cf3a4eae08b1b3ce8dc0468614e119ffb7547f1a765d9d9b5d9d8624ecf3b836dce490c8a36a6a60e689c0bdcbdf774eb60fc552bc3e27fc9abeb2c905ddb"_hex; + r = false; // result = invalid - flags: ['NoHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a0bdd0081c1e7680839c646417b69a6fee16c94cf7746ac21ab410ef83a78a53f5b0a51afaa2e4a1ee9b44970dc3e8229712aadcd4cb2b92684e2592379b581b2aadfb3c4781f543d8b80625a07507c2ddf47937a27e05044c36c70ef091cfa1fa9f2fc552a9ee1eec07dfec597de11ca1a67ba4829a0f620828cdd424a079258dcdb39986157dd48d2ca214f10333c6c2b73593c3c72c0b22a4d374899e949313523ab9f2218a03d5f06ff0dde49e8778a076e3f9938be7179ae90b4b068b04fa507a842c7966d739def7a22ed70901d5e8c79b8df7498fb684fdfcee8c49627a38608434eabc03eed78d935d34830fc3248c90d62d743fcb1f633914f7ccb5"_hex; + r = false; // result = invalid - flags: ['NoHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7553fa477296a68ef8423d82af68103581e3a1681deeb91ad5e8f167d3bbeea5de1867969a44a6501b4e447f82be28687706e2fca1862b5dd1e0fb91b146f8e9c4a0a9f2f5ddf4da77bbacba56fa219a9eddd7dc234db9f75773218d1317ef5e4e52ce2eef80f870d39b59fa3c1bf28f67e4df9ba4e1d12d198904a0cda309b3cf2abe2d765fe366bd75652661ec830772102aeb5adf84680457fcb56a8d271604a24090a1f301b00ed67332a721b40e873c8dd3ce9206712ecf39e475a007d59c9cba314f7dcdd75b094da28789893da64628c8ff0d5c892b7e39d5c7655ef911d0dc39d7af59a55e5ada631b1cf3e6353e0f4a555e4558dc4b9a3c8baac281"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "04af34eeec248962a71ff3889be80c5018cf7e6e378824a5eca2fe80584fa4aa78ba70ec3e76bd07769bbe7bad19eae850d5635d3ef2d9eeb31255be6efda3d2dba7695b97ae34650ff78fd0fa687ef1b914688bcd48639fd2079129f6300228b5795c9eca2e1a3d2618c6213ebe0e17cc40199bcc2c7473761e08847f0b6e20d37baf3b1ec6357257d63abeb3bbc77f86805e9a43d243b7cb172ed5a3bbb2a9d0f5c107e5930d12ede27d5a66a9160791dfec3de2b13f9f37a12f19d0e7865955c29e5850a8482a4e8f54c8886fc2c05444c30d02d802de075290bc045234c1ca700891f7371f7d02e633989433c37b8e6afc2f7432c82f4b6e953b93210432"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4b140acb262c451b0761236b926afa2829e8a095828f7dcf196eaf7fa46fdcf7fbcaf194aa3000ae8d3dc7dacc26952502b1558a67fb692da5fcc7dbf48cbc5260e2b2a7041fdf7bf46f531d4ef48998dfcb65e182065535aaf182ae6abf6e819e7d96ec86178137a3c14383f89438ab35f0dc7698e1811c415e163f8bac5435dddba5db55aa6b393d538d31b34332fcc34ef8e6eb059d4cc453297d6895ba480593a5536a4e553a55417295b6f6798734df67e739e54d3092de4f476cc0f65aac6950631081df1116097a7f6a9d00a1afbe0ce6b2bd32ef22acc95219f05df9fb7e9a8b391e6277cffeda298bf094730f5663172183dc5842056de36137ee90"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5265cc0bc2994df71c4309847be0c55d8d08625ca88dff4143c91edd21e0bc807e99c217c79a0c09b5ff8bfcacf184d80ab05b0432561d7d05ba4d36af664d4e5209ab353e5927c153c5636b2c2c6b12e20229784745ac6096ec929e7487b0bc039d66db6c12ae1852c96a2bed13281f8f5a3bd62ac69b68bbe714d4ce1a33016ebd3aefecfa318615a67d693f99fe87b76ec6aaa16caea9de072d6f45cf37bf398ba26a0223b3c8beb293914de241abd62c27a7ce0eb663e93604150fa7653f56adad0919aa6fd2e7c72aed43e68603551c299e9e2f5f84d13d5d1f71e76ae4f327b964d18600a9b972bf9a15a3f5792cd54fc198e6fc4a7c13a42cb7e78cce"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000313233343030"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3ca3dec31913ad3cc2f3bb5b9ebd5d1e4bf137df6e5ae55fc5220c2b6ff150c8e0fdd6e4a07dd955f67e65546550c6a9fb89b7edff36dd8dec900aa6ff41e691f42000cf1e49acef9f491edd5a3bed1fccc3a36d48c0615679e6f166d3fb957d04e5a8198dc1d6d9df9605bdb827c7d29fbe40f80ad44fcc63cf9f93a7038941065e9a000450a769c4f3daedfd5c16bd79e4b9311f4e8e75a36c7a4b6044ab219f42feff6ec4c06aac0df4ea9152b47834c344c3d7c6e9fbb234d0cbc0b4072111b55bfe4187599400ac34c1a24861ffcc556c21a7e5b93160f46c0fbd0616dfe6b244dc68693081a59047e11b80438c3517031754ef72e4ea9fa3fc86ae1bfd"_hex; + r = false; // result = invalid - flags: ['ShortPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "ba0d3d34d59915be6351725300fff4617210fa767b6c48522900ce2e2c8f88b3f855bc9de7609603f2f405a81d3d6c1b8ac05a79fd278bb9c6af6dc90a6323c5d77c0562cded072bb63e9ce533d9ca497479ecf7d75e6b6a4d4a86418909b86521c5d6c7d5d634352d2ed6b15b16873f26b918e31b81e9363ad0ab373e7ac982e6aa3eccaa4cb6dbc1a807b73082dfac6a5d7b2abbb0a8d3f12f3c8aac976fe66b44350a2b7a8840f53bcd1fe76d9a0bdec6c6eacfc2081b58c3e818f2e40bb8d07b360c5fce83ece59267d39141c87807fdbee5b4ed5fc86e51111a57020211a593e4d91a6dd0ebde6317ebc12f52f405415527e7df07ba8af42ecbefc41d7d"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "cbaa8c11633469333a628d32e51af55ab1e1e55f0ba468446f532b1766924a05b9d0b5702493b949535330caae75d6d874b5bd24addc6515b1fc81a6c62f6ae3cd09fdbb1fa3c609600d668e2c1b711bc8509171a99ac6284e4f27cb638a7cfc46ab9054b296c0d3edbe5f7b199f977fcc3be1065bdab6d2976453a3be3e714dbd61c56fcf0472bcda6a08a05511aa0e19896adea8b76e8c9cf397f97e470cc722557c0c02dbc7595bf9a6bbed8ef1035c4808b673b5583caa82bab3f9a6cb08e8690f2d820e724e17e1799eebce40990663d9e1404a9deed8731d808dcbe4ca5ad828a1386a8f4a4745d77777bae65cdb393763d8c176151574b03f3b3b38a8"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "51a07d0aa5f96e455671513550514a8a5b462ebef717094fa1fee82224e637f9746d3f7cafd31878d80325b6ef5a1700f65903b469429e89d6eac8845097b5ab393189db92512ed8a7711a1253facd20f79c15e8247f3d3e42e46e48c98e254a2fe9765313a03eff8f17e1a029397a1fa26a8dce26f490ed81299615d9814c22da610428e09c7d9658594266f5c021d0fceca08d945a12be82de4d1ece6b4c03145b5d3495d4ed5411eb878daf05fd7afc3e09ada0f1126422f590975a1969816f48698bcbba1b4d9cae79d460d8f9f85e7975005d9bc22c4e5ac0f7c1a45d12569a62807d3b9a02e5a530e773066f453d1f5b4c2e9cf7820283f742b9d50000"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = ""_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a2b451a07d0aa5f96e455671513550514a8a5b462ebef717094fa1fee82224e637f9746d3f7cafd31878d80325b6ef5a1700f65903b469429e89d6eac8845097b5ab393189db92512ed8a7711a1253facd20f79c15e8247f3d3e42e46e48c98e254a2fe9765313a03eff8f17e1a029397a1fa26a8dce26f490ed81299615d9814c22da610428e09c7d9658594266f5c021d0fceca08d945a12be82de4d1ece6b4c03145b5d3495d4ed5411eb878daf05fd7afc3e09ada0f1126422f590975a1969816f48698bcbba1b4d9cae79d460d8f9f85e7975005d9bc22c4e5ac0f7c1a45d12569a62807d3b9a02e5a530e773066f453d1f5b4c2e9cf7820283f742b9d4"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a2b451a07d0aa5f96e455671513550514a8a5b462ebef717094fa1fee82224e637f9746d3f7cafd31878d80325b6ef5a1700f65903b469429e89d6eac8845097b5ab393189db92512ed8a7711a1253facd20f79c15e8247f3d3e42e46e48c98e254a2fe9765313a03eff8f17e1a029397a1fa26a8dce26f490ed81299615d9814c22da610428e09c7d9658594266f5c021d0fceca08d945a12be82de4d1ece6b4c03145b5d3495d4ed5411eb878daf05fd7afc3e09ada0f1126422f590975a1969816f48698bcbba1b4d9cae79d460d8f9f85e7975005d9bc22c4e5ac0f7c1a45d12569a62807d3b9a02e5a530e773066f453d1f5b4c2e9cf7820283f742b9d5"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a2b451a07d0aa5f96e455671513550514a8a5b462ebef717094fa1fee82224e637f9746d3f7cafd31878d80325b6ef5a1700f65903b469429e89d6eac8845097b5ab393189db92512ed8a7711a1253facd20f79c15e8247f3d3e42e46e48c98e254a2fe9765313a03eff8f17e1a029397a1fa26a8dce26f490ed81299615d9814c22da610428e09c7d9658594266f5c021d0fceca08d945a12be82de4d1ece6b4c03145b5d3495d4ed5411eb878daf05fd7afc3e09ada0f1126422f590975a1969816f48698bcbba1b4d9cae79d460d8f9f85e7975005d9bc22c4e5ac0f7c1a45d12569a62807d3b9a02e5a530e773066f453d1f5b4c2e9cf7820283f742b9d6"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5e91b5dcbf02d6f19621d41a83dc8f15ea83c0edb83765ef029b0acac2e1ec8918b1d2afe1fadf11c48d27594cb9c01fed79d90e5d5a8085c438450111aa7d9fa39c2345b14fc3c2cb34128f86db5eb00bdf8dfe38d61f29a41fe31342e7aaefcb4b122eb5d63c2f5c263c8df8450e9428ffef974d535818d51dc03a7d60c8b2d16c999ae46d73ab40515fe601d9b89b1d09c6d60cd51639a97c1d211e097609ba5e8c319c6fbd21b34a634ec8fb8971c5aae21c70b847a4539cc10dc314ddd8a9629e8a0e51c66c0cb61fd1f7228c01c6769190abe9bac9a3897800050014358594e0fb20dbb458b12aa1346826cc9f7e9c5352b073d62853dafe77c848cb1f"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "57e8cc1dc00c07383d89a79b5c8e4f5bde2a2ba55a3c7201b3291c4d805b1b2eb36f8f326b542342da180abe508669bb6cc2dd54e327bc70c1e317ba93a0fd21e7fce22a0c597c7420d1d5602ac43d9348ba3eba561f250e301ab955b0dc33e4abde32946b9b3e86c8bf07a44646ca595960bb988fef04b2824967e9da8b0264f1da0659373935313a574b5380f0b54ce1bc0dde423bd3a54f6ae5fafa772a55c1c44eb6edffecf13e6e5e1edaf87a79e338577304141fbc44f0e9eeb286f553f879addd6e12e436fa3af51ad53a72f2679f0ed102d504ee08706fe111eaee49d880d1a0b91924b3b79968ed0f9bff446dac199ee89b158c074927d27b864498"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "68caf07e71ee654ffabf07d342fc4059deb4f7e5970746c423b1e8f668d5332275cc35eb61270aebd27855b1e80d59def47fe8882867fd33c2308c91976baa0b1df952caa78db4828ab81e79949bf145cbdfd1c4987ed036f81e8442081016f20fa4b587574884ca6f6045959ce3501ae7c02b1902ec1d241ef28dee356c0d30d28a950f1fbc683ee7d9aad26b048c13426fe3975d5638afeb5b9c1a99d162d3a5810e8b074d7a2eae2be52b577151f76e1f734b0a956ef4f22be64dc20a81ad1316e4f79dff5fc41fc08a20bc612283a88415d41595bfea66d59de7ac12e230f72244ad9905aef0ead3fa41ed70bf4218863d5f041292f2d14ce0a7271c6d36"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + } + + n = "90a5d7aba2c8dc828e616fc1fc45c7c52130c8589dcbe2913da187572f6c23217b89a5186b6f90cbe053abfb0885a91f141dbe106ce6ad303904a5941df26ced10478cb56a7bd6cf1313c4966d9cf7c4509d9dc63566aa323e110af219f3398c04e79bb486de8703793473136f5c9051af24bd2c0208ea1bf9321a3e8f24af00aaca1216842eab248d58cf46ac786c49fd3ca8557e9b53993a4b9718cdc5c474bf1cfe58c07ad97b2c5acb7d86accc0fc7bed147adb2e77b8697d80150948117714b806ff76f9d88147d84e93987b724bf4870429e85a7a7b51486a78d8a88f1688f60e215d43d06221e2b993b5c12a607b80e9e0122472b29945f76b55737c1"_hex; + e = "03"_hex; + { + auto m = "33363730"_hex; + auto s = "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000989e7ff72e67e680bd21d5f966e4ad8a48c3592dbacc4a2f035b4ef4d17a2f25f8a9fef7e78eb99d76d68629ed02d67c43c4b7ec8c3badc32e3d0a524c326537739b0fde156723b27c23ae2b09895e470c64d700f5c"_hex; + auto r = true; // result = valid - flags: ['SmallSignature', 'SmallPublicKey'] + auto d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + } + + n = "92bf17cdbffb42fa9957ce37826bb451708e7cdec8752b809c81a8d16fe5fe4dab6a9db6d11dbb12086645db7546642b322e8331dd7f29eff68bf40b24f80884f5152b1fda9b9f7ae2fce2721cdee0fc48f85a6e8e64f767ed9727fd2dc597967e276a5e2e768528afdd9df4b6ddda4c174300e4da3c19a3c32299e1e7857934c14dd6203d8c2671289bc392711597155364a59046b2b9f1905fe717ca7efebb4c1969b804118effa240c11ebf97cd68c2aa19c787b3be21e68c0e397c7f04c6ef98950e27e0e19a40da92a3ea10800fe9252b77026d14c2fa1eb4ac102491e5773279f07d856d446f45169b09bf60b8a2695f5e4864eaaf9590aec8c7c2f86d"_hex; + e = "03"_hex; + { + auto m = "32353934"_hex; + auto s = "92bf17cdbffb42fa9957ce37826bb451708e7cdec8752b809c81a8d16fe5fe4dab6a9db6d11dbb12086645db7546642b322e8331dd7f29eff68bf40b24f80884f5152b1fda9b9f7ae2fce2721cdee0fc48f85a6e8e64f767ed9727fd2dc597967e276a5e2e768528afdd9df4b6ddda4c174300e4da3c19a3c32299e1e7857934c14dd6203d8c2671289bc392711597155364a59046b2b9f1905fe717ca7efebb4c1969b804118effa240b8bf4bb1a6d0616fd5be2f081dc9ef741a9a4ae7274418b791432de470c4556463108388e8e8ed5dcebf3558e4650c2ac97c86fa682176f09b5dd8cfbf15d19c3fe4f961f4607c12cb3dfad9b6a0e59c92faa1fc8622"_hex; + auto r = true; // result = valid - flags: ['EdgeCaseSignature', 'SmallPublicKey'] + auto d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + } + } // End of Google's Wycheproof tests rsa_signature_2048_sha256_test + + // Test vectors from Google's Wycheproof RSA signature verification tests. + // Generated from: 'rsa_signature_3072_sha256_test.json' + // URL: 'https://raw.githubusercontent.com/google/wycheproof/b2cc2fdbeb3cf802811da0082a9f8324dc334c3b/testvectors_v1/rsa_signature_3072_sha256_test.json' + // + // Algorithm: RSASSA-PKCS1-v1_5 + // GeneratorVersion: 0.9rc5 + // Header: Test vectors of class RsassaPkcs1Verify are intended for checking the verification of RSA PKCS #1 v 1.5 signatures. + // Notes: BerEncodedPadding - {'bugType': 'CAN_OF_WORMS', 'description': 'The padding in a RSA PKCS#1 signature must be DER encoded. This signature uses an alternative BER encoded padding.', 'effect': 'It is unclear if accepting a small number of alternative BER encodings leads to a vulnerability. This needs to be analyzed in detail. Libraries that verify RSA signatures by using an ASN.1 parser are difficult to analyze.', 'cves': ['CVE-2006-4339']} + // InvalidAsnInPadding - {'bugType': 'AUTH_BYPASS', 'description': 'The signature contains an invalid padding. RSA PKCS#1 verification must not accept incorrect paddings. ', 'effect': 'If the verification of the padding is weak enough so that arbitrary data can be included in the ASN encoding of the padding then it may be possible to forge RSA signatures with low public exponents.', 'cves': ['CVE-2006-4339']} + // InvalidPadding - {'bugType': 'AUTH_BYPASS', 'description': 'RSA PKCS#1 signature with invalid padding. The padding of RSA PKCS #1 signatures is deterministic. Only signatures with the padding specified in the standard are valid. Other paddings should be rejected.', 'effect': 'Signature forgeries may be possible if the RSA signature verification accepts a large number of alternative paddings.', 'cves': ['CVE-2006-4339']} + // InvalidSignature - {'bugType': 'AUTH_BYPASS', 'description': 'The signature is an edge case integer. Edge cases such as a value exactly equal to the modulus are sometimes mishandled by an implementation. This can lead to simple forgeries or denial of service attacks through crashes.', 'cves': ['CVE-2017-11185']} + // MissingNull - {'bugType': 'LEGACY', 'description': 'Some legacy implementations of RSA PKCS#1 signatures did omit a NULL in the ASN encoding. While such signatures are indeed invalid some libraries are accepting such signatures for compatibility.', 'effect': 'Accepting such legacy signatures is not a vulnerability. However, implementations often use ASN parsing to verify the signature. Faulty ASN parsing can add vulnerabilities.'} + // ModifiedPadding - {'bugType': 'AUTH_BYPASS', 'description': 'The padding of this test vector has been modified. RSA PKCS#1 verification must not accept modified paddings. ', 'effect': 'If the verification of the padding is weak enough so that arbitrary data can be included in the ASN encoding of the padding then it may be possible to forge RSA signatures with low public exponents.', 'cves': ['CVE-2006-4339']} + // NoHash - {'bugType': 'AUTH_BYPASS', 'description': 'The signature uses no hash function. ', 'effect': 'Collision resistant hash functions are essential for the security of RSA signatures. Accepting signatures without proper hashing and padding probably allows signature forgeries.'} + // ShortPadding - {'bugType': 'CAN_OF_WORMS', 'description': 'The signature contains a short PKCS#1 padding. One cause for accepting such signatures are libraries that parse the padding without comparing it to the length of the RSA key.', 'effect': 'The effect of accepting short paddings is unclear. It is usually necessary to analyze the implementation and determine the bug that allows signatures with short paddings to be accepted.'} + // SignatureMalleability - {'bugType': 'SIGNATURE_MALLEABILITY', 'description': 'The signature uses a modified encoding. Each message has exactly one valid RSA PKCS#1 signature.', 'effect': 'One effect of accepting alternative encodings of a signature is signature malleability.'} + // SmallPublicKey - {'bugType': 'WEAK_PARAMS', 'description': 'The public key of this test vector has a small public exponent.For example NIST SP 800-56B rev. 2 requires that e > 2**16. Thus, libraries may reject RSA keys with smaller exponents.'} + // SmallSignature - {'bugType': 'EDGE_CASE', 'description': 'The test vector contains a signature with a small value.The test vector checks for arithmetic errors in the implementation. The construction of the test vector requires the use of a small public exponent and unusual key sizes. These parameter choices may be a reason for a library to reject the signature.'} + // WrongHash - {'bugType': 'WRONG_PRIMITIVE', 'description': 'The signature uses an incorrect hash function. RSA PKCS#1 verification must not accept signatures using alternative hash functions.', 'effect': 'The security of the signature scheme is reduced to the security of the weakest accepted hash function. Bugs in the verification are difficult to detect.'} + // WrongPrimitive - {'bugType': 'WRONG_PRIMITIVE', 'description': 'The signature uses RSASSA-PSS instead of RSA PKCS#1 padding. Signature verification must not accept signatures for distinct paddings.', 'effect': 'The security of the signature scheme is reduced to the security of the weakest padding. Bugs in the verification are difficult to detect.', 'links': ['https://bugzilla.redhat.com/show_bug.cgi?id=1510156']} + { + auto n = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1203"_hex; + auto e = "010001"_hex; + { + auto m = ""_hex; + auto s = "157ffb942b1363b5989ec4beb93fb0187ef016de4ce055620825d13c3dafd4fff621c71920e884ba28c5e98b328baac29ad4bfc4d2cae2f0ecb9d1b6c9fbdfc385aa565aaf6c5b3150e085e0316e21d7d440a873074e5d2700d961114ed420478647a4769d832691f7a004d934a89dc249c9343341902d5d0c3d1a623001265634216beacd5f756821f21c3b58111790657690918a2eafa9e85ab1ee44edd3d8bb89e892acf411ba9eaaeef88eca37dffbda72751c117364fd1b38c840d7b42318fcd011a4449aeffc2de32836d3a4f704d4c8ad4e078315d0d1758f098f2ea749ccce62aac592ac4041b5e733ba0431b88332a39a2af7f68f9bb1f469a793b280b964f285ce5cd1ff3adcd7dbd464a7c9414ed45791073f08415be2dd9f01dc2fec8c3a26fe97d9778e2b2fccf71a1ea5e9ce017d2d46778d7e37bb832ebd5825b3257a7852db5cb6c132bcf9ba3522a670b0e866585444ed3601fd32a922818ef6611626eee3ea99cfcfeeaa4c370567cc65e0479bd35e091b772d7445cade"_hex; + auto r = true; // result = valid + auto d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "0000000000000000000000000000000000000000"_hex; + s = "631cb4bed6b79dcd3827879f6d64de3ae17e0fdb022be013e733bbfe0031cf204f0508ab87a2e2bbdfaa16cf24acc96b3fd2e72bc4a224428e515d6f1e0ea6927eba6ed7282a959e5df5e52eb3be9a39cfe139ea2fa45c21eb81b3197eff655b918f7c5fff6abab33945557a922063f9600a372ae7701db686f7e1fe4a6e804a0f624331fbb59536733bed3710dcacd22ec74b1a1386d045372853cac91130703ecafad7f6f42ec1aade5cb865339743c83e882f248b0db0855f487a6d3b55442f67773611a11813ff46a58c762b1bd70b5e870c3095507f23758e90b3c84526f47a825f0ae787acfd3ed349ca6786a2e84ec500c6042a9027a994c328c7a6868e6a81481b294383edda62773fd224af46e782ea3f00468515f6100486d94e818afca1bdb81851e62b3bf4f9236f061afafb3e399b93e6f6a295ae200c9bba5ff5aabcac8361c84f2e69aff8a8a21720b900d52ea4bddcfbaba3a231bb9b0dd48f0a4ef1cdd255b3524ca0633d04907ab672314c5e3173108313ff4a97df3772"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "54657374"_hex; + s = "5819a699691c01a7f35f0bb1831a1cb65631ef693f7c9ef89f1e8460ee2ec312f6fd38fe382b3bf4db8f5d208146c32c5ed2d3b13105743767a73529bfddb5753c8cc13148d41db97f69ea1dee0ef1e1de990ff565f633bd3cfd315a7dafc70aa7f27d4f6486a2f1e2711e7919c5c73c518069338c0ac984d75f58b00fb0eee0f7da6c9c84d97955137417df8f20c02b7893b5cd929ba37f6b3278a1bd35748e14086c5f7100abf2edebeab5f767bb83d999a61cc27531bb67e44a92004fba9944b9c5f770bc66671d2efc74e01fbbd2885c5175a1fd72b91937c324b8d99d3592bfb73efb9641b87949266de441b61d180e141de510ae0cdefc2160df918c08c53799f050ca4eeb3a8b6b5ed35b8b59d3acd13a600a8a137eb1b8c1abbf55f3e99cf52d7092d1e3acc08583b04aa25a052668bc982abf060ffb17c1782daf76fbd69e7fc9510c5c6a68bd525719be5b81d0f2a8b961f1aeac7dc13aeeeef9986c7a47b34f8b96167d79f7ec458fef7345c1c31bba599d09b3fe33e738bc7da1"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "313233343030"_hex; + s = "636d31d8d5dfe0fc6ab01ef2ccd4602dfea62d386b002c429e7e846e7a98d0cb1d448d25be039d5158887ab46a9dd49c41537a89036a065fc10329df051e5f2e5c1d4436e84790ff6db4d3f31575e5f0fbdfcaee625722c5492fceaa3fb29d0a865200dec06e117b04753ca9450a7ca7f7d1a1176cc38ecab721864413a0d7a22d8fc1595b6cd0032fbf154fbbb31b56d3bf963761ce8ec9fb38bba3419716d0d39e976857e79b1faefd5f5a2ce0ebd94968da1ec3a387804694d90f37b34033c7f70ccfb26beffaafb7bf56c1b8385d489217458e0a68b5d680f9fa45382fd1c227ff3c11e3ec82426ec648a564f0e886e5b12e695dd2fc8465bd9d08731fb140084c79be64d915bcb4ba10f1edb4c37e35231753be2d9f339d37d7b5f22c91584a68a973f9cc469a23d3b5800157dbd72a8405fef4e444ff01f7fd23efa143c1887504e81773743843d8a73209a1deb66c5f305df539bc30e871332e82330e5b66fa6ea253b2b64b4c9781011d20e80ddd8cb83916834eb8fa696b0a4b6bcd"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "4d657373616765"_hex; + s = "08e0ae3dc0d16c927c423f12a87313afd1d66fbd5d09f48a4dd1a8b52102bbdd208284cdd692932869803a5c7f041a4492ac2e664bb6dd981c370e0c79ee3f7c5c6dd37018986fc2cc618139fe3eb85c0616f0673403c4afe7cbca49c1eff27bbf6d7e541b285ffff20b80bf61dcebcc4250068e25ef5a8e7c3306e49fcc2a1ee0f500a3ec603b472082f12ce4a6a12a6ac66cd4da8b6efac0796e9dcdc66c095a6282ae9a32ad274efe63f43e725410e6ed4c480828ed876b76b71b1cb8c142d0c7a51dc202af796d7bb55cf544dbde2f564f31994911ec7307015b0da2c51abe265a04a74b9afd0791a68e725cd7d8b473296c5d948157c10bc4682f74d843ce72e9ee8719a7a49d9de2f982c5d4490451eaed62c305eae3d0f9cb3493bff056a0dbca8579b7b41dc8deb1becfd5abb455634569d58c5b5535ff1356ccfaddd14e0f9f7f69a7ae9cb9f4c0c9f661fde349facd21f0021423d3a9ee5031855dd242f27009090ff0c15d1655317383231799b18c01fad231385aa5020990f41e"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "61"_hex; + s = "9858e2557c6b99fbd84bc7eac3e31283a4efb351ff019343760a1e282368938e29ad902d3eb6cb29b35a036dfbcc7e06d2f1d15548df59ced35326295375bacd7a9d28a01b4e8acfb676d80b6295e19c6b7a259df56456e1df72f6a746e9cd31fed9b79b35d7a30a7aa257e9e8ac60ea886042b9194e7a383d1c9f71c84511faf6c96f7ae0e690112b26bb60cf7bb10f684e4fbe2a3a1b1c0caa9b1bdc79fde23fb758c2ba57880a4de461ecd2bc696689438183e2b9724fa68258f461bb4405425620a4d95c87ddd83e04be381bc743b05d26ede2ceff8a858636baadf56ef1dab54080da0f516307c579833717def053c8906d4f102448ab22693e7f52d5850193a40ccf0d68d1303953771a73924e4bcddd8486e1477d96250bf6b480a5f4b822822183694c52a2edacb331564444f0335d3b17d511ece59889b6d961767a3192d7f081caf7e671addb3757451776d4bd3b03f7b689843dcd59019ae4f292dba54738a88b86cc6ce3b123c61a446f4878b627a7f3585d8ab7bca9b258f10b"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"_hex; + s = "1294490626bdb36a31c93fa7853d93152d920b022f1b473bde3083a99e11aeba8c03218fa07d6c4a5f8b2504d2cb54505c40130fef5a2412f7a5ddfec5e2c8b5058f7cbde7ace0ac01c7ba8a1bd897e8974d991ad2b95c2f03100a34ff408a788c70ab5ec73b5356a4e3c7beb44fcb9e2f3f25d1c974ed962b148167684351dc2a223a174c9744b092071d58dfd39c38364f47d292651e7806ad7962bbedb64739d7ea298f0254244790e3971c15b861c95f00f65532aa1c77fba5c04ad078525128e92ed2b4f1269ae744547e3efd4ebb63e9df844df152a098c47fa492bfe0f1917ec973867c7491f64c172cf3ea1bc3f97b42a397e6ad88d12e150d3dbe360071a3285d6a68ee6e736eb4d7d637c649c2f545259ecd430b25b38a1618d69a4602ca8a2a151066f12c3807f5dc7cbd06bf095711e4483cb0a89c26dd9e4b0b03e05beca349f601c894f9a245aca3204584a9bd844772dd87b83d481c8df18b615307eaf643cbe856488c160e077458e899755301749d2d27bc190d68a5da11"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "313233343030"_hex; + s = "8b889902d581f3be759dab7e53cf3419d5dcfc825d203c736a374f37ac5570da2b87239c938bd299691a46387fb47ca656bb9ab639f6736207e19680ad1a0c7a7818f2498ec98e4693c51bfe414fcecff4bae7afc6db0d72cb9dc447e2ce4ce9ff435b9daa98cb125d77b7c7d2fe2e39ba15122da11bf19d341b9878de33d3cc134bcb77b9963d19a3037a67458b17eec462eb0d7eb7ce69b71f41287d3b104b45757c76440f370dedb720a0c721c08c055c5b815650737fa478898246d36f7722e913c0913612e753908400bf6b456f269538102b778257af0c7c14339d0ae1ddcbaa357369a065c0b3627cade311a627e1e3179514cd3761463eab7f9485f6651793cdff282daba9b16c2f79adbd24ba54ce4890a9685ca78d73e8785d722825c9fd22ff327b97f38d5e0b95f449928114ee9756aef5213eb95cc40774fa1733fd02bf37cf5243e7ca76f88e7e3fa8d28a754b5adaedf31a91e6911688a6149ecb52eab8024e72e1bc3a98579d9eb242e08fc42bd491e3b0924b03fb95bd1d"_hex; + r = false; // result = acceptable - flags: ['MissingNull'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "46da0267738cab66df530dbea6fbbebbe904ad3d6ea7e7a06e39a3b5f3e38bf5856624185080fc756941b226a52c8e6126d07714deb781f6f7944f47147c680aeb0dce310c7d6f429429ac73e562510678c23042b635116174a2c2f4e8e8becfee1e4ba3cfbf4e2ee541c7f7c27b1916a2aa165cdeeaafb9f81c84e9754d196c3a9bdc777fc55d86b6bbd16270bc4d3cc75c2960f2a7a661105184b436a31de2cefad722a14abc1cd2f2c75738b2c81580fecff78d7d385b20d1a03d4aa2c21a168e13da18fd628e34be16d821b48136b6dcf7594ab3e1243c0a2a9e785fe40436cc6fc460879b673b068cd35a9114b59c2dc61fb875310e103610b74aa5e3620c51a257dcc3b9b0adbe774426ede0f779ea9d370f18a19d8844ed9f5d90ebfc4e0607a467645711da2b500840d4851e3de63723283bda8d08acc51a012699df0e8f5aabe269206f93ba4ca6597e17cdc01d2ead46b5dd2433b82237da01518ee3168b133b6a42e9a73194fcf9162b71d08528254c34b20d692e141c657c969d"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "530bfb86fd2a4b31587767d5809e5ec2002cbdd9121e135391392c242354844a9b4c8993ae61bd85810a0ed240203cc4be48ded5997832570875a7b775206460067b30df7c3b7f7af9d98e436f0007ce0d6360de0c1a4e75912b885d1154ebc25df90465ecb5f07a6cc477e44d3579f3a629bb49b7a19a619f44e6b630b684f3ac4daee5eb386dea0386593be825a696656e130ec0e4a4bd5411c45ade6ddb4a6284f343b0a746bbaeaf03cef31120f19f2845dd9a7fb818406b0cba91598ece880836e0b17e6f375b8941381d0b301d0ed1bf746c992649b40899d2ed2b39d488981970cea6da2453b5fc85f23c8d671a3c7544f4a7133fb500f5448da44d4c405bb70e85aa3aa399204148c01d1a79de3f784dc5a9141dcb41872461e62deca48dc567b984ee80097a099290e413e575411faa54f7f3387cd7759f71b8013ddcf9ff2079503ef802c54fb731e3131316c93182dead523f41551bdd3a96a4261bf6c3dc72a952ed4b7cc95d116741c653494b5ba8ed9aa565ee57ad22a4dc83"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3e65342b3d9322ee9b0473f54f0c3be5a17f56f2cfa5a8168bcf3001ca1256be867d3a575b07c3d7d020037590aa10d75dd764a1d57a123976116286ced29b68e3b625c3ce0c235a629e27e4f8011afe4b383117a8bfc927a7718bd81ec4a156ef6ec5cb206c2f23941b595ab3e8e4a3eed825c8e2af444cc7b0ae0e303c8f109cc149fed6e8a2679c55a2f483dc64642170d0f62f0f20a5387a80c5ee3e72d275a8c3e18c65de6f9af8a7ce886b83d84cd0270bddbca64db5d6de42619ab0f37ec18594a09a80c0183d44dd3ec6b46ca4846daab73effe1d5e2d8ce302db26708ae9223369ba5c488bd11ad27751abbf994e2bd18cc999dfff0f65e8c6d6d04e229252a5d6704483458d7d094dfdc96cd5a7b0573a2e0b50fc14a8d291fc856e63d82343534b75b25298c6ab7af401ce1215cebedf87635ec80d0cc228831d26c40efa5997105fe4b3786d0a44c17be443a67181d35a5ee56da18b7e97db573879686a406c3bf340851d12d8ed57c0530433d655aea85eb3211bb7f128c91c0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a7ecbb2fac0916fc1bc793f4503d496cf2683d1529632eaeeee4fc89bb8174e7797a8d78faa95a52da0c4c887585d61c680fc4d1224e02d3a0dd2b33031120a14be8ad16e267656c683c179d261f6aa6089a14122168748a4bfccb59ecb086c0b7edd342bc61d2a9a2f5aab2f4558d458971ca04672e513d3db5784db83fdb93816bf8f1b443470973d96ed20a7d85adf93bcb497ae07022db0f939028b9387a1d448b3fab2408c2754478621640cae0ee6af76fb6e653e4d418e83d431f7967e435b748e8c7a26384addf77115e0dbbf7cb5be6ec0d11b183edd6def81d0554a2e7fffe692e3cdaa6c138cd73bff960f047c0226ff0ce1abf9d16ecca4c3b998ae8ab1fd1e35f80b04979ecf0338497d1df5cea3108bdcb1d0bbb6636ae234cd81e6f2df123d263ae38924783a2a11c85b7605808e84433dfd72d9ae5b9d82fc6a8cf385b0994d32afabf3ba62e8578ffac2073d81d69c808a2c9f46b1115ce7f26885d1be3052ca23e2cfd05e92469795bbb274c4cca1b992612d0610c27f0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "39c7a8c06ac4835655fa719be214556e0adc5a00ab466d88d33e694c30882e7c41d7fdefde724fb8255a44ec4bdbbd03d1ed528b4ea980bde20717349c0f2eb78141ed6f4490173e62cb2c48b76357c7816d1b0eb5f85391143d04cf6a100ed6917c46ec661a35860b3210ebf71bd7e6b8e4b8909914226ebe925c99a7a5a66f1d02c876f25d80ad4482899193d9a444a8a1d0ad8d5afa912b53995dc36ea89599f4f181241a6f4fbe698de8c7c794a82f1f576c255e701751d3815f5b6fe93efe9a678d2422ec9a4a5d090beef2e552db07a4d146f90bb4cdf1ea6fb844ffa1948542bdaaece102fa3359d2bd23c6447ddd64dfd7e4c94c801c2b6ae17b07b07a4dc79bd69ce5ec46aca637845a0185a372feb8adb7d60996133b9c37c32a9ad869ff5534f39aad8701e3487e1e6c8fb9ddaf71a1c34374a09ffb85fe44790ddea79439bae8eb51ce12e5abed6af335ad1ddbda07a8507b6df0d0f3ce80dec487968d29d92a139eb1d5ede5c28240320c5ad9cd0edefb69fd156f0626f6d45d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "93391857ce1fae6df31b1ad972189803a1fc3ae91b89a264ff86246d6efbdc599003bb7c35814a4215dfdd3932834d4064b497f464fa93054363f1fa5e365825d1b87881e125a50deaf22d75aae32fc0fe1e8f3115f7cab6af0c2aca54d6f21f5a72fa77a0731c9f8ea82ac2e31155fe56a7950f61fc1b22c274203ea91b28a4bba0a925ecaaa017b9258e1d0f492c24336334e328054a12df916e1e4108d0b7e5d8b2bdb3d4a10282cc1653b9df2a24a7ecbd753cc7677c88c2acb7f741e3d56d670c226a827fd6b19aefa445bd277eed60dd13619427a048616dd26770ce76a3031bf5856b50f0ceacc7bbef257d86f6e9fae62aa6af550c9d526a6076d1de77a9097acc15728cbab9fedd1428c33a89e07c0a49dc89822558da1da6db6f8f738ae309fec8f033ceda8773ed3eb5bf6203fed189c3b7a774cc5f44073dd0db9e4a614bf7c8005d5c6e022fda36b82dcfe66f4679eea23269ff39213851798e63e42c1ec5be20b3cb5e20787597b43248d4fadd1c10cc94d066639736b7781e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c0177318feee842e802480dbe0dcfc6215d75431a30bb8492cfb1cb84f7ebc73dc37f56cd0dbca1f6a6516c6eee3de3addbcbd569bbc79d533a4f5955d95babc717cd4c8f5039ce49ce7dd20aa44bdb96a394f8499172079f8ed20c4ed780ffbe11cb00d04aeab80c882eac517c153993892549f2d4203d8e3fdc719fd745b06103b49f54ad51b6dfd0f4c94b08b7059875073ac11701e16af0b73d7b305d9a420fcb560b490d01c4afcc52b9b21a467e95bce62da8f559527066116c602bbcc29a434ca04ea3227a25a07d733f1b867040ad1c85b001904c749505166635c217d8858e637cbd74ebd1b86a400961f2713cd00e64947c2b5d2b97a4ef795822eae56328bc4bf8e8c9c8bb8d759a3743cbe9d368d985299d8338796ad6e24df7eb7db18147450d2db91000c8667681b47aa9f0f2e08b48aebadaeeca32976dd03ba94ae72950803a07f566e091670c83c8ad01cf1a2a921467010c20975e1b9653a7b56d2137799eee863a576a2275c33320445307670bc62fa039c7cdc8094c1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "562cb29e3b27d68a9f8741a57006296a943bee15c1e0cff97e8748ad822a321234a15fb3b89f4e07c1756d693507461172981189e9191e0175c71accbc258d3e79bbc627365c95f19fa416aaabf223bf22fbfd46cb8022a88600fdaf84aee70e9c8939e24de4e8a5fb2536c4fda5e3e3d71adc377708c1f4d7982c0c2267265d4f85d9e27f689de2c216a21239d6d4f95dd30ce102da43ec1b3e72ee5696db8c63cf06d94b8ccba75e197b2d26350d35336475f66de615daf8c1900ba37d7699ea881c0f7af84e936c402c08e15d3923733aad0894b4e78216225911ceae7f4c770a17d90fd7178a196050bef7218d7e0fe7fd22eb5c3854c806a5cd179e3a82b59d9b4e9e2dd1d4cd998ed32ffbf19a91cb19149c948b74861fd0e92174c2f35c82c9232a8413adeee723fe489dffc8aded50c7716403c02549802e083f16584b05e3f67a4e726dd8ec6d4adcfedc0695a47ab75e6d0b0486e946b6485f89162349eeeb88f20dc3095ec5f45bae1c2b7af4352138e864e6fec18b9bbe98fbf4"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "92218f94fc3552f215e98d21758992429cb17fc3313f780feea3f482d0e32cf97fc8832205e74286e69a1fa35062b984635687692d15e6050376afd8e8501b4a07e8c61006a2fa6eb27e2a4c310f54b907808027eaf9cb0530f8ade781c4fa9095a41bb6630c1e0973783eab65cb0849f9c8e89f3c997ea3ab930b4fc629028dda3d5e0e7dcd99b2951282c31b8e3739b6724a414dbc254802e63a1a6a268e7fc6a91934cbb27d9cf0ec994fd02334a7451c3658e7ab13aa5dd27e81736c9cb316679eb9a3d3f87c3739ca07a7be08a0402ab2883d860867a4eccd2476c8d9e37e2ec214d6895664bdda7ce7344c95622791cdfaca32508c8b7388391846b720659de2aea7bbb84520fae9edea66638270e735677f175f115c582f8d76185e8edb3d105e3d6c0f490ec486f7ba41f750add6d50997ec85ed351a2b14a4c328a41faf70ff3e50fd4ddfae6f9c74fd72a7c1bc0df045e31fd72f04b6a797e0cced07bf2fce788d75ef6d783cd6e4eff98c49e99487c76ccd4e08ea26d36c29aae1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "79ae98a76ace727161e1ce51f127445bad0f3aa45443a099d246b3e04057097bdf2c99e744fee3a55a6feb7f386e89b3b4efca1cd4bda07c0fb4a06c3130c9d23550f56899480f4dac7b74af496e74271eb23f96236d61e12d5fb616b3bab8c53845816efde0d33a8f041fd0b8b01391e99811bc4723941a0b5cef0974eeeb2d4726b51e9a8687709788abc5376374af650724ba6aaca36b854afd09fe978de357de3ff1cbaba28b8afc24887742656fbf6007f61715e9102aee9c1544d8e7300196f5ed3d86d3e665db7b8f98d16d249f92f34b0faf3025387c31b5aa572404b8d3338ead9d7e4a9891f0796cd6866ae0b34ac57592ead287b984794d6ce7da2c89ab5b352b79ea94f8c0a47e03eb11fcb7cb55d2d00a88a09e22b9b8d5040003e4a8b9b5d411b21673ecaa59424bbc59a2e564d7d7fd8a3730c09eeed6b6f3f1a6af60b9e96b2021e27df6893a8c9c7bfd394c7aa02bcf2af96a392497ef1587cc271755b84db15957d30064fa1be2bfd8bb46de4285640e551bb8cbb843ed"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4bce06246b965920ba5768f11973b7773576c8ca811031d091fbf88f0aeeef793859aeee2220a543df5dcb0a6932ab7eda80ca2d9a45687d00c570c0494deb6960424d936a21664108047a4b4f0a3f120d337c7e010e56098e9b707319b1e306a499843d53ae351db6eac5538a4cef9d49660345bcb5bb18900381850b371ad17a47ac57860d1ade90b839402c6bdd8479c79e27fc9cc3fbbb8ded4348da6d70ceb8b6c95d9c8efdc6fc0a51f952ba0e7dcd21f28dfbd39362f2a817c4045b1a3cd6da4c2bfce76516bc918a11dafb9f0c4776bf3f23802b38be8d03cfdc6b3551998842a028ee1585a6c232409469a869b3b144d5d02debfefe09a8e14d0e915dfcc722fccdb87e055929140257428de416d6caeb2437857d585ee6c3a4eb64a5d8f51df2050f28286e3e1987c6e3e3b22131597ed1c83410a2569c8d7cb04a80ef8f37bd043230502987013f560d7ba865759a01f588611d9a9783753093d87e3da0827c7903851ae9601d1d0e7766ba645a0a386d49ae2c5eccac6667f449"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1123e2e0acbc7c8816b6dbe2af9359a2e0b6c10dd522bb3fdfae93855ba73a95961290ed808b3ff8eee8a9f58f3a77f05d03ea1c09d849080c415b3d4214a706692fc72692a75c07b6bc21b9ba4e79f842519b1a5c67259f028995d34c993d0ee0d71262892e3e76d677e838a308a2b4bac5fe20a6ec073148b1a420d5eb5bc4f2c9a45b10ca993d51be5146ca9ad4597ac6ef522e0441e2977fa6470545b086d434d69871561033419e8540299d92f5425e91f82ec902a2d2f5ae8f9017131644107d120786802f30746a116cc67f85ee9676d1738dbca0b360ef257588879f2f6a441d66d5aaa20a98ed3f57a73c3b96e4ced07b8129b50865efe1b8e20f0b81ea5cea294dc99f67cb515a25c646b749b2cc3cf18a41f1e3e66d77710b1854c3af1938a74c991a7e7a93971acc3fc3de3dbab92a84b498d711718106c98c3fb39d3c6eaf5c3621af25d3872e0de8d7588f742183918267458e5975bf5cf0f6c43846ccba256f76529580ff9913776600d1538002690dce5bfb8cc3356d96d7"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6e8ac44ae4bfe2af008414861bcdba58127d547d3b4ba6516ab18875ca3dd015dfe303d54b50b2fa8c001951d16e64aa9c2b14da674b4547317f14d2921f1f22ff72f1529dc8074725872720f3799bb9364e27add3c4eed2da587a6a8fa45387a80a68b879b309447874b8d81b74c69486c53aee543ec53c02433c9d405b86d0bca97b34f38db3e7536b838a87c2e007cdb675b7c93be81d1b102ef60672b740f3a9c8124885b6228bb3aae713b69224c5278cf9d4b23028d8fe0890f9897b215929e110265d93b66b98357bbdcd7efd51598012c313b120233911001a8519a9d98b742650296f8c5a67ff0fd0446b3006ac254cf8085036bf6074da96230fb0ccd02fcd95fe4b1e8dc7cdadfa2677da92a80efe36081333c557a4704422c3780a00beb6670a7ca95a30c9ecd78d46c88e30a081d0445142761ffa4e8c8682610395d2de0602043e6567a6d62a77cd6c697fcd362b13aee3fa92946036086ca3b002f1eef8dd5550a4aec137a6f60f7d943c9522f55cdc14dfe58639b17350a3"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6823574bd9fdd7e59ced33e5660e9b5cdc90417fc350cb4535d78dda72c07ce81ac1aee37b90a85ae15f8f59be9461e846a45bdaf3e5f5868b83d1c9465b080d5bffeb933aa9341b6d508b059cfd2e62dad31f35d7fe9058bbe65024d0f73d43a3450eaa707957fc452a69ab9a8ecbb8ba002c870950ebefb06fbd9399bd08d64f72dfb4b2d3dbf662daf7c2c1dd8c3c445e1402e2009b47fd92c3a23864a495037b7f2fbc3adf19355f171e2a9f65f5a3a2c45b131e5398c434ac6daff018e5b5e44b9cf1564cdbab39f407a334fe1f05ecf84f49cfee88836d1068012b4fac6b50f85f8b1a8c37a333028e38f719ee6445a9fcdf7bc0fabaeff32dea7e45d6e1c12003cec8dc5680be584ef2cb478b9988fd7484e8d374d825a95efa5163309eebaf962d0b8ead00b4b9e4791dd5c6bd26c085c96462f2e4d19cfef3a0a97cfdbceb8c6ac2b45aac1df4be4e6c775021c6730e88f86babd96bddeb0e36d0fc573c9ea9346d6a93bd096c8fce248b93dbb0ad00596788cfa6fc0635fc0d0778"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "90954e5cdd1888a510092205c3f66fa1cc9ebe82b14e80e0353ffd417876c69701801153402aaba503e98fe9020f54f717b0af8968fc2524a3081e709974ca8001dd93e52fe0d1782e3eba03a51d260582e4222937252e454ae7d5ac8ede7a4888ff826547350c594186126efac622a44e9731620a57cb73de7e29bbfd727c2dabb6a5f6cf3eb0dbe072990a8b8ead67b8a719e5734d7f4d96fd674c404491becb4b3ecddab7f872afa3326b7e18d47d3332f654793323e13b4d9d2f77871c7ab50ac4d76f57fce635da6656b1e09b3571b8e841835023b2226a4ba8cd0b95588b0827bdd4b6f45fd183100d327777c2bdc0a0d55f0e4e1760cdfa7a2b701f06c0c5800fb49bd48d57a077ac90f1726ce2ead834fa1bdf735b13fc234a07685537a5eb01ec44ff8dcf086d2de02007981bd2338bb2b455a1379d72ca8a552bab119692b9ae1f2851ae5e838c33d1d2255114cb3223edc18512cd41057b71c4185022c4765049089836d62020905faf3eb92ba80dd91db64e51a75dd4f206c140"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "058742fca1521993d7e3bf04b3369a8cbdd505da63f7684ba9279dc8db6841342664a5d780dab0b87cde7b2dea6a0fe77ec1b723a47592ea932f895faf2d1e8dd8ab16228942a217db65d51c5cd29c05590ce9ddbf6f19111c9092e60e48ac5ff720e0f76cce93c6de41023033a902be28cd5c0203d06f589e7b63431dd741a3e227709e73793d0e2bbe0fd22dfbbbc1bfd8343dbdb8ec3614d771f1c58e107b567b81105546a3b2b54d3b56f8c5785d50f3cac892e03f7f879f22c80c4cef3faceb1038234e6bcdf2382d8565d3ef3ed668b05c64e08e0c7bec759ad77c6178161652b95142ff1bb1b3ef0d1738e444082f113a448e4aa7d3bd182ef8caaf6e2d07448ef5ca7cf7933690040d6d41b5d19378f41bb9cc7e659251bb63444c3983377bb01a176828dae9b255885bc0d872d33a0a257940f3b30b352986f201646efeec10796c6bc43031813f33634b6450a2d9a9d3d96ea95a6660caba876a0f311e4b083b25e2fa9f69e405e59fe81d337ef0b27996e76c816bfa84929b8a73"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c6c491e6fe9fd16192b3baf32127f4f9f7dc21b1d2950e67006453f472cf4ba3fd7bcd7cf6f4fbff726b4d757bba414e1a848df8759a0ed67ac8275962c5e812a0e5ee123fc87a0bfbd9428e9f5fb0b484bc0e28b507606a71a5df14a02e968bef67e1a55f66bf54260e5563f8cb14d98ee2567a7653ab93050bc443f6cd857ad4e26e129350cf283ff7c6141ed0a5c5f9034c5e3a4a740ec1e80017c9f2806e87eb946fe7c2e322091632746788d9763a2c11563f871cdf0917ffbcaefa858e03503ea4ac73c6491ae12e9e32f67f217f903f6cff2b3f1beaea6d2fe4aa82dba43d07fc1cadf48f4891acdaf8e622edb0c8d7e0eb745e02f39e69efd6803105fc8413f16e891113272b1c3800b336867a1a303cf8b80527611fa2328c444d293287b226ca32172af6aa79f191811dcce404f5cfda1084e8b8cc8f26c875213ee3ff2d758f58db2e7eac571ab62d4095283083e5287e61623ea9b01be7b2ad31e887146f73ef3a1d70e86428b33db66de0a0e12d9b6960c00d9048b266958ac"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "544f8bc68d5fe49ca8188815dabf1c434ac7379a3796c5c78fea5fd2a9e36a71d50a194724f65cdd9c9562fbebd44f5ae3a690946fb6e528554f51353ccdc899c0c3f635bd83afd3429ea7cccef96f69cd6de7ff58ba4d22ba032bd0a113dbebaa780f149a47203a65973c27f0bf00c168382f2311de1e900253418c77d521d5c5838d4fedf6c3255d8c05051c396f0f6705cd511a94b19a96b043e3c4f95422cdce64c34767ff6373199ae1d3168b62ebc353b8c7e044f4a1ac36b1f692183729f8865d24966101ef047422c284cd9dae44f968b209cb1dc11c60cbe2880c3745862bc1c64899480ffd3229a551fa6e765f4c01731a978a1e2722f1fa0d7f235ef114523756848816cba51a561744355d5d484119faffb953f5ee9b32be692a09ae40bdd8860687197544c39535b196766e69ac8a05dc40c733a0d906d0f7735014810621a6d83a9e6234e6d2d9dc7b1417f8ff782c8f7c44c713dc9fe30757ff95cbcbd159f80fdfb86eae00bb8565d497aedbf3c4233c616ea852b60b199e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0767adfd75befa190f623ce2a00fd6c0dd2a8f1e53456489f8329a2ff6dfae00ec4dbd3156cb278c41c197bc80b260c9b8332d5f0d39fdeed33c772c45c17d3594bc37349a31a9ae58b4426860036680546c66d10d3d539ab377c2fd3ae25de99476f94187b895ef9384c7515aaf9b8d580eed7ed9273354eaba4ab57e4bc9b7b48529072dc691fd7e1a51a4164a795e2a3ccb2520cab25b8e78fa7ecfb057b05e8c056fbd407895e83cad14b6840ca773d6e6c8f2c3e7e34d77e3f746351562829a81e04450076c144176bf52c42189336313a71924964bdd34b207c9e69c424030e15e9f2daa50b4f162d2c872828606b12d71cc845e38149d76ce72cd11c33c46e837094b73905534cbe6ea9d9f84f74e9125a07c23dc32ff7535177eed47f979e7d98f62864ced2545a5e994eccce3c9ebab7c746f9a79eca3fa8523cafbe69b5fcadeafe8ccd00d91c1b0f12fc2868aeb19ba57863bea62391235eb35fa7924ba74b73bbd0929aa33862419982fae0389352840833e4c8442449a392105"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c5dba54644047fe0d229d54710c0ed4f226380e4d1ac8aa865f3e8060ff6c5b3decff0836898d75b59d6e7a6bff092ced3782a8d46af8f3861eee72045a297b25edb181d1ef69c3ae0e69da6c04fc9286e2f919a531c44af2b2cab59a815f3c02f67a1a2d0b5ac5dc1d8a1fc7f6fd07ef6e3e5415987523d06a9a6a46a6e71f8892756fb18ad6307c22cf97075f6e3abe18992b55925d26dd2fd8227f34f992358736f22ec94ddf9b1401e901931e035fabe04abde7fc3e1b3aae5ea51d5e8c1e4cd6ae0adae1f0840a2c990109bd1fd39d6ad66cdf56b9759067c10d743f39ddf608c8fc7792c753cbadcf5ae6088bcb485c851025c5d7d0f28b099977d619b5b78c3ac9ae15c1fec85ce2ade0743c11bf7709e6e48823a9371e380a9fd0c06f2f7abf6177ebe017ae8d9c1008f04b93a8588848dc963cdcdc26ff6275a7680dc0e5039414d746decb067d058f767291cd1a0ea62850496460f75540ddda51171db09e45098833e2d67e53bb6f3ff7da92b48191c0d7b4b3161bec990359001"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1a9716b7cd0e7d9b2c348076459a9384544de7d52a597fda1d6227247028e21b910472a11e6f3924118a364936c895eb4c3ff4cc4064c43175a78f0b4de4464fa32c14c3593af96f262ddf302abcf7e6756b2a79b821dbb195640e8d30ce57d216b178a4a34415dad08f4cca150e39a901aa478d3f5fe4d4ab351d41a66df0e0677780f84becb4ba59655e211ee6f421685cd42616fbba2c7cc8cef92508b022e525195476fcff4357b79f292ef7e4fc754de490400364ff0969946c9c76366f17cc985aabe0fe6011e734d9dbfe6501a13dbb60daa4c78673a25d84565a1e13b7e981157576b8bd3e33ba750c9bb7b5eccc8f8fffc4ed817e2444425bb5b5d42a5d702d8b0cc093a57336d4becafcee90a65a35ef4800e0e0a5fab2018b1bb5ea153ca23ec59ba40d05b8a3df4cf807d934483fb0d8a2e7c174eb8c3f2efa7f82ac8a047d0b700134eac76a469d6f40e87d2ca2408642218f47e4359e697c62355813e7df722ef622659784406eb5ea26c1fe3c5b3e917b13a12363b20c5d17"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "191593fff20301e6587a3e57b9228b77260edae7e376416eb8fd4d80b31a4e7326d0e59f3ad3e178e84936c66501a8fafe8f2f4c9e4ba138cd63991342eb5be66c4b6231e995d6dab798efe105f7133db0cfdebe8862b21c447a2acfa9626e4307a0c7ae0fc7f4de3c78f9ec480dc3756c4d2b8c2d748bce4a7865fcdfa5753d72f2b84b609af4c0039425a0b80ee4ebac04bece2e11725f9f766f93917f3822c94c8a186f4ff7855ed54da3a959ccbab54b7ec2a3f41073d5254a06ddd8a240a997e391b06b083dc4d9b3fe7feef65453f356c84492d3842e957ab113897ed874ae9c5ce061be8fac4da3228c0fddb7cabc89c8a2edbb3a1b3f78a8cb41810863f9b1ab8e0e2a6a2782045002d4bd07cbf0c6ce589dddac5878599be97cec0c04dc42594e2366493919c6306d1b2abb1c1279daaf85c90be4904b93064acc73a7d59eff8191e3d4d9e3a763dfdcbaea492741e2e17707285a9ab8d9aaf8d2d95cb4ee0bf1402297917ab025cbae8a201099c4c06ea7eaf0c6808d142057797b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "71555a4df579d3970cc515fab9cd2775782e87a7eeb0cdf0fb9614db00ae74a78d495110577e29ba7d7ed8c2f71b8f476a87bc569aba9926c75811241b2a3525e6dbf3c339363b9d85511a89726ade496fb45fb476e0fbbd7bed7ac1fdc9e8948f622b2f2532cdc139fbd500f2807022739cc396023e09833f513caae70374296f6324e31f27b1f00978ad68a65a87f63e868f66589becdd34dcf732f7fb85a79a28975fad578cec2ff9f2b89fa7c03b03fcb14a0cf2cdc4d989b6131fd3ee11907f9405ded3963c2efb6c1bf79cd42335cfa143e108b8b9c2aa8f7d1e417c0fc7891456fd7ef72fc1d0d50affe882d0a31139df99a6366e7b5ca2cf5c11e7f50e2c52f91a36543c554e2e467185e0bb4fe29dda115c214c306dd450bd9c261aaa2844091796c2e8bec02b40c7876495b7b4d327c6ab19e1a0a90dce923ce8f8cd7cff7b6ddf59a011d821f2c86207b356d0badac5c1028b3b3727933f4fdad43c923495af16a23e913ccb998ba0975863dea15a42ddffff3f0b4f04a153372a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c3ee2d5e72370734429ea8efb80d949ad0f0281909af720183edc0f10c83699f8549fa7820631d084c812d37e17e37d656f2749721b90db083ac0334b56a413399a92977b73fe292822433c1c97b2a176722259e9d19e28618dc7a42aa8585e9665b55f3ce00dfd28c7861eea80583fa99d68c8dbd5accddbfd8dc2f74b9205059637a5a09952b03ea2ec0bc2bdf8ad211e8cd6bd410337eae3331715f92391b631b5f1e2c339dba0cd6ccf9cbaf17c30346987236366ae14882046dacc32b676d84f4378c3f605eb81529c398882450f833969c8849c489934e0225cdb54ad6539f81e276f16004761361ac114581ab1fcb94bd05854687c8117c590683d7a49f7b5d2b80287cf47e001a7c11c74583ef2dcdd096bca5a38326f87e67d4ca1b5e36f88f0f0914ef5405d49349febbfea2ffd44932b7e5b12c7eb0b78c4de0accd9aac30612f6de12e710ca0d5c1db70cadd03e88198c07731995e4b5627dab808d82e2fb47a538323a65327f236c1fb192967fcea14f88c03beea4c31319fc2"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "004c3e2c6d82ddb5af78bbced9b7d3543f69deef0d7b0acc29652b13fbc2b0a256a733f8201b334918dc8354b3817d2cff4a2ca7d00b329ca88217f28087020528c6c30a75a1f82e0c3ef3e49d8335c1c354c31b31562dcc2f98e6b960e52452d0a37cef4ac21c41110070eed657f2ff30839976c98f38151fa55aae5780ab72fe2f5a254b4f83c8493001a598f2b57197fb3d5eaf439671b4d4a596f7c4a4537d5ba3937c9baa57623aeacf54cfdb708dff8aaf09a23d285ee0ae6aad50ada1f51c1ff5c5a6468f791cdd7619138c06855675da115043795517395716cc8c0d282f5aa5c46b92a2d1cf20c50ff7f69749277611a36f18271d2ad91ca371ab2e87aba74f83c37523b50419e5debd36e56452b39059a32823e3ac57929452052ceebbcf517a8733300ef3500ef4b08e4d2f6533ff3193e866dbfcfb2e841dfc133163ad3d7b605efb3a8c7715f0dcf1aaf848c4721f9c5de2c49e31e92cca767b0fd34d34c1bd1db1dde2edb1eedb119079a4cd25b0862a4b2447dba751e3f3cf"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "756428ea39f0895138538845d40ff1a8957b5c3e913e7b475198268e40efc604cfdfa189619f60f9dde5694932fe5419b666b10abd4adf096d6af10360e1c6937f3c0ef1e37e2af4faf064831ec44d1f581398121c29c1a4b3a056b20cad0fdcc99ad6f68a51e12717f72d2981038ba2b860f7347a435a69ff01cbacf8d4c66ef98959049bf90f6c78d2215e66b8453fd7de0c2d6ffef90fb003192d053046872fbef084fb1b104a37980c2604d61db8340254b37c8f4df3d5c1ddf6745a00274e7b826398e756d5ebaf19aca16a137a6a38e51612b580ca3fcfbc4d7eef58a743c8c7862135eed1926b4592071ceebb6133eadfd8ae270e1367f705f19b44e0232db2173a261dadb3c61aeeb9ab05dded16d95b6b0ac7815e9aef31314003949e19cd76ed5d7e57509057e6031cda36d17b1988479c2bf217e21a4865743452695415b70e905f836561f08e8df78c593e5a64efbb19b42929c4fc9d875a8769895f21b887b1780dc38937d0dc2efd10a14030e43ed63554b1ffac50b801de08"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9a32e4a06f502fc0991ba84079044501b140af892bc3a3c46f9c41fa75c47745292de23fa60443adbd2e705ff47ebd1338771b157741c019c2187a2c8a08e06583a5e4d83aefb3146a6eae37ff79c499646116f2e457b9baff4543d2cb0c266fe0a6f75218a0f565c78904777fd63e1958320f084c9abd89056d118a269c11e00f199782353950c005316cd87058ed794235fb0997fccd6c17c7cf9d5784cf8cdbbbafb96d6111824e658c3bf574d123f6dfaa1ddf77f093ded9e636f5b921ba9b205667e3914932407aac17813457ba75e9f4380ba08eebb8abf5ebd281fcf5b2e5d138585651f25c1ca7194edead3507d6e69467013512b679dcd9ce400c66c1f3c0a600c9d0f6c33a56c366e56c1e413433f904eab089075ee9396650849d70faa450c1695400b2f88d42818ac212a13fd9bc2f6926e2ce92d7394f8627b4ebd27b8d45e179ad927099e3bb5e71cfe6ce275b65db98ec4fcdea0b43e2dcde6601f0a1c54de549ebb03d98d1b361be9239fe8dba8dae94cf9d1bae5c51007b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0e5130e5c5145ff0822edeead396c87963494102b8a4a0e38d9f55c1e698d677e5fca1375cf5e027024966ee4fa8e2d8b4f25cc2ae8cbe49050bd675f39be5931ddcce426e1977576f60c6b79174a763f57395890026d762df6c8db0f79f02227196606256ef9af7f6a211b38cb1aa0c2af9be830e8bfa9d30169381a22b74f138939081a5261f3b277f01aabffc2dd3af713b3cf11bf772d69d157d7ed34c2ee7682745129cc7c45881e00a235c5103c09ab3719bf56f22cf29c4e962cf7bf4f633e01dd3e49fbdbb019cf2b56475fca8007fca63202e02dda6866bad778538e459e7df0bcd234abf919b5e6713a68a9981227f8d3ad204d077bf2d70117ac606e03caaeab26d8ff04c3583967a77c63a3a7cbf3d820d650d56c76d31c71173e9577d238f1ec9bff8faa48f3ca49f531b38eea21b192435e0b0138f83b54635e07c12ad6d7f06b5ef51bf5c21083e9170e86189a47f9907a9622201cf3c689b62373f94c540206c8600ba48a049210f1ecf93757d22a70c88402a17ca6a94ea"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a9ffef059db6395dcf691eff9ab53fdb762000fefdc58b964af85ddddbed15049cc8bb2eaed4aef8974bd3c9e65386f3a11effadc26a9f85f648bae5334d08ce23db566fcc8a6ddafb127dc95d4c3ba0d7b71546e1c010085d0e5c9e7f6d1f396b50c9fe712ca30e78dca2ffb58ac5fa5816702caea67b932f4b8669f2cd3a61a412c685d15678b2fcd982f3b8853ffc2efd841d59136501ba65707e9488fc0078bc03c318356968e7478ee3eba9aa0b186660f08b055cf025866db2d7162cf152c6caf4a3d68b5010ad9e9fb346e47cee9c95ca4dd5455211d0897ce239ab92a495cf2db2df2e1a3d8cd1039351984277ace1888b0194dde50d53cb9b05b28bd51939d95683160a9d7d36df412632ce7cd693fa89bace61a6a36347339d6e068f8a7d99f76b470f381553a1f901e5de43bdc8ebe32807670abed2d1d7cbfb212ce10fd5bd3769eea5c175f006aff33677b20383e61433f5b63da31404ae940675d3fc1c3cd39f56aa2cbb30efa646427614c2d61ee19e7d5b8ec5686a071b8b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8d636450d02664f8fd18ca58d208b87ae5efab968fee42eb399f09ef0f3e6dc0ffa4217fa262d1c2cb488ef9625895018abb27feabca718268ff274a84358336375949bfadb21584dd59410c48968ed76b0f5b60e01adb37048416f1360f997d99477f0a18b367f91d68117aa9a0fc229cbf0198ee2f69493330dde8156a265e660f9169d874df428bbce40f00a366a5d6df2bfba9fd6f78da60155af0a5f72bb971fbcd64e144146e037bfeab5692b740bd61c28ccb5fb330bf5f10e595692608881ec857bfef1fdb94a1c4ba63e50ae0dcaf2de94bf50c7fc5d8efe099a51785aa42638d07cc0c23f796bf55d6032fa3027afa5b8d6072aebbb56546f15addebd36495830d7c08ce99533343e182e7d08031b95e50f729f5dde2d276a1be47e93d66ae45547fcd6e90c9a5141439c5a5d3b4000ce58e38ba4809657a622d9d659de3eaac858b6e8e34d16997a2fceaf43a9a733dc67f272f3bcbe560a75542784b7a16cebde20bbd90218466b5501b1f7299de1d9874f682fa0bfd41d6d54f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5c662670149791048df0ad6c95a119bfae057011d7155851087c0085b901dcd6e95252391f9661159f909def924cc165b140f02db3863ebaeca40b57ad68cd77459ad258b892c090de55b93cb48bed9a96b5ef294e9c73325e4aa595431e780058a392c0b9d512e3731509fd537df0378caba38c3e20d17e3f8c4047181becf3a505acfca94a961cc6d952b387175e8e4274b81acb168f63df180210752fcc72dce93ee2e23333e547f4561ffaac06597757712ba8ce776f0a2c714c40be54b562ad693d631aa1c3a840c8749c833401e73dd05a9592a477dc43e52d140af0b2841a14b945a10bbc5e4d4f47dfda159646ef1d49d39054550dfd188203585d0201c33a42afae62aebccb463e3d2dd8748b8db65a3f5aa3ce7a1b227139041bc805b7a71144510abadff548318f9a76d8a7f64eb9d269f7739319e9a3da728d001e29628ee1366f53b752f7354055ae2e511a6d9fff4c9b1caacba36be1bde8fbfd0a4274145ef6f122cc203fcad66d8f51e97b0f8f25a08ea8c9860849940fe4"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a2009e307ff24560348c7d796e1d69c5726c8389eb26423ce21cdb701623343a25d2a4841f994f3933fa82242f9d525464e3b6c770584567dd8bff3ae75f22f94139a9ba2612063e8117a23adbf72fb8c425aec994219c16d42299682eeffce61f4a0663d173980066009d542f09fe1186a28698109e0d5ec28ee2848e0a91185b492e53f67123c3f6d81826a943c60cd888e7d332310838f306913e3321c5ca89794f27a0ed36c697abcf665be1253637cf2226d7591884a9e7636b8f49972df71dabb14b6a4cfc4b4689e3c37869043bc0d802fb906a902a24b4445ada3b51f7661cff461c4b7b5a59c1974a8fda528039006f1a860eef799f15f606ec8fc23a20d4b80c01a639d34b9de0eaaef84855082e443f9a85964766473326d6ab6bf49f198c62269356e28eb920f858f3695cdcd77f3fb513121470c64c25f305a00977d0d61ab75143bac7eb57d9c99c8d51ddeefc41e3929f35da3dd544f55d878a9abdc0ead983a08d3d35d54b2afd653f61ddecfbbd936dc6d9721a959aac0c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "421b2b4795661bf967bf5e679f69d06c0fb9a02192d839a440d364533de5c3f620f8531a68603119ec4045391c8f3ed297ba295bc1215d4c4f0f315a73b338f31547c110d4fa1e3deb385eeccc2d57e03c0f6309f6c3c28e4d837d22787bc0b6d626201da55b605f4e8522ef75b92dd1d6dfa0a177b0e666f04fd211b713fce8b2fdd96bfd4c07e64e4b8253289e400da12fd99c2c0620395208b7f2d04a2eb696f9992b0b0485e3147c5b18aba35c8a90d10b0429f3fec71e59d019f270a5e0cb0fe0b5eef004461b5c6286f33ccda3ef358d99784500084cfb5c9d3ed8e1c5327c4ce81eb1ca34390ff613807f5a24e0428eb48c97900fe9c3dd68d201a1d2a55a20174adbed47e53a0d0f032acd4d65978c8afb55487af30439bb2f151e343a47b2ca3b5e082ea741e375885377a2e3769c712f4d4144d80c2a6f2b1f0fe41e9fdf9bb43d7370332ca51bb2f1325f4d1aefcb5dbc42614f9cf11a4ac72eaa350a9c2222a6e2d82f6aa29df12b33979fff1ea265fc2a5055600b9f96c8688f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "365aaed072b2d0e5135c82f25944292872f60ed39152eb19045b209140a4a74fb2074037dce30d674e0fbc8e98011ac681204429d9a5ebb8fc3bf20ec70e6b53cfa45b259d4f1312354dd5a00bc2ecf4e99b4434212f92bff2b99c94a08a1327fb45dd3367779a12d8dba9ca846b85c6216add315fe0b17240fb021bf61970446339dc93ed53cf1c57242eb4aaf798a1b8010e9471f78b6f0cfd7a628ace627bc64a4c6d853af0d7ff00500b8c682238eb37f59972ff87a9be9eccf69115475ff45ed6daf9d462e09ccba899315b5dd59a3cd5c3ebface31f99854e0475fd76cc7c191ec3f13ed7933663b3902b0cf7ce7696cc9ec28c13df6b9cbe9182980f7dbf7ebb603274a56871de960a52bb5835f4db71558876202b8d9c4edaa35df599f1c6dd105dffcb077a7ad8f7748c58d6131546694bfdf97a645ecbe3829dbd2da1263556a3d29e92a810337c8c1050686ae880314b3e808abad278c48655708bcd2d711cd93f446911a2b323881c98ac389582fe0a9601096911a8ab0dd8669"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "24a95969a4ff4982bfa2021ee1ee009d2e4ce995e6938fb48ce35041842bb516ce21f5630264f3f7140e3135ea5d01eb0ea6aa6c3b85ea5f64f1de1de246bd6dbafac9cb0a8a0003c02e5eb68714d569c8036bd604aa7bc604999a85cd3caa209ccb12dee3b89dde2c9bb74f0dac1458399cacc7e4ce538dc3a5b54c5bf7d3132430110089d5b4731dc91c2711dbe0b46b97ad7ecc948cf5881c1473f5b6540ac62963357680f1b12a09a21a957b512126c7457b0635c185d36090696c313e8cdbdb92ddea8b8621d1a640bb2636be15180595e6373c04ec38f981f05c6e255a327d9abc3b3bc04680e277e593b04d8d89963bbf83574a5fb63b4aa1d06de63e4077e8f9242e886014109c3360be74dbdff64af766224aabbec9c0c0a2ca79ce12765cc8334bebdd1355164ff636e24432c042443371f9d7a4ac66658dcbcb001934ea8b896c0bfcd7e5ce140ae265d253180c72fc9fd05b4dce2b6b664b1c9852bf84eac06ce5d237f242fd2cc6d61a870691df8e9b5b0cbde491edf3c8861e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2bde28ddbc4e84009a9c98c71f5e2b7ef6622d0283889c94a31b25074e8fc2068aa26e4ff0057de239b4588d0421b8351f8473eb2e66c4a2ea28a4ef81613b5216059b35c2aa990c7cd398f1edb7c93723a3ab489f7a91242977969c19a2e9bd421ce79eff960a06c52f05c251d1e8a1d4e3c799ed70948a6ea35f396f6d83dcf8e1c59604730e0d90c2704a9aaa2dbcad25c9c3c559a73b7092a016e6761a65d41b878a5c717ba63344cb1adc247a92d377345cdfc24b652516de0123232d3b0092cd3f5d540b66bcdc024a728d781536ceb7e41fd80622441feebe4fcaa6931c54d67dd28dc664df83e3ea2eed769e24ef7b7ee9f95f36b31984924318d506635f31efd096aebc8a3c04d6d09aecec36484012b5a5793a2405458a250897d246a5829ed7d99bf1638fb5225cea2d0a351fe08aaaa8ee724a824f2b6ddcd69221f4a992ea5edaab8969369f869810b4973cf65adf4529f68d1c0fbab24fd1e80a03b71ddf702418d3452a27b95752a0f86053d29b63b1880911f657e4fab978"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "88258637f7eb07cce4e8cd05cf23340e796bc7e067ec5e74bd031a7b870e87a40597be7ffa8eb135297f6c4e4e19dbfbccc49a23b5a7903d1c8cf979a4e0b181cef1c48a7ecc5adb8fb614415f9cc727d2985b0eccd51f72b714f2ee8a1632b36791a29e68b88a8f482b24e0596ee8c9d4c504aef0820cce5f5a71ee3c236931aea720ed6917ea7b41d13b50f909fa21f07e9cd9f79454a3a1996cd5a35bb92b4a1b1537afa65c9bb67091f340b47f3726407b95e68ebe8d4aae735c7802b559179c64da8385e72628f29aa4e4634777e6b7138f6206c79765dfcc066c034977118255f8c82c66425b5cbec3cf65f952f0f4daedfc2acc204df23a707a77e479d33da4db067608f075e29e4fcc3600819881463f071c0b879251c0b83ea5938761d7d63688006e2597eea88997aef9aaad009ab9cf54b4390eb808b09047a759224835e7c282b301b09007a15ed23e93a33e25079b5079089428607453ed25ec639a513311320dcdfbcbda5fd0f47f6035f0c995a7ce980ea7b2e74a4ea3b9d4"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "89f4d0a739849f213436c9575620dec5f5c2d6a7e4f83cbab2a57b3876663af38a0456a1106efe9937f5ad6d8a8952ac24883918e91a9d19c07b5fb67ee7dbd1716c86ef7f45c651e74a41233eb01d0ec29c7739bc93877fa5a880f5e27dd28e3e58f2c034c6bd512b9034625cfa60fa1b1b966ddef324eaba49f07fde57dd751b22a132cfb50a2f37c69f773feb8637be2296680a1b1511e76f5f31154e6227f748dd101fb7ce4dc4d78aea619ac06a4419c23e2c7a6025f3084c65ee4e2d898f3b8da4b180f592a3e85a3fcd04d788fbd55e7543789c177076918fbbfd0b9bbd69106ecfaf980154b008f86418285623bef88173d6e21de37fc433163f719d1a5b59a69a7b3af6e2c5e8425135c9cb402db577bc0d57bf9e4a2ea6792e59f22149be5280f19f087f99a5a645e7058ced09552f7e324d1d786c939490177c6c882e53332fc64c24b95866131c0e78daf801a8d94e59e1b339529e59fdef88bd1440b9f4928b1c68b57ee8ba22191dd423c32fed56bdc01ad0c14850061d080b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "afa99ed41a02fdc5677826e51db78440e7336159a829d315401f799bcda6eb283c2c442706e8ede5c9641a50f735247795fa823d257cb8342315603904fcb7f3fb94c1d885917b938bb57dd8114effb76f0ffe53474b3b6ac909b8ed94a1ef4886b8101727038f2d3ae6daf82a3e985ba5e005998c31f888c3c53aed0246b99dbf17d12c59c02befbaf580ae4b54bf6cf4098840d86ebb406df68b871ce3c6a6452fb936c975efa9b6b40b2414017eeb8cbcc58fe3547ebb16f95efc24cceedc374744cb102ba6c2de6b6e53d561c5a6be9525df8faa7756a2e7af39950013289d08ea48dfea7e6fb0e7f228a8ed0c19e229f1929fbac0e183aeb196c46a5c0130233d78568736e6cf377e26e3155576982e3d65e08aa4def25b1a1a5a225cf884145c187818e71a989e0745eb6fbf1768d6aa5f0ee20d8d534e1f4f17cfbc78181858d1e887848f359a92b44a8344abbf720e9a0a195003e6bd881d248a80982201f97d524ccc159d0d0a371cb5d913429cd43d4416d9d572d49dd140c00a80"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0f058dadf6bd5ccdb3c9a70a4223439936ac81daa5928d09c182995503d72b8077dc01ee268658e8ec4da9097cba57c19d005243ccbd98454ec42bae8f7b7ff9fff4af6b2382a271931e7ecc15cedbf52d1426cef27e033d58d8e153341265552edbebc46bca1d8e88bbb9c0f82600d29c02283fb295caf4a743fd66f096b3ac12d8f301a1a1464a511f1e5da7e46f722919836ed985bdefe7587391443b7e9f6dc7193e51f0de9e0be451ee335a39b875be4fb6e54ec38d59aedd2000f6149dc1e07bcbc6f674baa3d9170759a2db41d6a1691086da82baba102cd85d97476beec17ba3c10e82c213ec0d09afb4fa70775097df3e9c911a2b8a8e3d70f55e4236447c0a539e499bb4f442d218096ad35b104270205d6677f37f7d96266bc180936c1fcd7a34f13976efa47110b86cc4f5b0e94af73887d31d37fc38f84db3ff7b06bf151f16c0077921179fdb52ee89414dce82c0248a97b88eb2aece5227078877148879f96777fbe7fdb1aba00d9c7340f7a66812a080ad1da514fb1d7855"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "93f7909a8a46597be65fe76b5c724bad99e5b2692e4a6a8e9a7adcb38a39bdd7f4048a00edab88fe9316f532b13be7283bde8f7c4ffc4a822575e992cb8ae46848015c0ee56817aabe22ffc2f25c80e04a0664a7e9a82dad7b001e21b5c33f08965d80a1c4bfff52efbaffacb74b0a9c10acc384cc707b5c5295fdd3fad5fb3b89271f8cfe0059c0317836b2a42640e4c0b3969aac4050bcbc756b5350dcb61cac15d045151e412b6aa94d082266e7f4c7dbc83b2adbe817476eb6bf5a07cc7f76fe80b4135e0ec5bc05b57cc823a0b993b7b3e4f3a6803879754220d7a6ddef0f5c6944b352ac5064b9d836a2565eb0e2049c9208b797de75b141a5f6d89bd6dbae167f8b1c7fa9a316d10d33d96fad6e2692b98d42fb6fb3d79a32a7a5eea23f421c5e1dcf09047b77b253217c3674b97b85afa0162d818e569d6c6438235f404e8fe9e3b3b7e38878b5bd296f88758b917b7d7cb650e6ddfcee085e52fa5143429b678a3fbed73b588b6b4cebc72d3e23266f8478d52629cdf1a80ba37550"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c4a4057d4d2eb4e64dc163add62d9ad01b24bff92fe0607c0cd39e3dd05e5661aa1a2c9dcdc7ae8a034b93e502a4eebc0384519a2589afa113a0dfd45b122fe16bb655b6a034b668d7d400dc250b25d7dd4511298c1185c3d02b82ec63f3f406da0c72d204881ef5ef43e63cc64b799044a6cbabb533d862efa9c3f483eea43b26859b134a2f321ba5ad09ac8dd3f740c0ebabbf35ad3736b093097769a635283c20c1b88ea0a115d59a692552ad8f70050d586532cd3b65bd9e281781d09712b1f1287350a20e40f11af5df580a98b258fd7431daf19f92546d5b997df560a3237e8a2e83e925e45effd4cbf2c1cc439d0d3e658d836d6b93513c41c87bfefc85579257cb8273dd0bd4b7ca21c9e2675ab60de22289b31f5f96f708b76ec72b0209c8846ac6e32f1d28996829ebeb949b2358cd2332178bdce80804e4650b84a46ba4f3bdf2aca0edcb7d4138e97dc14d30ba34352d62f547caf117856a745e1e99eec18cc2fbf223f4548755fa3ef8d9d7c0274a9a7411dfbde3bf53d9d84c"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9a86cbb68e9a4449be3ea6d69e5cb21af81647a8a0105db03c54176fc83991c2b9ea548fa8eb3b248c72c391cd23dd675e865ffa561cda1abbbd58a85fe4fd108bafb213a8c79eeaad5bb3410c7d6e85a237d1e2f9c8e0b8b8fdb472732bd4bbfaf58f57600996a49a742a6ecfaf55319bf939eece50d1b93df931a144b07e075f8486b5dd65071bf43812a27351402b849872c849878634cb01483df78690ce0dbdc5d45d225ca87614ed1afcd084223c86fc9bc9c891996c096f9296b9d91a564465197857fd6769977c8acdf0acf2ffb1b24d311a8d0a46109594f1fc4dd5b139c180c6f02b88e72e155626a748ae9da4eb6a1195126f084b012f72405f027bd22baea81d765f435efd2b97fed2df6e38ea603ddf8f3ae969f9690ac22d8072211d1337125a3e88388fbeff1b0c7cc7677998ee5f7ac31d8e268ca900b72c98889721e18e8dd74f4b43b083998b28eda3895cbaaa607b9a05f90e36d1e172a95617e9b102bc0717dd2a1e807b11d72a8a15288ca4643c791694dce30808aa"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "71399eff1c82b67a7d5da71df51de813631f51679ba441b0532997ada04711a2c874e56ffe4d9289ebdfda910988e1c210507a450031592268385fb9c08102c1961d33bb789522d97fcd86b7e27b59d3c369280c7367286f46c1e815851349fc16e1bb2fa76af8ab168acb634a22a8d60d7c6d2a81f4db77e65c621bbb4d0e5628ee2320b042bb4c83e55e2137ddea75c3547f3a6b93f1b0a0bd29c729835edcbf5129b33112ad000458f4a8db1149d514db7ee70e4b58c11b37809dc32020dd81fd1e3b0bf1354154e7dc0da0403ec944fc5a855026473112c88f072a8fc39b984db2c97d085783d4f8d96c87f4b826f39414ba05f72c7a22e25ded75eff8f00e53401aafd0ec08b255b5d03b2f2cbb9603a2def9e5a754b33953d3c03ab8cc7f8db33ddf6184150f5680f7401dad6b6c38ef848c00b08a70ecead088f895acf5f25c9e21c87089fab3e3edb7ee3bf3570145041808ca738a46c8de389b5c2f84f98f76941fbe2a9a159525994781137cdc00951d4229f8df099b44930a7a72"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "661c8fc20646446cdf579d0a78003666c8fd9fdbe9845c02823b8e3b780f532d2891fec3a554c743e87fe898300ee17639077fcd0936c13eae51a40d98c329c3ff525f65568bf74fc84fa112b3036610d49faf17f3426309805636b9502c3dd81994465594333e2263969da1509168f1228ded2ab8ce0ca53c8d638db26899558ccbcf52af7b7017d68ba5d7bc79657d72f87a14ad8224f40d1eeb1925b51f8330b221ceddd530a73bb814216fd6afda33983a74f7da5cd733729df22ff78e027eff2cfde27a76ab1abc97e08375f670eed1beed74a9b9205ba2497faa1c46f0038f098ff5950be17d4dd8a3ef2bb0811a8945188d635a977de685435dc128184948c53f43abb70c053b9c6298b7dabf1df91116cfcf8945e78c7e3de5bfbdf19b6893e733cbe65cd33950c77132b7816dd47d9ecfef2f15b4290cc1a4cc5d327800215a49e679b640b0ad1aa1593a730eca633ae17bca48e9efafa0471a6591535c94c4d123cb2ffe33014302f3109712c279834871d9b18982ca413d131126"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2b0d588982c68cc0b39c00ad80c19ac645e038d3bcaa384909d94cf6c8ecfc886a83084d19843f2878879e60f5a46af4ed8d62f533cda8ed04ad8aeede3e3c823913d62b28bcc20d9836f6ddd9ebc3eab3fa52e37638ecf897d7cc027bb05facd153090a78220c10ab177f1bf19b2c6ef6ce94611d466ef758eda71f4d496c420dd88e712c6dff77149f4bdb50d1585db27fde0f2fe37e04edf63e56eb9cb72106a9a821a670110d69683f32acf5972efcdc34ed5f8ea4a40f4f6329479499d584c4db4df7122a2c7f34e866564e68552ce12fc30c2a6f24ba7c7d9dddd7fc166ba8ab0b8b7c1cdcc8af880d6f1f2b621286ed722edae310891e3b2b81addfda316225965ddfcf0568486921b125cec003a7b48af9dfc95b0a9b94c53535bd4dd977f2a4aecafe2fb08b5bfeb997d22f6fa5fc946481838a32273b6c7a89817dbca3d2730bdffe63e096d3e88a7b9785e7ecc30cc5c847f193268ed761e05231e3009cf3ee58d2a4f03ab73f5053b0bc1e57960ed3ab43ab5b1493d5a73f6faf"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a60239ae28daef9b18bc56ca81d0c6161762a66e8bcba6f387f71433464361450a6a08912bdbd86da34ea4954ad0c6548131d6a4de7f60615560524ac5644d69e14f4bd11a29b8ad20753e2c74db5529ae90a6c733032e2e365f9f57cdcd5adf5c66979870d8eb9c5eaef244973376f4872c323bc8ec32e5e92713527b6545aa85bfb7c31325000e6ac6dafd5b48db8286bacd05bb4a9de30d81a0eb8e4a2a888a71152e68c0ac99c74adc697ef9f34c9f61dd00514a8285eec30364e96652c49a32afb7b88f60e98a4f0d2382d795d026d8428818633cd5d62d97074839362fdd2508633da09ba491ba0ba0136056e7cc0c25a0367f637e90ccad93c60c5f735fc198810a01e2f1394f5bbeab64cb0eb87c83f0487b353c7fac6434805476f65292a72aad28b1bd7cfc5764a3a6457d05434814e7f669fee063e9a171a7e0dc627221b540bd360fb64ea870a03239eddb4cb582a0fddd6ce73e272c12901af1c9865d30f11a461fa1d7280eddcf12b8531fc1e5b6d6a771b9917fc3cce20188"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1acfcdc7d861cd9b8e26fd8dfbf13517caabeff310a2f5df45941cb6c4ff23fdd500fd1ea35a8ed95060496aab0273091dd9725ec98b14a71f214e7e9f9d8bf77e62c2f1b844d9ffdbcda7c11cae4a463f9e525acb924336a5c93a5331c2f7e167bae20464cdc68fd08f515f21bc897efb732c61219f8a741e867c3faee19dcd9443a8b1f192fa00df56a1de690e0670cbb0149bfe8bb5b95ebe64accf43a80f5d262666da65cba48937ff81b78b489482aa6a59951b1f56817d288d3942cd79ab7eed0b934f6ce092fe775eb0cb7ea9858e6810d3720751361b903706b50f17de49f10616f9d7d8053775b00f6a3d6e77a868045a85ad43c15dead74f5f86e46e2a455961b7f6092317e87d93b50a247c11b8c27087e3ecb3a680551e3bc3874a34cfba1f19f69a708762d1ede6bd560095f31b56863efe7913947132caf74e50c64b94ec8ce28a0ac1b4044f23b89e9fe5c706647ac8ef0305a0402a84d21a3c546cf7a7ab63aaa6577aeec89c8c260124cef46f587bb4ce940e0f963141b9"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "478e30fd62bc07a0ea6fcb4fd9875241139b012c921c448821356f29bfa331a1d44a03870a9c79482bed3ac275e0c2a15f731044133b5f6e1491af217180c7a5133ed781665265bd6fd9cbf3d65111d39c6c4314231f745291c70b6aa3d6ed696157612967a283003f982135520f959d24df7247d0aca3a81f7af80062d4d2b2c4fba1d1982bbfa37d5f9175747f6010391c78bf6445f553a5a77251f4607cac9eb17904680536c2965b5db4431619363245960dc8643c83b914479ef0162c70713b985241d2b271facab79253369b37fae70888db2003cf87677e915888d1f580e1d9fc7360ffc8a36c15fdc1f27eac143081612c004b81d4ed63bade76f04b0c9acdd5a79457c5be90ab26ba7c11ccb3945c05196b7ff9e29c713f6de873cadf6efac0879139d2bf25171474eb4b754762352bc77efcb50d4328e940ab4aabb8907043a4e24fc2eb0fd7da3f31bba14e1b91624212eee638ec4051f1cccab861b8aa6948326bcbcdddcaab5f2d0b38737ca7722d8cbb310585f01787007a9f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1e035257b6ec35b3ceab42c5ce7a5fc87fe655a55802b7f8dad54bb048d92ac7b22982bf1910a810d0a3c5aa26c5eb9fe3e2692a272ea063a31607b0765bc3cd4365f75db38ac761651f9dce99c3400099fe37a76c9201fdc4f97b83094734dbb64d6ab62e5ac6b581412943285083e2f8ce252596f8bc0e0894d4685de91e248c62d68bf7665028d06b9a28a231243f9022c66c02ca8c47c711bcaae628baddd685f0a4001a23a11e4a898de0c0247373e0a5282e2214f7eda51513a903c810a70dce11a95c808dab26129af2555679d8ba048585a3134c0197ade27eafe7f4a777ae835f509301bae94e9c6d40ffe5ce60a43b96a55efc5abac62f747d5fb3a1c0b3dae4b9bcd8148eefcf7de3bf1731aab7bd21946d58beb2203da98397bf4c1479b1072a01782f8f08367754a1e25a93a096baab9e88475108b4032e473d005a9c91eb3043ed1774cfd36aad18446485f138da61dd9872364d35aa7e10e116c70773547ec1625c9861f0e6c92a9243379604271ba88904fa0d247459a6f0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6a245aa2bff7783e93fdf6f5014a01934272c88d6ca19ce53708237bd15ba9431d0ed81a6e81ccf78eb2d6e1d9ed5c46d39f818e1a1dbc7634fa1e2a1ec207335bc838932efd7eb85bc62fbfac07b0710740a9f0b0621bb212762c891f04e0846ec594922e917f5cc0509787603c9dac04d98407b967e463a0d912bfca979b92b12e756051e7bf023c9f0fe061c0d67a87b79d8ebde7f60ef4d2399964b8071e6a1a9c63a8f316a174e33edb1023fa0a0bf272800a9620db648d061eadb9d180c576817c759483f85ce359685598f15c9b8f00d75f4a8a1cb260f666fbff559da3a4f075e7915b284febf8bf21eb668012dcf31692123b94b4e44e3ef17c942644437d59c49b437398bcdc68b5110523fcb48241c60a8f4fdbc0ec45e80acf259e61cf8414f4dc9e9adefdebf94427b2794009b1377d64059977307059828342d605545e0b776cca88dd0db753b5d8aff63051f9ea49da13821ccd4cd11c2174f5cd179eb95c6998eac5b66a19b8f6a3b4c6b00d744ea14ef64599ebdf94f859"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bc870ef5ce9468f85274cabad18feb0c0cdf2053f0becab52a3668d7ddf0239197eb2365f29e60edc36e673dc7b0f89f605ed6f3e9670b7bbdea42770957ccb11f8421a9982f38f2764f75f31fecfb1267a9b1e85cbef52c2d3e54aaf304d54edca0e2464a71946442970ee0ccc545946ad7cfe08363c87dd89cddd1d7d579c22ec49525fd9d83760909209c1e79a24f14750f0d0501d517909dbe852ba777415075a797a0f410289fce04c31db77a97f1eb1e8f978713d2b6bf9595c03f6376bfe9b9a5a8943408170d69272d3a5ad2b98b73d1213bfe97fdbed1b29b7b5a01bfff20122974b023251a2825512a2e99031777491fab2c1f41517953c10145b0b606171c22e06fcd78d6f51c02a25bb93edd7bba6fc3d606ca802f8ec4f82c56d1aeafbf6b7617c604ea53c736ba6cdd755df7b03bf3d00266645e68763a2bc53c7692bac8f57d14675d6131bca1319f251eb589c9cd71062d3792a3a359476038dd1f55784754bdd59b91fb7a9fbf9f2274705abf67b26a227e7ad1eba201a4"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "92780052295fc37894ca6c4ff5f6d68e21f8b907a5ef5411edc4fae49b615503e6b2beeb1501c0cbb0005c4c29bb918eced60c62fb21154d11d02659ec1cc2a41786c813fe80e8fef35594255b11a6f6903b93411b1db9697d69f2ce115954b095d5e56cb7d202c1d4f6fbc795d4966980255098f4929ef28cf80a2dbd5fe2701ca358c6acdd55cc801a0f8fdbee2be57c6b6bd168e90c39cc20adbaf6bf083e3b53332482a411da3983f054557ce976149d82e6ac3613cd95b876c450a474823d03ca31c1be5c7049a5b554fc2b658705f16e24eb9fa4bed22847eefa71ee4a253c52675fa82cd22c924e33467803faec7e4ff7fc81c40e3c8d102cc4d54ac8b5c06b8416041a50cbbc53723373bf13a7f5b2a062552ac843cbe18b3d5238a8bacc5592dd3af26bea3d8cf6db91d9b54f8e61d62f46b39bb9d918ce5d77370341e5c3ea5ce4f46a44bdab383ff1a5afc5ea96dde6094273606e4ce4ae545bce61549e1248011d6e2bea5dd6d219d9d8edc621db13631d17067765827c50aa96"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "abfa120284e8ecbc3ef8eb997e304c657bf2b7e78dbbc7b5d910e10f02a1be9ba1305c1ba831da12e5bf7ceb70a6bbe94cf2c422b2e56ddce696b0ae637f910a7032fa26c8b0489cd57b3af8b3eb09ceb24853e95315db7b6e468c2feb5287f4338d5b301efeb79815a981c8fb5112d16fa5ca1a6f243af9bb57c09e3c0c68a1cea5ce25cae53609295eff951bf030db144d3871580f1b9285f6e58b7d7a0b23dcaf5dbd2d96b81674bc9e4b748073aafcbe476808e7dae536971015891efe25ef14b00e37a63300ae82b6413d31d2453e55b3808670ed8e76fa733d24e346922d93c7d340a820151686f00c4781c08419caa56c950b9674406cce2c1f2658eff3413ed6be5ead69b6a46939120e1b03889c6045805a1f302339c544f32bf0ca56c7b49b2a24078093d2747c4eccb77b2db148df83e4e2094683716abff5599dc5ae6d4b132c2202aaafd8a5770827ea93a15a361a13eaac22edd47e0154164ae88022f6e5da9dd158a3a25f5fa02638b1522180293dc0e06aa0150b98e7903b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6874b0d4afa491d22ea00d77f521010641dc45ab6081c939770c8a74553ae414fbdd1a2686f346eb5e50eec2b75be6b4d6e3c1574d36fe32968a5683dcec662480ec526136fb119ce78b7983875fed59989b24a2082b7dee49b00cbf3e18d6677ac640f723719362ea64fafcca71c4e5925159bfb36b7634acac6cdfd6eae269ad7a3c2880eaa5be35efb72d42ba30bc5fdcdc0a642e8d4aa2a6c1c7faf4464ee49284142cadb7851e9ee832a367558b1f3f06d4d55f50c8814ec6c2aa4a3284cdf3d471bc07506c4a5f061a441e44b87912612f1e4c576f4207348b40db8bc173002ff3437555b724684bc01e8490e34af10aaef0aa9d509840e5ff8a6cc92b2877d1ca108590d7a382d6a45ed0eea4c0e0abd5ff7675476b253f06a25f21c6e658634878ba318a3858737ad875d3bd1c1cd1128a094d778791e6163970e78909d4bc1f5b62d912bc643afe9218ac9dc29df522909d394a5178b285df3669fb321f0d7b6c7b50791b6ebedcb3740fd7f382410394f5853724970dfe75bf6ad9"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7fafe1dca84d820316780965987a135054f498e3a9f70341dcd4cdc992789dc412b68440806faabde11f00c0b6499d84d5962ad1dc9586fbcb57ff05d57c907d74bded8fc8d990c71336d814f5b732d0fc3f441d44b29e1187102664fa71e047f0bcecbd57d9d6e36d9085c37add3a9c110be47b3ad2b34c5b8e94c6065a56a638fc073199b16e17efec87cc482a192f56f8d0fc0c84e211d1dc658fb222582be550439615803be1384ff8d2ade2ce1aa46bd6544141246ca74b86efefc8c7cb169484c122f2269fda56cd87cb257f7b31ced8516d01423c1ba7edc1ffb5de565979cb45326274f160a67f90a4fc6e66306cb833b914fb31b2070b3f60316aa1b2ad5cb5580be9aa47c3e2223fd9427dbd6f35d83e7a890a8054f71dd4d1b11d2597c47385d3a6123cab406dc61c562ef40d626e7561fb81fd3eb1ab72af94122a40a4f0649022e0ed52fcad209ae22613c5956215f0e3b4bf3d2ca6b45c5bd5c71138ebebecba05d0ff12ef257d5e8706a628876c958e238a3e4a8b3806bd4a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5015c5a03cba54943ebdb80e79fba8a8bd61085c0febd1a675aa2d0712cca98b1f0f43cd3e239c890af58dfcb40baef28692e81163bd87b5121d67c588cfe972ee8d560621ca1e9325161bd13014625ec02e433cc97f7025544a935e0f8cdd728f7fedf90a8a8e57d5e12d9c22306fbae77c092e13a3bbc9d98bcdb18714d62f3f24e65e74768c0a9e9b8600e87443eae345919ed7fe4c8581dc00f1bc0c2764cde2108e21d34cbb8f0ae4293a4f7d4ef938e8765bc862302379d979207d4f7e294f6bafaa309aa4013877588192ec5c669eda7f41427f81d75176480c85e3d122072d96174a57d77bd1e637254282c840db3d2a1f7f05de9f47422c32f0854a9703c668515b5b4030a5d26611e452306d8d239589458b8bf17f56f3447969c783496ceebe16a163a06f17bed06d4505b8e0d809e351e59883cc3ed15faa22683beb684e04323f146dfabd03e836f08382f5d00dd2d1e9ca17946446c306a2b97875faa042e3a4002fead6d15a07b7b4cc9a2a6b5b436fd03e231cb100a43fd1"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "872518041aaac17a061bac385b6e03b44e0e7ac1d1d269e166cf4e4518bff2e3f70656e7741555941032359b110530518955870acde003ceb4a528b9abf2a18c375083af2554e57c5614e82bcc012b4677def5ff7cc63d4faed4166097160891a0d0869cb1117427712861fb57b2c545db08427f121533bf1f3df1d04c20fa2150c18d4e966951801c8fcc7ba6f02801365906373d239942be633d392376d1cfea3857da770ed5c3dc4bd35b7c5abdb036e829c50ebcfd31a55c4baa2cd63d5b54cf92402c00f3e18097affe9be39294c4eb04f033ebc926ccc040f37fc1a81c132d971fc1724c1c00377d1157fe08385b3b12c6a7d44314803b1a2c72f7a8836c72346bbf428b67b86bbdf37638949d81ff4153c81d5fa1b8fe3f8a94701945d225e598876f2457adc2c58424908d70e3a61e7bcdc909993c75ae0c24a111c204ac28aedcd7a0cef5adb278de2fd395c97ba15c9208e32d709a314f17504ab83f583e811845e6f7143e9f6b9437ccfd699d663e1749d71b5639009d3e5cce02"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "745f043935ef3cd29118668cb2115b671af0e3ea44e9fd20b18dfe1667c926f9d4ab7e281345f47a2b06e7141cb69ee1328822cd04c8835c42bec9c19e30e6401bb6e27c20c53b69429e2bf5641c7398338f080fca064fde6eaf77451cc57d8449046becee9b87d6f797711d20fedee58d0f162f71fc8e736229753101eda5121f332afce03b334a3b4baee7c97e0b6991b5a1da18a7499a99f8b6983cea9046ac22b52f7319d0d1588c2105c35773c3937f256b40ed8f4127832385c9575295941572909fee56fd9a457835f049afea39a22792f012ea2d38d0da75fb22e3f0ce7f628a1488e6d30f58bcdce40dde4146b472227a666d3d4902374c283f9aadd499604b45511cd120abace789075c8bd232cce717824c551f8d8d03ceca6009e6db55c6bf5d0c9615ad738681ac94681ac2aed6501278eb882436cd134c9398ebad449cc2c430ab9b8513b557dc4c345ba90b5dcdcabb01992cb9cd851266d1520762213d2c2676b4c2b80301d59887bebcf8a09b012f8907f04f7521175238"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a4ae205f6a58a6be2aa2a945012be0b9f3a4a9a41f183188473329433c6a21ddc74e3719858412fe40ef027604a240ad7d9a0d756a3fcb5138eead8185df9145c5d76d35ec14c605c50645a4ffcefda4cef2cf78c949539b95f45be848725b1d99adca3ba9ccc077b4dbe93beee080c226d8ee20a777144c3b465562555f4ebd5e5c920ac5a7f041f7d5672f958449f87eeda942b4f530e2854828d70fdb380f61c6cdb5ff1fd45e4481f020830d82c69fd807ed7cfb9c355e274dcd2b6ca26c4cf7cfedba4944b145278b176cf56d23918dbf35ce258fe97f8126fe973af854debe010f924c6fa35ff3001b4925a0a61e7b01fbc6b83fb60a979712243ea343e616fd8d5617c2d6a23899e8762d91ee4a22c33437e40ba5bf444f001ec71b283866ef74425e5dc5dfc33996f07bb3a6ca32a5ffca32d5058652de4373cfc7c33d3fc717a4a3da2220d689301890b4855a0103fcdd534579c5b37b42b6a63841a130f0db6a85dc5c3277819543a33fe21e878de39f03e78261c2950ebb97a084"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bb53f03f9e43ac68927fafa08c11b3bf6b1bfebc2e05b9138dea34251660cc3390f7b59bbcc986fe586dc3970777d2acb6afef08be15506f046bd485d4ab9707a485677e74bb3544a022ca20f121e9203e5cb15c6b4001b4d965f43dfc425db4cfbbf6c52ea9857ff8d2f2c06e99913d3af3327239e70b91d241d78f6f8e7d889cf7fa4e4ab1a05e3ee3bd7845af644a6ba515810dc47024ad289126a1b48d5f749523460e4d9c9f95cefcb277d74b7cbe822426b553c27bfaedde7191b504ae67242df7b5cbafba62be02d91cf14b48116826231b4732c6aaf90726fab97efba822695a09b910858d73792eadfc999bd2f0fa76982644b5d74feaf5890cbb614dbe8f3491ff0bc7d97f3962994d3410727e7bfa973e0a3f250a836b5abee0bd1cc9ac95ab14a377bf124ffda906616098e85b49470fcc66a3e95fefc63587fc6f2765a447515003ad5d4878c78b860493ded670c5383d3abbd6cc8096e184597267db8c2cfb67d68ba2198011f75beeeddd33c05021a8a3b9a4a8f470b342b2"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "045e000390d5bbc6fc029833af0f44bdde40050d74102560a516ff849106aa3dd81b9d3dd881460d4053b337c236fe8136691bfdbe673f14a51d08c82693fd0a1a330e87d42d54d8764845005b2cecd471255b51c09bea573abcb67bc24d92cdbcf8aa1b841cdd1f378def2f70238e3196f7dd91216d25aaa2595483c4bb21e74d2ed048e651a6229ea3cffea41de82c1dbc6423a29a0d3b33aeb5f97da3dd37629f39580f6d913a245b738ce1e0c9bd84fd2b0cdba78e4132b2bb6f27278c3aac96aca1a3874bedbffc4341263ffcdf4f0fef12448f50f3033b4e26320ad9ae44ea34284b99477a530f9863f7650e9dec3cd62f709ea9a82ecc74a4d40d0352da58b213308caf62c03217b35eda9af33d8a4585d7f5014f4e36b37369f01d28791b71af861c8925191440ca50e7ea59b3456952e5eaf9ab1fa825263c76ab53c65a783a32313c299e38db5e44c8e431f2ef393d20750693dfb4ebc09ef4b231496e124b72d695c8e8d634358317006444fc00e1c359f6d73db4655dd820949d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1c7c4f09b1fbcd97257f4516e614cf27f9f41bf33cefa6c3eb300ec3fed65e97e5668b51b1bb2f42295e2a8852480ed07bdc955d206262a0872ddfc1cd88d821d6daae8edc928408c50f6fd2a615412df7555c52dd817f22e4ce65162d51f4e1eabfb11028486fd4f9bd8621501e009b8bf0c4e1ba00f90d5f0fe7ec9d5c56ef9a52bc3f3be42e5e2bdba5bc78fd372240f015f29eaf2975c2057431b21af0cdbf0a3f2eefc20b8a2eb9bfd036c80962227cc04a83a3a17358ffd1f446f46adbf623501a8dc782de1c370e9d5c0c3a59d4927f7ffb86c9eefa1e5c858e595a21004973b5e07fe7ca4eeea195aea2203a09a03e797feef4a4942df9d23f3f00b079b6f15cbf6bbd0e6186164a60650ff0d86a936ebad696da2c8399ed0d26b03a386ad3bf99089f8486bcf9d9d64649478f451c9a195099f23ef35e8633d89610baee974a29c476b90d8d30b153c72d317cbed5dfe1615d3f8d001d17450b08be217e3b03d5bc4d56c9bdd8e1b19e8f753a4391eb2bceec23d236478ba6f2db34"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5a29dc4f6d3138febf9978266c319c1bc69cb33dc63eee578ae1bd2a4736d28dd9d99a24926a2a6a5a2404f4b5a15112a7d0c00a24a427a0af817df199a4aebd77e6b2ecbc958d30179e00d8ecf9cb1500a91d5f7f4380e2469cbbe61d91b26573b2f7726e5af49af963e22578c08ff74644cf93c547c64965d708574b4e5496e3923d1d0414499220a6a9349a0116ff8d843c8a563865eacec1c284cab41c3d6aa813b0c5cca1add5e7d2edf36d8845499586b5118618e1a616d91ebc3349f5ee3ee1088d9323e79967929a7273910b389fe94882c28044b8978f5137a4b2d8537eeef53600e5c93734de279717141ac470b8b7c40eb0a3b0ac6cfe4e66fa2e50b44e8fb6ffb9db12c7ceefafc75a89c21d767f8d704aecc416f5771daad4310aef485f0b9c150a4a7fe6c38d81e352fcf0e49cb036aa02ea10c2e6222c4f0cc27bbffb7e89d1556457d73cd6333bec31f9acc6b7d927895e96f1e2c87aae21f8b1bf35d173b57820739c7f170c1be4b67a4db347bdbdee1baf477d7de4b9fb"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b16e24d20ff575be4f5b0322b0fe67f02b7f2734a7e350f078c401a4f1170111b00e68524b566c7d191e48731d03e3f8e4b2ef90f8c9f798c57ceaa26411836f7969e234ef5e4da1ddbe2f6993efb4c4abd566115727831cee57a7511022c33e47716fd796f2263907c54dcfa7ebffb1912da68bb5572080274a664372822ad2b4516cb54dec43185fdaa0022c84856a178f69483bb743976f3d1f1ea4e2eb77d1c55800b7b405cc4967d3ef72ca6310ea6719617255c95a2e31231e6c8b6603aa82fab5d95009e908986d105296fc1f81eb3709ba27a68edb771e3e887903913e72c6386e3194dfba12defcb6e9764e07dba19a06504faeaf9a2313e345797cc4543c6f38a656c4c1032120ad6e83d65fe51275099c9c6d3619a491c5cd8995c42726f8f7f72644957e87b51b698ee443f81a24ba0564260fc2a776316f3f470ff3e1a3e3d071521351b11c6f4aad061c6ee81da1bfb2f40ed306ebf42f4779432bb79d7f0d20372c55aed8bc9df38bfb64fb016675ed3ac83520900113e1c4"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3531e3180f6385e8235d402ef40db775cf88d115fe8c3426adba5a4b36d05063130bc2e711d5e71f4fef4cd2d7c21a7e2fe76a4dc02b961a6edd3658a96c78e3f7971649fc913ce8c9c4ec9ebd8be9209cb90073702b97ff94e96471c42dce887732d93f89f7376a1ee0190d7c646d56393f42c60a6db3724a734ef986380e934fc8cb92428851a6ff74f1a3feb94f7f6d3a331d4d61846026477b7d7b77077a8213555d4a7339ceec0c71d65492d2eadb9dc3fcc7b3c0f08ce2d09c97c14351dbe8d2745aeae9882b252ddfcfec719c312b789ba36430d81db2d1e88c29f0ccbe410789e0cc27eddb2b4b6d5d0b980f67700c05cf9e64ba96e5e50ec4e59067cebb580a6983acba34ec260f5ebc6abec53a899483d266b53a0cb24f81c9ca144772ecd622ca3cd0f502c5cfe6efec13574d51acc023f277c3a7efe128fac202e41033ccc4bc78b550a1663fd0d836bfa31c435badd977f38cce70a5fc353449a3357bec99a87b19f92f81c99e1a6d23ba23b5940355b078d05b2554e5885fd8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "885adf1a5e86d463e8f6750b49a3c3a91a2e8bf90e4c19873e19dde041bdfcd08494a9d25ffaa679c3c4c6d5addf99256f75498f3cc6c09c45bc056daae88a509aed0c4b46df5c1a6a1b5b4f2c5d5d008bdabe5f22a0ba1f34e604fa0fc8c647709e82eddf9889241571a07e9dc91b4eca9af390f63ac20a7e526d945df9541fa43caae141ea3feba0d0fcac7c50f7b03d4172daecca84515448f3d8bdecd2513aea8565227c2da298a4e2cc8f5fe5603c30c220c2e96c3a4d802b87815b1d94e06f717030bb2d173339ec3ba700828bc7a02495a1042b644fcaa02fd9e67a26600718d056a050800eb546eea65fe9fda8258cf629cd48dba7393b5569112f156032d5d4e7a989605423d27945401ae7db0a9469375ecc8ccfcc3f2573570056027303a556115b0f98958fef8917e1861de6a59843842d269c8412da05cd2a12b9e2ae75d177ecefdd5af79cf4499488037fd2d592bcb2828b9ddf9cf7fbe309822a9f0f54368ec2a6e67550da715307eed5e1d80bc9baced4fef132b2f59cfa"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "39c1fd7fd0bc4578c3370787ea5a133e8a34ec9702dc1456c1ca7f8c3cda7bdcb8beed72e4098de5ab3e467f325141a324ff55af1390ff6f3d0cdf680f4319378f099604c9044025e04ed1af1ba5c74805265d8963684c7555cb835e8b1bfc162812698679e47b96744809002c805b75bcc5233f378fdfdf3e56593bfd6b0228f416f58b4c32ec0c2d32fe113cf7f3c347425b69e8bda1a2c5bbc3cfd0c1bbc609086d91175fab0adf050a8b3e904fc4a700d747500433fb72c55cdc25bd283d1bfa1db93604f18b8960127e9b7080227235e6ce234880de8e3c49d5edfa205140b8ea383e546e0bbd4c5dc59d0c058670ed91a02a3bee241ccceac20d434a442bf35ec6d5922196d78b080b1c14aca63b827434679d7b6e666db10dd9a85b2da60c6b47fc97979974f11b6051fe9378d96c78328ccf4e5cf5c120c2641b3f6b7abdfd0832fbcf59fd3787100032ae65aef2b076631788e7be1019feed9b863f39759525be659f3ec50dd7e9724bf6d09d8b771bc60e8a8e788ced8d945c89ab"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "94e0075930de07ea37f0eca5023be15c472a674513654d837befcf17765225c73d17e93ac4c69d855027747c7ab81c6bfb3080ccd5b6dbdd41e2ea4871fe30131bf2dbc143ddad0292dd4156c60cfe5172fd9703729daf99b2067334af23a2aaffd0f74d574955c406ef8ccb1796189c140d1a45701c993737b9de11e44112c4df9a5b2c7ac827c9329c5f63f4bd740f3f1baf69a8fb6b69ddf500272beccfc2f24902c592b91de99783242fbe9767f3809b38368f04b02d973c761fd999b0c69eab43a2187d6de4fe5455e070e20bec5bcb8ffa5e439b04e3883804a5dbeeae652260a405ef5e2e6b9b7bf7e8018065a900cd831b05674a093650644c42341c3f5429d59fa3aa93737a6b525a80e0748518cfe19e6a4de792d3bf842e2a864f04da31a8ecd0b191ea656f1c2987a1973ba1b10e16b09524a3cd07c96814b395b29ae1a434e76bde8e0b6e4e29ea3c6871ca447fddf077f53a4c2c3499c7e96dc6de112cf28ba83d8d274ec03fcd1d570b74e22ddddece554b7645380a2a7483"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c2c6b135814accef0caafe8a22b8cbdb832a30c997edfd33e01a9578e309988322f08c64704080dbec0469274fcbfb131b4388cc1181ae2004a63cfec1080087dbd3b9e7409fc0f960ca721d456755f1bce99bc91ba36c65e747e4cb693ec4253f0ca37d8b9d64d5f7d0526ab809a4f476e6537263adc00f20d4261d78e5b6f22896706c665e885d5283716dd959400d2a7cb35974a3a3adb1a4bf3bf36e9773ca539787c0f6a05d17b75837452e247f065803513eb8c6c995e989a52a5d48bec77930a91cdfc1f373c58b344cb1700b7707a1801a758246267c8ce932035f8a93241f57e9ea8c4d2dab3ff4c5fe06caf37e5c996e60e7bcc4f3a6176a69e61df24f8cc080b7489bfd8395d30b6a4cde92ede49a26a0a03c766cef25ca6bf982fc3126ed7b1b1b2bf4a7ad9ddbe1a3a456a6720953460cebe6e1bd5c333b9ab2812f9b47452b2759436137424832753d8a97fd456603c5585620342fa1dd056be6247297d5758529c152d24fa2644e613244dbb66815278385be78cfa4224b5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "27b9f6f0a34cfa0a71fe15c15c910b7c8f2096225213e7021649aa3689ccccd5e2041578ab5be9d110a05456fdc516c5675561dc82a23fca94cd66df6dbd4b0805ab85b57734f5dd2d6efcb1a0bd8c3da6f8ae7a68f54e015a324212b916a0eae4095975f76f509ea383edc4fd888217abb893693f821f4a3c72dff39dfb0fa7abace8c16151d01bb81be374122f0e479748df2c82ec87b443325ba908bd00b2cab985e64c7f6a1edc62787c64b84410d93ffaf6d9a33bf3164e4348d7e1afeb6cc7d3e8a51d723ba6ff27ff5ef1358001ffb8eaf651cf48ca5534bf5d86650e73b540226fc2a2c1a7c52e6003d89a108a65e1c9df183b47d1753ea697f05e77b3a13cbeba8daf25683a6bd423b2b7acefa66eb5e6d08ac1984007aedb7df5d4fa1da1aa3c6ea5f383571aebfa42ae1d42060d996cd9dcbcbfa605f002dd7ae653e7c295eb3c3d03c9f6c479068456a8b0087f0c61492ff7c125e3bffe30cc45a136d72c75b047b246dba18ebb41f3fb9ad0216a09d888885b4402200291e6f1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c8a79462d5c62f418c83b35e67899db78b04883afddd506855ba23e7ef8c5336c1492faeaf1d57444d1049bd008c317fe7249d5decc09fb4f39d7858edd097c3949c53bca1a439674a61b355ff5a9388a60b7d5c7255961af7079e72c07fade552d0b77c36ea3d2f0c7c9985b8ce478df8658de208dbf4690299db7f1d32660585b918af94bbedbbde7ae9444972abcca2f6b3c4004e3c87940793f1a625d932ba14e715dc1b5f9231e0f34956b2920eaced888b3a320ec8376b059fd48ff369beb1ebfd32b9e9c9623d28b54856919b3af12239df425a055cf43e448541af94b88a223a90580977a72782b831ba0a88877cad65f8fb49c68d5e3b2f6224637e61f4b356fda8b8ab916cc31b18e6f92d33e0e27971a480491fde857715cc55388b281e7d313ebb0abe3337f7d4544ef9d144e402f49c2b71eed30f8ffe8e600c31de5960947bb07fcc4e15ac0d7bf00bee0920c9f092c8bed16ad9ab7d752433a96dbe49ac2cf33445257a51dd347dd77dd5ae0d08b223c457db3b57d727f52"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1d9a1575ce2cd06e5f160063d03199cac5e912cea51439f738d98ede05aaf7b821d8b26082ecaf4d12fd01d0f64be9ea2e1831388cdb5e7c7564b73146de8f9b5314ad6738d98e1053ad0d7d594425043ece575c75128888d0d7b090ba5d5e008be46abadbea23c9b7741a023151ef281d99fdfd684408992a8aa9f2c85376a40e53d9d223ef4ced563fca832ef03bef29a47bf381eb6728830ba37c69a99568494efc85370e8e9c3fcaace1a59d6c98afd03a0e8bd5da2f5c909df5710e385ceac35ab0fab92a6cd918ca8d32cd5d4bfee5dd644e0adb3d188a5d0e7a20a305bda34ec10bb65c922a0c074e8427cec78a590c095a0c670cea6d34bc7a88b2f1f06b00b368b8009cbfe6a14b18bdf2b01caab7041d46e6b76fbb1f63e9b309f60fdb4f1a6033a11dd7dc1eb15d7faf922b3fdde28796c44e226633813a969ae1fc54388525d0a125414060862718bd0ee1337de2133fc773d06bf83987a22e4d2e883765e3affe55ff8d92771da79ea0898258f0d7e858fa3937ff24f122669d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5675e16b96e961dd428de891451ed0d23706165d65392d277eaf846e24f0c4388536b2b52e519c07d0e10686a164bed5a05314249a77f77d140dd16d42fba947bbed204ef4c8a958e49f3aa4e62438ee333812d6a9719ff166839e467080d8762a4268fb575a33070209013741ae8ea0c757bb44d12450579ac8e22870569c6892edf1fdd0bc12a7823b695c4c90e93c3cea57c2fa004eb3306d13ba60cfa7aa3f1465a232c3f4cbb765a82bd59551d0f130137829871bd35cea7c59cfa12f188c91dfc214d8102810a7deccce40f204562993633ba4669f4d7d02418d5a66db59af8ad001884969b8e00951492bd846ad7db619d623b3466cfa062ae9282a1cddf150e761c90a3413e92f2f1fb2b5b62d410cdaf6bd8885d635f05f20331416fc3808fccd342764b7c244c1aaf78fa7a1166b1b204058a16ab750ac3fafbafdb2610f52164f75e7cff8a4c3cb899ebd5fbe1834682ee94e6cd810a4015ed7f0fea7f1494c5a477b572d172056629320307e8ece3f72de5dc0652e688d79d154"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2302f69cbfe30dbdfb830918913fb556f2634e268210efcd0afff8bc527fe30ea1dc36833b01fc1b7b1d8781913a5004a24c2412b9e0713b84f228b6b08349eaec2ac6908861157576c89bcf472572be53c0075e48534d335b954f46aa456c90653912e07137a418f8eb59329996e86fbcab8e585d80b7a8f97e7aacad3d08d24dbe30a76ef8f47788d36926e74c0f24df942f73fbdfd649ffe9a952acddf3fd8ed9aad055c3a950e749dfce25d0c45114f40dae0a449f23d7915dea8ee1f6f163849affa4b7b8105badbbffc5690190fce192f4a647b81b14101b4fd9b1f0379b08379901f0908ccb48d5c88e8a3d0b6563bf01117ebcecbd84dd61e6bf05b77dd2a3c63d9c36a394843df28b8184de81cde4f381eea84822002008938d3549550cdeafe31606fcc282ef2c2a4ab90b437d0975a6d576fb705e26131bd07add5bcd34887496b653f3e9c2a7760eb367935cc8052ea896c6f2023f0d2a5bf3267835cb4adb079019b8974426953ef1447069a79cdb51fe8c32fff14a9bb8f78e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "55a36002b43d9b5a2f99ba0acf767cb04b54b7849fc2443d123bae5b6c6b6fb666d7ffb96e09580462df5fc560cbe9744c166f8f43be98b7b61ab71b86323d771eb6aed87ca4261b4e4d76af84813173c01cd82a87fda653c47f3700fc2110a852def8c785da96dbc779615335ec871a31ac3590562e8f50972b5e217d45089a217e8b0b1905693e7dcd121542d11c0083b967b04a8927211ce89262329ba2f7875412b8785ebe47693b8f3b76f98192bdadd3f4359999d48d751290e87264a5f2e53ef5814225931b253b451a3246f22ee3fc7295806ead7992bee92e74b19dba84b1228a8fcec6fc0729f4840d2b467956f86a916129c57025c7465fbfd760e0ddfb480f748c422c08a98fd0f73a5ef04b28fac58355e6d9bbeafe84d0b24e6ba19ed317bba9dd6b9f0008d5d150b3a27b839ec2bd72205c345211c99c8bd92db11c1bc16415b082f0e6f23bfdf9fb00b80a6921a023cd2d8565d2c98c60b5d44b2593126f6ebea96c6529e54d3f2a503262bff664c955d6435185247b32b9"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3894bf87b1af9047d10bbf45a65671c8f96c5603ec84ac2edb97684354cc7e1ce2050afdce800626c238b3de0b7d94e59f03c1926fee2ff49b52b11fe64c8825eedfb9fedc4b58fb53b9bed5d5f0447514e6e5af4dba869632bf92051e268835883d16f08ed8ebbc9ce5decfba43acafb72f8776a2cfcfea0d2b43e17d4185782cefbbc27a3a249275cf47456c1486fdb57396d5ac0321c6676432d25ffd946ccc781d521c67995493ca3e6fb05e46a1b906cb0e48096611383a072d5a2b0fa58c003e5c58311267922bdb4217a19f9405b79d0fec5a177de5247f1f939d5b9201378d09328aa98d1e5a7e1efb63ac9bcee721208cabee3e488a4551e444d47236f89a6846d1459abdbbc2096cd7dc1fe69bc3cad5ec7ddd02359c6b96398b455a39022129ca179e1da702fe7019f9d73b8a8bc25fdec727bb70dc1e69e57faae10c8fe6a71fc903b1c2272901a94fc2721fdd8642a61666211f8557bf5f184e524ce64978596e8477ec4ef9abfd9ebd170ccb632b76da9d015d3d7f3306a0aa"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7af993a700d939dc8e6b16384c311e092883680d4825c26cea5c25d4b738365473b0dbd01e944d84af0f658993b35c1dbf8a657cbedcb1e4b003694aa401c8e568b4e65c9646cc861d689c02f4f1b176acb79aa8eb9006f0f68da78f41eecd4869ecc576f849e9a20e6c1132f9af34eb92da154a459b5a3034abc8ab4c5b26d8721b89ae1099f88c971a9cd58c28369a9274bc7e2df4eb2dec049fea944ba505f61f3d6c4d65e643fa15ed99e915471d2631840ba05e7e05c714b84f102c8fcd94fae291ab216f0845bbee06a5452ed71d9e429bdbd50d11710890673c28de3cd07448a68c92ae052256837429590176c160e7eb42371753e778a6728a40dcec33d58d46ae03ba97fe2f337288a7ef67d71a42ff3944c1a0ff29b8d59820e5b3429342ac74f2978bcb4b56d455ed7b0f035237863f0dbb249f570c591d46a67ef2ec54bc9fca010d9b6c018c415fb4eaa81bb6fad502c273e72bae7acf4b4e3497c9d42bcdbf731c0bcd04604d85171fedc4b750b63d31fdcca389b6ff7e6dcb"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "194494470fb927c96faff5627eaba83b85cfec16ad38d166a5d7858d6c77580a4a8bb94c16eabf9b22e7653b7957aaed312695df9bade2b4722dab393a286fc2b734cf6f7876083d42f238d0af3082eaeb85e61158e9dc352bf151de4f1329e7c379b40aeb312fe331df8c460c423ce08bcb6290d7e772a75ba6679eaf4be77227c296246eaadc05fe3451203479eebc0fa86ae86ba9d3b42160f0f58ec0652805000ee8e520fd58f80421ee5e78436ce64a58a8273d512bffd3794b04b37a3f83e7b5805d19595f61d07f7a4790bbffb57565b27e8edba4273339ca62fa711c22ef459e78429e9c1f06f6cf8c6c8d5e0aec1bb88bd29a516f6bc1789fc790188c26c484231a78696bbcb181f608b08084426e49daef7d7cd080ff0a82f9c70605748bcba1fd4ec4976319de01a44b76097f86e627c37c37e92ba35bdd51027651b47f9e87e8490f7ce2d2ef8e1566da7f3bfa880e98564bbe2f80c642d30949391081801af2bd79e4a9de3116658216b9bd7949752661d7ccb7ca3ed5918288"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "83dc093ac399d896efeaf13a4e5b9f5404592c7740af42186b01f2147e3de7f3f46ba323dfa3dec885e10d92c4f5871f50861dad583794b25e3ca2b68eb1458ac3640c7d13711d3338dc509f10df2c52620e0b7c2e2a72608fb52b981b6191765ffe4e675c6a7896c0f026598a3b156f1777b781b6ee688ccced77b95b61ff54b1bf492cf732b9c7a8212b18b5c899929acadc622069c6b4b905add8de54a2332436b5e6f6e16d572ffe46fbb76067e1c67c7bf58d449d2cecfebba5cd7f8246d6511cac17b106e7421c6c65e704a2496773fe86b937265cf27e81a37a3f4f5b21e47fe214e84a9163cc89781468b3e5868ac3414dc112f0fe159d909fd312382a8b76fe194c32bab360d9d694fae4a1c9639103556a7d283252bc922d889c0d5eb6cc657373bbb02119cc8527e6aff051d555ed12806f7b22a5df8bf13c5fd35d5095ac6af7e106b02d4b18dc4400d2404a3221e1f1c8027e722ebcea1d6271cb878d0e6b825f4e3a692fe7eca65c4287a63a3586810c3865cbd7fddf450f99"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bcf07d322c37a507d2288f6a079b037a6cfb1b5bbbe07de90c9a13b00d400f94a03c8101a2f9a4ea258e3d8ce167fd40e48e5ac42be2095302071f23596474e22d2b9fc20800c2cfceb3b92ba847717eeeb030e4304a5e1138976166ffd83467ae7790bcc4d0e1d093ff09b41b62cd389a612ff3b9204af9a24efee6ced39de96bffb1ad3636d7aba49f8deda056735afc848381546d9c2aeb0a72ed2602b4a619ab9a534186f8bbf5924618b49cbc35bb021e575c68ce5ccd886ad2d0c968292f2dcdd411826470b34717fc2853f52e10307136add9b68f7c79c56d992a08b461418781ce66311f8bc37abbb1dbd3551f924be3b1edfa7340267303cb48de616e7cfde59111dd1f91592f268b20581fd1936d8b3ace85cdf3e0d4cf55e170ac99de5bf5df69b851024858f8f3bcebf3f45d7831ccf72016877ac59ef49ed5d81112a2fbd9f97e40ff1e6f4cb42511dc246a75af9fff33bcde3ba9dfa3249a8df3c8429e700c1b3d701914802b5edebe909ef86b8f57b556da3b1f4e675711d9"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "43d99d627869bb5cb798be4db332583afc162875ef4200b10b0f019cb186a44894b511fb674ee02f4adb6e2d529ed86812e559797a7d60512747cc6a135dd708bc12f1acc01aaa6f6584a8f9c02351e23b77bdd2999b79660ee956e9bac5b98647068c0c6e1c5c5907f712b6993050abc872a217699ad5468cb420b90f5d74812e9d9af4e5a200212c01469799de9669f28d7b6e9726518a2c4fbe5fd1ec5ad66a1d472e8710fc5559b9e75d3aa625825886e9045c2c8019be254d2f11d3a55b9a3fb87f083a009a7a6634198fb9f4e6521d2706e3192e3e669fe201e60bd80574b5e8f66e8ea08740f3b0f0f3cb78ad90ddc95843e42bf4baac25adb2b57f667618ba7bd1c10b00c5ec14dfc3ff1f8f5c036ca7aa149f71e7560f1b1490baefb2b7d656fd6ed6e9115b9b59167a304ab7383e091c57f57e3bcf1ff57e3a4b99192b91f4297abbe9a5d94b6bac7fbc9a5bdb64657949ff0040ad276e2d9de21df2c02d68929a6c366ba3d0514b8b50ebb3224ca32ff88511d35e5ac6e51a28ca"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "866c67760ebdc192e302d47ddb40a927392833cf3a3a3b9c33923600fa08443da118b47db980ea74bb73518382723e375fcd9baa773f3b022d37a4b0fdfc817edf2a4d9e71987e034cb5cd80caeb97881abc45e8e6b965941dab478d17039d98c989178daa541507b84df445655f1171431da75bbac810729f973cf8f3606529c89b036e046ad7265e4e15c7f18b319a3c870cbfb7953e069794978aeabd9c20d3b8a3b9a44b68b620196eb1817d70162b22078fc4a63921a7f35c5500de7ec0aefa27d93282ce80d2ccd42c2d3ef1212c10a833582b42be78c6e866e887b8ee329b883cb08f3e374ec5064f7d1b760b717976761a44eed64d12021e2fd58c9640398e616ad96ab2e56ac95e32421f7c577e00c35b1fc95f1825a0214cb49047ede981a0db76c18e7ef8a9628702ddb4e9d5dcfe55da36857c497b44d182761a7c185fff68f136846c698b5dc0753956209c2c0e0d247b815d711d49683e9386387e82f6b4ca232b653c365485efafa988e799ce681f3c7c37275391e56a3233"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1baf2ccfd98c3c37b60101bc5c8f3ef871937f3e4cd7a21fd765023f03437c3179e6fc9715d6ae00425c7838e5a5eaaf1effe9f7b591f588667a596c539326e8b7d8765d78bec33e057a25067209dd26e7a9d149b0e0a3ba13d7af57c436ab9bebd871a2cf4f88b26da4ac30d6aeed5e67b871eca23c2dc34d0685a7bb9ece53ec9e99228c0561578f39c269cdf19e8c98cbaa2731ba1faa1008fce7df30a1e5f26beabf6cf0716faafb81d1de203a1aae8f6ebab2b123697838b3c0896786fee11e2953667900a7ebd359bb81b340c0b9e4353af1091b008b5d5f8ecb64d75c574193aaf772be64ed106b374cb842ad62adf9c98461327f254f866bc28290b425a3ec9d8e17e126fe930d58fab0a5985d7844d85ada69803bc29026e5be9c9a9bfba5e4ae00c91afcd2901bfa399e459ba87bdef0577366b6a546b91a8bd858e33a3ead31ee07405199b9638f09848af52b21092a5690719c75b28f12b983712b2c79035eb727e928e81df39fec2d939510927e749c4833c02c12139f19447e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "105aa4e5e08da8705bd94fda6efaecf22363716f59ec83d0d4fe1a40160276a6cbbaf1fbf3501ae445be06c9c04b541caf22b58357404eeed16093e3d295391732dbbc3eec7589f80c02a5f01dd2b371197b46ec2e45723f086d6e4a72efa11a609c7e528b04a519afee2d01453d8504fe4e039dea8f5fc1035918829b59940eb97f428910186d6569af61371736f3c3aa65913b4b0a585494d386cf83bf6eef442f9e763fa1f205e49a80c35c7906264d5d07012147b557d0f8f5728d1d533b578d0a8294defe7174c3838289ff2505dda63ca7a1d261b754555572fae41db05ea1f3994d4469d490fd9d251d4b53df0a7ee9f091657a717368c4275e3c3e1a2cfb05cb64cf22d1e7d9bcabd4c91da37aa73a05a2f2092b218c081217456aa69962d5660cda5393408cdf1d2c7fd1968bd1d3232bc5fb90041dbe707b63f082c8ee743cf3102792d4b1cc9650d5d9f6004a31b3b32e9613d3fabd94395b1a01026a33fe3a42db19100d3c0eda29b849ce420e4ac0c71fb9a610c730f27bb026"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "396b9f59618e6b824e1ebc57b8f18a133b49d96bd3fa39c66bc4a206e79ee7984013a324dc41d00bc469285e8d255dacd178f106c9a37f11344e21a24275417ac29f2dbe14377d0feac8061fc24d5b178762700c60d6cb0a9d3896961daadddd11712c2c006eecf154b5b0a9fa5786106e8c12cea3e3968c42a165f640fa0bcd5bbb3734c55f57d14506169d7f805a4ec4e055f5ab2f1c0b0968b396119e2d64d8eb81cd0ab78e09790e33ae752e21b1b64dd5aca05259aba1c2014b390e84ff25f2dae3cc198a7ba5d9e4b104ac6a5466e1270a1631e6ffe777860eb63120f1fe8b3422a467a083463a133ba9db8bd18978ec559676f969e5e466ff2a8f0998bab5bde97bd4b759eb3b14b8171f0f5c19a2d590a344284b69d0b08729ed67824665701c360fabc9a48cca7591e8bc3b2300f1c76e4c6c13002f53b2fd5d45da382a63c1073cc6f4c43fd06bfd4d70104c4d5e2c74ae18a5dea531f5a6c2e9e23c381b1fb0fa1fab4fc94d662db842ff202d55f8cb0732628c6f15f824aab121"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "82d26da118ac4ce272ad266f402323cfc25d45c885d8a8880e04a6ef52d7de7971b00ea0adb51768b31348f590bda5e41a8fff36939b59cd0012eccf474552ccbe2308db3b3910ea4856a290babe54fbdb1f482f524d3fe81d1037cccb5dfb6a570c898680f19af007abec62fa233f9396279d0c6f9e8f9bf87f7a7e088f9193febca5316f0f10e139fd010de1a37173ee90d2b35467b768625dc59ac028505b885934e55c2bda0a97f3def80a2e26f14a4f2f9ea4fffab807eb2670aedfc85c2f95f9898f7a07dc2295c4f91ce2b96134e92aa9e053dfc2cc012513e39788a6f0af4e14ca6eded4e8e7befa85d69e9c45b98ef9bf0a067e9fe8ba29314b2be334f4a5438ae4bae6ee85b6b9086bd3bc13838ad27f033208c834ddd3f48fcd9c556bd6a6ebd6ca625372ef84f6bd44dd0c24c0184b3815e893952bbc42fb790b472e89beb93338dfc23198551ac7257ccf7ad1ddd776c7eb620dd6e6d341dd0693dcd91cef175f1b3165cd7d99a2623c7607dec9d0eacc0b6c487ee1f90e4236"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "00eff78b2945917f92e9ba0847516157ed33cc85c64bd1f5bcdcbd62c3906c5b77b247c892536b115e6bb03ae3e692bfe94c9d6b58ae0627bb96bcc53a85975d2929bc930cda5308f8dc797d0b0d6a5f4ab5a36e096fa4e934a7854355c1562553738099640c3ba675399a9d386b6a9c61854d00f7b6fa5998bcd05191a9001987f9621d1469c9b094d72590d76dfdfaf9b9f52f4f8d28315ee6fc22550e5feeba3a41f223dc9284d26955247fbebede5a3d643b4308843165f658ea0887a9661b26a707d22f5a827f33b2a60eecac67e9c730983810952247fb903e62317d835d9cf6140559941c3cc5ee7333ebc4bf43d036983d0cd3a3dc2330062f22933c295b05e6680ad053e8f64898151c72680f4ce8af1583fbd2f730f7d63e6d00a3e6991f809909b6cc8843ffb25016701fafbd6393e65289106cca59f73bba012b0bfe29aefb4a2f458b52d4736add4c2732c7ab1264a33b9074153b5699dc5e9566882a29efad79309fab974fc32b96750f411e62ef0acde9f9bdfbc8ae78ceb8"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c67ba5369bf9eab5141829d0ba753245c885cf33ec6e9ce6751f2abfa172beb3db01ed0513f3b936b48619c64d6cf58cf8fb1a6b85e0771dd9450e3b4535740e7078a06c7a9afa4cc28ed0ffc695a0f9bc532594f0410987d5a308cd2a8607f231186247a89e8babbc6a2adcb71827535d11a95228c38790236ad2fc4de9fbee03c2b2d1ea809f60ac8ee770209e39b3260796bcd63187ded4e70efdbfd89606e9e85b13c26396261b3c907954bb0d7d8cfe2dfaf9a94ba6d54d98c082fba79d254592bbdc3e190c8dffd24d84e03da96eb0d291f5cedc2a9aec051be76dcc9841e6a2201323f79d9f18ddc42fd45bb64d62151a30d1111782a9ac4b8b5893145285eddc0eeda0768e1218a693a863ae2ee5a959e4249ed995f85f1a9f8692e19ab609fccb0a93e986786bd548f0bd70022b61bff520d19aeb97597f98034a5b78d6454e55e8f4caf4eb019d6aa00ff736f9a3105f9e75ced7a5e30882bb5945f71a7c8a401cfed0c07f0347d46cbdce7bc1e931c6b0d5c1488206e39dca2512"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "633e28886ac6e7c2c36a69e3c1d6d46caec4d115e852c8030ece2c5ae1489fbd795affa8478b23f484b22baac6d1571f6f2f33f36fd28c66cf9b2c963f051cbbbcf5c33764bf54867a757f6c74bf6574e3b7778eae92b55495bde44a9def4d1a31fc8dc783d60cc23d1e6ca973ec0832d6979e56a42269d6fecb6bffc3eefa36e2c340f89311a89902b40d2179e25df9c841993f245fd644b0bb65e5394beb84b1544fe878b165f2f6bf49b77f8ca4337c60be4a89bf7840dc642da1937f9a933276320d0488bb6cf4535e68cc4a558c95fddf04c65400500fa580b476dc53d60fc33ebd06191ce23ac289c7850a9f6c96caeb68732bbb028f10c496364e673236e55d54eb6b187d6905c9b894b7222b68d90b82da7bf29d1c0ff5a2aa552ca13dd49a9f50d7e69ad40cee65ec7ad140642002e75c3c6cd55d5892528d2503b33debd4be946a3c48d7ba46abc96ce2e79396116c329ce4e967ca28ebd56712fd6a9de4ce1a5ed00df621d18713d508f6f1fb959e2ce8ca9f8eec2e3a5a80c771"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "30596e00b2ad31f266f2b47b598029146aba9d0cf372b4eccdc5fc9f475c36567e6a159a454b417c77b7bc576721c52f64a31204279d524409434b73de9ae4d819390c3124ccffa5b4aafa135fa753e71c1b3b3f05ead6e6899277d0e994ce6111f61f2464155f539b8871ad0167a30c234e0541b1f39def8deb531ed476d81418218c682dbbbc0f4c3cdfd674c5e7a7bd057eee05a9f1b8b796260380e38631303d227cd9df7e76fe9cc161f8db2d9db7306834b67ecc33ff91b3c59f35f789a65b6f1433f1cffd69545a146fcddbd047a847f55acf4adc9be2f2595faeadcfe39127edeaa9a1144a5a726edeb7b1a48fa900881b157f7f3516f47dc0c108630cfc9304a2acf821a93a867b063217db60c0514143eb53557ec8f86eb8a83a83219f8c3310baa122b79d49d48bff90492acd83de8c3b9d5f07cb2d061b243d813cb1be42c658e2ed52a9b31ef07360df5945406e7c81a80337169fedf5ea76b25a69a1900a673b648831745f3b04815df9ed7d71acde44fe36aec0a85a7d6ec5"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8431b3c74190f8c0086d779639fed56544ad0fc422dabb1b5dbb600a7021a2e25fd9e69ef305d0a3da9af97e24ecefc11f515412edcc6a6685b3c4e8c251386a7728e3add07ccee395a851e5c1330fdd05c033269fe7a52df15a1e81764facb46718ddf598a83943d35716e3fe1f216b2e17075fde3751148290040a56535eba7e5d05ce7738d2fc7f6e8450bec68a0a35a5cbe8aa3ca0adca3886bcde8649fe491c4629be8a1b8eca64cdb226eb6a0e32397a7e0dffca2fe7b27b99754a428ba300cd62d0ee228e925d96418e75138f56d7219198d04dd7713c8e8d606d7a9bfa9f1b9d731ab9e0ec8553d1515a32994ef29f2d2e9c1ce8a32ebf8d970121655810b1afcb96fbfa0495c39b759921624498acdfc8d9abe95a0693e04ff6eaf8939e4961c32b86f3a5af479d294d6dbd01f90437cf6f830db644ad9466262333829fc2243ed32ca9fb08b9b56633bacc450d86af6b4733034ab987db01a118c5c41b9b792a83be1b4e068216cb642b11075a43efe7e3a81f0872c4481ad696eb"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7bcd19e6ea965e860485b4a886d032b2d79971241ca2c512b781822dba95d8db8ad9ff4586e9f238c885e464d8e67f291263ab6481e93544904da7abe00cf7d312077447c7b0e5026114bb732191a06beeaff6a05986a02919264396b8f0ed1eb9bdff5f2888d63d3d66515f30665c9963e13e914feabd50923f674c31091d71b2d01328c07af2d9c4da3d41942020e179420f3d6d8265ca1555db51aaaf281ea92b0b5b9f8deb982723825cae17a877e6f0544d4fe48f8fe3db3a7018691bdc39ea7021ce4d2c052265b33a1a0cefe72392a52086f673a10dfa7240d88001a4053bf376bef41881c27510edb203ca07d8fde2955eff7bec85e9a44794c0fa757e385c376e6be063eb90c23a526f4fe4b5a3caff01ec148bd725ac6ccd8cbacd0b336185c3d98804bbf06626bed831afbaf3c106a847fb72a60e39b192940c898020137a291c656219c322cadfee3100cc988b98da6d203be161945e4d95d455cf73b28eccf5d6f9c36516b1b8a1dd57531d8bb943f3b50d04970b0c114a2a86"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "43f62292e9039df3d1160af93dbfbb2963efa6dc905aa967bc765415a74fe4a95612b53866c56c6ba42eeb76aec0a5afaefb24ac7a4eae23cf439918750b2496579c33806d9f60bdec575473371c96ac56de3b1df2d00036ea9166341720d4e164a9bbad13eac4f9364882772a20630e2b067f7d12ae3b02385a638ee562570d4b4913cf6d1f9ec6c36f724c545ffe7e0964d57531925a9de4a58511674f6ce271cbae8fe4d2502bcf5feeebe44aa6a6a6757eb3709b139569b40c019dbf0667d0e23d7a4f93075ea68a303df9aa58b02302d753089fcf6628c318a80815dd3034e5c67cfb88cf678ba1134e7aa722452c0da20328aedf3520939afe9dec999691dc3411f75815f568e3b03b8f8e3c08d99b958fc6e463fc512c44e583f869c9154d630ededfc507dccd68401ed8b37dc3f8c529936d5ce94e6e6ee06115c3d39ccd85e86ec0c27087a82774f05a031677bd5f8d5440dde337b860f00deb788bc9e81531bf7a9492ec4af8ce04f3c94c6746f8fabaf9b7be9e089ba956779d9d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "73d4d40da6efbc72e01d95c3504c95737fc2e401ea73dcbc56b2f1f784b54d0c4587877137abdc84d67383ab0453f69381df09fde92edbb90fdac2b54451d76f00b5c553949ce6e39b86cd5a5fb555f231a1dabf895ef9b7c905ed9b92e333c0af57437662ede62093dbf6c43a8482706853c0025fc724ee13d17d6f052564550140c52cd5f52d98622e02da82ebca62423270dfe18333a9f202b9f6aeaa84bce014c8ff323be51327ba1a7897911df7172b819307bcf09069a3fc1559335e7fdf06f082dffbac70a973d70e5f4210c91744083d5113b510fe721650b3be52bd003b30372d56fd3268bf6aa0461af41c05cbec350f771eae198ef315c60c08dae19b0f31d3ddeaa144cf9940265660c34cc579b4b825616aa3d234d600248645d778a789d7275166cae5cbccc14c3d81c26596e5b236838ce6cf701b106e584d96b1bf40a75398763128d0a748e8f0548ad1d810a00e961a88db49898baeff2ccce4d56d3b0f059ec5727d03ae56499f811705bbf6ab41a1a3683e3debc5a6f7"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bf8c782edff2de8dbc7f480a9b29f1292a5f1ac96ebc92670aadfd369ec83ad35987bfc0ab3915dd388a504ca34ef43f0ff55d52e891aef35c47c81493fe6ef53a4cf5de1e415278e63339110722c444c6c2eb26becfd6589f18f2925dba814d5e63a098bfe8882a3bc73a9a184e8eec0c8b7db26b4524a7b3eb3975f63fd16bb461b42e0aef58b7953fa3ae09f5c8c38c4528fc48199fb652b27bffa9c85ebb162a0943af6c1e2ca954e44594157e053f35be8d40ee161dd30929576a2cbabc7dd0cb6bc3305f41dfb77644f32c67d8f04e7d68822def40d341f3963a12a1acc16338d3d8229ff500fbf6849b2507b4dcb68ac7c8e06a076450b3da320ed8673d86e7bf7c91f8379007ba05303489eb9537bf33c275845c923d3881b4a80998e7aad5b6a9f113bf157b3aa96b45791937d9038f94569f1fa753ec9ad612f75bc89fc79fa5d26711d39aacac5c05b06baa5efc40d9081fa39c2ab8de2bab3ee5023a0b668e17d21e470cd1efaf5e7087d440cbdd7b447f5fcd9046fd9197acfa"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "18c76a48b8a07eb2d64933e6d369bd7c03cdcdf1fb3bb15367ace58ab1539c3798c1afba510f46b1f621c5374343d55e11cf82fa1da003409702635c013481fd785b32e495dbc0400502ac60b82269bb6e3b9a405f6794c34fb801f920413d7e243ab31c1e7e2bb25619e66a016c948a24d3fcd24a63d45f30f0cc41f7c963ced75755a11222095b3451726708b3d255d60c47746633b822ae2ca83ee50d7dbb5bedb2ca666a80a24766ff121b6495a26cb9ac14e0f11b5a17367fa2ee7a3063717e4511a7588c2325e5c9a479db77fc799b42a9cf0962d9fad45ed2cc750bd30e34a088049ca942ee1a83807151986df4b2e70afa7533691171dabfc861baa5ddabdae2db6a3f07086fd539fcefd4694fd9764af7d5d38a75c3a47ebce1820d1a15cf9791da6c194a4d1e3d9484773c256d48989cf800a83c2aa82fd88fe5fbf945856abbaf0a8b843422bf30f933de51739d583ab7870e0402c1c0d8fb95668a35027bc40a2164ea3938e7891fa052b353d87939724bc6e78c3950cd25c3d8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "75fa1d30a796ea7e6f6225bfc9001a3d48ee2b66985772624f51f74a4eac8fbf0e126a8a21e7904a4668c37257a2566f6d5398703e160c76fee8cf4510ec4b4fa38af5139a117a40cccdf5b2376da59ccc1030ffb37ecb65e7cea239eab5369c4b20ddaded7b4eb5ed79b3d878844217f4094a536d824b2d1b9960b8f9aae9dc42fc5c9266e0e15a503702096fb725fff3bfe4eefa8bbb232ba28542bcd23f434dc3b3c8b827ebea88bd1e5058763260c45ce83915d7f998b3b557a94a41f2d6e10d5c6c0881c5080f51a20c8def82ecdf795ca5682a4a4b451f627e26f1a0f4c01b0c4215d335c753908ec16f55290fdbccf0855047280c1f0e226199897300e456ecb74ee14bb1b68ed54408c5a3932eb0bea33ffb2f495577f37bfa6daabb8971bc227cbe817efbcc618f7365f5ae49b51280cce5d90a085fcb2568c7381943a93caede03f492869a768c7178abd6d8c051501a81eac5bd87da6bb0424655356d5cc86f0b04a598d83df52680cb20a49aec6f9966e03feed8de78c1e06b2d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b5eb805ad3344e51dfc3b5aaf0aee47a8114587e54079d1717ca04e3e0786681fb9a77aba6a915369573714638b408c4574f8951bf38ce7ae055bc95a078dd6c68af56f33d6c8e39e61c386b8d5d148e94fcb64b2ee4826004509f6c033978b75f403b8710b16d4e0029321e340c03dc4ee0cb2e4dc112c1199a9de821a0d73fe5ea361a453175596e0c945ff0812b5b4c92bdf3cb628637b4fca898b09be06188183f37a59dd33398b786c8ed44a0f36a3a99a597071a17b432c76420d5a68d683351d85c6860572e5213f45bb7440febcc4ba6908b3920079021d03c0befbfc0169d987d5e19cd81267aba56684be25b8b94e3f1229c5757966938b63c66ffdf0f07684214d415d73bed838212612d3cd4071a53ec43cbbc5d71bbbb60f51fe310c26054318876a5862033fc21eac0c1ad91f7d7eea9318398b2344dbf3c2f04574a5c3db3121971273244ec876a63363054aee10ee276e8cca376e60189645e3f67517ef820b35c930485479403d697b2a72689fc238f09f60e3b598ba562"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2c40ce5377f098678cb1a3f6177c8e290b691cbafb4195a6244d148ec48be99792f6cebd4c40614d9250bb3d6f6287171ffb713a0814a6746e2c4126c82f7bde8b40518ac506cc73ee8e0516a0d0257ef153fa2464e17cd17dd6ae5343d43eadf67c4bc629082b484985dbfce3cd941c1b69dd4a52b0f177f641945ae0037c79fd0b975ba955b2c1901883f2c5320fa7b43df6c673eba7c76c0dbfc03a470bbaa2a6083892af527d0f5921d2e20080804db8db936d02f53cae19d010a113f080e0f7baca77c70fab4819c2481f6f505b5459b59a2a482c6b8803a26610cf54418a931d48b8b3a2f0a5e82cae0ff81bec4ee9cc93e8fba9350b5cafc6c020b484847d1e590eb1484caa4afbb7d3cbcff85789ff47401d69de6554ae7ea679b69e115ebc0fb3f89ce9d104e4a27a3ce5098da2c4a840f496e1b2395a8725dee67259bbc71e89aa18c35a9c0db3d092e02bccdd93fd6d4fe51eebf17f5cff0e990215537cc0cefcd69eae4a596d8a95a9ec40ef651ea7da397630fafd26494da0be"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "28d3351a970732d5ac3bb69fdd6d85f8923a20f7f7d72985d6df68e41f972dcabb638534d163eb8cf8baada3e1debb7249da4efab8e1ee782dfbd3b1add9e77253ce048c8d0a350936806ad473304f1dd0a0318ad10a11085f2cafc20114ab1f724ae5ffeadaad0bb17bf66277c499876d5ce17026d6d30964dc43e9f68e271d5b6c81b9953090f70bd9b9c05e3219942bae623faf06c6f21952427a5a1a40f05c0c5159ff6e9b94fe4aeb8310b0de9e69ac5f0f4787b6d489d1040ad63ffb1cf0fb924239d5417cbbd7afce71ac0841a0fe2b6d6a5742649fa60433c55fa2cd99e1e173b67528784dd0f55488f7a9939b46137f9aa33bd62e477a77d5fbcf0820a10a499aba3ca383210778e7d84dece64f121acd8d74a761219c6359d2dcf9aeab782c58dea8bfdbdedd4490bbef8fd514f90cc5a33992c4d3609e300797fe0d5dd203fa71f4ef0a47624e5e51455b74ef87e49b9d122264ebdec7fee7bc0249f02ba60159aa0aa8585ce19633cbce48e6e4765b0fe7b4f1da4a8417092873"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c0fc6e5e9e1398d0cf6575806d6ce8c10f63d414d3ffb7d9945b986362d9da16d61e9e662ce133ad6672964adb4bac861abc4693286f826e4e77cfd72825a4d6dd03c8befc8a9712c12b0a4c2e0f3128878bd9fea55b629abf7029cb7e9cc381fe6b0eebfc05e8a8666c661641fd247ffb6e3c25bf435283a21b2b785b9d4b0b552ab3538e310bae7f36af1d2c6697df7821bd469a10dc53f007c7a240910f9f137c6d59060390c41a32edaa8f49a5b28484f0f69d2f8ac99bc04ef06d7d8cc6e850376c9e66875d00282805df54398bbc5bd8e8216943f845c89e59fd6bbd6a8e2cdbf148c656982440bf2ae364becac976cd8e40a6159b366d8d0522617f422531bfb83ac8bbac33f6b5c8c75bfc107fdd17d3cc4d54c66cf5bfca36cb1e3ccf4383080f18883b890af744b05279111095d6aa0238a86a6f3433185c3ef37203c9bf46ef7bbf3cdad39072e970a1e6dad6983e8bafa6e50a10a6ab7a316a6104e1361bab2837d51735fec2b81cc79ae415051bef115231f6e526201d0cc6ed"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "92f154acb89d20388e78100191d964c992a2360f2d205a5f008091439f454f865d3d5ae276adfe4b552afae3859a71acaf151eb04696b6222a07e1274d6ac314a60090bc928164596e2de56e77e2cee607080a293b71cc8403bb2466519f0f14d26009ae7f09fd9a41447cf8d26fccf9a564cf3849be92d9e4bd2b3d7095087d43e462873ba0534ae512fa8edb2884d9e1613a1ad3522ad9d449f78cdb8331c35502851e8354829a78c56df4fc9ebebbc7bbc468f2219e93e4c524b3b8a55d7c997bf3151848ce10bfefa6f21207f2ccb2fe9526a0bfc417c239a8362282af93124a0ed209534dd540bdc8a1a08613587a1d62baf3530ba0297aebe6e03c2889942658d50f80f33c6ba0d021f9703933b2ba4a24665bb23103f0498e68a0f5094a9b9a7ac146bcd5842039dfe55191f06a70f103bed094f7adc3c3f3b4a12f2cd76db1e9ca7ad3c9d8ff41811da6adf3a9450cab6170e74270755021fa6f4dbe3b1226de09a334ee82617ab44ce93c6420168f6a75224456910b907ec2de68bc"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9094c58ae7096b725fc29065eb17648925b972e5fd176a546cdf03b50d3df72e84650e99960c783c54558a44166cc67b0e6a9c8cbb0095b984440995e17e6e7b5c3f561f3a8a0fac06b973076c16c31e11cde1ed0716c41074afbd94695953a7d075acfa529f89e98f406ad028dd48602884b7f1c04d60a2317ce10a4c3574800f05b83eb8f170ee6c6d084fc68d2db32d0a430184719dd0c0141798fe608ba150f5336079c4a712d62a2f58a88d6f6bf334bac46d1be0e6341695995aff0b05e152a4d75898d713cb2cc6a01ba4df3e4b45914a2fe7f2380f94b71facdc6c50b1c61485e3acfabb986cff365df2436e50c44afb7711a53655b250c3336bcc12c251e1f0e7788c71c5f80dd02fe4cc03b1103691b45820038cc094553f8fb2a5b829a230eae9a97ef4b6c7850fb7e1bc99852dd0b7027fe8ffc5e2c1a50bf5b4e42c249e55c7955ffa4f4336a60ce0d8423f349abe3434e3eb9f3425661e0686fec79ac14e435c1f6c3df4982c7392ddb8ed77f3f65a5c9210ab81e40ef3eb76"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "59e8c182b8d7c58cba812204a8132fa02af9bb2af8ea16dc10907a14ea29a224a80e0eb6c1e12e16a3144bf01b539133f53a4c2007f15787cf61560c6bf8fb6eaee9ae65b924c5f852f622d8e9bd0b67a46dc8fcf551d577a916c9a0af9ddb50c05dd27e716c4c9e75f3ddc3585cf739986de48d9add7d39bb113234459637f159e7b95245e59546aba7f07f4a40a1d6ca1c6d1cd946e8a2afda98cf663e0ff6e9bf1a05fcb0c46486976e2d9a2a35e43f4b79dba5087fa4af8ca4cff44340b3a60d153b5dd3c9bed8b5dfc684454adada547c1f428dcbb70566b86ad87310aaddd9e935dc5a6c68456b3c2ff98d3484e471e586271c06259cb754cedbd0913981bd5afb5e49dac1e8cd86cc8bb53863f87d11e6feaf489670ba07ffd133ea14a7c60f9263f986b1d13e1e67eb0a72f67db108852f97e424d455633336f3c4388898efcfe500bd45cccadd505c481b5c89729bd1451bd790bad68d2572ff09f8c19bcba18a1b6c9ff260562d1f1ac35373449da2467082b288a4edb76c475795"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b7f073c6413f4f710af62ab1b9f023215fa39db9f47e3156df5d0dffbfe4afe1aa9dd72dd7c681b3ec542ef926bedf01608bf7bf0874fc68fd90d12e0b26b2a049ed75968b77c8a24c626a5c706fedd36336c58b8158a9f1fda4bc3f6e01f2fc19544378756c48a3283e4c8c3dcedac07b71b6610e3a10aa19996efd006b970ce00afd9256fafac4e831cf598ed29d27e6d3238b7e799e1d0d96bf78cc9f50584d6702661ca93a887010d16c711ff138f8b07dc2c4616c5204344f402067527e2eddc0fa70a48fe929e6a195e27159b35121612eb116ce2bac85e9230895044755a4c56f83b45fb3ad795728579719a68bb739bad1e3b1f0f79985a65c43758b29497f99785dfbf985cc6524d9a97739fedff3b1d6af5a7c23957807a5cc2de62110b59a0a5e47aaf33247644beeeda8b1a4bf2ec3c1260701b4c1c052276eae49994b6f8b2f8008cd5e637a9025d364ebb27c908b7f7d803dde6591a543524aac3ea330445b9e7a3090ac3c9c63c964ed6e1e6698d5481704a495f8e9ffb1a8"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "43bcfef9e1c31f739cf7273b1a83fc38c319d4ef394b28147e99566d60d58459482054f2b8ec88db88fa4033132c03eda101406873c76703be2bf0d0703083e9420a917233fc1baf2ccfb8b725efc7d302b474195d54d4d3c7cbcc0573c5fa0f2b07a6ecede1b445ee59d8fe101e8b0b97f9b521963b0933efe4d10bcad18219bd2d33bd2dbc81431bc6a3ae6a827c7be7d3b0a1d1718225670cf25a405ba12e9c7550612a866efc6edf994c155f24f069574d3f73bd09c74eb44326af7846f22687b84b8caf54b4052364f107ce5295bafb2d91ce6f4efd667e6ca40db672385163d1b7a27ad1d57723dbbf00571cfe56a1ee02d6b6503da2ef3f78003d3fc07f778926f16ebcb05762fb72fa50b75f78c2d97f174bae392065db2699b00ea80649ffa470ca92e57631db263aefa225bc1bdaf14093ea1323071f7fd614b475f5fd6ca0ab5df4f03624fafbf5cb3a49a92651d9a6aad2e405a7f76d9eb76644dc6b77d5f3846942ae662fd5a11707feb5dc67912c1285913ae2f54527ef39ff"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0ec454d968f05e44953e179199eeacffe08757e89401d89f0c34875f81363aa99334615de41513ff604ec742730911b75138d3dc489094fea7ee75de8dd72f70af216817b5fabc521e391d5a0a870f2c089cd76105f96730ac1e33a2ad07896efe98b4237e8a937635f8d1dffd7fc77dd23b3e6959fa450e48b70611878727874df80d4f7949e14133a3135e422fb6fc7dffa6d6cae3ff75df25458c53f859a8ff34e1756b8da403aacf3b7b12980eb8e69f786c4433d92a5971d615251381185ae436d9d8fb04c6bd7264ca6b65b4d6dfdde13668f27fa81cc78115a07cc88f68462a15763041b3f44fe9d6fad4afeb2cd99258df774995b03a567d85553210111d7f0eeecac6a065f3cefef4ecbc607d49972aeb8be6042cddd844149275696cadf5778629c36d524f8b99b2445a8358afbad1c0d549312d6f5d0928fdd563e286ebdfa2e7db8acc4fbab128557ff6dbd03d123bbe525d0cf37cf9624f06821e422bf0f0ca8e27baab590a50d1e563098c920be15c0e8e965a2994d5916af1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "69a1305c5eed4c40a1799a68e0bcd73f2fddf4cdc750d24c1035eb256eadc6e59c13a7784b22b09f4ef0c34b772ebe608f9306bf5fd7a463ce0f96ad0e3a2df6e1dfa8ac846ddf54b1b10dd9583724a96a0500d5aa6184052d553266d6b69b14bc76e82e15386d3b961323b326d75886fa61efe31244f5b79f83eb4ba8eb5d19d066e1844c11ba8ef225ad6817d6b560c0ef551fab8589366ecd74b93a944aa53becaf4c8e77b13e2da12fe5543c2680ad76291f08a146ed42e0273592bedd08e493121843f1f544c766017aaf581bd1645614edada2f90d4dfa5f80c1ce9e21efe901b8ab5687fad0c022b52e154abf2bb1d0c02e7cf934519c0d934ec995c79c244eb3e5462fa86dc7b13feb69abbba73610a70f69dac24e6e5ee98cc7376102f5f3b58240f13e0eef2ad0cbf1b33e828345d17d7940732886a20e05c00f2f400d2f45ab68778f3ec85246e0a2851e44fa77cb6079addf354a37512035643ec785bdc9a011e6d0788208c1e14c02aae32c3ff764f6455c8f8ac4e5017a5d5c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8475c42278f3ecfb53a8b19904c4cb40ab5eac50077bf85b8cc71f6faff06321110aa240f9a7e8d3e99b813f29c4bf35acc8caecff0873511c9bb9f87e0228a5ccb82601dcec8b8b99acf08683e70981af9f7f2ab570023156471d77d9e944f221bdff3e666f87dffabd079606a4fc139af85031e1de8664590340e39e2c117054c8b48b20763b7b5fca7b5fffa645f93d4a9d6f3336e229f9ddbaa4e1490235c0e7f516b2e995d5abf602803c9e7286fae0fdc7cbed07a69f5b1b11cec32062330fac3b85cc4b549450ee358b859a10b2e8a33d988e52ac6921d5503f95f47d4ca26d04b4d850235f78aef513258b627d27d47edd8374828a1dfc26e4f1c2009372110c729c01dd9a65464bb1ad4be056318a0c0beee9458962e727852374dcc27f437c6c550be2333d014767d1ba0aabaed99297a544ecdb27098cd2acec886ef4aaca14a030d07ee42dc0194c1f867b77aa8b7187358a5d185ebecb24097b00a136d39553cc508ca82dc088f359cd836497b3e87276437e132096b03db97e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "ab5bdea7d6018c803966227c8bf584a231fec444b6bc1e53fd3f240b30c7a3d84ff099899902ab9a11f1f2876dbebe6514f190838af546a249f3ce4353831a20effbe944b97b523c3857eec96785dd117ac188ffa41b7c8374ac37b03bd14afb828641b0c0bb2b47c1913ccaa5c1428258461ea57a72678e1ee41fb2ce9b5a1c3bcf3d44b8fed062de9a3600e940949b7478b452af12c97412cbf8f0bf1d95cb2bd4c3581d1ada8a0efdc2055e52a16ed7c2adc36e5f26d5367582b475a61bafd28d92c589cddcf99d3b94c64254a9ec0ea409fb5f480cd3a6e18728b68637b563467c48370286457012f92106278375b018a2cce2a4b274a4971725254049065198ff18e0c6a2f216a3df4accceb0077ba4b8d5492d7078d093e442b24588bdf9076d727b3a17f17172c8240294938b45ce0d695d637f11c8b9a4d71eefa0237828a6ff62d9b0c88fcd4d8a97f71b09df62274f51daad2036ae7765a03036ed637f3de571f4f8af7522e41acbe84d305f43d74f878365ba3fc0f2dd3fce2335"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "32329315f2d1bde7c6d3ff918ff3101084385adfc2216c0bbbb22b1e3dde65dafcf76864189d3ace3695e51a40ae844ac6e9fc72f1fbb04a047c58b0b6a86df0f2f73726eeb8ea2a428f1588a222bc95bd550083da397add4a6d37a14358f105e85d270b14fc3ed99c35e75ecb818889a065e9afba8918a8f0590d292b507fe36cc4f416e9168cda8ec687ae7cbe2018a585f4c9d76323656ff4d554744c516128eeca1eb6c77c5f566b1ad66665cfc81632cf47f76c2d366f3b5fa0818ccc39e1a95ae9a5a018e8b9defb060482a5e38b4037cf50d23bfbaae13f096491a811a633ce2aad8317376a087bc46f12154e2fd14b2a008698b0acd3485d326dfbafb1c36a1dbf5d7da8119f3f456a4c0db555aacd48905646ad6d65b64deda1b248e133f251ab7db6bc8449cdec4ccb5f45b1a3452e25c3a04f5881ad19c0c241e10f18ea4aa41e1856123e2694dd701edb7310e651b3d7d295bd193f800000931eaed32e4c4c52e339e939de6612ec6bd10d384ee228d2d14498fd1ee4ad3b46bb"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9f6c7acabb5676d40357d7f58dc188aa11da3b032e0fec24d1d377e9dc4aa71d52945873bd82a6b1540b07f6bfa3158a11beb46513446cfd8af28118e693a4f700ce677988221f2cb0f308e29b42feb8c5ce768e34a9ce889fe5429b6b1d9dd5cce537c311228bc524a983ec83d5326cf1141cceabec8170a8ef00d3e003a86962ac760d6de2f906499e60ddf6cdaa394ff2880c4cbd7d658e02c3babdc8c39707e4ab59ece61eebe3e6266d635e0d594e1cb114b699022149b2105157d20c0d4e289c8558348820250a03931033b2cafd400cf62c21a617b16e83cf9c4a79a1df59101eaa180d8b61e5ac2c387f190bc5d01c0766641c8e796afdddaea9a8f625a7eccef21cf8c9bbb391f13fcab5f253f598b880e0391c2e34a64d1aeb028fcd84a3158f692466cd953334db71f4512030534f31a21eb65b459969a00307e9b2ab828f6e4966fbcadec694a394a8b89f94ce1eedd3d2731fc01395d30794ac2abdb0b60dfd14a46b533727d137168fd5b42183cbcb79d38b9259b725fd2485"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6f4c5d8e23801e4dd6617c4670d2434af72844a997379dd7f877179bd7405bf407247e77a9b0e76956b0b3d61ac2592c7005fa85bf3cb53a231603070a83880c0202e6a2f5e4149ae05d5333f5daf142a8ee7b649cbc97d465b2354e68a192b1c63c51a1166feb428afb215d89e51bbb076eb0fb7f02a0bf512ef352561da2ea1a2265eae0dec4c7f2eeb232208965427c81c596cfc7f18ca9510bd34e83e5a51473e6e138b75368191d6b1b2b605430d9989e9ca4dcd2daa8f11e0ad05b20f3b0eae07795ef85385cb29df224769038f89599990d0ed75eb122e2cf6c0aa80f185c535bc328ae21e53376095ab9ef9f15ec663df2339fde30c480944026304d553b0a2f270f4ff999a0f39391a80a73c22644d53e1e6bb1820826f4aae6f126831b195c2d137b919b5d20d918b3fd3d85a83cca759850b27ca101460d1be3cd417dc16fff5912331118a4d514fa3634f67f72b31056cc65d8f6a11d1fe10618b88fc2754830eae79e12f4f302776137a772489e3488f37cbe0a1139848fd288"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "70f10afb809a64ab2407f0c3ddaa0f2f38f981b19536f3f5ac44a6fc85e5535e04795a16bb6c435528ad255402200b02f203bf3f539df42f0ce3cace96456728814df95772560057648867897603ddb96a92f3c7652ec24ba86af4fb7c1a8ddad03409e1bf982d01b63190661dddb932018cadba66a43cb5c4694233541c56d9d03e659e074fd6aaa18976856b8ca27342cdd3a516d587d5d46c9c845be535ad1a923c2242137d0f3dcc112190a807ca112c069fade7af53f17f2f74e2f11fda2b75f9a48250a4e9e8b34920fd20783b179399425b19e7ea99f395cd3bd7d37729a287d423623a33542100d13eb61d7f77439f4e3aed7265d7a08a7d9eb0477aaca23261e4d06d25ecf1219b87610e89af4c1b427f7a9432624dcc6f78454376d215a6fd8f6e5f1211a18334395ffa710c8730abd64de0daf686a45e979547c46f684fc130f8cd9c4ec6252408a87e29e38a8552a4a908ed86f3f83d42a9d7dba1574a2453dbf2613f8c9aa5b7fffd61f222c122e39d86bb01fce55acac1901c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "36343b89eabc3dcaa053b5be3ed7faa79c143ec18800be18ddd3747ecd557f09998203325f89d3badb3eed7fbc20823680d38eb44dc368abbe180474f494431c04d936d7b5886ab3aa2306c0b03750df05c4e7fcc2dbab79736e2ec9b0e27e277d130060abb4ade70cb924ab950e95ab1c2335578c5cc40dc429e397691542edfaa8f4d408918beb9b0cc0668b6f1cfd9692b32f63c9fa4d482beac2745d5777b6da28ed7665bbaca9999f65309ee46841a8e3998fcc6670edebabc4515a438375ba820380138aa7f2e32b8f74d29db86cb85dc2b556f4a307c02237f18fdc5634811653ec2a440a53f8647c495b76221c058268713191a9bdcebc148a60d2159f28d92f79dc5f3b5f0c09e62bcb68f7003bf71bea00d25c4d7777a28103ea43e92951d10be77ed7c73cbea573f7e46f924e4d12cf9df8faa53560153c8fea87365b90ad3f0e6a50b41612fd191c8abc3a5d8f98bf4006e1ae31907afda4b20d7632829bcac43c100ff3f10f0032e1bffd3b207eea2d6a87027577e5458ab81e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "750133d796053811558b21dbcae35e267b2fa467a9dee49755d45599a6774682e40e00cc46cbdd412e6233070dda3a59814d6238f474d04d9102301bc281816bdef246f80bd3ad06646cca4c9a662527385d3c473d03ec4d021db74c7a1ba6ecd1cac005d58163644b993aea62060a25470083006a6515ed45b1e54601b9e5914b8d5e3a630f29bd88036f5b708d2036e4ce7832a239699b2879b6089048e33c05d3672c0e5c573699264de531a0f6c2c703335fa32cab0003d25f9bb8e0fac2fed05a82c45fdcffdfa0c2be8e5501212007eecfcad720310a8ff44ab7dd52e69900344996ff0dbb7c39d2398769987402a7e1d9a6378721f5aad9faffecfc4fee8c4092207e849715c56ffdd5c42875d170467799e0f8a08ad5edbec4b939cda099d30293bb76086c5315de60e967267f3ec113f7fac4bfa9af68c4288c69d5b0073848aa722124a9f53654544923b5556eab31bc22ecb6cfd8b18e665fb345e8b5e48cb63ae37c7ab8125a1f3e5d6c4bdbdb9778d8e27f91883aac99a69a26"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4e9272dced0bf87a8a3b6ce118532d1ffba529ee783857ea0ca7510f4dead7406f10c48725092eb41561d067c1ddbe0c111ff24aebe1655edec615adc123839cd77c1a3de8baef7217911adece72b3a6b617c69e8c31464e2bc021ddd2dbdb99ad28042133a6a02df2be394d5004c6ca2d7520af46227171a5ec22870fc8a7dd8d6f4e137393261db00c57fae4fede6ddc7078f7c9fbc2235147da239979fff0dac3c5f0ad10fb3de6ad70e12ca6c3de49b8a36383649da69b62de49c967301cd36d439a6c1729bff6ea0e664a6fcc95898b190cee2492fc6535b7552b5f04d71b4be2dc0471dbeda5ddac313c9cd4e90109f04bb09515e54f6463450bcb6fe06a5cf80e7644f422cb83b123b94184c9d81fd0bd4357b60aa92bbf35a9a7251c515bdbd6016b81ed361837eb6021393daebe302c4c204ad3fe724b4f5b8e52f9590ea33e02ae1ec2863df83c33fb6b21ee051f489668adbccf04883d6aa972b77dcd42c03de0be2ec9e63a717d3713a2c7d31163da70bf53dd3ec342183e9696"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bee3e72ab46b5bb4cc6138dbef0aa19effb5067358d98252ff739aba22d21d7ada25aa395aedc0c29224ca5b88169072fa6d5da902130ce97f42072b86103e1b93313452fa6285c3f963689cf15c0aea60ebefa1058603b5c9f905d5849e496ab4036ee73e5ac612b364c84b34887cd0141ebc114e240eb8885b0ee82f31a9548fbcdb6faedc1c27e0fb1fb4037124133088d5edb6d34476e1bb93e6da177197b6463a0e1042581b965e9d0e7797c13cc841263b991af9af21f8ccd44f4ff161b6545296346ef54792dd5392d26b8bc2c5a9dcca41ccc6adaa1971cbbc5e676f0c6633ece739b57a24a6bc54fa75bd6c4f2d1e554d7d7e78a57e012f5a86121e6b11daef66a0004fd514e3b688770566f4f98db5d368f1e4ca9ae583c245e30e485d4b71cd3a624eb1157716d6532c866ccdb6c5ddf3e9a6e05952f7c2c6f37c50871b21258a2e9cb152bb877971aec6827fdfb4fcee828324ed2decada3692e3c4483dff53bbfa12b633544f04866b3c7c15f713786feec165502eb895382c6"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "02cfa2d1774246a4fa94a7f9142ac84270792fba20b09a47f0ddf702a41e671dda6690451937b0063ce2797c2146eb68d2e84c87211cd3f9e8d169579e88e522c98469ba814c5a0ee2f0f42386d44e07c8d447b77b04fe3799db3f2d7d20843027408a4f1f08a0eebdfec3c3ef81e8d9b4fec722a5782b2e2e920cb60b0cb8a28e7ab9b8c82ebf6dc25d439bdce586f4dbf41b01a2f777ddefb13fcd0e268aed975d5aa986cfff0403b0bc260bdbba4db2b51bf1f0dd88c54b0a7a6bcbf3ebc8840e751c6dbe405d6cbf94f12820c536700ba940a70a4ca8aea4c7690e33ab09c0d1fab7a962167e5a8fc51e4b07c82312b0c97e07d42bb2e2abdbb57442e9a8520b0085af7f3168077a842195a4e19c7fca15f2e7471caebfa80f949528d81b619632fb3345bb7bbccc825ae8bd20fe34474b70b7420fdc17317f711495040cbaf5ae21d7cb70b47a2997b794de3d9bf805d1dcb8104b50ea69429f3861e61b1a0dbeff7a03432f98a8d537a03b37ac38d9838a7c6a7ed0977f29f96b858ad0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5efc66fac14f6c109e9a2e219bd3852b28cfaca26f3c26fc8777959dfea55c738c5c086e819377f8f4baceb66b4980de412c63fd5a1e329d13a14ffcfeaed1d89047dab579e243b3fd6b85f87069997aa7d07f71ef40250ae307b280f0db1c30a4a7c2411ef723746eab7045f973277a174068bb8bbbe69c0773ae9977a7f20e971d405bfa5f0f975b5acc17237e7341f0ead535ba863c61c155377c47d4bca280c6312c0fdcd76f52eabbca08b442e0eb629a44a0169c6c63e5e1c52cf7e2c61dd29abb9142fa7c83439306c2c1f6cdc3257ad63d0a57ee0d5f41341acc7f452519353aed51d739ea9153bea1f6f029bc4eca33ae0511db90df1bcc780b3ceb6edf3213b0b2e20530d26bb6ba112aa6e1363da049d669266a956fa36e890464399fbc43baf7c8fd3d47ec6db5e1029bf6e603b8e1cf5ed9ddf6536bd8d6a7648af7fde533bd51cd8f9a6cc28779163947dbfecbd6f50917839b900e3fa37274d97a2049daede1525c145bfd1660d4577caad7888f5c84867c6fff30ee8356de"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a4e7378d2aba9bc6cebe5c8e5603fac9bce6e3c193c1675df95ab30904a149ac3f3d7a1312429cd63eec085f7392051a2bb883c0e078af0bdf29464bac2268a8139074ec53330722e1482b935fb57956214c7445d8a778686b624944bbeee7a608dd15ed277ba378f4e2dea04b33103e437f94404a09517f4327c80530a1f183e046756c166e526aeef53565cfe34122ec23312bfaed429369ccf08f52c2351e102f439751f26ebbd5423f9efb3da3d3da0edfcfee3b9607fd77dbbcd7546ca4df84905fdfafb469bcbd78d6cfe6e420993740b64e0846b5c0026990224cf3b5e1c325326376c5d6f3d1971365ff31498089482c7df06dd92f7952e0472bfd81a52b0fcb2058f5abdc70bd7d55e2d843821083bf6e8d13b3c11cb4fa420fc90721f226526ee677a8eff890b664e2a5aa5735db7e752b6c06218a1fac315d6f1cd6120a30fc46e8ac220a1bf2e6e4cea5f352ceca4ed4c5675ebfe68ab15da158a22fd044459a4aa9673a5fc078e7851170faf652c9791b665ebf62e16891b54a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2cb338f3b3e9ca09f101b5ff3169edc180c1ed936f2e4a5f6ee7befe1e005eaa450c1ef3e78739d142dde992cf73b2349a617208f6979220c85f7c5286c3126816e47cf0946a17de1fdd80657ce79254881079da225d3b10898b1e5eadd04489f486a14ad530fa6a444c19d875c0be51875303abf214bcc6fedb1e7e43a257a3375f0ff7ef64e5369b1ac071ef8a64336f5660ff9c5e8fb389a6029a8ff853d4a8e565ba17b0f7302d4eeb5416598421858ae2ab65c2411ac92db844bb430a745470f402b13c9575b171fe9e64f71d6ac40e6ac65c5ee08160864c89df2d9567c13dbd6ab1cc6a767892f0fbcbf2d734424875e9775c2020deb25ad8e93472e1ea1235bcd06301ac181bb20a700050e08548a5cc00234a44e42134591ed70dd4933f4d6c6dac7abad2e6da8417fe42945ced787495fbeb99f2d4648b9382d253e0806d988b1f3a64edbb28904092941c834b63243d583303f6081067d1fabc5afcb818ba8a2edc31890ec28c204eb767e749950c18be17950bbe9df4ffd2bb97"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "80fc40a92375cf58a2730a709f08395c7f7a7577ef00c7c4730781b806afd5f69cc0c990012c62ac76cd4f860ecbd8b6f96c4e9a7828595bcb56861cac5a0a1d39040d96637a8628431641115a1f298c144e3e2bdb3b43f8edbf943ca9b1378f256da835a560b35fabb3d0bdfed894643daca246a6e22cd6089bcfe033329a3d18f5a27194cb8c915ba5763b44e51e5380ec4096f7cf5296db6c7ed57ef8b8812edaa10d9f12adca6dd83bec5bab1561e174226896a46d104c134b3c17c876856d54eed489d64c2121d68e48cb1da6357d9ab3128e25f16b1809288c35ae38c901ed6bd1b80961853c1d4e9a60273cc39656078abb4ca9e8afa057df58a5fa851a4dfaacac3631e2065fa8e2e423b4692dfc96a73faa7c2af3d89cf1e98dcf3e69c35dcf38847fad526eb56706ff4f9edc068be609417e60d169ede36e4a9301cdb58a408bd12eb37457f05af1f96e431241354e181f92f1199d2bb45681caf56ddd13542994fab6bdc2027775564b782cfa2cc31d305e7e70692a96182a71aa"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4f7025ce36f71e0b1c0a4659ddd25396a83e4911287700bf27f72ee19f8990235af6d6f33f3b3d3f7d400370a914de2ff23af964e4eef9c8a1b15a63d38935698ff70b7c2d2d2d34cb8bc82133d70fc1fc3c19d9f47f0fe463393b60a61fc19d49f84385836278bffd710a7ae72005821718d42b2f195b6a3bb5b1b6862443a84d6a4ae04449b6bb6b4347fa14fbb4ed802cfba5dd00aba3e5e1fff2143db0acd4e50bb9951460b1e6ae5608ab642780706522e971aa350b13390df5aec8585c3b4c2bff9b64c5950357fa6c91f88e981882c52a8d93f156718af5c91c7009b3f57ffaf98d9e280ed51148d5b2d0b57495276fdd8a5fe0885ce37426760789e671b4cbf64e2e21b6fe4a1fd3f538675fbbffe51d8cce7b74c9bb9c25e9caa84b88161630a8afa49265d172e68ad42836f6b9b619fe32a1b84734ae58f09a0d8c8a5f3181a5130a503306bcc2535b0cb325c060afe57e29c7346a5489f9dee3206d8eea75e07514ca3ec547c816d88a4e5ce4b7e4a61b3488d2c13eaf62204766"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "23bbc7627ae0069673b6de161c79fc721fa169d7719400aaf7d60d53773649bbe5cbeb4ec3b553dbab1b0cfe63142d21ad3a46ee475b7b50ee617e6f58aeb6942b0793b94ea0dee9347ba233b05895b457d478449787cab04fd0c4b01e025088884272bf060a82405172d8da5e0b4e070c61af641d311885519215b0fbc4947097c765e87ee46a4a642bc44b7212bb8b64a2cffaec496ae139c248f6b00f203de256adb345be3f46c11bed0811bab43961e9d78646cf14be18b891552998782a413b6adf9829bc47926178ca118ae0722af0aaf6694d5aa64bf970d530f71e309319dc43f2077fc66afa48365d90061c0e1696ecd2ec29a15007bbb47278641b27e10a28b60e4e7405fbe5a05e5ffb8c0a52472ed51330f169440dd10d828f1830a23dade9fef0c4a2373eae849977e1cd15054e4ff004b9daf6ce8fe8010f9102d09bb4b18ed4e30cc9c3dae2629650e00f139eb433138fb49e2a896dea8a13253282d8e42c1dc42d490b719373b3c723b8c991566474257e96fcd0027808a5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "85825bd4521c433e916152fc89c06d11ca2de44afe406108ba3cf299ca02d0c7165e41ffdac6279d0fe5b915f0aab62de6277e381fb8eda73a89e880fe546fa425f6698b89e47d457a349ac8cf0c38f255981b902f6e22ab9d90ecba5682da95b72ea32b243082d564466abb5e9abe6a66c5cb9f7977eb3b827a1b98af236340991db4b6fb957c4b055c23e13766061aae849a2a8edcd3ba1521f1201cec81c6ad2cc7c20123f8e1c13d1431e6dfcd3481b085e32ee4d935311f5341e3a0c594c709523bfbe9b4a0374967ba42390e9b9a1cda573fa6008b9a0a96250e9ccea74e5bbb019f1b870268a48df9d39b422a9064d923cbed7063d8423b020f07c57e4e33122705b523c845bbbf764e5d505d42940194699143188c7e694059416070f4da019eed7663af0f007d79433a091fab6cef6bd0f3d7021ae7e82ff956b37f9c88c2c82e57fd834abadd012286f1af916819bc9e91085eedcbda6b5cc44feb83018688da4b97c9dcdc1700d015b71597e96c0d6951f04873852a0dc3397f88"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8204c6b2d4027f7d93ff89c36eadeda03a5b5464deb495e5bd4fe066c0d9778042b8fa130396c1652949f0fd577ca23f988dadc525a820cf82756992ff81c4a7562ac1017ea01f8f9cd0cfc787dca972f27103a4d92bf215eab991e6970e409d431e6bc2be4f0586f5b98b4ba708d9761905aab265aacb9d495469b1863f5938549175f30b30561c998e081c41b039918a6fab4eb2519e6cac910cc4d931c6c81e899655f06c8a26f7b9433992ff923f27d982c1bfd0dcf62e5ca4c3e035961aacb99f831bc0e42a668c01256cb830b7aba0f22314b548c0b85d84c61c9b4a8ef331bd7c98010c9a65bdb7bc4f0f09b87d0c8b8a1bd96b6bc2035b43348dea48f1f4a4ed6e393040500a12d7a2ce1e08ee8934218630ecedbf2fc7fb5c6748ee3118421967e8685488fba058f312ae41f7d386905646ee334e294662a97ce70486b450a64dbf8ad7c1ba50f0c56295cb2dbaad3833d3922566802c80175526e24b188e18574292e225bb958305dc2749ddd4b46685925c0ae9deab2671e1e799"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6593928f8e0a2a486c9af0b6af6ad78865c215f64ba3b72bf3a103788a352d216fe5a2a3382220f037fc2d8a2d25b42f48cda3337cc831e4746266121181bce964abbc7eb6378b8c59b9ff59de336989d58003534458a47cf18fcb0d0397333045f0f0d826445b62487217df62131ac0d84a38a02ab39eb7fb1451c7ab10f47d7e62c06d0d1b8ad35268ce58573432b1f4a9515bbc9bca4428bba426a3ae8ef8695bae7a2a3629177fe00edafad675811c90959ccd7800e4ca1e22b16910170b9d697b25af45b9d2febbec6b57d550b7854b425fece239155f068c6873e314ed3c97a46f7a61c8b82af22191feda559b7e93483350652354f005a78dc62bea279a888b4a6eff708eeb4d93ffa0f5c6381a9f6570746387f0e116376e4625a01ba34d68d39b6b793565dddd357493e8d45c8e676026e93b26abcec1b4ebf467f3f069dbddd63f30b6be3b93525618ce903463ae5cd091c39263327b40b76e4be0403f6686b0ae74213a5208bfffc360d3de49253b85585b181133e55bb38aac6a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c138f33d241e4e88846f66b4c8f6d27c89c08297b8acb8e23f6026b4857f1bba758f5c15f4266b8d66aec30a5a46b32839f8863b3e2a909ff37c97322ca4a9eaafb2124171b52dfd63465e147b8e32c99cee9a60672b70163e747a238402477dce31497b2339f638d5907e43e3b794ed8f1521490957a57cb9bc82c0b066c20c826237c205bd47d1e6ba57eb5e37364bb5fdcfa8155c8015ca06562f7f0c9882cbfcbfefbd2f5ccfd2f78c684a9bd76c659bcef3de3622995ba63913120be5e0ab72d16d11cc1ddbf23d28abbb8a5831bd0f00a8286122a117d55578e58e0da5b7dbfb48aad8ebdac7e8615ccb9c21a1d877dc84f1d89aabb0976f59d038b9657c636b762801f214953b0d0cd55ba1bedb4701c5e2c3872f364585bd675927a56a3a0fa0b962a7170f925ee921c9fbb9d0d8a19057337ae74940cb86fd3103b232314385cbb59011506f94c14d18850f13556cd7f03cafdf9229030963f325b15c701c60668e6a167f9b3256bca99e05f4f5c2c3dbff30f3ecd36d79bd0db54f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8c174bf6650026302423faa9b90c71e66c2e54e65ef77da93795f04dc8fe0cc05f992cf00c41486268252f52d17a4b5eeac356866162c031e55d3ba7d0ccce982fb42457aaa2a92aea50f9cede6c19fc0e1052a4dd85d8039bc3f96dc19d8f2faef835267b6d235c25feaef590c5035c2dcce1ceb6172b693a63d3ae5815f5972bba516a096bf45e006dcda300806eba09ebe7629a939800b7eba88e7f82467d4d65889ab65f8fd37ddb27e62bf4738748d9e429eeeb41bf2a4573baff6890cbec660fa0e1e0c38cfb8a1e086c432562fb14b28c74495689e356ebac1a701deb7328ea31d30227aa9ace477cf76ccc375519995788f90b41bc7f6fd4af812ddde49be65a2c7f9fa1108376701099ce79d640ca5ddf1d34634513a76eac0b3ae02d06a2195263d79e9dd6edfe9b5bc24819fd5ade71b1d1afc3f5302156b97bc3c4fd3386f0a9c00c449eb05b1d742c75f02ff4529ff1a0c0b34ce4cb91a5f8b700d9c38ce6402bbefbbbb3e158aae035074a6e0c91484ef8b65590e6870be30c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "39681cfed3cb5ce9fe0bf719a1e92aa3af1302f6b6d0c93cb22795e0ac581317796a79ffe29b5f88fd38b572cffd06fbd2426372efc6f2ec01b2267f8c225cb6c6d911c87e7dd756ca3828383eb5bd9c56d74261e62550c88e39e7642604529ba45c81c6adbbd4104788df8e00f04239e8d4c0b43ad15b497ec04d7cad30dc0082d586b1d88d121e5e5ec1396b207410a3bebbc065ea25b97ecad9bcb9594b749a6fa8f33dc11a64c48494201ea0efb73a203cf10ec68dc052bcb68d336e31535bb0f667001dc2da63358e37bd421fc88a3009c698230c057983968d61c31462363bd93c200ce4f5add74f20d877564e88c20982713da42a1b279caa845b486b090d5fe6c154800feb14e67498cf6d3176a707b2b1c82fc6773cf65befd64c9446a7b62482777b1c77c8dfc644798a3b21533c63e0fbd39e07b127b051ea2cd85b42c0592c27bd988781ef3a405dad25e9659d9ba5cf1b3c3110b59117c322491d55a9c93c8a45635b5b0d378addd082453a6d190b8fa0a89a59867d85dd4d07"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7206322956aec277538b8bf09edf980c88df3eb0dc0689f834581b94f801883b384ac4fc218bad411d44e49c03a6d0ab123a19a4f0c7a8e72092acaf5162b0e30a2927f53543b31fca0b0b3c1abe56268f442e6f856018622584205dd898e2f98766b0def32894a508cf7c824ecc26750082b80408cf7a3fb752172afd53afd6ffb1f0b96b9d0c705574eb0f1dc1f291ad5af8c5d1f539757e19e19ad600013bfd2d1fc8b668d0e56a138381389a7fbeee5a7ac363fb4ad95006e3b3e16a3b9abd450aa3f16db19facca9f45cfea2fd52034e7a1835f6e10d40be16e44a0ce5d798a8bb9451488f78edcd203455fa6dc1253505fa83140d610eab8cac65fdb2c669667a75bded33bbd4ded3b0691de5e30c0eed12e01e9c78e56fdfa485481fe671fed3cf558730acb382f24c1810c674e5459ffe449eb82840bde95fd2f23b8438b844ca019882778edcb7d5b6f4d2ba16c5ab439556accadd3029173604e5ba40373d491779a049d0106dec560e084ca942eb6293bd3d88a6b4627332a615f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2130fc5f94a8a359b90ba546795e788328f09c45903823452fd44c5a0703033c7ceaa0bd956c20b12eccc052c2f535400e0f2d0e90aa0fd1066e400d6e81ee19fc2b7827b48537129b54938d324680966cb39850f755b71d967b50fd7d699ce3fe956a150c17088a4d29740905d4d1a6b5e013c4450302bb3c125e90748c3eca09e39d7c6e1da6d65ad02328865e2c0efc0eda5de61153ae757b33965a95da80e23f531286a3288fd61694298e68dd21dac3816aa0b80c08aa57f16cc24c641164c67bd98b2c5a895926e1025d3d699ab7cb9e4f0b43e31f68bbe2fbd3655a705b28d4266807e236c4fecac9ea470dc9aa55690e428a1b353696314e5c62d9e5895ede07b7c584f65d63935865211fbdd78cd7b0090bfc169dd000342d14b068c6adb65068cf708c4e3c3be72302bbff056087fed642480b9bf2064fb3f0f0356b7875025a4641fe5af22b98432dd708872412144cc9706dea53d9d8f96ee55ed821715124bc824b408092e5eec66eb574f069be3b5d88a8f152ab73fd160b4d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "575ef9ef6335f748555a176d35ef3edd9428abcc6c00850723b926fd84c0937361b662320866f555f6e1062e1844aed72754da4f50b1c960b8522ac932cb263c40d301d232dcda65ced16d0e8272c2a23d2130db57cc2d39b0b1fa03ba4c7fbf03c6dcce9b474583538f48075793c26df725bb88113738e674f7fb4490ca61e56b350650e8039beb39a97b6b55b5693cb7f4106a26ceba9322ff889b0fccb2e35b8309a25bd91bf0b8f5c2459cf81bd9e8c2ded35a9e87ef701e26d82207348624aa596e4e1847b111c518d881da598e1ab6e635af91c802ab35f5cda75833217517e84159bbed67bba55f51d62dac8d14c2f9e1a8d1b1649e367ebe7611af0331424ed6784a5497f80ba4617a580270a69cb2ce8b0f63a73d5ab34c8d7e3fa966f465788efe41f57a99914ebd708922d570d1334a81bd6812882f0a3b3f41f88a25bd48de158c4da84c784235593c00280cce586b5d388e4ccf92ffcbbf69dccc8171a7b4bbc8d68d1f00d8628b725f08c194fa18f064ecd2f3c1bfea173cd1"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a947601ade4bdd5adbb13779e2d0893eef5de17b6f217deaa8e005fcb9a5863e1e84d1258889dbda768ec247848e7c4c8bccd8fa10a322d05fad461ead9b51180070e5b263c5ca4bf471fe2711ca4d34312cc3741148ce2a0ae9ee7735984533606aee498481281cfc398f852ed82020e0c9f5036b38b31f9812f9bfee954411d7db1653c19194710b42d726ea0844022a2e0b5eda0bc205dd94e271883bf91458bcacd093fc40546bb71ab2ef72073e278d46baad57f744b4b31b100288ad6e25fe8a582263428f83b92646579d18438eadd89e59baa4de8da0d91fae6c3667be486fb7bd5891808930ed3c0f6b4d7a6b5e8898215ab479769f040380ed6636751dd19ba27c8284bc8661d7ab86c5242f6b012c48491966925c3f780b35a0286e1b389bfc134a60969d3345b4ce1d0bc23885fbb3883da50d1b470e1bca3e7df62e5872d7855072be216faa971684d632135858303c6de156dc89be01548ed69967b3265d208a62f5887c46e3b395847f8177debf3c572ef212dbabb8573799"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c2912d0f4de569d7db9cc1a407a01874ab8e0bba81f38c370ba55920f64b41c21e6a3b67e5e0271f8d9400374f11396388966e2434aa0ebd4723042c92a876b635b8cfdab85dd25fba5f88236fff2f7caf23602c479c95b5ea6cd3e4f653cb3639e75ac1cb39d268a035e744453ce706caf3f53eafd89ec676baf74f2e6c9cf8ea4c288ddb1198f15a77ce07e7335671168eb1cbd8c607087dbb17b263c9ef83e650ce9a48ef2fb5fd37a13aab9e8239bae823c048cff16a7e1897f5f7e06cd685a829a85859695fe6956179cacdce7181d045419e69903f987b35acdad97a7dd2e7713060c67b8f447a02afc218484cb1948071eb64e77cc4e48d0bfc635340cedda460a1201b3eddec7ae5a008aada21bed3060fb17c8028eb2bb767d1d4c948bb5ff9e9a2192256e59ce48241f5dce29dde5ab2de0ba8240a992239b7a2a546ec66ef7ae549c8a15fca6a70cc1474c90945795e876d609d5bbed72b8f001673fd53b9540be4d187a484ed33506464f402160bb1f18a3dcdd47582cc74488"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "357ed432befdd0d673605a705dad0d8d2f100da229e979b1ffac404596d777269d9469dc1b9a4a389015faeb44639d2962a635c3aba4ecd7f38870980e87b2af9c7afcddf2fd379160cd415f261215a5d46ce5c0c9512f543a8b1ed961d2a75415c9f32db7892f1188bba23c6d5f2fb40aaf4fbb003ae6edb74cd0844f7461b3ee029029595b6b8d299e392d4763d3f6b31b222bac5777f87bf9e0beba302ee87da8be3dc5a0434b8482c165087d60532c52c811fe6389c7c2728cba5912d26d8089635fb01cb8d78aa5cb41cd274309d97cc10dc2a43461cf951647b110a65bf47b8c137a8363455155332287867e4c0765ce691cbb750e5e141aa6fe61fcf4e4b707420238e05d955e5dce215168b4d1742dff70ee87d4e24bc0fd9b73835d8cb359a28040935b4c64907a7623d11118e2997fb2282cfc73b2fa27d6e58ba9f5b317f35a14363c78f82466d7c9cfb8b07210289817cef53ad672f10892b0458f0004b68e74796bcd98e51f2e2635d494c615f6f087a293ea4d225b3cf4b0d6"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5c87e321dbed16d59c49867ca35cbeed697be4f279027879604f1686dfe246dead0694eec5b2f516702b36702d7b11297075b489d9087bcbc0eb1fe5e756b5824a13d06bcf90d298592ddb6e13ef362ae9eecf0c36380159ec511abf3d071ca89b05a56d709c3350de5be1926007ab5830098cf61e677bb4c9d2b79ddf11d9115905bd862b4cd708a069c79cd276b73aefa05f920ffd6a8fb778131ffe4c8a5ca2d81256d43f60e123564bebf9bf14d04cb6d3109865f6f44b21a8896c294c50f62ece38798ebed8276ea7e40e1d1fac611cb511295c03199491af3e0c3d8baccd4d30b2c9d4d47067073f074f29c079f239871dd62e16f53352914d89cd4c126d0e38370f42a902f007fca4c1557b2d6b420936d1beb484c28e392b4502bac5cc5441cbb59daa3bbde3644836682a45ebf4d683f11bd12082b4e46610847cbc42eda82b80a20c4d847963fbddf016232a6c7bf12409108eb395f66c6335fcb6d1b15f54f825f15c7b2cdd2afcb797c129140626e32c8031caaa007acdbec381"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5e5a6bc0a9b6f5beb342a99156da240d4ada680d83939e62a8f9d5fc19649e9c381ced323c26e642d034b67c9b01f2378ba0c17a853d9c2d73d087ff3b011959f02c2fdfc880d5c82179da86277fbc23a84ebd397fe22f775214ffb8d38359fa141758ff4b84836541dfc5c4e19337147935cdbc7dcf52c91f647ff6e7ceb82f1601e4eef9b2f799b57d0c1e3bffb63bdd6467b9e385db30f56b46ac06f03cfec3cf6805a0539029080b3b95f7efbbb3728d2cac0b98bc61bee10b4a890b818fb0989083ad828f87fb79813199c9de7af666291d153406b8d09bba99ec7675cb93ccbdc2a62b3e89a6b01ff66fd69ed667515f46388dc57da04c022f12ceb2093f755e32281ec105011ce7179243f5c399c219192be4667826d009fb38c7cb2f212d8ca046c00deab4dd9c3c48d4935a7736a835c2a4aec58a240cc66b50df20f21f4987641d5c6ba78799eb792c7973cb01e963c2865a76c1121bbc34c9ae40e55694f56b196429fbe0b89628b3a08ac7289a55b365e1402fb61ab96410fed2"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b69fe03530859d30589af21cb06ef78702dd9778aeae7062204740b36b79257951bd30e4aff739dc8118a5a97961b68304ab277fbb0e0abdd7bd53b7782812ed2bcd26fd60521bfc17e543ecbd485f9b7da6da75fa558ced68cb49d819561339ddd271d2f484694d83ffbb707e731fc9972ff1c132ff648451ecf6fa2525c3ab696a635c3df648de67344f8e6eafda31d94dc32aff88537374b0562d887f437f59da19e18464bd06659785cb99f4f979be6e59b0a3a0a336019af8d324fb3889c40aff31810fe8c6f5f3d61b79238ecf5a62505cab45c18f8e0f52f18a67085b8dadfb1076de0c48631f3d200abf42c07581b3e6c670d71da5f407c7e3e31a7d46209f95a2f14aa8c595bce7e6a371405ab886874ce8740259dcff6377b73634eab9f50e83ce6629faf96c470bcac6cedbf991ca7eaf15c95167cf086303b43a88c56da11983584fdff05f6fafb3343ad4e32c534a9ca4b59f79e80f2ad191855703454f1353989efd6c075627408b61cd7c4b804c8815911c3a6d2976cf35c0"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "589f370ab31921a95b6bf0220d0bda22ded0719e0979e42f205b2ef3480bca5f09a75123350edb164d1144136cf15c0ced65f2be5356b7f74b8c0595a4b14338c83e501aaaf9192fd80b987d5cf6a0920a96ec8c535edf5c114daacc7275cb6e6d1a224a43aef54978c78a5c91374ab5f60e089d8e80e540134c4e7ca936bdacc5a67e21c91af79ff05fecea9c07e8926f8d1a82478f4da3facf8f7f83e27f0907abb4ab1b82ba451a39837d508b2c1402c64e0455c4fb8b4f97905f2e168bf5eb0f1ac62d205db2f0739130908b05c6f2fbe853df8ff40aedce176114fc1787bdc45cc2426f7db44716b604623a856e1907fcd788d17073abfd3b7d68f80747785d896328158e5c597b03e312f0890968d482fa8cba3ba0dffdf05a71f872410db469d43c9d7bb9e4429e57e56efd9ce3263eb0d86e032480c3101be930f1d313eb605a694b6744395d1b9fc21cb5e7dda9ce05a87dac83d7b8ac5291ac987dcfba1b1b5d237cbdfb65b573db9cb4281469b1cd267c40c867750a1cd5c74ec6"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9398d3106cb77d329abf72abdea2bc68e64a35faaef9e32ba9612e43322f6252bbca89915cd5e529e8eb976ce97e0f3e620cf3e8ee84d92fea7882d90ce02e24bd7f3997ca7bc2d2d615a183a5ef4777376668068f6cee91e72d6a5d714188c1e02196fe6cdc65681c07e1c92c55c2bc56caa074953612db3d6a401d5754e32e79c6b773e0404105dc19a125f41d819623854467e5192c537f9c6bbefa0b7fad645955ab95ce487f1337095647ab728fbe1ba21cc6164dd41c7707def39713a09e945cb67882d0f60231d190e6b872d81b80caa1b36fccab7bf8bf4e7c88a05c5b41933dafcf3d44e60bebaaf8fc7f63f88b970c2a66454bdafe41760f1395eea1e9c43012f1ba6dced5695e2229c2e1a8e77fb8339920029a8b9b389ab32028acba61a4763421bc705a0e4e674e6ecae2f92f65d14144731badcccf6dfd2b545ada88721f2357e3c224ba12e420b82eb9e455c833031938135fa71d2607e204e3fa78e6bbbfcb3f633bedbf076509e1bab749c6853faea658e39652b8cecaf8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b089a7ba334bec3cd96ec5c28cc8179dc54933a443ceb64b087a55363d0553da24b37647820f3ce8b530c3b1601f7b1976c2cfbf5b4ec2797896c52264474feb1711c3efdd883fbaf35e5f3f22ec02ae5aea2625fcee030bbb3eb08cd423457b8f92125224a7ca0fe4fa10748769ea6060b5085722efd14399c55b3197668b1b2282476b845f4c1dad4dc94c265e40cba7ff2fe8bce5c5b4e51b274d49654bb087e3abef3f45879b28765e666b7be4136d0cee5b3d2c859056e55b1846fb3199bf7dc209e603fc2c5c5420756f5298490a7e2747f283b44564d7dd1b0829ff74b894517aec399ae18e20a0f13ac96578477513a61611e25a024f8344ff83626f68c62a16a15dbfeddc060c2db00a024bc3c02d62bbc614ecce1118d88853feeee755f9e28c2c943daf7e237e524bef4f86ac761a5d9eeea47f05a9a16cdae78a59acca4729e7720db6396563cf3ab9456058fac2aa05e7c5ae484a6a1e8d9b5461046d944d8d34b42b9bf35f068994cef3b477de9685b9365cbc7b4facccf55a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4a8db880aec3d9cf1e3b778b4f1616e1b16ab80ad3410eb847f4319d35b5ed5b63ea0f96260434e5281f6242807f1e776a9a5f6dffbd65c8de10b8ba7addd44289e30b46ff327f7db6c34b09250c22a1ff96044942bb029dcb2ad0022117aeec3c0fe89421e9a873d049e3f1f5884f3f1056974f2df6351960fa5090aedf544bcef4d59dedd3ea170c6bddf6bd5558d8d2ba5212fae3138406a112d0261128284c05178dbed5a25b589d3f1bf90e28ba9ce363f53605016248a7cce838f7ca2f20fe43298637de5327a9c67eb0aa10e6e92c0fe3f55fb299caf302ba1e87c1a3c50142a27947028f60b9baa272f662f443d78ae446f1aadbba4099496c8ed49d9b097d67ba2babe41b62f0feb8a11261f5c4bc86cd9a55baf5b83154116c1f344cb71f9d2d7ff6a8072ff5a9ba0d6e1817a798693be738f9c9b0563e40d7c8737f0f38c73229d00b57be895a75e2c1e5708d39d4a9447de6412be8d5983f5c1bec5a67f941e844c2ab8da51628edd6a03a8d2d9f5bce86a441b5981f7e6c0946"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8b486ca94f09579887824c7f06ec99401ffea41b486925a3cf7ee6eb4dff0ff479dccacefecbbdc30d8d68d5acf1be60b5d44fd2bc530c743d401a697e569af88464ffb00c3ff9efd626361400e9607b5dda4e58b36f60105cc8da80a22674114e869336d07ff22311e9516c019aaafa954c4396b9d46e86ddbcaaff1e792cf42cc5b0fcf6f36d70e311031dd9678ce5eb9d573fc70dafd7af5a8650b3c20411b404d8060527d916d095e3a482d314f797954e124158ead1ebfe184e2d8ca590e0ca58d8debdece0694c3a06fdb3542e5adfd4dbcb59e8619c9af8e229c064376b415bd7998ffe03fabb7953118c320ff320b094be3c62af84740a18eaac28e70937e64dfe164f77882f779150b53cf8611dbf743b588cf1a793b3c1cfa2683582677582f666b1e993eb22e29fb59289b0012a69402cc2fd6807f8979ee543d24bc28006a13317260e99856ddabe7c4568f3fca7362a3ff3fa8b9a8d091674e33369157520cbfc93e1a2025aa9bb6babf94518afa5abe19466a92d45e73eaf7d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "315f909380797c58724f05150a19becb372342fc5fb8f0073633808be07fa49be3cccd3892417c925674707c1e36e7188d5f1313eadf99a9907d6b0ba2093ddaa28c3e030d64448d935e2a56b7d989475a7a7e577f2329c6e8e2b2ece2a553679ec90a15089b494028c914d883c460eacaee1eac472f000076a4642136ffd2558c5b7033d71cee3a592899fcdaa05ec41de962f19060a32ec686b34f85b105a413f3baa819bc6cdea0f00fdd07900a8b041fde463d7e44cc6c45c48f7a1974e76e0fd67eb495b6448d739fe091a99eaa79f8436839daf485085253ced9ae1d5ea2dd5135fb5caa44d51d728c4e70479c6f0c239fa585fa557e08062edd07141754543c5af6e554afe5b54e7be52d886c83c7ce6ca9f3fcb3e8329816cc6c0d046bb1daeafb271ad6ed3da795a1b8fbaa3a056d407aedafb457045b6e067582be605a7abcd4643bdc2fa492df1e0fd43cc3e8cbac05ae240392ea02db489e6a5561895dfd14f47cb5ec6ac594427642eac91cafec05182f3415dbdfd12a348c3d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "33e76286146ec82e95494f798a413f2569722f1dfdbba39e7daca5d654fd9bed5b25272fd3083d493ccb228b9429f672f5f6aecaccc3b6b66e6cfe2748c55c772c7becd12844369fa7283a95aaefc7b7e6b444ef9ea0151655bbd358ba6a42a4b2b9f9c8ee8dd805724bd8fa4d29e322d56e997ee1dced90e10b80a4e2d007985214be77a1807935b75a2df81b9c87b177515bce12722b1ed2ba8295df7342a707fc02f4ac1b17b9413a1f61015c4ba998ae75fda119f20aac84e921bc5d2232f7bc9c6eb29d8de3c57f4bd62cf73fc20fb6759db4f9c47988155bf73d4102bd78b09cb88905dd0be0b8e613f076cab8cf89711670a1ccac6c1b9fd775b05ea6bbe25ff038bda5fe828b561d7be73d68d881fa7b2c3c3cc513da9e19105cc99a02fb3791becf89e7419d2f430713de41ba3c439e6fbd4531aa0949e1fe8f3e910183e75b706083ad11cf3aca16bcf8dfc606ce28c2466dcc111312f3578bd41af4e190436f5c382cc14728c7b7e3f836662acbf7286e621dc5e121d5f5bf8af7"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c7d25a7c86329b2dee76f6972d27481bd4eadfe1c901371d27406bcdda5c447d35b5b4cde6eff94fd5bf2e83ef8f1bab37bbf04307dad6d38b96a2ff6464970673b0c05c04c1c07e0e28d1fa228510d9b2bc9f5b4461330e348ff61a1eb533df887c6b3719c85d3ed4d75f36b85ee8540048600f4b4b70fef885e90c4e3c8d924cc0a53c44047cba805d15bf88366a50d8b60d5dfaae09e20e5efb186ed49f005011bdaaecfd97074a8cbcf87e3c810d9e698eb2a6f8b77e3868377af16ce42496a8f19b9ef8809dc35364d35d614f1309a3765e3da35b06ebefd522b688b86337a9f578e69a2640cea2ebb5634665ed7fcc7faf124ae7ac70c298e0b3493abd22ecddfe23e595355d5deb305ca5040246bc3aa450faa3a5bb2cd2eafa2433e4a40d1d602422c8d41f02d5a3a7d4908190e065fa5b18f0160298a52d7eaa828440bec7eb234b2c506172e46068823f6084058e511a8fb59fb722577005552346c04f85c841487285b6b2a469e68a374005d8404aaedb57d3c962c186ee7c27a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4ef8d630c4ba8a424ae7dbc197dc7cab463ff00f93fb6db064d9987f224f2a589fdbc40e7d3c9043f1cbaafb47475cc9dcffd85a41a0b50614a206c5720d1151229d1d988dd6b8f56cc538b8cf0d55d1dc7003f51b87dffc178b3a63160b759c88e829afa2dfcda4b4cdc9e228a7a81f301e2edbb10da5bbd8ae9dc93ae8eb98d47e760012d990ef53ffbfbddcb8a7633b3cdd8695a75ca6b196f9e2709ae9b30b4f7b606eaba508bfe8f46de14dee5c0d663d01718ddd053dbe204475d5c1dac048f6d628019c8b4126003e4364e90121aa0d9472149590537e35858e9bcecadb9a1f2504ec78ea8d09772c992a7a12e31a8850510ca726ea3c1231f778b51d8818b8694be37f4656bd6f3896f6c19f5e9aef74f55d6b44071bdf1ed9dbe9b26e0b124f28db5d32dc877fbdc63d1b51f62997b83877e46785051df7cf4230c82b1007251cd4f3ccdf204103f99b27c5cd48b3ed529702d89e78cdca05cf52d0d99b99c9e9f479c537a578e47194c9912e7df890f15ec671f7ebb6d304d3e834"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8c1a2b91e9d9fbe87865fc4e6b478290d1e4b189866912508402aa311b953f7d4340fdcafe8f78d76c4a3d6fdd7a387fb38cc507ba6bf383743c8f6aa404d97007d60911622a8b96971cb3956a1be3f3c5e49501048cff335130c9184b78e3913d47ba8a69ce8b457910c69369a1b4ee05ccbb0bb17070efdccb94ea8ffa4f683356b1656485f73b19f7b6d1669b55bc28bbc37b7b0eaf88cacc8c019aad99778c032858ce1da532ce2b039294c8ed0660d20b6bf2019bb864e43623d600b83a1fe09ec5d7a6c434ff42fb3f2c08eda52c1ea033dd757db02159188f1b6383f93e1ccddc027bcaf77ed85303fa86644b2164bf99ebb394e0d25298b28e98da79303621d0b188bb2dc65aa19cd14ddbe0edc1b288fb46daac7db10d49bbafe28acb9e1188331978562fba048badc2f72b942d54c23cddb895250dd590df62f4cd184df7ed6ee88ee82b01eceadc939d822c176cd16f21b9cee6efe6cc4cd7b3b62fcefc83cf4a546c69a81668622e51a11a5b728b7689f4e16692e5d2c7e5b70d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b42bcbbd1403e77665fd47c2199d5d962ec7b224c00a30367d482f3f5beda989f72ba20822a46f5c28e9b5524de1ed6f3efb390a4c0fc222047f3a238a1b53ce6c4f2debf4fb4d92a8e1ede0895c39545c7a3fe07148c8c5944ba76a57315fc814f0c2a08d8627af126c467f281643d648128183379e90f99e97bbdb0acf2ed03f4ed38c61df3ced83a195b92ae786f2a81ed2bd6d1f33a7b1233c5ab13380621950fb27fbcaf63ecdc703bed0b1a58b1d36f84914be476e857a861bad98d35b248fba6afe10e410b93435e5854530f07d5d0c375fa6ee5cb8b306c2e40ce5eeadc16ba8fe40d7bbf31ff9ae2f70b458a8db46f4faf6373ee3cb0e5398b5db53b65bc8b0e4b336dd22de54c7e8e3b09eda2d33bbe53daf8626e63d16808427359cfc8076f07259772f00cfed32a6c1466b1fa1847bd9e7bbcd68b6ca9e8ea8b577985bd107bf1752353390656784f92003d43fb585ef2a4137c7f83cdad4bf3fe1eeed2cf76c79c0bf2cc322950f6ff0a98a3c68f83d7a9dff5d87420295c18c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8a8634d606e5c507f60bc6f932db58af00b8b057132eb1148b278ad00be6e595893982b2f248a3b098dc58dc751bf42094ac236874bcb4b40f95e56f07f1267e559d2bdcf316af97dbb6c9b2356fd7eccf47698190dbe3a116a24ed7a09eb2d51314c8272127f9a5960158ad8c771489aac374b9ed43cc4d85737b808f49fbfaba2fcfe044a526fa067401bf6c4e8b3d89a527dd2340983ec0fe0301a00857726ba5144b8fe1bb6d995c82455b04ddb6dca1c02e1e3cf0086f95e6d51420891231f5422bd16cc84f41705451d5dac7725029e9a4e4a1d1a7d0dec7126e1bdba68dc32fcf5a2ba9d2893d2732847b42659c68da741c3eba87bfc6f127edfaa1ec5c05ffab1ea2d9f412600f0016540f07387b4146c1774a9a0230c23b1ecc8c14ddff0ac8b12bf47b64fe9c7c3c2bc0ae59d1c22d1e1790d88edb1c6d31d90c7996dccca9b91e3da10cf185cd36a35267acd92e13909cae9ae19440f142fb270496396b983c79963a07013a3bf089fad02334c1f76bea4a8dd8578db9174b22d0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4efcc5b2b023e2347dd71bd948cb661534e1bfd77fa55e768b9ec3edf20709786ce113b6c9026448e97808d098d33590488028c098b0d7f5719dc39c2cca636d9cf888230a803c75c1a9a4a2c884ebf19d7bbbe21e62f0b3ea8dba5706c98027b3fdc0a6429578fc2ed02625f9bb9c9d3f193ba98b78c510fe7e7beb42513e76d84b72b49abce43d33e23aa25d8038bdadbc3b115dae29d4b4e4616108c9c1727f14bbaee73ca32f8bf4511cf45959c2ad217bceb544f9ad7fc69344a6305680723dc1f18de7d81f2fe49c2d058f9de6b76dd8ae7d94dbb0fa0a54d253d51ad4b7ceb939a239eedd455e9c6645988530ba59fa7311b3ab26eba68d5cca744f57a5cad7fea64a6fd323e93e92cfcf4504b4174f3fe7fa93d68abd98b1128ca909a03fbe82bfbec0dc4017675d3fb54a39ded1e00f93fff69b9374c280bf124ae1a0928ec39bc2a650c345a9192221c172f2a3d22301db276e32e78dcf75dbb3569f9ca45b9c5db35d766910bb8d644a1a3ef02609e42a586e2c9096fdf3fa9d73"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "70e063e00143ae6836b44a35a084218baea5bcc469be89df6a63cd58de6b40f4718d6b7517afba52a459ce12dddd06cf9e3ff41533e7df2300119af7fb5fe943b133d548695860c4598fb418b278899e4e0e5084d785f468b6cfd9945af926ad6509e7b6cc0482dc0d2b8d1201cbabb619fa8aef07d9700ed0e97062604574aae8bdd9ae2eaead2a22be6aca035f56b25f419ea378dc4bf6cdce24906c62facbe2617804b54c83d35c651d14d5f93e4416a4ad9ffb0784e292f7813af00dffc5971c1f6ef6725754ca06aa116a92cde6088f95ccc8c5ae19a821fce9c316b2c74f07baf29511f3f608e3e8a2c276043e2631a1fc651d622754384ffc10045883b93675c7e4aa8453692b0e984b12c213f31a225c77d28fdac426aefc523f8c5e55512c3a44f4e75b9bc04da2befdae590f09463a0d0fc417a4ae8eb31aaa5820324450b0dddcf8a9b06bb066ccb333a4bf445dbd10c025333154752ac0e919f714deb58ec58f38742fd3379754336ce9944674573cafa81bfcbd71e49beb5ecd"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "889989d3df5ae514b1bc95c5231248b30e38d08e48b88ee8270db52c2cf65427b3f7c59ffb718965849e774e40370587dc37fe4de5eafe74865e8c84ecc7a64fd3ffd657c309db28516100f7b57e70c557302e49f612f185f11540d1cee57f643ed976fcef5c71e0c1db38d12c621b8c80e7cb2a02406ffd728cb3029c23d402343f3040d4fbc0cd2439392a93d0492fd90a89176cd72e6b8a434cef5ac4511ca14d4b7d2dee0937bbf5daadee6a1bafecfad41c000f06f72f73c6426fd540d59b0153934fd059e2dec7a6dcb29f64133b856c3b18ee5531998870f3cec2c375c44060778adc1b159e9411bf43f391f0eb82c20e8ea6c6ffc60c4a0bf27fa82e5f79857ac58de7107472670292c66337781070e562da9bbe023d2396d5f75b852551d721f8aa1a737918db641520809e0be68f5aae43994d6666d31805431b9fa146251424600fa08466622e970f520b4bf5a903e329f21c1c74945cd6898f2f8464eb6b48da5af543bf1937395adb0e4e6b4ec0f11c9ffaf0071a453db37d6e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b81df2a5f0d8b8d3c5cd1c644f3e110597fd1d1abfc186f4c8012a6247c8102cae07155a7ad2edccf8e6c505e7a4ff0d29e34c8a5ff25aa25e7be34306844f49bb6d90e0d8a7ae3191dac814f00a2c41f6e2eb8122c199d38189770721b4dd0737286ca4456cc771709f23b198c936802c40f8061e6c971963878bde111f3c1f3e1a6503c5e58ddebd395966eb100e6882e71aee84b589e23278f838251092da897ba9ca862cf9c4d20cb20bd0094273f9cdb28164ba3229bb121b3965a02597919b7c75a93ca7e54c2a1a436a7172be4197d6819ecb4b71eab5b37d58600280951d6bb813f7cc5df3929d5b02860f024995311097e42554bb7083e613ba519517abb87ffdc39a0e5f4e4d4dc2d89e3c1b37f98166e80bff7be83f9477211b4ec8f45d8fa99b0dc836101c5cfb385072793698394310ba85772827c4c0774ad917b40fed0418864bff70be1b63fe4f401c411de9e4b57be72baeba53cffb807a7a9eb9c2b4f91049114823ad1abb83787b5d160787cf5d57d97dcfe95c44189f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0d6eb76e1cc70a4a16d760c0a518defa2bb0987e2d43d8d294a55c9d60507a62236be3a6ae0098a0b28bf7030b373242ccccb88e4f5d4ce3567d8c6ebbf726ebcecb4ef0b26a696b68e59596e104864e5c7c985342e93bb40faa0bb1cde596556951431af93258664c1c1a0dd44e620b2ce0bed8a37014c460c829e0ca104e66cc5a5566394b3a43e21661e5d5fc0497f52d0d8a1c6ae3a57cb689d75e6d94be30c756e9b4d6b7f497a60a897b83c289f6abccd133b63837cee0c2ddba2b2092c29d96831fb14175dc84dd1c5dd1cf42338225d3be6379dc2f0b51b140f5407baac7177bad2de991ca6ed246b53c94381aaca8a299569fd664234d4fe928086383fd50c2af8b91909bf74a5fcf2e2ef30959b7fc0ccfa5d41953e2f1d3886f77ea6f145550b99b0efa3212d2a927db2b3f133a9c45ff5038cf5321fba0dfdbcb8a6abfbc65a2484692c1a89f49a39d00844fc2b4c6d488dc78da5045be8b560228c1e9c93f8f3613555d15e7e39bb5f4160d6e8463ad6b2cedb4174c4813c8d0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "616a47c86dc9e2423c5678dc0ddb74cd9555f63c219caaf182f82cc0b47fc5505afb0405a693c4b45ed670e009908b6316d22692d89798521b477d45c913cd31042b8a0a52626e1727bc36878d1303c52ead0cd69c0e9711e8c5693ca3fcadd48e2641cd73e40eaa26fb7de1aa89f54228fe67cef381f52a571c054ec1b815e37d071054b08280e940735569f452dfea10d86e742ee8db6c52c696699b99b730bcae337f093418598bc4b648276b6a7f65130bf8bfa1b2b2c7893e408a6eadee77bab6c28aecaa0e3a200da9fd4a7d06ab00c38e7c0cd7e41f64dc43526fa28e5d9779730b41e90b6366fa7fd10055d76c95cb694d07c3dda1776fcc774c2b42eced3c82c9327d6865ce3c76b6666770b625eb49d6b7df9fb1eaa4867a8b13ec1d15af66bb5c37ad8ffcb7b059ebd9f198fa9388d706efbb20d7bd6f1a2d6a192e55c5adbca41fbf1f27c9afe7f94775c123cfb7f1b13a980e86b812f5a8a848b9bc76472c52f31f556c02eeb4b71e388c7cdde33b22bf4a5ebe1e9e10a08afe"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a158c783c6141376270cf0ab8f4c08e5a4534b576786e0249fee264afee8d92558a2cc1224422a5b33f1d0661fbd2891f72edf381f9b52aad268dfe82effc96bbca66f4eecc7abf2449aa3fb858ef5606299af5d477242cf91e54edbe042a766cf108731ad6b7b038f28a3534360906272027d2a83ae32cc0ef53c1a89e1372c50edf86b2f9f09f06e49e1072a5260cba1528e8607b8336286fee545e325f34568bb2867f3344a7fd53729da935589671d6ce956462b4729f8a1c97aad3380852760f1c16dc0f9fe9b9f64e7e0317e242cd777ecba0bcda61c19d6e21ce54f007da49e2ef35c10a0bf42ed8c522e6bebab94eeb5557df840c23739751e7cd05f02c52306827c71e14b6f8771e2d3af07670a7956eef491cc26a512a32c3a21a547925406184fe55882303c17c8bc2392cd44a77f3723dfb4c24936dc66b66da9c72a3ed5346ac14d31f5efd227b87faee10e5cd88a1ac73f67e5e6527752d55a12490afee5f500c4b12a28e2ab4ecb8928aa5c889f8aa9696e9d5116f748da8f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0f442a9b1d7aaebd50a48a9f81623bed9a6e57a9aafb22f8cb6e56f28086ab3609a8c13f9f676451271325d453f9e3b31c0310a38e71f91ae90899ff610bbf474138a9e610cbdeaa52985446d873695e35d1de1c777efe02eab419d8f0fd5184c850112bfc8a271307f2a9997155383a85b80ac99f6031d94639a6603fa842f731c4920c7841228441136cc0b07ae11c4a07c28b3305ad2cf6a8594ddb6fa357f17a9fd7a72635323265a9a5eab8029215d21f2b3d2ea41350d031c93bf8d3ecc314d6ed13ed0517e12df45ade2f7a3cbdf0b17b220e83031ee06f4a670b47c7d5bda77c0da7f3df5278882049582faa073667a6270467d8b4c28b5930856ff55400aa1c7f7fb52d838d5e9508b8fd4211e130dced03a6996b9afb860c066a56a6d3e1f1f7fde8179adebaeffb2b8bb91b83b7c1c56a6dada297497b8d8de0069e31ea452c0fc4f820d769c12a744d22ed110fd99476a4524caeba7f766e1fd0e0ee01e91825bb5913c0e2f87497427d2687d776e2ca91055e38fcb6be3f843b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3bf6856f73f6ef422be2e247ca197d3d7ea3c8aac7c12af4e26ab047eb7f8997a97a3b6afbea78dce4ad26aef24568640643293f338dc2a0b867ffd71b9e9a30e9286aaf10281df870d2413b20737eb8673ebe3479685459ebac4c30c123291d9eda00cfd580eea9e77c88087185b72fe6b3b0ea201d9b770f74e24595fc02d40db9356ae20d226f9fc09e59e3f7f760cc3aa855da72d510fbb8ce1e6586588f3e79a64bbfb2ce1983d813fa1ffb5890a5e59c8066842f1bde986b7f1af334cdc1db4d97b793d631d1dc67fd13207198106f58bf80dc1188fe571507b80cf4ca18ba4cf7b7953e937884344d4d8f525db151cd5f2bbd856bd3543fd5cf71bc7e5a45e10553dd1ae47d0cf5947e8dfdc8fa174f6642dfd5e3f4ed300d7571ea31c28f14bcb37dfc6e98ee6b1162d72ee1eab9ad21f4e976510178b6ded5d637b1245fdc48458f6928088d4fd792532144f737a9d9fb157fd22225a98e0a38e8197d4c7af95e2eadad8235ee0800a5ce584257035a6759ee0d70e7216c06b6ad51"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "579bb79622238ac1cbc0af03c3c0d1ccbaadbb29ad974f67b76d752b960df0928d364e33eb04fae281992aaa01fafcc0669eaf87791cb8a7142b597050afa58571f9fe78a93c647307ea0db9017e0c41a0ba712dc8871063bac01da6a3dae7d0c5bb5a40f633b45cd35213fdfccd296221a0275f3b552e56ef8c856f5bd96722ee3cd9799abf956dbcc0bde6bf65b1b2641658f04e063298cdab2029c8c0af0566878822737fa9d6cc48c175fccaf7e866d80e1e478d7568a3e67d39c3a14508711fadd84c3e7be8cc226a23368e9982138128628bbe97a3c572ee68606bf6427ee5b9862bebeaa4f6b08325241da15c9f223bd18b797e1d6e88b2b08a4cf95baadf4d684c8fcb7cd44711aaf203862ec79bd5f071247636623b88709f6686d6ef3178fcee04e2de0d661d92444f5cbf3216b07a5f6cdde0657b2d4596ed148255957b0a23e8f262b1ff628cbd7ec7e88267d100809ab5eea908aa05e11d823e794a0d1e4cfb82c76b0cf9affce1fa0fe370503accaaedcaec65d1ef3a696df0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "90db572ad2c25dd02aee6f8e0ddd5d42f5434b9b59f0bc7057abda8924c2a061404f345b9ed3e2fd0486fe34e2be725bd9446f031071c4ec13772fe468ab4961623d16469a5b9577683f20035caf524d557291b700a6903dd6c472b50cd09455779289b990e86ed6f7135af290b320957c93db1a34bd66289b5304828a71d2928fdbbc3a90af3884fa2f710455d2e909422e66aaa1c01565fb67367223f2bf30661ac72b9c6a84fbf977927a86611514c0c387371cd94bb703f2325e3a11cf83cbc6727b5bd49f6fb31b7238c1a464b22ef6c5db0dd2d5039ab3d5a4a7b1ea01cae494c5dafa48b73a411c982389abe5fb2de35d6abd5d9dc33e7703f67d58feda3a17fb6e9ce3200f44fc614638f7931099f13bc175164d9d68e2a4d38f2c12224fe136fba4e7fca1fbfe3344afd2f52d8812624a1af39c4f128e1c9c1eeccc0ada519f27b694fd982ffb6467f791461a2b803cbd298a4467cecaf274f855583ddcf470092f642edc79b23eecdf4067169a2ee72ae95c93e3ee5d23ec407185"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "37a98cbe608f10cdefb4d787a23681902d7a3a02837438ffcc778091a12dc473aa6cd38d7abe75c362a877456e4b29db13659b4f3d9bb1ef73e0cab33ec2b11d06782ae4ca0a13d15f8856223abe0131f5ec5437b2b001e4f5903a78afd4c46d6a47af171271f3a4cf267b0afec0a1f368a789f4c03193e2f365fe6c0b8dcce1b2f1e6f1e0cbd7c6f1a98a8ab747bbd27485aa61ac84e837a95a178efba0b23725c53f00c94b3cee6831f4d000ecfe84af2a63f341e7bfc2cef7f5654d253654139245c4205c0b2418e8de35da690a8884507134a0b2f0bb9d20eb8f39fb134adbf171f1a8edb4e1489671005f8474708708d1a627d22c76b8ed0993a9c16a6b635fc090e3b38b96f37b28ec44089b17173647eae6ac4439bac2019ae8b928d094665aed8ba0ff89c308097b1e7ba74fd2579f1c21f63296712cf4f5405cf0f3eb60ae1600a5b8d717a09ed23034368c9739ef2f880c659bbfe855f809adbe231ef20d0eb6300f2b6ff02e9f3666876971a9d41f8f0f8fe954f00bf52c0ce013"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3428832b0a12ef303ea4510428a001d6c54d3c3cb4008cd07f57a3b73acd1fcbcef9d29f84a4ca1b70701bbd193598aad70e7d64d187da76bac023ff909b338ca75cc5fa7de2eadff33e377814de682aaff232975a1fb1c36e401fc40c4ea61941d7e6d36af36ae0bf30127f2d05fdbf95c8f0e80a27300373c055e3f5aeddb48b57936dedfa58a3712a2041580abfed8d214ee35e08a5c2d06e9bd9487112ea9862c56eb2eed3f5ef166bfb67bb76ddbb1ab56fa60e7e16a34f8d2dae992a255ba12a154130eb07c8cfa6c2d23331c043332c287528239b7b138f7787db620c3c908ba150dfbbf712a51d5e56bd139824ce046c598ba323ed3669021308b76d70925fdc7461059eaabb4c6776280bf985c34f1bc035e65024629f47c2026ec2c9242d840b037aa4c634659bbef8283c39785ccb596185689abec72e7ed527fce49264487cb40423fea92fec60bb547695abba011b862db538684fff0c77823b0df95ef1396dd93a5189c158c7a845682848455b73b8822a9c27b8a3e789c98c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "264ab320b777d6c33b56c4a61d1beec9d4191024268a32d3ec83c247bd34bf55aa60660adf5d7480d1082237ee5515692e6002051900b87ed499ed879d7970028d308aab51496864f2d87d3ce95559b24646be209921dd147546203bbc38fb13f38120c4fa5cbdf5b9e39cebe2034588329dd0e2e393caf14d17135ce467397ff71db128316a7220561c6714e0abaa088dac39f98cfec71f14f6b3bb11848a4809240839eafb0b9695967ed8e9ea0b7b2fea9ad6a60c38005e3ce36aa38a4d2fb974e57a6482ea47a22b31cbf9ecd73ea7d63a4d5321dabdb1d9a1b66baa754805322040807982cc4a0fcaa1b30b13e3b8b1675e190c76e7613db3e57f199964d85ef6b8a169b0d70304355fa1633097407eb30e5c5ec6bb2e356b79d74e8d7a516e1cfa1e105c4e9409dc87ca041840b639668ba9819f3150929d2114ab54fed418fc940edd030c481292c90070542cacb0a7efce531f69ba818447fbced8c622524b2e6fe57c466345c2b74e7c6effe9d9a092e0c5a6b1b7f36b11bd2afb58"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b6921141cacd717d45fba03ff01be38cccfab166c66121177ba660551efc193ab187baa767d12936d1b07fa736240b24e8c7f6bc02b10d82eda0c20b80c591ded6d27abc97f0640147e7c7bf8dca3bb250c993efd3de1f1f58b3e6d5baeb0652472af89d3a08dd8ff39bb4550eb2bf370d6c4f79d0f093c8e3d99953414a5f92593e00448130bf6b2466212d108cc0cd01621658c401cc55700a4e51da8d02ca634cc2560dec5210f28bfae4bcbcc62ffa10569491ad79e9a1b383b55291b8e9b431c51b0afad99eb5cddf015c7d91930c99dd7c47708f1e254ea1c8c09c10c796514478634a9a5c8ad87f6244903c59ca5cc374fb52b244c002dcf39f675caef15bd1329f6180006106111a1e91d4d9c7ae56d065d36fb9843d74b7f4fa8a789cebae586c072359002fb0c3698bfb74439d561f093587fcbc09759b60964578c3150fbfc1823c76804d6e643d2d67c0ec6fd1408d3a7e0ff92527d8c857a92f3ae4400b4312db163ac889b0634f424ee4fa55781e46219ea25b1bc08ddfd959"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6467d159f5a3bcf671e1c4442e5f1455533866ec8053a788b7e15a0fdaa7d62dc93e66a5d9d9c85c11bd6bcef389174caa3aa9d54ad3978963bf69b5ab503e6243ebb515adc2bc45bdd6126446095d0c0bfd7632bcd8168147b141007592b1f1fdc8e6fb826094858685f627bf321457a8cd9df9c7290baaee6480841a5f2c6092a084a52f0abb5edc8a4cf750494b8d494f69b3efa970378ebe6846fb83ec22ce56ae8c2146ece552925d2f3eecea726d02f56ffc23c6010b52b5240119ea326349bbbfca1c799dbc5c24125f2c41fa21718dc5549906c6bccb748e10189d6ce73bf89158b47e6e44f20f95d3684cc710859e61d878e540a53de45388e98fa1a1acc92283ba3790d7b52b22e9ed671c5b661ae33ffcc924825efb90962b430e91f468b9ffae07e0bca510441b73db302296a170d64e8e024170bfd0f5396a369080c4ae8e7a3d23a91b021e100e33a2a1c1f303252e63c62b59aa797f5e61b453c45dcbd69ea14f9e8eea4346d7c4957740d868860d7ca554ab88bc47b0058b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "16669d358f0681b0f7f54c5840192dbfc462bbda4e2e13ebcb23cfd554f1454f616d156a28fe5a2ad2690897a1d6f44b4579407eb7486fd19b5f643a599eaade6bb6197627f38b7fc18eb6e42fdedf030cd4cfa30587e3100302aa37e6840196e1d48be48da0f51e9f92ead2cfa8693b38cb2a732a3fcbb27d2aac903a594c567c2ec8249c97ebc89747047a5315f8b5493c732859e5793672548eaf0161156ff0e96fa7a6d4085aec19c4a218958686746eb0a40d9a6336809ea435e6b45c4ea97b771db37b514415b86d57900c59ceaf4541e0b53f786332ec055bfecc1e14ffe67dcf41e9350802416f31b3ec0654b87db474bd4c3143418de724eaeb74b95312cfc6bb64659a2e537c544673f9ede21dd5e343c15ca7a74478d06951d010acf69a6befbb224262c95c4ae70760d396958fc3ececf8a8c3c42944575e4f4cea5d94dfc1c93abf18aa8a9ff50b96615e8aa8c8649efbfb69e0d1401c0fad73376a589790aca696ee8f92cdf8680a9a5b9a1fdea7260392d9c7c85262af7fd2"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "33eeef2f8424d783c321bf75d1b30a57454cf54d5a9c43256db187a70bd58d0a807d807c48ef1f15bbb06d7e908f2160cf36f14411360de927b86bbfa9c726fb859ba05fbcf1614f3f26039815b8663fa715c842ea5613e1322164b37a9e7dd521b1dc3b4cdcdf2787b4aed9853bd1425e951bb16cef49d34fac2c792184255eab68e8c23118baa26a7084ac59b0ca699cf2476689e0bf28dc7b5c7fee4538c0926cc394579e8d20caa0de2548ce9f909abbe6a99cdf4e2ddd7ba91becb620b16262609b07cc2dd9dc7e9594ada4c899de7808633955a40eb3cbe7cebfc503e0a4aa9e89a738ab86033724f5cac153d4fb851b73b6857bfb569cee78c849bf5905cbe09e3bbbeaa5db4b2f13b911706aa350403b6288b53b570ea1223e875343f3f1e4ad2da3755007dcb7cea413dd7d3f8b5a995039152ebaf5617d6e40d01424834c6cbc352b2f76a6b763d8be63013f87741232f6b4c4c67f23fdfef08a4362bb16531dbefd3c7ca514e78ef0b8b7837e5614558c28dfd6fa8c4ad6f11a2b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "671cd766a3875e4734591173bfde1e2865b532f48ceb2d8af037335cf1808c53259b3302c883083c52a28d35126969f71f3fa354c1228627046323664a5cce06d58b7b9a947dfd0cc0c44f4f0e26ccace7fa1b7c3b219101a022c6cc4b6b7579cfb7b187d1d56c7d6060c39b248205403b8f64f67a8521934ffd53fe80fd92be28b87ec4bfb602edf08534eb69c77c0dcef1a9912a684e685e610e58d58b03b000bc7f82253ec251edf239b88bbd43884192607f947c66cfbc3b43b10f0e6d1586998b86834f39522ca9fb30232ce9a7715045cb02bb2bf232d5615afd8af0fc5e3c4253f912a7015428246dcf73f1e416860570c3484c561730c852db31f9dd3f3515c315cfee97026e80115cd238b11208772077f3c8e45d49f0d19765268e12d0b17c077a937a3606dada3077f4789a85b29000cc45c6591e44e73174d4ef47bd417fc67ab658f9ae179d2403495cd50e488d679cb062cf5b193093bc6dd101bc31334fc5abd8ad3fe8383f5ed14f9b148e6c4f7d390ae38920da2e10f070"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0679679d5be320641d3f545816d0b04741dcecbe8a6c0d1af3ed2faf80449ed184edc4d1b58c54173a5b26f27ce50d8e6562d9dfa425cd732fc08f47eab900060dfa975b2b4a7b30403557950cbbad3414e61cd7fc004ab1ad7658840d9eb5d001d82fa8ab862ccac8eb2a96fea79fb58cdb05a0e8d601e95fdaaed3c4362d1d6a4e8a396668f9a5d119ca32e4a1c926563231e39bb8d3966f2d986d8ecec22f361c7430636bba2031c60a8eab06ae56d3c491a301a3a5be0e0e0a1daca0f0c90945c2b81d0c873e4eae4b1790c61720f0f7df2d56b9c3a21216d604ce550c547e75bc59c401ef1ea588aaf43b7a17bccbceaa47cc62090df5a7d5a0e908c25d589d54be59b2800a5f6ad29599a01a51b82426528f311824e801babe52f2ca2fb058006f61c7e50b621fd44d4d0fe5e4cf92b48afbf6c37254b82100685c6f57b0ff32ad9a17240788366586a5c3a9458bb5169026cde4f703373c7895b3c86173ea9f24ac89e7a218bea90c1092aebf4cfe7387fcd61fd1f13f3230193a009d"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5af6ce6cd7d8cba3c9be3478cb3ffb94b16c6e6880a2667790cfb8818ac081edd53d49cae910f9e3461b18087504525fe0a97f8d6536829eeb16b0311bc0a07b8ffb061b8d749894b0ac1628a9d8bbe62f69fd1b19222483980145ef76be38f6b497fc1749387f99da7fb5cd0ab7e1a6a186a199ca9f86902c08fb495b5458198bbfa57637cf86fb4b12f7b8e59e0af3336e2fbb2f82cf36193a7c06601b010387e86ef6eeaa5aaf7be0a1b9bcb4a23cfff0fec5f3ab645cf9ae47569cd15b55811fb65be2fb83f4c2f376419fbc6d8a2e4c7901a97c660a05cc9beb925a7dacd91bc97eaab1a13f3728187779635c6b9f706e59a1589ca2974fd1195cc07528a024aa07624aec1b0fa39851e77fa67d36cc11552f4c3c91dad62aba44b989baa54a4dab606559b637b6fae9eab10af9ab5aa156b2bbb169a3a8df4bf546aebcbfb87b620e3aa4530e29b9a4a2e18d859db2c6ac8378ea9b36c3c83d292dd6db85a3e7a5f2580d2615027db3731d80c43c917c2771667f2f8fc2a105223fdcbb"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "369197d34d2131d501babcfb49f789ef8ead12e732279f06d99e87336d840294a40ba22f7f303a4dd2738744e22779ef753ae9eb7bb996c1a10f5e70702d4688334319ed10f9d5159db9f4f58b3a7ad43ec531cfa9238e3e68b63551f4809f6619bded70a38d70b7fe62e892172d1994be13dde2b2c4ac86fe2ef5897412cd665ebb9e26d7d450b05bffa1d201c460fe38ec76b80c7a3671be4847535226ac9b8d8cbd3ff0df537eadde670444cc61c88724178cb4513df04e10c5f0e5ae6d123bf8f966d7cf777eb4140a3d10146ee687d460414f6c883184292a9e3bf052526433d9053957818188a2ee0a6ed8a0f2a4db321123a367d2424960ac462bcf109f65861cb62451066b7aefb5283a6ae50bef219d151d9f23df8f66fc0a8128219770fbaad551b4c7b02c6b3e20380f1e65182c2db933fc5152da8f22b3372dd97f454230b3fabe4edda79562147df5403824d6f44ba5ba00f8649db460fdd29c9b67d32b0d88d56af66f06272a401bf872ec639d5c79acbc020e930095d52f4c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "935c94aff85633cf56d8e3dc3f58edf03cc95c14e721d2f311f944999b8b5c413f37a5ab1f3ef809683a436d3efe95a679828b8bf6f2d40b17b553cbfa7f32d3d9cbb6a99f8f41efa09a4bd2d17111277be2121c2d85da600bc7ea8f26572bd70d9b66c02a89748f0d8e14520c0696b7f0d18521a632dc9620c19d411278b6a13eaeab0aa84275aea8f548a8ca25b8d59775e61ea2cd4eacaab836337cd3656629c6d896ed289a14c109a4019b8897c9b6996ff7b20a2a1db2a58ce5728a49806d2630b8b64d985be2c2ef14c8b791269bc387355f646ddc19db25cf64d2b2b6eba30bb007959cfed2cac0292dbd207126adc90b8758a65094068fdbec21ff2db53aaf969692e7d0ae22ac850f853b2892290ba6f198aa6754e713f549172d154220fcd6996deefdbb14c9329b015448060aa0152a08b4d1a5e32d6fc5bb60a411ba8b206fecbedafa9883a3bd5d9fa905119656563df1d2d08c24cca881a6ab2222440b64bc12a859a9d20c7f9ea02322c436003c55723cf8678dbc8303f97c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "71601b43bc8ce6f6ea74985843de5a2c9f71ffa37bde9aac20c59abb025b0dbec4cd8d3623b515f0d098803cfa01564a2d319c93d3acbb5e3603f53e019ce2cd2975905f9faed64ea4756254bd064985e5245d051ba7756d4b1eedf928f9552e9854b0626639702d3ec0c40c2346af7572e86c128d1aea0ca218e63c3bdeccf290ea995bc2a0bc7eb1229395ebc6b9f8f9b14f3d5c1191bb6738ca1d250965cc80c73b3fbcef29d08767038c5c9ab006b100bbfac35e15f35698f6f8c6a1ff3c9039bf4ac984e2429540818632bd02015552e9757f363e8317fcf8998a55154f6161b67e00910cbc736daf7fe738443a3ace0763fd6505cfcaf11368dbe5d585206ca41d76e39feb68519d309dd92a54dfec5791311f5c00bd0bdc7fc5f2f47d558f51a5f3cc2c86c33958d118dfeefb8b531fd4142892e28ccbb2c574b6c115169981af4c3ce6e019fa27c2efe4aa34c0ef104e16c7f02a3b7bd46390039c7d4ccc6b27deb5f6796714d67af88456a8da6395e670b513f45b62ba0aac65579f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "241332a0e34ec700cdf2297c8994ee0cfb848e6f5d6f31216524bd3d40b1539ee5d4955d405497fbf19f9b3681306408a4ef5eba87e75799dae8e86ab050b7e78ebbe9a2be1e02f9cec519a51e7880a7f653a8327275bf9a2a298678493df013d3c3a191372f5f84aeed7abf72697ade3e02d521655d2d79003932b92e26ec22a9260606954ed32c536015a8d5306de8354fec6d51b48a0f258e5742eeff0d2c76b86bdec0b42a6606ae043e86b2de8f4242be7ef65b9ce60fe4f798a8aa19f947aea9ef40fb4a467d7c5413d526aa9491ac9a98f9e6342a154a99264ef601293cd2d4a979ffb5dbb5fcf79ee727f87f9cf7cc6570dd88d60816232eaa57dd75a7f0ffc8160f65715fc12508fbf00134964968d33dd30742e93107eb74c3721cf6615fff5ba1566844ad6859e028ce769823f037a6205edadce32f3d38bf778d47c36eaa67a36cb53f572b1beb90622e5217b0833de3e6f8000adea76d4543c803aa707932105724706ca4db008c644336a89b3ae8f196b7f2b3ae306e18176c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "60aa59b8254b47199db7b29de45c02247610f3cf9cadc3f46c969aaf36ea1ecfd7aa2c6cf626a5ca11c275485818b2a433e9648c3dd8f6e100d530b215e107bda795ea13bdd3aed87b5edda40a5bb0105ef3731b44341b6a3300409db7b1bf2dea3b84507bd5fa0d7a11709ddb106df8fddf1a9625c64552b875ea96d5ab33820b9acc94a30f37e8817ba1d757c1555795cc82a26c6adea36676eac2934dd3d54e1bb0fca770f6051c108de1e8cc04c15306d94b088a0ebfafeb93bce91e283ef6b4ef88ee8abbfe549eaf2491f23e3ae13d3319c73330237e06d2d00989cbd9d9c8a095e82534e14845caaa66599d996df6b583c22c3e73f747c5e597b6263efd3d484fa75e227873f50c993eff26e14bca16e2df14098854167f0de73a157df996d0beb2aeb6750b5743b0a9f4d685ee8cfa5df01a4b924a679d14919d2753f8935b82ba4e2e4670097cf11bcd59a613b5f34a2963dc56f59f25f2b8b91e9a00a2cecee8b488d860044dc7e10f82037030d62d48e028022e7c3774bf3c25ca"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0d814684d79c28bc169da20859fef117d2d6c98a9c7d52b788d972fc098db62d46f52ba2b5083cc7de5cff0658d4266c113a8b35cb3bf04061d4c6ba6b7b4cd67eeb48d56101555e4fb556a6e90d513ebe468eed8ef0202118998b2a1c0d9879b14367f21d9b4889b9f2b41cd260d95f540dd8489b78ddec27999ba507da902f60fe1dca5f7fef00a85829166a1839162b8e61436bf6723a136d765581963b812b0005b4cbda844cd76c1054c87f69641d5268abe4991afa2fd98dead30ba26d747aedebf45a96bd1002aa3b8c86cbbadd86124817595f123a39f9cf3fd26543afe54c6fcfe170060af7aa096ee2aa16e206303f8579554b7bb1f412062eecd486219c94798737e9ff75ca2c1f34cd03182c9431382f0e12cc7efa13b1c5ad367f34ae84af42b4614a7eac8ac7f1ca10695b88bf6ef17006f06975dfb4fd02731d5cd8a6e429515c4730d0aec054b3533d5d429150fc9714665e3881c25f5850fcfb3e8dae79c364d58aeaf2bcb0ee5d899af92adc93d632eacfe529ff57a0f2"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "550ce3e78b5e1301a0b375e5c6bb6ceff056689221188d00c6116eba6920eb8c6aafab5bcc11e52984e05f68920d44be9dc2356617d3e7ada79d51865885262defae63a4d34b8c003ef5ff324b59ed6657dba99765ae425ed2c9bdcf11f41ae0164a44c1c41d98cafc66ff4e916390c42c82244196887d18121eae27b6e21c57354b0d37e160f324b95e790956a5093a9283dfe9a72922cdfde37d15bc317bd05909ed8d1c8dbcbf600fda9d26c810da486a865887191e1bfbb21a68c17c217fc3f8aa2efde650fc8ccd3fe5f6d7270231ab0a97e3d5f3b63981e09d0b8201ceb649505346ab22f664b9b6a63ab088bf4ea01fa26142ea3795161f933164bfc4e2412a2961bc09ae13257df7171cedfd2fb48e5a61034a2494b3bf70dc51a3577de4a948bc0bf35036b0496cf79c9b4d1bae0e9184068260189a6b5531715dd47b9e4f011622306ae7cccd7743eb42b4748fdf46bc5e3285373b385b5e38185d9990dec73133a9b88bd3d7ef0cda141f2c6704ae967af791056ff249c3ddb7ae"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3b2eb94128068de15497d0fb6d8612fa6b900a7c8d38512eea2c579b9f62c45d1bd198ecbc5b2facd875bc0291b6df8de78fc3367529d2e36996f14017f3ef71883d3b95f2525f62ae32d294a170f664d3ce1cf5a5cfed4df8b5c658e45ed65a606b238349cf1cd53d6f74278dd8e0d898c1375f007b8d2777889a104735ab7306df6751d9539447e86bc106e83ce6ed856505e5ca3d9eb58d8f4caafe13a07e2d3670b3934f5a08d1c76f723bf2b2130fb8a99393338912bfb06fc6974bb0493a43e14549927215c4cd0aa76ca99754fcaab897f2cc7a149caf0d2692a82e91c5ff0bc9d33e2f6620544b7fb0734b304df20a1e4389f1da4d8b1f40f019060708a5a05582606970a30ef75606a1cc46609615404b7689520db0dd22434052d6348c01cf8d7a2bf80e19b1799e70d049cdca517f262f754e71f000bc0f83bf9fc59fe3865a4e75f275d514cced20cacf10bdba843b824bbc1c9c9c22e4a8e234be197cf90575f132e1c53cac7d87979a84c612b6ea0c2f0f1cd1da0559661e73"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6496f96674d13a493992dcf6193b557680962c4152826f35b82befb713a5e86b09ac350b36a4b27a730112b91faffd84eef3e032628e5a06e98600e49665c9755b2f48161edafbc9ce527e3403ca919e1614708a7ab697a20a398233fa23f32ca77a9c81e16bddcc4058015518258bd48b955fa81cafa34282bb5e6d42bbd1c82fc30ad3a7aeb1d4381cb2ef951da28941c4b9617be518dd3616a0472669c25ed43acfb5f55e58a87fa6181337efc97256635e7c678f099c2d62f78aff5b54663061c0cb3c6c330c43e8a4c4a50a8229839ef6ca0c5943e87e9216da644aedc80c698f9eaafdf81046548bdfd119cfaf95667bebec6ce029ca0a4c96c9a17c8ef735d43af9c81bc82a9317046eb8444a765cd4cd848e61370b3014af893ef92faba5a14b4217f076872d187d8de12381ddb7e30e40abc6caffb5b267067c411f9d104dcfd1e395e2b73c67b1d884690a6a4ab58aba1e7c720c187604864440b6dd87d85188e94b0c6fd99038f299d44e161de8ca7fdbae62c3a8b6ee003afed3"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2bff6effa697277d05bb0a7c6a7f714a0c2f23f9870f51c6b2a678d3b06f5c892d75f377f24fbb14c3c9aba52ae06d3741ebe3e116c0d49dc4e651251367fc63720c8553646bd7465298ccb7b4bf765607dd05052fe5a660c84e0e516aa67540af1ca35befb2250602742a53d4cd97cbd98b9136049336e553c3e7dc64eb39f3d96be6fb1146c16f2180992d0f16fdb9a4c9012753901fb7b293e6af23187c76d9ef55a6956b299bf9e9c9c27c9a4fd524360a4a6988ca1168f35f8bd2038869d77f117ce6d20e710a78b363973a08a5eb091a5ae7332e83617deca9911a2b241aca731624905b91ae63a87045bb2c356c934c70a6cc22bcecd7eb26adb6f98b1c1d727582d7329235a438e1161dcc01f82f760833bfd8d54f8d856ec475ef342072c3d6066425cd0309c4bed7a0861afd7e64b92cdf969ca4d2655a2ee47679134fc2ed39b41cd1cf2665eaaf1e21e8bb9fe6f19b16a057d8277d68ea7a240c95978deedff766e84ef46490720a3809e3ce2a9994af4a04de2059c5a393cf3a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "04b2a5ace2b1f16c675b02da8a8532511a25d59b2f37031baac48b4b83bb434df89ec93799ca6e3a9125049c051a0f9ba89dec99931cab9786c2bac52b2a06a6250ddec383e3290f423ba899869b4eaab192793d15156b13cee7f7d618ba7a6acf49c992d381b59be6f020812d5a0f90d12814ebffed3a02994a91eb3f2c079f03145576869878f641ccdadfa2eb946c84c122bc198e3d343f0bbd6b041701e7a20db8460a2ca79d35923497028b6abb3d72a5a6fc4b3e9092c2118e248140ed2526ea7b5ea56a2ef04bd40ff27436c7ceb1b3b29a887988d009167dbf2b0ef5ed2191d14ad2eb2d763a7f03e0d733c1f2c27e4634063c39bbb0234189d72bc7b08695e4b0f5b88d5a16f02914c74dcdbe55e7f8a773c9a7b9c9780a2d2ff0b0ba4f9adb0bf263afdddcf2fef8046c605d9e0ceb8b3ee793c41b4b320d7c71f9835dd6a604d5216f55c9a83f67b8f5bd28de1c7b499b7ccf8640c78538c88e00edc66b2d6bcb24bc4018d1d731c05d250d4f3c7b722b38c74bae05c1bae4976a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "050789f05b63424da4d9bfb1bb9a6e816f2b77eadd4e127b2e0b2b5d16e0a85b9af3a7e42ec2b862f477261787e4b65d849254839d88165033edf953e954deb1ad3bc6a0b8e45b97ed267f8104e69ef0db1c740e5e587a4cc17f48e10fe240dee9666a4e71d7c58e54518a5b1d04cfcb9b67e76374e7974c44c88b9b4bcd7f8e5a10132745f398e3588b6dba5a4d680ea8af0311f9a3c78ecfae00217706a7d7acb187caa7883b73058015a2b9c3a663488e1a42ef143337acd5a2563feb38faba0c1c0be567481107402715ed56707d7d0015f9cdc38a9098d4aa9806f790ef826dce67bb766c3ea6547d987a00d5ea252e52d9f536ed2b7fcd39abdf93b43bb5110d3c472cc5df4da021e82ea132cee2646a302f6e5c9952c56eca12bf31d29e32bf810c9ff5c0535a9ea3264223874e1406ccd372e05c0cfd95b97cfc991a13c63178bb5ec5223e3b25e055188c77bf05d1c337617b83da328804ede26b599a76bada43cca9c3b271db2dccd7be1259cf3edbb020a4cda776084508081a24"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9bdb19ee8de8003f29924535f141da242c069d7d5efec9c46044071834d2d7858e794591e277b87e1fdfa6b3108ec8b615fe76f3d374381562ce3624e35802730a4bfc2c54385da6eaba8903aaa8475dcadd67ace389724b59a10e7ba3bab6f332f44357c95e2e84a2741337a253bf85efb10cd9e69cc656cde704aa20681f993f2324ff323582c1feaca59ddfa26d696ae43b09832d2d34d126c40be89959dd2a353a2f3722e2e0c1cc070cc1dd0cc5e3dba9e9a7cae5a7e7bb20a58b37366c624180b2b1d77344351508a47ac5cb46277892f0a88db74daaea7a03ad8ac60a0e212ac5e18d01cc81af472d7bd905474c7596c374b6521579ecf115575eb90721c78c741bb48d4081d914b2cc9eaf9e7ff6c898b5c6d70117b2c8870713b4298bb88d7cecc3446dd4e10208c09cbe89738078f573ebac694d6da770b56900ac7e4dca41b7dafd8e3c96a63e79a28d9727a831b05169bb1debd17fab657d8b52d8f915590b3a67963ce5c5896fe6569ce4c90859cef89c79d1c9b8e48a46ee4e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b252d9c77e84f1274ac8019d0993427574d63a80a26c6e93b786fcc8ec699bb64306a9e425fc7fad43acf8a4fb40cc7c54bb29312430a67c0c23c79d34f2ccbbd3d196363901316bcb1fb1a7b6edbe4e457be1f9e92e272bdfd7b35310048212b8e8059d4dfcee86bedb0d7bb7bb0383d0187ae56b56851cee1f6740cad320af9fc25517d729c09ce30dfcf477a0f5fcc71c7342e99b17d831707150be963057a203b133e30adbe10c73df9079cc0d0b5b535c7a2f1e545352ac80473545143251bcc77ea46ab72f3c4be6ab4d5770020b765e900f33512ebcab8de4b9bae9ad68002abebae75773efcd84748ffe4be93ddbb736bc3cc3e5a81b5221ad4405adf4dd3f5fa9ffd5975116b56a0150fb715d22abe24e81af90455cf617d290873d14cc1b368f0fd969ad622b9bd299efb40f640507dac6bd6d4c8cc144014db6f74f71e751e7349176e549d694f68d4007ca6c51f6f58fc5a6822a3005478d5d890e1919990118ab5eb61535383c6aeebe1f514a793adae3c1a91f90dc3261279b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6e317cb8fc092da3e09b63590743ba17426826083697bdd526f85d1ebf0270afc0fd89ad67762836567f36d2bfb52252a2a54ef9f753a4afbfe520e857a503385ab6c16df6d4e3494954912ecb31c514f6427b676a1c61c83ed38009693ebc39add66a1af1ac1834381df1144fe5f0444fc955334a2cff4aee6f3cdd3abe5dc54cc4ec25c5c66286e91d29a5c498872e7edbf3f4235bebb402dec4b91e629123e841dea66643f224c472f75caf31fbaf18943e7bbd09fdfa8dd908ae92631129b404f7414037d42b5914b532e7ff5a618876a550fdfb80289c5d635adbbc60e41ab577c59bb6895e2c4f02140b95a47dc327d5f414293b3577acb277427285f82dbfca53a4acbbe4497141efd0afea149a7c12b6c702fb9e48dc7dcb0d4ff1f96cb238d34e35fece1436b14592d3eee800641800dd9df1b9541435cb2ce933a0150498f9416446c95172a2116ffb58cf5f397f0d0af2e025e2951444d204291b1c04281c9242058b937b5d01f74b6cfa2d55d975c6622198c6cb271f289110d2"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "41a99f4e616d19dbfec0e1e5ab8ab605ebd218c107176b2d90c58e41e01cd6f6950fe4a71c3b0ce81dcfd6f88b57e7345dcd466e43e3b5dce645ead38d0f5df81d307dc89ae059b3738b7900eda146f0ad965e67e760231ba58fe7e33d3f14fba66978e3eb7bc5dd6960b24ba2d59332760492961b5b81af6e37fc3065105915a4505fd239c79e6fa6cd8ba4bb585fe937d5d87955f659cbebd6bd9f0d0030e8a52341591fbd1624cd2236352e9e6bd91d7c121357a4af1184efd102fa911a7eb8d7dce098fbc02e34ec92d14ae333e502ab8bad7ffc275dc770913eee42a316b1fac871863e0f10899d72d0802bea9c07bf21b91050850547d6c8ff99ef52b1bddbd655352ef0fc4748c44d4bc4a4dc4ad3110b367e63620cf76139fff563a7c76a9b3a24cab86bede3568ef1524d476f8e39b9df374d1d2161167af5a00c61e0aea1bee56ae05ff1759e0826c4bb0b2058b5dc92a5c4dc865110bfa05506121ae58583179bd981100f42d1d89fd604db4f13db7ee6c49ecd381a546813b284"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9e64f806c7528a1cd1c8dd5b67ab67335b8f9a1ef1fba99afe67e9fb2cb11263c79dc422d51a68728464422307a0a445ac823d10021ab7789e6f701182f632786f77c23806b81324b5cd78e462c35e495532c2330a08e0e9ab7b44bc6dc5d99c70e052752a4718fff47d00c9b82c4dca22fe3302cec11026564288eda51b692f36fc23ab6b3a9091c332378be3582aa551c8471a9df5f9451291a1da952019788f461fc5262e822bf5d5e11f80b91fd8748bcd2d856e0bf7ee29333b627d6c44ec0ead86c0ab18f93ae9f29dc3a91562387a703b42a17cc4b7b310b6b6fc7d9bd7bdd907520dec948d2048d556dd6db3b0e5e95788d88d0d643c6336604d0b81fc996bb85d2b4993036635a15acab8dc486e061c8e2eab891daee57bf08563bc018401087ba854f300a97b9c5fd6c5a3915ffb240a577e7ed23c76fda89407be57aa7869db4c6e72fb69ae2af877f189992d99dc17a071894a2c6293ebc9e205ee3792c4da94de734b77c47b21c7a6572759126bdda03f4984bfeec0afd744d3"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "73c5e90d38f0fda07b0dd538fddff64534db7e4e7f0be09b62ed828c49c616663bcf565b2cca9ea19a77a5135d3dabd86bfc831c2b03d81817aae22f4991422e228e315934e993fb134905e1aa03b3539100d9293b8f68177f4326867bd71de9fa47c8e9f37ef46e1b9f3adcc2711892ce1f1dd9f238ee8e1cf2ee0c30408179cc290dc895cd46e2d717552f0a4dbc890fb85dea92554553c50f7f93b34f52625060b290860734cee378783b32453eea66b5bdb3de41839ea69d873346c710a114848eb0e53b26715bd143fe3ea67c3303d1d238be8032242f622a030571bf4726162788004541d642de9ebf1d4ad7ae7dd84fac1c3bd5215a18d65e982bca38342df82463cf606d7c30ea3a5bca3971f78328d0e55cb0bd99594dec125e73547aa6bf4fe22edb30fbe4ac4298752673b2a4bfd592a75db98a5a6d73e26ad1de4b63ac83ba1e29215125e74908bcc888ce8590925cab290711732e4638443a6dc60e705f3c54706b5cf23a654001de4e0f0c40a0078bd6b071cffc2f9f728351"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b5efca28b066937c2cab27c339106a0f40139a1e1a5b6d66ec3a76abb62824c06a3e4dff6bc0dd204610fdf386e1ce13c87159f4aa0e88f1c29d07b1320217347c52e58c57ccff23c01c2039c2a385625072f974b690aed9cc5f6341c33dcd2aaca6c260d5945d49c5963c4fec651423c765c973e457ea2ef33eb57b4b4eb88f0ffb66789303c725e3db8b76e4eecec73c5a466b25745ebc00dc347d33a71f787e7723358270d0e258719093736f72182ef5cf2c4f513fe648531d755d6e945b3c44843978ab009b0b6809bb0db6794a4bb2311991b1493fc15226c15739e2b3d621cbbeeb891286d747dbc71a7c9cf06b51442c8086d839f52d73a072647832309b59edb37522dc61a97a31b7bf3c63980060304fc647c5743687c15389f4d996e38c83bd9e631c3bae53c1ac35486e9348b730f066069bce7e840f1b83d5215a52284972f2258576e608c35c4521d87e9e52cc1f4f284674f1269730bafd4f5727ac61d9d179302c99ccdd4d9e024578803ae6e9fb76ab5f74c23d234313c5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a2f7d989b2b509b4d774f5de9acf12e5eaab05684edeae1eb42dc090356e58b8e15a32d8fa313252633a8356476327d32915c52449aac56fefc012929988fa5cfbda0d04d81392eb35ea340dfe449511f5fdab774f7e659ca0a8c91911a255d828e00d93d64638f805d63cc926c17804cf1d857c40be5d10318fe06bc311a66329128bd1102756da5da819afaed6ec6864287c44952244e4a8fbf98a90ada98bc1b5519cb81173b64357ce82f29ff16e5d76a929d4b7db51d9f3a7f4c91491dbc6a0550bcaf5fd37646bd8f71ef459540ae8eba668723a81b941939540d92c4a7f9cb0543dba1cb7969c4d644c8f15bfc13aae4a778a81b27b82903dd223ba4d5d5c157a35371ea1443788d973d953318b204f232cd5c53a9a2517d571cafb62d3378655dcde55f46597295c89bf882041ba6f4352a88dd7c1748761728a2d8dd628433855364024d42a0097346443459b840415b5a56934ea476c5f9de84419d564e493c594a9049352ea82700b1767d75244ef84ae2c8a3d5b1853a0ad08a4"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2c269aac4605a5e25a660071fba9f97d4b9e4c0f0d2e567459e5620884f889cbfb33ea6094feb6d2817747859f8c203c548d5bda97821c3b6744711ed3f0bf02954ef75ad6b9afcb6872273f1c164ba168db9a8bd72d715bef221420491ab6b67d5f4847743770ed4136280bda363c1fcc2f35ddadd1be3093eede6922cb95e3e206d02d98e91194a7fd39c304c848c1731e1f90e8a9433db71d94e7d76d7b5f2fdabfe20e8e1ac7deb56f81331fedd7a7e9ace76887dba2fcd72ebd2017f5bb85de1cd309b3b7f7fbb9d8901f61bf8992fd9a63f861e8054c9d4fc1472786d6efec3cf4bd1543116e2bf36698de85a6a3c17c200c73001b3218e72b8bd515f9f96d9ced500a1c6da4c0173f35ba24ee746e51cfc3ef00ce60441031bdcc2742d981833006bc05a513f1cf67d6a9e59ad4acc029995608fd05b744d48be829148552e13c7c76450f30b5acd4fab819a71c158c82d587fa7e839c3959a8150395f567387024f7b786006ec0b1f6960d3b5de347742eda16bc76e3359becd2e184"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6495b6ed3efb642c89767686ca55fc7f0296bda99a2c04cf03f269f7823de1f8da9f67d0ea773c03a9aeb41d8c56e4f0919c4f228f60d1be84dcc68f0448d95e3028c230ab5b7cd807ad8c939ac83ec77ab5ff44203a6b7ccb6e69a6ef0c902f1e70f31d480737e418b3a73b9b0bb5ab551e86ff80c3e4e9dbff385a49718d7f00b5063c4f7deabc566494314fb5297968538771e0b3a5b27a56f11f6c9f0b9f6ec644a3ebd9b6e7acf668a1e64dbd3ff84b860f91c3d4965e657804e6c5c92bf5921e10bb405f0d11740aa4f7b46a82224e0305e312cd4e17a30757eee88667f2372cb4ac971b774ef78edf1bd299cb172867352c574cfbf23a321faaef28774d65bb22b45647b9a526b7c4245b6c06f2225151401a77ecdde12e767066935c0f9cc94320d6afce02afc71d30a45344c79ea22c72a247a1be6989e27d59ae06295fc69898d5f3d2877e166b9227fc1a0172ac8e367828ba3f6db8ba29fb963a205e897fd2fe1273a6406551d9b2eb4aaf88a7178da423cdb4eda07b2e309892"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4cb5a50291ed1e9d2514f4b5c8d005d81608ec004b035336991259fa908d5977ba8c75ab7f0fe0b31dc7127f9e81441e11b1fb94ba034459622b301cfc6918d49648b74680c0dfe79e455fd7c0bbe2d9cd0cdf8d28c71b949feb817575e01e3fef84f463acbeec12f1a5eb6b5af59d021413fded81f12e792ef3b4e29d3787f561a20884dfc296fa4490c40a790db98bec78be02d6d83907385a6ae8c15f9ce8b30315e9c0d1593b0a5efe03d25745f00f507aad0e607e5c81ed05838c3b4cee63405ac6b6a6034051479cb9f40f2a6cbb0c82913277e32d5d1c9c55c63aea1110cf6ec03fd7d908083a9aeda83db8bbe72f787af3914408d82ddf9d38e80ebfc152b36ebca127f7d82cba622684d44c150d46149dd452ce322820316bfc207a3b44a614dcb0f9ceed843a8f95bc7cd540df590dcc9a451c39d8d0a9770dcd7950b339990ec5100723bf07da131bd384d6141e98e18600dd44156750db66826d65faa991180866c752858536992a16cc0c89e56dc6cbc7c0972827e586757476"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "82cc73f7a3bd65b0910b012bb8a90593f78230d0b9cc0e3ad3895271492acf1d520c231aee97e20084edde67572b4f3f4d6f42f2e9b9d262c15479a0bd176c0767b1c89fb8e7776f18ebb210d353c870e4fd2ba3c42ce8949ec0c8a5899a3b841bd4f8de8b549e6736b1f3242ddf959b637d1be3aafc4ba7c46f2cae3a16228180e33796ce759aebbcca47a64ff2cebae8bd1dee8e5cd46b602360386620fe6d4704c16e61cd4801abef4f6832c1400e99c14a7024a46ee43e3f729241ae677c128d9b5c548066a8d765afbb42fcd3b491b480e2496c5ca5cbfc1b93f4f85fc5eb3dd81d882b86376cb800398efc25389750704986e5b79d1f6a22793cfa3519e519e0cfed2ff9e4ed454f87367239cd24cce8fb5b1bb35f9ff286ed565ccb1bd41c2c98094cafec4960e59e5c75e4f03794b7ff913e848c1ff0fc5e19d61b0cecf65cd37c95658e371a8629b091ba05135ef05cf57e7ec508be6f978787d9fc7fbc109132c2fe0efb8c3fff622b600b3d3fcbe46b79db032052e2c082257a05"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "943d197f031094c5f4938c130e3b9778c44ac5708e2b1346a77a9fad73948505d9630ba4cf537e9c17bae76033c7c6687ff256967c51d4241489440041a2956efeaf7ece62c3baf68057cf72b576258c79793ba81a1f726158867ea20cf1fcb9632c7eaefa0fdfc728c193d08e57a29855f2c4577c566f48cc1e45a6b0af10c0d68dabe814574a131b8ba167e1c7495955edf33f90043c9fa5cfb312b8d55d08689ea68e2c27d1c65188bd35475053196e05cad0ce63b9432bd40770c1b1dfce8ca497a352030c1178c6865b6615103b3634562b7ab1ccb1a08204761574aed2da75478f432add1b2888e21ab9da9ce2c00259f6a4b541388bb19a48daf91135aa9b540bd362a8ce1c986bb609056f19d12e4c56b2031a3c149ceeaa767f57939cbbabf1221d486c66ab5209f29480f63b367c8619d90f5e7eb3116cb87930ffb1ad45717480f00a01c6e69541523b998835c5d81633be9b4b82d492b1d54b2e6b14da2cb33b3fae8210611fcf15009fd7ecda3e135113baac619e8b74d70b17"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1301f1131b35def827e8d8560f56d7dffcacdaf65df2200e054ab7717ca7a9f7f19a3628d8774cfaaba6a377e8b854613a4ba7c6237ab989976b0d1398753b7b66a724c91abba885fb77e908a2c6a3ad8d837f75d872eea76d7fe0d75363098a4c7af8bd831de55da3254b85dd199173c2708b191670cc659cd491eea567d633fc256134c2b47e1d1d28db03a5e8294f20a536cd7280e4fe86f750d99d41cbe5687217a55ccf7bae966caaea313258333d07fbb0b00859e5d9e21d71f190e4079ccb0026f074e7e4a984e8f478b298680470ce6338a2b25ff1da6f0aca3247c743c384d82406e44701a46a4c2e50312c11088567788d5743cd3165e3536b693e54f4c6ccc4586e462cbe4796eca57baa70b6296013d9c1c6f4e2e02a75bc6265900bd382892f4135a13ab600c764c546fea14febd51bc378bd1145c2282c94228db5e97d6ce7f29a505e46e373779b50b3856556d8907f07b61c2745ee4051d0f274947fe06eac7d4b091fd5476d6b7c54924018ad7acbdd252f1024080dd681"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "742a5c3575b6379d7166188aa6c9fe5406b157db778ee0900429d6c427fc530c4c0144a189265dc78ca14715a5a0e69995ff914fe0316e504802be88d5325af9344cc54db76e1d75030b3c41a27c8e9eef0c82d05ca92488475a109c878624133db6154799b4c2820997207389c610204f17d8c2b8d7cf61e49cef4b2a44ea88bf9c3026e29934be4afb3cff846482c5e76d0b581ce2851e4ebecf04f537e89c42f9ff29e0d8c94fa6741ec0a81fe7d3394ebef89d0cbf2824a374283a4e142ac6d7338ca1d6467df4bd97f9f6471c4e772995fceb7e34df6c7b583c73a6502677f23760369472b89e0051d6813bdb16bdfbfd1b9a49f474b29257883d218381a674fe9c245f3c419d0e0aa796e0c37c146469dc23f655a287370727da3a42e99f05595fa3f76165c6e5dbd0f0349daa60086fa30299f5e811c5ed4e957d4f52ffdc902a15fa97d2709f95f680ada1df9ac17ae1703471d00d2958f6f5642635570ec77fa1cf70c17e12d3a1202ff4106bfb7d51819f381b3c8f0d40b3a2f345"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c5f79bf21ab84e634160b5b201ef9fb0b2aa17713ce440c58e681c91ae777ad63d7ebdd1c77dbf90ce483160ed3451921df200e3eebff4a25a903e0db6c21a2e921a1423a2a23141a841444213524f36fe99386ef68ce319b9093162c475cda89a55487d975fac01318756ee64b70fc4bae1af18fc806acea41e74986716bc47a73293c5d3c55d267310744999e533904e73395f2c77fea30268f83318c6ecc657a4f4e87b239404c72798976258af3b444afa2049763e96072880f3d2a647e586ba284f0a50425a1deb8bbc0e52241d6ad589f5c20f09a2899fae574a4bd29e57b604a2214afd024a54951461af01d4f0a12f497136124bd3806244e8d8633336dd908c68ecf08435f0a97553d2943d060873411ca5ca62fe8337c526dc8146c60a0a1cbef0cf7b5818d6a2e96df207729276ced557b1fce70dde2be3a2012a6f6f20a9f94926504a593fe8dc6b04efbf559a362ec8a401772828d277d8f1abd9588441d575cf166752f57c1b50251cccb0282c75f0145df04e68da9f408b1"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3743ed858c007e5f535e567a2cb63ebd669283a40d369a06df23068afd1bf91ff4521455e45ab94b0751c4c1e648166c7ea571b415faa4311a1598c5ec0ea75472040040994ae32209ef33393f040e05646b0ab14ca0309e1bae24c0bb8ef467edd7ef74bcae2e8ac7e22f5bea0a8537a907f42ab3f6bbe61e24084642f3de68b73c979645a3d43956e7c738ae3621df707638f8b0ab0fdb854eed46e8e307c653b894393479dd1d0dc9f7317bfcc736d51af55aa036e83752a6d6433a6538c5b31900401944288fbe8209728ad1f5394ea66718161511beb70a20bb3e67a464204bd34da479617c8bea4e878c842519655dce03627d833f9b9add861d5ea89e85fc6a56e623719a163159302dc041c7c0c7c493131e09e631c297cfd00388f9bbbcd9a216a8aef364ecd579719bdd5ad40f2dfdcaa3756f574045eaf4f8b05b4b78a7294b77b420cd317f1b74e40afb649209c769d82e434842397749fc5f80b89a1cfba4d532045459179259e37d3506265fbb1b54b0e0d55a036746447dba"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7f63d99bd8bbd79dc7916069e234578e8966e7bfd0ed9b8dfa181fe5c340c7cbaa50251d4cf253346f4c4333567f754fb828e8e19399ea645e97a7006536d76198f42af8f57a03ddff688b83d481a222cd6e7f5bce75015783749a34fa5f20b2d0e17610e2c4526dfa780bca5c8d50d08b85e5377820ea657823599a32cc55d2966702e8b3f199f5dce42a2dcab5d372f6f30005e72aba34b149c89ddb14c7c7f5466902c0de4cfa2a6fcf2d297f76d9300e76ac7070091c9ff6a56bd80b9f09be64638db7c200dc455f0437009d3549f543364b03a2178bade56b1b33751752cf7cc744f2e69be572d56801e23e91e8a6f9d3260ad4d42c66cdbaa0b2252785f35500fbc7a61df87b09eaaaa4adf08cb42ed7414928f085baab1991fdbd73aa0afdf7623e14751ae28df8824711cd68c608bf6cf4829c2cc7db1159797ded24d017b9db6d284b5fa2ec7c4e22f56630b3b8779816ef0c77d6be4b3fe40cc0b286284a8773975327f535811278ebeea8530137385a8957964b33cb3489ac683b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "661b1580ea4a54570440ff74a751624926471469166304117da3cf7c9ef2784c547f29d9c18cc3f0de876b259110180e12570868ec164492b7df971eb6640a0b8d99dfa4e40d1c0b0e10e6945428b2e7e4ab3cac129f34165bfc1e5f370390c865ee44e2e1eb011ee448cd547c6c42ced8b776c9d3e4bcc32106cf112f5ae94e01d8a662e350bd76aeae070b9ef3fdd0b8a9ba01277fd9a5b512e4e3c1a0509b725581959abb340422a0953e79002efd49b72354ed8e75999b633d399c7b7f4e6726850f05d655a600b99f0cef7716ca11a8ca98c40322a1edd15c6e090748994e967f381265705971f9d397fce9a6cb7ce5d3669ddf6c08481a1322fea8c3f030d53514927b269a49cdef8fa287985c3d6f877cdfdc221fbec2bd1f38b4c3d01fddb4ff33e872cfaee30b588102f8ebd97ecca29b695e528ab0ac4c01afa1262dd4275d8de4712a2017dbb085b24b99bfa0b1f94b3d24abd8bc91eec4ed21958602d01c85eb34c2f09c0823dc523b01098c3167de5746fdf6f2661e3c2b541c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3e124cdc65f1d8fa0ef490cb7c23f812f28175af02b82f168e59d25e80c27678db0a49a1c4884368856a71a4b1b2f82eb6e3141d20c1afeb2f1c3ed827041c7d4e37d6a2869192f9534158813b0acb938610624de4cd410b49dca8a99ba03cbdb5095bee0f6f9b7925e7fc75d3173e19632ffcf0a9800cf75c2676fa614c8218ee996c2914d2205809a7b5bc3cfa6f90613ed68691927aa46a026bd7b2eb59d6512092d87e613cc0f0e76225ac3496051cec1e2d0c390235f814bffab11f67bceb3fcffcd03804ee6da2adf173c1abcb6d1c55960b3d4caa45be02d668ff29a063831bed22985cf74a640420beca4c08d2ba803b847ff696c364aa9610b9eed9a39581f382e76cae1fbcdcd80372499292e302f662e19b36224cab65378dadb6859d9daa4fccc239a61df8e7e288d7f4f4d6332764ffd3790fef9eb64b8c0c14c781f65507570ad29d7afb4689919d3cd674a119bd703cb46e9c95617aac644d71827707f11ce9886ec67211a68869bbfe8ef7b5bfb6af446e75d87aa6d12dcf"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "67a7cf917c469d5b4e5c5a6ad0665feaddba9246cf577e4feb2cee49eb971cd41e50386520c3c22e351caeb8d23103f61af2a6abe15753ce14ffc8afa3a66618617b8c2397bb1b14d3c2c39037260e55b1f3f837b193bf39fa8036ff74f9a7adbe5e6d1cc39d368cadb823ac1f969ccfeae89808eb383c89d514ca122f96a7d56f578a3f10e4725b152ec06002eae7bc2acda9728a3fe455dc5f639c42c09bc6517f92dc223f1f08b3367840506c80894edc65d5163fd73d20048136f10f2583c6048c7ed8e82f44d0cdfed868197884dba5ccb4ca532907eed31d3678ce82a0163f10de20e4d5b581b67cc10f7d6030d2477d17e29baf828903b25cf2f77c17d028de6df352674b288aa60a3437834d70c57d40c853df98ef1e38e6456a7cba3d8082c5c212ce08216f604a997d632e7d0f21b1b462df01bea08dd484e0a9e150574ecbf31dae214a8013c2e640a3b01b0945cfb4d0deb5c83a24438156602058b1bd6c30aace6742264f8ff7682e18529010f25c93980a5214a90d0d32dcaf"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a7f03b3383a083af9fe06879d4200e5315d5ab86056dd87ed326fbf48589f95da6b5465158e1b33099c26a962b7b5eccb81fc2962188181a167c6552f1c33ec35ef6eed346ac46b4ce31be3a1726b87387a7e5e7780900f7c0a909e6fa3a8299f5629bd8d2da3e6339c181f45d794879ed812974e5203f1cb745a1da6b34bf886928d6fef9111cea3bf64bb57057c885d8dbba5951a23781993c1670b75404b990a01d4eba230b15a65623ff2b2556077fb91d846b098e16eacf85b541cc23039e9516b465b07e2b06783019dff98420fe15caa3546e823e423c5262af7f54b6d9ed3dd854e41bd1ac9aa4dd951784714e5365d76c096395d76a647090f2348dfaed99b4ded7152beb3798da4bcb533813b653efa5789b9ba863cfe1522e5ed0de68e53b0382aee6b2b888e33482463962a3f9d817a2dbc26a070212046d5e6b80e49767cd85bac25ce2aa0d02c5ebfd4c75ab733d87408c8ef5d21baff4dbd409a4e6d5fa7c55cd4b63796ab79fbdab7587bf234f0690d8e9cd45baf4857ab0"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8100d8da45f6b2d77ee4c5c5b6fc8c617d85867eefcb861206a991f50638b0a582908846c8c10eab4b694850b6e440d85fc256fdde3fc4092c262041b28e1daf88a54f48c0bcb5c17d9e76ebf5f86c87e3b89478d679bfef8135cad5394a8e6211c64614f6ffc813707273b4d9496276dfe6d566582eead31eff06769b4c6ca3de97c0a622fb282c646cf3de6fcf8a12317255d724f099f1efb4a7379f47d4f13aa11d87e778cdc79784d6a6b5a2d68b9e4ea52bd507a7036c575485c8c377b8db9cf662e6eb973053b3630a94aea288191d9f26ee5fef5f10be3468c5a721421a07d9b25d5604a190d842fb3b92e70f247bb339295da253ecf1c9011d8d49d68552e192eabfa012fdacd63b9756ffd508c04e28039df08867e5d5298da5e72bfc1f0483129581b25ad3bc69204f2822fa5a34e3af4f9eedc0bb68b66a0268532cdcdf5365eb5162d05cb5619041a2f9dde7fe444fea5e9b3c524e3760ce1c633758ced22d5b98f0e1ccac9af15cf825cbe9464a5a5d45a8d1ea426f9499db8a"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "118bb4ed79ee68eba200bfaf9909e1af3216904d9dad25815b2052da7d6e057c1fd8afd0929e82ec945e9dc17740790f791a1eb546dfe8d382aff418b094244382b97b8b7dc67400c99aaa5c68ecacbcb429a151ad0a77d0ebfcea781cd3093c312758c7478d4b50682702ee37f69df129f0eb6f19d80e88982700cd9bc81786fadf5f7d9d37cb07aa4ec7c863ab706c42133dbb79e34a22cce78617d86806ace0b4fb28525a1b0e8dfb8da4de2b5792531709e1632e36d8b80c5bed87e559819b5aee7613f1841e9f4b1a3caa77736eb71c9c2b190a6c6ebfe97c922b7bf3c1ebff0accf555d447812a1677d576f3a41a8bb3e8062c49481222c8c53bc00ac821c1cea8b909031f23cd1647f685260d31641177b29096f426816337b70bec98cc0d911b0f926a5c2782466af2a8cc8e8ae78243c916986bddec9169eee2f7d84a9d070ef02878a3b15204aced6dbab3c0fb6f35d07bb2514755c318e92e48010cb4ea5e7b9c073fed05a2a5dfacc4a94b0d78ab89fbc5f8746ff440dbb229a2"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5bd8cd7def42e82531a599773e6f6c3ee215652d53c3fe23b7c0269fc205f3ea088d5224d350040c63a809e39f878d4c90f1142e6c348e4928dda4e40e66cc131ab8771dd5ad09d79214398befb6cca7e172a8768fdfd671e4144498cd39d8797be2d220a14433318236f81e4a09f2b0d0dba983b60cb1e51c5093c09c076cabf59fa8511a99b83566a4c115652600d7c8f851c6ab196339cd6030acbf00b673d7cf4973f34a800da2dfc30ce33eb63014320a74fa609b9418ccee746433fe100767351094e830eadd21736051d57fa04269a73199bdc235e8a6a683d09fc09e034eb8900c039559ae807892176fcc38bb243e4af220bf72c36ed94c65c06de9ae51fc5f41dd9fccc3ba2e49247fa8a4c0fbb7f9b43c5d62aa76a4c26582a2fceaadda25d7162a240a1547ff574c0272dd7134fae741d394a2d0f5860ab3a6cdca6969cd52d3ab3eebecba50198152f346a20c2a4758c399872935fec3249156f7e8ce5ec5934f523ae5635c2ea0f8a3f9564d9ebf90892901d5f87d61f7529c"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "ac4e4f2e2eeef864fd8aab7915a2d121f7338da613b377ab7d3203e93167ece1f497be43ef3a04ee8d5c296f9a7317296812ca4eb4c68ce08ad93ba4076ef885104cc6f0c67a6702cee017e1384d0de0ef37b531724423a3191d996c6c9d41c50442e5b950193f8adcd5c22c1cab5a048f21e88f722d942f49db7f2fda83e880185a20d362a1f73664013500a01d01d732439c16eec7161f0eb81353bd2f845472ceb2b67af3ffe6221f796033a8691ffb6c42ae437bd919e6705157aa7743195027a84b360128e3ac32e48c84abc183ad7e8268e6992b3b2b0ae37d1bd7d4b4e4f0f00c7d43ac721d00b49f6db8a9fe89ce4d18e823debce909093a9f6125ffe6f2827c151bf6e1419fdd43cab55e54320f048408871db6196aa6ca38e235c7942807d0aa5c7496a844abc56443f448544d173e2f27eb2e1ff95513962a09df7a981a6442c2a85846d0ead5efef33ed396227c60b3b0169c82bc6cdb9bb8de8bcdc59fdfd04dcbda80c39469643f96ed60464836b47d1e1fdad9b9860a5f821"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "995096c669017cf835c7be99440523256d5e7c11c06af56032d785d521b68272771ccbd2b403d7ad18d73905a63758ae3a5a5edf49ecac57299ae74987f79417b9880e66a0d9893e29f31d609ab1622cb357a8d19d95d037f5d19c41dcb586111355e7fe91dd51959beca4dc689b36a7f39684753e9284102afb229d50b022427925c2bd4dfb15fde2d2a18f7df3069fb97605e02a341e325b0bf163fd6eef8f7013b4aba1e6f3a311631f5cae20bd48fdc3246e63215838136c402894bcdf1179c05e11a76adb92686e3afecea8ede7456d05f62b7a04983c46fae7d2718515e875a11a261d54d30ea4e8f4db75600a1af0c884635164aa72bc129c1ce543dcaedfe62f7ffd72804db58066613c2235fb4095869975196c1d5f423207c8de777673832aac6e129f7532e2fc16d7034a1255f378c504ab10d149e8d2e79232b01f6261fe8cd73f9f89c277aaf38ddb71ca92194fcd569802a65f4325a4f6aa5e56e0bc5cf2156c04ec0aa9dc63278ae48de9a1657dbb62153c1392e96d551630"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1613ed80cdf3d91d6705bcb079fd15ccc29373b03f84510edb0d74b5651b91967e60738258a03ad3dafff8d83f3c18feadfb08e9a94f9f131d3038288976ef35b9c8dc41beac539dfb0fa1e9772524f512a2054e73467c8443abc599c8a58b46ec2340fc4b26f831af6e09b8d5b876596008aad2c4045fc09bdef06f445f54e36f591c73d798a6905a993177b094dfb345a55aacde1304b05cbe652a62e9f6654b24153a7cff6daae42a55272fc72a8250acdadc59f74dabefb9d321e80050ac1f211ff7946e56d14619355544058b714a000d8b4b096f56338201f22114c81370543b392725b735017a550c7f685b675263f8f9b43c1f8e8f8064764dcc34c0d581efea1647dbdff9a296f1501a1614fe9d53d52ed278a8b017215503c1e648a706c5e6c3a4eb26f5eeae804ff5ad0116fb9d2d246723eaf6533ec71d126bfe7d08273e587a025c97c4d2a55a1d850a730495af8998ed35558866bc580d7c51212e63841f33829156ca9a938aeebf3a38bf67495b686d484b02c4a151bb2661"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4205aa36ca11b03b644339d978e1b02228e2ad387aabba21fc649a8c75fd9a1a4f29e91b4e607b4b5e3b86794cf9242dec5509bb30e456e4f5dcc57e83028c60b461f748b1d7e79c8fa4f934ab117114956da7a2693a4023d349a68a4cfa0257486d42a0b6c348a9f77b2eb5d8822569e3dea0cb95c66d68b7c955e98a9df4e921bb2731855f35f0327142029f8ef4306d42481406de9deba401b31481597653cca1234cd20d6cf0341292362a4402dad4ee4807b38728b265ed0d10d7707c8562f14b6eb890c5a1d427725d39f10802c7e865638772a9e0709641a22809633b9ae19bcf052b40fbed8a00531e869761a6312216d69fad97a7f58bb20be27cfe75a776a45e207b6cf1a10215da2c6ef89f540006a2177c840493c83fdf616ac8c9cd647a415532ada9cefe067a81393df8bb94a3449ef74bdaaae0b120165f4a64703d7daa14e8dd13fe779b794699ad57b593ffdec9202f9852c33a4336cbc0223e2117b37118bf9fc4fa6204a7e584db27cb009b800915b4618548d24b3b30"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "906ed74270c0bdbdcf086ef69dccb51c524331e79d6186a8ad18f86c11657d77d752763141153dbbffe125f9e26c30f1d58808bb8628bd1e931262e872fb6503bc0c919b2586c4c5dc6dd53cb122086536a87541d61dc33ac6d437ea1b9a9e3f4476f7e7c3926e6985f3b8df8d7144f6a81568a04a6eae2977ecefe2664806fe144d9a174d53734be7deafc737d0a3e6e54891d85acd0fedfebb55d069cd3d3b2d6a1594ddf65cb433291ca4f2283c21a5aa4811bda25fa9a8b41ca9c5670cacf721bfd0dfbf388f683a7f87c39654d6a8c2f85196e23c915219e92189aa07f60dd6db16afa97cfbdc9413ec33f3bb98020ad58d4895f4959646727521ce4c2c0df3360fa3db123c455b65f4f0b0aa88caac6da5877b1da3c49a4fd587b3bcbf7fa0d107d69fc415842abc860c19f32dfefc8695b863468b112f0f886c8a249496c355740e07291493bb08ce9c941cd624b638b3466a4c2c51863410bd22488c5b7e00ff636f6dcde4ce7ae66614f8a283709b07f80a42739a0b2d7092031261"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "710071dbfcd587bc3fbc2a6e37c331fbf26a882447445b54131b3a1a9595c25d3ef72af44eea91884b1fbe1979e0572d0dfc4d9954eca8960cd41b5d2f793d93f88e3354831cb0b205bc1e709f28f6a390a7392dfc5e5cbce71a130bd75a99aa23480a5ef0a1eb99da7497c2bb813c15e6a47c61f7b67b1a67c83525addc63ba89234c3f3316a94b9088356fd87e090b1a3f9c3a4260fe531559808cbbff30332f9758212b8c73ec1c4ec42103cc05068dcd87d51fcfc2a8d374c0cef87ef105fc010e1693e0aab4b37d9532bb040dccf8fc5b48482f0756ec9317f250fa9650cf52648bc87784629ab9d42ffd7f62c9f38bc93cae77b890eaacba10f64d87c186efc4890eada336f39756b9903f7622ad3d2391dda972c4c794370a39570e670c45d6056ea957b5c23659a3f62382b09d6a6a15eab19e73b0ef3936eaa67b5582f3d12d57a7ee8df1b514707817fbefd6d2ec7721d6683675e2b71e6a572d793545d119b2668267c02a815dc15ed2f7b3c260ba71f3d42d6ef1def6b2299c0a"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "780beba211620ff25b4ef2a28918aa0109f440439def1b3ce00e1bdb15ba03098f4b22d58c64085da24ba754f4d906063d09b09118f7137969272dcb3f50311d1455abc8d5a75346fa0fa76ebfcfbc90a5324caae08fe7ab476e5544b0547ece39586ac9dbccf4e7acacfe4781583dcb802e2ad1c26f07e87c289757201ffd705bf771233fbaef752ee77a78b8aaa80c5c720dacc18f79569ad5cbc527fe83031ee8496fae45d06d98e6fe25374b32c05d866e26b49444a1b37628ef0889a4526d956c6d6ed5658d72dcacc7a73cdd26f3d946cf4295931aae55ba0d04b38ecf38cff537e391053ee4d14af46f021b64a221eb6da048672468eddf0cde0c04515c94bf023ac82a46287aa2228145929ef75ad9707ffac6cc53cfdf84ac8fa3db1413e973cc2a585f7824abe2fdc8eeddc5a735afc8d9e6188b1d393ab05bfa67cee3b489822f2e2730f29e34433030ac1a4192e5c085722d0a817e59c46404007f96f7cd1ab5481912748024cfe5af0b552a87001f71101e49289f3063863752"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7d384dff94bab08adbab7e0c460753fa04d665e3c7fe96339bbba8615de72e5f05f3296087f9bf118bad3751d4c919b58a91f454fb75574fd82ab02aead828fcc2c12fcc07afba81e867df91d60410d59b963730667c971b4f88dbbbca7b3bba6bd28cb9b79f422bf28e890eb2ec17f54a45c065fc9199d23a71dbd7f3d2d768752c66cec77a0d1adf0096afcab7665744c305767ff8872dc54cb34047e390eafa20dfc83652959841971b74e3a47dc55d78b8b60a66b7868bd730ea62fcdfa9d89b8ddab8f61c787f05712c261680e98f7e806bc8e4892e9b50c86689a993017e40cc15ace9ab75c925b310ed16ab8dd326058df533142c163a0936871855bdfff3a48346a235687f827f3a6c60f909c46d8fcb7c0b572ff43be04fd28c0620b889f477daaede2518997b952740ace9fcbf08554b82eb369944786131ff6cdea9b38cfa109276ab5105707f5c5fa9ea903667d0c962be0ac331ad93ffb71ee451125fac2d24aae3a70c8924667c6863cd96e30c1c8a6baef6d3c010722efa5a"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "40b888276c86d7cdc1e4400e60e5a5fc055117dd60f0ef7b26ca3fcf8c40c631a539cb4576be7147398ee57f62c66c7486db9adaee63fc26e47530ac318f0c945f818ed70aa6ec587109b6ad36b2db30fc8a0c69e8647b6d211f701cdaab778e2c41be2ec198ae42dda677e7e7c81aea42b98cc0a7428621f85a69f963e1a0d357f4975adb9d1d22277918df7ae9d4f3de6535c0c0a36ab5dfe6efde3c7f6b7bb4e8fe4b90021df5a7eb946039c309acb96b1e08debd287f5b7b10192479e4acef93e65f74c91d3a4802001362a8307e023fbfa562a8a832f0a6978b1b00e9f6a443f0b8fdd88a99ce261142e5184b8c91bd402994d6bde2b706c521302e87dd880cfe06c5c639362e741b84af1ca867523b97216c34379e0f37ae04dcc9164dab3c5bb85014cbe5e084288ec7ba6570c00c031617dae8ab0789f571e418ae84001acd1c9a8d41cbbb1b80f0ee24464a129f7db656ae8175cd7cb4a4ae323e6036316b75dc89fd7eb9f5d28dfa8d7783430986793f3854c91a2feaeb89ca41d1"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "975019d9edc36606afd272018e374c80c014ae79d2962a22b0234c15dff01b6da3881fff8e22fdff12dc49f5c18613b04eab0e68aac7206f653e59ccd3933f4a3bdbf71b58f8f660067c3a4c2324511b71bc949489c7e6b905aa3a8e007192fd6a79201f52418e94311004e972f2e294800f5ebb7b5d78e26c8971010dadf7abff31cf528ce04e7c9c81826bb7457a492cffc71393f9bec84f2974ba1937e6ca3d2e8682ec39d7411b9604ea570834fa266e98d5550dcb1348bcf2a2e9a41d54d024f0c90060fb15942a183269ae9a46942641fbfae24ad1a733230c2756946f22ab6cfb6bdb59c27c479d36d87aab5b0b32f813c48f299d4d7573fc3d2832ae7bb37919cdc232045a7dc41866806e60f230944bf8536892f3e8ea3631534cb09dce525f06f2f239ed73b80e0beda209113871910a0f92ab9430711e632a0b2d4ffe0d580de930067af090cf14aadd2eae9289880a992a39836c332649d670cd15d3644edae613f299e2470b5fc6bafe0fee6c25bdd6311fb9212f3a53fed6cf"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bd7b3136b1c07cf1ae0c0cf230434ac2ef321f7f842afc2ba327068559ea74c9ccda40c3f38200ce47b1f30ea00bac799c745a0fb4bd049321682886ec43fcab629937e531f9a753a21e34b64f5dc193baf5c1f35efbaf45c76c44ee3a8153efc62f81508270117405d70e758284d9337d9c11455aaa99f012ec3dba4bf033fbecff333ed2fdc077e428c2ab085d1e8a9de076310a252eaaef419c0da6f78c4d3c8f4e854f6f457e3b661d4b4b2b23ad349359f6a0317f7b33017b2fea03103da20e3cecdff0673792f3af365e3a83834275f633905f27f945f2fb73bff654771b9d8f139c6b5729b3f6b8446961017a98a47f1334af38f7da2c73e85813fa4004f4187100b5fa5485612305ecdbec484b3aba4069dea3563a1e5e2a28f4f51ae932eb2abab05f3c5bd100f12f1f709db947f4180b41a6a1f5f72649b0b77a99201eced2da76fb3cc2fc671ee4bf53b27ce24ccfec446de0c6633d750a2de02d0eaf37979d337dead46124184b3f1270a6d28dcd4b88fc596bccd6610249630d"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bdb523fdaa37ae87a2cb8ff79ae7e0ccf120d06883b465a07863fb4d7126e133c4fbff822b953a6f851865fba7946ce7398c2a6bb20f1303407a5c6222d0210f8864fe0042cc095140db9e4d6559465eba1de423d15c73a2fa272e6895eb2cdb94603505c3e5c3b09497786d3bb7b43fae0b9e4d9c07e514b4995df3669c012462d664bdb835fcf56b33cb47b4895a01acd6199543b2992ef84e2036424b5a19b7b437729aa3bfa1c853ded456f0845f4e99a78f7e9120e52060c25c8f834fef84f6e6587c08b2575fa5729ce83f9c33ffc647831368d25585d3b1707acdbdfb036a2856f6e0cb11a70ccfe99e79baf9aafdd7b4445617b523e38eed6b46d89496c4b3f082b32cf61e1db865b5d58f05e21139fa82aa9d22b26b974d841d80bb2548ba508df25b91bd048ca2ce5d5f027717f29889a2a198a26a78b14e5ec38fb2b0ab966d58e9898a2424042531a94e1c26d660b1078c496d32a4584ddb7aab6e3e11107a96f29e294f584769361b5874788a1c80716c1343c6455ac8005d40"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c3e75d79edb0270d916cb8ea9cf550a263bbaecc14276128855c5dddf6c3ab20f829c44012bda1f1ae6f950e32f25c19b0ae32d2b1667100f876eccf8c14b57e3fcaaa35d246c2c16834f478992f12cd4cde38ba25417c26c40035cbfcac7768ad5292803c47c3747995df668db1604c78abd5cca387ee859c85310f744e3b2f904139a7199fb565b4155ef72892b7b70babe0a56cae54dfa7023d727702872dc148edc1c6612acc15b058d5f57e4f2922da88a76c13c6120eb38200a8687039564ff4c0cdadfc96e5e50452f4fe5cfde5eeebbdb3c5d46ccf0edf3ecb5616cc537bdf4a79b86eb25f82f019da2022db0256dc1f056e4fa5f164b05d6a4b592b3d15e1f8c0861864b6e3ca0c247b4061bc8fd94bb7b94d90f0a8e58a513b00c5f8ccd86eca3426c1fdb73828696e92706879c5d4e905a1cef460f41adae98d104875a12bdded0593c86a8eac001e96b7d8d2a9de408fa30e6c4d432dffa7d9e339363292c63e052e000140e3d3a94e2ef575ecbfeeead65e438e5c420d7b0019"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2fe799c044286d48dfdc97634cddedc2afc688dd4d5968fbd32bf983211f893f9626a73d70b2a670869bb9eb4ac0dc6bfc2a6cc3b5e9743c26b5567d4c3a60c6e7d6055b35ac49250da82d20299f1fcb2d88b0dc268f5febf8117ed5b36928d6df4881d9dba4b3a21f84210e183f2d7e85cff74f1cf5fd1200f40a36319a955b4c58dfb4ce10456d97b6a4c93546314e2bc20910c2e948f0656a8cdab9ece6e4a78b6f7ca2936246d4cb47c09a95c119df0ba667c0e8d47c28485795126919cd57e8554d7dbd168dd9f5bda3fa89c49315cf612be044ece26bbd2a5c5af6a6e15f2e0aa54d8681511376336486d284605bcea06658b03e93425d81ad6f1b308d4a7b8bfa70c359517ff1d843cf71b647eee094ecc5939ff63385d7137be1deb181a748ec7fd1ecc1cdde189dd2d8f40a6a0ea5aab2c39ea6c0561fc5618a48d5bee4d0d37f1c41649ca44f34cc60d5b537e9513d4906b029cb3fcd02e633668b8d29e1db54ae039efcf0f84d2338405190db329210ced64ecd417aefa06ec1af"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1c56ebabb0c9a803ba2b004bd8d07a4c17f5df514a600c106544abd472c88c6e0026f8b1a6d75e7f769dbc06a0a9a86308bcaf90546eeab4337821d2efec9c10de12a9ee329240942e4c290d595aecdd16e13a80c024ebfef3ab5b227e45e22f3d1a5e192844f58c5be58adf6bad74d673d63b757b0c904bbcef2d8e3d2bac8087d589ced2bf770d6bf52e1d499f37052dcb78713eb14af08409c7d1c81bf760e76719c17df30136cb8a6d530a3df8bbcd811a2b1f2fe6328bc502f9f36b920101a43dd2cd2038db67bb96254e92ee63ff5d1f0f54b9789b95a649e82d42e6e15b10b3590f7bf7c69fec65f11b04f7c784a9cfa1aa97fe94aaad97ed6fdbbfc71d6b01b512f6dcab2e43c173196284e9a22376912c1e4fbf2e20ec07d962b22ebc6be4e741a3a909137a5c60e53849825211893f78e40697426427b8676ad1fe44163ed83e6dcd6469ec48437e2387066e03261dadb9979164bce699ec3818f4b950e32e276d7f58646157d95eb49bfc259e9aa6db1032f081efa7c72d13367b"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5e6242dbdbab8159a5aa1079adac2a04cb59b219de221f28c3a62a849cff9bbf51ab5cd9a8b922280ac0a6029457c114ddd48746af7347974464accb9279ae874528543fe722eadeff2474cecb81f7a862d374c18561152993e3de2f72fd1eda1f30ee4e34f85efa83531313c07864a1d07561a96061ded28789b08cc5dc08fb31d62a8854d6205b7b61a4e7b29abc52f29a6bb234d09d330800311caed49ebeef3cbcf930d5035032b950162c0f3d770c8d5ad51bddf43b800740e24ec948218c210062bc5657200ce4b940a59b0222223b98f709a249b2b0f57a541d8406f19f0a5439f72445b5c3241360755d158ada7837a58e81ba17150fcaa12d9c55ce78968ecd07adddcbfba7933e42d39f530c7edc0e5642e32048e7c0240719b888956766c21f572fb557c5a76504bb426658ed25f1290cb49ec235a3376d68db9149f6038f1f868e04a1b4291000bbb10b916907147d7be7970267d0d1eaefdc37b64403739d7e825ff7ec990c96a672640aa3fa2a51c4201a107fab814d78e25a"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4fea1e5cab5718fbda986709e9a0e5a0730199fbfcb137d08584ba5ae360b995bc20bd85f1e61c72ee524d0abd6c03f4033875c7e2d7b4255a570757eaf745f6533248a4d17c877622fd0448c8805f5d88217b6be3df09c736d617f48da91bcbe3b634701a401f1e836b32633d118b4f7189a7d999f57117bc1192779c5528d5f3953c7613692b998eaa6f8c78e640dcb5bdfcdeacb4b8f74ddad65ca1dc6d2d8a1454a6ecf2e6da3609a08a15eaaea56caa9d029c5fbd69528290da128d4a3e0f48bc0ae4d21fd337ded3c9b904d80d73be331557c6db07ee286139bc1ba62ada3f04260c94f0b1bd7db1fc8c8e06493470e7a206e23c0c54f9010d68c84bab0f0c4d42f8091cbcacf3a1d192ce151394b83118dfb93e7b1f9dede9462415b6bd40106266043445b0d7ee40e5c6857fa026f14ad01dd28f2e8d11224663d30597ee14ccbc75531fdd8ee43d54bfee6e43fbae20c810d361cfc4103151d8c287493b723cd3abf298869ef9cc3226109b2d90481c8bad95497fbb5587d8135f5d"_hex; + r = false; // result = invalid - flags: ['WrongHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a761a8c3db6207c8385574f6ab3d42103e5c9dc941c02ffbe0dc1369900360155cb591b32ac8725b01a1d9686ab442af899751d9c4d3a8cec2cdc6725eaff56e8a13571506690cb2f26a0530dd49aa380fab93f4f0dfa7a1e6b1c8e392cb8bffcce1f5ffab5f82ba45d7dd922f082340acd1738a685abbfd598772fd4d0a03a44c9166d807364437464bc3b186733a4aca3d746ccf84a9cf512fa66f2cd73f029ea837ac15c71b2319d1adc9fe9b8e430a428c8f3f2c4b4ac525f94d56620e3c6aec7c87de0afefacd6fe8d817f25ab990ca16d4b3339f15d0fe2de6a0488901e4aa2844e42a8d63b46eced84ce33a346ace4ba03daa4f5f978df6bbd956d1d9bce89a5964da8eb72d9e3b10de99e9ba54f6d24d59d31ecccc213aaaf2d902fc8dfb2059eb2ecb3e17fcef97f8ff01aa59e4c615bcd4811afc10db1d1c04de71d0556ddca363b8a34f48d97d540b045fd0026655cf0c37c4c694fcf2423e0116165d4bbc7395d72f00f6650a787d6e36357077630974d375c2ce292ceeb568fc"_hex; + r = false; // result = invalid - flags: ['NoHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c3599d8539a560502121ff97bedb8a1c16d10818a49408f6152ba9d914b6a852710088e5c48826a099ecbfd5cb244ba16c04a71f96663930854a64fc5ae461677dba9744fffa624e64b9919814383ed0fd947e355bd1e651c0027697c8edf76d804394f30e6598a8c805e4bd80641c81f2c78e9a7255535451186c00e963edf2ca4fc7d57dcede17b18a1a22e2241da6b71bfaf24c9abddf9a4542feca1905dd9048491a5469da8fc22e46785e534a53623fb550072472b46d0c9e6f762bb80947573e269d785f6580180bc977efcb3b9af90a974433ff7aa56674af989eff32ed8963c7b202d3332cdc0285f67bdaacb0a41c5b59da507af942d9bf59c504aed323bc22d8e214546820fb32df77e52ae9d458b1d2994006c12f31701bc09b448198956618f89eec20a2e0c916d40c26406258becab6907bcc348b46e7195734d29ba4846ff63aee05e604bc2df75cd3cdb3005f9d2573838a792e68e3cc5f2e6d447cff1c2d0324ab8819031e9eae8923478c0908b0cd2e9b80bcec076c2a0"_hex; + r = false; // result = invalid - flags: ['NoHash'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4685dc2e6bc376f600b572619784c068b53fda5d05607b23b34a2d2b434863c3a49f4cbf806f6001888b63b5ac011991d7487086e9af37eb4e3923d45291ca8546333438a9df5e743ecb85f9f0b4e0cc4dab8d854de1aded922465e86ba3c211d8a89166c8104a82adccaa44043b74586f4644584d006be91f8f21b90f4378bbf6898359fbe697f48b835d004df3829bfd0a7d95f13d3d0804c443eae571b0def6b0d8f914c2c7316c66dd45441236884f41393387f6d94b70c12eba1bb0d16de7c2340bb1c33d61404fb8b22c9e9cacc4a9e92fd95e37bf64ee7f9d0bf8a00831d53acc32e25b0cc96613bd74cfcea987efcfcb3d35a3f2ada5645fade99972360492c549fbf67b9b249eae2da4dfc7d214740addb5c002498f2560a92782c50df8990bec0a6e9c66e595b2d5c6bfc1122d57d5210788e7d014ba61ef465ed0eb1e99ee24087c9647ff067609024949137d7ff2b4d38cbbcb255cbaaa2809025678d458e456e753f35087a7c8f44de19d43b990af9ed21dbdf7970f43eef581"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "ab98af010a2e7e1cf9132a995fba9a1d8a8988bc2eb451acc3dfbceb88b075d0d77d55d3a29a41b68dfbb831b6e4f799b9f24406e4e98f8dfc8b962390137389cbbbb02541c8f5617e22712581e1ead2821318cde88869de25784a8a96a32ca33de29fffba977f1264519abf74c7ed1b629ec309cba078f4bfe6c6bc2efda608660da5ab90d087f1b48f5c4f03518cb5872413180426bd35215cba2b8ab302ceac9817c768da0a5fde431134db64f3aed67c7f53257cf8d06ea3a62794265366105a9e2893a9c42ff73751a95699250d3fffff534194467f65288929da8b49c6d24ad78e7f462a4b2e09cfd0142213482f60027801d9ef1b86179819621e36019130c03bf016374a3f2ce6584f63766a226f9f85c8f2eace9f4802d33b55c0e169339f8faeef1acac7f2e23f991f4916a63105926edaa784a80b6e6ef8690882d0dbd71cfd54e64593481595793fb992bb11eb5d49a95975addf2d75087a5f5efd2b65ccd1967a065c684c05c560c7d02cdd2973b9bb5361b79def5f10bfed0f"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c548eb5ab00b32b5cc200edb95a1f617fc9a2b82623da511a092c6cd7d428621016ec0e8be4ca66993a079125a4af990df598d5202f73822a5768de5c79af28487218d0f6a23960db9ea8f050b4da444a44bf116179c2d01c4e7b438ee298bb5769a8efca3bfd4492ef4f45494e1540ba279056354f5eb554193269627bca912f0e770e230d5e3671292059515d163cb52c181c160ae8b29de3e90c069cdd757d4adfd5014db2aaf8371a390d0ec6fdc19f37d78776b00b55db4d6e04e0f047ed08a3896cf69bd155e1a95f33fcff2918a58ed0b377cc46d1a09825d06799812309f6473b2a378ffdcb4e6a6d774009085f4cbeff43b542e2bee3aede395f3e0b5c878c303b6667c34c2ee6440657941638b8356318a9ab5d4a072ca83f7482ad764793add9f100377d750bce70b9d063d26ea3d8f29576de1a3795fe2be290623c119beedce6ecedc86804f73f3c210550bd582a98f6a7e86662b6461efbf0e518bf28d9100c09e44c8c78b5158197ed2ed1675291600a6442cf2c8c038fd7"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a827b2bf3e3e7eeafb7593d8bf7e808f0e13c07daf8d8692a1a5a735d367a3eb62e4f31d64e2dd2febdf74854d4b0f871c55086b8fc5b6b8f9d2b359c4787705954f0fb12c0c2929df324bfb77e61445fffe8f572d9c6ec8bff662233469f695e902fc08d51b639b5a8c224fe7757a78e587576c9db3059c047ade63d2f6068081af1f0527305f583f57f4b354432c8457e3723f2a169650b7ea9a97110ed4f15e6ae39627d1dd536c9ce92507c50e4979804b861efc05550a21965c89de6ea3fe9ea9f9bf38069bc8ea219817bba81afba9fcf9719a940b5c7acfcbca663cd8f10ddfd89b62e5ca04b51b88c9c4dba5300c3cad04676bf09c49dda2ad5ead343fb09a52c26e51e4b0e24d193bff9bc743090f333088c82598949881cc4b64d307ad621643b72ea90ca852f3b9dffebfbefe34cd63ace54c1f928c6eb878c42342886383d451ebd4c5062b7cd96371be2bd361907d93ce8fa1af6f7e96ab8a32c806c17efeb8329b23ed44b7b72b06da6c17f95413448054cc3b4675b9bc598d"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000313233343030"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "88cf275c44e89d22f2b2f4773fde444994a0bedf3ed525eda56d9820053b64a873bcb8c7cd5ef7d6f840b1c7342a3b5047399e8c32abd04756b435d02138a8ec095a0bcc0ac5015415120cba19e516efe09eca0f2a542a23b3a628ca5cff189388a9d3e4bb9d2d1ca811536ee457de17dcff89f127badfa98e0bfcf447c3fbccad554848df626466b682fc6bc8b92d435befb5e955d30440373db91bf5db9047856792031201b27e58e47866754912536539fdcd5dc5099a7dd5d7182cb6e960188a3291923428e33281c9cca1b0b716c87d71612044898ba4190560889dc459bd78c9acebde079250678a9b2015777222703e8e0e5e67a734059667d34e1bf7cb4a3e5bfb723bb7d0262460e44da937f7fcc263e73c1966b36505b047407f1eda98824332942b0321d2d50deef6dc94ecc91f3736705829bfbd62a456f073e1e8a1dcb759079ecdd35f12068bab1056360c85f71e57326937dc580703ba454d2c0def904c57c5f902771c5718f1aff3c0a3f3ad982bc40f6b0dcab5fe56dd62"_hex; + r = false; // result = invalid - flags: ['ShortPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2a6b5551fb45e3389102a6b87943d1821aafc2098805cb28deb80b5e1cb4f580391daaae20fd7ccafd6ba3984d1a587b675ea032b79e270fbd47defd929384e54eb97b61289895728dbc266d786368ebc31f13810a652c2d7371743712f99e89c239d8dff3bda454368fec7e805c3ca2b798f3e7397199e9975d6143b1e36463eea7b305f221ce27288153b33ccb85bdd118beca9b7ce48eb81397a2c642f17605c2a4b675104deff71b0d2ddf274155f266f227ebbafa8b807bc746c7b0088ee1f6e9611d0789151b1e94008972ee53303589668f1e97301789bb579c7344fa602fe3aac08467c5051a91ebd64e863d3b4b129424a9e0af3a9ef7a4f51895765a9c115b1a3fe88a35bdfe8f30ebe989faddb862a6cc84413db8a55c8a50fe4e2bf4c1957aeb5134f27b7e5d99e324857999d22ed5ae5c183818d395bac1f415712fd7e76fe280ac850b34a585fe8b01869a2fd4dfb57c9f03ef25e6f00b6a2cb2c2204ea2adc90341ea68186f6a7ccc845dfb5ef7770835d3af5f1766667dd0"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6190aafe3be21d22bd37e49f3c45b44a083afe55709f1282d805741096bd85e6f6621588b7e316f63bb15e96e721b3c24c79243d378ab65c05b8486c7a441620f8546e77394c041f75074e5602f8e0b83b285d9670608aef8ad55b7d86b41c466e2a02121000eaad1f2511e496ca7767bf2470e41aceadaaf2fc85e2562d996345816df0106af3fbf1fd78d0d41d82542ce8297110245386d614bb27ed71bc02f7abe585809a6b67ccab330c733668824780e346db1692ba2d83109f347b9b4dc7d39e3a4e050a66168c691e7c6e2e44ec043846a238e2f6df425751804d586fca0c6deab25f2f44ee3a69798efa459cec4716e9b56b85b2bd9fc589ade8e4cbd3cd2dd599744d8ec5f9384ff0227b4026ca6e6a6214cfa94f0abcac14c3e96502a354b0657eba9ef1ce7bcf61ce017e4678acdcb86cb77e15dd9093f64272f368eb578cb324abc0ff9fd6fb26f2c4aee43d03b21e381c8f379d24f4b7b95165b68cda6efc69fface91d2eef4e79055e8e4c3376999b6a696df015c7255d6ecd"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b12030000"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = ""_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1202"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1203"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1204"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4e28f546283f9ac74cc99c6bca79bc208e47220cfb0717aabc521ac55119ec6bbcac880bed0007c04eef92a24b091d9a09ee5d3b5be790abdb2c98a07313d505fc876adcbb1089026940e03dfc10fb46a0c2a764ebe86e51ecc2ab489f56daf38764fc0a36a9cb4529367c9880bfd7631c340fb7fbac0edd2e1def00d65bd52e597e2eba1be1e41bd89a00f5c66fbc18b93e9cc1b5be962780f6d7a9c6d375a28556114f37a8a3606dcd68c8128bf7a7e5f1205778bcf3048bd4f7c10cbdb4ae759954c4e4db0a9fe4df270c41bb86885dbdd8cb7e72a33322238a2d29615a2f01e9fc59c230c2cce58ad096c2de5071e020f76c8c39874f1de677dd5d2f96ab4dc145098d25b740b5279f05713daff54ba695f950039882059cfc2f86c35a0501b8d0914aa59a806e8d1403fb2eef163ba1d6e3d1e18dc99c622f8c2d360bfab2c9e8fd9d74a027e466fbcf4fa56777ee0fea7e04ae1901e65b5361f97146d7f4a550adf77539fabb7135967dc16f8ca99e8283dd69627cf27cb9d2df20bbbb"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "78d3509284dc06b54583e11ddf2507d9e50bdbf079fc319d107bc2527c1b742f4c759320fa22435d74e94253feb4a379128e7f33c5f3462fbfb92ff40c10b23f8bdc5890114757364207768014380fc16ebeaf22a7b1a9366f3fbbbb912347f1ef595d742a976b69377533e7b61d3237c3693cf43b34f92773497b8df7ac0660f67439aaa66fe179b34d9dd4d013e8fab958fbe2a27ce84b6d1c3c2998a50d41b6b38000191673c23792db2fe47e4ddd3b5396c65dc44812e55298b8b50b5a2a01d508b9d215986113b099717c3a4ee930f479308c20c26630aa5419c2589c8cbbafa7eaebd71fca9e751793629d767be8709fef9177d6631a48731f5e59fc7e98cd466375e8775ba935f12b45575819ecef4d78d85b6e984d90d41c93bb03c832fe415fb567a1d951f7dbdf407beef8caa3a741ca7c7729c8d8ba98896dbe52d9785feb49332e646771e7d84b75476aafa0a54512806339cb54ec1c70943beb508966741eba4d39c2fe535aa82a9cb92eec99d38540efa3e39fbc02d757ad74"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8f9ac1354af4161d0e55b5674821d02823b3a6b3f79cefb98cbc77f9ac2d91cc6345f989a7828132f73f3630a247a936b6a057b3e5a2fda0c5999ea7721ee8880960c24cd2377e869cca1799747142d57ad6a8d83ec9254d89f591add11a758e1ea1e29bd08f624d0e28cea52ed5eed7c0f5f49d3533eb1cdbb2af837dc42942f9a86b5f4e2d5ce506697ef067a344949bdd89afcc25978af4d50c300bcd0ffc9d93cc559e3ae1a13215a1d3f6030827340c6591061a5ab7e65153b1df8b25e1421f924d39c7e6f76243c1bb9ae4063d9a475cd2ece45f4e288fe0720074e87868d70a5584a9ac2b47a56417cc76f15154315545a3ed6704b365f15d34320804469c3b09ed211cbc9e9e767b6f21fa16f8641d8b78b8dff8062a25b5bd3b6a38cb4706c42c1fbbe66db1c05cb57531132eb94fe1569735c33ec491c318a686c837ac810be4afff605f92bb390e7ab3cd24c0cd997cf13f112e5aa01746f43902432639e1eefcbd37b413c586f057bcba40a8f1251251e84cb7c87c53c1d1d558"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + } + + n = "ab54a4f2560b9f65faa2f83bcf77d41803c080e4e5c3eab3534210982bba8a5d7e513ba50ba1ece33555c5457c41ba58f3f605a04369408f586c26dfda464c7b300a01f1616893264c7606daad4ced14df9a894a1f34586181294297e3ceb9580b0c785c056d5c566467f6f227f3084918d1cd17ed156e7f9fcce4757c5794f92770771ea5cf3101ca0425c846775f56938c1d1cad4401f4df2f5e0d3a3b2770f99e3c1cb4d9d4896c7ca89287b45831218b099add4bdf1dab6e2fb55d2775429386c85dff32c07a6dda504a9627529dd82c943554aaf23c5a5f6cea9c301b4b1f066b86bbef2e4bae9dc5b5e82e1fa03c29ff8bf38556729b356d5ba41d37a069fcc8fc23ac715bbea04c1972a2d50c57cc0159a46b5919fb670fb2a502d5ab66f0aa99e51016b83a406943ce9bdf0ab9b9e946574a5b32ce95d97ac8b1fbb48f0bf7e3c0d4b7a00d131966d009997a166a6630dee4a74c141cde0114aa423351b1dfdd3893a856fc632b6d90dbc79c8a61a9f9e31702ba69fb222860e60a83"_hex; + e = "03"_hex; + { + auto m = "34333630"_hex; + auto s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011a21abeac8409398319e65c8656f8f72e179dd1e99358c7531fddc037e47c1e688cd70eafd6eea01c823516bc79f89d7e52ee1eb4ffdeaad1d550dc0a47185bc9c42e47fce5503c3370a60510f834b4691152ef668deca633cf3873ce6613951784aa7dafde118f37f1cdf1a687ac236d5c956bced564b73cf202e3bace59667"_hex; + auto r = true; // result = valid - flags: ['SmallSignature', 'SmallPublicKey'] + auto d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + } + } // End of Google's Wycheproof tests rsa_signature_3072_sha256_test + + // Test vectors from Google's Wycheproof RSA signature verification tests. + // Generated from: 'rsa_signature_3072_sha256_test.json' + // URL: 'https://raw.githubusercontent.com/google/wycheproof/4672ff74d68766e7785c2cac4c597effccef2c5c/testvectors/rsa_signature_3072_sha256_test.json' + // + // Algorithm: RSASSA-PKCS1-v1_5 + // GeneratorVersion: 0.8r12 + // Header: Test vectors of class RsassaPkcs1Verify are intended for checking the verification of RSA PKCS #1 v 1.5 signatures. + // Notes: MissingNull - Some legacy implementation of RSA PKCS#1 signatures did omit the parameter field instead of using an ASN NULL. Some libraries still accept these legacy signatures. This test vector contains such a legacy signature + // SmallPublicKey - The key for this test vector uses a small public key. + { + auto n = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1203"_hex; + auto e = "010001"_hex; + { + auto m = ""_hex; + auto s = "157ffb942b1363b5989ec4beb93fb0187ef016de4ce055620825d13c3dafd4fff621c71920e884ba28c5e98b328baac29ad4bfc4d2cae2f0ecb9d1b6c9fbdfc385aa565aaf6c5b3150e085e0316e21d7d440a873074e5d2700d961114ed420478647a4769d832691f7a004d934a89dc249c9343341902d5d0c3d1a623001265634216beacd5f756821f21c3b58111790657690918a2eafa9e85ab1ee44edd3d8bb89e892acf411ba9eaaeef88eca37dffbda72751c117364fd1b38c840d7b42318fcd011a4449aeffc2de32836d3a4f704d4c8ad4e078315d0d1758f098f2ea749ccce62aac592ac4041b5e733ba0431b88332a39a2af7f68f9bb1f469a793b280b964f285ce5cd1ff3adcd7dbd464a7c9414ed45791073f08415be2dd9f01dc2fec8c3a26fe97d9778e2b2fccf71a1ea5e9ce017d2d46778d7e37bb832ebd5825b3257a7852db5cb6c132bcf9ba3522a670b0e866585444ed3601fd32a922818ef6611626eee3ea99cfcfeeaa4c370567cc65e0479bd35e091b772d7445cade"_hex; + auto r = true; // result = valid + auto d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "0000000000000000000000000000000000000000"_hex; + s = "631cb4bed6b79dcd3827879f6d64de3ae17e0fdb022be013e733bbfe0031cf204f0508ab87a2e2bbdfaa16cf24acc96b3fd2e72bc4a224428e515d6f1e0ea6927eba6ed7282a959e5df5e52eb3be9a39cfe139ea2fa45c21eb81b3197eff655b918f7c5fff6abab33945557a922063f9600a372ae7701db686f7e1fe4a6e804a0f624331fbb59536733bed3710dcacd22ec74b1a1386d045372853cac91130703ecafad7f6f42ec1aade5cb865339743c83e882f248b0db0855f487a6d3b55442f67773611a11813ff46a58c762b1bd70b5e870c3095507f23758e90b3c84526f47a825f0ae787acfd3ed349ca6786a2e84ec500c6042a9027a994c328c7a6868e6a81481b294383edda62773fd224af46e782ea3f00468515f6100486d94e818afca1bdb81851e62b3bf4f9236f061afafb3e399b93e6f6a295ae200c9bba5ff5aabcac8361c84f2e69aff8a8a21720b900d52ea4bddcfbaba3a231bb9b0dd48f0a4ef1cdd255b3524ca0633d04907ab672314c5e3173108313ff4a97df3772"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "54657374"_hex; + s = "5819a699691c01a7f35f0bb1831a1cb65631ef693f7c9ef89f1e8460ee2ec312f6fd38fe382b3bf4db8f5d208146c32c5ed2d3b13105743767a73529bfddb5753c8cc13148d41db97f69ea1dee0ef1e1de990ff565f633bd3cfd315a7dafc70aa7f27d4f6486a2f1e2711e7919c5c73c518069338c0ac984d75f58b00fb0eee0f7da6c9c84d97955137417df8f20c02b7893b5cd929ba37f6b3278a1bd35748e14086c5f7100abf2edebeab5f767bb83d999a61cc27531bb67e44a92004fba9944b9c5f770bc66671d2efc74e01fbbd2885c5175a1fd72b91937c324b8d99d3592bfb73efb9641b87949266de441b61d180e141de510ae0cdefc2160df918c08c53799f050ca4eeb3a8b6b5ed35b8b59d3acd13a600a8a137eb1b8c1abbf55f3e99cf52d7092d1e3acc08583b04aa25a052668bc982abf060ffb17c1782daf76fbd69e7fc9510c5c6a68bd525719be5b81d0f2a8b961f1aeac7dc13aeeeef9986c7a47b34f8b96167d79f7ec458fef7345c1c31bba599d09b3fe33e738bc7da1"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "313233343030"_hex; + s = "636d31d8d5dfe0fc6ab01ef2ccd4602dfea62d386b002c429e7e846e7a98d0cb1d448d25be039d5158887ab46a9dd49c41537a89036a065fc10329df051e5f2e5c1d4436e84790ff6db4d3f31575e5f0fbdfcaee625722c5492fceaa3fb29d0a865200dec06e117b04753ca9450a7ca7f7d1a1176cc38ecab721864413a0d7a22d8fc1595b6cd0032fbf154fbbb31b56d3bf963761ce8ec9fb38bba3419716d0d39e976857e79b1faefd5f5a2ce0ebd94968da1ec3a387804694d90f37b34033c7f70ccfb26beffaafb7bf56c1b8385d489217458e0a68b5d680f9fa45382fd1c227ff3c11e3ec82426ec648a564f0e886e5b12e695dd2fc8465bd9d08731fb140084c79be64d915bcb4ba10f1edb4c37e35231753be2d9f339d37d7b5f22c91584a68a973f9cc469a23d3b5800157dbd72a8405fef4e444ff01f7fd23efa143c1887504e81773743843d8a73209a1deb66c5f305df539bc30e871332e82330e5b66fa6ea253b2b64b4c9781011d20e80ddd8cb83916834eb8fa696b0a4b6bcd"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "4d657373616765"_hex; + s = "08e0ae3dc0d16c927c423f12a87313afd1d66fbd5d09f48a4dd1a8b52102bbdd208284cdd692932869803a5c7f041a4492ac2e664bb6dd981c370e0c79ee3f7c5c6dd37018986fc2cc618139fe3eb85c0616f0673403c4afe7cbca49c1eff27bbf6d7e541b285ffff20b80bf61dcebcc4250068e25ef5a8e7c3306e49fcc2a1ee0f500a3ec603b472082f12ce4a6a12a6ac66cd4da8b6efac0796e9dcdc66c095a6282ae9a32ad274efe63f43e725410e6ed4c480828ed876b76b71b1cb8c142d0c7a51dc202af796d7bb55cf544dbde2f564f31994911ec7307015b0da2c51abe265a04a74b9afd0791a68e725cd7d8b473296c5d948157c10bc4682f74d843ce72e9ee8719a7a49d9de2f982c5d4490451eaed62c305eae3d0f9cb3493bff056a0dbca8579b7b41dc8deb1becfd5abb455634569d58c5b5535ff1356ccfaddd14e0f9f7f69a7ae9cb9f4c0c9f661fde349facd21f0021423d3a9ee5031855dd242f27009090ff0c15d1655317383231799b18c01fad231385aa5020990f41e"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "61"_hex; + s = "9858e2557c6b99fbd84bc7eac3e31283a4efb351ff019343760a1e282368938e29ad902d3eb6cb29b35a036dfbcc7e06d2f1d15548df59ced35326295375bacd7a9d28a01b4e8acfb676d80b6295e19c6b7a259df56456e1df72f6a746e9cd31fed9b79b35d7a30a7aa257e9e8ac60ea886042b9194e7a383d1c9f71c84511faf6c96f7ae0e690112b26bb60cf7bb10f684e4fbe2a3a1b1c0caa9b1bdc79fde23fb758c2ba57880a4de461ecd2bc696689438183e2b9724fa68258f461bb4405425620a4d95c87ddd83e04be381bc743b05d26ede2ceff8a858636baadf56ef1dab54080da0f516307c579833717def053c8906d4f102448ab22693e7f52d5850193a40ccf0d68d1303953771a73924e4bcddd8486e1477d96250bf6b480a5f4b822822183694c52a2edacb331564444f0335d3b17d511ece59889b6d961767a3192d7f081caf7e671addb3757451776d4bd3b03f7b689843dcd59019ae4f292dba54738a88b86cc6ce3b123c61a446f4878b627a7f3585d8ab7bca9b258f10b"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"_hex; + s = "1294490626bdb36a31c93fa7853d93152d920b022f1b473bde3083a99e11aeba8c03218fa07d6c4a5f8b2504d2cb54505c40130fef5a2412f7a5ddfec5e2c8b5058f7cbde7ace0ac01c7ba8a1bd897e8974d991ad2b95c2f03100a34ff408a788c70ab5ec73b5356a4e3c7beb44fcb9e2f3f25d1c974ed962b148167684351dc2a223a174c9744b092071d58dfd39c38364f47d292651e7806ad7962bbedb64739d7ea298f0254244790e3971c15b861c95f00f65532aa1c77fba5c04ad078525128e92ed2b4f1269ae744547e3efd4ebb63e9df844df152a098c47fa492bfe0f1917ec973867c7491f64c172cf3ea1bc3f97b42a397e6ad88d12e150d3dbe360071a3285d6a68ee6e736eb4d7d637c649c2f545259ecd430b25b38a1618d69a4602ca8a2a151066f12c3807f5dc7cbd06bf095711e4483cb0a89c26dd9e4b0b03e05beca349f601c894f9a245aca3204584a9bd844772dd87b83d481c8df18b615307eaf643cbe856488c160e077458e899755301749d2d27bc190d68a5da11"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "313233343030"_hex; + s = "8b889902d581f3be759dab7e53cf3419d5dcfc825d203c736a374f37ac5570da2b87239c938bd299691a46387fb47ca656bb9ab639f6736207e19680ad1a0c7a7818f2498ec98e4693c51bfe414fcecff4bae7afc6db0d72cb9dc447e2ce4ce9ff435b9daa98cb125d77b7c7d2fe2e39ba15122da11bf19d341b9878de33d3cc134bcb77b9963d19a3037a67458b17eec462eb0d7eb7ce69b71f41287d3b104b45757c76440f370dedb720a0c721c08c055c5b815650737fa478898246d36f7722e913c0913612e753908400bf6b456f269538102b778257af0c7c14339d0ae1ddcbaa357369a065c0b3627cade311a627e1e3179514cd3761463eab7f9485f6651793cdff282daba9b16c2f79adbd24ba54ce4890a9685ca78d73e8785d722825c9fd22ff327b97f38d5e0b95f449928114ee9756aef5213eb95cc40774fa1733fd02bf37cf5243e7ca76f88e7e3fa8d28a754b5adaedf31a91e6911688a6149ecb52eab8024e72e1bc3a98579d9eb242e08fc42bd491e3b0924b03fb95bd1d"_hex; + r = false; // result = acceptable - flags: ['MissingNull'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "46da0267738cab66df530dbea6fbbebbe904ad3d6ea7e7a06e39a3b5f3e38bf5856624185080fc756941b226a52c8e6126d07714deb781f6f7944f47147c680aeb0dce310c7d6f429429ac73e562510678c23042b635116174a2c2f4e8e8becfee1e4ba3cfbf4e2ee541c7f7c27b1916a2aa165cdeeaafb9f81c84e9754d196c3a9bdc777fc55d86b6bbd16270bc4d3cc75c2960f2a7a661105184b436a31de2cefad722a14abc1cd2f2c75738b2c81580fecff78d7d385b20d1a03d4aa2c21a168e13da18fd628e34be16d821b48136b6dcf7594ab3e1243c0a2a9e785fe40436cc6fc460879b673b068cd35a9114b59c2dc61fb875310e103610b74aa5e3620c51a257dcc3b9b0adbe774426ede0f779ea9d370f18a19d8844ed9f5d90ebfc4e0607a467645711da2b500840d4851e3de63723283bda8d08acc51a012699df0e8f5aabe269206f93ba4ca6597e17cdc01d2ead46b5dd2433b82237da01518ee3168b133b6a42e9a73194fcf9162b71d08528254c34b20d692e141c657c969d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "39c1fd7fd0bc4578c3370787ea5a133e8a34ec9702dc1456c1ca7f8c3cda7bdcb8beed72e4098de5ab3e467f325141a324ff55af1390ff6f3d0cdf680f4319378f099604c9044025e04ed1af1ba5c74805265d8963684c7555cb835e8b1bfc162812698679e47b96744809002c805b75bcc5233f378fdfdf3e56593bfd6b0228f416f58b4c32ec0c2d32fe113cf7f3c347425b69e8bda1a2c5bbc3cfd0c1bbc609086d91175fab0adf050a8b3e904fc4a700d747500433fb72c55cdc25bd283d1bfa1db93604f18b8960127e9b7080227235e6ce234880de8e3c49d5edfa205140b8ea383e546e0bbd4c5dc59d0c058670ed91a02a3bee241ccceac20d434a442bf35ec6d5922196d78b080b1c14aca63b827434679d7b6e666db10dd9a85b2da60c6b47fc97979974f11b6051fe9378d96c78328ccf4e5cf5c120c2641b3f6b7abdfd0832fbcf59fd3787100032ae65aef2b076631788e7be1019feed9b863f39759525be659f3ec50dd7e9724bf6d09d8b771bc60e8a8e788ced8d945c89ab"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "530bfb86fd2a4b31587767d5809e5ec2002cbdd9121e135391392c242354844a9b4c8993ae61bd85810a0ed240203cc4be48ded5997832570875a7b775206460067b30df7c3b7f7af9d98e436f0007ce0d6360de0c1a4e75912b885d1154ebc25df90465ecb5f07a6cc477e44d3579f3a629bb49b7a19a619f44e6b630b684f3ac4daee5eb386dea0386593be825a696656e130ec0e4a4bd5411c45ade6ddb4a6284f343b0a746bbaeaf03cef31120f19f2845dd9a7fb818406b0cba91598ece880836e0b17e6f375b8941381d0b301d0ed1bf746c992649b40899d2ed2b39d488981970cea6da2453b5fc85f23c8d671a3c7544f4a7133fb500f5448da44d4c405bb70e85aa3aa399204148c01d1a79de3f784dc5a9141dcb41872461e62deca48dc567b984ee80097a099290e413e575411faa54f7f3387cd7759f71b8013ddcf9ff2079503ef802c54fb731e3131316c93182dead523f41551bdd3a96a4261bf6c3dc72a952ed4b7cc95d116741c653494b5ba8ed9aa565ee57ad22a4dc83"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "94e0075930de07ea37f0eca5023be15c472a674513654d837befcf17765225c73d17e93ac4c69d855027747c7ab81c6bfb3080ccd5b6dbdd41e2ea4871fe30131bf2dbc143ddad0292dd4156c60cfe5172fd9703729daf99b2067334af23a2aaffd0f74d574955c406ef8ccb1796189c140d1a45701c993737b9de11e44112c4df9a5b2c7ac827c9329c5f63f4bd740f3f1baf69a8fb6b69ddf500272beccfc2f24902c592b91de99783242fbe9767f3809b38368f04b02d973c761fd999b0c69eab43a2187d6de4fe5455e070e20bec5bcb8ffa5e439b04e3883804a5dbeeae652260a405ef5e2e6b9b7bf7e8018065a900cd831b05674a093650644c42341c3f5429d59fa3aa93737a6b525a80e0748518cfe19e6a4de792d3bf842e2a864f04da31a8ecd0b191ea656f1c2987a1973ba1b10e16b09524a3cd07c96814b395b29ae1a434e76bde8e0b6e4e29ea3c6871ca447fddf077f53a4c2c3499c7e96dc6de112cf28ba83d8d274ec03fcd1d570b74e22ddddece554b7645380a2a7483"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3e65342b3d9322ee9b0473f54f0c3be5a17f56f2cfa5a8168bcf3001ca1256be867d3a575b07c3d7d020037590aa10d75dd764a1d57a123976116286ced29b68e3b625c3ce0c235a629e27e4f8011afe4b383117a8bfc927a7718bd81ec4a156ef6ec5cb206c2f23941b595ab3e8e4a3eed825c8e2af444cc7b0ae0e303c8f109cc149fed6e8a2679c55a2f483dc64642170d0f62f0f20a5387a80c5ee3e72d275a8c3e18c65de6f9af8a7ce886b83d84cd0270bddbca64db5d6de42619ab0f37ec18594a09a80c0183d44dd3ec6b46ca4846daab73effe1d5e2d8ce302db26708ae9223369ba5c488bd11ad27751abbf994e2bd18cc999dfff0f65e8c6d6d04e229252a5d6704483458d7d094dfdc96cd5a7b0573a2e0b50fc14a8d291fc856e63d82343534b75b25298c6ab7af401ce1215cebedf87635ec80d0cc228831d26c40efa5997105fe4b3786d0a44c17be443a67181d35a5ee56da18b7e97db573879686a406c3bf340851d12d8ed57c0530433d655aea85eb3211bb7f128c91c0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a7ecbb2fac0916fc1bc793f4503d496cf2683d1529632eaeeee4fc89bb8174e7797a8d78faa95a52da0c4c887585d61c680fc4d1224e02d3a0dd2b33031120a14be8ad16e267656c683c179d261f6aa6089a14122168748a4bfccb59ecb086c0b7edd342bc61d2a9a2f5aab2f4558d458971ca04672e513d3db5784db83fdb93816bf8f1b443470973d96ed20a7d85adf93bcb497ae07022db0f939028b9387a1d448b3fab2408c2754478621640cae0ee6af76fb6e653e4d418e83d431f7967e435b748e8c7a26384addf77115e0dbbf7cb5be6ec0d11b183edd6def81d0554a2e7fffe692e3cdaa6c138cd73bff960f047c0226ff0ce1abf9d16ecca4c3b998ae8ab1fd1e35f80b04979ecf0338497d1df5cea3108bdcb1d0bbb6636ae234cd81e6f2df123d263ae38924783a2a11c85b7605808e84433dfd72d9ae5b9d82fc6a8cf385b0994d32afabf3ba62e8578ffac2073d81d69c808a2c9f46b1115ce7f26885d1be3052ca23e2cfd05e92469795bbb274c4cca1b992612d0610c27f0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c2c6b135814accef0caafe8a22b8cbdb832a30c997edfd33e01a9578e309988322f08c64704080dbec0469274fcbfb131b4388cc1181ae2004a63cfec1080087dbd3b9e7409fc0f960ca721d456755f1bce99bc91ba36c65e747e4cb693ec4253f0ca37d8b9d64d5f7d0526ab809a4f476e6537263adc00f20d4261d78e5b6f22896706c665e885d5283716dd959400d2a7cb35974a3a3adb1a4bf3bf36e9773ca539787c0f6a05d17b75837452e247f065803513eb8c6c995e989a52a5d48bec77930a91cdfc1f373c58b344cb1700b7707a1801a758246267c8ce932035f8a93241f57e9ea8c4d2dab3ff4c5fe06caf37e5c996e60e7bcc4f3a6176a69e61df24f8cc080b7489bfd8395d30b6a4cde92ede49a26a0a03c766cef25ca6bf982fc3126ed7b1b1b2bf4a7ad9ddbe1a3a456a6720953460cebe6e1bd5c333b9ab2812f9b47452b2759436137424832753d8a97fd456603c5585620342fa1dd056be6247297d5758529c152d24fa2644e613244dbb66815278385be78cfa4224b5"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "27b9f6f0a34cfa0a71fe15c15c910b7c8f2096225213e7021649aa3689ccccd5e2041578ab5be9d110a05456fdc516c5675561dc82a23fca94cd66df6dbd4b0805ab85b57734f5dd2d6efcb1a0bd8c3da6f8ae7a68f54e015a324212b916a0eae4095975f76f509ea383edc4fd888217abb893693f821f4a3c72dff39dfb0fa7abace8c16151d01bb81be374122f0e479748df2c82ec87b443325ba908bd00b2cab985e64c7f6a1edc62787c64b84410d93ffaf6d9a33bf3164e4348d7e1afeb6cc7d3e8a51d723ba6ff27ff5ef1358001ffb8eaf651cf48ca5534bf5d86650e73b540226fc2a2c1a7c52e6003d89a108a65e1c9df183b47d1753ea697f05e77b3a13cbeba8daf25683a6bd423b2b7acefa66eb5e6d08ac1984007aedb7df5d4fa1da1aa3c6ea5f383571aebfa42ae1d42060d996cd9dcbcbfa605f002dd7ae653e7c295eb3c3d03c9f6c479068456a8b0087f0c61492ff7c125e3bffe30cc45a136d72c75b047b246dba18ebb41f3fb9ad0216a09d888885b4402200291e6f1"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "39c7a8c06ac4835655fa719be214556e0adc5a00ab466d88d33e694c30882e7c41d7fdefde724fb8255a44ec4bdbbd03d1ed528b4ea980bde20717349c0f2eb78141ed6f4490173e62cb2c48b76357c7816d1b0eb5f85391143d04cf6a100ed6917c46ec661a35860b3210ebf71bd7e6b8e4b8909914226ebe925c99a7a5a66f1d02c876f25d80ad4482899193d9a444a8a1d0ad8d5afa912b53995dc36ea89599f4f181241a6f4fbe698de8c7c794a82f1f576c255e701751d3815f5b6fe93efe9a678d2422ec9a4a5d090beef2e552db07a4d146f90bb4cdf1ea6fb844ffa1948542bdaaece102fa3359d2bd23c6447ddd64dfd7e4c94c801c2b6ae17b07b07a4dc79bd69ce5ec46aca637845a0185a372feb8adb7d60996133b9c37c32a9ad869ff5534f39aad8701e3487e1e6c8fb9ddaf71a1c34374a09ffb85fe44790ddea79439bae8eb51ce12e5abed6af335ad1ddbda07a8507b6df0d0f3ce80dec487968d29d92a139eb1d5ede5c28240320c5ad9cd0edefb69fd156f0626f6d45d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c8a79462d5c62f418c83b35e67899db78b04883afddd506855ba23e7ef8c5336c1492faeaf1d57444d1049bd008c317fe7249d5decc09fb4f39d7858edd097c3949c53bca1a439674a61b355ff5a9388a60b7d5c7255961af7079e72c07fade552d0b77c36ea3d2f0c7c9985b8ce478df8658de208dbf4690299db7f1d32660585b918af94bbedbbde7ae9444972abcca2f6b3c4004e3c87940793f1a625d932ba14e715dc1b5f9231e0f34956b2920eaced888b3a320ec8376b059fd48ff369beb1ebfd32b9e9c9623d28b54856919b3af12239df425a055cf43e448541af94b88a223a90580977a72782b831ba0a88877cad65f8fb49c68d5e3b2f6224637e61f4b356fda8b8ab916cc31b18e6f92d33e0e27971a480491fde857715cc55388b281e7d313ebb0abe3337f7d4544ef9d144e402f49c2b71eed30f8ffe8e600c31de5960947bb07fcc4e15ac0d7bf00bee0920c9f092c8bed16ad9ab7d752433a96dbe49ac2cf33445257a51dd347dd77dd5ae0d08b223c457db3b57d727f52"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "93391857ce1fae6df31b1ad972189803a1fc3ae91b89a264ff86246d6efbdc599003bb7c35814a4215dfdd3932834d4064b497f464fa93054363f1fa5e365825d1b87881e125a50deaf22d75aae32fc0fe1e8f3115f7cab6af0c2aca54d6f21f5a72fa77a0731c9f8ea82ac2e31155fe56a7950f61fc1b22c274203ea91b28a4bba0a925ecaaa017b9258e1d0f492c24336334e328054a12df916e1e4108d0b7e5d8b2bdb3d4a10282cc1653b9df2a24a7ecbd753cc7677c88c2acb7f741e3d56d670c226a827fd6b19aefa445bd277eed60dd13619427a048616dd26770ce76a3031bf5856b50f0ceacc7bbef257d86f6e9fae62aa6af550c9d526a6076d1de77a9097acc15728cbab9fedd1428c33a89e07c0a49dc89822558da1da6db6f8f738ae309fec8f033ceda8773ed3eb5bf6203fed189c3b7a774cc5f44073dd0db9e4a614bf7c8005d5c6e022fda36b82dcfe66f4679eea23269ff39213851798e63e42c1ec5be20b3cb5e20787597b43248d4fadd1c10cc94d066639736b7781e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1d9a1575ce2cd06e5f160063d03199cac5e912cea51439f738d98ede05aaf7b821d8b26082ecaf4d12fd01d0f64be9ea2e1831388cdb5e7c7564b73146de8f9b5314ad6738d98e1053ad0d7d594425043ece575c75128888d0d7b090ba5d5e008be46abadbea23c9b7741a023151ef281d99fdfd684408992a8aa9f2c85376a40e53d9d223ef4ced563fca832ef03bef29a47bf381eb6728830ba37c69a99568494efc85370e8e9c3fcaace1a59d6c98afd03a0e8bd5da2f5c909df5710e385ceac35ab0fab92a6cd918ca8d32cd5d4bfee5dd644e0adb3d188a5d0e7a20a305bda34ec10bb65c922a0c074e8427cec78a590c095a0c670cea6d34bc7a88b2f1f06b00b368b8009cbfe6a14b18bdf2b01caab7041d46e6b76fbb1f63e9b309f60fdb4f1a6033a11dd7dc1eb15d7faf922b3fdde28796c44e226633813a969ae1fc54388525d0a125414060862718bd0ee1337de2133fc773d06bf83987a22e4d2e883765e3affe55ff8d92771da79ea0898258f0d7e858fa3937ff24f122669d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c0177318feee842e802480dbe0dcfc6215d75431a30bb8492cfb1cb84f7ebc73dc37f56cd0dbca1f6a6516c6eee3de3addbcbd569bbc79d533a4f5955d95babc717cd4c8f5039ce49ce7dd20aa44bdb96a394f8499172079f8ed20c4ed780ffbe11cb00d04aeab80c882eac517c153993892549f2d4203d8e3fdc719fd745b06103b49f54ad51b6dfd0f4c94b08b7059875073ac11701e16af0b73d7b305d9a420fcb560b490d01c4afcc52b9b21a467e95bce62da8f559527066116c602bbcc29a434ca04ea3227a25a07d733f1b867040ad1c85b001904c749505166635c217d8858e637cbd74ebd1b86a400961f2713cd00e64947c2b5d2b97a4ef795822eae56328bc4bf8e8c9c8bb8d759a3743cbe9d368d985299d8338796ad6e24df7eb7db18147450d2db91000c8667681b47aa9f0f2e08b48aebadaeeca32976dd03ba94ae72950803a07f566e091670c83c8ad01cf1a2a921467010c20975e1b9653a7b56d2137799eee863a576a2275c33320445307670bc62fa039c7cdc8094c1"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5675e16b96e961dd428de891451ed0d23706165d65392d277eaf846e24f0c4388536b2b52e519c07d0e10686a164bed5a05314249a77f77d140dd16d42fba947bbed204ef4c8a958e49f3aa4e62438ee333812d6a9719ff166839e467080d8762a4268fb575a33070209013741ae8ea0c757bb44d12450579ac8e22870569c6892edf1fdd0bc12a7823b695c4c90e93c3cea57c2fa004eb3306d13ba60cfa7aa3f1465a232c3f4cbb765a82bd59551d0f130137829871bd35cea7c59cfa12f188c91dfc214d8102810a7deccce40f204562993633ba4669f4d7d02418d5a66db59af8ad001884969b8e00951492bd846ad7db619d623b3466cfa062ae9282a1cddf150e761c90a3413e92f2f1fb2b5b62d410cdaf6bd8885d635f05f20331416fc3808fccd342764b7c244c1aaf78fa7a1166b1b204058a16ab750ac3fafbafdb2610f52164f75e7cff8a4c3cb899ebd5fbe1834682ee94e6cd810a4015ed7f0fea7f1494c5a477b572d172056629320307e8ece3f72de5dc0652e688d79d154"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "562cb29e3b27d68a9f8741a57006296a943bee15c1e0cff97e8748ad822a321234a15fb3b89f4e07c1756d693507461172981189e9191e0175c71accbc258d3e79bbc627365c95f19fa416aaabf223bf22fbfd46cb8022a88600fdaf84aee70e9c8939e24de4e8a5fb2536c4fda5e3e3d71adc377708c1f4d7982c0c2267265d4f85d9e27f689de2c216a21239d6d4f95dd30ce102da43ec1b3e72ee5696db8c63cf06d94b8ccba75e197b2d26350d35336475f66de615daf8c1900ba37d7699ea881c0f7af84e936c402c08e15d3923733aad0894b4e78216225911ceae7f4c770a17d90fd7178a196050bef7218d7e0fe7fd22eb5c3854c806a5cd179e3a82b59d9b4e9e2dd1d4cd998ed32ffbf19a91cb19149c948b74861fd0e92174c2f35c82c9232a8413adeee723fe489dffc8aded50c7716403c02549802e083f16584b05e3f67a4e726dd8ec6d4adcfedc0695a47ab75e6d0b0486e946b6485f89162349eeeb88f20dc3095ec5f45bae1c2b7af4352138e864e6fec18b9bbe98fbf4"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2302f69cbfe30dbdfb830918913fb556f2634e268210efcd0afff8bc527fe30ea1dc36833b01fc1b7b1d8781913a5004a24c2412b9e0713b84f228b6b08349eaec2ac6908861157576c89bcf472572be53c0075e48534d335b954f46aa456c90653912e07137a418f8eb59329996e86fbcab8e585d80b7a8f97e7aacad3d08d24dbe30a76ef8f47788d36926e74c0f24df942f73fbdfd649ffe9a952acddf3fd8ed9aad055c3a950e749dfce25d0c45114f40dae0a449f23d7915dea8ee1f6f163849affa4b7b8105badbbffc5690190fce192f4a647b81b14101b4fd9b1f0379b08379901f0908ccb48d5c88e8a3d0b6563bf01117ebcecbd84dd61e6bf05b77dd2a3c63d9c36a394843df28b8184de81cde4f381eea84822002008938d3549550cdeafe31606fcc282ef2c2a4ab90b437d0975a6d576fb705e26131bd07add5bcd34887496b653f3e9c2a7760eb367935cc8052ea896c6f2023f0d2a5bf3267835cb4adb079019b8974426953ef1447069a79cdb51fe8c32fff14a9bb8f78e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "92218f94fc3552f215e98d21758992429cb17fc3313f780feea3f482d0e32cf97fc8832205e74286e69a1fa35062b984635687692d15e6050376afd8e8501b4a07e8c61006a2fa6eb27e2a4c310f54b907808027eaf9cb0530f8ade781c4fa9095a41bb6630c1e0973783eab65cb0849f9c8e89f3c997ea3ab930b4fc629028dda3d5e0e7dcd99b2951282c31b8e3739b6724a414dbc254802e63a1a6a268e7fc6a91934cbb27d9cf0ec994fd02334a7451c3658e7ab13aa5dd27e81736c9cb316679eb9a3d3f87c3739ca07a7be08a0402ab2883d860867a4eccd2476c8d9e37e2ec214d6895664bdda7ce7344c95622791cdfaca32508c8b7388391846b720659de2aea7bbb84520fae9edea66638270e735677f175f115c582f8d76185e8edb3d105e3d6c0f490ec486f7ba41f750add6d50997ec85ed351a2b14a4c328a41faf70ff3e50fd4ddfae6f9c74fd72a7c1bc0df045e31fd72f04b6a797e0cced07bf2fce788d75ef6d783cd6e4eff98c49e99487c76ccd4e08ea26d36c29aae1"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "55a36002b43d9b5a2f99ba0acf767cb04b54b7849fc2443d123bae5b6c6b6fb666d7ffb96e09580462df5fc560cbe9744c166f8f43be98b7b61ab71b86323d771eb6aed87ca4261b4e4d76af84813173c01cd82a87fda653c47f3700fc2110a852def8c785da96dbc779615335ec871a31ac3590562e8f50972b5e217d45089a217e8b0b1905693e7dcd121542d11c0083b967b04a8927211ce89262329ba2f7875412b8785ebe47693b8f3b76f98192bdadd3f4359999d48d751290e87264a5f2e53ef5814225931b253b451a3246f22ee3fc7295806ead7992bee92e74b19dba84b1228a8fcec6fc0729f4840d2b467956f86a916129c57025c7465fbfd760e0ddfb480f748c422c08a98fd0f73a5ef04b28fac58355e6d9bbeafe84d0b24e6ba19ed317bba9dd6b9f0008d5d150b3a27b839ec2bd72205c345211c99c8bd92db11c1bc16415b082f0e6f23bfdf9fb00b80a6921a023cd2d8565d2c98c60b5d44b2593126f6ebea96c6529e54d3f2a503262bff664c955d6435185247b32b9"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "79ae98a76ace727161e1ce51f127445bad0f3aa45443a099d246b3e04057097bdf2c99e744fee3a55a6feb7f386e89b3b4efca1cd4bda07c0fb4a06c3130c9d23550f56899480f4dac7b74af496e74271eb23f96236d61e12d5fb616b3bab8c53845816efde0d33a8f041fd0b8b01391e99811bc4723941a0b5cef0974eeeb2d4726b51e9a8687709788abc5376374af650724ba6aaca36b854afd09fe978de357de3ff1cbaba28b8afc24887742656fbf6007f61715e9102aee9c1544d8e7300196f5ed3d86d3e665db7b8f98d16d249f92f34b0faf3025387c31b5aa572404b8d3338ead9d7e4a9891f0796cd6866ae0b34ac57592ead287b984794d6ce7da2c89ab5b352b79ea94f8c0a47e03eb11fcb7cb55d2d00a88a09e22b9b8d5040003e4a8b9b5d411b21673ecaa59424bbc59a2e564d7d7fd8a3730c09eeed6b6f3f1a6af60b9e96b2021e27df6893a8c9c7bfd394c7aa02bcf2af96a392497ef1587cc271755b84db15957d30064fa1be2bfd8bb46de4285640e551bb8cbb843ed"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3894bf87b1af9047d10bbf45a65671c8f96c5603ec84ac2edb97684354cc7e1ce2050afdce800626c238b3de0b7d94e59f03c1926fee2ff49b52b11fe64c8825eedfb9fedc4b58fb53b9bed5d5f0447514e6e5af4dba869632bf92051e268835883d16f08ed8ebbc9ce5decfba43acafb72f8776a2cfcfea0d2b43e17d4185782cefbbc27a3a249275cf47456c1486fdb57396d5ac0321c6676432d25ffd946ccc781d521c67995493ca3e6fb05e46a1b906cb0e48096611383a072d5a2b0fa58c003e5c58311267922bdb4217a19f9405b79d0fec5a177de5247f1f939d5b9201378d09328aa98d1e5a7e1efb63ac9bcee721208cabee3e488a4551e444d47236f89a6846d1459abdbbc2096cd7dc1fe69bc3cad5ec7ddd02359c6b96398b455a39022129ca179e1da702fe7019f9d73b8a8bc25fdec727bb70dc1e69e57faae10c8fe6a71fc903b1c2272901a94fc2721fdd8642a61666211f8557bf5f184e524ce64978596e8477ec4ef9abfd9ebd170ccb632b76da9d015d3d7f3306a0aa"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4bce06246b965920ba5768f11973b7773576c8ca811031d091fbf88f0aeeef793859aeee2220a543df5dcb0a6932ab7eda80ca2d9a45687d00c570c0494deb6960424d936a21664108047a4b4f0a3f120d337c7e010e56098e9b707319b1e306a499843d53ae351db6eac5538a4cef9d49660345bcb5bb18900381850b371ad17a47ac57860d1ade90b839402c6bdd8479c79e27fc9cc3fbbb8ded4348da6d70ceb8b6c95d9c8efdc6fc0a51f952ba0e7dcd21f28dfbd39362f2a817c4045b1a3cd6da4c2bfce76516bc918a11dafb9f0c4776bf3f23802b38be8d03cfdc6b3551998842a028ee1585a6c232409469a869b3b144d5d02debfefe09a8e14d0e915dfcc722fccdb87e055929140257428de416d6caeb2437857d585ee6c3a4eb64a5d8f51df2050f28286e3e1987c6e3e3b22131597ed1c83410a2569c8d7cb04a80ef8f37bd043230502987013f560d7ba865759a01f588611d9a9783753093d87e3da0827c7903851ae9601d1d0e7766ba645a0a386d49ae2c5eccac6667f449"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7af993a700d939dc8e6b16384c311e092883680d4825c26cea5c25d4b738365473b0dbd01e944d84af0f658993b35c1dbf8a657cbedcb1e4b003694aa401c8e568b4e65c9646cc861d689c02f4f1b176acb79aa8eb9006f0f68da78f41eecd4869ecc576f849e9a20e6c1132f9af34eb92da154a459b5a3034abc8ab4c5b26d8721b89ae1099f88c971a9cd58c28369a9274bc7e2df4eb2dec049fea944ba505f61f3d6c4d65e643fa15ed99e915471d2631840ba05e7e05c714b84f102c8fcd94fae291ab216f0845bbee06a5452ed71d9e429bdbd50d11710890673c28de3cd07448a68c92ae052256837429590176c160e7eb42371753e778a6728a40dcec33d58d46ae03ba97fe2f337288a7ef67d71a42ff3944c1a0ff29b8d59820e5b3429342ac74f2978bcb4b56d455ed7b0f035237863f0dbb249f570c591d46a67ef2ec54bc9fca010d9b6c018c415fb4eaa81bb6fad502c273e72bae7acf4b4e3497c9d42bcdbf731c0bcd04604d85171fedc4b750b63d31fdcca389b6ff7e6dcb"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1123e2e0acbc7c8816b6dbe2af9359a2e0b6c10dd522bb3fdfae93855ba73a95961290ed808b3ff8eee8a9f58f3a77f05d03ea1c09d849080c415b3d4214a706692fc72692a75c07b6bc21b9ba4e79f842519b1a5c67259f028995d34c993d0ee0d71262892e3e76d677e838a308a2b4bac5fe20a6ec073148b1a420d5eb5bc4f2c9a45b10ca993d51be5146ca9ad4597ac6ef522e0441e2977fa6470545b086d434d69871561033419e8540299d92f5425e91f82ec902a2d2f5ae8f9017131644107d120786802f30746a116cc67f85ee9676d1738dbca0b360ef257588879f2f6a441d66d5aaa20a98ed3f57a73c3b96e4ced07b8129b50865efe1b8e20f0b81ea5cea294dc99f67cb515a25c646b749b2cc3cf18a41f1e3e66d77710b1854c3af1938a74c991a7e7a93971acc3fc3de3dbab92a84b498d711718106c98c3fb39d3c6eaf5c3621af25d3872e0de8d7588f742183918267458e5975bf5cf0f6c43846ccba256f76529580ff9913776600d1538002690dce5bfb8cc3356d96d7"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "194494470fb927c96faff5627eaba83b85cfec16ad38d166a5d7858d6c77580a4a8bb94c16eabf9b22e7653b7957aaed312695df9bade2b4722dab393a286fc2b734cf6f7876083d42f238d0af3082eaeb85e61158e9dc352bf151de4f1329e7c379b40aeb312fe331df8c460c423ce08bcb6290d7e772a75ba6679eaf4be77227c296246eaadc05fe3451203479eebc0fa86ae86ba9d3b42160f0f58ec0652805000ee8e520fd58f80421ee5e78436ce64a58a8273d512bffd3794b04b37a3f83e7b5805d19595f61d07f7a4790bbffb57565b27e8edba4273339ca62fa711c22ef459e78429e9c1f06f6cf8c6c8d5e0aec1bb88bd29a516f6bc1789fc790188c26c484231a78696bbcb181f608b08084426e49daef7d7cd080ff0a82f9c70605748bcba1fd4ec4976319de01a44b76097f86e627c37c37e92ba35bdd51027651b47f9e87e8490f7ce2d2ef8e1566da7f3bfa880e98564bbe2f80c642d30949391081801af2bd79e4a9de3116658216b9bd7949752661d7ccb7ca3ed5918288"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9f6c7acabb5676d40357d7f58dc188aa11da3b032e0fec24d1d377e9dc4aa71d52945873bd82a6b1540b07f6bfa3158a11beb46513446cfd8af28118e693a4f700ce677988221f2cb0f308e29b42feb8c5ce768e34a9ce889fe5429b6b1d9dd5cce537c311228bc524a983ec83d5326cf1141cceabec8170a8ef00d3e003a86962ac760d6de2f906499e60ddf6cdaa394ff2880c4cbd7d658e02c3babdc8c39707e4ab59ece61eebe3e6266d635e0d594e1cb114b699022149b2105157d20c0d4e289c8558348820250a03931033b2cafd400cf62c21a617b16e83cf9c4a79a1df59101eaa180d8b61e5ac2c387f190bc5d01c0766641c8e796afdddaea9a8f625a7eccef21cf8c9bbb391f13fcab5f253f598b880e0391c2e34a64d1aeb028fcd84a3158f692466cd953334db71f4512030534f31a21eb65b459969a00307e9b2ab828f6e4966fbcadec694a394a8b89f94ce1eedd3d2731fc01395d30794ac2abdb0b60dfd14a46b533727d137168fd5b42183cbcb79d38b9259b725fd2485"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "315f909380797c58724f05150a19becb372342fc5fb8f0073633808be07fa49be3cccd3892417c925674707c1e36e7188d5f1313eadf99a9907d6b0ba2093ddaa28c3e030d64448d935e2a56b7d989475a7a7e577f2329c6e8e2b2ece2a553679ec90a15089b494028c914d883c460eacaee1eac472f000076a4642136ffd2558c5b7033d71cee3a592899fcdaa05ec41de962f19060a32ec686b34f85b105a413f3baa819bc6cdea0f00fdd07900a8b041fde463d7e44cc6c45c48f7a1974e76e0fd67eb495b6448d739fe091a99eaa79f8436839daf485085253ced9ae1d5ea2dd5135fb5caa44d51d728c4e70479c6f0c239fa585fa557e08062edd07141754543c5af6e554afe5b54e7be52d886c83c7ce6ca9f3fcb3e8329816cc6c0d046bb1daeafb271ad6ed3da795a1b8fbaa3a056d407aedafb457045b6e067582be605a7abcd4643bdc2fa492df1e0fd43cc3e8cbac05ae240392ea02db489e6a5561895dfd14f47cb5ec6ac594427642eac91cafec05182f3415dbdfd12a348c3d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2bff6effa697277d05bb0a7c6a7f714a0c2f23f9870f51c6b2a678d3b06f5c892d75f377f24fbb14c3c9aba52ae06d3741ebe3e116c0d49dc4e651251367fc63720c8553646bd7465298ccb7b4bf765607dd05052fe5a660c84e0e516aa67540af1ca35befb2250602742a53d4cd97cbd98b9136049336e553c3e7dc64eb39f3d96be6fb1146c16f2180992d0f16fdb9a4c9012753901fb7b293e6af23187c76d9ef55a6956b299bf9e9c9c27c9a4fd524360a4a6988ca1168f35f8bd2038869d77f117ce6d20e710a78b363973a08a5eb091a5ae7332e83617deca9911a2b241aca731624905b91ae63a87045bb2c356c934c70a6cc22bcecd7eb26adb6f98b1c1d727582d7329235a438e1161dcc01f82f760833bfd8d54f8d856ec475ef342072c3d6066425cd0309c4bed7a0861afd7e64b92cdf969ca4d2655a2ee47679134fc2ed39b41cd1cf2665eaaf1e21e8bb9fe6f19b16a057d8277d68ea7a240c95978deedff766e84ef46490720a3809e3ce2a9994af4a04de2059c5a393cf3a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6e8ac44ae4bfe2af008414861bcdba58127d547d3b4ba6516ab18875ca3dd015dfe303d54b50b2fa8c001951d16e64aa9c2b14da674b4547317f14d2921f1f22ff72f1529dc8074725872720f3799bb9364e27add3c4eed2da587a6a8fa45387a80a68b879b309447874b8d81b74c69486c53aee543ec53c02433c9d405b86d0bca97b34f38db3e7536b838a87c2e007cdb675b7c93be81d1b102ef60672b740f3a9c8124885b6228bb3aae713b69224c5278cf9d4b23028d8fe0890f9897b215929e110265d93b66b98357bbdcd7efd51598012c313b120233911001a8519a9d98b742650296f8c5a67ff0fd0446b3006ac254cf8085036bf6074da96230fb0ccd02fcd95fe4b1e8dc7cdadfa2677da92a80efe36081333c557a4704422c3780a00beb6670a7ca95a30c9ecd78d46c88e30a081d0445142761ffa4e8c8682610395d2de0602043e6567a6d62a77cd6c697fcd362b13aee3fa92946036086ca3b002f1eef8dd5550a4aec137a6f60f7d943c9522f55cdc14dfe58639b17350a3"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "83dc093ac399d896efeaf13a4e5b9f5404592c7740af42186b01f2147e3de7f3f46ba323dfa3dec885e10d92c4f5871f50861dad583794b25e3ca2b68eb1458ac3640c7d13711d3338dc509f10df2c52620e0b7c2e2a72608fb52b981b6191765ffe4e675c6a7896c0f026598a3b156f1777b781b6ee688ccced77b95b61ff54b1bf492cf732b9c7a8212b18b5c899929acadc622069c6b4b905add8de54a2332436b5e6f6e16d572ffe46fbb76067e1c67c7bf58d449d2cecfebba5cd7f8246d6511cac17b106e7421c6c65e704a2496773fe86b937265cf27e81a37a3f4f5b21e47fe214e84a9163cc89781468b3e5868ac3414dc112f0fe159d909fd312382a8b76fe194c32bab360d9d694fae4a1c9639103556a7d283252bc922d889c0d5eb6cc657373bbb02119cc8527e6aff051d555ed12806f7b22a5df8bf13c5fd35d5095ac6af7e106b02d4b18dc4400d2404a3221e1f1c8027e722ebcea1d6271cb878d0e6b825f4e3a692fe7eca65c4287a63a3586810c3865cbd7fddf450f99"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6823574bd9fdd7e59ced33e5660e9b5cdc90417fc350cb4535d78dda72c07ce81ac1aee37b90a85ae15f8f59be9461e846a45bdaf3e5f5868b83d1c9465b080d5bffeb933aa9341b6d508b059cfd2e62dad31f35d7fe9058bbe65024d0f73d43a3450eaa707957fc452a69ab9a8ecbb8ba002c870950ebefb06fbd9399bd08d64f72dfb4b2d3dbf662daf7c2c1dd8c3c445e1402e2009b47fd92c3a23864a495037b7f2fbc3adf19355f171e2a9f65f5a3a2c45b131e5398c434ac6daff018e5b5e44b9cf1564cdbab39f407a334fe1f05ecf84f49cfee88836d1068012b4fac6b50f85f8b1a8c37a333028e38f719ee6445a9fcdf7bc0fabaeff32dea7e45d6e1c12003cec8dc5680be584ef2cb478b9988fd7484e8d374d825a95efa5163309eebaf962d0b8ead00b4b9e4791dd5c6bd26c085c96462f2e4d19cfef3a0a97cfdbceb8c6ac2b45aac1df4be4e6c775021c6730e88f86babd96bddeb0e36d0fc573c9ea9346d6a93bd096c8fce248b93dbb0ad00596788cfa6fc0635fc0d0778"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "90954e5cdd1888a510092205c3f66fa1cc9ebe82b14e80e0353ffd417876c69701801153402aaba503e98fe9020f54f717b0af8968fc2524a3081e709974ca8001dd93e52fe0d1782e3eba03a51d260582e4222937252e454ae7d5ac8ede7a4888ff826547350c594186126efac622a44e9731620a57cb73de7e29bbfd727c2dabb6a5f6cf3eb0dbe072990a8b8ead67b8a719e5734d7f4d96fd674c404491becb4b3ecddab7f872afa3326b7e18d47d3332f654793323e13b4d9d2f77871c7ab50ac4d76f57fce635da6656b1e09b3571b8e841835023b2226a4ba8cd0b95588b0827bdd4b6f45fd183100d327777c2bdc0a0d55f0e4e1760cdfa7a2b701f06c0c5800fb49bd48d57a077ac90f1726ce2ead834fa1bdf735b13fc234a07685537a5eb01ec44ff8dcf086d2de02007981bd2338bb2b455a1379d72ca8a552bab119692b9ae1f2851ae5e838c33d1d2255114cb3223edc18512cd41057b71c4185022c4765049089836d62020905faf3eb92ba80dd91db64e51a75dd4f206c140"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "058742fca1521993d7e3bf04b3369a8cbdd505da63f7684ba9279dc8db6841342664a5d780dab0b87cde7b2dea6a0fe77ec1b723a47592ea932f895faf2d1e8dd8ab16228942a217db65d51c5cd29c05590ce9ddbf6f19111c9092e60e48ac5ff720e0f76cce93c6de41023033a902be28cd5c0203d06f589e7b63431dd741a3e227709e73793d0e2bbe0fd22dfbbbc1bfd8343dbdb8ec3614d771f1c58e107b567b81105546a3b2b54d3b56f8c5785d50f3cac892e03f7f879f22c80c4cef3faceb1038234e6bcdf2382d8565d3ef3ed668b05c64e08e0c7bec759ad77c6178161652b95142ff1bb1b3ef0d1738e444082f113a448e4aa7d3bd182ef8caaf6e2d07448ef5ca7cf7933690040d6d41b5d19378f41bb9cc7e659251bb63444c3983377bb01a176828dae9b255885bc0d872d33a0a257940f3b30b352986f201646efeec10796c6bc43031813f33634b6450a2d9a9d3d96ea95a6660caba876a0f311e4b083b25e2fa9f69e405e59fe81d337ef0b27996e76c816bfa84929b8a73"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bcf07d322c37a507d2288f6a079b037a6cfb1b5bbbe07de90c9a13b00d400f94a03c8101a2f9a4ea258e3d8ce167fd40e48e5ac42be2095302071f23596474e22d2b9fc20800c2cfceb3b92ba847717eeeb030e4304a5e1138976166ffd83467ae7790bcc4d0e1d093ff09b41b62cd389a612ff3b9204af9a24efee6ced39de96bffb1ad3636d7aba49f8deda056735afc848381546d9c2aeb0a72ed2602b4a619ab9a534186f8bbf5924618b49cbc35bb021e575c68ce5ccd886ad2d0c968292f2dcdd411826470b34717fc2853f52e10307136add9b68f7c79c56d992a08b461418781ce66311f8bc37abbb1dbd3551f924be3b1edfa7340267303cb48de616e7cfde59111dd1f91592f268b20581fd1936d8b3ace85cdf3e0d4cf55e170ac99de5bf5df69b851024858f8f3bcebf3f45d7831ccf72016877ac59ef49ed5d81112a2fbd9f97e40ff1e6f4cb42511dc246a75af9fff33bcde3ba9dfa3249a8df3c8429e700c1b3d701914802b5edebe909ef86b8f57b556da3b1f4e675711d9"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c6c491e6fe9fd16192b3baf32127f4f9f7dc21b1d2950e67006453f472cf4ba3fd7bcd7cf6f4fbff726b4d757bba414e1a848df8759a0ed67ac8275962c5e812a0e5ee123fc87a0bfbd9428e9f5fb0b484bc0e28b507606a71a5df14a02e968bef67e1a55f66bf54260e5563f8cb14d98ee2567a7653ab93050bc443f6cd857ad4e26e129350cf283ff7c6141ed0a5c5f9034c5e3a4a740ec1e80017c9f2806e87eb946fe7c2e322091632746788d9763a2c11563f871cdf0917ffbcaefa858e03503ea4ac73c6491ae12e9e32f67f217f903f6cff2b3f1beaea6d2fe4aa82dba43d07fc1cadf48f4891acdaf8e622edb0c8d7e0eb745e02f39e69efd6803105fc8413f16e891113272b1c3800b336867a1a303cf8b80527611fa2328c444d293287b226ca32172af6aa79f191811dcce404f5cfda1084e8b8cc8f26c875213ee3ff2d758f58db2e7eac571ab62d4095283083e5287e61623ea9b01be7b2ad31e887146f73ef3a1d70e86428b33db66de0a0e12d9b6960c00d9048b266958ac"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "43d99d627869bb5cb798be4db332583afc162875ef4200b10b0f019cb186a44894b511fb674ee02f4adb6e2d529ed86812e559797a7d60512747cc6a135dd708bc12f1acc01aaa6f6584a8f9c02351e23b77bdd2999b79660ee956e9bac5b98647068c0c6e1c5c5907f712b6993050abc872a217699ad5468cb420b90f5d74812e9d9af4e5a200212c01469799de9669f28d7b6e9726518a2c4fbe5fd1ec5ad66a1d472e8710fc5559b9e75d3aa625825886e9045c2c8019be254d2f11d3a55b9a3fb87f083a009a7a6634198fb9f4e6521d2706e3192e3e669fe201e60bd80574b5e8f66e8ea08740f3b0f0f3cb78ad90ddc95843e42bf4baac25adb2b57f667618ba7bd1c10b00c5ec14dfc3ff1f8f5c036ca7aa149f71e7560f1b1490baefb2b7d656fd6ed6e9115b9b59167a304ab7383e091c57f57e3bcf1ff57e3a4b99192b91f4297abbe9a5d94b6bac7fbc9a5bdb64657949ff0040ad276e2d9de21df2c02d68929a6c366ba3d0514b8b50ebb3224ca32ff88511d35e5ac6e51a28ca"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "544f8bc68d5fe49ca8188815dabf1c434ac7379a3796c5c78fea5fd2a9e36a71d50a194724f65cdd9c9562fbebd44f5ae3a690946fb6e528554f51353ccdc899c0c3f635bd83afd3429ea7cccef96f69cd6de7ff58ba4d22ba032bd0a113dbebaa780f149a47203a65973c27f0bf00c168382f2311de1e900253418c77d521d5c5838d4fedf6c3255d8c05051c396f0f6705cd511a94b19a96b043e3c4f95422cdce64c34767ff6373199ae1d3168b62ebc353b8c7e044f4a1ac36b1f692183729f8865d24966101ef047422c284cd9dae44f968b209cb1dc11c60cbe2880c3745862bc1c64899480ffd3229a551fa6e765f4c01731a978a1e2722f1fa0d7f235ef114523756848816cba51a561744355d5d484119faffb953f5ee9b32be692a09ae40bdd8860687197544c39535b196766e69ac8a05dc40c733a0d906d0f7735014810621a6d83a9e6234e6d2d9dc7b1417f8ff782c8f7c44c713dc9fe30757ff95cbcbd159f80fdfb86eae00bb8565d497aedbf3c4233c616ea852b60b199e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "866c67760ebdc192e302d47ddb40a927392833cf3a3a3b9c33923600fa08443da118b47db980ea74bb73518382723e375fcd9baa773f3b022d37a4b0fdfc817edf2a4d9e71987e034cb5cd80caeb97881abc45e8e6b965941dab478d17039d98c989178daa541507b84df445655f1171431da75bbac810729f973cf8f3606529c89b036e046ad7265e4e15c7f18b319a3c870cbfb7953e069794978aeabd9c20d3b8a3b9a44b68b620196eb1817d70162b22078fc4a63921a7f35c5500de7ec0aefa27d93282ce80d2ccd42c2d3ef1212c10a833582b42be78c6e866e887b8ee329b883cb08f3e374ec5064f7d1b760b717976761a44eed64d12021e2fd58c9640398e616ad96ab2e56ac95e32421f7c577e00c35b1fc95f1825a0214cb49047ede981a0db76c18e7ef8a9628702ddb4e9d5dcfe55da36857c497b44d182761a7c185fff68f136846c698b5dc0753956209c2c0e0d247b815d711d49683e9386387e82f6b4ca232b653c365485efafa988e799ce681f3c7c37275391e56a3233"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0767adfd75befa190f623ce2a00fd6c0dd2a8f1e53456489f8329a2ff6dfae00ec4dbd3156cb278c41c197bc80b260c9b8332d5f0d39fdeed33c772c45c17d3594bc37349a31a9ae58b4426860036680546c66d10d3d539ab377c2fd3ae25de99476f94187b895ef9384c7515aaf9b8d580eed7ed9273354eaba4ab57e4bc9b7b48529072dc691fd7e1a51a4164a795e2a3ccb2520cab25b8e78fa7ecfb057b05e8c056fbd407895e83cad14b6840ca773d6e6c8f2c3e7e34d77e3f746351562829a81e04450076c144176bf52c42189336313a71924964bdd34b207c9e69c424030e15e9f2daa50b4f162d2c872828606b12d71cc845e38149d76ce72cd11c33c46e837094b73905534cbe6ea9d9f84f74e9125a07c23dc32ff7535177eed47f979e7d98f62864ced2545a5e994eccce3c9ebab7c746f9a79eca3fa8523cafbe69b5fcadeafe8ccd00d91c1b0f12fc2868aeb19ba57863bea62391235eb35fa7924ba74b73bbd0929aa33862419982fae0389352840833e4c8442449a392105"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1baf2ccfd98c3c37b60101bc5c8f3ef871937f3e4cd7a21fd765023f03437c3179e6fc9715d6ae00425c7838e5a5eaaf1effe9f7b591f588667a596c539326e8b7d8765d78bec33e057a25067209dd26e7a9d149b0e0a3ba13d7af57c436ab9bebd871a2cf4f88b26da4ac30d6aeed5e67b871eca23c2dc34d0685a7bb9ece53ec9e99228c0561578f39c269cdf19e8c98cbaa2731ba1faa1008fce7df30a1e5f26beabf6cf0716faafb81d1de203a1aae8f6ebab2b123697838b3c0896786fee11e2953667900a7ebd359bb81b340c0b9e4353af1091b008b5d5f8ecb64d75c574193aaf772be64ed106b374cb842ad62adf9c98461327f254f866bc28290b425a3ec9d8e17e126fe930d58fab0a5985d7844d85ada69803bc29026e5be9c9a9bfba5e4ae00c91afcd2901bfa399e459ba87bdef0577366b6a546b91a8bd858e33a3ead31ee07405199b9638f09848af52b21092a5690719c75b28f12b983712b2c79035eb727e928e81df39fec2d939510927e749c4833c02c12139f19447e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c5dba54644047fe0d229d54710c0ed4f226380e4d1ac8aa865f3e8060ff6c5b3decff0836898d75b59d6e7a6bff092ced3782a8d46af8f3861eee72045a297b25edb181d1ef69c3ae0e69da6c04fc9286e2f919a531c44af2b2cab59a815f3c02f67a1a2d0b5ac5dc1d8a1fc7f6fd07ef6e3e5415987523d06a9a6a46a6e71f8892756fb18ad6307c22cf97075f6e3abe18992b55925d26dd2fd8227f34f992358736f22ec94ddf9b1401e901931e035fabe04abde7fc3e1b3aae5ea51d5e8c1e4cd6ae0adae1f0840a2c990109bd1fd39d6ad66cdf56b9759067c10d743f39ddf608c8fc7792c753cbadcf5ae6088bcb485c851025c5d7d0f28b099977d619b5b78c3ac9ae15c1fec85ce2ade0743c11bf7709e6e48823a9371e380a9fd0c06f2f7abf6177ebe017ae8d9c1008f04b93a8588848dc963cdcdc26ff6275a7680dc0e5039414d746decb067d058f767291cd1a0ea62850496460f75540ddda51171db09e45098833e2d67e53bb6f3ff7da92b48191c0d7b4b3161bec990359001"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1a9716b7cd0e7d9b2c348076459a9384544de7d52a597fda1d6227247028e21b910472a11e6f3924118a364936c895eb4c3ff4cc4064c43175a78f0b4de4464fa32c14c3593af96f262ddf302abcf7e6756b2a79b821dbb195640e8d30ce57d216b178a4a34415dad08f4cca150e39a901aa478d3f5fe4d4ab351d41a66df0e0677780f84becb4ba59655e211ee6f421685cd42616fbba2c7cc8cef92508b022e525195476fcff4357b79f292ef7e4fc754de490400364ff0969946c9c76366f17cc985aabe0fe6011e734d9dbfe6501a13dbb60daa4c78673a25d84565a1e13b7e981157576b8bd3e33ba750c9bb7b5eccc8f8fffc4ed817e2444425bb5b5d42a5d702d8b0cc093a57336d4becafcee90a65a35ef4800e0e0a5fab2018b1bb5ea153ca23ec59ba40d05b8a3df4cf807d934483fb0d8a2e7c174eb8c3f2efa7f82ac8a047d0b700134eac76a469d6f40e87d2ca2408642218f47e4359e697c62355813e7df722ef622659784406eb5ea26c1fe3c5b3e917b13a12363b20c5d17"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "191593fff20301e6587a3e57b9228b77260edae7e376416eb8fd4d80b31a4e7326d0e59f3ad3e178e84936c66501a8fafe8f2f4c9e4ba138cd63991342eb5be66c4b6231e995d6dab798efe105f7133db0cfdebe8862b21c447a2acfa9626e4307a0c7ae0fc7f4de3c78f9ec480dc3756c4d2b8c2d748bce4a7865fcdfa5753d72f2b84b609af4c0039425a0b80ee4ebac04bece2e11725f9f766f93917f3822c94c8a186f4ff7855ed54da3a959ccbab54b7ec2a3f41073d5254a06ddd8a240a997e391b06b083dc4d9b3fe7feef65453f356c84492d3842e957ab113897ed874ae9c5ce061be8fac4da3228c0fddb7cabc89c8a2edbb3a1b3f78a8cb41810863f9b1ab8e0e2a6a2782045002d4bd07cbf0c6ce589dddac5878599be97cec0c04dc42594e2366493919c6306d1b2abb1c1279daaf85c90be4904b93064acc73a7d59eff8191e3d4d9e3a763dfdcbaea492741e2e17707285a9ab8d9aaf8d2d95cb4ee0bf1402297917ab025cbae8a201099c4c06ea7eaf0c6808d142057797b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "105aa4e5e08da8705bd94fda6efaecf22363716f59ec83d0d4fe1a40160276a6cbbaf1fbf3501ae445be06c9c04b541caf22b58357404eeed16093e3d295391732dbbc3eec7589f80c02a5f01dd2b371197b46ec2e45723f086d6e4a72efa11a609c7e528b04a519afee2d01453d8504fe4e039dea8f5fc1035918829b59940eb97f428910186d6569af61371736f3c3aa65913b4b0a585494d386cf83bf6eef442f9e763fa1f205e49a80c35c7906264d5d07012147b557d0f8f5728d1d533b578d0a8294defe7174c3838289ff2505dda63ca7a1d261b754555572fae41db05ea1f3994d4469d490fd9d251d4b53df0a7ee9f091657a717368c4275e3c3e1a2cfb05cb64cf22d1e7d9bcabd4c91da37aa73a05a2f2092b218c081217456aa69962d5660cda5393408cdf1d2c7fd1968bd1d3232bc5fb90041dbe707b63f082c8ee743cf3102792d4b1cc9650d5d9f6004a31b3b32e9613d3fabd94395b1a01026a33fe3a42db19100d3c0eda29b849ce420e4ac0c71fb9a610c730f27bb026"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "396b9f59618e6b824e1ebc57b8f18a133b49d96bd3fa39c66bc4a206e79ee7984013a324dc41d00bc469285e8d255dacd178f106c9a37f11344e21a24275417ac29f2dbe14377d0feac8061fc24d5b178762700c60d6cb0a9d3896961daadddd11712c2c006eecf154b5b0a9fa5786106e8c12cea3e3968c42a165f640fa0bcd5bbb3734c55f57d14506169d7f805a4ec4e055f5ab2f1c0b0968b396119e2d64d8eb81cd0ab78e09790e33ae752e21b1b64dd5aca05259aba1c2014b390e84ff25f2dae3cc198a7ba5d9e4b104ac6a5466e1270a1631e6ffe777860eb63120f1fe8b3422a467a083463a133ba9db8bd18978ec559676f969e5e466ff2a8f0998bab5bde97bd4b759eb3b14b8171f0f5c19a2d590a344284b69d0b08729ed67824665701c360fabc9a48cca7591e8bc3b2300f1c76e4c6c13002f53b2fd5d45da382a63c1073cc6f4c43fd06bfd4d70104c4d5e2c74ae18a5dea531f5a6c2e9e23c381b1fb0fa1fab4fc94d662db842ff202d55f8cb0732628c6f15f824aab121"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "82d26da118ac4ce272ad266f402323cfc25d45c885d8a8880e04a6ef52d7de7971b00ea0adb51768b31348f590bda5e41a8fff36939b59cd0012eccf474552ccbe2308db3b3910ea4856a290babe54fbdb1f482f524d3fe81d1037cccb5dfb6a570c898680f19af007abec62fa233f9396279d0c6f9e8f9bf87f7a7e088f9193febca5316f0f10e139fd010de1a37173ee90d2b35467b768625dc59ac028505b885934e55c2bda0a97f3def80a2e26f14a4f2f9ea4fffab807eb2670aedfc85c2f95f9898f7a07dc2295c4f91ce2b96134e92aa9e053dfc2cc012513e39788a6f0af4e14ca6eded4e8e7befa85d69e9c45b98ef9bf0a067e9fe8ba29314b2be334f4a5438ae4bae6ee85b6b9086bd3bc13838ad27f033208c834ddd3f48fcd9c556bd6a6ebd6ca625372ef84f6bd44dd0c24c0184b3815e893952bbc42fb790b472e89beb93338dfc23198551ac7257ccf7ad1ddd776c7eb620dd6e6d341dd0693dcd91cef175f1b3165cd7d99a2623c7607dec9d0eacc0b6c487ee1f90e4236"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "02cfa2d1774246a4fa94a7f9142ac84270792fba20b09a47f0ddf702a41e671dda6690451937b0063ce2797c2146eb68d2e84c87211cd3f9e8d169579e88e522c98469ba814c5a0ee2f0f42386d44e07c8d447b77b04fe3799db3f2d7d20843027408a4f1f08a0eebdfec3c3ef81e8d9b4fec722a5782b2e2e920cb60b0cb8a28e7ab9b8c82ebf6dc25d439bdce586f4dbf41b01a2f777ddefb13fcd0e268aed975d5aa986cfff0403b0bc260bdbba4db2b51bf1f0dd88c54b0a7a6bcbf3ebc8840e751c6dbe405d6cbf94f12820c536700ba940a70a4ca8aea4c7690e33ab09c0d1fab7a962167e5a8fc51e4b07c82312b0c97e07d42bb2e2abdbb57442e9a8520b0085af7f3168077a842195a4e19c7fca15f2e7471caebfa80f949528d81b619632fb3345bb7bbccc825ae8bd20fe34474b70b7420fdc17317f711495040cbaf5ae21d7cb70b47a2997b794de3d9bf805d1dcb8104b50ea69429f3861e61b1a0dbeff7a03432f98a8d537a03b37ac38d9838a7c6a7ed0977f29f96b858ad0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5efc66fac14f6c109e9a2e219bd3852b28cfaca26f3c26fc8777959dfea55c738c5c086e819377f8f4baceb66b4980de412c63fd5a1e329d13a14ffcfeaed1d89047dab579e243b3fd6b85f87069997aa7d07f71ef40250ae307b280f0db1c30a4a7c2411ef723746eab7045f973277a174068bb8bbbe69c0773ae9977a7f20e971d405bfa5f0f975b5acc17237e7341f0ead535ba863c61c155377c47d4bca280c6312c0fdcd76f52eabbca08b442e0eb629a44a0169c6c63e5e1c52cf7e2c61dd29abb9142fa7c83439306c2c1f6cdc3257ad63d0a57ee0d5f41341acc7f452519353aed51d739ea9153bea1f6f029bc4eca33ae0511db90df1bcc780b3ceb6edf3213b0b2e20530d26bb6ba112aa6e1363da049d669266a956fa36e890464399fbc43baf7c8fd3d47ec6db5e1029bf6e603b8e1cf5ed9ddf6536bd8d6a7648af7fde533bd51cd8f9a6cc28779163947dbfecbd6f50917839b900e3fa37274d97a2049daede1525c145bfd1660d4577caad7888f5c84867c6fff30ee8356de"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a4e7378d2aba9bc6cebe5c8e5603fac9bce6e3c193c1675df95ab30904a149ac3f3d7a1312429cd63eec085f7392051a2bb883c0e078af0bdf29464bac2268a8139074ec53330722e1482b935fb57956214c7445d8a778686b624944bbeee7a608dd15ed277ba378f4e2dea04b33103e437f94404a09517f4327c80530a1f183e046756c166e526aeef53565cfe34122ec23312bfaed429369ccf08f52c2351e102f439751f26ebbd5423f9efb3da3d3da0edfcfee3b9607fd77dbbcd7546ca4df84905fdfafb469bcbd78d6cfe6e420993740b64e0846b5c0026990224cf3b5e1c325326376c5d6f3d1971365ff31498089482c7df06dd92f7952e0472bfd81a52b0fcb2058f5abdc70bd7d55e2d843821083bf6e8d13b3c11cb4fa420fc90721f226526ee677a8eff890b664e2a5aa5735db7e752b6c06218a1fac315d6f1cd6120a30fc46e8ac220a1bf2e6e4cea5f352ceca4ed4c5675ebfe68ab15da158a22fd044459a4aa9673a5fc078e7851170faf652c9791b665ebf62e16891b54a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "616a47c86dc9e2423c5678dc0ddb74cd9555f63c219caaf182f82cc0b47fc5505afb0405a693c4b45ed670e009908b6316d22692d89798521b477d45c913cd31042b8a0a52626e1727bc36878d1303c52ead0cd69c0e9711e8c5693ca3fcadd48e2641cd73e40eaa26fb7de1aa89f54228fe67cef381f52a571c054ec1b815e37d071054b08280e940735569f452dfea10d86e742ee8db6c52c696699b99b730bcae337f093418598bc4b648276b6a7f65130bf8bfa1b2b2c7893e408a6eadee77bab6c28aecaa0e3a200da9fd4a7d06ab00c38e7c0cd7e41f64dc43526fa28e5d9779730b41e90b6366fa7fd10055d76c95cb694d07c3dda1776fcc774c2b42eced3c82c9327d6865ce3c76b6666770b625eb49d6b7df9fb1eaa4867a8b13ec1d15af66bb5c37ad8ffcb7b059ebd9f198fa9388d706efbb20d7bd6f1a2d6a192e55c5adbca41fbf1f27c9afe7f94775c123cfb7f1b13a980e86b812f5a8a848b9bc76472c52f31f556c02eeb4b71e388c7cdde33b22bf4a5ebe1e9e10a08afe"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a158c783c6141376270cf0ab8f4c08e5a4534b576786e0249fee264afee8d92558a2cc1224422a5b33f1d0661fbd2891f72edf381f9b52aad268dfe82effc96bbca66f4eecc7abf2449aa3fb858ef5606299af5d477242cf91e54edbe042a766cf108731ad6b7b038f28a3534360906272027d2a83ae32cc0ef53c1a89e1372c50edf86b2f9f09f06e49e1072a5260cba1528e8607b8336286fee545e325f34568bb2867f3344a7fd53729da935589671d6ce956462b4729f8a1c97aad3380852760f1c16dc0f9fe9b9f64e7e0317e242cd777ecba0bcda61c19d6e21ce54f007da49e2ef35c10a0bf42ed8c522e6bebab94eeb5557df840c23739751e7cd05f02c52306827c71e14b6f8771e2d3af07670a7956eef491cc26a512a32c3a21a547925406184fe55882303c17c8bc2392cd44a77f3723dfb4c24936dc66b66da9c72a3ed5346ac14d31f5efd227b87faee10e5cd88a1ac73f67e5e6527752d55a12490afee5f500c4b12a28e2ab4ecb8928aa5c889f8aa9696e9d5116f748da8f"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0f442a9b1d7aaebd50a48a9f81623bed9a6e57a9aafb22f8cb6e56f28086ab3609a8c13f9f676451271325d453f9e3b31c0310a38e71f91ae90899ff610bbf474138a9e610cbdeaa52985446d873695e35d1de1c777efe02eab419d8f0fd5184c850112bfc8a271307f2a9997155383a85b80ac99f6031d94639a6603fa842f731c4920c7841228441136cc0b07ae11c4a07c28b3305ad2cf6a8594ddb6fa357f17a9fd7a72635323265a9a5eab8029215d21f2b3d2ea41350d031c93bf8d3ecc314d6ed13ed0517e12df45ade2f7a3cbdf0b17b220e83031ee06f4a670b47c7d5bda77c0da7f3df5278882049582faa073667a6270467d8b4c28b5930856ff55400aa1c7f7fb52d838d5e9508b8fd4211e130dced03a6996b9afb860c066a56a6d3e1f1f7fde8179adebaeffb2b8bb91b83b7c1c56a6dada297497b8d8de0069e31ea452c0fc4f820d769c12a744d22ed110fd99476a4524caeba7f766e1fd0e0ee01e91825bb5913c0e2f87497427d2687d776e2ca91055e38fcb6be3f843b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6e317cb8fc092da3e09b63590743ba17426826083697bdd526f85d1ebf0270afc0fd89ad67762836567f36d2bfb52252a2a54ef9f753a4afbfe520e857a503385ab6c16df6d4e3494954912ecb31c514f6427b676a1c61c83ed38009693ebc39add66a1af1ac1834381df1144fe5f0444fc955334a2cff4aee6f3cdd3abe5dc54cc4ec25c5c66286e91d29a5c498872e7edbf3f4235bebb402dec4b91e629123e841dea66643f224c472f75caf31fbaf18943e7bbd09fdfa8dd908ae92631129b404f7414037d42b5914b532e7ff5a618876a550fdfb80289c5d635adbbc60e41ab577c59bb6895e2c4f02140b95a47dc327d5f414293b3577acb277427285f82dbfca53a4acbbe4497141efd0afea149a7c12b6c702fb9e48dc7dcb0d4ff1f96cb238d34e35fece1436b14592d3eee800641800dd9df1b9541435cb2ce933a0150498f9416446c95172a2116ffb58cf5f397f0d0af2e025e2951444d204291b1c04281c9242058b937b5d01f74b6cfa2d55d975c6622198c6cb271f289110d2"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "41a99f4e616d19dbfec0e1e5ab8ab605ebd218c107176b2d90c58e41e01cd6f6950fe4a71c3b0ce81dcfd6f88b57e7345dcd466e43e3b5dce645ead38d0f5df81d307dc89ae059b3738b7900eda146f0ad965e67e760231ba58fe7e33d3f14fba66978e3eb7bc5dd6960b24ba2d59332760492961b5b81af6e37fc3065105915a4505fd239c79e6fa6cd8ba4bb585fe937d5d87955f659cbebd6bd9f0d0030e8a52341591fbd1624cd2236352e9e6bd91d7c121357a4af1184efd102fa911a7eb8d7dce098fbc02e34ec92d14ae333e502ab8bad7ffc275dc770913eee42a316b1fac871863e0f10899d72d0802bea9c07bf21b91050850547d6c8ff99ef52b1bddbd655352ef0fc4748c44d4bc4a4dc4ad3110b367e63620cf76139fff563a7c76a9b3a24cab86bede3568ef1524d476f8e39b9df374d1d2161167af5a00c61e0aea1bee56ae05ff1759e0826c4bb0b2058b5dc92a5c4dc865110bfa05506121ae58583179bd981100f42d1d89fd604db4f13db7ee6c49ecd381a546813b284"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9e64f806c7528a1cd1c8dd5b67ab67335b8f9a1ef1fba99afe67e9fb2cb11263c79dc422d51a68728464422307a0a445ac823d10021ab7789e6f701182f632786f77c23806b81324b5cd78e462c35e495532c2330a08e0e9ab7b44bc6dc5d99c70e052752a4718fff47d00c9b82c4dca22fe3302cec11026564288eda51b692f36fc23ab6b3a9091c332378be3582aa551c8471a9df5f9451291a1da952019788f461fc5262e822bf5d5e11f80b91fd8748bcd2d856e0bf7ee29333b627d6c44ec0ead86c0ab18f93ae9f29dc3a91562387a703b42a17cc4b7b310b6b6fc7d9bd7bdd907520dec948d2048d556dd6db3b0e5e95788d88d0d643c6336604d0b81fc996bb85d2b4993036635a15acab8dc486e061c8e2eab891daee57bf08563bc018401087ba854f300a97b9c5fd6c5a3915ffb240a577e7ed23c76fda89407be57aa7869db4c6e72fb69ae2af877f189992d99dc17a071894a2c6293ebc9e205ee3792c4da94de734b77c47b21c7a6572759126bdda03f4984bfeec0afd744d3"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "71555a4df579d3970cc515fab9cd2775782e87a7eeb0cdf0fb9614db00ae74a78d495110577e29ba7d7ed8c2f71b8f476a87bc569aba9926c75811241b2a3525e6dbf3c339363b9d85511a89726ade496fb45fb476e0fbbd7bed7ac1fdc9e8948f622b2f2532cdc139fbd500f2807022739cc396023e09833f513caae70374296f6324e31f27b1f00978ad68a65a87f63e868f66589becdd34dcf732f7fb85a79a28975fad578cec2ff9f2b89fa7c03b03fcb14a0cf2cdc4d989b6131fd3ee11907f9405ded3963c2efb6c1bf79cd42335cfa143e108b8b9c2aa8f7d1e417c0fc7891456fd7ef72fc1d0d50affe882d0a31139df99a6366e7b5ca2cf5c11e7f50e2c52f91a36543c554e2e467185e0bb4fe29dda115c214c306dd450bd9c261aaa2844091796c2e8bec02b40c7876495b7b4d327c6ab19e1a0a90dce923ce8f8cd7cff7b6ddf59a011d821f2c86207b356d0badac5c1028b3b3727933f4fdad43c923495af16a23e913ccb998ba0975863dea15a42ddffff3f0b4f04a153372a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a9ffef059db6395dcf691eff9ab53fdb762000fefdc58b964af85ddddbed15049cc8bb2eaed4aef8974bd3c9e65386f3a11effadc26a9f85f648bae5334d08ce23db566fcc8a6ddafb127dc95d4c3ba0d7b71546e1c010085d0e5c9e7f6d1f396b50c9fe712ca30e78dca2ffb58ac5fa5816702caea67b932f4b8669f2cd3a61a412c685d15678b2fcd982f3b8853ffc2efd841d59136501ba65707e9488fc0078bc03c318356968e7478ee3eba9aa0b186660f08b055cf025866db2d7162cf152c6caf4a3d68b5010ad9e9fb346e47cee9c95ca4dd5455211d0897ce239ab92a495cf2db2df2e1a3d8cd1039351984277ace1888b0194dde50d53cb9b05b28bd51939d95683160a9d7d36df412632ce7cd693fa89bace61a6a36347339d6e068f8a7d99f76b470f381553a1f901e5de43bdc8ebe32807670abed2d1d7cbfb212ce10fd5bd3769eea5c175f006aff33677b20383e61433f5b63da31404ae940675d3fc1c3cd39f56aa2cbb30efa646427614c2d61ee19e7d5b8ec5686a071b8b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c3ee2d5e72370734429ea8efb80d949ad0f0281909af720183edc0f10c83699f8549fa7820631d084c812d37e17e37d656f2749721b90db083ac0334b56a413399a92977b73fe292822433c1c97b2a176722259e9d19e28618dc7a42aa8585e9665b55f3ce00dfd28c7861eea80583fa99d68c8dbd5accddbfd8dc2f74b9205059637a5a09952b03ea2ec0bc2bdf8ad211e8cd6bd410337eae3331715f92391b631b5f1e2c339dba0cd6ccf9cbaf17c30346987236366ae14882046dacc32b676d84f4378c3f605eb81529c398882450f833969c8849c489934e0225cdb54ad6539f81e276f16004761361ac114581ab1fcb94bd05854687c8117c590683d7a49f7b5d2b80287cf47e001a7c11c74583ef2dcdd096bca5a38326f87e67d4ca1b5e36f88f0f0914ef5405d49349febbfea2ffd44932b7e5b12c7eb0b78c4de0accd9aac30612f6de12e710ca0d5c1db70cadd03e88198c07731995e4b5627dab808d82e2fb47a538323a65327f236c1fb192967fcea14f88c03beea4c31319fc2"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c67ba5369bf9eab5141829d0ba753245c885cf33ec6e9ce6751f2abfa172beb3db01ed0513f3b936b48619c64d6cf58cf8fb1a6b85e0771dd9450e3b4535740e7078a06c7a9afa4cc28ed0ffc695a0f9bc532594f0410987d5a308cd2a8607f231186247a89e8babbc6a2adcb71827535d11a95228c38790236ad2fc4de9fbee03c2b2d1ea809f60ac8ee770209e39b3260796bcd63187ded4e70efdbfd89606e9e85b13c26396261b3c907954bb0d7d8cfe2dfaf9a94ba6d54d98c082fba79d254592bbdc3e190c8dffd24d84e03da96eb0d291f5cedc2a9aec051be76dcc9841e6a2201323f79d9f18ddc42fd45bb64d62151a30d1111782a9ac4b8b5893145285eddc0eeda0768e1218a693a863ae2ee5a959e4249ed995f85f1a9f8692e19ab609fccb0a93e986786bd548f0bd70022b61bff520d19aeb97597f98034a5b78d6454e55e8f4caf4eb019d6aa00ff736f9a3105f9e75ced7a5e30882bb5945f71a7c8a401cfed0c07f0347d46cbdce7bc1e931c6b0d5c1488206e39dca2512"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c3e2c6d82ddb5af78bbced9b7d3543f69deef0d7b0acc29652b13fbc2b0a256a733f8201b334918dc8354b3817d2cff4a2ca7d00b329ca88217f28087020528c6c30a75a1f82e0c3ef3e49d8335c1c354c31b31562dcc2f98e6b960e52452d0a37cef4ac21c41110070eed657f2ff30839976c98f38151fa55aae5780ab72fe2f5a254b4f83c8493001a598f2b57197fb3d5eaf439671b4d4a596f7c4a4537d5ba3937c9baa57623aeacf54cfdb708dff8aaf09a23d285ee0ae6aad50ada1f51c1ff5c5a6468f791cdd7619138c06855675da115043795517395716cc8c0d282f5aa5c46b92a2d1cf20c50ff7f69749277611a36f18271d2ad91ca371ab2e87aba74f83c37523b50419e5debd36e56452b39059a32823e3ac57929452052ceebbcf517a8733300ef3500ef4b08e4d2f6533ff3193e866dbfcfb2e841dfc133163ad3d7b605efb3a8c7715f0dcf1aaf848c4721f9c5de2c49e31e92cca767b0fd34d34c1bd1db1dde2edb1eedb119079a4cd25b0862a4b2447dba751e3f3cf"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "80fc40a92375cf58a2730a709f08395c7f7a7577ef00c7c4730781b806afd5f69cc0c990012c62ac76cd4f860ecbd8b6f96c4e9a7828595bcb56861cac5a0a1d39040d96637a8628431641115a1f298c144e3e2bdb3b43f8edbf943ca9b1378f256da835a560b35fabb3d0bdfed894643daca246a6e22cd6089bcfe033329a3d18f5a27194cb8c915ba5763b44e51e5380ec4096f7cf5296db6c7ed57ef8b8812edaa10d9f12adca6dd83bec5bab1561e174226896a46d104c134b3c17c876856d54eed489d64c2121d68e48cb1da6357d9ab3128e25f16b1809288c35ae38c901ed6bd1b80961853c1d4e9a60273cc39656078abb4ca9e8afa057df58a5fa851a4dfaacac3631e2065fa8e2e423b4692dfc96a73faa7c2af3d89cf1e98dcf3e69c35dcf38847fad526eb56706ff4f9edc068be609417e60d169ede36e4a9301cdb58a408bd12eb37457f05af1f96e431241354e181f92f1199d2bb45681caf56ddd13542994fab6bdc2027775564b782cfa2cc31d305e7e70692a96182a71aa"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "756428ea39f0895138538845d40ff1a8957b5c3e913e7b475198268e40efc604cfdfa189619f60f9dde5694932fe5419b666b10abd4adf096d6af10360e1c6937f3c0ef1e37e2af4faf064831ec44d1f581398121c29c1a4b3a056b20cad0fdcc99ad6f68a51e12717f72d2981038ba2b860f7347a435a69ff01cbacf8d4c66ef98959049bf90f6c78d2215e66b8453fd7de0c2d6ffef90fb003192d053046872fbef084fb1b104a37980c2604d61db8340254b37c8f4df3d5c1ddf6745a00274e7b826398e756d5ebaf19aca16a137a6a38e51612b580ca3fcfbc4d7eef58a743c8c7862135eed1926b4592071ceebb6133eadfd8ae270e1367f705f19b44e0232db2173a261dadb3c61aeeb9ab05dded16d95b6b0ac7815e9aef31314003949e19cd76ed5d7e57509057e6031cda36d17b1988479c2bf217e21a4865743452695415b70e905f836561f08e8df78c593e5a64efbb19b42929c4fc9d875a8769895f21b887b1780dc38937d0dc2efd10a14030e43ed63554b1ffac50b801de08"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "579bb79622238ac1cbc0af03c3c0d1ccbaadbb29ad974f67b76d752b960df0928d364e33eb04fae281992aaa01fafcc0669eaf87791cb8a7142b597050afa58571f9fe78a93c647307ea0db9017e0c41a0ba712dc8871063bac01da6a3dae7d0c5bb5a40f633b45cd35213fdfccd296221a0275f3b552e56ef8c856f5bd96722ee3cd9799abf956dbcc0bde6bf65b1b2641658f04e063298cdab2029c8c0af0566878822737fa9d6cc48c175fccaf7e866d80e1e478d7568a3e67d39c3a14508711fadd84c3e7be8cc226a23368e9982138128628bbe97a3c572ee68606bf6427ee5b9862bebeaa4f6b08325241da15c9f223bd18b797e1d6e88b2b08a4cf95baadf4d684c8fcb7cd44711aaf203862ec79bd5f071247636623b88709f6686d6ef3178fcee04e2de0d661d92444f5cbf3216b07a5f6cdde0657b2d4596ed148255957b0a23e8f262b1ff628cbd7ec7e88267d100809ab5eea908aa05e11d823e794a0d1e4cfb82c76b0cf9affce1fa0fe370503accaaedcaec65d1ef3a696df0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9a32e4a06f502fc0991ba84079044501b140af892bc3a3c46f9c41fa75c47745292de23fa60443adbd2e705ff47ebd1338771b157741c019c2187a2c8a08e06583a5e4d83aefb3146a6eae37ff79c499646116f2e457b9baff4543d2cb0c266fe0a6f75218a0f565c78904777fd63e1958320f084c9abd89056d118a269c11e00f199782353950c005316cd87058ed794235fb0997fccd6c17c7cf9d5784cf8cdbbbafb96d6111824e658c3bf574d123f6dfaa1ddf77f093ded9e636f5b921ba9b205667e3914932407aac17813457ba75e9f4380ba08eebb8abf5ebd281fcf5b2e5d138585651f25c1ca7194edead3507d6e69467013512b679dcd9ce400c66c1f3c0a600c9d0f6c33a56c366e56c1e413433f904eab089075ee9396650849d70faa450c1695400b2f88d42818ac212a13fd9bc2f6926e2ce92d7394f8627b4ebd27b8d45e179ad927099e3bb5e71cfe6ce275b65db98ec4fcdea0b43e2dcde6601f0a1c54de549ebb03d98d1b361be9239fe8dba8dae94cf9d1bae5c51007b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b5efca28b066937c2cab27c339106a0f40139a1e1a5b6d66ec3a76abb62824c06a3e4dff6bc0dd204610fdf386e1ce13c87159f4aa0e88f1c29d07b1320217347c52e58c57ccff23c01c2039c2a385625072f974b690aed9cc5f6341c33dcd2aaca6c260d5945d49c5963c4fec651423c765c973e457ea2ef33eb57b4b4eb88f0ffb66789303c725e3db8b76e4eecec73c5a466b25745ebc00dc347d33a71f787e7723358270d0e258719093736f72182ef5cf2c4f513fe648531d755d6e945b3c44843978ab009b0b6809bb0db6794a4bb2311991b1493fc15226c15739e2b3d621cbbeeb891286d747dbc71a7c9cf06b51442c8086d839f52d73a072647832309b59edb37522dc61a97a31b7bf3c63980060304fc647c5743687c15389f4d996e38c83bd9e631c3bae53c1ac35486e9348b730f066069bce7e840f1b83d5215a52284972f2258576e608c35c4521d87e9e52cc1f4f284674f1269730bafd4f5727ac61d9d179302c99ccdd4d9e024578803ae6e9fb76ab5f74c23d234313c5"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0e5130e5c5145ff0822edeead396c87963494102b8a4a0e38d9f55c1e698d677e5fca1375cf5e027024966ee4fa8e2d8b4f25cc2ae8cbe49050bd675f39be5931ddcce426e1977576f60c6b79174a763f57395890026d762df6c8db0f79f02227196606256ef9af7f6a211b38cb1aa0c2af9be830e8bfa9d30169381a22b74f138939081a5261f3b277f01aabffc2dd3af713b3cf11bf772d69d157d7ed34c2ee7682745129cc7c45881e00a235c5103c09ab3719bf56f22cf29c4e962cf7bf4f633e01dd3e49fbdbb019cf2b56475fca8007fca63202e02dda6866bad778538e459e7df0bcd234abf919b5e6713a68a9981227f8d3ad204d077bf2d70117ac606e03caaeab26d8ff04c3583967a77c63a3a7cbf3d820d650d56c76d31c71173e9577d238f1ec9bff8faa48f3ca49f531b38eea21b192435e0b0138f83b54635e07c12ad6d7f06b5ef51bf5c21083e9170e86189a47f9907a9622201cf3c689b62373f94c540206c8600ba48a049210f1ecf93757d22a70c88402a17ca6a94ea"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "eff78b2945917f92e9ba0847516157ed33cc85c64bd1f5bcdcbd62c3906c5b77b247c892536b115e6bb03ae3e692bfe94c9d6b58ae0627bb96bcc53a85975d2929bc930cda5308f8dc797d0b0d6a5f4ab5a36e096fa4e934a7854355c1562553738099640c3ba675399a9d386b6a9c61854d00f7b6fa5998bcd05191a9001987f9621d1469c9b094d72590d76dfdfaf9b9f52f4f8d28315ee6fc22550e5feeba3a41f223dc9284d26955247fbebede5a3d643b4308843165f658ea0887a9661b26a707d22f5a827f33b2a60eecac67e9c730983810952247fb903e62317d835d9cf6140559941c3cc5ee7333ebc4bf43d036983d0cd3a3dc2330062f22933c295b05e6680ad053e8f64898151c72680f4ce8af1583fbd2f730f7d63e6d00a3e6991f809909b6cc8843ffb25016701fafbd6393e65289106cca59f73bba012b0bfe29aefb4a2f458b52d4736add4c2732c7ab1264a33b9074153b5699dc5e9566882a29efad79309fab974fc32b96750f411e62ef0acde9f9bdfbc8ae78ceb8"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8d636450d02664f8fd18ca58d208b87ae5efab968fee42eb399f09ef0f3e6dc0ffa4217fa262d1c2cb488ef9625895018abb27feabca718268ff274a84358336375949bfadb21584dd59410c48968ed76b0f5b60e01adb37048416f1360f997d99477f0a18b367f91d68117aa9a0fc229cbf0198ee2f69493330dde8156a265e660f9169d874df428bbce40f00a366a5d6df2bfba9fd6f78da60155af0a5f72bb971fbcd64e144146e037bfeab5692b740bd61c28ccb5fb330bf5f10e595692608881ec857bfef1fdb94a1c4ba63e50ae0dcaf2de94bf50c7fc5d8efe099a51785aa42638d07cc0c23f796bf55d6032fa3027afa5b8d6072aebbb56546f15addebd36495830d7c08ce99533343e182e7d08031b95e50f729f5dde2d276a1be47e93d66ae45547fcd6e90c9a5141439c5a5d3b4000ce58e38ba4809657a622d9d659de3eaac858b6e8e34d16997a2fceaf43a9a733dc67f272f3bcbe560a75542784b7a16cebde20bbd90218466b5501b1f7299de1d9874f682fa0bfd41d6d54f"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "633e28886ac6e7c2c36a69e3c1d6d46caec4d115e852c8030ece2c5ae1489fbd795affa8478b23f484b22baac6d1571f6f2f33f36fd28c66cf9b2c963f051cbbbcf5c33764bf54867a757f6c74bf6574e3b7778eae92b55495bde44a9def4d1a31fc8dc783d60cc23d1e6ca973ec0832d6979e56a42269d6fecb6bffc3eefa36e2c340f89311a89902b40d2179e25df9c841993f245fd644b0bb65e5394beb84b1544fe878b165f2f6bf49b77f8ca4337c60be4a89bf7840dc642da1937f9a933276320d0488bb6cf4535e68cc4a558c95fddf04c65400500fa580b476dc53d60fc33ebd06191ce23ac289c7850a9f6c96caeb68732bbb028f10c496364e673236e55d54eb6b187d6905c9b894b7222b68d90b82da7bf29d1c0ff5a2aa552ca13dd49a9f50d7e69ad40cee65ec7ad140642002e75c3c6cd55d5892528d2503b33debd4be946a3c48d7ba46abc96ce2e79396116c329ce4e967ca28ebd56712fd6a9de4ce1a5ed00df621d18713d508f6f1fb959e2ce8ca9f8eec2e3a5a80c771"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4f7025ce36f71e0b1c0a4659ddd25396a83e4911287700bf27f72ee19f8990235af6d6f33f3b3d3f7d400370a914de2ff23af964e4eef9c8a1b15a63d38935698ff70b7c2d2d2d34cb8bc82133d70fc1fc3c19d9f47f0fe463393b60a61fc19d49f84385836278bffd710a7ae72005821718d42b2f195b6a3bb5b1b6862443a84d6a4ae04449b6bb6b4347fa14fbb4ed802cfba5dd00aba3e5e1fff2143db0acd4e50bb9951460b1e6ae5608ab642780706522e971aa350b13390df5aec8585c3b4c2bff9b64c5950357fa6c91f88e981882c52a8d93f156718af5c91c7009b3f57ffaf98d9e280ed51148d5b2d0b57495276fdd8a5fe0885ce37426760789e671b4cbf64e2e21b6fe4a1fd3f538675fbbffe51d8cce7b74c9bb9c25e9caa84b88161630a8afa49265d172e68ad42836f6b9b619fe32a1b84734ae58f09a0d8c8a5f3181a5130a503306bcc2535b0cb325c060afe57e29c7346a5489f9dee3206d8eea75e07514ca3ec547c816d88a4e5ce4b7e4a61b3488d2c13eaf62204766"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "90db572ad2c25dd02aee6f8e0ddd5d42f5434b9b59f0bc7057abda8924c2a061404f345b9ed3e2fd0486fe34e2be725bd9446f031071c4ec13772fe468ab4961623d16469a5b9577683f20035caf524d557291b700a6903dd6c472b50cd09455779289b990e86ed6f7135af290b320957c93db1a34bd66289b5304828a71d2928fdbbc3a90af3884fa2f710455d2e909422e66aaa1c01565fb67367223f2bf30661ac72b9c6a84fbf977927a86611514c0c387371cd94bb703f2325e3a11cf83cbc6727b5bd49f6fb31b7238c1a464b22ef6c5db0dd2d5039ab3d5a4a7b1ea01cae494c5dafa48b73a411c982389abe5fb2de35d6abd5d9dc33e7703f67d58feda3a17fb6e9ce3200f44fc614638f7931099f13bc175164d9d68e2a4d38f2c12224fe136fba4e7fca1fbfe3344afd2f52d8812624a1af39c4f128e1c9c1eeccc0ada519f27b694fd982ffb6467f791461a2b803cbd298a4467cecaf274f855583ddcf470092f642edc79b23eecdf4067169a2ee72ae95c93e3ee5d23ec407185"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a2f7d989b2b509b4d774f5de9acf12e5eaab05684edeae1eb42dc090356e58b8e15a32d8fa313252633a8356476327d32915c52449aac56fefc012929988fa5cfbda0d04d81392eb35ea340dfe449511f5fdab774f7e659ca0a8c91911a255d828e00d93d64638f805d63cc926c17804cf1d857c40be5d10318fe06bc311a66329128bd1102756da5da819afaed6ec6864287c44952244e4a8fbf98a90ada98bc1b5519cb81173b64357ce82f29ff16e5d76a929d4b7db51d9f3a7f4c91491dbc6a0550bcaf5fd37646bd8f71ef459540ae8eba668723a81b941939540d92c4a7f9cb0543dba1cb7969c4d644c8f15bfc13aae4a778a81b27b82903dd223ba4d5d5c157a35371ea1443788d973d953318b204f232cd5c53a9a2517d571cafb62d3378655dcde55f46597295c89bf882041ba6f4352a88dd7c1748761728a2d8dd628433855364024d42a0097346443459b840415b5a56934ea476c5f9de84419d564e493c594a9049352ea82700b1767d75244ef84ae2c8a3d5b1853a0ad08a4"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5c662670149791048df0ad6c95a119bfae057011d7155851087c0085b901dcd6e95252391f9661159f909def924cc165b140f02db3863ebaeca40b57ad68cd77459ad258b892c090de55b93cb48bed9a96b5ef294e9c73325e4aa595431e780058a392c0b9d512e3731509fd537df0378caba38c3e20d17e3f8c4047181becf3a505acfca94a961cc6d952b387175e8e4274b81acb168f63df180210752fcc72dce93ee2e23333e547f4561ffaac06597757712ba8ce776f0a2c714c40be54b562ad693d631aa1c3a840c8749c833401e73dd05a9592a477dc43e52d140af0b2841a14b945a10bbc5e4d4f47dfda159646ef1d49d39054550dfd188203585d0201c33a42afae62aebccb463e3d2dd8748b8db65a3f5aa3ce7a1b227139041bc805b7a71144510abadff548318f9a76d8a7f64eb9d269f7739319e9a3da728d001e29628ee1366f53b752f7354055ae2e511a6d9fff4c9b1caacba36be1bde8fbfd0a4274145ef6f122cc203fcad66d8f51e97b0f8f25a08ea8c9860849940fe4"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "30596e00b2ad31f266f2b47b598029146aba9d0cf372b4eccdc5fc9f475c36567e6a159a454b417c77b7bc576721c52f64a31204279d524409434b73de9ae4d819390c3124ccffa5b4aafa135fa753e71c1b3b3f05ead6e6899277d0e994ce6111f61f2464155f539b8871ad0167a30c234e0541b1f39def8deb531ed476d81418218c682dbbbc0f4c3cdfd674c5e7a7bd057eee05a9f1b8b796260380e38631303d227cd9df7e76fe9cc161f8db2d9db7306834b67ecc33ff91b3c59f35f789a65b6f1433f1cffd69545a146fcddbd047a847f55acf4adc9be2f2595faeadcfe39127edeaa9a1144a5a726edeb7b1a48fa900881b157f7f3516f47dc0c108630cfc9304a2acf821a93a867b063217db60c0514143eb53557ec8f86eb8a83a83219f8c3310baa122b79d49d48bff90492acd83de8c3b9d5f07cb2d061b243d813cb1be42c658e2ed52a9b31ef07360df5945406e7c81a80337169fedf5ea76b25a69a1900a673b648831745f3b04815df9ed7d71acde44fe36aec0a85a7d6ec5"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "23bbc7627ae0069673b6de161c79fc721fa169d7719400aaf7d60d53773649bbe5cbeb4ec3b553dbab1b0cfe63142d21ad3a46ee475b7b50ee617e6f58aeb6942b0793b94ea0dee9347ba233b05895b457d478449787cab04fd0c4b01e025088884272bf060a82405172d8da5e0b4e070c61af641d311885519215b0fbc4947097c765e87ee46a4a642bc44b7212bb8b64a2cffaec496ae139c248f6b00f203de256adb345be3f46c11bed0811bab43961e9d78646cf14be18b891552998782a413b6adf9829bc47926178ca118ae0722af0aaf6694d5aa64bf970d530f71e309319dc43f2077fc66afa48365d90061c0e1696ecd2ec29a15007bbb47278641b27e10a28b60e4e7405fbe5a05e5ffb8c0a52472ed51330f169440dd10d828f1830a23dade9fef0c4a2373eae849977e1cd15054e4ff004b9daf6ce8fe8010f9102d09bb4b18ed4e30cc9c3dae2629650e00f139eb433138fb49e2a896dea8a13253282d8e42c1dc42d490b719373b3c723b8c991566474257e96fcd0027808a5"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "37a98cbe608f10cdefb4d787a23681902d7a3a02837438ffcc778091a12dc473aa6cd38d7abe75c362a877456e4b29db13659b4f3d9bb1ef73e0cab33ec2b11d06782ae4ca0a13d15f8856223abe0131f5ec5437b2b001e4f5903a78afd4c46d6a47af171271f3a4cf267b0afec0a1f368a789f4c03193e2f365fe6c0b8dcce1b2f1e6f1e0cbd7c6f1a98a8ab747bbd27485aa61ac84e837a95a178efba0b23725c53f00c94b3cee6831f4d000ecfe84af2a63f341e7bfc2cef7f5654d253654139245c4205c0b2418e8de35da690a8884507134a0b2f0bb9d20eb8f39fb134adbf171f1a8edb4e1489671005f8474708708d1a627d22c76b8ed0993a9c16a6b635fc090e3b38b96f37b28ec44089b17173647eae6ac4439bac2019ae8b928d094665aed8ba0ff89c308097b1e7ba74fd2579f1c21f63296712cf4f5405cf0f3eb60ae1600a5b8d717a09ed23034368c9739ef2f880c659bbfe855f809adbe231ef20d0eb6300f2b6ff02e9f3666876971a9d41f8f0f8fe954f00bf52c0ce013"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2c269aac4605a5e25a660071fba9f97d4b9e4c0f0d2e567459e5620884f889cbfb33ea6094feb6d2817747859f8c203c548d5bda97821c3b6744711ed3f0bf02954ef75ad6b9afcb6872273f1c164ba168db9a8bd72d715bef221420491ab6b67d5f4847743770ed4136280bda363c1fcc2f35ddadd1be3093eede6922cb95e3e206d02d98e91194a7fd39c304c848c1731e1f90e8a9433db71d94e7d76d7b5f2fdabfe20e8e1ac7deb56f81331fedd7a7e9ace76887dba2fcd72ebd2017f5bb85de1cd309b3b7f7fbb9d8901f61bf8992fd9a63f861e8054c9d4fc1472786d6efec3cf4bd1543116e2bf36698de85a6a3c17c200c73001b3218e72b8bd515f9f96d9ced500a1c6da4c0173f35ba24ee746e51cfc3ef00ce60441031bdcc2742d981833006bc05a513f1cf67d6a9e59ad4acc029995608fd05b744d48be829148552e13c7c76450f30b5acd4fab819a71c158c82d587fa7e839c3959a8150395f567387024f7b786006ec0b1f6960d3b5de347742eda16bc76e3359becd2e184"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a2009e307ff24560348c7d796e1d69c5726c8389eb26423ce21cdb701623343a25d2a4841f994f3933fa82242f9d525464e3b6c770584567dd8bff3ae75f22f94139a9ba2612063e8117a23adbf72fb8c425aec994219c16d42299682eeffce61f4a0663d173980066009d542f09fe1186a28698109e0d5ec28ee2848e0a91185b492e53f67123c3f6d81826a943c60cd888e7d332310838f306913e3321c5ca89794f27a0ed36c697abcf665be1253637cf2226d7591884a9e7636b8f49972df71dabb14b6a4cfc4b4689e3c37869043bc0d802fb906a902a24b4445ada3b51f7661cff461c4b7b5a59c1974a8fda528039006f1a860eef799f15f606ec8fc23a20d4b80c01a639d34b9de0eaaef84855082e443f9a85964766473326d6ab6bf49f198c62269356e28eb920f858f3695cdcd77f3fb513121470c64c25f305a00977d0d61ab75143bac7eb57d9c99c8d51ddeefc41e3929f35da3dd544f55d878a9abdc0ead983a08d3d35d54b2afd653f61ddecfbbd936dc6d9721a959aac0c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8431b3c74190f8c0086d779639fed56544ad0fc422dabb1b5dbb600a7021a2e25fd9e69ef305d0a3da9af97e24ecefc11f515412edcc6a6685b3c4e8c251386a7728e3add07ccee395a851e5c1330fdd05c033269fe7a52df15a1e81764facb46718ddf598a83943d35716e3fe1f216b2e17075fde3751148290040a56535eba7e5d05ce7738d2fc7f6e8450bec68a0a35a5cbe8aa3ca0adca3886bcde8649fe491c4629be8a1b8eca64cdb226eb6a0e32397a7e0dffca2fe7b27b99754a428ba300cd62d0ee228e925d96418e75138f56d7219198d04dd7713c8e8d606d7a9bfa9f1b9d731ab9e0ec8553d1515a32994ef29f2d2e9c1ce8a32ebf8d970121655810b1afcb96fbfa0495c39b759921624498acdfc8d9abe95a0693e04ff6eaf8939e4961c32b86f3a5af479d294d6dbd01f90437cf6f830db644ad9466262333829fc2243ed32ca9fb08b9b56633bacc450d86af6b4733034ab987db01a118c5c41b9b792a83be1b4e068216cb642b11075a43efe7e3a81f0872c4481ad696eb"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "421b2b4795661bf967bf5e679f69d06c0fb9a02192d839a440d364533de5c3f620f8531a68603119ec4045391c8f3ed297ba295bc1215d4c4f0f315a73b338f31547c110d4fa1e3deb385eeccc2d57e03c0f6309f6c3c28e4d837d22787bc0b6d626201da55b605f4e8522ef75b92dd1d6dfa0a177b0e666f04fd211b713fce8b2fdd96bfd4c07e64e4b8253289e400da12fd99c2c0620395208b7f2d04a2eb696f9992b0b0485e3147c5b18aba35c8a90d10b0429f3fec71e59d019f270a5e0cb0fe0b5eef004461b5c6286f33ccda3ef358d99784500084cfb5c9d3ed8e1c5327c4ce81eb1ca34390ff613807f5a24e0428eb48c97900fe9c3dd68d201a1d2a55a20174adbed47e53a0d0f032acd4d65978c8afb55487af30439bb2f151e343a47b2ca3b5e082ea741e375885377a2e3769c712f4d4144d80c2a6f2b1f0fe41e9fdf9bb43d7370332ca51bb2f1325f4d1aefcb5dbc42614f9cf11a4ac72eaa350a9c2222a6e2d82f6aa29df12b33979fff1ea265fc2a5055600b9f96c8688f"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "365aaed072b2d0e5135c82f25944292872f60ed39152eb19045b209140a4a74fb2074037dce30d674e0fbc8e98011ac681204429d9a5ebb8fc3bf20ec70e6b53cfa45b259d4f1312354dd5a00bc2ecf4e99b4434212f92bff2b99c94a08a1327fb45dd3367779a12d8dba9ca846b85c6216add315fe0b17240fb021bf61970446339dc93ed53cf1c57242eb4aaf798a1b8010e9471f78b6f0cfd7a628ace627bc64a4c6d853af0d7ff00500b8c682238eb37f59972ff87a9be9eccf69115475ff45ed6daf9d462e09ccba899315b5dd59a3cd5c3ebface31f99854e0475fd76cc7c191ec3f13ed7933663b3902b0cf7ce7696cc9ec28c13df6b9cbe9182980f7dbf7ebb603274a56871de960a52bb5835f4db71558876202b8d9c4edaa35df599f1c6dd105dffcb077a7ad8f7748c58d6131546694bfdf97a645ecbe3829dbd2da1263556a3d29e92a810337c8c1050686ae880314b3e808abad278c48655708bcd2d711cd93f446911a2b323881c98ac389582fe0a9601096911a8ab0dd8669"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "24a95969a4ff4982bfa2021ee1ee009d2e4ce995e6938fb48ce35041842bb516ce21f5630264f3f7140e3135ea5d01eb0ea6aa6c3b85ea5f64f1de1de246bd6dbafac9cb0a8a0003c02e5eb68714d569c8036bd604aa7bc604999a85cd3caa209ccb12dee3b89dde2c9bb74f0dac1458399cacc7e4ce538dc3a5b54c5bf7d3132430110089d5b4731dc91c2711dbe0b46b97ad7ecc948cf5881c1473f5b6540ac62963357680f1b12a09a21a957b512126c7457b0635c185d36090696c313e8cdbdb92ddea8b8621d1a640bb2636be15180595e6373c04ec38f981f05c6e255a327d9abc3b3bc04680e277e593b04d8d89963bbf83574a5fb63b4aa1d06de63e4077e8f9242e886014109c3360be74dbdff64af766224aabbec9c0c0a2ca79ce12765cc8334bebdd1355164ff636e24432c042443371f9d7a4ac66658dcbcb001934ea8b896c0bfcd7e5ce140ae265d253180c72fc9fd05b4dce2b6b664b1c9852bf84eac06ce5d237f242fd2cc6d61a870691df8e9b5b0cbde491edf3c8861e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2bde28ddbc4e84009a9c98c71f5e2b7ef6622d0283889c94a31b25074e8fc2068aa26e4ff0057de239b4588d0421b8351f8473eb2e66c4a2ea28a4ef81613b5216059b35c2aa990c7cd398f1edb7c93723a3ab489f7a91242977969c19a2e9bd421ce79eff960a06c52f05c251d1e8a1d4e3c799ed70948a6ea35f396f6d83dcf8e1c59604730e0d90c2704a9aaa2dbcad25c9c3c559a73b7092a016e6761a65d41b878a5c717ba63344cb1adc247a92d377345cdfc24b652516de0123232d3b0092cd3f5d540b66bcdc024a728d781536ceb7e41fd80622441feebe4fcaa6931c54d67dd28dc664df83e3ea2eed769e24ef7b7ee9f95f36b31984924318d506635f31efd096aebc8a3c04d6d09aecec36484012b5a5793a2405458a250897d246a5829ed7d99bf1638fb5225cea2d0a351fe08aaaa8ee724a824f2b6ddcd69221f4a992ea5edaab8969369f869810b4973cf65adf4529f68d1c0fbab24fd1e80a03b71ddf702418d3452a27b95752a0f86053d29b63b1880911f657e4fab978"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "88258637f7eb07cce4e8cd05cf23340e796bc7e067ec5e74bd031a7b870e87a40597be7ffa8eb135297f6c4e4e19dbfbccc49a23b5a7903d1c8cf979a4e0b181cef1c48a7ecc5adb8fb614415f9cc727d2985b0eccd51f72b714f2ee8a1632b36791a29e68b88a8f482b24e0596ee8c9d4c504aef0820cce5f5a71ee3c236931aea720ed6917ea7b41d13b50f909fa21f07e9cd9f79454a3a1996cd5a35bb92b4a1b1537afa65c9bb67091f340b47f3726407b95e68ebe8d4aae735c7802b559179c64da8385e72628f29aa4e4634777e6b7138f6206c79765dfcc066c034977118255f8c82c66425b5cbec3cf65f952f0f4daedfc2acc204df23a707a77e479d33da4db067608f075e29e4fcc3600819881463f071c0b879251c0b83ea5938761d7d63688006e2597eea88997aef9aaad009ab9cf54b4390eb808b09047a759224835e7c282b301b09007a15ed23e93a33e25079b5079089428607453ed25ec639a513311320dcdfbcbda5fd0f47f6035f0c995a7ce980ea7b2e74a4ea3b9d4"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7bcd19e6ea965e860485b4a886d032b2d79971241ca2c512b781822dba95d8db8ad9ff4586e9f238c885e464d8e67f291263ab6481e93544904da7abe00cf7d312077447c7b0e5026114bb732191a06beeaff6a05986a02919264396b8f0ed1eb9bdff5f2888d63d3d66515f30665c9963e13e914feabd50923f674c31091d71b2d01328c07af2d9c4da3d41942020e179420f3d6d8265ca1555db51aaaf281ea92b0b5b9f8deb982723825cae17a877e6f0544d4fe48f8fe3db3a7018691bdc39ea7021ce4d2c052265b33a1a0cefe72392a52086f673a10dfa7240d88001a4053bf376bef41881c27510edb203ca07d8fde2955eff7bec85e9a44794c0fa757e385c376e6be063eb90c23a526f4fe4b5a3caff01ec148bd725ac6ccd8cbacd0b336185c3d98804bbf06626bed831afbaf3c106a847fb72a60e39b192940c898020137a291c656219c322cadfee3100cc988b98da6d203be161945e4d95d455cf73b28eccf5d6f9c36516b1b8a1dd57531d8bb943f3b50d04970b0c114a2a86"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "43f62292e9039df3d1160af93dbfbb2963efa6dc905aa967bc765415a74fe4a95612b53866c56c6ba42eeb76aec0a5afaefb24ac7a4eae23cf439918750b2496579c33806d9f60bdec575473371c96ac56de3b1df2d00036ea9166341720d4e164a9bbad13eac4f9364882772a20630e2b067f7d12ae3b02385a638ee562570d4b4913cf6d1f9ec6c36f724c545ffe7e0964d57531925a9de4a58511674f6ce271cbae8fe4d2502bcf5feeebe44aa6a6a6757eb3709b139569b40c019dbf0667d0e23d7a4f93075ea68a303df9aa58b02302d753089fcf6628c318a80815dd3034e5c67cfb88cf678ba1134e7aa722452c0da20328aedf3520939afe9dec999691dc3411f75815f568e3b03b8f8e3c08d99b958fc6e463fc512c44e583f869c9154d630ededfc507dccd68401ed8b37dc3f8c529936d5ce94e6e6ee06115c3d39ccd85e86ec0c27087a82774f05a031677bd5f8d5440dde337b860f00deb788bc9e81531bf7a9492ec4af8ce04f3c94c6746f8fabaf9b7be9e089ba956779d9d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "73d4d40da6efbc72e01d95c3504c95737fc2e401ea73dcbc56b2f1f784b54d0c4587877137abdc84d67383ab0453f69381df09fde92edbb90fdac2b54451d76f00b5c553949ce6e39b86cd5a5fb555f231a1dabf895ef9b7c905ed9b92e333c0af57437662ede62093dbf6c43a8482706853c0025fc724ee13d17d6f052564550140c52cd5f52d98622e02da82ebca62423270dfe18333a9f202b9f6aeaa84bce014c8ff323be51327ba1a7897911df7172b819307bcf09069a3fc1559335e7fdf06f082dffbac70a973d70e5f4210c91744083d5113b510fe721650b3be52bd003b30372d56fd3268bf6aa0461af41c05cbec350f771eae198ef315c60c08dae19b0f31d3ddeaa144cf9940265660c34cc579b4b825616aa3d234d600248645d778a789d7275166cae5cbccc14c3d81c26596e5b236838ce6cf701b106e584d96b1bf40a75398763128d0a748e8f0548ad1d810a00e961a88db49898baeff2ccce4d56d3b0f059ec5727d03ae56499f811705bbf6ab41a1a3683e3debc5a6f7"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bf8c782edff2de8dbc7f480a9b29f1292a5f1ac96ebc92670aadfd369ec83ad35987bfc0ab3915dd388a504ca34ef43f0ff55d52e891aef35c47c81493fe6ef53a4cf5de1e415278e63339110722c444c6c2eb26becfd6589f18f2925dba814d5e63a098bfe8882a3bc73a9a184e8eec0c8b7db26b4524a7b3eb3975f63fd16bb461b42e0aef58b7953fa3ae09f5c8c38c4528fc48199fb652b27bffa9c85ebb162a0943af6c1e2ca954e44594157e053f35be8d40ee161dd30929576a2cbabc7dd0cb6bc3305f41dfb77644f32c67d8f04e7d68822def40d341f3963a12a1acc16338d3d8229ff500fbf6849b2507b4dcb68ac7c8e06a076450b3da320ed8673d86e7bf7c91f8379007ba05303489eb9537bf33c275845c923d3881b4a80998e7aad5b6a9f113bf157b3aa96b45791937d9038f94569f1fa753ec9ad612f75bc89fc79fa5d26711d39aacac5c05b06baa5efc40d9081fa39c2ab8de2bab3ee5023a0b668e17d21e470cd1efaf5e7087d440cbdd7b447f5fcd9046fd9197acfa"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "18c76a48b8a07eb2d64933e6d369bd7c03cdcdf1fb3bb15367ace58ab1539c3798c1afba510f46b1f621c5374343d55e11cf82fa1da003409702635c013481fd785b32e495dbc0400502ac60b82269bb6e3b9a405f6794c34fb801f920413d7e243ab31c1e7e2bb25619e66a016c948a24d3fcd24a63d45f30f0cc41f7c963ced75755a11222095b3451726708b3d255d60c47746633b822ae2ca83ee50d7dbb5bedb2ca666a80a24766ff121b6495a26cb9ac14e0f11b5a17367fa2ee7a3063717e4511a7588c2325e5c9a479db77fc799b42a9cf0962d9fad45ed2cc750bd30e34a088049ca942ee1a83807151986df4b2e70afa7533691171dabfc861baa5ddabdae2db6a3f07086fd539fcefd4694fd9764af7d5d38a75c3a47ebce1820d1a15cf9791da6c194a4d1e3d9484773c256d48989cf800a83c2aa82fd88fe5fbf945856abbaf0a8b843422bf30f933de51739d583ab7870e0402c1c0d8fb95668a35027bc40a2164ea3938e7891fa052b353d87939724bc6e78c3950cd25c3d8"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "89f4d0a739849f213436c9575620dec5f5c2d6a7e4f83cbab2a57b3876663af38a0456a1106efe9937f5ad6d8a8952ac24883918e91a9d19c07b5fb67ee7dbd1716c86ef7f45c651e74a41233eb01d0ec29c7739bc93877fa5a880f5e27dd28e3e58f2c034c6bd512b9034625cfa60fa1b1b966ddef324eaba49f07fde57dd751b22a132cfb50a2f37c69f773feb8637be2296680a1b1511e76f5f31154e6227f748dd101fb7ce4dc4d78aea619ac06a4419c23e2c7a6025f3084c65ee4e2d898f3b8da4b180f592a3e85a3fcd04d788fbd55e7543789c177076918fbbfd0b9bbd69106ecfaf980154b008f86418285623bef88173d6e21de37fc433163f719d1a5b59a69a7b3af6e2c5e8425135c9cb402db577bc0d57bf9e4a2ea6792e59f22149be5280f19f087f99a5a645e7058ced09552f7e324d1d786c939490177c6c882e53332fc64c24b95866131c0e78daf801a8d94e59e1b339529e59fdef88bd1440b9f4928b1c68b57ee8ba22191dd423c32fed56bdc01ad0c14850061d080b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "75fa1d30a796ea7e6f6225bfc9001a3d48ee2b66985772624f51f74a4eac8fbf0e126a8a21e7904a4668c37257a2566f6d5398703e160c76fee8cf4510ec4b4fa38af5139a117a40cccdf5b2376da59ccc1030ffb37ecb65e7cea239eab5369c4b20ddaded7b4eb5ed79b3d878844217f4094a536d824b2d1b9960b8f9aae9dc42fc5c9266e0e15a503702096fb725fff3bfe4eefa8bbb232ba28542bcd23f434dc3b3c8b827ebea88bd1e5058763260c45ce83915d7f998b3b557a94a41f2d6e10d5c6c0881c5080f51a20c8def82ecdf795ca5682a4a4b451f627e26f1a0f4c01b0c4215d335c753908ec16f55290fdbccf0855047280c1f0e226199897300e456ecb74ee14bb1b68ed54408c5a3932eb0bea33ffb2f495577f37bfa6daabb8971bc227cbe817efbcc618f7365f5ae49b51280cce5d90a085fcb2568c7381943a93caede03f492869a768c7178abd6d8c051501a81eac5bd87da6bb0424655356d5cc86f0b04a598d83df52680cb20a49aec6f9966e03feed8de78c1e06b2d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "afa99ed41a02fdc5677826e51db78440e7336159a829d315401f799bcda6eb283c2c442706e8ede5c9641a50f735247795fa823d257cb8342315603904fcb7f3fb94c1d885917b938bb57dd8114effb76f0ffe53474b3b6ac909b8ed94a1ef4886b8101727038f2d3ae6daf82a3e985ba5e005998c31f888c3c53aed0246b99dbf17d12c59c02befbaf580ae4b54bf6cf4098840d86ebb406df68b871ce3c6a6452fb936c975efa9b6b40b2414017eeb8cbcc58fe3547ebb16f95efc24cceedc374744cb102ba6c2de6b6e53d561c5a6be9525df8faa7756a2e7af39950013289d08ea48dfea7e6fb0e7f228a8ed0c19e229f1929fbac0e183aeb196c46a5c0130233d78568736e6cf377e26e3155576982e3d65e08aa4def25b1a1a5a225cf884145c187818e71a989e0745eb6fbf1768d6aa5f0ee20d8d534e1f4f17cfbc78181858d1e887848f359a92b44a8344abbf720e9a0a195003e6bd881d248a80982201f97d524ccc159d0d0a371cb5d913429cd43d4416d9d572d49dd140c00a80"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b5eb805ad3344e51dfc3b5aaf0aee47a8114587e54079d1717ca04e3e0786681fb9a77aba6a915369573714638b408c4574f8951bf38ce7ae055bc95a078dd6c68af56f33d6c8e39e61c386b8d5d148e94fcb64b2ee4826004509f6c033978b75f403b8710b16d4e0029321e340c03dc4ee0cb2e4dc112c1199a9de821a0d73fe5ea361a453175596e0c945ff0812b5b4c92bdf3cb628637b4fca898b09be06188183f37a59dd33398b786c8ed44a0f36a3a99a597071a17b432c76420d5a68d683351d85c6860572e5213f45bb7440febcc4ba6908b3920079021d03c0befbfc0169d987d5e19cd81267aba56684be25b8b94e3f1229c5757966938b63c66ffdf0f07684214d415d73bed838212612d3cd4071a53ec43cbbc5d71bbbb60f51fe310c26054318876a5862033fc21eac0c1ad91f7d7eea9318398b2344dbf3c2f04574a5c3db3121971273244ec876a63363054aee10ee276e8cca376e60189645e3f67517ef820b35c930485479403d697b2a72689fc238f09f60e3b598ba562"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0f058dadf6bd5ccdb3c9a70a4223439936ac81daa5928d09c182995503d72b8077dc01ee268658e8ec4da9097cba57c19d005243ccbd98454ec42bae8f7b7ff9fff4af6b2382a271931e7ecc15cedbf52d1426cef27e033d58d8e153341265552edbebc46bca1d8e88bbb9c0f82600d29c02283fb295caf4a743fd66f096b3ac12d8f301a1a1464a511f1e5da7e46f722919836ed985bdefe7587391443b7e9f6dc7193e51f0de9e0be451ee335a39b875be4fb6e54ec38d59aedd2000f6149dc1e07bcbc6f674baa3d9170759a2db41d6a1691086da82baba102cd85d97476beec17ba3c10e82c213ec0d09afb4fa70775097df3e9c911a2b8a8e3d70f55e4236447c0a539e499bb4f442d218096ad35b104270205d6677f37f7d96266bc180936c1fcd7a34f13976efa47110b86cc4f5b0e94af73887d31d37fc38f84db3ff7b06bf151f16c0077921179fdb52ee89414dce82c0248a97b88eb2aece5227078877148879f96777fbe7fdb1aba00d9c7340f7a66812a080ad1da514fb1d7855"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "93f7909a8a46597be65fe76b5c724bad99e5b2692e4a6a8e9a7adcb38a39bdd7f4048a00edab88fe9316f532b13be7283bde8f7c4ffc4a822575e992cb8ae46848015c0ee56817aabe22ffc2f25c80e04a0664a7e9a82dad7b001e21b5c33f08965d80a1c4bfff52efbaffacb74b0a9c10acc384cc707b5c5295fdd3fad5fb3b89271f8cfe0059c0317836b2a42640e4c0b3969aac4050bcbc756b5350dcb61cac15d045151e412b6aa94d082266e7f4c7dbc83b2adbe817476eb6bf5a07cc7f76fe80b4135e0ec5bc05b57cc823a0b993b7b3e4f3a6803879754220d7a6ddef0f5c6944b352ac5064b9d836a2565eb0e2049c9208b797de75b141a5f6d89bd6dbae167f8b1c7fa9a316d10d33d96fad6e2692b98d42fb6fb3d79a32a7a5eea23f421c5e1dcf09047b77b253217c3674b97b85afa0162d818e569d6c6438235f404e8fe9e3b3b7e38878b5bd296f88758b917b7d7cb650e6ddfcee085e52fa5143429b678a3fbed73b588b6b4cebc72d3e23266f8478d52629cdf1a80ba37550"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2c40ce5377f098678cb1a3f6177c8e290b691cbafb4195a6244d148ec48be99792f6cebd4c40614d9250bb3d6f6287171ffb713a0814a6746e2c4126c82f7bde8b40518ac506cc73ee8e0516a0d0257ef153fa2464e17cd17dd6ae5343d43eadf67c4bc629082b484985dbfce3cd941c1b69dd4a52b0f177f641945ae0037c79fd0b975ba955b2c1901883f2c5320fa7b43df6c673eba7c76c0dbfc03a470bbaa2a6083892af527d0f5921d2e20080804db8db936d02f53cae19d010a113f080e0f7baca77c70fab4819c2481f6f505b5459b59a2a482c6b8803a26610cf54418a931d48b8b3a2f0a5e82cae0ff81bec4ee9cc93e8fba9350b5cafc6c020b484847d1e590eb1484caa4afbb7d3cbcff85789ff47401d69de6554ae7ea679b69e115ebc0fb3f89ce9d104e4a27a3ce5098da2c4a840f496e1b2395a8725dee67259bbc71e89aa18c35a9c0db3d092e02bccdd93fd6d4fe51eebf17f5cff0e990215537cc0cefcd69eae4a596d8a95a9ec40ef651ea7da397630fafd26494da0be"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "28d3351a970732d5ac3bb69fdd6d85f8923a20f7f7d72985d6df68e41f972dcabb638534d163eb8cf8baada3e1debb7249da4efab8e1ee782dfbd3b1add9e77253ce048c8d0a350936806ad473304f1dd0a0318ad10a11085f2cafc20114ab1f724ae5ffeadaad0bb17bf66277c499876d5ce17026d6d30964dc43e9f68e271d5b6c81b9953090f70bd9b9c05e3219942bae623faf06c6f21952427a5a1a40f05c0c5159ff6e9b94fe4aeb8310b0de9e69ac5f0f4787b6d489d1040ad63ffb1cf0fb924239d5417cbbd7afce71ac0841a0fe2b6d6a5742649fa60433c55fa2cd99e1e173b67528784dd0f55488f7a9939b46137f9aa33bd62e477a77d5fbcf0820a10a499aba3ca383210778e7d84dece64f121acd8d74a761219c6359d2dcf9aeab782c58dea8bfdbdedd4490bbef8fd514f90cc5a33992c4d3609e300797fe0d5dd203fa71f4ef0a47624e5e51455b74ef87e49b9d122264ebdec7fee7bc0249f02ba60159aa0aa8585ce19633cbce48e6e4765b0fe7b4f1da4a8417092873"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c4a4057d4d2eb4e64dc163add62d9ad01b24bff92fe0607c0cd39e3dd05e5661aa1a2c9dcdc7ae8a034b93e502a4eebc0384519a2589afa113a0dfd45b122fe16bb655b6a034b668d7d400dc250b25d7dd4511298c1185c3d02b82ec63f3f406da0c72d204881ef5ef43e63cc64b799044a6cbabb533d862efa9c3f483eea43b26859b134a2f321ba5ad09ac8dd3f740c0ebabbf35ad3736b093097769a635283c20c1b88ea0a115d59a692552ad8f70050d586532cd3b65bd9e281781d09712b1f1287350a20e40f11af5df580a98b258fd7431daf19f92546d5b997df560a3237e8a2e83e925e45effd4cbf2c1cc439d0d3e658d836d6b93513c41c87bfefc85579257cb8273dd0bd4b7ca21c9e2675ab60de22289b31f5f96f708b76ec72b0209c8846ac6e32f1d28996829ebeb949b2358cd2332178bdce80804e4650b84a46ba4f3bdf2aca0edcb7d4138e97dc14d30ba34352d62f547caf117856a745e1e99eec18cc2fbf223f4548755fa3ef8d9d7c0274a9a7411dfbde3bf53d9d84c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9a86cbb68e9a4449be3ea6d69e5cb21af81647a8a0105db03c54176fc83991c2b9ea548fa8eb3b248c72c391cd23dd675e865ffa561cda1abbbd58a85fe4fd108bafb213a8c79eeaad5bb3410c7d6e85a237d1e2f9c8e0b8b8fdb472732bd4bbfaf58f57600996a49a742a6ecfaf55319bf939eece50d1b93df931a144b07e075f8486b5dd65071bf43812a27351402b849872c849878634cb01483df78690ce0dbdc5d45d225ca87614ed1afcd084223c86fc9bc9c891996c096f9296b9d91a564465197857fd6769977c8acdf0acf2ffb1b24d311a8d0a46109594f1fc4dd5b139c180c6f02b88e72e155626a748ae9da4eb6a1195126f084b012f72405f027bd22baea81d765f435efd2b97fed2df6e38ea603ddf8f3ae969f9690ac22d8072211d1337125a3e88388fbeff1b0c7cc7677998ee5f7ac31d8e268ca900b72c98889721e18e8dd74f4b43b083998b28eda3895cbaaa607b9a05f90e36d1e172a95617e9b102bc0717dd2a1e807b11d72a8a15288ca4643c791694dce30808aa"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "71399eff1c82b67a7d5da71df51de813631f51679ba441b0532997ada04711a2c874e56ffe4d9289ebdfda910988e1c210507a450031592268385fb9c08102c1961d33bb789522d97fcd86b7e27b59d3c369280c7367286f46c1e815851349fc16e1bb2fa76af8ab168acb634a22a8d60d7c6d2a81f4db77e65c621bbb4d0e5628ee2320b042bb4c83e55e2137ddea75c3547f3a6b93f1b0a0bd29c729835edcbf5129b33112ad000458f4a8db1149d514db7ee70e4b58c11b37809dc32020dd81fd1e3b0bf1354154e7dc0da0403ec944fc5a855026473112c88f072a8fc39b984db2c97d085783d4f8d96c87f4b826f39414ba05f72c7a22e25ded75eff8f00e53401aafd0ec08b255b5d03b2f2cbb9603a2def9e5a754b33953d3c03ab8cc7f8db33ddf6184150f5680f7401dad6b6c38ef848c00b08a70ecead088f895acf5f25c9e21c87089fab3e3edb7ee3bf3570145041808ca738a46c8de389b5c2f84f98f76941fbe2a9a159525994781137cdc00951d4229f8df099b44930a7a72"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "661c8fc20646446cdf579d0a78003666c8fd9fdbe9845c02823b8e3b780f532d2891fec3a554c743e87fe898300ee17639077fcd0936c13eae51a40d98c329c3ff525f65568bf74fc84fa112b3036610d49faf17f3426309805636b9502c3dd81994465594333e2263969da1509168f1228ded2ab8ce0ca53c8d638db26899558ccbcf52af7b7017d68ba5d7bc79657d72f87a14ad8224f40d1eeb1925b51f8330b221ceddd530a73bb814216fd6afda33983a74f7da5cd733729df22ff78e027eff2cfde27a76ab1abc97e08375f670eed1beed74a9b9205ba2497faa1c46f0038f098ff5950be17d4dd8a3ef2bb0811a8945188d635a977de685435dc128184948c53f43abb70c053b9c6298b7dabf1df91116cfcf8945e78c7e3de5bfbdf19b6893e733cbe65cd33950c77132b7816dd47d9ecfef2f15b4290cc1a4cc5d327800215a49e679b640b0ad1aa1593a730eca633ae17bca48e9efafa0471a6591535c94c4d123cb2ffe33014302f3109712c279834871d9b18982ca413d131126"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2b0d588982c68cc0b39c00ad80c19ac645e038d3bcaa384909d94cf6c8ecfc886a83084d19843f2878879e60f5a46af4ed8d62f533cda8ed04ad8aeede3e3c823913d62b28bcc20d9836f6ddd9ebc3eab3fa52e37638ecf897d7cc027bb05facd153090a78220c10ab177f1bf19b2c6ef6ce94611d466ef758eda71f4d496c420dd88e712c6dff77149f4bdb50d1585db27fde0f2fe37e04edf63e56eb9cb72106a9a821a670110d69683f32acf5972efcdc34ed5f8ea4a40f4f6329479499d584c4db4df7122a2c7f34e866564e68552ce12fc30c2a6f24ba7c7d9dddd7fc166ba8ab0b8b7c1cdcc8af880d6f1f2b621286ed722edae310891e3b2b81addfda316225965ddfcf0568486921b125cec003a7b48af9dfc95b0a9b94c53535bd4dd977f2a4aecafe2fb08b5bfeb997d22f6fa5fc946481838a32273b6c7a89817dbca3d2730bdffe63e096d3e88a7b9785e7ecc30cc5c847f193268ed761e05231e3009cf3ee58d2a4f03ab73f5053b0bc1e57960ed3ab43ab5b1493d5a73f6faf"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a60239ae28daef9b18bc56ca81d0c6161762a66e8bcba6f387f71433464361450a6a08912bdbd86da34ea4954ad0c6548131d6a4de7f60615560524ac5644d69e14f4bd11a29b8ad20753e2c74db5529ae90a6c733032e2e365f9f57cdcd5adf5c66979870d8eb9c5eaef244973376f4872c323bc8ec32e5e92713527b6545aa85bfb7c31325000e6ac6dafd5b48db8286bacd05bb4a9de30d81a0eb8e4a2a888a71152e68c0ac99c74adc697ef9f34c9f61dd00514a8285eec30364e96652c49a32afb7b88f60e98a4f0d2382d795d026d8428818633cd5d62d97074839362fdd2508633da09ba491ba0ba0136056e7cc0c25a0367f637e90ccad93c60c5f735fc198810a01e2f1394f5bbeab64cb0eb87c83f0487b353c7fac6434805476f65292a72aad28b1bd7cfc5764a3a6457d05434814e7f669fee063e9a171a7e0dc627221b540bd360fb64ea870a03239eddb4cb582a0fddd6ce73e272c12901af1c9865d30f11a461fa1d7280eddcf12b8531fc1e5b6d6a771b9917fc3cce20188"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1acfcdc7d861cd9b8e26fd8dfbf13517caabeff310a2f5df45941cb6c4ff23fdd500fd1ea35a8ed95060496aab0273091dd9725ec98b14a71f214e7e9f9d8bf77e62c2f1b844d9ffdbcda7c11cae4a463f9e525acb924336a5c93a5331c2f7e167bae20464cdc68fd08f515f21bc897efb732c61219f8a741e867c3faee19dcd9443a8b1f192fa00df56a1de690e0670cbb0149bfe8bb5b95ebe64accf43a80f5d262666da65cba48937ff81b78b489482aa6a59951b1f56817d288d3942cd79ab7eed0b934f6ce092fe775eb0cb7ea9858e6810d3720751361b903706b50f17de49f10616f9d7d8053775b00f6a3d6e77a868045a85ad43c15dead74f5f86e46e2a455961b7f6092317e87d93b50a247c11b8c27087e3ecb3a680551e3bc3874a34cfba1f19f69a708762d1ede6bd560095f31b56863efe7913947132caf74e50c64b94ec8ce28a0ac1b4044f23b89e9fe5c706647ac8ef0305a0402a84d21a3c546cf7a7ab63aaa6577aeec89c8c260124cef46f587bb4ce940e0f963141b9"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "478e30fd62bc07a0ea6fcb4fd9875241139b012c921c448821356f29bfa331a1d44a03870a9c79482bed3ac275e0c2a15f731044133b5f6e1491af217180c7a5133ed781665265bd6fd9cbf3d65111d39c6c4314231f745291c70b6aa3d6ed696157612967a283003f982135520f959d24df7247d0aca3a81f7af80062d4d2b2c4fba1d1982bbfa37d5f9175747f6010391c78bf6445f553a5a77251f4607cac9eb17904680536c2965b5db4431619363245960dc8643c83b914479ef0162c70713b985241d2b271facab79253369b37fae70888db2003cf87677e915888d1f580e1d9fc7360ffc8a36c15fdc1f27eac143081612c004b81d4ed63bade76f04b0c9acdd5a79457c5be90ab26ba7c11ccb3945c05196b7ff9e29c713f6de873cadf6efac0879139d2bf25171474eb4b754762352bc77efcb50d4328e940ab4aabb8907043a4e24fc2eb0fd7da3f31bba14e1b91624212eee638ec4051f1cccab861b8aa6948326bcbcdddcaab5f2d0b38737ca7722d8cbb310585f01787007a9f"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1e035257b6ec35b3ceab42c5ce7a5fc87fe655a55802b7f8dad54bb048d92ac7b22982bf1910a810d0a3c5aa26c5eb9fe3e2692a272ea063a31607b0765bc3cd4365f75db38ac761651f9dce99c3400099fe37a76c9201fdc4f97b83094734dbb64d6ab62e5ac6b581412943285083e2f8ce252596f8bc0e0894d4685de91e248c62d68bf7665028d06b9a28a231243f9022c66c02ca8c47c711bcaae628baddd685f0a4001a23a11e4a898de0c0247373e0a5282e2214f7eda51513a903c810a70dce11a95c808dab26129af2555679d8ba048585a3134c0197ade27eafe7f4a777ae835f509301bae94e9c6d40ffe5ce60a43b96a55efc5abac62f747d5fb3a1c0b3dae4b9bcd8148eefcf7de3bf1731aab7bd21946d58beb2203da98397bf4c1479b1072a01782f8f08367754a1e25a93a096baab9e88475108b4032e473d005a9c91eb3043ed1774cfd36aad18446485f138da61dd9872364d35aa7e10e116c70773547ec1625c9861f0e6c92a9243379604271ba88904fa0d247459a6f0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6a245aa2bff7783e93fdf6f5014a01934272c88d6ca19ce53708237bd15ba9431d0ed81a6e81ccf78eb2d6e1d9ed5c46d39f818e1a1dbc7634fa1e2a1ec207335bc838932efd7eb85bc62fbfac07b0710740a9f0b0621bb212762c891f04e0846ec594922e917f5cc0509787603c9dac04d98407b967e463a0d912bfca979b92b12e756051e7bf023c9f0fe061c0d67a87b79d8ebde7f60ef4d2399964b8071e6a1a9c63a8f316a174e33edb1023fa0a0bf272800a9620db648d061eadb9d180c576817c759483f85ce359685598f15c9b8f00d75f4a8a1cb260f666fbff559da3a4f075e7915b284febf8bf21eb668012dcf31692123b94b4e44e3ef17c942644437d59c49b437398bcdc68b5110523fcb48241c60a8f4fdbc0ec45e80acf259e61cf8414f4dc9e9adefdebf94427b2794009b1377d64059977307059828342d605545e0b776cca88dd0db753b5d8aff63051f9ea49da13821ccd4cd11c2174f5cd179eb95c6998eac5b66a19b8f6a3b4c6b00d744ea14ef64599ebdf94f859"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bc870ef5ce9468f85274cabad18feb0c0cdf2053f0becab52a3668d7ddf0239197eb2365f29e60edc36e673dc7b0f89f605ed6f3e9670b7bbdea42770957ccb11f8421a9982f38f2764f75f31fecfb1267a9b1e85cbef52c2d3e54aaf304d54edca0e2464a71946442970ee0ccc545946ad7cfe08363c87dd89cddd1d7d579c22ec49525fd9d83760909209c1e79a24f14750f0d0501d517909dbe852ba777415075a797a0f410289fce04c31db77a97f1eb1e8f978713d2b6bf9595c03f6376bfe9b9a5a8943408170d69272d3a5ad2b98b73d1213bfe97fdbed1b29b7b5a01bfff20122974b023251a2825512a2e99031777491fab2c1f41517953c10145b0b606171c22e06fcd78d6f51c02a25bb93edd7bba6fc3d606ca802f8ec4f82c56d1aeafbf6b7617c604ea53c736ba6cdd755df7b03bf3d00266645e68763a2bc53c7692bac8f57d14675d6131bca1319f251eb589c9cd71062d3792a3a359476038dd1f55784754bdd59b91fb7a9fbf9f2274705abf67b26a227e7ad1eba201a4"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "92780052295fc37894ca6c4ff5f6d68e21f8b907a5ef5411edc4fae49b615503e6b2beeb1501c0cbb0005c4c29bb918eced60c62fb21154d11d02659ec1cc2a41786c813fe80e8fef35594255b11a6f6903b93411b1db9697d69f2ce115954b095d5e56cb7d202c1d4f6fbc795d4966980255098f4929ef28cf80a2dbd5fe2701ca358c6acdd55cc801a0f8fdbee2be57c6b6bd168e90c39cc20adbaf6bf083e3b53332482a411da3983f054557ce976149d82e6ac3613cd95b876c450a474823d03ca31c1be5c7049a5b554fc2b658705f16e24eb9fa4bed22847eefa71ee4a253c52675fa82cd22c924e33467803faec7e4ff7fc81c40e3c8d102cc4d54ac8b5c06b8416041a50cbbc53723373bf13a7f5b2a062552ac843cbe18b3d5238a8bacc5592dd3af26bea3d8cf6db91d9b54f8e61d62f46b39bb9d918ce5d77370341e5c3ea5ce4f46a44bdab383ff1a5afc5ea96dde6094273606e4ce4ae545bce61549e1248011d6e2bea5dd6d219d9d8edc621db13631d17067765827c50aa96"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "abfa120284e8ecbc3ef8eb997e304c657bf2b7e78dbbc7b5d910e10f02a1be9ba1305c1ba831da12e5bf7ceb70a6bbe94cf2c422b2e56ddce696b0ae637f910a7032fa26c8b0489cd57b3af8b3eb09ceb24853e95315db7b6e468c2feb5287f4338d5b301efeb79815a981c8fb5112d16fa5ca1a6f243af9bb57c09e3c0c68a1cea5ce25cae53609295eff951bf030db144d3871580f1b9285f6e58b7d7a0b23dcaf5dbd2d96b81674bc9e4b748073aafcbe476808e7dae536971015891efe25ef14b00e37a63300ae82b6413d31d2453e55b3808670ed8e76fa733d24e346922d93c7d340a820151686f00c4781c08419caa56c950b9674406cce2c1f2658eff3413ed6be5ead69b6a46939120e1b03889c6045805a1f302339c544f32bf0ca56c7b49b2a24078093d2747c4eccb77b2db148df83e4e2094683716abff5599dc5ae6d4b132c2202aaafd8a5770827ea93a15a361a13eaac22edd47e0154164ae88022f6e5da9dd158a3a25f5fa02638b1522180293dc0e06aa0150b98e7903b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6874b0d4afa491d22ea00d77f521010641dc45ab6081c939770c8a74553ae414fbdd1a2686f346eb5e50eec2b75be6b4d6e3c1574d36fe32968a5683dcec662480ec526136fb119ce78b7983875fed59989b24a2082b7dee49b00cbf3e18d6677ac640f723719362ea64fafcca71c4e5925159bfb36b7634acac6cdfd6eae269ad7a3c2880eaa5be35efb72d42ba30bc5fdcdc0a642e8d4aa2a6c1c7faf4464ee49284142cadb7851e9ee832a367558b1f3f06d4d55f50c8814ec6c2aa4a3284cdf3d471bc07506c4a5f061a441e44b87912612f1e4c576f4207348b40db8bc173002ff3437555b724684bc01e8490e34af10aaef0aa9d509840e5ff8a6cc92b2877d1ca108590d7a382d6a45ed0eea4c0e0abd5ff7675476b253f06a25f21c6e658634878ba318a3858737ad875d3bd1c1cd1128a094d778791e6163970e78909d4bc1f5b62d912bc643afe9218ac9dc29df522909d394a5178b285df3669fb321f0d7b6c7b50791b6ebedcb3740fd7f382410394f5853724970dfe75bf6ad9"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7fafe1dca84d820316780965987a135054f498e3a9f70341dcd4cdc992789dc412b68440806faabde11f00c0b6499d84d5962ad1dc9586fbcb57ff05d57c907d74bded8fc8d990c71336d814f5b732d0fc3f441d44b29e1187102664fa71e047f0bcecbd57d9d6e36d9085c37add3a9c110be47b3ad2b34c5b8e94c6065a56a638fc073199b16e17efec87cc482a192f56f8d0fc0c84e211d1dc658fb222582be550439615803be1384ff8d2ade2ce1aa46bd6544141246ca74b86efefc8c7cb169484c122f2269fda56cd87cb257f7b31ced8516d01423c1ba7edc1ffb5de565979cb45326274f160a67f90a4fc6e66306cb833b914fb31b2070b3f60316aa1b2ad5cb5580be9aa47c3e2223fd9427dbd6f35d83e7a890a8054f71dd4d1b11d2597c47385d3a6123cab406dc61c562ef40d626e7561fb81fd3eb1ab72af94122a40a4f0649022e0ed52fcad209ae22613c5956215f0e3b4bf3d2ca6b45c5bd5c71138ebebecba05d0ff12ef257d5e8706a628876c958e238a3e4a8b3806bd4a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5015c5a03cba54943ebdb80e79fba8a8bd61085c0febd1a675aa2d0712cca98b1f0f43cd3e239c890af58dfcb40baef28692e81163bd87b5121d67c588cfe972ee8d560621ca1e9325161bd13014625ec02e433cc97f7025544a935e0f8cdd728f7fedf90a8a8e57d5e12d9c22306fbae77c092e13a3bbc9d98bcdb18714d62f3f24e65e74768c0a9e9b8600e87443eae345919ed7fe4c8581dc00f1bc0c2764cde2108e21d34cbb8f0ae4293a4f7d4ef938e8765bc862302379d979207d4f7e294f6bafaa309aa4013877588192ec5c669eda7f41427f81d75176480c85e3d122072d96174a57d77bd1e637254282c840db3d2a1f7f05de9f47422c32f0854a9703c668515b5b4030a5d26611e452306d8d239589458b8bf17f56f3447969c783496ceebe16a163a06f17bed06d4505b8e0d809e351e59883cc3ed15faa22683beb684e04323f146dfabd03e836f08382f5d00dd2d1e9ca17946446c306a2b97875faa042e3a4002fead6d15a07b7b4cc9a2a6b5b436fd03e231cb100a43fd1"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "872518041aaac17a061bac385b6e03b44e0e7ac1d1d269e166cf4e4518bff2e3f70656e7741555941032359b110530518955870acde003ceb4a528b9abf2a18c375083af2554e57c5614e82bcc012b4677def5ff7cc63d4faed4166097160891a0d0869cb1117427712861fb57b2c545db08427f121533bf1f3df1d04c20fa2150c18d4e966951801c8fcc7ba6f02801365906373d239942be633d392376d1cfea3857da770ed5c3dc4bd35b7c5abdb036e829c50ebcfd31a55c4baa2cd63d5b54cf92402c00f3e18097affe9be39294c4eb04f033ebc926ccc040f37fc1a81c132d971fc1724c1c00377d1157fe08385b3b12c6a7d44314803b1a2c72f7a8836c72346bbf428b67b86bbdf37638949d81ff4153c81d5fa1b8fe3f8a94701945d225e598876f2457adc2c58424908d70e3a61e7bcdc909993c75ae0c24a111c204ac28aedcd7a0cef5adb278de2fd395c97ba15c9208e32d709a314f17504ab83f583e811845e6f7143e9f6b9437ccfd699d663e1749d71b5639009d3e5cce02"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "745f043935ef3cd29118668cb2115b671af0e3ea44e9fd20b18dfe1667c926f9d4ab7e281345f47a2b06e7141cb69ee1328822cd04c8835c42bec9c19e30e6401bb6e27c20c53b69429e2bf5641c7398338f080fca064fde6eaf77451cc57d8449046becee9b87d6f797711d20fedee58d0f162f71fc8e736229753101eda5121f332afce03b334a3b4baee7c97e0b6991b5a1da18a7499a99f8b6983cea9046ac22b52f7319d0d1588c2105c35773c3937f256b40ed8f4127832385c9575295941572909fee56fd9a457835f049afea39a22792f012ea2d38d0da75fb22e3f0ce7f628a1488e6d30f58bcdce40dde4146b472227a666d3d4902374c283f9aadd499604b45511cd120abace789075c8bd232cce717824c551f8d8d03ceca6009e6db55c6bf5d0c9615ad738681ac94681ac2aed6501278eb882436cd134c9398ebad449cc2c430ab9b8513b557dc4c345ba90b5dcdcabb01992cb9cd851266d1520762213d2c2676b4c2b80301d59887bebcf8a09b012f8907f04f7521175238"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5a29dc4f6d3138febf9978266c319c1bc69cb33dc63eee578ae1bd2a4736d28dd9d99a24926a2a6a5a2404f4b5a15112a7d0c00a24a427a0af817df199a4aebd77e6b2ecbc958d30179e00d8ecf9cb1500a91d5f7f4380e2469cbbe61d91b26573b2f7726e5af49af963e22578c08ff74644cf93c547c64965d708574b4e5496e3923d1d0414499220a6a9349a0116ff8d843c8a563865eacec1c284cab41c3d6aa813b0c5cca1add5e7d2edf36d8845499586b5118618e1a616d91ebc3349f5ee3ee1088d9323e79967929a7273910b389fe94882c28044b8978f5137a4b2d8537eeef53600e5c93734de279717141ac470b8b7c40eb0a3b0ac6cfe4e66fa2e50b44e8fb6ffb9db12c7ceefafc75a89c21d767f8d704aecc416f5771daad4310aef485f0b9c150a4a7fe6c38d81e352fcf0e49cb036aa02ea10c2e6222c4f0cc27bbffb7e89d1556457d73cd6333bec31f9acc6b7d927895e96f1e2c87aae21f8b1bf35d173b57820739c7f170c1be4b67a4db347bdbdee1baf477d7de4b9fb"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b16e24d20ff575be4f5b0322b0fe67f02b7f2734a7e350f078c401a4f1170111b00e68524b566c7d191e48731d03e3f8e4b2ef90f8c9f798c57ceaa26411836f7969e234ef5e4da1ddbe2f6993efb4c4abd566115727831cee57a7511022c33e47716fd796f2263907c54dcfa7ebffb1912da68bb5572080274a664372822ad2b4516cb54dec43185fdaa0022c84856a178f69483bb743976f3d1f1ea4e2eb77d1c55800b7b405cc4967d3ef72ca6310ea6719617255c95a2e31231e6c8b6603aa82fab5d95009e908986d105296fc1f81eb3709ba27a68edb771e3e887903913e72c6386e3194dfba12defcb6e9764e07dba19a06504faeaf9a2313e345797cc4543c6f38a656c4c1032120ad6e83d65fe51275099c9c6d3619a491c5cd8995c42726f8f7f72644957e87b51b698ee443f81a24ba0564260fc2a776316f3f470ff3e1a3e3d071521351b11c6f4aad061c6ee81da1bfb2f40ed306ebf42f4779432bb79d7f0d20372c55aed8bc9df38bfb64fb016675ed3ac83520900113e1c4"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3531e3180f6385e8235d402ef40db775cf88d115fe8c3426adba5a4b36d05063130bc2e711d5e71f4fef4cd2d7c21a7e2fe76a4dc02b961a6edd3658a96c78e3f7971649fc913ce8c9c4ec9ebd8be9209cb90073702b97ff94e96471c42dce887732d93f89f7376a1ee0190d7c646d56393f42c60a6db3724a734ef986380e934fc8cb92428851a6ff74f1a3feb94f7f6d3a331d4d61846026477b7d7b77077a8213555d4a7339ceec0c71d65492d2eadb9dc3fcc7b3c0f08ce2d09c97c14351dbe8d2745aeae9882b252ddfcfec719c312b789ba36430d81db2d1e88c29f0ccbe410789e0cc27eddb2b4b6d5d0b980f67700c05cf9e64ba96e5e50ec4e59067cebb580a6983acba34ec260f5ebc6abec53a899483d266b53a0cb24f81c9ca144772ecd622ca3cd0f502c5cfe6efec13574d51acc023f277c3a7efe128fac202e41033ccc4bc78b550a1663fd0d836bfa31c435badd977f38cce70a5fc353449a3357bec99a87b19f92f81c99e1a6d23ba23b5940355b078d05b2554e5885fd8"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "885adf1a5e86d463e8f6750b49a3c3a91a2e8bf90e4c19873e19dde041bdfcd08494a9d25ffaa679c3c4c6d5addf99256f75498f3cc6c09c45bc056daae88a509aed0c4b46df5c1a6a1b5b4f2c5d5d008bdabe5f22a0ba1f34e604fa0fc8c647709e82eddf9889241571a07e9dc91b4eca9af390f63ac20a7e526d945df9541fa43caae141ea3feba0d0fcac7c50f7b03d4172daecca84515448f3d8bdecd2513aea8565227c2da298a4e2cc8f5fe5603c30c220c2e96c3a4d802b87815b1d94e06f717030bb2d173339ec3ba700828bc7a02495a1042b644fcaa02fd9e67a26600718d056a050800eb546eea65fe9fda8258cf629cd48dba7393b5569112f156032d5d4e7a989605423d27945401ae7db0a9469375ecc8ccfcc3f2573570056027303a556115b0f98958fef8917e1861de6a59843842d269c8412da05cd2a12b9e2ae75d177ecefdd5af79cf4499488037fd2d592bcb2828b9ddf9cf7fbe309822a9f0f54368ec2a6e67550da715307eed5e1d80bc9baced4fef132b2f59cfa"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c0fc6e5e9e1398d0cf6575806d6ce8c10f63d414d3ffb7d9945b986362d9da16d61e9e662ce133ad6672964adb4bac861abc4693286f826e4e77cfd72825a4d6dd03c8befc8a9712c12b0a4c2e0f3128878bd9fea55b629abf7029cb7e9cc381fe6b0eebfc05e8a8666c661641fd247ffb6e3c25bf435283a21b2b785b9d4b0b552ab3538e310bae7f36af1d2c6697df7821bd469a10dc53f007c7a240910f9f137c6d59060390c41a32edaa8f49a5b28484f0f69d2f8ac99bc04ef06d7d8cc6e850376c9e66875d00282805df54398bbc5bd8e8216943f845c89e59fd6bbd6a8e2cdbf148c656982440bf2ae364becac976cd8e40a6159b366d8d0522617f422531bfb83ac8bbac33f6b5c8c75bfc107fdd17d3cc4d54c66cf5bfca36cb1e3ccf4383080f18883b890af744b05279111095d6aa0238a86a6f3433185c3ef37203c9bf46ef7bbf3cdad39072e970a1e6dad6983e8bafa6e50a10a6ab7a316a6104e1361bab2837d51735fec2b81cc79ae415051bef115231f6e526201d0cc6ed"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "92f154acb89d20388e78100191d964c992a2360f2d205a5f008091439f454f865d3d5ae276adfe4b552afae3859a71acaf151eb04696b6222a07e1274d6ac314a60090bc928164596e2de56e77e2cee607080a293b71cc8403bb2466519f0f14d26009ae7f09fd9a41447cf8d26fccf9a564cf3849be92d9e4bd2b3d7095087d43e462873ba0534ae512fa8edb2884d9e1613a1ad3522ad9d449f78cdb8331c35502851e8354829a78c56df4fc9ebebbc7bbc468f2219e93e4c524b3b8a55d7c997bf3151848ce10bfefa6f21207f2ccb2fe9526a0bfc417c239a8362282af93124a0ed209534dd540bdc8a1a08613587a1d62baf3530ba0297aebe6e03c2889942658d50f80f33c6ba0d021f9703933b2ba4a24665bb23103f0498e68a0f5094a9b9a7ac146bcd5842039dfe55191f06a70f103bed094f7adc3c3f3b4a12f2cd76db1e9ca7ad3c9d8ff41811da6adf3a9450cab6170e74270755021fa6f4dbe3b1226de09a334ee82617ab44ce93c6420168f6a75224456910b907ec2de68bc"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9094c58ae7096b725fc29065eb17648925b972e5fd176a546cdf03b50d3df72e84650e99960c783c54558a44166cc67b0e6a9c8cbb0095b984440995e17e6e7b5c3f561f3a8a0fac06b973076c16c31e11cde1ed0716c41074afbd94695953a7d075acfa529f89e98f406ad028dd48602884b7f1c04d60a2317ce10a4c3574800f05b83eb8f170ee6c6d084fc68d2db32d0a430184719dd0c0141798fe608ba150f5336079c4a712d62a2f58a88d6f6bf334bac46d1be0e6341695995aff0b05e152a4d75898d713cb2cc6a01ba4df3e4b45914a2fe7f2380f94b71facdc6c50b1c61485e3acfabb986cff365df2436e50c44afb7711a53655b250c3336bcc12c251e1f0e7788c71c5f80dd02fe4cc03b1103691b45820038cc094553f8fb2a5b829a230eae9a97ef4b6c7850fb7e1bc99852dd0b7027fe8ffc5e2c1a50bf5b4e42c249e55c7955ffa4f4336a60ce0d8423f349abe3434e3eb9f3425661e0686fec79ac14e435c1f6c3df4982c7392ddb8ed77f3f65a5c9210ab81e40ef3eb76"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "59e8c182b8d7c58cba812204a8132fa02af9bb2af8ea16dc10907a14ea29a224a80e0eb6c1e12e16a3144bf01b539133f53a4c2007f15787cf61560c6bf8fb6eaee9ae65b924c5f852f622d8e9bd0b67a46dc8fcf551d577a916c9a0af9ddb50c05dd27e716c4c9e75f3ddc3585cf739986de48d9add7d39bb113234459637f159e7b95245e59546aba7f07f4a40a1d6ca1c6d1cd946e8a2afda98cf663e0ff6e9bf1a05fcb0c46486976e2d9a2a35e43f4b79dba5087fa4af8ca4cff44340b3a60d153b5dd3c9bed8b5dfc684454adada547c1f428dcbb70566b86ad87310aaddd9e935dc5a6c68456b3c2ff98d3484e471e586271c06259cb754cedbd0913981bd5afb5e49dac1e8cd86cc8bb53863f87d11e6feaf489670ba07ffd133ea14a7c60f9263f986b1d13e1e67eb0a72f67db108852f97e424d455633336f3c4388898efcfe500bd45cccadd505c481b5c89729bd1451bd790bad68d2572ff09f8c19bcba18a1b6c9ff260562d1f1ac35373449da2467082b288a4edb76c475795"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b7f073c6413f4f710af62ab1b9f023215fa39db9f47e3156df5d0dffbfe4afe1aa9dd72dd7c681b3ec542ef926bedf01608bf7bf0874fc68fd90d12e0b26b2a049ed75968b77c8a24c626a5c706fedd36336c58b8158a9f1fda4bc3f6e01f2fc19544378756c48a3283e4c8c3dcedac07b71b6610e3a10aa19996efd006b970ce00afd9256fafac4e831cf598ed29d27e6d3238b7e799e1d0d96bf78cc9f50584d6702661ca93a887010d16c711ff138f8b07dc2c4616c5204344f402067527e2eddc0fa70a48fe929e6a195e27159b35121612eb116ce2bac85e9230895044755a4c56f83b45fb3ad795728579719a68bb739bad1e3b1f0f79985a65c43758b29497f99785dfbf985cc6524d9a97739fedff3b1d6af5a7c23957807a5cc2de62110b59a0a5e47aaf33247644beeeda8b1a4bf2ec3c1260701b4c1c052276eae49994b6f8b2f8008cd5e637a9025d364ebb27c908b7f7d803dde6591a543524aac3ea330445b9e7a3090ac3c9c63c964ed6e1e6698d5481704a495f8e9ffb1a8"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "43bcfef9e1c31f739cf7273b1a83fc38c319d4ef394b28147e99566d60d58459482054f2b8ec88db88fa4033132c03eda101406873c76703be2bf0d0703083e9420a917233fc1baf2ccfb8b725efc7d302b474195d54d4d3c7cbcc0573c5fa0f2b07a6ecede1b445ee59d8fe101e8b0b97f9b521963b0933efe4d10bcad18219bd2d33bd2dbc81431bc6a3ae6a827c7be7d3b0a1d1718225670cf25a405ba12e9c7550612a866efc6edf994c155f24f069574d3f73bd09c74eb44326af7846f22687b84b8caf54b4052364f107ce5295bafb2d91ce6f4efd667e6ca40db672385163d1b7a27ad1d57723dbbf00571cfe56a1ee02d6b6503da2ef3f78003d3fc07f778926f16ebcb05762fb72fa50b75f78c2d97f174bae392065db2699b00ea80649ffa470ca92e57631db263aefa225bc1bdaf14093ea1323071f7fd614b475f5fd6ca0ab5df4f03624fafbf5cb3a49a92651d9a6aad2e405a7f76d9eb76644dc6b77d5f3846942ae662fd5a11707feb5dc67912c1285913ae2f54527ef39ff"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0ec454d968f05e44953e179199eeacffe08757e89401d89f0c34875f81363aa99334615de41513ff604ec742730911b75138d3dc489094fea7ee75de8dd72f70af216817b5fabc521e391d5a0a870f2c089cd76105f96730ac1e33a2ad07896efe98b4237e8a937635f8d1dffd7fc77dd23b3e6959fa450e48b70611878727874df80d4f7949e14133a3135e422fb6fc7dffa6d6cae3ff75df25458c53f859a8ff34e1756b8da403aacf3b7b12980eb8e69f786c4433d92a5971d615251381185ae436d9d8fb04c6bd7264ca6b65b4d6dfdde13668f27fa81cc78115a07cc88f68462a15763041b3f44fe9d6fad4afeb2cd99258df774995b03a567d85553210111d7f0eeecac6a065f3cefef4ecbc607d49972aeb8be6042cddd844149275696cadf5778629c36d524f8b99b2445a8358afbad1c0d549312d6f5d0928fdd563e286ebdfa2e7db8acc4fbab128557ff6dbd03d123bbe525d0cf37cf9624f06821e422bf0f0ca8e27baab590a50d1e563098c920be15c0e8e965a2994d5916af1"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "69a1305c5eed4c40a1799a68e0bcd73f2fddf4cdc750d24c1035eb256eadc6e59c13a7784b22b09f4ef0c34b772ebe608f9306bf5fd7a463ce0f96ad0e3a2df6e1dfa8ac846ddf54b1b10dd9583724a96a0500d5aa6184052d553266d6b69b14bc76e82e15386d3b961323b326d75886fa61efe31244f5b79f83eb4ba8eb5d19d066e1844c11ba8ef225ad6817d6b560c0ef551fab8589366ecd74b93a944aa53becaf4c8e77b13e2da12fe5543c2680ad76291f08a146ed42e0273592bedd08e493121843f1f544c766017aaf581bd1645614edada2f90d4dfa5f80c1ce9e21efe901b8ab5687fad0c022b52e154abf2bb1d0c02e7cf934519c0d934ec995c79c244eb3e5462fa86dc7b13feb69abbba73610a70f69dac24e6e5ee98cc7376102f5f3b58240f13e0eef2ad0cbf1b33e828345d17d7940732886a20e05c00f2f400d2f45ab68778f3ec85246e0a2851e44fa77cb6079addf354a37512035643ec785bdc9a011e6d0788208c1e14c02aae32c3ff764f6455c8f8ac4e5017a5d5c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8475c42278f3ecfb53a8b19904c4cb40ab5eac50077bf85b8cc71f6faff06321110aa240f9a7e8d3e99b813f29c4bf35acc8caecff0873511c9bb9f87e0228a5ccb82601dcec8b8b99acf08683e70981af9f7f2ab570023156471d77d9e944f221bdff3e666f87dffabd079606a4fc139af85031e1de8664590340e39e2c117054c8b48b20763b7b5fca7b5fffa645f93d4a9d6f3336e229f9ddbaa4e1490235c0e7f516b2e995d5abf602803c9e7286fae0fdc7cbed07a69f5b1b11cec32062330fac3b85cc4b549450ee358b859a10b2e8a33d988e52ac6921d5503f95f47d4ca26d04b4d850235f78aef513258b627d27d47edd8374828a1dfc26e4f1c2009372110c729c01dd9a65464bb1ad4be056318a0c0beee9458962e727852374dcc27f437c6c550be2333d014767d1ba0aabaed99297a544ecdb27098cd2acec886ef4aaca14a030d07ee42dc0194c1f867b77aa8b7187358a5d185ebecb24097b00a136d39553cc508ca82dc088f359cd836497b3e87276437e132096b03db97e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "ab5bdea7d6018c803966227c8bf584a231fec444b6bc1e53fd3f240b30c7a3d84ff099899902ab9a11f1f2876dbebe6514f190838af546a249f3ce4353831a20effbe944b97b523c3857eec96785dd117ac188ffa41b7c8374ac37b03bd14afb828641b0c0bb2b47c1913ccaa5c1428258461ea57a72678e1ee41fb2ce9b5a1c3bcf3d44b8fed062de9a3600e940949b7478b452af12c97412cbf8f0bf1d95cb2bd4c3581d1ada8a0efdc2055e52a16ed7c2adc36e5f26d5367582b475a61bafd28d92c589cddcf99d3b94c64254a9ec0ea409fb5f480cd3a6e18728b68637b563467c48370286457012f92106278375b018a2cce2a4b274a4971725254049065198ff18e0c6a2f216a3df4accceb0077ba4b8d5492d7078d093e442b24588bdf9076d727b3a17f17172c8240294938b45ce0d695d637f11c8b9a4d71eefa0237828a6ff62d9b0c88fcd4d8a97f71b09df62274f51daad2036ae7765a03036ed637f3de571f4f8af7522e41acbe84d305f43d74f878365ba3fc0f2dd3fce2335"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "32329315f2d1bde7c6d3ff918ff3101084385adfc2216c0bbbb22b1e3dde65dafcf76864189d3ace3695e51a40ae844ac6e9fc72f1fbb04a047c58b0b6a86df0f2f73726eeb8ea2a428f1588a222bc95bd550083da397add4a6d37a14358f105e85d270b14fc3ed99c35e75ecb818889a065e9afba8918a8f0590d292b507fe36cc4f416e9168cda8ec687ae7cbe2018a585f4c9d76323656ff4d554744c516128eeca1eb6c77c5f566b1ad66665cfc81632cf47f76c2d366f3b5fa0818ccc39e1a95ae9a5a018e8b9defb060482a5e38b4037cf50d23bfbaae13f096491a811a633ce2aad8317376a087bc46f12154e2fd14b2a008698b0acd3485d326dfbafb1c36a1dbf5d7da8119f3f456a4c0db555aacd48905646ad6d65b64deda1b248e133f251ab7db6bc8449cdec4ccb5f45b1a3452e25c3a04f5881ad19c0c241e10f18ea4aa41e1856123e2694dd701edb7310e651b3d7d295bd193f800000931eaed32e4c4c52e339e939de6612ec6bd10d384ee228d2d14498fd1ee4ad3b46bb"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6f4c5d8e23801e4dd6617c4670d2434af72844a997379dd7f877179bd7405bf407247e77a9b0e76956b0b3d61ac2592c7005fa85bf3cb53a231603070a83880c0202e6a2f5e4149ae05d5333f5daf142a8ee7b649cbc97d465b2354e68a192b1c63c51a1166feb428afb215d89e51bbb076eb0fb7f02a0bf512ef352561da2ea1a2265eae0dec4c7f2eeb232208965427c81c596cfc7f18ca9510bd34e83e5a51473e6e138b75368191d6b1b2b605430d9989e9ca4dcd2daa8f11e0ad05b20f3b0eae07795ef85385cb29df224769038f89599990d0ed75eb122e2cf6c0aa80f185c535bc328ae21e53376095ab9ef9f15ec663df2339fde30c480944026304d553b0a2f270f4ff999a0f39391a80a73c22644d53e1e6bb1820826f4aae6f126831b195c2d137b919b5d20d918b3fd3d85a83cca759850b27ca101460d1be3cd417dc16fff5912331118a4d514fa3634f67f72b31056cc65d8f6a11d1fe10618b88fc2754830eae79e12f4f302776137a772489e3488f37cbe0a1139848fd288"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "70f10afb809a64ab2407f0c3ddaa0f2f38f981b19536f3f5ac44a6fc85e5535e04795a16bb6c435528ad255402200b02f203bf3f539df42f0ce3cace96456728814df95772560057648867897603ddb96a92f3c7652ec24ba86af4fb7c1a8ddad03409e1bf982d01b63190661dddb932018cadba66a43cb5c4694233541c56d9d03e659e074fd6aaa18976856b8ca27342cdd3a516d587d5d46c9c845be535ad1a923c2242137d0f3dcc112190a807ca112c069fade7af53f17f2f74e2f11fda2b75f9a48250a4e9e8b34920fd20783b179399425b19e7ea99f395cd3bd7d37729a287d423623a33542100d13eb61d7f77439f4e3aed7265d7a08a7d9eb0477aaca23261e4d06d25ecf1219b87610e89af4c1b427f7a9432624dcc6f78454376d215a6fd8f6e5f1211a18334395ffa710c8730abd64de0daf686a45e979547c46f684fc130f8cd9c4ec6252408a87e29e38a8552a4a908ed86f3f83d42a9d7dba1574a2453dbf2613f8c9aa5b7fffd61f222c122e39d86bb01fce55acac1901c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "36343b89eabc3dcaa053b5be3ed7faa79c143ec18800be18ddd3747ecd557f09998203325f89d3badb3eed7fbc20823680d38eb44dc368abbe180474f494431c04d936d7b5886ab3aa2306c0b03750df05c4e7fcc2dbab79736e2ec9b0e27e277d130060abb4ade70cb924ab950e95ab1c2335578c5cc40dc429e397691542edfaa8f4d408918beb9b0cc0668b6f1cfd9692b32f63c9fa4d482beac2745d5777b6da28ed7665bbaca9999f65309ee46841a8e3998fcc6670edebabc4515a438375ba820380138aa7f2e32b8f74d29db86cb85dc2b556f4a307c02237f18fdc5634811653ec2a440a53f8647c495b76221c058268713191a9bdcebc148a60d2159f28d92f79dc5f3b5f0c09e62bcb68f7003bf71bea00d25c4d7777a28103ea43e92951d10be77ed7c73cbea573f7e46f924e4d12cf9df8faa53560153c8fea87365b90ad3f0e6a50b41612fd191c8abc3a5d8f98bf4006e1ae31907afda4b20d7632829bcac43c100ff3f10f0032e1bffd3b207eea2d6a87027577e5458ab81e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "750133d796053811558b21dbcae35e267b2fa467a9dee49755d45599a6774682e40e00cc46cbdd412e6233070dda3a59814d6238f474d04d9102301bc281816bdef246f80bd3ad06646cca4c9a662527385d3c473d03ec4d021db74c7a1ba6ecd1cac005d58163644b993aea62060a25470083006a6515ed45b1e54601b9e5914b8d5e3a630f29bd88036f5b708d2036e4ce7832a239699b2879b6089048e33c05d3672c0e5c573699264de531a0f6c2c703335fa32cab0003d25f9bb8e0fac2fed05a82c45fdcffdfa0c2be8e5501212007eecfcad720310a8ff44ab7dd52e69900344996ff0dbb7c39d2398769987402a7e1d9a6378721f5aad9faffecfc4fee8c4092207e849715c56ffdd5c42875d170467799e0f8a08ad5edbec4b939cda099d30293bb76086c5315de60e967267f3ec113f7fac4bfa9af68c4288c69d5b0073848aa722124a9f53654544923b5556eab31bc22ecb6cfd8b18e665fb345e8b5e48cb63ae37c7ab8125a1f3e5d6c4bdbdb9778d8e27f91883aac99a69a26"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4e9272dced0bf87a8a3b6ce118532d1ffba529ee783857ea0ca7510f4dead7406f10c48725092eb41561d067c1ddbe0c111ff24aebe1655edec615adc123839cd77c1a3de8baef7217911adece72b3a6b617c69e8c31464e2bc021ddd2dbdb99ad28042133a6a02df2be394d5004c6ca2d7520af46227171a5ec22870fc8a7dd8d6f4e137393261db00c57fae4fede6ddc7078f7c9fbc2235147da239979fff0dac3c5f0ad10fb3de6ad70e12ca6c3de49b8a36383649da69b62de49c967301cd36d439a6c1729bff6ea0e664a6fcc95898b190cee2492fc6535b7552b5f04d71b4be2dc0471dbeda5ddac313c9cd4e90109f04bb09515e54f6463450bcb6fe06a5cf80e7644f422cb83b123b94184c9d81fd0bd4357b60aa92bbf35a9a7251c515bdbd6016b81ed361837eb6021393daebe302c4c204ad3fe724b4f5b8e52f9590ea33e02ae1ec2863df83c33fb6b21ee051f489668adbccf04883d6aa972b77dcd42c03de0be2ec9e63a717d3713a2c7d31163da70bf53dd3ec342183e9696"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "bee3e72ab46b5bb4cc6138dbef0aa19effb5067358d98252ff739aba22d21d7ada25aa395aedc0c29224ca5b88169072fa6d5da902130ce97f42072b86103e1b93313452fa6285c3f963689cf15c0aea60ebefa1058603b5c9f905d5849e496ab4036ee73e5ac612b364c84b34887cd0141ebc114e240eb8885b0ee82f31a9548fbcdb6faedc1c27e0fb1fb4037124133088d5edb6d34476e1bb93e6da177197b6463a0e1042581b965e9d0e7797c13cc841263b991af9af21f8ccd44f4ff161b6545296346ef54792dd5392d26b8bc2c5a9dcca41ccc6adaa1971cbbc5e676f0c6633ece739b57a24a6bc54fa75bd6c4f2d1e554d7d7e78a57e012f5a86121e6b11daef66a0004fd514e3b688770566f4f98db5d368f1e4ca9ae583c245e30e485d4b71cd3a624eb1157716d6532c866ccdb6c5ddf3e9a6e05952f7c2c6f37c50871b21258a2e9cb152bb877971aec6827fdfb4fcee828324ed2decada3692e3c4483dff53bbfa12b633544f04866b3c7c15f713786feec165502eb895382c6"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2cb338f3b3e9ca09f101b5ff3169edc180c1ed936f2e4a5f6ee7befe1e005eaa450c1ef3e78739d142dde992cf73b2349a617208f6979220c85f7c5286c3126816e47cf0946a17de1fdd80657ce79254881079da225d3b10898b1e5eadd04489f486a14ad530fa6a444c19d875c0be51875303abf214bcc6fedb1e7e43a257a3375f0ff7ef64e5369b1ac071ef8a64336f5660ff9c5e8fb389a6029a8ff853d4a8e565ba17b0f7302d4eeb5416598421858ae2ab65c2411ac92db844bb430a745470f402b13c9575b171fe9e64f71d6ac40e6ac65c5ee08160864c89df2d9567c13dbd6ab1cc6a767892f0fbcbf2d734424875e9775c2020deb25ad8e93472e1ea1235bcd06301ac181bb20a700050e08548a5cc00234a44e42134591ed70dd4933f4d6c6dac7abad2e6da8417fe42945ced787495fbeb99f2d4648b9382d253e0806d988b1f3a64edbb28904092941c834b63243d583303f6081067d1fabc5afcb818ba8a2edc31890ec28c204eb767e749950c18be17950bbe9df4ffd2bb97"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "85825bd4521c433e916152fc89c06d11ca2de44afe406108ba3cf299ca02d0c7165e41ffdac6279d0fe5b915f0aab62de6277e381fb8eda73a89e880fe546fa425f6698b89e47d457a349ac8cf0c38f255981b902f6e22ab9d90ecba5682da95b72ea32b243082d564466abb5e9abe6a66c5cb9f7977eb3b827a1b98af236340991db4b6fb957c4b055c23e13766061aae849a2a8edcd3ba1521f1201cec81c6ad2cc7c20123f8e1c13d1431e6dfcd3481b085e32ee4d935311f5341e3a0c594c709523bfbe9b4a0374967ba42390e9b9a1cda573fa6008b9a0a96250e9ccea74e5bbb019f1b870268a48df9d39b422a9064d923cbed7063d8423b020f07c57e4e33122705b523c845bbbf764e5d505d42940194699143188c7e694059416070f4da019eed7663af0f007d79433a091fab6cef6bd0f3d7021ae7e82ff956b37f9c88c2c82e57fd834abadd012286f1af916819bc9e91085eedcbda6b5cc44feb83018688da4b97c9dcdc1700d015b71597e96c0d6951f04873852a0dc3397f88"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8204c6b2d4027f7d93ff89c36eadeda03a5b5464deb495e5bd4fe066c0d9778042b8fa130396c1652949f0fd577ca23f988dadc525a820cf82756992ff81c4a7562ac1017ea01f8f9cd0cfc787dca972f27103a4d92bf215eab991e6970e409d431e6bc2be4f0586f5b98b4ba708d9761905aab265aacb9d495469b1863f5938549175f30b30561c998e081c41b039918a6fab4eb2519e6cac910cc4d931c6c81e899655f06c8a26f7b9433992ff923f27d982c1bfd0dcf62e5ca4c3e035961aacb99f831bc0e42a668c01256cb830b7aba0f22314b548c0b85d84c61c9b4a8ef331bd7c98010c9a65bdb7bc4f0f09b87d0c8b8a1bd96b6bc2035b43348dea48f1f4a4ed6e393040500a12d7a2ce1e08ee8934218630ecedbf2fc7fb5c6748ee3118421967e8685488fba058f312ae41f7d386905646ee334e294662a97ce70486b450a64dbf8ad7c1ba50f0c56295cb2dbaad3833d3922566802c80175526e24b188e18574292e225bb958305dc2749ddd4b46685925c0ae9deab2671e1e799"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6593928f8e0a2a486c9af0b6af6ad78865c215f64ba3b72bf3a103788a352d216fe5a2a3382220f037fc2d8a2d25b42f48cda3337cc831e4746266121181bce964abbc7eb6378b8c59b9ff59de336989d58003534458a47cf18fcb0d0397333045f0f0d826445b62487217df62131ac0d84a38a02ab39eb7fb1451c7ab10f47d7e62c06d0d1b8ad35268ce58573432b1f4a9515bbc9bca4428bba426a3ae8ef8695bae7a2a3629177fe00edafad675811c90959ccd7800e4ca1e22b16910170b9d697b25af45b9d2febbec6b57d550b7854b425fece239155f068c6873e314ed3c97a46f7a61c8b82af22191feda559b7e93483350652354f005a78dc62bea279a888b4a6eff708eeb4d93ffa0f5c6381a9f6570746387f0e116376e4625a01ba34d68d39b6b793565dddd357493e8d45c8e676026e93b26abcec1b4ebf467f3f069dbddd63f30b6be3b93525618ce903463ae5cd091c39263327b40b76e4be0403f6686b0ae74213a5208bfffc360d3de49253b85585b181133e55bb38aac6a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c138f33d241e4e88846f66b4c8f6d27c89c08297b8acb8e23f6026b4857f1bba758f5c15f4266b8d66aec30a5a46b32839f8863b3e2a909ff37c97322ca4a9eaafb2124171b52dfd63465e147b8e32c99cee9a60672b70163e747a238402477dce31497b2339f638d5907e43e3b794ed8f1521490957a57cb9bc82c0b066c20c826237c205bd47d1e6ba57eb5e37364bb5fdcfa8155c8015ca06562f7f0c9882cbfcbfefbd2f5ccfd2f78c684a9bd76c659bcef3de3622995ba63913120be5e0ab72d16d11cc1ddbf23d28abbb8a5831bd0f00a8286122a117d55578e58e0da5b7dbfb48aad8ebdac7e8615ccb9c21a1d877dc84f1d89aabb0976f59d038b9657c636b762801f214953b0d0cd55ba1bedb4701c5e2c3872f364585bd675927a56a3a0fa0b962a7170f925ee921c9fbb9d0d8a19057337ae74940cb86fd3103b232314385cbb59011506f94c14d18850f13556cd7f03cafdf9229030963f325b15c701c60668e6a167f9b3256bca99e05f4f5c2c3dbff30f3ecd36d79bd0db54f"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8c174bf6650026302423faa9b90c71e66c2e54e65ef77da93795f04dc8fe0cc05f992cf00c41486268252f52d17a4b5eeac356866162c031e55d3ba7d0ccce982fb42457aaa2a92aea50f9cede6c19fc0e1052a4dd85d8039bc3f96dc19d8f2faef835267b6d235c25feaef590c5035c2dcce1ceb6172b693a63d3ae5815f5972bba516a096bf45e006dcda300806eba09ebe7629a939800b7eba88e7f82467d4d65889ab65f8fd37ddb27e62bf4738748d9e429eeeb41bf2a4573baff6890cbec660fa0e1e0c38cfb8a1e086c432562fb14b28c74495689e356ebac1a701deb7328ea31d30227aa9ace477cf76ccc375519995788f90b41bc7f6fd4af812ddde49be65a2c7f9fa1108376701099ce79d640ca5ddf1d34634513a76eac0b3ae02d06a2195263d79e9dd6edfe9b5bc24819fd5ade71b1d1afc3f5302156b97bc3c4fd3386f0a9c00c449eb05b1d742c75f02ff4529ff1a0c0b34ce4cb91a5f8b700d9c38ce6402bbefbbbb3e158aae035074a6e0c91484ef8b65590e6870be30c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "39681cfed3cb5ce9fe0bf719a1e92aa3af1302f6b6d0c93cb22795e0ac581317796a79ffe29b5f88fd38b572cffd06fbd2426372efc6f2ec01b2267f8c225cb6c6d911c87e7dd756ca3828383eb5bd9c56d74261e62550c88e39e7642604529ba45c81c6adbbd4104788df8e00f04239e8d4c0b43ad15b497ec04d7cad30dc0082d586b1d88d121e5e5ec1396b207410a3bebbc065ea25b97ecad9bcb9594b749a6fa8f33dc11a64c48494201ea0efb73a203cf10ec68dc052bcb68d336e31535bb0f667001dc2da63358e37bd421fc88a3009c698230c057983968d61c31462363bd93c200ce4f5add74f20d877564e88c20982713da42a1b279caa845b486b090d5fe6c154800feb14e67498cf6d3176a707b2b1c82fc6773cf65befd64c9446a7b62482777b1c77c8dfc644798a3b21533c63e0fbd39e07b127b051ea2cd85b42c0592c27bd988781ef3a405dad25e9659d9ba5cf1b3c3110b59117c322491d55a9c93c8a45635b5b0d378addd082453a6d190b8fa0a89a59867d85dd4d07"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7206322956aec277538b8bf09edf980c88df3eb0dc0689f834581b94f801883b384ac4fc218bad411d44e49c03a6d0ab123a19a4f0c7a8e72092acaf5162b0e30a2927f53543b31fca0b0b3c1abe56268f442e6f856018622584205dd898e2f98766b0def32894a508cf7c824ecc26750082b80408cf7a3fb752172afd53afd6ffb1f0b96b9d0c705574eb0f1dc1f291ad5af8c5d1f539757e19e19ad600013bfd2d1fc8b668d0e56a138381389a7fbeee5a7ac363fb4ad95006e3b3e16a3b9abd450aa3f16db19facca9f45cfea2fd52034e7a1835f6e10d40be16e44a0ce5d798a8bb9451488f78edcd203455fa6dc1253505fa83140d610eab8cac65fdb2c669667a75bded33bbd4ded3b0691de5e30c0eed12e01e9c78e56fdfa485481fe671fed3cf558730acb382f24c1810c674e5459ffe449eb82840bde95fd2f23b8438b844ca019882778edcb7d5b6f4d2ba16c5ab439556accadd3029173604e5ba40373d491779a049d0106dec560e084ca942eb6293bd3d88a6b4627332a615f"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2130fc5f94a8a359b90ba546795e788328f09c45903823452fd44c5a0703033c7ceaa0bd956c20b12eccc052c2f535400e0f2d0e90aa0fd1066e400d6e81ee19fc2b7827b48537129b54938d324680966cb39850f755b71d967b50fd7d699ce3fe956a150c17088a4d29740905d4d1a6b5e013c4450302bb3c125e90748c3eca09e39d7c6e1da6d65ad02328865e2c0efc0eda5de61153ae757b33965a95da80e23f531286a3288fd61694298e68dd21dac3816aa0b80c08aa57f16cc24c641164c67bd98b2c5a895926e1025d3d699ab7cb9e4f0b43e31f68bbe2fbd3655a705b28d4266807e236c4fecac9ea470dc9aa55690e428a1b353696314e5c62d9e5895ede07b7c584f65d63935865211fbdd78cd7b0090bfc169dd000342d14b068c6adb65068cf708c4e3c3be72302bbff056087fed642480b9bf2064fb3f0f0356b7875025a4641fe5af22b98432dd708872412144cc9706dea53d9d8f96ee55ed821715124bc824b408092e5eec66eb574f069be3b5d88a8f152ab73fd160b4d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "575ef9ef6335f748555a176d35ef3edd9428abcc6c00850723b926fd84c0937361b662320866f555f6e1062e1844aed72754da4f50b1c960b8522ac932cb263c40d301d232dcda65ced16d0e8272c2a23d2130db57cc2d39b0b1fa03ba4c7fbf03c6dcce9b474583538f48075793c26df725bb88113738e674f7fb4490ca61e56b350650e8039beb39a97b6b55b5693cb7f4106a26ceba9322ff889b0fccb2e35b8309a25bd91bf0b8f5c2459cf81bd9e8c2ded35a9e87ef701e26d82207348624aa596e4e1847b111c518d881da598e1ab6e635af91c802ab35f5cda75833217517e84159bbed67bba55f51d62dac8d14c2f9e1a8d1b1649e367ebe7611af0331424ed6784a5497f80ba4617a580270a69cb2ce8b0f63a73d5ab34c8d7e3fa966f465788efe41f57a99914ebd708922d570d1334a81bd6812882f0a3b3f41f88a25bd48de158c4da84c784235593c00280cce586b5d388e4ccf92ffcbbf69dccc8171a7b4bbc8d68d1f00d8628b725f08c194fa18f064ecd2f3c1bfea173cd1"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a947601ade4bdd5adbb13779e2d0893eef5de17b6f217deaa8e005fcb9a5863e1e84d1258889dbda768ec247848e7c4c8bccd8fa10a322d05fad461ead9b51180070e5b263c5ca4bf471fe2711ca4d34312cc3741148ce2a0ae9ee7735984533606aee498481281cfc398f852ed82020e0c9f5036b38b31f9812f9bfee954411d7db1653c19194710b42d726ea0844022a2e0b5eda0bc205dd94e271883bf91458bcacd093fc40546bb71ab2ef72073e278d46baad57f744b4b31b100288ad6e25fe8a582263428f83b92646579d18438eadd89e59baa4de8da0d91fae6c3667be486fb7bd5891808930ed3c0f6b4d7a6b5e8898215ab479769f040380ed6636751dd19ba27c8284bc8661d7ab86c5242f6b012c48491966925c3f780b35a0286e1b389bfc134a60969d3345b4ce1d0bc23885fbb3883da50d1b470e1bca3e7df62e5872d7855072be216faa971684d632135858303c6de156dc89be01548ed69967b3265d208a62f5887c46e3b395847f8177debf3c572ef212dbabb8573799"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c2912d0f4de569d7db9cc1a407a01874ab8e0bba81f38c370ba55920f64b41c21e6a3b67e5e0271f8d9400374f11396388966e2434aa0ebd4723042c92a876b635b8cfdab85dd25fba5f88236fff2f7caf23602c479c95b5ea6cd3e4f653cb3639e75ac1cb39d268a035e744453ce706caf3f53eafd89ec676baf74f2e6c9cf8ea4c288ddb1198f15a77ce07e7335671168eb1cbd8c607087dbb17b263c9ef83e650ce9a48ef2fb5fd37a13aab9e8239bae823c048cff16a7e1897f5f7e06cd685a829a85859695fe6956179cacdce7181d045419e69903f987b35acdad97a7dd2e7713060c67b8f447a02afc218484cb1948071eb64e77cc4e48d0bfc635340cedda460a1201b3eddec7ae5a008aada21bed3060fb17c8028eb2bb767d1d4c948bb5ff9e9a2192256e59ce48241f5dce29dde5ab2de0ba8240a992239b7a2a546ec66ef7ae549c8a15fca6a70cc1474c90945795e876d609d5bbed72b8f001673fd53b9540be4d187a484ed33506464f402160bb1f18a3dcdd47582cc74488"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "357ed432befdd0d673605a705dad0d8d2f100da229e979b1ffac404596d777269d9469dc1b9a4a389015faeb44639d2962a635c3aba4ecd7f38870980e87b2af9c7afcddf2fd379160cd415f261215a5d46ce5c0c9512f543a8b1ed961d2a75415c9f32db7892f1188bba23c6d5f2fb40aaf4fbb003ae6edb74cd0844f7461b3ee029029595b6b8d299e392d4763d3f6b31b222bac5777f87bf9e0beba302ee87da8be3dc5a0434b8482c165087d60532c52c811fe6389c7c2728cba5912d26d8089635fb01cb8d78aa5cb41cd274309d97cc10dc2a43461cf951647b110a65bf47b8c137a8363455155332287867e4c0765ce691cbb750e5e141aa6fe61fcf4e4b707420238e05d955e5dce215168b4d1742dff70ee87d4e24bc0fd9b73835d8cb359a28040935b4c64907a7623d11118e2997fb2282cfc73b2fa27d6e58ba9f5b317f35a14363c78f82466d7c9cfb8b07210289817cef53ad672f10892b0458f0004b68e74796bcd98e51f2e2635d494c615f6f087a293ea4d225b3cf4b0d6"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5c87e321dbed16d59c49867ca35cbeed697be4f279027879604f1686dfe246dead0694eec5b2f516702b36702d7b11297075b489d9087bcbc0eb1fe5e756b5824a13d06bcf90d298592ddb6e13ef362ae9eecf0c36380159ec511abf3d071ca89b05a56d709c3350de5be1926007ab5830098cf61e677bb4c9d2b79ddf11d9115905bd862b4cd708a069c79cd276b73aefa05f920ffd6a8fb778131ffe4c8a5ca2d81256d43f60e123564bebf9bf14d04cb6d3109865f6f44b21a8896c294c50f62ece38798ebed8276ea7e40e1d1fac611cb511295c03199491af3e0c3d8baccd4d30b2c9d4d47067073f074f29c079f239871dd62e16f53352914d89cd4c126d0e38370f42a902f007fca4c1557b2d6b420936d1beb484c28e392b4502bac5cc5441cbb59daa3bbde3644836682a45ebf4d683f11bd12082b4e46610847cbc42eda82b80a20c4d847963fbddf016232a6c7bf12409108eb395f66c6335fcb6d1b15f54f825f15c7b2cdd2afcb797c129140626e32c8031caaa007acdbec381"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5e5a6bc0a9b6f5beb342a99156da240d4ada680d83939e62a8f9d5fc19649e9c381ced323c26e642d034b67c9b01f2378ba0c17a853d9c2d73d087ff3b011959f02c2fdfc880d5c82179da86277fbc23a84ebd397fe22f775214ffb8d38359fa141758ff4b84836541dfc5c4e19337147935cdbc7dcf52c91f647ff6e7ceb82f1601e4eef9b2f799b57d0c1e3bffb63bdd6467b9e385db30f56b46ac06f03cfec3cf6805a0539029080b3b95f7efbbb3728d2cac0b98bc61bee10b4a890b818fb0989083ad828f87fb79813199c9de7af666291d153406b8d09bba99ec7675cb93ccbdc2a62b3e89a6b01ff66fd69ed667515f46388dc57da04c022f12ceb2093f755e32281ec105011ce7179243f5c399c219192be4667826d009fb38c7cb2f212d8ca046c00deab4dd9c3c48d4935a7736a835c2a4aec58a240cc66b50df20f21f4987641d5c6ba78799eb792c7973cb01e963c2865a76c1121bbc34c9ae40e55694f56b196429fbe0b89628b3a08ac7289a55b365e1402fb61ab96410fed2"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b69fe03530859d30589af21cb06ef78702dd9778aeae7062204740b36b79257951bd30e4aff739dc8118a5a97961b68304ab277fbb0e0abdd7bd53b7782812ed2bcd26fd60521bfc17e543ecbd485f9b7da6da75fa558ced68cb49d819561339ddd271d2f484694d83ffbb707e731fc9972ff1c132ff648451ecf6fa2525c3ab696a635c3df648de67344f8e6eafda31d94dc32aff88537374b0562d887f437f59da19e18464bd06659785cb99f4f979be6e59b0a3a0a336019af8d324fb3889c40aff31810fe8c6f5f3d61b79238ecf5a62505cab45c18f8e0f52f18a67085b8dadfb1076de0c48631f3d200abf42c07581b3e6c670d71da5f407c7e3e31a7d46209f95a2f14aa8c595bce7e6a371405ab886874ce8740259dcff6377b73634eab9f50e83ce6629faf96c470bcac6cedbf991ca7eaf15c95167cf086303b43a88c56da11983584fdff05f6fafb3343ad4e32c534a9ca4b59f79e80f2ad191855703454f1353989efd6c075627408b61cd7c4b804c8815911c3a6d2976cf35c0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "589f370ab31921a95b6bf0220d0bda22ded0719e0979e42f205b2ef3480bca5f09a75123350edb164d1144136cf15c0ced65f2be5356b7f74b8c0595a4b14338c83e501aaaf9192fd80b987d5cf6a0920a96ec8c535edf5c114daacc7275cb6e6d1a224a43aef54978c78a5c91374ab5f60e089d8e80e540134c4e7ca936bdacc5a67e21c91af79ff05fecea9c07e8926f8d1a82478f4da3facf8f7f83e27f0907abb4ab1b82ba451a39837d508b2c1402c64e0455c4fb8b4f97905f2e168bf5eb0f1ac62d205db2f0739130908b05c6f2fbe853df8ff40aedce176114fc1787bdc45cc2426f7db44716b604623a856e1907fcd788d17073abfd3b7d68f80747785d896328158e5c597b03e312f0890968d482fa8cba3ba0dffdf05a71f872410db469d43c9d7bb9e4429e57e56efd9ce3263eb0d86e032480c3101be930f1d313eb605a694b6744395d1b9fc21cb5e7dda9ce05a87dac83d7b8ac5291ac987dcfba1b1b5d237cbdfb65b573db9cb4281469b1cd267c40c867750a1cd5c74ec6"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9398d3106cb77d329abf72abdea2bc68e64a35faaef9e32ba9612e43322f6252bbca89915cd5e529e8eb976ce97e0f3e620cf3e8ee84d92fea7882d90ce02e24bd7f3997ca7bc2d2d615a183a5ef4777376668068f6cee91e72d6a5d714188c1e02196fe6cdc65681c07e1c92c55c2bc56caa074953612db3d6a401d5754e32e79c6b773e0404105dc19a125f41d819623854467e5192c537f9c6bbefa0b7fad645955ab95ce487f1337095647ab728fbe1ba21cc6164dd41c7707def39713a09e945cb67882d0f60231d190e6b872d81b80caa1b36fccab7bf8bf4e7c88a05c5b41933dafcf3d44e60bebaaf8fc7f63f88b970c2a66454bdafe41760f1395eea1e9c43012f1ba6dced5695e2229c2e1a8e77fb8339920029a8b9b389ab32028acba61a4763421bc705a0e4e674e6ecae2f92f65d14144731badcccf6dfd2b545ada88721f2357e3c224ba12e420b82eb9e455c833031938135fa71d2607e204e3fa78e6bbbfcb3f633bedbf076509e1bab749c6853faea658e39652b8cecaf8"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b089a7ba334bec3cd96ec5c28cc8179dc54933a443ceb64b087a55363d0553da24b37647820f3ce8b530c3b1601f7b1976c2cfbf5b4ec2797896c52264474feb1711c3efdd883fbaf35e5f3f22ec02ae5aea2625fcee030bbb3eb08cd423457b8f92125224a7ca0fe4fa10748769ea6060b5085722efd14399c55b3197668b1b2282476b845f4c1dad4dc94c265e40cba7ff2fe8bce5c5b4e51b274d49654bb087e3abef3f45879b28765e666b7be4136d0cee5b3d2c859056e55b1846fb3199bf7dc209e603fc2c5c5420756f5298490a7e2747f283b44564d7dd1b0829ff74b894517aec399ae18e20a0f13ac96578477513a61611e25a024f8344ff83626f68c62a16a15dbfeddc060c2db00a024bc3c02d62bbc614ecce1118d88853feeee755f9e28c2c943daf7e237e524bef4f86ac761a5d9eeea47f05a9a16cdae78a59acca4729e7720db6396563cf3ab9456058fac2aa05e7c5ae484a6a1e8d9b5461046d944d8d34b42b9bf35f068994cef3b477de9685b9365cbc7b4facccf55a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4a8db880aec3d9cf1e3b778b4f1616e1b16ab80ad3410eb847f4319d35b5ed5b63ea0f96260434e5281f6242807f1e776a9a5f6dffbd65c8de10b8ba7addd44289e30b46ff327f7db6c34b09250c22a1ff96044942bb029dcb2ad0022117aeec3c0fe89421e9a873d049e3f1f5884f3f1056974f2df6351960fa5090aedf544bcef4d59dedd3ea170c6bddf6bd5558d8d2ba5212fae3138406a112d0261128284c05178dbed5a25b589d3f1bf90e28ba9ce363f53605016248a7cce838f7ca2f20fe43298637de5327a9c67eb0aa10e6e92c0fe3f55fb299caf302ba1e87c1a3c50142a27947028f60b9baa272f662f443d78ae446f1aadbba4099496c8ed49d9b097d67ba2babe41b62f0feb8a11261f5c4bc86cd9a55baf5b83154116c1f344cb71f9d2d7ff6a8072ff5a9ba0d6e1817a798693be738f9c9b0563e40d7c8737f0f38c73229d00b57be895a75e2c1e5708d39d4a9447de6412be8d5983f5c1bec5a67f941e844c2ab8da51628edd6a03a8d2d9f5bce86a441b5981f7e6c0946"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "33e76286146ec82e95494f798a413f2569722f1dfdbba39e7daca5d654fd9bed5b25272fd3083d493ccb228b9429f672f5f6aecaccc3b6b66e6cfe2748c55c772c7becd12844369fa7283a95aaefc7b7e6b444ef9ea0151655bbd358ba6a42a4b2b9f9c8ee8dd805724bd8fa4d29e322d56e997ee1dced90e10b80a4e2d007985214be77a1807935b75a2df81b9c87b177515bce12722b1ed2ba8295df7342a707fc02f4ac1b17b9413a1f61015c4ba998ae75fda119f20aac84e921bc5d2232f7bc9c6eb29d8de3c57f4bd62cf73fc20fb6759db4f9c47988155bf73d4102bd78b09cb88905dd0be0b8e613f076cab8cf89711670a1ccac6c1b9fd775b05ea6bbe25ff038bda5fe828b561d7be73d68d881fa7b2c3c3cc513da9e19105cc99a02fb3791becf89e7419d2f430713de41ba3c439e6fbd4531aa0949e1fe8f3e910183e75b706083ad11cf3aca16bcf8dfc606ce28c2466dcc111312f3578bd41af4e190436f5c382cc14728c7b7e3f836662acbf7286e621dc5e121d5f5bf8af7"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2f2fe9ae01a02e6d91f4fd785c4cebe581cb323898e110062c1808801f822cb2e255f9b2bcaf2691e931df9e15c7f876082e569b3448cdb88f44b2a1e0665fce0ddf27c84ce4d9586da28d401e76a54e9e65f7270b0c34e64a7eaf720bfaceb063f984359f38816876d3253770512c5beb06326a62c86b7f05f394b28d09d389cef7644f03acefbbace66c7b1e3de93d39d831b2d27d3998190063adad46335dee71194793739780678056d7a7dce03e2352cb9b22fdd4922cedd5430a3f56d96f9b2cf22669bccb70aea9108fb81d7266d838bafdf7b707da06eaca841996abbc3637a9c246ea52776455b80fad6810eb01916242b3069d333e541b78778bb0e92faa4fbe4ef7feaffce181be52eeb5b6807610f060a93ed663028bea60de1de63b6f69a106d61a93929b6da73f41de02c58572083dacd98e0b11f57c16bc5f0e3ba1a95faebac48c42912a791488fd96322e52bd022d686582eb88fe85a48348bed36d95947f39fcb17ed2512974804c467c9a4ee5e3fe586bc54a22d65c85"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c7d25a7c86329b2dee76f6972d27481bd4eadfe1c901371d27406bcdda5c447d35b5b4cde6eff94fd5bf2e83ef8f1bab37bbf04307dad6d38b96a2ff6464970673b0c05c04c1c07e0e28d1fa228510d9b2bc9f5b4461330e348ff61a1eb533df887c6b3719c85d3ed4d75f36b85ee8540048600f4b4b70fef885e90c4e3c8d924cc0a53c44047cba805d15bf88366a50d8b60d5dfaae09e20e5efb186ed49f005011bdaaecfd97074a8cbcf87e3c810d9e698eb2a6f8b77e3868377af16ce42496a8f19b9ef8809dc35364d35d614f1309a3765e3da35b06ebefd522b688b86337a9f578e69a2640cea2ebb5634665ed7fcc7faf124ae7ac70c298e0b3493abd22ecddfe23e595355d5deb305ca5040246bc3aa450faa3a5bb2cd2eafa2433e4a40d1d602422c8d41f02d5a3a7d4908190e065fa5b18f0160298a52d7eaa828440bec7eb234b2c506172e46068823f6084058e511a8fb59fb722577005552346c04f85c841487285b6b2a469e68a374005d8404aaedb57d3c962c186ee7c27a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4ef8d630c4ba8a424ae7dbc197dc7cab463ff00f93fb6db064d9987f224f2a589fdbc40e7d3c9043f1cbaafb47475cc9dcffd85a41a0b50614a206c5720d1151229d1d988dd6b8f56cc538b8cf0d55d1dc7003f51b87dffc178b3a63160b759c88e829afa2dfcda4b4cdc9e228a7a81f301e2edbb10da5bbd8ae9dc93ae8eb98d47e760012d990ef53ffbfbddcb8a7633b3cdd8695a75ca6b196f9e2709ae9b30b4f7b606eaba508bfe8f46de14dee5c0d663d01718ddd053dbe204475d5c1dac048f6d628019c8b4126003e4364e90121aa0d9472149590537e35858e9bcecadb9a1f2504ec78ea8d09772c992a7a12e31a8850510ca726ea3c1231f778b51d8818b8694be37f4656bd6f3896f6c19f5e9aef74f55d6b44071bdf1ed9dbe9b26e0b124f28db5d32dc877fbdc63d1b51f62997b83877e46785051df7cf4230c82b1007251cd4f3ccdf204103f99b27c5cd48b3ed529702d89e78cdca05cf52d0d99b99c9e9f479c537a578e47194c9912e7df890f15ec671f7ebb6d304d3e834"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8c1a2b91e9d9fbe87865fc4e6b478290d1e4b189866912508402aa311b953f7d4340fdcafe8f78d76c4a3d6fdd7a387fb38cc507ba6bf383743c8f6aa404d97007d60911622a8b96971cb3956a1be3f3c5e49501048cff335130c9184b78e3913d47ba8a69ce8b457910c69369a1b4ee05ccbb0bb17070efdccb94ea8ffa4f683356b1656485f73b19f7b6d1669b55bc28bbc37b7b0eaf88cacc8c019aad99778c032858ce1da532ce2b039294c8ed0660d20b6bf2019bb864e43623d600b83a1fe09ec5d7a6c434ff42fb3f2c08eda52c1ea033dd757db02159188f1b6383f93e1ccddc027bcaf77ed85303fa86644b2164bf99ebb394e0d25298b28e98da79303621d0b188bb2dc65aa19cd14ddbe0edc1b288fb46daac7db10d49bbafe28acb9e1188331978562fba048badc2f72b942d54c23cddb895250dd590df62f4cd184df7ed6ee88ee82b01eceadc939d822c176cd16f21b9cee6efe6cc4cd7b3b62fcefc83cf4a546c69a81668622e51a11a5b728b7689f4e16692e5d2c7e5b70d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b42bcbbd1403e77665fd47c2199d5d962ec7b224c00a30367d482f3f5beda989f72ba20822a46f5c28e9b5524de1ed6f3efb390a4c0fc222047f3a238a1b53ce6c4f2debf4fb4d92a8e1ede0895c39545c7a3fe07148c8c5944ba76a57315fc814f0c2a08d8627af126c467f281643d648128183379e90f99e97bbdb0acf2ed03f4ed38c61df3ced83a195b92ae786f2a81ed2bd6d1f33a7b1233c5ab13380621950fb27fbcaf63ecdc703bed0b1a58b1d36f84914be476e857a861bad98d35b248fba6afe10e410b93435e5854530f07d5d0c375fa6ee5cb8b306c2e40ce5eeadc16ba8fe40d7bbf31ff9ae2f70b458a8db46f4faf6373ee3cb0e5398b5db53b65bc8b0e4b336dd22de54c7e8e3b09eda2d33bbe53daf8626e63d16808427359cfc8076f07259772f00cfed32a6c1466b1fa1847bd9e7bbcd68b6ca9e8ea8b577985bd107bf1752353390656784f92003d43fb585ef2a4137c7f83cdad4bf3fe1eeed2cf76c79c0bf2cc322950f6ff0a98a3c68f83d7a9dff5d87420295c18c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8a8634d606e5c507f60bc6f932db58af00b8b057132eb1148b278ad00be6e595893982b2f248a3b098dc58dc751bf42094ac236874bcb4b40f95e56f07f1267e559d2bdcf316af97dbb6c9b2356fd7eccf47698190dbe3a116a24ed7a09eb2d51314c8272127f9a5960158ad8c771489aac374b9ed43cc4d85737b808f49fbfaba2fcfe044a526fa067401bf6c4e8b3d89a527dd2340983ec0fe0301a00857726ba5144b8fe1bb6d995c82455b04ddb6dca1c02e1e3cf0086f95e6d51420891231f5422bd16cc84f41705451d5dac7725029e9a4e4a1d1a7d0dec7126e1bdba68dc32fcf5a2ba9d2893d2732847b42659c68da741c3eba87bfc6f127edfaa1ec5c05ffab1ea2d9f412600f0016540f07387b4146c1774a9a0230c23b1ecc8c14ddff0ac8b12bf47b64fe9c7c3c2bc0ae59d1c22d1e1790d88edb1c6d31d90c7996dccca9b91e3da10cf185cd36a35267acd92e13909cae9ae19440f142fb270496396b983c79963a07013a3bf089fad02334c1f76bea4a8dd8578db9174b22d0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4efcc5b2b023e2347dd71bd948cb661534e1bfd77fa55e768b9ec3edf20709786ce113b6c9026448e97808d098d33590488028c098b0d7f5719dc39c2cca636d9cf888230a803c75c1a9a4a2c884ebf19d7bbbe21e62f0b3ea8dba5706c98027b3fdc0a6429578fc2ed02625f9bb9c9d3f193ba98b78c510fe7e7beb42513e76d84b72b49abce43d33e23aa25d8038bdadbc3b115dae29d4b4e4616108c9c1727f14bbaee73ca32f8bf4511cf45959c2ad217bceb544f9ad7fc69344a6305680723dc1f18de7d81f2fe49c2d058f9de6b76dd8ae7d94dbb0fa0a54d253d51ad4b7ceb939a239eedd455e9c6645988530ba59fa7311b3ab26eba68d5cca744f57a5cad7fea64a6fd323e93e92cfcf4504b4174f3fe7fa93d68abd98b1128ca909a03fbe82bfbec0dc4017675d3fb54a39ded1e00f93fff69b9374c280bf124ae1a0928ec39bc2a650c345a9192221c172f2a3d22301db276e32e78dcf75dbb3569f9ca45b9c5db35d766910bb8d644a1a3ef02609e42a586e2c9096fdf3fa9d73"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "70e063e00143ae6836b44a35a084218baea5bcc469be89df6a63cd58de6b40f4718d6b7517afba52a459ce12dddd06cf9e3ff41533e7df2300119af7fb5fe943b133d548695860c4598fb418b278899e4e0e5084d785f468b6cfd9945af926ad6509e7b6cc0482dc0d2b8d1201cbabb619fa8aef07d9700ed0e97062604574aae8bdd9ae2eaead2a22be6aca035f56b25f419ea378dc4bf6cdce24906c62facbe2617804b54c83d35c651d14d5f93e4416a4ad9ffb0784e292f7813af00dffc5971c1f6ef6725754ca06aa116a92cde6088f95ccc8c5ae19a821fce9c316b2c74f07baf29511f3f608e3e8a2c276043e2631a1fc651d622754384ffc10045883b93675c7e4aa8453692b0e984b12c213f31a225c77d28fdac426aefc523f8c5e55512c3a44f4e75b9bc04da2befdae590f09463a0d0fc417a4ae8eb31aaa5820324450b0dddcf8a9b06bb066ccb333a4bf445dbd10c025333154752ac0e919f714deb58ec58f38742fd3379754336ce9944674573cafa81bfcbd71e49beb5ecd"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "889989d3df5ae514b1bc95c5231248b30e38d08e48b88ee8270db52c2cf65427b3f7c59ffb718965849e774e40370587dc37fe4de5eafe74865e8c84ecc7a64fd3ffd657c309db28516100f7b57e70c557302e49f612f185f11540d1cee57f643ed976fcef5c71e0c1db38d12c621b8c80e7cb2a02406ffd728cb3029c23d402343f3040d4fbc0cd2439392a93d0492fd90a89176cd72e6b8a434cef5ac4511ca14d4b7d2dee0937bbf5daadee6a1bafecfad41c000f06f72f73c6426fd540d59b0153934fd059e2dec7a6dcb29f64133b856c3b18ee5531998870f3cec2c375c44060778adc1b159e9411bf43f391f0eb82c20e8ea6c6ffc60c4a0bf27fa82e5f79857ac58de7107472670292c66337781070e562da9bbe023d2396d5f75b852551d721f8aa1a737918db641520809e0be68f5aae43994d6666d31805431b9fa146251424600fa08466622e970f520b4bf5a903e329f21c1c74945cd6898f2f8464eb6b48da5af543bf1937395adb0e4e6b4ec0f11c9ffaf0071a453db37d6e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b81df2a5f0d8b8d3c5cd1c644f3e110597fd1d1abfc186f4c8012a6247c8102cae07155a7ad2edccf8e6c505e7a4ff0d29e34c8a5ff25aa25e7be34306844f49bb6d90e0d8a7ae3191dac814f00a2c41f6e2eb8122c199d38189770721b4dd0737286ca4456cc771709f23b198c936802c40f8061e6c971963878bde111f3c1f3e1a6503c5e58ddebd395966eb100e6882e71aee84b589e23278f838251092da897ba9ca862cf9c4d20cb20bd0094273f9cdb28164ba3229bb121b3965a02597919b7c75a93ca7e54c2a1a436a7172be4197d6819ecb4b71eab5b37d58600280951d6bb813f7cc5df3929d5b02860f024995311097e42554bb7083e613ba519517abb87ffdc39a0e5f4e4d4dc2d89e3c1b37f98166e80bff7be83f9477211b4ec8f45d8fa99b0dc836101c5cfb385072793698394310ba85772827c4c0774ad917b40fed0418864bff70be1b63fe4f401c411de9e4b57be72baeba53cffb807a7a9eb9c2b4f91049114823ad1abb83787b5d160787cf5d57d97dcfe95c44189f"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0d6eb76e1cc70a4a16d760c0a518defa2bb0987e2d43d8d294a55c9d60507a62236be3a6ae0098a0b28bf7030b373242ccccb88e4f5d4ce3567d8c6ebbf726ebcecb4ef0b26a696b68e59596e104864e5c7c985342e93bb40faa0bb1cde596556951431af93258664c1c1a0dd44e620b2ce0bed8a37014c460c829e0ca104e66cc5a5566394b3a43e21661e5d5fc0497f52d0d8a1c6ae3a57cb689d75e6d94be30c756e9b4d6b7f497a60a897b83c289f6abccd133b63837cee0c2ddba2b2092c29d96831fb14175dc84dd1c5dd1cf42338225d3be6379dc2f0b51b140f5407baac7177bad2de991ca6ed246b53c94381aaca8a299569fd664234d4fe928086383fd50c2af8b91909bf74a5fcf2e2ef30959b7fc0ccfa5d41953e2f1d3886f77ea6f145550b99b0efa3212d2a927db2b3f133a9c45ff5038cf5321fba0dfdbcb8a6abfbc65a2484692c1a89f49a39d00844fc2b4c6d488dc78da5045be8b560228c1e9c93f8f3613555d15e7e39bb5f4160d6e8463ad6b2cedb4174c4813c8d0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3bf6856f73f6ef422be2e247ca197d3d7ea3c8aac7c12af4e26ab047eb7f8997a97a3b6afbea78dce4ad26aef24568640643293f338dc2a0b867ffd71b9e9a30e9286aaf10281df870d2413b20737eb8673ebe3479685459ebac4c30c123291d9eda00cfd580eea9e77c88087185b72fe6b3b0ea201d9b770f74e24595fc02d40db9356ae20d226f9fc09e59e3f7f760cc3aa855da72d510fbb8ce1e6586588f3e79a64bbfb2ce1983d813fa1ffb5890a5e59c8066842f1bde986b7f1af334cdc1db4d97b793d631d1dc67fd13207198106f58bf80dc1188fe571507b80cf4ca18ba4cf7b7953e937884344d4d8f525db151cd5f2bbd856bd3543fd5cf71bc7e5a45e10553dd1ae47d0cf5947e8dfdc8fa174f6642dfd5e3f4ed300d7571ea31c28f14bcb37dfc6e98ee6b1162d72ee1eab9ad21f4e976510178b6ded5d637b1245fdc48458f6928088d4fd792532144f737a9d9fb157fd22225a98e0a38e8197d4c7af95e2eadad8235ee0800a5ce584257035a6759ee0d70e7216c06b6ad51"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3428832b0a12ef303ea4510428a001d6c54d3c3cb4008cd07f57a3b73acd1fcbcef9d29f84a4ca1b70701bbd193598aad70e7d64d187da76bac023ff909b338ca75cc5fa7de2eadff33e377814de682aaff232975a1fb1c36e401fc40c4ea61941d7e6d36af36ae0bf30127f2d05fdbf95c8f0e80a27300373c055e3f5aeddb48b57936dedfa58a3712a2041580abfed8d214ee35e08a5c2d06e9bd9487112ea9862c56eb2eed3f5ef166bfb67bb76ddbb1ab56fa60e7e16a34f8d2dae992a255ba12a154130eb07c8cfa6c2d23331c043332c287528239b7b138f7787db620c3c908ba150dfbbf712a51d5e56bd139824ce046c598ba323ed3669021308b76d70925fdc7461059eaabb4c6776280bf985c34f1bc035e65024629f47c2026ec2c9242d840b037aa4c634659bbef8283c39785ccb596185689abec72e7ed527fce49264487cb40423fea92fec60bb547695abba011b862db538684fff0c77823b0df95ef1396dd93a5189c158c7a845682848455b73b8822a9c27b8a3e789c98c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "264ab320b777d6c33b56c4a61d1beec9d4191024268a32d3ec83c247bd34bf55aa60660adf5d7480d1082237ee5515692e6002051900b87ed499ed879d7970028d308aab51496864f2d87d3ce95559b24646be209921dd147546203bbc38fb13f38120c4fa5cbdf5b9e39cebe2034588329dd0e2e393caf14d17135ce467397ff71db128316a7220561c6714e0abaa088dac39f98cfec71f14f6b3bb11848a4809240839eafb0b9695967ed8e9ea0b7b2fea9ad6a60c38005e3ce36aa38a4d2fb974e57a6482ea47a22b31cbf9ecd73ea7d63a4d5321dabdb1d9a1b66baa754805322040807982cc4a0fcaa1b30b13e3b8b1675e190c76e7613db3e57f199964d85ef6b8a169b0d70304355fa1633097407eb30e5c5ec6bb2e356b79d74e8d7a516e1cfa1e105c4e9409dc87ca041840b639668ba9819f3150929d2114ab54fed418fc940edd030c481292c90070542cacb0a7efce531f69ba818447fbced8c622524b2e6fe57c466345c2b74e7c6effe9d9a092e0c5a6b1b7f36b11bd2afb58"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b6921141cacd717d45fba03ff01be38cccfab166c66121177ba660551efc193ab187baa767d12936d1b07fa736240b24e8c7f6bc02b10d82eda0c20b80c591ded6d27abc97f0640147e7c7bf8dca3bb250c993efd3de1f1f58b3e6d5baeb0652472af89d3a08dd8ff39bb4550eb2bf370d6c4f79d0f093c8e3d99953414a5f92593e00448130bf6b2466212d108cc0cd01621658c401cc55700a4e51da8d02ca634cc2560dec5210f28bfae4bcbcc62ffa10569491ad79e9a1b383b55291b8e9b431c51b0afad99eb5cddf015c7d91930c99dd7c47708f1e254ea1c8c09c10c796514478634a9a5c8ad87f6244903c59ca5cc374fb52b244c002dcf39f675caef15bd1329f6180006106111a1e91d4d9c7ae56d065d36fb9843d74b7f4fa8a789cebae586c072359002fb0c3698bfb74439d561f093587fcbc09759b60964578c3150fbfc1823c76804d6e643d2d67c0ec6fd1408d3a7e0ff92527d8c857a92f3ae4400b4312db163ac889b0634f424ee4fa55781e46219ea25b1bc08ddfd959"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6467d159f5a3bcf671e1c4442e5f1455533866ec8053a788b7e15a0fdaa7d62dc93e66a5d9d9c85c11bd6bcef389174caa3aa9d54ad3978963bf69b5ab503e6243ebb515adc2bc45bdd6126446095d0c0bfd7632bcd8168147b141007592b1f1fdc8e6fb826094858685f627bf321457a8cd9df9c7290baaee6480841a5f2c6092a084a52f0abb5edc8a4cf750494b8d494f69b3efa970378ebe6846fb83ec22ce56ae8c2146ece552925d2f3eecea726d02f56ffc23c6010b52b5240119ea326349bbbfca1c799dbc5c24125f2c41fa21718dc5549906c6bccb748e10189d6ce73bf89158b47e6e44f20f95d3684cc710859e61d878e540a53de45388e98fa1a1acc92283ba3790d7b52b22e9ed671c5b661ae33ffcc924825efb90962b430e91f468b9ffae07e0bca510441b73db302296a170d64e8e024170bfd0f5396a369080c4ae8e7a3d23a91b021e100e33a2a1c1f303252e63c62b59aa797f5e61b453c45dcbd69ea14f9e8eea4346d7c4957740d868860d7ca554ab88bc47b0058b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "16669d358f0681b0f7f54c5840192dbfc462bbda4e2e13ebcb23cfd554f1454f616d156a28fe5a2ad2690897a1d6f44b4579407eb7486fd19b5f643a599eaade6bb6197627f38b7fc18eb6e42fdedf030cd4cfa30587e3100302aa37e6840196e1d48be48da0f51e9f92ead2cfa8693b38cb2a732a3fcbb27d2aac903a594c567c2ec8249c97ebc89747047a5315f8b5493c732859e5793672548eaf0161156ff0e96fa7a6d4085aec19c4a218958686746eb0a40d9a6336809ea435e6b45c4ea97b771db37b514415b86d57900c59ceaf4541e0b53f786332ec055bfecc1e14ffe67dcf41e9350802416f31b3ec0654b87db474bd4c3143418de724eaeb74b95312cfc6bb64659a2e537c544673f9ede21dd5e343c15ca7a74478d06951d010acf69a6befbb224262c95c4ae70760d396958fc3ececf8a8c3c42944575e4f4cea5d94dfc1c93abf18aa8a9ff50b96615e8aa8c8649efbfb69e0d1401c0fad73376a589790aca696ee8f92cdf8680a9a5b9a1fdea7260392d9c7c85262af7fd2"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "33eeef2f8424d783c321bf75d1b30a57454cf54d5a9c43256db187a70bd58d0a807d807c48ef1f15bbb06d7e908f2160cf36f14411360de927b86bbfa9c726fb859ba05fbcf1614f3f26039815b8663fa715c842ea5613e1322164b37a9e7dd521b1dc3b4cdcdf2787b4aed9853bd1425e951bb16cef49d34fac2c792184255eab68e8c23118baa26a7084ac59b0ca699cf2476689e0bf28dc7b5c7fee4538c0926cc394579e8d20caa0de2548ce9f909abbe6a99cdf4e2ddd7ba91becb620b16262609b07cc2dd9dc7e9594ada4c899de7808633955a40eb3cbe7cebfc503e0a4aa9e89a738ab86033724f5cac153d4fb851b73b6857bfb569cee78c849bf5905cbe09e3bbbeaa5db4b2f13b911706aa350403b6288b53b570ea1223e875343f3f1e4ad2da3755007dcb7cea413dd7d3f8b5a995039152ebaf5617d6e40d01424834c6cbc352b2f76a6b763d8be63013f87741232f6b4c4c67f23fdfef08a4362bb16531dbefd3c7ca514e78ef0b8b7837e5614558c28dfd6fa8c4ad6f11a2b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "671cd766a3875e4734591173bfde1e2865b532f48ceb2d8af037335cf1808c53259b3302c883083c52a28d35126969f71f3fa354c1228627046323664a5cce06d58b7b9a947dfd0cc0c44f4f0e26ccace7fa1b7c3b219101a022c6cc4b6b7579cfb7b187d1d56c7d6060c39b248205403b8f64f67a8521934ffd53fe80fd92be28b87ec4bfb602edf08534eb69c77c0dcef1a9912a684e685e610e58d58b03b000bc7f82253ec251edf239b88bbd43884192607f947c66cfbc3b43b10f0e6d1586998b86834f39522ca9fb30232ce9a7715045cb02bb2bf232d5615afd8af0fc5e3c4253f912a7015428246dcf73f1e416860570c3484c561730c852db31f9dd3f3515c315cfee97026e80115cd238b11208772077f3c8e45d49f0d19765268e12d0b17c077a937a3606dada3077f4789a85b29000cc45c6591e44e73174d4ef47bd417fc67ab658f9ae179d2403495cd50e488d679cb062cf5b193093bc6dd101bc31334fc5abd8ad3fe8383f5ed14f9b148e6c4f7d390ae38920da2e10f070"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0679679d5be320641d3f545816d0b04741dcecbe8a6c0d1af3ed2faf80449ed184edc4d1b58c54173a5b26f27ce50d8e6562d9dfa425cd732fc08f47eab900060dfa975b2b4a7b30403557950cbbad3414e61cd7fc004ab1ad7658840d9eb5d001d82fa8ab862ccac8eb2a96fea79fb58cdb05a0e8d601e95fdaaed3c4362d1d6a4e8a396668f9a5d119ca32e4a1c926563231e39bb8d3966f2d986d8ecec22f361c7430636bba2031c60a8eab06ae56d3c491a301a3a5be0e0e0a1daca0f0c90945c2b81d0c873e4eae4b1790c61720f0f7df2d56b9c3a21216d604ce550c547e75bc59c401ef1ea588aaf43b7a17bccbceaa47cc62090df5a7d5a0e908c25d589d54be59b2800a5f6ad29599a01a51b82426528f311824e801babe52f2ca2fb058006f61c7e50b621fd44d4d0fe5e4cf92b48afbf6c37254b82100685c6f57b0ff32ad9a17240788366586a5c3a9458bb5169026cde4f703373c7895b3c86173ea9f24ac89e7a218bea90c1092aebf4cfe7387fcd61fd1f13f3230193a009d"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5af6ce6cd7d8cba3c9be3478cb3ffb94b16c6e6880a2667790cfb8818ac081edd53d49cae910f9e3461b18087504525fe0a97f8d6536829eeb16b0311bc0a07b8ffb061b8d749894b0ac1628a9d8bbe62f69fd1b19222483980145ef76be38f6b497fc1749387f99da7fb5cd0ab7e1a6a186a199ca9f86902c08fb495b5458198bbfa57637cf86fb4b12f7b8e59e0af3336e2fbb2f82cf36193a7c06601b010387e86ef6eeaa5aaf7be0a1b9bcb4a23cfff0fec5f3ab645cf9ae47569cd15b55811fb65be2fb83f4c2f376419fbc6d8a2e4c7901a97c660a05cc9beb925a7dacd91bc97eaab1a13f3728187779635c6b9f706e59a1589ca2974fd1195cc07528a024aa07624aec1b0fa39851e77fa67d36cc11552f4c3c91dad62aba44b989baa54a4dab606559b637b6fae9eab10af9ab5aa156b2bbb169a3a8df4bf546aebcbfb87b620e3aa4530e29b9a4a2e18d859db2c6ac8378ea9b36c3c83d292dd6db85a3e7a5f2580d2615027db3731d80c43c917c2771667f2f8fc2a105223fdcbb"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "369197d34d2131d501babcfb49f789ef8ead12e732279f06d99e87336d840294a40ba22f7f303a4dd2738744e22779ef753ae9eb7bb996c1a10f5e70702d4688334319ed10f9d5159db9f4f58b3a7ad43ec531cfa9238e3e68b63551f4809f6619bded70a38d70b7fe62e892172d1994be13dde2b2c4ac86fe2ef5897412cd665ebb9e26d7d450b05bffa1d201c460fe38ec76b80c7a3671be4847535226ac9b8d8cbd3ff0df537eadde670444cc61c88724178cb4513df04e10c5f0e5ae6d123bf8f966d7cf777eb4140a3d10146ee687d460414f6c883184292a9e3bf052526433d9053957818188a2ee0a6ed8a0f2a4db321123a367d2424960ac462bcf109f65861cb62451066b7aefb5283a6ae50bef219d151d9f23df8f66fc0a8128219770fbaad551b4c7b02c6b3e20380f1e65182c2db933fc5152da8f22b3372dd97f454230b3fabe4edda79562147df5403824d6f44ba5ba00f8649db460fdd29c9b67d32b0d88d56af66f06272a401bf872ec639d5c79acbc020e930095d52f4c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "935c94aff85633cf56d8e3dc3f58edf03cc95c14e721d2f311f944999b8b5c413f37a5ab1f3ef809683a436d3efe95a679828b8bf6f2d40b17b553cbfa7f32d3d9cbb6a99f8f41efa09a4bd2d17111277be2121c2d85da600bc7ea8f26572bd70d9b66c02a89748f0d8e14520c0696b7f0d18521a632dc9620c19d411278b6a13eaeab0aa84275aea8f548a8ca25b8d59775e61ea2cd4eacaab836337cd3656629c6d896ed289a14c109a4019b8897c9b6996ff7b20a2a1db2a58ce5728a49806d2630b8b64d985be2c2ef14c8b791269bc387355f646ddc19db25cf64d2b2b6eba30bb007959cfed2cac0292dbd207126adc90b8758a65094068fdbec21ff2db53aaf969692e7d0ae22ac850f853b2892290ba6f198aa6754e713f549172d154220fcd6996deefdbb14c9329b015448060aa0152a08b4d1a5e32d6fc5bb60a411ba8b206fecbedafa9883a3bd5d9fa905119656563df1d2d08c24cca881a6ab2222440b64bc12a859a9d20c7f9ea02322c436003c55723cf8678dbc8303f97c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "71601b43bc8ce6f6ea74985843de5a2c9f71ffa37bde9aac20c59abb025b0dbec4cd8d3623b515f0d098803cfa01564a2d319c93d3acbb5e3603f53e019ce2cd2975905f9faed64ea4756254bd064985e5245d051ba7756d4b1eedf928f9552e9854b0626639702d3ec0c40c2346af7572e86c128d1aea0ca218e63c3bdeccf290ea995bc2a0bc7eb1229395ebc6b9f8f9b14f3d5c1191bb6738ca1d250965cc80c73b3fbcef29d08767038c5c9ab006b100bbfac35e15f35698f6f8c6a1ff3c9039bf4ac984e2429540818632bd02015552e9757f363e8317fcf8998a55154f6161b67e00910cbc736daf7fe738443a3ace0763fd6505cfcaf11368dbe5d585206ca41d76e39feb68519d309dd92a54dfec5791311f5c00bd0bdc7fc5f2f47d558f51a5f3cc2c86c33958d118dfeefb8b531fd4142892e28ccbb2c574b6c115169981af4c3ce6e019fa27c2efe4aa34c0ef104e16c7f02a3b7bd46390039c7d4ccc6b27deb5f6796714d67af88456a8da6395e670b513f45b62ba0aac65579f"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "241332a0e34ec700cdf2297c8994ee0cfb848e6f5d6f31216524bd3d40b1539ee5d4955d405497fbf19f9b3681306408a4ef5eba87e75799dae8e86ab050b7e78ebbe9a2be1e02f9cec519a51e7880a7f653a8327275bf9a2a298678493df013d3c3a191372f5f84aeed7abf72697ade3e02d521655d2d79003932b92e26ec22a9260606954ed32c536015a8d5306de8354fec6d51b48a0f258e5742eeff0d2c76b86bdec0b42a6606ae043e86b2de8f4242be7ef65b9ce60fe4f798a8aa19f947aea9ef40fb4a467d7c5413d526aa9491ac9a98f9e6342a154a99264ef601293cd2d4a979ffb5dbb5fcf79ee727f87f9cf7cc6570dd88d60816232eaa57dd75a7f0ffc8160f65715fc12508fbf00134964968d33dd30742e93107eb74c3721cf6615fff5ba1566844ad6859e028ce769823f037a6205edadce32f3d38bf778d47c36eaa67a36cb53f572b1beb90622e5217b0833de3e6f8000adea76d4543c803aa707932105724706ca4db008c644336a89b3ae8f196b7f2b3ae306e18176c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "60aa59b8254b47199db7b29de45c02247610f3cf9cadc3f46c969aaf36ea1ecfd7aa2c6cf626a5ca11c275485818b2a433e9648c3dd8f6e100d530b215e107bda795ea13bdd3aed87b5edda40a5bb0105ef3731b44341b6a3300409db7b1bf2dea3b84507bd5fa0d7a11709ddb106df8fddf1a9625c64552b875ea96d5ab33820b9acc94a30f37e8817ba1d757c1555795cc82a26c6adea36676eac2934dd3d54e1bb0fca770f6051c108de1e8cc04c15306d94b088a0ebfafeb93bce91e283ef6b4ef88ee8abbfe549eaf2491f23e3ae13d3319c73330237e06d2d00989cbd9d9c8a095e82534e14845caaa66599d996df6b583c22c3e73f747c5e597b6263efd3d484fa75e227873f50c993eff26e14bca16e2df14098854167f0de73a157df996d0beb2aeb6750b5743b0a9f4d685ee8cfa5df01a4b924a679d14919d2753f8935b82ba4e2e4670097cf11bcd59a613b5f34a2963dc56f59f25f2b8b91e9a00a2cecee8b488d860044dc7e10f82037030d62d48e028022e7c3774bf3c25ca"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0d814684d79c28bc169da20859fef117d2d6c98a9c7d52b788d972fc098db62d46f52ba2b5083cc7de5cff0658d4266c113a8b35cb3bf04061d4c6ba6b7b4cd67eeb48d56101555e4fb556a6e90d513ebe468eed8ef0202118998b2a1c0d9879b14367f21d9b4889b9f2b41cd260d95f540dd8489b78ddec27999ba507da902f60fe1dca5f7fef00a85829166a1839162b8e61436bf6723a136d765581963b812b0005b4cbda844cd76c1054c87f69641d5268abe4991afa2fd98dead30ba26d747aedebf45a96bd1002aa3b8c86cbbadd86124817595f123a39f9cf3fd26543afe54c6fcfe170060af7aa096ee2aa16e206303f8579554b7bb1f412062eecd486219c94798737e9ff75ca2c1f34cd03182c9431382f0e12cc7efa13b1c5ad367f34ae84af42b4614a7eac8ac7f1ca10695b88bf6ef17006f06975dfb4fd02731d5cd8a6e429515c4730d0aec054b3533d5d429150fc9714665e3881c25f5850fcfb3e8dae79c364d58aeaf2bcb0ee5d899af92adc93d632eacfe529ff57a0f2"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "550ce3e78b5e1301a0b375e5c6bb6ceff056689221188d00c6116eba6920eb8c6aafab5bcc11e52984e05f68920d44be9dc2356617d3e7ada79d51865885262defae63a4d34b8c003ef5ff324b59ed6657dba99765ae425ed2c9bdcf11f41ae0164a44c1c41d98cafc66ff4e916390c42c82244196887d18121eae27b6e21c57354b0d37e160f324b95e790956a5093a9283dfe9a72922cdfde37d15bc317bd05909ed8d1c8dbcbf600fda9d26c810da486a865887191e1bfbb21a68c17c217fc3f8aa2efde650fc8ccd3fe5f6d7270231ab0a97e3d5f3b63981e09d0b8201ceb649505346ab22f664b9b6a63ab088bf4ea01fa26142ea3795161f933164bfc4e2412a2961bc09ae13257df7171cedfd2fb48e5a61034a2494b3bf70dc51a3577de4a948bc0bf35036b0496cf79c9b4d1bae0e9184068260189a6b5531715dd47b9e4f011622306ae7cccd7743eb42b4748fdf46bc5e3285373b385b5e38185d9990dec73133a9b88bd3d7ef0cda141f2c6704ae967af791056ff249c3ddb7ae"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3b2eb94128068de15497d0fb6d8612fa6b900a7c8d38512eea2c579b9f62c45d1bd198ecbc5b2facd875bc0291b6df8de78fc3367529d2e36996f14017f3ef71883d3b95f2525f62ae32d294a170f664d3ce1cf5a5cfed4df8b5c658e45ed65a606b238349cf1cd53d6f74278dd8e0d898c1375f007b8d2777889a104735ab7306df6751d9539447e86bc106e83ce6ed856505e5ca3d9eb58d8f4caafe13a07e2d3670b3934f5a08d1c76f723bf2b2130fb8a99393338912bfb06fc6974bb0493a43e14549927215c4cd0aa76ca99754fcaab897f2cc7a149caf0d2692a82e91c5ff0bc9d33e2f6620544b7fb0734b304df20a1e4389f1da4d8b1f40f019060708a5a05582606970a30ef75606a1cc46609615404b7689520db0dd22434052d6348c01cf8d7a2bf80e19b1799e70d049cdca517f262f754e71f000bc0f83bf9fc59fe3865a4e75f275d514cced20cacf10bdba843b824bbc1c9c9c22e4a8e234be197cf90575f132e1c53cac7d87979a84c612b6ea0c2f0f1cd1da0559661e73"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6496f96674d13a493992dcf6193b557680962c4152826f35b82befb713a5e86b09ac350b36a4b27a730112b91faffd84eef3e032628e5a06e98600e49665c9755b2f48161edafbc9ce527e3403ca919e1614708a7ab697a20a398233fa23f32ca77a9c81e16bddcc4058015518258bd48b955fa81cafa34282bb5e6d42bbd1c82fc30ad3a7aeb1d4381cb2ef951da28941c4b9617be518dd3616a0472669c25ed43acfb5f55e58a87fa6181337efc97256635e7c678f099c2d62f78aff5b54663061c0cb3c6c330c43e8a4c4a50a8229839ef6ca0c5943e87e9216da644aedc80c698f9eaafdf81046548bdfd119cfaf95667bebec6ce029ca0a4c96c9a17c8ef735d43af9c81bc82a9317046eb8444a765cd4cd848e61370b3014af893ef92faba5a14b4217f076872d187d8de12381ddb7e30e40abc6caffb5b267067c411f9d104dcfd1e395e2b73c67b1d884690a6a4ab58aba1e7c720c187604864440b6dd87d85188e94b0c6fd99038f299d44e161de8ca7fdbae62c3a8b6ee003afed3"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "04b2a5ace2b1f16c675b02da8a8532511a25d59b2f37031baac48b4b83bb434df89ec93799ca6e3a9125049c051a0f9ba89dec99931cab9786c2bac52b2a06a6250ddec383e3290f423ba899869b4eaab192793d15156b13cee7f7d618ba7a6acf49c992d381b59be6f020812d5a0f90d12814ebffed3a02994a91eb3f2c079f03145576869878f641ccdadfa2eb946c84c122bc198e3d343f0bbd6b041701e7a20db8460a2ca79d35923497028b6abb3d72a5a6fc4b3e9092c2118e248140ed2526ea7b5ea56a2ef04bd40ff27436c7ceb1b3b29a887988d009167dbf2b0ef5ed2191d14ad2eb2d763a7f03e0d733c1f2c27e4634063c39bbb0234189d72bc7b08695e4b0f5b88d5a16f02914c74dcdbe55e7f8a773c9a7b9c9780a2d2ff0b0ba4f9adb0bf263afdddcf2fef8046c605d9e0ceb8b3ee793c41b4b320d7c71f9835dd6a604d5216f55c9a83f67b8f5bd28de1c7b499b7ccf8640c78538c88e00edc66b2d6bcb24bc4018d1d731c05d250d4f3c7b722b38c74bae05c1bae4976a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "050789f05b63424da4d9bfb1bb9a6e816f2b77eadd4e127b2e0b2b5d16e0a85b9af3a7e42ec2b862f477261787e4b65d849254839d88165033edf953e954deb1ad3bc6a0b8e45b97ed267f8104e69ef0db1c740e5e587a4cc17f48e10fe240dee9666a4e71d7c58e54518a5b1d04cfcb9b67e76374e7974c44c88b9b4bcd7f8e5a10132745f398e3588b6dba5a4d680ea8af0311f9a3c78ecfae00217706a7d7acb187caa7883b73058015a2b9c3a663488e1a42ef143337acd5a2563feb38faba0c1c0be567481107402715ed56707d7d0015f9cdc38a9098d4aa9806f790ef826dce67bb766c3ea6547d987a00d5ea252e52d9f536ed2b7fcd39abdf93b43bb5110d3c472cc5df4da021e82ea132cee2646a302f6e5c9952c56eca12bf31d29e32bf810c9ff5c0535a9ea3264223874e1406ccd372e05c0cfd95b97cfc991a13c63178bb5ec5223e3b25e055188c77bf05d1c337617b83da328804ede26b599a76bada43cca9c3b271db2dccd7be1259cf3edbb020a4cda776084508081a24"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "9bdb19ee8de8003f29924535f141da242c069d7d5efec9c46044071834d2d7858e794591e277b87e1fdfa6b3108ec8b615fe76f3d374381562ce3624e35802730a4bfc2c54385da6eaba8903aaa8475dcadd67ace389724b59a10e7ba3bab6f332f44357c95e2e84a2741337a253bf85efb10cd9e69cc656cde704aa20681f993f2324ff323582c1feaca59ddfa26d696ae43b09832d2d34d126c40be89959dd2a353a2f3722e2e0c1cc070cc1dd0cc5e3dba9e9a7cae5a7e7bb20a58b37366c624180b2b1d77344351508a47ac5cb46277892f0a88db74daaea7a03ad8ac60a0e212ac5e18d01cc81af472d7bd905474c7596c374b6521579ecf115575eb90721c78c741bb48d4081d914b2cc9eaf9e7ff6c898b5c6d70117b2c8870713b4298bb88d7cecc3446dd4e10208c09cbe89738078f573ebac694d6da770b56900ac7e4dca41b7dafd8e3c96a63e79a28d9727a831b05169bb1debd17fab657d8b52d8f915590b3a67963ce5c5896fe6569ce4c90859cef89c79d1c9b8e48a46ee4e"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "b252d9c77e84f1274ac8019d0993427574d63a80a26c6e93b786fcc8ec699bb64306a9e425fc7fad43acf8a4fb40cc7c54bb29312430a67c0c23c79d34f2ccbbd3d196363901316bcb1fb1a7b6edbe4e457be1f9e92e272bdfd7b35310048212b8e8059d4dfcee86bedb0d7bb7bb0383d0187ae56b56851cee1f6740cad320af9fc25517d729c09ce30dfcf477a0f5fcc71c7342e99b17d831707150be963057a203b133e30adbe10c73df9079cc0d0b5b535c7a2f1e545352ac80473545143251bcc77ea46ab72f3c4be6ab4d5770020b765e900f33512ebcab8de4b9bae9ad68002abebae75773efcd84748ffe4be93ddbb736bc3cc3e5a81b5221ad4405adf4dd3f5fa9ffd5975116b56a0150fb715d22abe24e81af90455cf617d290873d14cc1b368f0fd969ad622b9bd299efb40f640507dac6bd6d4c8cc144014db6f74f71e751e7349176e549d694f68d4007ca6c51f6f58fc5a6822a3005478d5d890e1919990118ab5eb61535383c6aeebe1f514a793adae3c1a91f90dc3261279b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "73c5e90d38f0fda07b0dd538fddff64534db7e4e7f0be09b62ed828c49c616663bcf565b2cca9ea19a77a5135d3dabd86bfc831c2b03d81817aae22f4991422e228e315934e993fb134905e1aa03b3539100d9293b8f68177f4326867bd71de9fa47c8e9f37ef46e1b9f3adcc2711892ce1f1dd9f238ee8e1cf2ee0c30408179cc290dc895cd46e2d717552f0a4dbc890fb85dea92554553c50f7f93b34f52625060b290860734cee378783b32453eea66b5bdb3de41839ea69d873346c710a114848eb0e53b26715bd143fe3ea67c3303d1d238be8032242f622a030571bf4726162788004541d642de9ebf1d4ad7ae7dd84fac1c3bd5215a18d65e982bca38342df82463cf606d7c30ea3a5bca3971f78328d0e55cb0bd99594dec125e73547aa6bf4fe22edb30fbe4ac4298752673b2a4bfd592a75db98a5a6d73e26ad1de4b63ac83ba1e29215125e74908bcc888ce8590925cab290711732e4638443a6dc60e705f3c54706b5cf23a654001de4e0f0c40a0078bd6b071cffc2f9f728351"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6495b6ed3efb642c89767686ca55fc7f0296bda99a2c04cf03f269f7823de1f8da9f67d0ea773c03a9aeb41d8c56e4f0919c4f228f60d1be84dcc68f0448d95e3028c230ab5b7cd807ad8c939ac83ec77ab5ff44203a6b7ccb6e69a6ef0c902f1e70f31d480737e418b3a73b9b0bb5ab551e86ff80c3e4e9dbff385a49718d7f00b5063c4f7deabc566494314fb5297968538771e0b3a5b27a56f11f6c9f0b9f6ec644a3ebd9b6e7acf668a1e64dbd3ff84b860f91c3d4965e657804e6c5c92bf5921e10bb405f0d11740aa4f7b46a82224e0305e312cd4e17a30757eee88667f2372cb4ac971b774ef78edf1bd299cb172867352c574cfbf23a321faaef28774d65bb22b45647b9a526b7c4245b6c06f2225151401a77ecdde12e767066935c0f9cc94320d6afce02afc71d30a45344c79ea22c72a247a1be6989e27d59ae06295fc69898d5f3d2877e166b9227fc1a0172ac8e367828ba3f6db8ba29fb963a205e897fd2fe1273a6406551d9b2eb4aaf88a7178da423cdb4eda07b2e309892"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4cb5a50291ed1e9d2514f4b5c8d005d81608ec004b035336991259fa908d5977ba8c75ab7f0fe0b31dc7127f9e81441e11b1fb94ba034459622b301cfc6918d49648b74680c0dfe79e455fd7c0bbe2d9cd0cdf8d28c71b949feb817575e01e3fef84f463acbeec12f1a5eb6b5af59d021413fded81f12e792ef3b4e29d3787f561a20884dfc296fa4490c40a790db98bec78be02d6d83907385a6ae8c15f9ce8b30315e9c0d1593b0a5efe03d25745f00f507aad0e607e5c81ed05838c3b4cee63405ac6b6a6034051479cb9f40f2a6cbb0c82913277e32d5d1c9c55c63aea1110cf6ec03fd7d908083a9aeda83db8bbe72f787af3914408d82ddf9d38e80ebfc152b36ebca127f7d82cba622684d44c150d46149dd452ce322820316bfc207a3b44a614dcb0f9ceed843a8f95bc7cd540df590dcc9a451c39d8d0a9770dcd7950b339990ec5100723bf07da131bd384d6141e98e18600dd44156750db66826d65faa991180866c752858536992a16cc0c89e56dc6cbc7c0972827e586757476"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "82cc73f7a3bd65b0910b012bb8a90593f78230d0b9cc0e3ad3895271492acf1d520c231aee97e20084edde67572b4f3f4d6f42f2e9b9d262c15479a0bd176c0767b1c89fb8e7776f18ebb210d353c870e4fd2ba3c42ce8949ec0c8a5899a3b841bd4f8de8b549e6736b1f3242ddf959b637d1be3aafc4ba7c46f2cae3a16228180e33796ce759aebbcca47a64ff2cebae8bd1dee8e5cd46b602360386620fe6d4704c16e61cd4801abef4f6832c1400e99c14a7024a46ee43e3f729241ae677c128d9b5c548066a8d765afbb42fcd3b491b480e2496c5ca5cbfc1b93f4f85fc5eb3dd81d882b86376cb800398efc25389750704986e5b79d1f6a22793cfa3519e519e0cfed2ff9e4ed454f87367239cd24cce8fb5b1bb35f9ff286ed565ccb1bd41c2c98094cafec4960e59e5c75e4f03794b7ff913e848c1ff0fc5e19d61b0cecf65cd37c95658e371a8629b091ba05135ef05cf57e7ec508be6f978787d9fc7fbc109132c2fe0efb8c3fff622b600b3d3fcbe46b79db032052e2c082257a05"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "943d197f031094c5f4938c130e3b9778c44ac5708e2b1346a77a9fad73948505d9630ba4cf537e9c17bae76033c7c6687ff256967c51d4241489440041a2956efeaf7ece62c3baf68057cf72b576258c79793ba81a1f726158867ea20cf1fcb9632c7eaefa0fdfc728c193d08e57a29855f2c4577c566f48cc1e45a6b0af10c0d68dabe814574a131b8ba167e1c7495955edf33f90043c9fa5cfb312b8d55d08689ea68e2c27d1c65188bd35475053196e05cad0ce63b9432bd40770c1b1dfce8ca497a352030c1178c6865b6615103b3634562b7ab1ccb1a08204761574aed2da75478f432add1b2888e21ab9da9ce2c00259f6a4b541388bb19a48daf91135aa9b540bd362a8ce1c986bb609056f19d12e4c56b2031a3c149ceeaa767f57939cbbabf1221d486c66ab5209f29480f63b367c8619d90f5e7eb3116cb87930ffb1ad45717480f00a01c6e69541523b998835c5d81633be9b4b82d492b1d54b2e6b14da2cb33b3fae8210611fcf15009fd7ecda3e135113baac619e8b74d70b17"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1301f1131b35def827e8d8560f56d7dffcacdaf65df2200e054ab7717ca7a9f7f19a3628d8774cfaaba6a377e8b854613a4ba7c6237ab989976b0d1398753b7b66a724c91abba885fb77e908a2c6a3ad8d837f75d872eea76d7fe0d75363098a4c7af8bd831de55da3254b85dd199173c2708b191670cc659cd491eea567d633fc256134c2b47e1d1d28db03a5e8294f20a536cd7280e4fe86f750d99d41cbe5687217a55ccf7bae966caaea313258333d07fbb0b00859e5d9e21d71f190e4079ccb0026f074e7e4a984e8f478b298680470ce6338a2b25ff1da6f0aca3247c743c384d82406e44701a46a4c2e50312c11088567788d5743cd3165e3536b693e54f4c6ccc4586e462cbe4796eca57baa70b6296013d9c1c6f4e2e02a75bc6265900bd382892f4135a13ab600c764c546fea14febd51bc378bd1145c2282c94228db5e97d6ce7f29a505e46e373779b50b3856556d8907f07b61c2745ee4051d0f274947fe06eac7d4b091fd5476d6b7c54924018ad7acbdd252f1024080dd681"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "742a5c3575b6379d7166188aa6c9fe5406b157db778ee0900429d6c427fc530c4c0144a189265dc78ca14715a5a0e69995ff914fe0316e504802be88d5325af9344cc54db76e1d75030b3c41a27c8e9eef0c82d05ca92488475a109c878624133db6154799b4c2820997207389c610204f17d8c2b8d7cf61e49cef4b2a44ea88bf9c3026e29934be4afb3cff846482c5e76d0b581ce2851e4ebecf04f537e89c42f9ff29e0d8c94fa6741ec0a81fe7d3394ebef89d0cbf2824a374283a4e142ac6d7338ca1d6467df4bd97f9f6471c4e772995fceb7e34df6c7b583c73a6502677f23760369472b89e0051d6813bdb16bdfbfd1b9a49f474b29257883d218381a674fe9c245f3c419d0e0aa796e0c37c146469dc23f655a287370727da3a42e99f05595fa3f76165c6e5dbd0f0349daa60086fa30299f5e811c5ed4e957d4f52ffdc902a15fa97d2709f95f680ada1df9ac17ae1703471d00d2958f6f5642635570ec77fa1cf70c17e12d3a1202ff4106bfb7d51819f381b3c8f0d40b3a2f345"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c5f79bf21ab84e634160b5b201ef9fb0b2aa17713ce440c58e681c91ae777ad63d7ebdd1c77dbf90ce483160ed3451921df200e3eebff4a25a903e0db6c21a2e921a1423a2a23141a841444213524f36fe99386ef68ce319b9093162c475cda89a55487d975fac01318756ee64b70fc4bae1af18fc806acea41e74986716bc47a73293c5d3c55d267310744999e533904e73395f2c77fea30268f83318c6ecc657a4f4e87b239404c72798976258af3b444afa2049763e96072880f3d2a647e586ba284f0a50425a1deb8bbc0e52241d6ad589f5c20f09a2899fae574a4bd29e57b604a2214afd024a54951461af01d4f0a12f497136124bd3806244e8d8633336dd908c68ecf08435f0a97553d2943d060873411ca5ca62fe8337c526dc8146c60a0a1cbef0cf7b5818d6a2e96df207729276ced557b1fce70dde2be3a2012a6f6f20a9f94926504a593fe8dc6b04efbf559a362ec8a401772828d277d8f1abd9588441d575cf166752f57c1b50251cccb0282c75f0145df04e68da9f408b1"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3743ed858c007e5f535e567a2cb63ebd669283a40d369a06df23068afd1bf91ff4521455e45ab94b0751c4c1e648166c7ea571b415faa4311a1598c5ec0ea75472040040994ae32209ef33393f040e05646b0ab14ca0309e1bae24c0bb8ef467edd7ef74bcae2e8ac7e22f5bea0a8537a907f42ab3f6bbe61e24084642f3de68b73c979645a3d43956e7c738ae3621df707638f8b0ab0fdb854eed46e8e307c653b894393479dd1d0dc9f7317bfcc736d51af55aa036e83752a6d6433a6538c5b31900401944288fbe8209728ad1f5394ea66718161511beb70a20bb3e67a464204bd34da479617c8bea4e878c842519655dce03627d833f9b9add861d5ea89e85fc6a56e623719a163159302dc041c7c0c7c493131e09e631c297cfd00388f9bbbcd9a216a8aef364ecd579719bdd5ad40f2dfdcaa3756f574045eaf4f8b05b4b78a7294b77b420cd317f1b74e40afb649209c769d82e434842397749fc5f80b89a1cfba4d532045459179259e37d3506265fbb1b54b0e0d55a036746447dba"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7f63d99bd8bbd79dc7916069e234578e8966e7bfd0ed9b8dfa181fe5c340c7cbaa50251d4cf253346f4c4333567f754fb828e8e19399ea645e97a7006536d76198f42af8f57a03ddff688b83d481a222cd6e7f5bce75015783749a34fa5f20b2d0e17610e2c4526dfa780bca5c8d50d08b85e5377820ea657823599a32cc55d2966702e8b3f199f5dce42a2dcab5d372f6f30005e72aba34b149c89ddb14c7c7f5466902c0de4cfa2a6fcf2d297f76d9300e76ac7070091c9ff6a56bd80b9f09be64638db7c200dc455f0437009d3549f543364b03a2178bade56b1b33751752cf7cc744f2e69be572d56801e23e91e8a6f9d3260ad4d42c66cdbaa0b2252785f35500fbc7a61df87b09eaaaa4adf08cb42ed7414928f085baab1991fdbd73aa0afdf7623e14751ae28df8824711cd68c608bf6cf4829c2cc7db1159797ded24d017b9db6d284b5fa2ec7c4e22f56630b3b8779816ef0c77d6be4b3fe40cc0b286284a8773975327f535811278ebeea8530137385a8957964b33cb3489ac683b"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "661b1580ea4a54570440ff74a751624926471469166304117da3cf7c9ef2784c547f29d9c18cc3f0de876b259110180e12570868ec164492b7df971eb6640a0b8d99dfa4e40d1c0b0e10e6945428b2e7e4ab3cac129f34165bfc1e5f370390c865ee44e2e1eb011ee448cd547c6c42ced8b776c9d3e4bcc32106cf112f5ae94e01d8a662e350bd76aeae070b9ef3fdd0b8a9ba01277fd9a5b512e4e3c1a0509b725581959abb340422a0953e79002efd49b72354ed8e75999b633d399c7b7f4e6726850f05d655a600b99f0cef7716ca11a8ca98c40322a1edd15c6e090748994e967f381265705971f9d397fce9a6cb7ce5d3669ddf6c08481a1322fea8c3f030d53514927b269a49cdef8fa287985c3d6f877cdfdc221fbec2bd1f38b4c3d01fddb4ff33e872cfaee30b588102f8ebd97ecca29b695e528ab0ac4c01afa1262dd4275d8de4712a2017dbb085b24b99bfa0b1f94b3d24abd8bc91eec4ed21958602d01c85eb34c2f09c0823dc523b01098c3167de5746fdf6f2661e3c2b541c"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3e124cdc65f1d8fa0ef490cb7c23f812f28175af02b82f168e59d25e80c27678db0a49a1c4884368856a71a4b1b2f82eb6e3141d20c1afeb2f1c3ed827041c7d4e37d6a2869192f9534158813b0acb938610624de4cd410b49dca8a99ba03cbdb5095bee0f6f9b7925e7fc75d3173e19632ffcf0a9800cf75c2676fa614c8218ee996c2914d2205809a7b5bc3cfa6f90613ed68691927aa46a026bd7b2eb59d6512092d87e613cc0f0e76225ac3496051cec1e2d0c390235f814bffab11f67bceb3fcffcd03804ee6da2adf173c1abcb6d1c55960b3d4caa45be02d668ff29a063831bed22985cf74a640420beca4c08d2ba803b847ff696c364aa9610b9eed9a39581f382e76cae1fbcdcd80372499292e302f662e19b36224cab65378dadb6859d9daa4fccc239a61df8e7e288d7f4f4d6332764ffd3790fef9eb64b8c0c14c781f65507570ad29d7afb4689919d3cd674a119bd703cb46e9c95617aac644d71827707f11ce9886ec67211a68869bbfe8ef7b5bfb6af446e75d87aa6d12dcf"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "67a7cf917c469d5b4e5c5a6ad0665feaddba9246cf577e4feb2cee49eb971cd41e50386520c3c22e351caeb8d23103f61af2a6abe15753ce14ffc8afa3a66618617b8c2397bb1b14d3c2c39037260e55b1f3f837b193bf39fa8036ff74f9a7adbe5e6d1cc39d368cadb823ac1f969ccfeae89808eb383c89d514ca122f96a7d56f578a3f10e4725b152ec06002eae7bc2acda9728a3fe455dc5f639c42c09bc6517f92dc223f1f08b3367840506c80894edc65d5163fd73d20048136f10f2583c6048c7ed8e82f44d0cdfed868197884dba5ccb4ca532907eed31d3678ce82a0163f10de20e4d5b581b67cc10f7d6030d2477d17e29baf828903b25cf2f77c17d028de6df352674b288aa60a3437834d70c57d40c853df98ef1e38e6456a7cba3d8082c5c212ce08216f604a997d632e7d0f21b1b462df01bea08dd484e0a9e150574ecbf31dae214a8013c2e640a3b01b0945cfb4d0deb5c83a24438156602058b1bd6c30aace6742264f8ff7682e18529010f25c93980a5214a90d0d32dcaf"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a7f03b3383a083af9fe06879d4200e5315d5ab86056dd87ed326fbf48589f95da6b5465158e1b33099c26a962b7b5eccb81fc2962188181a167c6552f1c33ec35ef6eed346ac46b4ce31be3a1726b87387a7e5e7780900f7c0a909e6fa3a8299f5629bd8d2da3e6339c181f45d794879ed812974e5203f1cb745a1da6b34bf886928d6fef9111cea3bf64bb57057c885d8dbba5951a23781993c1670b75404b990a01d4eba230b15a65623ff2b2556077fb91d846b098e16eacf85b541cc23039e9516b465b07e2b06783019dff98420fe15caa3546e823e423c5262af7f54b6d9ed3dd854e41bd1ac9aa4dd951784714e5365d76c096395d76a647090f2348dfaed99b4ded7152beb3798da4bcb533813b653efa5789b9ba863cfe1522e5ed0de68e53b0382aee6b2b888e33482463962a3f9d817a2dbc26a070212046d5e6b80e49767cd85bac25ce2aa0d02c5ebfd4c75ab733d87408c8ef5d21baff4dbd409a4e6d5fa7c55cd4b63796ab79fbdab7587bf234f0690d8e9cd45baf4857ab0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "995096c669017cf835c7be99440523256d5e7c11c06af56032d785d521b68272771ccbd2b403d7ad18d73905a63758ae3a5a5edf49ecac57299ae74987f79417b9880e66a0d9893e29f31d609ab1622cb357a8d19d95d037f5d19c41dcb586111355e7fe91dd51959beca4dc689b36a7f39684753e9284102afb229d50b022427925c2bd4dfb15fde2d2a18f7df3069fb97605e02a341e325b0bf163fd6eef8f7013b4aba1e6f3a311631f5cae20bd48fdc3246e63215838136c402894bcdf1179c05e11a76adb92686e3afecea8ede7456d05f62b7a04983c46fae7d2718515e875a11a261d54d30ea4e8f4db75600a1af0c884635164aa72bc129c1ce543dcaedfe62f7ffd72804db58066613c2235fb4095869975196c1d5f423207c8de777673832aac6e129f7532e2fc16d7034a1255f378c504ab10d149e8d2e79232b01f6261fe8cd73f9f89c277aaf38ddb71ca92194fcd569802a65f4325a4f6aa5e56e0bc5cf2156c04ec0aa9dc63278ae48de9a1657dbb62153c1392e96d551630"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4205aa36ca11b03b644339d978e1b02228e2ad387aabba21fc649a8c75fd9a1a4f29e91b4e607b4b5e3b86794cf9242dec5509bb30e456e4f5dcc57e83028c60b461f748b1d7e79c8fa4f934ab117114956da7a2693a4023d349a68a4cfa0257486d42a0b6c348a9f77b2eb5d8822569e3dea0cb95c66d68b7c955e98a9df4e921bb2731855f35f0327142029f8ef4306d42481406de9deba401b31481597653cca1234cd20d6cf0341292362a4402dad4ee4807b38728b265ed0d10d7707c8562f14b6eb890c5a1d427725d39f10802c7e865638772a9e0709641a22809633b9ae19bcf052b40fbed8a00531e869761a6312216d69fad97a7f58bb20be27cfe75a776a45e207b6cf1a10215da2c6ef89f540006a2177c840493c83fdf616ac8c9cd647a415532ada9cefe067a81393df8bb94a3449ef74bdaaae0b120165f4a64703d7daa14e8dd13fe779b794699ad57b593ffdec9202f9852c33a4336cbc0223e2117b37118bf9fc4fa6204a7e584db27cb009b800915b4618548d24b3b30"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8100d8da45f6b2d77ee4c5c5b6fc8c617d85867eefcb861206a991f50638b0a582908846c8c10eab4b694850b6e440d85fc256fdde3fc4092c262041b28e1daf88a54f48c0bcb5c17d9e76ebf5f86c87e3b89478d679bfef8135cad5394a8e6211c64614f6ffc813707273b4d9496276dfe6d566582eead31eff06769b4c6ca3de97c0a622fb282c646cf3de6fcf8a12317255d724f099f1efb4a7379f47d4f13aa11d87e778cdc79784d6a6b5a2d68b9e4ea52bd507a7036c575485c8c377b8db9cf662e6eb973053b3630a94aea288191d9f26ee5fef5f10be3468c5a721421a07d9b25d5604a190d842fb3b92e70f247bb339295da253ecf1c9011d8d49d68552e192eabfa012fdacd63b9756ffd508c04e28039df08867e5d5298da5e72bfc1f0483129581b25ad3bc69204f2822fa5a34e3af4f9eedc0bb68b66a0268532cdcdf5365eb5162d05cb5619041a2f9dde7fe444fea5e9b3c524e3760ce1c633758ced22d5b98f0e1ccac9af15cf825cbe9464a5a5d45a8d1ea426f9499db8a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "118bb4ed79ee68eba200bfaf9909e1af3216904d9dad25815b2052da7d6e057c1fd8afd0929e82ec945e9dc17740790f791a1eb546dfe8d382aff418b094244382b97b8b7dc67400c99aaa5c68ecacbcb429a151ad0a77d0ebfcea781cd3093c312758c7478d4b50682702ee37f69df129f0eb6f19d80e88982700cd9bc81786fadf5f7d9d37cb07aa4ec7c863ab706c42133dbb79e34a22cce78617d86806ace0b4fb28525a1b0e8dfb8da4de2b5792531709e1632e36d8b80c5bed87e559819b5aee7613f1841e9f4b1a3caa77736eb71c9c2b190a6c6ebfe97c922b7bf3c1ebff0accf555d447812a1677d576f3a41a8bb3e8062c49481222c8c53bc00ac821c1cea8b909031f23cd1647f685260d31641177b29096f426816337b70bec98cc0d911b0f926a5c2782466af2a8cc8e8ae78243c916986bddec9169eee2f7d84a9d070ef02878a3b15204aced6dbab3c0fb6f35d07bb2514755c318e92e48010cb4ea5e7b9c073fed05a2a5dfacc4a94b0d78ab89fbc5f8746ff440dbb229a2"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1613ed80cdf3d91d6705bcb079fd15ccc29373b03f84510edb0d74b5651b91967e60738258a03ad3dafff8d83f3c18feadfb08e9a94f9f131d3038288976ef35b9c8dc41beac539dfb0fa1e9772524f512a2054e73467c8443abc599c8a58b46ec2340fc4b26f831af6e09b8d5b876596008aad2c4045fc09bdef06f445f54e36f591c73d798a6905a993177b094dfb345a55aacde1304b05cbe652a62e9f6654b24153a7cff6daae42a55272fc72a8250acdadc59f74dabefb9d321e80050ac1f211ff7946e56d14619355544058b714a000d8b4b096f56338201f22114c81370543b392725b735017a550c7f685b675263f8f9b43c1f8e8f8064764dcc34c0d581efea1647dbdff9a296f1501a1614fe9d53d52ed278a8b017215503c1e648a706c5e6c3a4eb26f5eeae804ff5ad0116fb9d2d246723eaf6533ec71d126bfe7d08273e587a025c97c4d2a55a1d850a730495af8998ed35558866bc580d7c51212e63841f33829156ca9a938aeebf3a38bf67495b686d484b02c4a151bb2661"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "906ed74270c0bdbdcf086ef69dccb51c524331e79d6186a8ad18f86c11657d77d752763141153dbbffe125f9e26c30f1d58808bb8628bd1e931262e872fb6503bc0c919b2586c4c5dc6dd53cb122086536a87541d61dc33ac6d437ea1b9a9e3f4476f7e7c3926e6985f3b8df8d7144f6a81568a04a6eae2977ecefe2664806fe144d9a174d53734be7deafc737d0a3e6e54891d85acd0fedfebb55d069cd3d3b2d6a1594ddf65cb433291ca4f2283c21a5aa4811bda25fa9a8b41ca9c5670cacf721bfd0dfbf388f683a7f87c39654d6a8c2f85196e23c915219e92189aa07f60dd6db16afa97cfbdc9413ec33f3bb98020ad58d4895f4959646727521ce4c2c0df3360fa3db123c455b65f4f0b0aa88caac6da5877b1da3c49a4fd587b3bcbf7fa0d107d69fc415842abc860c19f32dfefc8695b863468b112f0f886c8a249496c355740e07291493bb08ce9c941cd624b638b3466a4c2c51863410bd22488c5b7e00ff636f6dcde4ce7ae66614f8a283709b07f80a42739a0b2d7092031261"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "a761a8c3db6207c8385574f6ab3d42103e5c9dc941c02ffbe0dc1369900360155cb591b32ac8725b01a1d9686ab442af899751d9c4d3a8cec2cdc6725eaff56e8a13571506690cb2f26a0530dd49aa380fab93f4f0dfa7a1e6b1c8e392cb8bffcce1f5ffab5f82ba45d7dd922f082340acd1738a685abbfd598772fd4d0a03a44c9166d807364437464bc3b186733a4aca3d746ccf84a9cf512fa66f2cd73f029ea837ac15c71b2319d1adc9fe9b8e430a428c8f3f2c4b4ac525f94d56620e3c6aec7c87de0afefacd6fe8d817f25ab990ca16d4b3339f15d0fe2de6a0488901e4aa2844e42a8d63b46eced84ce33a346ace4ba03daa4f5f978df6bbd956d1d9bce89a5964da8eb72d9e3b10de99e9ba54f6d24d59d31ecccc213aaaf2d902fc8dfb2059eb2ecb3e17fcef97f8ff01aa59e4c615bcd4811afc10db1d1c04de71d0556ddca363b8a34f48d97d540b045fd0026655cf0c37c4c694fcf2423e0116165d4bbc7395d72f00f6650a787d6e36357077630974d375c2ce292ceeb568fc"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7c3599d8539a560502121ff97bedb8a1c16d10818a49408f6152ba9d914b6a852710088e5c48826a099ecbfd5cb244ba16c04a71f96663930854a64fc5ae461677dba9744fffa624e64b9919814383ed0fd947e355bd1e651c0027697c8edf76d804394f30e6598a8c805e4bd80641c81f2c78e9a7255535451186c00e963edf2ca4fc7d57dcede17b18a1a22e2241da6b71bfaf24c9abddf9a4542feca1905dd9048491a5469da8fc22e46785e534a53623fb550072472b46d0c9e6f762bb80947573e269d785f6580180bc977efcb3b9af90a974433ff7aa56674af989eff32ed8963c7b202d3332cdc0285f67bdaacb0a41c5b59da507af942d9bf59c504aed323bc22d8e214546820fb32df77e52ae9d458b1d2994006c12f31701bc09b448198956618f89eec20a2e0c916d40c26406258becab6907bcc348b46e7195734d29ba4846ff63aee05e604bc2df75cd3cdb3005f9d2573838a792e68e3cc5f2e6d447cff1c2d0324ab8819031e9eae8923478c0908b0cd2e9b80bcec076c2a0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0b5d0e26ab8bef0ea2a577c3ba6fd712e5863c3008e85f46122809262efcd65658ee490c85c7945ae06b6fa342d7dfe01aa5faa9bae877e9bb0bc0cd608670b54bf4ab8593720304e2aa0d2bd62c568cfa6bb2eef302e15769e5054e95bf7a954e8d2997c06bebfb9bb25ac6f52b7b4e79c872b425be6b731a4fb9bea7c408703c768a30f9cb455994bc42a200ef17c64f4d4d6d7269f29bffed1ba755fe4ba3233a7ad464932abf831eef5245a18bc61dfb399c7b2da6455b6e023342833b5e5c7b255c8e06fafc78266856db13317af40b6df8990f8ff37344029e731a51c937a1ca4abd66e0fe90ece58be527dda10b3e34ac0bb661135eb04fac8b90b0756bb47d2453be8ff80d05a6596a1b27c0a33f24fc79260e9dc0a6e099f6a95a22a4e083a5acb201cc654d2fc6e21cfeece62eee3270e6c6211c2025d738953e4a8d1ec7e4cee254a8d2eb446429aac5d8ac480c4305b32e566b5a017348fbe2422246f0696c9895c2a72db471e058fe15207c40ae84a46cc7ecbdbbe9cb9100c0"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "37540f8ec9398571bbb6f153c1ff17055c96373b7e75e41f75d959c0b937d635baac3ab200f7907af63bab90b7d0128d603353d5628653bd067caf644cbd4b4319adc964869e2d7933a3c4b873bd2a4b3f8c0659943058293e42963906424a2cece6504fb8cdf76c21e772ab7a0359b191177d2c2231c4e4a5453a8af346db0e91e057fbd6b70dd486caf9516fa7d6f408d10b55fefb03a5795311b0722ee2a5d40a11e29316bd6fa5ab8eb34ef1a0375c87489a8821d0ae554c91bb051b03e8b3c3f301927d8478bbd62f3f37213c734099730c582bf19095e39ece2703ad09a7af236f175706714a80be282e262e7c903c59795754e589007648b550f93d4c7bfa17d116497b258014a86fb00403f05598ad588010eaaeebc2e81f936c5a9524446323a890c69ee99fbfc6917ffde3e04a591957279c334e76dc0dbd4e37a493de9ccd9fae9f3962e5342816901771890a22437f56bc201616359ba68c041ba1daca49e4c7bed3849f9c3758b47b7f90a9e2d03a2fb116b594e28bf74eb1a2"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7e851fc3f8f1a61a6b0c121f6a59c098c88f71ea2797445ff1db5cf27b1594e14b795160d174bcadf3abdae48d901a39a177608892b4f421576064f2d07da9c5edeb90ba607062e950c2e2a89addbc46a55985d6c7aeb9be9e58a0dbe9b72e408162a87710008cbea6c28bbbf7efce153b2777b171c8fc06e293dd0d1b08cbd2bd09d7fd9d316fba544dde143955e90f22f2f65f1c81b99bee7efc8724ea97873d18bca62496c708e88d5b3cb0ce64b6308e568b5e03d80564b2b182b428e7e08b4a50ce12652027572110946c8804ffe5230c9a063eb74b7f64c792c3de430d0ec5abb89e6f1176eec2aae6f0740f1ac24db0ab779217c5bdf25f1509f21b50cc2ca1cf0895874e68e4564cc82cb270111d524e948ea627538f6d9db2e41c8cdfa7c2c505eab96085400437ffdbae4097e059b41d4a8c577a33e192c4a73f8ae51a9e7f5f8f1dc3c297b0abe204813a704b7eaf2ffcfba0d44055146c4beb9120d832e86a57a816d7c016d48dc69e6e5ef5dc55c43025967a6c6218788dda6a"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "481a84b65f97038ccbc2f835c37f207e72edf255c5c5e3d0d14c581568a1606422da5f51e73974a01ae95f13c1763699267b0842a2be727217e53cbb486cb524c04392e4eea943df6c92898c9631bb88ff52c2ddec1df6a1a4daf50b9cb0676ce16acd8f173eb0663192d2057d5360caef3e122d05414cd95f84be4fede970649f00a93567d36059c4fdd0eea32a22d18b96433f0cbde398b0de36c0ded21dab5eac71b6fb167dba28a79a191c3447cecf0944937bd6a58a511c058a681be19ec373ffb9f0cf7f47676253afd605c1e7be41a6b7428cd0510e9a7ea2249c5e0b643af6fff232e8fb99ff9ac728b32932889c8c96be9e6985ba6556a05fab4760ab0f3df599401a41e0d7f3bdc24a0188fc4ad5b7eadf65f32dd4d1c826b76b5f04a62e3f7722f10528771b1d6c78dfc559b4bce32257a4cd56754a167547f56bf985e328c02f4e65c3312d480fbf165c6b266ea1081db095a1df32d7d0a29f98ce5beb4dad78ae09774805ec58ca0eeaa9c17541dab93302c49d27bd4a1f6090"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c548eb5ab00b32b5cc200edb95a1f617fc9a2b82623da511a092c6cd7d428621016ec0e8be4ca66993a079125a4af990df598d5202f73822a5768de5c79af28487218d0f6a23960db9ea8f050b4da444a44bf116179c2d01c4e7b438ee298bb5769a8efca3bfd4492ef4f45494e1540ba279056354f5eb554193269627bca912f0e770e230d5e3671292059515d163cb52c181c160ae8b29de3e90c069cdd757d4adfd5014db2aaf8371a390d0ec6fdc19f37d78776b00b55db4d6e04e0f047ed08a3896cf69bd155e1a95f33fcff2918a58ed0b377cc46d1a09825d06799812309f6473b2a378ffdcb4e6a6d774009085f4cbeff43b542e2bee3aede395f3e0b5c878c303b6667c34c2ee6440657941638b8356318a9ab5d4a072ca83f7482ad764793add9f100377d750bce70b9d063d26ea3d8f29576de1a3795fe2be290623c119beedce6ecedc86804f73f3c210550bd582a98f6a7e86662b6461efbf0e518bf28d9100c09e44c8c78b5158197ed2ed1675291600a6442cf2c8c038fd7"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7175635076412325c1aafb617fc38754d4a33800c55f307216233b6824fc26dae7bf8e4906c98ee4a22d527ba46e8161df8383e87018a12735d2036600b79217e61f6b76bf4cc6c50cdec487c28ca9fbd5cfddbd8f3021cbfda8d238c61d848eeb9fea97cb3e0cd6a56bd42f565a1b635f960d786dc229e5f58fd0c4465e32e39e5f10e21ead60641adb04d88f920d0458dd9cbe15214070dd74b1c288d8a1ad83e526bebd0ca0c35375b84ca1e05d9db0992c6453307b8c4d64e02fda6af6a56a8f53196e8bd8c1ac8fcfd699542d6f9ada11fde6a2c25ce3727118f05456ac7cce967726bf1beaa1093d8021b4dfef6cc765696de57d5abd4407ee2d96bc7439cd9385cb89a9a06b2f4cfa8715777b421d9c26e35d314a242c844157f61888b4a57c169407c180392e21ceee821a82d9ca8da77051d7efb1e1ad08c8824c7aad904ccdcc0884272d118bc7200fb112a709c4094884336304f6ac062eacec72ccf143c6dbe181e61c3efed13bb9cd0c7c2901589fad8fdfc880e24d9efe23e9"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1203"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b12030000"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = ""_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1202"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1204"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4e28f546283f9ac74cc99c6bca79bc208e47220cfb0717aabc521ac55119ec6bbcac880bed0007c04eef92a24b091d9a09ee5d3b5be790abdb2c98a07313d505fc876adcbb1089026940e03dfc10fb46a0c2a764ebe86e51ecc2ab489f56daf38764fc0a36a9cb4529367c9880bfd7631c340fb7fbac0edd2e1def00d65bd52e597e2eba1be1e41bd89a00f5c66fbc18b93e9cc1b5be962780f6d7a9c6d375a28556114f37a8a3606dcd68c8128bf7a7e5f1205778bcf3048bd4f7c10cbdb4ae759954c4e4db0a9fe4df270c41bb86885dbdd8cb7e72a33322238a2d29615a2f01e9fc59c230c2cce58ad096c2de5071e020f76c8c39874f1de677dd5d2f96ab4dc145098d25b740b5279f05713daff54ba695f950039882059cfc2f86c35a0501b8d0914aa59a806e8d1403fb2eef163ba1d6e3d1e18dc99c622f8c2d360bfab2c9e8fd9d74a027e466fbcf4fa56777ee0fea7e04ae1901e65b5361f97146d7f4a550adf77539fabb7135967dc16f8ca99e8283dd69627cf27cb9d2df20bbbb"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "78d3509284dc06b54583e11ddf2507d9e50bdbf079fc319d107bc2527c1b742f4c759320fa22435d74e94253feb4a379128e7f33c5f3462fbfb92ff40c10b23f8bdc5890114757364207768014380fc16ebeaf22a7b1a9366f3fbbbb912347f1ef595d742a976b69377533e7b61d3237c3693cf43b34f92773497b8df7ac0660f67439aaa66fe179b34d9dd4d013e8fab958fbe2a27ce84b6d1c3c2998a50d41b6b38000191673c23792db2fe47e4ddd3b5396c65dc44812e55298b8b50b5a2a01d508b9d215986113b099717c3a4ee930f479308c20c26630aa5419c2589c8cbbafa7eaebd71fca9e751793629d767be8709fef9177d6631a48731f5e59fc7e98cd466375e8775ba935f12b45575819ecef4d78d85b6e984d90d41c93bb03c832fe415fb567a1d951f7dbdf407beef8caa3a741ca7c7729c8d8ba98896dbe52d9785feb49332e646771e7d84b75476aafa0a54512806339cb54ec1c70943beb508966741eba4d39c2fe535aa82a9cb92eec99d38540efa3e39fbc02d757ad74"_hex; + r = false; // result = invalid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8f9ac1354af4161d0e55b5674821d02823b3a6b3f79cefb98cbc77f9ac2d91cc6345f989a7828132f73f3630a247a936b6a057b3e5a2fda0c5999ea7721ee8880960c24cd2377e869cca1799747142d57ad6a8d83ec9254d89f591add11a758e1ea1e29bd08f624d0e28cea52ed5eed7c0f5f49d3533eb1cdbb2af837dc42942f9a86b5f4e2d5ce506697ef067a344949bdd89afcc25978af4d50c300bcd0ffc9d93cc559e3ae1a13215a1d3f6030827340c6591061a5ab7e65153b1df8b25e1421f924d39c7e6f76243c1bb9ae4063d9a475cd2ece45f4e288fe0720074e87868d70a5584a9ac2b47a56417cc76f15154315545a3ed6704b365f15d34320804469c3b09ed211cbc9e9e767b6f21fa16f8641d8b78b8dff8062a25b5bd3b6a38cb4706c42c1fbbe66db1c05cb57531132eb94fe1569735c33ec491c318a686c837ac810be4afff605f92bb390e7ab3cd24c0cd997cf13f112e5aa01746f43902432639e1eefcbd37b413c586f057bcba40a8f1251251e84cb7c87c53c1d1d558"_hex; r = false; // result = invalid d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); @@ -4844,10 +12200,974 @@ namespace ack::tests { "RSA PKCS1.5 SHA256 signature verification failed" ); }) + } + + n = "ab54a4f2560b9f65faa2f83bcf77d41803c080e4e5c3eab3534210982bba8a5d7e513ba50ba1ece33555c5457c41ba58f3f605a04369408f586c26dfda464c7b300a01f1616893264c7606daad4ced14df9a894a1f34586181294297e3ceb9580b0c785c056d5c566467f6f227f3084918d1cd17ed156e7f9fcce4757c5794f92770771ea5cf3101ca0425c846775f56938c1d1cad4401f4df2f5e0d3a3b2770f99e3c1cb4d9d4896c7ca89287b45831218b099add4bdf1dab6e2fb55d2775429386c85dff32c07a6dda504a9627529dd82c943554aaf23c5a5f6cea9c301b4b1f066b86bbef2e4bae9dc5b5e82e1fa03c29ff8bf38556729b356d5ba41d37a069fcc8fc23ac715bbea04c1972a2d50c57cc0159a46b5919fb670fb2a502d5ab66f0aa99e51016b83a406943ce9bdf0ab9b9e946574a5b32ce95d97ac8b1fbb48f0bf7e3c0d4b7a00d131966d009997a166a6630dee4a74c141cde0114aa423351b1dfdd3893a856fc632b6d90dbc79c8a61a9f9e31702ba69fb222860e60a83"_hex; + e = "03"_hex; + { + auto m = "34333630"_hex; + auto s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011a21abeac8409398319e65c8656f8f72e179dd1e99358c7531fddc037e47c1e688cd70eafd6eea01c823516bc79f89d7e52ee1eb4ffdeaad1d550dc0a47185bc9c42e47fce5503c3370a60510f834b4691152ef668deca633cf3873ce6613951784aa7dafde118f37f1cdf1a687ac236d5c956bced564b73cf202e3bace59667"_hex; + auto r = true; // result = acceptable - flags: ['SmallPublicKey'] + auto d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + } + } // End of Google's Wycheproof tests + + // Test vectors from Google's Wycheproof RSA signature verification tests. + // Generated from: 'rsa_signature_4096_sha256_test.json' + // URL: 'https://raw.githubusercontent.com/google/wycheproof/b2cc2fdbeb3cf802811da0082a9f8324dc334c3b/testvectors_v1/rsa_signature_4096_sha256_test.json' + // + // Algorithm: RSASSA-PKCS1-v1_5 + // GeneratorVersion: 0.9rc5 + // Header: Test vectors of class RsassaPkcs1Verify are intended for checking the verification of RSA PKCS #1 v 1.5 signatures. + // Notes: BerEncodedPadding - {'bugType': 'CAN_OF_WORMS', 'description': 'The padding in a RSA PKCS#1 signature must be DER encoded. This signature uses an alternative BER encoded padding.', 'effect': 'It is unclear if accepting a small number of alternative BER encodings leads to a vulnerability. This needs to be analyzed in detail. Libraries that verify RSA signatures by using an ASN.1 parser are difficult to analyze.', 'cves': ['CVE-2006-4339']} + // InvalidAsnInPadding - {'bugType': 'AUTH_BYPASS', 'description': 'The signature contains an invalid padding. RSA PKCS#1 verification must not accept incorrect paddings. ', 'effect': 'If the verification of the padding is weak enough so that arbitrary data can be included in the ASN encoding of the padding then it may be possible to forge RSA signatures with low public exponents.', 'cves': ['CVE-2006-4339']} + // InvalidPadding - {'bugType': 'AUTH_BYPASS', 'description': 'RSA PKCS#1 signature with invalid padding. The padding of RSA PKCS #1 signatures is deterministic. Only signatures with the padding specified in the standard are valid. Other paddings should be rejected.', 'effect': 'Signature forgeries may be possible if the RSA signature verification accepts a large number of alternative paddings.', 'cves': ['CVE-2006-4339']} + // InvalidSignature - {'bugType': 'AUTH_BYPASS', 'description': 'The signature is an edge case integer. Edge cases such as a value exactly equal to the modulus are sometimes mishandled by an implementation. This can lead to simple forgeries or denial of service attacks through crashes.', 'cves': ['CVE-2017-11185']} + // MissingNull - {'bugType': 'LEGACY', 'description': 'Some legacy implementations of RSA PKCS#1 signatures did omit a NULL in the ASN encoding. While such signatures are indeed invalid some libraries are accepting such signatures for compatibility.', 'effect': 'Accepting such legacy signatures is not a vulnerability. However, implementations often use ASN parsing to verify the signature. Faulty ASN parsing can add vulnerabilities.'} + // ModifiedPadding - {'bugType': 'AUTH_BYPASS', 'description': 'The padding of this test vector has been modified. RSA PKCS#1 verification must not accept modified paddings. ', 'effect': 'If the verification of the padding is weak enough so that arbitrary data can be included in the ASN encoding of the padding then it may be possible to forge RSA signatures with low public exponents.', 'cves': ['CVE-2006-4339']} + // NoHash - {'bugType': 'AUTH_BYPASS', 'description': 'The signature uses no hash function. ', 'effect': 'Collision resistant hash functions are essential for the security of RSA signatures. Accepting signatures without proper hashing and padding probably allows signature forgeries.'} + // ShortPadding - {'bugType': 'CAN_OF_WORMS', 'description': 'The signature contains a short PKCS#1 padding. One cause for accepting such signatures are libraries that parse the padding without comparing it to the length of the RSA key.', 'effect': 'The effect of accepting short paddings is unclear. It is usually necessary to analyze the implementation and determine the bug that allows signatures with short paddings to be accepted.'} + // SignatureMalleability - {'bugType': 'SIGNATURE_MALLEABILITY', 'description': 'The signature uses a modified encoding. Each message has exactly one valid RSA PKCS#1 signature.', 'effect': 'One effect of accepting alternative encodings of a signature is signature malleability.'} + // WrongHash - {'bugType': 'WRONG_PRIMITIVE', 'description': 'The signature uses an incorrect hash function. RSA PKCS#1 verification must not accept signatures using alternative hash functions.', 'effect': 'The security of the signature scheme is reduced to the security of the weakest accepted hash function. Bugs in the verification are difficult to detect.'} + // WrongPrimitive - {'bugType': 'WRONG_PRIMITIVE', 'description': 'The signature uses RSASSA-PSS instead of RSA PKCS#1 padding. Signature verification must not accept signatures for distinct paddings.', 'effect': 'The security of the signature scheme is reduced to the security of the weakest padding. Bugs in the verification are difficult to detect.', 'links': ['https://bugzilla.redhat.com/show_bug.cgi?id=1510156']} + { + auto n = "956353ecb7561945dc5544e4602466078c93f28507701ffd39e2a9813c8ac8740e6ad61c955d484e513b3dcea527e001a018ee2c207c1806a96763280236cd3c820dff79837c9b709cb4b522d3ddbc9192242259c43be75ea244d37ccfa8a4c75024a2cf7cc76e842ea69cc7ca1227405b070047387a5068e4976e4b8ed5f9aadd7b4db024fbb8d7bd8a040d8f6610c1c6eb1d4b606dfd182235d0360880304d5a750603af0c424b8c8e6dbc12c3697d2d609c97547e774e2e362ea96d1690dc9432112c535258b3db2c4c32ad510d6c07ad0788357883869efb8b629298724847925cf42b34386be700f02903db5852276bee2370941f397bdc3905e30964a0b5e73602703340960c3ed6078263b611f197955fecce4b9a32e43cd1d2e5e87c4ceb65edc8853a7ee31d28e16e5adffb8ac7b760fbfc63d5f174f4d0936461dbb12c964a6b6d6cee752e5fca1ab4a9fd238dd3e8860a1d763d2019f9e7b99ed7666d4e038710f90e0093bc566987d6c0092f571376e705b342d066c54e6e2578927b92c1f0928de44e9a6e1f49b907c6aa4f605ec9c398d55df81c67373b03cc8110162fb417f96fd321048647dfcbb392455115cd912ea83351853e6a185284648842adcbd25e67174a3b93b8a64ce2ce9de0e8577b8b662ce32e2565782665dd38e5bb5fcc4fe12e4320dab7773b545a09c6d39d9dbad459f21f3e624ee6ed"_hex; + auto e = "010001"_hex; + { + auto m = ""_hex; + auto s = "368105195f0dc82c2cd37e8edc6ddc0c983dc13ddcf6f9db9a24b52921e5280319a1bcf797f774066d643e5c99b811f0ad9df2a3f430f4848a03ddb97e06daa4d01ddd50bf2b638935cd26b19d6ffccba884a4e7cba35830c6cc5ccce38bc0fcc4ea421347e241711a551c67923b3daaf2e9c51635d416cc2393a9a4f108f84f26990c11dbaacea75e39dc6082b539cd2c0c8dda6c78cbad12e14a352b9dd5c92a3702d8538fcce0e92e26489ea83d75c174ab671210fbc6c397be2167864b519b5136d23a4363ef773ebc140e1da4b0a788d7b1f15a300375ee42b27261675fdfc60c29bab7022dc2e624c7d1f31e278ac089c5880e701bec41f63c8f897c0cecc5eff0a801dbc58d7d4df6e860c20e61f31d9ab2d50e8fbec7471070d8ed06c4c9c725cb63afde0cc4475d3dcb7dcad7eabd874ddf7294cd9d2a66b13b6367a14dfe3827da0c6c8b9e734deece80fd79609ce5ce0a16de6610fd04a09b0b2411bae2bc3222ab4c02867838d0c8346c60589e6204b226efb401841fb95da05ff32989ef935425b943d1b5d2f8af5113491a36c60a98c90b6453144f5fe00a0df3de8d02f0f59c7b94ddc7c8895b1dff8d88f69a9a2cfbb55eda0837800950601fc9e230a5514c9674fb576df8391c51ba0febc29c267462ed5337326b6f40d243ad7d81459ecabbd00126b2142e6ba10d9f903a9918d2280c63ee84b47062e1"_hex; + auto r = true; // result = valid + auto d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "0000000000000000000000000000000000000000"_hex; + s = "46a6c9cd78e38d5567795dbea71872ac16da06725975cee7d8839d2de665ec3b8411277f3e026fd2f9b836d788b48539755858bc8be0804147b59c09354b372713145e5a000ac15744ccd2db5795727e2f4d5f67bcab5e7cb1290824963ae88528aba0e6785989c8adb86084d26dd1faea3ae2a6175739fe978b576eff673832e513419806d206e0984d1ef0e1c8d8981084ee2ee569806b003fb7f08e775998eba1771f1efa070c00a769363c6101d5c5fc6140f102469574cd09746130ed80d14eabcd0a0418a752d5595b5f40ee0fb05f5f9860e600d75fbdd53461f5ea18be5bd807281f9e8fd6cf7eb31985206c9a5033cdea631512bffdd977fee5e692b3153a2ce9c7708a9c7d665d84762740cc9ea374bd32c18c2d76320e4893a2fac374ca7122e01e08011c351bd33725a6adad96becd44e4ec1032fbfb0c8dcf13cae9556eaf419211d0149c574b8d12ffe5bc59468c7c549283be541697258af847e52a9aa8063557dfa40404adbaa95e38ad28eba053aec3c123e98ab1b947bb774841e9040dd5409068a2c8a84c530fc4273897ed845d76dbafbf45af1a8fd2767234fac1e852453d8b7eede02af228d8b5821238a50a321490dab74d687a3400c34f215b85823424c9d966b516cccac38fc7f08769f47d66c57b9b75ea67be82508a513946bcbc809436efc4ee85f139b143c5bc15ff69ad1f3667c3f69bcf"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "54657374"_hex; + s = "43929c2fb0986fc4570a3ee7f6701b96a78ec9297a997415a142ae539031c0e196add5e4c6ec572de0a2b109cf23a42567ebe98f42cf312d07538e4a32b0f20403b662c652ba9e3d6e38a625d6b5e91cce5c810d7a02262338e144a57db4ac4debfc536e8eaca7fe08022a2f64741d66d25e3010f2fd259d4c6b00582584bbbdcde4266d86eddfd0443ff24b06cf7ade6d733c637a48a398dbb28355ffb9bd21a49de6b345ef635b68d917b5bfcb9016f7c64c444dc0036ecab8f59b0d29098facca02335df44db87d30d02f08553ffd0379b33d13d09a385cae7d63b6db52e9b1eb8fd549e0e1e18210de1d3e9527547e5c72f816eb36288b09d96db772f955ca46fc8cbdb6eea93c841e1075c00c3c45e9442d28095136cc5ce8212ed8c60c9668898ab5d64734d4d0f2311f104cf8a732e6d88fb2064cb57bd54d3cdef7c11c840ecb238466c747289233a317b73785778ff4349949da47c9b4b2dc9f89bd1fe7e98b582500dfc05dba3fa410cca66acd854669940543c22ed1038eac7f0212b9ce4aedba0eb15ea1e75a73c45c1ae03fd241662e9cb89b051939c468db3a0adab822617b5bc669d1e0226cf6b475445d9d5e77ef54ed646cd81f0952b949b7f4f37381ba6427e060966467a76e1d9261a5fe8c68398a89eb5025cc39339885b6c33dde898a159f0af4acc81461fae37f5f4c61de4a888dc4f6b1e2b7336f"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "313233343030"_hex; + s = "0e207de1295caadb15098f51f5db90f9f000776055b107be58bd24d52a01d4171cb9e47a40790254f86a8a56c8ae38252f909aa3b9bbe7b7e1fed008105690d9afa647067ac122a272d30ac28213d2cd37b45cf81dc48d59e87d9ffaef6e1c9cf6ddf4ea5ff6123523c9cc885344b7e1ef4c8096bb542bc0fa5c47abaabca9a58ca85bcf092924741503a0f3c54c725c48855dc434b09d761f729051fb15af5612bdd387b4cd5019577327bb2e64edb065f713d50ff4285f1d184fe709207f809b9c38d064722897a868f8a09bfe1d33c80be0693e98d7e85600befb643e9f713584c716306731d7f8087dff66be1c4f6dddbc51b6ffe6034845cf0f88749e039ec314887c94648154f7c97235323bf78041ec2c8ee98ea7c553ecfec1f9fe89279c9c91ac6acd12ebe969da4c67fa6534ef9ace4b629c7b1de8c4ce1dc2b0f5bd7d416db6eb512a4dc8eda0322138cb7c65b9a58d712284e4aaf059db80af5785af4d83d391b7d8bdc4071636712410d1dde662478eada1a2f1f35786b78eec77b2788536108e7463d676814a91f81fd5e2084a8c1b1cc33988e73184110c6e6b0ef1de874104602eb33b5276ebbac95d91b943e25de6dfc66b31d8091961c78dcddd358de7f25584d9f74dc6271ff31294bee2cc9b2f97a2583c9b33243600500bc723b05d65839de7442895bd57a1dd508651a20e20f264d8dcb59d485247"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "4d657373616765"_hex; + s = "0a882c367ff495646c21ef0489ce268d6c4e6cd0176bf9488d4b8edf04e1706f23d121b500b427eb8652099689429a08e73294cfd29694f9b4f33ebc8a7f9d0f9d11f114d0f848114d116ebcab828c7ed4c64d5ddce9958bd0883ae82ee2be0a185d54ae64690accd816971ea5ef80d7d601e72a814b9b61e8d00727a843ac90639f2c83cc7e2a9065ebea3e7aad3b12dd9ed8a1ee03a43e669598571490fd92b699d2941fda3af7271f8864c844f8efcbac20066c7bee682c644da2329db721ff33a7a81869a7bfb7a910fde6008e1bdb4e9ff989ff78fc0a9f43b38399083808fb3f38f0e96d4020bf8a4b329bbf81d59dffb03f5d1ea34276ddcccc2a4319393e1777488c843f9b0aef1fcab7a97e00d50f7f83bbfd30272c8ea4a5b0d7b74e7f7b70a9295d0e942e5b6e627ff8457d0f60c1aac8fe10b7d7ab1b8cd18d3904bfde2a316a83ee2b7633c3dee3141fbd61c8115f88ee7ca4b2b677d1803a1a35361c956c1adcfa8c8e10f0422eb3347b4983eff3c1c79e7da80a2e7c6d55e61f5af74254bd91db0d4bc10c3812513d832bd6a603a6bafd29cd5c062d9e3b74631f873fb3ab47e59791446e5f795d6ef5bbfa267a541d4405dc09e82c8b03f51db4798cc96dda7a7bce7ba9c679d851d5dd2e6b3735aaa2fcff0d558d68959c6af8b283fd383315762767cd0e4ef6e027020148cd3b14833cad4d92c2c9ce15"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "61"_hex; + s = "374603f5d4728526e6cc7c7bfb6f456bd33bdabf37d942dfa8132a9479f6e4a9c2dfee515d883ace45cf1d660190e442a9ea7590d67aac9bde6951314af90baac21bed537c774148afb7927337d626525e13fa15664cdd78dfa5e3886ee1fe7137ad5f69aadcb098a0d49475b0f76ed1bb86cbd08a0cae9a6ec120eabd55b7e5c4456bfac2b2acc3892110b7f62c0dbe7ec7e491474c5c641453743fd70b15f7a726a0ca44a78bfaf3445a979bd4df362b7f29d4ed9189bfcdee01476cf1b48c2edaf02d226b41f587a8db161bd36e6ea20d64c8773fbe8c0296b9e016ccde333b380161a641d822bc65d3b60417534072263cd461a4f77826cbd0508ea11720081c34b12d80ef0963857624d48c53748f279bf6ad338ba564e35d37d1dea27d19ad5dcb76d6f4aac62e49eededb1121e06b9f78eb285f7d7ee2cd475e791cc04c029cb76e5b33743aca3ac3adf5e317d95aa79a2f0ac3c328e69ea4692661b8107d89eeaaf3be01122544fd9d0c61511e87c6a5507c5701655d35f71586badd55b26363b51f019896c03326c72332de5be8a0f146d630a6e747a906684c7dc59d3bda667c8a92432e879f6a4d91d3cdca89b9840285bd8a22e5e5bebc32011725f64cb5fcbade8a5f5f9ba372a9be7f0a4907e40b4d06feffee3a558fd023514b504308a1d821c41955c305f550ffdf005b9bd5dfce2d16d3d09bf17c156c4a"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"_hex; + s = "401bf4e63be4259b54c5909797b2b01fca18a6f74d76fecf75535f2876079ad9ee56c653dafc3513eb02114f5c96efb4025cf58c2cd576d003f688b11458fe3df1657657ed52b2756a99b48c6722708ef11765c8da2f3b061c779f26a64fe13e4be4602d0ca2553793d36c23f3194705e34a75b9b91ff7f4e554c5907b85ecb561a8d22262aa3669cc7be2fc5c21b9170869ff52dcba46b2b1c688e4c04e7a8f099e3a4196863bd1e828fb5ea5443b64b190327622055d44ff4c9999601338e56c175c716abf8d6c2ce6b9ef17930e846745e751f882ffb3f0b1a20e68ce9083d1466295caacdce85bd4a34615d09f2051839ff83650708888db818aca9229c38ddef86848a2c0c88b86a2f5a1079dcf0e888be62e116850b7e8d06785627fca1899f6d7c02eb60c3bae0d538cde8a05ef7281bba7f35757360ffa79fdd08642b6af5aaf8c71a32aecd0e9f3d9a2ef164da1740a5c2dd7943603bafde05e38f2ba78c15c3eef13a5059f3f242f07af2e6044896d1d6d9810ed3fb8203ca4efc116e95d2f53be8c55fc1ce653f02597c0df7d4a7dd88b41c2a65e40bf5dafbef2a97e4dc3bb49445774cac283ae131c08492c9715712f998241e16eb776915f15b7e9544ccf1dc220a9e139defd63cb2951090808395ce56555a7cdab4564d82151ddc0ba00db24454f2174bf0fe7ffe6e2d9d82a92437890bcae1601dbcea29a"_hex; + r = true; // result = valid + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); + + m = "313233343030"_hex; + s = "542dfe4a0cbf40e0caf0b46ff998c4f4a16080340050b0f140159ea6f81887c3fb6640cc184805784b6cc6bba30fc5c1c8d1f95d47e583df30e1e1cff1e63b01da76483e22764658471bb0d10085bc15c1771061b9169e1b51a7695a3a67df5a23777cac19ac0e169380fd039efa46cf1f80515280636e10b7ff1035c97b29baf7de96ea9ac29b6188985a02bac9ccf6e20d2baa5d31d46d8d2721fcbd68a1c2036540574225703fec9f2352d61032aac6099f094cf5a56ae1de6f59651d13868c8b808beaa1db62415564ce66895e64e8df2c604409f3f54eba083961901b130a89ae8fcc93b824e86783f1e185a6f64d9d6935ce03f759a9949e7e91f564ca048703f0a3c7a9ecdba4e2f004e88d92034b94247845f1aa62b4f0ccf2cf2f0061bd6a6a00c5f8f08eb66b404441323b05361e75f0b10fe90a2c1b8bf617ef9a3e41af270344ef46ea1911f663b987059cd51575b69b6f451710c4a4c96d614c989c46306b3afd6fef1b2a36dfee82c47ffed1e8a69537904da0c17ed11d58a5e29bc95c1ffda1b13dc8b47b27b9f5ec961aab03b09e64f994f676148a080ee5d0714cd0c8e07cd7a88c5935ca16180bb5f93861db5749f7a4b3f5fb4a1b1c00b5c5f1bd6756214878cc24d3dbd0e25f10a1fabe0a55017bb8437e0171464e00d49a36f65800f9453348b70baafcaef5bba91d973a898f1f654e2dcacfac60d1"_hex; + r = false; // result = acceptable - flags: ['MissingNull'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "634e2546cbbf631eba9a721e58cddebbea603786719da3487dab0cef6377cd53630b6d8ab0ea5df7af38f5991310501bb5cb916187e5714448ee3392042761275eadec78119bc7a035ebe9581ba9b346f9c0c3b71df34122d2b5c8f599dd4521d99e68ecdec77c05298a70b34eccbd4da59f3f92cb1377bfb470f89c799a240a716d7cb1cbc5de194e585e309116124c27df4adf3d9381da1232881be26eedd9c4d2708e042ee6a0b34bfb28a0c2226fcf91e4fc75ddd3689b4a6420ea6e5eef85e19caf611ffe7485dcfd8d782906773a3677890544b008137647e382d24d03131753eadb341bc8d050fb45b9ab7e6891791aabf271437798bca4626614e0f3942ac86920d673523f4dc73792c845fbc160f891c647f5329e2f9524baabcfe9703b20f295a98d5f1da53400d178f9861497923fd984fa92020c59b5a2e8fb17d0833c6b4907c8fc90dad9d7929105432f4f62049e8335b6eadbf33d4bb008d2fe672711fcb2ff0c82f882493b0c44dadc212c23d763555b19ac7fd462d56372d710e28be32dded1018dad3df8a6feeb447b71418819501b9ab837162a8663ab9ce993654cb427dee90b6fca769c35308eee682d8d33beba8321dff25915a4bb1d358abfd1f6ffd0c553354f226d9e587d876ad559cd96e04424b91cd9e087ac160b2d428553b47dc1f3f58aa762250ddeb5a20be46b1190fd3db95a40052b94"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "43c843df113651ef6e42e0613bc1d5a2bd278abef09fde3e6f9d1ad2f806f9fa45746bd35c9d0802430f9b0a4319b7f93d17e614334f573e244a17f7ea92b20dc4376298505da20eebac188835f84f12a2ffb8e88cf4a2dfc34f1326bff24e2005ee626ce5a5d9b055564d2d49371cea3c55fb2abec1803ed9be15e8fd1366044d53e0f50b64281eccf9e1ff1bcee90dc56ab2d74dcd42496e51e56eba46374c4f5af6d38a615fa4195e9cddbf77b4980b4dd4b6be38e53884ff8f273d5479deeda87298c64b7b2f57fd0b4ef07598177c29157b3c56f4e8e4a0d9ce736d404116b13d8f75653c994dcae727148f6b398984032b3d68de759da8f3ef0734f6de674b90c32e1aad2e783334723403c20a8037d70b2b4d13c309f74c0e96694a54efed080b8a1949bb5375c24ba684ecb6dad59a3d6e09acdf29dfa960274b34ed18e99bda3494aef33f591e18cb9f5de86aa84478728e5e093f33bb6091e2699d4025d97cd0ab46fee1510a67a55d77ca32f8c739ac7eff5d8ec2c661e8d826b2f292d2aa136ff4aaaa4b496ec0920bc44549666f249ec26ebc0db7f887fbc01160e5bf35849376f6f7231d85b6b9cbed9f8611390ff92c68aec5a1b3f146174127fbac3571ebaff7713f1b5989417b436a800f72684e4b600a25c4ea37c87cacb6a08683975f3f7e84fd281da42c144c20b43ee61400ea295d47dff677010b58"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3396003eb4c70f3a204f95087a8d8fb9fbf29f409bf0637775a1a0e2b2c2e60dbc5b175510588646824c0cc13ac9a97ec31eef01278abe1cecd555545faa6558890eadefbb2e6899f3eb64b64aefe354ab74f1bfc4e40762063f1d126780bb7eceed6106b553368e25dbeab11cd665d939abaea2f98ced4773353ac87dab991a29066de5063224171540d18dc42e9f01b8167749789933ba5cba2a35ea068e4bfa10f9c9a7808c918999f8a43468200dc056f8fba902093ec45a7410ecb2ba1025259043d432a4c640c6967e01cff827e95c20673edaf8bde7d6697ffad55e2b89db1cafbd25b8884be6af8e9f6644251ad2396c3311f69be7547f66e918e7e860f3351fe93f3303e4796a1f5e875694033f203ccb9d551f008f3894c139de7c01f7997aae47e50bd4e0f3db06f6bb0202f807d9d423e4b739cbb09dc0b3a379a6d6fc52e8ecaa431fdbcb1d2b2892bb5d4a62558fa1840e66f086c005056b2a46405241566f0cad7d07d1e2e67b89543eb809bc23fa9274167b83bb30c9b011f0cee79a5013a63bdbf59635b1e167b4316dc619d7dcc9048e7daf76db31f2219af93f2bec9f14367917f04b8c84c11fe1b662e62002792c904776137e5eb09161ca1c52959905e987fe231a06883e083e1d0a6a316fce311e4afcf303274acaaaff256530628897f01eddc42b1ffa72e1165bdfaf993ce80f06d3abf82f389b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "36c7a2d963865b7a00dd9062d76b691f73fd01c8c2f9877184f78ff402d2c70e3b0c5ffa0702259a2094ea86116c3d68804095a3e6e95a5dc6dc140d4c754a4be436328ab2487d3db99d737f01648ee5fe44037c45db18f835e1500a6e9de200e22e3be7101f52157bc842c99ad0c775d469dd7d4bc0e33773a66f7caa83e1860f505dcfb41a547cd41e0de634dd708628fd06b3b76af20fa5638e6e9fc4507d1d882f8cc9262b19232292a2ebdda01e44d5ebda9f8893cf8688e1f71437b1bb51e70026d05c83853adad8157c84f0cec65e3f7761a873befc0957b2be65e9fa5c11132e88eb23136fdfb3cce4fd5843a3e07cc1a6433b29f8f3156e0a26c9840a4c5d36681fbe506f2ec9e0ce6f8f4fd9ee74c40cb6b2fb9254b0419ca7cd66da4a3ac2744271d08d478af0edffa186cd24c79fba3f064ee96f2a7fbc135d7224d0c672479660ded901eca6e3520a379742198dbdcf64f90f7be0ebc80707297e0a1e52680d0184360bbd1ab842d5ed32f120fa4439b729724dbf0cf52009e926c7438d3098fba49282e8fcb3ec3387873999ecf382d256af47b97b07b3ca97f1c95b779cd0ff2cc24499686a87104bd773231812b5da5126583d4948a1cde3ade4acdbc2345dfd2da81a9ea6afa33a580c63436207a325faa8d934fadd0821798fa796c7d2554caac63c5d4f766fd97640a86e56917b8f0fb763624a11e15f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3f781d04dcce5db1d7d46e0b797cf37c05025930767b30f3b1daf81d4f23a465fa0ec0aa33bb9b3e4bfbb1248bd88c2035db23aa70908d5c49f317db8ccc09b49c43c1aa6e8a6228bbaa2bb97dad60559fc23e85ef74c3e16e8324cabeadf74e1a07f5295dc3ef0bffdc782933a775091545cd1e225d68feb950244b9d9bd19792923e8d843d1b5855b46533a7e9afbddfcb4ff3f442da467e43a00d37402c44b2e5928b239db6b7392bf58057b690eee884e9d79d44aae886c60de5c32aca10b994e9635e48e9a5fddcbec21be7a17b58da011349bfc9753996661ecf9fdf697de3cfb04c5b2146d193026865cba67870bdd95ca2b8328445e1dc24f7b1d90469cf6c2c0eb57132dfd33f259c647e0d013363d5d68ad074694b2eacad9150034fa26bbe343f9011faaed0f4dc7591618a6fc009e87e0b2c1b08ec01d0ddb2d8ad40361d00041397468e916b711e6838dcdf96e9f2c2caf35c953eb204095ae2e72fb2e0ae89a942edc15109e1eab7426f78d4c244c84fc7bb1dc556fc6702744fc4f6545a1507d06401cd073bddf53fb4d33c5d74cb040ef4fd3578940e3ea50d384cf264657c9ce8f9a34fc5161813b47e95d0f68e11b748f33991baee4a8167c734d4dfc3520d9a7a0275b9c7f093066e4a58f4e89b5a758cc6e7a92527a6baff7ba0e4ac1205e26ffc171c981f05f99ceb1498f3f71ebe22c1977e391494"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "823e02847a08054d2b096fb585eb1dfb9b04168c6bb599d2797c0fc6611463a128e18dcec7b7a83b7fdc3236ec008d9dbce117278fd5eef64151fbf58b6c209580f8a65221c2e05f6e8e5736dbe283b1896e1b6600c6c752b0f58ad00ae3b0fd8211fd54e183fb20242099acb8f10c7f8a627fde3f282fd3c9150c1a72b138efb3459e43eabf88ccb20f31cdc60a957eb13949acaf2a80ca62c87f9544d114179ebd1fa57393556b11a40bd7b5c15be7e67ede4fd406152e2c9da80aa317d9e6d58243951843a9a37a66c038749768674066c573dedb77c023ac516dcda866228a94d454615d7c29d1eb66992330fe9f71c9873bac9cb01c5733e8161d5bd6c2ec465940c3879eb403f0c3b8c64bacf373724369514f733644c33f39f8b003ece1a2d4653ebd60b7cf30b8eae6902e33d2c1dca6473dd88abb916a45b6e96979740c7f2fe276e159f1cc7decc61939ed03a7fbb4e1e647d794be6a4b990f1faa1674c247308a769907593f263680a6cf0c4b656fbccae5ab64a292be1b39a4f83098f6546346769f212a8b8e9b542adb6da4683fbeac79a4fa62e24a66b9c817bb459f01d215741440057db007bdfa7c0a8ddb95d03d9ea0ad1aaa6e23b65a10e47b7786c0584bb0178a83ae921cc4951fecf9c60310d6276e133cf616f64bda7cb2d8616d7c5d5b9a08844b0b7ec1a8784718610bb0f0bfdb212a3813f2e293"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5c2db78d3d4f1ddf8b04e86110182ce478346cb586e44df947aed1853cad29929a33fbd331b4fc9d66b47ff9038519649eff4beb99ac5daf3a5977250f8d79f76ac40d62e66142890633eb91a5f677c18e3b4ea7fea19bd7f57c5eaa315f7c87acdd49b93f066bc4c33dcd489b4e944d41c30c9948b3accd25141935ba4c5218e407c0aefb51a81536862302a53086c8f648d841b7e9631e2cc125f1c0b7b0233f2e3f1bf304eb6d100f54e8c7fea6d2b71d767cd64b0bb337d86d41eefc57fc2086162181ffe2a904a59f7fea02e2068c32ad9a9b89085a23616fef285d595dc03f21531458a85d18b9921cb6fc6ad2eeb06c3285082da5345ee768791c322243add3e0954fc6573f47c56dd4847a5ccd8baf4b6714e46dcf13ff4121fa2da3b581de849c83c6973d9c393176ccd93267f4bbf8164765e03d1ffa33ee53622773f1b3374c15140430fc6230f4abd5d89ec376e4ab5656c3a15896bb88daba37193ad4e407fef4a964131a3b5db366ea8c4c4aed4928e24e2c333ae552a71e857ed534d57c2dbef5c643649eb8b708a57f2bc4c12a1051d529698b99ecbda22e98b5db24ad188ca40f56514f98f6abd5f27f47068438dc4d9db64c3ec0b498590d03e70263fa723ed846005cc1e072e84cbdb6da8e9ec23b85d76c0a845cece0ab42679d220a1c6776bd1fa71efefecfd99323bfa16c769a64747a232e2be657"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0c8d3d7b808ad47aeb7287bb99c98b11c84997bf6344de48580c352544a83f0f73d52ade918445cfe2eb58e825b02e768b30f50678ca1b71c9a65d17b6504d8c9d79259d6163e414bcb42be11e74f989b9d2aa60eb5870fc79360dd4e3f7df1a69b3d677b45609b78bfccf3a455006d2d51acec3a68abb48687ee85fd3af9cfe78b0143eebb1cc00d33ed5dd68c002cdfcd8365381bb51d0f4545130f6b4a1355cc69799ae16d1b9dd9dd3ce3ee377bbb7007366aacf4fc6650933faa3d60a08d055674f0682c23f99dc16097193ac84968dd8f0756cea9a39671de30ed00414e7a24d608ebd7d9e95b685c09a2c55bf29bd541f122e385116b667171a08e505d53fa4af9ad6d42a2efb5fcf5cce1c5bed928493a3c9b3fd6066e5342cea6c503a1c5a0a64347ef45ec5910df6d6d508ee222743700320f4870caa2b37c18c865ffb92f02feec4b0247c63a441c04d5ea6905102735dbb36b14bb6ec593fed9f7f7d159df747693095a9c411652a9aecd581c7833033b46aa29d7d9fe50dbabf2fe91916f2221339fdbe74fd9e6d968a4dada32271eab75847206445fa3d1f3d4cfec84a2d0f065643ee6afa162d149d3a141e0d10865ee63bfba31f34495f8c64bda2fdb59117272d645d1c0d78f4fdc57e41549e1bbce3c87f2253ec966195a0f4151c8d8a568edc08952dee7ead96d9dfd9fc415ae7528e88cb0be59fe3c5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "399e10695bf27dbd5aaa43df1c12104ce57c1c85202439671346c3ae98a35f4a8d5e51d9613d6c32238455af43ac6bef8fd5742669aaf334bb6f8d56dbd549e550a765c640e57211a9c2b23a8895251bb4561531d6e5e7d7518efedd3e52dc6a0724c2e6e718c2ba5a1c54b3dd12a118d1b96b8105665c18b69767fec41beed7bc9072ab21137586e7d2ecffefedba5aecc2ac761ee22b7586de4903db4f31a89168f6fc218e1cc75d8e12ed1b247305de6fcec9402669834f5882b04ee3823e56b076807447c57d03fb9f3bbefb23e31a3878d5fba56a763243f7ea7cf3c1ba36fe2e37d89c54823e08f78458970b360dd86f0b84e702822dd0e6d938b349c639f471f5d436adcf30e301b0f8e523524a9327536f55a5862cd846aa0d7654b23c29e4b3f902f4bc677d5c93676fea7935ca2642335d48997d6e91cc6e9a424ce7f4394693b83b51293d37caa9c962fe8b54310e2173b73027433861698fd1392112bf97412d3c41ae8433b22457671847c5a69f3392ab8d94d0af01e4e7e07362daf379f2fb6643c97fcc325e9934fc4623bab4e864da508cc93c6aca4b6e8138bf19a6475ed60b35c605b42dd8bdfcb737d47716fddf0dd44b42b7d69c4375b7a13d07252daf920155d2557a52dee5880ac740268336846f82cdf3c01156b398a9160539fb012e1080b2b33f2fbab388a9fda912f38ac848b2fc70b8359f5f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2166e08ea941d4a135b6a359841710220714af06f77a53412e1f5c97b23b584350319d1721903f688be0cb869633e8dcf1e44938e3cfbe2839aa748a8d5c13d9f16a1c6608bb5896703b07ca6240a5bac27c5fa09b0373fa1da390241c6b67cebf5e39e59b1466cc137e229fb5a6578c79bdfce3cd782d9c6bdde6d00300cba25f5438337ad37dab459aeb7d1c86c816dd8d98c54d725267a63f6a3ebf6be0128074a1fbe5155adbe86d57747bce2ec1d61d83bb8721553dd0a7ed39ac03698767fea56429ba581b4f0fe24cb6b9c75382770022d04ec412dd2264894151db650418b8d2e74368c9eccdee57336926b2c5ada5af66179ca0ff78cdca2db774d85e56955412664673684eb657ff10d726bb08cc7a2408c7d5d45c25d4446d9db2a67f6d651078f2fb80de9a6723a1a30f97d230d9492b8146cf717fe552cd3bc6e811abc73a7c2c29a14a2e57eb083fce71d4831347e094724c8f8b267213b71f1680eaaa5baf5131240e2c9e64dc09e56ac64d148ace9e9b3e0310922c5a4475f26be6ee9138d676061752a3239025537fdd0ddfc99065e1f6b1ba4bfe89f811cb43b25d94ff4b317aa64f5c092e21cf78edcbfe9a4f16b7a45226bc33831c2e4c33c108d2837d1054b27ea1f9fca7b13791e4b0603864c05e5a404822a38ab25553835850a232b8a5a837d1dd6d828b5bdebc19367648712f698cb3d663a2cc"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "57b984c983dab67f8c2bede3bcfd3c7b7da7730b743bc500a5d4fb52d59725ce0d2eccd07921bf50912563fa698c0a3dcf9ddf80147219a39c2970c976d7c440c7610ca6c2829417c014a55fde507d0c646d829b02a4169d8158d18c58b1354e666d05405660f5ac273ffd34bdd651c67ff5eb94690f9397eba7e98ca3f54d7735e8577b2900f3c51aa2497df70ca9da5c21d82f1f4c43652b35f504aaf2cb56bc2d671827cfcd5f9893f5a5e68d9eccbd0b391d535b950c4a5139bb73a1583a1f8cc69ca7b0c6de7aa59af086c78a3ec5d7a61c9559ab2caa6b96783582fb6735779e5e3fac1fde6bf8e252e330f2770719b668bf84be2a955e5fc93042da602386d3b911e9bcf07190d4f8068d02b7de38f58f7b881b6abab1a2a069affba6e9c12cc0bbffed46ba80da30c13f89e187dd7cb96badff7892fd083bd527fa3373eef91eb589afb6c43411340da90fa553e73e808ec6ea68f1f5669b7dd0d354e71648de1894c16c35320c3f3debe04ece6bed1e733952f220bc4930f32d38b722be3b6e1685e1cc040bea747f683c82b92936c2a760ff86bf1cee16c1ec2e883d703932d487381d63a95a4ce5d82c178edf3631181c68937d537780bd8fb6c192396b7e750a71bacae83e09a56df572a77a210a3569303b36fa0a3941a37a6a7f7c0aaea053e2f8e8252b296d4ea234c93937ebd06ba7949da4089926fe3aeb"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8523d656317386abe1592ea40bef954f052d3be0d9f42a95e38ee3e31b6136b77700d79032c69aa51cde8a64a645efc3005108e3510b57febfd2376919178625673571ae10cb2b3039cfbc076df5032f629846217a9abe201ec2244aace4a85b1f177c6944a77252c827f98c99834f998375417d8450846d7a7c1f2604ecb82d0313f5934b0d01b34b90793b7772302ad81a98240be137b0e6452529dc807f759f1d405c46f5fcc76eb35376ed932c205d9e4dc103d18f53ca043a2f953f07e3a60e47dee7807f92e5a724f9c6a2c169b8bb68b09f0a150caaf5c50b379e2fe357281da1a25d8a1af1372cb31f79c5276c9ed5bec5bfd98ec01c98722e65b8e98034f8a3b9af0db177915182753b3974f5eb2fe903af6e6a99455d58d44b40157b41e700d3230eda3c877416955687b8f6baa9c148f80c0af3c97cdb073ec3e5f480e643cffb2697f7eefb69654ad57cfcd193c49a36a76674c7c269e4fdee49b80677dc416d298a4e7d33e54aa255088a8bc679f473485d1203e71a7e54ee62989bcdbaa87347f2dc767813cb9695453e629aa21b65d6b238d57b0736df5b59834b7b94ad341685869e45c64947a0151d46733e5a1d487424c6d49676262e2c353cb1433c25cfcaad8d0339109a67f035131ae3ab96d42cac46d125ae515da1fa567695b473922322bf66eb9af7ce5a1dfa906338690bd21ed6e8feeeb96b24"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3184340879efb408d6d0e684a75a6c41f73b40826560499422ac009bc5db58adc6b7670be2476a6e7451cfd476bd987d9ee96d22dfc6dacd3172d9ee69ed71e40da330ada6bef88ae45d886b4d6c5da8bfab292ddc9bd1e503b5408865ba978e8ace990c32eb6369c31096730087920602e5dce83bb6cdd0c8a42a9b1bcb4d969c92bfc6bc875a4c6c7cabe2f34eadaf7736feb50b1ec2e5819c6cec200814d4eb0a641b64fe3dbefbd7e37f39dfc95eb780af3c43770d800681c2308fa3806c41ec3630880abe377ef9c26f7c0021d0f9a413274e32a5f191348c8d3394b058b730b5ffdb6651f97d8e08dd583ac2815d53c77ae034e5e6e05f156a3970f4c68680de7b62f10e8c0fbed2101b39c7a4fd36dfcde91450ca03f7b667df2203ad4a10dc0602de29a2112d0946f4d499687a8692c911a7bdb99c8b79f5dd2a34f762a2bc11c51d57f60440485d4213c76090a4c8447a3a1fdf4880ff87e0407cffa42865650d67a7b1d29268858d3945147e45e3f9304a5f5bb0e704526e3b9baaafc048ff807a972305ea1875b5f3c9d001c6d639df7c7967617ca58932f00554e8990b39663eb7a7ca3aced53b0431500a6d8d1106fe3f0dd070b308751927a4631fce07e5a01fe047e3cd8d4c93c6c7d66f12b9bc685d4fe8cc1e1b452574f2b7b6ca7505b805def27ccc7169edf40d5939582037dbf54357911d415fe227de"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5f0caabb35188ce36396d8d7a98303a544efdfd9dfcabfa87448590f02896f1c298bdfdfc1943c600f47fca65c1127b4ec5373245171b8df64f5504b13bba2c14ecc385267442482aa9d489444680855b064edd6aa8bfd89d27ac19a7ee8e301f28628393a80822c678f6e42c80af8f61096ba90bbda9529f531feca89ea2e4a4df2bc29ffd4bcac8ba13301ade69c90bb8cadd193cd296b39f9fa9efa4c4e496767267d3d71cdc5886d97807aaf5b04a7322d8a308dfead76af93372b6fc1115bc4548c7b05061a8b5dbe2546443facd21299447a5a25ba69d660c8257a529ffe7ee99886f35fa4b79d7c058b2189946637e3f5022a3df8c97e3f3ed1ee60a586922e93710e683ac0996de67ca251883f91454b81aac4744b0eede9f6151410ff19c6ff02d4daf8bb5bd648486e03e9b18cd6ae269aaa39d58655b1948ad003ce7bfac7d50e4123afd35795348c9bd0e67faa63e6db5776a2716aa81bc7f24273f9cfb38fc5aa8a3900af364ac50f1bbd2ad10b3d3f76d5669456c32f651e3e25aec2be68ab5d46b7b7110066075d00d3e1c35a8e5ed85d6b92b5c85844627c9901518a98f224c1505325998450655877593943423bcac1b4407e29dd266f6aecaff8cbdd8bfb3ee21f14435822edfc9f26411a9748805b5f6b9c6884864915f1c834a994fc3bdee7d132ba6f25b4d70231b20a3df40fdb8c252e6af4ea5131"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3e93869f5223123e6c8865d58028ee361cf088c290cd0d88ae53a5226e0e118a7b33843468d1f18f3ee5fcf2b6c9c965f2bb558decebbca778e3a8ea34bdb5d2ee842645ec2585a5ffd57692dba51f3a0429e5623c83799cea20f394ba294f506752220138bf4216780ef627d899956fc667973a9b7b1e2f991fd531cfe9234bbf071b6726293efbc7d26d94f390636a5b9c39bf12728c57eb60db4e90b7c0a5f9a055d64f2877d3a1daae3f904ac48a7eade25a3876629df262728dd216c29f6846d967a3059bab937bffc5ec95f1f26dca3a15a102856090276f1beb6d1eaa892443daa47ec1aced899e6e025b4610f52bd31e06e88ee349d2cf23caf1988444f6ad9f7f6d20f98319238165009bebacd18070cf2e023b1a798b9591c3e3165da74e96f4d2e223e07d77a19664511f9251a21c803a97b0072a8d4e4949f4a0f3bb40d0cb397256d636ced815a8cf8dc229248c4709359a29c566c5b35f37cabd04abc8ee337c81d2798801ff0b3de1274cad26a45e8ffb087da7320a3cc61842801d6e972e8696680e370c96303f17ae09f9be1618c1ca3fef09cdcf60e7ea74f92526cdd709e57d600cd65d771b4710edd0df0fa5c75b248eae2a4a5fbb2418a41157c19fecf4b7e9c62c82b17f11a83577e98b736243a1dbc73dd49afb774f0569da7f10fb4409a37c3da27d4409ca45cd69282a9a22d1b4c6ece22dcab2"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "42348ff0d8a757e40f6f75bb18f82f04368961f65df267c65436414bbd85210b23e35914262011f813f2cf6f5bb4f5ff2b6be82b783467d4f5c62bca3399c923ffde0c8a54394fac0d96744aa1ddebb771fb10f5099f8715cd36060fb9ed1764d556cc3df54fc6a499d9a03fc29f4b90e865a9ca6f46d2d9fe9919fef29a63be69c00abeb57c51bb6e03e4f7188e73636508f80703d42eb031e2fd9bb68fd9b0c27e70a23edf6baf6cb79b320d737331ce1646547f08eb4350df48dc36deb928224d98aca4346cf0ee7241142d514a49b021bd3e063ff3afc5e2c8226330304ce37c45eb6b9297b74c787a0ab25db8eb875841bccc92fa9af71831bc852e97ccbb90ef9d08e20ee7784c1394b9b23769cae7959c1080b9fca3bb745b5f2726fb4b02cbf14d66b911c66d7e218ea6333010248653ce11936db9f59a0f0877e87f47f8ca0a1c5c78902f067fc837c70dd4c9965335026353b520365524eb6e2016303edf3323a803cfbfe848a093202fd65877218a909ef100f2c89b90a54e96347ad4d607e51410d09481cac3dc134d03b16ee438990dc5f02316a230b45e1e6fa54b1b6d4a1ee5fa1a57dc63bfc8644ed9fead5a71969c44882afe1eef35a784d38249d96046bcaaff86bcb229f411451cd51be08e285a9f4ad323fc93212099b7e27a22a45ac9a0d653308e0cbc71e4950fffdc88f9dc8eef57085a4bae5d03"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8982a0db3721ebec58434f262e634169b60546c70cb5d73e8d536809e701fb087b1d77ca4faa9963c0e28a039fbdbcc9b35995cd3d15659a07019fe126fdcab5e5c4945d02180f5c657cef0e509edeed07a1c15b89df552c11e4ff08cfd0fcfdf99883a15b0278d65fff5628841b5d70fef844b9aa0819f92d4de0822ffb837ea7a6f51db82ed1c5e54b6fbd943ccf995ab2553f5c68c4ff1993548131ef885f26aaa7ae172e20da50ae08fb873bf8a84c1a1ba2048e8bb2f2b89e0d75922ac819e8c38c2c557ef51a440395260f285e3693b1f39216cb3391d019401fce8bfb5df3ce7e6d8eaeaba7c092dd599ae01e84723cc6088021c715ea98dae85b6e7604834b9721b88bd77f9735163e330662bd188aa31f9f0f71c9c07d671dc33b0e0ebf3475d821ee96307504b9d27f8872c5b8590ccf03d77b2407a9512f218d938b4071aff52f11d95c5e62c17fb229c111d2471f708a30106f143df30127a5d91212c18df2b034c1a96b45dff46fbdd4fe7314e648c260eae1694337cc73d89fc6af8195e017bdeb0d780b729efac237af27b4b97c257ddba8345d9aff84b25c78bbb8f0878d2d91adb277ec11df94714a9f413e02ca51f3b539c9c18f6e2ed4cefb0f78f03d8962f7a7a3e8c2bce5529d8aedec50c5d5bbe9e53d2913a969444881a91d5fbbb1b1ca17fe5fe4a3b8c5c95fb4475ac7718918b71baef986d984"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "70ea339d6437f7ebc0618927dfb1939217df5858b6fceeb5a838ab028e717763023528a8a6f5e4514ee126e27045b1768694700e03d95de2c2c93b459a58e08516700f8fee64aa2ff2f37bddb809752a990f2f69f86eda7d81c1a2cc65d223f25b9e87706aa40c84a0cc0b23dfa30f8c4edcb39137a6b17b303dfe854e3d07072b26d9a57783d00a3c602bceef578049fd2c254580cd3ffa69aab9e12386f29f79d171e1ad4ad3904a4f70c31d6b5e0848fc147152aeaa8f4706d3d12c61d99bfdf5077cd21749ca089df3a48ff65d110460031e6b4b9fa216317fcc22d2279a582df4c4edecf7105d535cf94eab3790227a1cf8628839da2a35e55d813521bd3d1be1154584c00013b8f159565f73744576519144225853497d586656ec3111781d6864b69435cb7862c2590bc31b2f982ec85edbc25fd05aa9ec250c28c7d6da1c05ef3a43ba8b7f91db1b20a317a8559c8f71c2e27ccec96a1611746d843cad76bd648a7d8bc0d606e061d4256673fa445e244da4626054627ecf0b733330305ed666e06df05f7c26d8d38ab8975087f72ddddc305e954b6debdc8e529dde07dbfe14cde923ad73a13a1fee7c219502ce4d54db3b8913ee5d7039d9b00903d8eac54361694eaf031e8c5c60f65b2bbaa47d9ad81b89c74b6bdb4b3893476071a0ce9529117da4d84ca77bf23dbdca2b020aeee04cdbe46df9e64e0bd85c7b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6f32b1cef17d2b7a0d898f7dbbe142af2ac293a62a83e954e904ed3e798e3db533c1377328e7546be06b58d940d6c83b3d4cf8d85924c5194e246bd2fc05364ea71dbe358a352379bdc661df42e8772239e942a9ca32f1f5f3dd19b03b8582554c8bc6205ae11c047b8733e9a3c9f66cc22a35e1ddd5677ad40264414c245af46ddd501dded477420aa04cb4f8dbdac40dc16a1da29f242ed67ac2851167d693c736d897b24db4cb5acd2fe1a38d404d471400ab0b8a5ce9d12c96a84745c72dd7abdec52a23d2ffdc19c8a6c70a8d2839f741fd4c556ca4f4dde677bb3bd0ae9cd04aec6e0f5d730d4bcf93dbfcf274544a6479d8ccbbcd44f88a11cf646ab005e083d9a2e03d1246b542adcf35dcaa7ff43c63fe2e14617262f6c2d3d20bb928da76a7c3f6e89307eaef92b1fa34408e4cf65a075b3d679e4596b25d2a9a63bcaa028b0ae9bca93d6c5efa7c7878fef11eace76c9fbb873c683e2409fdf85d542aeba7e04323d97e56c4f51fffaad9eddf3e11f7a4fa2c9dd4541a194648481b42c4d1707af83752e9f340a86fb7de7f4c8e13f7c593839a250c1af76bae47ac434f9bf190fc48dfc249192b6832afd5a3d6ebad128b97749ba9d18e02fb26236ea71ac8c4d8e58b8903f081c54d12d29575124d2108668b388ae63fc47cd060645c37a4497ec1932bfc3718a1626a106af1b4201fc85443d429bc12170b35"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0cfb6bb1dfe2abcd7d77d3ce51e14b3d602cb705a6064bfab7de266fad294b733dde92f5f45be6219c1a7914daaf15e6cec883a33fc29720c1e908f378749f9666d43e28096d14d37b0a6e41de3be4beb099d2b20cb0baa3eab7dcc11baab9446e92c2c8540c49f39a9cf694d016d1523c081d57a182f3e3f863455831c4b264d15fc5c0f02b17113be41a821fd289c78cc80102ca1d3854c717cb115290afa92414c156c425458f897b6f27a35fb87875dd42b32a74c320acb318d62e9a39514d2e26fe22a10f4eccf18e5f784f57e5b10789504297577db3b4166e6520a7baf0025cce6c338b828ea66598b1c14fb6086eba3bbdd81cf0a84c9a970ccdfd90ef86b2e86744f53f3e40c2523048d791466a1bdd02a7a6c167801406f80d09b81059f3564b1685fbee42e32336856b041071e6f0ee9f1f5955fcdcc71de38f51ea49c8804d09c521065d1dd6a0d6842e4a35b7336594a72f96103212f1a29a7b00707cf66d2a0e1311779953aa177d05fe2005c9b2853802d65a2cb1e9fb4cb7b0b898a87668058352ac05069f99ce07c3807c442e15c3874c1a0695ff55bd8922a1a6b856d07cd5d6ef828654ebd885361bf01af85e72da647933db4dbc676a1af626f69af5a67c7017f46b8c2b69e39584dc9ba5b8f7cb8309bad33f859586ee46421b408f08aa4d4c8a5caa81e77f8592620abb9c0da0969b25dbee12cfa1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "16cf7e2fbe1b55f2e896f9da92a9fc4a231dd1dc582462f3461c43057f506b868e5b4e11b494442a0ae2c8408b6d863a0d9c5659680077389d8225c2d39699ad3789d68f4479bc83537a0fb6057c33e104d541e7efd409a3ab057d858fd0917ad044596e9ebce29b239f0df47abce2c017b95ccfdd3fcb4eec98e9326696996d038ede73a791f8992a77a00d37a2b52e2fb2d4233dd06cac88da8eba6f27fcabf8853e0ab5ce8316e1ee653a768ca6e54210a04c9b7157d460228e17c7361f7b9479d6fcfee5b21bd93389b8c275042c0ffd9f6a99849d721fc7f63c03d031531e3c7bc50df854c66404fabf5dfa5ba8014737283f4b0b12b114caa311aa2517053ce38021cb1bff374acb24f4a041718f394efde590d38802102832347cdc9725def95bddc648718576c39d3aab6da6083fa0857767b121f29f89e8820866765b1f78072f2b0149f1ce4ea1fe24e9d13a2535d6943862e714e1ef35faf1870be60deb61f90f9d4fa0e14bfa7d4f1a4ebc489db15f6b787ad8a849d449368900268318e7c06dd8490e33c7d9428247e8df4b6817038f0bda1ee294a07ade3e151f8ecedec7327f8efcd707f9359de4931a8690cee0b7ffb892e99efa78285486382c35514007d3135053313e6c03da9fa52b37c0ad2899fd8660c34dc8eccfcccada8324dd180045f0db90ab16d0728e5e74d55fc5f99b7e36c79683b4a53257"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "93026c419a69711ace2ee1dc5e6f97dbbff4fc92110d4e22a1466598342ef86305269d863f88b79690ff24d92946b6aca089b30f9abefc753f87e240ef597c07f3211fcea9ac6d2f64e71c67e45ded064554ef676140abdc05178af4a076f8eacae167503eb0ef0763ba37eadf8d9369f33a885a95f102dd8c1659582420f553732f9e5307a78549e5af9c60274dcf63f30feb6c673c25cc9012e11c7a88ab1060c85b9a93e3b1c714d2411ecf41bb0933c2927a2dfbe1afa509b3c87fa6f1605aae1c3da7ea8b13f54f7c469d64fcbccc183ad6fda89843e778e20aeb7d4a9d8af677d19bfddd11a2fcd80f91eb10eadff03edd0eb8886219cda5837ab3eb9a7726711e00822b41beeedac443d64a8979678d8229efab411dea95a03d8bb8987eec0d7d14c90bb88c4876efbd7e206c4b76ea4fca669a88f4876ff9519b642ca63eae475af87b613782146db4f8300a185b628f55ce7094503b71b7431c6d117d9e183f54559d9fa83f6abd13d253c22899ed8e4ad58c95a2d39d7991d0853d3680992313ade26a9667ba290ee6fcfd193de1ba287cd19cd0b5e8de4cf688855f48d4fba9cf5c59c876bed9d818c11a9f4c8ed7081ec2e7ba2886c95451b2501c81b55c1657cdff26581669d38d8f9f15e60222095c799dcfd6a98d52bded9adffccfcc5f00b684681f4b799e32d50f9b0ec45ccb776c070c5819e932431f81"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2b9461df72624d5e0680efb699739941fea201b9d04ab9885b688cb1786255c9148963e9d9e8fd7fd737f6b0e27cbfc36feddf7f3cdd0dcac50611449d6e74cabf1ff833a8d6e9b04af66b91a11089d011aa9f70cd7d0e5e27ac02f68cfe3cb0cbbc3498106d5a45fe2f2f6ac059e2c5fc36ebe11dc0bfe0adc8e518ae7d384fdea1a8737786ba1878b7ad4c3a62385ac467427e04d17f6f190dbd3ea8bf0d46a49647c3e1e88bc92d5ceb4c8e2975b9edaa2302c679e279409735a23ffe3ac61081709b68b99dcb14ebc485759b868238b2b8b910995b7fd9c41765aba670fb1f280a9656b128974f2e72cc086ce537d93b2cd07d7e1f15063cbb6eff593d800c524fdcf1f7ff5f67c773859bf073475efac79d7b597f4b07518c54cb48ce95b6e85b0e161d43f360587e8ad3396966c10435e6b230d594d2cf2e1c01ea4e0de34a6ebfdea2f6add8fef40ba49203882809d217c161620e590808791544345deb77b34e33a71de3ba93ff85bc6524af9e8d25cf0b851a8512eb6c12b1ca3788d214dbfdb280e90fae12e5b7198b9c95ec1323821305d79e1e362b093f652a5d471b849cd091125baeb2aa1efb4259948f2e1e99346d73d57fdee0081cb366b0137e150c4fe0929741ce32f7b49acb623c8175a41086e060b3b199baeb6d0ec45cb83b878f29776593f68fd278fffc3ebb4983803c11382067430c1e5876cbab"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4b0d312592f454aaf2bfb8061ca2e2054324b7966a95cc05b706a6c8315fb1e7d2607de94417c49e70712ec5c7874d34bf9bfc13c20cef3dbd5cce6b89ae0a9e8663a468803955a8e44cf66e4d0d1df8934fbe291fd6c6545e4fbb23b108f8fb31df091ed2787b43ba903330b32fc70489faa8ee04f5c120498a0207666174aee1a050e9ff999f26095361d15435e20dfdc8214e9e2fc5de10f3a136f29edad4ed5fe20fc2198a487fab1c969528a1c226ac1b3a24f443b13ef86fc39050233310ae3e125769fa5bc9b8a96ca98f8193e9f175fc0e9f87aaa26f6aa08aade4968fd14184eb2e40cb0489d9df6e79d6d962a7ad19d3854ed069ff3626d94c2780d855bc70f538b911e3ffaca3413c216c6662acd363206cdf9e3413da87a2d4fc19af903d1063831d9d1d42da77bc96551d00ee87f19790206f48815f04a9b3c01542bdf538e4d7dce5bdacebc3106780aa42a1efe68d4a3f552d49dc3adcbaad4a1c41135984a7512e7c32ec4c43e2bd8331ad2f6716ba5665b535ff86d2f29ee2c140d4e259eda93605d9e0c99bb1934d320a22b82f5cd3f830602aad2cb7a8847f9ce59c9afff662705470705d1116e2ed4a67d342920a500088e2ee65dc0bd307d5d444a9d0419076fcba6d95d77cf4aae87cacc21296afd85fa99b1c44c9da60e7cf3a8263308a0bd095168e0e3fe71ef4e24c8eb35ee008f485c23bdd00"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "76abb99fb22de8465f2276d5dc914623299fde845ca14ac1990360692771add76a3a6a3e78131eb87110323d9c8aa2d4996b25f11be89b5641d121819ca7f3c7c19094dddf5b2feacdd82c0b020e5d88f9e683850d7dbbb3cf880e17edd4d2805f75bcc18e69b804545826489ec5d954836345e7394dccd78c7cc8839e8afa3e59be859d549c53ea9828575e98fcc142cea4b5671e3ee3155ccbf7f950fb1ff7f72640ea7a9e086e9bb11a14cfa8c18518c0266a96710c1ec83ff3d9e752830a57e4ed3505a45236090ca20d82bf5b925e9470e0de1a7bfbc224ce9140c32ede1c55859b0d4e298eafbc67485bc70ac4d12a22ac3b8298d6c2a92ebdb5d3f0dfe1652ab5407cc6b0a6638eb90e0235bc3a5f0ad0617d28591cfe9602d015e29eba1e4e72f81b7190c1c5c3d016b6f7fa41d4c685edea280f4975147b575d2bab4243a6c678035b21a7b3a25c02c03dedb66f0aaf30ce12c6d8cdd14b110198ec8f4a4d474a68eac680d0a8ec4a0c28a13b27ecc39bd348144e69eaea5fd84640fc6b53d688c5417f590b91651991950fbbbd3f3ae3de36af47e79f8332134b6f26f663dffbdb9bc9699c0744162493a5e1afac365b256080e2288e8f794dec883a96cf33784a350fd220de18a524f9e755931901942aa16ba1a894db5312847a7c4d10b3f25b7de436b121dff3608d511953164c2a513becefe066c598dd2865"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "27faff0512c3ae674df1636664f193dc0a03087623f2e7cb0c9ac646840afa312bd12d6d08305a712995f500f4e326c4553d035c10a3edfd1b9fdae73687ef7e04183507a07af04686c01d1cd3cb2b37b8caf1b1f8eab228ce539d234fc85a438a482a9f8c5a73ba79799399dc9e4a5f23b3e1ffa1ca94e6129f7bbf64731aaea469f27fcfe7dce0786df8c5ee18fd163cc1d9d82265381e0c5bd213e5cfdb7ddf0435762f492dd6465c7653cdfe23e91fc73cc246c852d217817e4b4a14229e91012b65c0f98650338bdf4c07f7113af548039a8c487d6be9d37c03c67c1e5ad25ec94dbfc1b1db0b3a9f961482b049a5b88f34c9a0c069db44a874ec30d20f78612b828b378317995a51b8f634412dc3acf85dc2c7f3041428150841fd812c5342fa71544f46a0d76c7e2c244754c86c802079696c6cd171e3f3575fc200b2899539304009d4c415d3a229f7901587e4bea6f59475b3ac7c8593bc45cb58ea7bef1f72f9732ed169e87341904872a353ddcae7682324ed8499aa0eb8dcff78499533c771a4b9c3188061d2f3c389ced943180e8ff58cc9560503a993376fd4a347b32e817ca7d625bb9175cbdbf8c78f8276c8e63ff7113d848e2720479509c3de600a890979691fb107fcdbdc12de8628b45fc43eb37d1c07165f2f3a612b6a1ca94cc983a6f4bf07dd9522a70be6df83e8c46b0c687cb4863915ac63c4b8"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3f653ccc51a7cd8eb49a5842735a64953c44690e50b0498059cb84597890af109260e47910453e2e1a5dc7f44968dbed27aca7accd5ef8e16293336f35364b29150bc1211e99fe900514ed53f893ee1f09b3d42e81c310db06f2a4e24225d7527bd1903e095671d994af3fd90938c4eb81ec4157c72b25cafa0dd314bedf02423573e0a2ac667d273c8a4f47edc5ad33fc2c9c280a3ca6c9117d20885074ad0894d5344f85843d073574e578b551373e4927ad1dd623b757c831749504a6a2d12b99be5c31936452ad377e0debe569dcbe3813ea9d7b30977dae49ea8970fb2a681f3c7c32072bf33692ec5286e015ae65cb4f894c31891009ec4aac8586c23a4fcb6f1afe4b31ca611806879d79c8991ba35e440bc2f6ebe8869931d6e11a94aea2c9f3d74db53cde9acd84718e43a33ee282428f820afebb56dc6109c1d91f96f836eb5781de6eb773062932628071d60e1083f57e4ad1eef40d747ff1ab356848e8ea473304c26f58d093b1a8fb79fafc1642c2ab8b9833a9d0fd26860e5f1ce3edf3e7b5e256f409986beb9d5d5bb645f93d3c95082f85e8cc059659df394a1e1de733f1922ecd4eb0207948f2d92bd2da4556d7043ffbc5594588bb404b68b5dd740ff33489e9d986d118b465b2edfbe2fcd45957f2d23aded5f92b118b03612d407276b34fbb62e23591966b99db20aeb5efcde9a272855fe399c6d0cc"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "90e94ab7bb84c849d93dfcfd61aa9f9cf9dda1e454c2e845b4efad8f0b7e63af128e82267f1ad0ee36f6c26787f82383e707d8fc7a6a3d97951c26448189583a71bcec194da61766c1d571a2859239cc1a859a0829e0f8f75445665101c42b8b5c00ef6fabb3091affccdab5207f93da02121afe7abac841336f2fcf0d8dce0f2a983e0559167dae5d6a3ec86356453e194242a5529b54c7f78f541b6e282f3aa611a9e5ae21da4bc687cf20f1986603268c020983eb97c32a0845cf82129eec4d525dc5fb030ec2bcf9cb4baced5d98ab4e72470ddb436a4f886afa6d3dd7ef5a8b9c6b071c63de611649f875334113ea472d693e37cf0673eed12b86d369598a6dd765a1757841ba7c3881c4e922e5c636cf43b78b23914beea4ff406b4f27d7265094080376e73ac42eedb6e4d280128f1749829bae61bc143465cda263fa79c9cd1fa5225be01b754a589a988d4df40f75c78bc2282de00f3885d8f33da3fbc2b3dac5249e2ed3bc40480ed7beb6e66b30a5aadff784bb0276e7e34b3b109fbd25177f03bba7bbb973801210bd3db1967f4876404fe79b0f4e939d092027a32978872307492c5188e42c7c77db7ca22a3af2fa79390e9e625deee87b3bee9ff69168e1bfe35ae80fa1bb088d1a8d932ec033155fa253b14f462b5ef68bb1926fd297c22fe0e5346263dfed0e8281f6771eab8dd4fc1273f98bcaad7250d2"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1f428cf323f4a3dfa4d6a472da52dd2bf729c40931530bed11c1febaf81670d4e4bec755742fec82b5b54228de120fcf167d0fbac109363b59d8dc6c1fc469782482f4a0787f99ba3e44c888bdde5647b2f4e653537398ac002478b274d2d03e7da9f59cfda4a1c97855546af6c803a8e4c7634ca57a3bb3f3cc2262cc5abca5567c88536e6bdcd0a8d6408f85a5f5412f0cbdb676a96a28b82dd92a70553f938f3aa2715bec0ff66bd6c78543dd90f77a629851453870393838c1398469e3db89431d655dd2cf056f79dd1b2664554475eee9560e9e40866ac22506b36f23d8adeb6a67c2cdeb7a8ce2e43ccd83fb3f245e5568f4527df8013fe48cf96d2d15d7e71ab7c8719d53b3cae531409b91d12482b00145a44c61b8dcd1d2fd7ceed560aa9a01d38b8be84d079b09e34300b0b17dd68f8faa8ec4d4fe04dbb8f84fa34ba177697986e9df92d87562a551d02bf884fe04825daa716ecf3e691f09881c486d4b177d6937edf9e3fef988fd07fc85d0db073c937b712f5c32cce6112c246bd9ae487e8a43d99f9562faa32471f8e0bb5c17ada522535b8bb49cec679b246936ed041dc5b0c21ca0b3d2a2e21eca05a32c8c3f379fbfe6e317697b617746ec098615e84ecc629259eee9fc03b29faa2c989a77d3e3fac7fd1c4f54b3445428865748a117242ec72937fae0ac46aecb5e3d20dcd6b62b8c2c2fa047531b1a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1f7f54233d94b7f39c564512e5823bbe52cceae7c3f06df476944ab76733e6bc4f8cc73cd00a381e0f15a617c0307420d3a34d2770279d37f1006cfdf2a53537d10f235ebca3d0d8a0f806bf491672f87a4792acc6a4a07b73dc1f39eda110ddaddd9ca564b1d4621f854a31c961ea0e395c1c7f8b0cb5e1769cf9e8b78185b9613b16cccd9b064f34ea062eb0357d9ac6af194a64902f81144a68be0ce96c420b52ee18bb2962c1dbc5d3742f66edfe2d59dd71af67464db118020eb8c4e3ef3adfd55b7afd2b5655add5e496d2a9a63ae40865d4851bd399070805617cf0080e416477652e43551de1fdf6b83952d3d54f0f0a1543c841e9bade2601fe5d577461252c87f0d2a8b5d54a8e4525399eeeb9320692351672e376ed23f1c2b2848e06940752f81619e844dc74b1f701310175cd2648140b6d32e8e016df1db1a095856e02d7eaa9be0999fca870b61afbc0b84170b27b4e53afd6d572409951c90cbca5cfc8564161dcc6521d78e8821367f4625c0c7ecd91414edfbbf70888d4b78d67d00cf9fb8c9c31490189aca48e00001768dc479b644e964263733fde8fc5d07aea1d815fa62a9be74fb91c1919c86153606d6f304ec795b884eb8d2ac2bf02c96947471bc64fd7a419204d30669513cd28d8e66333e545cf5b9ea6923ae93efabe4786e3efedcd7ba8c2a252c585e39ac8a6b057403970fdbc4e1d2723"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "702bba4de538108b51492085bc763836a9b46cd093fae12aa2790cb0e8fef61275b4408e4a2314983f20281fc4bb128a9ddcad7a012d876bd92a7b4d6d0ea8c534f27323a4a89b7170e4812865e856305696939984cfd20cf8334336645177219817299ec1fe83ea67c485ace9acd79c61c88335cee12e8ae23157143fceb7682d84bc1ad98f26e15035364bd3805ecee4e65fdd4ad3ed07c99c6cfeb9b82e7e6a65d5e5a78a65c10e91d157a974e13805c99918e564ddbd4235493531270027633351f7894e859fe3edfce0a147fcce04b06625fee747d33e3cd22145bf2c00442a06281c8f68253b93e2ece326bef0953dcf5ccb1303f6374e6e6901021ec8cf0a54bc974fd0276e4f36124cd3e8239a12f521dc50d307763b370e6b52629cd57913fea2398107bc6a9fc8a7aeda371f53b12c1aea1123458dc65c0a9e0005e8eabb309650bceb4d732e6d81f31cbf0fde6a3145bf5306da86293208e440fa8340bd046fbbccf13a5cdda3a1a77c96722ecda22f78c8b8769f0d14fd7b42d6212210a20981baa8f421e5f23e0236442011e2f4a65c411146257495ea1a68a6b119244acd9ab77bc9a462c842df0cb6cb2abb65547a5e015a4fef20c9b11be9aad04c5a55bccd4dfa4170c0f7bd3cad32258026600db61c672d8c316ad842a4acdbfcbd9c857dc83b296b37c789ac07da2542663c11c01aa5a747db78d927c8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "00c8cc7ea2b6be3e5b4b681223f4cd3352eb64471123d318d636b11cf6899c0a1effd923a357c443e2045fb2448cd47c4f5e955bacf7764cc98b4a509c4332bc07c866e46d7c70e3d7c6c771c79ccc701abac6c35b555d76b207575262263e02273e56a7cb05bae29baf63c58f5ccb9edcdd67a89b0269fabf3b5af8beffe3283db3b265c421dd24102815907bc24e9eeb77679d27ef8e4042552fe0f02d22a869216d6da93e4a8b80352994ee7bf54ebf9b84d3030d925c3dcce1e3fa0085045fcabf88d2001cc38c75ad0471b33ae95f0b46824c8bad8035cf1aa238b1361df12bec1b87df47110e55ff598fdc7c5e20942b7405417c32d9a1cd36eba4b7b0393fdf41dfbfe4d60c032305763d31b4f25bcd6bd5ccce1fc7d4c64ef844fbd717276ede8569582b64f5cc71ca0a12fef5a2810cb730460cbdfedda974e8c2b0c744739bdac1720c2e6ef1be539dfc844e42342a6bc9ededefff5cfc5a0cdb8393b881855e1174ea97d513522557d1ebffc8f6e8eb684f88afdfb7b0ad4df0473a6c06909dcb337930509f931c180d6a0301d5816721a6f5c39b1868bb295d50a56b97c098ad7c7ca0b2aa48b2d01a9d36168b871fc2e4d0b178cdfa79af06a1d2b9d0ae72e86c37d14b8fa3ad475318b7504b1c2e66dd216587e9e729327812fdb1e4d71da71db54f7295f5f45067a8295994183c5445cb3f68ccc2a7f92fe6"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2c748d41a5f5f157f6154cb759ba4ecff2f45168715bd0593b18d937219607aaae40b39a6b170c299342ac21cc1d3206ea5e6df4f5ce70bb97d7384632011770315162ffe91a7a71bd786e6dbc04d7e5aa0bfac54560b51cf694d465360850cfd408d1cd77d2ae328841a63f27e6da43ef095daf54cea6af2b2e6082e9b4c44ffa3299fe03ddf803f9f5da163b65e1909e36763081a3172b5ecc0e5002c11d4b6b3cdb108999ee114023c2c64f97463a413f874404949c72a3748ac88055697129fb4ed69f524a5c08334e23fb3b0a73fdd0633a0c340ea72ca6328f0faf3bac9a0b6ab7f8fb7f1ee985fa1bb62695483fc11a5d6c3feaddf43db2397c381890f3b6d81f7876ebe164dd5bf2b88c0bde11c426e0abbfb304f33ed00ea15e86baad0f9d658f17c74e3d52f2cb53ac9e68656aa5d6fea5c2dc2cff18ff000feb5bc6406fe3287f4d47eb500fa1f4755f7ee9ecd627cff5640c625bb533e021e32d369817a8c5bd891c0916ff6ded758eac7e47871a0e18ee3380052ffc1c4ae0a8eff373cda8ee377f8e729ce9310ad88f86036c8bb3ee0a3c2fb9da1367cea8a64ad26f32c65f589281b0d5c1dfc9ba413c739a84d060816bd44ac19974f99c4a2bdac0029dd048647ef29243c702d32d56b695c70eccaec8920991ec23225d3f05a592ad1b72f381bbabf04681d298c56990b04aa8bc14544af3319298fe39e1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "465d23d6834ec169c3872e094e3a123747041cff6b5d206fee63a63f55ac1db3152b5c92fda4379f42a932c472d2998f0aeb2e798add6eb753dfb2e8280acacd1a094b6249f092cd6fee9c4eab1d427b9435820661ffbbe6300e6e332903eb33af4a9816eb52f7b39bce4ed1ff52e16ba62f3bfd6297bb24f82b4080404d84b9108368722205d05db5bf6df7f749780aba7346e0ced6b319033e9e5fde76f78a32955f80be05304d1ef98359c2c550d22e3e0cae49005add80637fa4813548bfb1f5d6927e6945aa5ce7b38b4ad3bd51bfc01c2eb5387603af02dcdb5fc2f5436b30003fa7f08088870775715aac5043239ca6e4e50d0fa72dd02b2cdff2013bcccca08f00c2143c53fabd27f16bd6a861e7ffd43dc517e777c4e70c01fba296970546c76b3485e670127a5952f38f9e52d588eaccac0d6e0a373f5d09d39ee043fdbe0e9c9e20bf202dd06654b348d31890bbfc0bca8a32e9b5ff9877924bc9687b935e0e8bdf37b4debce3ac68e172737d534a32b678f6a77e9414dcddabdd18d29faca8b832f6965b6c2233941d5734980d0f85198c69944ec77cae8f3c0616ddaafb4faf8696df2f799fbadf590ae3f91877adcb8a5365678cdef5dc9832cf23bc4c578e51a11de737d3a552cd47dbcbc06c642162e80bc77ae550a6a8d6ab0972d02550227479964fd552e78a747fe5ee12ada96dc73791bfaa26d2a128"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0ecbdd01a1c44135201fa6f76fa7f872b9c8c66a639d829b7a948b31e9dcda714028237cd2d4b4be7de187500fda631fd09febc5b40fbb6ee3d2c23272eb4daf8aa25f2835b3582cc7d59ddc17ae6b21e526e398010cae86b8d20bcc665f39012ce677e8c6f7b36265cfd95186d1381a78b6343650ebbb8a3ee3c65c23196ec7e7b485c674c96f78bdf225a48525a7f279305e95f9de472d701bd4e4df965f2b5e4da0ee00448c123fa27a5e1b91679423135b813c0683dc93a27d5a8cf1dfa80cdedffd82901180268e9bdd9c0a7b1ec2c1c072590157dec23c94d368e08d3efc631a45f5b830b16c368390e74f9159b1a1da009df1d7f67e11b5b9f2d5dd903ad8552d1a157c99b46adec5414e45b15fd9d71a2d8c4990265efc517eaaceb3001030502675ccc223c6031cbba732bc14add17d3926619caa3ac8e6c1dce566106dda9a54dd006b64063fbb8820e84fd5d2fff2da78eaebf009cb11b2e60eceebf81ba5f96a099337295a2c79d1bfae9237af0507d2d52661b7bf192546c682079e84abc1bdd9b0e5a74a97193c8a30b80f48dcd704905506abac7e0b4abcacba70d73fcd769f06aaa40aeef7e997c8b4762ce58f68413e74998de7322f472a54f18fc94c593d783f3faa1bb67334ea05d53cdded2377280eda84bb5160f3da0396272fc6309f7ed4f316ff75e940b99ed9ad067f709143eb637d55076859e2"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "05aa660766f02f161c97230f9e25f488b91c2a6d87e6d53036cefe38cacceef752c27ce50c10703472a3c251b88f99cacefcfdfd21254579ced7e09ac6196282f764a387b121d7b6d3f9770f0e86bc2ce5d0c53e5783e71720642d0356a35770d59981a65af5b59873c080261875e9888dee16bd7b25e8d2904913f9043f78948485a71ae7b3cfd8f0f034598f33fc9cbe523330eccf2446a2097762b690dd8c3b085da792033196549eff207a04c57e2ff57520a67197f41fcbee64634b404fe7d2d97d8c9fa40018478cd465866aabbfffafbf2362a8c85a59d0289ec015804fe607bd68972029c4fc5d80255696000f1c5b3e557d133c3088e56b884dc054da2c8e4b79e2ecdff4510e94fbb104f8a28630f70ee4654fcb1750b2f7ad427cd48a99e067b6c9f79044a551b590c8840d059bc60a1c997405fd838f120e583e197084fbebfd2a6c6e7151a3d4ba3e060e960f5c1f5a089a83b6c9071c57431c0800d2293017adc4342285eaf86ba0ecbe5098c438af06bb92a48a5e6eed9c9c7d4ea448ec9adac781539c388043fd0ab32498120b679beda9f87cbe258763b09df950d285d0283be68f85862896f3f5368313a63dfeed7a649ae471020144c62def4ed91a08b6201953daabb9259132353d0818fef3fd813a99568bc2b9460cf8c66921894fe2b326a28987f085ca0a128313874dbc969425e08ebff11d5d59"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "33c30f2cf6f155a42f2b8a5ec0a33b35e47bc38509b18067275e932782c34a072219ef00d35bf16f674f19e4919d2cfbd551baece5ab6407748cc7f2d4fa9a20cd9e6138052f531814a3726ae526e4c7288c669399d9e7b6dba72637ecb9ea2a57ca245a40bb575d01d910f53d8e4411ddfb86deac63507e5b5a9067cab201e4655cae0e0fdc4080021127f40ffaba0897606a1d29daf0133bb852290b17026b24a2e85831eb2cadbdbba293d280be2ee7107c7140959d1c4dbd9109c45742764ddca70b3a62578480bbded1a3838300b56ee95df354deff4a2fe1b93ffbe90f667957b6fa01bbf459194dde361921437a005afe4def0d4b88052c5e77fb1aeaddbdf3c05dcc411e98a5d7a44712fced33eca403170ff97a76d92fca194783389d6a798780e60988edb44b098c18791a3fe6b92cdbef20d17a374af4aa621952ec7f5f6630e50a919f2d0322f53faacb5ec7fd72ba7a3e25dde906477ee28406427530c9e97855b4591d328f13c8825695be9e3f8c689a9ed50ce797d544c38135c5a0f567ffd129b381d36b29ca22d932ce0d4ea8865bcfe5590adc8135709433adfe3b036fcc6a1371b306e98eb449938623255097a71ab2e49f5ffe29a8c282e5e7d3e4e0c9234393e1e8a6d1fbdfa13a894eec697b2e2edd16a17670ea7ecc0c6bf478cd69a0e097b23a8bf309f4e7f1784ae8d1ff3316c8593b6bd180d2"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7a5c8763c6f5d5d055a2db5896c8887d25e74a9c736ff6abd741716902d3844be2d869700d9f5b42febd823d562f05e1c939b67ce001a5d650d9228f8fb2934856156391f24236a65f6e7ea4cc78a6810aa820497aef473118977fb2e3730a4562642862ffba0ea5e99397ee61a626c09dc66e012e957e272143d925f7ead0f081ae1d6f7dea6a6b7b833070f77479ebfcdebb6fed3a138b5d7c8a94bfab96fd776011032e2cfbcbee33989edd77e3be5638524c302535bbcd9d59dd58860e93bb6a82efbc62352e75705380c789ee89709cca0353da505f16b55779ee30327bd525c0fce4025b8294f8f4108770563971bc7110fc4ffab26baf66cc9bdbc490f1e2b9d80227aaf3ecc35112b78760b03b61155d2065dd3c4a9fdb9afd85a940a579b67d5efd63905dd4c3d6c7995d9b34543310553d8161b63efdd54fd5a332f8fecf099898023b24bd8588f710804e664cc094400524b6027b8f52ff06e785bf3f126b660714b2aa4248e81795bc0d3867e60c8875730816ba6b68f7ea92484e41bd3a30a9ea90078a2fd8d096ca42783aca73c0cd6d21aff94d1d2502b77a84c88b86c27699db11d8d4e1d2714cf052262543dde9316b1852208e71aa584da1f8bac1d0a30d699ee6ff62fd1755f97b25fdde6de589bb316c5b9f6c5b6d0c3bd610e6e4350696df44357ecb3f5dba2ee9dc50cbe292de32d9671fe20f6d2c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1f1a82ab99d806066d2af6bb4a3ae9a35f193cfa98aa9d29b6feb376b33b1dd7830d6ccc1ecb8966a4a8c396842742e9f8995eff6b360db1918c258b915299728736b45d93405c5452af8cd52aae2d481d5a41a769d94cf53c0bb0d2a8d0877943caf695dd2e0506216898d61fa2c4b9ec67b0323a938fd9d06366ec1a2e3729e4f10229fcfd42422ff544bbeb2f54680a2282b45ac3f74896cc31efc42fb6f119107487e3c7bcd369c44d6cb642282edbcb8ac50faec527e1ede0395c0858789c3e8921a7d632f2df2035c30ed5f3cc764ef73e305b4e89be0bb85c39f1e615d1a3f0382ea6c135d8141d3ec3b4f15469e3cb87a6923ef896593a0ebd3f2aed14efa4029d95fcae1a25c84fb68103adebaef152a6d78e31ad8000df5c49395b8a902728c12eb493488a4f879aaa238a99efe4aca0605c2aec06bed0cc67d25601c07587b3419b7b50c65c83d6bd24b265bf2e9eba998f631010da1161d1bef73860510001b1801aeb3cebeab0f9a727c0f5f4160566d85a0f3b38c90fbc90944a42fb31aaf353232e2eb97f324974bc60e6f9a3a8949d10750905c9dc9dc8cf1e80be9a3d0c6ed766d2f92dfc28f26a7a94725dd73a866012243af7a48394da3ce275ac90fb7ae815441ee21ec73b816d09fff51bbbaa9ee5c815aa48ab10e1e49caa30dd3c6f8ae468c78ed38de95939f3fff84080c1d16568140dcfb4dae3"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8506ef05a285ffd4882138abd8a8244a5b64fa0f7b98143c4ecf04ff568e87b8d519e53ae46e6dc85314d507bb6e63fa981cd58982ed21340297f05bd0c329b8b88c4be22825978f966e14d2dbae662a7de5f5782789392a23e7c89b2358bb371254e8e961608e48bbb319f12b5b89dedb8fa63f1ae121e07d469d166e2581b3f70012e8c3035eda5362cb38d169492a624bbf14ca23ea52cc44728a3be8f20040d65251508012ba07d9af43ac2c9c7c91309ced6e2a378ad71c599c006c91531201d6a06e516965cf4e7ba257008cb4ab8760156da5d3f873643d55e8a0961e6cd95767b9b1316871a54b7d2781623e1f3296f53e9d4aa0f0b3b81fcb1b1b645fa87d4aa9bba92a1746959c88471e03a82bb062f63b9910f41fd25ab836fffe2d69a5b7b97beb3ceb11776526494413e5cfbd8fe9a197bb0f826636d6f8065f4878ef96e4289d507fbffbca0521f0afd1dfbf3ac3fdbf617930f21a6988819ffd614e9078a58eeeee2760eeb4b5f262112c11f4697c92e070f628b599b7ee23761a88b63d242af1cc68ea5d6d9dda11a3183b15b52fd32c8f84be70fad3a7f654942989abf14b43a47ce3a4507aba64126c24983c3db56f15247ed962ebd43243957979580408a0cec8234f1d05e4fe94edd33970b0fe90af22549f280d76739ae8ed5a050a0956889afbbce22a1cab5e34eb0879352008efa6fbb8d3941a7d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0ced84449122254f1ab71dc510a227d2d142d4853d842b727958ce2a4136449821783dd1c5b43c166b44228008a3dd80a56099998c73bedb554c4e9c4b698ba89b05820d2219f383448618625f384cfccba5e7bc0cb5a6b7f1e40bb60bc007f4565e4f6998a6cd84ab137804b205adf82594b899ed9fe913f87017f057822804434417805a718437fa5a224fdd46fb4f6c9f3215fbdc9ac3ec41e2a225bb61a2f087a3bcf3861b0294c7c380740d012ef0bf4057a2a448eb9e8a59d36ba2b24ceb9416fbe70e2456e01b3d90f30b71ef798bc0c29214ad7c23ed8d2f5d3077ba81132c9d550b9ca887d36ccf04c7c02cab613eaa7f220bdf70d786a3abf3d4e0d9267220b9e204b843b9b3b4fde4c9db44485d1d3d9625494e610e1298460ae1c6e7099a6036c1f61242511b9bbfab6d3065923f1eb9941e03126f70bcb12f22b66f0de3a51824baf08a12081f76eed8c546543b218cbf583685dd2d3301bc03a7627664c35e9dd645562e8aa09cef36372691895545494871aa18613e72c0dddfe6379ac24b0536335a7e38b834eecbefc78804856272b1fc59929399d2c748d7d710076f96409eebbd61ffc0b8458fa1f9a336c8a7df34b970460a98b2d39cd3b1b9505388786ad21994dfc60333ad2897940e727c2ef0318640d172e0d54f789d14b9c3bf3b53d37198dba7570418e1753e7a09cb8e31b0ecb98f948c0155"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "67cbd286c5fc6858a593b0cd54dc4cf593fec987fb7ce3a405f71768f7553ef31391789dc4494bf8a552367cecb2e1b3ac470f64a40a405b64f48c470320fef4843e6f36b0460e5422187b83842495934358d530da19d8b44a361f313f708035ef835619d8589f187dc574b132ba84e8e8a5c607a4ac306a2d2f6c8d2867ca12838f0fc38dd9fa08ed166bb58aa5fc80f67a61835f4eb95ccec06a3951f07f7e17d833aab01e58dd7731543dc4df60ecd3f116418576d7b370d11f593d185bd63dceb369548f2dfd8e31e92ffd0d3752e71580f45a880d194d109ae694ffbbc49d65f5293c1e85c1e6d183cbf26e9a0346da4d4ab85ca666b8fb4085d414c2e5cb1ee68159a159bdc57c4aaf13add74bf958a37b06e149952fcd282fc4a7a4f4c2bc6d78d7d0692e60a5d8494430f3312c997ab2c28522c0a8c8a34c5b7728b88767d27396f62ea843733cd4cd110d998ecc26993d58c4087a078d410a1af4cedc5907bf66712c4a545e122b46f99f30c85f73a600d6e28700105d165458fb052c62c74bdc9bb1c5ad786a2c65854e077905102cab2867253cfebb2511495d72776c7386f3c4574d74bccc1b68bb19fdb88ab495e4e83d48b502b7abe224e06bbe8c78d49e49dcd47ddfa6a5e960fa9c97004325a42f0631019507d5e729f58619b7a7e8f2cea15e3525bdf4d5fe58e2660b9a44749b73f64501da8a1003aadd"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3136aa430fba1f6359a83e53006f1f8e9533d2d3ec479e772f1c168c472fa665062d1f8101418d6ae9ac8708b777782878700e42bc674d3a2164c5a047651d095a6d93258d4941004090625843c6687a2b5d1470cca3549d4320dc2b98e30d164eea12fa9176e58616804bbc9d40ce9ce2488d40d24f6c58cf88d2534a11eebd68a7937b0dd583d2d57012a9959e3c1b7fe949527ffbe5fd7cb035029b5ce86ca88ab53a91cfc68f72fd6825f5fb9a8616287756274985dc428fa20b8bdfbb89b45edd7fc704fdb6f45e6b227d7e3f10330a2bf5527244fbe11f515567afda4b64e74f97f343abc8523e8127c4a2d6f2412cd3f4e12ac315ee025e1995e87711b4ee0914283a0a950af4785c83a11763d8bace933a1291f2e4e88b38e1072ee83f9f577736f42d4e3559a42acf814f3c0e68d8e166f5498f305eb4d3deed48f9cac0bf4f5cde9939bcde2611664b3e21a88fcab01e28398780cf23087e3e61d09281ba6424b7c29b822c72549c2dc901086906f028c93d1810feea676cc90e407af68ba34d9f4f1ff0253d8cd4e49a7840c513a7785c4af5bfdedf44dacaaa8b5ef26885de1505d8e404b61ec36c5450c50bc89064688e7a8b6493eb193e87ab5de64b3d505eef5c462547174ccd7250e97ccb14c5ccdc87f83222708813bf9d6e7bde8a49644f7104ef51ca30e2a51946aff944933000cbde0ddaf25ce70427"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "33002b3ccc5932a62ef488bc42605590a0e1ec2859a601f7e4b95499920a784ddc4427e34db6ed5cfa2d8884ce2c35b3c4db8dfe9d24f279490c37a8fa2a4736c6853446e83057c9f5ed75e0c95df818a49fb5850eab03be1b03c839ca9535d789e093063997fcb037edd6581a991b80ee6c0752176033604acfc8ee8df07a344d8b61ec61d251accfb4827ff1f9d81fcd719308e9d77de8860f39b58d0318e76f75157538e4859c8aefcd70f002f4c745ee9dae1cb0b00e65b36096bf89c7b4c8d979f8aadfb952b5d556edc7ac56a89de37c29def4cb7190564c40a8285d5dcaf70c16c4cc9c1de536e4acc57b2a258b6a1d662b9b98ded1fd0977505b15c8a74b4e732a48982566c340f3c89ed91c5bf69285b602829e166105866c167075fe935071f7f162c5816832202aa2f0970d2a24b1fd6ce7c543f71e0c4a577b46713a0a0f18d2650ae26733f8e47579a883925340b46e1a2d5b7b2aea5fbfbd2a2d7bc72ee4bab418b78ef003b42d3e1680682a773ce484e285029a6e7b95c9f5c60ba14cf5ebef000e1d84c36421d99524c8ca871516e624c47986c5619ea8134de55c95169ad1bef91f9a481aaa4719126347a73e933ab77acdf977952b3b2a9dbf35b8ee49c9d3daea867392ec4d08deef2d53dfba3dc71b08b7242366c20211713be78ee06d6fa5dd57a7d0ef76d7dd7cc737e0ccb47cf82fa2dd6fa06052"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "86def3d3601f6ce4119991a342a8b0406ac097ed452aa914a8a52c83902742e3ae613a51160d803533b69a1af1197f759812e66d893b24841a068a7958f3b58b65fb0fd8dbac2aede44ca63e4e497d5b81746f72b9c9074b364a1dfdd5059c3851b04827a68d6076f5d24ebfe982d14519c0009ebbf98e1c33f96b3f9bb8e0f6aa0bb2c6ede48bc380c25aebabe525f2b6a328f70e060c853fb4286a3618ba370c046e3b208fca83012c1df0754c567d6c65108a771617c15c666efc1a29a3299f283e7bec12c64512c7b6ff26fb36efb27a3cbebf3d63f51c62aa75c135e9210acd6b1cba9a5add66c8631a5e32e92919c8af17d256cc41597001a1809886baa5e6b4bc1ab0b715d800c1e1c0391e696c59ad53cee5e2e4725c237c0a861319bc5621a371ae9285d7df0bade74717dbf2402118099944bf5606e66966254a045b27f4d2854c6f691c11a2c08c98f8cc3bafdd4b3e89f3ec65398acd1eca2ca3487460a52e6c2dd32e06e4f6f108e6053cb25ed452c806b1ce4cc2245b1503a65f40dbe2e18d97a9ab83e4c87f6fc320a598983a4b38d555ef5483129528f68c7f64e3c7d2c8e501d277119fd23dc04007e95b5cc512b0d38446dcbd38b3ab184880a7b7944b72b9325523b32de46e9023b812fa87b5844b8f10b76e442a0189d1368068cb06c76d1f8e34621689486c5244e1580c8b077dd60644a5190f3765"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "926967051e01a07e92cb09e000af2f84540d299300aef0846314095496f1f581b175bec6bec2e1e0b2b500103d9630499c1223ef7639608c4afe310036729dc82570296f4f21b07274dc2b3dd8fc0ce959ed2824d7ae31f844e6df52222b4c57135c37838cd8fdcdc865e1b5003fae5fa1dc873d4f383da2695a22f792db918dd6c8dde544bc7395a9ecede7f89807bf61a8f60a200bb05c34c9fabf2132963fe05a0dfcf39b675e03c19bd1bd53ca28b3cc940f57fecdd0239a67138016d386f55c1f5cd9d0f559c4f0b7d2e657c82321a46d56c209b389628b0d5169f5cb29c1d76a40dfe561e747544da22c8d623f2ebd90528d54bc18cb659a0aa24c96784951d2bc756617d12f71bf6d280de7760ce62ec41962698a327ce3c9ca3417b08e5af3f6da41c5f66ddbf0063993f94e6762af251c2cb2742bf850082bbb23e32aa9200f66988f70b4c0b9b222755af81c537392f2bf3cf23d1ae92d4c3b4c7219ee33fd64dee32e168ecea35b175813e95bd491943757f9cebf1f72b5a3051fbbf3a70b9d0ff502cb3ea32e6f0d46724b39908a56d23f693702576aaf576e1bd374640100aa535210c19bdddc09746b47670e4cb247fbf385427b4eea4a0a5c8bce1177db1d94389bfd527caf4491f52bafa1456a646220c01234efa5f0d6129a80424a297d7cd08bbfd91e0afa46d4e25bca3aae16dee4a25a833abb3b9e8d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "737256aafbe153ea73422174441f9dd755cd5acd5a617afdefaa710667213ec1a8898073ad343eeac6a44811c71f829890b1cabc1fccb8510f931046e83b006d4ae7531483b712f5fe9d85549d2a0468def5a73f5d28fca1ddb4642f849142f34d71e54e31b396d31e89fe62210e35b2d80a99aa828258091284854234c48ba135eada9b00bc1e365d321a93e8a48d7ce9666d828ece8aa3de956658bca2c865885ebb23d72744c4074ad599360302b1646610e66f5fd5e8208e80f18442994d7cbb56365848ea3c0a8dc9f7bcfda460d484fc647bd61d9f115983663bc15e8117ceeb229190ded8a04c0aba823b4963685531cfb4bc8638df818fbf5d645b0102a6a7487e59f04d602eb06df179fa77a2fc108f517bdda2c30a529831a0497b4ab8f89e3a2f1c2e791da91ce7efffc84737f8dffed8fb58975cff504d189a5a5486308ce2be19e5156f9fac44545518e622c477498b435b2815a6c860058d097a03b4d827f6a15fa297b724acb8a9e305eed0bed3fdc4c1114e81eb5dd98cd4a84c2ea289cfa8701507daa5a051e872208cf4727a3dbd48673eae73d9be09578a8cdd6cb93e4ff2aa63b293529265cec435600baf104508597ebc949c844e30b7167b1759191a9a64486622a5157c48248762aff8bfaf9fe2443b10313b54499d880daa4e9529ac6c182de12235fb938742c29d59c3bcfa7efeb00205fa3fe6"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "290c85cfd3a35aaf80e41ed6274b04ea4d40008c1c342ca106b9f5d51c485d8838d0f3a35bc80a34f464c612a9bdf62c814563fdded9e63a078de471e55b172a03a3d46be144013243839796d5883ff1c74ad5f3459ebbc468c2377bdc4473f0c482fa40925571bf4202a7db538993671e342779af544d0baddfb6d04004abe37ae67926e3fafa755717b84a1d2a0c1001d7d3e91ad7a425b19ec8a5b1c30b943567c8668a66d2af2dff1d6ad6e62e5a0a7ac672d186e055082aa2e4c028e23196034c1fb9d8ea176316399c885788ba59663853c62e3a857b409f1d23009e65afe139815d79b879b8ff0294c5aec6341958cebafeabd6da062bfe24297f9bdfbb209dbaeb3573e4a4dda000bc11d61a86190c12a047e5916404f35954aa36aa09461b8048f13f2f1b0fadfa4245e5e179e96341179b171990e69622bb3ffbf9e8c685b49ea93c0bf430262e54c33d51dd93449cea2ccd9a68258cad7314d2504d167bfa6d817c51543012c16b526f8bd5498cf25f357043b65075edf8508fc0f5e81c845b1e0396da9783bda649ab6994a021c0e3d0cefce546b38515698071a28110731aa8e1ea1674e051de11c4adbfbb1af81165f8bad4351767b1f10fa5904062b5789e9ef545155b9b5b369c9a90e6087dd898def6513db5bd67a1dd02b5a960f357890af7aee1cede04fee3e56d8a4a1e3c57ce87c920bb5ac66c0b05"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "705a1003c5f3e719c02d48b8ea7a951b0ea1fab356818f4746013f6373872fb36609f65d58f165ee0af3f2ea5ecec02420035e0ff80bb33d055628d31b0212788f291b38cba01a6624c87aae1286c465160e83461372061ea304540d28ccb3ca07078beec13f6bf62ba4df170affe6e2b36df74f8e0d5c03a3f536f6c4212f54ed2f752476d40d029276323aa183c886c8b096f894ba98cc0a8eb4b7f5e3c1cec1bda9254ddaffdec262e9c51de625ff954ddeec4185afe90bdf1a9675477f82802c70f9d4485c439e9bf578f7482f9f947f1dabd4200423a9fe14a6b41f5550fe76b7d7be2a971cfe1ac0622aa8ec665d01c56537d488af2145cdd2fa13efe7ac606d03b5ee677054a89f1ae70126ad467f807b5c77fb9444c6194aad0ab3ef7cd563683f2e19377ebb5975b2b0c9608f2f526710e13f68d5d44656d24811c868715745d9feaf80e888ca3aaecae46555298801de4f5a1057eb8453e5ef0f3ae0481cfb363d1abaf9374b44f5b5c3f76d39759d97035b531f2e1141dd9ea098dedac21028ddea15655cf15027601a9671bff95e55c3f1a859aadde74ad03391aa7e234c4767401c501c20d05ea4ac78d4774efa0565ac7b1fa321c9a4a00068158c1accb75d232224d2ed2907974495d23b6dce4cefdc3df61cb3f12ccfc83c872d20adad87ca4c8bac3335fb6987fb8b18a888b786fd97d9ce08843aabf886"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1dbc3c4511fce024bd79c1ee46a6982d3849b314679ebeeafc49c310e8c65894191a4fd9c61121fa97d0ebd55d12bbb8d4d68303a4d7e2e4c1944138a44bfb652792940e14afe2fb863acadeca092a8672b27e764e343ee865cf653839f9be6d8d276ae9f6ccdecf1ffb6b1b1d92f598f90a607df88cf52cf5ab1be01077d5c24bf2e4ebdf2852f688a354f9693841db8dd9ac0bf837e83e4fdf351baf6e10ae5ff2dfd12f58f21bb6198808c3afeba4c66cc564e24dd5d7bbe4fa8ac028ab61989ffff6b90bb8792dabe848042e8324e11c2b4fae835d2bb9563ba07a1fc49ba16d077e68f7ee183bcc6e3fcfee0b3ef6f5b6195225e1dd7bc6101736793aba9989908bf1cb77b95164108dd73db15498172f65e2cc5b6f41eabc7d5588ab43d7d13c6dd4fde1fa12b09e8912fbc2189af84a0ed393c6f5f4f23acec729e9bb9275704f8b1b16dabccb667ca8308cc3f382bbe794a4f203e9b94b9591f4f35de270dedf3fdb6a66fd8cba8b75d4050938ff05959bf0f79ef42fed09e45813af06e7b5d5a21a8a945977077c15f007d36d09bba56c0273ac32dc052cc019b33e13a9f13e40a6d98b6093bf7a3ad803548d323c46e9f05aeea9cce855f95cdfc1db5ffac345b07a102ffb727ba83d03a12b2229e4ea3f65e54d27781e749afc6e6f0bcba25c742937c6723f374f13fe884422244142f20fe4a8792c1e30ab5b73"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "595dbe5f8c39e6a9d53e92194303b0b8ba7f799a33f07815c7beeb6222d7f34b227b20ba22efcb471ff1c3265319690b3f20663f5d4d1247d96e6ad5d17a9a427f05238beda3c27a9b9629877b96c86aa576e153d8029d62906e3703895b285e62a86d279e35df35477bab8133a3dc7a40cb75aac7403a0d42032e63bad94314e1f2a8274ec6fb886dd0b2b87f537f71682a2be771dda42f3f5edd6d50c70816d512bb5451c84be38a3917808f22bba7c1622d30f6ac0bb5d5d326400bd328a1333eabd531f8dc9956f48ab369aea4b84aa6bd9b831482c3f772b1e53236093f9dae253b8c8567d1faca3f1fc0247dc44fc26b82abe259ea97fbefa96241f40370ae98c9100513ea868e05d02d4fcc3426a20126d7ed7682b4dc046c97380cf4d130adf198713975b83b150ab806ac4b53e590159290e022540f7a3d8c0d208fed4079168823b518fb930f09aa9c51fb99c0d9a5bc0a973b01130ae2cee33a139e0512a87956f29318fc7dd4197d5250dbc188be6c0024ab8dc22df7e228a3e075d39e81bb50e4ccb1de57a1e4732b1a9ae1161c83a84323f13cc53465a69d0b5176a93267ccec3f6d8e1fbfbe5c4088897fa39cecb50e589d13d4d6e1478f9b553eaa284446d223e2be07ff416335502dda017be3b03bb36990e10befd5c833f9fb70a46e473fefcd18ccac7a9a42fb4a33590bd3bb6c006b01820cd9b38c3a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "22dd939295b16b34850895b4f088f70a957d2c17d540775b7bdad45cd14c23606418e495f48c7ff5ee30c2d1ac5f8c54383456a6829ac8222505cec51b6d35aad56fe0e63e26ac6cea667a30c48d5c98154ff819fdc2e3630e15e03631a35f6e3d4644c92f12a47e020f617b073ef091258bc8dc2440d42a61060f55c7aa029ec6411a1fb1864191bd20bd813bab797600516ee66830f8a293cdebe0181c92de03d92508954290496e69740c7db5ff8e9ff912d3a51e47f71af23fc5688ba40d4718682e1c417b77ca2f22630c5892abf460e2c91ba1806b0b629f881b30ff88b46150156e703a7288bc061fbb10bf8655cff2141a4837bab0a587993e2513b45e01c3a0fd8cf6677499444cf9080a1e6150b81333f20b5490a676f4c022a2ee1449d1ca89221e1f7880796739ee57048f21a92fe286fd742daf0df64a3399edd8c349cbbdafa1e92098300352c7bdceb304702f4c7b3f487de15457ccea5bb59dee8d7be7443dce1f38d864d4967cc634b69538842f8cec43eb185b866f16f8ad84bbaaf2dc7a6c2ef5b129a7c65095257fe3c39e9b2a149912cb4fe9026539440779e582c92eec8112de22cfe7be1e0bd34ae4f98080da7ed3f0dceef6c6c48de3963b2d9cdaaeec93ef6ac0014e2782acb37ad1cb488c3d34e240d541daa28724685c3d013728e1808f093d804459bef2012db3c6c2de5c73b6cc42f02849"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "24e41e47dca6fcaedd0a800514ec5489c5bb13caaffbcf985ce7d0e869252d8f70ecedc943da638c8f6072c70aff892aba108e83e371536ffbba21c9009289d5b2653b3fc14310b91b2223d0a3674face6b1a424082aef274d614d2e50230e683fd3dccc052adf38ee986a2ede35e55d205af9822968c3e2e308e31667adba729321082799f913432027ea58215bed00826614aff3530cb215c234e57515f5b912ea629493110a2c41edafc56a8715481f6fbab6e6abfe9d9224941235e7f1984682b590945a854b1b436f6b305ac9792a11cef9c1c4ba54617bc3cc4473b1b39b9ab599926a968f40d33979216ec4c723cd33626bb0f63f75069ec947a65b68abc25adaec93cefa5b78878ecf9244f1f005ddc78d66eff3cc2363aec0af19d35e4746b83fdb2dc2a69a41ae5948e5976fb3dbd4f0be478bd355c8c9340ad11ab3345d841fbbe24869f3e911ce36033cb83d8540285fe7faf659e0deee3265f2fb35a45f1f83d6f1386020aed04363b3c9acb785eedcbe7c072563a0ca857e6319df84c992e98d9f1e94a39b0f267aa0344eadb0fc55e92532014cff773d0eacdce6ef235cbf16fa4ca982bf3424bd207c3bed93ca68b3c33fe9bc195ca3f29dda5e655e42d7466fd178706da115ad342a529c820bce2912cfbe6b88f3c0feaa7fb0b3040c9726ae18ff7ee74f17e9a5097d0969030dbea6e88890d562ae1c58"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8bbf719ced417152162b382e4f02bcde1cee73074aa120e6f380c955c77ff02864ecf82bdfae93bece3a583bbca04d7a04d2a0a4e29c0fa85b1cc2be4c50800a0f6ebf3845df31874e8a6f7f766aab1c7c014ca93aec0660b89f91321dc72df0d76e45b5d9ddbc37f47a9948c3e49c00ae99f44d8125ff73ce6bdf5747135bc462f009f91b8263ae5b1a5e0415303ad68b628d98ceafd0e41e165b81a3b50b784e932a4e26c43a2ee35902fb7bdf5eeaead10d4f4d48a4082675c17f9b3a8c319860a0f687506aa23c100fc30d29c924f7df9051d0636ce06b26904cc4cc8e348cf8d264778a23bac7c6ba53a96a16cd74e096bfee57d6ad5972b5262ddce00e56712f32d156595c3e02307a8c1504e0c343695cef93c13dd3a7117a9611f6e5696912c9c35ed6ef6d7fabc7f4e2a85b7f5881c6a5079337b388cd55cb6169478b3080f48ca502e355609103f3bcc7569b0c57e0780210f15c7b63a8fb8582b36f9b3ff47a0e1cbdacb1ec79f92e8e9206c27c5e1aa99848953fc9a0072f826ff9ed0974dab5e890a269bf32b0b891ee09c105a719faf54cb2cd0ac405f5b20e63633aee37fa237d61db62bfaba569c3289e1ce26851c5b2aa668e02cdf30922da4dfb0a4f7c539df1326ec9a4d8bd8e85f7c3c999fbfd1932dcd4458a3ae08cd767efd2404de46cd9fc53732aee6d04d6ad7049eb8fc218ce5d933c175e64ec"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5c83ccbb26a6ec967342fa43aae5a444327ffb5d70b6c29ea6bc6fa02d6218c2af90dd8253ed74dc104ac6289830d6cfcb68c9f0ae76eb6e955aec900362de366fca0d95c76a2273de9a7ca69c8a2bacbcdc499ed9bd507615267ad7bd1127c4dbf3eed3f7b4d22f41b7a29d1cea8e069f5b206eaa636952fb94e254d35e6c590943973d512f104a2c34de8d66c6424d25fc50131947a5da4655605494d2ca825ac5e77c825a40cb7d06146dd2528eb5365ba25b91c35c4f62ebea00ba8c14d64ac44a11927782f02f91d962c58d2b33f37176a34255a2c8e89509ad20ae8243c98fac5df4b2d597453cd0be563f38b2d96142ab797b79d83bbda60a90f777465f288fac8764f5a75edbe62531a7a5680533292a7a31cf2a9118d5911ea0ac163c1aa708f00d357ccb4196542ef51b211b36874b741e3bbbb551fcb6e2fe9823d69e7b231a222a7ab0fdf56b3b580cea3712e4147199c56a75e61903cad5bddf6fa1e37fa4646a5d86d895cd6da143eeeb4d12297fe4763e4dfe89bde8e6da03a0b3c7b4078fd98d55081af54bc2a91ff276906f52fa34ff949bc42eb25f8e48bb8f7788e70711bae608ebe8561aaaedc4b905ac5fd9e31bb0dbbb882e85bd96a9bbb6c295d2d49541a4380fe20313a7ca4adbbdc839d92c81181aff60045a8d096e90b243d3f3c4c04f49648b2e387f1e0e8dcd06c0549ed236b14090e9f57d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "71407e6de464456d330f9e1525b220769f5f91b26e42b9e288ef39ace84d938f76c810659d6facf0313d83d0b283f9577693b5349cc4dcdc965eef9275106027ea28c6e03cad5113a54494d5e34ddf9482b075c8ab7a729169e6caa506ae80e9150e4a7759820bff02c915694aff560672a5c3d5cc2a58251eceaed0dd439d803c5b0f983776712be5ed7ab5162051132f9a58e1ede5d8e070361c041de97361daae2ba351a1ab1df5462dd80a3913f4f753fe1f4a1b264f79a8bdcc3fef7c70b859723b53ff21baa9702914f921b065a64a7dbe080abcbec006971cc25b814c558028b167dc1feb6c0f180fa277a09afb08e2fa360c44180e9c4b31a701423d50a51baa83cc152f071f54c2079e7bb47247b3cd6ca022abba346d289f2cc8a5411fd935bab10d70f8ad69a8b52b591c67b9885dabceeb6d3b02b8d27ca874293652b0a5266c6afdb47dd14937a312d754e0beccf82c9febe4773996b6bcc6a1acc81bf0c3d1e295f7ecd535ce9f5d21178f53c942175eec29e40fe88154d25fd6eb9945e2c70e2aa3ff6a59f87c3a2b6a76e30cc21dd2af30007388892844521011d24a3f957950e577b0030ef82a42732e565b6e23fe06814bf9742b6a960603ecc1d2ab3ed8f9b56877780464ffcf40d3228835a2ac50a16d089567577fbc73ff57ee3bb130dccb4e3a8525f44fd041065ba7fdb7ffc4d8ab742dc84bda87"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "785c03f798ea674404897143d6e2aa3e2c7546429a46e09b40720ec0d5741e0aeece3b007013ca55f49451dcd06bcaa72f1a3c8da52603b8ffb7e65b8c2c7e0254762eb8cbf9884556d9178ffd4ed74699a93e4a069ee23d319453209637dca88bae6939b55913cd5ac8b37b940cc30ab1a885a1768c261729221a4b555241259226d3901e94e30d29681ad29b48390320c174ad1e9b2dcc3b26a5f0df78ca712f971aa248c0e24a0f9612ccc98abf23be649930fe3c8581ba73c468dac4fbeb5030af862835dcb4c9fecb81b359d08ccd16b6a26a1b904ff4acc04e213dd81343fd5c4863d5796dc06efc5f964910bb59263d1fd45a0d7f193ce0d8daca126c8cbf659e3e56d25adb37d9aad4daac46dcd7f9a14e59e4acafc1db47846b7a7a84165cc624668def6769de4166149e15c38c59847f0566b223d1e519acf558a7170d36293921978a90d29ab877e363d9257858274517c83c8bb5401d45d9a0d1a6e28abd91223ec2f2a02fdb013072105d3f9b5291f90a220d0e472d319458d2cb9869cad6159daf4d43149ed0f1f25b111ca240c9ada666694ba6dc9092c296a47aea39798c9796b8ada9ae47e2c9862045e8541a2f63b17d970dda4f4e59a5a7d1bcd7a09afe7a3b88b1e05c1ddb6cec9944de7a3c3af2e2e03932f2ce00a11dd963bf83273fce1d051d759eec33679b541bc01398746eabd2a330a4e8748c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "36aefc61eaa79c184b9ce8b5b1d9bde5603e95ca2bb5f505ecc278dc3c98719f1e71ae65667fd52a0ba89d888335da09d24e6e9ce8ac979fdd91da44158a0fb05acc43cce3bedf3656dace8e135614d9956770af48d42c2db65f0a82235185edcae030a3804d2a7734ac138271227fc5e24384aee44642f3b7182057aa54afc74fcc75aa50891cace8e159cd43140359f57d9036eddc688e477cdee487e562b5f68e3de1eb7a5b93cfd08c53ca153b69f4085bea91085494a8f3389b668543942946c7e87158190a460b5ad8ec6666e581198fc745d49cd7cb684956deb5ebd8917b29672ee4e0189cc55c50adcd3f1d22fae0fc1223d24df6100fe1422798ff4d130185d05a254aa32a90bcd76cd5a30356831b8e9be35e6023c497d68068ee08eaf1af4fbfc707703dcfc71bfefc4018c548a894b4cb360931ff75f74650242f9536fad63c7bce3334172fa634efffc4b6cb724ace9687ee52f17790828a06333bf5d0c1ab0eaf37d24096f96596b549f9850ca10396f89d40c4e47a35f56c941ed719c6a1c9efd1bdfdd1cdf435d02b57dbea8ce7e08526f1d702fa91752f69da415cc7ab2bf4f0fc23671e5bd3ee70e57fb2971766738a4843d40ba428e89cff016f9774c07ab99321b49b1178734ff25925a21b6b3437cb31ee0bb5d13da971543c5cb54d723059f328c8372c78fa4869604a0a23ec91a1fb97c95b1743"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1e2afab91dc10edab4b07b4c44c6e17de946c418c2e946eebb3bbe6288e31bad930420aa73f6f5d0a3cc2dd742dcf92f9b0fa838383ce71b032732e81b96fd4f7d8868d96ea11ef5c94003f0066ce5c86d231ed81986648bc385a1a8bc9a13803c45971d3dda13c59e92e1a6d68b9116608ca19f9e1d73644366559bab6a860624bb4e2364552e2a08216dd87ef1e7b307350c005ae55248ca2c673ed2911e63d5632f3a4d89a08fb3ba8d958734e0d07f41aa63a29be127a6de8033a7936ad74e7cfd54aeb4791b02410226d9902d516488a39910310bebbbba3c8b85d5449673afdbb91b4f0c28ad02a62b61a38aaa3765b313ba8e1fef59263086fdd306deb88c1677d0ccbf96cb99473f87079ccb5d835fd8a5b6cfd05cd485af1d78584cce943bde0f137e86f7566ff5ae867c40cfd37229b9e86158f9a68abaca1cb192aa32cdd50e199246f6fde6f8dddb51fad7ea94b8f68b916d9f6f95f7ef3211de73ab8cea2b09eaf55791851cc24aa2999161546faadfbff90c3c7bbfb7a08a2b25ed98b242fc76c03478edb1f9566efd4cd5c873054379671041a1589c583db0f482f13b2f41e93e250adc3bc47b21e90aaf619e49a3cc83ca92a2306fe4fd9782a2cffd9a8cdb24937b3e29c268dc68c575db6b24b7efb400e6a0b584bdf69bd28f2cd8d23e460e6e8fc81e607e5b0c9689fbed3b19c592c4bdd8365362df42"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "1ddb6a66f5a588bc3e1ca7016e47ab98ac823cf683249bebf82c6328d1ca624690f63abf3916cc8a1051feebf093a03a5ff29fc91e9428364f73c9460356c08d18fc0d9ce0f04bf36c7031cd304693c5a64702979c21bea1dde113df21e7e41be28c49018b70a888f1699efc1b740d0c5d2b7e375ad886ea7eb76583082e3e9e53bce7da7d15628966c4bf368679f6599dc2d7101392656da0103c74b0e70587ae4e4d3f3e7fd60169fef069d4390c85f87077227ccd6739a3ad384f07821f6daae21f1a4369d1d80f82b171dd550cad4c19d66b5fee82a08d5d90e71afce29831852d7122fd1731fc94ba63decb1ccbabb7449ef0d9d03623a1364da17d036bb2de800d1dee707e4102dba9230e487b77ba412a56c141e9a1dea19c687c01a9ddb50cd5013bd08a21b2758975c869d1cf069597576066e8208b48384ce1e78aab73947c7e9b879114299f441581a4a84ac79786aa5287a5c020f7ad0e7b05c1807f8c0a949357386d244ba69ef35db9e0d1b6159f3f7d097e50cf8645ff77b584f94d19090a53305471e6cdd1489c4b0acb77e81cb7195ad70f1c8fecef49fb39ba4e1b76894cc0773340660fc09d82c15e5da189eeeca8f2392d6af379e79ef2b17c515f5617a78b7aca0951b7a91484375eed605f7036722f5b1b08e7f1be28fe38a11e9f0f9fdc712d0db55642cb57a7aadc6d9acdb717283d5693b8d5e0"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5e5e76558ed93af38df82f1dedca0baabccce6edbd378447d8ae65d571cd559c91f5e320ddf83b50ca57dbe6e93aa4f89fb92a910d471d2dbdd5028985e7412833492f716824e0cc0052b84ce30180dae96427bb9dddf6a80660e1405e936b757423c5ba264ac69f4655df54c295552917f5cc93fac4913ccbe7744861a668716b9903b12c43ce32ac06349ff28a8b7be06c8b7087cf2ae487117655e09ef725b96296bdd691b6d89b89fd85d051cfc9d199de95539dd1e94b8ead958c4455f830abb5b406aeed1c2fb10163d537e53f1b9878f79ba3c3a6cc13cab24128e820ee7e67d043ea74e6e1f95f931ff286d4544a24cbabe151fde4531cfd3859a93554f6dd774adc9c3db95c01455e7fa21c01929f511bd354883f28e515c3a02c40471283990fa84ab03a5a8e704363ecc7d7fc0cf78c470dbc06bb84ad3145989e538201fe3d765be1956b028e864f1d66451e58b6c37e59c8adda96b316bf1070339e1dffdb58b413c8c22cf976774c5c3a2d6741af8999242727f401f2c7f79158fc34ec93bb6bfcd0363b610f62cc6facffcc955c4f194b34cfcea76b43497ce7d9bd33faaadc8f45742bbc484934f6c700742b1a330006af97222a84ed313e998e64ca737868eea0389a967eb8891f9391b4522c740eac7ebd1ca2eb9a90e5dd04be72c53bcf9aad3bd9ca700b5423b089927a97ce58e031792ee4ef822db3"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5a270f591eb8d1fd9776cd572d3df29775e02bc8a73de1fcbd501aa2b4d9a9ab9767fa7a88d0d4881048b66f4a93b6be63d6424c0b193daed5706f8e0acf5f70c7503889f23a3cd4323ea0c770dbd1c4f8536e1ff20ca8035e93adecdedf4ac980038d39fdea1eb2c68249e619f5e8d64970f10e0549859c0502bb1c6657e99669ef82961a6a6165ac069addb72f567879908fdc43e2bdc934eda5739bdabc145f89ee4ec1703022da211d47572069e3a52d14165777c8a97a88e56a5ea487901f3fbd9a9838712ff65a3d66b18379ead227bb97922bb2104cf857c62900040fa75d2d333eb79cf095a99addfacce2ec283cb2edef800f9a5e331cf323d6aa0d3294ce609e02e85e8fa856ac02b7216266c30a2d3050f9a8e030be5d7712c03701eed721004f87ab6b889bf7a3b899095e88487a9a313f0ce9acf6071575af138135984d14d9057707fb0187bd23f88b10a0b855fbf602972d518b6c02cd00b2e606587d24489e27b28e1fc9d0a0b28af4020dbb830f51899d3be4accc7f293e47050ba6096918c64d7243e7aec89638379662a3fe9cf97c8bdf5ab1bebe8ca38490be37084484f72ffed857f7ab4d388b827de257e4114cef51554e602482cfb9f0c3d063175d2ee49cc6b2be840f3e8d006cb5111c577a5ce1692db517ed5f68d768933361e9909fb08e418af7a4551fe0944121d50194aa0da8dc198afa28"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "43947a1aa61cf45f2cf92a6ae8858fae970757a1e0848beb6a05f8795cd52fdaafe5f86a6d19a3a183b94279fc8a2a69c6153ae16a7285e6f8965468248e99fc9ac310ac688d2dc4f4ea200a851cf4a4d5bdc661027d3e18e1eb7a726c4302f218226588a55ceeca664bffb7cc45701bf1e2a3a98890e38ae43a326c186e00ec9e2ca4579384fe07a4bdf6e3d6445ebbb9fb9e85fc0ce80dec7c87388729db148f77114d87070948abd0c3e0d6e80dd6def1dc7fe314e618860e9664dc71480726520005781f53a51b467fda86f3b7b18a317c73b25c287132a1d63848bf96a25b0d4167dc18ed39ac0bd8a8fca336c6ad229c57c1c4fb8e74511a1f5fe09954b0bdf2c0f1a918a5f2f90e12fdbbf6945e24e0d368310ffd39f9ac5d529368eadc2635f3165c8ec4c9c380f53b5357e124c27dce7f3653281f65293441a34235d431d70df106db5e6b34d0f9140cb1f24819344ffb308ac34633c2ebf6ce7792d0a0ade729c5335dcbe6b5f231cd3051722e380937567baa5d1a40f4e6706456205924dd02f919370032c717c11ff74341bab8532c4f00dd97fa4b7e604b6f859a07b9586b4bb5a639f1412c622228bc754be414da15012a4aef2b8dbc2d5d95c71f0bc5bb5578c82d5242ab7ef1963becda5f478d3fed85d6b0714d68b7fa0d06ac82a689321dc088993eb704972f4dc0affaee6ed5e7f3d2072543e14d8296"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "08b090cb4a0963c62175e06111f46327d30e55178c601385109b529e273662ceb144961007692afde873d677b9295b873abe336975bbb67fd0396386544f1ff9f72c394f44e5757806b3250242463804789c8d11c0ea5fe615c6453ac0a0105d3bb7e2ebbcec88c709a5240f228ce4b01bc68d42d5131e388f2f11bdc055e5879d63fd468e8d322d6db9379eac1765be3eb039e3fe24c6c7277813a8207966cbc1f90635e16512a7baf7def6bf78e1f439c9d161bbf32142c6da8abb4d84b09d5cfb7f2b0a9733bef1481dfc9fc81cd52b7e14446923782bca50ce63a0f4d49a7ca3383759a860dc98cf316221ea02bf405293d2b617e6b3af1373cfbc86a18c9840bf2e24d0d7eb3ea65e9e6250bd91978cf7f0968fd4eb6edc4f21eea2d11e1e7ad84efcfedb6ff16a369296e78a9bdbd5a0bd2c61e8f49c6ffe1272cb02f8a3f278bfd988345eb772e0635789ca623ed387645ceab31f977fe32e80d66dcb3b0272fcf10934e5fafb2816ff6b22fa4a7d7bf2cf3cfda93564414912f64a4198bb63b1be49b6cbb972cc8f65241f66eb4b205a21fa3ac74d638374fbd6afba519fe26a199b9aaf3f812b6669cec337c626f3b518a4a96e99164294e23c7fe4ebe52f2f28939e068f8fb423f8224c5c9acaeccce2036cdd93a85cc12773a54243f4e694e56c97335d32bc8c4e77bda18a38856029466f23436688a784782751"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "22a07343177c9c14c2440c1466f42cbd1bac3a91140df20b1673bccbdfbe25b524a5f89bde9b0790dae63c6a4544019042af4d6ddbe8628faf876ed7f989390ad0fe97bd78eae958b64707f90dafb06b0f844e4ca56fa44200ce3f40a94b3459e63671665efba6a2ac64d9648a660a0e6b77a7b2ae00731aa37d496456c8c88bba4bad0279c0ea3c8fc9cab1ca8a7adc85f2fb9ccf2c05084d7f8074156f705178e7db43ceebf7abb1e1ce672e01ec6e493b712a564f7200a52808499c54a1a8fd01b4e71f0c8825bc0847a8191b0cc708b017225179d46a033e0b091ca94650039f8f80bd5a1d39521b23f13515bd53b4fef47519ebd6c82915396642c28409ccb0995cc2081b8ee9b2c89bfd00916cd53589247e01711887867df8ca6f9e8958c860b8c6130d6c8024550ddc90aa8f96e42aef02ec4a85af817aed44889f6af9030663fdf1aa81b05da610540a475b9d22f8811d8adc604f93fc57e646595186177f468b326e18ee4a1d78f89627667bf2c465241e065fed33f3dddb09e959d291b96ba8d62493d03ab9786d51e723ba0e434b8d1269d1774edb4a55bbc069b78512b12f186ba3370a84e193abb14a48e8580bb3471dcac1cca23e230cb0dbde99194b25a29bbf47f6e1c5b5cbb68c7fae9cad064158e9be1a285d1e5600faf33ad81f5040ce796f9ed48642bb3e79f06680206947da8b5fa180b4ad7ebd6c"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "57f82afe1c34e0096c9ac0cd4be7e41df4328b979b54cc901ebfb641d7d7abf40ff731e81c4bfd8778f5a46f2d5c16670c3412f5c2e3cfcc122b09e505edcc99fbe5cbf5e1458294395615532257d36578e9e4948c0bf1d9b00f6f1be174bfa438e5bafc2119cc921e8f4aed66af25a36f7c72fc2b88aaf3d2a968ac074cc2636c933e804aea5efdd45e1a362d73b92083812254110803162eef110e3dffd6150e0dbd8be2cbc744a4fe55e6a5e163ae0c31b45baa9adf0ef23e1ff5d46ebe494740c662662f191f1b4d17d61edb08dbf39d9d383af8fb2640c7b71618e4d28fb6da27e69c91bc6cb1d38109bd480c868c51fe9b534a0fe175a59e352e592636efe59a0c6ec8e72e9a5e440654468ae3b2f35d522aa62f94006df9b19d678c13e9a034094b0a3c269fb25405f78f9515b0302a26f90fbbc9aa4e301792e1ffaa87be0147c6f68a15c87ccdda409188680afb7278227d35738949b41b68eb4ceb1efabdc84748e46706b1b6a7602df04f76e5e06ed3d34dba3bf8c0f481828f7cac5d7c8babf274265fe1c0f9a8163ecbbec8283c7714c7d3788d49df6089e7856fe6da00c9901215f72751da3816e8bccfb58778868db8a5b1cb58063725f70acf4c83fefed96db8f45a97056af0086f0af1dd2dafb1962e013f8588950ee7f93c37b3f069871cca401daf227e3ffbf381a1d537903a257d8506147791df327a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4901086c468c2e8f8d35843019c54da0c8af09ddfbba2e6107727917759731ed834fc97753625f54a3f81756e2a98da15f633284cd2522a535433e3c9063fa108573ae195874159b46fbe8cc896eabc15fd3e1a6a4a4ce9ef9fc4811176adb1c14b21275fea7b3de3aa27b3f03c487f7632fbc4bb2c48e8e3b3226ea93aedc7c905d7b013958903ab211d09563ad31a2f559df755ec26baff940b54172e80eaf0eb249c837c586bc46a13dab987d110f52dd72d8ac9795ab0d1f840e6135c9f07d92ca06fedc6516c24201ed431026e1ef415ffe2aac89dcd5770abf3400de313a46fd26139ffe048bb925f94241cdd4b93e082e933a8f435527e58947146cb67d262aca3d70cc914b8393e88e2803fc1f88ddd8fd070d8da5c4a0c6727c8b0648198c79e63d4fdb712debf2059eb1120f9ba6bd55c86ec7a1567e61d1ef09fdeff7da80a48fc836829ab8109b9b9eb29c1dacb3e2d1eb65c974d27119b031fdf28a73ca651ad0d345fe841ba712d027267da4cd4e0997da59e6e27af989baa80931c5178663058ebcbcb77ddcaa7dbcea1bd23ac5565ca363bf58907e893c0d2a1b012c0df853ace38cfddb5be89f7f525a20a0ba2a8d2e759915fbbb6afe1b6769e9a94cc01bb7da892273414969c708c11137d274220858c1585f06744551a12c7fc02fd81125a8c5cd048b14acde96b8daea0fb54ce65df9b7a869de7335"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4c2b70b2ff00b33affb24faaafd15a6db2bbb4f09492a4276e434b827f4968a353b30ea8174e7a4a83bc6971d76bce7a244f5fbaa3abaaf44ac4425629e29df19522023f784d30fb5319a0ca0b59a20b13d4352b4d2aaf24bdadd07a1d96e8941ae557ffae29ded5a08fb8192f4406cafa1c85df342c2399a59a7247f430d03afa9fd47d63a40b1bd5e0192090fa029ee5b7aa11a627a512c387f1cc02ea34ba608eb8ce5ae5baf3d6ba7b8d6d9b5177c308d6abe5aa6aeefbf5f8a8ebeb9b419a63b828fcaf5d524b85babf803c917d288442d3b4c76242ef2ba3ef5aee6062f98dfe99fae1460bb0ed17654ebc85f7a2a19d97eeba2a25df4b55472008072d625869ba8f33acd63f04a95c678daeedb7d5ff208024668195c1cb76123e6b8d40546de418f00d4cf4e53ddc426d0e97b2675f28b95101d2c5eab342b4e6b80911b40e5002340842eb0cf404d9661c6371b4a6adb4fbf59a5eb669471b975e274b52052ee77ccb9320b9abdc73480d53cabd05fecfc2879c7734cead40d2f549cd270bc342826145f7e9915969d8286e5522ab2387a62af4632de2b63394cfb3c4bdcd9262337ca4031a85f653273bd9a5e80709b3f55f7f722b1b9a29f446f14901c9495f850391bb42a99ff946b1f98eafc9e8e626b97f44a9e1b14e70a05bafb4538ee1990d53c2475b4e6a135fb59cb8a7caf9bace6ddbdaf1ef928595d4"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "106f23b7718328c4a55d09f525c2176cd15eb22ddcf5cf0307c50c80de9eb992d94e56c6e8e65efc1007bf819dc3b927f86dad28ee251a1614aa9336ea755ade9c95c9a81f6b4edc03ec00de0da4096b6b857ebd9c391c83ee5b2310ebf417ca40f55d6e949d7fbebe195f976e1954e4bd7fae4ded358c9d1fceb4247f151a92c07595cdc829e2ce64d92e3e89771867bf7f141b12d74018fd7eaa6def7338a6e82e566dd9849bd49b77e072285514d4e2352d3a470663416696fdcc263c62ae83fcbfecd19764d0b3f05f57eedf084457f4458ae43ff68a5195da5e4bf021b0195ff3e9b54f36853353086b6bc9b0abed0ae6143faa2f67100d3cc909735f8788103fdfe9bc3108c9e9aabd43f056e65b64bc200f3401c0327cb1fc7fbe56882c6ce8fc48e3d9f497dabca8935ba39ed69dba40c03d9c611ad2314fea6ba2e734816e736af49390b49cf45803e417a8cf532d955ead9d67bdbd7ca107e8aa1f9b1304341fab2a0487f26f75ab84fd8b85c3456bc0f38226037cec0d4559ec42ef582bced37a2df78414a2376adbcf87c3037f3cfadc8b35a8187116f7c461139f37417852a384a7597e416b95da3e96a10cdeb8abf962f85500b565ef023a7019dde62a778381f27fce361bef83e62daebd73c080594c36c845d3bfc87865bbd0c47dcaaa0f878025c009f3625a51c7f21e05726cfaba91fb5b88f6b7cdd2d8"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2c1772bb9aff7ec2cb592e3537f3dccc804f279d908a62f6333f47f0cfcd4fee1c78a60de0589f1e260ed9a04aae1647e6bbbad68ed87423850c8b0435f3f284c363d4e7dd54f1550989cd0cdc86b0153ee369e384323a7dd1604264bcfb44bf2b4e22e49050b8e2273d3942dd2593e00da50992ebf70e12307dafbdc28018f10356c16d5dc8d0ca4b11e5a40c9b03d037216274b753ff7c4a284e09b895d853436ca2feca671e824d1fc560e4ff702b2482d9356a60ac70c728e8f6353c234b1618c6ef5500c1c638ed256b81e47b333ae7adcadd2d69f9a63a16aa3c039fb54a8cbded50e9e498a8f09134cc5759fd2f11f13b1b19e73b52d9f8759d96a1cfdb7143789f25d71984ce1575e265dcdff9d28f9a1f796b7b114d7f16f32c23ea8a55d3496e2ce814182a2c8985d8a9a3e77af4f3759bbbdeff6f8f8b5ee9a1977939bd5495bc623331cbda87bbc6488c63a93574cc64193e7fa1ef337118712ecf43bc2bfabbe437d4dc334aa09e84cbb4df2303844104a8d9d5ee7cb53cb4d78aadec8eb3025e48133f7b0637f82ab4e54062feb5088a84ea83b02c515dc88b239065258a67e1ff973ad0dd7d86ba8c6c241389a17d0832e0514d693f8ac4cf5cb72d48bbffa5686f3ed6d455ac7d40b0550b92cf9af3e00228395034bc5a1fa4e0b516275a90739631290bfb7108d74f5d4ba2f685f0d7ab1193ed83ee45e2"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "82c60dc3ae409ae6eb368ee47245fcecac8b34ef55f890b155b100455f8e92da12526579056a066e008d1d9c0c055758759a9acade9dd41a35950d321db3a231160e5a54cc015eb78521573c450dae7f3e0b17450de52d13da2d2f893342064b210fa71e443864c94cfb189a004c8afa957c46dbabf5077c5087799d2b6ff196f81fdd48e2504313ab0c91f670afa5cff55e3d38ae6cc1bec9ad2fba6a9212a4c77f8e4eab24ca0683f1da5eb76758a7de1baaf52b5802330be385ea6032d5886a9db5f2f60c2e58aef41f1d5a296b8e7cbf157aae3c5e427e81aba8ade0cef0d07a377e54305520e977b7820c756eb65808518068cf347651a6682bf521cd4dec5915338dd2b7923356d05781883f0f53d4afb26a16ecab86c4367c4678b149fec2a6bd97bf5ce9000b5cd5eb5122e9193bdc4d5fa7428ff42676376071f5bef80b0628944085963742938504801b7de0912332d87c10c30771377c31abc780bf581bf36920c629f4f00ca9db7be00fdd59f14e29857a8278c1e0d08438a44fa14448f7018e3b489ffbab1c7f0cd59066a656a3f32236bf5c21c9a98413f51dd4f76185fa8a46c7c800c324ed7b0aa6376845757376ec0d9ab50b83e25e682645009c2df6e313431cf5271e51876c4c0f6dea359a050898ab3beeb3c6b7388cf6ad91c30acf0bb7b67ddc77326987f92297bda705ca6d62f9bde899231d9a07"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4de87570a24cd6873506fbd5ec03e95f13cef53faacb29650737e61cc9faafbd263fd45e32d4590a7d878c081c0b91f95a3641f2d1712ee5fea759dfa7e5cf2c6c4f000556ce8b917b5269333aaf6a283e959d2de0d8c2f2145770c230b585179313533cd4476c1f7a3cdc2d238f42ef34e42c758aa46d398fe98a30b3d0e6a53300857d873d340c9ee9f40df23b6e07c94f3fa4104cdd6f2ada36aac15fbb49fcc1f2810fe84163e7a0e8582c110cfb72d2bc1de4a3399c108f52afc559d338b09d6d40f40b83e73ee0b4bf2af19b9178839d209c79e435eb87d9dc773ac53b72d9b1100b3647cf245b73705dc32f4913a067305870f62172755b8c78d16ac2c1772736e1e867c9381e77a983e267b26dc2ff507379cebf7c5c6c1b7426bc5b40e60833139cf60e97d4bd2a144efef05e0c945b3660f9a1dfa65ce021e4e7ac04da6af5767261e3dc8cfc8a22818a9540a29a5ef1fe07529e122563b6e92c2955385a4ab869176708f571c2844bae584a9ae31668d22348278e9b2eb49dd17477120a1836d414f855d6a4e9b98a9ed276ba6d460d5224c12cb7fbde7d41efafd80921f9afe589caa4a2e2d1a866384d0c6845a866625993d6c8ecbd46df55b96eef6a1113f55afc2ff73ebd0ec60295646494e886de33658037cecf68f50f9b4cca03473ebe30605a0b345e1699056b728ecdc6992e2eb3cc48ed2569ea81cd"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5be20bfa59875fe624995798ba9c045aa0a545edfd78e75fb3365b67a9cc313b9960871344b67fba2da19bcd84ab30f51c4e956b1bcd7c3768718cf96578c16af36dff8ea65d1103c0cd7e9e6f80e4fb89d58bb506fd2b38d875067923e7ac382323a36dcb7dbc68f544790364ec24cb0e85c400a7ad8718ce361fd6b5efc75bc050d5d7fdc63db09cd9c79301f904052f763b4a1731e441a488a17e743734b96aaf6177ec6c42eee5773d276161ff5d3500c3c8c14552e39cd0a922a8f893b12de8d9cf5bbf6e69784f184f01cc04aee2fc59d463944eb218dc05c3fef4976549a71b9b263d00ae8e97ed69ef86fac23542cdc4627707f15bedd913c2a89c8d6e48544ef43a5878b1a8ffcb4298c381b503ce2d42421638d0569136373b5b8e26324277efcb956ec6da20903ab040d42c54bbf384df47f3dbbb5786d1516120d46f490b884f56200d76bc7fecb8a23d9f166207eee70b9d7e1013a54ac618d1a2af5b24d3ded135284348cb3bf8724b3feadd97504c0fc459b1c3a4c556937708da9759d6df8a91bc1774a99d8af90ba0f6f225a90c561438407befc544b4fba8291698a3ffb2ba1dc41728bdef04d84516381a7dca916c0dc463355ebc71f4ccd4655cbc465b3ccf32c02d1df5c8f612dea214162f710335541dc478fcc6e2cb626d2fcfa8946312c11fc48e24f0dcb6ae5a36f7a408bfdadb61f58e9e604b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2044113912e75d213474da4abfeb83e988927ba9e096d27a82498090e9833e7b2060f60afa28331fb2b8f3b13e14dee164b60ebb40a716a0a5d43f6d9cffda5e359bd77a69195c326ee8e23164709caa58feb23a2f1ca512a203a07820941fbe4b9498aea8a39ac410f884f4a77dd6d4e28a3f00f8b2a4181462ec48c91588e8599fbb1f83934775397f8fa9c577341412237f6017150222cb0d44371542766dfda0f5cf8082dea15a9ddcdad985dd213cc3726a26f78ee6966a789c7f0d5c48f4137436791024731b522bad493e46717e5e6de6eb5ecdf5c8cf92b750d68bdbb22b5c4b27d66aa5779dedd791649832d692688dae4d1912b4eb61149f0a320c93ec4d4dbfef87a007e8ede4f06f32ab0be6ffd3327dcbb130cc41c620aa65174cf1bdbd66b95ca698e9a5cf569f1b819fa1dd12f415e2fea63263fd8f4febdec51da4c8486fd855e5aaaab8a8329ec10b7ed28bcf329c61fcd4dfa51a88470d8399a136e86e6e147e9dea04d175631fd0e7230963ff5e447de93327e567bdc82fc19315af2804740df80b423662d9740c8df6b93298cb14f43774fbe06468be0cb5d8ff2034a405c3edfbc44eb890807d7ceb678d537494d14954b23af2092a338e59c84984cbedb72fbcf4285c3e48ef3bb4a7844afbd5237edfb4ed074dbeb55b55d759a6da28f7da57557095a17faf7db299509386d01d6ef93cd72e4e2d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "652c05a13c2e982477ebd7853816d20b6a7f22b1b111c63e4d2fcd0ed6d55a47f3b7aac1993fc83bc64db15848139d296b9ee874e7a971a924abc3fd240382c79af5d9515e6d0fc1bfea50bc234bd2dad7e33ecf4d63cfcdc6a299465fd716ada4b9e5f29b7efe14c1c1e31da6d244ce301544cbee74cae7a4dab4c0296813d1bd3ec118721adfa78ed1bb61a792c49ee885d2c91ba7d6561688f6ccab27decc405d6c8533eda7777f2294d064d4d132fec87593ee5b259409022641d9b0e5c1d24defb23f3f03ba74f74014ad2e97ee2e4937ce80a4a9e61cae9341bcb18a0ebdce3d928feb260cd8d91caf84a84a0f1d5e4009db9503bd7aa74a97cbd2327b10af93367eed208829b18699a70c9ac1c1313a70a137cccbebb0e0df4b15c6c1f8529aa65ed12ee337ec12de32f4693496b1c66191cef0724cc6b46c4269fffc0e7a1192efc1fe6ff4cf531279c8b33d99d255446b0bc12c7bf39d96a9d712961d7f0587c0b9ad18f2492dc1fdf419be67274d65d4545a1abf7f61cd2a82b32df0927f769672d7f26e36154ef66ad3fa62e43ea6543b3bfacaf8510cf6255547e52383f42ce6473f12d1d9628f65d818b550e8f9c260d07f2bdb6d1c101080dffaabe46b88b742add2364690e774e86bbbde21162ce1cdc8c5eeb79ad762158fd7424d2002e95680ad18fd7b7b88f0a8b7b30cfd3b719df41d92704db5f9ec34"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "0a4ec28fafb5f59364e4fbf7f9be3395b0c90e51d8a49b47d9757cdeb7d635b486a85a6d7d7f6ff646c9e6accaddb2f61d5fb9d01409c9aad260914a1592b3b19826a2d308a88ba259bbdc6bad0a0d5f41a489e233d7691bea42404984e96f649e6c597f5fea4c15dc56bdac03306aac28dcedf6a8260216905968e28c18795416d620432ece22f112b82a930fd2ebf9c2ee9205b09837be5d1d78e197f3254af803ad9442920bcaaed2e117e9c586c5916bd302e563c5cd556bcc2ee7022eb4e6729059da28472a288fe146699c5c97ca5fa1103a6cbeae5e9af3df4206aa486b384fcb3ec6f0d42acd8ebc6d9742af6458794c98f736f303fb4bb79bd3a1124a3186631140d066e324e0b504db0bdc4404d08b497c8b055defcccb36afac97076871ab5d3efa7b25ef512ea75f27aea189660d0c7eff7162d894a4ef2b08ee886691134fccc4eea6a243db6e2d41b2549b6209b285b0d03aef7b264e93aa04150650a253b8f77a52b3ab341725ac1d61fd27bd3e8418bc636735b4e987b548a6c8b266b67fc4f96e1e764708cf255fd6bd5a87b6651e3b6229f148b4492f4e62fd7f1c99dc6f19b1d71c12d183b8e92fcaa2f939a867071cfb1c174f779cc45170d30dd2b25c9c04e4badbe7cfc97a98bbfcd469f6ca998cf471440d3887aa9255e8e5397a1201d301788d377267489673f90256a3521f5d6673ac0d149304"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5eca5fbb939283c8240e12e3ceb26a5a61ca43644bb5b37a3acaed5c520ef16790ae79a51caaa0e6344043190bca5377f23eac6911f614123b52b7a3701a371b970baf425cd23a64bb9288ff7de7353d9b75fc1ef62739a34fbf59bb9ee4aefe73d002077bde74b4e0e381dded92b0c611dad955ee91818fc0929e8d7e245b7a6ab3fcb0d9fbb5f226800dbadf647c3efc35a12b7d396e90a2b2843d247835f71c96748808cf998eb5af006975e8d4060e21c192295bcf3f6f12b182d98b171b87a375a73f281a4a1e4dd2bc4d7d83344f6595a3b8931d1fcc780e894a626d4dd1b804d3b19e3a402954dd6ee810948d0f4463837cc0836784832a6afc12258bbe1525a03ae8659318d90a2e2bcc4da00979a20ade18650406a720f3b379d65cd6cfc04796312961cf84db07f36343c73f8c0d8b0b7e14f0791d8e8dfb29ae44142bcdee3fb7830409b4539ebc2f6d35911f672c3175db5b6c69f977a4fed913e5e8bdd1f525da4ff1e831d731e2138e3b6396d80d656c06f52cecebb717033204994f182c384b43a0667da5af530bd5932e9ddfd43311adfe80e55b8a8e2943cb1f1e4ec847b8a51f304ddab1fec8242df1fba2a361985cadbc3e5da3b1b760fd4ec85eed7a33624bd067b46e1e33e8225fde559e273b05929bb97657aebadce21a4dbd31da815a4589f9e3ea9e492817a549a7347afebba1397f77c67de877"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5eaf114d41b7ca3d5dfc07b6d594079d0cbc935f0e4285e93b9a40f7b59708440511865b04630190dfe1348d59e5cb3274fff3f3c292496d8064ab57753ac27f76068bfd6b33ecd9add40040c86b35dfc4ec1a0cf0251801b876f1825cabea10bc03f184d30cf6e37a75117ae8410a7fdab6098e15ad22fd495ae2e778679465e8a190c8882d329b15b064537c1d81ad0899269b543a1c5d7a1d8e66f8524d3fd53266db3390cf9bf8a5631e9d1286251715febe73417018f79d2bc8be3a474180e0995ea0e9ad1b56861b5b894a9ea216bf5cdaa1c8acfd5cf471c10eae0ca4b834d3baf4c17a55f41f373c4d369606b930c9fd49a5ae1aafa990c9ac37d46189f56478b15b4c3bac3af0cc929f18506ee107d820566b79f95796b568f8bac66f6751cb013af708ca435acd2b36ec6e69c16b50f1d6336b2d6cad5192ef78c620ff7331d17ba77cf54207a242486b22190da1de7ce0d15f27927d298df83826a4151dc773c46b855e4953aaeed405cab31637c88381d33059f408b31afc7f499cb8461c8ae7ced6cd65e842ad229957a5be80d73a2265913d4f056b87a16e1c34a77cd9dcdd939225fec0ccbe1829a26dbe1f8fa3dcd4d67b9a8ee6b39eee63a97200469a3b726432d61018824555107286213f94b5aa27e76e56a3a022cd3cf231553eaf682ba5569e7429469ce9f9fa744cb6e5dc4ccaeee2a50fc0250e34"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3f2d6f598169c3234e8f6fc161593b7a735e000e5e4cd6b987ee0236f778ca67f91fc31a3a678b12aad6277597c29bd58bac5f246dbe95d247c5bed14a62110f4f6ce85bc111992dc5f5979c02ed3ba94d05a598e07cbbef4bc7bb78d6e42c42f95ea4087933d4b899062e77e2dcd712f5f9c35304bb507b786a8625d9c4e108cf6052799e1b872cb5ff98eea6097d2e7d3b625f08ee740a8443007bce504001dde47ddaa72b17440f9b40860c92b381429c19452ff6e334183bf36039a750bfe834d93520155f9302be6047fc60cde031394fd3affef67578aba596d32bcd16b3b39dc56dd0c9ee76fdbd88f0aa670bd4fdd15ac8dbe39e7dc3e53f6afe81734880542241e207ffdf7d3d869e90c8b19a523c0af39b500c4fad317fe0647d3988edb3b36882a8a810f8c2115e4f2d294f48df9710635d284509dcad9ca513978ce916d58a03601d0fec23eba648a4fab57c0e93f109f65d94a0af4c1dd9566fa19021f71d972bbcdd0c1c9830216fdc70456592e8447d7c248585cdcae6045967238d66b8803c7810f236b120701177710bfff40e5d4e8ef4c0c7b4a70c697baa26045d468c5e42419e30811e8f87a8fd9ccd3bacebd56da9978acc4a194e4b714e5e6dd5ffdd54a97e3a24515f8ee3136be8d8aa693b1f7e119217ee013dc47122b963475ae5ee66fd236e0514e509d6a9437a70cdfdb9b17f4fbf498d07e4"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) m = "313233343030"_hex; - s = "365aaed072b2d0e5135c82f25944292872f60ed39152eb19045b209140a4a74fb2074037dce30d674e0fbc8e98011ac681204429d9a5ebb8fc3bf20ec70e6b53cfa45b259d4f1312354dd5a00bc2ecf4e99b4434212f92bff2b99c94a08a1327fb45dd3367779a12d8dba9ca846b85c6216add315fe0b17240fb021bf61970446339dc93ed53cf1c57242eb4aaf798a1b8010e9471f78b6f0cfd7a628ace627bc64a4c6d853af0d7ff00500b8c682238eb37f59972ff87a9be9eccf69115475ff45ed6daf9d462e09ccba899315b5dd59a3cd5c3ebface31f99854e0475fd76cc7c191ec3f13ed7933663b3902b0cf7ce7696cc9ec28c13df6b9cbe9182980f7dbf7ebb603274a56871de960a52bb5835f4db71558876202b8d9c4edaa35df599f1c6dd105dffcb077a7ad8f7748c58d6131546694bfdf97a645ecbe3829dbd2da1263556a3d29e92a810337c8c1050686ae880314b3e808abad278c48655708bcd2d711cd93f446911a2b323881c98ac389582fe0a9601096911a8ab0dd8669"_hex; - r = false; // result = invalid + s = "183dc293c7e74ae7da861e70bd4097c6bce740d515ef1d2893765d7a4906d1d5d4b073dbf584d9a07c6acb61ac93f949aa3a5b1a6db9b127b5c3546a781ff5ba82ef520fd336b97c935ad3fd600d8607cd2aab192b11cd657042c36b8c8e7874f206ba1f1a7ef7ec4a99b094fc66f8233c082f056bc4e4198f7e4d1ddf7e5e78b91e4cb830b5d608d30935c3cb8b09c59eaf465a3fb2f71dd80e8427bfb0649f9765fdbed4ad8da58e0485c4d91d98d5d705952e704f14ecf1a7595aec4cf129209bd3fe1d6e36c0f50f033811ec9d3d86a20d7c68729a493c97a45ee4053069622b21eb91324f671b1ea730f9bd658ca99a4cd244e177b7cbcfcfa36463138583dfebe5d1a291fd69fb5c3be9db18da98469e9e4bc9485dfeb9a1b80033058f5094bd0a8f48f8b9eba38e90e0228bc1e750a44002aa30b06fcdb2c7df8ff23c9dc59f7da3a611265b416f4adb0d82426d55a485c080120cc1717a27686460376e36bdc13052bd4e2f5e65e1a022eb65dfed2453e724d78701fc3c3ba1fb9283528b598c37b18823d82ab1de4f968c1f9eb4d166a981120ae5b43a1b9192c3e4c9479d8f27200563bc89254c5e20a5970c28b66974c381dae015f7657523af52f8c848db9aea961fe95fbe1633ba4f127fd52f306f1a9edc947cd11ed8974ad405f89a3a8f2b3a0f0540b42217293d167011a80ade22b2fbfaa3210a659cd53b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4857,8 +13177,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "24a95969a4ff4982bfa2021ee1ee009d2e4ce995e6938fb48ce35041842bb516ce21f5630264f3f7140e3135ea5d01eb0ea6aa6c3b85ea5f64f1de1de246bd6dbafac9cb0a8a0003c02e5eb68714d569c8036bd604aa7bc604999a85cd3caa209ccb12dee3b89dde2c9bb74f0dac1458399cacc7e4ce538dc3a5b54c5bf7d3132430110089d5b4731dc91c2711dbe0b46b97ad7ecc948cf5881c1473f5b6540ac62963357680f1b12a09a21a957b512126c7457b0635c185d36090696c313e8cdbdb92ddea8b8621d1a640bb2636be15180595e6373c04ec38f981f05c6e255a327d9abc3b3bc04680e277e593b04d8d89963bbf83574a5fb63b4aa1d06de63e4077e8f9242e886014109c3360be74dbdff64af766224aabbec9c0c0a2ca79ce12765cc8334bebdd1355164ff636e24432c042443371f9d7a4ac66658dcbcb001934ea8b896c0bfcd7e5ce140ae265d253180c72fc9fd05b4dce2b6b664b1c9852bf84eac06ce5d237f242fd2cc6d61a870691df8e9b5b0cbde491edf3c8861e"_hex; - r = false; // result = invalid + s = "46d0018f8b8c5a9be7f6a66caf1162b9cc66bf47df4a442f06c5f3c9205737ddeb99e2fc8191e8a61d07c12e5b0590ed399552cbbba9b94724d7f08d405209b356bd5c6f874703e8be29e6756bd8c32ade074e4fc32b04c3090eaf471bd824056620573d668fc6cacca2cff789a70802878ae028d170f30f82097b7d024f44051e9a89a1b2285e5a78ac287757f78fa5204b0eb82e40099ee6aca4216825eb2f723318ba3174aa541c2c74155ff1dbb8f5f12127ce82cf9f7fc66634d4ca75dc0d42c1912666d75bd63cb3402fd17fdb3a32c1498b7ca0628085f792a5bba91a31a3c336a61df2a94adb7f90af9dca5bd511c64a3edd73a903de2fb4ec8ccf3e2dee1c533af4ee7cdb18c0502bbf65c0912de6b0d24bfd554442029b6dfb4cf9713e02b717211a39e54f9f7773305fd270a86c83396b73b559c890e5ee457940733acec4b9917bb85884e5d40e19960d966c8730ff70f136b73015ee5f1dccd135cdbbd661f55895597a750b9fb8db118107e418842b943f8ce8a6c21fa8d1bbdbab21a8b34785416bac5376cb50f1d197970a9577920bde629a5d2ab95235ec502da585bb0981ac0c40cda8c527be602065d0a428358c848db6679ca0951b2f6a1254a2dbe4bcece97077ae4cee35600d23340178ef1d8fceadcf6ff1c0c0cecc0a89bd9d693256ffdcfa0009fafd111757c54833fb18ecb73cae5532c717a0"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4868,8 +13188,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2bde28ddbc4e84009a9c98c71f5e2b7ef6622d0283889c94a31b25074e8fc2068aa26e4ff0057de239b4588d0421b8351f8473eb2e66c4a2ea28a4ef81613b5216059b35c2aa990c7cd398f1edb7c93723a3ab489f7a91242977969c19a2e9bd421ce79eff960a06c52f05c251d1e8a1d4e3c799ed70948a6ea35f396f6d83dcf8e1c59604730e0d90c2704a9aaa2dbcad25c9c3c559a73b7092a016e6761a65d41b878a5c717ba63344cb1adc247a92d377345cdfc24b652516de0123232d3b0092cd3f5d540b66bcdc024a728d781536ceb7e41fd80622441feebe4fcaa6931c54d67dd28dc664df83e3ea2eed769e24ef7b7ee9f95f36b31984924318d506635f31efd096aebc8a3c04d6d09aecec36484012b5a5793a2405458a250897d246a5829ed7d99bf1638fb5225cea2d0a351fe08aaaa8ee724a824f2b6ddcd69221f4a992ea5edaab8969369f869810b4973cf65adf4529f68d1c0fbab24fd1e80a03b71ddf702418d3452a27b95752a0f86053d29b63b1880911f657e4fab978"_hex; - r = false; // result = invalid + s = "4d1ccc92226c584056693afcff15d7deb1f3dc3cc220afb4ca724157610059ea3037e97749d55dc51ae94d171230f02b1e7658d2f92209f7c33f52f91068f94d5e14ceb0cfa68251fa16467700478fefd9d40975f5f1de9ba63cdb521a12084d4912f814b8642ca77572294ebb1b879f85e3b4c670dd5c3eec478e0a82aff12c0ff725dfb5122c4931a02f6fb051091ffdda56525788af38203da023e305ce9ead25ba6138b4b2520accbe65a6c25e2d9772b45a32cd62775a14b0eb9438f0efe1f4c2f2a8616db0c151e46306c51fe083ce2994153c674edeede9d75ede8cbb83c435db967929225d628888ae103d7f3018ad65f1a29b24f883c9accd727806bf20267f911c46055f8c4e37944ce8ce252ce6ad9f1dca1536a3f1ce3ef728497e5746ab4b342aaccc9a17f7640defb27c0ca1a6e3958b49e970a59e9607dde48b373fe46676c16b0536ee5daeeda4a5441375a6a619a14f3f4de5b17b8177fd05909421be9e708b727e24e9fa7d1fc5d23e864b97369faa1b58d2ca748b6c10d194175f82b0e751642c6181012f3c43156c2597e89261378e1f8614d91570546ee7c2f59672f10dcfa085b896214f0aa910d0ff2cd500283da661f1812aaea11e21c9ff4a8fcccda8384709a8ac2b83f397cc606a326f371adbffec8dca764d76007c539c709b9bf0f3b12a3a67a96957148683425a077e720d4e6bd2851c01"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4879,8 +13199,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "88258637f7eb07cce4e8cd05cf23340e796bc7e067ec5e74bd031a7b870e87a40597be7ffa8eb135297f6c4e4e19dbfbccc49a23b5a7903d1c8cf979a4e0b181cef1c48a7ecc5adb8fb614415f9cc727d2985b0eccd51f72b714f2ee8a1632b36791a29e68b88a8f482b24e0596ee8c9d4c504aef0820cce5f5a71ee3c236931aea720ed6917ea7b41d13b50f909fa21f07e9cd9f79454a3a1996cd5a35bb92b4a1b1537afa65c9bb67091f340b47f3726407b95e68ebe8d4aae735c7802b559179c64da8385e72628f29aa4e4634777e6b7138f6206c79765dfcc066c034977118255f8c82c66425b5cbec3cf65f952f0f4daedfc2acc204df23a707a77e479d33da4db067608f075e29e4fcc3600819881463f071c0b879251c0b83ea5938761d7d63688006e2597eea88997aef9aaad009ab9cf54b4390eb808b09047a759224835e7c282b301b09007a15ed23e93a33e25079b5079089428607453ed25ec639a513311320dcdfbcbda5fd0f47f6035f0c995a7ce980ea7b2e74a4ea3b9d4"_hex; - r = false; // result = invalid + s = "1093464d57b26ae64230d80ab451f6eae98a40dcaf7fc3a4329dd4e6a82d40e15cbbad6efe7f252f5760a0f745f71b46ee07cf506f65585821ac989f9842e748068281ee73a43f715d6b2617fa886d6b181922f6a3e865edf64e91a73d3670b4e59183b06c29c115f628f1dd233216b8db8cf2b906d0beb3a34e549f83b5233d74f8c49e8ffaf558b0f015a31042d2a4e7251e11566d1fea0c6065f4a34653f565087790a23a4dfeeb75298384101a39c823637d30a80a883fbf81f7379c66113243f7081fb85146b737d8099a6a0aeb855b2add05d1648ff62967910b9d57897e72576b947271075693f1bd9de4890be17e0ce46875e1e222a3bea5cee55aa8a33fb17822a97c353a3be55843f5c769f6876ea6057a1b7fb091bb2126241d8e188325919591896cf5317352c1a41ecd2e268be5cd16dc59a9ebb0b84bf0d024107dfdbb07a35e92a1091e9d161945fbae6809a3a10f18666bbfa1196437765a81e8ba9447956c35bc9a1168268f36d3ffd0887dfbfecccd3cd5a9d4512fe0fd9fa94a03cadf0206fcccdf6005f4df850aaae472af7a69a9deac16cb4e383d7fd8a743c4ebbe8181a5f2d5addda143f17188ecd6a83ab9cbd2386dc73f64c95a21a6718ca8604f8b277e0d2cb2a6f62bb781321bbf17f11336d1f0f5412f8aa24d69078a6323b04a75c4d9cc30ac92dbe6f09ed7322ce5017ba0450918102d8f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4890,8 +13210,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7bcd19e6ea965e860485b4a886d032b2d79971241ca2c512b781822dba95d8db8ad9ff4586e9f238c885e464d8e67f291263ab6481e93544904da7abe00cf7d312077447c7b0e5026114bb732191a06beeaff6a05986a02919264396b8f0ed1eb9bdff5f2888d63d3d66515f30665c9963e13e914feabd50923f674c31091d71b2d01328c07af2d9c4da3d41942020e179420f3d6d8265ca1555db51aaaf281ea92b0b5b9f8deb982723825cae17a877e6f0544d4fe48f8fe3db3a7018691bdc39ea7021ce4d2c052265b33a1a0cefe72392a52086f673a10dfa7240d88001a4053bf376bef41881c27510edb203ca07d8fde2955eff7bec85e9a44794c0fa757e385c376e6be063eb90c23a526f4fe4b5a3caff01ec148bd725ac6ccd8cbacd0b336185c3d98804bbf06626bed831afbaf3c106a847fb72a60e39b192940c898020137a291c656219c322cadfee3100cc988b98da6d203be161945e4d95d455cf73b28eccf5d6f9c36516b1b8a1dd57531d8bb943f3b50d04970b0c114a2a86"_hex; - r = false; // result = invalid + s = "4cb0a8421919d267a4cd46793e9a450747e1875f983fac4ecb5ac708cedf889c3ae0f1832dd422269f1eef7c9d1a53143a9207bdb944ff9b9459abc67b8546aebe1db6720969b50b060d3f63b6977e8149e38d774ffb52c7e55a74556b972a88f7ae038a7aaa7a2e9a31444560d197ff28fcad3b3008331cac1b03e1ba2bd1faa5461c2604c96e8a9a362b255f6365ca744e57ee61915b47a193b5be7983f774790147cbd6e46f4df60a75ac0baa9553ae78a70f8fc70e0ea25471fe097e1fc02652a2fdedc7303cbef8aefe19e1c854aa9d9c909a47f251ea98758d8f72d3a2d8b5c5b1bce1d8e7883c1d1fd135b2a4b95091b57edb4dfe433bcf69a791158591b43a47733c00c3d060cf87cd6585b1952f3395855219d8cc849a347380b52b9c7b60a811222f8885a18cd2000ef9bae56233007822cf44d4f7781219e47f58dd4cef45114bde7a0d337c8039aa9bc27b349827a4c444e5bf8835b49efbfff544361d4ad0b461b8310aba1f10c751084e22d547454ea135963493bc68ae2097c4c674613142c2d7357c45b5242e43d9d77d3a6c00e4aa21d30d7f14e28f5435656a0d76dfd4378f1c4129e7b18c718c5c2d31f1be4e61f4e8bebbec1f56873249c5f5481af20112d3a397a204074526fd323364cc2a46814f5f14263ec88b323cf4d964bbb9fbf5ce08286b511e582e56ff51d897e923c44402120d3c5ded0d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4901,8 +13221,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "43f62292e9039df3d1160af93dbfbb2963efa6dc905aa967bc765415a74fe4a95612b53866c56c6ba42eeb76aec0a5afaefb24ac7a4eae23cf439918750b2496579c33806d9f60bdec575473371c96ac56de3b1df2d00036ea9166341720d4e164a9bbad13eac4f9364882772a20630e2b067f7d12ae3b02385a638ee562570d4b4913cf6d1f9ec6c36f724c545ffe7e0964d57531925a9de4a58511674f6ce271cbae8fe4d2502bcf5feeebe44aa6a6a6757eb3709b139569b40c019dbf0667d0e23d7a4f93075ea68a303df9aa58b02302d753089fcf6628c318a80815dd3034e5c67cfb88cf678ba1134e7aa722452c0da20328aedf3520939afe9dec999691dc3411f75815f568e3b03b8f8e3c08d99b958fc6e463fc512c44e583f869c9154d630ededfc507dccd68401ed8b37dc3f8c529936d5ce94e6e6ee06115c3d39ccd85e86ec0c27087a82774f05a031677bd5f8d5440dde337b860f00deb788bc9e81531bf7a9492ec4af8ce04f3c94c6746f8fabaf9b7be9e089ba956779d9d"_hex; - r = false; // result = invalid + s = "571ef7a625ba356762946b86e9b0f4f0da50718eb3526d48e04857a522c9c137c42f2da1bad1cf537689710efb55459bf7f070ba913c44aa1827c7154893bc19ba339940b66441f626ae9c4e1672ef5109dc3adf6117685b69cf8d46d985583a6f9b7b59fb173abfff7968738fba9b8fcf30b12a033cb10f0fe94e33b9affa99bb270f521701fe994454e14eee6e22b2952bec35a172a0c84ae4c28eec10e809d4c855a41f68dca14627ee487412218ebfa30b6acf82e98f7da2a41b2ad2ef5eee91831c4cc0c4e3da431a9ea3b5d67dc6944a96dbb8a9d41e03e4ec5dd9132795f200c4798f677cb5c253cdf5aaea6b6a9c402e925c7224e77c17ee536c21587c1783280cea3ccb4d579fcdc111a60d2048b2a3eeddda038dcfeca1e639dc5e005652cc426ac20fddeebea868bc4ca016e59ec11cc7a88d88e3239b4fc343b844c2a17777ee96bc019edaa9780f4e8ac3117a25ad62edffea02581af6174f267be7456e8f62df0b5c6a4da11dec3d960b422ee668f594a4b4399ca73ab4d81ef61ca9db9ae417ccd20c0c9e5e1d05ea59206aefa4ee1a1c636401bbc01840676d3de9caf541669000370b51fc9d8ee073fe4385e8f83f2013cda6739ba415250b838dab0d591b9859b792d28718d414b317840144b36e0155e70a78e23008ad3577b2487d27d3639bd74917fdb0391a8eeecc36b3da89e9501fc1c0340b04d9"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4912,8 +13232,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "73d4d40da6efbc72e01d95c3504c95737fc2e401ea73dcbc56b2f1f784b54d0c4587877137abdc84d67383ab0453f69381df09fde92edbb90fdac2b54451d76f00b5c553949ce6e39b86cd5a5fb555f231a1dabf895ef9b7c905ed9b92e333c0af57437662ede62093dbf6c43a8482706853c0025fc724ee13d17d6f052564550140c52cd5f52d98622e02da82ebca62423270dfe18333a9f202b9f6aeaa84bce014c8ff323be51327ba1a7897911df7172b819307bcf09069a3fc1559335e7fdf06f082dffbac70a973d70e5f4210c91744083d5113b510fe721650b3be52bd003b30372d56fd3268bf6aa0461af41c05cbec350f771eae198ef315c60c08dae19b0f31d3ddeaa144cf9940265660c34cc579b4b825616aa3d234d600248645d778a789d7275166cae5cbccc14c3d81c26596e5b236838ce6cf701b106e584d96b1bf40a75398763128d0a748e8f0548ad1d810a00e961a88db49898baeff2ccce4d56d3b0f059ec5727d03ae56499f811705bbf6ab41a1a3683e3debc5a6f7"_hex; - r = false; // result = invalid + s = "84c2b0bea41935ba680b5486bdf8a9209085572fd53f746e25eb264d2e62947d502875bd415cb31079b42d59018f40ead9271fc4a66d9fc605687395484fa0a693f207dd0d54bbbc1f0394eba60de93ffda1e0d6fde705ecbcb283471c84ded7b27e20e99b87453177f1908eaa4518fc5ba86a5cec2f5f07180094f23e6f9fba0cee975ddea5e74abd40119cf67cda636ba33e94a5c82d8b674d8d0669e907972d870978c433d0a61255958ebea075e116246c1f8ae90bfde680408b5da3175f50bff44d87c39ca40858fd4b7186deba9cd48d04a64d7244a2d5f552420ba1f1028695823674c964bd8072ee133dc65a6008836eb87c206ae7c11fa0370c2da153aecd588d7809ef208790aadd5216612b39f00b764ae8be3a29f66babf1010e414e02e9c7b237c82f04235a9556953f6bbc42abc0cc98bffc7903190c9f26cabf4ddb2bf2acc2361c519236b225d4c41dcd78d2d67ebc4e4935bbfcad638d6f3e96a83507523d22ecb7c9e98275737792abd03a244e0457998c82c8258cd8796f67d4eeadbc8fd14350cb329e7c68822ac87d226a9df436ff72d4ba07b914adee54949d9a22b4cb5decb784b551cd2192b37654b34c26804e95513a0d657ebbeaca238d2b846d1b41ac9d7835ccc1699465578daf5fc45c8ca39d7537043d541004b3b98f99ef555922b67d461f7f1a90dc5250be3a27480a2b731c1cb28e9f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4923,8 +13243,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "bf8c782edff2de8dbc7f480a9b29f1292a5f1ac96ebc92670aadfd369ec83ad35987bfc0ab3915dd388a504ca34ef43f0ff55d52e891aef35c47c81493fe6ef53a4cf5de1e415278e63339110722c444c6c2eb26becfd6589f18f2925dba814d5e63a098bfe8882a3bc73a9a184e8eec0c8b7db26b4524a7b3eb3975f63fd16bb461b42e0aef58b7953fa3ae09f5c8c38c4528fc48199fb652b27bffa9c85ebb162a0943af6c1e2ca954e44594157e053f35be8d40ee161dd30929576a2cbabc7dd0cb6bc3305f41dfb77644f32c67d8f04e7d68822def40d341f3963a12a1acc16338d3d8229ff500fbf6849b2507b4dcb68ac7c8e06a076450b3da320ed8673d86e7bf7c91f8379007ba05303489eb9537bf33c275845c923d3881b4a80998e7aad5b6a9f113bf157b3aa96b45791937d9038f94569f1fa753ec9ad612f75bc89fc79fa5d26711d39aacac5c05b06baa5efc40d9081fa39c2ab8de2bab3ee5023a0b668e17d21e470cd1efaf5e7087d440cbdd7b447f5fcd9046fd9197acfa"_hex; - r = false; // result = invalid + s = "18dc2d2f34560f02df9eeebbc62c4277bb730d9726c44af98809b887b578607ddbc9af716da739e28e507572089198cf66b775e31307013423cb7fa593bb95b59b1bfc0551667c71a46447aa069a13b04327f618319d040fb6f59eb1e1e13d955cdc6512488f7b660911ae5e186d2fbabbde206092c3b5cd18415349458129015462123e9dbe3d3ba59bd148e42ab75702e1a53c40c49b383a49dfb1e3782d8409d71cd582499f38331627c27d9d15bb18f355f77a569d0b99e546a36d906b2ddc9b7e00f90cc7409b3115412a66ea93d5b36d12fa677d5ddf46072ab71728c712b272587de11d53a80269f7e920e7aec3317498df77b51d9c01d14c35ae3693c74a96223416ff0cf1eb72a2e0d3f72977a560ff04475d53b5c6511c8023b3243c7b446e42fcc9d5dbe7fe64f490182ec3e345def26e17f89cbdf87f03a1327f86e5bffe0dd0ce4abed02494b9ee263f3ba88324bb0e804187b35d57fc37fe48b8b274fd8586785ac4e59d2f135f0fbf25ef2a0dd4ae1dd4837eda0ab8d7de5388fd6a8c2d91090be6d857d561879ad17e9d6b49368af5c5d15704c143c16c3362968de00c54952f2f9bc377fc3901cbfb5e652d44ebfa9e2b4cf7f4622b03b2f749a5b069dbed98fc41fb7f99c10a3fb04883d3b59e88e26c67f8aa657c08b037dd86c1d32729a2e3a60ddf19046d892f5f5e9a124cde081d0e990f5c7b8afc"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4934,8 +13254,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "18c76a48b8a07eb2d64933e6d369bd7c03cdcdf1fb3bb15367ace58ab1539c3798c1afba510f46b1f621c5374343d55e11cf82fa1da003409702635c013481fd785b32e495dbc0400502ac60b82269bb6e3b9a405f6794c34fb801f920413d7e243ab31c1e7e2bb25619e66a016c948a24d3fcd24a63d45f30f0cc41f7c963ced75755a11222095b3451726708b3d255d60c47746633b822ae2ca83ee50d7dbb5bedb2ca666a80a24766ff121b6495a26cb9ac14e0f11b5a17367fa2ee7a3063717e4511a7588c2325e5c9a479db77fc799b42a9cf0962d9fad45ed2cc750bd30e34a088049ca942ee1a83807151986df4b2e70afa7533691171dabfc861baa5ddabdae2db6a3f07086fd539fcefd4694fd9764af7d5d38a75c3a47ebce1820d1a15cf9791da6c194a4d1e3d9484773c256d48989cf800a83c2aa82fd88fe5fbf945856abbaf0a8b843422bf30f933de51739d583ab7870e0402c1c0d8fb95668a35027bc40a2164ea3938e7891fa052b353d87939724bc6e78c3950cd25c3d8"_hex; - r = false; // result = invalid + s = "010eaa84fa037a4fcfb3df21335b7aecc938fc99aea9975a532a64a7c561f51ed9f51986e30f75fe8483502ffae0797f06086d2eb95300163d191989460ea88419b6083a47fee4366ca5e700f246f6d613f2a382a2189ab3b85f261358a901a90af3356acadc3bbff5dcb36bd2eff1dc6a12671cd34de5fe906ea2cc4b215917a8d5b4254b6210989238c10d5fab953915198e30fa9e62c1303cf49dd9d838ec6819dc1848a50986c64b9180b00cd109d6405d6f478d428a02a230c36d7062e191569ef9459bf85388ddb7b1ec02dcb4f8151475265b22fb0dd31558526c014169382d60c884f47de582856245c286abe6252263c73df0138c8f5a87703fa96481022d2815c860d6c65271d784f6683c3346d43fa5372865ab2ec67788e050ed2300f331c4cf037c965862098064c96b17260e1b736384855637770a8587ac5baa706e4e2cf5dd051a00fa0329d2033b9e1aa1d0b113b039f1676b8ab9198b09fc46839e1c6492773516640f24ab0acfb3109e413985e795b385966f243bd033dd2c64d996a2ff82ae57e253ce3bfc92a2d3dff9cb8ec3d77ecda4b7a92beb89cd585e4b3b972704aa2e7b18423185fded9184ecc58c61c8fa00dfa5a996b59c322d4b10d86ef722ff52973f0fa1cf4482d439fc71bc4d10180309b9034fe93b271e2bdf16ea014252ca91b7a3827e530859c617e3cf0d3c6eb23e07fef0cc7a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4945,8 +13265,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "89f4d0a739849f213436c9575620dec5f5c2d6a7e4f83cbab2a57b3876663af38a0456a1106efe9937f5ad6d8a8952ac24883918e91a9d19c07b5fb67ee7dbd1716c86ef7f45c651e74a41233eb01d0ec29c7739bc93877fa5a880f5e27dd28e3e58f2c034c6bd512b9034625cfa60fa1b1b966ddef324eaba49f07fde57dd751b22a132cfb50a2f37c69f773feb8637be2296680a1b1511e76f5f31154e6227f748dd101fb7ce4dc4d78aea619ac06a4419c23e2c7a6025f3084c65ee4e2d898f3b8da4b180f592a3e85a3fcd04d788fbd55e7543789c177076918fbbfd0b9bbd69106ecfaf980154b008f86418285623bef88173d6e21de37fc433163f719d1a5b59a69a7b3af6e2c5e8425135c9cb402db577bc0d57bf9e4a2ea6792e59f22149be5280f19f087f99a5a645e7058ced09552f7e324d1d786c939490177c6c882e53332fc64c24b95866131c0e78daf801a8d94e59e1b339529e59fdef88bd1440b9f4928b1c68b57ee8ba22191dd423c32fed56bdc01ad0c14850061d080b"_hex; - r = false; // result = invalid + s = "1e2a18b3a997fd21ac881a2379cc08aa0343049a145e61e8ed76b334e289a05f2c085a996dbdd06112ced6ea7c5b06a1125a56f942509a12f97dac3a2ad1b042a90e17914fbcefa1cc9451f205ecff4e930524701ea65de62ab44930029580fe8af44969ad4ff6a277d5c0262051cd2b8b1ce14e66a6c723a05553777f4ea55e06587c80fad42ce0ceca85fd06400d320b56cb22e3186bd7e22686c6c4a36551189aebca81d8b13e2e9bba0173a9a631a849e591da042cc4fffb99abe31e8e05e1db34cc5031e58dcfdb058973ac0b2dc9718eb9359df79aae3bc1379cf246cdbf1df84e90c17b2e5fe3a8abb4a380476432240d5718116038bc7f284e6a36898c92ecd176b10c809792a1fa051555af72f47c2396978002099c19b094b7a4f250db92aa8ad35c06dbd2ba4071d09a103fed25711627585502711b93eceab4562eae06a1176fdd9aad9325f599055ffa07c47447305730faff2d5c0055c9f215d0ee45e33a5be1939e2a493a7eb1e75a6a77606a438258ad75af3c192ba61f5b6f0f181229fbd609f5c27e3b4cf4630204e16de9e49fe2092c04113f15c6130e5ceb037cbc28c92a56b7645d67ae15b050182b68f2cd5e5598aa437f07beaf40c65ffee403fa24bb13524d1157e495387220549e2fe0c8947bbee28487ab8b5a0083269c892b7929c17f3e6e19500020e48b7b293cd8687c3bc47e62a747eaac"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4956,8 +13276,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "75fa1d30a796ea7e6f6225bfc9001a3d48ee2b66985772624f51f74a4eac8fbf0e126a8a21e7904a4668c37257a2566f6d5398703e160c76fee8cf4510ec4b4fa38af5139a117a40cccdf5b2376da59ccc1030ffb37ecb65e7cea239eab5369c4b20ddaded7b4eb5ed79b3d878844217f4094a536d824b2d1b9960b8f9aae9dc42fc5c9266e0e15a503702096fb725fff3bfe4eefa8bbb232ba28542bcd23f434dc3b3c8b827ebea88bd1e5058763260c45ce83915d7f998b3b557a94a41f2d6e10d5c6c0881c5080f51a20c8def82ecdf795ca5682a4a4b451f627e26f1a0f4c01b0c4215d335c753908ec16f55290fdbccf0855047280c1f0e226199897300e456ecb74ee14bb1b68ed54408c5a3932eb0bea33ffb2f495577f37bfa6daabb8971bc227cbe817efbcc618f7365f5ae49b51280cce5d90a085fcb2568c7381943a93caede03f492869a768c7178abd6d8c051501a81eac5bd87da6bb0424655356d5cc86f0b04a598d83df52680cb20a49aec6f9966e03feed8de78c1e06b2d"_hex; - r = false; // result = invalid + s = "0141e805aed834891962feffec4400356d845f845a72505fa0aa9a6827f31bd38111df26deeaf49b5e03185e6f2c33f029c063c79326cbab34a85b60b477f61dc26e1f2005aa867f93d987aaf3e4a975504ca9424b088261f8f1a4060313dcf1a6d23aa642499659ef498f513b7ef0312c7650a28984a5b662824650284ee9dbc8e3f04f4464adb606911309354dd62a5d4d520839f95a89068ceb7ad8d5c5678c30133d5e200c2aa2e294fd7a1a2ebd523891cde1b2bdfa31bf1c108ff70b97d146154fca967b3e4bd9d24f6a756662618eb39e971a079c9023f77374f3efb3cecd68e818bb2071f83ebccbc763f04de303b547a4d064cdddc6f159ba42891348109534a9d5f2361a3a18d6efc5bdb48418df1597310fbbaa1551a4cbd21f263a54dd0336155f7018e33759306145f448cf72cbac986fee636817cc60442384f6ac2215a8dd7075f01543d90bf3b3d42f35a351e67f2ba5ac32ea91e1b91ac89a01271803d90a1d06c5ed6d18bc5e082df3153e1b6b9f1b7aec66936b4ce66b8f4e25354780e6695973b706ea946df6d160846465e8e38d9bae6fcf40995cc10b467e75cbe51b68cb4529b188ad4976b0cc30ccdbbf3e18688d7fc911e67a9b24aa50795f203cda06f11b7c41aa810f89465cc0968b9a09735a387ce71a19dac7bada9da5f1e718dbab01fa3ee889d72dda90103a0c3130ef4cce63fc9b4794"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4967,8 +13287,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "afa99ed41a02fdc5677826e51db78440e7336159a829d315401f799bcda6eb283c2c442706e8ede5c9641a50f735247795fa823d257cb8342315603904fcb7f3fb94c1d885917b938bb57dd8114effb76f0ffe53474b3b6ac909b8ed94a1ef4886b8101727038f2d3ae6daf82a3e985ba5e005998c31f888c3c53aed0246b99dbf17d12c59c02befbaf580ae4b54bf6cf4098840d86ebb406df68b871ce3c6a6452fb936c975efa9b6b40b2414017eeb8cbcc58fe3547ebb16f95efc24cceedc374744cb102ba6c2de6b6e53d561c5a6be9525df8faa7756a2e7af39950013289d08ea48dfea7e6fb0e7f228a8ed0c19e229f1929fbac0e183aeb196c46a5c0130233d78568736e6cf377e26e3155576982e3d65e08aa4def25b1a1a5a225cf884145c187818e71a989e0745eb6fbf1768d6aa5f0ee20d8d534e1f4f17cfbc78181858d1e887848f359a92b44a8344abbf720e9a0a195003e6bd881d248a80982201f97d524ccc159d0d0a371cb5d913429cd43d4416d9d572d49dd140c00a80"_hex; - r = false; // result = invalid + s = "691694de4e0c782cb4589aac4014a0af387fc3b950411dacd147ff110418a4e00eaa4b32c28b0fe65823d44d1b15edb13ef59760e4d9fb133491005f104d971a9cc24e17f122be69948c99b2cc20a1d9895ac77d366bb6c6dde71e75fcb538639455eb6f12d5f7d720708676bf8aa9a1127f1c4fcec09fec6e848b1fc32e97f0906dac871f21a49289522844379d9113ab3f2b3ad3669843f0030eb1cae580ed0d7ad09cf8503e19696c485cb10c2177f145c3426dadeb6aae90cc8f4e77353bff606c6654eb20705f9ac6e13eea380d53b1cbe8c0c0616af81d5b3a098f86396d231d258fab5dbd9039b03d4c3aff4397ed029ee343710383d4fe08b118d05a44be6937e2336fb3253d34500423a9e5bab1a818774f41a6ecbae5b2db99a9e9825cdf4597443ebb94799437974097896fd2b1c1ecbed77c4c8fff49acb2d7c1bd19ee53907887ce54e0d54b4ae5c20d0b8097b464a9a943f3d002d6a1e416830947fa11c7825b16e3a4b7c20f55b9a244b418817ab7c4fe1945f4a19fa51f5df9cc13d7b48e7681cfb2c3732077552d81b1838a76a27b7fc36e0a80519b0b61afa5bc0f336021c73a6e091116cb47e8172ce340c72332223d8f049ced8d2d77cf42367ec48af5524f61562ae22c4cd450937bb0af02d3c023945779fcdbe12192db4a263ca9c959c9877ffa3836151a9b9aeac1de436d491542821518fc98d9"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4978,8 +13298,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b5eb805ad3344e51dfc3b5aaf0aee47a8114587e54079d1717ca04e3e0786681fb9a77aba6a915369573714638b408c4574f8951bf38ce7ae055bc95a078dd6c68af56f33d6c8e39e61c386b8d5d148e94fcb64b2ee4826004509f6c033978b75f403b8710b16d4e0029321e340c03dc4ee0cb2e4dc112c1199a9de821a0d73fe5ea361a453175596e0c945ff0812b5b4c92bdf3cb628637b4fca898b09be06188183f37a59dd33398b786c8ed44a0f36a3a99a597071a17b432c76420d5a68d683351d85c6860572e5213f45bb7440febcc4ba6908b3920079021d03c0befbfc0169d987d5e19cd81267aba56684be25b8b94e3f1229c5757966938b63c66ffdf0f07684214d415d73bed838212612d3cd4071a53ec43cbbc5d71bbbb60f51fe310c26054318876a5862033fc21eac0c1ad91f7d7eea9318398b2344dbf3c2f04574a5c3db3121971273244ec876a63363054aee10ee276e8cca376e60189645e3f67517ef820b35c930485479403d697b2a72689fc238f09f60e3b598ba562"_hex; - r = false; // result = invalid + s = "1cf9c0f1bd92f7cf2cf89f6d22bd312a10e0dc9d2d989fa1fb527898c488b3cf2892f8539abf83d0be4f065c18967edfbfc30788688c84f458549f0c00cbf1ca965344b7a3a4c0ed2055cff5badc17493827652a98f55a6084cac90e90ecdbf878e879e55b3097a19c806232f1ee867edcb3f3a2d3a488cc01ec7793f78be4c2bdf0e1183ac422427178c80c28b437a2ca3ab9fc6c314a26da94267fec40be121f761602683c975ebd6c9575baedb6c8634e3725fd921de706780b6474d16f20299976502585d660c8b5ac6e45827baa31c23d973509b5acad00e5f075bcff398df0caa35ab37f91bc4f1162bf31303db50711ddc39ff1855aaea57ac052b0e396836ac13eed384e0e791cfd4cd3c49567b2bcf0818215e427cfa196808b2a3a557e803aabafb9441737f2b69f75765e692c2087dc955fb3a5e881be6f1f5144194dcaafe124e53a98302c918407b3ea9bbb160e85d7dd93fb297d53504325f26d8bd01bd02961d31892900807f5abb049f56ccdd2c3497791c36cc70ad3bec7753578a6c5e3dccf3ed08852922d909f3399f3f4930808359d14c3d07067f42a072d30f7bf8f3b7a7e69d04a1725a927c00a358fe69f5bd5363119efd1467a21a88c547bd2e6b589afc5ce0b671d7d484aff97cc18c07c537f88fe266ce6ac66e6fa6cfc6bb92db43cdec956624c1fc7db18bf8fbe5461b4a3d9d806137fce0e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -4989,8 +13309,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0f058dadf6bd5ccdb3c9a70a4223439936ac81daa5928d09c182995503d72b8077dc01ee268658e8ec4da9097cba57c19d005243ccbd98454ec42bae8f7b7ff9fff4af6b2382a271931e7ecc15cedbf52d1426cef27e033d58d8e153341265552edbebc46bca1d8e88bbb9c0f82600d29c02283fb295caf4a743fd66f096b3ac12d8f301a1a1464a511f1e5da7e46f722919836ed985bdefe7587391443b7e9f6dc7193e51f0de9e0be451ee335a39b875be4fb6e54ec38d59aedd2000f6149dc1e07bcbc6f674baa3d9170759a2db41d6a1691086da82baba102cd85d97476beec17ba3c10e82c213ec0d09afb4fa70775097df3e9c911a2b8a8e3d70f55e4236447c0a539e499bb4f442d218096ad35b104270205d6677f37f7d96266bc180936c1fcd7a34f13976efa47110b86cc4f5b0e94af73887d31d37fc38f84db3ff7b06bf151f16c0077921179fdb52ee89414dce82c0248a97b88eb2aece5227078877148879f96777fbe7fdb1aba00d9c7340f7a66812a080ad1da514fb1d7855"_hex; - r = false; // result = invalid + s = "7e6a01fc094ead66a6f89c64c440b06a6476f79af9f3cdd61a75fb883ad980d5891df82f0c3b101118494896c7abf2d9350fc58543b0ab93daa220c899ebcc28a31e057f9994803a7e3943a89655255fbf5d9b3ff804f8c648d6ea6e9b26d00fb5e86dbe92c1082a9f6d26f53d7eb0fe7cd0ccda566a590dd48d593062c90fe5d341dff67d21b2664cca770c98f9d5d83ed736159e2dff0ce6b6f0d6086e67ecad2ecf6b466bad644d4009c683487c6dbc0a2d3f2e71402cfb6f7089da791a71d5596df2342a8cb09c61f5d2f565b465d7148ec997d8e76065949e8d30ea703a7cd899a266b1abb5265edf95061684b1c74919a06c1c49d491f8392f01ff3079b3f5f46e8ea01d457964d26be2f0d24a44306eadf3cc78e6f9db51beb2ff36228e11e2e5c86b6235267c23e62c2c4a47042bcb24971eb70316dce06d652921d4bb40531e5c03f05f8dd6babd4dd13c571cee415b3d1eb423e15d0b7afc7d796eb121e30bb8ac0de60c5c8a407e5a4aa2680dcd6f8e6910bda3fbc12934641049c514cf18882379c3bbc168f5f4ee3042943b026e11fb3ff53d386b57e0205fad64aaf22fe6a7c184869dd581a7e2dafa906203c30474580ff3ccb5c99bda2222c2008cad84ba51678127568a31e0ef20b042ec929d52344cbae587b3603d3c0524ec5e2985791387725d2973ffe51c8c8132e09c40ea783d1ea2de489b6f8a98"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5000,8 +13320,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "93f7909a8a46597be65fe76b5c724bad99e5b2692e4a6a8e9a7adcb38a39bdd7f4048a00edab88fe9316f532b13be7283bde8f7c4ffc4a822575e992cb8ae46848015c0ee56817aabe22ffc2f25c80e04a0664a7e9a82dad7b001e21b5c33f08965d80a1c4bfff52efbaffacb74b0a9c10acc384cc707b5c5295fdd3fad5fb3b89271f8cfe0059c0317836b2a42640e4c0b3969aac4050bcbc756b5350dcb61cac15d045151e412b6aa94d082266e7f4c7dbc83b2adbe817476eb6bf5a07cc7f76fe80b4135e0ec5bc05b57cc823a0b993b7b3e4f3a6803879754220d7a6ddef0f5c6944b352ac5064b9d836a2565eb0e2049c9208b797de75b141a5f6d89bd6dbae167f8b1c7fa9a316d10d33d96fad6e2692b98d42fb6fb3d79a32a7a5eea23f421c5e1dcf09047b77b253217c3674b97b85afa0162d818e569d6c6438235f404e8fe9e3b3b7e38878b5bd296f88758b917b7d7cb650e6ddfcee085e52fa5143429b678a3fbed73b588b6b4cebc72d3e23266f8478d52629cdf1a80ba37550"_hex; - r = false; // result = invalid + s = "64817e956309ae6c90d0b97da1070bb420980d6b68b7c96f9c720bc4f111802ba61d3d3f5bf5a5bf2d4622d1c54406c45b0156fa9895214c0d8227ed0f1a17e1a6dd572da7a88ae8611fef28439dbd734ced9192146dc772557c32d5d282f33baa5811fb117bf30dc0ac39c16e40ac482103e5c0f8a507687847c14b3ff061cacec02a88deef59c4d99bc40a489a4751da64958f811de9e3ff25e18bfb44e177b2f3d3b30331d7f09963e59656e45fed25d5cf4b9002f576c68666f1b803d8b32da33fb992f4744f9af77bb128cfff8809794a50fd36ef95d38c7e0da601cf2d7d40d2c0be78ee55dec2cca3d9fcd6abbe3c5d72308a540e861d7499e4e5e570893c50f9da5e8c2c58ce79ef3070ae99193c2b09501163adcd28c647b63c9e309392da6a32ea5ca554a12ec44b28aaacb5f4574bb807bf4f62201118292c65db76dd8f949473fd19691120c4584fa13969bc3903d640f695c9a8f78623b243355788c56a812eb0c2ec477484409f89aaf23c4dda18f8e95afa8148ff97e281a6fd9c703590a25e5d07027a0ca116219a91a9faa9cfec21fd851da6b028c3cdc832419c98d2a89fa048a94984ef107846f90a142e3b6a06fb3fc4bf45ade5f41a000a8f45b3bfa42930145d27aca34654f9087f478dd020c6d0aa91de88533dace92c1e972d9619b672961c3e7d371a3b9c041183be5dce5bde6622f215dd9a79"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5011,8 +13331,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2c40ce5377f098678cb1a3f6177c8e290b691cbafb4195a6244d148ec48be99792f6cebd4c40614d9250bb3d6f6287171ffb713a0814a6746e2c4126c82f7bde8b40518ac506cc73ee8e0516a0d0257ef153fa2464e17cd17dd6ae5343d43eadf67c4bc629082b484985dbfce3cd941c1b69dd4a52b0f177f641945ae0037c79fd0b975ba955b2c1901883f2c5320fa7b43df6c673eba7c76c0dbfc03a470bbaa2a6083892af527d0f5921d2e20080804db8db936d02f53cae19d010a113f080e0f7baca77c70fab4819c2481f6f505b5459b59a2a482c6b8803a26610cf54418a931d48b8b3a2f0a5e82cae0ff81bec4ee9cc93e8fba9350b5cafc6c020b484847d1e590eb1484caa4afbb7d3cbcff85789ff47401d69de6554ae7ea679b69e115ebc0fb3f89ce9d104e4a27a3ce5098da2c4a840f496e1b2395a8725dee67259bbc71e89aa18c35a9c0db3d092e02bccdd93fd6d4fe51eebf17f5cff0e990215537cc0cefcd69eae4a596d8a95a9ec40ef651ea7da397630fafd26494da0be"_hex; - r = false; // result = invalid + s = "77e731e53718e3dc61be2040134e382dc3a0e129bf6757bbe113982df3abaa0a29fc07c8edbd3715efd24fb98ca9596adb1474861950f557e74b74926459dc98fa9313dd737bc72f343ed2bec5d06419759f96332a2d659e0fb41cdd4d866b7cfbb5dc914c942e61caa2a31f48c8dbbb77f3c51ec7158be83a1feed1ab592030ba3a6ce80c1e6177a08e1b93f15e7de5b473001e4954f0a228675212cfc084666f58fe97d0a83683f0eef5238c17ea9442902a9f4270067862e650194531558d557b4e44b337cc38a116c435a94b58daca3f8beda0de35732d0decc17bbbec8f4bb8747d989febe28cd30f752d13527053aa1b9617f1acbcd32772136119bbec735a601edc8fea49b0e4fd84d22a836f06d73a101da90ec933c835916d4d64a7401ad247614653d0957680d09534c52844f56e5b2ebc4ef10c6334ebf4bb52afa11ddfdab36215b00da3b60819c9d6bd2ebfada914846d280d3868db9d1b3a59b4bef9412659fb091c8a1d25ed521feb4d1248a8c88cef0b0af815ad33a25f1caa729b3a0cb176de8ed69f65ec4ce1baa2f45dd970f5a0b2fb9eb96aadb614c5811636c03f61985cc4e5831547c7edf78a0708813bcc04ee170da17d17444085e11e2623cf469e6d6aa93fa5b53bea2bc58451526a584430704f60ecb5aed8083aaaef324d4b9b9ec069a38e5a844222b34137a9b90c05f6acd950918ef1c676"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5022,8 +13342,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "28d3351a970732d5ac3bb69fdd6d85f8923a20f7f7d72985d6df68e41f972dcabb638534d163eb8cf8baada3e1debb7249da4efab8e1ee782dfbd3b1add9e77253ce048c8d0a350936806ad473304f1dd0a0318ad10a11085f2cafc20114ab1f724ae5ffeadaad0bb17bf66277c499876d5ce17026d6d30964dc43e9f68e271d5b6c81b9953090f70bd9b9c05e3219942bae623faf06c6f21952427a5a1a40f05c0c5159ff6e9b94fe4aeb8310b0de9e69ac5f0f4787b6d489d1040ad63ffb1cf0fb924239d5417cbbd7afce71ac0841a0fe2b6d6a5742649fa60433c55fa2cd99e1e173b67528784dd0f55488f7a9939b46137f9aa33bd62e477a77d5fbcf0820a10a499aba3ca383210778e7d84dece64f121acd8d74a761219c6359d2dcf9aeab782c58dea8bfdbdedd4490bbef8fd514f90cc5a33992c4d3609e300797fe0d5dd203fa71f4ef0a47624e5e51455b74ef87e49b9d122264ebdec7fee7bc0249f02ba60159aa0aa8585ce19633cbce48e6e4765b0fe7b4f1da4a8417092873"_hex; - r = false; // result = invalid + s = "56b8b9bd6db8a43ca242e4dfc9311593d2d97c4d587df2b1e3ba02aa84feb8383ea083c8d5b11bfe41ef7e5b50be817532ab39792eb31d16b634d596b68d1ccbc12216c6f8dc9e0e62437ba0f3e3fafce59eeebc9945aeba64d0b7bbdff383b162d900cc5ba53751dfa51d2befdf9949d40826c93594e694cf008bb50a7b67c6c80e17463302df3ef9dfbc2d1c17fa72638ce40335c8a107dcc4cfe94c553eed7c771f7dd8cee63c9d50a94c7a51349e932b27315a7654104fc0674930350c160e79dc4b6d92136c79b5b2b06b828f6b209651371ebcfb04b3f3472c0b82c215109f9b279a1a7b0515650a44d51b8c73146909f79d98aecb75536fac3e8620cd0e0017bfb7384307997d6a09414cca0e11299bdaa5df8f16dc76a370cad405c6e3ac71d0a3dd9547f0f85463ade2f4d842fa7f5f616998de8718e011824268a0f6a286511db676ef16c05d660e3975512735f439c75d06f55352cbcc44f9420edffcd213c9185e0d0a82c717ea1d49c2f03ae42faf9e7f3c0ee60363bb9e71c27e93bbb16a4fa198b6fb1b01ed64aed8bc4a8ae843e8e2f6970470f4921b38d151c9f2b940c160de0e707c3d4cdf8e4cb5325ec646455b18b77359c1465b1bef75b49ef6a17f689e765e5d173040996f5f5829577059453fc463aabb531f776db1fb51f6e33653b78b843ed9645e295f015f07a6564d9413a8614514abcba3f2"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5033,8 +13353,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c4a4057d4d2eb4e64dc163add62d9ad01b24bff92fe0607c0cd39e3dd05e5661aa1a2c9dcdc7ae8a034b93e502a4eebc0384519a2589afa113a0dfd45b122fe16bb655b6a034b668d7d400dc250b25d7dd4511298c1185c3d02b82ec63f3f406da0c72d204881ef5ef43e63cc64b799044a6cbabb533d862efa9c3f483eea43b26859b134a2f321ba5ad09ac8dd3f740c0ebabbf35ad3736b093097769a635283c20c1b88ea0a115d59a692552ad8f70050d586532cd3b65bd9e281781d09712b1f1287350a20e40f11af5df580a98b258fd7431daf19f92546d5b997df560a3237e8a2e83e925e45effd4cbf2c1cc439d0d3e658d836d6b93513c41c87bfefc85579257cb8273dd0bd4b7ca21c9e2675ab60de22289b31f5f96f708b76ec72b0209c8846ac6e32f1d28996829ebeb949b2358cd2332178bdce80804e4650b84a46ba4f3bdf2aca0edcb7d4138e97dc14d30ba34352d62f547caf117856a745e1e99eec18cc2fbf223f4548755fa3ef8d9d7c0274a9a7411dfbde3bf53d9d84c"_hex; - r = false; // result = invalid + s = "2c73f75eaee4adfebf52ecdfeeaaf26d3cdad25a8e0cf12477e1fd3ab823a4fcb65fe98c2a17be13e5826642fce27391ea9ffdb921ed452bcab87205ee6cb4dca99f9d567018da95cec9b3609117f420a09f40e327a98ef077d42f3bf526a42d4d339c4ce885ee416efec194c745e53faa6cbedf99d4c547314cd60b92b5cbb412d160b9803953591bf331204f5aba2d9165b7fbbceadc5053f26110ab86f5b3bfa5285cee4b31afc6dbeeda9ec74a1f7d9d229530f1f1411ec508e817612ccbf1d11488c05c2fcab77de74b241b2a070225526a5afec23c63969984d09996d63cc226b99f7fabbb4675dc486bde8f2cd5adcea2d758db1a90eb26340f33ab4ccd0d059c7b3c55c7735f9d7deace3b22436f78499810fd51650153b2426b0cdcbe963f057440a004845ac7a2423b921772622dd1d8901c15ccb7753ffa2d0760aeba068c680cf35f8ad185c817a6442e4bf5dda4963cc6ef1750f13ba70a8db32f152d013eeb3be0395bf8690a1d0e42cf0ee14c8cde420ad39f394deec4aa8ffcd646a150f7b799960d30e5c736339ac43b83a9d98e24cbb4a9e3c857726964e8f251b06d50eeb59df8e6d21ae1e4ff676b3e039be53382230788dd1be1294656b987f43cec22f52eb8f161da9e8741fe0ea845383421f63ad0a7f742ce21ec7f011482e8093d6656e8c2d61261cd30569c94b3318288833e16f6154e105887"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5044,8 +13364,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "9a86cbb68e9a4449be3ea6d69e5cb21af81647a8a0105db03c54176fc83991c2b9ea548fa8eb3b248c72c391cd23dd675e865ffa561cda1abbbd58a85fe4fd108bafb213a8c79eeaad5bb3410c7d6e85a237d1e2f9c8e0b8b8fdb472732bd4bbfaf58f57600996a49a742a6ecfaf55319bf939eece50d1b93df931a144b07e075f8486b5dd65071bf43812a27351402b849872c849878634cb01483df78690ce0dbdc5d45d225ca87614ed1afcd084223c86fc9bc9c891996c096f9296b9d91a564465197857fd6769977c8acdf0acf2ffb1b24d311a8d0a46109594f1fc4dd5b139c180c6f02b88e72e155626a748ae9da4eb6a1195126f084b012f72405f027bd22baea81d765f435efd2b97fed2df6e38ea603ddf8f3ae969f9690ac22d8072211d1337125a3e88388fbeff1b0c7cc7677998ee5f7ac31d8e268ca900b72c98889721e18e8dd74f4b43b083998b28eda3895cbaaa607b9a05f90e36d1e172a95617e9b102bc0717dd2a1e807b11d72a8a15288ca4643c791694dce30808aa"_hex; - r = false; // result = invalid + s = "71842296aa03a79a0f1e485c30bda9edddef92379d74ceeaa47f09a38e550d6a9f2f3a81c866cd6b8cd2d2de2771e697f1ba921053fe3dc65a8dc552baea56ef73559d59b89bd41787854cde8ae02e46c871c0046fe564b39914e2c9207002e3e4e76aec2e1665267164cf3def96c504d2b4d87596d77cfff21a8e6145e8d06e52ea978c577c3720d7e93318aac3f97e92f2a6b049f255f4fc51017d8e84a082c8e777c5b51f8d467a73de29edf9e21d9d0b26b4650a5a17d03db310b7e2aec007e88fe26a3de4d5fd33c48856f724ff69ef52309a2f10c07e9544193ba345f04360797047647715503709140225b109203312420ac6d9bd23d71ecf3813b5779378dff09165ab764cea277d4109e7c6cc983f116dd504b03ab7b8fdd03c873bb5d241b9453d3a4961e0d3074dd62d62b5c2de009cd4c95602ad262fa8d62df221ff12d16b28a773a8bdcf74fd494f7ee3531397f578f2892626584c8ded9f943891b2e1597903acdcd3f8de3c9937498c94b5b4c75daa68745961df27bd5610fbd7644094ae9a543ed9b581a40340bcfb12c5f8ecf38c0d379e3ab45fc0f14f7c5c6c763565721f8b6808c1b8cc405975c1b09b333a286023490a0c95a44c297f65117b39b8cfd2f60086817badb98548e0fcca4b53e65307bd7134c306748a35904f815788ea207948cfeb380ec969123beeb7a62b68bef8c4d6ea49b5f317"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5055,8 +13375,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "71399eff1c82b67a7d5da71df51de813631f51679ba441b0532997ada04711a2c874e56ffe4d9289ebdfda910988e1c210507a450031592268385fb9c08102c1961d33bb789522d97fcd86b7e27b59d3c369280c7367286f46c1e815851349fc16e1bb2fa76af8ab168acb634a22a8d60d7c6d2a81f4db77e65c621bbb4d0e5628ee2320b042bb4c83e55e2137ddea75c3547f3a6b93f1b0a0bd29c729835edcbf5129b33112ad000458f4a8db1149d514db7ee70e4b58c11b37809dc32020dd81fd1e3b0bf1354154e7dc0da0403ec944fc5a855026473112c88f072a8fc39b984db2c97d085783d4f8d96c87f4b826f39414ba05f72c7a22e25ded75eff8f00e53401aafd0ec08b255b5d03b2f2cbb9603a2def9e5a754b33953d3c03ab8cc7f8db33ddf6184150f5680f7401dad6b6c38ef848c00b08a70ecead088f895acf5f25c9e21c87089fab3e3edb7ee3bf3570145041808ca738a46c8de389b5c2f84f98f76941fbe2a9a159525994781137cdc00951d4229f8df099b44930a7a72"_hex; - r = false; // result = invalid + s = "2133a0988351f214ecd1f653dfd50bd4ea2bb991c322e6a195cefb93cafa2721f9fbc7d119f04832847dea1c738e2321e06cf17c0e6733a4efc0f6a600c569c3fa4f9982f63afae7de98f149194bca693aebd11cf0a4be4aa7d9d5a261a3da3c1d316d6b2a0a0d0648e3534c5c8f4338e2e5b7494fe568039332328d8cf3a226a10babeb1aa737d4ddcc7b3497711c3d41c841d8b5056d561cf7edacd7345b03e318b564e32f4ef084a3271f219ec48b1c8b5c6f4638f4be601c2d2844f7ad31c110146d299ff53fbfc305ed83e1f5bfadf8dcc39fd7e87d94e1bdeabc366a86edec62022bac3c89f5849d66deb5a9b74ea85a6801e21e97ff622b949ab6f8e2ae25e5e988730cd7d1a7529f53f1267f0c44309d8031a4b3ada669f2edce6c5c6cbc58bc61027d1d970c94f6996dd77f56de3a006effe6eac7515fa39fce76b28413b44ffebb93ef231514f887a8d611c95059adc1aa27b1589b38ea1851adcc211673eb1d891b78c934754e4da6c09921d3bb6f2a6603506d5ac0ff43c2b47d775e5f1aeff566bedd7c3946051d5a7fef36e8102e97fcce25c7993132e123a4398e512db4bc862d4fa89bb226853e095d441455314268813778b652c972b742d08f49a932b6950b98702568a72ad419c588c7b4e21a091ce14e454bdde9982eb8626fe7403de1688962d7583005f14f3fe38b88031dd21fd2b7cbabd111b003"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5066,8 +13386,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "661c8fc20646446cdf579d0a78003666c8fd9fdbe9845c02823b8e3b780f532d2891fec3a554c743e87fe898300ee17639077fcd0936c13eae51a40d98c329c3ff525f65568bf74fc84fa112b3036610d49faf17f3426309805636b9502c3dd81994465594333e2263969da1509168f1228ded2ab8ce0ca53c8d638db26899558ccbcf52af7b7017d68ba5d7bc79657d72f87a14ad8224f40d1eeb1925b51f8330b221ceddd530a73bb814216fd6afda33983a74f7da5cd733729df22ff78e027eff2cfde27a76ab1abc97e08375f670eed1beed74a9b9205ba2497faa1c46f0038f098ff5950be17d4dd8a3ef2bb0811a8945188d635a977de685435dc128184948c53f43abb70c053b9c6298b7dabf1df91116cfcf8945e78c7e3de5bfbdf19b6893e733cbe65cd33950c77132b7816dd47d9ecfef2f15b4290cc1a4cc5d327800215a49e679b640b0ad1aa1593a730eca633ae17bca48e9efafa0471a6591535c94c4d123cb2ffe33014302f3109712c279834871d9b18982ca413d131126"_hex; - r = false; // result = invalid + s = "44bb47e58deee2f810a6ec524cdb4fcbbf07b9443adaff29705f553d9db84bef6f63eb4db4ebd274c0b575a1f07e847e780206fb8ad43e7862ded334f5074576c2a3b8f0127217857aaaf469dce926d789d9f3c256d847d77ae668b15c6c9ab1a810368cbf7fc9c5d57f3d9a13e1b0a9ebe4eb451126ce1fe13b16f8a121feb3c3c97323c387c4f787b6734f3eb1e7d32badae444c04afaea4783b0eae921ae12e241c2447a6a4af96722f0b1dfa326b1213262ae46f14adebb3d8d3fd64fd5ee828b2cf804eca75999e03c4b41ca4f8d3498379483198df02916933bdbd997f4798de2c6eef9a6329e01175c334067464d95b2ee89f14c31298b1ac4aa26478cef462538c18111a0bf045af60fbc4d4716bca1a76994e96315b6aee177452d52dd0f823dc5ecbd454922988d78e9ca13671418f37a236a8d0cd1e0065b8d1291360c9b3daf8f942450bac7b1f5c555133b51ff27c1ee9a69b685f21c6db12ab4a20b79e9fe98293a2e1c4fee427d3dc0a516fdd5a31852a8da12d7eead96e1355a2bccc1783529ac68664051fcd7cbd4e648d9474053f92efe22636246d05cf5bad42d3c0ee7a64e2d35b096b1075e09ae1b311cdfa395663696d208be030a4aaf5a07aa9be6c2bed90b2f0a603fe7824367393e23cb96877fb991939d64539ac29127640347c991b1289506a7bc13aedae905938578d0ee9fdaada55479a09"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5077,8 +13397,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2b0d588982c68cc0b39c00ad80c19ac645e038d3bcaa384909d94cf6c8ecfc886a83084d19843f2878879e60f5a46af4ed8d62f533cda8ed04ad8aeede3e3c823913d62b28bcc20d9836f6ddd9ebc3eab3fa52e37638ecf897d7cc027bb05facd153090a78220c10ab177f1bf19b2c6ef6ce94611d466ef758eda71f4d496c420dd88e712c6dff77149f4bdb50d1585db27fde0f2fe37e04edf63e56eb9cb72106a9a821a670110d69683f32acf5972efcdc34ed5f8ea4a40f4f6329479499d584c4db4df7122a2c7f34e866564e68552ce12fc30c2a6f24ba7c7d9dddd7fc166ba8ab0b8b7c1cdcc8af880d6f1f2b621286ed722edae310891e3b2b81addfda316225965ddfcf0568486921b125cec003a7b48af9dfc95b0a9b94c53535bd4dd977f2a4aecafe2fb08b5bfeb997d22f6fa5fc946481838a32273b6c7a89817dbca3d2730bdffe63e096d3e88a7b9785e7ecc30cc5c847f193268ed761e05231e3009cf3ee58d2a4f03ab73f5053b0bc1e57960ed3ab43ab5b1493d5a73f6faf"_hex; - r = false; // result = invalid + s = "417b867a2c487eb27496c234147b359e9369a243f4949a525f5464365b10e3f85ed85fb9b4aef8da76acc07065019fa9a1840fce4f62a8319b7c15eb6e263bba29e11d517dcdf383ef19c864331592d0ab99429b561ddbd6316d9c2ebd3b0ea9d2439864c6ec77d81969c94a3125b39d392dbc6d63a3fe4c23cab0f94fb64c0e6d7a78d5d2441ff13f4eae39b65e5cee1effb9a0b325395c9833aeee5c0438fd6f8a9de4008c4bf8909c7e61a7c6191da35639123a5ee839cde5b8c2441494a33e2c72ba0eb44ae72b02f146930ea14b555e3df248ca62a8851e7e460c794b868c428524d5c6ab5f35d343e65626060a1f10dd2ff0ba8a98dcba86d39d7737faacb688b3a0754ca038e9bdc4e07a8046971875445af7ee965c0bcc8e5596629e4ad220780311c820505007c708bbc2b44120f0ff11e7a3d4731151957d59d729b2eefb26ade081fcd3c37bb66011938b21085809a352927e044942d793e4c30b52f79ee6c1cbb28fe521783121c1f8c94084021d9ac65bccf0ebe42630222c60fedbbaff52bbd3051f3c93ad11ae44d403c8574bfa36eb590a9b35267cc37ac827c66f415ae4207493fc1976d588d5c2a9f7549fbd1c62ee66bca08516048a08c5d9bec776d8b8a9c30af9645cfed8178874634a839f493c8f43ac8a641c4fb9827f4de6bc59d59243b46aac083e639edec312f259ff37447e5af76d38093423"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5088,8 +13408,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a60239ae28daef9b18bc56ca81d0c6161762a66e8bcba6f387f71433464361450a6a08912bdbd86da34ea4954ad0c6548131d6a4de7f60615560524ac5644d69e14f4bd11a29b8ad20753e2c74db5529ae90a6c733032e2e365f9f57cdcd5adf5c66979870d8eb9c5eaef244973376f4872c323bc8ec32e5e92713527b6545aa85bfb7c31325000e6ac6dafd5b48db8286bacd05bb4a9de30d81a0eb8e4a2a888a71152e68c0ac99c74adc697ef9f34c9f61dd00514a8285eec30364e96652c49a32afb7b88f60e98a4f0d2382d795d026d8428818633cd5d62d97074839362fdd2508633da09ba491ba0ba0136056e7cc0c25a0367f637e90ccad93c60c5f735fc198810a01e2f1394f5bbeab64cb0eb87c83f0487b353c7fac6434805476f65292a72aad28b1bd7cfc5764a3a6457d05434814e7f669fee063e9a171a7e0dc627221b540bd360fb64ea870a03239eddb4cb582a0fddd6ce73e272c12901af1c9865d30f11a461fa1d7280eddcf12b8531fc1e5b6d6a771b9917fc3cce20188"_hex; - r = false; // result = invalid + s = "93b642675280fa6a71f3840b4652d9189fdbf39b190a81a4d1c85ee3b44f60435092cf3eb3747aaed53f44bbcae5c83bed8bafec7579c26a7d16d7a3686096ba20ff6b68da5453bee4c302bf9be0bebec6d51bbec2201a24f0612ef5affa721a29f83e7f0a6d50078749e2b2a92553fec493893d2a7ae1e3e985e96894521c0b94a53c158b2557e22d28d3d2ce481c759b2a4519a2bc6d9a821203761c70044c8f7410b554a35d03f93ad3758bbab8af7196219e35edf2c67d94cfaf65d97a204b865010889386f5540bf0402bb84dd429c2c76bd0d1fa25340cd259f80ca6dfbf07b89f8d14fd3a4eb8b5d85453312f2820a3735807f33bb8efd61234ebf18812d80bceac668ea4a32acdb33eab320463c7cbeb5d2321fd830a0ab2fe393cb57d7b12317b9839f602507bac99c0a83239f5a69ed543f6ea7f9f96434a29b13ae6db22a9d2078ee6d61b56cdfb93f586389c1a0abb7ac05aebc5dc09cb7e32848eee332e60ab905938cee2acbcaf40ec269f4908a131c6ecc0ccd0968523a311c289786a8f846e8154e9b609ea0a837cea57b5e629743911879d00172efce69af841b8098aaf735368785d80d3d57f24eb02c4686caad13f986b64a20270c4c156c1feb73dde9ba08c4b2a54560eb5f42796edd048a5633a188fd4a58734440791e27d4afb03d07b35e2ca22ba2f09f9c7e0e6cb278218faaa08368857da4473"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5099,8 +13419,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "1acfcdc7d861cd9b8e26fd8dfbf13517caabeff310a2f5df45941cb6c4ff23fdd500fd1ea35a8ed95060496aab0273091dd9725ec98b14a71f214e7e9f9d8bf77e62c2f1b844d9ffdbcda7c11cae4a463f9e525acb924336a5c93a5331c2f7e167bae20464cdc68fd08f515f21bc897efb732c61219f8a741e867c3faee19dcd9443a8b1f192fa00df56a1de690e0670cbb0149bfe8bb5b95ebe64accf43a80f5d262666da65cba48937ff81b78b489482aa6a59951b1f56817d288d3942cd79ab7eed0b934f6ce092fe775eb0cb7ea9858e6810d3720751361b903706b50f17de49f10616f9d7d8053775b00f6a3d6e77a868045a85ad43c15dead74f5f86e46e2a455961b7f6092317e87d93b50a247c11b8c27087e3ecb3a680551e3bc3874a34cfba1f19f69a708762d1ede6bd560095f31b56863efe7913947132caf74e50c64b94ec8ce28a0ac1b4044f23b89e9fe5c706647ac8ef0305a0402a84d21a3c546cf7a7ab63aaa6577aeec89c8c260124cef46f587bb4ce940e0f963141b9"_hex; - r = false; // result = invalid + s = "6ffb8b3878466bd34318e52c65597696912bfc535b81811c58be1f08562ce3e0fea157fc5c2d99d694f2f25855326769cae243321ab8cdc0fb6de149260f62025fc1f8f4e2f231b3925da0c0433e9066f22dd29160adfbc5faf0559cdd7dc3f8b1cd995e1f3825cf4440aaf20d7127b82ec0274c3b4bfbee167327011d8791c7039d215aca84c0f95ba3bc9c4101472351456943381d5942cfb0d7676aaaafdf6e3e6982951ee17561fb4d9c3373799294f35b658cca04c634515f396ea237b787d7ec2a5637724895dfa34e9f60688f88e6e5c063fe2e4b445bc1ce0a6403ef3db075c1841b46566d4f40724a72b8054c64a484a95a7eaadd0aec1ebe24c5ab209dd0ba14e719ebbf01b9c28728bb8fc5c05064a8e6c6b775ececd553ca489b367f54c9c4d7a33755e3857d0fe4acab619c8d7888c21168ed356ddd85d673f09da352a485dce57257b8f38a1634215095ac9907cb9b42b1b389498d13c011f54d71e819a9e2703c31c2e2dbb5d4e83b8ba3856c4456a62a85992385c62bc81785be9ef582db760cf26d683471a2fb3e4c67a069c8359c9cc778c7cb434eb900875cddb7227c1314438f0ce08129e8e02a6f4c49969468e29446a52a36d64f3058354f5f67c0d5813ce437093d3c5e8c81eaa856a1974db975680f47ccf45ff2e645cddda643bb40082baf7dca6f16aebe5e00db4e32340f95fc1c2dde0515ca"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5110,8 +13430,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "478e30fd62bc07a0ea6fcb4fd9875241139b012c921c448821356f29bfa331a1d44a03870a9c79482bed3ac275e0c2a15f731044133b5f6e1491af217180c7a5133ed781665265bd6fd9cbf3d65111d39c6c4314231f745291c70b6aa3d6ed696157612967a283003f982135520f959d24df7247d0aca3a81f7af80062d4d2b2c4fba1d1982bbfa37d5f9175747f6010391c78bf6445f553a5a77251f4607cac9eb17904680536c2965b5db4431619363245960dc8643c83b914479ef0162c70713b985241d2b271facab79253369b37fae70888db2003cf87677e915888d1f580e1d9fc7360ffc8a36c15fdc1f27eac143081612c004b81d4ed63bade76f04b0c9acdd5a79457c5be90ab26ba7c11ccb3945c05196b7ff9e29c713f6de873cadf6efac0879139d2bf25171474eb4b754762352bc77efcb50d4328e940ab4aabb8907043a4e24fc2eb0fd7da3f31bba14e1b91624212eee638ec4051f1cccab861b8aa6948326bcbcdddcaab5f2d0b38737ca7722d8cbb310585f01787007a9f"_hex; - r = false; // result = invalid + s = "11ce8740bc6ba086fb28d4c5acdbee0d0361dae73c885d50d358975aa38f8bbe19fb143fcc0e18be9102c5965386fe6e69262df443cab9cf28f7f15c49335d85fb5e51ee6f0b4f6255b73efd9072fbb9079f049195804a7c5d9e4235d86a28a67a561c250734d9f7124888111d6562bce2feb414ae8b578c8aaf7f9081189191dec9dfb8b1a15eb6c3006d829e805f304715c04a3c383e76d3c75289c1c6c45fa0610546fae5bc2eac8be40cdaca15a954173d02fdffa2a4245ed52452d791c14f17e3c714bf8576522c790df825a654e3b3b3076dad815eea03748053d1bff1412dc39c61f0b846cd346f02a6d489185501e5490b5c8fef128621052944b85d6f5f5e7042204c0c6f536a815adeab9cfaf39b351251fd13cb1dc49ecb096cd21f4d1a6363c14bd55fb2d402d2a24e2cb964b93ef4fd00ebd0b441abf7932818fd72d11a0fad065d90d91f7361c07d42b881389dd4d4befe3baf55146af5e7f0df9a5e517e5e48248ca70756cee648a208abd2cc6b68d7e5753dc00450d3930edbb472e7b4957907e0e7a6cd43301c9558fb9319440fefe26ff1baa5e05e7ea04e7fa23f74f31e3997c993a806daa7f462699e71b39111567ae37a0261f90f673dcd936f43560c4201185241a95ec52b962d897fec8856adbbdb33cbb9da52350daba5a6265cc181203ead7746d8e1a08f660eb1cec28c3a77417fcfc3d4e4c8"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5121,8 +13441,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "1e035257b6ec35b3ceab42c5ce7a5fc87fe655a55802b7f8dad54bb048d92ac7b22982bf1910a810d0a3c5aa26c5eb9fe3e2692a272ea063a31607b0765bc3cd4365f75db38ac761651f9dce99c3400099fe37a76c9201fdc4f97b83094734dbb64d6ab62e5ac6b581412943285083e2f8ce252596f8bc0e0894d4685de91e248c62d68bf7665028d06b9a28a231243f9022c66c02ca8c47c711bcaae628baddd685f0a4001a23a11e4a898de0c0247373e0a5282e2214f7eda51513a903c810a70dce11a95c808dab26129af2555679d8ba048585a3134c0197ade27eafe7f4a777ae835f509301bae94e9c6d40ffe5ce60a43b96a55efc5abac62f747d5fb3a1c0b3dae4b9bcd8148eefcf7de3bf1731aab7bd21946d58beb2203da98397bf4c1479b1072a01782f8f08367754a1e25a93a096baab9e88475108b4032e473d005a9c91eb3043ed1774cfd36aad18446485f138da61dd9872364d35aa7e10e116c70773547ec1625c9861f0e6c92a9243379604271ba88904fa0d247459a6f0"_hex; - r = false; // result = invalid + s = "2db244178af65b9ec6ec41369a86fab05a1365bf0b99c080feee802fd97151bcd6bbea1dcb92144dfcd0f19d0777c6c0dad4ea7ce0b0f771d45579f78b89bf535ec00d63d5d6e448064c9c8e3d6d52f4804e81e44f9e74145b382b05968b0693b206eb086c669f858a7e430d7e7f8a28fe6f1cf311dc3b14ef923493ea4e6a6700ea3e090ee04dc1c827333851d826af92bf8d269d15981fb8d87693bb287373991467e9e0cb6822a97bf2e78b27777eeb98ac0281c51c2fdb582e8ef6112c56bcc13d3fbe67aac437467e3521860d9c2411044995b5ba6af4538a88b329347f8cc6906290c31f6798a09391eaed03a4013f875cde2aff2c88ddd170984b78bfa57323875d312b13b02782f24b2ab1567d1038acf68ad8bc7268e8623302bd0f54bbf345de6b2137d5f1ef656e8a881a434a5bb98fd2ec4eaa5f020b67fc4e64ab388456065c05798f1fcbc96d33a692f4bf826a566a1cbc1ecc2216d7b7a57e8a2a0cff642c8cff4ed92c66042aed4fe56c3944b077bdad323af0aadb150498b1e3ee0ffa53ed0a38dc7ed0f36f6ece1e299bea655d46d8fa81832754805b9a75328029dadde22f605c8f362066f200ca225dc75ce51e1cc2166701814e387ade411218b277e72bb26d6b442f7b89c375f44a378918d1f159d05708a3b0a78ead1c7221fc80e8832acb964ea1b1f4be4b90fb27d4ece7f4ca2833fad52ad4e0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5132,8 +13452,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6a245aa2bff7783e93fdf6f5014a01934272c88d6ca19ce53708237bd15ba9431d0ed81a6e81ccf78eb2d6e1d9ed5c46d39f818e1a1dbc7634fa1e2a1ec207335bc838932efd7eb85bc62fbfac07b0710740a9f0b0621bb212762c891f04e0846ec594922e917f5cc0509787603c9dac04d98407b967e463a0d912bfca979b92b12e756051e7bf023c9f0fe061c0d67a87b79d8ebde7f60ef4d2399964b8071e6a1a9c63a8f316a174e33edb1023fa0a0bf272800a9620db648d061eadb9d180c576817c759483f85ce359685598f15c9b8f00d75f4a8a1cb260f666fbff559da3a4f075e7915b284febf8bf21eb668012dcf31692123b94b4e44e3ef17c942644437d59c49b437398bcdc68b5110523fcb48241c60a8f4fdbc0ec45e80acf259e61cf8414f4dc9e9adefdebf94427b2794009b1377d64059977307059828342d605545e0b776cca88dd0db753b5d8aff63051f9ea49da13821ccd4cd11c2174f5cd179eb95c6998eac5b66a19b8f6a3b4c6b00d744ea14ef64599ebdf94f859"_hex; - r = false; // result = invalid + s = "37e5551e04b02acad8b4f9278fa555cbb96ca67e62f157dc90b6f5a681205e52289bc535a3adc515312cccd7f2dbba9ede859c13c060e5d85bfeb9bd6eaff08d53781373a4c33857ea2a1ce8b1e45d2071807a9de0bb6eb0822fe923393512ae48105879305dc43edc7d32f209271244ec2162d9fd6a1e85ac283639d7d8170e642405df7ef5e9e2e98e7585d1023c4d3fdf24d08fbc2098aac5addd9f0cd78b47ae74836e3915dff9454d02bf5c850edf0d11953da1b0f98db324ab158187f2339d092c271a9264ba9592a132bdf18dd2ca235305e87b2dd1ac7777b6f3af6982d488645836910e6338be0c901553fa726131d93841c1197bbf50a64aaee4670404061da84ad64ed34dca9a9e910d09ba0c15d3eeaae48b8b7b527f6ab99609af631c026d0c6bd30542503fa04b161bef98f9d4b89d70207ea6b1d1b5e5e8fe1f53f0a4bc5e5f67a31017276082ea0f5e6f86fbd80395ccc0eb04ce77c83f86c5e2f68f8836ad420ec34b73969788cd3f74801b394e06cb4074e9106171286066e316ac0fdd51dccaa1702d636d6fd1f1a4c0dff56fd74148feeb0ab219c1bb766beca814723e5ebf99e5c5869f0c642a7ee06ecb67ae5d35a5c20d9325b51922491bb1193b6f9e57025da1a598b644c368c32b89eb1c8382fa35a850c452b66687fcbee08cfd9970c68dfceb327461ed351dcd8b93e805ee26f7347c82af79"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5143,8 +13463,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "bc870ef5ce9468f85274cabad18feb0c0cdf2053f0becab52a3668d7ddf0239197eb2365f29e60edc36e673dc7b0f89f605ed6f3e9670b7bbdea42770957ccb11f8421a9982f38f2764f75f31fecfb1267a9b1e85cbef52c2d3e54aaf304d54edca0e2464a71946442970ee0ccc545946ad7cfe08363c87dd89cddd1d7d579c22ec49525fd9d83760909209c1e79a24f14750f0d0501d517909dbe852ba777415075a797a0f410289fce04c31db77a97f1eb1e8f978713d2b6bf9595c03f6376bfe9b9a5a8943408170d69272d3a5ad2b98b73d1213bfe97fdbed1b29b7b5a01bfff20122974b023251a2825512a2e99031777491fab2c1f41517953c10145b0b606171c22e06fcd78d6f51c02a25bb93edd7bba6fc3d606ca802f8ec4f82c56d1aeafbf6b7617c604ea53c736ba6cdd755df7b03bf3d00266645e68763a2bc53c7692bac8f57d14675d6131bca1319f251eb589c9cd71062d3792a3a359476038dd1f55784754bdd59b91fb7a9fbf9f2274705abf67b26a227e7ad1eba201a4"_hex; - r = false; // result = invalid + s = "2fd2c0f64bd490915280b940bf2d3fad274eaf724e854c08191b0b258020a77d75b31a7cf73e7f199e5147fcd631af4f19294cb353f24e4a589996d4208ed0efd500d8d4b6f9604e9be6ea98980d493d97332880b87899bd911729e4b8207d68c63e848fed90993d612bda375955feebcfa382f718044feb808267e0481ad37ddb741c5c3b90f8099da7bae65c15f19cfdaa2dfcf5acc6cdcb07adc0d90e59ba386ec12d68db732ce68f5b06c1205283d4a6318e73f60529d15374de34180c2b80cb648d8de0cd0fed4df7d841eafbd9a93186298b628c97553a223f78ebcbbd35ce0b959dc16903973bf3a7937be4be0f923add96553521e8c415464d0b610f661b4a884a02f10b860393d6c7c749cc807c40ec28a922ca0905483ec69439c0a1489b8167967e0ddfa51f17017d12e4134bf775281c5e71367589a2e934375dd702f7ddfd8d0dbeace74cc1df9dea95ee09417652a6e15f59e56798ad48dee127b8bfa744cd335648d5f2e1320760d94cbe8906e2c5c86e8ff09e3efe751217c4cfee822613e8196afb7b16049fef2789843943f6d87be1e479ec287158a3d47620bd91dfac1b6b7336753bf545f6b9dd586defe4dbb034e455260b2a2b92a74dddd1dfdd41dd9f15537cdabc6ada84d8a34b62ddb0d6e32917437b1a023456c306ad7e259e11a3cd2ad39d19a2151fb64a83b4b74c3e38bfec2a231961d3cf"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5154,8 +13474,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "92780052295fc37894ca6c4ff5f6d68e21f8b907a5ef5411edc4fae49b615503e6b2beeb1501c0cbb0005c4c29bb918eced60c62fb21154d11d02659ec1cc2a41786c813fe80e8fef35594255b11a6f6903b93411b1db9697d69f2ce115954b095d5e56cb7d202c1d4f6fbc795d4966980255098f4929ef28cf80a2dbd5fe2701ca358c6acdd55cc801a0f8fdbee2be57c6b6bd168e90c39cc20adbaf6bf083e3b53332482a411da3983f054557ce976149d82e6ac3613cd95b876c450a474823d03ca31c1be5c7049a5b554fc2b658705f16e24eb9fa4bed22847eefa71ee4a253c52675fa82cd22c924e33467803faec7e4ff7fc81c40e3c8d102cc4d54ac8b5c06b8416041a50cbbc53723373bf13a7f5b2a062552ac843cbe18b3d5238a8bacc5592dd3af26bea3d8cf6db91d9b54f8e61d62f46b39bb9d918ce5d77370341e5c3ea5ce4f46a44bdab383ff1a5afc5ea96dde6094273606e4ce4ae545bce61549e1248011d6e2bea5dd6d219d9d8edc621db13631d17067765827c50aa96"_hex; - r = false; // result = invalid + s = "00b50f1f881d4e9fb48211f63f77adae62b00426eed922b084727ed24ffb129501757c0a6db9236c3602bb34b8bb4a10ece612cd9c33c9c39e25e01b8be2edd78f01e0d82bb2b319f724e84e9ec54910a8710a7d12d5d41a55c0fd553fde5a88f4436f7800c67f960508faef2eb778dcc4ead7c7b9d7ec62077c28be1beebbf25599091b7816257149921462595704a72a958068567850528f334f0d296df80aec4c576492866bc870533b5eb63d618ce69193dbc3f02b2bd7aadc884cdce2e4d69a8421ac1ee94915433e79ba1ff1db517b03d42c674159fbb24617e1a14e19202fa32ddfb2aef413e74c8ff6f3390387a8ab398deec57bec3dde6c88e2b83dd0460397858494cdc9fc2ced77d992d1176bdddf31bdab835b619e1f2f57908ff8da98cf2cbff204d1819fcaf3daaa1d19b24b97bf01068b74436cd126a08f9af561bb76aafed93b4ee5c1476cea6dd6a030166e1d0e13dfd70f3e6ed1b09d74c422fbc30af83b148de7dfcb2ff458244c51cb9963a323dfac68b93851c60a410db1eb4641a9081cec16a592af67156b98e2f82ef5993b22b77f21f4333596c2df9d64b538b9740b2d2d4ee6c718717881f71bc674e41450e224f25c211f260b7fe52d0241b364f2d84dae354a87d40819b3ba1c70bd59f2b07cb253eb63c32d7250bc9c18fe29129bf1619ccbb40101522e8a55dc66b6c3d9827905ee5cf45a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5165,8 +13485,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "abfa120284e8ecbc3ef8eb997e304c657bf2b7e78dbbc7b5d910e10f02a1be9ba1305c1ba831da12e5bf7ceb70a6bbe94cf2c422b2e56ddce696b0ae637f910a7032fa26c8b0489cd57b3af8b3eb09ceb24853e95315db7b6e468c2feb5287f4338d5b301efeb79815a981c8fb5112d16fa5ca1a6f243af9bb57c09e3c0c68a1cea5ce25cae53609295eff951bf030db144d3871580f1b9285f6e58b7d7a0b23dcaf5dbd2d96b81674bc9e4b748073aafcbe476808e7dae536971015891efe25ef14b00e37a63300ae82b6413d31d2453e55b3808670ed8e76fa733d24e346922d93c7d340a820151686f00c4781c08419caa56c950b9674406cce2c1f2658eff3413ed6be5ead69b6a46939120e1b03889c6045805a1f302339c544f32bf0ca56c7b49b2a24078093d2747c4eccb77b2db148df83e4e2094683716abff5599dc5ae6d4b132c2202aaafd8a5770827ea93a15a361a13eaac22edd47e0154164ae88022f6e5da9dd158a3a25f5fa02638b1522180293dc0e06aa0150b98e7903b"_hex; - r = false; // result = invalid + s = "53f4c6e5191f57b977b03abf83a1b3dc9fef837db1e39b0033ee82ba99568cde1c927fe80b05b490517c190d78a6c46f544f0ae3a5ca17c84a1848a3c6516e0f7b027cbec84dc587ae72ba48dab3fe46a82c1e74d17779e9c84e110d37ede5825bcbf7fc3c56c8f6aebd8f433b0e646608c56e500d75433819b511840120145c929722f60e6f848cc4c1411fd612a4c35d87045effa75e41a437c17aa5293781a0a4a50f7b990cccf05ae9e3074ff6a4cdba9bf8ea9b6b78649fd087510433476e7cc80ef56e66fcfad2d7d84e519fd45d3c6be04edd9ec1f72a3815c560f7d1e79a7c4c2e609e4336b13204bbc24072c65e87ecb176f910bafbe3da6e62f0c9b03a8e6b68ba9dbc60c8f2be249f6ba1fdc969ccbec25494739c861240e768c40e4dc2bac5778e43ede6031a3305a797f83d690b96694ce4ad40c6d92b1194ad966d2b73ac18a3651fb95c2e3ce8267f1a26bc27df52c65e5a28450bd9564a909e70a0ff2602fdf46d52afdc574dc129cc8106073eec41a5a866f5baba7153c962d630ac52c78a260ad859e38d6fcea2880f73d16d7c3aea84fa9998e656ae5b631cee8df041625e16302e681d9e47fae9ec0b8216eef9cfab3790bde7e48c228df8703093e1178ada12ec79800939d0eb2ba1989265df8e67e53f7b2d4c152dedbaab81a87d83076eda00a4d2c05d5463694eb63fd3524fb1e095bc318e46f3"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5176,8 +13496,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6874b0d4afa491d22ea00d77f521010641dc45ab6081c939770c8a74553ae414fbdd1a2686f346eb5e50eec2b75be6b4d6e3c1574d36fe32968a5683dcec662480ec526136fb119ce78b7983875fed59989b24a2082b7dee49b00cbf3e18d6677ac640f723719362ea64fafcca71c4e5925159bfb36b7634acac6cdfd6eae269ad7a3c2880eaa5be35efb72d42ba30bc5fdcdc0a642e8d4aa2a6c1c7faf4464ee49284142cadb7851e9ee832a367558b1f3f06d4d55f50c8814ec6c2aa4a3284cdf3d471bc07506c4a5f061a441e44b87912612f1e4c576f4207348b40db8bc173002ff3437555b724684bc01e8490e34af10aaef0aa9d509840e5ff8a6cc92b2877d1ca108590d7a382d6a45ed0eea4c0e0abd5ff7675476b253f06a25f21c6e658634878ba318a3858737ad875d3bd1c1cd1128a094d778791e6163970e78909d4bc1f5b62d912bc643afe9218ac9dc29df522909d394a5178b285df3669fb321f0d7b6c7b50791b6ebedcb3740fd7f382410394f5853724970dfe75bf6ad9"_hex; - r = false; // result = invalid + s = "033af896d04df9dc8ac3173e608b6005bc510747ad0861dad56157052ae9f1d679516091f72c67c9fa9c7d6f363ab01e2f954884b99d8e4bf822b7aad524e97e4cd5aad4ceadb627c560557c1fc9eadb8274be552c040d9d0e586408c0228faa147aa352d8c7a0ef329f7864fc1a2fe0a37beb5bf22eb764f1308465a2f7ee808b7a72ed69a2f242511adf783f395677a1e4c7989ebb9eb2f5b594f3b6b1b33b3679bf3e84b488ea5d377487bc34aba7b8a925035b8960880fc82f9d5a83450cdcc65ad72314285e82c5da7094a333a3c1adb7f88d862b2d7a985ca989a2cc2289b3c0bf269a2dc304235817c966cf29a692757be369e708ba0ed4245b28278f53dde1984c3787a7498a8707e9c383d84475ac8b6b4be4b0112e91b8a861f993137c037c7065764d9a023d605ffdc0201c4ccf87022547c231e6fb7ecba3ceb74fd0000c9c5bd7af0d29b1308c0943573ba4ae4ac5c8206ea682e42af9402250594c44c0af7cea7da32f9a0187d9cf2355d71364b7e5d73d4dc12fadd2b424a753acd4a9cbbf24c4a3d515bcb65530b9a404b179f7f25831ceb467097e1b287a6686778b20d708933c3f0b7e0b9123b3fe476671e2f9e9c4aa9694c1194411255d2fb530311324f9cfec5445a63d1b527163b788c23073c3f457329a0406d9a68776be33e7bd364fa41d322b70125c5e3c899f6a4f42f0adabdfec7acf910bfe"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5187,8 +13507,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7fafe1dca84d820316780965987a135054f498e3a9f70341dcd4cdc992789dc412b68440806faabde11f00c0b6499d84d5962ad1dc9586fbcb57ff05d57c907d74bded8fc8d990c71336d814f5b732d0fc3f441d44b29e1187102664fa71e047f0bcecbd57d9d6e36d9085c37add3a9c110be47b3ad2b34c5b8e94c6065a56a638fc073199b16e17efec87cc482a192f56f8d0fc0c84e211d1dc658fb222582be550439615803be1384ff8d2ade2ce1aa46bd6544141246ca74b86efefc8c7cb169484c122f2269fda56cd87cb257f7b31ced8516d01423c1ba7edc1ffb5de565979cb45326274f160a67f90a4fc6e66306cb833b914fb31b2070b3f60316aa1b2ad5cb5580be9aa47c3e2223fd9427dbd6f35d83e7a890a8054f71dd4d1b11d2597c47385d3a6123cab406dc61c562ef40d626e7561fb81fd3eb1ab72af94122a40a4f0649022e0ed52fcad209ae22613c5956215f0e3b4bf3d2ca6b45c5bd5c71138ebebecba05d0ff12ef257d5e8706a628876c958e238a3e4a8b3806bd4a"_hex; - r = false; // result = invalid + s = "04bf392202890a596e3d7094252cf6199706b8f880db1ffc418bddb8dbb28f1e5addd79d2091403a58d47e9cc68f1486ccef4d24b7bce606cf063bb6962a97e156b1747adbcae96995800075c7986e8f401d9b41613afa9d80b155e184ba03602de2e8df18c7921f2f284d0ac698746da8d9ea8211330daaa8fe30ec8813993610528ae08756c54000255f6108912c0b2bd50b2361e81587961996d3a32ba07cc57ead6802d2f4507ac545a03c0136679aeb43816759ea7e2ef91ae01bd83d9f28a95d4295798ddbee4d96c4fcaf112c428c5ef7edd5321955863b7c7d80e6f2760a505ba20c994b955863e111f34f6e98081eb674c4cfebfcd191ab47f54db9f14d85a2e5f0fc49de0923c0d2bc55c194781c316d2670a282fae9c3b027ebddcc00b2b3adf9435d6201e89c84926670968b2325c1285dc5872b50c658ea3bb9cebf2b4a955cba4384a6b377af7602603e8e1a2efc112700e803597c1697836a622d4c5edbcfbd9f72d8252380ee22e1efbb2606aa5525451e52f306e4d0ae8884e793d371d904ba40b6b786992d15e1933a1a6c70bd1598adb2cd689305e459e8ed22ca1c7f44ce18424a506a14c33559fd2c377d6735c69fd4a4a6ac18f996505c16a2b6f2342fdc0cf4bc35854de07950f5bb4802d690e8d0570b081d0244c8c26497960077a4e26b1caa309b5b48ab5d3aba2729bbc9c107fd5911fde709"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5198,8 +13518,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "5015c5a03cba54943ebdb80e79fba8a8bd61085c0febd1a675aa2d0712cca98b1f0f43cd3e239c890af58dfcb40baef28692e81163bd87b5121d67c588cfe972ee8d560621ca1e9325161bd13014625ec02e433cc97f7025544a935e0f8cdd728f7fedf90a8a8e57d5e12d9c22306fbae77c092e13a3bbc9d98bcdb18714d62f3f24e65e74768c0a9e9b8600e87443eae345919ed7fe4c8581dc00f1bc0c2764cde2108e21d34cbb8f0ae4293a4f7d4ef938e8765bc862302379d979207d4f7e294f6bafaa309aa4013877588192ec5c669eda7f41427f81d75176480c85e3d122072d96174a57d77bd1e637254282c840db3d2a1f7f05de9f47422c32f0854a9703c668515b5b4030a5d26611e452306d8d239589458b8bf17f56f3447969c783496ceebe16a163a06f17bed06d4505b8e0d809e351e59883cc3ed15faa22683beb684e04323f146dfabd03e836f08382f5d00dd2d1e9ca17946446c306a2b97875faa042e3a4002fead6d15a07b7b4cc9a2a6b5b436fd03e231cb100a43fd1"_hex; - r = false; // result = invalid + s = "7c4cb0c37c0c6e6d8217e6901fd133f08f354d63e87a9e81336974f5ff1a7a47b9183978799e6997763f716133fcc48a5f6999e9829f3c41876d9e8855296ef6769fdad843fa507c26400711017411a54d64d08227ef648cbd5954f8957ce43106a5db60c39fb5ae941ccae93512dc1d01fe886f13b1a018d55ca347acb54ffeb2fb1380da8992d1f20c9d3474c262cab394d7ee15c9ca58823ee7932c70bc9b475bfebea6e33236de512eeee76d44a10c156930884c1c9d033eb1d2a90ce7ac16ad2151704f89d35a1daa5cd0f9a53b9c0bdbd30445f9116769ceec7698e473863b0ff3c368d3cb4e3f3c80427da193092e70816eb1432bb6023c8e950ea23464f8379eea80bdf9fc952b9d415004c895a153cdec8a5c72dbb08e39c143901bfa29264c7667a5162758a6f97d046ff6207a4d581689d9d0ec10de92a2213a84787c9f2a3f08fe0af2022582d2061108e38ba478d0a9112bef776aa97d210e53ce38c301480e5e2d5898f4c653160ab9a1b9254c8b534fdd52b14b47096f333ae1d1e91f9caff55bfc072b8fe9245ad551d2f42b0994af0446f807291771aaf5b7b13492e4ab2760a4797981a0151385d31b33609ec46e48afbf6db5aa91431d9d4690e9105b88106b7bf3fbd084d58beb91ebb0ec9aae9da7a318c98dd72b11c31c33e74294f92e6ebb17ba0a0752ea3cf13e71f505982336e6cc64c7aaa2e6"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5209,8 +13529,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "872518041aaac17a061bac385b6e03b44e0e7ac1d1d269e166cf4e4518bff2e3f70656e7741555941032359b110530518955870acde003ceb4a528b9abf2a18c375083af2554e57c5614e82bcc012b4677def5ff7cc63d4faed4166097160891a0d0869cb1117427712861fb57b2c545db08427f121533bf1f3df1d04c20fa2150c18d4e966951801c8fcc7ba6f02801365906373d239942be633d392376d1cfea3857da770ed5c3dc4bd35b7c5abdb036e829c50ebcfd31a55c4baa2cd63d5b54cf92402c00f3e18097affe9be39294c4eb04f033ebc926ccc040f37fc1a81c132d971fc1724c1c00377d1157fe08385b3b12c6a7d44314803b1a2c72f7a8836c72346bbf428b67b86bbdf37638949d81ff4153c81d5fa1b8fe3f8a94701945d225e598876f2457adc2c58424908d70e3a61e7bcdc909993c75ae0c24a111c204ac28aedcd7a0cef5adb278de2fd395c97ba15c9208e32d709a314f17504ab83f583e811845e6f7143e9f6b9437ccfd699d663e1749d71b5639009d3e5cce02"_hex; - r = false; // result = invalid + s = "85e71d906856bf8c4e0d6f21080d06aaa277575dd3be7dadcb8e9b8796cc000f5f97658c6cdefec04558e9352469afc4f35ad23c2466b1aa590c5992f0b9800ff06031ac8980886546896d1f591af48aed715a20084d07bc2b3285d2f32606d19fd8ea8b5365d4ce5fb9b292a860af272e4dc9bc265b4453abcd01c533c52cf07c3c4ef911a9ed521cfcd22cdc46b7d7e434fc965639b48849b8ee76ce60dd306911cfef777f137310b0f1c8a9dac49ad5812f6cad81a0f0256e7bfeba32b8a86414623da4be974b602361735b259bd039191fbdbaad29dd55e62b69dbd4eb253a53f092bdf87b5dcf43a71ed675d2328990ceb0809baf5736ecac1721a551b22b87ebff5ee416ece2944fd97d4ce92cdc5396c9819cca96bcd9738a137d27fb1e077d69cd70f9fda27725dd7d41db8ab66e6e410f69a2b5ac99c0ad4f0bc73a533377f5bf5320c0b30895717040784dc55eed48450c0f7d7d1d0fbe5d2c4a132951f7573cb57af4bd905ee220d4171c5135469e89220106052cfae4d75fd8e875b78755e31f694e2ccf03677a1aaf9b33129332ae038503e851cf3abd157063a27488f150d27c5e31a0a5dc457ab54f0ed35667bf25f23a6ae85e6a3fc073cff41c0b350ddff712a57b00131fa7f9ff005837229959808670755ff293c7866149371302ae4cda3180152269133813f0276e995da1da151851745dedf6e2b3b5"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5220,8 +13540,228 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "745f043935ef3cd29118668cb2115b671af0e3ea44e9fd20b18dfe1667c926f9d4ab7e281345f47a2b06e7141cb69ee1328822cd04c8835c42bec9c19e30e6401bb6e27c20c53b69429e2bf5641c7398338f080fca064fde6eaf77451cc57d8449046becee9b87d6f797711d20fedee58d0f162f71fc8e736229753101eda5121f332afce03b334a3b4baee7c97e0b6991b5a1da18a7499a99f8b6983cea9046ac22b52f7319d0d1588c2105c35773c3937f256b40ed8f4127832385c9575295941572909fee56fd9a457835f049afea39a22792f012ea2d38d0da75fb22e3f0ce7f628a1488e6d30f58bcdce40dde4146b472227a666d3d4902374c283f9aadd499604b45511cd120abace789075c8bd232cce717824c551f8d8d03ceca6009e6db55c6bf5d0c9615ad738681ac94681ac2aed6501278eb882436cd134c9398ebad449cc2c430ab9b8513b557dc4c345ba90b5dcdcabb01992cb9cd851266d1520762213d2c2676b4c2b80301d59887bebcf8a09b012f8907f04f7521175238"_hex; - r = false; // result = invalid + s = "5241c9264f9cb9ce9ef5af2ec403145ffaf98890d4678235070bbf4cb1223e696be29a6fd7f4a50d7348b71af2a203740f3e60c9130b3ef47c8e99625faf41aafa9dcc1376c0f5bf08e81374d40da548249ad94759f77dd1ec3aa87f5e81c813a4286b880e343c98796afb6244702f8e3b0b7d23d12913ddf26a8834ba85c10fbe299bfda0f1bed43f868585755b32fee760a9ef2d58b7748247256cd47693a542a46a77f05d367baef3942d96101fa0dd16317a89b7813ff00fe9b99c713b36aaa1f8605fba1350d376f01c7ae2c13b2ac052b26bc8a76938354b53586872eae0da6f6d54726869baf908a5855c2141ed3473185cf40f940b8d3af032c2821eb0d7a33bbcbafb88765a44abc1ef09ca64e2f86bf7b331c42b3155cceb5bc6c126ca74ab9d59afcc3421e6aecc61fe4be9a13ba493f2c8b44661ca8c75119101a58a29bc3ba2544988878d91a1477cf193d7de347700c51469ff62ce2515646583d819dfc7eb2eed709d50fb127447af03d2e21644bb82d477321a86c075d273e2cf48c5cf7a0a943215f895387d7aaaff820cc64c5eb2546c4854a9f34d794462d81dd661a3414b10f691e5fc53579ab0c1f31349a1dce725dae5fddcea1fd4cd5544b4032c127a2daa606804b1a4a5ab3172f19955a63e78ebac5173881cf9ce1b3de8224ff4add02f537eeb64b3c7b66e29f44af49dddf77152b41a66b51e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "14291e13396addc81cd8932ea7397d4a962989efb64e3b75b22952c485642819f24d5acf69a8d4ca9aa22d64bbc7c7ca499b354ab456a7d6012888fdf3e23d93893451a7972a3641d11c645f551ea8ab895f3fa5b34047b8dd4dc6096460e884869c73e80295d9002c9b5cc43af0b5bc72b1a30efcfeffb37ac23e514438cfe19f18e02e814552c16fa74920b0051221d60d808b71ab6beed881a6dba87dc8a050bbc1304c09c357d92e311714f619219c78daefe2dd76d59eb58937c490651acb46bad6c446f948211d63d970d4b8992edb68a4b6354be19a38d3cbc029828671cb81ae32fb615e7df4ba21477223da93c7d0d763f957478281a9df4ba7243a17b15a36c3f887e0c8066efe67ad9da17e5aea5325df422bb37650186b5fd27803be65446c495669c963987551b68209dbb66a5d15a14c4683f3bbe51cafd909b26f140302fc202f4b14a276a6b919278b0150debc59f551d6af3c2e6e3c982375c22e390c6a8d86656c0c427ce23a466d188aec77f92cd68df94625225b570b59672cbf30d2f4d8f897ea0655a0c607c71f2744ac368b513109bb19d024dd5440ed434fbc11436e1fa00996d731c21688af9ecf99aad3b70c0d00d499195bbc2d3ac7c41dba5afc4554b8beb1417c0d44a01ae28d358321db0d8a3e4ca79c2b26e26f1c62b18f972ec8aabc6da8b5b8faf8d9da4d4d4607799425f7fd6d4d42"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3300d9b3dd613d13e2c829004fa706f4f9ab5fea312fe6dfbb9ff5c65dcb188071a6e5d053f3668b03f46ed940f26e13e3cd7f5e0208d6b6f2eff3c0f76ef1e2c513862008c913c15c3f17080989052bfbbb04b16e01e7de19b0cdce6fe8a53dfbf3656b7423fc33222529afe742623335c4e3c0fe7639f1498104022d90c71d77a1f682f9ae96a2b4906257097f9884df6fed9e394a02b92ed920c80beca03a96dec27a78c5d2afdd6016027d37504f0a90f2cc17c406887e4d1b66f239ed9d9bdb634e991cfe76c5fb0ed7cc060772fbdeffa96043b34b373775ecf6495339fe6b6c02edfb0e14daa12eca8f6dc1003e956265cbda769873708fdbbc8ef9067e89c5f9e3fd4f02cf9a64fdae92cdd7b8f485ac12b5d36d050ab427f2b7d206d0349358c2b981ee07e160c2d91ecf1fb5a1ca000c7eee7818fa44046ac6ca78bbf458c7c48066157f4986c11d3e0fbc008b8b9219ceca2dfc50b7beeacba96247c1319352ffb89f3ace4ac0962f55cf492ecd7b33c65b9807ef82ed439e399e114b2c2cf54c9301f4c2f518783f80a6829e3836026c08e12099eb3b018f4b1fa8ca689b867e2b5fc4b693f1abd9e681096cddfa86488296898a05b82057d9512d5a24c2699f5febcc7ca6343c6bf0b30f2f667c535c06d11f354d3db0532a247658d3ff1f1894fc511ec4b2a479e13b20f4bee018359acdf8e24a4891e88b87"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8b88c1f220ebf8122b20a94cb91f94058d1756765232c4290237abb8729bb4fd53449d7665f4e062e81ff8d214f5a6ab21328b88d0028e380e7f3b392b0287589d5ffc52d808d16879c4b5471d3b4f85818c77d6bc7570b6d28ea729e963bd8fc61167adf81f8812b91d10ccf82f32af79d77cc3e48e64ddb40937293009fc5b8032bb7fb5d14fdb13b907cf1e8abf4e4105550529b6d3496e8eb2254a61c1a3ac06c6b8978bda6a6347395d5c489139a0b6540e1e4da63ee4d5e9a4d872175d91cc8aeacd5f2ffdda90d4bb2dc7bfd628a9956d53e267a6dd452aca3184d56add3cc0be68a26e3b4bd5e596e3e100aa5ff703699bf2d5e576d6dc24618544a047116457f6f59592465b541a1ac50be7cdb21b8f58c096c8c9f54b180691e7df9d863406d42f542018485a4cd43f235c57b53ad57fe37bfb90819f67f5b178d2b0e6bb8f9603bc0ca77c1faea73dc159751e4b705b58191014b6eb899aa0d5bf9d4632322a8e7d6b1fde4d8b228b7b44d560019fb51ed689c830a39f8323908257a9706336130390fd32f728c939f4e64212ed464de6dbf3d3179c75f43dc03d8d085812f1310b6674a81536bf9750d60e26268d852bdbbf276b4a5dda4ae98d826fa3dc05b01d8a5d9373c68fa00eb663ce6eecf25057b3d92b0f0a83523f8778b788d8c7a09566d499d9eba78acef1b37835b914e4eb0512c70610f4777d8f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "130c4d8530ffae7ff195c51644d7be9d7cd3226d8d267af93c3aa603fac1aa9ac16a8976cac7abab3ea36ade05b26ba2b3618c4b246ad5c97504619fae384dac4fa6b7573c0fa670dde96bbec91a1179f044519929056d627df918c49c0662b601ac4a14c2fcd7216ac84dc58f2fbe6043090cb71fe8454ff721998a1690ab028369ce401e5ad067a43f0d62def1f65b4d9ec3b7ee963a897bfafcae863a6645ef3dae8a81abb46b7f14ac617d0a137e9fb17ca0305a16a5f21085be846d21dfc4b0162d2d146360efa242aadb327c2121c1c6ae878e9bce7b57f6f8d38cac2e4bc476d9634f9ec1aedfe28173c4cfbbace68baf0a8d85df118d393ae8c9f0cb4cc66e5eaced223b06be663c8b2ea26fb0f7fbdd3ce47f39fdf74d6604f53c60c0ed076d5cd8edcbac2e3b81752392e2fadad5e409c6c2f8b59244ed1ed3a90359354c3e6da3e27671582e0c473a23525b756fb1fb58d68b846ed089c1f2b47d9fc10f340acd3958fc56603d501f632691aa446116f7683a6edc6c130cf6c2b90a72dfe82a5b215b237f81853fab1aba6bd4f74d01fa3838a87b7bb88cf506b2b203a9b7e4bda0fee18e768281fdbd792253452d4a9169606116b290b289acb79c1a9ccb38e83b523f2b75a60ffadf3b5f6bcb25f9018aed3b990858be855b9897d339e66ca95d88f08c437c6f0babb4d3a6fcc0e30a92985a4ba3d9096ec401"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4162ac1f8b6424371e98583167fc19b5d147653af76dc1bbee1e278c9ef1925937b1baae029ee30883ba7c7b9ab70de761dca35433b6f94f5a218fb9d0107614dbf97589a14d02ea8e2cea2c823a86b4cefcc8afc44b68d71a4996bc1e3f6b71c72e020284be397afc973eb7ed95121b457fa285857d9ef05d385fb62418b4ce12a02f590ca3df7654a8de4fa246ee14a813e12bc632dc2f73c0e9a61cc2ee262b3c4e6cb2f47cab66a424530aaefdcf5f0222128c7c5a58f918f642871d8a6cbb380312444c367dbff9419356e02d26fc21e27e8923081473a7735bfa40bc29fad197807a89bc18c06a8afa5943de9e503ac60f06516d9d3fc2b2db2a2b3f2ff64c832d1d6ddb1cc3e1cd9210fb01f219aa4268493688c578cc87fdd650cd9d838b9af5423415d06c36d9da08dbe1cf14fe3310476664d561042c957db1da20306e2e795c30f336fe9c7cb84820391573db27b3566da36c71e97838cca048fe6cb096002422b11e7c8433745b7e55e5945f1f54419978a7cb1899c02f9ec35ef317764af28e731f95b44d720120fda48e43dafbaa9f0c9e79d1fb82492b267e975e493b25703280002396c18c50d6cc68eeaab8bc49feaf91ce66bf06f28d7ac6b9f324b16288d2498d565906b00d4d11c144f0095a49589b8447231ca2cc3ec1d5c84a8be006e32ad4e3a1d1441c3ede1a78cc58199f58bbd1bad417454b2a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "5077c4887bdbab4ad5460fb616275299e60221eed9fe0a9c0ae0b4303b321a3bd7dc879ff3177bef904111d0dba467251b5fda012d44cc44b684714694dc702d10b7edaa2e6363d9b91a47abaa006df90fb686420952b848b49ecc403e80e05a42f49ccf714e6fbcb4c82ab56d422c3c44833ba77dcbb5e02feb25070b0895aae008f1f0b5b6451f22b43651026a8bf6317d0cecc2b29d0f50fe3cec8e8794263c12fda6cca8a14e5022e18c92fda5e9d03b82fa9df7e018cd611a5c217ea1ed2cff08a9b5ed930bf60b7b2f08abb5fb8ab46cecb2043b0d0c9cb55045808ff4e87f736fa494bd7a4474c12f208f05c17397c004656cda51fe9b5363888cc8d663ec6275adf0201d86b4e5a1572274c30c4ea87c4b31eba8e82dfaea26c52c13ef7e9308834440d61c2df7f48cb3f4148b382bb70c10197fcd9d89aaa98fa3cc0694d38fbc4ac6f209ad0b31bff49d13355d439ff11ad8a35bdf58c06e559e1fc415254285320e633294dd57bdb33fe0da1d109fc1dc449e505a4d86564f7bc4cd553fedaf842fde9faeb39926798ec0e096af35ae60f94cd31643401b775d87416eb805b30d9396d3b55d431126fd4c02a009581e7a2c1975a1f01d93f77d86b6452a226808709e1f1a3d35c42ce931123b967e1d94062402b8006f25b9d7b2f3e643c1ea1ef2fa7dcd58fa9a27f7b58dd6b69b460a464d4dd36136f2ce3ce6"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "8aee5c779a23784cbd0b98b2902c6cb67ada6ab116f15baabf53795b9c15c4c53073d48fef63d942fb7fd6677dfe94d16b15322d5ceceb4327ae27e90f78128ef09c0589a94c741632b644c94007e085b99d09e5df8ce46726b0c6ad609c942f94aa3aa02cb275b1265a591cb2b6b612528d9b701f6a629b35ceb142e738aa5c3a1df550420fd70e9cba6fc72956446a9ef78f29646e4a0e9e96113a4a608674d2722bc4fdae41cb60dfce8235a8225540220ccb1248d1e6ba5f9e7a799b4898a11ccb707765763b7e938c483742b5472c6fb64ac3ca8ec2c5c83490bf77acd4893f76257170543faff5f446591251651526ad5407493740969aaac0cb7d2b8299910dc419ed201171dcf2dc5c05933be1f081b52732b76676134d20196b3604a1a7fa8d55848b1577344c21a4d7d6b32c8f57b6b90bec90ec67cddf6e5b9f8f27cca9b4b600f1273f67535229f80b209a31b135ec34f1c0f5d0f6af82fb61e5964f148cf68257d0d3bbdf1ebff070f20bcd6621adad9fda8d34a1601921269f17e9b1c466d61d6ff11001e6c63185ba2b90d9566914bf515d53db8a3f296332f12e41f3e5075b053ed17e217e9ce715a0df5d2f9d7fd398c808df608ef75a0aeec94f2232c94c825b09a697f6c56596f2ddac7cde499602f7ae24dda0914eb5e71ea143856c10e314220efbfb164ed6b4942b02c53624be909eed6de85b081f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "3071c2c5304ce3b9d07b50d2e40a363bdd1ce246bb57d5e14e08cfdabae74cbcaa0fb771916539fabbff80fdf2cf1dfe003e510e2b20a5f31fab3b89340b82000900aba1b63456b268f93c773c68252e8ec47864fb3148553d377b7b0cd6bb3fa8a62405396aec02048fc45769c3776d2021d181e295900c0746fba023a767441ad376748b9e8f467c4a752051ff64dc442fa9822b9940a2973c6180a835b9fd82b75b4dc5ad9380f0643412a4cc617135891004df55ed8c511fc0e35cfa9dd9a54b15864a905bc863517d312c09b7da2f0ee163e52f16608a93311f682c8da60285c100c748833bfccca6fbda110ffee6980ef8b634142405624189c5ea309d381ae1bbb959e436fc0b68b0779b2f9e1ede0c384e05f1fae85e8720aac0c2a47c3b53ef480992e073d775de6065e7afe1c66417168f1ae07ff18f83af6759c84336cb41c11c975d9807229611e717c5518a6d7a3f7d8a5ec6da20fe14b1853ce471b0fbba68a4779550865cb078076e6bc6664fd6eca3aafab975fc291a88a6db9dedae7c744b4760220631268ef38dbb44827e97d2af7af9bf6764ae6a105554eec699a89b0fba8bedfd8bd2282fa17459a99dbda010dd59aa5fd12cf0c1cd63286cac1ac9bff3ce91b83f261f4e81f97c0a2ac723511b19305be3b721d38aabeef7edc2459b72b3e9c187a5c0847ffd1558b09249649d8099278b160e3adc"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "364660d36bfbcbeed0c57ab6ea4720e343b01dead6cc0de8023114f626dc604d811e87488aaa3d2e28d129bfa37cfa45f48237ede5892a53e02b29b9197e055de1cf664c1e2dc6d89f295789c3a551538deccc7aca40c4a2c2f4fb748941a3304429bbd7fc57351b83c2debc27b6347c3e637bb234adb7a38eb29b1be52d2c103fbe04d6e093fac2468f046dfe655afbdd5e34c7542ddf35c504ec7f55c30cee4fa25c6fe472b1498d2e96101bb3c45c141416a808ae1259667a01a1184e4995070203042d97e0d9af749da5753553209262127d542ce59eeb79afeca2d0248da4c1d69903c22c3bc9bb733816d1a43a9ad8b38a3fc11f08b1f504804b67aa5c4987da93b5a1bad93abea605f4e56b4c157dff628430d7399b1d9d112816b2246561f2879542e29ff0034de87bb69359fa6e7edbc5fe26e16ba033677be9b0e9797a3da88fa180006d6fa0f8c19b7721dad432aacb7d2104405cbf62905494bf73a4b532206850cee9d5bacf6668119d1c1d50f87d43059c34d7643a2ae7501fe323ce01e1da5ede46dd3662d92f25e573338c001c9bddd1e8243900536742b616ebc9ce02da8db8e2c474c8d4223bff0f8dc47f00061a1d880fbeccf507089cc86f7c4ba51bcbe43ce7a42fdad09e7d30f8be27f6238441561439ec0b73e27b949032749ea8ed82bf54d55448127ab55d918909ac0ba22048df4d76fd4ba145"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "77c2cac5bb6f0dd0827de9c49753cf6896a0a1bcb0658211fe3feee1f9a891ac6290cd9d27cb593e0fe0a59416d2428d2794bfdd5e9d09a95c4108107d964e6c4174c06e240d8aca5553b5d37e4d53a7180aee94d164ea1af7ea501521b0d58be0fd13800770f3a23b68faa88f67b4f108c6cedf94c07c61ad648eaf59a336658fa2bef2a004819d035620251646a1f88a3650f2eb6850873c3e9e36f12772e6610a049b2a3057dea6110c4e4da113373d748d4194c606bc6481b66b68a7c36cca91f50246e089dc3f3d1ca31501eee0f09a68302595d57158ca9ffb055c891dae044e1831c3152f4a63a97bb4c9b618c5379547e5f570934284c989206f5ef335365e65df67cc52dd085d87da4cb146abd20e895913633efe8c010930e56f113b8a65e42d9eca2d791109f6bc8bcf1dfbe7539b2a0b7b7d25522725beeb05ef71c0631c50d6d8e231bb31fa1d2ba2ba14eed55779b025ada49015d4e0335f6ed1a7985c73d8dddfb7cbc614bd19f8ab88ad14b704ff891cca71fb484d07bdbd5e7cf0f5b706cedb4fe608e404d28dced3c3de53a1fdedb36a5619e5325f5e82992047dd03b195e427d5e55018c6aff62c9385be17af28dd0ae28f802ddeaf738e21950bcb8ab8a57df976033a14524334669af4b54a21ed971b2b74db79dbbb582fab8aa4dd15b464206ed7a89bfd2143867bc0675747287bf7a52a9a822f2a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "83b1a473e1bf30762e058bca405d9058c5d85995b2f7e0133939189e7b86ef93792730f6fba31eaa91284c72cc653fadd82ecb1b182a513a39efb66097490ca0be10136e374f4e56ff81842e64b626a5e8b5f54714abcddba4079560775b1e7051a0d06a456c56a6ea365c86898b0abb0b1ed7d1c53512ad3a3a0eb267dfd726cbd86357c3c5411596e805a4e0c0580abb9365350341100c4aed4c045dfcdf82a07167baf6884337037053e0d3beea4c50449f1858fb6b3e44d086a6ab46a8216b4ce0cf18eb2a1a188cb80606f0124bf7780bbc9f0914c2746b5964732042477d9a83ead0384479db429b3e0b0f776f4db93dc8e6cb6accaca59d68a68e2af8df2af4be57ea9a49c0e05d297ca15bdc636264af6d6810f400f21a8f99df345160836759df470126373674263095f60128da37dd3b6752972c25165bcbcfcf12a6c0ded2d2d5b6891cdfbf8b2260b023bd331c8a4fdc4b5ff2448ec8801755233916995c94c0907a07a046c23ba87d0b1062084238bdba0590b6b323bee18a9e165c529dde2c9ad6bd87f0577c8e0f2ace8e60dd0b95265f30135a3fa5626a6cb5f4ef04986d6b68e8c29a92093a0acf7ad387c256808276c6c600133fc7afc56146b03f422ea66889a37ba330613cefd6627cc20d8a2271e3f32f3c0dfadd0cbe51e40f5bd47a0cc46431b98fa82be0beb715faa058a2809f4e65adb0e8d5da"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7ba52cfe2dc6f3441824588a7ec8fbcc43f618ac3f497f4100f7628da05c4f94378798ac700055b85772d27661c43c5323695ae01ae073a5f7b0b27906e9b263c7f63d346d3d2be382a9ec0f015aef455dbaf06b818e9c560bc807ea380041c08c072b6af61042ca3240c25c16b459f379c9acfaba11378a16143a6ac05ebc9b488ee5154b2a53ddd15f978bf69afe5e922031042c2b3af234033600fc1f573f718103dc02e28cf7f43e123afcafe0d2992edb10772f69ef7947bf6392a2574b339ba6b84bba316df861189b3639ce9f2de798e113ebce33361a1a06397b3642b93c1ee34386003b5b6be717342147022420db284cdabc5cdbac66cbea328619d1acba8bdda600540d3cff1dc5f62eb39e770a49f7d046b2737d0de0da0b8758329c76ee69db58631edd054787529f1fb31211482b302091494243c0b7c255f1aaa27b144ae40102e4adbe80f142ec84881dcfbe23b6c02e9b4dabe80f0af8ce22aba2a380431f753f77ed48dfdad8fc5794209bbcc6bf70c08a1581b303fbaaa517a6260babed5ea1df861b1ae151282ce463738969f31399b6baf3a587aad6b0ab285ace1d96da5080c9cdd0b68f11fad80dd16aaef7171cd8dcf1c4f941f166f370f5ee6e16724c29a014158bc017561879629a113fc4ba9a55100b59c3cf5922dac62509568de02d6144bacd6b5b57f48ffd125aaeac3d055a66458ff099"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "76be5fab3805d725f7882885b2b4231b3247aab830d9282dd9164efb7ff4720f4ce3dd861a9c433a9339054a34f4df8b3a7c1fd81d437d1e82b95a87f41d8ee15dc11a47308d3d96ef032a6069c99bdae4853fe89ae065b88ed2b054375a0520352c3d775d5867aee47a0e17cbec89472ab1458d0eeb115129dbf979347196aca613982ca6cf43a8c45ed45b3b98ae7d5782e9e5a9ee195254f41d3016658f34fc15514a2d4ffe9cb78260e386119323cc92efc4d90444b5cf6944636d2c176f05ce539949e7df2bab7f4532de06c7f49ea6f9ac7b190a23cd48e5e75391d142be6c4236ee7c9ebf49ee040a38fbcc2ecb1ac339bae4877bc772dc74abba7a9dc7b028125550bf46c46b32588fecf8dccc7dfe8e1b731f2112e588090a4af21fdddb53e955ba1451e4ab5f4d16e470a068832057eb668c95478a60c5baf1b71792f57d76c0f8cf07cdc34369cc609c03c11e13abcb878e988f44751d117053755915e75b376c6a2873fa8f58ae9552434e1b9349809efd2cd072e92c2ba1b78d9f93fb382fc5f801b29685883c91a937294ccdc939c18de3b551b84d03960744b38dcd9f4687727684484860b8c775e3a4a7bc4b76683e74503050c275ed9c2794faf74a9497969260e5913704f357edaff733b34c85b1db6d5b921d687797ddcc8030c209a5a3fccd6559ca31dcbb443e724d45d358f535e306e20029544c18"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "7d0460e4b557b11f2e26ed3ccaff7e19ae9261c377273fec03600f79a3e235e4f98fb499832e578d30c324b87e0352562a036da5bf8296810a046689e9de3f7143c209eee8e94c771299e73b62bc10ff6b1a3f6083e2f220ef00bfdc6ac746e443a504694bfb713dce9f351b31d9858d693a6f7072c90bd7b9702e9de032ef2b1e24a440abf7042509a46f7dd8277ca835e4c012a573f9c2a22c3cf03e60b6ccf831bf15a1e5ae8f055f510106ceb8e14e4a8333f902edd34f678c404d80da8a48aa744582ae49551fe57593f44077d676e86c5e5ac639f737a4d093058dbf564f87b99a6c344cbf532639372bb988638b0e97410b9d514324891e928afa10c1b74d65af59b73171154b9718e87ab415aedddbbdfbd1e4915f2c73634aee74ebdd6522fd735578c57154fb5c6dba71772cad0715b2aefe0396faf0f752c978cc75578dde9a856004690b544374752f7f0727f41b7a07110897b6e87addb6989888a580df1caaab49e06f65bda085bf7cb1e1fe7e29bd03e787864b6d995b245290e5ba0d3093d156a95f745cca82ed7827b4bb683ad4e89bc393e22516f2a2b8e5d15df3c4384f63ba7257a025d7334f381861ce0539ed87a97e5e95e78877ee7e09fd69cb1b91e5dcc98d366e6bdd31d70169db6e7217c076098ffb445a12d2022d1276afd3720de15f9145abefbe06efcdcb90c014a54c886e14717723a4e9"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "6a8a38ce5ec93f2f390abaf5bdad20c2f1a3748f12c0760e35dd5998f4d9428e3b1a16a8e074b81aa2044ec0b46b4e31366ee7e1a13014f32427658ff86a688558d56fe041fd99328ba0c6e3600c9150a260172283bd27e12cd745898429a6b98a74c83964b753416460e3db8a41679c1576aa75cfd65dbf4af932e13a3c96c4e60f7f4ff950524670e1391770f2f1e386770b213bdd82e763937efdf21770058eaa4970216bb8786e47f62804a94dd5fd606f112ae9020228aed09554860186876c9963af2a6329a9931e4a5feb09d4c5409a859f5238db8e2ceee6741d34b01b34c267b979a68bba3c112c1b226aff6f18456490ace68f36e556f2257f99561a9d03e09d28b5efb46904fbd3d80b1b7b650cd708057a766c3262f5a87b606f125f01ac2457d0f46504fbe8a303940fa5dd6929164469a791e8ae4cc0da9cbc63cde0d28809b1ed7a1989b290ea7b2724df5975d65d855cf0ebd79a6bda2c523f71d4badea8eaa501b6f7eb50c18f16cf3be19934d94fcc419b85f0a0d849599cc5a3292cf595c185f6fa8453d98afde653bad59604694b4c194a92cb7b29c095e7fca01afaec078b70d2e6fd3953324c4df476ffb2de311eed0bd7f4420b662f5fab5b1e43b474e9a845bbe3654207fce6c30611bdac3671e1672d18cfb1aac845a6f7ec278a7da658fe479570d92f36fbf92e60794a06b46d11c1dc8e7e59"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "169bb542485827ac61f4b0334045d0afdeb45e565b5d0be88277a6cb731e72514b5c8657627a6dbf9353a1c43106983c7a7b4b30bc0819e9a1d11e464386b80888ddde2d7fd6bde43b52f54f9f98c7c1e92674f8b6f8628f89e799b8166f5436b073c3c840b50d7b51edb719d95b73a33074adf4cb7dab0be29adc4860e595d8648d07267c3537c05b0faa4983841af131c4c8dcf6840279e64be3accfcda33076afae235486367f47af08813411ccdc3ca4011e9f9519e03887dbd4c4094286fc003f99247a8a3aadd5c67217d288bf8f8079540d9c29d564e9bf40c35a92333692a2a85252480b3746d837f68a8b08a5aecac8f5532548a5ef1452e1495796318f3a316aed81b9d063692459805255006636efd8fc23a2f0e012fe855ae77d3e76290c036a29f24551f9bc07f4ba2718809a92e963bc209ab7d3d111da4517d3cbe21ff789bd893a25755b2e7c694fce56d19f2e35d5d05893e1c4e230fa626fa809e7aa29e16fb937d523898cd374c709add4d8115d3bb34490f1d9fdaa03b8881240aa74b063927a733dff00fafb0e1a2509efc723cfd065c79d18c8e04fed1be98a397ab89a8ed61ca143fa2c64c91fdf5173cd7e76aba3b94f31dbb8578e6cb972e347c0fa8f1fd528a888fcbdd95e25715b846ca99dc88aaf9c21e48fc53691b521a617666d7dc686e1e080b7b1b4e38b54890133ef2770afb21537c8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "4915bf70dd1e807d84de351d7b30e57fb0ce95f6505dbfe1af10dcc74a4465e979beddf791b7e3d749bde60b424107b8d997d152a62ddc22da13574245a5bee3c95faa0540d0df8378fc14898b03d6d0f793fabddae37e4196129619d42eac0e72b5827d077d11bb0baa9ac9728af8efa0aea0bf3f544ebd64861f450d2baa2828b5f2866d07331c405159c9757329b6d00bedf2ffabef6f224c200d5891f2868c8d28d533899762a498456dd423f75d611e30a94ac2bffb5a230b5431c4003059e4d685decb8408075474e82316f665a5321509e5f5610e04ba372655901b9961898e81ac113f08c44cc23000a12561f4368f1cbbbf5ceef50855db9a3065a073bbd76f8353e594cfc57750e62cfdc0af2165a4460f9049a9fdad2f60fc9cf846e8825ef52bfc04dea0fff3d708a5363a6f89000d4d64253359cc1b0a5bbfc54378d50d664e4e717db06d30c5c9ec38c2519641089f0a4eec780ab9da733cdfaac63c77393eb7010c287cd58af4bce2c82fb1a53bf848d0a172370a969a27e49c6ed6411929ded1ddfe02cc2d7952b4b502fdbb99d204160d924f036077bd546352737a8cef7aa3809815bf7044a2149aae9ebf31f95ba035c0e898801a49342d7b55f5a1729c3118837e3fc380b3b447726cceaf592e3f19aae6176c66dc924ecdcf375a04fafbe82fe45b22ef3d57271976f7aeb4a3c863119b56e2b84c9f"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "08e19b01e51d622d80d7e2943b72cc3e698d0299c30d22cacb5d852608aeec9bdbf977f5fcff94fe218c81ed60d643fa8a7429534c3f189bf709601a7570f8cb44dce19bd124df0643cfa46fa427df9fa589b61605e43e9afd0c175a252ff038b75a76fd948dd6ce5249a095a87dd1895efb2f441bf4a71073b2847d72e8d5325b6ca811d36e9cc1327e32b8242dc5a1f122e92e1f8e6be921623c1cf64c643f43e7ccbb166fee720dfad4ec04f0e7bfcac121f421d8e4c28fc541b99c047df561ec9ba9357586bb8ee1fa55d07d68e1a3233251c15d40745ebbfa9f062cd5a494a43da5f89db85072e558a05ae191cc6855b0cba09497074c04024eb7f42f05e6396adf12560c9957de291f02d7b3ed1b9bee8aa02f7e6d5e2cdc0737c0918d9796f46289f949a692aebd834db0489277bdddb7a45911258a3d1ee90d812276092b55a80c8367db610af159141bb84017693ec1e25789a55c4e913eff7eb751aade9f793c5fe6fac877714bb4918d3d22769da1a97d7920b15cfc89f8cc5683f17f0e5a9f752afc5a96cd2518cff98356e688cdcd7466b46a041b1426e7e78d145a44432a7f75d8a39d5f647be7b236576f2cccf7690a4b767bd47ba97d5d9cb730b02c7b38c6819edbf56f1362ea9f94ccbea4baf0706a17d69793f01ba2f6da0cb2e7bdfebc043f5938109192f60989cca6a65bf9d1558aacd965ee4ad203"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "877f2822d2a6b071e8151ec58861ea935045bee051aeb32e718c820f802f0482aaf3fc1fe537fada532dcb6ab2a18d7e08dff9944a297d86e8fe804a1b11ead21e5207eb463669627bfa7e26ce0847dbd98f64d6e39d5f223412198a0d7f660d72c49541f63eb1389e7074e5bb9702c5f784feb29d67582dbfaa863959ffcea644f9ad738bf7f4798d925b8ac57103b13b452d5e5ea3a12056ee728801ac2bff158d24214bf732022860f393683edb3aa3d9480f4d2d362f550bf68acae5a0398c07bfc1df0c4f7145a52bf858eabbe770e685bbe18937a32f657397b898cc3fb1a38e09a05c5803036c363a18adebc53e06d05ca96c1dbb707541c0fe251b4b211b3b42cf22764883b1281643d3f87b381f096b222ae98af8722f0304a2c6b87078bdb63ab2e6135e75d4d701f51ea5ff575f7d8b89c2b92801b9058bf5b41f6b9a0ea3593bb518732c0250b25d31212c7106b7425ce98552e368415e837400e57bf9ebd75315107cb0d57c58c3f2181d3d5a5a0bac4acec858836b9782443f93cd5c4393c1656240019321b394d6981fe2b2ec61026e375ac0410d468ed914c9505771f0efedb83c2cf78342eba68dbd044f1a46b904a857ca039cd115f03d477e4c55dde8905d1a674db0bfc6aac83162f5d32be74fe8e8266d6a208d5b29c125b377b74324d2c2d8bed502669f36602330ba28aa5bdac01a8a571605dc12"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] + d = eosio::sha256( (const char*)m.data(), m.size() ); + REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); + REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { + assert_rsa_sha256( rsa_public_key_view(n, e), d, s, + "RSA PKCS1.5 SHA256 signature verification failed" + ); + }) + + m = "313233343030"_hex; + s = "2d89809bfed7f1dafd96105a6182593fdfd21b183606c002df02ac823871c0824f327a65e5b75410ce4ca266eb85c28de06bc4fb8349efcfb51956ec9347db2cc7258b3ca1e346365f16cbc1619e4b6313ffcbf82215a64784d2aeb0c641f931d573af41419a6f8ef9dbb99472dc1adb2dbf78d35e5cf4cd3d2e9a3f4c601a0e9c63067162d3fd0d92d8d0ebb632accc8c25c868d6ab2fb39ff4d5cadbf97cca5fc7410af927422a31c78c09798edb55255c62ad359ffe39f3d421423bf0de8d1112153a4b39da2a79c144aed3ba849b2faf2ebe29007de8f11125dd9f576651cc508fa207651ec088234f9dd8954acf3012b489c9fbc6ccb952b8e98768521edde83198f1c3ca2d176bdf3682b5f92dbab3bf536aebde2e943fe5d9d1025fcb8f46e773cb285829212628cf24e680289db5866750c2012c3b8766f536d5a21989e02c7726a6c3efa4dc85eaa1a0992da306f45977f98446bd95576578937478343aaa2829ab0375205cdcba8783edf582268060eaf9a038390e6a3c465d24f6b06dc5e1693a00eae2779a82e1d4842c53022be18d9963957d61e52e8ae5d5ad840a80931a48caa4ae6b3b29f764cd5d4d5cda800b627a51cf6c3e371746458a8dd381ef7d47ee1073f1372ab663a3bc846d41b2f8370c91dafe647c3312f68d241c806d6c3bec3ee8a6327f16a5127bebad3bfedcb5ba5177212dcaff4e0a04"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5231,8 +13771,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "5a29dc4f6d3138febf9978266c319c1bc69cb33dc63eee578ae1bd2a4736d28dd9d99a24926a2a6a5a2404f4b5a15112a7d0c00a24a427a0af817df199a4aebd77e6b2ecbc958d30179e00d8ecf9cb1500a91d5f7f4380e2469cbbe61d91b26573b2f7726e5af49af963e22578c08ff74644cf93c547c64965d708574b4e5496e3923d1d0414499220a6a9349a0116ff8d843c8a563865eacec1c284cab41c3d6aa813b0c5cca1add5e7d2edf36d8845499586b5118618e1a616d91ebc3349f5ee3ee1088d9323e79967929a7273910b389fe94882c28044b8978f5137a4b2d8537eeef53600e5c93734de279717141ac470b8b7c40eb0a3b0ac6cfe4e66fa2e50b44e8fb6ffb9db12c7ceefafc75a89c21d767f8d704aecc416f5771daad4310aef485f0b9c150a4a7fe6c38d81e352fcf0e49cb036aa02ea10c2e6222c4f0cc27bbffb7e89d1556457d73cd6333bec31f9acc6b7d927895e96f1e2c87aae21f8b1bf35d173b57820739c7f170c1be4b67a4db347bdbdee1baf477d7de4b9fb"_hex; - r = false; // result = invalid + s = "68f2e0fe4a035a78aa3f0e1a56372981b449212cc6939533c4ea2e1271dc91aa27b110e1abaeaa1216b8e74d8591e98164c5ca28cb78845aebae89c9a6014d1ae2ac3ce59dd62493e3bce0616ff731b2ac8d4ac4f255720965965054d085ec2e0418e6b1b271bb0ad99c0b2a8dc3cf0eee2039095c9fefc4d7cff08f776610ba013d22f579cb6b9dacb905eda216bc54ab227d3ca47eb6ee229c661f1f8cfedd59d5ac6dfe96fecc634da81bc91217d61b64f9989f3fa7f42d377c7ced68e1135998b6ebeb6c730fedd5d97a60f9d689a046d3d2fc413a91bb3c6eb69be04185a41f05651ac8cff67baf18286cf8292cca22a2aeabb45e5b4077a9a78fa44ed429327926dc72e9a762cb889d2b48ed7b304dad729d7fc76a7d4f9904c24d3e5c1f048f8dfe0951f2c347a82835de8969f90444816dc53fdaece34b68d068276fdc4cef43cd6345245440623ee93a82aaf143c082281bb270bf15629e3ea09e3c4c19fd3425893018625aa40dbaf911a369e26792b6feba7d2c6661c7f139965221b149cd4e866a6d3be4dd52ad10f159814ccff9c99d09aded85fb4423aa101829acabd996caacb1f37701d73ef57dfc39d32494abb9fc467e6dd6ed0aa91f6eeff19f293049265dbe62673bf0352a3a4033310dbdb120ab7a620c473924b77f04184f110b3d5c56859c1c60612b357c5a5bd0862f573346ce121edfef19baf9"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5242,8 +13782,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b16e24d20ff575be4f5b0322b0fe67f02b7f2734a7e350f078c401a4f1170111b00e68524b566c7d191e48731d03e3f8e4b2ef90f8c9f798c57ceaa26411836f7969e234ef5e4da1ddbe2f6993efb4c4abd566115727831cee57a7511022c33e47716fd796f2263907c54dcfa7ebffb1912da68bb5572080274a664372822ad2b4516cb54dec43185fdaa0022c84856a178f69483bb743976f3d1f1ea4e2eb77d1c55800b7b405cc4967d3ef72ca6310ea6719617255c95a2e31231e6c8b6603aa82fab5d95009e908986d105296fc1f81eb3709ba27a68edb771e3e887903913e72c6386e3194dfba12defcb6e9764e07dba19a06504faeaf9a2313e345797cc4543c6f38a656c4c1032120ad6e83d65fe51275099c9c6d3619a491c5cd8995c42726f8f7f72644957e87b51b698ee443f81a24ba0564260fc2a776316f3f470ff3e1a3e3d071521351b11c6f4aad061c6ee81da1bfb2f40ed306ebf42f4779432bb79d7f0d20372c55aed8bc9df38bfb64fb016675ed3ac83520900113e1c4"_hex; - r = false; // result = invalid + s = "8202cf995da1c8d775b63df428a0949a0311b0da51570932f4198853fa27bfe7f5d9180498d2b453725edb020a12111286c1fd5f9004a6e9b87e47cb4957d8ce29f755061b45642159b8b98dfc75750da2aac04aeca0be48afdf7dbf8a14b94080e2f49ded821af875536208389cce9bafe197f45c5e9381fd26e6ac8ccc650b919aafb70fe708aa0bf2cbb6cf293e2d6dc4c85488e77f3d2d35c9bcd003045b8ff3f395017a1f352f69faeb9a14fb0d34207aa04f11d5e1ff1c9ecfbacb13521456641bd11eb50d1e58f08ef6ac79760a607529ab566f23b780e61d84f4996080421928bc123d004a2c6cd6712a4bb552d8133996be7b7242952b42f392edd4463cbf7df58a96df0b1ee2dbd277ecdcc69ecb41088d5dd0451ad739e00b5ee9d010c5a66195f3ce606fbc659ef54d285fc368b340eff7e17c4852d82d3606ef4c2f129e9375b157e3f687dc17efaf5d798a0af12749b473ed757a908ebaa7bc0acb3341b7aff91901871ad88dc9df852c550c1f4400d349ea808b34baa29bb37a61a72f88711feb975acd635c2df80f5e07e47383a31bf5b1a9cafd1a9f202f92fcace065f931965b8ff10866e03b8c34660b542b86737796386968dd9a4fcc526b2238f296cbf5b8d111fe92742f265ae108a6bab66f9913fac8964f5858d977ff30d0319b6341c94043597572c59aff0959269f15c0b2d9b744ba93cb41a8"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5253,8 +13793,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "3531e3180f6385e8235d402ef40db775cf88d115fe8c3426adba5a4b36d05063130bc2e711d5e71f4fef4cd2d7c21a7e2fe76a4dc02b961a6edd3658a96c78e3f7971649fc913ce8c9c4ec9ebd8be9209cb90073702b97ff94e96471c42dce887732d93f89f7376a1ee0190d7c646d56393f42c60a6db3724a734ef986380e934fc8cb92428851a6ff74f1a3feb94f7f6d3a331d4d61846026477b7d7b77077a8213555d4a7339ceec0c71d65492d2eadb9dc3fcc7b3c0f08ce2d09c97c14351dbe8d2745aeae9882b252ddfcfec719c312b789ba36430d81db2d1e88c29f0ccbe410789e0cc27eddb2b4b6d5d0b980f67700c05cf9e64ba96e5e50ec4e59067cebb580a6983acba34ec260f5ebc6abec53a899483d266b53a0cb24f81c9ca144772ecd622ca3cd0f502c5cfe6efec13574d51acc023f277c3a7efe128fac202e41033ccc4bc78b550a1663fd0d836bfa31c435badd977f38cce70a5fc353449a3357bec99a87b19f92f81c99e1a6d23ba23b5940355b078d05b2554e5885fd8"_hex; - r = false; // result = invalid + s = "6439b932b2c0b7acabfa240ca78e33cc3f37b8c900c33757ea9ccb1d674622461b0a564286bb47a3efddfea5671faeaeaf1deeccb845e3d862fa54d640e5943c8497f0c3a3c3fae6f2bee733b55b4fc6b2ffe0b37c93bebdbe525357b810c8b93a556e241817399fc071642858aea952fe720b9e5fd627e70fd3c08a2805c4646e14c525613e32d1f9e77fd46dce854ca70a5780778062683dd5b58244c9bab6d7e22af42089ee08966e438663392a7dd62e56f49a78f7821301d012b54910e240f7df0dc42948b8a1d835f614e53810916f7134ac7266a564eac3e4886e6992918a230ca320f4717e89a6cc2d3ac997016a5c97ebfe1bae7ca1a4433d095459b589624ae38f07478eae514b05739ca06db22d5cd2e4dfad1f8138af057fe4e91fc1072996399c3fbbfee38563c5042892cf27b900c136fbff96cf6cd0ef1b80a619b2403d3db75a83e2cb43ed20abd616fdc07eb2d67c7cebeb2bcbdb5fa0a002a435492b3ef9f08e466d513057a7cdc89ff6012578fff8691494297b93dc593678a19656596baef8e8a9e60787415177a747532eae02b1b8722c801ce5af92988268b22dacd3a6a959110eb6bb11cae67aca82fc1314059cd1bdf5177893be83de1446d3460171855ae3ae4421885d96b1473c109c5bbc2cb67f6ece5427ccce0c32db450771ab6054bd173d89dd86c3e5268a892bdafd402dd199a505b671"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5264,8 +13804,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "885adf1a5e86d463e8f6750b49a3c3a91a2e8bf90e4c19873e19dde041bdfcd08494a9d25ffaa679c3c4c6d5addf99256f75498f3cc6c09c45bc056daae88a509aed0c4b46df5c1a6a1b5b4f2c5d5d008bdabe5f22a0ba1f34e604fa0fc8c647709e82eddf9889241571a07e9dc91b4eca9af390f63ac20a7e526d945df9541fa43caae141ea3feba0d0fcac7c50f7b03d4172daecca84515448f3d8bdecd2513aea8565227c2da298a4e2cc8f5fe5603c30c220c2e96c3a4d802b87815b1d94e06f717030bb2d173339ec3ba700828bc7a02495a1042b644fcaa02fd9e67a26600718d056a050800eb546eea65fe9fda8258cf629cd48dba7393b5569112f156032d5d4e7a989605423d27945401ae7db0a9469375ecc8ccfcc3f2573570056027303a556115b0f98958fef8917e1861de6a59843842d269c8412da05cd2a12b9e2ae75d177ecefdd5af79cf4499488037fd2d592bcb2828b9ddf9cf7fbe309822a9f0f54368ec2a6e67550da715307eed5e1d80bc9baced4fef132b2f59cfa"_hex; - r = false; // result = invalid + s = "2986f60e25f6d970ce836552b4d5b110afd7ca648fd447118c2c08f30bd94ee4df058663da86abd21d4ea02a8b5ab2a70ccdf2f48de516099d11ee4e6457797b8794b2904d3e0954109c5e1b57d16b915826971983667d897d9965d9971467f6c943ce09b359301983d9c83950faa4d60762406599f95889425b2d1e959d05f869fd42c612a2500b91aa6bfa8db7517be35e5a70b25286c023157187973c079c032818a55ddd06af1f9b94bdf2d752e509c7c88e141dbdf3dd9b5b50fccbdf39005f3f5e40de4011b056d0479e4e8ad5f734fe8e04a97c6f0f1e38d8115b12effc5468ed7417c7ef0118b3e78c6a15a990f33d02d494a9117e2f3857d5856949885944777449031181282316b96f66286f0861e03606e01ae8c012747a84b169f423a51b542094b38c6870e539e82ae513c742bd71353300968c38c93dd23553239f55c75395fb081adb89b2819533f2022b24d8abebb883b25fccf4c6798be239602d9c68cb297e5a5cb0304468ea8028f84a4b795ca0d4b92101288bdac7a623dbc0b38a687d7a222108c460db5c7544b576bd7cfdfe10f9ef4846bd1155f7a53bba5ace82429b75abbf61c5ec6090a59bb63d86e000043279066160f6de339ffd36cb1f9d68a888114e601a1e090baec52ad86108599db802f172b727c702dd78d3a259678e8948ebff8abab0a862bf55a7ff903877865134bb47a2935105"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5275,8 +13815,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c0fc6e5e9e1398d0cf6575806d6ce8c10f63d414d3ffb7d9945b986362d9da16d61e9e662ce133ad6672964adb4bac861abc4693286f826e4e77cfd72825a4d6dd03c8befc8a9712c12b0a4c2e0f3128878bd9fea55b629abf7029cb7e9cc381fe6b0eebfc05e8a8666c661641fd247ffb6e3c25bf435283a21b2b785b9d4b0b552ab3538e310bae7f36af1d2c6697df7821bd469a10dc53f007c7a240910f9f137c6d59060390c41a32edaa8f49a5b28484f0f69d2f8ac99bc04ef06d7d8cc6e850376c9e66875d00282805df54398bbc5bd8e8216943f845c89e59fd6bbd6a8e2cdbf148c656982440bf2ae364becac976cd8e40a6159b366d8d0522617f422531bfb83ac8bbac33f6b5c8c75bfc107fdd17d3cc4d54c66cf5bfca36cb1e3ccf4383080f18883b890af744b05279111095d6aa0238a86a6f3433185c3ef37203c9bf46ef7bbf3cdad39072e970a1e6dad6983e8bafa6e50a10a6ab7a316a6104e1361bab2837d51735fec2b81cc79ae415051bef115231f6e526201d0cc6ed"_hex; - r = false; // result = invalid + s = "39baea5baec693f318c01398b569afcb778d77e5555caef3fa939f16b3cfa7b2867cc8629dd5d28d008c7ed5f6a1e7d339e8e2cf03eec32becd4e3e6615aee0ebe2704e07ff95b4740e89c6948cfc65d3f02790982284f44b93b8a0e3252f2df515a4553e8e119b7309fd2b235cc458c3312886e8ac595620e63bec612f1528733b922e33ae496edd07d580ff9dbed1778f86ad194d76000686884890e08bea3b680a073a5c38fe49a36a5d5366a6ce63c86c77419c142914e6fabdac9fe5951a404e05c752fbf5198e56277faac9389afbae8b602b32078f45e8935819a2188dedcd8286e3cf241703b95a0722dbc7cd34ef0c7dc672c2b4e17be329397e8973bec2f8544eb5a0ba584f446c715133777f25590a46775740b0a0059b588dc1a91bf46fef630e0f86c0568e648a880917bdaafb60e5731443bd083eaaa56c808f208b27d64caea81319fe0b8befa165ef792b7cb34f837a0ac24a837e0b86bf78c272b55cfd0b23419662892bbd1153b3e9badf5cf867c92f84ecda72845a56b4bf51b5ddf4f40d89aa02642a3dbfc3d6ebd3879f248694a36e485c7dabe0f75c808d53480bfbb987789e0816112acb61162fccb01bd03e99b4488ca5f5ec90a06f27945f7a11dbfdfb66c741033c29e33d2023e98c4c5312b8658699ea7480f619ca73d347d56792877be717ff8f6850fbccafd276397da8493c2ffbf78ff71"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5286,8 +13826,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "92f154acb89d20388e78100191d964c992a2360f2d205a5f008091439f454f865d3d5ae276adfe4b552afae3859a71acaf151eb04696b6222a07e1274d6ac314a60090bc928164596e2de56e77e2cee607080a293b71cc8403bb2466519f0f14d26009ae7f09fd9a41447cf8d26fccf9a564cf3849be92d9e4bd2b3d7095087d43e462873ba0534ae512fa8edb2884d9e1613a1ad3522ad9d449f78cdb8331c35502851e8354829a78c56df4fc9ebebbc7bbc468f2219e93e4c524b3b8a55d7c997bf3151848ce10bfefa6f21207f2ccb2fe9526a0bfc417c239a8362282af93124a0ed209534dd540bdc8a1a08613587a1d62baf3530ba0297aebe6e03c2889942658d50f80f33c6ba0d021f9703933b2ba4a24665bb23103f0498e68a0f5094a9b9a7ac146bcd5842039dfe55191f06a70f103bed094f7adc3c3f3b4a12f2cd76db1e9ca7ad3c9d8ff41811da6adf3a9450cab6170e74270755021fa6f4dbe3b1226de09a334ee82617ab44ce93c6420168f6a75224456910b907ec2de68bc"_hex; - r = false; // result = invalid + s = "8c1a29fcd389b15c1f0c3e25b69b2661de3b6253e9f18bd4c16a486f27a53e30888afae9cdabf96ee542f2664394a7405f55d25d04db046bddc60327963df6d4287d820593833962e3b11aae09056fca27ebc7a16e9a40248db3db1af936a8a71ed0d0ed8b3888d802aae2d4384e3612c4920ef08792cad5339a3de139ebefebd65dc4678cb7226c3867f64b8aba9349ffc6e1ecb1d859065079a7beb00a66b1cf0b5f47f4bfad37c3aad17e0871d0f829bf51b34730233dd90042d36408b7c10c0280beba41584986e0e043c4f8f02ec6304f7e6eb5d0002791f6bff1910fc1ef884639bd24a0f395834b84ae191a79e7d0bb18eb1cc1b573632d886520ba8e556091627f8c782b5d4a279cd0b93391abc3726a9a6b698e4cc5d63b2a1ee662ecf19ff0683b1f87f80145f80f89d01c094c15d47adc1453493ad4fdfe4e831e560514757da5cbb965c6abb72068bd526bb70b5909c3fdbe2ac4594c8f447da1d6b2c8c29b4a138b73e528af20084206ac3138b11aab38404a434d0c2aaf3f34947ae076f6f5c9eaa3e4641a4092c95d397b2e88d528facbe4c6628d6c5308864085263a0318a83e0382aabdaf65b948c99a5dbac7a4fbf8d20f6dd9c57f3cba00eebfd933c183db1de384c7ad0f46e9c444fc1f868398b6cceb972896eb2db610734269375f9856b92e3ad545fb6eee1468ae21a408dbc77cb63a2730e33997"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5297,8 +13837,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "9094c58ae7096b725fc29065eb17648925b972e5fd176a546cdf03b50d3df72e84650e99960c783c54558a44166cc67b0e6a9c8cbb0095b984440995e17e6e7b5c3f561f3a8a0fac06b973076c16c31e11cde1ed0716c41074afbd94695953a7d075acfa529f89e98f406ad028dd48602884b7f1c04d60a2317ce10a4c3574800f05b83eb8f170ee6c6d084fc68d2db32d0a430184719dd0c0141798fe608ba150f5336079c4a712d62a2f58a88d6f6bf334bac46d1be0e6341695995aff0b05e152a4d75898d713cb2cc6a01ba4df3e4b45914a2fe7f2380f94b71facdc6c50b1c61485e3acfabb986cff365df2436e50c44afb7711a53655b250c3336bcc12c251e1f0e7788c71c5f80dd02fe4cc03b1103691b45820038cc094553f8fb2a5b829a230eae9a97ef4b6c7850fb7e1bc99852dd0b7027fe8ffc5e2c1a50bf5b4e42c249e55c7955ffa4f4336a60ce0d8423f349abe3434e3eb9f3425661e0686fec79ac14e435c1f6c3df4982c7392ddb8ed77f3f65a5c9210ab81e40ef3eb76"_hex; - r = false; // result = invalid + s = "75e1a5bf61fc62b768f00f46409e9d08a5711d4f2f8fa68c747ddd5f19ce3fcc53e1bc00bfd802023b15366e366df97f6fc1cd593d2fe57978a204f9d67e90a7b545f521875ca690728af688c852fa2e515e5f5f845fefbe677b29c36ee417555a0e13491f4605a8b75d8d0c59e8558691448992d3c9c5bcc03adcdb0fe0f6b5bdd67018804928896adcee1e841adcddef73ab5abd58f99579897ea25217ab3a17c90803516d96dd54159826a5f8c8f8b42d61deb1ce5bbe082954e43aeaeb25e493b48e88723a72e9ed4a9d760a5a9e8f5da6a56a006dc86a24d771664353eabfbda63a69110af43ada25d5b5a37b6d2638375dd39db47712c172547df03a851a10fefdebab0b8ef7ee7d1b4185a6e47ebb76036e3f7fe22a0b3f59aaa7620b0ef7bc0fbf6341fe1003bf1abe2a9283c610c7d6a6808563d21eeaf6b14dc37afbb71d12320fb18fa59dc633dd69e8ed54faa11283970b59dabe520a571966f533fe5de978275e0e8401d0f6c4032cb1d8349e27603eed40175abb949b8d24e703015d0430865c68c7cd8cbdc61b719b9b0d5c284c5d6610cbc866c195d46e305bf31a1f1b364d938f60e01c94d80e47a187ba92fa4e1ac84bfdb2d1c204597f52e28c3ec7a2d9cda95892bc3c8f04f9237702ee07bea0f4d8860ffb3477f61e65fc815169c156966075bd93ac47efa7ae1d305dc1daf1993a7876c3e47e483e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5308,8 +13848,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "59e8c182b8d7c58cba812204a8132fa02af9bb2af8ea16dc10907a14ea29a224a80e0eb6c1e12e16a3144bf01b539133f53a4c2007f15787cf61560c6bf8fb6eaee9ae65b924c5f852f622d8e9bd0b67a46dc8fcf551d577a916c9a0af9ddb50c05dd27e716c4c9e75f3ddc3585cf739986de48d9add7d39bb113234459637f159e7b95245e59546aba7f07f4a40a1d6ca1c6d1cd946e8a2afda98cf663e0ff6e9bf1a05fcb0c46486976e2d9a2a35e43f4b79dba5087fa4af8ca4cff44340b3a60d153b5dd3c9bed8b5dfc684454adada547c1f428dcbb70566b86ad87310aaddd9e935dc5a6c68456b3c2ff98d3484e471e586271c06259cb754cedbd0913981bd5afb5e49dac1e8cd86cc8bb53863f87d11e6feaf489670ba07ffd133ea14a7c60f9263f986b1d13e1e67eb0a72f67db108852f97e424d455633336f3c4388898efcfe500bd45cccadd505c481b5c89729bd1451bd790bad68d2572ff09f8c19bcba18a1b6c9ff260562d1f1ac35373449da2467082b288a4edb76c475795"_hex; - r = false; // result = invalid + s = "11c8bd62861eaddc70c7083aee1e6fcc99ced3762748394ceeb1f90e6249c1fa0159c860a06e1f96811434500e085f7012e2d13a8c8b10668be387c3a16fc119fed4b5a9d4ba8e9a36520447522bef9cc4e7fe0bbcd38d4c30b57cb3da8ce7bff311d486819c88c073019f51f7b078e5ea1da40053da701be9e4aee55cd604e98318323d9b3c870d2aea5d21340e7da64acd24d740231a058990c3605f3cf7eab1d49af5cc5e658887680e0dd53e8caad4461012f6c89e86c83b028db9b504c1008c548239120ae6f71cfdbcedf2c7aba79e4caf73f6adfb5566b1f89f9f4e00d7dcdac35eaa3f24882b36e03b33405c81a6466015bd7b443aeec39c6364b5e562958bb78daec2a06fab08adf34707b2d1ff55f155545a599c3852d53382f3682d1aede059ff91b23f1dc91de35a5674701ea6c5b647a36e9f04985e98038d64bc228e0a60e656667ca910815863a27c61193cafd0b593be2e8d52e8545add3b932534e48f5d1cd744ea70fa83cdd7cc2de7063343672863ef547915ced54a60ab96fee4c2990c9f73adfa782cc93811139b9d420c5310ad0c6e4c31c1af2dd2b0027d2829fad7c395f98e65e61e9d667daac9be1d65fe046db0b092e94892266a8cef3efac0726dc31a901254bb6a071ea287d33a624225e15346b9fba4982e9099c965c64394e97dc245683bfebcfd7460b9c02abc6568860d1c8ef0d781a8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5319,8 +13859,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b7f073c6413f4f710af62ab1b9f023215fa39db9f47e3156df5d0dffbfe4afe1aa9dd72dd7c681b3ec542ef926bedf01608bf7bf0874fc68fd90d12e0b26b2a049ed75968b77c8a24c626a5c706fedd36336c58b8158a9f1fda4bc3f6e01f2fc19544378756c48a3283e4c8c3dcedac07b71b6610e3a10aa19996efd006b970ce00afd9256fafac4e831cf598ed29d27e6d3238b7e799e1d0d96bf78cc9f50584d6702661ca93a887010d16c711ff138f8b07dc2c4616c5204344f402067527e2eddc0fa70a48fe929e6a195e27159b35121612eb116ce2bac85e9230895044755a4c56f83b45fb3ad795728579719a68bb739bad1e3b1f0f79985a65c43758b29497f99785dfbf985cc6524d9a97739fedff3b1d6af5a7c23957807a5cc2de62110b59a0a5e47aaf33247644beeeda8b1a4bf2ec3c1260701b4c1c052276eae49994b6f8b2f8008cd5e637a9025d364ebb27c908b7f7d803dde6591a543524aac3ea330445b9e7a3090ac3c9c63c964ed6e1e6698d5481704a495f8e9ffb1a8"_hex; - r = false; // result = invalid + s = "669e10d78ae440472ea4826953dd5463e3e10a2afb2e376311a953299b6f56d7c2f5f990d584e77201f290e75008f78d91486555c3b19a0e7f1b6cbd70452f01959edf7ce2261859da4fededa1a2975e5aa01409a2baa0bd4ff2abedbf3365586fd3bde3ac66e55cceaabd82892341ee5034ffd09ffb2e9c78fc455923549014a0303b408d9cf26fc2f0d373cb895e7ae0ca757d36467146354f04493be8fbaaee6242d4e13eb5e02f54067ddfecd3afcac672afb7e1f31612efb02591cb82a123773511289d15fc86fe83bf59ec86e2b4492a39fc0e9d85b128da5dc0abdf3fac43510d5331c5d6bbf431b2999250ff26b481123586939588f69a66925b2984527f614361f4c2df3703a4864540aae70be752570c70febef15c432dac5afc80187f8e2b722a817390d7ffd2fb27428a5f38e78dd1bcb65266e9d99d4ff9d318ba3771831726d71b28b2f703ba84ad25190915122d530f54ca32ea25e207539af1475788dc92795478fb1e8e464941cc3dd5ed0c7a47961b0256712e9b5584aebac31b66b2b3857b798b1ad667facd72f0ac09df62e7eb66f5069594c339b40ce707e045d7908855384cc8632fa76159902a50eaa2ad60e71d2cd2e84137b7e93a621d0ad7662549453403624ef9e8ddf853c0e9f8dd123c57a352cda1fa0ea88ead448e60bc766c28cf9c024c478710b832713b685aeb42adfb70815239201d"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5330,8 +13870,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "43bcfef9e1c31f739cf7273b1a83fc38c319d4ef394b28147e99566d60d58459482054f2b8ec88db88fa4033132c03eda101406873c76703be2bf0d0703083e9420a917233fc1baf2ccfb8b725efc7d302b474195d54d4d3c7cbcc0573c5fa0f2b07a6ecede1b445ee59d8fe101e8b0b97f9b521963b0933efe4d10bcad18219bd2d33bd2dbc81431bc6a3ae6a827c7be7d3b0a1d1718225670cf25a405ba12e9c7550612a866efc6edf994c155f24f069574d3f73bd09c74eb44326af7846f22687b84b8caf54b4052364f107ce5295bafb2d91ce6f4efd667e6ca40db672385163d1b7a27ad1d57723dbbf00571cfe56a1ee02d6b6503da2ef3f78003d3fc07f778926f16ebcb05762fb72fa50b75f78c2d97f174bae392065db2699b00ea80649ffa470ca92e57631db263aefa225bc1bdaf14093ea1323071f7fd614b475f5fd6ca0ab5df4f03624fafbf5cb3a49a92651d9a6aad2e405a7f76d9eb76644dc6b77d5f3846942ae662fd5a11707feb5dc67912c1285913ae2f54527ef39ff"_hex; - r = false; // result = invalid + s = "356532172150f061bb3fac2ab87f8d30269cf56cd220d2328df7f5dad6fcf5508a4d58d90570d908deddf3ddeb0f2f5f0543e14c14335c333c8ead35daf2d1ec149da61e2d3089b7efcab0b63d1f1ba02e815c91f5ee4016747a0232c545bcf90ab917f27faf3713ca58ef4bf2709f9f47c436fc27220010984bf7d17501385a08425f450ca8c753d4a0f410b33519383c7bb21a135de0ba990b649cc9316888e451d85a96d3c98ded00fc0d2474df2ff22c0ce60af5abc2b63eb5bccc805bbe8c35e6dd3773dbc0b186168b7676750420cc5330a39205b04c363cf53c158edfa36b3b875d17ac5b461774edcb28960362fafcadf104977c1ff328dc6dce90fa67f97f192bdaa7a3f991becf698901b9fd3b5328aa10a99fa49ffa99ddf1345aa04004dacefbb04f9c662a7b3e977793a2ab7193ddcc7e241bf49ab9b304ba084ad32939006637e15d5ca5ab5bea3f87b4d478ec20efa306045ef4f65ab3f16b8977ef2637e9fb2e30b222862f0251086740eeb7085bd15e30ffb4536372dda4e40d215296c55b38fc26e1820c0cbb2bbf9bde6851e47591e43249ab8ad8d793418c61fdfe7a8384603489a3b450e3455bcbb9b27ec059e0c34045a368dc72614d5e97c2e10d7664b3d50b782c61fdab9faa12897b7ba2b5ddbb79796939950f72ae11df420bda47201792980bb3334469774ab9fe348b9448ab82effdbe1972"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5341,8 +13881,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0ec454d968f05e44953e179199eeacffe08757e89401d89f0c34875f81363aa99334615de41513ff604ec742730911b75138d3dc489094fea7ee75de8dd72f70af216817b5fabc521e391d5a0a870f2c089cd76105f96730ac1e33a2ad07896efe98b4237e8a937635f8d1dffd7fc77dd23b3e6959fa450e48b70611878727874df80d4f7949e14133a3135e422fb6fc7dffa6d6cae3ff75df25458c53f859a8ff34e1756b8da403aacf3b7b12980eb8e69f786c4433d92a5971d615251381185ae436d9d8fb04c6bd7264ca6b65b4d6dfdde13668f27fa81cc78115a07cc88f68462a15763041b3f44fe9d6fad4afeb2cd99258df774995b03a567d85553210111d7f0eeecac6a065f3cefef4ecbc607d49972aeb8be6042cddd844149275696cadf5778629c36d524f8b99b2445a8358afbad1c0d549312d6f5d0928fdd563e286ebdfa2e7db8acc4fbab128557ff6dbd03d123bbe525d0cf37cf9624f06821e422bf0f0ca8e27baab590a50d1e563098c920be15c0e8e965a2994d5916af1"_hex; - r = false; // result = invalid + s = "64dddfb7c376e41e78f19c612ae9548df8ac6da06dd4eecc1f679600f97fbab3eced68cd19263b3a8e48cccefe211b35a8e8d3788f0d895e435c0d6976f7192e923cd4c56ac252edae54449538c72b8e8fbac33055182c579308fa7bb7518e97069e626114c738cf0b5683b3490bdd8d67fdb1821c8e1f7b0cf042421135052664e60ca83f285f932a23e20993dba0a5056838c056ddca430f30cf04aecf1901262a0ff6ce6e092d3a590f60d55c64ad0ab934954b939cfce2d3c8b4c74af21b4dca70f2703208d392ef2d44353e9f2a7aed1b9b0e2c934fbe17118b7d4de4bb0199c5f340368c9037f2ce458fdfcb52a6c7bf240e50859240089873d3fe35c04c2de591a2b0260fb7f59c52330751ae976c09fbef7c621e457a3ed676a425866c2bd8e0d2e7789e8a318eabf5e447d237e1582860d1484c81072a1087e2e8a1ca88454e6003725ab2916c7936adb5376f280cb1f566bf705bdbf2c40d49e08cd11ea591c5a1c146f10c040df533c98e50661f858ee360e0c48418227a560203093b6150c6fa55b3374abeb1133f153466c0b0e70ad73de929271f34236d6457d10f12ca08e276642907995dca5a8f214aaf5cffe8d56a123e73ca789a1214a34c48a10948d213a0f50cca3376785e622551cb1e0e1486eb792c91e0d9827d210d7de7cee2c745be898f73b1d231a54147844686af5f4ca68c0cc5eb52963828"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5352,8 +13892,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "69a1305c5eed4c40a1799a68e0bcd73f2fddf4cdc750d24c1035eb256eadc6e59c13a7784b22b09f4ef0c34b772ebe608f9306bf5fd7a463ce0f96ad0e3a2df6e1dfa8ac846ddf54b1b10dd9583724a96a0500d5aa6184052d553266d6b69b14bc76e82e15386d3b961323b326d75886fa61efe31244f5b79f83eb4ba8eb5d19d066e1844c11ba8ef225ad6817d6b560c0ef551fab8589366ecd74b93a944aa53becaf4c8e77b13e2da12fe5543c2680ad76291f08a146ed42e0273592bedd08e493121843f1f544c766017aaf581bd1645614edada2f90d4dfa5f80c1ce9e21efe901b8ab5687fad0c022b52e154abf2bb1d0c02e7cf934519c0d934ec995c79c244eb3e5462fa86dc7b13feb69abbba73610a70f69dac24e6e5ee98cc7376102f5f3b58240f13e0eef2ad0cbf1b33e828345d17d7940732886a20e05c00f2f400d2f45ab68778f3ec85246e0a2851e44fa77cb6079addf354a37512035643ec785bdc9a011e6d0788208c1e14c02aae32c3ff764f6455c8f8ac4e5017a5d5c"_hex; - r = false; // result = invalid + s = "29f04878912ac9f6e33db247299e157ed1458f655904a6b2ee7bdf6e05edd7b6cc30e776e7ba81f1b1e5b1f50602c3392fa243a85411e04090743aebc2d20e26c971df5630afed94baba52d63474ca5039c5d6490c13bdd3e73bd35826fa99c6c2732e4e72ec96e43cf689068170cb41237dcf2bf3293045e767b6957a58a239519ffcda264030331d0e3af430a009a81196d776d5d1868c58762af8972c1b8c8bc3cd86910073f699dfed85b5a00ead26aef62042414d8f82a3630c6feae748bf2d6ec9188fe60d844ebb6e1278dc1b1dbe3e3c622f3b8c7ddd358f1dcdb8dc2a58a57466885bad89488aa948e37796ddadaa8e6a624c0d2e767bdeb94d3fd9d6fb4dc857ca7ca37388e3f8b560540cf9b84ff6a1683515091b55c1aaadd16db799a01dc9e1d89165d32b2bd145608b1ab3e374d7e510c872a64c81dd93c6c5cdfdbece4a6fce439ad1f5bcb56f5fd027b35893a472cbdc86306d008691b0a57513f91572ef17584946c7bfd82c8c3979dfd533b37f8123c875c8247db0b50341e8e157004dfcc67ac5454251370334ee0fd53d132a5948ca6d742a3318cf2059aa6e992b2b781fce5c2476e6f91cdb90432411cb16b56ced7fb45c9802a05051a2493eba1103de4f1e5f4c026965bb50cca970c7ac63f4666988a9adb1c3c8e64501ba04f55425dfd7cf2d75b8e736aeb6ef86d35c4c04783798739a30f39b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5363,8 +13903,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8475c42278f3ecfb53a8b19904c4cb40ab5eac50077bf85b8cc71f6faff06321110aa240f9a7e8d3e99b813f29c4bf35acc8caecff0873511c9bb9f87e0228a5ccb82601dcec8b8b99acf08683e70981af9f7f2ab570023156471d77d9e944f221bdff3e666f87dffabd079606a4fc139af85031e1de8664590340e39e2c117054c8b48b20763b7b5fca7b5fffa645f93d4a9d6f3336e229f9ddbaa4e1490235c0e7f516b2e995d5abf602803c9e7286fae0fdc7cbed07a69f5b1b11cec32062330fac3b85cc4b549450ee358b859a10b2e8a33d988e52ac6921d5503f95f47d4ca26d04b4d850235f78aef513258b627d27d47edd8374828a1dfc26e4f1c2009372110c729c01dd9a65464bb1ad4be056318a0c0beee9458962e727852374dcc27f437c6c550be2333d014767d1ba0aabaed99297a544ecdb27098cd2acec886ef4aaca14a030d07ee42dc0194c1f867b77aa8b7187358a5d185ebecb24097b00a136d39553cc508ca82dc088f359cd836497b3e87276437e132096b03db97e"_hex; - r = false; // result = invalid + s = "5cb6d823e69eb0b643ea8592bba634c74f8013275b14ff75e56a817ba150b50fb8b679aa3eead95dd1b88567079426b20698ce8992640d42a0d09fbdb0b6a17597db0547997200c109bba496104f267c4e1767fd43a3a32ad56dc2ad18574aca9d515f8ba9d40ef37abf1be2806279e630988ae36e07e1fb573ba5287bbc85df23a3c06e3b916ab645b30c1c320f5f2f87b94d7ed9124e26d0cb3c41fd1a937d7535b17d51ed4dc2e7f00a27807c891ea57a1bf9349c413be3d82699bc02baf755efae121bf5e37ab510c1946f3a6b84e7a3291acdc0dee115d9b91b6b7d7c912deb72796dd8582df341e5ffe29aaa49efb527cf850761f556771a9aaffa812de909038e9ae4e03b823c219032df26804f2cc5f02470fab8fe98c7ae91bb3d82a1e8adbedbfa85532b7f57088bf69d0417e9abfc6acffd8972694036dab17348bf20d0861be7134b855a151695f87a9222e4bdcfa3a5135e698e97d8a65e2bed69d10b1993da3149c385c0c282c4d5058ad2ec4a15635efea085da62d494331e50dcefeec0e1cfe698e0436f94f56943437974ac545e282695e4795f177b5ffb8b6116beb81e7b6354f9f21aa32ff0811bd00fc4701efa7d09b84ae83ea796ae1dd884e2b690efd288e033ec55ab037df9396ccf19a7313753c0d08ebc7a9cc225131ad28d354e86b546c145f452d4418902a5f4ebc2b92d71b945d4c522da28"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5374,8 +13914,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "ab5bdea7d6018c803966227c8bf584a231fec444b6bc1e53fd3f240b30c7a3d84ff099899902ab9a11f1f2876dbebe6514f190838af546a249f3ce4353831a20effbe944b97b523c3857eec96785dd117ac188ffa41b7c8374ac37b03bd14afb828641b0c0bb2b47c1913ccaa5c1428258461ea57a72678e1ee41fb2ce9b5a1c3bcf3d44b8fed062de9a3600e940949b7478b452af12c97412cbf8f0bf1d95cb2bd4c3581d1ada8a0efdc2055e52a16ed7c2adc36e5f26d5367582b475a61bafd28d92c589cddcf99d3b94c64254a9ec0ea409fb5f480cd3a6e18728b68637b563467c48370286457012f92106278375b018a2cce2a4b274a4971725254049065198ff18e0c6a2f216a3df4accceb0077ba4b8d5492d7078d093e442b24588bdf9076d727b3a17f17172c8240294938b45ce0d695d637f11c8b9a4d71eefa0237828a6ff62d9b0c88fcd4d8a97f71b09df62274f51daad2036ae7765a03036ed637f3de571f4f8af7522e41acbe84d305f43d74f878365ba3fc0f2dd3fce2335"_hex; - r = false; // result = invalid + s = "0468cc375eefcd9da9ad5663ace5c6d62e7377287f7c1003250223bb3523b4bd372cd1ebd88a3fe78b826315ee709d611f02651327faae244119ca781b0cda20f0adc7fadcda15752c18077123d99740eafcbbb5a211d6c7e04553aa8b869d82ec1242ccea07df81215fc6786afa75c4742a61acc5031d529d5a34832f24c9d5e79f9379afe9e5e41fa9ca9575964cd2e3d837bbca09f4d3520a43db11f7e8b8af37ad9f7fd588fc8ee985a6752393dc2783b23a371df66d4d815ff2e354168a8899f124e04cd1489c49e3724a34fd32d254a0963f51e56eb091162aa9e0e9056aea76fb220ae4419f09da0edaff93d533ba175c6f6d59eb182546cbb0acc6a620ece4709a90c5dfa9e3ed6a2f0892614acb09506608fa9dcb956d3709f753ebe6c78e3f975d471236a228653f6c51da271dd6809a046d74bb50ad86db23771bb7f1bec70c8dbdd8a2c1f905fa81a77dac6eeae0409eadd5b0efa9d3217bd539f27b1d38f2f55ce9139855fc8873e018bb937b8850e089319a0ee80a6087584597f6b0de9f1da1eb393c0cfa2ecd64c59795a2d4c42ebb48594567c18c72448a9f3100ba086d69c3407350bf0c284cfc6f60c08f035e2f7ba1d86ad883d2c2d6788f9b0002023feae7e289f5bf15b5478dad04c6b5e80a1ae46a07254ce7d4a225fa59d71141f61d7e9e672faa78cdd9416cb21054a589119cab33c747fe0821"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5385,8 +13925,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "32329315f2d1bde7c6d3ff918ff3101084385adfc2216c0bbbb22b1e3dde65dafcf76864189d3ace3695e51a40ae844ac6e9fc72f1fbb04a047c58b0b6a86df0f2f73726eeb8ea2a428f1588a222bc95bd550083da397add4a6d37a14358f105e85d270b14fc3ed99c35e75ecb818889a065e9afba8918a8f0590d292b507fe36cc4f416e9168cda8ec687ae7cbe2018a585f4c9d76323656ff4d554744c516128eeca1eb6c77c5f566b1ad66665cfc81632cf47f76c2d366f3b5fa0818ccc39e1a95ae9a5a018e8b9defb060482a5e38b4037cf50d23bfbaae13f096491a811a633ce2aad8317376a087bc46f12154e2fd14b2a008698b0acd3485d326dfbafb1c36a1dbf5d7da8119f3f456a4c0db555aacd48905646ad6d65b64deda1b248e133f251ab7db6bc8449cdec4ccb5f45b1a3452e25c3a04f5881ad19c0c241e10f18ea4aa41e1856123e2694dd701edb7310e651b3d7d295bd193f800000931eaed32e4c4c52e339e939de6612ec6bd10d384ee228d2d14498fd1ee4ad3b46bb"_hex; - r = false; // result = invalid + s = "52837013ab09767eb985f45d0e6698b228bb4f1c15f8ef92f85e4794ba66201a934b87fc2b31373e3bc84bb6c69f48bf5820a7d81f5a22480ffc4bb9a811035514baa557d164aabb659793a668b30727c9747e4d7ce69507bafc500f1b27dfc42a76eb9ddf872b0616391b4a5c7d856b57346f2a007ce0e1af34d5760c46ba03f13a170d1dc393b43cf6dfbd17a292035500d4ad49e9aedcda3d3b0166d5c2c0d125c34ee76ab2de167d2b6c12deab30f2b65097a0b603bd6299b75b46170af5531f815113e7566ece62f90bfac3fcc5fac8cd08a57a7bc1eb5a5230c42eb812c94b9fc6a7072ac454c05d215532fa68315ed169b0eb3131b0c224d34c3fb96b4b67a4e9ad85edb10477f03d1442bb0962b56ff626ad0568aef2023f532adbf0c79f8c2940861a5e54675a48721981e63e953cb2ade85b88f99dcdfe93f6126c495723bd5c4d1da92d63f888fe0e6299324e2c807dca40fe3abfee2b9b5eb7a901de4b72df562999e4c7a96d9d1ae689a2c9d9bfac340e0e0a01f884b2c31b61fa69dc45d827eee1b2367b19cf1245a21e9d90ac6312600f42fd79418e337af0cb8d10d62efe7e30031db21e7398747a0f887ddce5d0962b2a3ea054d9658fac24740099bd00c08814b3099d9513963fab8b56c02f7e803f6fec061a779a69e280d1aeca0c3155136b148422bfe95bed167ccee54f5bd6b8a6b9ffa4ae06bf82"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5396,8 +13936,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6f4c5d8e23801e4dd6617c4670d2434af72844a997379dd7f877179bd7405bf407247e77a9b0e76956b0b3d61ac2592c7005fa85bf3cb53a231603070a83880c0202e6a2f5e4149ae05d5333f5daf142a8ee7b649cbc97d465b2354e68a192b1c63c51a1166feb428afb215d89e51bbb076eb0fb7f02a0bf512ef352561da2ea1a2265eae0dec4c7f2eeb232208965427c81c596cfc7f18ca9510bd34e83e5a51473e6e138b75368191d6b1b2b605430d9989e9ca4dcd2daa8f11e0ad05b20f3b0eae07795ef85385cb29df224769038f89599990d0ed75eb122e2cf6c0aa80f185c535bc328ae21e53376095ab9ef9f15ec663df2339fde30c480944026304d553b0a2f270f4ff999a0f39391a80a73c22644d53e1e6bb1820826f4aae6f126831b195c2d137b919b5d20d918b3fd3d85a83cca759850b27ca101460d1be3cd417dc16fff5912331118a4d514fa3634f67f72b31056cc65d8f6a11d1fe10618b88fc2754830eae79e12f4f302776137a772489e3488f37cbe0a1139848fd288"_hex; - r = false; // result = invalid + s = "916a2444b00e115fcbe200b889cfc61b9af3e69ee39d933195fc824ad8cee2e79c7a338b70799d679a7a12fd81eb11a55049bcbeee247004d3a6b25bf24267b8c3e012dead40a372741ac521aa5d294f961afe09a4ced0457c14c984f2c0776d94fc8a0951e50fd282789830a7d2ec33d630a25455b81f85118704645dc4e1c9af586436361cc6590507751b621ba9202936d1115236d1942eea5f25d12d70a585b474c70417799afea8a5ec2157b357fbc5fb66436a2037876375923b065d5cbc0d3dbe37cbd08e3ed916815aa18c8687ac888cee3d870cde0927b43a14ad053e064993e3c3398b410334282363fdd361b717a4e94a5d6b14f1ee584b0ec069a11377071866541c0fc39aa4c313b5bdf2c0627924932983974e8edf943bcc028adbe480a2c309743c570e813bb509a86b4a0704248fd32802f92853863b86fc950d7a3cfd830e9238343910c10fbed0bc145875647d35b6ab80c0d345cd218983eaef049f636744082ce11abab67720076c15c675e0f07483afd293e0f255edaa95414390a587003caff7fc1717c8d9c9b677736146881abda86dfc89d9682498898eaa0299a173574f731de28cc9bb4834973d16d2bf2f1c9e6f0c3f41fdbbca8efa5724958a8e7f77fe03f4163c6e8aa69e32fe6a6ebce3f8ab26d3c707aa0dfda9e0e3ac4a4a6ce68b7249c53ab80f2f631b52700b01d979b0ff9756ce8b"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5407,8 +13947,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "70f10afb809a64ab2407f0c3ddaa0f2f38f981b19536f3f5ac44a6fc85e5535e04795a16bb6c435528ad255402200b02f203bf3f539df42f0ce3cace96456728814df95772560057648867897603ddb96a92f3c7652ec24ba86af4fb7c1a8ddad03409e1bf982d01b63190661dddb932018cadba66a43cb5c4694233541c56d9d03e659e074fd6aaa18976856b8ca27342cdd3a516d587d5d46c9c845be535ad1a923c2242137d0f3dcc112190a807ca112c069fade7af53f17f2f74e2f11fda2b75f9a48250a4e9e8b34920fd20783b179399425b19e7ea99f395cd3bd7d37729a287d423623a33542100d13eb61d7f77439f4e3aed7265d7a08a7d9eb0477aaca23261e4d06d25ecf1219b87610e89af4c1b427f7a9432624dcc6f78454376d215a6fd8f6e5f1211a18334395ffa710c8730abd64de0daf686a45e979547c46f684fc130f8cd9c4ec6252408a87e29e38a8552a4a908ed86f3f83d42a9d7dba1574a2453dbf2613f8c9aa5b7fffd61f222c122e39d86bb01fce55acac1901c"_hex; - r = false; // result = invalid + s = "1d151c89d936a0294ab217e8b58cf6f0857f8cde11a2aab944c2fa253ff4f0edf91881aba39e30364f91464ceeb62c73ac27c023113e93eb7a222ef53310e1ffac661e32abc798c326246c6d9039793dec6ee1c98afad8b5de91f10a72d478d8a3768b305d26b5bef7a8dbb4a97ea7badae4c8a6bf2d8e698da1feeb9ca1e71a084b3b8d93e2394332caa61519aee1d165f4e9d670da43d91fc04d7a7c7253c6737377c1580fb35c85548af9ba5703c1b48f04c9cd155e73d328e2dfa4c0a9ed39ae828a7e498ac22b2e436f1e4dc1beda39048ee02aec994f3bd85a18b51d1ae38ac0bbc8ff55edd51169823f6ba4879941ba48931fa0390aee889a57857aee514c93fb0c0e737fc3d4c3f232a7114736e126335cc53948c46e87c2710ad06c513fce61e205c2eb41ba71920a5e276ac8c466e7e82250f83ce6cd3ad1a4a0868b5bda48938bc594bca7b10184af0b374d1cdb6d31b6b50262f9c4e7b573279435035e810cb411981b8157b5099fc3515870c9c0b10480ec9eec5fe670cb53076abbbb36bb0b934e90b5437fe33af1b843359e54d87de285ef48f4ac9acdd416568b09200f4cddc2fd6397fae020af9fabc76a178fa58327a154aed1aab651dc8799a779b52881455404f32868f913ee5de8dbe755560be42fe18c37d666c205d7895d1258251b62e434c552a175aaae81ee8fb96125f52371f151d20c4753da"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5418,8 +13958,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "36343b89eabc3dcaa053b5be3ed7faa79c143ec18800be18ddd3747ecd557f09998203325f89d3badb3eed7fbc20823680d38eb44dc368abbe180474f494431c04d936d7b5886ab3aa2306c0b03750df05c4e7fcc2dbab79736e2ec9b0e27e277d130060abb4ade70cb924ab950e95ab1c2335578c5cc40dc429e397691542edfaa8f4d408918beb9b0cc0668b6f1cfd9692b32f63c9fa4d482beac2745d5777b6da28ed7665bbaca9999f65309ee46841a8e3998fcc6670edebabc4515a438375ba820380138aa7f2e32b8f74d29db86cb85dc2b556f4a307c02237f18fdc5634811653ec2a440a53f8647c495b76221c058268713191a9bdcebc148a60d2159f28d92f79dc5f3b5f0c09e62bcb68f7003bf71bea00d25c4d7777a28103ea43e92951d10be77ed7c73cbea573f7e46f924e4d12cf9df8faa53560153c8fea87365b90ad3f0e6a50b41612fd191c8abc3a5d8f98bf4006e1ae31907afda4b20d7632829bcac43c100ff3f10f0032e1bffd3b207eea2d6a87027577e5458ab81e"_hex; - r = false; // result = invalid + s = "010cd99bda10635a57d401f7edc1110e18a2482b4c0d5577791e69fe070e4d5e3886bdefc636044dfbaa46096c6554824935ec326f9e6091100a543dd75b82babe946effe99e4f7d77db26d7d20f83c92257d09d25086451ec8e733308b1eb9d1739ecbedc49035e54c005e22add424a3d77aac0149ab64ec98accbf530bb2cae04df1d279603ce97f31bdc16cbd406fdc25e653af4dda80a584d5c12f58dcf0cf808172217be61a132c986db6061cb627dcde4cf90ceb05d435ee9814eedc193c8ace85c295431caa9a32b21301ffafedb3fafb13ff3e0a5a58b429e7d762776c524752443c84cdc07006cd78cc960e0e827f3663b824d42ba3abc6a3f63045896737c61e2d175e1bfd382c6a80c2e9b0337613d0a533ce6926ced5bd12819ac32faaa402066aaf63ff21c596d3f9bc53f0d1ffc859b324bd8e03f09ff3237f3a41418f60cfb7cc7c6c2cfa504e27baef72512cf90d244ffab6bb82560b03bae1109a804898fb11d12f46d272a3c8d86d2aa141ee473a54e9c83c765bd779e2a0053d40c5e4d8138b17871fa919943732544c865863d3322a4cda3efeb51e5a9fa9dcfdf0324ab15fcb951b0c33c1b73bb8806b7910547ec1208fca01548bee31892b5c49afb64a642c2b64813cce73a74f219756f96274a19fa9f35bc824fc7d7de641c4f189db7e68bb67c9b1ec71c396e37f64c165e1d2191a63fbc83cc9"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5429,8 +13969,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "750133d796053811558b21dbcae35e267b2fa467a9dee49755d45599a6774682e40e00cc46cbdd412e6233070dda3a59814d6238f474d04d9102301bc281816bdef246f80bd3ad06646cca4c9a662527385d3c473d03ec4d021db74c7a1ba6ecd1cac005d58163644b993aea62060a25470083006a6515ed45b1e54601b9e5914b8d5e3a630f29bd88036f5b708d2036e4ce7832a239699b2879b6089048e33c05d3672c0e5c573699264de531a0f6c2c703335fa32cab0003d25f9bb8e0fac2fed05a82c45fdcffdfa0c2be8e5501212007eecfcad720310a8ff44ab7dd52e69900344996ff0dbb7c39d2398769987402a7e1d9a6378721f5aad9faffecfc4fee8c4092207e849715c56ffdd5c42875d170467799e0f8a08ad5edbec4b939cda099d30293bb76086c5315de60e967267f3ec113f7fac4bfa9af68c4288c69d5b0073848aa722124a9f53654544923b5556eab31bc22ecb6cfd8b18e665fb345e8b5e48cb63ae37c7ab8125a1f3e5d6c4bdbdb9778d8e27f91883aac99a69a26"_hex; - r = false; // result = invalid + s = "62da84a7056baf9243506ba8b381b68a40861d63bfecc637a03b861cda4fc98c4513caf02def90a6b83f814a825ee43c4ab6f46ea022bf754bf095ef60a3b36d07f1525710a3129335b017ce6903bb12604f4472f843d8937da588574c529bae9c78eb0404832207a697f4d988d1a35de25bb6847073113d8f292c8a8453f584439e73090702c532eea0da02ccc6f56ff75ec775dbe09f2b8416115d981d213efc75ffcc0a363ad3006e10c7f6883ca23418367c137d384a6700fd774050fef2f718444b5a4e6bb49f2d8ea6e665870a0eaacebeb4cb15cbe124c1dd9698bab972a4b3b94d832f0cb37d3741561d49330263187bc3cc585843690dfa0430601c1f9affe5d6c36524a393a550f3090dde7d3ec739799551dcfea1fd1c84c26e366dcad31a33d5794c4a427e870d4a054e636986f332ee7808609fd9c2aa595da5bd7e06f42dd5a889438163d10a0eb34768c04a382119cd88a2d640a96a49b8fc3b1d321346a4e229b9db24a6a635e5635822809eeb885bec4edfb9d23ef3b9ac00290d8016adaccd52519ff71ee46d7b05a32b376035caffc34b7ea39cf69f7707c755fd216f1e003b49b3125af09210ccaf49e9f19c481cae17d11ec5cd8b16795183ee20f24858db2b4dc0cfa0dc79582aea9b9e1fbff70665a5875b40dec5f03a0172078e89a1c4070002d311440142fee01fb394b82d417d6a45aaffed48"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5440,8 +13980,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4e9272dced0bf87a8a3b6ce118532d1ffba529ee783857ea0ca7510f4dead7406f10c48725092eb41561d067c1ddbe0c111ff24aebe1655edec615adc123839cd77c1a3de8baef7217911adece72b3a6b617c69e8c31464e2bc021ddd2dbdb99ad28042133a6a02df2be394d5004c6ca2d7520af46227171a5ec22870fc8a7dd8d6f4e137393261db00c57fae4fede6ddc7078f7c9fbc2235147da239979fff0dac3c5f0ad10fb3de6ad70e12ca6c3de49b8a36383649da69b62de49c967301cd36d439a6c1729bff6ea0e664a6fcc95898b190cee2492fc6535b7552b5f04d71b4be2dc0471dbeda5ddac313c9cd4e90109f04bb09515e54f6463450bcb6fe06a5cf80e7644f422cb83b123b94184c9d81fd0bd4357b60aa92bbf35a9a7251c515bdbd6016b81ed361837eb6021393daebe302c4c204ad3fe724b4f5b8e52f9590ea33e02ae1ec2863df83c33fb6b21ee051f489668adbccf04883d6aa972b77dcd42c03de0be2ec9e63a717d3713a2c7d31163da70bf53dd3ec342183e9696"_hex; - r = false; // result = invalid + s = "7662f05803a5e2fbb302a7d7e1d693d9ee26e887221415f4a47b2a460b2a8b5e33e74d3483360ac3ee3c282e65e49950fc8e315b1e2c394ca7edddf6af8a27c315738db64ab611266f6eb777409731b7bdcd10eadb2bc70093eedcb9bd3ad4be0c9cfa3e57da225c03f69bf536aade5ad807b5be697bc445bc8ce34a6e112f35bbba860b449cc7b8de7decafa63ca4a3b63421dd69aed52de3a2aee02178e47f66e6368ee470235c27b8bef0cecc03c933fd20e7273e7a9ef1050d73b06fc8e6cb6b380602a0556258839e1770a971bafbb95c09d4641657a815578aa3fe8aa02b889e17b69dc7d9a945bf9fa72c1ebac082abb2e09acfcbf9ad96a0183d858387c962acb8547c20c2868abbdeb8d9b4c6533c09190fdff9d66ba82afc44f4768a0321e1cce491fd8360ba8a0d4681b7a5731756bdd25fd4a3788e899c5182d02285c61415abb100c80c97ff1b2cbddf72492ce0994b895597357acd72e77333a1ada2b9cddedcca8e1de5fb272261b5d9230bbc56d88f79245b7f1de55cd3b5e2674bb376027da472e84b0b7a7f27bd7a4782693a87dc0021fef6dad1663312b7b540ea9730175d33af1dbe9fa95a90a87e24e42cc517a6ecf5254da94c290a230109c90e43c6afbab1216501b7402fac49bd1635af2e978f29730485dcc0db2ce103de666c942d553cd30f457d354d85ff93bda1c7539fdfc376f828f18fd1"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5451,8 +13991,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "bee3e72ab46b5bb4cc6138dbef0aa19effb5067358d98252ff739aba22d21d7ada25aa395aedc0c29224ca5b88169072fa6d5da902130ce97f42072b86103e1b93313452fa6285c3f963689cf15c0aea60ebefa1058603b5c9f905d5849e496ab4036ee73e5ac612b364c84b34887cd0141ebc114e240eb8885b0ee82f31a9548fbcdb6faedc1c27e0fb1fb4037124133088d5edb6d34476e1bb93e6da177197b6463a0e1042581b965e9d0e7797c13cc841263b991af9af21f8ccd44f4ff161b6545296346ef54792dd5392d26b8bc2c5a9dcca41ccc6adaa1971cbbc5e676f0c6633ece739b57a24a6bc54fa75bd6c4f2d1e554d7d7e78a57e012f5a86121e6b11daef66a0004fd514e3b688770566f4f98db5d368f1e4ca9ae583c245e30e485d4b71cd3a624eb1157716d6532c866ccdb6c5ddf3e9a6e05952f7c2c6f37c50871b21258a2e9cb152bb877971aec6827fdfb4fcee828324ed2decada3692e3c4483dff53bbfa12b633544f04866b3c7c15f713786feec165502eb895382c6"_hex; - r = false; // result = invalid + s = "5e03978f9c1d06eaa32f1ce7725fad4e15686f3ed47bd41d1786ea1e0f46c6e82982efb29e8dd45823091d87f6dffa1c36f24687b16a6b2f9206b9deedb8b844658c251e4aac969440f39255202b1590674558ac75dcebfd94e36b64eb4070c63a121bd3c5f06da961347286bd6e06ec0e25eba34452c17385411aa687f06cf4c790e765e7486556f01e814522c9421805030dee904a835c2c6fd20680a86ca16d8f140aaab50b12723fb9b3adf57555bea048016478faed0e4ad092aab495e8ee488c035f5900d460316281a70c33f2caa3e67266d89a9366cb1f44dce250aa85e451a4b0234e90aa7ce0d9bf673a27dedb1bc4eea6e135f26abf2390a8e69e732cd8ce1afa41043ee13ae57614c2794d8cbc35782c6548bc1b6ecee4b083dfcbb5931b932dbf6d2d352b4e3c28a2105cf1408b7cbe7248627c9dab02c24166eb88d9fe41853e8c1e249f837cc3700f0e8fd555f6a12c218cc25b9166f7dfab93ad10735cf3c2e673251049d2caa940106c04f0bf067ecd944e74c95b1087937cc4b91fd2bee341773444d6f1e9562f11baa7a89e1b1dc8a3d37d99ea10c9962af3c1a3dd4454de6ef62716e190bd80fa1d4975e87f336a102807216458eda8f030a7d38dc8df596370eed9aadc41817cebec8cb5e5a62e3f8fe40fa8db4b29a4861e1f21912f1a5d2b7e4756b58bab843f05ec2e9f6eb34fd3324524930b00"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5462,8 +14002,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2cb338f3b3e9ca09f101b5ff3169edc180c1ed936f2e4a5f6ee7befe1e005eaa450c1ef3e78739d142dde992cf73b2349a617208f6979220c85f7c5286c3126816e47cf0946a17de1fdd80657ce79254881079da225d3b10898b1e5eadd04489f486a14ad530fa6a444c19d875c0be51875303abf214bcc6fedb1e7e43a257a3375f0ff7ef64e5369b1ac071ef8a64336f5660ff9c5e8fb389a6029a8ff853d4a8e565ba17b0f7302d4eeb5416598421858ae2ab65c2411ac92db844bb430a745470f402b13c9575b171fe9e64f71d6ac40e6ac65c5ee08160864c89df2d9567c13dbd6ab1cc6a767892f0fbcbf2d734424875e9775c2020deb25ad8e93472e1ea1235bcd06301ac181bb20a700050e08548a5cc00234a44e42134591ed70dd4933f4d6c6dac7abad2e6da8417fe42945ced787495fbeb99f2d4648b9382d253e0806d988b1f3a64edbb28904092941c834b63243d583303f6081067d1fabc5afcb818ba8a2edc31890ec28c204eb767e749950c18be17950bbe9df4ffd2bb97"_hex; - r = false; // result = invalid + s = "0408494a779f9df626d5c70760b2b575e8d70537e47afb304a152fc336bceea2e48c48867ebfb32915d372dba61a0973416620d878b6d02081c0338541083ba664062ace4b27aad8b47f53904a85f0b0836463d6f57c66fbdc3f8828873958e97d7d67d045d36c93310e0dd3a478392c29201cdfd20bef727c934e76c63149e5351cbc1bec9396ce985506f148451c78aba738014e40917b4fb44f78e6db00bb2591a3563db5182879a88bdb10a66492061dd8d935d6af6f73aea54447fdb8bcff2a30a941da0c11dc57c6ee3b253bf44bfdd89c4f31e8ef15ee6749fd071e025cab7eed030ae8d8b355fd69f103025a0bf5ef7434857cce36fac5098a8390a61f4878c8d544cee8bc8ec53e28f0d0a993559a73816de675dedfff9bf5b159b61a70a9dcaeb766e6635aa54bd88ba450fb5886f2aa857c3442a47ba9d0a4014d53085c82a0d9ad7629a3daa4f53ba0b8702086950c12b2d7d010b3042a011e3ca3dadcacbbf8d819d18f270708360a1f5fb2d5baadbe487579f98b37db5b10d834cf106f4e9399f4b28315dfa953930115a358042d4733d03fc7da8d98b111f2370760c73d2adbaa01c0d5c37d0d38eaaf410eedad4a4f97a4547c3f3a27f1553aa61a6b55f4dc404454e2eb4eee0b22262660ab5906ba49a4b6a1b697ca022fc7e496e6514fbcab8a799b487b17cdf8d922d7b638701e29e769c7ba8e4a6710"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5473,8 +14013,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "85825bd4521c433e916152fc89c06d11ca2de44afe406108ba3cf299ca02d0c7165e41ffdac6279d0fe5b915f0aab62de6277e381fb8eda73a89e880fe546fa425f6698b89e47d457a349ac8cf0c38f255981b902f6e22ab9d90ecba5682da95b72ea32b243082d564466abb5e9abe6a66c5cb9f7977eb3b827a1b98af236340991db4b6fb957c4b055c23e13766061aae849a2a8edcd3ba1521f1201cec81c6ad2cc7c20123f8e1c13d1431e6dfcd3481b085e32ee4d935311f5341e3a0c594c709523bfbe9b4a0374967ba42390e9b9a1cda573fa6008b9a0a96250e9ccea74e5bbb019f1b870268a48df9d39b422a9064d923cbed7063d8423b020f07c57e4e33122705b523c845bbbf764e5d505d42940194699143188c7e694059416070f4da019eed7663af0f007d79433a091fab6cef6bd0f3d7021ae7e82ff956b37f9c88c2c82e57fd834abadd012286f1af916819bc9e91085eedcbda6b5cc44feb83018688da4b97c9dcdc1700d015b71597e96c0d6951f04873852a0dc3397f88"_hex; - r = false; // result = invalid + s = "274db226194625bb0597ea04f523afe5601e5827525940ae194ccb6a8e15f35d8170c5537cf10662ab5abb841400e94109000b9b5cdc4b28d30f9a10aa59df4bee57145c9037a35fc8d5ff2f666635e64930f6ab370571a411f999372876776e119792e461ccb4aeff0987f92c15ad68f10c8221b1c583d3c63cc3dba6b46d4f653137e11b589a63599a715822985095e051f97165524257735ff35ff9f7daf3796249156ab27a20ec94e9e565fa7a3e0d94f33219918a6508762a5d3a23ae43adbd9129c18aa69a9d9c226091629a8be1752baedb943d5b4ac020675d26d82b2a41b96112ed961a50279930aef4791325ed75e744faabde3a8b04112ddd34653e7f56a49074b41c4e6bef8fd3755d8a0dc4519d4107068abbb3d98871037c834717e27f1ae5156666ac598a7224085dafa0814b770dec1fa0afde42d4ce9c5867e72b5df7e445aa23f63681b556f356d94cfff5477953d906bf887c82bcbb583723d11ea20cd0e372339f0155a9494b103a35c63a4197ab2434c79cbd1ec03c7e199815790335a06f56753d70488e7135cad48e1fba56c9b17aa4ad882c636fc2382fe33ce6a05b838bdf158a3ac8bc4d12f00e2d7157308d6aa92b7905988e8bacade901282f3af3e7bf4b13bf5e1aa58f0f36c6809fb05327d9747bf4f8fad6bd2bca8310db96f2015ba20760b1d2df568807d3393e29554eae243a83ee91"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5484,8 +14024,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8204c6b2d4027f7d93ff89c36eadeda03a5b5464deb495e5bd4fe066c0d9778042b8fa130396c1652949f0fd577ca23f988dadc525a820cf82756992ff81c4a7562ac1017ea01f8f9cd0cfc787dca972f27103a4d92bf215eab991e6970e409d431e6bc2be4f0586f5b98b4ba708d9761905aab265aacb9d495469b1863f5938549175f30b30561c998e081c41b039918a6fab4eb2519e6cac910cc4d931c6c81e899655f06c8a26f7b9433992ff923f27d982c1bfd0dcf62e5ca4c3e035961aacb99f831bc0e42a668c01256cb830b7aba0f22314b548c0b85d84c61c9b4a8ef331bd7c98010c9a65bdb7bc4f0f09b87d0c8b8a1bd96b6bc2035b43348dea48f1f4a4ed6e393040500a12d7a2ce1e08ee8934218630ecedbf2fc7fb5c6748ee3118421967e8685488fba058f312ae41f7d386905646ee334e294662a97ce70486b450a64dbf8ad7c1ba50f0c56295cb2dbaad3833d3922566802c80175526e24b188e18574292e225bb958305dc2749ddd4b46685925c0ae9deab2671e1e799"_hex; - r = false; // result = invalid + s = "8c24d21a6bec4d9bc4a5a7c14177772865ca6094f66455366fec74ce7e33fc63f7ce12772a3f423cb1ef8ca9ca74119e2f618c32011d37aa06f7220f6ea56710ab94d36a62f538e3104d29d2d71b0b8d3db3f72a886c0ac1582e3ede1838ca8cd4586f69f113edd312e7f7ecca51b356316d9129d4fb5e495753626de0e9f3f8bddf8f3762ca0983cf4ff9697f8d48a91f7b311ceecb02f7a50d8167799c72b73462837667d88a74b1f67045b67110393062221f49433a08ad5abcb27578e26f2ffaf97e7dae9d01ae613e4a3636ece91b08cfe591750be5c855103c06e0e219a4fdce62813da893053b34a60098514bf8eb1968e7c951ccc492bbee65210dda16fea5ec08a9a507dfe9995281db58d2dbb3d531609dccd61f1bd0390f00f480ec206d7f13520596ebbe3b7dfb64c1270dbc69550146b70fce4218b36c028c7b9b91acb8ca8dbeb757d2511ddb99d269b3d241f7b9b2ccf53cbc8195e32c4fc757c7c022ab22dc6f4b2ef61236ceb1cf6063eacf7836862a1eab93484f03f75ef1a612ded7cd59ed15ecab79a9ebd5b66ea6387ac11b2542d76855e4056fde6892b57c1bbd75dfffbcdd8236fb40da5579f7658f27ad3f774a4837e08cf7d61e3379e9c7765e2077b7e99986bc835ea0549cb649304d1ea431d2d69f0a32cd99f1acd4cdfb8a8dff0cd257a493aa7ae71e2b0b2b5a49b45207815e77141b2be6"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5495,8 +14035,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6593928f8e0a2a486c9af0b6af6ad78865c215f64ba3b72bf3a103788a352d216fe5a2a3382220f037fc2d8a2d25b42f48cda3337cc831e4746266121181bce964abbc7eb6378b8c59b9ff59de336989d58003534458a47cf18fcb0d0397333045f0f0d826445b62487217df62131ac0d84a38a02ab39eb7fb1451c7ab10f47d7e62c06d0d1b8ad35268ce58573432b1f4a9515bbc9bca4428bba426a3ae8ef8695bae7a2a3629177fe00edafad675811c90959ccd7800e4ca1e22b16910170b9d697b25af45b9d2febbec6b57d550b7854b425fece239155f068c6873e314ed3c97a46f7a61c8b82af22191feda559b7e93483350652354f005a78dc62bea279a888b4a6eff708eeb4d93ffa0f5c6381a9f6570746387f0e116376e4625a01ba34d68d39b6b793565dddd357493e8d45c8e676026e93b26abcec1b4ebf467f3f069dbddd63f30b6be3b93525618ce903463ae5cd091c39263327b40b76e4be0403f6686b0ae74213a5208bfffc360d3de49253b85585b181133e55bb38aac6a"_hex; - r = false; // result = invalid + s = "75454a323922b8328629a47dd52adf1717c9b8ece75c1a7bc65fe7e5018cef325abd0c942b12f8f0f3b64bf0175c781b07e1a16bbf81c073e5d3c7143b49d430c8fc66e7c18d6bd3d09565eda928a4fc744c88f1f1ff1de3016a6bcc5400f592c85f4584fa87fb40dc633337b4766811d3ddb567f64f3b1fd0871aa06061e2ea50a6288d6e69173dfd09b982c3750fd07838d381c2613a27bd7701745959db044f8b42dfaa12369647ef1df6a42565266b04a5b558f1261ca8893694a4746184885d2f73041042b52f72c74a2152cb07d8737d9165758552dc14aa6c4c3cd461aa2853bfb2786f150e8e21d255b6da5e034e23ba79c78b5ad7db3e33674e579d42501c5f02ed34f75c7d2e2888bbc74194ab40fd18d34c65443c132e45308a6c7eae499e4f962929846669b00bcd3ad6933a5b3bd86dbeaf8390d64d8777f06d6b0878f3b651db53e8784dc56355ced53b96bc3bc11102516887f6863d1f7b7619739751f26f56cb9b48ae0efb8d5fcdf312df82601d4dec57ff4797b7a47e728658ccf53d95863e4c0ee3952df31ab44967aeddb5706a566384a2a1b4c9bd7a66983224df7125803b84fb6baaef4fd66ad2154a6a0f8b7efdda4b683eb5dc9b9f9ce7156d20f77f28455977d0474e8e2946fe7840e6b7b3bcb3a0e58505efea023f5b8b079696e7d7435d1fb54a211227313f1b5b35b6bcc2d2634528ebbf3d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5506,8 +14046,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c138f33d241e4e88846f66b4c8f6d27c89c08297b8acb8e23f6026b4857f1bba758f5c15f4266b8d66aec30a5a46b32839f8863b3e2a909ff37c97322ca4a9eaafb2124171b52dfd63465e147b8e32c99cee9a60672b70163e747a238402477dce31497b2339f638d5907e43e3b794ed8f1521490957a57cb9bc82c0b066c20c826237c205bd47d1e6ba57eb5e37364bb5fdcfa8155c8015ca06562f7f0c9882cbfcbfefbd2f5ccfd2f78c684a9bd76c659bcef3de3622995ba63913120be5e0ab72d16d11cc1ddbf23d28abbb8a5831bd0f00a8286122a117d55578e58e0da5b7dbfb48aad8ebdac7e8615ccb9c21a1d877dc84f1d89aabb0976f59d038b9657c636b762801f214953b0d0cd55ba1bedb4701c5e2c3872f364585bd675927a56a3a0fa0b962a7170f925ee921c9fbb9d0d8a19057337ae74940cb86fd3103b232314385cbb59011506f94c14d18850f13556cd7f03cafdf9229030963f325b15c701c60668e6a167f9b3256bca99e05f4f5c2c3dbff30f3ecd36d79bd0db54f"_hex; - r = false; // result = invalid + s = "5008268247ce3d20867195d5bfad5de40a4f82b0d26ea43e15b11d434fba76c778f410408f1390577f66c0884b8bcfdc569c97c9d977d3849249826d9d2d7c3d84b8a6ff7594801a276d033e04a0d16645d36d0777205d6846f0737691178642ea8152e98643ceefea9da1695b0ca092944c4e670551064cdf0100c4648ef8e665d61b5d2c5664c6cb146374b7b128ec1599215685ffdae24b1675cd922c5956a789be7611fd571d622abb0eee8eccca72dd2d26a1f5d15d1f931a1f75c92f2639069b43ca9a2343adc94010342f5a7d6f215663044a67b2e1279ce21fc3ba72d9c2c06410c26da815cfe00584e79b63b150d859c48dd1727d4b129815675f1f649afce9e0b53954ba0f380460e10348814073202ad4db8eed51592a0eddf4d9990d81c27813417fa88c7e293b5159ba82af497ff4f26bf9f6671296a2561f250043ef4d0d82b7166046dd61e4a9be9a1dbc03a3c0054b7da001421587d7636f36106ebef23c3694ad74cffc578f5fef1e95e15b27129e33750d3286d799afe31b3f9fd823d8d6f4d4a3f90426ae0ddcda42c30fa70025474b5de40c3a3d569f76fe3aa2136a3400c253b620a8fbffb5949b88c93c084da57295470a7813d1f0bf0ae31b93197423d7c7906fb798705a325d308b41e08522e9a0397e5e33a3b65e67c05fa580165b346cdb6b48e79209aecddd9190fc9999e259601a046dae88"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5517,8 +14057,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8c174bf6650026302423faa9b90c71e66c2e54e65ef77da93795f04dc8fe0cc05f992cf00c41486268252f52d17a4b5eeac356866162c031e55d3ba7d0ccce982fb42457aaa2a92aea50f9cede6c19fc0e1052a4dd85d8039bc3f96dc19d8f2faef835267b6d235c25feaef590c5035c2dcce1ceb6172b693a63d3ae5815f5972bba516a096bf45e006dcda300806eba09ebe7629a939800b7eba88e7f82467d4d65889ab65f8fd37ddb27e62bf4738748d9e429eeeb41bf2a4573baff6890cbec660fa0e1e0c38cfb8a1e086c432562fb14b28c74495689e356ebac1a701deb7328ea31d30227aa9ace477cf76ccc375519995788f90b41bc7f6fd4af812ddde49be65a2c7f9fa1108376701099ce79d640ca5ddf1d34634513a76eac0b3ae02d06a2195263d79e9dd6edfe9b5bc24819fd5ade71b1d1afc3f5302156b97bc3c4fd3386f0a9c00c449eb05b1d742c75f02ff4529ff1a0c0b34ce4cb91a5f8b700d9c38ce6402bbefbbbb3e158aae035074a6e0c91484ef8b65590e6870be30c"_hex; - r = false; // result = invalid + s = "94d74b06935f49505dc1415082a509a688d3e1c5157b6f0354e81fda3cd35c88a6997f58d1ab72d826281893c279010fe46a9136a64ce72593aa8a7de15cd579155fc015b68e59d3fe8606fdcf3fb27b0f22b1500fb4652fb567e69811c9eb2d86d9d327402dceb152d9dd00e170241881150149c32ef9fa2315b37a102a5a58793d620ee3234a20f73c1bfc8ba3bfe3573ed25f6b141cb770f2c8acf5db31796c962ef50785763eb7767b58f3f169a6a0aa24519078b0bc45d330678c0f79dbe295d912d22b909bf95300270fc8f0a7f9feba75972b331f4a3ee801ba4f2f92ee03f22f96297355905adb13486df33542d5dd138855a88d23ad41be43b66c87ba2d4f211a64c64310705434a5c39124b0265208b40eb3e870a7fe6085a10907b16e0f2fa5f890a64388788f27a04d752ab2761a6aac31e347f87caf7f8b14518e11bf9a619eafa172ddd1d557167ee24dbf0cb35d9adfee7f08e174a733c2ce047384f5c5c1110e8d770c199e79ec91566a4422aac604308b54e3128ac3a9005818d5146b43e58fb39aa8479bc5dfa2b3806ee4340c18fe12ec1844dee771ba2ce95dd7c0692bb5001290a339655b07b5150d3c22691649739a02685ffac6cf50a18f28345fe4ad54f3dd0a83129e570ecb79b6760b03fc66e232527b6aae5813f645fa68955589bbd32d3c1517e0cb04878473e13574ae06d4557eb500a3aa"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5528,8 +14068,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "39681cfed3cb5ce9fe0bf719a1e92aa3af1302f6b6d0c93cb22795e0ac581317796a79ffe29b5f88fd38b572cffd06fbd2426372efc6f2ec01b2267f8c225cb6c6d911c87e7dd756ca3828383eb5bd9c56d74261e62550c88e39e7642604529ba45c81c6adbbd4104788df8e00f04239e8d4c0b43ad15b497ec04d7cad30dc0082d586b1d88d121e5e5ec1396b207410a3bebbc065ea25b97ecad9bcb9594b749a6fa8f33dc11a64c48494201ea0efb73a203cf10ec68dc052bcb68d336e31535bb0f667001dc2da63358e37bd421fc88a3009c698230c057983968d61c31462363bd93c200ce4f5add74f20d877564e88c20982713da42a1b279caa845b486b090d5fe6c154800feb14e67498cf6d3176a707b2b1c82fc6773cf65befd64c9446a7b62482777b1c77c8dfc644798a3b21533c63e0fbd39e07b127b051ea2cd85b42c0592c27bd988781ef3a405dad25e9659d9ba5cf1b3c3110b59117c322491d55a9c93c8a45635b5b0d378addd082453a6d190b8fa0a89a59867d85dd4d07"_hex; - r = false; // result = invalid + s = "0da2b1e8ba435665ff1fb3594389f601801f9d32eecdd5225fbf25050e8f16dfb3b223816556afe6c3a4e62c4bc9ad5155a54c3adc57e165efefa1249ed83ce882b213861d333b677fc8cc65cc484959f783769c177373a31e46cb30dd302077da251a4766f98cb855f00874145a39c2699b5c783fd2e373f563dda7a874afc35f27b77f743eafb74f62033bb004185255c7daeaa6b5f4050c1de957ebd666b1e667ac4a6d564e3fe6053330b8d743b002caf662bb42cfbbb1fb574e723ce02f01cb58696caccb4def9cb9a058de3e227ef3d91eded6913adbdfdd4c9fd7da2b3665b09654fbbf0cda71f19969db6b7d540d3ef08178dff3601eb9de7c1e2991138de7283ac6eb718f79fdee5aec525199e7ad885cd2215fe39a48e4fa62c359ebe685f58f86492e7e0858c649dc24ec46fc8c1729021cfe1ca06cc6a729232697e146ee92e3083686fd7eb7477bd75e851ae12b33247cefa1311d3d063127f17fd021a99be76dd4bd8e3f8e0246a7bbc6bded7d3350568dc23ccf0ba58454760ba66c0654fa392819ca4590a9d80e396286e7d6f7316fab1a2eaa6d63a78f3cb082ad9d72486309b6eac7ce6df81d3f14b53f237890f5aa3b76d7dd61050cd428314cce66d1866f3b22713bcf9d3014e40a1dbd801bdcab5bcf7b39ca88e7b7fe319d7b6f4a40d543ead1d28712a263d364ae9105e2408c38048434658be327"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5539,8 +14079,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7206322956aec277538b8bf09edf980c88df3eb0dc0689f834581b94f801883b384ac4fc218bad411d44e49c03a6d0ab123a19a4f0c7a8e72092acaf5162b0e30a2927f53543b31fca0b0b3c1abe56268f442e6f856018622584205dd898e2f98766b0def32894a508cf7c824ecc26750082b80408cf7a3fb752172afd53afd6ffb1f0b96b9d0c705574eb0f1dc1f291ad5af8c5d1f539757e19e19ad600013bfd2d1fc8b668d0e56a138381389a7fbeee5a7ac363fb4ad95006e3b3e16a3b9abd450aa3f16db19facca9f45cfea2fd52034e7a1835f6e10d40be16e44a0ce5d798a8bb9451488f78edcd203455fa6dc1253505fa83140d610eab8cac65fdb2c669667a75bded33bbd4ded3b0691de5e30c0eed12e01e9c78e56fdfa485481fe671fed3cf558730acb382f24c1810c674e5459ffe449eb82840bde95fd2f23b8438b844ca019882778edcb7d5b6f4d2ba16c5ab439556accadd3029173604e5ba40373d491779a049d0106dec560e084ca942eb6293bd3d88a6b4627332a615f"_hex; - r = false; // result = invalid + s = "6ced519ee0b68a33d2446a4d50fdb46523696bcdf38abfb683af7c4ba4fa1c22d21c0a5a1d73728f861ec7f03833d1dc4512bc4fe1852a3c2a34884cd6fd92d4560e3bb5b3fb3e4bace8b2d71a1961f706392a48bcd8767a0439fecce05f755c4c5efa703946df474ade2780993fcd65b0b0d2d19ce5ef8f0e64858d3150c7f6c7320b2a601a91e84999cf9d43afbf8be384a4c47d2861f8c31fb8b879ee10fdd7b7de5e9fedb2d704d9d82596c3d5e4d478c8db5aa81a1fd2e4ce8f3f3c2be889bff6aab364dc4c0b04eb2b8c6d9a7b93b4cf98b7d2bf622ff3c21c2f0a1f34f2ca41360df495b812f8bc16751292b27a1cba789d92ac6b3041e57bcd5c4315316e38ca82177a9557254ff5deb19290cd1a937dda7bce8e809942cc0491aaac7a03d0ad634c8eb4c54e0574bff04b6a045f2899b1d033653844d25391ab9623ed2ee7a4800c6f49a48c15ae98276cff43275a46c97f919c88ae1769bbdae9c57ce71e458873fa6d15748ab91e51b632c337d724b299b46e909df590d3793a108063bff6a041002943781e040ae6148bf762d31a8588578cf0976664dcebe992fca3248163c3f3721d9c1264870fcb4c437bc788ead1a9dcb6c3f405cf7ad53d65aec12bbf0aafd81c5cfbc75e0a2c700bc23abc377c5180da921721755e86bac03c230eb3897d29f4b84258be26a82ac9ca9839ee6c5732400aac79ec7d60f0"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5550,8 +14090,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2130fc5f94a8a359b90ba546795e788328f09c45903823452fd44c5a0703033c7ceaa0bd956c20b12eccc052c2f535400e0f2d0e90aa0fd1066e400d6e81ee19fc2b7827b48537129b54938d324680966cb39850f755b71d967b50fd7d699ce3fe956a150c17088a4d29740905d4d1a6b5e013c4450302bb3c125e90748c3eca09e39d7c6e1da6d65ad02328865e2c0efc0eda5de61153ae757b33965a95da80e23f531286a3288fd61694298e68dd21dac3816aa0b80c08aa57f16cc24c641164c67bd98b2c5a895926e1025d3d699ab7cb9e4f0b43e31f68bbe2fbd3655a705b28d4266807e236c4fecac9ea470dc9aa55690e428a1b353696314e5c62d9e5895ede07b7c584f65d63935865211fbdd78cd7b0090bfc169dd000342d14b068c6adb65068cf708c4e3c3be72302bbff056087fed642480b9bf2064fb3f0f0356b7875025a4641fe5af22b98432dd708872412144cc9706dea53d9d8f96ee55ed821715124bc824b408092e5eec66eb574f069be3b5d88a8f152ab73fd160b4d"_hex; - r = false; // result = invalid + s = "4163b3d98c361bde5b71cb4233ff0420e8ea4d455720172b2ec922c1d68d1f381a1fd17978ba6301d0bc2495c892e351f8c86436b18eab7787ce83b1a7516e9550316456c8606637728864b5fa05dfdd4bf84561f876dea924a07f1028e646b47e48c3d2f322c5d83c11e03c378163b07f9ac549ab688f4f2345e3d68e0bad14c2df6abbe1f11ede033ea10bd3c17b8c4c0d38c665af84cc29c3597c13e1f0c52ee3566b5e70bc0ac0e5850ed353c2a4a467414615fd5c26a078c91fd3acd655e3175fa03deb51ec34f85c9654e700cbd23a69bd37d10fc4901743d363d7eac31f7056e896b1dfde9c1d2d61c6c9fdc268ef27c6c346da3c6d141732dd0ae0ae97ff9bdb12b0a809caf6193b49e7145a09be329a5e0e7cfa664db4785d7b24f71d5030d10d3ad87ca070582b2c09b54df138e5ab08902e339b9d9ce615d62be60001a71645e25d855151cd012c56c99cb2fc11da299cfb2e72a3b7ca2f0c2b661431983f697e29c660083617145c054c142b3fa9d76ac9431ea376f19f6c4c54e0ccb7be1a30aa4fb2f7335ab63c63c50df19b607d96f1f0b75911ec7842acc682818e9c61316630e03a15cfcdbbfd6b23c3924dff6dc0c51822729627212f26bdb8f6a888c48ce9c9ee550e059d650e2f9bf6d310fb4b97d0acb4058e87804ba7dc4779aea3964d8807ad445f59986c8e8e96da93424fd9dae4d0c2e58eab01"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5561,8 +14101,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "575ef9ef6335f748555a176d35ef3edd9428abcc6c00850723b926fd84c0937361b662320866f555f6e1062e1844aed72754da4f50b1c960b8522ac932cb263c40d301d232dcda65ced16d0e8272c2a23d2130db57cc2d39b0b1fa03ba4c7fbf03c6dcce9b474583538f48075793c26df725bb88113738e674f7fb4490ca61e56b350650e8039beb39a97b6b55b5693cb7f4106a26ceba9322ff889b0fccb2e35b8309a25bd91bf0b8f5c2459cf81bd9e8c2ded35a9e87ef701e26d82207348624aa596e4e1847b111c518d881da598e1ab6e635af91c802ab35f5cda75833217517e84159bbed67bba55f51d62dac8d14c2f9e1a8d1b1649e367ebe7611af0331424ed6784a5497f80ba4617a580270a69cb2ce8b0f63a73d5ab34c8d7e3fa966f465788efe41f57a99914ebd708922d570d1334a81bd6812882f0a3b3f41f88a25bd48de158c4da84c784235593c00280cce586b5d388e4ccf92ffcbbf69dccc8171a7b4bbc8d68d1f00d8628b725f08c194fa18f064ecd2f3c1bfea173cd1"_hex; - r = false; // result = invalid + s = "0d7bfc61f0bbfc10af0d59bdb30c21477cc2150e8566ee1ccb8c365930169b34178d337241069d3fe841f4f702f1c96c809edc7010e594b44703d5b744e9f3dde9f1fbcbffbe707032a03334abd4bf5a36bd0a4c9b807617ee3eb6280ace1065e192e0e0318113002408b3073f6a9287d129d3ac993e89ed183942df9154f822aee43fe91ef86fd6d59103593ec777d6941c3ebf4fdbc36b129646eb9b9cefdad52b4d4b012c55fe845d7a2e20b00bed511c88790d6f471d374c8f926a3c659dce267007bd10bce536fd1d5a9ec3aae114422f625c0a6f8c70c3a387196491632522c1ff83f5b18f29d5b9000b77d8a3a7d9013c8aa65e868c618b825ed4b0d939e315223b0f66d3567c3e69d16d47cd58c0972dcba36e3f57658adf19171495c04c88d5475a236e648c4c7873d8118077f34b92eb6b5aaab69c3d003b148d1e003a10e4897e7a57f0d4b4d52d7bf002ba87e36693bc599998920b6bbd8e597ec63afb1cff74c95dce097d5bc72abe616e8de1df1efabce1027829fcebb28d985efa6424a8b5715ac6b6bd12426ff0c5034223c55f32cd65df4b8008136080860fc22189f3b59eb9706213386ff53ad96ce872bb05582b4f4014dfd1e3514357d5a93467d2dd5312023a16b3ef309b12b1e17a3d3d87d2706989755075ea03dd20f61d73ab8524a4e5e51ffd7a72aeb7424f9a976bcbd8abe1d8755d33e4c961"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5572,8 +14112,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a947601ade4bdd5adbb13779e2d0893eef5de17b6f217deaa8e005fcb9a5863e1e84d1258889dbda768ec247848e7c4c8bccd8fa10a322d05fad461ead9b51180070e5b263c5ca4bf471fe2711ca4d34312cc3741148ce2a0ae9ee7735984533606aee498481281cfc398f852ed82020e0c9f5036b38b31f9812f9bfee954411d7db1653c19194710b42d726ea0844022a2e0b5eda0bc205dd94e271883bf91458bcacd093fc40546bb71ab2ef72073e278d46baad57f744b4b31b100288ad6e25fe8a582263428f83b92646579d18438eadd89e59baa4de8da0d91fae6c3667be486fb7bd5891808930ed3c0f6b4d7a6b5e8898215ab479769f040380ed6636751dd19ba27c8284bc8661d7ab86c5242f6b012c48491966925c3f780b35a0286e1b389bfc134a60969d3345b4ce1d0bc23885fbb3883da50d1b470e1bca3e7df62e5872d7855072be216faa971684d632135858303c6de156dc89be01548ed69967b3265d208a62f5887c46e3b395847f8177debf3c572ef212dbabb8573799"_hex; - r = false; // result = invalid + s = "448a1ebbcce2c59b05ef75dc64c3d33d57600bb8842a59e548d671e9114d0885d6aa3612e53317e5fe0c3f5f36e7cf8e49f1c2215885531cadb5a4802f6e29de7927270add15790b1975088a885d581635e52f8966c36116559f5bbee9f2d5f94ddcf77b1c672929a204f5ca25d55baa1a63d3f90e08c9d95ffb31b6e32fccc7b3d0231bf7acb8fb037d20938d2f4e8154a491ad25282fd6b3d5d0b32a3a57f9f2485a5a13dfabe9a9f795338be054259f739cbd4f60b69483bc2a9644c1ace175ec7b4a71bb283083500678dc7d539e8bec1a3c0e16e8e51283c614b7d012c463433796007e8f0850fd69fd8794866747140ba3a0291c841413c4ae7b0a179ac3dd83b15be031fbb92101ff682f877f9ac65b0810392eb1147e7342b1607ef6d4f158b25683f391fb6430ab8e5d9fac2165bcb346f423dcd56765daa95fbc508d61067a11484917023857513a3a2271ca47ccf5e82443474a5d87971faff6778935653a43276aba1a172494038328af88af483c96b96e337e905a850f26b13fc428da443640c1400d6b5bd0cf2a7bfa5081d641e64bfb76c2dff4cd215f858b56c09b224cd3e0bbf15a5c7d9be1072165aaebfc420751fa5518da885037be98e38fda8e60b62ff7082e64ba7d9c69f90b92b6f42c00fc71d81910f25a4c9d22010d63a5857f3f6e54570a3bb10a046841ea1f7370c0f25edb74db870849ab9f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5583,8 +14123,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4c2912d0f4de569d7db9cc1a407a01874ab8e0bba81f38c370ba55920f64b41c21e6a3b67e5e0271f8d9400374f11396388966e2434aa0ebd4723042c92a876b635b8cfdab85dd25fba5f88236fff2f7caf23602c479c95b5ea6cd3e4f653cb3639e75ac1cb39d268a035e744453ce706caf3f53eafd89ec676baf74f2e6c9cf8ea4c288ddb1198f15a77ce07e7335671168eb1cbd8c607087dbb17b263c9ef83e650ce9a48ef2fb5fd37a13aab9e8239bae823c048cff16a7e1897f5f7e06cd685a829a85859695fe6956179cacdce7181d045419e69903f987b35acdad97a7dd2e7713060c67b8f447a02afc218484cb1948071eb64e77cc4e48d0bfc635340cedda460a1201b3eddec7ae5a008aada21bed3060fb17c8028eb2bb767d1d4c948bb5ff9e9a2192256e59ce48241f5dce29dde5ab2de0ba8240a992239b7a2a546ec66ef7ae549c8a15fca6a70cc1474c90945795e876d609d5bbed72b8f001673fd53b9540be4d187a484ed33506464f402160bb1f18a3dcdd47582cc74488"_hex; - r = false; // result = invalid + s = "5bfc3c6e65c54b853e1b8217d38f4925dfa294a457427353a753ee83c6330a964c7c7868207d5260d77f777692ecde533ef74bca0e6546a925b193fd644bde8b5b12a45bf7cb5f5e42e19afa32a882ec7b11e8ca4f8c396eacc8a3696bfd0c672dd89450af0c6b0dda6c9a35dc7b521cf93a9f407b348ebeb3dc0497df2675bb0f62ebe93949795df9505560d41158739abe24a4c28aacc3a3bcb8a9659b45bf91d4302fa073d57c2c033688520bad6dc2570f1c2c8ae923e05af66357311e7a3068b56162810bb2161e806ae8621d340ae4dd40cb86b56375fb11aaa2f2319e6199e0f4a23985e854507a3132aad8087b0f1017acc5dc8772fd67cf35b7e255402d705c41b6ef6890b7e8da671417695c824a3b48c00991096c89e5ffd7a055036f2db292aede696d43f7ea9085727c984eb2f3db6630973dfe8c2180610620a3a75f7194a64cd64cb40998841d0452f9a163c9fcc99c2ccbf1085396c454fd50c16999be554c2d6db0df213729d62f55ffe5199fcdb369677072b8b3a87e13cba4c6b3833338448251d01ffd65480d01b63e0108ead82210e7de2cedaba809e88183b21cc79fd791b7fa4a3e7f711b205a0206825b9560f36846452a12e78b8cba265a1a794397dc034ce8deb7377ed541f03a0b28a560ad5c2e00c4a735ba5b5a47342c26ba3b985412e4c1da89ee685841b53f573050a5e8f7dd110d5233"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5594,8 +14134,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "357ed432befdd0d673605a705dad0d8d2f100da229e979b1ffac404596d777269d9469dc1b9a4a389015faeb44639d2962a635c3aba4ecd7f38870980e87b2af9c7afcddf2fd379160cd415f261215a5d46ce5c0c9512f543a8b1ed961d2a75415c9f32db7892f1188bba23c6d5f2fb40aaf4fbb003ae6edb74cd0844f7461b3ee029029595b6b8d299e392d4763d3f6b31b222bac5777f87bf9e0beba302ee87da8be3dc5a0434b8482c165087d60532c52c811fe6389c7c2728cba5912d26d8089635fb01cb8d78aa5cb41cd274309d97cc10dc2a43461cf951647b110a65bf47b8c137a8363455155332287867e4c0765ce691cbb750e5e141aa6fe61fcf4e4b707420238e05d955e5dce215168b4d1742dff70ee87d4e24bc0fd9b73835d8cb359a28040935b4c64907a7623d11118e2997fb2282cfc73b2fa27d6e58ba9f5b317f35a14363c78f82466d7c9cfb8b07210289817cef53ad672f10892b0458f0004b68e74796bcd98e51f2e2635d494c615f6f087a293ea4d225b3cf4b0d6"_hex; - r = false; // result = invalid + s = "84138d02ec624fbfacde076dc028d434e7077b366b00a0b19964a4eb01f637840b31e555098016f9818029eef0995e7b76e0feb3496cfffd2466fbe086084d0c65155d1247d06d46452b1ceb99161d71b16882d00b032ab2ace64155f986834df602dff09c6c99b3aa836c086c786561f69f780049e27f61ff7ad762986fbef4390c76799df06f779bd41172fba471a489500648b36e6a3b03c4c2eff6de1c520a9434336842f83f605d19afac8a907dc69d86393512bc79a986bbce4824a7807b2b8eda577fc29d4d53f30dc0eb91b57efc4c49f65e6b13a22e1a7ec36820c64ac3e586e449ce800ce62ebdec7a448452c921dd9898fe0a4ed4dd4e9d52716b8d605c300a9e57a2327d62735ef699e077f3130cd6dad2f77dd7430d434bce6afae95aa995d735abdc189d346db5127f4714eac6c7d6d51c1fedf4e4458263f29e30e207ab67c94d71956a323358a899603aa23d73761fc51d9864dcc3afd28994c1c80ce89bc2ee3e2a31d748026c081a7fab9ddc4b4947f7c8d655b91473d17c016b0ee10d4eb971dcff2c530ebfa8bb6c01cecc37f0e544f850a879285761a704d7e4133a4ffed5797529008f4b9057cabbbdc0ed6c611371f831b1ccf86a6d2ac965af731e45fcf5b24401ecc1085b89183a1c981b9417ca2cf2772faab796a16bd555e3a31d7ab90093b18ae3683e481079dae84c32e17e790d0c9a5a4d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5605,8 +14145,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "5c87e321dbed16d59c49867ca35cbeed697be4f279027879604f1686dfe246dead0694eec5b2f516702b36702d7b11297075b489d9087bcbc0eb1fe5e756b5824a13d06bcf90d298592ddb6e13ef362ae9eecf0c36380159ec511abf3d071ca89b05a56d709c3350de5be1926007ab5830098cf61e677bb4c9d2b79ddf11d9115905bd862b4cd708a069c79cd276b73aefa05f920ffd6a8fb778131ffe4c8a5ca2d81256d43f60e123564bebf9bf14d04cb6d3109865f6f44b21a8896c294c50f62ece38798ebed8276ea7e40e1d1fac611cb511295c03199491af3e0c3d8baccd4d30b2c9d4d47067073f074f29c079f239871dd62e16f53352914d89cd4c126d0e38370f42a902f007fca4c1557b2d6b420936d1beb484c28e392b4502bac5cc5441cbb59daa3bbde3644836682a45ebf4d683f11bd12082b4e46610847cbc42eda82b80a20c4d847963fbddf016232a6c7bf12409108eb395f66c6335fcb6d1b15f54f825f15c7b2cdd2afcb797c129140626e32c8031caaa007acdbec381"_hex; - r = false; // result = invalid + s = "54721252b016375d05f67dbb8b416f1919eb9621d7f82b3e0135221bc0d33cecb4d7b817fe396a534cc84064971928cf42b2485a70a3a3c4555d1ddd9656978f6307e999245a581ebffb8a9d09e3e617a02b0fbe3a80b83e0b1a8b24d79fb84745cf24d1568a32d4c7c6f241107a42fed3f44b1976fd356ff1b853eacb96dbd141d35eb46943a6227973cf79a0fc30b379e4fc3f5eb9a542783439b7722bca9247c4a16b4542bb236c1e6074715d8d4f5ba02014c646e917a57d2691a983f1108b090f6361fc9ab614e8e9f8b0ee4823157fed42fac7f70fbaac46dc3e5cfdf28b9abbcdb76f32e6b67925700cf1d5c907c292fc873e196faa2fc44aa41b03b1da7f5f321e7b36f87e219f2565f1ffd6dc96cd99d908d219fb9224aad8968bfd250b9c8ebaaf4ae951acb3edafea4a4930a959320af67e01a97cc301554bb99e35faaa4f94ad99545e15d078e22da8f8d5a4881cc37ce4d97bf9914af2ceee60071388974f00423973a0f4bfe61f6ae22b811d02d830e44553218008845f1f0fece36ca753d4bf838498f254255a9354f99756ca7681994ab16f050c2591cbcd36bac4022bc7aba6c7e2fb6c9811993caf107475e948320faffefb78a4897f732379ec1357e9be89fb5bdd229a1b19ef7f85ca9187873103e59dd4ec396ae21568616baa5b263b09fdc1a6543812413d99a3e55d6cbdbb7a5ee1f501cac8e572"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5616,8 +14156,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "5e5a6bc0a9b6f5beb342a99156da240d4ada680d83939e62a8f9d5fc19649e9c381ced323c26e642d034b67c9b01f2378ba0c17a853d9c2d73d087ff3b011959f02c2fdfc880d5c82179da86277fbc23a84ebd397fe22f775214ffb8d38359fa141758ff4b84836541dfc5c4e19337147935cdbc7dcf52c91f647ff6e7ceb82f1601e4eef9b2f799b57d0c1e3bffb63bdd6467b9e385db30f56b46ac06f03cfec3cf6805a0539029080b3b95f7efbbb3728d2cac0b98bc61bee10b4a890b818fb0989083ad828f87fb79813199c9de7af666291d153406b8d09bba99ec7675cb93ccbdc2a62b3e89a6b01ff66fd69ed667515f46388dc57da04c022f12ceb2093f755e32281ec105011ce7179243f5c399c219192be4667826d009fb38c7cb2f212d8ca046c00deab4dd9c3c48d4935a7736a835c2a4aec58a240cc66b50df20f21f4987641d5c6ba78799eb792c7973cb01e963c2865a76c1121bbc34c9ae40e55694f56b196429fbe0b89628b3a08ac7289a55b365e1402fb61ab96410fed2"_hex; - r = false; // result = invalid + s = "4dab27ec39bcc026136cf8b7d1b06dfc376c23ce6d7fbdc7a0921e4a40a34609ccf1c42ac2847a67df4bd945fcaed5542fc1ba47a1f81ae162e8a0db210d908b8d69bfa5ff86e950af60992fc5831aa41b9ea2b90774c58ff557b10f9d1fd9d8eab3031a59874a641c5732ad6d3693c0229c1fc0269b5c14e0d993d5f640a8d80785aa9d83c4b0669ea35cd17818c6310d10c7ec7623e09929da731734947f37d4f7d0bb403ebdf6a1a40f25be9d00b01bb2a217140b2d3244b217da45609a709c2744d866834af754aaf2dd032b6a04a844bafe3307a98ef17142b3b685e53af71bd9a361a28bd3a5ee6d38d68276973d40c3eef1316289955443552012cc104f5ef05aa5eeae63de02d02f08269800e0cf2bcff0f34f14d8cb32e4b1e8f639d9ef75c94e0e12764f90da76bc9bac7b9b060319aee4a1a9d38face5ad431982d7a496df3bac1cfb00edf0a10d31f1883a8b1fb81183c7e2a07afa1b3440fc36aecd274ead4e971482d8271d033f81f1c03d279da363dc9c554ee3651ca60db1d1d22fa6e78eeced1ee1c9a665c1a0716280e74aaa594f3d907e4ea2458344650493b75a710c9680a38b1be19d2063d2efe0f252a6c62af8b26f51b5f81017dbc53e32a6d157f2b6ddfa8d28c3d335ea4d48f84d1751e2e0f002379885cff728c4f2171b1c31233e2df4b6ae8a31b21154bd0a38d838505e0825f403f380ced2"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5627,8 +14167,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b69fe03530859d30589af21cb06ef78702dd9778aeae7062204740b36b79257951bd30e4aff739dc8118a5a97961b68304ab277fbb0e0abdd7bd53b7782812ed2bcd26fd60521bfc17e543ecbd485f9b7da6da75fa558ced68cb49d819561339ddd271d2f484694d83ffbb707e731fc9972ff1c132ff648451ecf6fa2525c3ab696a635c3df648de67344f8e6eafda31d94dc32aff88537374b0562d887f437f59da19e18464bd06659785cb99f4f979be6e59b0a3a0a336019af8d324fb3889c40aff31810fe8c6f5f3d61b79238ecf5a62505cab45c18f8e0f52f18a67085b8dadfb1076de0c48631f3d200abf42c07581b3e6c670d71da5f407c7e3e31a7d46209f95a2f14aa8c595bce7e6a371405ab886874ce8740259dcff6377b73634eab9f50e83ce6629faf96c470bcac6cedbf991ca7eaf15c95167cf086303b43a88c56da11983584fdff05f6fafb3343ad4e32c534a9ca4b59f79e80f2ad191855703454f1353989efd6c075627408b61cd7c4b804c8815911c3a6d2976cf35c0"_hex; - r = false; // result = invalid + s = "586efa6abc5b3add422af45e584698096b2d26386f93f46067a3065a671444668f47a9a43a499b0f511091c3bd31c0bcc94ada4189ad0ba51cdcf9b81c5eabfdf201512d90a86f7b73a77a9de28ef052fe1860fda5762bae36340465119506bc9a82342bc5f74d146dfeda63483e074b1feae34beb9caff8dfa6304b2da2f47f538d0f2993dc8bc05e3e52c49935175667f63ae2a487ca3dae6b0f06554ad127afd16923e8ca8aa333fc8906c3d1470319966036203170f597404d5f4d3dc41a14844655305af39bfa729379ef872a34968948b0b3a856b4926b4aa3f8cddbf7532246850602fcb400fd672bbe56c4f7c560f467657660fb75880c9803380815a53f6c96cc029d623b67b3d7baec8d3d2cc653aaf809618eb3ae8f8744b64ee2c6aa58dacbb8736ef15edf66c3a85e916d47a8216e1a41e1a5e64dcad95f3e902818035bb32cc76c973d10423209cb8cf349737d343b36844d938fa02fb0be8a8acf592bc59236e7cbe91de4022bbd3c50f81e1d36d6019587a6dd2ed44808421227f0f51264f791ac4290f0ebd8961d9de0d93fbd0934bb44644bbf644ffceda0614cbca6ecc00d001518d0711c677abb906d29fda4adaa5bab997a3933eaac2b62eb19bf94c5cc08267e860dee87731a4e931948322ce2053469bb6174813921b3b2af5f49c4b095c747b544558a78bf4d300b109b995064fe7e8708a41e92"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5638,8 +14178,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "589f370ab31921a95b6bf0220d0bda22ded0719e0979e42f205b2ef3480bca5f09a75123350edb164d1144136cf15c0ced65f2be5356b7f74b8c0595a4b14338c83e501aaaf9192fd80b987d5cf6a0920a96ec8c535edf5c114daacc7275cb6e6d1a224a43aef54978c78a5c91374ab5f60e089d8e80e540134c4e7ca936bdacc5a67e21c91af79ff05fecea9c07e8926f8d1a82478f4da3facf8f7f83e27f0907abb4ab1b82ba451a39837d508b2c1402c64e0455c4fb8b4f97905f2e168bf5eb0f1ac62d205db2f0739130908b05c6f2fbe853df8ff40aedce176114fc1787bdc45cc2426f7db44716b604623a856e1907fcd788d17073abfd3b7d68f80747785d896328158e5c597b03e312f0890968d482fa8cba3ba0dffdf05a71f872410db469d43c9d7bb9e4429e57e56efd9ce3263eb0d86e032480c3101be930f1d313eb605a694b6744395d1b9fc21cb5e7dda9ce05a87dac83d7b8ac5291ac987dcfba1b1b5d237cbdfb65b573db9cb4281469b1cd267c40c867750a1cd5c74ec6"_hex; - r = false; // result = invalid + s = "111a1d8bbff55dfbb1dc7d6c21826bbb499ba6437033eb5de8b01454285e2b30576d57ef703c9a1e0082651f34e6f563c5a08c9ff54204747daf9086d9819977b554f8057a093ebfb4896035a30fb15c8d5fef079521e1a79cc102b57a0af272416a2cfff0bba33d686bb1581aa0cd0f874c9cd09fe3c974a622d56c2ea2bd4cc3b346b63e3ab0398abecb88cc033df27e8c1e744cc365648d6d76c7592c628cc3e3b65ae564ed8258d35eef26adebc1f38baa32a2747191d0a604054995a109df7134b6129836fcd4ab98da84384ca06d8450614271241b7681e390ed5d205314b15e194e2061ea25b08e2a34d727cfc0f8048eaa47a44f9751a120c4cd26c904b6da8a37862fc6ef46cdcb77d6d4a0ad5c24e4e5499a7e787ce7fffaafb6d5a2b5e0b6eb444b5ece5ad396d3e68325b07fada0951f1636e09b570f703bda4dfb0b67c828b2f38bf5fc508c319c78ec04bb9034f2952224c1a5ca7b453a50385506f60a6f47e9cebab0aebcf83ef648217f8e59587db6f7299ad898cd1cef7ca0c98fc384855954f02d8855749bcf61da6badfb234c3539e9ce08fc11ac464dcdfc951e9034c2160f5614b10d1a7871e61f0a5b286fcedbbb4b5fcd149b74e0dc7b057b86214985f058f328947cb011a0935d98147af9a074d2f5beffd3e790994562358e4ced5e4848b1bf9ae48eb3171247205cbd73aefaff4cfc5ef4d7f8"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5649,8 +14189,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "9398d3106cb77d329abf72abdea2bc68e64a35faaef9e32ba9612e43322f6252bbca89915cd5e529e8eb976ce97e0f3e620cf3e8ee84d92fea7882d90ce02e24bd7f3997ca7bc2d2d615a183a5ef4777376668068f6cee91e72d6a5d714188c1e02196fe6cdc65681c07e1c92c55c2bc56caa074953612db3d6a401d5754e32e79c6b773e0404105dc19a125f41d819623854467e5192c537f9c6bbefa0b7fad645955ab95ce487f1337095647ab728fbe1ba21cc6164dd41c7707def39713a09e945cb67882d0f60231d190e6b872d81b80caa1b36fccab7bf8bf4e7c88a05c5b41933dafcf3d44e60bebaaf8fc7f63f88b970c2a66454bdafe41760f1395eea1e9c43012f1ba6dced5695e2229c2e1a8e77fb8339920029a8b9b389ab32028acba61a4763421bc705a0e4e674e6ecae2f92f65d14144731badcccf6dfd2b545ada88721f2357e3c224ba12e420b82eb9e455c833031938135fa71d2607e204e3fa78e6bbbfcb3f633bedbf076509e1bab749c6853faea658e39652b8cecaf8"_hex; - r = false; // result = invalid + s = "5f11ebd0ae2f2c3ae7df9885b7021a5278d7a432c3615709ea757176c3bd32c81173f85195559340aafafbc53497ff6c520d4346d810f8fc8c1a14cde76f1c2e9a26c28329f629a62f643b832018df3335862d804cce7f5dc4357762a5ae757df42f37729627e943aaa7d704ddc17be2eee6db5488b7915bb508b391e9e2a305438dd3a321f131b90746eb74b8b658d9844a494e2c5fd4aab0669cd3b6ae710b041cba9892f3e04dac5df4c8b52f445e0af6faab4bed91e7a4c17e4f0188f494e9228ab8d6a750b3a50dbc00cfca3a78f465c104cd5d959e699436ef6cf87fa9685db106d97b2524dc73f4c2cd9c3482e98ac0d4c503ec803edd06a29b56511f514726f49789db4c87ec490c6c6d44c15c3f90bb0ffd8f2ddce006c76b415d7004e9dd103e588e403596def5e2cac3da83f51e2787ee1d7427b5862d9753e257cabf63982441fdc254ee07c7cdd545632aeda72173372656d66c3a3ce026c13fd172118e6d1d31030ca19e3fbdca772ad0a9d140af83b5ab983264c26a7a7874794fe9544d7446819ab7294e66c753718d48e668a0ce745cb5e06a3ad1a6ba2e5551e0f9cdfb4d0b28a6e522f3285ee866d420b48039ff871d5c2f41159e3ac7d41d93d99192416a6f6c2e0bc0d948c55807bb3a6e9de590728b1e350f03ab8414d0a7464d851105cdd7bf40f8229d8aeab898d1c58010b4b6438b8d902f20bf"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5660,8 +14200,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b089a7ba334bec3cd96ec5c28cc8179dc54933a443ceb64b087a55363d0553da24b37647820f3ce8b530c3b1601f7b1976c2cfbf5b4ec2797896c52264474feb1711c3efdd883fbaf35e5f3f22ec02ae5aea2625fcee030bbb3eb08cd423457b8f92125224a7ca0fe4fa10748769ea6060b5085722efd14399c55b3197668b1b2282476b845f4c1dad4dc94c265e40cba7ff2fe8bce5c5b4e51b274d49654bb087e3abef3f45879b28765e666b7be4136d0cee5b3d2c859056e55b1846fb3199bf7dc209e603fc2c5c5420756f5298490a7e2747f283b44564d7dd1b0829ff74b894517aec399ae18e20a0f13ac96578477513a61611e25a024f8344ff83626f68c62a16a15dbfeddc060c2db00a024bc3c02d62bbc614ecce1118d88853feeee755f9e28c2c943daf7e237e524bef4f86ac761a5d9eeea47f05a9a16cdae78a59acca4729e7720db6396563cf3ab9456058fac2aa05e7c5ae484a6a1e8d9b5461046d944d8d34b42b9bf35f068994cef3b477de9685b9365cbc7b4facccf55a"_hex; - r = false; // result = invalid + s = "23c660db87eac03d9eaf30d2adee5f91aa18792b29b92808f25065366861e0624d61debb1ddcab9835bb6825b238045f91360ed127c73570c32ce5373dc771c1ba7cd0b9897458a409e1ee72c7a987cf172eaa55ac60987aa7adf3872cf54bbbcbccbbc9aaeddfd6f1d4cd53fe602723f5251878812f8b173c2ca28838aee554e6c7938560493fa621fc36f73104eb4add11b8eb179322fe76bb48d6c96b3815c02300587f14e87287e5beea17f20c90bef43f8fe38eb62ac3dde00148ac78a950aadcd5928ce708c57603b9f60a496458ad6ffda998773515a2816fcaaf404a89961103e40ca516206700f3a6c22b9dbfdb3efbf484e1c117fc4b2c365e4d38b58aa56d9935ad78fc58b2ffcb1be5ce9233cd0cbb0e74c062a4ee525bc1dbf8f7b918d95ac4181c33d83a4d4f8ca41c4b305c0096d3f65e8d01ebec9ade2146b5080c2e7c88a50549421508cad57a032d946fb98a2611d26a177ca09233719687b59d8037fdad815e2fd86dc1c649fc44422a37fa1bc13699e8e72a3ca77cdaef52b28f7575e020d708ba6e61f0a942f555408ecce91d6e26e9ddb157b57a2c87dbb46e55cda3a38a4be4a8bf61d92c5fac0e8ea7f3fdc1939c3b5c7771c18290b123a09fcc74e8f185a86d34433a0142b6c988eb2f822da2aa3d4b89d713cb8b834d50ebda36ccf8c98cbafd09cab2808235cc50844d6f337eb2a770dbe556"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5671,8 +14211,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4a8db880aec3d9cf1e3b778b4f1616e1b16ab80ad3410eb847f4319d35b5ed5b63ea0f96260434e5281f6242807f1e776a9a5f6dffbd65c8de10b8ba7addd44289e30b46ff327f7db6c34b09250c22a1ff96044942bb029dcb2ad0022117aeec3c0fe89421e9a873d049e3f1f5884f3f1056974f2df6351960fa5090aedf544bcef4d59dedd3ea170c6bddf6bd5558d8d2ba5212fae3138406a112d0261128284c05178dbed5a25b589d3f1bf90e28ba9ce363f53605016248a7cce838f7ca2f20fe43298637de5327a9c67eb0aa10e6e92c0fe3f55fb299caf302ba1e87c1a3c50142a27947028f60b9baa272f662f443d78ae446f1aadbba4099496c8ed49d9b097d67ba2babe41b62f0feb8a11261f5c4bc86cd9a55baf5b83154116c1f344cb71f9d2d7ff6a8072ff5a9ba0d6e1817a798693be738f9c9b0563e40d7c8737f0f38c73229d00b57be895a75e2c1e5708d39d4a9447de6412be8d5983f5c1bec5a67f941e844c2ab8da51628edd6a03a8d2d9f5bce86a441b5981f7e6c0946"_hex; - r = false; // result = invalid + s = "44649631d458bcfee01ebdc6f050f8390c1ce7ad879985ca64dc112a858b58b1f5df4bb7f0a027ed8514262a4e2a32a384b13f9fc6bf793ae12b78f99dbd58ca514c259968e8c5cd8dc7a3b652664aa30d59c20c3859269d3bcc18f907d51c198abb0283cd9b75eff0657c00bce629b42756ce3267e8cca3034a0267116c367119749ed162681b0452886f47232061fa8348b1e4dc804814065219a8c81ada9ddd1667f067cc0c590ce69e291ef9aa4bbb303d46294518210aeafa2130864f21086dd1ab34663ebcd6bccbdc9faa364d4ff605b66132d5a4da566f7bc3b92227ce3539b79066d4a6a7fabc19c88075b9771027fd97a41156179b83bdd4e6b754557c7e64ab6c6a92756107d5dc21b9dbbd548c2a4169dcaae19a55862a7c331d8a7e8b9a508e5e2477ace5e2bcbcc54ea7279f6988a054d414e974ac3b28d0d842606b50a5034cc6830273c7027b992d9496323c41e99568b42dfc79298e0b82371c285b6460a6c4c4d9c646f9c23e44fd7a4dbc98bf61591c06a91557703db0cc3b1e5538641e376eec952a45f235a1e7d69544e16f03bd8c142d6a6869adf29e90f5336690a87afceb6e6d348d891e0ead24222ce77f617d106c0952ab211ed81fedef3ef0c9c20242b4699105ab8ee6dee83c71a6514b702f606386114b3d90d29b33850d753d77fb76cb70d8ff8240622f3db367a735a3e7c3c8421e691a"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5682,8 +14222,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "33e76286146ec82e95494f798a413f2569722f1dfdbba39e7daca5d654fd9bed5b25272fd3083d493ccb228b9429f672f5f6aecaccc3b6b66e6cfe2748c55c772c7becd12844369fa7283a95aaefc7b7e6b444ef9ea0151655bbd358ba6a42a4b2b9f9c8ee8dd805724bd8fa4d29e322d56e997ee1dced90e10b80a4e2d007985214be77a1807935b75a2df81b9c87b177515bce12722b1ed2ba8295df7342a707fc02f4ac1b17b9413a1f61015c4ba998ae75fda119f20aac84e921bc5d2232f7bc9c6eb29d8de3c57f4bd62cf73fc20fb6759db4f9c47988155bf73d4102bd78b09cb88905dd0be0b8e613f076cab8cf89711670a1ccac6c1b9fd775b05ea6bbe25ff038bda5fe828b561d7be73d68d881fa7b2c3c3cc513da9e19105cc99a02fb3791becf89e7419d2f430713de41ba3c439e6fbd4531aa0949e1fe8f3e910183e75b706083ad11cf3aca16bcf8dfc606ce28c2466dcc111312f3578bd41af4e190436f5c382cc14728c7b7e3f836662acbf7286e621dc5e121d5f5bf8af7"_hex; - r = false; // result = invalid + s = "08827f3c3192f417c87c8f8718b36ddf3ae7f9dce47f79032c31cd75b5b47b744968112d780aef075dd3fc027a94eb78b7a8012e177fc0e9670a4c4c81daf4d2b3a00a94a67e0c68053ca1b81ce22a8c2fd75c4f3d75ae50cf2163258812cd3fb0562cf35d917c8c754e077b14f99f7dc9d4a917b0168b2efca96481e23748b9f3703f8037aa59829f44a7fdfc8d92dcac8b483cf3a79cf8a41fb09b62fc20e359d5c1f8510184db4f5df9346693ca31dc786f84a03c6c510881223acacb754184daabb6e9baa17a32f280ec9614e94d04a46ac576dd6bae229962e31d940af670a55f617e213b4c9155dbe84f517e8ec69605dbeb3939a0c38c4be81a3213cce23819b91e54542341f58b039ddcf546a722064d1d4217f444f5309895dfe6a1ba56ffc5a19c7a958908fcebbd2468b4701f8de28a3fdc75a08963d5d79533771f5b46044d4753dfa72cc67cce478d542397c8d735cafde3f26038c7ed35303105c9e45c5817b79f69971dcda599723559f545762f6617cee3e130cef1fe58470e444846cb18bd571d817e58c0c137c64ff826a0721f1f90bf41015b90d9a22dd147bc62eb4139746cf4ea1111f321046901c112cd5112020c8666f8aaaa8333f67c973fca809b4b24c3e0227491f7a1b23be8c797eebccc31d06cf016b02aa93108f4c3b810862e186186435c28a224463fdb37b2a0a80f96ca78e787c278dd"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5693,8 +14233,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "2f2fe9ae01a02e6d91f4fd785c4cebe581cb323898e110062c1808801f822cb2e255f9b2bcaf2691e931df9e15c7f876082e569b3448cdb88f44b2a1e0665fce0ddf27c84ce4d9586da28d401e76a54e9e65f7270b0c34e64a7eaf720bfaceb063f984359f38816876d3253770512c5beb06326a62c86b7f05f394b28d09d389cef7644f03acefbbace66c7b1e3de93d39d831b2d27d3998190063adad46335dee71194793739780678056d7a7dce03e2352cb9b22fdd4922cedd5430a3f56d96f9b2cf22669bccb70aea9108fb81d7266d838bafdf7b707da06eaca841996abbc3637a9c246ea52776455b80fad6810eb01916242b3069d333e541b78778bb0e92faa4fbe4ef7feaffce181be52eeb5b6807610f060a93ed663028bea60de1de63b6f69a106d61a93929b6da73f41de02c58572083dacd98e0b11f57c16bc5f0e3ba1a95faebac48c42912a791488fd96322e52bd022d686582eb88fe85a48348bed36d95947f39fcb17ed2512974804c467c9a4ee5e3fe586bc54a22d65c85"_hex; - r = false; // result = invalid + s = "4c871f5d69c6d18304b034af26522cc5a38f252ec5f044f28211f46104d4d9ce54c142f6d1e46fd9f541ee07e734ae1704a6c6a5697ad0343d15ba63c55f15494d16df7046f9491aed82930fc9d2bc0a0623c20576d56084b8099f43e736b880e2030b86b834663e5c23500c9877ab370e7bee5e7889023f9aeb88095cb3aa4523746fc733e267ab14dd047647f71a4ca4a3dfaeb40ef7bbefcc103babbf2ee83b98d361fd0531096788539f197a2ae262416ba293ad227d627ec0b3e1ffa5854e199dafe98eb18747598b865ff1cacfc8fbdf135af1aba1757eb06614d39a3350690cf463c8e2f57d10800c1ddef008d7a4681cad752b8797a24ca8de5d79b506cc76ea053c17b9c318c1a026bee87559a7fcd2f64d1a3c542de656282ff535ad817430e3879e34b082e296c42f24b741ea24bd5736f6baeebeab7e25d91040e1eea4071ae4c7b131fff8a6fbfbf2b6eaeb693f4b7dd909744788fa6333537e918ffe137ddbfa867445d8234fa67e4514450b4189d01f595215639c8006d61f120fc53c507cff13964dfc65aa65ac33e09938a2602382e415ac1598b3ad12689524a75962e0a27838e3c20a504862ab6c852eebc4758710895faac6c77e55eba2fe90c99b149aa27c1c0de7da741f5a94e3f8bb8d1dbdfbc18e567d789b9ee92ff7c1471705086a28ea495dcdc50d2d23574e11960e4fb31938c412069de81c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5704,8 +14244,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4c7d25a7c86329b2dee76f6972d27481bd4eadfe1c901371d27406bcdda5c447d35b5b4cde6eff94fd5bf2e83ef8f1bab37bbf04307dad6d38b96a2ff6464970673b0c05c04c1c07e0e28d1fa228510d9b2bc9f5b4461330e348ff61a1eb533df887c6b3719c85d3ed4d75f36b85ee8540048600f4b4b70fef885e90c4e3c8d924cc0a53c44047cba805d15bf88366a50d8b60d5dfaae09e20e5efb186ed49f005011bdaaecfd97074a8cbcf87e3c810d9e698eb2a6f8b77e3868377af16ce42496a8f19b9ef8809dc35364d35d614f1309a3765e3da35b06ebefd522b688b86337a9f578e69a2640cea2ebb5634665ed7fcc7faf124ae7ac70c298e0b3493abd22ecddfe23e595355d5deb305ca5040246bc3aa450faa3a5bb2cd2eafa2433e4a40d1d602422c8d41f02d5a3a7d4908190e065fa5b18f0160298a52d7eaa828440bec7eb234b2c506172e46068823f6084058e511a8fb59fb722577005552346c04f85c841487285b6b2a469e68a374005d8404aaedb57d3c962c186ee7c27a"_hex; - r = false; // result = invalid + s = "399a858db65f95b71d2a0e4fca284e7ba3965e2ff8ba74dba8c1dc5d071ecf2d92e082ab9e3e072f1703b1e34ee11deb168ab6f924244ef385509aac9dab023dd712490eb2639f61bc4386f9b84e4213fb3039e1cab9679e00ddebca3cdf5226401b582ca5bffdbeca50f256df169129c6a33da967adb948ae16600db039e3a94bf6a126bc68e1fc6b5aa868af141b951fcef974cb2f583b66c4c6286acaa36dc6a49b3a02dc800cee325b81597e4460142bde2ebd966faf76631b633f96281a91ec9e2a56331359eda8efe54177937dbb24f1b170695885bef0a2a73fd8e960f7853c61b970e53c5e3a8bf6f70f67095a3c4826b6029137e94f88a0d514495776535a457f281f316e5998a550ad385ca43825d3e07430a4552e95db2204322f853260c438c88a252eb177d2293c2dee3b2c351e89eb788a22b1a8cee43a153eb212aee73bf981ef7e18ea4e28a0fe172fe5ee795323733dce2d3b9bf04ede415ebee99bdc1c06f8f0f8fe6217715dc03a118c5ffd33f6d2be2ef4f5307611400be14fad35455db4129391e4f999c05521fbdfa017957651d7d485ece34afe952072d9bb11d7aad9ea297c8d84111d5b712c9628e2a10ca8527917df819e3cffaba58448fbf25d2d22c1c0da2d6ea01ec9e718127292b219b34fb83c995aec241c235cc1692d25a03fc34327d2827db5f2cadf1a96935cec5135d7ae50ef1f6e"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5715,8 +14255,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4ef8d630c4ba8a424ae7dbc197dc7cab463ff00f93fb6db064d9987f224f2a589fdbc40e7d3c9043f1cbaafb47475cc9dcffd85a41a0b50614a206c5720d1151229d1d988dd6b8f56cc538b8cf0d55d1dc7003f51b87dffc178b3a63160b759c88e829afa2dfcda4b4cdc9e228a7a81f301e2edbb10da5bbd8ae9dc93ae8eb98d47e760012d990ef53ffbfbddcb8a7633b3cdd8695a75ca6b196f9e2709ae9b30b4f7b606eaba508bfe8f46de14dee5c0d663d01718ddd053dbe204475d5c1dac048f6d628019c8b4126003e4364e90121aa0d9472149590537e35858e9bcecadb9a1f2504ec78ea8d09772c992a7a12e31a8850510ca726ea3c1231f778b51d8818b8694be37f4656bd6f3896f6c19f5e9aef74f55d6b44071bdf1ed9dbe9b26e0b124f28db5d32dc877fbdc63d1b51f62997b83877e46785051df7cf4230c82b1007251cd4f3ccdf204103f99b27c5cd48b3ed529702d89e78cdca05cf52d0d99b99c9e9f479c537a578e47194c9912e7df890f15ec671f7ebb6d304d3e834"_hex; - r = false; // result = invalid + s = "81f366b1e6392d78c6c3368b6a8f59fe8c1195e57bf206e6482b56031ff8a50e14cb549ef198221678d641938853b43e62f4523abf4fb75ac48295365332ac618f80c7ea02d82baf201092505fcea22e3dd1bba8161d05406520de3e4a536253fa432ec8cee829a281566072c788762ad2dffbdbf9681de6eaa30e315af052b2d46ce96316f16b6efea96a41d5f0669419aa07131a950650fa0ea5d71d255018df68e8a12008131c17aadbadeb903f101a769749dd91a6a1bed2b604ae51aa425aaade665ed70bff76274d46ba83be04154889cbcdc535e6c1007877a17f0afe515cbf1e4bffa9e0f21ba990aee507b9be98e09930eb8909fc3194326eca88694099e0bdc36f516ef2c8b3ff33ec413d41c3365ddd2c1eeb6785920b4e84f67573e44318c3242d1288e73ffe45102e15e82a3e571948c10f392823d2595cbdcb08daccc5cfafd9f7a2f300ad28d3d06ef5ff0cd77d1b4f9478bceb545c9815489a95b4f2dcb6597aeb88c2b191bf5524f76be32155e13bfd147aae55189e2d6dea70a1aff192d5e67303daac25ce8b1cc5bd90211b5a97458a5cf4a6e8d69f3ecc7819238d679dd6658327e5999addb4b3d9cc4854dd87ffc09457746ef0d2c0532f030b9af684a064b4546dee86e41610993e8e1f2c4d7de37eeabc4effda45b0eb730c3ddb1244b165dc71411617b4eb11a2bbb5c0e03d7b5c1aed5d8ae3f6"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5726,8 +14266,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8c1a2b91e9d9fbe87865fc4e6b478290d1e4b189866912508402aa311b953f7d4340fdcafe8f78d76c4a3d6fdd7a387fb38cc507ba6bf383743c8f6aa404d97007d60911622a8b96971cb3956a1be3f3c5e49501048cff335130c9184b78e3913d47ba8a69ce8b457910c69369a1b4ee05ccbb0bb17070efdccb94ea8ffa4f683356b1656485f73b19f7b6d1669b55bc28bbc37b7b0eaf88cacc8c019aad99778c032858ce1da532ce2b039294c8ed0660d20b6bf2019bb864e43623d600b83a1fe09ec5d7a6c434ff42fb3f2c08eda52c1ea033dd757db02159188f1b6383f93e1ccddc027bcaf77ed85303fa86644b2164bf99ebb394e0d25298b28e98da79303621d0b188bb2dc65aa19cd14ddbe0edc1b288fb46daac7db10d49bbafe28acb9e1188331978562fba048badc2f72b942d54c23cddb895250dd590df62f4cd184df7ed6ee88ee82b01eceadc939d822c176cd16f21b9cee6efe6cc4cd7b3b62fcefc83cf4a546c69a81668622e51a11a5b728b7689f4e16692e5d2c7e5b70d"_hex; - r = false; // result = invalid + s = "8099e8a3f91372efc0669354dfb05dce6152a239afbf58b9f801f6df0be40569c97354d7e64094118c5069a0d60cfa08291a271a6586a5f40f801199c8bab27d91d1eeb95fd48400549316c4eee45942c230c4568ecad653529c50b0c5dbf2e48162c0993d7bd7427a24caf27b55d05222cb4941125fd3e27bd28b4e83adc78e5a5f12d32f8021d079fa07cd649a921f30f6a2125df08261147bba869d9e8835c7a3330e3a097d65f13cffcec0f3ca3bbf4982a202d1d66ee44bb37db10f97f7235e6a8d1d852f32cc77231b67f38108a167fada6370e2d40f85868558b22f89d4df9fccb6038e5918e5d7cbffdc95e66acce6497a5ccd705977486686670c711279c6e8efe3ffbf9c9663b96661caa63ef5e35c1194c6d954a1736f9062b336a22ab5273f94af2fcd67c8e0c8002adde0d226ab04662e9b2e20d5164312d8215bcdeb1bef1de43acdfea9f7438bfd534728624160d0808fa550e2f5f3e4588072722b2624635031cb502d4f01eaeea6b6c41edc2b077b3ef1ff477388846255cf92f91039b8ee977041b3c22a2081796e0e7bfc0eff5cdc6008ffb63ed0bcde37ba5e2aa71f6d09f1e8a35ae42c6e5ab9f25b63eb36e3558d2c725cf0ff4d5e4b1ee63e0e5f06f31ba7245cbc0e5fd0e3caf476d02efd3254ba87ef3f00f58e3ca8d89cd3592ce53652572de8009566dc8b66d70ecc5d732ecc29df94927181"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5737,8 +14277,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b42bcbbd1403e77665fd47c2199d5d962ec7b224c00a30367d482f3f5beda989f72ba20822a46f5c28e9b5524de1ed6f3efb390a4c0fc222047f3a238a1b53ce6c4f2debf4fb4d92a8e1ede0895c39545c7a3fe07148c8c5944ba76a57315fc814f0c2a08d8627af126c467f281643d648128183379e90f99e97bbdb0acf2ed03f4ed38c61df3ced83a195b92ae786f2a81ed2bd6d1f33a7b1233c5ab13380621950fb27fbcaf63ecdc703bed0b1a58b1d36f84914be476e857a861bad98d35b248fba6afe10e410b93435e5854530f07d5d0c375fa6ee5cb8b306c2e40ce5eeadc16ba8fe40d7bbf31ff9ae2f70b458a8db46f4faf6373ee3cb0e5398b5db53b65bc8b0e4b336dd22de54c7e8e3b09eda2d33bbe53daf8626e63d16808427359cfc8076f07259772f00cfed32a6c1466b1fa1847bd9e7bbcd68b6ca9e8ea8b577985bd107bf1752353390656784f92003d43fb585ef2a4137c7f83cdad4bf3fe1eeed2cf76c79c0bf2cc322950f6ff0a98a3c68f83d7a9dff5d87420295c18c"_hex; - r = false; // result = invalid + s = "931c0908e1d0537367a96e1e38124109ab0bfb669afbd34f8b82882049681d3672246cceeb94bf19bb6626f9ed39848fe6c2515fc8485b7a87febf77ad4ceed8104c75d5a7074344c61bc1472d2692527f6a5d676a46fb8b42cf461d1e702a257b121cdc9f4d2578e8222ebefc579a5b8edf904cdc028ae92d759fe01f33ed74a0c91dbbe3389ea8cf3e79ed42ad02dc82bf20b82c28b34e48c77a0065c36b6dc09b1629b1479a76a8faa5fb08a250e9d5423c63e73bd4c44c92ee0d2c9b9c5420846fff9886105132c3a6da34a42f757b4bab642e0b285506d33c4f453169a1aa48c74c787eeef4a473240b6d5071fb5b3c66f41b4e453083f7225f00bf592fa3a7bd2e7957a770da09e466dbdd64d713dbea3c48b71bd543b3ef566b603c8a360e9e0dd8c1ea6d2475879a46e633c7ddc8e4d7d5a2a7d22afec9517272dc21ebdc89d06e966110fc3dc58e499c085d73595af74f9dafde172459eb1febf439d00be4090228bc4b864d69b94c376e8d91496e1067949913b9152d7ee0b9fec3c5d552d45fe05e55f5a9505aa367e0af7735065f0b30428a6df33a2c47478069ae9689097bc19cc8390d1b30e0b3e74b2e785388eb02e5aa6028fc05b14c58c2ffcec0a04059bdb84a56bfdb49a5f77375b0def44d429751ecf59399ad94be9a40c9b6f570d183e299b4725db7a2ff60fe7055c455ba28dcde4e043051a2f4fd"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5748,8 +14288,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8a8634d606e5c507f60bc6f932db58af00b8b057132eb1148b278ad00be6e595893982b2f248a3b098dc58dc751bf42094ac236874bcb4b40f95e56f07f1267e559d2bdcf316af97dbb6c9b2356fd7eccf47698190dbe3a116a24ed7a09eb2d51314c8272127f9a5960158ad8c771489aac374b9ed43cc4d85737b808f49fbfaba2fcfe044a526fa067401bf6c4e8b3d89a527dd2340983ec0fe0301a00857726ba5144b8fe1bb6d995c82455b04ddb6dca1c02e1e3cf0086f95e6d51420891231f5422bd16cc84f41705451d5dac7725029e9a4e4a1d1a7d0dec7126e1bdba68dc32fcf5a2ba9d2893d2732847b42659c68da741c3eba87bfc6f127edfaa1ec5c05ffab1ea2d9f412600f0016540f07387b4146c1774a9a0230c23b1ecc8c14ddff0ac8b12bf47b64fe9c7c3c2bc0ae59d1c22d1e1790d88edb1c6d31d90c7996dccca9b91e3da10cf185cd36a35267acd92e13909cae9ae19440f142fb270496396b983c79963a07013a3bf089fad02334c1f76bea4a8dd8578db9174b22d0"_hex; - r = false; // result = invalid + s = "27768f74378f2f74184d585afa5c7e6dad4253b3c911725beb27a0def9e9b4f24ebd49f5fa4db0f7e0c11fb1c3ac2fd8c71ac24bb5a7b7a10051c254d80b437197d4bcb84bdc61953f689ff8927fd22b787604b9ce2b8a7fff5f3987d859048dfcdcd119c8d33b566cafd7bd3abdfc3fabd32f334fb7ad94c95683f74fb48f4cf9627f6642cf6c5bfd8d2e4b07ce1f7d929be184c9989a9cbcf0f688978e7faa1b9486e99a9b2c1833511e04ec0efa11c760e624d478e6a96d2a73db1d70e83c0e1740983eaf93dad91eb9b7757d149c75904bf1316cc5a24228f03578abba3f28ce860577393ea0973a0b78fd21150f4a56bc4a32c54750dbff9da10b20909e4c5e44c08049f2633cc83b9f2da09c39daf76eb1d9f058f716b195eb894f7023cefc3cd1057f78a0cc4d426e87d4aabe79334bb1bcf37718770818903658ec8961beb9e119c0f525ce43f920dbf2ef25c65c4dea52f722133cc56daf985c547f14330e5ca90bf0ccf313ed7a0d61ea57a0158ee6456a80c122b7bc958b0bca126a4fcdc53c2a5de3d4ac69279e2258d3bd6b7c6e95b7794a235bb8d3399699dc51fd5289a09bbfb511f184896a58b1470c12c0631fedb57b3b89e29f102736b3a941b93bb7217b4c2b89311fe216c898ce8ab0c2e632a343bcece23f6df81e54423e57484926bc55b49b0d8ef633908474f7694f0af2de7c5068b258c3874f4d"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5759,8 +14299,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4efcc5b2b023e2347dd71bd948cb661534e1bfd77fa55e768b9ec3edf20709786ce113b6c9026448e97808d098d33590488028c098b0d7f5719dc39c2cca636d9cf888230a803c75c1a9a4a2c884ebf19d7bbbe21e62f0b3ea8dba5706c98027b3fdc0a6429578fc2ed02625f9bb9c9d3f193ba98b78c510fe7e7beb42513e76d84b72b49abce43d33e23aa25d8038bdadbc3b115dae29d4b4e4616108c9c1727f14bbaee73ca32f8bf4511cf45959c2ad217bceb544f9ad7fc69344a6305680723dc1f18de7d81f2fe49c2d058f9de6b76dd8ae7d94dbb0fa0a54d253d51ad4b7ceb939a239eedd455e9c6645988530ba59fa7311b3ab26eba68d5cca744f57a5cad7fea64a6fd323e93e92cfcf4504b4174f3fe7fa93d68abd98b1128ca909a03fbe82bfbec0dc4017675d3fb54a39ded1e00f93fff69b9374c280bf124ae1a0928ec39bc2a650c345a9192221c172f2a3d22301db276e32e78dcf75dbb3569f9ca45b9c5db35d766910bb8d644a1a3ef02609e42a586e2c9096fdf3fa9d73"_hex; - r = false; // result = invalid + s = "2cbe0e112ce78703ee4ed8952f6fadb250abf4a243b418cbba294361adb42a83fea55f2afc60687cef1e6715f817d08ec387a5b8c4b05fb8af658f5c6aa0742b1d3a3ea2bbea779af5b8969ae803afcaced5dc775bb1d0d64e1612de2e35e1b2730dda9f1a75aed618449b34aa00e5a9372fced2f9cfd5b1733e71575c72092e56fbcad26be2792a57651e74db6d86204d84c8a5fff7ab3aaf82cd7f383f16ff6fd33b8c91c943c55d97e7093462fe1ec5c9ed9061436245351b7ffa17d062bedcef0b139a28f5cddf9dc3b47867ad178b65496c91134749600fc0a9ee99bb1920e9ca769efa58fef3edbcfdc9669e74082988feb7b3467d568ce4b4fcfefe88ed2e2bcbcf6b253493f940d24008d3a3754f1ec287169d272545d42c16eb37865952225a06508b0b57c3f69d2fcaf4ad6d84401f1a1b10297259d04efa02645fb4f446f7ccbf73f8790aa55d960e206f607a89217c3f95810a9de7ce33029ed2dca5816036973c68af3e4c52bd45a65ef83553a26b94f10add92627343ee1b6185f4ef2039ace7d485872567635fd7b53d21d570c34531b567550319bf45f7b702ddd7714c3ace8005ad3828487a0afbcfbe6274c92eb669f9e336bffd83acbef9a4cb385a219c6a3098c9071952e05dffb25298ad09a8a0e1b3001af69dcf851e7218a4e0d75fe3b085ba2474e5ac05b004bd782129821b9212cad3e335b3ff"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5770,8 +14310,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "70e063e00143ae6836b44a35a084218baea5bcc469be89df6a63cd58de6b40f4718d6b7517afba52a459ce12dddd06cf9e3ff41533e7df2300119af7fb5fe943b133d548695860c4598fb418b278899e4e0e5084d785f468b6cfd9945af926ad6509e7b6cc0482dc0d2b8d1201cbabb619fa8aef07d9700ed0e97062604574aae8bdd9ae2eaead2a22be6aca035f56b25f419ea378dc4bf6cdce24906c62facbe2617804b54c83d35c651d14d5f93e4416a4ad9ffb0784e292f7813af00dffc5971c1f6ef6725754ca06aa116a92cde6088f95ccc8c5ae19a821fce9c316b2c74f07baf29511f3f608e3e8a2c276043e2631a1fc651d622754384ffc10045883b93675c7e4aa8453692b0e984b12c213f31a225c77d28fdac426aefc523f8c5e55512c3a44f4e75b9bc04da2befdae590f09463a0d0fc417a4ae8eb31aaa5820324450b0dddcf8a9b06bb066ccb333a4bf445dbd10c025333154752ac0e919f714deb58ec58f38742fd3379754336ce9944674573cafa81bfcbd71e49beb5ecd"_hex; - r = false; // result = invalid + s = "39a1105d903af0f70dd0617181982e7320d0e206e1634010a5c97986203e76cf7a236c94a3b89175ef97791760dedfe66c51dbbece5604fc248fe801cfa147ef6764b80827a599ffacfd6ad89ac87994d78370b8b69dda7885322fafb80b042c72de9152df247c9a8a2653d9cc3cec8e0ec6e3e7df0e3dd9022cfeee51fb2d7d6becd3549b2aba1e653f44ce0ad12420b716411929efaa04408ac07b5661c090f8f3909b03ab2e13e567c2f1cd04fb54ba4e876e1cc204ae85902f170ee8b230d9d3b2d3eaf1ecbc7c065cb66de795f8b144eda1936ee5dd4da0c562dcec8405f951e1a03c2fa22df62235c8c255ebc60f6beef8714a041836259f5c5ab2bc3107552bebb5e9f705266f6b8cc0f8ec9ecbd6834655ea0e14bf51e68138dded86f742282edd2fcfde3213a304774952771f754ea23d97bb3cf01b3cb81a2699cb064db28baa741612ff9f68232f8f92da28150a9d19ce329457c9e6206857784b6c2f47cdc49b8d3a1a723930c927c5eb2ed670664db295b71836135ef0c19eee7726c72418bf7e2994610c2024515297ebd98010196b97713ce22bf5700543a298862a00eb60925358261ba5332beb2e319c0cf7b50a4e78f7d7006c41c33fae173956dd20c0b192f69ed857c0bea17cae0ffade108090124a9fa99c38d459f25c192a8e184af6ddb28f174f5bfd74a9f27a3a1ddebe41bf8b5f743b1bdb7fa6"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5781,8 +14321,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "889989d3df5ae514b1bc95c5231248b30e38d08e48b88ee8270db52c2cf65427b3f7c59ffb718965849e774e40370587dc37fe4de5eafe74865e8c84ecc7a64fd3ffd657c309db28516100f7b57e70c557302e49f612f185f11540d1cee57f643ed976fcef5c71e0c1db38d12c621b8c80e7cb2a02406ffd728cb3029c23d402343f3040d4fbc0cd2439392a93d0492fd90a89176cd72e6b8a434cef5ac4511ca14d4b7d2dee0937bbf5daadee6a1bafecfad41c000f06f72f73c6426fd540d59b0153934fd059e2dec7a6dcb29f64133b856c3b18ee5531998870f3cec2c375c44060778adc1b159e9411bf43f391f0eb82c20e8ea6c6ffc60c4a0bf27fa82e5f79857ac58de7107472670292c66337781070e562da9bbe023d2396d5f75b852551d721f8aa1a737918db641520809e0be68f5aae43994d6666d31805431b9fa146251424600fa08466622e970f520b4bf5a903e329f21c1c74945cd6898f2f8464eb6b48da5af543bf1937395adb0e4e6b4ec0f11c9ffaf0071a453db37d6e"_hex; - r = false; // result = invalid + s = "4609ae7954301f3a807b9049de6b704745952c52ad6c67d3de9d3ca13d65c5c346756ba0c3d65192672adecc0fea4047ed547b605a3084df8adbcdd46d565bff127d2c2956f9a46be45e15fa66379197f6a3579d160e3d5a41e0b46f307391503a29b29bcd9a5b49e9e38118f6c6c0e258d17eea3bd6dcf52c54cab0226fa6ab51dca5a5c078091183007b0236f0f1bf4d1b11a10a4ea9b4d71c632212b7ee745a93b4ed11e2089442c082ec275e8fa79477e43285ba73905e7bb1025668d2f6e8b077e9b4bc520be28e11ffe680ed25cefa7a3e1622a2bc942c1bad2ca4beeb1fa784be5f516b786096e320d705b1ab0f0d891134c4f937e1120369a5a4f1e5f7cea7984755e409b016d172dd6a4ce7369d45d2ba30a4bfe0d9fe48280aec6286eccbfe7f60ef79391c0185094524aa86036ab72613537957ef7327037cd9b47d60e539ca141cee3b371ba2dd80a55255a9f2b8759f92d6b861ab1a57b0287132e6d7a378bd8723fd2e223ddf82b6e1c3dea9c0ff3587fda7aa7401272750d9ccd30772ab2d21f7aa8103a8f2cd203116a9b57d957c9aa6e0b04411e4aeeb14bf472e1586006282bac900be8e8666473c451a89b9834276d02fe5e31d8873fdc81073b7b092996c0dda90126740e7494e2ac39ab31ec42d076cd11a099ac9a8ff0471c63754cab3bbbecbbed95556340897f3a1f6660dd3e0102bb044a26d4c"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5792,8 +14332,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b81df2a5f0d8b8d3c5cd1c644f3e110597fd1d1abfc186f4c8012a6247c8102cae07155a7ad2edccf8e6c505e7a4ff0d29e34c8a5ff25aa25e7be34306844f49bb6d90e0d8a7ae3191dac814f00a2c41f6e2eb8122c199d38189770721b4dd0737286ca4456cc771709f23b198c936802c40f8061e6c971963878bde111f3c1f3e1a6503c5e58ddebd395966eb100e6882e71aee84b589e23278f838251092da897ba9ca862cf9c4d20cb20bd0094273f9cdb28164ba3229bb121b3965a02597919b7c75a93ca7e54c2a1a436a7172be4197d6819ecb4b71eab5b37d58600280951d6bb813f7cc5df3929d5b02860f024995311097e42554bb7083e613ba519517abb87ffdc39a0e5f4e4d4dc2d89e3c1b37f98166e80bff7be83f9477211b4ec8f45d8fa99b0dc836101c5cfb385072793698394310ba85772827c4c0774ad917b40fed0418864bff70be1b63fe4f401c411de9e4b57be72baeba53cffb807a7a9eb9c2b4f91049114823ad1abb83787b5d160787cf5d57d97dcfe95c44189f"_hex; - r = false; // result = invalid + s = "4654613912d7642530a250aaea40ff81f3190736cdf18aa040d0cabb62ba83e8d30fe90b94b9b0dd64450cfd8b0c55449714cf2e846b8c32f831dbd8b149874267b274bc8a5e2561f48001d340f5eea54fc2f6393a287329323333e0bcaadee0e2522e51aaff5c3755ca922409928dea0a5abff302d72c830d4aacab24a8ebcf1e6bb46b4daf2cbe4da58ff8caa956fee3a53d7252dffaf8aa1ee79abde6de848ec06b0db8b4c90233032488ccd378e46d8e715567cb78f8a2ce444f4035f68a318cfd813935e5a835bd1ef9c832c8294141ac3ad7f3768225124dd373c1bf03339bddcbeb4813414d3e94bfb9f61b84952e7eca3290887391309174e32a02875120c83b6f520d86b3959a460706fca30ceb92a5d7669b0646814bef24331a2463386f7d66bf43f2eb023ad96ed9854bd2a441e6d337ae758f1b7b873a443182773b5ba4b0b3f8673e8e3923d3f50e2458f227b8350b7ed8fcf7cf55b256cf2fb7ccd5626a99d00e18fd223864d4301cbe0f0b8f09ef8b06630b71737fc976372d5fccfd783e9e0a5a21a04a2841c64466838d67805efee3cb872d695bb1593abd209f5b37d76ac6a1bb2e483190aba71b3b06e777ac28b5f31e02700c0f5f64243acc5b65b50a52ac6bb2531717ede1cf16235db0ea16c21bc7cd0e6063198e3aedaad5123c814a484484d479e64c2c213174ffa3b773e838679bcf84f291c7"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5803,8 +14343,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0d6eb76e1cc70a4a16d760c0a518defa2bb0987e2d43d8d294a55c9d60507a62236be3a6ae0098a0b28bf7030b373242ccccb88e4f5d4ce3567d8c6ebbf726ebcecb4ef0b26a696b68e59596e104864e5c7c985342e93bb40faa0bb1cde596556951431af93258664c1c1a0dd44e620b2ce0bed8a37014c460c829e0ca104e66cc5a5566394b3a43e21661e5d5fc0497f52d0d8a1c6ae3a57cb689d75e6d94be30c756e9b4d6b7f497a60a897b83c289f6abccd133b63837cee0c2ddba2b2092c29d96831fb14175dc84dd1c5dd1cf42338225d3be6379dc2f0b51b140f5407baac7177bad2de991ca6ed246b53c94381aaca8a299569fd664234d4fe928086383fd50c2af8b91909bf74a5fcf2e2ef30959b7fc0ccfa5d41953e2f1d3886f77ea6f145550b99b0efa3212d2a927db2b3f133a9c45ff5038cf5321fba0dfdbcb8a6abfbc65a2484692c1a89f49a39d00844fc2b4c6d488dc78da5045be8b560228c1e9c93f8f3613555d15e7e39bb5f4160d6e8463ad6b2cedb4174c4813c8d0"_hex; - r = false; // result = invalid + s = "835273b3988c5bf0d63e6fbc4d2f6150d74a59a335041abdb7efebab06d01d47b15ca1ae2914f636bd26c0be5a9450fa65c6e1bfc7ddeafd40beb86babdd14285bdaa938ad5f632d379281a2d24005108e8cb86bb5f5a414b9af843a95cc1a4209aca7b2e7f7ac9f7ba1ff8068a6b9c07212cc07fdead10572da20572b84ebdc18526b7136c0952340a3af2916d6ee53df66373c5f7ba0a069142fb58df956589c8b33493d2cfe2dc82e5022da15ad926e5ea49faeb9623308091cc4b72f689a567a8e77bc7f998d086af2bce86c54ac185de11bff5aa3193d767ff2a3155dd55740eccea9a2011fc0d394dbc59d13c2c630c948e651bb8db0bcc8cfd43fac57a018f57259aa1acf7ce3152442fb6dec3d7c3d9feeaa3dc36088f8af74033434fe70272a767dbd3038806c313ee5b6062a006dd7ed129cd642e1a3f383fe72ff3d57e970336d8fc672bbb37b76f30fd9e1a6e47671643e3881147664ffb6705dc514d3157c8e9c5cfa3e61669cbe543bd388b6047142c055159c495a010c91bb6517bc21f8fa62335442d7c049559c436f4453d11dccc06c4c4c52ec0388dfd5273d282a5e4b02b08ce340c1e8ecd73826feae453e85523a5aacead06464b75b65fa69a8eb3c495ef5b357fc71e6fc51dca0c16979f45732ec13c5290f87a0b42baaea7b5908ec888804b4400a2ee0b9ca2a020a1b2f603b50ba9bba51cef02e"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5814,8 +14354,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "3bf6856f73f6ef422be2e247ca197d3d7ea3c8aac7c12af4e26ab047eb7f8997a97a3b6afbea78dce4ad26aef24568640643293f338dc2a0b867ffd71b9e9a30e9286aaf10281df870d2413b20737eb8673ebe3479685459ebac4c30c123291d9eda00cfd580eea9e77c88087185b72fe6b3b0ea201d9b770f74e24595fc02d40db9356ae20d226f9fc09e59e3f7f760cc3aa855da72d510fbb8ce1e6586588f3e79a64bbfb2ce1983d813fa1ffb5890a5e59c8066842f1bde986b7f1af334cdc1db4d97b793d631d1dc67fd13207198106f58bf80dc1188fe571507b80cf4ca18ba4cf7b7953e937884344d4d8f525db151cd5f2bbd856bd3543fd5cf71bc7e5a45e10553dd1ae47d0cf5947e8dfdc8fa174f6642dfd5e3f4ed300d7571ea31c28f14bcb37dfc6e98ee6b1162d72ee1eab9ad21f4e976510178b6ded5d637b1245fdc48458f6928088d4fd792532144f737a9d9fb157fd22225a98e0a38e8197d4c7af95e2eadad8235ee0800a5ce584257035a6759ee0d70e7216c06b6ad51"_hex; - r = false; // result = invalid + s = "56cabab55d255d6f4c0caf561945c06c80ddcf900c9a9cda9d7cb23e7c86676a80ad6a8e12ac35170976633d92050e9c527a7b2a58e5e031043cb95f395f1f1bc23072207d1bd52c23d24e4927480f0810005050ec026d7060ec15eede1693b496cbe87dec2cb65d43756cd323d770e3e345a72dd9f31dbf028481bd4a60a919b99321ace822a65746aa9a9702b575bfd4b37fe2a20bc815273a47c3b7c8821bf244b4c362a3e0d345b80aba210430592e5ff07c456d1733790af5f7893cb344a042e77460191dd1743cc2e2d88b10eec4d27c07f367a2e52174083e7387f9c1b66682674276c617ec3502d7058d1cb04397e20b1ba3770302ed119b6eef0655a76decedac06036af6a552174be6aadf01349d9b9cab4b7d65303e7cbcb5b87bf594f995a19de79c6c46c3f5c6baaa22184a602b218fb4f6a16088b076e2d4d77de7d1dd3455c13041a7057918ac92f017685b314b53ae5c34c4af4a4b564c35cefcf9ec4527e533bf2c1a5bbd1c2e1d27140e42ab8850fff44b2364de5ea050e1813859085ad2783e47fd257ce3ffac28acd08d0469e4e845a129ae594006198b00a0d77a3b108f155077abf76e7bb29de8955725ed74182323eb35f47f0d10171d6197f8c8de5acddd035efaa51a76713269307b0f2656789ba3815d32a925c67b79505a918ca3c7ae57f9aac7b8637afa094e4e92338ae062cb4a3a6f8fad"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5825,8 +14365,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "3428832b0a12ef303ea4510428a001d6c54d3c3cb4008cd07f57a3b73acd1fcbcef9d29f84a4ca1b70701bbd193598aad70e7d64d187da76bac023ff909b338ca75cc5fa7de2eadff33e377814de682aaff232975a1fb1c36e401fc40c4ea61941d7e6d36af36ae0bf30127f2d05fdbf95c8f0e80a27300373c055e3f5aeddb48b57936dedfa58a3712a2041580abfed8d214ee35e08a5c2d06e9bd9487112ea9862c56eb2eed3f5ef166bfb67bb76ddbb1ab56fa60e7e16a34f8d2dae992a255ba12a154130eb07c8cfa6c2d23331c043332c287528239b7b138f7787db620c3c908ba150dfbbf712a51d5e56bd139824ce046c598ba323ed3669021308b76d70925fdc7461059eaabb4c6776280bf985c34f1bc035e65024629f47c2026ec2c9242d840b037aa4c634659bbef8283c39785ccb596185689abec72e7ed527fce49264487cb40423fea92fec60bb547695abba011b862db538684fff0c77823b0df95ef1396dd93a5189c158c7a845682848455b73b8822a9c27b8a3e789c98c"_hex; - r = false; // result = invalid + s = "13045b1272f47c829c090d6518fd090bcaff953cce4a15ffd2d4618348266a89166b507d82008a157bbe5a4a9217d47b38bb53250d02af7048041ab1ace494e2abea8c50e354610cf24dc66ed1bd58eca0af855044c4ff59a158271fabcf58f4849b6b6d393cd14fab8ae2ad164eb88390f59c083760e8708fd1a076e30a62f8b66cc8d83ca2a76ebc6f02b04aed4a3471ac2bf1668df3aa04a9b9d95b074a5298ef7d2c9d6bd0c978f30e947fe299e402b03eb648e45dd5e51ecb3c8944cd945726d568ad31b7e236279f817d97406b2be36b23106c338db25fe20b23edf86ee8f099382ca0be7134fe259e84023b591908bfa6962fbb2aca34462329d1b40a946fcd01308b81f4c9b683f605bab8ae122a33843518e621f8c7890bff4a87a8620fab7072cb1764249cda2a6f2b801397641dc73b25c8148a528c8d81a9a7f888938b554ea1774ea6a578271abe925828b5bf6d9bf7863253cea82e753aac6562981c0848701c0e7f82a6657346e9813a27bc12cb54d9794828a9cbf77d8f4f313a09d5f29db843d94fd51caba04ff59f3027cce01d6a2fb43a5db8b5ee1f8d3237bc3a8acd4b164b484f634c59b6848266b44c1e41ab4a38d7b6ca6eb1c6b24408134110a7ce311013b731494cb8f2b111a9741d5f2e9d8d18dd33c07c6ee281287677066a6d2938d559be5b5368845045cac482af2a2f7d5752d978cf3833"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5836,8 +14376,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "264ab320b777d6c33b56c4a61d1beec9d4191024268a32d3ec83c247bd34bf55aa60660adf5d7480d1082237ee5515692e6002051900b87ed499ed879d7970028d308aab51496864f2d87d3ce95559b24646be209921dd147546203bbc38fb13f38120c4fa5cbdf5b9e39cebe2034588329dd0e2e393caf14d17135ce467397ff71db128316a7220561c6714e0abaa088dac39f98cfec71f14f6b3bb11848a4809240839eafb0b9695967ed8e9ea0b7b2fea9ad6a60c38005e3ce36aa38a4d2fb974e57a6482ea47a22b31cbf9ecd73ea7d63a4d5321dabdb1d9a1b66baa754805322040807982cc4a0fcaa1b30b13e3b8b1675e190c76e7613db3e57f199964d85ef6b8a169b0d70304355fa1633097407eb30e5c5ec6bb2e356b79d74e8d7a516e1cfa1e105c4e9409dc87ca041840b639668ba9819f3150929d2114ab54fed418fc940edd030c481292c90070542cacb0a7efce531f69ba818447fbced8c622524b2e6fe57c466345c2b74e7c6effe9d9a092e0c5a6b1b7f36b11bd2afb58"_hex; - r = false; // result = invalid + s = "15a7171c1bad5fa3b2a2bffe58732c90bd48c6671efb85d912b4f644312155911ed367b7ae25dae15ef05b3cf60dfdb6926564eb155131dae860b89a9bb12c37133daea0b93b5509d6a385374c84514bbc2aaaea12b046fca003362c3b5b571d919aa4ee8cbd785dc875849c9669507472a431c601c5b653467e340ef48522fec6de6c569e24f26644f1964f91cf86158186705ec7aaec1a927a2bcc77d6970935b2dd4c374cd081cc8ad280ae48e0c8e7c9df3ba8e034e663229103285937f19f1e5689348c8d302315a7f32cc78a4f3f4a52089a97aca562b8f3f897262aed918d73e1055f2dd21ee61f3d93fd59cd79d48be01581fa94c1a3408acd1cbba125cad709c3064967fa6a02c3b942bb32ee91feba1c0f6bdd57ef3d51d2ebe09a4fdfeaece94ac27ea44baa859ffac4effd5a8691b47c4704459e8323ff2ac8fce4bf69a218c52ea3b7454e9a807df188cddbd0cc0a83a2752218fef329f352d9f4fc24fdc3df75d2b5fb0d796428e4a8cdf2c076ecb7d4a4196043c325d3991274ee783bea402bcae470a1c3e3c4689d0d6c2156d79d3a768ed41e262d677a54901631bbf9a40c3184c31fa8a77d9f3f0a9718176929c04f299b252d8a3074bde2c613bcf14ad2e997821200cf4da202556193a609e788aa0c58313b5ce615376ac70cf445d6aa78f8e05614b012aeac7adb28fc8aa316840b15023973ca529f"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5847,8 +14387,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b6921141cacd717d45fba03ff01be38cccfab166c66121177ba660551efc193ab187baa767d12936d1b07fa736240b24e8c7f6bc02b10d82eda0c20b80c591ded6d27abc97f0640147e7c7bf8dca3bb250c993efd3de1f1f58b3e6d5baeb0652472af89d3a08dd8ff39bb4550eb2bf370d6c4f79d0f093c8e3d99953414a5f92593e00448130bf6b2466212d108cc0cd01621658c401cc55700a4e51da8d02ca634cc2560dec5210f28bfae4bcbcc62ffa10569491ad79e9a1b383b55291b8e9b431c51b0afad99eb5cddf015c7d91930c99dd7c47708f1e254ea1c8c09c10c796514478634a9a5c8ad87f6244903c59ca5cc374fb52b244c002dcf39f675caef15bd1329f6180006106111a1e91d4d9c7ae56d065d36fb9843d74b7f4fa8a789cebae586c072359002fb0c3698bfb74439d561f093587fcbc09759b60964578c3150fbfc1823c76804d6e643d2d67c0ec6fd1408d3a7e0ff92527d8c857a92f3ae4400b4312db163ac889b0634f424ee4fa55781e46219ea25b1bc08ddfd959"_hex; - r = false; // result = invalid + s = "8bfdd726c26e0ab4de6026ac42f3cad356d5cbd0df529a1e8654810e9f111fcd3cf3d2940e743d3a6cee1658a29ee8a8add32effb93e231379b3f54511586a11f31c1ddc460f7abf8611aa20caa707e6de17399c0130ba2cd484383305f7626d750bc5e176f63039fbabf7952ad83c28d1f7f37d49bc50d222e232a5640e1d53f01f7a507326c6cb5c2f875fba44b745e063c6be2a04f47ae4a3c0866d11eea7482e17aea6097be9c6a2dd1501fa03f67dcdba8e3f29b57eb0bfae7c421e84a1c6be10f6b7ea959f11cd89e9dc86ec183595682f785d7d18599e001552a02af8b187fc57661b9f1898d948f0933a0cef810b3e5ede1c6e7ecef783df314d4abe70cb5665dea223a6d9474ba4a708d798f95308c1431b201640994f916ac025ec0ba7b871cef80d42547d88b6095fa7640547c8fc4d25fb9c1886576075ea58c0d8e4769bd79afdec19fb2805bae55b443237071210f57f881843b5cb63c24b1f17ab5297217661f6d8765be9e4a4ba6540a989bf394fdb69604b7f39c9a0c2ec8be06d83ec0d97aee05c886a5ac40c3435eff12bfca475246abcc9da975b02454ce786222ec4d97a1337ffcc3bb7052d7e5846fdcfc5233794ee02e28b1c6e0fbda39f1620fa10f1d9d66ba7e83b21b0cc9cb7328a0c0629bbe06632f9eb5c4dbb569b1d345bb6de291403196c5e830e24183b718eb4a2d7463fcc5acf332888"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5858,8 +14398,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6467d159f5a3bcf671e1c4442e5f1455533866ec8053a788b7e15a0fdaa7d62dc93e66a5d9d9c85c11bd6bcef389174caa3aa9d54ad3978963bf69b5ab503e6243ebb515adc2bc45bdd6126446095d0c0bfd7632bcd8168147b141007592b1f1fdc8e6fb826094858685f627bf321457a8cd9df9c7290baaee6480841a5f2c6092a084a52f0abb5edc8a4cf750494b8d494f69b3efa970378ebe6846fb83ec22ce56ae8c2146ece552925d2f3eecea726d02f56ffc23c6010b52b5240119ea326349bbbfca1c799dbc5c24125f2c41fa21718dc5549906c6bccb748e10189d6ce73bf89158b47e6e44f20f95d3684cc710859e61d878e540a53de45388e98fa1a1acc92283ba3790d7b52b22e9ed671c5b661ae33ffcc924825efb90962b430e91f468b9ffae07e0bca510441b73db302296a170d64e8e024170bfd0f5396a369080c4ae8e7a3d23a91b021e100e33a2a1c1f303252e63c62b59aa797f5e61b453c45dcbd69ea14f9e8eea4346d7c4957740d868860d7ca554ab88bc47b0058b"_hex; - r = false; // result = invalid + s = "3873c19e16a42fac0f901abadb070f09b051f5c2fbf1564a362ab89b7e106524e4a3d1425c426eb6a6aab6fdb1833b2571b20dd713df5ab6918af9315688809f9f0e6b8403af9b05ece5487d74d138ef79197e058ab8a2cc66d28d9bbb529b2893b6b8ef87b460a02447ffbf8ac34b3c68d4b477fbd99ef3239183df4623bbe728f654c128108abf18527d7e610c1a1185f34e6c20ac260e781eb706ee8a8034d972cf05b747c0ffbb9bec806599f3d8c43ca504fb2e44add2d6378dfc1902e406d7b3be605b0f5b6b1d4ca58b66445ace837281148d1938a10d29c10b839b583ed1ebd322a1ce5acd9f12662887a046e6dd9ff5250af351793782cba6f060b4233f426fce5bd4f91aedc2ba4fba18fdfe83df4872acf6b34d667759411d14c6af779372518d48046be5b4ea20caf23a50a99225def79fa680aa14bec9a2b3e5715bace1b5509e0eba22a8bcb9bdfb99151907ebb862922c6b761f2cac20153ad65dfd729ce9328d5a2ce17e0e9552f92c789610db1991e5211cdbdae2c89e1381f3219e567d64cc740edf2ad7fe1e0fd4eae6c1ac035c01d7be3b1d0b6233fa50a415c2b5f54d388b80e12f6b1f192911c53826bee5ff17a5c822fe08722360437bf6775070c077f52d24fb57cb09d7bb3cdaaf131f9943db82ea9c9e48b4e8086c7b8db8cf23e0ba2d964ec991dbeb88ca117b3c1fb00216b8d6ebf5469e92"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5869,8 +14409,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "16669d358f0681b0f7f54c5840192dbfc462bbda4e2e13ebcb23cfd554f1454f616d156a28fe5a2ad2690897a1d6f44b4579407eb7486fd19b5f643a599eaade6bb6197627f38b7fc18eb6e42fdedf030cd4cfa30587e3100302aa37e6840196e1d48be48da0f51e9f92ead2cfa8693b38cb2a732a3fcbb27d2aac903a594c567c2ec8249c97ebc89747047a5315f8b5493c732859e5793672548eaf0161156ff0e96fa7a6d4085aec19c4a218958686746eb0a40d9a6336809ea435e6b45c4ea97b771db37b514415b86d57900c59ceaf4541e0b53f786332ec055bfecc1e14ffe67dcf41e9350802416f31b3ec0654b87db474bd4c3143418de724eaeb74b95312cfc6bb64659a2e537c544673f9ede21dd5e343c15ca7a74478d06951d010acf69a6befbb224262c95c4ae70760d396958fc3ececf8a8c3c42944575e4f4cea5d94dfc1c93abf18aa8a9ff50b96615e8aa8c8649efbfb69e0d1401c0fad73376a589790aca696ee8f92cdf8680a9a5b9a1fdea7260392d9c7c85262af7fd2"_hex; - r = false; // result = invalid + s = "92b47215500ce01d9134b5aabe15e2cd4ff658ef412e269a687cd765cad47fe97926b862058e4195455f0e06d473ac642f5d6755b64054a37b0db40b64cc1269cda1a6b73b00c67dee5646d577cccfe7488f3bd101defd008b52d11bd31a36695305197550949da655191b6d16247d2186afe7aa2a8de34c04ace69fcb9df0dbe7e047325f00d5b1cb3afc3cb066be72c2683a880fd86b8d6a29b707262f82aedae0dd15454256f7a744d9e5133eec54bb6a3296246c4329d65f779a1c85ba087a8d4161c367333773be5f71294c71ad88ce726d4a542e9c2d7a483f03ab3e44df0dd6fd8b95ce830ea5dd9745de4a7e7fb751f5a87c0ce39d2eb0c07e53e412ff85b1ee70612e319aa27c3f91df224e98055e4de40333d9b81e59c97be32f8100a7bacf67c9352d4959108a2aac319a1d4405c41061ec6b60ec8a69b622519296fda2a81262b9db04be0d95f3626448e06269b2ddfb74a6cbea082e3cc0141ca24b3ee59ba93a280f311356991342958fd209ba2a89f06948851fb49292d62ca0c54623a59094e550551ee9d46aa1ca534b6b499ca393a361d617291a914b15cd671cbc948d9a726f1b5b5cc4ec3028f95e6ce647d0c09a9b044be8e9836e5a114eb5a64e65e5052b56cc645987bbffd953dc81ea49d369730e7daf9f87983b8a103ba523ac71eb16b41c4b1c11ad636d9ca89d6620511ae3987f5c3c4c1c54"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5880,8 +14420,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "33eeef2f8424d783c321bf75d1b30a57454cf54d5a9c43256db187a70bd58d0a807d807c48ef1f15bbb06d7e908f2160cf36f14411360de927b86bbfa9c726fb859ba05fbcf1614f3f26039815b8663fa715c842ea5613e1322164b37a9e7dd521b1dc3b4cdcdf2787b4aed9853bd1425e951bb16cef49d34fac2c792184255eab68e8c23118baa26a7084ac59b0ca699cf2476689e0bf28dc7b5c7fee4538c0926cc394579e8d20caa0de2548ce9f909abbe6a99cdf4e2ddd7ba91becb620b16262609b07cc2dd9dc7e9594ada4c899de7808633955a40eb3cbe7cebfc503e0a4aa9e89a738ab86033724f5cac153d4fb851b73b6857bfb569cee78c849bf5905cbe09e3bbbeaa5db4b2f13b911706aa350403b6288b53b570ea1223e875343f3f1e4ad2da3755007dcb7cea413dd7d3f8b5a995039152ebaf5617d6e40d01424834c6cbc352b2f76a6b763d8be63013f87741232f6b4c4c67f23fdfef08a4362bb16531dbefd3c7ca514e78ef0b8b7837e5614558c28dfd6fa8c4ad6f11a2b"_hex; - r = false; // result = invalid + s = "73235ac67a72c8ec9bff8ce898d59bcb57fa6ce66745272d93e7c0f8e5beb554c30dcf856d1c81d7e352e2829f8bd5e08459c7e0283fb6173d13708854b84bdd23e3ceb69d5407ff66f877f28c870eda395a34c6bdec3c8d9ae86fa6d57b863a7e5fc93fd77859c827ac00177693ff060a0a4be503dfac5ea59236b8823b6680a58e7d47dc570ba306d08d9882febb8cf0a74803fb26eec7dc18509beecc37999aa69025a5c8a3630f354e7e1cc861f40c831039e0428de2872bb0ad63e4b6a3a509b603fc7ee14cc6793135a6df3fbb2935b4a20114b03fce5eb82a4ebb01f5a4c6b3764ec2374e5e4cbfcaa190a5071089244d3901e96556c1243328c61a219ee72c3a3abb4e55c15bff9d4a159a14ecd173cef53f274e72543b12179201324abe1a0033e01560b08615dbcb29692d7b6bc28b72dbb5ab11ace0cf463558c0232c34b06cf00c3f15974700340f48d28e5fa34ca62dd0a2373b0864c0a2b6de074b822a11a305d3c5a4a0904e49f55fddad24c102f45c376331be2f358c075b9ef0513310b706802306018a9acf65a7c31049c8698d86a8b48ab3fc7fb90e5e39d93938df92cd30725ddd0dd9a497eb6cd8267998752f02c311c6ad80de6619436f178833ea112fd08c6285b6e3d4d1b5029a694f12ed69e442d1d7f7490abfdc3f0cbdf9714cff272607979d97d6c7eb38d2c1efa453bc7aa8b4874b624a96"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5891,8 +14431,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "671cd766a3875e4734591173bfde1e2865b532f48ceb2d8af037335cf1808c53259b3302c883083c52a28d35126969f71f3fa354c1228627046323664a5cce06d58b7b9a947dfd0cc0c44f4f0e26ccace7fa1b7c3b219101a022c6cc4b6b7579cfb7b187d1d56c7d6060c39b248205403b8f64f67a8521934ffd53fe80fd92be28b87ec4bfb602edf08534eb69c77c0dcef1a9912a684e685e610e58d58b03b000bc7f82253ec251edf239b88bbd43884192607f947c66cfbc3b43b10f0e6d1586998b86834f39522ca9fb30232ce9a7715045cb02bb2bf232d5615afd8af0fc5e3c4253f912a7015428246dcf73f1e416860570c3484c561730c852db31f9dd3f3515c315cfee97026e80115cd238b11208772077f3c8e45d49f0d19765268e12d0b17c077a937a3606dada3077f4789a85b29000cc45c6591e44e73174d4ef47bd417fc67ab658f9ae179d2403495cd50e488d679cb062cf5b193093bc6dd101bc31334fc5abd8ad3fe8383f5ed14f9b148e6c4f7d390ae38920da2e10f070"_hex; - r = false; // result = invalid + s = "593391d83518433394d41b1d683a1ae1534a4e7f1216a53d90a88e7715009c32d57897c282614db9829ffd9325ceea0f378e42de7078e6b85d2ea6063c9ee1f32dd3ca1533f622d1264b4463a3d7656367b80de78136eeb638366fa98860c73d663fc235c7e8cedb6e34e07410b18a3d65ec32c9fbe17a80bb404d681ab1d0bd0ce81cf27c3635a7209539509f861f2cb5404db716bfb0d676c76db2e6de2ffd10df8b94064bd1e1a95baf5a6da4f5df07df66fd66bfc49372db8ac911d7177a9e778e72354dabaff6c3d74e4371e7810d859ea2cced9004cc146e737b1ad93e1773c002e46cd77c61c823a84a9c003ce7029600d20ec80064ac60571b3b4412834ec5517a1db890792099551c19449fe53cf62a4d38a967ba1b9d873569de6855db2b8dbfa02af8ea69805214530f3601cb66e2ec42c9ea3380097ab304e41437f214eeabc5b2652e0f07763b3838f0dd3beed1185de16ad2e7f88c557414a6ac12e2a28b9b99fb2651fc7ad9ae2cc21f615e76677c95341da8f89ff803f0a5bb6b2e12766dd658600df9b63123cc81d857d3adbd5b053b9f6600b0ac243d1b8982ebd4f5db29c89a09770fcc226fb0784e8553d0aa6ddca06c8dfd2af9f74985c4ebc69892285b8f6e084097e56c6723f2bafa789310958a04b2c1c506e128ca222421a4c0d30a2bc34eb9657cb2347b4a6cd7e5df4ab19c8a8c703d996ba8"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5902,8 +14442,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0679679d5be320641d3f545816d0b04741dcecbe8a6c0d1af3ed2faf80449ed184edc4d1b58c54173a5b26f27ce50d8e6562d9dfa425cd732fc08f47eab900060dfa975b2b4a7b30403557950cbbad3414e61cd7fc004ab1ad7658840d9eb5d001d82fa8ab862ccac8eb2a96fea79fb58cdb05a0e8d601e95fdaaed3c4362d1d6a4e8a396668f9a5d119ca32e4a1c926563231e39bb8d3966f2d986d8ecec22f361c7430636bba2031c60a8eab06ae56d3c491a301a3a5be0e0e0a1daca0f0c90945c2b81d0c873e4eae4b1790c61720f0f7df2d56b9c3a21216d604ce550c547e75bc59c401ef1ea588aaf43b7a17bccbceaa47cc62090df5a7d5a0e908c25d589d54be59b2800a5f6ad29599a01a51b82426528f311824e801babe52f2ca2fb058006f61c7e50b621fd44d4d0fe5e4cf92b48afbf6c37254b82100685c6f57b0ff32ad9a17240788366586a5c3a9458bb5169026cde4f703373c7895b3c86173ea9f24ac89e7a218bea90c1092aebf4cfe7387fcd61fd1f13f3230193a009d"_hex; - r = false; // result = invalid + s = "178a0793c6d54d6d24535b2feeb23c9b43bb943ea9e9d3d1eed262a230db8e71ff6d478b6f786c1f7aaa8360fd303de91c47a71d08f344b428460775b854de7aab8cc70b3d98cea8a6d5cc3f1016cbf68b0dd23f0934de0a1f97bb03653a9e9216306d2d59f2ef9908999dabcf2f7aee128b0c176c36626030992cba75e0c86a0ffcbe10d1496b7175135daa5367a67643917db2ff31708c3a35c3372aad0bc59c55935d6c404b837cc28f758d27886f33ee1ad95e6db1cdce7e27397922b586ccb21dcd0d9a03d6204fba2058c608bed9976f2e7bfe429371836e9e011f01ef43c8edfb04ddaaccdaea9a594d68c3b744e836ec710b16b7a94facf43dd0b1f088eabaf1e868a5380bbd945b0dcb4342171ec31e6ff6c2e21976bb11cad1301930fa3524dbbb23bfb7871b2bf2ed9cc43cc6a124788228cbecfa0a99d7163276196b3f43d3663dfd1020e0566f34e04c0e7df69318706ab7980d19eab1fa10eb1d94cbf1b047874138f66a34378a4a94e1dabd56a0b2e887a8d6e5a47e84c6b120fc424f77e3a06cae228b9c1cf7e54b390a84bd280c77ce4c29bc972c69a1f2e43a24602dedc4d75ef05af64081c21b4e52cec1988d3d135fc4d5797931849518cfca377a3758610d4bb2b35bf030f2a3a0a4112d1094e3e9f74f168cf434e5cfaa73fcf34095db0358091b6219110efa919d935b5cdeb550076486685e5e23"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5913,8 +14453,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "5af6ce6cd7d8cba3c9be3478cb3ffb94b16c6e6880a2667790cfb8818ac081edd53d49cae910f9e3461b18087504525fe0a97f8d6536829eeb16b0311bc0a07b8ffb061b8d749894b0ac1628a9d8bbe62f69fd1b19222483980145ef76be38f6b497fc1749387f99da7fb5cd0ab7e1a6a186a199ca9f86902c08fb495b5458198bbfa57637cf86fb4b12f7b8e59e0af3336e2fbb2f82cf36193a7c06601b010387e86ef6eeaa5aaf7be0a1b9bcb4a23cfff0fec5f3ab645cf9ae47569cd15b55811fb65be2fb83f4c2f376419fbc6d8a2e4c7901a97c660a05cc9beb925a7dacd91bc97eaab1a13f3728187779635c6b9f706e59a1589ca2974fd1195cc07528a024aa07624aec1b0fa39851e77fa67d36cc11552f4c3c91dad62aba44b989baa54a4dab606559b637b6fae9eab10af9ab5aa156b2bbb169a3a8df4bf546aebcbfb87b620e3aa4530e29b9a4a2e18d859db2c6ac8378ea9b36c3c83d292dd6db85a3e7a5f2580d2615027db3731d80c43c917c2771667f2f8fc2a105223fdcbb"_hex; - r = false; // result = invalid + s = "562db37d869a7f9ab9b5c3676d7f864a64d5b63a581fab80261b779235a0e5f757f3f6123416ec90c141b0df89f7f04ab50958458c64d0dbed7b6de4b2848de0e5f15719a4f324a0ca249a947232cd52f4681d3e238a7c3ceab38ed897494819bc0fecc8976f3c71a00f05b5b34bd75cef81c5b65f0d396a37023916163ccfff354b7bb16b50dce650c2608949d5f05a1e8293a0df3c9c36da7117ff69f35dfbdc7cfe797fb00e4961783545e54ec44909c73df9a5339acda46b829a5e9a09e3e38400dd565a095ff0275be747441b4b7b52b28fb3822794f0b2de5b9899091fa051db464644ec1056452b2ace2a91d11ad608e5c1be86cd88e69fe44cbed56e05fef6914129dd4c211c494d97945f7e1dd4392ed0d81467be6ec83e63060ddb15313996cc2eb4fa1389b3c1f3a27e052bddb03a4ccfa02639852668d67895c65b91bcf95475e9cc244ac68aa5fe06a6b907fe0ea11680616bbe6442dbc49dc95b55cb05aa5146d8c709a0177530c497e44743c61923709ea01fb70aed651f14e78f1bfa7b2f1f0ee44fdc33766cb360c587046a574386cae08be200f62801797b9868354ae0f86750a00a334227a298022b71bb653c71f0ee24c3be76db9a30135715b7a7cc89d923f37e349c04cedf0c9bcee53baeaead55990cde8007c37e8a3b5c5831f64b67dc84c705c39c6ecbad5bb568f339142e0e00f04f695fe5d8"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5924,8 +14464,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "369197d34d2131d501babcfb49f789ef8ead12e732279f06d99e87336d840294a40ba22f7f303a4dd2738744e22779ef753ae9eb7bb996c1a10f5e70702d4688334319ed10f9d5159db9f4f58b3a7ad43ec531cfa9238e3e68b63551f4809f6619bded70a38d70b7fe62e892172d1994be13dde2b2c4ac86fe2ef5897412cd665ebb9e26d7d450b05bffa1d201c460fe38ec76b80c7a3671be4847535226ac9b8d8cbd3ff0df537eadde670444cc61c88724178cb4513df04e10c5f0e5ae6d123bf8f966d7cf777eb4140a3d10146ee687d460414f6c883184292a9e3bf052526433d9053957818188a2ee0a6ed8a0f2a4db321123a367d2424960ac462bcf109f65861cb62451066b7aefb5283a6ae50bef219d151d9f23df8f66fc0a8128219770fbaad551b4c7b02c6b3e20380f1e65182c2db933fc5152da8f22b3372dd97f454230b3fabe4edda79562147df5403824d6f44ba5ba00f8649db460fdd29c9b67d32b0d88d56af66f06272a401bf872ec639d5c79acbc020e930095d52f4c"_hex; - r = false; // result = invalid + s = "3f1c24776a3735bd37f0029eea757751bea40e3e0e7a96cfa7ec44c94883e8a29f231c9d002bdff1a530326c8f5f4335186dfcf503e2949b425d16ab08c2242cb78fc52e6fb6e07f625f873b969420962a7f42d7a19200a5810f59177224a2168870f5828f14b31786981bfd992152c2ed0d5ab9a3819840dc449aaef888687e36572291344f404ec53f0334559a899ee393578b4d3bef10841bd686c23dd9a8db3846b75cfe8c26d3c85d7e1133de31f6a136ff77bb06ad2d5ad702ced779d72e5bbb7cf03d5e9294fbb1a70ad8e9af834c8e4f3b2319d9685268fab44096833ea8c9046b6d3d421fd9584555a547279f1e672bdc35414df018aa6be93067a1fa0d7f2e43cae5e1aff13460d90a2a843a2e040a6172df8e245b4607f318761de01847e62e4206768d39e4a13754f07cc50f59ece516e9e1fb82c0ac23781a5e5a72b7dd476654ae324d18c8f61970e72c7bf898123d47c89464902182c9b41318c29f6ebe022f080820a31734fa99bc079c003a1efb5f091c432e2da40b8b9d7a21c3a2c6f73d263232590b98182c9d8f76028f90ecc95ed5d756c735b0c76eb679f7d13d48cb40fc5c560ec05571db4aa566d864bb159bc95dfb9b3eff6d0e16439560c1616e482a20f0e526dba63c545cf3bb7e14a8e48bb9cd7d0a207231d26b6b1c1dfe1f9153b520e70f76fdf0f6d964dfeb74104b07e18547464cc9df"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5935,8 +14475,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "935c94aff85633cf56d8e3dc3f58edf03cc95c14e721d2f311f944999b8b5c413f37a5ab1f3ef809683a436d3efe95a679828b8bf6f2d40b17b553cbfa7f32d3d9cbb6a99f8f41efa09a4bd2d17111277be2121c2d85da600bc7ea8f26572bd70d9b66c02a89748f0d8e14520c0696b7f0d18521a632dc9620c19d411278b6a13eaeab0aa84275aea8f548a8ca25b8d59775e61ea2cd4eacaab836337cd3656629c6d896ed289a14c109a4019b8897c9b6996ff7b20a2a1db2a58ce5728a49806d2630b8b64d985be2c2ef14c8b791269bc387355f646ddc19db25cf64d2b2b6eba30bb007959cfed2cac0292dbd207126adc90b8758a65094068fdbec21ff2db53aaf969692e7d0ae22ac850f853b2892290ba6f198aa6754e713f549172d154220fcd6996deefdbb14c9329b015448060aa0152a08b4d1a5e32d6fc5bb60a411ba8b206fecbedafa9883a3bd5d9fa905119656563df1d2d08c24cca881a6ab2222440b64bc12a859a9d20c7f9ea02322c436003c55723cf8678dbc8303f97c"_hex; - r = false; // result = invalid + s = "73a43024ae002cd9808ba8e37b756aa8d1390ee40a7840ac2baeeee7cda3392895db4ef31713c2fa3999de443eeb7aa58d0183691467f9e47669923bf86156d482b2fda9d9e5d4d5f9bb48f7c06f66e0e5bd375a8e4846b31797878b799e447bcb89f4c5d562e13538668ca9ac181ad042949efac8b748d80cbfb0bcc10bfce5b9fdd07710a4634e851a7a91833ef8b9eb5c18d6654792fc2c33b97b66e35154fd9906fe8dd21974361682884289b10179219f5326c3677b5ea24ea8ffd38cc38cb953ec8cda3d831d8a3d4026c8b5fdb8899fa23aa7801830f8649148df88ab0c3759b45a8de5c36ddc247c7470224ba75f6e80de817d0f82c118338c334eb5a2d3a81f21d99233b5f17960b9d77777b53aa743e3c8969d5555e805002c5115cb184358dc5df431bfac960886dbce705379e14ec1fcaec436531716d0553ac5c3ed8a7076c00de7d1e4ae21155ce6cd7c9f79495e0f18594098f5bb880f1f8070b532e3101887f720c80ca33e2420c6499170c79477befeb68e59142f7c1682b8da1bcad3aa4548ada48c20ff3c186f057fd1f10073dc4d34c25d19b31d29da2743114b02fd4cb1a88ef40a80e986c4007b73a1d45bc8daa18035af2dcc3c508d6bc766ccb62bd1d31b4a04e36466834211a84367579b2055050de67efa66e6cf7f6e9eba71d979ee2247e885b4d2e56cf250023f9996f0be80bad634de07d9"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5946,8 +14486,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "71601b43bc8ce6f6ea74985843de5a2c9f71ffa37bde9aac20c59abb025b0dbec4cd8d3623b515f0d098803cfa01564a2d319c93d3acbb5e3603f53e019ce2cd2975905f9faed64ea4756254bd064985e5245d051ba7756d4b1eedf928f9552e9854b0626639702d3ec0c40c2346af7572e86c128d1aea0ca218e63c3bdeccf290ea995bc2a0bc7eb1229395ebc6b9f8f9b14f3d5c1191bb6738ca1d250965cc80c73b3fbcef29d08767038c5c9ab006b100bbfac35e15f35698f6f8c6a1ff3c9039bf4ac984e2429540818632bd02015552e9757f363e8317fcf8998a55154f6161b67e00910cbc736daf7fe738443a3ace0763fd6505cfcaf11368dbe5d585206ca41d76e39feb68519d309dd92a54dfec5791311f5c00bd0bdc7fc5f2f47d558f51a5f3cc2c86c33958d118dfeefb8b531fd4142892e28ccbb2c574b6c115169981af4c3ce6e019fa27c2efe4aa34c0ef104e16c7f02a3b7bd46390039c7d4ccc6b27deb5f6796714d67af88456a8da6395e670b513f45b62ba0aac65579f"_hex; - r = false; // result = invalid + s = "7d04f77cae81e33e48cbc2a48cf7da99543f94aaa1590190ae1fc3ab3f091165afa296aa6f5464e7c609f9eb39e11413349259ab8a1e7e746d560868bbf4e4df4c1c69720d25b83c040bed3b0941fe75efda632cf2c48f8cfbb92063581b552f77402ca63b82384b8828d0023dfdd780831244ac0e7c94827cc3fd4b6cbcdf30f0579dba4c1e34346dae0d93d37eb95819f071dd8e6911d855a76e9aeb921f5a9553a466f20bce1d3412a995be20f9e7e3afda7c2ac77a89b70a87ff8188160a2a69f99cced3640dc46de7bc4dc03d34abb1ea15517ee4d9d73c12ae8331dae8552d10f768c04657e6b4c00f31789783b8b8dbd2869f29842894897c94962f8b8fc38b9979917c87b047f9b829ef8fc47a0263161987dfbcafbfd2607ebadc9922351d23d622faae4236fa9431a4ac343429a3c5af3e307d5e21aad3c655e2258f9190c184d2daf13fc7251d747450a1fdca0f957d0065ff7ad8c730b65f196d56fdcf21b7e9582a3bbe78204768622b9ca1722e6a831b45fc790969619acbd536d9fc5332f714b19faf853ddf12ae6061a3746fa6dfc740be893e4c576504480161d9f6bfd167111b63431fb42765561f899e4d0ca0cf0d23e558bb7333276cad5fe8374ac03fbc56b854353932befae894a75bdc0d14d68b5a249548d5402a1b54d9f60e676d1ad98c47cdb174733a1322522097daee655ad016be7354d9fe"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5957,8 +14497,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "241332a0e34ec700cdf2297c8994ee0cfb848e6f5d6f31216524bd3d40b1539ee5d4955d405497fbf19f9b3681306408a4ef5eba87e75799dae8e86ab050b7e78ebbe9a2be1e02f9cec519a51e7880a7f653a8327275bf9a2a298678493df013d3c3a191372f5f84aeed7abf72697ade3e02d521655d2d79003932b92e26ec22a9260606954ed32c536015a8d5306de8354fec6d51b48a0f258e5742eeff0d2c76b86bdec0b42a6606ae043e86b2de8f4242be7ef65b9ce60fe4f798a8aa19f947aea9ef40fb4a467d7c5413d526aa9491ac9a98f9e6342a154a99264ef601293cd2d4a979ffb5dbb5fcf79ee727f87f9cf7cc6570dd88d60816232eaa57dd75a7f0ffc8160f65715fc12508fbf00134964968d33dd30742e93107eb74c3721cf6615fff5ba1566844ad6859e028ce769823f037a6205edadce32f3d38bf778d47c36eaa67a36cb53f572b1beb90622e5217b0833de3e6f8000adea76d4543c803aa707932105724706ca4db008c644336a89b3ae8f196b7f2b3ae306e18176c"_hex; - r = false; // result = invalid + s = "6f722cd695714245e55da0c53566dac19d8abe7fc450fed4b18e3ac86277cb70d091904c1b91ecfe59f4528495f0772f22773eeb5f48c5d9a0c2b69fe81022854f9cd48e0bd609553c63ff60659c89951e52d7213d6e9e5b2c56dffe442d0001fc982af83bbebce2ef92f1259988dbea2e10d844d9c52f57b6d9d82678ca1cdc763cb01d971b4eba586ea6e8de4cb70a502321d4c254ed811e862b2acaf19f8e524acf247e6a4f4510dfdc3752edfdea45a3046e8db5e83f9cf8bdbced9e5e9d9be4a5b64e237059393c5b13702951db3fe06fc05e477aa24fdd9429fd5f469f228ea81be9aae1029b343784498c51bb72c8f33bc1785ad6e73b90138b3572f5173aaf958021d8b3ed6b3cef35acffddf37743e82942ab7916264d6bf5ff9dca7af6b59802892573342d539d2cec5aa44a83dd30294edffd618235c3dad4345679d47d254b65573866dc9d642ab96d1fbed87394fb29bcca931ab66e2996642ff8a7552333ac391d4d56c23393916e66e9da1b28294cae4690d1b1f9e3173152fb7ae38a1dd4ef064cb4f99a472238ef0888e5f9ff565b04873b9ec88b96067a8c371e6e8a39236fb682652454b38da10f37da018233e68346e67f2462157e3623773316dc2b76c458b52428df57df7e03af815f3b3c5fce0db949c913c0f688cccb23f825df43fb098e7a5efb1ac6c643d20f5b5834ef931c84109acb5e33d9"_hex; + r = false; // result = invalid - flags: ['InvalidAsnInPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5968,8 +14508,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "60aa59b8254b47199db7b29de45c02247610f3cf9cadc3f46c969aaf36ea1ecfd7aa2c6cf626a5ca11c275485818b2a433e9648c3dd8f6e100d530b215e107bda795ea13bdd3aed87b5edda40a5bb0105ef3731b44341b6a3300409db7b1bf2dea3b84507bd5fa0d7a11709ddb106df8fddf1a9625c64552b875ea96d5ab33820b9acc94a30f37e8817ba1d757c1555795cc82a26c6adea36676eac2934dd3d54e1bb0fca770f6051c108de1e8cc04c15306d94b088a0ebfafeb93bce91e283ef6b4ef88ee8abbfe549eaf2491f23e3ae13d3319c73330237e06d2d00989cbd9d9c8a095e82534e14845caaa66599d996df6b583c22c3e73f747c5e597b6263efd3d484fa75e227873f50c993eff26e14bca16e2df14098854167f0de73a157df996d0beb2aeb6750b5743b0a9f4d685ee8cfa5df01a4b924a679d14919d2753f8935b82ba4e2e4670097cf11bcd59a613b5f34a2963dc56f59f25f2b8b91e9a00a2cecee8b488d860044dc7e10f82037030d62d48e028022e7c3774bf3c25ca"_hex; - r = false; // result = invalid + s = "3fc41bd081436118c92760c8be322774dda598cf23436543d6b68ce3e1afcb1d7f564226f5d4ff2fbcbaf468e4b3118f760cd65d6d229842e8e3047c5a5bc09aa592d03278ceeaad1361a30232b687f5456cefa74804559dadba591cfbdfbc03960d98039f4a9da94e84cde5abf623ebb2df333711fe32066fee0dd6fd6eed02da2907c0e1e81790b6743eb36c48a1531b4fbc7ec9106c4e3a534d79a5ae991960b1f38db5aa2a9a68eecc90b71f4a60e8d0913f289cffd6113154af7b228fc5a62c20a9f2132d2ec9f34d23cc3b41afcdebb7238d86da74ad79c4894f31814b1a4680034f59a5ba2c5f24648511e8310a6bdc7e0f65bd5947abd4eec572758128dd5f5353bb6aae47e072dd2907c2779819514242c586ab63c8fa560187cd360269f2025d318ae5c2e9093225d2da0ea222d30e1ec3f621bfbfb1c9f663621de5ed0cae7a2a7ecd13572e5d14ad6f62f7e9bde79adce69fa5f2863f03c9b493512f770eef1ec993c971750b9338e8e1ddcb058d8b3b0d3c781b33bd93b01608ef912e1fa41db7cd5b040127dfc294ee6afc68dea21ad0bb41d25ca23d8305f25fc18df861183c26517763b2b898f52ebbcdb1916136e5dd4245e3a603f11d581fd95088b0e71e47902f9a3d9841c984805efc9f6f9d0b33f7a5a53cc405f41dc9435bb5ac99ef79946ff9e0b7793b2a11968756fd07ceb6c78a822784bd29f3"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5979,8 +14519,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0d814684d79c28bc169da20859fef117d2d6c98a9c7d52b788d972fc098db62d46f52ba2b5083cc7de5cff0658d4266c113a8b35cb3bf04061d4c6ba6b7b4cd67eeb48d56101555e4fb556a6e90d513ebe468eed8ef0202118998b2a1c0d9879b14367f21d9b4889b9f2b41cd260d95f540dd8489b78ddec27999ba507da902f60fe1dca5f7fef00a85829166a1839162b8e61436bf6723a136d765581963b812b0005b4cbda844cd76c1054c87f69641d5268abe4991afa2fd98dead30ba26d747aedebf45a96bd1002aa3b8c86cbbadd86124817595f123a39f9cf3fd26543afe54c6fcfe170060af7aa096ee2aa16e206303f8579554b7bb1f412062eecd486219c94798737e9ff75ca2c1f34cd03182c9431382f0e12cc7efa13b1c5ad367f34ae84af42b4614a7eac8ac7f1ca10695b88bf6ef17006f06975dfb4fd02731d5cd8a6e429515c4730d0aec054b3533d5d429150fc9714665e3881c25f5850fcfb3e8dae79c364d58aeaf2bcb0ee5d899af92adc93d632eacfe529ff57a0f2"_hex; - r = false; // result = invalid + s = "04c3e789468847b21c6c38d5b259df8fab7aa03e02a2bd8609fb9706e4c033633bc42f25c8c091c14d19877a53283f48d9864ec41ba5d74e1adeb2fa20f3f2ff2a786043fa00fa7d2d0d221b0f50eec6e6a2f1e4c67ef1127b3000a6c91137801feb76262728839f060aa5dd99b5ffa558357032b19254f02171b3f0ee0992504ffece9f1d7e56f41f2dcebaa28ced0a0e65a9f701176ae77f769d13585c097d1db5e9e89ea419882403f47cf9f2709964d0173a9a2f8a1eccbebda91a4013455aa99ed2677ad4d8b34359e71e91f4bca09b3eb236b101965a8258bca028ee62d389a0c1d19eb3344a2a62d621febb2b0eddc9d45f576513b67d31d76eac4c6bdb8598893c538cc36216d06688b44ed663fcee3c0f6e25b2ecaf034857c47be27e668a8b89dbfff652715bea56280c2883da2737cc1a12e6a8d397609f70047b4c0956ea5c9adc388990f0015f243dd2cf6fd7dd95dc2dd81ea1fca85a658813aa38c28a53e84a075cc69d0bfd87164935c0edcb77737fdb9cececa896db43dd45266b0b3b4c873404747150d6aa5d3cd367ffea346169586f03f14c8a6482111333bb11cf69a3eef7f8210a750958aa6cfff1cc1de10e1f7b81532af5d06e3bd0c90933132e6988eac664841d8e1bebd7c7a5cebd67b894a3396eb1a556a8b3545ed7353010bdc9840ba918c8cbfaa2b85572c5772c4f52592a8eceaa5ea307"_hex; + r = false; // result = invalid - flags: ['BerEncodedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -5990,8 +14530,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "550ce3e78b5e1301a0b375e5c6bb6ceff056689221188d00c6116eba6920eb8c6aafab5bcc11e52984e05f68920d44be9dc2356617d3e7ada79d51865885262defae63a4d34b8c003ef5ff324b59ed6657dba99765ae425ed2c9bdcf11f41ae0164a44c1c41d98cafc66ff4e916390c42c82244196887d18121eae27b6e21c57354b0d37e160f324b95e790956a5093a9283dfe9a72922cdfde37d15bc317bd05909ed8d1c8dbcbf600fda9d26c810da486a865887191e1bfbb21a68c17c217fc3f8aa2efde650fc8ccd3fe5f6d7270231ab0a97e3d5f3b63981e09d0b8201ceb649505346ab22f664b9b6a63ab088bf4ea01fa26142ea3795161f933164bfc4e2412a2961bc09ae13257df7171cedfd2fb48e5a61034a2494b3bf70dc51a3577de4a948bc0bf35036b0496cf79c9b4d1bae0e9184068260189a6b5531715dd47b9e4f011622306ae7cccd7743eb42b4748fdf46bc5e3285373b385b5e38185d9990dec73133a9b88bd3d7ef0cda141f2c6704ae967af791056ff249c3ddb7ae"_hex; - r = false; // result = invalid + s = "4cbbc803f71650e614aaa6ec61e9cd25125d9896e9014bd1915d6a31bf37e47a02789ca25f17f020346c25bf818db9bdba1a2851c099a42b673d332b044f085b04b102afb739d87cb716ac39bd99e71904fa0ae2c65e72bb81cd0df0aa9d2173e1892dc5b04c30dce47eac83696bee364dbd5fb724f15212acfcfdb8124211b9feb4a8cfaf497ca1b788ecf8d6854cadd89e77cafb1b9ad78e25b1568c6eb086b24dcb892f20de2c9fa3aaa9801b7f93933397e76fd76a3139addefd202a45eb35ca67ad936c2978004216dc81e78829f1247e4c05b2c2a2f0b368b4f8412e7c218d3ec392dbf01811b98bd3ab2b300e0f728d8c691298aa5cb78c551a1c40db2bb968752fa8857343a384f3ba46a9ef8444c85c060d95319557cd1b75528218a7fef6fe949a1f2995fa9bf91783e9dbaa356bd4443254165212d4f8d9f6e29388c4aa6d413ac795e3a1bca55ed71a49d653b6fae41ad446f76d1c5f1568e5d1c724913dbd03a0965fc95c13f5f8562a28318c0a85c602f92d0de561a307d81d9ab9e37f1c3c9dc2b9281975c8dbf4a6c4e98f7a32dbfdcc8e2f449af84ab263fd077e7672e2e65332c85979e1b5b3ffc506e713fe262493460a1bf7f6ae93a8f80f3ee5ff88bd430c5e89f68b113a0bd95298771fa542efd2337cc0dcfcd97eb13e699b37c11e447c86493f71a94f02551ae291d69d18dcd41a34a21179056a"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6001,8 +14541,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "3b2eb94128068de15497d0fb6d8612fa6b900a7c8d38512eea2c579b9f62c45d1bd198ecbc5b2facd875bc0291b6df8de78fc3367529d2e36996f14017f3ef71883d3b95f2525f62ae32d294a170f664d3ce1cf5a5cfed4df8b5c658e45ed65a606b238349cf1cd53d6f74278dd8e0d898c1375f007b8d2777889a104735ab7306df6751d9539447e86bc106e83ce6ed856505e5ca3d9eb58d8f4caafe13a07e2d3670b3934f5a08d1c76f723bf2b2130fb8a99393338912bfb06fc6974bb0493a43e14549927215c4cd0aa76ca99754fcaab897f2cc7a149caf0d2692a82e91c5ff0bc9d33e2f6620544b7fb0734b304df20a1e4389f1da4d8b1f40f019060708a5a05582606970a30ef75606a1cc46609615404b7689520db0dd22434052d6348c01cf8d7a2bf80e19b1799e70d049cdca517f262f754e71f000bc0f83bf9fc59fe3865a4e75f275d514cced20cacf10bdba843b824bbc1c9c9c22e4a8e234be197cf90575f132e1c53cac7d87979a84c612b6ea0c2f0f1cd1da0559661e73"_hex; - r = false; // result = invalid + s = "38ecb3ecc1918c8baa4cce4ba937093b4d7f0827fa8346365820e7b107ec188d0710a28f9caf122f6d565d5f8a02426ae26cbcce141ca27bad9d9aeb796867f4d4e09d8bba5288573c50c18380cd9649257c8bd254bd50282047cde8cfe7c7490b3e61040ec31a5101329e3698db0db2062426c6f5555bbb6688c0e938d829baf516b924402eae319a18bea829e51beafd7cf09301987d8b7376e5e6b1dd7800bdf15c24228728ec1791db08111e6d264b282c584d1885d2e070948410e55f19444ab7e2ea8e4eb982cdee6a5edafcc09c3f03ee744092bfd7d2ffb99071bacae1cf1cccfacc6e89d9ef4fbebd7cb380f94b5b5693d744183e1e93b22a53f2b380910e14201fbeb64521e52b552e61f1b8d22e129250f3644759722962958c58c33526e6e1e52e1de3ffed8be52aea5165aa07f74980dc06daeff5d01d8f303df7119da13b4dddec08200ebe25a94738ca1a69d13a250ab33e11c4f32887009787755eb8cc581817b197096ca6ddbfd5010e68cd72fb15a5684b8ec6be7fc19dd75f63172591fa9492cbfc43793b924e50ce9a1f61a415fb82d524b4b73d403043f1fc0d9e9d35463573ae83ee86cb4de3e96a038f00dbd68e77f26a0ce5430d6061ea739658809271273f6adebe004510d638a31ab6e85358027ca338b1f4d2743a6756854b7950dd28042e8580aeff680dbb34427e106e60334e97e0ab0e2b"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6012,8 +14552,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6496f96674d13a493992dcf6193b557680962c4152826f35b82befb713a5e86b09ac350b36a4b27a730112b91faffd84eef3e032628e5a06e98600e49665c9755b2f48161edafbc9ce527e3403ca919e1614708a7ab697a20a398233fa23f32ca77a9c81e16bddcc4058015518258bd48b955fa81cafa34282bb5e6d42bbd1c82fc30ad3a7aeb1d4381cb2ef951da28941c4b9617be518dd3616a0472669c25ed43acfb5f55e58a87fa6181337efc97256635e7c678f099c2d62f78aff5b54663061c0cb3c6c330c43e8a4c4a50a8229839ef6ca0c5943e87e9216da644aedc80c698f9eaafdf81046548bdfd119cfaf95667bebec6ce029ca0a4c96c9a17c8ef735d43af9c81bc82a9317046eb8444a765cd4cd848e61370b3014af893ef92faba5a14b4217f076872d187d8de12381ddb7e30e40abc6caffb5b267067c411f9d104dcfd1e395e2b73c67b1d884690a6a4ab58aba1e7c720c187604864440b6dd87d85188e94b0c6fd99038f299d44e161de8ca7fdbae62c3a8b6ee003afed3"_hex; - r = false; // result = invalid + s = "0a307c169720747fdde454d7ce36df5316bbb18e47775efff4a9e708d305c5dc0ccd84ff9fdaae096fce421966938b4ecba8341f3974cfb028e189d97c47c06b9a10e78c113cf8c8c117c56ad68d2cb5442f58af4d46f757884170af9c1f5f91d099b207157dbd2cede179b0dcb736ad4afbfd41a28c2ab0fce0d982f3255dc4cd9e916bf1cf3b8665b8dbf92c9a11c883f9f649293f260864f990280d8238539b9b617585f8ca169fb28b573a92f2e2104f4cc721bf9cfcfc003a34208feeda023a4c6eef2e18fde927c986b833c70276203730bfd12823212f8806d5b48ae687a695a7b1626951776f38a49922757ea0ceffa9bc3de37a5cd905fd87847b15a7b6c04e946fdfbad9c1ce71e68c47135f43b76d263ac363af8c1d2c579dc2b586793e54c11a944e6c550dfc45354d5912f4ea2ee776b7ce0316a0b2f55e154b53233f72a4e74bd41f0cacaf44d7c6e74cc317399840d0430946d35992c88b631b155aa4d332abcab9caa9244e78134d8b221cfc7322446bff136e1285f41289fb297df2b9e185088bd59fdcc080a5eaf18f375d9eda6d52192c068b6063a709dcb0a30ca8ac41f767c05cf6dd43017df56fa007547135afb3f436a7d603d9ea10c4db2c5e7f829e49596e200d66885ec695454bb55ef0b00e7eeb9849a558cb79b0100c25995bedefe2b0e9f034361b29cc91ff0efa63de0ca5d262c4d4cf05"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6023,8 +14563,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "04b2a5ace2b1f16c675b02da8a8532511a25d59b2f37031baac48b4b83bb434df89ec93799ca6e3a9125049c051a0f9ba89dec99931cab9786c2bac52b2a06a6250ddec383e3290f423ba899869b4eaab192793d15156b13cee7f7d618ba7a6acf49c992d381b59be6f020812d5a0f90d12814ebffed3a02994a91eb3f2c079f03145576869878f641ccdadfa2eb946c84c122bc198e3d343f0bbd6b041701e7a20db8460a2ca79d35923497028b6abb3d72a5a6fc4b3e9092c2118e248140ed2526ea7b5ea56a2ef04bd40ff27436c7ceb1b3b29a887988d009167dbf2b0ef5ed2191d14ad2eb2d763a7f03e0d733c1f2c27e4634063c39bbb0234189d72bc7b08695e4b0f5b88d5a16f02914c74dcdbe55e7f8a773c9a7b9c9780a2d2ff0b0ba4f9adb0bf263afdddcf2fef8046c605d9e0ceb8b3ee793c41b4b320d7c71f9835dd6a604d5216f55c9a83f67b8f5bd28de1c7b499b7ccf8640c78538c88e00edc66b2d6bcb24bc4018d1d731c05d250d4f3c7b722b38c74bae05c1bae4976a"_hex; - r = false; // result = invalid + s = "7de032d5e884acdf828a1c1a5fa1d9cf5e46c2ddf45ca53da86cbd78f4ec909e14c7af6019810f701063100b02df6ffbef436e9a3ca4c92c2c6da93ecab8ffbb83ffb96d886a78e8348aa45c191245ac895f93028bf7a1e72f05c5aa2d70fd96d3c59287eae07d4b5625ba2f73f2184c87e516a262c702c672e0c7856e509a3b7decd0774c0c9425bbfe13b42cfaa55dd840d2547e60e874e56ee392e1bb49cd16fec231f012c16634440efaa871b881583966f55ef0dbd547ef26498b62c6afa344ca60e6090785b1e8bae7443dabc1d1bfdbe72bd616eea4e4be49bf82030bacc9996891cbe2557d06e1630bf5382bd9a8108472a594b890cfe5e01b66b8c78ebba832e74000345702c04a0fa4f3a3ec3b9d05f9275fc9ae1f72697cb468e82798e979074f4076921e0cd315cbde5365ac9f89e02f4a9cfb7a88fa0c98d6daba03b47d7dc9d45c3d85a4641005493dc6ec6f894af7790c2df4f84cc8486fcdead585bc6b71b49e1e32feb0b09ceb7103daa49d656decc646327d63894900216de76b5f3a301cea8323633571caec20e0e904b71432c04363d3622067f8ce290790ac4293c38dc29df8e34004028df71f8a4458051f38bf9b5f707c53f74bd8a3268924c1aa88cc2cdf3235d2aae89125b84c71069c9247dba28673d1cd13d15e4f6e9ac818262bf009f86491114ab7cb3158721f4518b7c497b6ceea81f5aa"_hex; + r = false; // result = invalid - flags: ['ModifiedPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6034,8 +14574,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "050789f05b63424da4d9bfb1bb9a6e816f2b77eadd4e127b2e0b2b5d16e0a85b9af3a7e42ec2b862f477261787e4b65d849254839d88165033edf953e954deb1ad3bc6a0b8e45b97ed267f8104e69ef0db1c740e5e587a4cc17f48e10fe240dee9666a4e71d7c58e54518a5b1d04cfcb9b67e76374e7974c44c88b9b4bcd7f8e5a10132745f398e3588b6dba5a4d680ea8af0311f9a3c78ecfae00217706a7d7acb187caa7883b73058015a2b9c3a663488e1a42ef143337acd5a2563feb38faba0c1c0be567481107402715ed56707d7d0015f9cdc38a9098d4aa9806f790ef826dce67bb766c3ea6547d987a00d5ea252e52d9f536ed2b7fcd39abdf93b43bb5110d3c472cc5df4da021e82ea132cee2646a302f6e5c9952c56eca12bf31d29e32bf810c9ff5c0535a9ea3264223874e1406ccd372e05c0cfd95b97cfc991a13c63178bb5ec5223e3b25e055188c77bf05d1c337617b83da328804ede26b599a76bada43cca9c3b271db2dccd7be1259cf3edbb020a4cda776084508081a24"_hex; - r = false; // result = invalid + s = "06eb90bb1220706718f2bc2521d3401b93843f801985dd72bc4f270a2dc03db16f52e9347f27145cd3791c7b1e2fa63f1261189df51fd4edd3457a3b8f6886a08147716c9f17eecfd3de00bd0ba3b184cfb2e1da3bfc9aa142e0839ead654704e8f711d692db87b5d3100b08200e0d5da781ce5fb3d5a4899df1382cf7c950438b539b4bd286375951cb248e968a7eff7a050692b2f0fe5d1672aeb262b4c54b648b9d769e25c3e9eaef802d234ae596f67b596ca5c3d054d52be3843849b7351bd5df8b4850cdf13eba560318d52312970bcf9670358dcc9d9a9bd74bb9cd6c290cc8647e1ba309d9bfb807c3073e80556249f5d3c2988cce4b493926cc60d501ebc2180d13d66971634d9b079505288f1589866dbb029255f3e6ba36305491b19f16189ffbe2ab72dbb6022c986adebe1de8cf1a15f2cd6debfcf566ff815f184e5b136dcb8ad23bbd1205b8b531b86235afb0f8fdcd2a0a01e777df67c48dcb4af7d403eee06dc6fe71b423a65aa59fa17cb9bb95f411b4de2b83f8721cfa78e6fe60f931ce11edef585a08320dea05588ecd5f04825c54fb4f3a16c8fb52eae82865b40a7dec718f295f322db3f1855d0054a4319fcb66adcf7dc20ef6e483a0467e53a9e3f6fe2c946cfd6df9feba17d475b7e6ccef693a360c35db373cbb95f297ab7dbe50572d316515efa5ff383119d7c5b8579bf2ceaa9dbc1be8c8"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6045,8 +14585,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "9bdb19ee8de8003f29924535f141da242c069d7d5efec9c46044071834d2d7858e794591e277b87e1fdfa6b3108ec8b615fe76f3d374381562ce3624e35802730a4bfc2c54385da6eaba8903aaa8475dcadd67ace389724b59a10e7ba3bab6f332f44357c95e2e84a2741337a253bf85efb10cd9e69cc656cde704aa20681f993f2324ff323582c1feaca59ddfa26d696ae43b09832d2d34d126c40be89959dd2a353a2f3722e2e0c1cc070cc1dd0cc5e3dba9e9a7cae5a7e7bb20a58b37366c624180b2b1d77344351508a47ac5cb46277892f0a88db74daaea7a03ad8ac60a0e212ac5e18d01cc81af472d7bd905474c7596c374b6521579ecf115575eb90721c78c741bb48d4081d914b2cc9eaf9e7ff6c898b5c6d70117b2c8870713b4298bb88d7cecc3446dd4e10208c09cbe89738078f573ebac694d6da770b56900ac7e4dca41b7dafd8e3c96a63e79a28d9727a831b05169bb1debd17fab657d8b52d8f915590b3a67963ce5c5896fe6569ce4c90859cef89c79d1c9b8e48a46ee4e"_hex; - r = false; // result = invalid + s = "77809cf557ade535cef7e4fe4dd0163e5dd3ada2f045bb2eed5048a02bc1b36df1c6f0b516a72726b4a14e3133fd98efa569366575d4c45fb0254f33a3dfdea5875a63bbebae17b190769a3e75a2839562e34bb40bf781f10af82b2ecac7257710b115939eba98a8b63e5a0db23982b68ce6bc437002dc7ee79897f32d42282d7341e48dcc638bc587dcc1e5613da242c3c234492f78ec1dd8f8f58d17eadb1e0c8a98089b6f11dab4c79fe3f0c64af69fb25d09744e6c21cb35365916935e8a8e4e7d43412006bc3cbc0a2e3d5aa2ed97dbd00d775e38f5d2ecf78215a03a84c4c26867c1a0e624936679a787d35e4269876c3b01b6e660a98dd6e82377d6c158535f5b72b65eafcbf717c0bbe225bda2428853478a741db550051ec9d3b21c70374248f5f4f9cfa871d54f31ac23ccf7506017d26c26c27bf28486e4fd727ecd8fcb8b3ff9523257a59e138f841f059629fc5761618e7f5a91350b39e8ec2e33994cc77661decd471c6d82050bf84bf585812898e1b67e9776919cf5e206ae897fcf0311d1c1f2d03aa22724f56dc7a6a25f3216eb43c8bda409fa38e695c13dd47e6e5fc346088a508f53345f0aa2e50598fb006a607bd1296077003ccaae888bdb3c6179100caef139411fcaa4796391975bd6bbb369f6524e0efd07b2653e1d7e9283b8fd29f7e7defc21dfb2fa42dd6d10c00c35b578807d7c43d797f5"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6056,8 +14596,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "b252d9c77e84f1274ac8019d0993427574d63a80a26c6e93b786fcc8ec699bb64306a9e425fc7fad43acf8a4fb40cc7c54bb29312430a67c0c23c79d34f2ccbbd3d196363901316bcb1fb1a7b6edbe4e457be1f9e92e272bdfd7b35310048212b8e8059d4dfcee86bedb0d7bb7bb0383d0187ae56b56851cee1f6740cad320af9fc25517d729c09ce30dfcf477a0f5fcc71c7342e99b17d831707150be963057a203b133e30adbe10c73df9079cc0d0b5b535c7a2f1e545352ac80473545143251bcc77ea46ab72f3c4be6ab4d5770020b765e900f33512ebcab8de4b9bae9ad68002abebae75773efcd84748ffe4be93ddbb736bc3cc3e5a81b5221ad4405adf4dd3f5fa9ffd5975116b56a0150fb715d22abe24e81af90455cf617d290873d14cc1b368f0fd969ad622b9bd299efb40f640507dac6bd6d4c8cc144014db6f74f71e751e7349176e549d694f68d4007ca6c51f6f58fc5a6822a3005478d5d890e1919990118ab5eb61535383c6aeebe1f514a793adae3c1a91f90dc3261279b"_hex; - r = false; // result = invalid + s = "71ba8012b801302972936d4d45e21fab4048533f4dddeb72cdf508037051c79125ef021da4f05ea81f00c73eb2a8fa9a258025c146eca660c4f70219452a8ddcf8210251c5ba6881bd6b58ae8e9a2b9dd1cee5ca1c5a9cfe2e2b69bcbb101547218548417f74f7179285b2840c7a4e84fce2ef786f8e7a873590188e4096c375de720fac677193de8cb2487e57ac3dc3c34d3361cb3badc2e9b7ce44ef1722054410e0d9b7e03abd04bbd8c55046cf7fdf11be5eab0c8aba282fd3933cbb3404dac281fa3f1da634c8e3c5a2775c090753b66b093b32cd505ddf2f8f6c3318cd2a3f3ecb2aea6e386c389464c25a728fe023b137e614bc311ba5403744ad91cbea2f85184330b02cbb8730daad1ec5fe7b24c692b85accf84911ef239088e7958b561ad92da5c2ddd363438496a12b135f1dcb8aa02db1eac3448d02fcb590feced091c1a223ae21dc38ccefee21977939637eff6892a2b2827833ba8896717dc9bbf89679f50532389eac4ead1a79f257e34a2cfe3b4457401822edc8901206f3773f45da22d02b7cfc58ebb0b97bc87755afbf7af918213127d6f9f9f0aa8063e649420ce4126ff4360718b085c781b17af706f5ddf1199da93ff297ae99e1876e8ec877d29d7c491f1f1a08857814a3074ccd443bf322e38e2ef0315bc5b1745d25b2cf7527edc4d96588ba5fa3df13be00aebce5589f019970027f28fc45"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6067,8 +14607,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "73c5e90d38f0fda07b0dd538fddff64534db7e4e7f0be09b62ed828c49c616663bcf565b2cca9ea19a77a5135d3dabd86bfc831c2b03d81817aae22f4991422e228e315934e993fb134905e1aa03b3539100d9293b8f68177f4326867bd71de9fa47c8e9f37ef46e1b9f3adcc2711892ce1f1dd9f238ee8e1cf2ee0c30408179cc290dc895cd46e2d717552f0a4dbc890fb85dea92554553c50f7f93b34f52625060b290860734cee378783b32453eea66b5bdb3de41839ea69d873346c710a114848eb0e53b26715bd143fe3ea67c3303d1d238be8032242f622a030571bf4726162788004541d642de9ebf1d4ad7ae7dd84fac1c3bd5215a18d65e982bca38342df82463cf606d7c30ea3a5bca3971f78328d0e55cb0bd99594dec125e73547aa6bf4fe22edb30fbe4ac4298752673b2a4bfd592a75db98a5a6d73e26ad1de4b63ac83ba1e29215125e74908bcc888ce8590925cab290711732e4638443a6dc60e705f3c54706b5cf23a654001de4e0f0c40a0078bd6b071cffc2f9f728351"_hex; - r = false; // result = invalid + s = "40c079f1a0f0a82ac2bb04d04da18d488be15c9be29ad1ac5f88e802519fc665ef484a68b5c3b823606f535dfbb91d03a16903334cf5af1dbde258fc0b7bb0a4770a0a9d760da1ba55544a9c9da5161f5653b7ee4cfe29d215254ecebafc3e2c993f4e46294a0d48acd591912dc26b2c162944ca1f85ae8db73cc9457f60481f4ad34bef6a0efe451dd7750dcb4d9172f194d6e25d8642b6373ca0768999a72341d3d27b67f3355d921b24680f7c0cc26799e79bed12aa674f6fe54ff07dd747722bada47c747c94a4914bf36f406eccc18a1d117316dae6dbd7892586ddb4173a5de4308fbf4e37227b9504201e884ac009ef879f6a4a577556b373e98af5c05a4e4f7ce0b9076c36ad98fa55e96329ba32a23335a249da0fa253eb0676f47120298a9a27a119e54104fbc22f5d5fcb7d9a94972064af56e6da970ca2229241408f96b521fa519f52052ec3f17cf0c9c202ed49257c698fe79df025af5b5e37e637ce70893e32ff59747ba208b192ae57a3531f14db4ae97d2dfb07774bc91350401e124130dacf3faca8e69de7c2d346a8cf80d8b542d91a3e51ee2e99d764a2870b2509c565edf2046dd11ecf4000e617bdd93656a6841eecca69dd11979f30c8beb04802ac33356bde8d37786d6f9fe5c794e0c3f7ed8c35fdb0f11532a01ffa35fc7e47b5dba1ee5c6fd76e89c54cd79be83cc29050e939e45f6e36748d"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6078,8 +14618,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "6495b6ed3efb642c89767686ca55fc7f0296bda99a2c04cf03f269f7823de1f8da9f67d0ea773c03a9aeb41d8c56e4f0919c4f228f60d1be84dcc68f0448d95e3028c230ab5b7cd807ad8c939ac83ec77ab5ff44203a6b7ccb6e69a6ef0c902f1e70f31d480737e418b3a73b9b0bb5ab551e86ff80c3e4e9dbff385a49718d7f00b5063c4f7deabc566494314fb5297968538771e0b3a5b27a56f11f6c9f0b9f6ec644a3ebd9b6e7acf668a1e64dbd3ff84b860f91c3d4965e657804e6c5c92bf5921e10bb405f0d11740aa4f7b46a82224e0305e312cd4e17a30757eee88667f2372cb4ac971b774ef78edf1bd299cb172867352c574cfbf23a321faaef28774d65bb22b45647b9a526b7c4245b6c06f2225151401a77ecdde12e767066935c0f9cc94320d6afce02afc71d30a45344c79ea22c72a247a1be6989e27d59ae06295fc69898d5f3d2877e166b9227fc1a0172ac8e367828ba3f6db8ba29fb963a205e897fd2fe1273a6406551d9b2eb4aaf88a7178da423cdb4eda07b2e309892"_hex; - r = false; // result = invalid + s = "75f5e57e3016a455bdee466f906ec331a34b52934b018a2e17951f1841bf753c982dd0da4dc84a24eb6e2906947729938b6bc57b2ccd78fc2402d0c2ab10406c5997a960f5f39b7fa4dda78e03123ee4e84a6025feb0ce41bddd0d686ee7e37881cf5659560cdd95f9848816f6d9cc5e64954fadd3f470ca7d779875cba5c5ee5fb14ebd8e4c26c230f6ef0a5d501a35abd84886793bb9fe7166af9c7e26effd36536d50e2a5c20b4cce0b2092d431204a742c51e94199b55af3d40598daa269e32aca0108662556f985df4860b479e0839a6d09f8e6b14bd97f037c097fc310a389133831add05b41ac1be2349e3b1d5afd7126d2f2863987d120fad87a632429dd37e6d34e86c1f176687e5a170236fd3f12c9c989a931acc9400e5794e85bd616c57896146ce308c96f2ca1e107e0722a49a25ac66a5b4daa2dd0d6396dfbde8badfddf2a9a21b6ee5fb2d86f9bbf948826546b8fb116c9f9635d9e7cc957414ae84604d6bd161f2cb85513f08e5541439d0307943258a4a9f681bb2f6acf1b171e8837beeb43057fe207e3a4e9d212ed6f5dd3da56e0efe4854aa6ffb0aea545c56ce94d84eed186d318125cdd3faf6199a8da62aa48cf4685dc0bd11bbe046de500197c4d2353741e9ebdc180cdfdc8b68bd25e927cff174e66633dc78374e74be187ef7aa7e7cceac8ec73eeaf6b02ef67f9558a04b2685578c6673a82"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6089,8 +14629,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4cb5a50291ed1e9d2514f4b5c8d005d81608ec004b035336991259fa908d5977ba8c75ab7f0fe0b31dc7127f9e81441e11b1fb94ba034459622b301cfc6918d49648b74680c0dfe79e455fd7c0bbe2d9cd0cdf8d28c71b949feb817575e01e3fef84f463acbeec12f1a5eb6b5af59d021413fded81f12e792ef3b4e29d3787f561a20884dfc296fa4490c40a790db98bec78be02d6d83907385a6ae8c15f9ce8b30315e9c0d1593b0a5efe03d25745f00f507aad0e607e5c81ed05838c3b4cee63405ac6b6a6034051479cb9f40f2a6cbb0c82913277e32d5d1c9c55c63aea1110cf6ec03fd7d908083a9aeda83db8bbe72f787af3914408d82ddf9d38e80ebfc152b36ebca127f7d82cba622684d44c150d46149dd452ce322820316bfc207a3b44a614dcb0f9ceed843a8f95bc7cd540df590dcc9a451c39d8d0a9770dcd7950b339990ec5100723bf07da131bd384d6141e98e18600dd44156750db66826d65faa991180866c752858536992a16cc0c89e56dc6cbc7c0972827e586757476"_hex; - r = false; // result = invalid + s = "8b0a10229c09e7249ea220dd0cb27b35f2610c92503991bdedc2a5f644eb0c52e58ac32a32fef0956ad37b0d9f62bd4c8adf260024ac74f7022a49a1f82b7655688c03e748fa34cd61809f335fd5b469c48cdb24878635afd2e1f956b584cbf4837ecac94424261dbc69c0de7cd9b583170ec9a279aef0392500ad7e99c55069aa4ef0bffec1346a92e22c05469ef412ef433a78a96dc7c25327aca4020821aa1a0b0a91546d1b7928f6d12aa3e5acd631354b082952a2116d996cf4fb6e0c03958532b6da19e7a26b469e7377cd492b90b6c5f5fe77275357fd30f3991d2e9c102a67214dd5c8036029c8f963fc732b89a1347d536f2773b855d54f69824e1afc51bd796fef5f664b275c11be82c6b336f83d11cb2d5d6acad0df32b8a8cc7aa83030422ab9ab4adc4f5e9cc9413e3a6014fa3011f2f461b734fe393af91e45992cea9e9e9b769a363f4bdacfd3a11acf5fe3cf283bfc511ae3fb9cc10c01da18117bb2e5dfacc15823dc7295d4e35c33798ae372c70ee1bb48f8bc16377efa9f86aab1c5238eed9b2282501e1069900f329ac3e643e70389e4d9fc75d4f2955dfc6d753affb0366928e416b7dd09d5d0b8e6459000ad998552ab27bb6730467ac64e8c458969f10f0adba72ccd1e3bc9d5991447357246a95fdfb22880a3f6dd48c12d1c2bbfb059ca335d780b48b871481f5ac88a13e11582cd4739283418"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6100,8 +14640,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "82cc73f7a3bd65b0910b012bb8a90593f78230d0b9cc0e3ad3895271492acf1d520c231aee97e20084edde67572b4f3f4d6f42f2e9b9d262c15479a0bd176c0767b1c89fb8e7776f18ebb210d353c870e4fd2ba3c42ce8949ec0c8a5899a3b841bd4f8de8b549e6736b1f3242ddf959b637d1be3aafc4ba7c46f2cae3a16228180e33796ce759aebbcca47a64ff2cebae8bd1dee8e5cd46b602360386620fe6d4704c16e61cd4801abef4f6832c1400e99c14a7024a46ee43e3f729241ae677c128d9b5c548066a8d765afbb42fcd3b491b480e2496c5ca5cbfc1b93f4f85fc5eb3dd81d882b86376cb800398efc25389750704986e5b79d1f6a22793cfa3519e519e0cfed2ff9e4ed454f87367239cd24cce8fb5b1bb35f9ff286ed565ccb1bd41c2c98094cafec4960e59e5c75e4f03794b7ff913e848c1ff0fc5e19d61b0cecf65cd37c95658e371a8629b091ba05135ef05cf57e7ec508be6f978787d9fc7fbc109132c2fe0efb8c3fff622b600b3d3fcbe46b79db032052e2c082257a05"_hex; - r = false; // result = invalid + s = "4b3e45978862e2cba638c9d933fcfe97d6d868b0dc3df653f326bc0035976549bc5fc7586cfa796e2be6ad124d63ff8f039721b82d5a3747e41a4310651f256fc9e997ba962b63a8f3519585133bd31b053d4563f46072b2b5ce51c2a574f69cc921d2e235ec58a81b1bb49156eb4359233872e2dc4982c827b1a3db4a256178ebb0543566605a694f452dd9c6951d96b5479294dff2a33168121b049f83686b317b22135c9f2fca95c07394f89527551006a2600406374d9b74bc959330e58b30dddc6faa14e02dd164f1207fc74b60c8cdb456294d8b309e80c355f32dce738da4232131994aa4e0da1af23a7ee6e7b6cb7aeba47b5eb84451d837ebde7f1f882b50408fb6436df346218189657f992beb7b36b6f726d177c37674218b0a049db4a8e662f8a3628a0ff1e6e13195f35f41111fd4b490683088acd16932feb5f1aa103c75adcf0efd4090549319d06997cebdb39fdae6bb0c9f21ac8e5014dd776de93b2de4660ce977a90c1a1818cc17c32bafd3d91423bd5c6f3b02c965dcaaee97c0212d635408c88c7d3c0b6934574934c7e6b7e37d8c00db22cb836a03998def1afde1e7cb56950f6de43c8f0b5ef97c081140517ce9693e17c819c0ab042b3251d3d35f4c7365ae344f851f420b4680f97671cccd9e9e9b80dafd8b34a8a46cfeed658582f2ca8fb733491940a3738ceb36c3ef8e4fb8ff1cf5b568fb"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6111,8 +14651,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "943d197f031094c5f4938c130e3b9778c44ac5708e2b1346a77a9fad73948505d9630ba4cf537e9c17bae76033c7c6687ff256967c51d4241489440041a2956efeaf7ece62c3baf68057cf72b576258c79793ba81a1f726158867ea20cf1fcb9632c7eaefa0fdfc728c193d08e57a29855f2c4577c566f48cc1e45a6b0af10c0d68dabe814574a131b8ba167e1c7495955edf33f90043c9fa5cfb312b8d55d08689ea68e2c27d1c65188bd35475053196e05cad0ce63b9432bd40770c1b1dfce8ca497a352030c1178c6865b6615103b3634562b7ab1ccb1a08204761574aed2da75478f432add1b2888e21ab9da9ce2c00259f6a4b541388bb19a48daf91135aa9b540bd362a8ce1c986bb609056f19d12e4c56b2031a3c149ceeaa767f57939cbbabf1221d486c66ab5209f29480f63b367c8619d90f5e7eb3116cb87930ffb1ad45717480f00a01c6e69541523b998835c5d81633be9b4b82d492b1d54b2e6b14da2cb33b3fae8210611fcf15009fd7ecda3e135113baac619e8b74d70b17"_hex; - r = false; // result = invalid + s = "6726d676cda1298b6695edc09d838bc443ea04af2b456f27ca77fedf254630f92ffba8e9363709a50208a21fbe0b6eb45ef2df5f5ffb9f14ba267b88bb1a350b2f72141c04286927993e7de8a038f3d699eb292b788667e67a7bb6a969cf47fd55cb1592345421496d9825d63e72bfc0c79bb1cab624a94309f1077ef599d07eca981c57d43149ab6b0321a7441f69f7a2f7c778e0c484cf96efe5b03a9b3d86743c1e811a7fe1c26d3162c969544ae698083aa571c91b45e80ff75fa9fa2e94cfdf6f395b5293e7084a85bcc96044813e44e59e7058c779d607d51054d9f2aef63a22d1d896492b955ed9bf98f92486f27ae866353952c14298cc4cc49b0cdb7c6f8ae0232fb1c94a6cd48ba0904873b79dd1e90c8d50e67d1d6fde0315ce25782e6d8de090e22528fbefc149fb22e5378f162d81ff79921aa46b33a4f60eb19cbe4fd14b7b63cb9c67098a8b41cb2bb99f545b0eb536964bd0df738225c7c73dcbe09ccb97ba0853ad86eebd6998e0085fbe3cf6362ed6e9c66d82eed0be0f7868b060df44447a8ee87f694b3b8eee1cc3c77bc0d8be49a9860d85452d985163f64307acf370a43054b68f42397b34ade4dfa8b5c9ff6dfd483f24ec10c905722e17e68ee2e04b677a1d5593038f5f46077a6486a455e5dd195758539d1bf4cd1da7b807df69600469f0e1f0c95ba135d9b7628a07a321ef3f36a48feeea0c"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6122,8 +14662,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "1301f1131b35def827e8d8560f56d7dffcacdaf65df2200e054ab7717ca7a9f7f19a3628d8774cfaaba6a377e8b854613a4ba7c6237ab989976b0d1398753b7b66a724c91abba885fb77e908a2c6a3ad8d837f75d872eea76d7fe0d75363098a4c7af8bd831de55da3254b85dd199173c2708b191670cc659cd491eea567d633fc256134c2b47e1d1d28db03a5e8294f20a536cd7280e4fe86f750d99d41cbe5687217a55ccf7bae966caaea313258333d07fbb0b00859e5d9e21d71f190e4079ccb0026f074e7e4a984e8f478b298680470ce6338a2b25ff1da6f0aca3247c743c384d82406e44701a46a4c2e50312c11088567788d5743cd3165e3536b693e54f4c6ccc4586e462cbe4796eca57baa70b6296013d9c1c6f4e2e02a75bc6265900bd382892f4135a13ab600c764c546fea14febd51bc378bd1145c2282c94228db5e97d6ce7f29a505e46e373779b50b3856556d8907f07b61c2745ee4051d0f274947fe06eac7d4b091fd5476d6b7c54924018ad7acbdd252f1024080dd681"_hex; - r = false; // result = invalid + s = "0c8526d39afc50cfe91ea266edcb2345b329ea9025320143b1b5729383f186dd0a4936226ba9db645133f3f5aa71e57cb5fda22918d37986fe3d955883eea27e7ad1e79843454b09a23c535d721cce71fd39c086855e0dba809f3052f9958df6389d53006519dfbcac7fd52fd8fecea87989ff521b7f3d72438be27532da0c2d279031dcb4c92f8f2fdb0ef3319640b44d961b5d017dedbcebe4fc64ab1e8943581c95b91987c7f88a8d6ab99cb574338f4fa2609f4134a3690cb4f9a0d9d45efbf2b7148dceaedd29c8737798c09845903f571b41e9dcc42e3c8ef32fb2fc9b7ab2f28f4410c51a5f34d2c461be10c1d0c2179d2773299a02c5a88302867830ea0f0f14980a34d2826fb89ff0c0def8ab7893e4f16a828ea65e01e6350dfa949494c0279bdc562a34aa5712da7440e52a29b66f89bf1f23bc14ac0dd245038f0440a2028b85cf501dea011b2072d1a4277698e21c006d6d15fe4ed466d5d3c36aa4b3d54013df1907f8f982d0820cd71fdd71a066e617829ac5409c5c6578b8003fc8b61f5012c00de9c0ffd1ba050dfb89d6aad79832cef7a596681da3fd48b532ef037faca1c9778e73373b0860720cda0cca50190b622904c877daf76a3c7858cf4bc6b7f65d1ecd627304f3e94908ec105dd97101d39212dfb58e57795f40d9c51955e43cc1929a4531b89902fe2f084b51a39fd6743579ed276e73259b"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6133,8 +14673,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "742a5c3575b6379d7166188aa6c9fe5406b157db778ee0900429d6c427fc530c4c0144a189265dc78ca14715a5a0e69995ff914fe0316e504802be88d5325af9344cc54db76e1d75030b3c41a27c8e9eef0c82d05ca92488475a109c878624133db6154799b4c2820997207389c610204f17d8c2b8d7cf61e49cef4b2a44ea88bf9c3026e29934be4afb3cff846482c5e76d0b581ce2851e4ebecf04f537e89c42f9ff29e0d8c94fa6741ec0a81fe7d3394ebef89d0cbf2824a374283a4e142ac6d7338ca1d6467df4bd97f9f6471c4e772995fceb7e34df6c7b583c73a6502677f23760369472b89e0051d6813bdb16bdfbfd1b9a49f474b29257883d218381a674fe9c245f3c419d0e0aa796e0c37c146469dc23f655a287370727da3a42e99f05595fa3f76165c6e5dbd0f0349daa60086fa30299f5e811c5ed4e957d4f52ffdc902a15fa97d2709f95f680ada1df9ac17ae1703471d00d2958f6f5642635570ec77fa1cf70c17e12d3a1202ff4106bfb7d51819f381b3c8f0d40b3a2f345"_hex; - r = false; // result = invalid + s = "59584e8fdbdb4ef2213063e7a45bb68973f2cb47fa8fa6aadf367c3a650ab0dd91742bfc106ea83a8b622fbffcbcbf6c0e8518489bb409bc9ab5c7c96eb72555faed15f0a6a8c5df9cc7a8e9ffe03d0d612e39238427357bfbbcd18b0b56bd52985f326d82d6e15bf718b17acbf16cf88b1dd3aea7d286ec5c8f8e1e0af1f90c53282f5c21be811387ba41b6343f44a79ddd9c012ff0902c761ce3ff2b31e2cdb7dc8d4181226bf4cbb54b7ca58165b53d4fd32618b8750cf0c0b308340f9ba059bb5c556c2fb6d077fed676fcc0f9f80e39245c9df0fd8059c4c41af4fefdaa01f8c0651b61318e30a286ff0cb77bd126f5e2034239ca7950771339e7971d7299f018f229b8ef20c1279aa986fe74c6216762980c58cd7c8d94a0646ec9af1b44c9e5781160be40fcd9fd3d097e9524c2aa4371275194527033a268ea8defbd1804e1abcaaa607c2fc4ac15161b547dd342cdd5a9ae1cfbf5c07a5a940bbb2862b590033df443056c03b39571ce3d2053dd9a3ac363d3db93674a6e9862a824df242c7bc14ba738bcf1d5191511f783d23fff7ed4f7314a9a350c4b620ade3b8b56d19e9a68b96c5c36871292f9849259af283b447d390f1908c0c2ff932ded07613e1ef6220e69e2f5173c13a8844625400cf0c6ee1a67d9d7d5a9baa6b641bcea3a9f896c17e67ab699d01415eac3915b956df3d3ab50975d63ab52b398c9"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6144,8 +14684,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7c5f79bf21ab84e634160b5b201ef9fb0b2aa17713ce440c58e681c91ae777ad63d7ebdd1c77dbf90ce483160ed3451921df200e3eebff4a25a903e0db6c21a2e921a1423a2a23141a841444213524f36fe99386ef68ce319b9093162c475cda89a55487d975fac01318756ee64b70fc4bae1af18fc806acea41e74986716bc47a73293c5d3c55d267310744999e533904e73395f2c77fea30268f83318c6ecc657a4f4e87b239404c72798976258af3b444afa2049763e96072880f3d2a647e586ba284f0a50425a1deb8bbc0e52241d6ad589f5c20f09a2899fae574a4bd29e57b604a2214afd024a54951461af01d4f0a12f497136124bd3806244e8d8633336dd908c68ecf08435f0a97553d2943d060873411ca5ca62fe8337c526dc8146c60a0a1cbef0cf7b5818d6a2e96df207729276ced557b1fce70dde2be3a2012a6f6f20a9f94926504a593fe8dc6b04efbf559a362ec8a401772828d277d8f1abd9588441d575cf166752f57c1b50251cccb0282c75f0145df04e68da9f408b1"_hex; - r = false; // result = invalid + s = "3270915c54f28277429a5b24db619f83eab69f6a0cda5a5eed98fc324270fb01e070772a18ed19b04cbb3e5371b6fff0ed0acc1b049667fdead7dd260f47deed838014727ce7e7afe7eb93e5c8bdc0e8cbb7aca9d3255333e347f2d2edde237ee38b1b3e220f56218aaf2155d2e5e4416d302068e0de974725e25c671bcf835a276c6c19a969390efc12eb283b4387767aeb1f974c87c83065c318b93c0c25bb5eb9b6a41329b68934bca3fc5ac597c2bb49315230503914e1f95c6b89c5314e934101d1c359407f24f416da4ba2ef7bf991da9be73e2fb37d2483234db7a4e82373a76cf72abe56b65e4b0a37f2516804120a7bbda476dd36a9a8c2fa5ab4f96ac7f80b4765274d6b2877703d4b761c96eaf319d29fbfa2681bcececaca00466cf614c42f04005c2b99ea7913535b1ef2f9ac1f5a758514e07225bbe5f95d49d8ca0bf05c309fa45914a1871f099c60c3e8f771953e83b45bc2e39b18024893c87ea96ac864330c7ad9ca592436e7067c33507e17e9759447788b87adee914cd53dc516d41231a59b9f03e5e6188aeae994cfd018ab97dffc0d0eb4ed1ff7e2a6b8b4bbe08044b4ccac453816c53d00dcbfdad46638ccce0754cd83646363d557b9f6b3c02cacf40ffb3e5ba71f3c6c5253ef072844477fb350e2b2ba444ccbf7e4fb61ec57c4be95ed07454133bf6ce1029f933a94acea1096616a08f3296d"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6155,8 +14695,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "3743ed858c007e5f535e567a2cb63ebd669283a40d369a06df23068afd1bf91ff4521455e45ab94b0751c4c1e648166c7ea571b415faa4311a1598c5ec0ea75472040040994ae32209ef33393f040e05646b0ab14ca0309e1bae24c0bb8ef467edd7ef74bcae2e8ac7e22f5bea0a8537a907f42ab3f6bbe61e24084642f3de68b73c979645a3d43956e7c738ae3621df707638f8b0ab0fdb854eed46e8e307c653b894393479dd1d0dc9f7317bfcc736d51af55aa036e83752a6d6433a6538c5b31900401944288fbe8209728ad1f5394ea66718161511beb70a20bb3e67a464204bd34da479617c8bea4e878c842519655dce03627d833f9b9add861d5ea89e85fc6a56e623719a163159302dc041c7c0c7c493131e09e631c297cfd00388f9bbbcd9a216a8aef364ecd579719bdd5ad40f2dfdcaa3756f574045eaf4f8b05b4b78a7294b77b420cd317f1b74e40afb649209c769d82e434842397749fc5f80b89a1cfba4d532045459179259e37d3506265fbb1b54b0e0d55a036746447dba"_hex; - r = false; // result = invalid + s = "282291879c0ae489955bcb22973f36935de060932261ba23c70c73df42333923bbb06b7f3b5f2b6bfb5f1b8afc535bbe4946e922d16cb5c714bfad46dfb2a1adad1e26f24fbf2bc6783cc3be87506de14addea7f83f3ca801a2d604b872de47b5523e848d99ef3a1cec61f94a4d1759975c4d4b14ccff61354f9c4ed6fd14175023a79d07a85eee7745256fe5dc0e7c8d8e125eae57b0b555f8cd435eae67e56debaa6b187e728570916419ee03b25a62568785f8daa710f974353c4d5ee0d798a86107c538cded5cb5a3f47723aede53134adec5ec3508a449102fe56831e53067ce20503039c355d472254a08d967f9d13807ce725103d86850b8acfd8b79cb0f24b97fa4862a475b813e903660930d1f13a92c1ac2f5c3bcef51d535112b7d1a78a4da93b4fdf035d59e086cb07f556008fa0e8c12c45a132c937022679daa3ce83004d8abbdbf19ed0a5e0425f60f00f5949df8c03548b324f262a3f844fa7d132f34aeaf792d56e29d69f4b78fba46df30f11c55ef2cc5f91a66e4ed410d71f8e065e3d2c3fd601a9c10e50992dc1a774557445558ae22bdd126e546e27498104d0b7d9430f72ace81b18a1b5e09eabf6ef344c90eff9438532f378a6bcccc7548139f3b29e75fb18315feabb7cb7c647e586c5c0c4a8e84737c1d9d9549cdd018a6f1a2ecee3dea049fa4651d6d463686c1bc9cd21cde2b4f10ef61f15"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6166,8 +14706,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7f63d99bd8bbd79dc7916069e234578e8966e7bfd0ed9b8dfa181fe5c340c7cbaa50251d4cf253346f4c4333567f754fb828e8e19399ea645e97a7006536d76198f42af8f57a03ddff688b83d481a222cd6e7f5bce75015783749a34fa5f20b2d0e17610e2c4526dfa780bca5c8d50d08b85e5377820ea657823599a32cc55d2966702e8b3f199f5dce42a2dcab5d372f6f30005e72aba34b149c89ddb14c7c7f5466902c0de4cfa2a6fcf2d297f76d9300e76ac7070091c9ff6a56bd80b9f09be64638db7c200dc455f0437009d3549f543364b03a2178bade56b1b33751752cf7cc744f2e69be572d56801e23e91e8a6f9d3260ad4d42c66cdbaa0b2252785f35500fbc7a61df87b09eaaaa4adf08cb42ed7414928f085baab1991fdbd73aa0afdf7623e14751ae28df8824711cd68c608bf6cf4829c2cc7db1159797ded24d017b9db6d284b5fa2ec7c4e22f56630b3b8779816ef0c77d6be4b3fe40cc0b286284a8773975327f535811278ebeea8530137385a8957964b33cb3489ac683b"_hex; - r = false; // result = invalid + s = "8b00b1feb3ac5d013e2593297d6118a0cf9b141166881751f76e4f27118af0d3ceda0c4f3e903041b9eaaedc30426883ea8d174c25a05570ee982679dc9e46e6c42f03232b1565e25877a116293e0fb4660362d7f01c171561f833bc9a1e38acafcdbdd81fa9f80fe92e0fd9f142238ad43ccac0220306b15efa10bc45e8c63976f6fe5b0d8347f1febc021a8b9f4327431d2b1b2d2b2c5ff27cc5b9f6ecf7355fe3cb9ca9236b48b6404c4679ea90f72ff9119989dea30ad36eeef076440247f0bdd9d97f3cb0c26a951c8e82760a2e9f86744ff0a212e83e6bba5c3073ae8c86e8293a0e11ca0a80b84cd0518f456d3944e2dccfc59d0f7ad9c0e6464d7224d378cf59843849ac50d9d8863b889191d59c89832668400f7d31cff22f462000b9c378bf245c721c61fa277f24ecc1af5ef9aaebfdaca98f526b148782b81ecb689323d505e0a8ffc965e33c9e8eb881148f1f497906d186a64b30d53329df306b72f792901f7555f12925df83519da28da1fe6e7f6bb9a6a9a528a3cba96b630cc201562f07ee66bf5b5fda580b75e85e591ad8cd0cf5c038fa4a4d1939c3d1ab02158d6caab6741fdeed4a6c4631aa7d0fb94aeffb75fa2faad2399b2cca80e085e80d90e552d4b3be0c0f4aecbd03393663cd231a77e512b493848ce96313a6072c9cd213325944c9ce4214ee8cd3b5ec381975348ea2c975a50adad3b99b"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6177,8 +14717,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "661b1580ea4a54570440ff74a751624926471469166304117da3cf7c9ef2784c547f29d9c18cc3f0de876b259110180e12570868ec164492b7df971eb6640a0b8d99dfa4e40d1c0b0e10e6945428b2e7e4ab3cac129f34165bfc1e5f370390c865ee44e2e1eb011ee448cd547c6c42ced8b776c9d3e4bcc32106cf112f5ae94e01d8a662e350bd76aeae070b9ef3fdd0b8a9ba01277fd9a5b512e4e3c1a0509b725581959abb340422a0953e79002efd49b72354ed8e75999b633d399c7b7f4e6726850f05d655a600b99f0cef7716ca11a8ca98c40322a1edd15c6e090748994e967f381265705971f9d397fce9a6cb7ce5d3669ddf6c08481a1322fea8c3f030d53514927b269a49cdef8fa287985c3d6f877cdfdc221fbec2bd1f38b4c3d01fddb4ff33e872cfaee30b588102f8ebd97ecca29b695e528ab0ac4c01afa1262dd4275d8de4712a2017dbb085b24b99bfa0b1f94b3d24abd8bc91eec4ed21958602d01c85eb34c2f09c0823dc523b01098c3167de5746fdf6f2661e3c2b541c"_hex; - r = false; // result = invalid + s = "729e4d0bf84e7f39ef55c6a65c849d3c7b7aaaf6c486c00e310798cec9ae270f9b533da055457b64b98c0b2fe1c56b8c83cebcb6217fe3d9a931a9c100d2c20c1f7ee8d7c518362ca2344e7c972a4d652c3091f7fdede37747830fb3be15c45ab35abac4604f4aca9dc3c970983076d597944d8d65940334808f562b17b3703a6965ac806179ba9482b71dcdbd378152c5ee2d0143e310f64a79b4740af3d7d6714aff225b7517f15520c556b76879fabbb821e01b928392f8e086e84f7b4dcc94a00d1178998ef4a570d1529c3c27514d427239d240f3c149217f3107dcb7cb93ee23703360573999a7a264d7c4b41f2cead54abb3c6364e31f177434430a8eff10ca8f86478d982e3fd6ce2741cca6a379ad052e59c6642bcbdc392ca52d634e387a6859d1c17d5f17b3b4309d17e4ad60b56688d9f0382eb5660711cc9eab55d0c2b41871c98e7509d030d9c0448313d82a73b2025ba42d10d824d7fd3a94d2e6428daa4d7ab5b90e1bf862e54e996b1b365ac9d36ac224cf5d84efddfe531a46a83b2f2d4da1a78b7353bd99cb13d5d49f0412d5a5e9f55c1652377353cb0e2bd7d01c8679a9ae6daf0d56325781d99ebfb5ecf911cacfec371875acdd200d10ccb536b23995db19517a6bedc911548746a508f808b0efa754cae0fb4f09898364cca260c6ac3bc0d3c3b649d9692825bc30cdbc3813dcf268baa6aa556a"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6188,8 +14728,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "3e124cdc65f1d8fa0ef490cb7c23f812f28175af02b82f168e59d25e80c27678db0a49a1c4884368856a71a4b1b2f82eb6e3141d20c1afeb2f1c3ed827041c7d4e37d6a2869192f9534158813b0acb938610624de4cd410b49dca8a99ba03cbdb5095bee0f6f9b7925e7fc75d3173e19632ffcf0a9800cf75c2676fa614c8218ee996c2914d2205809a7b5bc3cfa6f90613ed68691927aa46a026bd7b2eb59d6512092d87e613cc0f0e76225ac3496051cec1e2d0c390235f814bffab11f67bceb3fcffcd03804ee6da2adf173c1abcb6d1c55960b3d4caa45be02d668ff29a063831bed22985cf74a640420beca4c08d2ba803b847ff696c364aa9610b9eed9a39581f382e76cae1fbcdcd80372499292e302f662e19b36224cab65378dadb6859d9daa4fccc239a61df8e7e288d7f4f4d6332764ffd3790fef9eb64b8c0c14c781f65507570ad29d7afb4689919d3cd674a119bd703cb46e9c95617aac644d71827707f11ce9886ec67211a68869bbfe8ef7b5bfb6af446e75d87aa6d12dcf"_hex; - r = false; // result = invalid + s = "45c97c11f68ce9f8cd581ebd381b4e9f2d41f7fe4a2d3218d1f3d45c6f85fc0c9e2fe45ab5b4e787fb9f4fdb0939880484d8408de2fe92a7742a7e6d4949c9e674e39d04607aee91f06d6857c833a28d81d9173557dffd80206e7a9c6698894ebfac2d677afa984070974442fdd236280ab1020be458b9ddcfdc0a63b936f115e5fa67b569549d12a7a9e0d6bdea6a91191e8efac05d09f60cd70b31826af1ea71ed160b8a4174aedec4e52d5884af7da6063e6f879c9de9f67a449c485b673383a8937ec68bd0edd09acef2128f19afc664d9a12e3876a8a7b400eccbfd802e46c399f59ecd5bc774241e917cd91a1ed711e2fe570cc7ef4a6c8bafad3cbd2ca341ee8ee57499126485c46135c3c6ee2391a147e0e84fcbe6f5739c93aff283171842a0b7d410eeec72720c660fe7e3c5de5fd31a1d7ab40f35a937cd827f293ab0d502d039753e59accca28ba4bcef68456202c17ecface6a08a283beb5fca9a78035bd6fe18ef68bd589b3e5456b89a0d93e7ef852fb1e53f82f27d1f3169f06763a8e00292f6d3c6d662c86a9fc59d8c74d89b0f0b7a18553df138b1ed6938006180a2513f12dd7216f9098cd571b13af51cb1850175bfb21b48d4c6a8b5d58e43489ad79903bedf379fdb481a55bcd26c7ef12fd50fda19bae40cb28993369b50d9ef2a522438896205d777b7a44bfdf5f9120cb585ba791117b7b845f6"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6199,8 +14739,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "67a7cf917c469d5b4e5c5a6ad0665feaddba9246cf577e4feb2cee49eb971cd41e50386520c3c22e351caeb8d23103f61af2a6abe15753ce14ffc8afa3a66618617b8c2397bb1b14d3c2c39037260e55b1f3f837b193bf39fa8036ff74f9a7adbe5e6d1cc39d368cadb823ac1f969ccfeae89808eb383c89d514ca122f96a7d56f578a3f10e4725b152ec06002eae7bc2acda9728a3fe455dc5f639c42c09bc6517f92dc223f1f08b3367840506c80894edc65d5163fd73d20048136f10f2583c6048c7ed8e82f44d0cdfed868197884dba5ccb4ca532907eed31d3678ce82a0163f10de20e4d5b581b67cc10f7d6030d2477d17e29baf828903b25cf2f77c17d028de6df352674b288aa60a3437834d70c57d40c853df98ef1e38e6456a7cba3d8082c5c212ce08216f604a997d632e7d0f21b1b462df01bea08dd484e0a9e150574ecbf31dae214a8013c2e640a3b01b0945cfb4d0deb5c83a24438156602058b1bd6c30aace6742264f8ff7682e18529010f25c93980a5214a90d0d32dcaf"_hex; - r = false; // result = invalid + s = "8584efc3770da61a34e7bc64a3732562bbd059991e22cc66a95a6ac4c0a850f1d86fd01041fe2579ac7c2bb02ba662a3069411d3abb9ebabe1bfc3e525543d474985cc87336b6d996154e17e8b0b0588710a46c8ca7611b30c3c5d105aa6bb274233127a9360a5e6d05bc33538bf2b9811824b2b0ac8d4f79984397f094b77fa0d59c5a0f23a9dea26640c40174dbe26ff061d1cbb95ea73a98851b77a2568f6feaff1c9176905fe5fe83439016646614985c08849646cf3af1ffb9b84d6e7442ffacb8680f75e5303d98c1e5aaf85dca350caf84899b1469a19ce3652e737a2ef8c15975c3f55239ac63ed29b2b7f0b87ceee53ecc34a2866db7a053ddca06e4cbab88a1b34f5b508a505ff522803064750aad749b950144caf46abbcf878c7d6f6b7ab401a687ec56c626a7c5f8f9a0da4510bc24eda59de5126b3dc3f8f9688de94d1a5d6a1f509a400f257717b6480d12e175240c86caf1389fb0712af5ecb22c01def2e2f689004e2b7adb0595f41b0704f150e4d61ec3869dff8ed87c88e3d860a716a1969a837da78293002514c17d25efefbc55061e526485cc2c9906939689ff58b3fcfbef1b1a8e42893350e8fc79a6a99f50cf0a31f3505a22734545b067de5a79086305a0fcbaf4e06fd967f011f1601b3ad2be1d5b710eeea8aad228b0051d1fa0b87ae33c84468f64b646f2e029169e4a9cba10e6611f42162"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6210,8 +14750,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a7f03b3383a083af9fe06879d4200e5315d5ab86056dd87ed326fbf48589f95da6b5465158e1b33099c26a962b7b5eccb81fc2962188181a167c6552f1c33ec35ef6eed346ac46b4ce31be3a1726b87387a7e5e7780900f7c0a909e6fa3a8299f5629bd8d2da3e6339c181f45d794879ed812974e5203f1cb745a1da6b34bf886928d6fef9111cea3bf64bb57057c885d8dbba5951a23781993c1670b75404b990a01d4eba230b15a65623ff2b2556077fb91d846b098e16eacf85b541cc23039e9516b465b07e2b06783019dff98420fe15caa3546e823e423c5262af7f54b6d9ed3dd854e41bd1ac9aa4dd951784714e5365d76c096395d76a647090f2348dfaed99b4ded7152beb3798da4bcb533813b653efa5789b9ba863cfe1522e5ed0de68e53b0382aee6b2b888e33482463962a3f9d817a2dbc26a070212046d5e6b80e49767cd85bac25ce2aa0d02c5ebfd4c75ab733d87408c8ef5d21baff4dbd409a4e6d5fa7c55cd4b63796ab79fbdab7587bf234f0690d8e9cd45baf4857ab0"_hex; - r = false; // result = invalid + s = "46bcd0de4ab0c663d34c862da2a63d692cb62af73c92aeb72f027f40d696bc9068a2f895825a90039c700d23165f612e0c5083bfca6de42a16b48ec2b131c43a2a15668984b38c9a73da140aae29962875057325686f6cfb5dcf4fc78a3334e3870fb2ead227ac97a4ce30e793a72ffd31bb12e15b40e59244562ffeacdedf0155e55a9cf57db62bb369735ababd1b4fad2b2f70c76fe8f7aea23f8d1e604c3d45bdc48d61d95c46dca46eaa4623d22e2332a2e87c94ed6b6793f6b030f5a18a9e9852d327945bc5bd2c445d0e05c8b47552d3f528a07c7d4b21200b54f59f7266c0108c4243c659bdd6b7bd2b2716417a0cb50be2fb3fee10322354ac97d58b72c1e2c2131aed091ef91a7693e3d045b0e28851506d5a3483336cb3ac1b0cb3b8e15dba063935300530f98201707e9a0974666504855fae2c8edc78f0ce35ad4132f5f4a4752246297bc58a9952f17892db954caa7154c8f0991e7823e3b3f96710b64a64d9bf77fb1c727c52d81093ad5538217c7960cd8bd4c0f8461b76571e5cc3baeb91afa6beec66275f0ef49157d6879233e07d0f1d06b88a71dc71d95a809414c0829cfec493c8965a867219026486aafa689e48117f784d2ca93c84ed21922a60945d4b1e05b02830542fec6062a37acd0c3f44e1e162af37d2b3b79ee0045cd616a6cc4ec4fa1aa396bd128fc96ddeab06314ec305c8bba84ad053"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6221,8 +14761,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "995096c669017cf835c7be99440523256d5e7c11c06af56032d785d521b68272771ccbd2b403d7ad18d73905a63758ae3a5a5edf49ecac57299ae74987f79417b9880e66a0d9893e29f31d609ab1622cb357a8d19d95d037f5d19c41dcb586111355e7fe91dd51959beca4dc689b36a7f39684753e9284102afb229d50b022427925c2bd4dfb15fde2d2a18f7df3069fb97605e02a341e325b0bf163fd6eef8f7013b4aba1e6f3a311631f5cae20bd48fdc3246e63215838136c402894bcdf1179c05e11a76adb92686e3afecea8ede7456d05f62b7a04983c46fae7d2718515e875a11a261d54d30ea4e8f4db75600a1af0c884635164aa72bc129c1ce543dcaedfe62f7ffd72804db58066613c2235fb4095869975196c1d5f423207c8de777673832aac6e129f7532e2fc16d7034a1255f378c504ab10d149e8d2e79232b01f6261fe8cd73f9f89c277aaf38ddb71ca92194fcd569802a65f4325a4f6aa5e56e0bc5cf2156c04ec0aa9dc63278ae48de9a1657dbb62153c1392e96d551630"_hex; - r = false; // result = invalid + s = "21b33a1679aaf8fa8be6e223fd28148706d45b7be5bebf54816002e0ac9fbf0bcb874ecb91086c602fd4276751fbdfa06bca9c792d129b8290c78d1563f3ed405432a92a6b082ea9302c58995c91ff7075292ed53a2eefb690eef460571dbaf09d4e4b0c15961a2f0fc7be702b1deebe8e9236eef7fae4a02d7d51877345b7343df89c3a4f6596e52c5c810d377ff185eb3a84550ecd772a366f6f3a382ca98aa89cce4e28c627574e2d93946b2a4b89a878b6021ad798bca3792a2fb1ed776dd43ff9e3fe64c33c26d85ae6960212bd61af20f2e86114df113a7e5bb153d84b46c8e1d94658b80c54c3c47e9b85f840b83dae6713cf2835e28a5f4fd4d8742b9c1af6536fd8c6648cfd7d8384fa2d8fa109516b4168c7db551cdd4e3971d883f6ebd24a19e3883a764818e1e3486c172b13d77f59922c7fa9c4f005921dd05b5b95c10f912d2cb7b92f34da36debebf06e1564504d5623f004126fb4cd15ec3a9118b2a6b96a27eb681427b15029260b35fe7a2c945d6cbba7332574b6bf43d23db396dcdc3d649c9635d0e3eea20fca543e68152c55c066e23077c40c9f456a374d5c56ee8f00a4706614444fbec9a753e6275622e55e4bbfba77d091d2d6534ab76322cc7983425b048b995bdee14aeb9d09344e5bcd0d35d7d71fd71fef63e75668ef1566c59525d31eff180eb618ee522872a92fb157dbc1e556dd891d3"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6232,8 +14772,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4205aa36ca11b03b644339d978e1b02228e2ad387aabba21fc649a8c75fd9a1a4f29e91b4e607b4b5e3b86794cf9242dec5509bb30e456e4f5dcc57e83028c60b461f748b1d7e79c8fa4f934ab117114956da7a2693a4023d349a68a4cfa0257486d42a0b6c348a9f77b2eb5d8822569e3dea0cb95c66d68b7c955e98a9df4e921bb2731855f35f0327142029f8ef4306d42481406de9deba401b31481597653cca1234cd20d6cf0341292362a4402dad4ee4807b38728b265ed0d10d7707c8562f14b6eb890c5a1d427725d39f10802c7e865638772a9e0709641a22809633b9ae19bcf052b40fbed8a00531e869761a6312216d69fad97a7f58bb20be27cfe75a776a45e207b6cf1a10215da2c6ef89f540006a2177c840493c83fdf616ac8c9cd647a415532ada9cefe067a81393df8bb94a3449ef74bdaaae0b120165f4a64703d7daa14e8dd13fe779b794699ad57b593ffdec9202f9852c33a4336cbc0223e2117b37118bf9fc4fa6204a7e584db27cb009b800915b4618548d24b3b30"_hex; - r = false; // result = invalid + s = "558bc0fdc6af3425e28c9748d189b9c34edaeae8b5c4b222595c3d0c46f15ccdff198bd8d152960bd4e5bc7ff450b7f84ea5e32f6a181d7eabe17a45ed356100514bf52ecfe2a07f2896cee9b0810a35a0ffb81e88ca6810ff76d2ce1d3af6ca94644bc09bfe29d280c22d95e0747911fca1b52a9647ba6ad491983210cd372e42971fa47a2530aa2917a8e1a3a0a76fe69b60a5b18ef5f8eb3a1331f2dd3864cb991bcac0787617ed9eda207e570e6028441bfc6785381ac855765a1ea13dbf140c9359483dc15913c10de2a413e2907d2fe958a06e1adeb2830d999476b3ae267e1d885c58f8f530daecd112a1616d16dd51ebc6eacc304d5a3f210d5d6d0bcad1aa3428ef8466a23653705cc6fe99ccf98d314ba62235d5191773f4bf3266d47336019e5f9cc892a1ecd78eefbc64aec995d2e8d18f055c512054f4678c6089b2a7e4174aa4490aba9f2e443291031ba7e2a5b9e5f342dd98f1489dc14f9caaa374d9434d4b9f03e754ad21fb9bba287b5fe748b11afe804419615b37a9a3e38b85aee2d6e24c41185a5abc84fbb1b131a0aa2b171587e7673f8517e6fe3ba1d895fc1f40d26283df77479129aad5d8a6871526818833217367ba91540739c1b6b10fef6ef8551980a714b79dfeeea84782948a5bc128b767dc6fc667c59c1e1b303eef5b193713614681776aeadb1700fe52e0b8af528cc89d933309719e"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6243,8 +14783,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8100d8da45f6b2d77ee4c5c5b6fc8c617d85867eefcb861206a991f50638b0a582908846c8c10eab4b694850b6e440d85fc256fdde3fc4092c262041b28e1daf88a54f48c0bcb5c17d9e76ebf5f86c87e3b89478d679bfef8135cad5394a8e6211c64614f6ffc813707273b4d9496276dfe6d566582eead31eff06769b4c6ca3de97c0a622fb282c646cf3de6fcf8a12317255d724f099f1efb4a7379f47d4f13aa11d87e778cdc79784d6a6b5a2d68b9e4ea52bd507a7036c575485c8c377b8db9cf662e6eb973053b3630a94aea288191d9f26ee5fef5f10be3468c5a721421a07d9b25d5604a190d842fb3b92e70f247bb339295da253ecf1c9011d8d49d68552e192eabfa012fdacd63b9756ffd508c04e28039df08867e5d5298da5e72bfc1f0483129581b25ad3bc69204f2822fa5a34e3af4f9eedc0bb68b66a0268532cdcdf5365eb5162d05cb5619041a2f9dde7fe444fea5e9b3c524e3760ce1c633758ced22d5b98f0e1ccac9af15cf825cbe9464a5a5d45a8d1ea426f9499db8a"_hex; - r = false; // result = invalid + s = "3c93b1932754317bb34fc12b78f46bdc90bd35e9dbed4ba94f9613daa4b7e22148109a3269958e9bfdabd5ddb1f8ab7c2b803e55b8da2a3811f23772ce2eaeaa91c3983630ae5dd095898fd3e3fa8066053e8c94f90359407b5b49ade593cb5dbf579d0e9974b47256d03d281f349346ea12806440010afaf3bcc814635b1e1ccce1851b8885fe29f58289d715e453335d6b8dfbd7a5e729f7827fb8ad0a88fcc6379f99c964b8584e3975d2b25d56b0cca0d6769dc18bb1c890055ab3f25c80dd075cc2903869d1b2b364faef215e086264ce7365380c3939c547ce2f969345872db6584a0ee5b0a0497d6409ab73218c5a6e02823f702e0678f4dc1655a202583b8e384bb495874e926d4947ea3e76792cae55325db7804b42cab8d9ec3c13cc270bd94bff8a440f653f538d7c4fd94b29ac39c2ac0c128558171d287adcd1dcda41886a66e01457c9ee8f27ed9a6b9ba3b551a719824eeb49ae510a8da504eddb1e275587e79e9cb2ad8f1c15e30d71ff1f8c96ce152c2efe5a0d9c18be7444fb0a87d3b21a8d99ac7003838bd54d45d90eefe01121f9aafac8322611bf8ba44b5528f3f61db2a9aa1f7f8fb461770f0aa2098fff9b6f58987e03faff1035c835a79a2704cab4017145b151f45ac53813ac6cc74bc67248f128bed5e4eb0d9bf4efa806a347226920ea6b27c0ffb9e9558ae96e16b4e11eaad47d45219e10"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6254,8 +14794,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "118bb4ed79ee68eba200bfaf9909e1af3216904d9dad25815b2052da7d6e057c1fd8afd0929e82ec945e9dc17740790f791a1eb546dfe8d382aff418b094244382b97b8b7dc67400c99aaa5c68ecacbcb429a151ad0a77d0ebfcea781cd3093c312758c7478d4b50682702ee37f69df129f0eb6f19d80e88982700cd9bc81786fadf5f7d9d37cb07aa4ec7c863ab706c42133dbb79e34a22cce78617d86806ace0b4fb28525a1b0e8dfb8da4de2b5792531709e1632e36d8b80c5bed87e559819b5aee7613f1841e9f4b1a3caa77736eb71c9c2b190a6c6ebfe97c922b7bf3c1ebff0accf555d447812a1677d576f3a41a8bb3e8062c49481222c8c53bc00ac821c1cea8b909031f23cd1647f685260d31641177b29096f426816337b70bec98cc0d911b0f926a5c2782466af2a8cc8e8ae78243c916986bddec9169eee2f7d84a9d070ef02878a3b15204aced6dbab3c0fb6f35d07bb2514755c318e92e48010cb4ea5e7b9c073fed05a2a5dfacc4a94b0d78ab89fbc5f8746ff440dbb229a2"_hex; - r = false; // result = invalid + s = "17804612cd16bbd02181ad5706b74635c02bad3243754209bf689e2251ab019eea3170c711e1e864df373a1ec3073307e2201a729c65fc1afdc79970131336958e96003d1d0d209a50e83462e023e73ef4d85cc66360798ea096bdaf4e90ffe36ccd3884e1cb5ccb47ae15e445630a77acfdc8ca035d14289812572bd48f492dd8e9cf66f6b97c4621afcd699f2812809a623262905020c0ad92ce9e6e5812782ac2ae3ff896df645d7f61dda5c5256ab0acd69fa899d252cb64f546707f4e4749e5001c25309afa0de81647b679dae1de568e0745afd16a7844dc681985d6860eaef93070b90aade947234162b66b83ce06a09a91d22dea58abc629a667e0ad2713ab992a7269acf142c088660d12648a1fb3f20e048e7b6424250ce96db3fcf9139f345e6ad5dc664da3e8c0bfbb75382b1847bfc6e260aa2cb69050673123f227e9aaddc29bb42ab8c7976311c33d3c3c865dade459fbddce0dd6d0fe73ab5605820da0d49c327e1f9ef9bbecb2d416e1220bac4d4562a67157d6b46fdadfd420afc1e79ad4bb40d0d049975dd2fe136d9e4a6203123cd714d367b1176dbba671b33cf4c6b486a7e95d1d9c146a31b646cbb37900db4b89e2525e3c86e8b45ae86616c1a8997b05bad9f9951c51ce89c952d2d54bfe57565f77aaf7310163137becc7329dc1227914c2dca0be4f1a748d0cc1bd802a08875d8f95f2d34c28"_hex; + r = false; // result = invalid - flags: ['WrongHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6265,8 +14805,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "1613ed80cdf3d91d6705bcb079fd15ccc29373b03f84510edb0d74b5651b91967e60738258a03ad3dafff8d83f3c18feadfb08e9a94f9f131d3038288976ef35b9c8dc41beac539dfb0fa1e9772524f512a2054e73467c8443abc599c8a58b46ec2340fc4b26f831af6e09b8d5b876596008aad2c4045fc09bdef06f445f54e36f591c73d798a6905a993177b094dfb345a55aacde1304b05cbe652a62e9f6654b24153a7cff6daae42a55272fc72a8250acdadc59f74dabefb9d321e80050ac1f211ff7946e56d14619355544058b714a000d8b4b096f56338201f22114c81370543b392725b735017a550c7f685b675263f8f9b43c1f8e8f8064764dcc34c0d581efea1647dbdff9a296f1501a1614fe9d53d52ed278a8b017215503c1e648a706c5e6c3a4eb26f5eeae804ff5ad0116fb9d2d246723eaf6533ec71d126bfe7d08273e587a025c97c4d2a55a1d850a730495af8998ed35558866bc580d7c51212e63841f33829156ca9a938aeebf3a38bf67495b686d484b02c4a151bb2661"_hex; - r = false; // result = invalid + s = "010a16c145d2466d5876a49075f66a2a960a39ccd79359a8cfd461bbfebb32dd91c8442dbc4c23f52f95269785a48ba3f54131a456ac47cc26e22386abb37580561835ff767739f98029ada299278d6e09fa2d124ca1d656216392c5151d5e9fc0760812d80d431a7f246c7347fed06be3902aa293267e364a9ba31c68b25675238360ecbbb1006eafe9fd25810f5a8199a7c138e2ffee27d235433ebd9ecb4aff73712ec4d87556573f1e063ec8cfe80d9096efff889438d7a8998c0ee0121ac5684f2c1ce333ff1f8d67cbcf372aa2484be9d9fa362e9a840e9123a513fcd020e6a10e7ee1574d65fe4270a0b69dd89123d72ebfcd74567aa1fb211428c0417ccdbc68f172c41ad1d81d4430bc0abef08d8199c6f1d04d5d8c80fe5147421f6be0f46ef7b8ab703946f6d75ba3b48b00be1a7cfb9be82181ef56cc5db307aad6d17f7e2f69e10785f633f464e0959b715bafa3751628fe4e4568431c11de44f0d3a3f86af3ff8397d8c9c5015f7ebc6cfeb143c4de4b132356338c5ddf5b13b7db91f1a889e73fb1c7a20c714f3ee660c42048578c9ba44b6b79a72636fd8ffecae34a6ed003e0e72d93ab204e2928d6604f505cae67dfa31600b9690b779c12600e1f58cf1bb6ca4588e2739c2309041e7865de7cae8b340c251f2da966b7181896d119c61b29231c2ac1e62abfb45d8e9e93682c8d02c27cef33864a7e96"_hex; + r = false; // result = invalid - flags: ['NoHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6276,8 +14816,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "906ed74270c0bdbdcf086ef69dccb51c524331e79d6186a8ad18f86c11657d77d752763141153dbbffe125f9e26c30f1d58808bb8628bd1e931262e872fb6503bc0c919b2586c4c5dc6dd53cb122086536a87541d61dc33ac6d437ea1b9a9e3f4476f7e7c3926e6985f3b8df8d7144f6a81568a04a6eae2977ecefe2664806fe144d9a174d53734be7deafc737d0a3e6e54891d85acd0fedfebb55d069cd3d3b2d6a1594ddf65cb433291ca4f2283c21a5aa4811bda25fa9a8b41ca9c5670cacf721bfd0dfbf388f683a7f87c39654d6a8c2f85196e23c915219e92189aa07f60dd6db16afa97cfbdc9413ec33f3bb98020ad58d4895f4959646727521ce4c2c0df3360fa3db123c455b65f4f0b0aa88caac6da5877b1da3c49a4fd587b3bcbf7fa0d107d69fc415842abc860c19f32dfefc8695b863468b112f0f886c8a249496c355740e07291493bb08ce9c941cd624b638b3466a4c2c51863410bd22488c5b7e00ff636f6dcde4ce7ae66614f8a283709b07f80a42739a0b2d7092031261"_hex; - r = false; // result = invalid + s = "745635e527e8d09e4f748d5e5e34763ae04ee26eaac68a5dca992220a9cf2dc140045b2761cde1aecdb2b6398c4ca18af2bd97f7895f93e8c5c38aefa82eeac154712f6d93acd6063cec2071bb19f3d60905b851d3ee69115102f18257d42466bb49da3a3650186c51a1648d7df4e8a15cff3ac57887e824e6c74fb0cae32237246b1a1a908900198626354cfc838d7bb2ec945e0e992d9afcf1ca0fec96b827ddd1a5261f6e473d9a8a1048f6e21eab7187389f44dc06f638808c96c3e12fcce832aeabcf9746d3b538fea6beb0d5aa3cd8b20f3358227d4ce29c45158d98d6703e36a0f36ad80be13e9aca219e1faab719781d32157addb5caf0c52696abdbb8afd656dba9d5aeb8a5187f2c0ff1f2546cf79b6f0b2d49cf40393c86d58d73137aa35d36220ca61ab4d32a41303f4c04e2dd415f7dce7b0ab7033f2a62053c49a83147f4fa1b60d6c44de1a0a773f51a30fda6c33952614d5bec8200e8c140ac5ea7d94720874b77758953f64def6aef5211b19f6d0047dfc451937729bdacad62fdbe5b6ec7825e2825cdfe30fdf03f613ddb845a039f6f1abb7679fa949a440668d48f88410c732c58d3181850e149b3b799903a4c380d0c37254c88e38e4d4f0f641e9906f0e1ff990b0c540098ac8a637b23df4672618e12472702cf319cd35c73a9c808bfa101f50b24580b79582dec0e95e1da6a2b82c251553e0a1b"_hex; + r = false; // result = invalid - flags: ['NoHash'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6287,8 +14827,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "a761a8c3db6207c8385574f6ab3d42103e5c9dc941c02ffbe0dc1369900360155cb591b32ac8725b01a1d9686ab442af899751d9c4d3a8cec2cdc6725eaff56e8a13571506690cb2f26a0530dd49aa380fab93f4f0dfa7a1e6b1c8e392cb8bffcce1f5ffab5f82ba45d7dd922f082340acd1738a685abbfd598772fd4d0a03a44c9166d807364437464bc3b186733a4aca3d746ccf84a9cf512fa66f2cd73f029ea837ac15c71b2319d1adc9fe9b8e430a428c8f3f2c4b4ac525f94d56620e3c6aec7c87de0afefacd6fe8d817f25ab990ca16d4b3339f15d0fe2de6a0488901e4aa2844e42a8d63b46eced84ce33a346ace4ba03daa4f5f978df6bbd956d1d9bce89a5964da8eb72d9e3b10de99e9ba54f6d24d59d31ecccc213aaaf2d902fc8dfb2059eb2ecb3e17fcef97f8ff01aa59e4c615bcd4811afc10db1d1c04de71d0556ddca363b8a34f48d97d540b045fd0026655cf0c37c4c694fcf2423e0116165d4bbc7395d72f00f6650a787d6e36357077630974d375c2ce292ceeb568fc"_hex; - r = false; // result = invalid + s = "67e9cc9a810ce7dec94b86e4952333ab95996539e2f5d8653b24a5bd65ea37505ca720548f79d313d2aa82e5f3657052f05d2993cd38511e21260f2c7a9aeebee60e8dff2479535fafa8c0a324564730eedeea687f69acdf9114c74bda779befedc197b373e870b3c0def46744658936e2ef26a019c0bf0ce61b824fb7734f189e7608e6101301eb60e85ca14b73913528477ba4cc311c3846d451114037279c9ee718541a8e2e808e412315eeb7783075b90fa682933dca2728e2d42285afd7378c824386bff4d4767b78531af3540ec19967bd37e187ebbc1bba213a07ef10b52635c407cfa26db403ac3556cfcf862c451e6a04c4113f9295b4bcdb0c0f44f1b4ffd4bea2b782915721f20f36a9e031d95c9faca8dda7ec0839e82113179726b36ffcae8d359f0e8ffc3e5c39ea20716be2bc5a5dba90cd0260db63c6e1ac9ced107d672840622d24228b6abf6b6baa73a45d9104738be3fb7dc87e4b1b88b08f5f0bfe11b760e4da5ead85fb28e5bea4a9033b7ffe06918f4c096ae5521b98e9e6ea0dc417369aab27a8921de976f1f991fdaccb88a829b6b3d610db56497c01b852d42853f761d046e80e16cfec8df6423b72a43deb6f23c9ba595bbd1c88223bfd96060362824b49eccd3246479133821094cefe5f672d0d2564cd2ac47d9f5cfbeab9fbf09e7b85eb005d05c32b97d118d5f3b75ed8183844a653889e"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6298,8 +14838,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7c3599d8539a560502121ff97bedb8a1c16d10818a49408f6152ba9d914b6a852710088e5c48826a099ecbfd5cb244ba16c04a71f96663930854a64fc5ae461677dba9744fffa624e64b9919814383ed0fd947e355bd1e651c0027697c8edf76d804394f30e6598a8c805e4bd80641c81f2c78e9a7255535451186c00e963edf2ca4fc7d57dcede17b18a1a22e2241da6b71bfaf24c9abddf9a4542feca1905dd9048491a5469da8fc22e46785e534a53623fb550072472b46d0c9e6f762bb80947573e269d785f6580180bc977efcb3b9af90a974433ff7aa56674af989eff32ed8963c7b202d3332cdc0285f67bdaacb0a41c5b59da507af942d9bf59c504aed323bc22d8e214546820fb32df77e52ae9d458b1d2994006c12f31701bc09b448198956618f89eec20a2e0c916d40c26406258becab6907bcc348b46e7195734d29ba4846ff63aee05e604bc2df75cd3cdb3005f9d2573838a792e68e3cc5f2e6d447cff1c2d0324ab8819031e9eae8923478c0908b0cd2e9b80bcec076c2a0"_hex; - r = false; // result = invalid + s = "03d2148c4777e7c6232db7218e559becf72990fc16b002a1b293afae51ce47a14524d78ad4ba07ed38e4740c827d5b5399a7f4fd41ace28b6ff542602961153a4b311335f86c54d5dc61ec66b8172f75a536b57a4ac0cdbb79963013f164ca58ae6398654c236c65cb1fa37602d586fcfb607bc696e2d59791f41ad6bbd7048e86430b02fdf75a627bab5b71322ab2318d76e602a5e2d2963a983e8acbbc03efb97ad54db7412025ed2e259f55592586be0ed7b47990aeb906714456ed77fa5eb97151c75b21ca70b441e8f46868231a788286c3134576564a7cf44afc6b5a1c11cd607b59c966e83cfe0c737b5f7d801ba62bda5f5ad57fe258e3efdb5d19b056370465c7e62fa575d2894ff848acc86a5be21a570992223f63168a00d4bf04a989b1c7a0a2644cf21d936069a1973ea095d546fc34995be250f9a0e2f9bd5a276d228ac60c2494ff9cb51c90ed76a0ea5c9c5d21c28c75e6134ec2938b8f5037affae252b524b8154d9495cbf0a84a74dbfc06a20e53db0c77be03840b9cd2245c7f01ed4344cc9fb12d040aa92069ca1fe5c82eb695fbd9addf586d34fda4b697f43056e0be7007ce193f4f8fbf17419d35d593c891126629ae592cd37a1d50e86128a48905d66d423b74bab2992290a23012e10ae93cb254475c997f6b3f9dd6186df132fbb6b05793a302dabb651fe01f702fadfa4a34a140f2dc8a68b1"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6309,8 +14849,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "0b5d0e26ab8bef0ea2a577c3ba6fd712e5863c3008e85f46122809262efcd65658ee490c85c7945ae06b6fa342d7dfe01aa5faa9bae877e9bb0bc0cd608670b54bf4ab8593720304e2aa0d2bd62c568cfa6bb2eef302e15769e5054e95bf7a954e8d2997c06bebfb9bb25ac6f52b7b4e79c872b425be6b731a4fb9bea7c408703c768a30f9cb455994bc42a200ef17c64f4d4d6d7269f29bffed1ba755fe4ba3233a7ad464932abf831eef5245a18bc61dfb399c7b2da6455b6e023342833b5e5c7b255c8e06fafc78266856db13317af40b6df8990f8ff37344029e731a51c937a1ca4abd66e0fe90ece58be527dda10b3e34ac0bb661135eb04fac8b90b0756bb47d2453be8ff80d05a6596a1b27c0a33f24fc79260e9dc0a6e099f6a95a22a4e083a5acb201cc654d2fc6e21cfeece62eee3270e6c6211c2025d738953e4a8d1ec7e4cee254a8d2eb446429aac5d8ac480c4305b32e566b5a017348fbe2422246f0696c9895c2a72db471e058fe15207c40ae84a46cc7ecbdbbe9cb9100c0"_hex; - r = false; // result = invalid + s = "7339ad11c7a9a3b836942c8ac664ca29612311a3434c6b32de1143490e7ef9a205473b472d6b5cf89d97b619ea508b5ff44de8b22a906d9e07dedc652484303afc2c7a3e82256ac2005761b104f2a8429f415afc7dad6efbfd318705159dad9322876626261387631113421645fb8ab7e16938ffd256c27b27c55d99190f443a216199effc6b3ac983832a03a6a58994dbf7008ef87ea51576c2230e5718eb0d699915826bd65bc6bf7fea013fd2f1f68ee084ece9718d9ed3ff9ba6fced2e5e8342481f6705fca6df30f9f51ceba90d95381365eedfc56acca9ac130fc25b4522ff10aaaf43382510e6e5fdacaacfd19544fbcdd38def71ab05dfb41badf0f6027fac875217298cbad40924a037d0e587b15221d7a7c61bd2a5510e2d6b0b7ff785332d8bb9815442423061958b6cb5f9e281982c5043a4275154e5ac97b4eff29e8c5beca5c60f3d26b7bc4ee6124fe8f239d9ad9b79787dd47f08bf72754c656436295f53cd0ea58bcdc459379c8c9c40906b05336697795eecc6ebd068bd2d2967ef586faa4d47b37cc61da46b5ab815c29bcbb3f2c76fef669efc175e9fc73f8492afa993d1ea79a870cffc83ebc523fff96b4a893190c2f74ce21a8626ec99aba912cad1692740ed85f3d21063cfa9cea4395d33487be32fd9064067723eb40b74b60b71b7e5208bfbcb433e8f42645d2e13aa5012de3ef13f867a2e6a"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6320,8 +14860,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "37540f8ec9398571bbb6f153c1ff17055c96373b7e75e41f75d959c0b937d635baac3ab200f7907af63bab90b7d0128d603353d5628653bd067caf644cbd4b4319adc964869e2d7933a3c4b873bd2a4b3f8c0659943058293e42963906424a2cece6504fb8cdf76c21e772ab7a0359b191177d2c2231c4e4a5453a8af346db0e91e057fbd6b70dd486caf9516fa7d6f408d10b55fefb03a5795311b0722ee2a5d40a11e29316bd6fa5ab8eb34ef1a0375c87489a8821d0ae554c91bb051b03e8b3c3f301927d8478bbd62f3f37213c734099730c582bf19095e39ece2703ad09a7af236f175706714a80be282e262e7c903c59795754e589007648b550f93d4c7bfa17d116497b258014a86fb00403f05598ad588010eaaeebc2e81f936c5a9524446323a890c69ee99fbfc6917ffde3e04a591957279c334e76dc0dbd4e37a493de9ccd9fae9f3962e5342816901771890a22437f56bc201616359ba68c041ba1daca49e4c7bed3849f9c3758b47b7f90a9e2d03a2fb116b594e28bf74eb1a2"_hex; - r = false; // result = invalid + s = "8d787fc76215062453a27c766fb9435941b0d1d8c8da8ae4e0d9a1435f7febfd34cdbfba8f83f92876342734cdc654a3ebc0165cb8aecd55e8e38c171077aa28cfda2d62d94355a07bd368c0ea9c5526b1177abc3bc1cb0db266a830dea002fdff7904712b87402cc9252e7792110f62f86372cd269662be1e69c986678ec3525aa378afb248194e352f90bd0bedfe2ec30985bed3c0c1f22f5eabf523542314949316fb8fa49678e4f3aced2c25051cc6e416a5a69f4a68002b4b70e9dd7779e0850d05e76db42d522dec1d29bc4379a7b827a8dbbfdfc760b77f191fe7231ea8bc69ed655c78f92cf97e353e51682a6c7239bec03a5399761ca772ebb2189ec506ed39251c7a31154769accb30ac80ef69515ffed596d633851a60edfcdbd9b621e25f7022274e2a9e2977438f9ab4612ce1c856107f211d12eb3f612716251e4963810968afe59c607db95055eb72bba8edf0e54e1e6c86fd4e66bbe4b700a11130db99bb26524d3bcdc8af7fa30441e50e096181cb64c208c71d34efebabd2092c11825c2bda54392ef357864e29e336abd435b3446adc4169a56a4868812eed4859945478ce832ec9a0bb7a309d091f46cd91e7eb3672b65e947a90e85d582ad71e308616d86de74c5221754bfd96c59eec25020ab15261e93302003611bbd86c0c213a46fd5999ad1ed181240e5304f98f57df7a980599a9be87b1215a"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6331,8 +14871,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7e851fc3f8f1a61a6b0c121f6a59c098c88f71ea2797445ff1db5cf27b1594e14b795160d174bcadf3abdae48d901a39a177608892b4f421576064f2d07da9c5edeb90ba607062e950c2e2a89addbc46a55985d6c7aeb9be9e58a0dbe9b72e408162a87710008cbea6c28bbbf7efce153b2777b171c8fc06e293dd0d1b08cbd2bd09d7fd9d316fba544dde143955e90f22f2f65f1c81b99bee7efc8724ea97873d18bca62496c708e88d5b3cb0ce64b6308e568b5e03d80564b2b182b428e7e08b4a50ce12652027572110946c8804ffe5230c9a063eb74b7f64c792c3de430d0ec5abb89e6f1176eec2aae6f0740f1ac24db0ab779217c5bdf25f1509f21b50cc2ca1cf0895874e68e4564cc82cb270111d524e948ea627538f6d9db2e41c8cdfa7c2c505eab96085400437ffdbae4097e059b41d4a8c577a33e192c4a73f8ae51a9e7f5f8f1dc3c297b0abe204813a704b7eaf2ffcfba0d44055146c4beb9120d832e86a57a816d7c016d48dc69e6e5ef5dc55c43025967a6c6218788dda6a"_hex; - r = false; // result = invalid + s = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000313233343030"_hex; + r = false; // result = invalid - flags: ['InvalidPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6342,8 +14882,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "481a84b65f97038ccbc2f835c37f207e72edf255c5c5e3d0d14c581568a1606422da5f51e73974a01ae95f13c1763699267b0842a2be727217e53cbb486cb524c04392e4eea943df6c92898c9631bb88ff52c2ddec1df6a1a4daf50b9cb0676ce16acd8f173eb0663192d2057d5360caef3e122d05414cd95f84be4fede970649f00a93567d36059c4fdd0eea32a22d18b96433f0cbde398b0de36c0ded21dab5eac71b6fb167dba28a79a191c3447cecf0944937bd6a58a511c058a681be19ec373ffb9f0cf7f47676253afd605c1e7be41a6b7428cd0510e9a7ea2249c5e0b643af6fff232e8fb99ff9ac728b32932889c8c96be9e6985ba6556a05fab4760ab0f3df599401a41e0d7f3bdc24a0188fc4ad5b7eadf65f32dd4d1c826b76b5f04a62e3f7722f10528771b1d6c78dfc559b4bce32257a4cd56754a167547f56bf985e328c02f4e65c3312d480fbf165c6b266ea1081db095a1df32d7d0a29f98ce5beb4dad78ae09774805ec58ca0eeaa9c17541dab93302c49d27bd4a1f6090"_hex; - r = false; // result = invalid + s = "16394935476c85aa37b0f4a61e8ec8a5ab4b89cddd4403aaf210c3af1a005b1d9dcc9512423721d850e7066b03ded5d81355037f0c060cbe2fe9be987a0a4e7f9728d34ed96876a44d5230bc8abb91e99bc42571618d9c66080e147991131e15b11cd0c39f0beb04975b69def27629f0078dd9c2b7ca06bf085abf5638a02eea652db3c08d36d0fb8b49e5cd78f28f78a1544d92a5c4ab17052282b3529561e6583a1c26d8b9e7307ffb609c56e573129c8ab8f97dbe6b87d9a1d534a4facca2959117627ba1aa42c8788117c6b1f3a06e65b3c7808d247925b553aaaee5bb8c7b108e860b7c862062131d0cb8c5e61972887c0553d5d221935b9fc8e1f721b2b4948bf4117fef3c1bbdd3b988bc3f0affe05a9410266fb4e36090f656d696e85558e765b07955fc79b6bcecd1c7a5d88a886282af1ffc6507d8c8c11e5789f879b600146ce7d988ce6e2262546335afbfc7e7ef989fb8c12f33e702d747d0975f6faa848a06cfffd38de06e550e11d3d6b4a3b390997b93aa475e2e540866541c762a3988d939ba77749ed9a6d23e3c7dbbd9eb57504f62b3dccb381500e6bf4f5a5353d2d6fb6bb23e02348b052cf685e03a6a1e966616cfa6b9fc707be34af5c34cd358386d0c88309ef137d5bdbc87894e189c9c1edabeeadd1aaba6ba4b605056720dbc8cf8f68cc94600d416e790a4453b21107652615cc82b55058d81"_hex; + r = false; // result = invalid - flags: ['ShortPadding'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6353,8 +14893,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4c548eb5ab00b32b5cc200edb95a1f617fc9a2b82623da511a092c6cd7d428621016ec0e8be4ca66993a079125a4af990df598d5202f73822a5768de5c79af28487218d0f6a23960db9ea8f050b4da444a44bf116179c2d01c4e7b438ee298bb5769a8efca3bfd4492ef4f45494e1540ba279056354f5eb554193269627bca912f0e770e230d5e3671292059515d163cb52c181c160ae8b29de3e90c069cdd757d4adfd5014db2aaf8371a390d0ec6fdc19f37d78776b00b55db4d6e04e0f047ed08a3896cf69bd155e1a95f33fcff2918a58ed0b377cc46d1a09825d06799812309f6473b2a378ffdcb4e6a6d774009085f4cbeff43b542e2bee3aede395f3e0b5c878c303b6667c34c2ee6440657941638b8356318a9ab5d4a072ca83f7482ad764793add9f100377d750bce70b9d063d26ea3d8f29576de1a3795fe2be290623c119beedce6ecedc86804f73f3c210550bd582a98f6a7e86662b6461efbf0e518bf28d9100c09e44c8c78b5158197ed2ed1675291600a6442cf2c8c038fd7"_hex; - r = false; // result = invalid + s = "a383d1cde0b2c420f15ed43655fff7017c9469e55d2127bb929fce56668c9c8b2b24ba96d5d64aa349a5c8256dd61826cfa988cfda37ffbe8b663330128d5e1631b4467ffe3dbe130f87bfe555f18f5ec9d87f51e20074b88ac27377bf16c164470297b9dcbd80b9527069501d56df224a5380ddf3ce7c29def3b5f73992a3506a23a97f2e24dd4bd28da50154b2831e0f707b0f951e9a8e41a860880395dfa36d32d98b63d99264e40195774128572d9357b06c64729fad4b4e7e907637105d2fce49fcb7c4814b839544d3494f2a9fcfb8e7f174115b6ef4fc4a5df6d711b97d17240a5b9b6a43df096e286a9974a19549aa752794053cc42208156b7e02a454aa4a8aecc7a51761369f79b795f20971d9818c7bb7da41f83829d094dfe7057488027f74f00791cf0692bbbac2da60bfb7522f475f00510f5db99eb12712d16ea9d7b82258be18c2f74d6a4cd5e2c89ff38d8e137b3ffb21cb0a53c33a4e2eec1c9b875aa2b0e6be57c36c9ff8fad0db0d3d75be75b354e5c25a1cd525b4650a2e0b4726a31c58b270e4a0944affe6803168a955deb59897810398bb4c103aec1f080e3b58fdd001d43fd8becb867cefd70a59afef1587f9bcb7167331b44bf2561fe359ba50bc9c2432e17ecd6cd5e1329fcb2416bafdcf3b6ac0989c5c662d44acdf1029b564cc2a65034d3492f6375a4d253fabdbc6becafbf3ff973934"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6364,8 +14904,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "7175635076412325c1aafb617fc38754d4a33800c55f307216233b6824fc26dae7bf8e4906c98ee4a22d527ba46e8161df8383e87018a12735d2036600b79217e61f6b76bf4cc6c50cdec487c28ca9fbd5cfddbd8f3021cbfda8d238c61d848eeb9fea97cb3e0cd6a56bd42f565a1b635f960d786dc229e5f58fd0c4465e32e39e5f10e21ead60641adb04d88f920d0458dd9cbe15214070dd74b1c288d8a1ad83e526bebd0ca0c35375b84ca1e05d9db0992c6453307b8c4d64e02fda6af6a56a8f53196e8bd8c1ac8fcfd699542d6f9ada11fde6a2c25ce3727118f05456ac7cce967726bf1beaa1093d8021b4dfef6cc765696de57d5abd4407ee2d96bc7439cd9385cb89a9a06b2f4cfa8715777b421d9c26e35d314a242c844157f61888b4a57c169407c180392e21ceee821a82d9ca8da77051d7efb1e1ad08c8824c7aad904ccdcc0884272d118bc7200fb112a709c4094884336304f6ac062eacec72ccf143c6dbe181e61c3efed13bb9cd0c7c2901589fad8fdfc880e24d9efe23e9"_hex; - r = false; // result = invalid + s = "71746a987f75f0b76a4e73b21a41988683f2fc67c5d104f83b66a611b4ca48258790010f9dc150a633a858fbf08e39c5487ec6c435d3ee614961f80a4723cd5bbda5c089f75c933f27882d965fd0645f5bd6b6bc59abebfc2d511cca9812e3ed1b80c46727649663ca669452656bf83cf64cc7cf35a494a591ca933a80b6548307f60bf404e1fc319f07ae832b5d342333a2a924a2adb5985542c65a7b45fcb087c3d736c10f9ba5e5e0e3cdf1ce6addc693ab298e6b768d5346f9541fb15c14cdad6523b6cadc72d4b52b4ded0b893b7513689eb71c5e87518c218dfcb0e7b8c7e1bb41649f9dbef8f8a70342166e76d9cbdfc24b1f1f7f247ed4f291d93eb985f916f8afd4fa8d93cdd0f498e84de917d74c195d3528daa990bed1a7e27ad613028a5a31a54bf609124b48a747f5effca6fbca47c6726c92dd956182248ca6ea138bd924583f9f7c28b7bae6cb35ef0a39a22b978e98c204c4ea41951f86bdf2fd510ae48ac5d951805d7fbe47e41a0134f9d92e9460e47358b8a5f4dd077ef3453a75c89e72c2fe4495cb0399beca254267144fb3f22131a54e68bf14d8ef7b2521929f3a74334fb7c19a56b76e5ba2e2cf11738c8f1317f07042216be62c16108b016046596ccf158b066c7402c1b075a73a482695c485866200ab4a9bdd88f182837cad46b1e1081ee00cf8abfbe71759ef3fc8f54c56f81b17ec2f3f47"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6375,8 +14915,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1203"_hex; - r = false; // result = invalid + s = "53ecb7561945dc5544e4602466078c93f28507701ffd39e2a9813c8ac8740e6ad61c955d484e513b3dcea527e001a018ee2c207c1806a96763280236cd3c820dff79837c9b709cb4b522d3ddbc9192242259c43be75ea244d37ccfa8a4c75024a2cf7cc76e842ea69cc7ca1227405b070047387a5068e4976e4b8ed5f9aadd7b4db024fbb8d7bd8a040d8f6610c1c6eb1d4b606dfd182235d0360880304d5a750603af0c424b8c8e6dbc12c3697d2d609c97547e774e2e362ea96d1690dc9432112c535258b3db2c4c32ad510d6c07ad0788357883869efb8b629298724847925cf42b34386be700f02903db5852276bee2370941f397bdc3905e30964a0b5e73602703340960c3ed6078263b611f197955fecce4b9a32e43cd1d2e5e87c4ceb65edc8853a7ee31d28e16e5adffb8ac7b760fbfc63d5f174f4d0936461dbb12c964a6b6d6cee752e5fca1ab4a9fd238dd3e8860a1d763d2019f9e7b99ed7666d4e038710f90e0093bc566987d6c0092f571376e705b342d066c54e6e2578927b92c1f0928de44e9a6e1f49b907c6aa4f605ec9c398d55df81c67373b03cc8110162fb417f96fd321048647dfcbb392455115cd912ea83351853e6a185284648842adcbd25e67174a3b93b8a64ce2ce9de0e8577b8b662ce32e2565782665dd38e5bb5fcc4fe12e4320dab7773b545a09c6d39d9dbad459f21f3e624ee6ed0000"_hex; + r = false; // result = invalid - flags: ['SignatureMalleability'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6386,8 +14926,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b12030000"_hex; - r = false; // result = invalid + s = ""_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6397,8 +14937,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = ""_hex; - r = false; // result = invalid + s = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6408,8 +14948,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"_hex; - r = false; // result = invalid + s = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6419,8 +14959,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"_hex; - r = false; // result = invalid + s = "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6430,8 +14970,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"_hex; - r = false; // result = invalid + s = "956353ecb7561945dc5544e4602466078c93f28507701ffd39e2a9813c8ac8740e6ad61c955d484e513b3dcea527e001a018ee2c207c1806a96763280236cd3c820dff79837c9b709cb4b522d3ddbc9192242259c43be75ea244d37ccfa8a4c75024a2cf7cc76e842ea69cc7ca1227405b070047387a5068e4976e4b8ed5f9aadd7b4db024fbb8d7bd8a040d8f6610c1c6eb1d4b606dfd182235d0360880304d5a750603af0c424b8c8e6dbc12c3697d2d609c97547e774e2e362ea96d1690dc9432112c535258b3db2c4c32ad510d6c07ad0788357883869efb8b629298724847925cf42b34386be700f02903db5852276bee2370941f397bdc3905e30964a0b5e73602703340960c3ed6078263b611f197955fecce4b9a32e43cd1d2e5e87c4ceb65edc8853a7ee31d28e16e5adffb8ac7b760fbfc63d5f174f4d0936461dbb12c964a6b6d6cee752e5fca1ab4a9fd238dd3e8860a1d763d2019f9e7b99ed7666d4e038710f90e0093bc566987d6c0092f571376e705b342d066c54e6e2578927b92c1f0928de44e9a6e1f49b907c6aa4f605ec9c398d55df81c67373b03cc8110162fb417f96fd321048647dfcbb392455115cd912ea83351853e6a185284648842adcbd25e67174a3b93b8a64ce2ce9de0e8577b8b662ce32e2565782665dd38e5bb5fcc4fe12e4320dab7773b545a09c6d39d9dbad459f21f3e624ee6ec"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6441,8 +14981,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1202"_hex; - r = false; // result = invalid + s = "956353ecb7561945dc5544e4602466078c93f28507701ffd39e2a9813c8ac8740e6ad61c955d484e513b3dcea527e001a018ee2c207c1806a96763280236cd3c820dff79837c9b709cb4b522d3ddbc9192242259c43be75ea244d37ccfa8a4c75024a2cf7cc76e842ea69cc7ca1227405b070047387a5068e4976e4b8ed5f9aadd7b4db024fbb8d7bd8a040d8f6610c1c6eb1d4b606dfd182235d0360880304d5a750603af0c424b8c8e6dbc12c3697d2d609c97547e774e2e362ea96d1690dc9432112c535258b3db2c4c32ad510d6c07ad0788357883869efb8b629298724847925cf42b34386be700f02903db5852276bee2370941f397bdc3905e30964a0b5e73602703340960c3ed6078263b611f197955fecce4b9a32e43cd1d2e5e87c4ceb65edc8853a7ee31d28e16e5adffb8ac7b760fbfc63d5f174f4d0936461dbb12c964a6b6d6cee752e5fca1ab4a9fd238dd3e8860a1d763d2019f9e7b99ed7666d4e038710f90e0093bc566987d6c0092f571376e705b342d066c54e6e2578927b92c1f0928de44e9a6e1f49b907c6aa4f605ec9c398d55df81c67373b03cc8110162fb417f96fd321048647dfcbb392455115cd912ea83351853e6a185284648842adcbd25e67174a3b93b8a64ce2ce9de0e8577b8b662ce32e2565782665dd38e5bb5fcc4fe12e4320dab7773b545a09c6d39d9dbad459f21f3e624ee6ed"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6452,8 +14992,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "c6fe23792566023c265287c5ac6f71541c0994d11d059ee6403986efa21c24b51bd91d8862f9df79a4e328e3e27c83df260b25a9b43420affc44b51e8d7525b6f29c372a405104732007527a62ed82fac73f4892a80e09682a41a58cd347017f3be7d801334f92d9321aafd53b51bffabfc752cfccae0b1ee03bdaff9e428cc1c117f1ac96b4fe23f8c23e6381186a66fd59289339ae55c4bcdadbff84abdaa532240d4e1d28b2d0481dadd3b246557ca8fe18092817730b39e6ee378ffcc85b19ffdc916a9b991a6b66d4a9c7bab5f5e7a3722101142e7a4108c15d573b15289e07e46eaea07b42c2abcba330e99554b4656165bb4c0db2b6393a07eca575c51a93c4e15bdb0f747909447e3efe34c67ca8954b530e56a20a1b6d84d45ed1bcd3aa58ec06f184ee5857aaa819e1cca9a26f4e28d6b977d33916db9896d252d1afa762e287cb0d384cc75bfe53f4e922d02dd0a481c042e2d306b4b3c189371e575b25e0005a164cf69dd0976e4d5be476806ea6be6084e71ab4f5ac5c1b1204"_hex; - r = false; // result = invalid + s = "956353ecb7561945dc5544e4602466078c93f28507701ffd39e2a9813c8ac8740e6ad61c955d484e513b3dcea527e001a018ee2c207c1806a96763280236cd3c820dff79837c9b709cb4b522d3ddbc9192242259c43be75ea244d37ccfa8a4c75024a2cf7cc76e842ea69cc7ca1227405b070047387a5068e4976e4b8ed5f9aadd7b4db024fbb8d7bd8a040d8f6610c1c6eb1d4b606dfd182235d0360880304d5a750603af0c424b8c8e6dbc12c3697d2d609c97547e774e2e362ea96d1690dc9432112c535258b3db2c4c32ad510d6c07ad0788357883869efb8b629298724847925cf42b34386be700f02903db5852276bee2370941f397bdc3905e30964a0b5e73602703340960c3ed6078263b611f197955fecce4b9a32e43cd1d2e5e87c4ceb65edc8853a7ee31d28e16e5adffb8ac7b760fbfc63d5f174f4d0936461dbb12c964a6b6d6cee752e5fca1ab4a9fd238dd3e8860a1d763d2019f9e7b99ed7666d4e038710f90e0093bc566987d6c0092f571376e705b342d066c54e6e2578927b92c1f0928de44e9a6e1f49b907c6aa4f605ec9c398d55df81c67373b03cc8110162fb417f96fd321048647dfcbb392455115cd912ea83351853e6a185284648842adcbd25e67174a3b93b8a64ce2ce9de0e8577b8b662ce32e2565782665dd38e5bb5fcc4fe12e4320dab7773b545a09c6d39d9dbad459f21f3e624ee6ee"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6463,8 +15003,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"_hex; - r = false; // result = invalid + s = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"_hex; + r = false; // result = invalid - flags: ['InvalidSignature'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6474,8 +15014,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "4e28f546283f9ac74cc99c6bca79bc208e47220cfb0717aabc521ac55119ec6bbcac880bed0007c04eef92a24b091d9a09ee5d3b5be790abdb2c98a07313d505fc876adcbb1089026940e03dfc10fb46a0c2a764ebe86e51ecc2ab489f56daf38764fc0a36a9cb4529367c9880bfd7631c340fb7fbac0edd2e1def00d65bd52e597e2eba1be1e41bd89a00f5c66fbc18b93e9cc1b5be962780f6d7a9c6d375a28556114f37a8a3606dcd68c8128bf7a7e5f1205778bcf3048bd4f7c10cbdb4ae759954c4e4db0a9fe4df270c41bb86885dbdd8cb7e72a33322238a2d29615a2f01e9fc59c230c2cce58ad096c2de5071e020f76c8c39874f1de677dd5d2f96ab4dc145098d25b740b5279f05713daff54ba695f950039882059cfc2f86c35a0501b8d0914aa59a806e8d1403fb2eef163ba1d6e3d1e18dc99c622f8c2d360bfab2c9e8fd9d74a027e466fbcf4fa56777ee0fea7e04ae1901e65b5361f97146d7f4a550adf77539fabb7135967dc16f8ca99e8283dd69627cf27cb9d2df20bbbb"_hex; - r = false; // result = invalid + s = "924769b488c2f25bc1d2d2ac9b2934bf4a00122bc9e635e8b2dc3f5550579fd7fd9e072bd8dfeb7e8917045c7b2537b96f8fff9961115a8f8e866b35cc1444633877208bfd1410e1ac91fe62484adf7e8c0eb5885859c0757590e34f095f388320ce455e4df56cfedc7b15fb5c9d95e696207cbddfab63a71eeb9ebd4aba5c214267a6af1524716821a5a2693702e103c3f9b487235a3fd3ed9debcfa51b5c796fe2916746146c07147370ed15424fff4b07ec133a92037783626a0a48d2a3a440a611712ecc7f28d4ab146d898382a2b25df98e27e15e168ffd725c57077e86e2e88cc015217fe2ede8978e4d85acfb66cbd2fbd36936b0292fe63650ea2280f86a9d3ca427a77f4f9db69f117a0e41ff86e98caf36072322201c928c125c2f4a19358c62ef47df4a796d67d2feb9879e3a195895042a5a8028bf9e013f8b142363a1a192a2e3bc96847a515322de750fe346ef150a14e1adc7cbb6d480bc42dd06a8495c4e6ed4ea6441ad719f2edd6696da0530f54868715bb25e17d492b174b77a992e2fd997bee727a63e8cbaec87de36bb700eb4208e174e2ed437930990fc7f5e58e59706402565e52e9f207b4546514dcfd84d74348ee93e90e9bb0f4f288fca98d526ae8876779112236a5446cbaa615d8f6e45dc5c351ff45fcaa7f9e6891f09a620b2b12489d6ee3043c86c35b0992a086a271d78a37fa5ed6322"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6485,8 +15025,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "78d3509284dc06b54583e11ddf2507d9e50bdbf079fc319d107bc2527c1b742f4c759320fa22435d74e94253feb4a379128e7f33c5f3462fbfb92ff40c10b23f8bdc5890114757364207768014380fc16ebeaf22a7b1a9366f3fbbbb912347f1ef595d742a976b69377533e7b61d3237c3693cf43b34f92773497b8df7ac0660f67439aaa66fe179b34d9dd4d013e8fab958fbe2a27ce84b6d1c3c2998a50d41b6b38000191673c23792db2fe47e4ddd3b5396c65dc44812e55298b8b50b5a2a01d508b9d215986113b099717c3a4ee930f479308c20c26630aa5419c2589c8cbbafa7eaebd71fca9e751793629d767be8709fef9177d6631a48731f5e59fc7e98cd466375e8775ba935f12b45575819ecef4d78d85b6e984d90d41c93bb03c832fe415fb567a1d951f7dbdf407beef8caa3a741ca7c7729c8d8ba98896dbe52d9785feb49332e646771e7d84b75476aafa0a54512806339cb54ec1c70943beb508966741eba4d39c2fe535aa82a9cb92eec99d38540efa3e39fbc02d757ad74"_hex; - r = false; // result = invalid + s = "1db0c28280679c7279d9f4ca1b3ad582da63a80e18ab2baaec5194aa6c2435cc5f7c3ad16e9b3e8eae8a9e33a7dceef69588aa5b0b16c184ff54b60c41c687b77d849eb36295a7aa3590e30f21f2768eeab26f13135ad5353c889540906da7021ad10751876587888c25247584dd4c7e35de68d6900676872d7aa84dca74cd41390c01eadc982359766fa6cff61bd424baa7cd46fdc40a17a97df468bc200849ed315f4f53d6f24a0af0a1b51112eeeee438f48ebab9c396f4b6a0dfe6e23beac92cda74d5a762bf7591da988341a796ad7e6cd72ffb6df68b081db763a48eacfbfca7132f27979af705089cafcb774e592f92ee06fef8c9f6635480a0f84c89c2ca4a131937a93307ea76326f2c1627989c0dd0eee1b34371d78ab794543124ccc2269f67152f409532e9c1d1231d79e5d6bcfe9a153223038a1fc2df9e5c50739edfcb6e7157e0d885105b11be6e5a55a950cf48e827961c00b556c3f52554ddc9ee9b1a0e3534b724de96b1009af28a3b2d2e4359e674b76ff7bf79d9d6e52db23471c9a3d430b05e85edb469dfe566441e5bd565621006e1d1605b8fc45b2570cb06779b28283834708485438b41b478216ecb9db8ec64158159bfdf84361bb1a2839a6733db28d46f99e2bcb704b55f25cab22c7436474c68fd259e86800ed657b4a2624a1a5de45dcac39c5c2d04f08792b9a5013bff0b6da1c1c288b5"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6496,8 +15036,8 @@ namespace ack::tests { }) m = "313233343030"_hex; - s = "8f9ac1354af4161d0e55b5674821d02823b3a6b3f79cefb98cbc77f9ac2d91cc6345f989a7828132f73f3630a247a936b6a057b3e5a2fda0c5999ea7721ee8880960c24cd2377e869cca1799747142d57ad6a8d83ec9254d89f591add11a758e1ea1e29bd08f624d0e28cea52ed5eed7c0f5f49d3533eb1cdbb2af837dc42942f9a86b5f4e2d5ce506697ef067a344949bdd89afcc25978af4d50c300bcd0ffc9d93cc559e3ae1a13215a1d3f6030827340c6591061a5ab7e65153b1df8b25e1421f924d39c7e6f76243c1bb9ae4063d9a475cd2ece45f4e288fe0720074e87868d70a5584a9ac2b47a56417cc76f15154315545a3ed6704b365f15d34320804469c3b09ed211cbc9e9e767b6f21fa16f8641d8b78b8dff8062a25b5bd3b6a38cb4706c42c1fbbe66db1c05cb57531132eb94fe1569735c33ec491c318a686c837ac810be4afff605f92bb390e7ab3cd24c0cd997cf13f112e5aa01746f43902432639e1eefcbd37b413c586f057bcba40a8f1251251e84cb7c87c53c1d1d558"_hex; - r = false; // result = invalid + s = "75fbc044fe19c72f459b5a1fc4793f7893ffcc95bab8609900b3c3d3be6643a42987c167e7feb63ec2a57f961c1b9c35b11b34044e065d7d3df0b49496dd80f7cd1eb2e8c0d0b726f37e701ba62a3003a17657af55adcb0b6e86f95198ed435207663d616d516bf7222db241094849fb232bf6fbeeed7b5879a6b6c8aebc57646117220bf55403d0ff078e219ff119bd2e52e767b708b91afe30e9be348766e7537e1128087b4c9aca0281415e550965a395ab20d423330939b4e37551a7735c6df2b0395dd032266ec7dd4afaa3c477c64e3f95ee4945960b7a0c43b7a9622448eba4149e30ccaa0c234be7b06f4ebe8ef43063c62282e0643c6e483feb1942e3310bad0c05bb2f87674825fed098d5c787b69c5ba6a1f716dfa62ede3b8a01c076598b15ffa2e2be82fd1d8025f8ded14cd8fc8753ef76419e1dd561bc0310b2c7845e2744c9621735758645af0252315b6a05894c264c4587c8870e02e94813fc3a797d590a9645d92845b614b0d89cfffc0b80c5b48186ae350d877f0bc06e561770736342f00d56b2ae785891afe39cc0412337e4f5d29ff06d727f6fee8f0966d52ac146ba82a753751ad786c9d70ccd3005b11fc4f6b81517433a052c2351390332bf7fcb4326a19930b512631317c0354a81ec7c529ccd1bb2ef206d697999950a539808958d6c2be64220123f12e7aad168be35de70103090937f44"_hex; + r = false; // result = invalid - flags: ['WrongPrimitive'] d = eosio::sha256( (const char*)m.data(), m.size() ); REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); REQUIRE_ASSERT( "RSA PKCS1.5 SHA256 signature verification failed", [&]() { @@ -6506,18 +15046,7 @@ namespace ack::tests { ); }) } - - n = "ab54a4f2560b9f65faa2f83bcf77d41803c080e4e5c3eab3534210982bba8a5d7e513ba50ba1ece33555c5457c41ba58f3f605a04369408f586c26dfda464c7b300a01f1616893264c7606daad4ced14df9a894a1f34586181294297e3ceb9580b0c785c056d5c566467f6f227f3084918d1cd17ed156e7f9fcce4757c5794f92770771ea5cf3101ca0425c846775f56938c1d1cad4401f4df2f5e0d3a3b2770f99e3c1cb4d9d4896c7ca89287b45831218b099add4bdf1dab6e2fb55d2775429386c85dff32c07a6dda504a9627529dd82c943554aaf23c5a5f6cea9c301b4b1f066b86bbef2e4bae9dc5b5e82e1fa03c29ff8bf38556729b356d5ba41d37a069fcc8fc23ac715bbea04c1972a2d50c57cc0159a46b5919fb670fb2a502d5ab66f0aa99e51016b83a406943ce9bdf0ab9b9e946574a5b32ce95d97ac8b1fbb48f0bf7e3c0d4b7a00d131966d009997a166a6630dee4a74c141cde0114aa423351b1dfdd3893a856fc632b6d90dbc79c8a61a9f9e31702ba69fb222860e60a83"_hex; - e = "03"_hex; - { - auto m = "34333630"_hex; - auto s = "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011a21abeac8409398319e65c8656f8f72e179dd1e99358c7531fddc037e47c1e688cd70eafd6eea01c823516bc79f89d7e52ee1eb4ffdeaad1d550dc0a47185bc9c42e47fce5503c3370a60510f834b4691152ef668deca633cf3873ce6613951784aa7dafde118f37f1cdf1a687ac236d5c956bced564b73cf202e3bace59667"_hex; - auto r = true; // result = acceptable - flags: ['SmallPublicKey'] - auto d = eosio::sha256( (const char*)m.data(), m.size() ); - REQUIRE_EQUAL( r, verify_rsa_sha256( rsa_public_key_view(n, e), d, s )); - assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); - } - } // End of Google's Wycheproof tests + } // End of Google's Wycheproof tests rsa_signature_4096_sha256_test // Test vectors from Google's Wycheproof RSA signature verification tests. // Generated from: 'rsa_signature_test.json' @@ -10175,7 +18704,7 @@ namespace ack::tests { assert_rsa_sha256( rsa_public_key_view(n, e), d, s, "Failed verifying valid RSA PKCS1.5 SHA256 signature" ); } } // End of Google's Wycheproof tests - EOSIO_TEST_END + EOSIO_TEST_END // rsa_pkcs_1_5_sha256_test EOSIO_TEST_BEGIN(rsa_pkcs_1_5_sha512_test) // NIST FIPS 186-4 test vectors