diff --git a/build.json b/build.json index 28b2111da2..91312a6b17 100644 --- a/build.json +++ b/build.json @@ -270,6 +270,7 @@ "crypto/kyber/kyber.c", "crypto/lhash/lhash.c", "crypto/mem.c", + "crypto/mlkem/mlkem.c", "crypto/obj/obj.c", "crypto/obj/obj_xref.c", "crypto/pem/pem_all.c", @@ -442,6 +443,7 @@ "include/openssl/md4.h", "include/openssl/md5.h", "include/openssl/mem.h", + "include/openssl/mlkem.h", "include/openssl/nid.h", "include/openssl/obj.h", "include/openssl/obj_mac.h", @@ -542,7 +544,18 @@ "third_party/fiat/curve25519_64_msvc.h", "third_party/fiat/p256_32.h", "third_party/fiat/p256_64.h", - "third_party/fiat/p256_64_msvc.h" + "third_party/fiat/p256_64_msvc.h", + "third_party/libcrux/eurydice_glue.h", + "third_party/libcrux/libcrux_core.h", + "third_party/libcrux/libcrux_mlkem768_portable.h", + "third_party/libcrux/libcrux_mlkem_portable.h", + "third_party/libcrux/libcrux_sha3_portable.h", + "third_party/libcrux/libcrux_mlkem768_avx2.h", + "third_party/libcrux/intrinsics/libcrux_intrinsics_avx2.h", + "third_party/libcrux/libcrux_sha3_avx2.h", + "third_party/libcrux/internal/libcrux_core.h", + "third_party/libcrux/karamel/target.h", + "third_party/libcrux/karamel/lowstar_endianness.h" ], "err_data": [ "crypto/err/*.errordata" @@ -833,6 +846,7 @@ "crypto/keccak/keccak_test.cc", "crypto/kyber/kyber_test.cc", "crypto/lhash/lhash_test.cc", + "crypto/mlkem/mlkem_test.cc", "crypto/obj/obj_test.cc", "crypto/pem/pem_test.cc", "crypto/pkcs7/pkcs7_test.cc", diff --git a/crypto/mlkem/decaps768_wycheproof.txt b/crypto/mlkem/decaps768_wycheproof.txt new file mode 100644 index 0000000000..0eb8c15bb9 --- /dev/null +++ b/crypto/mlkem/decaps768_wycheproof.txt @@ -0,0 +1,1829 @@ +comment = Official test vector 0, seed: "061550234d158c5ec95595fe04ef7a25767f2e24cc2bc479d09d86dc9abcfde7056a8c266f9ef97ed08541dbd2e1ffa1" +private_key = 07638fb69868f3d320e5862bd96933feb311b362093c9b5d50170bced43f1b536d9a204bb1f22695950ba1f2a9e8eb828b284488760b3fc84faba04275d5628e39c5b2471374283c503299c0ab49b66b8bbb56a4186624f919a2ba59bb08d8551880c2befc4f87f25f59ab587a79c327d792d54c974a69262ff8a78938289e9a87b688b083e0595fe218b6bb1505941ce2e81a5a64c5aac60417256985349ee47a52420a5f97477b7236ac76bc70e8288729287ee3e34a3dbc3683c0b7b10029fc203418537e7466ba6385a8ff301ee12708f82aaa1e380fc7a88f8f205ab7e88d7e95952a55ba20d09b79a47141d62bf6eb7dd307b08eca13a5bc5f6b68581c6865b27bbcddab142f4b2cbff488c8a22705faa98a2b9eea3530c76662335cc7ea3a00777725ebcccd2a4636b2d9122ff3ab77123ce0883c1911115e50c9e8a94194e48dd0d09cffb3adcd2c1e92430903d07adbf00532031575aa7f9e7b5a1f3362dec936d4043c05f2476c07578bc9cbaf2ab4e382727ad41686a96b2548820bb03b32f11b2811ad62f489e951632aba0d1df89680cc8a8b53b481d92a68d70b4ea1c3a6a561c0692882b5ca8cc942a8d495afcb06de89498fb935b775908fe7a03e324d54cc19d4e1aabd3593b38b19ee1388fe492b43127e5a504253786a0d69ad32601c28e2c88504a5ba599706023a61363e17c6b9bb59bdc697452cd059451983d738ca3fd034e3f5988854ca05031db09611498988197c6b30d258dfe26265541c89a4b31d6864e9389b03cb74f7ec4323fb9421a4b9790a26d17b0398a26767350909f84d57b6694df830664ca8b3c3c03ed2ae67b89006868a68527ccd666459ab7f056671000c6164d3a7f266a14d97cbd7004d6c92caca770b844a4fa9b182e7b18ca885082ac5646fcb4a14e1685feb0c9ce3372ab95365c04fd83084f80a23ff10a05bf15f7fa5acc6c0cb462c33ca524fa6b8bb359043ba68609eaa2536e81d08463b19653b5435ba946c9addeb202b04b031cc960dcc12e4518d428b32b257a4fc7313d3a7980d80082e934f9d95c32b0a0191a23604384dd9e079bbbaa266d14c3f756b9f2133107433a4e83fa7187282a809203a4faf841851833d121ac383843a5e55bc2381425e16c7db4cc9ab5c1b0d91a47e2b8de0e582c86b6b0d907bb360b97f40ab5d038f6b75c814b27d9b968d419832bc8c2bee605ef6e5059d33100d90485d378450014221736c07407cac260408aa64926619788b8601c2a752d1a6cbf820d7c7a04716203225b3895b9342d147a8185cfc1bb65ba06b4142339903c0ac4651385b45d98a8b19d28cd6bab088787f7ee1b12461766b43cbccb96434427d93c065550688f6948ed1b5475a425f1b85209d061c08b56c1cc069f6c0a7c6f29358cab911087732a649d27c9b98f9a48879387d9b00c25959a71654d6f6a946164513e47a75d005986c2363c09f6b537eca78b9303a5fa457608a586a653a347db04dfcc19175b3a301172536062a658a95277570c8852ca8973f4ae123a334047dd711c8927a634a03388a527b034bf7a8170fa702c1f7c23ec32d18a2374890be9c787a9409c82d192c4bb705a2f996ce405da72c2d9c843ee9f8313ecc7f86d6294d59159d9a879a542e260922adf999051cc45200c9ffdb60449c49465979272367c083a7d6267a3ed7a7fd47957c219327f7ca73a4007e1627f00b11cc80573c15aee6640fb8562dfa6b240ca0ad351ac4ac155b96c14c8ab13dd262cdfd51c4bb5572fd616553d17bdd430acbea3e95f0b698d66990ab51e5d03783a8b3d278a5720454cf9695cfdca08485ba099c51cd92a7ea7587c1d15c28e609a81852601b0604010679aa482d51261ec36e36b8719676217fd74c54786488f4b4969c05a8ba27ca3a77cce73b965923ca554e422b9b61f4754641608ac16c9b8587a32c1c5dd788f88b36b717a46965635deb67f45b129b99070909c93eb80b42c2b3f3f70343a7cf37e8520e7bcfc416aca4f18c7981262ba2bfc756ae03278f0ec66dc2057696824ba6769865a601d7148ef6f54e5af5686aa2906f994ce38a5e0b938f239007003022c03392df3401b1e4a3a7ebc6161449f73374c8b0140369343d9295fdf511845c4a46ebaab6ca5492f6800b98c0cc803653a4b1d6e6aaed1932bacc5fefaa818ba502859ba5494c5f5402c8536a9c4c1888150617f80098f6b2a99c39bc5dc7cf3b5900a21329ab59053abaa64ed163e859a8b3b3ca3359b750ccc3e710c7ac43c8191cb5d68870c06391c0cb8aec72b897ac6be7fbaacc676ed66314c83630e89448c88a1df04aceb23abf2e409ef333c622289c18a2134e650c45257e47475fa33aa537a5a8f7680214716c50d470e3284963ca64f54677aec54b5272162bf52bc8142e1d4183fc017454a6b5a496831759064024745978cbd51a6cedc8955de4cc6d363670a47466e82be5c23603a17bf22acdb7cc984af08c87e14e27753cf587a8ec3447e62c649e887a67c36c9ce98721b697213275646b194f36758673a8ed11284455afc7a8529f69c97a3c2d7b8c636c0ba55614b768e624e712930f776169b01715725351bc74b47395ed52b25a1313c95164814c34c979cbdfab85954662cab485e75087a98cc74bb82ca2d1b5bf2803238480638c40e90b43c7460e7aa917f010151fab1169987b372abb59271f7006c24e60236b84b9ddd600623704254617fb498d89e58b0368bcb2103e79353eb587860c1422e476162e425bc2381db82c6592737e1dd602864b0167a71ec1f223305c02fe25052af2b3b5a55a0d7a2022d9a798dc0c5874a98702aaf4054c5d80338a5248b5b7bd09c53b5e2a084b047d277a861b1a73bb51488de04ef573c85230a0470b73175c9fa50594f66a5f50b4150054c93b68186f8b5cbc49316c8548a642b2b36a1d454c7489ac33b2d2ce6668096782a2c1e0866d21a65e16b585e7af8618bdf3184c1986878508917277b93e10706b1614972b2a94c7310fe9c708c231a1a8ac8d9314a529a97f469bf64962d820648443099a076d55d4cea824a58304844f99497c10a25148618a315d72ca857d1b04d575b94f85c01d19bef211bf0aa3362e7041fd16596d808e867b44c4c00d1cda3418967717f147d0eb21b42aaee74ac35d0b92414b958531aadf463ec6305ae5ecaf79174002f26ddecc813bf32672e8529d95a4e730a7ab4a3e8f8a8af979a665eafd465fc64a0c5f8f3f9003489415899d59a543d8208c54a3166529b53922d4ec143b50f01423b177895edee22bb739f647ecf85f50bc25ef7b5a725dee868626ed79d451140800e03b59b956f8210e556067407d13dc90fa9e8b872bfb8f +ciphertext = a413be81047259202401ee35989d25a3856cd1c0260ce2391de323736b678f328005c821ad092180b4496f2129280f4f299404362b9d141948b6bb02acd5736559fc9039018c961dddd94ee559198471d4a049e547b5636cf8bbf7db1a90c72b870923dcd54b148c60c9c8ee604d30eebb6901e6df2596121826058d25029ae399c95f6aacbaafe34f118ddba7a69d7cd899b5f4d58d3df2a889b030ce9a7ea6446d41a60a175f127da94c276baa1edfb357d41b2857ad462c83d8ff00236d9bac59325e0c3bddcb37bfe0fda4e167fcf6aec149fe5f9f6393fc4715c6995d67f2b4ddb0c7678ee140bcfdd2365e8122ca92cbba1ac703357edf15210c6892669f1a2b88d792be7d9aa56c5e8df758abb4bbae83141d2759dfc4ea8f2cf00dd86a7312fbaea9cfe6d7fd3f13fc8cb75d252cb3ec7e7b37cd81d88f38ae593ede6f8a81d51183d7dc7f57abb21ce2c593db72f0bf779cccc82420f53c2fe364b1fd3cd2ec54b924a62afa4c3195578e48aa5f507e7928d7527d6577d3fca87e7b7b19a89f69f0018eeb36871baadfcc7094e344fb36481fb14a5c53c30867cf1c5c02cf6227f9aae8d8a12b24c5ac2b8eb912b87de8325409e440a47b5c74237179a6ce5558ee09101ca4e645e24bdc28778735abf98b0688f6289d503251582aab6e81ced0179829f7311731d0615d0a0d955978aafbf8aa440a5c85870c58b3e5c1ff9267f094b742f516e8e9759d0f88021d99a7fd65bbee801217276656d21f3734de0a5589b33fe996ecb99c0d8a52d54b39dcfe707fc11e35638a69d908ccb0edacfb2aa435e3beb981d3fdef59cade6f63cda056c526cdc55b87a3ef2638bcaeedf406711053a09d310699dc8e3d07acc10e1ea8ec8d51ab31c04ca88c2177a51193b418ccc4b2548ecda861598ffaa8b16eaf89d59c8403c39c8d94c428cf19180e1420287b455fb6e4e5bfbd383aef18ca99f810f6cea703be4b9bf0cb6f0c5383e83ed3a723a27d8e3991067656726925b20fb735b12752facf684e5c03dc5be7a63af4bd930754fdb5f749306c2cfa6e398925c346d9d572924b153b7673b7a5022140264fd5a0abe00b5d85c686f296fbc49dd3155ad2f748255506909b355c7060dded4dd2fa21c7bf681251e7d63289e15f85854a25b4fb085ef03a03cd050f4f5021d112f3291a9fd60ad01e0b5797e78d9b94befe9746d754e6ce41da34c57da3d7deda6b233082c4137614e964fff0e38472e36e495f54e2d2371a7581b694cb263ddf80bdd43f6383578b5e18244a69cac9cdabea3d05718f5c23b1d4ce6684457597d01284b38b9d3eb1eba4f5beff990bb749f096a30f1bde724ade3789de5ef183a60163e28f1584500984ca5153555c38c61649683a727921ffcce3007c267783bddbdb9de48880c4e8452dab29e7c4f8d1d5dfd303a908b1ce08be0b9fae98894dcb2692d0b32fa39da98bd4ff0ea10f0b438a4971a7fc47182fbe52d6de71fee3e824a39f19c27f51aec6d92bc7f8b8f071847bca +expected_result = pass +expected_shared_secret = 729fa06ac93c5efdfbf1272a96cef167a393947ab7dc2d11ed7de8ac3c947fa8 + +comment = Official test vector 1, seed: "d81c4d8d734fcbfbeade3d3f8a039faa2a2c9957e835ad55b22e75bf57bb556ac81adde6aeeb4a5a875c3bfcadfa958f" +private_key = 94b49ea42526935245c45a7d580b6aeff8bbe0f5342bb8bd2550212ad5935f45cba7caa6df914007fba79e9946c9433a86a2c4202bbdcea008af78975e6619d3582787530dbb7318a530b7b5a27d24258c7ccaaaf505ca92cb853a5818d4269be812becf169a05e71eb957557787c2f3b72315281dba87476b157a06095a30d52b388ac22840755b43440a931df8a709dc435b415a7babbb04ccd93cda00ca1fb090646b1d6514813368a794d38c907163b5917496b018c519b160c5144d6424495626e3a5ab9ffb8d8d3168d77599a88a1d12c07d86498d88dc1af7fa7de15073fd4b62801c1a902b215e7cc3eac350bb63adeaf9c7594844795a9a6274aa3eca0cd10891f05795a77b30add76b6b1a35338b8156690ca2ea1c9c3b602b23324925314f726535b36dfb355225d37e7c85be15a5976a8a6ad4e2c35d4c45acc954368ba6df88a47dbb8c782336f7ea507a6c2d26d952dc03b4bfb89872644084783ab493cd72d3befc2c803b692729638af69b03e6db9b82e678a42969fbe770fef65723f77da6437c20b203601c884a9b9e08c0b1ddbbc1a66517dcfc76b3f125f7795e5ddabef0cb00119778575513e05ac38a7901a0e8c8794685c0f274050097bc50168818a74aba5d71980f5c76279ec0214cd51efa8a21391567fa052e6dc0cf9bf216cff9287c80693645a53d71b3d7509f6a432d51b2b0aad129b594278da74ffacbb713357d735a744b7c65e482b7e172c67a5b4edabaae11222b8bb6b4564ab4fb20c28b4981614b69bb188db6056607e089f64803d89210c7e604266b00548a2ae27996196a6d6f762c27b22731f7942543ccef3856edf9ad1b1b1652a33c3e038dd9b2cd9a4612ce174315e67b26dac767e50e68508d104bbae1a2b89b78266d27b109f90bce1581a8b8888c90c1c4ea5fc1f009d5073780cb4545087c88026b9b9abddab923db52620713c8b5ac3301e8715ac39d13084926e841fae41a7bbb7912e10680a78c0c363a251720b2d69467b6cac5d894f862595072a7c9b14bfefaa2fdcc75cc42892cec6184b52962b9b73d663b7d76c1ea499d538bb45a4caecee0c8eb93bba5ec1a8c936156382b10102e3211b2dc15663412805f60590ec33dbab80d2a3bc05fa8af5145644f712e004c20f799650159c40dc952c9a54c27e816c3a6a95efbab24a31f6c402300f9baf88a46644b4df8a24979e80dc30425b9e75a753a36510b87c5fa95cbf36e19a12245876003b54d4e008ef7ab9d83c5a2406014b5cc33b6167f4c452af45084b7412ec19556d82b0a6a90c1aea60a72312d8a7a8e5060189717094ff950af2b503988964f0aa227c523487471d3bc905b6672be20bc714729b7a71478b07a19f777dec546c624723af7b5f6c142274ac5652a7c2d7abbf1171f2bdb12f1ecc876681a600806d6fc229e6a8f6424419187bd22e49b8f27486db25371c169b3f61e81131b57659b1030a959790ba5d6424580b1f588326db9cd01a260b21b8c42062b883854fb173ea7613764d41dd6b89468c7ba6c4236d1a0436b945b8b340983023139293fc48c07659b955453bba07b0eb4e2a91f594232a47c65c66e1c5c8279f179925c55ee3a0b6dd406b49b9ca035467fd26c6c0b824bea310f435fbe8bbbd3430b5c39889e6b117e994e2f08823a33789ff858b72715323c6204a241d9835ec0da85c5884a8a96210219099c8c383c182632280356c1b4f298405258a170e81624e861fc1082d31867a9037e3b90b0aeeaa064d27020da7ba79398fa92a963a8a294e7720bd4cd9ea213f08063079c4d55b094bebc4e979444f462b967972e61206fcc80337911b02c7396bc64405ffc0b77cccd2ebc121a734037cb90b77846b2359c30a451beb20a6d72c238284e5df2ad1cc1a33fd5a104965c86251a596360d541240a4828231a827a0168b6d8ac7e27328173886453a9c91498765c2bd9ea9f666bb4a1d60f992538a1a746df845574f99adad23b9744afa81c7fb79a32b175706454438f46b8985132b8e1cca10c2b0fa011eab2428b88cfef9378a5228e55d7463dfa5022c998abd6354118b5116b3bc1004f0008134b85a1cf2a9f409a10e14b6d06c26d8e355864c35bc71b60d5cac33a513efdf6b9bb83bc880983682c8fb8a81b6927ca52e93835956795488181a8cd82b1a50dd18a25f35e2643cdd76c282e7018bb99624f031418fbc8052c4179b43a5998be9a20cd2d8a883b313ec282598202add6471971c88cd9607d3a8052519930bc5bc71ca4652352b4d02620b8d983b9849ce8b8935f1a4decc3250de7b0cfcb49eb7b74e0b5792ae97633b092081c3c6bf58f1b242ca07610c3387098ac3f0f9043901c614590c4ebbc64ce1971e824694a999cbcc430ae923a1432b6a4911162213c429481394a27006b9d48c0ab5801823d756bfd8c6919502d613594aec81f5669bd4e8495292606959292467ccac7f688333b3f48a39fce5c42c9c2653886a5adf4747cc943b2416348f46df5b58e4916ba64e9664a4baaa3e0a9652408c8e5076c226c3a7932c42a846949a2a26b4e2c452f86cacfe5c201ae1321ab5c2cabda557648a849241f077a799edba3582202cb27763047219f5546cf18819322b9c63974b322b949baa491d97c70f20545886c87086721d3ca2aeab441264b516975ed0c6044a425853528424532e4d721e85cb0bf65c26082c790765b062916fac4a0dcecbc2e900c6f600270838e2df20ee0a907e3613dcee049c445640362c980a292f123c6c9b5918f21443c996016c44d2a124c5925a8e0c48e89bb167a129fcbf67adb89903e1249f6028bc176bacc722366139858e583eb582ada714e79b5ad1bc1a6f18754e100624620968d0702e080befec425bc16b650a307802004c57590897c87e65347f32c324569051d798bebdb421eb28b2d1a0c662444c7db32bf97845d7225c7539f457894eb87606fa85b5e804053fb6ecdea773566c006e540ee65101d99bf314181d666680985c78b103dd00a040dc69cff389fea7c18e48a363b943ff042b476dc86be953a5925076cf749a62a77a9406165d31dacdc3a677b9114d8bf84b43f59f647fa4023535140fde04285921184809c5f193a7df45f62187854061a4d6754da528f3b71a134aa487d9b5f7cfc6838108b8b95b51f5540c9ea5f29990f7be07efd502461033f103723093a16dd96c098977f81330249183cf35a636841bd1a9b9796f13f56be785d942d7eab011805cf3504fce325b6a5ef1aaadbbb11c662b9d22cedad700b675e98641bea57b936bd8befce2d5161e0ef4ef8406e70f1e2c27c003271531cf27285b8721ed5cb46853043b346a66cba6cf765f1b0eaa40bf672 +ciphertext = acddfedd604fdb81a6bb89518b9c4542ddfa46f4acf3a1ad092de5ece00c823b4938a85cd32b1c291ffc446adba2fbcd0078e9ad7dac7aa54d9d38d1603a0707e9bd77fe2a41e2d35fdf5d1c3b7a9c4a1a91a1d6b96db95e11df77af9ad3511abc41a8f84cd1e8afe8b6d5bf43a912c3ae871cce1ad968f2736dc856208ed8802a42b164238e7529570be8a3b57954d9b6409727100153df71d3e405a633dac6668440919fdf6692e39505a7dac58268c2b9eaaa0dcdfaeb2ad38d7edc13617eff27e365ca2e015f17804ef7204158fda049ebef27cd80b4d03416cf0d34fd1298440c807079aeaaf86951dae492efcf43d9bf52afd9eb2e2fce0c644f4efa8c5e74f612537d809a64f68145df78d458908e0e8c8901e340e11fa5c0ce78cd7e2923a880f4f069934b7de2a6eb076045b7a3b43a5fbb9e56afe3de239fcff2eeea1d75e96c64779d9713d43de1efe523bbf450fa8236b9b57def1cc381a798b3b77ab02d8a3e944d388932eda80f5eb542b6e275d8c6cb92b31f8bfc0454643dcb9041e0069a0b8f6ac1c4600d4f15543fd5c25453ea1cd5a3cfc87bee71ae1a955a60087ba5db2773fda9c0acfcf22b2fb0804793add6d44413930eaf6f9b2d8c18433da6ce17f9f5352a9922741be5558c3d4eb57f9642f9774ad449de5d672226163174d82c5a00157f4b69d3d5ec3f1bd5586fdd9dd1c9f4e50cf4ab7d60201c7e13c5a3475f6ca877319a845a2f80459d7032b0388742e101c26f2831b7dfa78dca4f3b8a127cc956fc013dc068498901eec716d8f5d8cf943892c98bb435a0c3440512e10c3c6d65926549309e5a83b391b06b2b5e8f51353382527557507654dd895f0b83cee90de518228950d141b968c3e4ebe116905b3d233f8febaaa7e83170d50227ad35283dd31ebd69ceb7352e3351cec82285520ae8d56d6f597e52e360cd9586d99eb3bc1f2cdf1a1917924e58d2db1a813024cbf02f5d0a3458fa55617eefd30a5667c988984fc6e61849edb588dd66ce3be5a52e42abf0a53e93e0e0b92e178fcdc1d5a092f1d9dc9578f555a5286b112672ec8ff7a2aa7ffbf23ab5cc752a45e0ed056b3beb9711b28e415da7bb31fa2c9b5227d5bd30d56c910f58eec5946a15b6af1f69aa343070aa2aad6172a98875ea2f1b33ecacf8c477eaacf56231daba5e91a97f869e0b9f13ae213153e2933f10e55bbea8b8111fcdd68655ce09fd893862dd26e29cc24fede5dedb2cfa720f14fc739088ab28eda8c5b36ee7cc98d104ba6a463e8f6de7b906bfe165efc1fad56c499a64d923d20f49648323527dd6e172b34d79517baf2fbb975e4568c40ec4f19054721055fcb5255a7249c60528a816df084c6bdeb1986207aae2e6e2776bad47c31078891e2bd5a44495ffdd7d0a942879b33195fed959c30dc688666b718d6367867667260eb23229483123ebec5cd2d78e0f99572fd293d453f0691d1d72da92db5c84036e1a0bbfde755c9c1d18eb721856249db963ea546b4f2086f1f4f528c457 +expected_result = pass +expected_shared_secret = c00e4ede0a4fa212980e6736686bf73585a0adf8d38fec212c860a0d3d055d1c + +comment = Official test vector 2, seed: "64335bf29e5de62842c941766ba129b0643b5e7121ca26cfc190ec7dc3543830557fdd5c03cf123a456d48efea43c868" +private_key = 72408d44c2be6e83c803da2846d852dec1848ee41504b5c91f774f6e512b51f71dd1520203c486f63240bab4c1dbb212299753b8627f9bf2117cd6a83be4075a385782ab804a420972eb25bc553eb981aae7d7a715111338529f6116c10b10bbc20b31c3161d4bc1a5f050220b5584abd6a546ab51a9a10120ecc131220502697e9d61bdbad346fc43824135692204b49b5b377b870b7b28c86946077a215acaa11abd851eca479988bc69ccc9975eb42a33523c525434bc594217912123957dcdc18e410a6d6a811bed8a0b4135b56f4562f343aaec34396bb0556d7962679a76934b016b4b4bacc14650c55c3aec9bc2e85b548b5d3eb891b6596f0c44009bd0982d98bf81ac77c8da98264a719cd8568e48279df9c8e9552b94aa773b43a70742c75f041915752551347f00447d72d934bec553bf1014f4276015e0b4db77cdf8c546af05861804a5b7d92838744511ac6c8be55e883acb7775b98c4b4c9c8789aee317f8f02b4127a6ae879d02c13772a003928041c53351d8d70ce59b14cab5ca31d717f69129c8fabe46582ca5298ed156209c25bc57870eea34255ce1b4c426211f957d74876dec169c4c516c8716b3ddec6c3e610c31f0c52e13650f0b1c70124dee27111a76abef82c8fd3172d554121e6a87e9d3b58e11379cb812b7f4b95d46104934ce75c715771204d7c46aa9439836453bda709cef3bc1c9341994f25c48b5c80fcc8a67e316c431bd302b20904456b3283e9ba1bdde494ce9f8a3f0b432dca69d0ba9c43c703e1616272cd6b904d5b6279c55a539b7e46a601b28493e38a2cd9ba66d997c8c5c3b7631822c529fa48835f8a08f322615e96b9087c71c9f262b68851f00486489d25c92221c2759c89440ce733614b8c7a06f26b374cb4f8a6a7d67da521eba7232c0a4c066886b8450755896cff77a369bc8fd4b3b5b0731452a908acc68366b8edba66d09f212c9330c83990ab2db7095d708b6c3589bf929fea31534646537d2ab023887fc286f00f46f8a360476998e4fe7315f03c234929247bba2a05297a5e01aa9cc6158458e2302513274a2e3359d66126f5fd44d348ba2b634642ea26c6cb616f64a2d2c819abaa48bc565ca0ab67e6cfab1129a0144c10a003b44bd3879b4e62e0ad3a58bd86a7030be34309f3309642b017b0aa03ffab4012b36adc49a95ddba67cd81306ef6bb20b546bcc55eac2b815fb38bae991d6ae7aa87d42ecbc740cc816a3ef42e9d204ca0177cdb30cdcb870386c320ff51b137578b029125ba518a5b887d7b9050dff113468608f6335ea81a59b87cb753724ed0e159fa4709ac018a31194247a6a9c65443a35ac36e11bfa6a8559cf20e50116ee5fb3780fa03dcaa77846b18c04894e50486acfc3b8feabb8cf860d79c2734a700ab731739244580653699b51b7fc440b8cb1d6bb1360291bda5b11aeda3c77a25b40f96763a372512561e0d52848fd6a3a8241dea49c4c24692cb43aa22067072fac2dff7898f298cbae17f9ca68a132321932295161a1f31c178932004d17854d7d9c69f6640ee216747102280191a5695433763b6cf3b86756aae22a37f9f6920c361c2ac68a7e11c8f5505af2100651595bff5a35b4ec7538b62289dd1204db91ac492b610538c93eb5f2637ad97dc88f0035ff3cb735cebac9be7ca78a4149cf10b6d93283050167e737596b711a9f32a0f6909975055ce6632f4b42cf9a2361cf69047b5bde1868dd745a82cf473ebb30d86a71793364f70b1255b1c2003f166683c936a7977df156a84051e69b95e02616dd3090dd38086ef3bc12353bad25377618965c2810fca929dfbf46f20360fc847818cf90dbc044eed16b3b9052c5c70a5a430441e53a5527a689f49b35ce82b84d6057c5269fb60c710c5731f431a970b86431125910277fa7c310a2285117b47b95054e4174a1eb11da3e3c26ac25619d36712b11b2ef7405bcb943dba10d50c0436b50de5b04d96488a38f53df37895ac20c10d959d81a29fe1f319ff871831d93c54654172a02e65599f9d820ab037438e62714be6c7d868b66ac03c31c8753a062318ca36b6e59d340b9696d47c38f115104765865353a05c8fbc4b0a62a96577e94c17094de259006f169e75b8919bb4c37df6787b59bec8fac999a90b73123a5cc8772ad67585c879ebe05b5c06afdb440adfbc4ad400d0e634822a843e9b165f2f0bb748e231c0e0ceeca8806046b5dea7cac614a5e2cca3767556448785dbc739caa9c58fac291a0bbe96e9ad36a4a1d9c96939603bcd76a81c040fba27a5a39a1c387cac9d1b086e512468d378e96039aae2622fe5483673850d411ab64b892f2c29853822eae76feaf5716a660b55c2020dd3323a150ceef9ab79925d2bc09cc6faa31727a5912a7f5e9051f8b94d8866c4da173d3f2a388e6c44218338cb85702cba2f602c24e1788158b0129e7c15dcf2cc6ed55c54b456cacc07d179b432a5aa63e8ac59f0b6979a833d99c13aa0c56cb65928032e2f30583fa6c038748ceb77a91c631dd09b575f13126f1447cab00bc9c85fc7601da44ac5fea5adcbb599a409bb1a67b24ef438d750bf87a8814df22449c9256da1286dc623e81546c283b80cc88c48f003678ab35380a6da551ac7041cd5112d59d15a80032c28b61a1bb3b8a7267adf4662b5963468b3bc5918418f980cd7db3946c5a67f864dc1f3adea12142fb71fda590e070007662b5c3b8b31af169a092a2e466aa01ae879641bc4d1d62523ccaa3ed436cc089b2621456114215d1a9eefd1016dc81d5320956fd942bdda40f3a033e5170ca6a2c57ce17eafc97aa0959cf37b92e789636f159faa827ddb895553540d52a61edc1b3dceb22a7231c48037cc78594718902333d0bc4fe6b29352991e2ba5d31217457007057b9d3c07c39b7c7eeecc222d4415d6d9272ec50b81520bc607592947c86d2612e434c22513235536cd08f10022b97675b89f1de58130eb6797380f6b68773dfbba0664bb7caac84f7b06711587c6ecaa383505f62751c8346bdd502a58e9326e4a0d2d29226f794ad0064b2cf0a56e6a67c18b331f5537d2fc6c3aeb52a5c3313118cb7d159b8372158c1a7bfdcb65d426458edbcf8797383e272d3b18bee68c4d74e25751ab1ce4567d66b714cd62a8e9b886baa812a9f50739e30f296791414727d55003bcb52ab6bb74cab215b348ad06f974192cbd61576baffc815999ab8556583024cdbd1c4398f4a4ac60e8cb68627382a145f91be9d78fd51ba5e3fcbc3155b62bc07751dd3dbc65b722a8982d058e27d409f04f744551ecde9015b62607cf67bb8ececbb8e82fcc97ca60ccb27bf6938c975658aeb8b4d37cffbde25d97e561f36c219ade +ciphertext = d4aa3d0de639a1563732d6f6a1d0e8dfa86c667977822bd99f7fad9c2996b5b0593aad975d8a7257c68209d80f676f7083b5f2d2690067a9c639882955c4717ac9f64d01676cd1656a181124b299010cef7094772a6c83b4dbc15320a22b02de44da9e532064f3dc3b6e1e540cdc168612b4271849a1c48efab76c3614c173d973ceb61bef391eecd1e3bc8aae662c4d60db2f55458f4d13c56262961268f714dffdf907aa08a434d7b897d1ecfffa32f1c62c3487adbc6f3c6d6dc38302069e2af348d26b39ada73b2c5d927eea8ab080cffe74c50f6e2a5e2bcfebc73ec4f100710c2283b42cc8f3db9609bbe487d0ab933e970cc30d3f084b179602b555f797bc53a49d56a1ca53a8b0e539b2cb41a08c306a162b902f0e8475d0332ae8c2329b54c45314b598d11be48fc0f9ea0584df93ba3185c94c063968c914e390fc7b04202936acac5c8a7e7677374f62fbb205467697881e3d8ed60b0f3730eadce1d26058e58f652e4e00b9b8c2b94102d1fa39460973ca8cba348cd67c20aaa1cbba500a998b50d1b0f48885edf46b79ea816bf7b1831ce4297a0330521bd131a9e5a43a5d8676619be7a45fe29509179d8eea1d0afd63a758817c3c5ce5076f21887a48fbd2afc142489768ca4bd0dafec9727b1fa77aa1f977f7aa72b628290265d1d3a904f5b4c22fc313f5f75d1b8496b2195742b6eb017eb8d0c4d40df0913a7ca9dd5427708bebdc435ab096d6c2cace5d24e8dac647bd5e7e8060a81a379abb478702341f0376e2ae70de9a4e7ec6213d61983713fefab2e4f7e6611174fe4c0578435cf87fed3171ae5488bded533e9e4a057c6c79e37f93f6727ae9269d0c96bbde650e4163278b54ca865a38ad0ec3a04ecb2eeba9b7f1d55c84fffaa5603a662884baf8f715ea6a30d5350eaf6b4abcaf7bc2a3db44bba3f66e84d7c0ba4afae3950dfef27985198533ca5af7d59b4e89f9dbfd29688978c0bc639dc7b3f06536ea66fe0f7aed7d5eec6acca1ed5d13f4ec5ee9e94a7682d803477d0b31ddb77daf14395bc54cde91caff9dac3cb641a1b7354d1fa9e90756bb59617cf1108e2bfdffa11bf8e6565f7cf3df3501a2193cd03047a7e7b44aced6ae6381cdf440b7ed2efac1ed5f6889d69170490b57335a01adf88fcd6dfbf8bb1e7c97038b13e81f018868ed52516f6bad28043d48abc1bd69d93f6a192d3264f38fd693f5e9b43a81446079369fd8bad5197328691dedd297ad98f1684a03193c6e6ecc469544463a70157f644dc14c341ac3943f3920e9de4a96d8091b282ae5fd5d9fb3bcc94357a67e0f616c6906e555d52bd13a24b05be0866e43ea957b297094f34a3636d3d9453a34b6d1565861fa67a746d2fbb598a6f1aad8b2c7db65043c5b7bf97eca89e32588fe105aa6ce7e30b687194169c4fdc6729079cdabcfb0085d00de34ba57f9d8140ffe1087c469d7fd5af5242e096e18648866bcf24bb5e68bec64289ba207caba330b6c8ee82bd43bb71fa96977909192ef9ffd1ccf +expected_result = pass +expected_shared_secret = 8f50401bc9b1f857fd870902d4065f6cec8cb825db3eb22573c6167442b6e19b + +comment = Official test vector 3, seed: "225d5ce2ceac61930a07503fb59f7c2f936a3e075481da3ca299a80f8c5df9223a073e7b90e02ebf98ca2227eba38c1a" +private_key = 548a01803a231ca63843872abf16b2c4b9ab7407a093b354f8882c6775bacf2931de0a501c5a7ea7ea5c3baa067290b9fca059d69cc6de9b772cc058470544b64b11abb77f490746384b83283740f0702e17d046759b61e75030f187c2283045b22b4f9e222ca44980dcd0a42e5704504bb3e097cdf93a99f057ab21e3ac305666710c3b4c1b750aa3ac0f00a6f592770d8082f6157addb170a956456c7616c856657835970578b35fa87d8f79c2ae54ad36823c6a13a4207453ff324f17d13d43a400a2102b6f6224e6f2132bb14a32fa3f10a446d7944428b66e0e0a04b204c5993c03c294927c60540f836572793c8825376332b64d109bb7273147a878ff0b0bd2808b62104515d0824c90a4e249b4ec8c0f6b572bb621b7a74089de4b49eac5a3cfb61a5d6b420779a29e1c5ae98ab30e01a0b45538c9a14ce61c4dffa27a4e462757a3bdf00c0206c5bf5233132c47b7111771daac633e22132ae82cbd616ec92b4e9d1c88e7285b84d9a12e14897a020c06832e9cab42102ab999838a93a77141d12ff068ac13dc4c685328c7036ccfc2087bd92ca5a675cfe40ae4c32b28eb770da04234a456eb889ef92a93a0d3ada8061599d99cd8a96880a2b5e440766a9c81e7a24f14c295283c333a0576b49c569c99450f8714160c4cc49828090bc2ca390094e14bd6a3011a5c038f0927fb4bad38440ea9f96fee99141c564a91f9c86dc72498f89d05b047461699fbba62ec28698e273e2b8436a6eb8c9c094d3404853a45137881c691352f6240abd2298488299331cc03b1a3106f242d2871525587888e448d0f45a61480bd7e377dd5b63e143093fcc8bdaa563264baa458649ce7fa5826e4b9b49159e7541d432143c5093a2a5bc5b835535fe7395ec556bd467a10975ce26304bb892d056a6ea4c5ce08d033e9334cf7f6750cb62209ba21f6b147ac875c3f1195d9d991e333c7c25465176b8a566a71451b8305f35d831a36c57c64b664c707f3bf08b54ff3847f1ef0ac4b32ba7d563af40228b2957b8a95063a65bafaf86609b4bfe1127c029c2eb224465e1c178c74cb5db4c0c2aa46456761ec4a528ab2bb8f92c120a1b78a9517a29c8ee408ae7fab4fdfb1941cbbae4c3630f407a2c23c4d10a58a8e64546727153d61766d0242c5132236f637b7323905f4a7811c1b8019a808946c11a54f8ca6c16e06ad9a685edb094616a80383a79e482c611760c249988547194266000722743346d13c80f72117c25cbb48490e05789c6a5e85ecbfbc73669f249c10a12eca037dfd15994cbc450eb40868abc2fea05b5058429b6b04dce2c4e2630a13dba2bec9be9c30b9f90b45a97040a1f227200ccb4a4413c8b0c5b169830d451bc7993eb3d5b4d914a02c3183b7423d61101b0e3ac0a2a18673126f69511f27ec55e28b975e22a8ce800c37473cac71788a42cd39c26c176c9c255c4355a62c0b84cda33819a1ab6c07bbc4f2847aa23a600829cd516485dff565de9c392791b84bdb4580326f5128556d160100622affa2756e1cbd0a0a1f217a0c198a6dc043b1c50813bcfb3c2488a5c02c79393b65f39990b610274fa77b814ba93784562e0794c179549ea0927d9b4a25949faea67e908040a25908a7e33199d586f22a3cf5a7ac49ea41bf83452528c7f12118e0685b09d30947ac76f4f72e89bbb7579bba13d3cd4e262fcd385eeca8b780d7b6d3343ca7ec1958569c49808b97586c263903989928ab9b63efac00b27037637897556b8aab33198c144d226ab9284541400138e03a31f10cbf1cc4bf633c3ad70c65218c1b18770c91d139971574dd90317a421b8bdc56c02c2564b2496793a27a12009ecca141aa337e911f0b448d913394ec1abbb46a568ba749f0fb0a2c4562637a220225a0afac0e9a53ca4f506391d7483932814dea886c89879237a95c03684cc0c2d2701b40e5b3a340316159cbc56bae84130f2fa830501257f8a8948f482ad194ccd4f6ba6c01bacc4c1b9c3188c3d002f8f18f62393b373396f6c510308b6754b8ca81f53d5a1512ffc3428a6c2a543a61fe1193a86b97b260339fb43a9f0375b1c2c62ddb4c1f6629db701b2d2a50577cc7d5d55a30766400842938d83a6818a128310d16648614a6b6df6b5d8d9a8d0ea4a127f4233b9a50ba539f5f01b62513a5c7bb8ead8463c0a346252c94f753a34751b078a06dd785ac6532c2730caef7249515514f8e18713c2a72d8949de781c698e708deb35448ca1df99b8e09ac4faf694ca71b7bd41bb7024c0435424831424f680a77f13506a56c97b6966afac4b90fe60bf5e7507e6a7093c47b5f8ca47d86c767455d645c502d82cf5b1ccd8880758bea855dc71b1c98494862030202c06b935125654ee498a7e7f37254084aa1795484fa77926c8b438592f4d7baab58978329cf12f461b1f93aacc7117980774e12355af27e506a2ac63c4abfe585b2123e2404b9ea9753fa101604663d07e153c07b743b23c56b86a91ca34111803a1f5865e47807c012a81885104495499884b495ea3f457a2ae1363221b2a94be84e27cc9e8bca44f8fbb92746821782b3b92b1bfe87127f34076bd4acabf60e4f9b97a8f63008b584d0221af927c67d616bb9933be9486e38d7befda11a27175f670600041a6dbf0c9a4364b3ffd28eceeb0c8077c3aba19c6123a20ca72c0776aa8e21a582168591c7c1eb146ba820c9ea1aa3374625c8744612bcab37250ffb34a89d305c35169660dc9b09f7c960a4c4450b1a2e56088e8605fd75a35eb620c3c90b93fb001e03c006a15b67136ec1c354d405a61014821fa9590dd212cc6095dd011bd8801a10f08f15da21c14cacfde606ca02b7e2e1483e3514cc6bc88c2987587458d77851e476aea14a94c176a4eaf865d58c033ba2280ec0521bc53dcc3772d48258593a5a1f9974228652b8cb4a08296eeae869c733a316d926d400cbb09a2daf532da06522da9694cec2a29cd4c87f6a6c837c6ef6182a30548afdb807bf447953a3827db3122bcc7e33576a33a943492a61f3625dcf412793996c664a4664b3666c154f90b40c3ec514c4b1a2d265a23b897177342b76c69637d52e356620f468480472923313a658683566dc8f8fc1079f248f9d8ac67d4ca703339ae28a86edb4bc21db231dfa970249aeb1e2138bd4791352151520a73b0792a0e77d4967bc8b46740cf5599d4056f382c9006b79938825dfe2806cb6afe7523d940792782d978970256c691434f939b02c14f42b1874087ea68917c2f3e31315e2258194391b7a41175a41c15cd995ebc69c83b29e4bcea6c186611dc4a79578e37f4cde950541fd53a8a47aaa8cdfe80d928262a5ef7f8129ec3ef92f78d7cc32ef60 +ciphertext = 72251024f554cdac42bdb223557f2c724beb9df0001783cf348f83294177c086dda8f240a793f879b84b7ddf199fab6cc89a5c1a5d9e72351a6eec092567a7fbc0f588b970151d55d1d8391783396c352f1842300fd934a2ad4a2627b455e47102c45e3d23b5ab6cd0db4b40f689762c36d0c90ceb333820e736fcdce8f0f683a3476602a5f3326fd6278ff073cb5833584d8a5317bb6349b6d4a0c86b4adfb9f3e09cad0c35acd652b16646150e40e3653e230fedace908bae8b9411a8b344b90708a468129781f42dfab8476b654ceb3042407d8ba005d7577976e6b5f918d53d3cc3bfa1426633efd8a8a211c57fcf3026daec0d1b63cb874efe2f9b0b90bc43421c39b17884fd1adbb1b7a27189743cf9b785692d2afaef0d8d7f3dc84cc0a04351085550a53cd764ccabe0dfc376dbb140562d8a923fc5d6478e5fa951c1797673db456634f948f840f534f66739943509455deb3e1b7e4249f5b35f0ad810cec14e275f9dc23b00fb89fe12c211f310620ddbb24871a15eee57527e12764f45039695780f3eca702d7cfd9cd85b2411bc426192d6e9b77d65b8bfce6fdf610564402e8be61831caf75fea911112cf42e65ac431c891c03914c1cf6cbcadaac24f654b4f853de2a7ab29f7dfa52b91efeefaeafda36feb7868b4b28f8f987b9117d5049cc61d41b253e4ae985319210509b25be27e4c1a5220503726318debc86321cd1fa4158b1afe3f1677f1474ad276e7adb6ede24cd85a67023e85acc924792bb15a4228bc242426b72672b1a443a188a2b6f95555ae0ea41e1e03a26ad7f7f3f0d1629fed1002e8477693f97d334caa9b448e0e09e9a1216fa03219854beaebb0e932c4b51f9c7f8cb869b05c5c401b3de89cb08b9bbffda04d6b675988fabae97a16c5991a9bd62aa093bbcdcb80f5251def293ebb350a4e8834ecfa67f716f4553beb0731069ef5ce77af83f29cdb75309f8488a5eb7418677b4cffd27415d4057aaf750e9da84445146b21ffbd57e3ee5fe3cb0525a9192539ff44581b96c6ad6131af9578b2d82c0d5a9e9d165d992f34e7f24805cac07d6595734a166e946a7b0e13e972f3a4eaf34b82e5c04f10dea2b31346d5b7321a718f0e162afbe6f80388ff18b4f3d2701e17b9ff3a3b8d62a412b6bfca7ffa618ec1e54c150e2b7b7b94a1ef82bad5d6659b22733105632a0949068b2b78751a660567f1f74f79f81d4bf35250fe1cac57c4bd5bd2a759b23289188444645af0de21274f92c5341781634c9ac6548684a9ffb2960735aa2562fb02562ab8b86cc5cf544e71cc1348f3fe5c25e9bb086e40773b2a860a12a35799dc602a6140e6b29a249aaeb366b2df08fde7ee87ea86a40f195b179bb355a61f71c40151a3e4bfe5298fec2146b968141676c9b24e662253f5579523621cdd775c56257f1fb23bcfbed0fa1a7381330f678493794a0c6d79c26a2171709f615898ff6a71b2af60e410b37ebcaa0de88d54081d6659a670b9d4c2967364f2995e744c884e1832430 +expected_result = pass +expected_shared_secret = 3221d7b046caccbded38e369625f69bac60c2d7efacad8f24170b10c5d222830 + +comment = Official test vector 4, seed: "edc76e7c1523e3862552133fea4d2ab05c69fb54a9354f0846456a2a407e071df4650ec0e0a5666a52cd09462dbc51f9" +private_key = 944ab695c2345bb67894d451ea2a5c92561a5467c769352379950879899c9cac9d05e89cb2729b2bb47724923fca357623c69643569d66912b2f9b3249908090d4c5f68388a6141163c931df430d70290950b07de410af913c0e5a215c3059785ef05b824545aba0b95e7279d1c5726b59890b82131d5c62e8b3be33b8016ba0c321c248a5293c71eca570c9536f958b84663b1dd5bb6f272c3e201f014aa3ae05640ed92200274d45d9bf4410ce8ea72d680ace1eeb04cd8b002de72795db60681bc9ecd387fcea796ff7726fb29877f895e6832eb7eb179a5956499ca3bcf3283fc8489d494a88668e6614b1f49824f12a448b31a42861190ce3a9f73c6ffa25622d7a504e0694bb7c75ee71cc8e718ce9d57ac86a11721721e6181f157c333ae098f8a6823f765b60f0300f4733cf65240c779569620213b8a331731a7b31937104becc0995ef57255261ad9b246009f855ca82af2001b256760c1543074d70b3c578279b35137e16ac2089a4c60038b8671d308964b68a2211187154746c27f59c8105981c8c7d0ad58717978c01a66b5ee1697188bfaac9b927822c940c5380409f38459f5b302cf7dc9d6bd823a0308b0da45c35d541d2346bae4173fb0c677eec26a94c4158b28d4d7b4b0f62a4ab06bae0b42208b099a174bb4c482c7c321aaca49c4a517114a5cf408750e8588545134f83a67769cc6e0b413bb800c04093184625a7ee24134a721d5fb1571cd82dd1d7c5f9103e0c2c4416cb775aa28df48643084b391dd2caf39278e9a31d2254871b170ae1b60a4e39b1f5a8473f580c7153caa1369d8e9ca381660a57ca8d2523202816767ca8cac0914c16f1cec8ea4ea5da930e0403e7a876c390ba31fa250d946a2eeaa479888011db7942f7676a120338357bca38c4c95088a4a0884b8b4c14e9c09e831f8aa658ed77cc164124cb281f61856bd6c965b6b6cd60b1b1034888f3970555443f0f5cc29c800f578806beeb4730ab9af4b9beb89502ab48761e188cb9aa95ba06b28cf4b89c200b2145a4339a53406b6790a518f54902eba0230a8c2a45447125b7330f12645d935e00651cb4996e395543b7e643137abf3df59e042abd6fa11927062d73d0a107ba6fea0908ff6759a972c11e864ee7393254051bda558d4b272e6cb2c337747a7ef46f5ac872d5d5238521c09e21495ef98b59c22961e5a4967370efc4865f06a72a41464d37ce4dd1803bc117888b681d35195c857a47b764c6799a86e27327eb0403931e29f90fee8628aa43b333615bc0f251707024ad41a24e3c4f15b99e72f536dd989c0325225dc682e3611640d99c1552506e687e18a883f90882056c14385bc08be82616d811a4fb2dc93670945b7efa17593c4b7bffb76f9a805f5230c50b065dc77b409ca8cc0b7190aa61614c528af2d1ac130c19e4362e85a40693a87c00935a887b9b58699777453d8278c445bbc8d225412bda6fdf026207e3b207613d2ed74c085707edd555fe4c00b40b2a83aa219cd643f1d83ec0fc21bcf94fba6a8262d959c9fb345f2221082c40a1501c46c55082db2709230b04090558cb6d6815173525725d8cc0bc93c881c99a16041757d6a05ac71a15e887eb14cbcb226951857be4b3bc2a1b578b148e824a2414412a3d57c8213793c418bf2e0803de4a16eb9c8b5d53718d38ae40299b89793f14741792bb10d9c21d5f06633aa3cf1cc78d0dc99983076f8756b2f96b2095e0b812160fbb9494038a88057671dc692f14a956d5e6565ff752d28237c70b8f8528cb1a04cfe5e6495bd3b46a3264fd7364e0d54f2ad27dd27b022efb3d3a632a7f99551bc3317250207f2658f363164a9631a34b468e9b3c9b34b27a3a02fcbacc516469f69b3a51554b93e05fd6dcb098e8af8a3681ce89548ca311e2f5421ca1496a532366435cfd56a26a245ba68655db99cd113c1ad1170bab16a22bb3399e45c6a9ba45b5dc5da04a426c635c844744c557af7e49ca12437cf455b302c037bab4954627a2363020c4ab5ceef5aaf2e352ded62fd6a52acb70c84723a527ba34f179204b26ac10692822ac66cc56bfeceba65c33295fb805c596a48a0c59477405c21ac3edd2c27e56c19bc84d710584ade48647c681746038ac74ab73591fde872ccdfbc3cb1218fe12acbfec9248c00e19424b1fbca70fc5193151aae1415416ba2d7faa6a2c745cdedb94295438bb182dadb77182b2be5bd1ce0cc028b7eb71ba8cac8585cba3ca01620b63fc91bf3c210f67c65c92f893fc616158c104a5799720ab0fd907798f0678746475c8502029865dd653209a39c0c362258a266b1b244a4f42b4adc1c6bf602fe61125c3b989c018c0a0e0c73e35abc97c9ee695cd265909af82548b865eb4238376a6ab53a6baef185799489f64e200fb542ec3d1b42e8b3960e02730936d620360ff4570b4079b369a83629b599e7b27ff48c37f727a4f93bbb2d4b7e1c73fc0d6668e53c1efe0a0b547b1f38c51f4001654f45bf0e5766ca1c662f2cb99a6bd42a17f89c80a4db03c990a81ae9487e1a52c13720266083e152061aa08c03a7a703de58251f129546a42282515a3e27195ca97ceb39b00566cf4acadaf320d5c88c75ff310f10bb5ad738d38aa47c945235e1730b6cc227a194dcb04ce046a22c37319d910060b594bf8a64f2c4b8f26000031948046721e6546893a341ed2c32804149954e3788ea5054c51a43da89f9c789eda6727bdd4be32b15d47b9c327ec68422813b00950bd73c96c7175274a5ea8bc128a7c0993031b4e8a5d3c074d2d1abde8239d5af58c06509b24109c84297e3feb447fb3926dc19f39211119c4597711a222b341cdecb0698580e422a951db2305d4a7a871967db945a60439de206955c371ea52452f865da438130d2b8eab3669a97911258b08931a2e36c6c390b6845e8076a0d621d7692971ba71bda0b8aaf7ba0ad3c4f05ac23621a146c68bbc501854062b924c3a64916a1b9b19ce5b466f8672ede621ea987f83495106dac22ffab6f4a5cca797587126ce50589f68a2084875bbb505c7ff46922eb496da260e3719cdb2f23950455dc8d36e3932518bc11bfcc067ac533360b86550b6ad09e93dbb092be410721d48bf56b3594b93cbecfc785a5852b598425e4c4cdcc7cae1907adea5772276b2929b9507db5c06041e5f9846506055417c6fa091652a4a424bf6396d46365bb40601e3a55801b93a1ccf39126ba7f025a2467f6d44de229c527f6e4e7071cb826cfe76fea483d9163eaa84f6afac495ac5dbd68b3a8c148b2e7ac049bb986e14dd1cebfa1cbf3edd6bae85a4d2dda082be2d3c64d38269a1ee8660b9a2beaeb9f5ac022e8f0a357feebfd13b06813854 +ciphertext = 6416527ba23e80f4837873839feff13b3514abd118bb91d6b361b9bbd9abad576f3a4d8db28cf4461b9371ea96971269360f966cd6220bee62d94f3fdb9857fb66b0a9245fa492d68ee1a9e8e2a49f1610391349377d1810a55258b3529d1195ba41b6642b7c8b5ee3e14cf59216a870790088bb0511ca47eaad07326f2596cb851b00fae41118dbe6f0e3563fac9345bccaae3f1608f10e0541022de77c2f820499042e3e0398e48e8df6cef984c91675c3ea283e00ba9f12e7f3f0b5a4e9a958d648afc3e5012af630b6b64848036d95bcdc79c5d1b11bad1327853623309c5d0cd670a65d64a3737817f5961cde07a2d4adf8e4624f0cd88494b5050ec665fca1991384f9bc93e0c3be752f94d4d0fb3908fe8ebdd8b8a9968c00c4482ede3f60eb6736dd4e6a33e44652e82a4cd16751b760b784bbb778663bc514073a93be9e9626c7979052816fd54514611134fac5a6a7ad1b5c8363336ad8bf44f05daf59d6b66e28f86d1ccb6a776622114190dfdd65f5088f82f6ad4df28369d7c9a7f67f12ac36f143d9e2ebb990c4f87c4442e81d16e8753457183dc14b0dc1aa803a4b016af2bdea1b90e888ca5f15f5e0780fb6ccbe45071fa6f73035a547d1eb8318f735b15b9dc465e6938f5454808358bc4444304e82397db3d1f2b06fb5aec777e2922887408eab4804499268829b5b94e66e75b01e4e8ead235be8bcb68c801d9a92adad2abac3ccd87a486bb4c17d6717d3f679e0d8d549af5c8fad6a0a398b395a57715e8a7ab3870a475d5c30b917d24e69bf0c9fec18cfeefe54953064a1c56c00108f82df8f224469e2fedf46e2a8cb3a0105a3542284611ad45433f7782b9e879f483f4d5ee87b481f8b353741b5565edab5b252c73988c705d7adf1c3f2c87b2f9bdcb94ca5e4a0c5aabfa3ce67e8cfb8f79f43dffb385d8ebbd4e76ffa8ab641a3c8f3bb2291cda186160abc78169568e7daca87a9c536d8a7c345ccf8046c38e165488301872b1d7ca223782f5acb7bb664ad8c7448beff305147e7bb663483899ee1a4c481761f7b65bdc9c0d4396514d48f22ae383c39c9fc650b7b7f166bbdd2ec8bc54161f7524ac69a9fd9c538f584a096636cadfd633d1e64d5e89246a08a51a9c334608631c2687d63836f6fb8dd515bc7a4e769157499638d2611b69058f2615527a04f4ff2b60360e46e34bef1c8e57d499850f44ce7529e80ef0980790a8925184b4b22049b356f4fbfe293ac054d63985540cacb9f25e9180b626bf1e3f5bb3f413f090f5d468402edf672da22212f2d1214b760944f57d3c914c042eecec08aa5d2944fab51fc833d9e374f2be7c5fe94296c0df98392592e0a6b183242db0b124ea728c44a5aefeb2ac1c1437bb8ad49fdacc3fc482aaef9e814a4a8010fa2f0d0cc6a88a259aa8c09b7204e09a71fcf5a0e7a801c3319369cb933a57cbfcceb64f96be35598b4d2dab925014efb66247362e5b61cd56471a3ce4399ede77b09879ee29fa51513d4532bca164dc19be35bb7 +expected_result = pass +expected_shared_secret = 1d746afc4160c75aaa6c6967f4eee941e09546a039027f05f0f8a483710ac334 + +comment = Official test vector 5, seed: "aa93649193c2c5985acf8f9e6ac50c36ae16a2526d7c684f7a3bb4abcd7b6ff790e82badce89bc7380d66251f97aaaaa" +private_key = ac65af9fc8b905d09638374e58c551da08ac4ef86a8ff04489ba462841a85d907ed0c70e1a790297ab2df7d6cdfc5c6af513144da105dda2c75f00736dd91564a79668e335fbdca1c9d31592e73d60066b959a2fcbf55474f9c21bf058f021457586766fda4fad521f64940d4932b07ad8ca7e1a06662730ea6c15aa1c2f9662552313176af04fa4a98962101492566adb8bbc3ec04f9cab9ebfe5860f886d57a2c73fa050a3607a8c0998754b417c9c5ae2fc3f829cc3a2ebb1e927ae87b68c6db355f4c661cd000d10d6bc31ca1c249a9b3931a4d1c57904dc6df923839d9a90aa2b93a87c44b5f82e6a925d22e679428064ffcb9621067b75477fb7d51a1d3b9d9de4051cf874ccec12976562752cbfcfc59f56c2c60b8b4610a9bb36e9019b974502407d57289726ab8a38d7a6c880074a5686619abfffa5757dc79e1449408851502beb8196f493f4a724b9d681645a07b193586c5c05d8d10e2c968bd251b88691c368dc18cf8270dad3c22bf5093db4cf05668f8c6315c0ea3f55495e784ccd6055ac451363fd77a91686ad77c5af53141eb5e7534fac4de481741e48b414302e4743789e250c39c45c0a15cf42e7b3631b6a8c0971c8a34b8200bbfe11004ab06bfc5949c3615b02947c73e7a0717c6b60f2679daa21afe4c55768a08e70105868aa6ab4aaa848c79bf125883907b9daabe367afce273e2c168aab02acd27855e2944b67b938170a9258f67397770136e466758c260ccb7da226b5a95692514727fd48953c62959c88c8784a8a52131c4ba5a6d757b4311048b602b554e8ad509b0c12b0a64553cd4270ca92f36cec227e16a217c769a2bc1aa6c356a5a39c69f4963ba6273db9232f1d8a28ce65b5b9058f1b8a164ab0380c42a8eddb6c2b8b19f26b557c387e4db9aeb92c4d7d0a2ca1e35f97e05cf590bc511ac5efb2357e70525bd027b36c6781c4b86b0069e7b89c8ca643fb9990ecab2cc5a8a5a5b2b0441076ce934d96bca9ffc10eb6e7bb093675e97b68894bb030581d89123642c1118364115a76ad1c181eed4b691bbc15df182dcde00c71f8685b71883a184396d3475cbbcb674360dc14c42dd6461514479c85557194a97a654c4be7620fa84c59db5057a0886d760460cc4a3a713f4fd4bdebaa93b943c48e6348053703ed818fdd9cbd62e246c0b69a265aa381822d6a474c5aa530aa5306a0c8572c413718a278194367405789e1f749ab4a02af87b362067f3da12ec01a83acec26a390cb5419b351bc95e08c7338fb933b81476ea950881275a186c9e9f99dab63634e6b7314188bfd686d74ec203b71542b62b1c0c7712745940f7b9237551467470e5b1ba2f8e34cf585adbaf980317c9db1147382946c12223c3a45973b879a523855bef121151bce620216dedc6c3457ca03951ff45b662f79a1a7a5cefe9a846dd5774c7c2a22f842e4e465a94314e036bb55a2787a1a0f0f111143872dae74af706a369ca54259b80578bacd497700871842b98cae2ac3b572f98f145cbaaf54569779b616242060b30b2a482daf335c9a502cd318296958c696f7080c7a3926c7b62f36a5dbfb87ea0518358155e8e94390b6c0f808b91c166577037d86b5c9a75157e73ccc2e138518ea98a246145dfb6bac9b2ffc333c0ba5806047ca9ba8ab797937000270e773c9863709e59786f8ec948ed27660aa3758e33f59140e527787fa74a2ce22a4a8f3037a26903665cbfe8a0677ec273f590d64c97f69f396db78448535746b43296bfa2bf0a251bf986a524074c1f96077f5219cfa9124d1458520993f627aa8b7b6a0f191683233e0ba6bde24561a666fd10151b0c52c9982c301e0970c3363de27825a5bab078848aa5cb75a90c1cbd24cf67a68f3417780cca947131e4573934f9959787b6320a4b47bb311048289e2c915e35344e3a144e2708893138a15a03fce3816945464c229c587093b5cbbb519767fc65c078d6c684b8b81c1f9cc2b3ba749fb3074623e3c9124a8e1a513510357656b37087bfd02773fb59157eb885e1501740483f3ec070bd492dfc217d7db99cd7c9d57b937297634c3494deb585b8c93cd4eab1865f8a9c8bb15dfe583c7dc0427274f8df3c693fc351289964a89a3c745967231261d949552e0809ba9b7c5d258af579a4515981e991d93154bcaa170491b06752415b1d52bc2a98b7f39c5b91a87eb759a9a4537218156746930a347a5026911adc0412f10a7a7c200a1514d500805c10a276c327e4899aa3f9b95d1ba2347e0140184b1235a719e6c4a3011576235215d77084034771129c33199b70774b2130898a0c69d8f39c3a50b273c665dcd8031b4454d144a4356b9c2b16641311856cb65466991b06d1a8a74a5aad6b5b935b65dba8374ee690cd1c701a5a28b41732b5f88a9ad919a7fa563bafb529885488f544e1240b3cd673f94ebbc91b4757444a302578aa953161993cc918216bc56ba53ea17664bc5b543a38c3516d4063c35695791d8821240bb749caf98896c4718a9db33c1a7e9b91b9b6d06fbaa58e507f8a105e2f71f6095621e354b3dec1f9c979ed7b3aab56b4741110fda601fac78c2edc386669118a425c634157875f61adf10c43d2184d3252edeb11a61eb67a349405ec74b9fd307558a887efbbb46c904f9469db491605a3582be433bed57363426055cc4852acc0317f24d89903a918875c949556a6a458fa3cfb5797d6a3a68ee9991d97a38e16b9a727c5b2e7b5e5a0029c1513d5a1a98eae78713785bd4322261d90109a0806e565ebd9308849cc6708b536c83a2fa35995c819d99b850251c1d50ea902a053c7ca31faac37bcb1b40d6123cc4d52002909d0ac566f7d75dc89998036aabb267c5aa70184ab4cffeab018f195f62879be0a51b42b843caf7c494c181c2f06866cb2287a00349ebb136747da52a3c4a3c581798c413929ce3e698fa594f019579ae329a22d4af66f27b46453f22e61aa6ec5d7d854ff6d3c3d4117be2145b5c2ba7a57ac968a5ca43b461f808167fb5a76a942c95145098b95cd46439669c00366960e2162ab613c5ecb151359b093c27c04ab230fa7c0074684996f44939c81fc31373c8231bd0b6679991a32a031002b257b2f31101317b3e2b6b28b8911e3991479444c6086110b7a70125ca71c6659c970f94d0942124c17ce3ad50d5a7019146bf51b012d1cfa0f59b220a795dc6b3d7896aac680adad383ec46762b669d35909a47c12dc8ee619e1a0c8915822d574a243f67e14104d4f021cf95bf33271c9bc962e0447f7b5ae8a806b741ca5c302230b555c3786c11f3eb43894a8f45e3f7b1a08ccf451b049fd51d7a9ad77ae14a81569df8c9bd3a8f1ebea86fdcfb823082 +ciphertext = e87c238704de82f3b46046f3501bc2f30e57e653fca6d1bf693945caf49a924072cbbb21838970324ef7c44537a67d90dfa64ad9048fdcd9cf15c7cf55af3155afbf69a498a3deef649022a61ab18ab3267c38707d732f479fbc7021038b52e0da50bfbeff9208eb6c09cd5931feed40a8ad8a6fb95fda48a911bcc1dff75e952c1c4f8d66cf7a6c1788de249b7c559c9584781ee0814b9af67205d76fb32df7dd1e6bcb11628aeb198fe307baf9db66158019ae9866263ab0b7bb301fcb36f5f78f7a70b14e8c75dd505bd204ab79519b563572b14f332f7b434733dd3dc06c968540585f07fb2533c6a4599940b92f0afc09afdd0f0e74c13368267ead2ef18b0f4c0799a6abe14c5fe16aa5c81e9189b66c8b2121e4b38422de375272e296bdca2c3632ce6e8558dc8dac44971fc55cbd9eeaa9d91f699ff664b0e8eb096cb007556afd783beb895d382aeefe1a6004f96f48cb0adb49a75612235a2ac318c9ae11e6261f2b90d975d866fcd1d7f330a44325f5ca0f792f3daf1035a5107b90bcf9907f9a3649ffaaf4a31b680184bb3f76899f834958625a91652485d84fe7567d667ba84e7d2c8bd3296a0d1b1f59975f92ed1c16e0e5cb83437a6b9d8c200ccc2e38e53d3ae037869e018958e6bb473d6a009f3c09714760bb2afddafbace214b8e119f0888f2c6b9343b9cc907633583a8495dc4178489e95dd68460b892c27c0897a2e6b2a9499515cc881673577683fbb28c8e7ed4fdaca6a58b8e98b78065c5a4b2b3414d144b17ba898b8c268afd0cd6e1c7543801a13b2218b75cd6ba9eda819bfedd4094c3ca7e439c1e9c4a8df0e6e3518115a3791d8bdc86bc712b613c7708d36f94cd95775334836f39bfe641ed8a4ac9d7e3c9642ba5ba766296154b6af09baff56b7da6c43c848b7518f445f87a31554c90054dbaf3a2fd1b1ffd91306a5888620b90838b7be589c9fa15055aba13b29e57f8b5dcd2dc7dee25d31bc977c05eb0012c261a5916cdd6b91ce7c7f3bc4662bf500d06374d59f0ee21f35cc04ca90ee4951350f2fad026ebaeae4ac28d36882b824e9341dbbbbf2b5406451c8b4eeb4defa8c572e9c83c6d60b98318369b5a2bc88af89dcc6120140f4c5caf432c67a6c51b2c47a3893f80776a6ee726300e5587bf3743d4372bc9e1e3a53bb583412297866c0174e4b81cb4d2363bd5a08355e3573118066eb549d9969205a61e8bd916be103481d0a8fbad57d13cfa057305b469b9ebaf78fcf2a333783956e2cb0e865fe4e9287eb5a608403b1353d389391b3ab57010bdb0838c2b21f8d7c1c063de9a27f4d600aa82737c805b0f0264cda08a3d315613f8741519e9dc16d7cdfab9816e2a639b5ec31cc7f66782f0e382dd1710be19610094c61230ab72f859ca4ace9a63e3dc1e101a95e206d832efbee6c3c1819da9d3a03c42100e309dee54b2d8817bcec51944a39aceb7ae0423f7f8fc7a55970defac02838dfbbc72f0a84869f3f177bde1e403784032e71dda78b484ec1eab5 +expected_result = pass +expected_shared_secret = 722fccef7142c46f74eb57a10b13e420d6554e9d18507f660bd1be96d3cebbcc + +comment = Official test vector 6, seed: "2e014dc7c2696b9f6d4af555cba4b931b34863ff60e2341d4fdfe472fef2fe2c33e0813fc5cafde4e30277fe522a9049" +private_key = 67a93bb27acd00c9b95aa03552809c38a08480dbaa67a9584a460345e20e5f381c9a82710ef1709ca51393f916345719bd3144b3121a8608c0a48017963387f7a31c5febc6b6749e6bd9be3c58a9a77b53d7762f5854a3467a85941ca2c03873c0458b940275e5ab85b83a5c2027894b92246dd8632d68a310fbc6d214381128528b375fbb8c3c7923ac6a8c7f9e37c2ea4c6b72e3451922761ac274b5cc8569ccb93917a748e93c190320e3f1381e08cccca70903975ae25689c12709c8e9096b16a26e4439c2552a088194368b36efe3871a6a1cd54ca0c70974ac936e45dca01de296a14c7d20652999e61841dcba6c0171fcb406e14a95b0c02517447bb9370996176bfdc5beb4316c0ed34a13431e34ab27d9dccd3ddaa49d314659bb8d89325099d0b06931796ce65c0628c817393bb1870f19a10cfe3546d8bbc2509058327626f490a1bbca6fbb653ee1c3555203353509ab14b64cf8a29c32b17096805b8d751848dc4494279266f2cc474228b2b703cff81f0f29152f4570151517995262d705afffc08dd413c12f37b605bc32ecc1292b9ac99e4a34f911c8db990ecc9a3dfb37517446908b91b1172a3d4f547b3aa642709ba40c3939734545ddb6b45c66a1a3e58c6d1929e5721bfc6a6021a635d86c8378d4a0ba68ce385b6b7fb983ec4a95c8b20b3ec750b082bf2cec89a6f8c2881650e5b71a0135c865bb3fb12a4c2c3c917d655a2997984c8557ecf1943436a9fecc5c84808e38701cc26a251f458334f59bd40bb0d8f82e74071a5ae3c9439541aee59c6e46a5852834ce5712b3665018154c5339467d606af189ccf20c68c583c96d969815109cd3ecad4f5ab0a8bb8a7b68359b0319078a7405821c2709a615864422ba0a3970c8ea138ffc1522b1a53ed1c71d396a0ed6b782c6552c70216679bb4761a600634276d553cd703897c6943a859112caf9a7ac99517c23ce6457aa069b6fd2775efb262dbc27b02fe6923d14b047a25cdc6b86d20a55d85108ff276f121a352e098e5d4cc3ef92b3a1c4a38244621b055d5f812189f6941b492330fb1ab0a442a656655455b38b522ded5640cc4136df6cbf4c4b0651531cd8c95280e2af13fc57c977bbd1a8bdd253096ea98c3ab33a516448a8301a4b141ae213bad2f640b2d5846c99a25884360f604333197816ba9dd1d0c427c5b8d3a6b434207b8539ce5092ccda67a755d6a6d7e8bb6bb02af1ca7283e797f24a1042d29b64262f29b0482b840bd70a3d6d54205df412dd6490e3dc38c1236758f65e461b11ca480b476875c692508e7bb90c430797e1917041642d88506c07255aa92ea32508462c2f4a1661c05114c9361f651b7c5ff70b42659ffee71f58cb79e445536b8948142cb4ec16cfe5b21da659c2dce452346323f1632c37f128a6525f40e03d6c073e05476252b2b0483c4b87c1c1fd8c972cf651eb9684fafba3f862c8619c089f01277c14be7cf7790712ca1e8877a48909efa31d814c1c21f4a151b886076840546419a1c8b6ca4466389a3f6dbb69e8494d7b25a4e9b234a8d928a26b946ff305b8a33b0bf8b3eb992d68c312b4074788e69d1a5a211c3b55f8c654ae778fbada1d75fb2305eb362461c4a2e81885084505c3862c3b647d181805205ef3e4ca5c30c46a0c21eb97700b70c2bee78d862b3e19dc1e0cec0ae6998a7b3c4fdac39a950027fb2a3bee027a8e54b4a5b981bba01badc0b5ba6a36a2913f1c1a046036960790ce2cf2583e6c62a778290f242b49606ecf24b3a0dc023b22ad8945a0b8dbccc9356475b36b2a990d7435b12e1536a21079fb7802b998488e690f763646c3b66adfbc8161855b20ea18afd87229d05e60372694e4c4c6215344da04173559d7954b029555e6ca4356f6cbe325a39431a64df06e75c63ed0e40bb0cba6ed68bc7211b02f1165c370ada1e0acf4ab61c87cc32f7017b4a26ff8cc0784f76047316af6398ddecc0c62e9a37fc4ca685017b33aacf597767312192cd330b2f3a84e0bb858480a63a607295a39f61510dc2c6998614013f45d319858da8228fe5bb6eaf3b03aa60f4b721a3f046d3088671930672c61c92d6005254372d8081be322ccead06cdd472cc5a481ee385096a5b8ce64b57781cbfc4457e917162da007bd7bad8e3803e05b08876842d9e6a0a545407a5067ede3510ccc4478c040310aaf46051454d855d1a5521e2514af676846650e0043bebf453e7488b6db8aaefcc16e26a75c52bc0ef3c80da3bb39f73b9852b54d9c606363438c45dac4ff1a1913d81b9a80544177ba7db6503a04a5405299f80a83fb7135fde04f8cecc0962461c0e80298d219531c9cbf00a3bb5b84908b5a807739a63485128512c0478084c8964f9064cd4514ce92c30454ac25b48919b719c5a853010a2eb712b80975660456562c4c448c39162ca63aed14af7f28875149857f9b8965bc1d04cb8ee2e67c14a493a3822fcd0a2dba2677e719b8f2c8bd09431b82ba56007584beeacaa1f081d244b0d771bdb0c8033b18ca9597443ff8cdf754569dcc2dc4d4c212e2bbee88925ce73034e19167cc7ac46059cd3b9ebbf6bc3a476f08438c61971af139a248821002480f42c2b9c0979ad3bc6868565ca3fcbc124a7548d53f56b51c9f8aa387b59b07638c7aa45704420b3c24642035a7884cb42f877260c29697809aa7482e3fc356d8ca061c1c443cf24c4535bdeccb02c3e3b8b1d90e5b47bd11615caf849da5811aa743b9bd7810c470187e81af9bdb4d1307303f615ace2a58e7ecb3be260e9f7c1e10eb3a84f207d2e75a30c7c741ea45fb04a9473c1425f80a9186a7f2625ea6abb4aaea3bb50602df23acf8e452cc01a909ec9034acb47b969d904213f0a79edb7766d0290005c954a1da0155f7318be854fdb038d019c1904b714f0514ac331c3813bd703b45076365be4b47ec510a9f585907bc0f461a6befe13a2667593e12134a86ac139777a50ccdad16b6891a0871621b387684b5226368400164b29109328f672cadadf7648377cd11c9232094165bb1cf12f694f940c3cd784c84925ba74c8a49dc27cda4c553c85334a860a8a55d8a75969977ad1f505b9b20ceeceb24a262c707843310f39434390ea5315a67491f0592bf722a1c2658c8a720991b26561e14b178c3a1028003cab8b69f60828f47b876d43d3f193c3820804068a5cae76dc3f27f5f1323e6a2797b9a13c86713a83ba9c161899cf295cfb4a4aa443f32d16b72616a0db4d3849fc41a7a6ba87f4af757a0ab1956518f0c1d832af7b7282d8bd81a2237107ee60d81e28eb64d6a153ae0eaa1a25797c284ef52db5eaa6df8ec3a0bc5ffa730db0dde8c5f38f266d5c680a78d264a7b96 +ciphertext = f030991858a580b285c29e337892c953d068fedfdc83b1997d21c7cde737d0215a3629565b8b060f17033dd24a7c957bf76f490c814636e745689ec0582d17bae213f6986f88f9cff9fd86771b36320483b6dbb019ebbe8ca5642a4613d9fd3ebf436beea3590b08f411287b8a0a50a290621f0430364129c3ef1a5730cbb1ec741277965299bcb0b1097a9f9aeab4b4f1f392141897963f1f0f6768a763af9033c2d52988fdf794bafbd357cb19a101a11d0d35eff4039cc8142b834dc8e60c6d87304f5e1065cb982c5d1e5524d3f32b72fe65c42f8ba83be04f54a0d336fbb88a75e121a7a5a895e7a3c1ca80d70b2463b3b589fc35781cf2b8e917139a160522f88188bf92188eadd1c964cb5f2d3b14d0e1a1ad5bff6a0a5048d2b621458b1c088252b5410fa7bb8ba1d9187b90fdf216871382560943d7ffefb0274662982f83445c112a0015444415beb57bd1a6d282e097f0cd3cea94f92c761c54e7f4d3d27482cf2026d5e5bdee65ab969f8ed3d7861947bdd20a7b86b2116772168e5dee105c59cca176527e8762ceae54fc71bb2eb1301b0a3b5d77d26c4dd3326f5cd7dc535bd4e3846f3c4ca211c4e3e61dc276a0e6e1a5b278ad02762a2a6d48a6d06f73334ea229120a9a8ad71c6bef1beddb53478d1e2af606a955ad8d055f12e79b1733db11b67ee5599340e36cddd89d3cb6ec842dd39da1ae7b9b6943974dc24c497cde4263f56e6bc1dd309fe7c6a7905a6080a2dacf1c71d703c6e277c7661c7ee1f0e434a1241ae089444c31a971b141bc717bb10163af514547d7475191aae32d3adb8bcf0bc49f08b40b3860f2ba046ceef3e381675f803cdc9c4f1a0a4f8c1b5c06cad2465f6608ddc6f104494906e79faf03c3c48b89c613b016e7529e5e6494668cbc4092488c1238fba0993a81df3a3b46896a58a44848486429342f4c823c96de88c203c502df63fd6a58765a2ccf89dcdfc2b8e11cd8521c270ab50d3dc97e66a01aba506c713ac7550ca174b51efbe5c90fad46db5375f09ce999ee3ec2f30dbc5f5dcd04224827bee9fd94b56d4d5f0805300a3775c142e7a1e81905ba012c2e62000c9e2a6c2436cc919f46361c0287c56981d40c4d2c571dc7b566d189aabfb904c8177b52f525cfabcd37e22801e9025657245ee339a8f780d6103f2ebd613b7276308fb3eeb7869fe5a7038a0dca12abc39d0e6802317789514a610b265500855376207ebdf94423005af9724744fb94ce218c2c87e15107d71284157ccf6b6ed55d772b4efaaa4687f1c5a0da143ae00687c749a1e9a869cd356c04460868f581771a7e7da3674d221d074fc2d44edff15932008efbdf1ea5f6a023d1e7c67617701b6685f624448e4d2677638558997f0edd44c4ab4cb9a895044f00056c946e07936ed11aee915fe25038007ce395ed773bb281665b87920a7d9ecb49ed8e4a0d9aa277f7e19b5bcfaa45416a7437699ecad80b43e16948c2be55f69f99e7e849f84b92f45f556389008c1a3b89588ada52c7 +expected_result = pass +expected_shared_secret = ee7c5fb6a63ace944e1eae1bd4b182263d918754c33753b904853551b2b46cb8 + +comment = Official test vector 7, seed: "aefb28fdd34e0ab403a703b535296e3a545ca479c1d8148e2d501b3c8dd8b1034bd986f13f1a7b4671be769359fd2aab" +private_key = 0fcbac2fd83a9eeace0215c784e20260f0991b225897e94ecf93368b79565b478731537eac74550cd599d5268e03a25cf327606686ab8864677907a3c3555018b478fbe125498652d5259a31c2b4649c14c89bbc5758a9b53c64e95bc9ce30c306372d431cbc642c0d60e25136c3919f3bb48b280b9d5ca0b21bb4e1510ac49aabdf02c9fd66420b475d0731918a4a5d3c7a963a468fb7a86c128988ec36c34f475f2b87791f5604863ba6dca297ee29238ba79eeec5096e9b336cf0b24dbcc9feb8bfd77ac888554472d7732e7492c231302a073680c684870b86a05592355baf2620b51ddc7b17c9328d7a74da6367d9ec2b87e9221c297b5398cfb55c10e8a68323aabbed806c2272c192fb180e7a5b958a02dca5c55654a43c74216b192522bc2a2dc05bf865062cf56839831ebb837a3ed8c7368c15933730667b7463ab7026848bc9ba14616b2e88e17aca4109b5db56510b408465523307619fca752919b947eb40e5e8c19a7b4a9099734d648daac8c81c1c628c895400e245df8a324899273efb441b564305ec48ab305c69d37e846ac9b77a2917915e82286ddb397936769be7e37fa7f27a003090c7f2b9b395a41370b5a38c07c2d8314627267fa06bfc416d8ac1155df645c6150bee70c4cad8c6a5c564ba2571c9bc9bfaf0c2d12578c8198d49e1414cba5749d712556a537a4131f3f085f9047735482e23342b218101ad30122113060cca4196f778c77cad2ee58b6f23071a85b79c1215f0a7c8745abcdb768c3c26042d09a9a0355a5c45745d1acf52c205b949acf581ab75cac74f2364406a43a74269645166fe167642900d169a1e84929da4cb361e80c42dc702a79364f1d664528b6cec667bf230078af06a0b48466dc90b34ea7101512e37d8ba3a351d7023aee652351ae514b8d217faf09a07654b0cba1850041d7206cecb05c8f6703f762c97dbf82255daafcc3608e8891e3ad8b3d4e18dbcf6a1c2e74cdeb87d15236d70943daa722481692890a548d7c69a14fcc1155202ca4941c3900b57a452f281091a94781c64a9583c8d302c21484cc6159b88a931aedc4291e097982eeb0528c152a43b97dea2a0b36922fc60c226b61068c792f377b9f655940d73702d41bc515086e8f9266c53a4c15a35907cb2fc2a2f19bc5f974034677a33b648322cc9bfcc6b947b5346df2044249623e53430895295327c9b35f59ecd4a9521f4b93a4c031a624c12f40ba17b9f36908e462b928ad452ec74b84f9b5c1c69660038c85d6743f8a5a65b3787b5640d683b7a45009a1efcb5e50a35244c9431f21f1b6826311673832ccbc1794fea917268f5323726698f67bdb41bcc012218929649c972149393845dcbac7fb58582964405d4adeb814037a39e512c3fcf72a22ab70e21fba3822b493df9983866412f0439e1a613914042c982739031949b2780d8133e13e632fc4281de567a333c5d8ad458b848ccd65bc87a8b6b29134556a6780eb7b02e4437ae69c09e304210d5cce3ca3dfef261a809bc5dc44787a20afff49f3e0156e7b428ae1cbd3292c9d818844d4767342708e4016eb9bb0f7099876c26729f443e7cb3b9666441dba01c8397953f586e3da45789c28969078e11664ca1554eca81b9542bae2ea8cc12b44e81b3354818141af0b494543d4674160a086f7e8755a87258e7e6a6aeb96955286924b42636e04583f74184133d8acb9067925f4969642f274085f70fc12361ff96c3130b143e23797f2a3a6cc757c97454cc8aa5d9c062f9254f4cc7335b44cb66dc712b4677c290ccbba08cfc3948c535be29f44736a23b4c8ccb3978404e419a08a67aa555becb48bcc161cbc5492b55e3498e74bb515c28a7a44a3afa0148ec3411d82a1ae103513074a13938a5fc17dfabad006d90455b4b5e45079d7bbe956c7a18a8bec9a64c1db72544cb00c6997d545ac7e3bc5c6565885536af486417e728cc99c78cfa12a1f7697f1ad26efeb7262800ac4e0121e766aa9bf0a74ae635074c62fb6ca79975761419b12a985ed7a2c8788c9020462fb5764c087681be1595a5ea4ee7234aa2d22f4119b559a536e0da0e8d0b2e493c2b5bd576459994acd684a81a0955684818e1b88e348446a22c9143a4eefc7d8ec678624763d4548fe2451f078582c93c986b0417e1aababdd76dc0532e252b59e47370e81951ef75ad48c223316a40237152e3508ec164c7375594f73b5f0483c560f52f250aaef28431e9d1b2b9dc650d2371bbb7c8360c72369755bd8696fc5c83fca76a7fc02eff54ca60579caef6341385aeee34c7182445bfdb549bc59f70b76368da88d47386f75968aba093e8f42dd3c7cd68c8028a90cb0c93cb44d42ef9d15e6ca978ed5b88914c4e20768028f2c927a33433d33c5e6a45a6c5ae8c252a83e68ec121347b025865f26912b89a9da7472b75b9aba75581852b97d27ea7c9c5c7e8bebc0094c01947f43a2c6501c97e43231310167eccbc4c3a2022839584a12ad5b51b4cd308c94302e58c70eff7b24faa051cf548b5a73ab4254179eaa038ec95d4d4182d2971084cb33a6ca1106076dfa76ec0c4b3bb5c7266a481001cad07d12051a77e31603bf47c62dbf959c89774587111db1b038ae834e0a08c27f2b772a967179a9bada1ac12bcb8fd3b06ca44b3f11a6762ab51a9a0b67fb83def8c9a712a1469b719f2557e5a03c6bac808d0e0aa304955a3e961618920d0bc2347c74ad6725a9a855d1d8456d2c26addd849e59b7ce7c85765064ed6d63039e368e9f18d4fa11e16f8cc88bb3ffb40b4c6269996da8a6b5586365292b5b1c78bf4161c171e2fc7a6a8293a96d61d683275eafcadfed74473e30a1026809076a1025398b745be723a78e008c85b558d2b76392f5015d1024c171c0fc6c7c0c0e631bef57166e660269231c3216fb08b6cff0a420aa413ec1285b7b5ae9fbb15f9fa6b8af29ec061996a7612de524c7e0724766bb51e1264ab50c3a095815645b1d1021060b90c96555e8a001044d16cffd7719858065efca6c2654ea25506f0541fae242dbb154e420c0dd4e13a79053b431b7c00768bf0f781810a0832a2b814c5517aa1a0949523e12aa35893912256a7370bcd9faa30788b631b87731cc5c831a26e8f48ad7cf9c935301aa8cb006ac59fd2ea5bdc1736b2a5523ff3c4d8f429dc037292e863a087bb29cc2732ba30bf11490dbb1f3adb3448d6110a774b25d242602c250999ce69d1b32ad3702602e6d28fdacdbd2a03546764c4fc1c62c0efb3462c7c88ab8d94e20b2b757ac0425152bef72ed852ab1eb44f4359499407bb6a020ff843a31657c5fe99daf37400cfe59841afc412ec97f2929dc84a6f3c36f378ee84ce3e46cd1209 +ciphertext = b053db98bcf8daca0c50a98c575bf2272f8f0c70343d5f78e97744c670f9d436142850638fe135a85d212ef2b4d2e23e8ba9a5d1327ac7a55454f9e1370861409b296ee2dfc6e7a4f1e5cef633489948173be158aa5192c6a9ff129e0b63b311f7595425aa29dfc758de1629be6d167fc58a65a4252863c5016042409da5227fc1c5334fa809235721f6f608a5443a67dbb33a1e5fa690cd34e9accadc99072a1db81386fd42257e1035b6fffe1a559b97fb71cab8e8e922aef2141733d39935d754e487656cb3b9b2bbb0a5a7c6bebaf62f86a407fdaf776e3a973074cdd2cebd67bb2305d67db831fee54826cfd8514be7117ac424548de1ec0628594062c97b570058bff7f0b38b25d57e953cb4a6d748828d56d643b1fd2068983d138e0f0bf67cbccf7a5ce79068eba43bc77d3abd7222ec5a22568874281ed644d5f3627156d35bd56da1e59fef74ce30a2185834df0f74d776f4c1661f6ca1343cd1149624b9bfeafc0e0084a3b68887cb44d51b7abc7f79886fe6966ee47144a78d12f99333a8a56e2a40110b7c505b6164b0a812590b4dd89d66583aed83348f27d88674a26440d423d1ead252edde582049f0f332afbcc54b4ec1ee81554dabcc8422dbedbe38f9c503722f3ca042ea0b51300d078ebb9663016bf61344f26d6bda836cfda3d06c3c1a2e8ec11ba197105b75942938117811cfb78afb5264f02d1c3a7b8cd72406ae08fad11966140a1ebf31cd5df8bd203453db15ace5e8f0a6ed9d36e1f98d55610e5c048c93c173f0bb47299e8c55bf2b2e1276ea90b22473e8f97a7bab2758087067da3dcec80749b66443e819964882f886bb9c232ef91ee1f57879eaff19f8c7472a8a709b3466801ccf756fb2ba6142ebdbf39643530879284ebfba338053479d78eaf70edbf439ec03f92c440aa15bd765d49ec0c580abf7690efd67068f20b5aa5537fd6a44dddebfa0f91bb6124c2bfdc3c6bb0eb6ea3015e202c6a5644c627963d172168c1b522bec3d6f7c83c02936fce8f3e774d91468c652e40c30ce4628927c44790f98c024860b07f758f1e09df4d6e3394d4dd1c0c5403c2c3a208ee3a2948985354929a90163a00e86b481bea2b4f14de01a0592a80695b5ae23996b1ddf4a712931612af6a6fc529f819b8361b3a8e98cd82fe92005b9c147f3bb4dc9d3155656575de568bc2199ba234bdff2ab277207d8615902229c48db3dcc589148d1b33b1d0594da5b27612a996d33b40ba2da0631471afabb3d155b2645958eac3bd6841dae38dc0adfa59b5e1aa809f888504448a56a3c822a613c998535c3aad312a41385a42dd691f7e9bea9dbe2cf0df32a86199a3fbd537aeea46e7c2768958912879115e2dcf76ab592cd3992036c83e2b2c562ad99cf42c9bba8b96aa54f01a4ced5769d22f51826b4217b2b47f721fc58d5ad5016ee4606b78e93194706332569a673425fe02bef35f942b9637c0f428a54f0bc190b6116aef98a2965181faf2f1d31a436e002ae9ef0f2a6bb912046ce +expected_result = pass +expected_shared_secret = 77cfbdae47854e9e10765cf397eca9ab2bf2b7522817152b22e18b6e09795016 + +comment = Official test vector 8, seed: "cbe5161e8de02dda7de204aeb0fbb4ca81344ba8c30fe357a4664e5d2988a03b64184d7dc69f8d367550e5fea0876d41" +private_key = a5c7981510819ea27d27a945a0f6619d730dd196b6f3a158a4c48acfb82d1c348540160b0cc665c43c4c0e4567b46867ced06d2cf228d0b64706227593db7392395b7ea95360105c1bb05472787430654aa03b6e894c2add2a0467ea51b9486f3df18274c0a2079459df3b9aeab15d203b466ea426911572251b0c8fb51a31aa142bdc4142e393d3c527c841a03f796e0cf7cc71dacb47456fdd386527bccf6e43013eeb755924a22e3a55f74a8974b38e06908349fb3da5887d1a041c8acc6f07a75198462353942267d7600d5243095bb012d2a70be0a3fb2bb599832f8aa68652846ba501bab3aa574ad08bc991c8b86717b87a45041657d0264f35f0c2b70324eac43d591202cfdb9a7d357489f70f86d6308d3382cf9139106cb28d947ae3bc389ef18b728c1568436b3ef80644009a80f01ef550c794011e44f2812ef507bd55820a872b90e797626b8ef2d94012b4cf639bc5c8a7b87306753f93cb12e46a66c4b2053c037b87c51436cc83b884f7634a6950c419684af3b78d41006467105f753194144539df45ac7fa46e71815f53d2304b474a434b02517b083b058aed078dcf86746313bd8108148ea34658613560ca722a126dda147af8c5733705bc8343331bacc5b5b80e424ccf6114955056329a68a2a6403d65197c21da02a390c41ef713a814a798a434145b9e3a5c31a9614cdac8a8bcab6b5274490f5c45b2a307f492c28ff40ee39c2068a5826e8466542559e9409ff11b463e9a4eba0a2172ec8ea6332d3a5bb66531b670c52cc2f8b651b513e60a9e64795369e0c2cf56a9921669299b6b5399537e112ac358112810abc6945bde69aada92552a10219a630e26e4ac7d9b5c7469a960ac64a6d127971296c53a15df4c847d061e69cc030b9cabc6e58903c5adc88882cac147f2888263ecb6ae97a9b2aa245f131e2e2939f5c8bb8ffc012cb578b9babf90db062502b1923ca88b35c424fc6524128fd1d7b5ca719f5a9a538a51a97ababce07b006eb701ad8490b74462f93648fc39a2004db6e951b4c8219ce49395891594353b92b6b496d09376fb28711d87221851a5fdab80cc52a6352c062f06c80f891da2a07573b42bf0f6cd5d6b63fd4b1c5bf2572fc8460385a642e6290fb79a9b1cb18cbcb34bd87f7eb595f0598c67709d72011fbdd07a0eb6616a88b8e33571bfa7597be4cbd6976b93e32c2c088de3ab59dcf2234e553a5b2ab143c46df13211e816aed6d02bf6c13fa7f8b282237f249aaedbd3a6fe8771014c1b811c05fe86102c0b0e7e9b961c1000c82408d8a8aa381552920803418c49e1662c7ed8c3d35763c510585a78664ea0012a8a02f34b2bd7e96ee5c298dc296537c985577cac3e310568353ec2ca8eeab4bb1ee2393d5b3cdd25305b148fd8ab11f60b5871e9c9359a46a5da003e98b61d82c51cd9262764301c86268db87fa6273f9fa3c35b1c1fd822aaf2f74edf73ab5af9175070bdd7d5cc7600a516726c3e49348d138d19836391a54954ac4a0c029b1441c37965422019c2ca49cfca81317a211e22ea2297b865da163a0ae2a9dc25701e71847a05754cb733620a824f090d591c51c345420e226b8f3b846fd356e78b87764b51d1dabf923518de898c5e7cb5e0066fd69522f5889dc05c41a472c983583333132052a1c93a464120b325764b8665ca42555b98d8d6a93c88a0a383ab51280f52873f2be26e12c131677027c616711d478342cb424b0463c88161ed84bf6e869abe9cb915d13534d2756dd72343359e9911624dc7c6e828b19d6cb178c43a5ceb9360d2939df2744accb4dfe8aa5eca35bf87c6ba265fb4ab7c4888516ec91e52c4030f5453e6bc9103b9c19cd83e69048272855b11b8af3edc09b04ab31179bee59abc76726fbe9612d271b7010844f62535f2f30d8417c35f17c1619b055fab6a0f5458568c753310299fcb335a7697e7cbc9b9eb1b14ac2d0ddb765b266b6d68bdb5b0236895328540b20f91bbd2910625e674b33a4f8b6c1b4f66c4130c2e973ab72d809282ca63edab71268c02a9d020bfc805410aae2dd4b699448a56049d1e9a58c5fc2abe159dec69c5027099a3b57d3a2560ce24a6f5017d32e00f3078b792309384421878cca555b7065d57537c804e10bac052788769b7c1121a78911a153fb56a365a2f97b070d7b61724d0c4d14c295d78be57a8aadb873d3af6b74d020b8654cf48543de8ca22371a48ded585b7073ecee0c44eec27c85b5a68f6b454b0cb10692039cc68ec2c2bf892804520c71be5b7badb807b4059a3d87d32548ba3e4b698ca150d784a8c2c35a67a8c92c68ac0037888b65a4c9800ba7a1ec050627af648fb61c87cc55b8243545aa514cbc550a8804c8598cd35786eb8c6b06077a1e2d4344e4a6baa789c305b6326e0bbd4402dbe26cec08a7c1a19457bc2677f15b984a74fbc52cdce48618d50c47400011b392908ac2cf08a579783a80fb2990cea90eee90b7dd81e6cc9c961372d8c720d7eb223d5a6a16d4571c1a93213b32289934f7b30a63527c6399920086940b7696503e623e63a050f4b69810b6e6f6729e5782b572221f596a09a1879bbb46a62a955043a30a2aa3e62e02ce1ab6f3d03693a8cb653e361d8783ffa37274ae06a3f2292f1a6557182006e493ff2653437a64dbea950bf6a8ca8836407fb489d42a6f6257770310f28715bc6411c81486cef3cb9ab500558f070f4a15817f8c177d63cafb176caf3b2b1cb7b7254c18fe15111fcab9e9a9682f41c9fd247ec532ccef514860a3fed330255323dafe46eed198041d732538c9424d43fe2f5481650470f08906791b2bfe65a445bb26ac87d9bd04aa648a54dc13a137b60e5c2779fe4b5a866620dc2829d42384aea9ab1552fca920f8929b7baa059dea53e6a5b3e492a6e45b5ae11f6ad24d035d4246a0cd53436687a0204a1de29aad2c8b53ad4b938a57c2e29555219544ff64115cba2668b54c6ea8779146980b58a2e669124a81ed4420c87b0601de23e3ccba915faad0c2b47ef6238dba9449274c64ccccd85e91712470e8f9a2866720059a8501c7762c0883cf9827bfd62bdc0882ee03b457be2b2794b8becf74ec0da4684282200a294c13c8a9ff376c1187911121bdd886f27514846f740b72aad5544cbd97a7e208635480acddf404fc067c82a45b5c97829f06abca5201429e9a516f66e65d07075cbc0c60c2a9734baadd68f421617fbf9515b569fd08bf3aef948095de1afe74bbc3bdbb45fd8f92eddbf0c682c81a98f930f616553b9d62e64f9069d9fb94ea2c0806459b201531f4fddd708d162981cc1fb3757da1804ddb5aa9b1c6a47a98f8505a49bae2affde5fe75e69e828e546a6771004 +ciphertext = 4d372cbcf55aeaab39558fa7f1b3936da31e6679efee4b0af81d6b6e94e485e0f79a1a54dc8358ba0377a92eb5270b7b0cd814e464e2ee1ebba10ebdfaf6b53b5875a89fa0b0edadb5a60d815bea517523636fa18fe1780d152bb90d47d593409a2fdfa6b39c42214f709a86ddfa81bebd97ad6d18719d107dbc838111987d4f721746d75ceca8fd414f4055d206fec568c13d1ffc34ba1c243899bb5c16cfb6489c4cc018d39eb93873f520333d8cdef4fe3b9fcc117f291c2a2c1bb9febba997341404360213d9f5d7d80314fb059f57e12c884a4c42f6977b5bf3ebd6e0136da4065a91d9665cc141670e492beb0bf2d1fad2d536f2c0659a8d367c282fa5f117e0d4e0ac05610031e5624c61529b144995c155430063ca9a5e654bc84b1ecf790a635c3e5c3dbb1f980ae8b80c1b2ae9a48eee5a0f5e2aa0175eb19531a7ad6995a2d5a62dc236b596e9edc0c2da79aec60e5254c748ca80b90623f2309201ba88731d63794bb1865912866102fc732c88fc9c511d3a86648e8a5c59189941e694908ed80b513684b0cbba9ea16dee6cebf857b8d791175d623b3eece53235086b45b78fff9fe4b742803ceb85518009f5d94cae007e7cfe5cdfa2aa07d397aa97ac75b53b722c4d488ca391ec0c9f3ed196fc4326eb50b3efd27d0b34d9c9f200d7c74d0e30fc04022c331b55b0d7adfa777b0cce009786cfe71a020e33835012da068158102768cf441a078e5b9ffd6a6b1281f2c6159f114599d1096cc74a1980aa6ac45c8c4025067cd6e947c62a908be3a033367f1828e846fbc78bcf0be2d63a24ddf18336b8524c927a03ba76ce527b84a1358e3831a76e955a1b937e0ee2f006ab0d2dc886115c4fa6c9a7c831ebcde5b1aacbe33a82495349bfca371db6beb88e8ccbd8bee3585bae39a435c491292147e4e4833aa80ede11d1b98651e6d0525944106a454d76c3db9d74ecca42f52805037575420fda0ac6e6be3d798531ec283916e76159c79bb054ea23c24a41f124e1dc887e6b45babb35248f5c2ff7096a458acd6430f22eab1e5a6849fe783e612bbe435aaab7bf6efdb27220279e7021c75ceabc76422056a322afea422b17a8abfa6c3160ba885b3e54e70f3be0e304724cbe24d7b95359fc04642d3063d5191173a84f44f1e930c6c2346ab973ea722dee19f8d36065596e83d7e532505add1ad3ebbee0315d07a10c44f288a7c97ffcb03b829db5a01bca183ecd2dadd64bd2dd67aceeb0d34d039c3c4a2ab7a65c2d7479c2350663b754fd9e063bdf4ea73a04cf1cd0fa6782d46a9a834936f25baf39f0367a3e53298259a48cfc6d0c9ef767c30cd175dcbf92a559cae64cc9fd71eb630dbf78d9225e5cb216beea284440ac4497db0b095c094daed5d39695ae2360859bab3cb62673ef2ae5a1d03c4582764f2270644326a0c4143126de4d4600baf1ca099db5b562f33e9e35504496be65ba3e80f62ea820b8f11c91b64a53e6bd53ca5d62be0070762111804109bb8e1a594e5f536ecd8c +expected_result = pass +expected_shared_secret = 8be7a417efbdd3587c6f82ddd1d29956789d28c2413b8383590c5b80cc53e04a + +comment = Official test vector 9, seed: "b4663a7a9883386a2ae4cbd93787e247bf26087e3826d1b8dbeb679e49c0bb286e114f0e9f42f61f63dec42b4f974846" +private_key = b04c33b257b199352a85b55624f1a1a42b2ab72c4810b839b2bb2f51a502cd498aa258373eb3bd43e03973d129e4fcb61df58986809ec4ea4333659f03dc0fab236cd4e815d3f9524e90a28a3a0af869735b362fed9837855429700cb815c43a6e650e54d6267a832dc0385696274e1e73a12b5960a8409a4b4564de909b797771b4839782526fd69abf516a73f9eb8130f41cd6103a6e67c6724186d1c709d3d90141b1bc1c028e28324de4846bcc6837fc243c54dba144c40fcc6223fd19b8f54c11bc0982ffd366530abad387946e1495a3c05d9cfbb62b28778905ab7d576610a74b3daac9767a051b153af7c6bf0177a4074397be410411cb33ddcb895091990dfb85aee15e9f288d01ec5628034a4adb01da09283493baffd36d224b1efe096289a2afd427b82f8b04ea44319f4a16bb07bd21026f2ef550b919ad01cb3744b37103eb54e62400e03367001510776698e28b4fc367a77f1b4690cc2916e8ccf1fa55aa3495014724f1e66ef7ca8283d917b501c931274d9808a8103004176bb69783c094bbbbecd5b90ea14e7cdb9768498b22332283f6a079991988ac6a85bb591ef299bc57027b0ca9932a41c14c193467374f133bb8539c2d5164ef11b70b4a2cfcdacdf6841cd835c4f4e174be3c26b55770acf4137666a431d669fd5775a71749922c0b223abe36284fc880c3aa2a41f45a4a299c647d6738585287f7a47b88ea1c6c088c6207646d99cef5f56a2e02cd3ea85202c7725dfc99d04b2d52600f0f89366a3a83f8dc74e4a27fc58a622061a6332403ae8cbd0179149b841f5e0ba193ec237ac57a4cd5528c10545cb75e35a20c3ce63950c09a7b0810b84124f3a00c9ebb67bda9b2ab42113e631123b4a85897160637a32eb856d55c2905f7c655d40c84e92e773056d2392d43e33c4f9256dbfc7aa0683802d04d218139f829ae362c1f48096fe47b09756c36873cadc5300cea8094e6f8925c1b81ade69fee5420b7e94555286cdb596e08caa81f758022b3a949059ae91aa9b78a825703cd53d1235800681dbc7657a777bc267637ca2954c09344110a05e2bb90a83f95990986fb559bb1282778933631701393b705a5c122ec3645c1b364367c83444d30fa438eb3a478a0bae14270cd49556399085c566d9e6c467dca66a3f36370693ad5f86a9932773ae5064e9bc73ff7979a5510c88198beea7ee2aa494eb046e4d70a3f9ca0f88b234f6918f7eb41db97a327654836510276e0154e7a4dfa088b8acc5f02f598d1494bfbd07c3132c5ef6c3b466606b3d93da2e69c96744095435fcacc2d24c3016002b5c4b988877ccdb9233c490a8b121ba7821b529de85e638168b0565d50f735d1cb54cba91cfc1b9eff882a643121e877c43b6147a2a8266196346859ce53340208253ca419276b884dbb3b7a30ac3de983c75ad73995a0b62de7563ec9a4a715bcdf376dfb6433de691c54e660f4aaa4b184015026b6189415e66c90dd32c0b015aee63b5d8b3cb9ea206e45ab4938bc86fc54c7598c6553c29ac34b2213b90afd144c8b4629a560382778b28d666667caaad49633a8f985730318eb033374b5cbebacc7f453ccd8e77c5a9abc12da1bc1733e5a1278bf11b37fbab1db212359473012f3b545301ddc833c69a75afe16744557b5e28bc0ee895da16c2c5dd34fe6783949d555e580c1be7994bb008daf27a47f554932b87222e82ec670490ca5139ff49d5ed896218825056a8639b31d3ac8550356a408a01404c6aa9c2b7284e7c7c27036256b7902445dde00630d81930f4ccc518b9efd8ab24fc16a365b8068c90f7e09bbd23c2a6ab12792d245551a9894f704042501c8fc49eeaa0132701e29a3c97834530a7c61f1b8440822cd1bb6b11dca2a5951b4deb0b1268c2f5aa8cf76a6bd0be3013a37ca1a903ac634405ecb3714bc54610baa63bacf0a263d8cb018b03b0a286083998a7e8b2a573e570179712130a19f9ebc2337d43926f9c96460996cc03199d81a0e19259da696fecca7906931a787a5c264826099a3e03339295b587e7a4efec6a11aaaab057aa8689473f1f211c6d85499c46746bb00ba687a17877e6650c678d13861337faaa7045a16b8eb7173e7c08b6394b5f2b99ea3083ba175c55d350fd61b73aa790ca6f479fd4b01282b6baefa00a1946f6dfb855ce7bd50389d42856823301e01a228ac754cb65a0e323a0943b75741cb498cc499c8649b6bf87e991507194983aad1b57994b7d79bbcf2eb3b5f8734ccf3cea2662e95d486989144aea22c94c363571ac7dcd81f577645cf19b313f849b422afed963cdb701395020c2d18601a40a42429896aa9b0b1c10c4876928aeac59862414e143722a0b94746abd157343d15bb9fe500763b18c61b184407449b1b5ba8fb1554e4bb58ab99faaac9cdc3b698e64179b089b786204bf95eda86474ee799440478348989c91c3462446724340cd2376c682907edb58c85a4ce3ef46cc5d0ca345590ab14844b224735dc05e0e66ede94258f395fe867ab9d8c1b0fa80743002a15da197614295dc358f40758c9cc05e45bbc659b93ed611aa58845d94acc7aa75deba56d4d83c640c252975bc3165254c92957b78c9583b370ad785f2c16cd5cb9913839939c7293e6b956e23cc5d14cb3ab2a2e94f179bb076355157920085236f60b84449d43ac89c2b46dafa6b784438f3510bfc48357a5681043ba7428583bb5e912b08786562579df58a41bdb82114344b3ea3574b997f8564248210d4e50ab2277100b9a5423178b1f138e9d427762253cffc3cd095cb53a776f4fe015b5168b1a9759ac4acc77f90c69b307192b7b866753872a69813b1bcaab5cbb8126d8998e78d99f5a527992b89495a28e3fa83e75337ca2b896172ac244ab7e30761c8e3a00890046e5f599eeab65bf1a4cdeb5791cc10ade7197fb5bc754233f3b10c9ba2240adfc61c05231c36a6cf71aa752ab3c95c3756ef9373b677105d11f86e68036348bdd181f27407e344bcd297cb02bc44f077976ed588d6a846c2f839bc9bc4872617bdc17a7baa97af9a9322ff015956678e8d622cfb1a11ed929f29bb1f094c17f49417c09c1c443369123caf8701199c43bff97034efc6999424144c9395d9063bb153c0ed82b1c5659bfb23d4cd2c758a26b6c448525060f686bb14873cbf5046b3a3033c5c8081027bf5e3c51f6fb6a1d54a77c46b0ea4299a9da4ab03b95f9d3601f553d46800f661e2c9a7e548ca42e385cc6a0678f9e9d268ffce02c4b465a46773432109a759cfeca12dfe978bf0b7ad7271487cf61b2b8f7c60f389f33fc18439a95bcbb6356047447b810cc094d400ab204cf9ae71e3afa68b88586ecb6498c68ac0e51b9 +ciphertext = dee3cb7f92c8c7b79465a085e92d8061c7234ed5c76ea7548e220737a13fc67d46246d0331fc32d43b0094935c1e709f03f0d40d9f4fefd86aae871ad7bf783e8a8fdd6c690a71901970b882861591ff94792fd0bb16c04a6d5cacf617032f4efb3d032254cd04bc5b8b209c5a1eb3257bfb36e986dd6824ed046852b56f821e931973aff63ffcc586892c58e854705935c44f614dcaac0aff6b78a6aa36ee7914548c9c1413e8b90ab7bfdcde7c5d7c2619394e2dc8508346c187d051683299c041154c3e75939d94afdf3e76676d3acd2cb4de8bd4b6094249ce63155c87c561396dcc300c699e87422df2c8201196b4f320c422b6239e072f6a1ad5dd518298dd0ccaf2da7093a65272b3eddae908fb36e23c00a49d924787210ea21342e014dbf9a335b15c62cbc5c214d27c17a2b6d1c185d5bcd7cf15ebe4a8212e97ac11008ad0e645cc02ce0c7b313f672efc67776516959bec21b66c9a226d95c9dee529990fcbdc8df96b044998b3f1da1ed732e2301f180d0c419a8b95bc6584440bf4fe30b305023570eb91b16dd67c432b0f7dacf63722937bcb45655fe7445abf8ce2c946c03c4c5fe2274a7231df907a5900a3ee0f36bb2009eb4abba41d4f6c372ed7e825d99e0fba3ffef67cd52df38bd2a9588198d9be63cc980e909b978516a25e63302958e3328c10fb61375fa9c218b572b880b13966a8c483ee5967b22cf7dd7f8365e765c71e8f4bd57e70b17c8b79bf259d517826f2780adaf3b8e7774f3d9122809dea47ecb9118671e068b9c9a10cfda0b2a8f61349f0dcf623aabe70a5421427511e48c45e71553072909b8156722be3b301e421e8f9413fef0efb157845c54a593e0e7e37027b47508ba12a75f340a566a4b984226a086497cbf79dcab6611e0a684cf238d7e26c1114829b1e360de4bfe688f7405e5dd46dc3a31ae538d2177b17ec6393c1e973f69ddbfe3a465ab22fd2d2dc3035fe53983c807edceea2c7d157af345cd87c504983502c9d8b52fa86a7fbdb748cd94faa0734b6a0231a1dfa1a36447ae3a27ac1b9d39c0d65b7ea0d8c21ca23d491c7bd64c8c4495fc90247cb5e1a539657e8dda18dac206efc7cb8403d3f9223e800ff2c961321ec5ef918b6f2bf959121cdc940056d06d88910cf622fe70a5af489a069e58277305d9342c05f403ca9fa9df2a80d6dacbd00a6e622043c7f0038da2ca9b49e011bc73df548564e3f55ece3897bbdc95142857aef3f31296699671ade99deb866b55d738e23bfde2ca6d9c2f783d0f1246c3dec26ce19e4b176fbdabf19157a83d308a9e93f65c285c494f4d48b736fbad129c8ed1e12e5174cb49814e1b53ff6e1265e7ef6bd00c969c6a56bd34e4af851a40399a749c4c8f939c43bff06878c7dd80612b0c3cf6afe9c8392ff4ce10ea9ac601523e56f7610d23cacd60609bebfc37b9a063377439d307db2c14d19ea22f19141e80e994d988710045b536762773c12fc42da4f1f9506a38b9003d2eca9a4b971822ebd45bc52425e +expected_result = pass +expected_shared_secret = 79fcd201101e7e277c1b6cdc4475d63ea1dbc42ab94cf873bf0163c2aab0b5ff + +comment = Official test vector 10, seed: "980d0ba7c8f8b23d0e948a6029ff2659810ea1360064663a8994d0333c8543ee5ff5d6d5c9acf446e61dc464f792b9d3" +private_key = a5019e7b82405cac3c8f45bec4e70e20590bd7e543d465ba702cb1447c0f114cc44f404a31b091c638347cf5a464106a2f92a0b4e600a3d86ab9f57efff088d1887865c695c3aa29ba08356da1b4042146e8817f2bd56bc014071b896d5b2cba9fa124cba45e294a0f30fa01e4eb18262059cc987c64f9185aaa12d7ea1f2780308a91a3b2f171d9c41d166872bc7b070d44af8556a356b631a6eb2e804cc09c531eeca476adc8143eeba767298bf29c19fb2496e0c573938babcd749ee2d02e9817a3ee5a687f9324e7e1082892142c04ae9715c4a6980d73c6a54c16beea97a659da476e49c1dd1b8292e04321783e0a66a36267673e92c2c7463668b1742987405c1621f94b87ce88aebaeb7bfd787116b30a5b64a7e8956321463b351a9753a0389937b7aed431a5028d309cbed2d8ae67f859ce371cd1b3cb11a8a70d3b9b92e15530a260d1874118ec505fd451897712ae4104e67b1d2bb2676589aa4e8833e03b017aeb2666464c87ba809f2ba29106b49647666fc58c712b5b8127882df3723e74a9b9e4b0e5a96bb325144111c75e96a13b5566e8258e36d34a76096f9b013236b3036bda5e3d431aad3ca33e9a0916d8cedcd3466c75c1b5603a3e724c60a796e0844cc0d79686f086c510ca0cb11c2e936ecaba446560aaf0931c6a82298bdc7fa82aa6a0b32d361b3335cb83dda38417720e9e745bb9ca008908cf6931ab2b4a7b78036704153359dc4fdb5742ab3c39a346005374cf3107b95cb771ff1c9592d59c810a93e3593169ab26de85077dd79a3b3aa03c332a9d177d7ef88624c285a90099d1d0209a0bb0c425ce6ae9221613b2cd596aa77ba2bb98a385d2898d504d68117ed06233e69c43b541438b3274b579c1a5c27b0d85159836aa48907f768c97b6b2b19f475655022691182b2d9c80aec12eca0890c9e47bf764684ff1a94d1083d85905212431afe09342004b44a090cd71357d2431c923b3ce08bc836b3edb82ab2fa3c508867eae87bf2768ad61d4894b123b6f861db52b9b3eb77a8c99839e9108704c907e258f8d8001567078037aa1ab87b03a46ad3a0a30c753b8bd790923b7454f84c67ab6bbbcc105edc36ab6ab67c28c1d3a54bd06f9c09c12cac8483e015301db6650ca3228abb8353d2b3d95fa5d99e96bcab65b37dc8a1e958f7395391bcbb4a944aa955bc2176aa6600a0d40489d0534423776184c85057ae00e9636bfbfa76c2d329625747968f53d1eb26cf4f95d6cca45c60b2da0f1899a7a1fc651c12bc2c3a2ca16d8aba4e05c0cbcbb2b72c48ef55403462ab49cf6576d8c358a865de1f795cc0629f4b13837b6b1704250b8e97f7a116fb63a0dbc12c955b49a67094cfeeb0e8c7b23abe4bdabb787d3e45ead108a96d3206a4977aa128866e596dfca9d68996d82021a4380c0991561ae40a96bf490dd5538f0718098479a5763787939453a7a87a359643885bc5d6149ea048b5ef1adc65c78e4a9c917160bdc625352596034b3558f98637b33061f769cbe341f9c764238318882caa978996d1c321a92838d109c187011bf84d17fefa0271eac7d5ec90743130234e79089f5b9a6f0267813939b5a3b22321376fb1792d8bcc4a90087866b29244c3641310e94b8311a1303465975649288713e79ca67a9085c8f7449c0bb9a6ab196245b0da028cc1765a8ba0501d5e360cb3064e11554f3fc2914f1260509073b67b4a0570d7f708ca7c435ea987762f2a5a23cae53907fc9db26942136d72202d0a0bb10b65d422091abaa1c21d152dad59c25d20c016237634741def8ca26b9cce3097ffd896f1bf08300282fcb7000c7e1956673223902ae5b43bc63b6806c469a4ebb8bd34b057b375e725b07ee856fcc0453379b96f89888d21a7bd5ec91f837b90a2c334a97ad70d87bdcc12892d588d06655f6103e033547cf5933ec237b21b2956e5921cf10a0c55a70e4a24a57b93f6fcaab2a44bb079987eba57223b4b9deb60ec6464faa4058283b8cba6956c792ae8ff9184e93c2e2152823c15412c102518462c2691db1c64412eb1ec6d75d47c82fc5a9214670b3297067e30c6d9ce0cf3eb314cc1a4cf35342ae419513ec2bd47182c4ea52626a56f7831dbdc5719f532a5a421a7bd5a115c2195d0532e7c1c0ffe40166404137a5b45d7b2cd31752e1646588021508293fb881123f61034318700eeac429500905179b283162ed0b69590541eba0848decc94bd18c888170a4c030a89305fe97a2b0292390a3b1fd6aa22909cf0134a2754728b6fb5180276b7d65c2fd530b4ff48cc7c7093dfc2b418b97762c42bb0980c7f41d9651c69387173a6718038010f50b79b233187bc3a0f7c770e50abc62e8acbe297c58c58055387bc7711473d81ca97b6a6e6504870c0de1d806e3603ed0b04d01dc62529434014c5068c3ab3d4a909a079947127a8a2746cc8126f0212e21a0318ef273d5e0be16253848413c5cea22853c6e63b675cfac1d6590004a2bb3bb4974e79aca0dd927607a71d4b4c9980a86e5a2b5a84bcd2e694190491060411b332aa7e7766a4c693b00eb9d68f34e5b0564de24377d3a6d45f72d82ec24fb268537c07b81aa79b5b28ef5a657e0f8b6b2f3a4279abcf06ca2a79401312943d1d1086d91b1ad3030d0c0bb21806cb87b56ed391e6bc6aad974034664b4902336d6e45a7449cb656207d59367f2b142746636e44726f111603b28670f47113d28ce6bb11f464b181cb3205febc13cc70d3fb35924a641a1117df5cb65fd9a69c71bb800fc22a6bc47e52756c23533a3a494733b74d9689d64a849d048a2ffaa62b24ba53cc76ce8489d7515834ad3a2ea920e4f2275f4f7bb361866647c04c573bf47e6b54cd31810c7814ab5cd27da1905fc5976286b781787d2db606c036a2616af7946935713ce2c7ac3fc4972abaa2229c4c294e7a70f97bb6d119be54553eebab1c80c8da7459258e44a234357a1c9cc46412794116123d21db27455063672245460ebc8b6b1116b34f2401169ace16a514534154e798ae3155809b651ca963f854ba501407920765a14f826dcfa4bc4f21766b05bceac55e6854f1ad080d9b2538848a8dc7857f10c4c843c46b172adece3707e01c03059313bb96bb144996b127a16006db4063ca1251f550836e167adea545b3a0c55c0ac5de3fcab6e8242c2c5c09313646117a95ef46536dc74d869301335a2f9040484fb0c9cb85a3d034d55b03c66725d000c47537e0d5ae249eb884b67dadb110119f1d0a5ea38cdf9f2e0e27c75a43a9aa64a30bed5aa8300772066ef577f79bf4813e3315a15f2c28b2665e4dc7e2f8d6c42e7270ee2b77b6045385f3d175984a0e260363166c73b0c70c971644363 +ciphertext = cb8021857be83d6c14856fa999c0296939540b44fa0973d41de5a98a7b8ef1bfafcb9b16885d777ac157f018f00899c739a8dea7feac36c5dc8402456f565488495f4c236456f7775424bfe331013dd60a242d436dc354b06f76a46e23f7ccf3cc398ca8b041f2591245a15452248d193474589b275e1a7f1a9ac3c7bb651bb17e5c4bc116d976dc447565a29497effea01ccb07220b45919790aa8be2f63dde259aef47f135456803471932046a51b0ca0a0b0418f989373d780f865f890ca055eb1bde17bcf131a956be72249d4155d35b2fd4ad28a59540d7334ec453e19561697797758c413829c46c9487a35024c67dd2bfc3cbfb2b35e556c1a271b6455ed7b9ad266a3b246ebbee224616f23cf9aa8ccfcbe019847ec34ede915970f2b7976446133c1862f961f4f059ffc9f722f6d267929819545a9fbeb6f03465339234e98cb6629aaa06a40d6159a94aec36f39b71bf0d3bb8ac93f9df0c8043e9f9cf17e78066a57c5d10d2d27dd9c0a8948275b14c82bbaf7d8451aaeaddc8eb2ee2c768d2d19d590c1be7af7ba30bee182b3de636125c9dcd80d4c64624d2c458cfa5f30fff16d99c97001404d6c64c5fa89bd225abd0a647fe92a0d004f270b7dc84a88e35892abd37a3321396815a63d1305a9dc7e495b592dd80046c82c13347395a6a92dfdbfd8fe1f7634b472f266e603209df3ba334bb0c68cdbd6d6724b32452938ea0dce4c3a6596638b0916865566586cebae4c0ee3ec36c782ebbb85e583c108436852d4545073774b2177de52f9610f7d778d7eb6d2382455965ab5b3ce9816d0995247945c31c9ff479587a9f60058d0867d5bd7ac12a3ad9dc581eaf7e4c5766829f7f8e2935bd1bc159b5e27f827c85bacb41f2ef5ff75666308c6a28765d6f2b261805bce28c6ed48cbe20a0945b31f59826be0742c711054a2623abecf9245fc34bf6c3b5e8f2f66114af277812c773f0470da69d10006e2dd44180713eef89307c3ce79a877ed3cf6f63acd681cff64647a3c08ff5a0c4fbf7c8a80b4bc3336948bffabd460dfd548c62e6167a24e841f13e1b0a868bc20e9ee55f9d89c44f58912cf23333a9b04e3bd813a0d2c61d0d087c9bc2783476dea746ebaa805de06eea87e7c50a20f1518bf6bcddf09f635bc1145932b4b323c4614882277130315ca6e5e3cce1f937de71e39505235f0ebd8e6482a2845ead61224bd8d84398d8816b31a0b178e95c0ba50f9757670e2d23df3475ebe38b6e53d8e95884fd60c38b3502a762f6ff5078188426a87c6502ac7251110f29e16bea769b1ba2bb27458dcaa225ee7e35397d3bd8c2b82401584b666fad035b2b99cc6d518ba1df7918464eba094d8297254c2e804aa06c00191af19acc9139728de08f19689a2507430b6e2597b1e5284815fb60273d80c48d2d4c934d813c0e1bbcc35b855e09ddae9f97111fa3d1f12cf449784012170e594f6e74d0646691a09a6f8956b815d9e3fa6265036ab2aca4ab450a62645155fa81ef4efa44682696 +expected_result = pass +expected_shared_secret = 6c4484b6d7b0a376f52abb1811c712368a9f34bd108ffe7ca31c36a6ec8140f3 + +comment = Official test vector 11, seed: "6c029462ca42ed520f10a579f52687101105e0b90c6e7bfa582a4c112b579d5ad0a0abd38f72abcfdcaaf5893a112bdc" +private_key = 7ec737ebf52eb7905da8b3c58508928dd74462e8968a1265bb3b9780649210c8202e2950ac11863bd78af3123ae9899ceff1992608cf5bd1b4eb0ac1c13ccaab4ca89a869424bc1af777cfc7d90a071273f5aa5df310493fab17ce5b6477c773d8cc81d995509ff3a40ce80e734a9e8968b7fbe79a9900ab85f7b442077a890688dcba0bd5e64ae491ce5d39b554e6b82b7602a149a686c19fcee21b8e3b1792e7529f2307505c77ed84a63a68258e832bf0f118bc05c91a6b216ebcc051b90143b9748b365ec841b6098c4eece8aa8231bc24b03e732a0ec55aa5b0e3231efb7c7f0ab21e2544072c22b6b4075049b63fba05c68a936989baa2e55ad1846fd1e335568b01d4acc869e710357708bdc25db545447e41727224545ca8c16bca5458eb24d746a12e170ef191cc8dd840e26910cd9484b4e40d0c7446959a521618b9bc472c8001ad0d1c8428c43c0fb3230fa9b17694284375a0e1563fdaeab6cad367c9949c4723802d6931f0c212b03004675652b958518d31c8d4b06dfd99820702319e668dffb5c88622170b0c0eaba56ee7b77ef5d7600b9c0bbbea5b99e05a9443bb81a68c22c7904a1755d4c80a47ac148ed13c3981c6bf4122a7880fdd597429a32d6046981146743ae85cc8c0ccb715937f29c933d63ab475c2c5483ce07acc5b8bb4c7456398a9236d02bed9b951f6d43a67ea06f7fb803acc33e9552e7150c34003a2e2e11bfc0badfc537eb2b69122352ffb62b285b6cb0935adfa0385dda074f7a63adb76bcf4a80aa83a1c32f87be3a786537acaa32178b136c8bf817ac1cb1e25b44654266f4b2b14f33358b9b75a2d916d78e89d3cec68b782734fe052449598d847b2a02c3056a64e72c5a3b34685e9fb2c0037736e0a21df39a356310777a36fce908c243a4a50216b6199cd63c7bdb18b95fbe4615e9799757176fa4a88c93459bc3030e09889ede148890cc221362472586e3c026b0dc10ba5a823f07acc1c693e9bf31518b90359b7aaec54473552835b3590174109337b6171eac38de29bdef8095da13a8f7014b3f531fc152ca5eb19859673d52067e28c7513141245376baf368b07627fb1b844fc033361994ffb3b39822a2a2de17597d16601329866f42c3697a6f5132dcea2140b871480e50523c3c5227537a5089fb6742cbfca55ba9c307a321abe440241e34151b2c2aab6ad55817b115330c0b15891fa35bf344be7d93ad44bb27962101982902427242f5b06f85204e738aec7a333a15001252004b21b5e6fa95a41a4456f74c9522657a9a40f8c4a162f4951cd5bb8a4f334f45a3a73266e1c386caed53ab52b9a4dfa173b96869fba6c72987f4b328a0e56a08c96a00d78854d6762ea2394c2a102162143cd40192749cfbc5031739711f1ea8c37db5b635bcfe9b6396e2902d56bb135eb8975e1b0a171258d39a7ae84aabd46baf4dc2a6ff18fb6002ce232b7a45a532dd54d3da8c580d6cea4209098930477d207622a7cdedc2e72c24eaf5787d4b2b461889d23ab93a4ba327c371eff58cff7f65738886abd046895834aa06a6cb57973f1011353fcc1452b015a324c406515e9290aff4356fb393b57f4066077b2152819b6a69de9718a491b3262d206be72a9ceb000e81b6be6668d14a124bb49be524abb09b91942a60ed38b1974e36376a7724ddc7e5a993ea9c25f40b80c766cc57e807bd5932603403458b84703ca58f8e57c451227128654df4537fce6a57bd1bd6fd8c5be1135b2c82cbfa4b96d577575406f92538034d22d6198a9cd000fc8dc8988f95608c1974c4359ada14f7dd4870c63bf79886ab2d4cad1c89a8fe232fc1c8c515b7d2aa9cc35759ef583244ea767916478f8415fdf7b1cf85a80f4d6960298b977a7abf380709ef904c1706ee3f51abf415028321e4fc79fb2e15454c47b3572bc09c62c0dc466efaa759f116e8ba4717f91220f125656ba7c52338ab1facb0fa6a75ce61f3135911d5714fcda7a5a271205547018cc0607c5aa7104a4a77266c0525579f054ecc6c62522068e79352ae7a1c3265413459939764a4421caa937c8f9b2b276a2c77ce7814fe9034783b8aec29881e2563a63780cbabbcbe72501d68f1b72c6ef3c5d84a4bd7cf4a84686682fe36a151bcb3bb76ce5fa67ae545c9621bed149be06aa2e72f72d1b24b086836b525915b93a49d90cb3c45877c54204a605cc27f1828de6ca1e95056938a6c9651eb3b4a9b09c5aa9fc4401215d9ea9015a996f9a7b898cea466ca14f0065a5b1f374d422b4a277a011f3b3e8143b053507bee829e582528dcb3c9e950f39d17ad0a849c701779d070e34cc606c84a596650b7776a468659344446bc19186b43cbf042516a7b133065393c83b85313c53b71a5bc4421a91694beeb39760806d3b910aa8ea546f53763b656c99ea50a179986dc3786a554b819317fb58564dd69428bb1d7bc45a642a8ab9cc013f932a67222d1fd42b455930b8147d6175c66330217246c400c4b619b922182101b2d8165f93bee58757c14cbfc958552137b904009fcf845321841f8648b8f9e58d1572119b11cbcd59480246a46e255adcc1649817a052736ed9c18a262c36f7c37918db789ab177ed39add0850a509319888073b54bc3ed81000c780fc87ac5c302235a959b1164b491001b92811d4aa76876065e841b276a27b868822fd1da7c3fd1831d88c9f5d891ff610caf264fbc9280b8d4085251774ee20c23576ace6215b3eb8c1610ca2405115e89421418a7610c05bb526ffa39918e9558c6cb2618a612b6d38bf8a2569b4c3ae902a4ac744ed4bca8ed783c4eba450470aef5ec5370b87daa419145298170d64caafc2eda7c989645b9285a3fbd16c16e0c1e3fe085a6bc05248426ef106e7f6012e80882682660cd05ce49520785ea66325078f9a91e5ffc3ba0833de333326fecbcd8878f286064cd1b672f210133e30d106c61af9a75a7fc64fb5b1e1a1649fab356c0f26b9062c5dceaa7cee502c750a93187a21c11b1b7fcaa45f8b857d38e18287b1e878c7ee59e07966f3619bee70253d77065c02926bfd9b031260b5af95846573ad09c42573c8338609fd3e5c0b50092b17a83128a4a9f1a6a232252884504846b3b7df82981dbb036f6a57c5c19136789af9690a978145ea6adb74132ec55840965083f388877a93fc01b006fe4cde4012a1814b327a12cca8991cd18027f4485b4025b5583747fbb37916585261abfea163b617347acaf453ae235166cdd8afbffdaaab9919f0cffdc75d8796fcc28241e5c7b836862d7482d507973ae3fd8dae96eec4ecebcedb68fbda75e04b401812083bfa3b670e3eaf9b443702fb6db16ac1197656bbd61a8e25ed523b8d1e5 +ciphertext = db57de9e2cfc65b4ad9d944d6b8968d8ef73839c55b96a77ede1793f2b8ed9c8bfb6e3e711e0f947d7789c97960b9598ace9109d603c97474b5829a5729fcb19d2232f5f02ddd2c7b7bee5cdb042d2e255f986b3f6c16666a223e49b0316028bad8416082fd7e837f208ab21fe97d884d05b8bebf05c206006f6c94527398a204377051e15d2115a998faee7dfaf49be6dfd6e3288226106f25f2cd89c576dc74bce95538594b6a72e1a0f422d6f8c49c5a5eecff37d2ac8d86e94a65e6d95a1c421b83719b30cbc8a39fd82fb21ee981a2bf86dd6cb0a964b1fd408d086a86bb2fab39dab3bfa25137f7963e94ebc54dd93148316ef1c6b3b9f8d7af85264c7ff14b69cec63520b5d0e4476a693545c515252f879f7a68b4b2132aadbb212a4ed8c6ca154db4ca7299fce1d218bc95b4f058d77ab04989d918e712c266417d2e9b72b2a7c128f4b06d5131f92e2fe4285fd75412326d29bd9a1cd3efe33cdc3a5f1f404831fd7fee72facb4b37d42d33a7799df32122cf349ce0d64b8be5980d4cc140ec58bf0f52f304fa035cd6e0a9edaf54ff56c9d6aedfb61fb1c4aa597bb87298403fdb140be8fe124f9a2c8070719f1a16c58b2093c645319c137c1f53cfe9c267e00502a442918121c922cb6afb3befcc19321f067a2838a0d89ecf94ec88648a64218dd2f2fd2359b31fdbbe1a616daae89f736bd2e16f05828e70e4b9c0bc610041900a29a29ec5d7f3cbc0254442686eed9ff7aef4f42958dbc30b64352b7dfa97864122a889257a5f4ed365fb13fcafc4845080a8a4607c31eef8e8a3b49a0e4b4f6de1e1d01e871c87ca0a191f69b73c2e773b64912b86406786d4c90a8fa113e298871acfb77de35138e2f68cb2bf8b26fd7d464a02d2f1664d6df49dccdcf869a8f1adefcab1f1148bdbc97855a6ebc160394164663d04205828b711e62e8accde8c89f4fe02b2f1a6701e28a364d10bbbecfac9f113a3db495d2720e096db5562259900ff6a2c6a0be74e66012ac2e7360daae5dbd3ad6825dafc23491c732e6328f40e7af2cdb78eb88f91eee5c8163fbb3f7f4b8cb8671f0d6b0317432b4caf2b6a077a712d3cbc68157a2b340e01838fab5f22a28e432713a33b18556076681ea7f43f48cb0339d360cb6f47247220e23f313959c39cbca191b1911c9939aa541cd2d95c7a56338e09f846c4d38080100e82769ab86164bdfce24e68b6be20483d761981ddd4c963862fae0e9fedf619dd7a3e8e64561c1fc4c778ebae8741cec91a4d5161ca7f975716d2bbb4f50536f11710010aff928a03118e698e2cd20edeb34da6675ba04224cab7f5a25e1b1d9252971bd79d757362363c5491d3f2b2b0b95dff046b7168501e3a25ea58334bba7e1574bbe1c77fd4f66fa424313b095ab9dab5f810f818a9bcbf31edd63980ae89bdcea8306ef416124a06041e8a2459219fb863caa7a010843b4d41fc28abb73cd610208201e5a7ad693998b19946d05c563a8dd60e706ff5c237a17d875df0522c72fdd7a +expected_result = pass +expected_shared_secret = 8554d6af350f13471cfd45c23882e43dc81d8a094f6299e2ad33ef4c01a32058 + +comment = Official test vector 12, seed: "db00120937570d62331f4c3f19a10465231eff46465cdee336a0d46aa1e7493df80f18617f9ffd0476cf7784a403ef4f" +private_key = d62c6ce5e7594be682a8167743106a44482e3a79ce257635773513f0b0bf77a161c8274a705b93d2eaa899d8c0126ac8adb7b3bbb5891711380da1a9de0541e4160dccabc13a165b5c54178da95b919457c684b9cef81e97637c73f22a3ce9295de79bedd83c3ff871087b9412301863e291b04779457807abe4687368c84b3408e26aa30bf58bbe4bbded32adb03607598714464222524b3c2cd4c15f98a2e6695463257bb8fa9a84131a64d45a57b9a539094b5e957496b79008878396d3b9b2ec41cca75b66fa6d069a51af611d4bc03e20cb12a216072d7834d996ae99e1cc6522a42b48c54282cd0ae8cfdd1b874fbb4ec17434ad584af5b4561bc1597aab63390b60fe7c052e57846e1a8c4f6c6758798b70503507554946382fa6e2004a616a40dbc2b0c596c2cb2873c38e6ff82ff159ba93563d23671dfc433949d3705f398b3752680169657623937a8c357864c39d82c16da5c1ee407fc7fab357c0b114965e89815409964ccdc54cd8d5b17039aa9283a59e746a45a2800e4806064683c292b425c18f73aa2f720a6521a050c5196bdabc9b094895b9527759c1a7210958e11a3411b05e67097fce2c11ed024a85a22684b51edd652ded89c23e1440ca5616bb754361c549776222b8b297f8f4bb7f818d3b29b16c369cc8ba9d91e6012bf006999c7057aa2a44c30237314079b2a55c63990c3ab657cb80d41022651097ed680d200195be82a9b9d08b24f039bffc42c66459b0c8889dda6714b63762494a5e6106f34223990772b1cc12dc660f5be62eb0a15c16d4a0303773d768c7dda7b749711f7c12720c150d30ec6b625624e3f94861483be03271d8b05780ab62e0294a8cb193238530b49455718c872428bea1d84955f54a3bb619dadc6106ea3ef27094a085634624377312648ac46559d7a7dd902497aa9f22879d131a08b9223a05e5b76a00807225b304480f6105cbec8a11cea18e8910a9bba691047c95676c9e2dc7ab76537691dbbee397738c613e1fb00a79f06698c10ec26c97dc00b82a54af572a02801aac20983311f42bca18699a2684e4b5aed83c7ad89a1705f1605a87cabefac499a56058d8b02bd597743524a90c3686d9405e33c3d70880b6449d41a76f83e23759664f1f301d3935998d690a7167afa11a59cf8b87624283a738c0d221b1b55453504ab64fb89824351a49ebbcc291465af92f50d7b53874c1190a766dac5e70706f88097be4500942534df5e5887c48b234c11992f32bf3f2867cc055d7d6c3a4d25d2a141be7d706bc1203814667552888e3bb13221a10dc3a4157d811a7ca23088ba5aa1a3fd60c0c6af29b3b52aa6da319d8e359d842c6dc65c29eccc0523115d15b19a7b90d1090c5949cc66a004f0a0513132640a284a87384c7ed06782607584bf5cdd8f099acb0229cc9588b024b0f3b5ba80b962218b3bce4c0f542bac9e8c235362e33ea30d789094fe82fbf64569907755ed7bfd00c3f6f446deb00a27b37bb92e454aaaacb69dc854532c718c85508ac8742c7180ea805a78999111915bd414275e92d75c1953c10968c802e4aa6429eca0a5ef49fb4046ed2c93914400b0d882b67c275c483037e859c8c015114345d52853184aaab60195152259d9b643d864c4ec5fc4978c657c3365ea81212eb91339aaa4bfa87a197a04d46a7b666837f55db6f16c095db449e9baa879ae14016ea4f8ba975da26cfcf59401237accb908efd17146e9439b1473bafa07703f2932d5c598276b59b419402d681d87111f70c20d2710e10a407634ab216907d7363af0bc4647dba208f9c6744d71a8a1c1a99082a3bd8a843e4ce581412f04877edb1709d1a9623c3c428eb111a1189073c9a3d34ad16aa1f1551a07e6880147360e60888ddd5b0956036951021af4699c96382cc0c16b3f0b960135391c6692b0c556a5b9ad2f8a5ed0cb0baea2406868ac6f7a5a44b722721535e098fe832c9af148ae027604c47ce4d3214a1bc974675289ac7bfb9a644db30235a664417c57a8a46a86e18a10f81b87f4b4727f7234017088f447f28680b0600ad1dd672f0ea19e38a39fcf964cccc64528c97fa474ef3aa6777676b3db443d0a2042c744555049c48b2bc2577738a698bc58910f55b0ede555b171838f6086ca365aed981aa5354561411990707bd3305cf4d10161fd3124156691daa5cf3795653e2aee1c4ba021b0edd0809b14905e46c2cd0bb1e165c8aa428b180ea394e6c92bd6873e12328e5e1916c94c81393172df3815127b937b9646a783524671fbd8b5f01395178c6a9ff42c47d8b25fb37a2d1da975f69c7a8286504faaa6ad5b05307c2d20b4f27640fe59b1ef407110a317cd72023828192b131cb9af96899a69b0f51125b2828f29493a997a33023661bb7811c4593e4e579f8b17d0cbb6037d9273932af4eb235f7d01dd398b70752a925968adbf56cf132b85680abffb937c35425c244345e805bdb608cb0666984775ac1852690908cf2a60214f6a888004aa41a44831537e55a5dfae7b2a4448fe6c562ea66764dfb5fa508b6738c4f52f10d4a852d38f5354981cdfb7a851a675c5a01c2fbe886192582d1f08ab37753bbd81ba6d848949731c99ba92278a2833cc11ac3bf603512bd6557f9684eb980c7588424db0c1e2bb2bd09196a7da29d79208da50c4a0c839284a44d8861706e991edd099e0b1467b88948c89778787c26dd4436fbc4bfd12b0acc00ab4d85b613bba4f928bbfcb04e2eaa51b81845c3a710bbc8458027a4f055061d0b39ad28482646aebc5458d0e70d396c99a0b456837376110488f49a83f48372327467ab87870d11b3c1e6c112ab3d6d486a99bc2b9b368a0695c6c6251d6bea5b56fcb96fc23475719b8cc82806875cad772e4716332ffb02189438e27097e565159e4b1790558273ca887fca2a6e7226c53879adbbc07ac1072e6aafdd2a1dd89677842041f33c447204a3fb91c1e4935111ac739cdc9fd6f2ba8c0c66dff5552f3b2bdfdb19d4f65cb3b23777292cf97cc54bfbc41ed041e53318386173d229b9288c5d68e87d0ce2032d481c46b646ef71940d97af370732533260c6ac943272866bb2bc90ec64424c67b1c877f5d2b35c39656957bbe40c53ed88c4124764b726a5e24aba7b0c866a52385c85c241677f75487d4156c85db639ad741e0412438bdbceb6092fa14501fe1c5e95d90833332debc0441554a8cb5a8f7826b047882b415b78a0c2e966ac7c67b03ef5106f0a751017b67cc52a3d0e1586c74513d2b5f132606ad1d739f1598a16c608a240cd13dfaf8263d74866315e2898a3431cf19e46858e9a30597e4b52ffa87a54b83c91d12a5e9c2cd90fcac2c11b3a348240411a4c +ciphertext = 434defffdadd10d9567ff7de185a5081952e909d1a43b163483f8cbffb19f07b20cc3152c39709c3769e3152a3870edffc8dd78d5c9e26622d7b6c7aa341c60a5966b69c71265d8881fb94d9e13efb08d0a738b857cec7fdb63d016c025fb66e1cf8ba31961f56ac47871c7598b4cd2679fd7ca0ede0805c76a6f5564ce1bd748559f3db064e1da38f33cbe9c993c7cd1476472b4ca2075666380535d70176864275e438a543766ed89727cdaa4da0fcb36d948618a935ce49fce7148836b35d80f9885e82470f3ea9e321783047b136ab25f3cec80fa385f81722c0b02e924b7906ddabad71b8607353669aa8e3ab3826e895cc43b55aaccff387b7edfd035d39918738dfa7930b4dc7be3b3103552898c590ceebf0660db1b9d1fff96e339bd7845d6542418ce34208e662cf2c18104971673789c1c429aed0f0212868a808a5d6bd5152040285b8e7f5294df6db7129061c22e16595c57a45deca829ea1fefc4e9fe7d25a7bd5d17981bc9212eabb58a6ba17231753571f6f7f2e1efcca7b8e8db179a774da3d2994be50f8a32dc18bbcf606f73b1f72e5f36286ec13b576a013786b5af3621473719a2e069c0e59b1de69973ec0ab482a0d34c0bd4e815df2c36bf79c5e2bcb511043bc4e6802e7fdb358c5994537dd9a6e5535e281627a0a40576befe4d863e1b645585e0935f3cada9e64303effb1e5d8be5418db1fb76d1784aa7b56c2825f970e221e8c8d6b6f43e8b80f03acbedcc4224da3942016668fda692383178faa7328ca7aca8be1c4bc9ef50bcf209289eb47abd34402a7d1e21c9ff6871a3b7f603d77e08ef58853aa0db5789bca441c50ecf6b01726b8cca5656705fd2c670a8fbaac44be77fd6b60c863873dcba0b5d883667f37cdf979ca1a098cf05421ad841ae88d5c235141104b32c1075c5c9b03ee60a33415f3863e0894eb112046790ae65b8a6606c2a295f1d91e32dd37a42ce0fc5be9457fca8babe3bfe142c9abd48df57a848ca966930c1372e68e939e9b75e72d52d6a2babe0992720f3a3452176e13619ab4057a3141aa1fcc82ab50d470b31a9beffc5a57597de1415998a9e5806ea9bc5df191624432543d86c2ba247cb78ab4b6f73afbd5533041b30ac9e2a5c2221721330bbe258a84ef5e9d5a14645cdcded23af731bc9071c66a21c7dc36593173ac63d818965d835d572ca8f6562c048773321f2a546082f4f0bb479c32b5fd6008d417debd9ed9c36c15ac9ff3d990f89e5f26bec912103b5b3ced9193cee7712c6442463cf60c7e613d1215594a2086d3695db7a5f0ebd6bc953a2c388e4866a0c54770cdc3342986beb6591953bf6d0d7ec07b975d01076513d5cda1bcfeea1852ccdf15660a73585a254ef9df4199ec11c30d04935d299908aa92ac5c3a2a549ef139dd061f80f8330a92b52439bc512804b2bb75d1233f6ef04625db0e621f4d817489c34c90b99837eef09fae7484f801a97f21ce732e7f1352429e00420474936f73188eba2000465bd8961f393c87 +expected_result = pass +expected_shared_secret = f9646f73de3d93d8e5dc5beeaa65a30d8f3a1f8d6392190ee66ff28693fbadfa + +comment = Official test vector 13, seed: "bd26c0b9a33e3b9b4c5d7ea32d5bd1fc371015be163c86f584e49bfd5362c8d8341161cd1308115b2a03b7e5eaddd418" +private_key = 212393fa68c40d1153ec29801f4472db30b8e6516647cccc6a160bdac4299d515717d46bb4248673d11558d8af5a6373720a9c96a4c51bf12ac506cbe51b560ab742ec684ddf86cb08121bdd412e2476842d051e3182c415c49b7184c9322242f70b63a960576296a8af5451f5d474019c47e1822e2b1503d30cb8ea20b3cec334a2114fc2381d910a98e633716ef9ca2f7939c7033bab756371d6c2e906061df822113c57dd5992c8826adecbc9ae381931473558ac94fe8a19c9c4bea3dc40defbcbde234a211623f8d80bdefc74f657a797098ebbe2b6b57438c2253f89d13bcbd5c0c4204def79bb37859e36e920768ca7d0651a7ec9bb63336698acbfb6c9a384084defc1bf5d9c050087b691d40344e107bef0241bd99463532a05b795f820213392cb16d668605ca86df134c03c4a7df581f8ca7daf732f5aa75146457163c3abfa9c655f966a607a69aa1234fd1ca2a97213f280a10e84c4aad26c0ea2cba6773d63b39ef7350f6d284830ec3275e5bb9a318b03f87cd3f3bba41632c0f9a1e65989b74b91b23a82bcc22d617aaf8b14c10d0037ab970b8cebbec0cb866be5057964b7cae6c9b3084a696602a25961dc53558c065d6d8b25248aba262b1b635322bb82165a8cbede60bbf6b72459d47b64a964b3c32ca563ba5aeaba8ed912d81b2e733b4b4587a99ae5037dd21dfc9aca5d869596e36547c0336ae774b8ba637622a597c05dcd43b092d938429886c708448b24a45a701ce9fb9db54c67bb531bcfb82ebc15c127409b02a3350d6168f1296784b86f7310b9160681f0133a66356843401b9c0414d7f687aae41a36857ccd3b26bf8c11def30769e30630169365aa3c3b53cc89d9cf47c2cc6c166f197c9e5c5b2408b03c41b0613703cc4872be78dcc4b28089d7118ca1186baeac1355d5b9d4e45515897ae233a26810356a373dcbf6cd5f02cdde8c468be006dbc67e60a69908d1171d4a5ec1643b87059cac80c259788eaf195f4fbccfc4c0284be822f94c2978fa119371291657b927f8b332124d61d17e21a36485d2c3f2893865f305589a8d048b06fba7bb9f087f96d5785678a7f2d16c892cbb2273677ed0cb70f5729af0a0403b0bf0608acec1ce32f2924535c16e8423be0c8854e439ea395dd792399dc98aeeb7493b64965858be35977dc053b3c0b3788fb4244cd3b49e40934f90b454c983da38b2b5c88521347788f832e9c64a6cd012511234275c9f6c251442a87b496743333a161d8c04e3d78be3097942aaccede09b9cb673e1fa261be71dbeb5c4e1049b2b2a00311acad4470f8afc85172476b949aefbc0110a261461291b5ff7a74697c88ad40c82770fccf68b9ad5382125879e637b7cebc1aae95b03219cf2488b2e3b2e51480c8cd8022c2092470236fe6042dcebca24cb9ee9379386d80e54c232dec93b99b694e99ab5e41cc8cfb8928d5c08edc7a707044b49b8a131986a3f37bcdbcab5255b64b4905a93a719d01a32384a87543b6ba1a22db75c9baad257bc8b9d8b78641b394c7ae064087454cfb17b307bc35a97cccb842602990747d60f30d220ed3171ffd7a2b77049dc210e2377607b817f24c011dd736d7918874aea4b8bd98be4597242c95c9641b194a093a928b8d3b30f33c10ba326943a8b704c09a6dfa55f700c488c38a3334716cceb6585008a853162e40a544c0a16878328f47c4e67b5aad276a2dec4c320047e2eab345cc14982b96d1d13566da409e93072377a1729546117a04ce291a2090b60030a35d5b360f9f871cad52f37e63954da0e0a8675abcc3717972f89469978730607293267cac89e3c96a98576c2351d8756429722a1278a173a75114baa4f0eec6a12b09cafdc99fee2c1af7acdae3c747b94b06517464f654adae25888a15cb4c5017076c9d3fac3b1560dd9112d88b2bcf31b15ac420fe5a698d52ab41ef33fa6ca8d8cb9b94d58648f39a138974e8016a972308c7b040d2fa32bfd1096503a3a0e84b9941188a6720e06e6641b896d365190369766995826b72122d780477581bd69b348bb6c5c8f65b4d84ac3f0768ef6645e422b3ed7e38d0a423409c285d0e21bbca97be6707557bb0027e755f9a81912d04b9ebb374bd79411b2c283068670431f2de58d346bb525d192f128c9316742115275e9214def7a61da509b5848013b304216f783d77c3f57b76fb8dc984f05ab557709dae4691b519c44d41813e4b61e6664af5c970ae7a810714217745af087bb00575b18081921a854b7d953e29cb1de704e6578283292168ea73a03e2082b8b641c819649270011861a7b301dcef74e9b116a86f717e30ba6c5398e34390072e20c82f570fcfaa2bd8847a7187052e6b9d0d9bc9fec0217373bcc7b8d38245e40a1597077bb00a408e9eb2bb451c31a746d2aa07fd6432cf176382b6665d45343cf32731817023ee046577abc342bbe25416daee417f2971a8ed4c839126e996a8db40a55bd424c0e534cab677fa1c6b692d2b7e322a331305f75289a1ed102ed604722737e76501c7e7acc69842d6ffb2d31d1003c3b3bd8f4458d93b0270cba21db21a7d16e22e18584e68ea5b890ee839de75b68d60b25d5452bbb91658f3220aaab200ee7a8f070a5b5aa7fa30a768275970012324fe01910e8647945ae6f8b3a17d08e5c36af468a7f6308751c4141439b567eab03d72538ddf71debd2aec5db13537a2b0130b4c2f6662182bd08eb750eb681fce77981a3012102c45642bb8a44ad5cb27cda8369ec28190f64987eb600101aceae7a807158cc8100555a82644b3b513d7cb283a363c70a4ea090241c8a96ac562e7fb3c38f3515c3a68fecb271713729fb77a1a68695fcf995855749c1f0ae09f90741ec332e7602cadb69e55438b9d8ccc213119627410488145777907d280ddb7391d2ec9f27371277c266bb1b14f6eb8d46b2c8bccb0c68f3beb2d87b07044904d5b08e84305b0686f923985a49acdcb1a662d1a08948c9b8d95883518d0ad3933976c464a41c18351216d84066d71164a32d41886a153703c584b747555eefe8309f0810d49c0df8c5512b245f637c9448c47e1456995e922460b8210c7ac1063047c3764077288a1345c23ee0c8fa6865fdd52acb49614207285d241c14114db55cc0c92049f3537abff81b8a30a02e5ab013741b36d92191691b3197cce8d2328bbb6ff61932434899ae01412b231b0efa18d8381555866091c77981e753f8a2b95e8095765ef7a13bd38f9fed3bf36477916cb802690a213c83f6624a067a5e2c9510a2a0b4fcbd414fc61aff04a8df579660d14b13c40ec0470c45f639b65a588aec87a9a79204cee2986867a2906eb851b734b8b22b91d6749b1a5f07c44e3b +ciphertext = a07bccd6a1000b2d0f27be9021ff90c945731a7f45e8565550bd4196b7fd1b3fc4265aecf0714bec8fff9975ea86b40eed6befb80819936d437df6f83dd6d00d36692ea2c69ca0c93544e3ec86bbd6e24b12e7985e7bd89cbab9cc0167091270095529280eb6520545c07a7d76c99eb452e3fd596ac1c493e05aee285aeb22767bf7482feb0083147361198bab22b7a9b90051c42618443e621761a0e4bbf5444e23aaaa99ddd344dc738a81b1900e546d008c9e51c5a28da10309e35d40415b35fa9823364a0da0a5204a8c67e073128ebe2ae9f82dee1a91753ccdfce4247d9a3620545a8c4b5c5b1e55eecc4e9cd4338b912f5316f206ad53ba83adb62023c6d220fdcd573dfcfccff31616b50182a4f5fa42ac71b2ed506eb260f69b183d0dfb43f9e47fbfefbcc43d5704b7d4e303671dfebb03c83c79b3f7dfa0af964dcbc2edceef8821be9926ed353b9760c1d42552fbb8bc55d793a795bfd380e4616b3384bb6ac4c0dd9b73918c17a7b208138022a2835b5b0f1b8d79f186dbbf4a53300d70a18f3a0a8c3f3a8f57911d9958e5350d835bb4253b4c720675f81188480b62059d7af0935b81ca49313e49dbc2e5ace73cad23d8579218686ce283549e2f39b712dd7570aea5ebeb2fc0896501a39203769b41aa931876a2641f36136b82b53101e0868f000adcaa5157544fd010faa592cbef477f12149e0e45754bc25d66c0cf845cbc78b6bf3f52e6fdcf9e7932eb05f1eadd9e1a8d6640aaf34fc0da9cf0f64ae8398ea5ab0caad93648672d084d27a5e8f036b7390616df5a8536f1260ccbd3b8810f070149df4ba40ddc9633e7c1ac97da236c4269bda5b4a31cc39c5e1c1f2928ae140e67baee27fa30ff122fc431091558d52951b1041772439fe52a867df5c34a5d407249782a2ce947475a59d21463461a556f670801903a194cf4c55e7e2e570f89c93bbbd2e0ea1097c7d971b41c85a2fb20159b6271ce2a8feb0fcae0eb5f5c7ddf1482f6ccc35ebedacf47e67fc63581f79aecbb95d050edba235543e0c9f90a26572674f00b331226d1e00795d0323c331de978bad64cbeb8de9fbc2cecce265b7e8c85d0f334cace439e27f320cc8b475758e6fb4a1eda0021447ed963c8952c6635e6f3e5ad1372e3d4c6ea668434f5a00a9022dc3af451b0b0c8a4d9c705c9e837ada61d85eeaeaecc43f4cc3b0ba795dd712a943b09a5682a25f4a6089df5885c9a3a7e8789419753306134c46c3f6da5c68ffac355a4b8aa0a1708c7f5b66fa9f5c5cb3b4d9eea2ed038253124c3c14f572ac43fd6b817ca6211f0210a3d96e72e38cd415cfd525425536809b6d590b3da32a8c3e87c649896b1d81de6622cee43b5fa022e2bc6a378b4fa6f421f79ba8d6630afed853530d5f3b2d9341e6ce5b16da3c919f8bff21192fa4c3b0b4eb7187e453f0c3437c7407912902fb8d3a85584ec961fe7094d606719ccd89128f636119ed9ddcffbfe1d2c2296036d870fe0903b81446c6cc444bfd20548bdfe8007d4 +expected_result = pass +expected_shared_secret = 1ee252e97b69445f7f109187645cd2879f55e10eb8361ab43b3492ff51f01815 + +comment = Official test vector 14, seed: "e2819ef86853bca1b9dee7ee1c1619988964f9a913e635aacf0d96ca6e0300d084329dabd8f149e24176d22757404260" +private_key = 69e774db244d05192a2e064257f3a7b9b08941a2018aca28c610b8bfab59176bad88b9a7781222cb03aabe6a4c2937be24645a28c3a7931240503769edd1865f72b44c4842114980ba64a59a647438c5476a700d0dc4a63277c4dc73a3dc9b59bfeb0ddf0817612ab73ab14378e93fa4982d15131c5016b36a639e4f689e9b6b2d2bb2501e130eedf72afe4861ae7cbe7e717b4c4001b78bac719c6afd40969392cfb1d918794b4988a7c03a23c8c5a751ed2c39d3e18474b43cf8b7814a5932224141fd543871ac102bb0a349153eb4a13ad57ac06602bfc6c1b4425284ead058572a1c7c0cafdc6756555b2033d2ce67f9155b16726625928ea26d13e2c0c0a66988eab99643b4cf23ac68724ce635188dd8b3f2f421e8e8a9f838b707a16fbf27445a7555cfc052982cb002130ca3500cc428aef14281564997d5f37d0a1c411cf73d3d2082e4c26c3bb7beb9fba2d9ec631f8953b3d03075318b4b720b4fb5b177d43c11e8979c640639136fa20b718c0846404b2f0604c55ca82f519241d811a697000dbce1c743410e92922e83446410a93150178a4a2b52123174db128b2eb97df4e8a617d5876ab9977daa8b7845537db0a2b6e0599c0cc165438329d1251d6aa09d5b30f27040082a135c2b831b7722c416072c655c4d511e1fdc0284932849126d49b5a03b3593894bca250b0d198601a02900c9406d8f5b69beda735a3512bd355dad587bca7330364031573b44eb9c2bd103bafb7283c1b923ac3a41f0607d4b7b7e1e681aac9b4090538b6b7975b9c5c64c6196577b7861cc88ed6c3365aabcc9b97a6a318a39a2ba8b17376509a563b58dfbf4584e6b00d56bbbec309164982d1b906635a146c04bad613c02c8e2c2d0597fc285779c628f3e290a84d8710745c444410f129a140358991d601fdc787faf4506c6003e2130c2e03b3ffed39ca3b9bbaaa34abae794d4266e59a80efb44528b2b234d70025767a5dea09032767722c61e53423417458de9e809a42257a27001e9c8ad43b775bc853d8475abdac86811d568e9e38747618aff0b0901283a3913b6595cb2a85b6d42101dcbc90146ab85ea5449850bc9d8b1356f820ef365731f176ec0a0a5b7f35d9848c426f32d6a37046574a93cfcc043614e8708026621a06ac00582da7b64421d4f50aaac1bb10d6bbaea31808712b891344b7b865243614cd706c2dc098b0a069fcedb89ecd67de8319c92f3aa0a9b92a1fa256302587a5859408b5cab563ef1814cea386becd756db669fdf87a003ea1e7654cab281220b21cb234ac1c4b459ee48517bc838082191de35b265d5264119c05cb500a05307c806ae8246128a8194f61024f5b2b7c410689150c0a8f68e1b3a51dfaa834b7c8ed989b351e683af7ba73dd91e9733282fa2559ac53aa2819811190b5827000d98433241a3da2b77f4e588b0088e3d3318cfd049c4777f7b08678144618e2406b9b6b72698888c4529b7e3b272e92620bb36792266c3da4c9c403d1d49650b5530be017c3b99c068890f2705702440aa0bfca823059822c18981a03b16670e127386265487665aca4c171e023621a853965a629757148e37833d31e453dc9b20191c94230833a6bb3b93c181b651918a25235e22779cf052e1d30e6852557ca32aaf841834b423a9e61cc24b5231d7590f863e814aa19f123c0cba97cb3773740871ac23868731748355a85f03b275b3273486142153be4920bc9ee77ab5c05d2b96228906586ec831ebe8cf6f9bac3631b7cc904dfc768b1a717274b33f70d08b6a79c4aec3597e1c9664c9472b6c100c1601f27bc0aed37152e20b327b5d32646f2980bd780c8f476715ac04bf1e03c2d4a31da23b14dc0233c1a2c2d983627bbc845f023e349ca59626a99eeba5dcc12e8b82076ef2295238667308451c2052c6f9b127778a3c656213a23dc7e25660443183298753475bcaf667a9483192c6bf553b7e50b44a84a4b881b0365fe513fc661a03689581e045d2f921444c6a76e6344ed8a335b6681ccbc7b42b50b9b03558c64da65088f60b136882012135a8a659355503918ba25da1c167b9fb9f771b5727493c921338c1acccefa80201039d28c968aa3a40c2a28835f63bde23b9722a245ee3c859997f45e10a11f1906c1485b0b51093f51819963393a692ecdb1dda2c88a6133f69f401b124cad796217c818152a528f7d073bfcb9eaccc6cc8825ac4612533126c1ccc736db53f648201ff29a6c3f77b41e01de2087986f237200014e5fa540735513400004b5925cf64b0ffe9575e27ac19ac5644f355231bcdd70348c4507c80780f1d51abf6ac4c5e2957a94325a3f64e83a0a192516f6cbb40b8abba5f8b85bf2aa60e44b46585bf009a723fe1a44fc97543f269f670c593935bdf87a52a1a31cd2b9ad92807407b5851b49eb1a2318611cacaa7710b6764a7e57f8962bc3fc483a8393640e602ca55526eb1be56f2c61ce802b9592f24c14aaa75aa4b002ac9b81fc1327b2a93aa889c9eb178bebdc91579ca7bd30796cc324447892558d2c052308946a451ca49816c06aad39603dd3841ef03ccc1075df164739feb342adcce87aa12f550200ce94765eb4f291a5152941b4eeaba91c3a59257c03017c0b7e0003b07657ba60b4256a8a4b205d7646813246385b348ec157dc6eb3be4546d7eb85c29512840018968743d2ce147f071c8f96c7436596337d69f5074485bf4a288833f2855787f8a18d874c5a2a41422157f65b62b5e581c2181a7023698fdc1ac60a8340a34b29f81b03dc35da2b453fa61293070b1c6db57f3040c3af7766c69b84d624dba1163feb0c71fab6582473f93c8753d67b0259a2eee1c847b1b8a73455a74fa10c3a4c21a35ad20fc36d563be9bc55350f565e4076670f0c77b3c4aa2a06f7bf2ad1bfc4fc8721618454d640189a6f8b3d6c71086dba68b213f4c51100a6037e717147893cdae20a97759204b2c684d8206fdcb10df575799aaa3de388cead4446dcba8e14368f7202520c71e453b41cce426be6c1e29ac475c45742ddacf7c520da15780a9056183900559129e5e3cbb3feaa288b25b6fc69bb8b164c1db8e24391172a8c23859545e98a13725130e45c3d1cbb5d6f5c0dc275608163916013e6e466c29502902c97d3bc33dd006abaaf2aacc40c046e55951d744e31887155a3fa880058a8767b35684445982767c697540ce339a0f4c29c2ae42b5dac5047c12c22bcc155a63a8610db945708cb5425ce0c3c651532a43d32473f236519d54fdfe0a815dcfbe9649d9d1c384baad67b91b2f3e21f2fadd6bb582a0b9cb016051dd82c75aa2acf359556df4a2abaeb9dcee945829beb71185b4d6bd18b76e5668f253383a +ciphertext = e3305af051f2b2d4d411b8846aea1fd866b2e9f2fb4c92c7d70a7c31515dcc9b9b5795d7c1716dee295b1b92703315bcf4a5506b70eecffa872a1c94585d978bf2b610a464499f36e58526a1ea99aadfd0f18ffa916134cdde7b857e72e8440c33de1187032280cb1b9cc7facd37abf84df7fb60b2bddf242dbbe89ba881d4b4a4bae19d706cd24d3dddf19e6619a0db6cfc5311c5f917dbc9eca99fdceb6f240144bca0697c2dc759446abf52f4a960afb3dab2a28c9922f29ad0c93a24b3f276138a980e7c6fe6d4dd349aa4254fa950ccf1ca5b177eb10c13a795ccbfb9b866b6c1d1a7b92e680728f45be3ba332d026820bf1f3b22ae9360d9a80ef9412194c1801838e2eb7467855bae54063ffb4a173796ee577769859812985ed1a0779a1b44b31bee787d6c894f475d1975bcc5b956201fa8029c1a50579893084874099c5d9ca37b33c24e08dfb45ad8c3533161feabf9290666218010de638757d46d8f36da00eb73f88d363382e3c99773c34f925d95da1486be5fa085e6670f34c6ad07453f21b3509bbd1eba6d16d2ca83b7942731a99766ae98f1a16df4a8d9a6c44d4c9c026f0232aa8219f37eaa2764945db0a57ce9700c3fa57849e8dc7848425b7538267b749c1474ca6f9ede161bdf7614f8384438250d13bd9fb3b86475de88bad4ba9cab85e94e3ee8c5f6a17867fae42353de0eb6807abb0180261ba13b5c28f3374427d9b70a49cafe4fe60ccd4264322f313173759383a3fbab05e002fce19a98ca8e8d112ef35fda07636fa8a23b4806497efba14e91608b92a737756d921ee5895c36aab80f5b863ce28ffac7fb55534a7643e27707c6caefeba5a60388f185e2477a66ee285dbba5ca77d79c4f7a10d40dd61e9e161f42d9c8674e3a5fb00dd22483466ef309474ad64850a13ab5e9bfef7df441adce7d678639fe4cdd49d58d23d722ec96127af9819e392f158a0b3d7f69e872349ed4eb81162529f8767a345d00e9588e8238d1fc25722ff23240202d7b1039b2b18eb14ae2da455be3851466ace03d27fafe35f5b676565c4a259634d24593efbbb13a9225f3233340cf8c3cc3504bb43158a57de9307554189d30936d5a9399aa71739074d5d487d7c69c3daaa10e40f6007668e76a7a3013bb6a7ca94cf668847996a7a496e839821cfa586254e21c3c04e3d40f730847b8aa60f4cb1e028899f4915114bec79d17501f8369c7c5b0a16cc0bdaf10a9dd18245ae33b55ab86391cb027a7129713cd130e7327639a7afca5f2d291b1f36069ff0b78979157c938619dfba02c24ca90486ce306d552d512e1a6fcf3f388647232fb0ad4feb4d3c9236e23a53962dd1118dbfe5f4ee1e47677db5f094c3bb3845dc7d9f7922ade82528e0d68a76b9608f3028100e5cfb2a989dd0690cf3bcbea5d1a827ac63a4f14992974e5fcf00981145d40c8d0a943dec836042ef5e859b9c6c12ff19ecd8957579b43ef7960952a020a571ffed0e37f7844cf37e0932f573134bf43ca169f09cd5e69 +expected_result = pass +expected_shared_secret = 1e1ea5d6a18873c5c7fc8da79093f6d3db5b28fdd0aaa42726ad130c78e9bb88 + +comment = Official test vector 15, seed: "669c4ef8a051ce201da65fc4bc34d398ec1f806276fc5d987ad71d93bc12dc8f107b58be6e8422a0795c88cb9a0e7488" +private_key = 48c78cb714b9cf88a8b317a6fbb681b8f47d56524122156503823b600236d3726edd9087504705cb4698a1515dc0d80b3f87c63d575170f45d121a848d897c3c0063dfe9b2d616a96552384fb72d6226a193f90e15b364ae667c34ba27fdd0ac0debcf450578c6d182da365d40786522c37b54e0126ed7b3c6bccf28f40770f23736b394210b67ebfa72f6b27799fb1f6e48cb7407261a86884621c529974635b35f5b4c530e68bee8cc213387b66a4127d01223180067a2ec24b2ebb579f74bfd5417fe995bbf816737722912b5b4dbb4c938d0686d1c2a44880fa7231944c195fbd67c67e60861d169ddc41f8150b52a68c14425190be2abbcf5babb734aa03538899678d4290738cc63eee611e4344ea73b9c41f36c712a4c6c72422000cb93e144f3c588a2299d5704cb347b90b2905cbf69cf1dc5c670909c478094e88c01bb3b3e4fe246f8dc3c62da37bb13b6e2046911d85d5790869fa4a54ff16794620480919c0dd74b9887bb5c125c34d76b3527a42a46b689fc4c57571af13c44b7d30a041028e97c0a1e50621567374de7a4207acd4cb18417c7984645cf4f2b5a5434be8f119798c0760229301e14431b0b652c643c0ea0ccaa13cbc6fa6dc8d348b908b78343978fd5a0eee90ca5104184f33f107837b3ec667eb207000570dd33856939bc8ba671b3731edb2a94596a8f2f37bbbf5048087091fd2ab164f5c6a8f92f65239f08844ed4f605e3bc1bf780877eeb3f4c85bf696c691f85a947461331aa33b15973ab4923f429c7913731bc025539232217f801ec7078e2f0af3ec7494684bfc40b4ff31798467746f60bc9bccb5b1e397dfc6165773a965e55034dd1094966694d7806f2f505cebc3b3dc307405431fca21614089c633b522510a5fca73462b32fd69200dc614c5e88454f181d845b19b8866259a2372bb3361b9abd5aa278b1773057e26108bb020a9610bc19af13454df46b4fb5a68c3e7aba6e7197ad63439c7252cf9507e32072e437296883c93902250165a1aee8be0ce6acc2029e10e97536eb958b691ae3e3aa9996986805c6d1f6356d26c1e63c550381b292fb1b95e183ca933d5be1baf6294c4b248b4264724712b2a2816ed3d09042287eb8a17ad6c86255ac492f53a21ebcc19b3c8bb1e78f58ba98bc8aa77f6a5cb90c0456e1cd663137e11185536b02d8708644539701b193ba52258064b289d053404bc78a397ab86895baf1934e8b2f6cc3ae48869be7422e581a6ff748519bc30bc96c716b0a24a02679acd5151cb2a0fa127c81ea513c3ccc3b84a34025522486ce424bc04c860edc5758aa990fed372db324614fe91589d78acc88c43c2643d540a509f090ebfa6214832c76ca982faa1ca4465f9c14ab4e6459f072558946ceba113b5fc7024a364970c72933331a6a4b0d4196b9e6219595e229f3e28fb2d5c6c4c041db226ab611b04c3a80fb5a7f15e08df3347def02663aa39409ac4e8c8bb0934b46b6a8816cc70c8c0b11a7ec1cce57bf5baa30e69207d7e59c9e386d5cf7863c133ba1b510f5e06c4876ba7849611bacc369b039efe173df6b8a22469e1f200f2aa53ff84390b88302d9f9915c4b8257754b3423097e7c6b8452a77401c4e343bdcbdc985b70189ea976e3d65c47649593c9cfc112a4292238302253118cab8ec52060305392e6a131f0445a0bb4e11a1a8d7465e704b3134c3807d9be9f8b2abd57a00758685392592fa0b01e116410706a669a0ec5acb524d1561a265e307c24068b12897568490458121c572c2cc43b2464f2703212641202a40b27a41fafc4b24bea9f26711f28b1050645a38757708ad607ff6763f14c15a2caadfc2bc4d23c576e5cae6a20b10cc9cf610a5931ab4c59ecbe67ea079bc3911a96b24b86a0d6b99cf85aa44094b0f6c55924776c4e1bc9cfc88a127b8195145da3515288f933da602f1a2747a6856657b2102774bc1946163b534d02a1ce2e641cd9fc7f7d48b6f643ab53045bc690a249433553845b34a5953c873c1c686c83ba46acec4e91046f9e7590196c9c24a747c6d986b4b414c223a52a6c88475405232c78ab3aae8861a45a817ebb16c3a3070b8e842527e965013244fe50907bac3883122393340b1e06728fa0400791b1dc3ba103c8aadb6cb0328b5efbc85694164d0934c207b63614cca28eca71e5f63a58604599eb6d1d248a37ebcb17335713c4c9a0500fbf893df475cf7c19792fd56fe0a7505de0158f34603e0071b2aa0bdc8a12376a1313f571d33686d505660c4bace8ea40820918e05bc15b381b90d9b31bf52e1b18c422c3935d04140170542829cdcfc883bc344606e75a2ee7af469c5a81daa1071771fff275f2358472b409b1ec31ec887fd6e76ceec6812d40ba4469b3eeb028a0a6875a19b7aca51465cc3fe78566a3eb1b98c621eb3bbda4e7beb5f2344b64013ec233fb5714bc68b767da8b60a6b0ffc8565369c19877c16d7c70f17b85f7a228d28a5936968915d026cf683c762714830c1742ab4dff789f1f43782622a070a4ab52633efc52693b695dab939bc24944733905ae86801c4577324c625159b141c5a1014a6e458b71a959001839c461e17a3ac46da47ab687d2342ff63b83d3331510c98ac484f44b7fb6a31f6926cf047982c400008bb3b0d1ebba3cb2345613680531b0708a64b937c88b2985c01a10eea22fe5022912f9ad2bc667cea16b0a091f3fa9bbb9b8c30160717b21cef9d74458241beedc215d44900cf40709f6671f221d39c804eb6756c812364df0503355b8b01102574ac3f07234bbb1b658ea822d52a452545da3544c041c3a3f89ba30005a992b432178bfba078686a07971601f8b12c22b23b69c05a89adc2469287f052a6d4f58798e10a464db4aa71ab30a94854d1b8c16893b432a8dc2859c66a168c8c5ad4d04559056c4588b0a8755013e378545b47efbe90ca97552c9b8711d3281cc7b9057f78a68a59d5aa642d1e9233de093df5705d8639d702097f0dbc98451a46905ae72d876e1243546590599fc5923b37b4cf0a3f7cb47dfe8af00f6a999127a256681a5705bf5100d7096713c49149c7c561c0783e048cc3444776bf8997671970535c2cac5360c9b53e0d952af348a28e4826db9810f07110a48771c2c9b21da3ca719c7a5407b92020aaa0180b4d6b3ae42a1c09ca38fa59d1ed02a3a0079f2e922d0b36d9795c1fa42354ca51ddc11a315515a45bc7e1e21bcd3287e18bb0ac3f8119a88d1fbce1d3419bef67b6694d9fa1bb309cc61c819176964dca19c2c9c907b129d01cc44a95949121c39534cc98b6d105e60fe519a000cc2aedf05318b5f655efe36f1b678cf4b875108a18db2fa312261caf839f84bd956c5 +ciphertext = 9ec0cd62bc32489cf014d70757b26fb83b3bbb19bc0c216f48829326dcb00b90256a7a5c4929fe9aa669803594abda4d1daec5bc98176a0cf44d66619dc04ee086b7dee5ebfec9af3d77b775d88a0d458f2a3d5f7517a98ef5a1ccc287047250d7ccf20be0154833116bcc1974534f3336441fb7e2185c08c6c79a4cb12cff37f05473a508dfdca60d774b4bfc5a52f7338648a8b2e34382c7d909ec79c620f5af5d3458985ea89c1316ecb77eeba08a0b294744601d0ffa16608c76bcec186203028c1bd5d3c285052db30ee906a2183194b790f8fb6d7a74ff6dcd25909b93bee46af942cd43defc71c7a70cc64a146f43546d03ca0ad34d8dcc4528a8f65d3f69fdceca37d78359cbd76416ee442292b3430170fd589eb8bf278df46415c740d31624fab2b73e116ab8b01f61512de5727117818598470179de87f9fd007475eee6297fae76e20df24958782bcfd4b4c3ca2e80de164b41bbf304a31edeb81906b22f9572e4411985349e826f6f2c37d5668f93e6544dab78cf8d4787c1234a04a98e8120bdd2ec23cd69f2f2bc42877091cb42cc459d5ce7a88d19dbc6b52c9783e03931d726219cee1be57fc4c4032143a7855fe1df7df26cfd815f8f67942adaed372d13c55dd90278c3f3563233cc4441a261908cc81598f1ae3812a0c312a6860a35ec0c80173aa24d7ed55732ed793fea7fcec59b3b355102fb286029d448c3ef5a39ddfda82da997782e352b089724bd7e570ea6b2314e30a3b075e37c16e289afb3c2f0eca3577ff385b9faa733fcae2ae01d84fc685676494382cb25b14d41c0861a814eff00ed266e3c3d1f9e5f6a3b11923860ae71b0e139fa3c75a93bd9bfc4286e3d432ddef5a8de2d767cb0fedc1eb5e4742aadae6585dc8c726c8c8c38eac111a3a25e008045e11668bfb48f940a567f80d6f16e03ecd19e00ce59d1aaacf598df4ea754cede6157e5f62daca54f10e8172b92f0dac2183684dd07308a5236c480e3a6a5aaa174fc0cb166897641243b6401ed5cbc31180afd3f4fab3f9246812c5a5382e00ea1cd89d67ab1c3dc80bd52070f9654cb0f9b4c9f179aceb687396cced59ee20cfac6372aa759e9423f1bd96240741bf34af940079840229a120392c6e01a37bf5c24d026c4ddacf9c4a96364dd985ef98da55ca7780d2c75ae85ae08d462e54d2f0db2138e9e373bf65896dc2967ff481cd2b0f724f0086b932f728c201463fac0ab083d4440bd967d4929b7fa19c3a5f2f9b8ab237722d9930bb0f31b932c5538725def050e680bbe4b2f92067e739897d6d860a8087af3fd4faa34d09a9d0362edb5374ed988509ce4a61245eee1c1c531e5e72b977be3992caed8a441ef8ea849ffd4fc2efa3dc9f254d582389632b29718f638a6ae13ca506f117bdd204bdc2f1c07a182b1fe44e5b0a5ee3833b8611b0da300b28aec5d798aabae37a97b76a61af12cd82b017c2e2503e9b1c56311fe79e37af0b881106764fec52e0b1724f3b371a90f225bfb1080dee64f4d45d7 +expected_result = pass +expected_shared_secret = 24619bb17c912fc992bd8272969cd5b6fd6b030122ee5af9365cac8b38e569fc + +comment = Official test vector 16, seed: "9debccfe818f6b5204db4ea09c03ec9a19dcf1629c1527685b8a29776bb1daaec45f8abf8f0adc9a8c8bd6e2df6d8048" +private_key = 953b6e6f452ffab6b9e27b707f600992e228f5fac92680aaf31300154b218ae51a012a4cf53840cfd714cb63cb4c7aa0e8ea6e50803ca370bb38c7205d9365448b38308868c83348acc365be62b4fa763ecc5112a48558e57230d92b5869d77d99a5c0bef49819500b333300910117e05b082d15368ae529923c6bc9d3594ab33c91b81549829a2ee55ad152493e80aa80399f770899ec05417a698e6493aa647691fedc92854c23702caafc8ab3a3194ce8437b8e2a7f69454adf3170c282972abb93cf152dd85587f6272b0b71590c81b3a9f680d19445fff0c395310a17f55272cc3e1364a9aea7a67af4561cf10043b7b7eb4ab0791a8d62814f4b6536cfa69ca0493fec1a53d58709fbab9c87578d83c9441d62c267e7aa4ef0afc7106c9f834a5a13206c4b58d7378af90b85f7e05237559d6d7819f455aa01d68bc297a8dd760a0df971542919979218b4861a49e45aab12be67080d197c25ca53483d781ba27893d23baecd393dd1643dc2a53275c84a19900b364ccc94a8ba3b5768f8dbbe08a7b08fd2746bec62c98c5e5198695b12048ba5c98753aaba88bfbbc6c8de490afaa8343d334aaeb72532c63d60667079b41b6a287b04c797458acd9104c94e96bf18137b0868737dc00a8e2164e0980b9b2135dc7c0e80e1b930c22874fc2cdbe0b5542732e8fa80e407a1a6e5af0aa3168a963587379aa3e6a2b082a8a35604bad827bd6aa1fea76a608100ddc40b17283eddab2335b8796dc1bb57887787a4273c4185867368be581f6e5767bbf0580f07b003556ecffc3ae336260fa0a80a2c9e4c9914144551c89a9d68373ed9c7afa83c75c6b8affb54187d3b46abdc61d9e070b5584be7564f932985ea4c739cc906732a7cf79a65f0f7b0682caa5d2070b3e0699b1bb3ac0b38caf22ca4db9472d06b02954e36c0a3d8890473588c77e43990da1c7103985761ca711109bec0b805607d732a36baf897e93c6d9a988b94c67a4592b7583126fd452ff0b45a033824983715c60478685b9c2d013d41b47eb342a05fb76232554df30990d6f1b37ea9172020c66fac8f415615ebe07833a2588ef622034074b214ccd9395648071821d1109daa87c0e00cd9573254538ec3b8459ce56578c09ca66a508e88c4dbf6183a268b86fa4b7733a8cc89ac81619af8f56d8adb1f665a7ac413005be730aa41cef2b06a7fba535552c8cef73e90a8584a8b799c323f61faad4b8c25d06cb883493147069eb1c9c8fb262b699693d0601262e9ce5b383a0d27c1572c49547bc908c003490827343a690859a15b20119975c35aa991183052f117b53d06c5f4683d19ca5ba6f5595b8b269d96c1b3524cc8fc6eec750ca33b5518603f59b50741d246642bb88ef61a8bd4c54f48af3f573d4cdc5143ecbddab5a281400721544e16e35ea7a05f161003a6c3adaf690189bcb074f546bc2033b1e8b00d56cf32e0733dc81d05eb358d148a91faca963b814a9c5fdfdb4de79b729dfc26c3d9b48a4730337b0bac8c2a3628268159979f6b10aa9ab90adab98b9c0928fc4e3570ab01f02d5a64c5f605596e3498ea532472760f61cb2eb734c174e48237c656636645886b65c566bf95d927a16730c3d8a8484295a1d995716a3bf93c7270671afb7886f397af65f5bac1b1a1a49084d1a672a1f98bca762287e90410ab01098c74869b42479c2cae5906ab354970c05cd256514f5c2e763230b6770884e7b700544977993df1f57969e0265fac4f474b76648b36f5711163638069820232b8a64f16bde83557b0540405d7987cc39069923dfa984ca4045999a77483e04fe6eb0be954a74c13cfcea79ed0d8124b01b740a26ed961b2bc496cbdc539a10b8151e0078f66751fe78d2f3a5100761c8beb514923a7b4f3ae208766fd852222dc31fc1a59a883c401459dc73468eb35af61d28ec1da147c882cc7f5ad5204bd8da270e4c91dc37baae1811cff4cbf8605bb48ac8585094327a8c17527bf5b3968aa268e152b6896a288a9722183e199f608cd7a412ca949113e87a956e4ad12737d53c3be4752533bc755f7a1c4b07661e988210ac72131b4496941893a9c6f1180ba622436eeb02f3a3a090c00b1ffd310e811a7a8b87984d275d76b0f99abbfa45cc5096a1562a375f0599d9698b18012a84a0628601c731ce1ce6824907f1b16878a75418c2fb0751202fcc988779be2326e2e5228c9493a0e628441b13d58b3c79df34b7b53c7be816cc7368f2f31c380296250b33269158c4f9706d75b3b5536adfe5b0bcf514899287b4b637bb4249db25a0413533d628597ddd745a7f5270d136763e48a517ca62e116913350e7361580cf77bcdb5b607b38d49e1581654a61ad9602f4415f484bccbd833255a29d2e76262b401f7fa5a1e68bb136771c41b29333b653602b79a2aba21004e8a257df7362163b6512eda4e1376aba1facf04d1aa56c814000d718b5b504f1b9d2e627b8a678d0294c5e3b186a67c082b90abb1c839232912c39c3e02717a65e24a185a5d96e99851eb538a4ab872148c2d7bc52ec4270f708690d0678d43c783ca194b4aaeb6f2156297355d7823e0f80890608768c65073e04e7e5b45acbb1cb6446483e7c315a0a0c2066f080a53818a4ec0e4973f630f6822a437f6684fc9431f20a306a055f9906435172699b3cd0d46457be26560f692864a97f80b493093270b5225980287f1f5711b355f9ccc018d670ed8ba64f10ba98b0068e7714074e14736087819ec2cbc960fe6939a4e9a4de2045b53e81fbb845b0e546de6b34ee9e91ecf0c9f74c569dec949d3ea11785639126bbd45137021e9670735488e46a325342a2b4a959297816d1ac731cb501d628bc09083ab5c4dafc09a36c7c70f2885a6622bb7162aa2c999927a1fb749bae280237db21418e2cec419990288b813e80765b47e4c314171b849e570c7533cc5bb77cb9f10272926c382fc0796f39924b6971fe6b54638c4cf25318e146aa02769e64c47e4da2d5264b282b32933d8c74242aa73c15875934e99d6c570572e03c54e47726e3b0416d3737a29624169778970e99de64bc2b16039ae97c7472a41c9a6c6fd45bd7738cb662505bb26a307a2cfb9680f5cac086f9bbf7799263c0b5367032196f1bd842534601094668a33bd339db59746d63ba6007887ab750f5887453e02b22c3148bf6c48c806a94cb7bf23568789a1260c87af0548c71881401c565268317756a211b6955ed03c49e0beb46c4ea9ff7be444932e61d464966bffc96bec0647ab34f2e4174b6e7542fbe80ab2bc06dfb802f691aff147ff90332d5ea739216c18d872df7d92dda83e6b2ef4cce08c9134563063068a196d7b1a1a13623e48ae12528e +ciphertext = 7c8e5f4f09ed554cbed6874d860af2b8fb97fc6de51e23a003338d67723b50616d0640c2e7e1492cd5251b0e4f442db191e500b3fb6d0fa76e6112f20eaf1e8f66e6634de166f2a67ace1d95366bc124129a016f6a4d669a643d9d90223b8a8829ca2314e88d76ce49a05e15121fb7116afe19dd38603e994f207e827135be71d62076b75453dcf6588b1a1c98ff2c517a4620f5d951cf06be81f28bbfcd08ff396e1a0894055bea6b7ef41a333df33e5c24cf30da5d78c5de7629cf8bf458255a3348f67127ad36d71641fc7a8bb9bf38c4706afd14e9de0fcc798c0fe35aea08343936f552a1dd7ca42d513c2896ad762fa4c0ab737d94f63330d47aecd1ea50a083f8660a797a9edb47ab2140748a610e981085f7dbe268e25e9b748dccfbdd9c312bb64f41a143a2a7f6e8d0bb7db83325747a414240e9316c2b4305940a42fbb9d5d7b3d0f593f63877d7461934a9a125d16673f288e828f17ffd75c0046564f092d47e99c59f51ce741d736cc26a35fec6d1c2ae909d6b4f4e635221139c9e6ea9f1b1135031ff694e3e12503e6315bd9abd54d0b4fbc9da7d48463e80ae57d3dfc1bbb468b206659f60772a2338f38b274ffc0d391a103e0a1a50833218d1165ea4e88f07782b1722fad72bc409feecbdf6a0bf99862af673488d3c39e9b343c35a5e6fa14b3c6893e727347bb965dbd9f8fd50b1ad0f23f7d3307f650ffdb5d8c085acdecc4c3ea7c52b1119175721f4a382b91c59c26220e40fdb57ba76f44238e1a77a062025daf823219ff117202f5f8ed2789b2b9e80bd98fcb4a4f42d006e299f190836b7e3f3a66e7ba13dadef54a2e5029bdb1d0f29318c3ad3013ce6793f5d4bf15c70cf79883b0fd455e9fb6bbaa0651d72596bf2392e38fa140cbe0f9e42f0beef0eee3263642a52f04f345c672560914e80ffa70b4f2700c8823a6c3352331690b54b3c20320a8a810f4c5f0a7eae739e343a93587846c4acdd4d93ec3e48e9c4e3728701ae9cfff5eb219cab6c50ce52ebe263bd54d29d4e785d80ee87cb4f064d2b38c3b2090329124ee0c74e4e7b7779769b14babd36396e1eeb8614b3af9f8867dc8f93c46376f8a5450a3761d6f4b7de3b4108c080e5e3c4c9628f160458774f0a1994f9ef5ba86933670c800a9f76866e38210a0e26650dcd110ad5f0f621e1c6cce1279e2c8ecfd4055d32d7b7a910eed993222cd2dc83dbfbba7d04e0121a849b545f646ed140e7afb1816982f1f2d8c6549f9d73148c5adeb3a30a9f3a459d3afbc552cb999bbdf104003955221fbdf7f6d06e9087e3c4ef49104ca51510c544b0abb048d1345c72d2c5e873555019487124998a67821f119ebf6ca973cec4e29bfb5704c92ebc7c742870e8de0f5811cff0107b168762d8051551133e3597ef4d56d50fa9333c0b5e6ace36ac36b0bac6ac16cec413f7e9d449f0ac9607b52f5a43f33921f3f226eac9eaa72ec17f0348b04a5191adb2e7571a4e1dfb11a1e2f731c124a6246d94bd253bd88296a9e60363 +expected_result = pass +expected_shared_secret = a990af801ddcf2009c82fe657fe3f068bae7e6bfc661e3e588354ba7d1b176e6 + +comment = Official test vector 17, seed: "8098ae7a92c10f707d405f7dea02c2efbef44efa132ba8aefe81bd45e543ecec74f10920ae48a40b0653d63532517f2a" +private_key = 87c0b4d44cc9eb48c126c5877ff87929b08485fb81e479139c3299c70c43c3fc8c238a81d4e61e62a33db2499c866b7107d116b7fcb1b0530a7e758a8d487d11575079265b3158302a23732bd07330071bd7cb7199476c39b583a2446109e99fd5c95be21a292cf37490906e84a82605b8455825c82eca4b7e218644460ce581214c78ac4473688bd6a9a826217490ad791b7835a85935782847981ca97b6dfe88b63701cfbe3929a2dbab1628155506c353639d153656b90c5aff36baedf1b87da5bce2a108fb6c3b29e77dae803a0dcba48ac6882f6c1194e88387f30a47c27d02c37d988346a2a29584a55cb5d3c44c05a18619a4fd412babc31a046221b3994c8f22ce272c9e6e948c3d043295f413349796c38911f8dcadeae47351c15e9a1743eb65bdc7471f37fcc93cec867cd4808ecb281fc17efd004dd64ab432d664864b43f8a9b1e763529ae2c413abbcf30a4a478a30a0104d802037c4a8af01b534dd600e31a1630ff13b2f730924cb790166af3b7322baf4409cbba500c1bb32894e65445f04e4b4b4933de51267635037faa44e2775caa4212f4e0600e51069aba662c86145e2117347bb1748d63e412550c004237cf02b02aabb18d8533d19b1a879a079b31d529aacbf5258483c80738b380c83119c12b23cdcbc7d027506f3705ce1316dd24594a4bd32d10382f8ab47478f23763898398d7430264203a76b0c4455237f3e765ea5516388595ce9e2bce2dc2258b5b96c782865fb5354427a2d7806123b0cca782b1c329411c6c133934ba4a959da88a072bc6e2d63a007572e36b82c5643564bec47bc8953d4aaabd146ab5eb36e33f825fb9ca01e223253c320f76c98f810ca52a2c604622f7a60378809a59b19680aa69eed2003e272b8a1f3c8a55bca129640c5a00d187bcaf465204c73cee66a2feea414f02859c9988356d26665196674d25e64cc5689965cfdb2c0e47a531ce32b3daa9c649954342a3f62253fdf826aafca7dc85a7a8e15161435212d7a4a3bd4b57a2ccca3506999d407d9b6abcc97209fa97454b0974dc2c7cf3c3fa40306cd6239dc450536974a8ab773374504b9889cb42bce4ef4606bdaa559346f18d087bf8b7f0d9b21b0c9b75b5903194b0744a1c47483488eb4c1ca2c83d8198cc6a523d9329f6582863cac2951268c01770a8081c1c26587d7610088e6068e020e10472c825c395ac6783f074efa8597feac3734399bfa247e4e1531eac70fe49355e44b3ba5439ea1e65eda94485fb710124bb968490f1c8b68e87a4c4682156fc06a33275b6b202aa0d508b3789aaca627f0f0c19026cec38a95f7547d936b255be7a7525c97ab4282714c32a23c4723a82298f2ce90fcb4761b9eee869e4d3484ba2b222dc28bc612b1f41607cf57781990009f29617549c0b2179705a34916db154aa3747867c3ef6a0693bba5c1d42e14b3247b41059f92607a60afcdecc1c6f3839db943f5ebc4d340aabe21269095b3f7d9bde9ebc21de788794b63e1098cc2903a83ca2027e8bcb78b855fd56fcf16b45e47994aac71fc815c521ac1a1b697a18569ac2816f52640cf9059c4eb95e6fa1b32b77bd7cbcb6ab384de74b6a2708400e980ad735e9e838da63ac7a3e1cd3e574db17c2601d3927cc2a9d228a05f5c1e51a63634383ff5e03151f43c66a07be9e992aa65ca4ca17b1e021e06b261ccaa89b12a4916a5a4e39826a94c86bcba9fc7d65ff04549db70b300b1cb280b3a41e82b6c8b0a4a3c5e40eba59fd18f004ca3e4c15bedf22e099c99a3d114eb0c5988ba02873b9581107a23e54a8e51ae62375a887929f7333d4d763e23b20a246785e07700bb16c531692531433eb6a6594d1464bca7348022c1d4219cd8aa6614862c42376c3a0c4674181983f2a2ce8b7f32659ae87accab6023938592e188a3c1015e98720eacc9aa837a49c4617a850c89e1212478f3c6bba51c30a64a8a1c225274c92ea953872342a96ca3235ca7a9467be55250796126b30694f71b2f75b56d84ac89c4b635118145c7b8967de515ecc719e35804194b7ea9304636283cbf72339474ce1da00106110a596725574747dc07b3f0c7c527aca703cb23baa080bb7a4cfc1009b3e5aa89659121e365fd6cb6fd15afed70779a978b3ff50f915b6c16a350141721efd61085189c3265530c1a17491b317031b4e4667eb8314ad34cb7daa50566a9812377cf24076fc3dc748fd58865b1b02dbb831b25b7b7383579376fdaa6c8a5323230025a4bc66977f6a458374faeb14e47f70e654c42c94a5fc5e386a57abde3f29349623e4de92f900527c165870fcc26a2f95fa1850f2c940fb7b87686e253dd54b6706a84a0c70e3ab04ca8446efb77609e9815a261af5a135836064d44a485b5e850f10153653838e5874b76568516e847a2a9b186e8a50c34c2d2b0839ee58024211018b0a13fc781623cc313b30c26a258106941a66b3cd9481aca7c7e3ce3202f098746c42c58f4c7dbe52fb5f606fbf31b9b5022e691cbef1464f6942aa503147eba081817ae28581ecdd867a96195db320bd2d91c36db01ade9affb6b00f86c13e2e252c988300b05afcd007470cc3022e96af0768dbebbcf62b53345b213c1544491f1bc75ba96bd73be57a2cd6874511b44bf2dd27f4fc87c167815fec59f7a043f699ba4d23400886a7214160c23dc96056bbcc7007a0049435c534b66971e6e5c90effa6645c45031c0c905b9887700181565b53165bab605a51bcaca0dd0c308a46432794c38f21e04172005f4348211c63a40cffd7c32bcd57fde852fec793cb7013e74504721f6bfb7637f73319f75b08e3c25777c969c6ea000c9b79d6f16a00cc4b00ad7ca4f8704b2e54d9d27524f6b80a6d51f85447b22c29af0036c6ba486862c8b4fb03f26042a0e195a3e91bc303770ac844e77805e41ec6aca920ff3a1a3abe81b598c193723b20c8685590131da89c0ace08a592489791911c92c7e6ed55f642caf918173f190b2fb8cc0cb2139fb6caa259b5a4634cfd0a532b719903e32831489a2d390b4c5a5066b4ab5a3316441b162407096a0bc0342599804752fd4f21c45923705a7a04012ae4a900c01d584f9f41676c36681994c2f4037bdfb84a69a81fa561e5be05777b571922988eac714ff249926fc9cc4e93666e198308a434df74dff3c5a440948437a7c500582124574ae225f52d322d0909b5e946a5e22ac8f774f69c48b7874417bb1c0b93cc0a90d2a9640377808ccc2673495c4839fda0d1038b27befe3d22e2b727a2006a70fa33ff4a65b00553734c5bd8cca0a65eb3a115d96b8aa90f8fdc5f8f40f6aa3e88f7fa8a96067f8cdaeceeac90c2d0b5e277e56e9c405ec9420c30252 +ciphertext = 22f3f2214b8b2b7fdeaab34d714c6c4a7c474464bf0229c2c7f31b323f65f220adf521118a41218c92f737c2e8bb753d6e19649e5fcba1f5c821a7d5603c84400015986d669ef0847ca0117f03ad3ce2928f3b88d079ad95ad6396afbeb8146131bf4d822dc4dfac100f23fb329e23f3123fc4bd0605903dd911a6f9c092259a167445caab38943790b7556469cf37c07f06d604906d4d10af9370dbd8a2e45ab870063ddf1b3f24fac5c7b5b348bc6281dea95547c84641f697ced7b000334493c35df845a12a1cc3d61efaf5a84738c2279128485759c838993d7204706ec6487010e6935d71319ed2dadfcaaae323aefdb7fc4ec8f121ad6a3bf1f31afe622bcbe17ade7db20eb98ab81a5fd91cd22fcba60176084ad5a51aa5c786650fb0eae9dfe79f74e919961e018f1718ac031e46fc3601a6ac4f83d3cedc66225a1bd7879217df9b8fc3dd0be1b9992d0bf7c8b84854d0d9bb82813f3dd74a5b7f38d174d67a00743c4bec322d6fca86ddba4fbb199c5d1a257b5e94b3b1f3a5d8a3b1fcfc4fa56eabc48520a2db9291885d912173ae0bb798b9b5ff15298cd87689964a5ac8283b4d5fd11444ded04b8abbc91727140c93acc3c817cc66176ce64c4b7e5cf3d5063050d28ae924103b0cccdf116d72df01d2b492524aedda5522dfc54bc83912d18b984f7b3e5d5b1bee11e352b44f04f3ca3906cdfd4a08324008665d712ae8ea746cd4dde1c70f4f4299a22ecd16d17d5f66f1060311a378e7b8d7e20d1d7548bd902ba9f4559d5f870d587cfb4a2f39d41743e7610861d24e8703ca8575228ae41a88d3f7d5cc496694873e5fac388cf3c42655cb521d4680ff42a12a6e1f9e4f6685c2a7e786c1ef26fd6be01bfc37ad8618bd799bad70fcc502d9fe543d91b47e10a58a1787a2caac3cb38ca418323ca97a1c0d4427fe31ebaa4d548ffd41e696a541eac93baa53219944510c4b8a891d930d656e66da78d5ee1518fffbce85cc31072f234a0584c97a193737f6044a2ddaaccefffda4ad055f01551cecd853bba68d85f24037d8e34cebb8d625c80b5602a3c6080a393255829f94dca02f7c6f31a674cf37307dc5eb649249236cd8f44281d6becf64f9d301dc2b624c6c0a7ff0cb38461510199b83b42d716c5fd6cfbc0c571bb07620ead1f72ed1960c97d76d51805a48bf594357bfb08a57c504983d1cd8ecef8a6e5cccf0abdea45abf78c044f1dfddf5a884ec3182c3884df3c1e271408712f1d55be61b80e9d4f64fe5f3a4506d85875a59908ce0223e40c775ebb258c0cc9169ed8dae85266a7f191c5729d867fc8d6185798a1bd4a6e9f7594eaafd61a925ce5b18f7e07885bb2d37704a544dcb9152d1822c5ba449fe71c499b46a6590aa8adcdc3be9d5c0a94066a53fc682f5d01800d5b7240f2188600a7f1099e2d42d9dbf4e2831c0e046692548918212ce5d52808c6556ace187ba18e0ff1bf27ef6425ac18ff437de794d546334f940fa5f545128aac740fa0fd0a44888346a70f0bb9c +expected_result = pass +expected_shared_secret = 11a2ceaa0c77f0602c4b2be3499e6df6b0339d9de90d04b2b12829f4758afaa5 + +comment = Official test vector 18, seed: "d5f23808871544e9c1d6eace2028362b48e225312f77663e9f78cafeb512b908cd9e25875d61a16ec615f4b8ff826856" +private_key = 4dba785b32456e16a8e9a20fa7536f1b4555a9b403a09738657a148361788d3c358a7baba8b4c58ac979c4f786e588ae245cb0c12c284f848b89585f76892fd65cb906d39b385a04d2f5b2154abd1e77ad9501abac73237780b33c601fac50ba3fc07e8525819593b7d7e69fdea46f14f1128a475e4784af38985501dca6d20bc8dc1c5c7740b33804358f71b6e97b2a0e7350f7608321736083dc54e0253c6e5c5665d0b7e68355d4e98daa753c1abc1429b397da773b043459e5aabd093a5b0210502bc2cab250041997861286924aa0a190307431719588cc2e6fb68711c964fc20393c73b7c967c603120a3cc11b2efca3dd6616d0e2c835fa92946a40c4cc2f4655301ecb09424286b3c7a07ad3c6ea37bf6132aae2d9a335e34b6c816d93cc7ede020ab723b272b70f494834ccd93bd7800bc39919dea4be4c585f827a4351e233026760dc83377329ccbff180a562ac50833c0f861e795c00ee74b584f693222b28eefcb445f19b06154abd0110c6a017ed525b5fa30c64e60663573b8691ba68e2bc580157f1c66ebe388aa2747c50919af644acd903a801a5c04a6a2eac686c89835cf59a791ad5642274a0f78244491670c66c9bce24ba5cf6b86967aefe6728dce8973fd29045db844dc80022297cf530c8eca4808f603a90a840ad70a803e6a0bfb44b38616816073c5d7ba26a64048f81a3bad3a0c9cb0672c7466e38824529298a7c0d82940540c312f429411b403f64e419cf720e1f73026184cee538b27cfb91f16186dcd3904ba6a34254155b3cb3157937d5618568f46f283c7c0e88696324a4fd77c3e6fa5b5dc0a13116274e5792fed69eaba973730a79878103bf63934d179143dc23ed39585d40c06a99aee0f4462f123b8a6b539dea9e05117b08338dd6754398e7496f612b4d892ca54a13ec9b2dc7022cf779668809ad6db97a6e8b15ff0a862e664d292c4af549195a23c19e2b9fcdb9b4a5b9ae517873ccc644993196de5c2716d58d50e7cf11558f44a16580c980654c8ca581671121cb2f8cc6f90529c9754cf0700b30943eea1a7b05f0bc8fdc1cf776b0cf2c2eab927dc83197a4071dabfc07f983bf4d2c613e087976eccaac031b88420ceceb6df0350f04ba61ab39cad4c6b2b32503d773a34514b7d5bbb9d5e7bb6dd9ab5bdb8f34a9880c49ab5c40970c435508e26cba50705c6538686249d344bdb7c820a5c8869b371b8fe13922a5af390bbb7b809c392266541671c75cc2b7a7248d0234fca16da64265e5c70257d770d2e9982d5a1c6d19bf0ba48b53ab900fc8280c754c14774939b83c63592a12f35d198194679942ec227b46cc8f353a0547e929175c3585107239aaafca151df3c835e770921e5c9b134ca7e27a18c7656bfd6a4fd2431ce1743576e575dbba8905f4cc38108e3cdcbf0155b5300a100958aa99940bcb473ef64b05baf55e91952c46851d313b0990ebcf2148cf28130cf49c8d080841fb81384e73367c792a11099f5b898416946826714e252457b23a3a1e33a36ee2612372cb2c04030840a87f96a31913a428cccdd2817b38372da4637f46044f2218c28d525a57d9c0cd2864fd43aa5c9a003a09a35ba786a7520ce0b9190b548bc164bb826874c1800980dab529866b951c01c20cb4ad363c681336b13105fc338b1788afbff321bd981974c33d98a35666eaabe3612e61839d6ad65490d71ae992111719aacf12a060648667e34d09343d93db88abc69e0e098a63749bdad39f8c6b93d75990b0731621cc04e6e2061e93cc4b51209ec92abb303bc638c52ab2ae40d746cfcc43b7576a240540bf410c14744f80a442d0555d474192bcd9b187a56691b63965973c7793668682852f91cfbce70d6d4832a1855cc4b83a847734c24019c508b2d29539fd1a114f787285e197b51bc092f80b559446f1076f02e984a1b27cae7aa1d0b50967939aac74cf2335ad421021e3225d94fa3b09148e60c20e8454c68a8022043206b7bb1e799c9b69286509a188db29a9ebb078420a0844c858cf4b11f9b4959934002be0229e714350451b9c2775a5cc8c45b07e121290eee32a73d46f8d7c55311a8c29027356139f153cb405fa14064c5c31060d7a964b33d76bcd4809d21b34a2f7806486bd2835b7f871164ae496d4264f89fb4eb15b7e5a7232b6c68b11351a41b09bb0c92c8437534d2b4c0ca2538023b29df93d93c98136780ff6f82846cc2868664322ab28dcd7279f68994ba5a5ed406d4d717d16c14dfdda58db1524f7c53f3cb170d45a411b07cd64f001daa0ad1bf63a11550c0c154d20f5096db44d1ab0a1c9d66581891a9314c18f778330a0936e7a2f3e19c18f7bc87cf078627770dfc5a2fe71b27eb8276863c3295c11e08703ef4a4ff6b3a1871c7b42c43a6eeb6bd1526aa95b7dcd6b38edc207c630bed1768ce9505544e9053e5c8cbf6a181a1a0f48c8a98b59c3adebcc3a5c99e61588834024cfc71c9dfab1df558711b311404a739f79b45b1a8a7633081a27a08c3c16478c9d24c1229723addcea225d39bde7851345b18b1b08254181b01623347a9a57f5d902290b10476083949556663309059815626c3ccb5302b978b2ce82af231934ffc7732352b990b21b69210f2acc048387b95c346974c2181148078154416e08564d664db3045dba82c9a7934de51ab5c1d7346a391baca48209c8c7235309943c1cb9cab4771c7eaf59321b510d430c88473ab16f54ae461a5dc613c6fec61a5e899552e835eff57fc34b7992755d178a0365c52b3f020ab40020ce21b45717654634606dfb2917fcc266193e2e5b2c4559cc5652aad1121cca0711e26c23eb33c1f7d389f2d742f384725d3268f8159f8c463585998289e58369fbb883caae21b87139e52d7ebb92b011cbe6426390458247c45f06f2519ab35b35675bf93325351617ad3ac470f73d3d3985e10277a647c96a6c56cc2346563cc496db232fd742aea3adcfbc506ca8cbada7b040a04f6e329fcea77bec0683e1a87c396113639159d9ca52a5a5484d2839869a2e80557a6bf7ce2ee295a464aaf835c542457d021c65c2b2a457c771fcc47f8b1056c8b7aa61d1843a40c4c9b083269b2e89fa3ba5959f89972805fa4b46e35abef0c57d875c54804de77071f1219195bc8b4f7c18a19a7953573e7f4157ca03be2852461a784e736110157ba3f83a6947aaa09e9bcae730b9b212bb837627293a485ed6b42ca1cf26792676c1f4bef1609e71524b877f53fd3133bf71ab13912bf37c2cd7a359eab035cd631e1de2556ae65d57e600c21e8e355a4ed586d667177ca0b7545cb5a23d669f4f3029e1be4e1c0258c3a22ff5b50b2674cc094ba7018da2a61569845c17d26f +ciphertext = ef721977b01338d0f77a3f31f04fb6dd98be2448a7d73e426cbbc87c9eb56ec0a36df6d71a95516b8a6880c9a722ed440407108a41d0dd34893d2a6f243a28d8ca9920ed831315fa207f059c0841e6d2d7f9c5311ac5bfd74a36e81c9da718a87d208c2eb4f1c83676216178022a27a04ef6343e958f206d22a27f565907cf39d521f5d0b4f7025f37c228ec396139233c4f56abc399818001ea2c10a15b4b46bb348df15c2da0ff6ff9851336ac936804a27455449d21822090e6a8962420e742a7ba41f058aab77556bc2be4a59fd6588246b539b003f90efac50784e13814336c4b06838dbba07f6eb287b850b05c9e4f7542ba1412c9e7ef5af7f8cc8f7d3699f9b32db4623357a24e3557bb63612a2705aae3132be9c6a1c143fb52d0d87530654f1c890d40a645df8538a707b35d173259dbbbca97c4f5ab88c047936ac72eeaf415d1e5f8d27817a45a137d66e6c25b0e6b2791f65063166042b4e750d6c445a4b5830c9c2c3ee8a879f1685f8aa7deeb693df158a6f2998560502b3882839c1508cb1611af1966f62bfe50b1554e4f0d70cca0eec02c0d295cba03eeea812a031757af2a147925daceb64f7c0a4bdf728a6536012c2e80b486a3ea82c7ebd7b97005aca5bb3e890a9515d5942de00ea502ef13d620b832c7a57fba93ec30b259512c666e3d325922394c1b4fdfdb1cb24fa6fffe747dff802d277370a97f4d0b7fd78a176a6758bdbb6cc88f1ee95639bcd9dd69f56b45e1c8faf26e205563481860e5c3e999354f38c4a34b56f8ae19848e53e1d319b3dcee667a5495a47b9fb79aa137787d2e1d51784ce0b90e8d6040d8da5b9ff736b22c1eaf1da117b258b5151239543330e33e6a61e821abc31352b41032fd51690bcc65b95280ac5cf1bb146d2cf364e1c83e654407bbd3391d68cc494c93da50e360176c3caee6e96e334a868d6ca8a0873c7a4e300dee289496c71f6d2c81ebe9895afabb3a274f8067035ee602152ecad5fa1597a3fb5e356233c63fc9e339a17204ca879e084bbcc4eb9079d7e41154cbd974231cc5a74f1711109dd06a1611f593e0ed4be5e5f2ad8619e16e424e249e3f3d7af016785582db7d228f7139649d2de795b264a65554f55d4621517262595f5170cfc96176e397e84e247cabe61bf60564a3ddd3c782bb428de86962f1b7510d136013a7dcd72a464180f59e23772843a012d03ab5d38dbf96d424fa371c28e7db3cc123304dc65026fef804d6a24c55ba5ad15b3bda23ee7e61fc2555969d87131a15f29ed7a5abc5e715126a6590e9c1960e8bcf9ab46988e0f3f2d58d5a6dec84aba81731e02d7a862350f8c54d48a5477474a1fd7d58dffeb3c2485ccf956c20dc9e0547454c973d6ed72bae9afe2ad4e8775e5a57f6663fb464077cb812268571672ca5d1a3b49fbf56db19cf7289820538a4c426f1601abcec6db5893a394b8b2f99382948738656dbff1a5c8fde40e29ef40a84a6dbcc4f184842fff1bac63275a3127435e0eb400e204e9fb45c +expected_result = pass +expected_shared_secret = 7571990ef1ef7e15cc920318fb75fd38c4ceb9abf7a4b1adc2175f99d1a0a275 + +comment = Official test vector 19, seed: "822cb47be2266e182f34546924d753a5e3369011047e6950b00bc392f8fec19ea87c26d8021d377df86dc76c24c5f827" +private_key = ed55584416844e1cb3c75acfb3771013d1aaf1fb3ca8a5b718a8ce02a15ae26bacc7534f8b084a665b0608780e532a161686b07faa83884c6a0efb490a8a3fcabb50add21f58ac43ef4355246b1a661c5937562fa6067e7aa66978e4b36ea1431ed41e4e4282d4003d5bbc06cdf7af225b6560c44f43a278677abba8c6b79741b3ce7c0d0769ab407c9b39c032f0e42d1866addf2115e2f3336384c61ce9319cc92ac1350b264cbc4059b94372631c8241ca376aa6f76111537018c01d1346019d628f1f00cdf828b48c47cbf958989b846ed893bb0b6444bc2a35c6443f77d757a0cc957716373460a7a94151cc548f0c78aa5a323581c192d00b4d96219806a04b1a0ac829002b7fcbc8cbf8a8e3abafd3dc2164d03a24c19d50133e967c7668aa8b81977b400067fad2ca802a76716b95e3d28be5603e4977c33d3ba5df2446f6265827464641204ed972286b58567ba129bec0cd6f1644c4032edd6239309aaa259a3d997b1ecc535f17d773ab1c5350e3c82c600175269700a56b0d4211dd02c13d4bc7c54238f40163441702613a1de34ba9b0b42ef0a29300098667e8003588577e64b031139dd2180db113623fc4b74e946eef86a1a6bb52764c6c12911765e37a685400888aa9140a3adfc48712688435258d56337fb8d8a9e1f34bd2e818ae3b7480f500fb6bb03bd50019c33bd37b060bc2c45e8a2267d18927c0af66076619889ff6b1769fe59e5f131f5fe40db2815bb6886b7bca9da659935db493ded9a808157e4151b04c153e673333424b7aa939559e4ca973f7644a813b8d9c1db8c87cac6365c0e008e329403c69490976cd3f006f3138114a6b3e6b3c4f054451e5bbcb7d232f285a2ef5202b81740053512f8e4b33fda87ea61042d1f9736ed58e9047c8744735a728b636dba7abc33b2de0b1572a28b23c25a8668cef9291990a499bc8935f955e1cf0301a65be870b7f01f06099192431f3436aa5aa6564c4689c1d2e11540355138c91ba6e0182b6daba0e7a177ff320c6b04977d47da0d51672eb96ca054ad2d4a0f72930061775592aa40e9c9418ca611893044460495d8a46b242201886cb52e38d91d25d7fa8262290628d91323dd2a51f8c7a33487232f4934133117699028381751d8594fd94910ee4115389c57262ba579220567a7b5b42441a641fd6630d7bc06802878c76bb9ea576965ee45acb90ba549a01b6e873a1d8c741662067a116e64c8897e83204170c9bf2676ef60c20f3450804c7a1b80725da17f9db18f715b7894ccbb53321cf01755d168d19a96356ec07efc62d9a8c3a8ffb15500433f915137ac42a474b8e43f283bdb2b46cd62d509a5aee8cbe23b74cd48079d82293bfc9cd931289a0aa27d8a930beb2000acc2019e3cce107a18e9c4408c516fbe19e45459ed77231851b88b6b73156ec820a4c097072c2fd61c83d23413ad510662894daeb238992138f98185042b53a637aefa83378b026fa7bc314516b25d343f0e0aa7772cd2da27f8b39a8becb44923792a7d586631b2ab963ae537768e45961f5f96cb42320e75738a964168b9403d5b3591ac5679a61857c818b2a486bb299019c7b03beb50d2d40a17e84712aac01f1390e49f3b488ac39d0e43292b70042c52355eb48b841887ea256055a688fcac5a71c896414ce75f57bba12967215c50d4b5be692b6dcd1ad2190a3d785c19e283f87f784a03c8f52a23e150734fdd7bea2ab6d122c928606bfb60570bd696d9676397ac3aa1d062ee1ab3922a2c9b5b02d14557164149c62e8029b139e6950b3f8acc9e8c30274b69926c1658f7836f479c8cc70138b829848c7698b179643b7550e9193d6fa87350503c2b69136b08cc298b5c335b1ab95054d13c9260625e34c6c2fb8186e1916c137ad9907c8b2ac9d88faaaa0375236751a47918f96477b7ec01819f8ae1d72951e21608c87532a9428bdf4cb5658440cb025ce3b271652961bd935624b9eb70047e63184b9503adcd057b6744fe42908cfa325e401b9d0db5ada201f5d64350d392c4fb842823895e15720dd7785c7f5986f15cc2565a71f6ca11b854a293c9ce6c9a1f4aa3917130308f2a2aca964790baf960aa12de3334d146e64db81ef09563c9667381424c809441ee989eec93597e7c5b558a89dfaa976f6934cd18b8eacb6f2f54e8f748e4bdb69b0764fd59352575066dc242dc0f1356fab4467c8064fd23f8823148b77a4acc642eb2c181fd5ca251b323561191cb15f2ff0784900a15f67014b518453c4c3663528ffb53271e195c27533fec8c3b159ac1bf39c6fdc69dd5a5fe5872ffb6b2271a09966a5c738c48e63e141d65315051610f0f5588ac97f14100027b144aa23774f199d0d9a122953aca8782a4136820ffbcc1f2692bb919b674aa1f4d679e8418e8597c74d60c5c287cde6d44492411222636b03cb661ad66fb442193690a5f1d6b80a947442a46bdd239fe3989e6da86949474e395056a5e6cb42b25343a7c73b650d843527444243852518a9034b9efa7a6bb8505bf605ec238ffbc08cbee35a94845d7319144b381819d0928c27023b727656ea843140649c03098fe74c717aabe91948ea7698db0a86d34296b5e50dc0a9949c8ba07f64ce60da2b6e62458da229d52c08b9b696a124a8cbb791c0d255d3e4a69ed2c242000dc6476b4555552deab63ec19fe8783151daaf78e561e1844886d4418e7510bd025299b1c83c7ba22f63335b9823043336da897a44fc6a28b44c68a49b436b0dfa406be642a5bd303bb0d633685364d80440cd7189b6b34f6535101979ba9d251474fc91bf2497670bad0da78ab3c13eeaac864572a2f919546a57c719bcabc9dc8215b492d53118c2d379e879234a700638370a530577700982c4334673aa5d71db98627384e8ca876e24b5a31575ea3c334d3c7d3abb6d8891b4904b8f5db93d0531caff25be53e28c45c94758e309b83abc2ba66d98d3bdbc53b7d06592f2712663c777db60aff496a217e82d8272c3a218ad8c8b04ae7c66be35c08e3a955fbc18edd07e8e68a806fc3fe218b87f87bc332b86c2625d8ff01c9ff6214b75a20cc465f847511030b47ea664a75b3d4ed9038a9c747c6872de0a57f3b76c60585ade64570a21cf8548a5be4996bc22b3d16a7bbbd20149034764b820892b9394581697e39f9b35077eaaadb06702968a5e5418983110a97d4749d3160ddb2b9c587767fb56b9ed9bb3d91cbeae141769c2128e0acadbafd72fca96aed457caafaf51dc8c30ceac70cb4621cd4d7b4c87f3829eff562789b3e19fafec92e4b5f95b45f3786f12d9c24915ca484a49ce1c0ec046899a777655233e4e1b5ca44e9afbdc67964bfd5d5e3dbb45e60d03cf +ciphertext = 011f7beb6c4be8f266d9d6baeb2d0ad7c3f7a4257b770a8cfe675d00d80fe92975ede583a59727628ca1064987718fdcf8f8269a371accd47560caa9daa1cd606b258b1532eb341b47963281d843462e822406a41681bbdd81247255b4ce037514695a4a596ad23b493cd368897e94c654a69b102e4aed52efe1ca2407222ea5874a4366f3fb804b9d482ebe6ba777b9d79701dd04becdd10acd05b0b4281e6db009188cc9a0e263232f233091af61005f8258f05e638f7d779346f59555827b92b190829003f42156dd0da2f43a3ab17731f2e15f7207b11f4ec0dd6ad56cdd5b5a2066d1788cfb060317cf36b90ccbcf0014efffdf291606b615488a762240733fb52e0fae719f434414e245eb8e7ce84ee0a35ed39925b233a219d60458c4434243e6575b2a654c4c6dd8bee20302b442201d846261f1476098459d9c2f548a097dc4043e8403ec21f6df98a2f1020a09e7609dba49a5df6e91fbc705a09d39558d7b12ac4092c96de40c18cf4e0d2e0aa575716ef57165d38f8fab47e40b914d75e5f4dd65fd99eaf77296fc742ce9e52728297729f9ccaf0e58f15726b6b664b3998f3eae5db3803da3a98c11149ca1c7c1dcec42f6b2be604134b381e4ecb044be5b1aa0a912e71f59d56f3d011ab99d3defdc09c345591c79295a528341ca533af543a5777a5a5df06527cb961a28075491da67334ca67f7ac1f8b26855ad3b8e05291fe9d401a6d6ef19d3e915235aa3de6556b7fee9c7faae019bcd21f54a137ba08d305ded214c208f197ab65123f58068d9b770f79ee0f022c85a5e18c0f99d96ea57e3df44475746c3bf59ccc5040b88da34c1ab7e477cefb479377844988d1737e56b52e95b02ada15df5125b6a380cdda6331ac4afb8285638465b6231169523096b49b0d13bbfeb905483893f5aec46d003fcb37165dba2dc96cbe7c269eebebf8f437992dbf4dffc7b69f202580b84184ece0ee39b6e6b782e33e40add26469687b05b06a02633316b8b1bc251aad358327f998dce5a95e7bdc5c4ed526854d5f44b2e1c6403fdfe2091f9e31cf706c18cd02d1a019cfd88d7a9429d81405c1be11d57582ea371b80dc19e89a030982177e3781ce086ea0d633f09e11ee5708d90e37e8c68eaa4a419e2fa01b07ba6c2bedcf57b03e740da6df1479e3dce41a7a1b587b918851b98efc67218c19d2cb71a04961ebd147d247d9834cd8c976d42b7658ebe82194d823865cc5cf1125b0768de6f33c8aaacf45ab11379ff8d920e1f1addf6e570c3a550f8ffeadcdc0d9c8174f2cf3c3fe70f17808f25c49eea9ae043208bdf9d5bb61dffc86adf687fb60bf3f8eb289e22125ab0027383fa2fb04495a9f70c66fe5fdcf1bedf9f9b7b52d6b3f9f39db14572e707a15793d06fbaad499ea36505777455420acc090d2fbd3bea249c225403a6e9c80b1cb49d91926a9acd9c66388386ab198421f2b51a04d914738026e009b022f1d4d513d44116bb293e317e22afe91381d64629145a2aca70d4b507c8fd1a +expected_result = pass +expected_shared_secret = 27ba4cb50ae44cd938585e0a4905d76053dd851e5b6af4fd787446079aa5a4ab + +comment = Official test vector 20, seed: "81401db81138d6874e91b7c11d59596e4ace543f5a3471b6fb00999221765fec3ca057abe20f03b2d59003375fd71fe8" +private_key = ffd8874d8b37c946409d69cb03529b7d1a43ddb24792d4773cc723643567671b8e0fc2b903d302679a530118ac453b0541a2389c46b38f317b43130972271d8146a66593b8fe659db570c941f1abb4f295493085a85277062c3d4db168e466015ea506b5b8a805a435ef6812a6b68afa9372776717c1042e24e7a10a842182e7c40c4cc547b98fe007a1d98804ac5bc3c31b6511425a558c73e5b1935c7a664ee224955b6d67ca54d47b04e1622716a27b21f12a2eb27c16d26a541cb0c1ba5a1a8629b7f2222b84cdfed9cb6f666b41c92fd0b074f42b5d2ee72e8c5443f34c5dc2920da165558af074e3ccae84c1cbf1f70624e1a3a30a7db045a2c4a79bb1a4b0f01187bbd8b29a8c60b07068a72264d9b305b5e391521bb945d53ce1d65436441932ec5867549408b47f28d3bf37d7af0df432ccfc3667f4ace969542cd626637b570fd84210b3ab5456b23b8b339f4885e9a96bb17ccf1ca4a962c5667d0c3dfb356146c04bb8391197d54d0f4202f160824d900b27b36bf8abc7876ca331c2c3a8a161d98523adfc1ef9d538c9203a6729cfcf6089f7d72f57093ea3a34113749f23ec21c051ab2c836679b0210a549f2678c7187691de949994a25769d4647fd992be411e24e302c07569cf26c11f3942ca505391a794d42c77da0a324b05908aeb9c70b88b38a95f371b1902e06d071457bbcb382ae4c36f14ab3a747a30cb7e9d35791879873a0333b3fab967770465a056de9c4420662c046aa8ca32093ae23abd80406fe60bdcd1725daab0e50931c575a0c9137fa61442b1101b05686d398a6fdc0bbbbb25a073e99c3702b9268ca91420a1198b5c54501a03c878b6827e6d586ab42c2fa47258d1255711654968fc80e1364886f18e98fc10eb85645b399788dc225b1a233fe564604a86397a4483c102203188df667961bac9ef19b99432475c0a2c9978c81cf5314a2b2ab37479549b14c8d70ed8f0c6625938ca4a92bee5a7aadb286e507ee8890772c3353e35c2de8696041bcc8b81997f8c7800417c91c32e9b8b34b62a25e5c2af2854cf902269c3c5b50a5209dc1c63f8835b3a73137d855c69f9335fc66efb985933f4a66b084aa58909e658998a15ae8b087120f59a00426cf9a327dd48467f8c12cfbaacea7bca7407060c42950cf9543cac1edf9c296d978a2c36aad92b665d6c9513b59278ac1cc781204e555e27f81e976a74d3055a48035203472960e596c7c4c2d0158a006d884f40681c6610f1124574eb9ff5323e10480d0e306f1e398ad1e6cf8057024d072def4719e3a6be9aeaa07b56077be495a635c67066a2945376c9836ebf4c413a05a9b1348c31329884bc7d820a6bad7a63bd62518878a97fb525332433573973df74a00ec02d50198a2b1306005335e6a51191505fb244999cc333bcfa4e7845b766b050cf66607982014d28548a4454f86a06e9321c82781478cb938c709ec5cc81ea1a9269543dc8ebc6d253be1698990c81c587d7263e7445baf53316c23eb8863d151a4e5659928ad704c1c7b2bd2a1987907a05ccbd2f0c78232a10653452e3dabb7598ca83d37166791ef11a2524f371180984bf72a6e2291301606b7351a284a1a62d7b0180596be297a4631abe0d48a046dcc99c8912b8255fc45592a2a61230652bc7c450a674ccc3abb27395738d177e7579afdcc30e74e7c7b5ac5dc235176343cfc4920ed8d9472e13c9b36a6d38bb44756bc31fbab62893656da065901303700a14b2f785d98896ae97953ba358fd53091012b97498cd7516b0e1898e2f6803c5a13d70f5bec346917249940ba35e3ea954f6ca13c343a09cfc02d8e66852c1ae0ff8b22e7424f53b1897ea11268a6b866c09efe8694031754ed1a2a147c0086283284133aa6c324e0b0570469f09e0901f25213ff9b113147990b54cb241268e0b6c7a3a90c638b7c483c71ac1344bd65c988736c4756e0b71111bf5b810fb3cc4187363a94efa020de1c3cb9a005cf472bec5685322faad5bd1cb0f240458b56fcc5a6167f22577565dac1ba9b984c33c348babb70506b87926540547389b805ba01e4443b5d60b9a407f8b060fcd96c4b717baaeb72400eaaa9853b962e8a0c8d966458cc4cff31e960c447c6b205629419478360cdc945d6b9a55504d853c1e51364e7a9aad82b64fc37a02e4139b9e6c392dc83c04005f6d1299d990a89ed68acc31b5d1d224f2c8b3cd5280a12c6e088cc2f9d3c59afcb9fee458af5135c9b4b477d878f34723e3912189d2764f9366ab8752c9248a5684296ed46f404a1739ba72d5d652c614860d41898e45b72bf66d587089fcf49e3b94cd26999d7539c32bdbac0139b20988cc7b578ed880048885355f193ddb1690b9092aa2a86af03a41797120be84334ef25c2e70bfe8e0a658f03435b65787f38bc9452ddc584162955f8b8560991c407fa0c12d770e80fa4a2cf7b853708bef2a44f959b9d05b6faef83f6f41a2454257b0157c55047ae7d0cc17079e118c8a4ee3358d877251970eaf86684ec70858a94bbaa4bd2fd1895c2223320ccadce636c2156471b76c48d53e6a6c12a1317c39c48bf3a0aa0dbc8afc034b43398b9f1c56d407a4b7c2bac134024df6ae9800b230e2592f529f79f0ab048867a349684b242bc4d2284a6106dba36de7b3a114b6353b479d014a69e33acf5c465ced6669b22027d6657f12379abbd248c6967834239e2d3a0211b73a77d681b61892877b7e102a53cb4602e3dc1704ec92a9e260d9817c6393062bf520f7a845fff19123a1662fd241090ac81ee1748eea878d53969fea20fb95688fcb3d235910f154bd09a75556d890409cce0a20c6cd2a59664bc4ecca3d4725910d210db0c848ce7242cca945f1568561bb90d9a4c3dfba83074a16fb3ac934c865dcebaf6fd90d5b458c22542ded5111e77c12d8656908557649e9155a8472d5213b46f739f095b5fd4a2418074ef7db9385f19d6630aa29b28881aa3474b7ac352c5dfbfb20fd7b8a0b87cf3933547cd498256a9e17733ad6967d7b9c7adc64a951ec5c8ecb75b9190064f3a862d10cb5707215f456caa10a2c240619925a140b6cba878a0d40283efb9e1562c227d716d2935e8d96649c06ae9465aebf552d68da1e7991bf987a4dff4371049a0dc9e56f110779d562959f278b069b3c7712af29027aad6109bb0c3201565c0b0892a62aa74ca7bd6b48039066a95dbca4e76a3a323612269546b18ba1bda19c123c24504ecdf72189dfa1cd24ebf011a3bb66d35f78633e1ee7b249ff699fb2f061a75f111f4a7a60195d9045dc01716b6502cc107cbcedf122e8f6196590a2e5c7ed86cf2c5c2a898662bc9a81418720bbb632ef9cf0b845ed052d73 +ciphertext = 800e73bbc8dc491180b29772408aa58d07cc850910a70660127c54207460eabfaef758520f288cfb6b7f1403986abf40fad912f2ad1d40acf9ce8d2126dd59c4148e5483542045aaeebb0fc8a5d86172ff25f8b65db0b1c2ff9b2f7b10f82662ad06e40370465f74c8ab12396c4b7c877ca8c231ee5a88358be2e6efde24d17cae8d8e9185255e173f465a9df4131cdce630cab9dcfc6a84a0ae35256358e643b068c521bb3a3f1a63f751a0ac8a2ca2771a30fd8f11b6c9dff802ed6f1dab41499ed0290beed78292b1ce7807ec6cd25d934efe72177a91c4e3727956143bc3427eef3cd9daebd5d9f84ee6e335b77e2f0aad546b938a6e92504d3724a0de4e8f0d1b4ca83b119d92fda08793635b25a4547d910f2c90c143f891eeb14e52b5874905996cb88536643a64c931ddf8048430a63e1ff5be1904da5b136ee0f433217d1ae3b2040327f51323fa93a20610f273ad3af90d2c649698d524c407e04b8aa25ab6e5580be5025f34709314f80f06caa9b2e342c404679d8a08453ee3fa0b59c0b04bf14998bee7be578871deda59931c4e665a1f624cb181e22194bf5b0611cf6a41f7c3cedb2d52dd30a434a504e60ab7fe4d5238394d5b340d38bbde7260f3743f31b3637cfc6f3c6777d9f6f4dc3977d962a558bc533725f315ac425f3e2104e754d361dd24564aec0bbf5cd3253909e091941e8b7e828ca70e730abebbcfb3dbca1dbbad3e16f0d68ebfbb2b208a177ca988c8f69874650594e912fffbfc02d274e094c5ace6e480a3e51872488955176664dbc42501d9b0b4671e0fcd8e096539908d0147fc6011cef14dabfeaa9a1ca31f3010f17b1960e8233d8e2425e96c37f229e53390d800a6c059c3f6aa2b74ebb5ed654001cb760531792d796711c4eed4584279fc520a8e78995329d2ae238b1745f7410dd9cf0265caef5411606475735a6c298941cfb7ae810524c870d355211972e1856d471a7f928e4bf400bda5ed9707ec838b43a4dc080f2a96600db1a5759b246f7f870add6ea8f91608375976d085a5507c9a03ee3da29d77f4a2b32e51a90374ddd79e331a99ffd0d8458bfb5a65fedfa7196d36dba0f2fc8e04ea9fe8cee7aed584eeda24437bedf1812d30fb096bd5e3d7613d620f93dfcf1cb0cd5968530e6fe291ada0411daac93a6269d66db7e3908e91f4511551de33da82e74ca2a6fea7006705408260d7aa57387b8bb4cdd4809b2b140e264c25daaf9f50a8fc28274c17fe1dacff35b4006e311bf0bbe7ee895d707cbe2f1c46824a8813882d46d2d6de5eb8a4ac2afaf4939f36459f64a7dbadca53e098f44d8a0f75042ebe6ab566c8191679f6224bc6676f3d68bcbf422a8cae661c231c841df80d9e40566176a58d610e006811b8d0863d73aa66bd59d659135fc05d0568f438f82a2d4f9938d57811c4f1654dd127ee06fe2d99e76a5e716674d389c91ac198ee0fc0afbe93ade71540f2ea0cb2d63c5c45aef6d0cef2d624fdc309c7d312a39be86bfbcbea53fa206442 +expected_result = pass +expected_shared_secret = d17b2738213a98f29ee46747c93308ee7000fa404b9a0c1acf3f89654ca2446e + +comment = Official test vector 21, seed: "30b5de5b73681ec08aaa03f6f2d2169525d25f4042a5e3695a20a52ca54927b85f8bb948fc21df7defc3910b28674994" +private_key = d32cbc1116ac88219f9af2c33beb59bb94b372f97815278f0fab2c690c94b8f209dd1575bd7c0bc7f48aa133bfa068cf1af1612c3325b8d08963bbc66d938f46843fee424357e535c2259ed958a75ca6203286190be53a9b46373f8b41cb38c1cae2bcb91898669a872f1a8d9cd21227e42ed655569202cc6b494cc6a6bdb08731cde417f48b86554ccaf953b8fb70aec727085510cdbaa7cd2a0ba853928886332fb1e3a419c49b34ec90fd31b716252acce7a79d05cc04074d69ab3cc9809102261a2191a086231dc70aa583e86912e5beb2c1a22e841f39db531d5c26cc333834a20480d6b1ccf19a654149045791d33b414696375dc3c7b0644626e8822c5325d52ba764f2361d853d244416cb9a5bc0540e1238ccb53438c90a196a45571f743894f060f6031fd623abebb4afea05190dd9452c981352a78e09579f05e24db2033aacfb10d9335986e8542d9480bf5603fa932d2d0878c3753e6524a809324ad6f169d7fb6d9c0264423a632996abf297707d8412a6b86160b69980e18add1c372faa406f540c00ed0a75c3544811759c3b5026e6c19102b7160883ed002de5807b5933934fa01559c4a790230ee93c215bd75aff117d0f170b4feb7aef5b007aca616e688161fc00cb037c8232cf2dca569f01a2e1dc2af7ecb6111181f2ebcb1df27c6ea84251d8a2b6b6582ef915e2b8c7f8fb6be8844478fc570b8054a067b34120b47fc6ac68125cca8514db4540b7796c9fd05523e7014db34b8ec94d5eb66c9f5cae2f838191d2234f43c72262a18deba17ab495b7f0529d89b8e1e407bd5a185eaa2444d20c6c9566526b8707b13bb0cc8d9589773db90952a5cd78e43bdc68cfa4401d7912618f456eb4f97ac1b49ab948592976233f962b1916531fd1672bb69be320a2985b38b80279572488c5f86bf3d55fb9fb90449b66fc874b94292000466786fb7e393765c7057051999711d234b4d277419320e0046ec0925b41d6b89c62133bd2734e296dcfe90bf6344219a6a22d2cb50c75bc02b07fd0da11fe0a0a0b9aad76001d5d7c8fede065dde87d5d47821e756a926638395883879a91b94c6164a40895476269917caeb12944dc956174b6cc5154944571a6f6553f604d3212728fb08af6e8c0ea00265ac0c5464595b31a9131871d79298867aab426d009480c0befc08ace14991399079cb62de9e6bc80c88c3339640fc667ec837b691c3da4556a952b3e63c162ec911101c5a49b35475ae68634a7b0cefccfbee608cd4c43c8eba7a8f957db595645c64ecf08b50c7438bfbb415c27a45ae940ad077e5a533825d998a9095a735b5d23887b0048af49ca85f18395c7d3cd06bb687c92cda9ac9c03a9333a866a9639803c76b5b189294a269f389abb5010789d410b88215c554008cb10274f781ed6b0be3903576cd16934c4b6b65296c477aa174043f06792f3944efd0206e34042d827caffd2989b936b91694825c4bd8b10c0777b11971cc1efb93ec1b3674afb4fd07568ffe89c707b5785c140d51b433b7942d88a6ef9bc9d091472833004005aa803a050ce03b2bb551f62fb1fac6649d3e14f0141b2eaca73b700489b73a8d840834a7802a96864610b10f3576ff861541032094855b18cf574d868b0eb783ce9011f28fc14c486b122cc80093897bfc8ac1082421f99767bc42b0ff41b22dc7b50d5556041338e6c4368ab190e92608f6cc69d8b33f1ab04de68cf96d9c5882c97cf28c30b86924aa57849954369c5427c876a9b1ca341e8522e1357e60a4450b69f150658715403d1e1c957e5a914b9a3bc4c45489053306329c7984e76f169c8639de4080db1671ed01a24724a101df89e45b5b385ca2ef663586ae58d9b33ade9738f84482e6e28909e7641aa673ad772b125161a316166e1717fdbdc8d02b2b2b6dc21805619d4facc40e9a21bcca9d4da71220a4631e95b25e960192a22a39b904bbb02f1184b79a97b3cc16b5e4b5eaf278913b7a195f3107342a77a68cac90c1b5a3ca9b354a6095c29c09c5ac2b44c6cb28a250834d5f2a307ea3434977d0087017ca2692b79008640b770b41ee2c2c77bcc2605f1857368c8e12983afa8633c870115a3818d6bcbcee864a8db694f4b77bcf63a8aec407a45716af6358065c30b77b68c2198b2fb558f463a7477b9fa7680f1e65706a888b8740a87cc7e7949156f896c182b53e464721e46a258820201887ce9b83d43250b63e2ab29900a115084a6e66584f767853b2e684c547d97266b36b6838aaba73298dab79c58c88f1b51113ee752736b7566eb5759cc4dbc37551135bb3c87b1a6c83ac5a38dbd78106ec0c5e9967a6d81139cd516027c25afbb6c47e3802d56079e6265c4f21f1315a96ab994597214b814cc53e8566330cd51fb4045f605df1c7c9c255166651de6041b7fd85c7e376e28076ad352051c65494a1054c30930621c53ee8947dce3c55bd686f186cd5aa21afc17664d36a2d7f5008ae83950b93ae510847552a5c2f761207b0f478c73c4d6313c8acc25b13ea64a72ee3334013cbc0a855b55e88ea17466534786b6176b9053ca9d0494c6b4a940b70b68f40bf570c461f11795952e69f21ec4562dec99448263188ef44e71a1681d626cac69c6b56ab51ae656be1ca028672d97d044e43577f26329d50851b0f8a4a1b6c2b673ac6418ccd58005ad400c27d274dd4732e56b5d7c0b6ee731a99e15229f7295c153aa3a873c20c23a35b6137c824f6fb021a0e28f98bb3be8dc07a5b038dc89944952913af7a39a9b00f1a038a628686a735dbd4c45e0b8bcdc1c1a902cc4d0571cbd589f507a0c0dcb81bd39811e723358d6320a3049bcc90d776562eb34877978c9929548286a85efb85f7c6c76ff255f13a0cf5e70304f1cc838fa398fb34e26ca662759c8f3657125dc2aacdc4615653ef074a784500ec60980be4aac94b0c7a9012dbe73cdbf1687a684ac63526778926654a4ae4cc779a600a836e3273acb95a802051f18af32683f52363572583fdfe30287b2632874cb04832f55e0944712c86d37420137c56f6251a1352ae37a0c3fdb885cb561e63a493a15beb5e3b123aca6b6b7294d8002e7ec758ad2c22d336aae3c067703821842cba2dc0b1b7a45cc0a48202a002f927122c040f84a884c1334c1e17347108b91c055d331c0b170c6f06048b40ca0bed838ad963fb8747ca714cf1d3267b701132046699798421acc06a3bc1ade172fc62123235c2d8dbfe40dd56ce5de6756cc4b6afdf64050da2eecd9953e893c53bf7ffbd3413880d082f26986fcf452a84a8da934ed06198b290ada1789e74d9081a9e7b6591121e25d64010c25a18676033e1d7278ac5f2d0b43a31f3a4156ae710465 +ciphertext = 9aeab84b3e0a280ae182a9ee4f3e5075883a9e22f0aa84470b1d481a7a1c45acd500e666cccfc98f1d01c1f1dd3fabf4d2a60e8a4bcbc237acd856622431f667719e83b8ba4d14da5131d9b377998414f3ae58a98295396e41cbe34a8a3b65ee20db915136097e6676a96c093da827c206f9619d09d218468ef0a2af7e3c06a647a148c26b706507b792c0eb9ba46f0d7e3cbe4e71488f83cec8af88fb29e3c61d43221d21329271c77001acaa2d47f2e3842d221834d20e232a5ba3a49f33f7a82fe0cacd6aaa96e24d2d75f12a71eb10e5e554c98adfa732e9d5cd6cdafd6a3fbe97d7b464b15909499f6dd739de3ba963406ce45cad0e8e25122d469857b823b821f59ffe138a29d19c4bdea4e839e5191e7187ebd96eb1249b50a0f4a8d7e3f4930162d922d296301bd4955c44775b42b8e06d25f731bb18e8cd13c1e928ce58b101ec64d88a643deff0dda247300dc7de01e1b8d1643c471369528d94534fe54ecd90203c7fc680582140ae1abc4963c0158d26be214eba6a262ee6f35c73209f9ef2611de8c37152c9e0f5d5195492dc8d91825593e2af1f348e4bd228ce205b50f24fe769a5cfb7462378e3c6f87e680501991e8ef4babafad6ac15f1bce68d0333aaefa0b8f169a2431890ea62d99cfbfba14ba9d0a203c967ba3ab036f485f96cf2c5f033919a1795f60c5772f0f6677aba09c56bdcb33d44470b02e7e1af31cf9b449056ac3b2eabd13c7ced8472744e4d0b8fb396b0791a956e97312b376eb045d7cadfe03c7153a4efd25dd393fd7a8a47bcdda4d4279183bf2dcfa553340ea026a034aa7e8c755175330fbce7c176b4f4eb45485519a72bb4d29af2e439460ffc08610c3aedd144749bdad2dfa5d674e0f6ec6e3fbba1e96ff5b3cbdf68b187c98ba31d25836e25a82e8434c0b79c4c5121dbe00d6a45947c2f4b7a6d2b04b5f6f1aea722caea639bac03b282db978e98235ab21c6714e7684ac2aebeab9b4418a77277cd3da7abb0a44c4c3d2fa28be6fd30a295d85c753dface9090ae37e56fda6c1cbdc9d4d5eff7388c3b96a909da4432877263f67492c35a48ab28ab686e1803d18009c62599762611df174ca87a4c5381b062731b3bbbcf07b846040bee6cacea3e7a1b3781a5568e7c3a9213320ef4877317cde72200ec9bd731d30d0a061cda0055761f0221a1f804a4bbc23754c829d94df4952f36664e3f677bc04b6f9a16412cbbb78b2e5a340837f587388eb17e9ec07c29745b22387da055e1e0c8cf8c01eed2140f21a28d38441d1ce9b263aed39dd1b20856b69082ccb797848177535b31f8065cd86c73cabdc68000575afa2fe8e5c539fba6ea5af3c017b6e3d0e40bd1e68278a339e49a4541d691b178758d90e3b8d016d89deab0820e4c0cf14a53b281e608c74586be07f1e0a5492e79a09f2c5464374c2f287c97d0a0b7bce04e55ebd3371c5951f46714bf52721706a1c086a1168081fc1d1a26e7c472fc1c13daf9f98a85568e993fbc14b4a635d9fcacbd698600 +expected_result = pass +expected_shared_secret = 954af53b4add522514b34cd2ab96669a76ca13f82aa2fd70826bc8ee790ccefb + +comment = Official test vector 22, seed: "e335df8fc0d890588c3e305ac92c7160ff199e07c85760a828933750e3fed8c83b0dbe802234481ecf890a32d7a2884f" +private_key = 818b55fa5ac30a81891f3a3643924b2b046feb6765a61cc81c9059d1f82f6a0067a102825c88a530d15f0dd95f0b4742d29abe7044c62d45a05bdac46130305e3c3417d67f60b92edeb6b2a398119ad160ee3cb0fb52144435a5bb5412c0512dc6121bf6e72d0f87a3834ab5338196fdc950a3cb1b7354c4e50369bd4364cee9066a221dfcd580f1b914c0c335f547748bb19264b7879f206a9c610573b8676bd0bdfd777a2a0ca5ec891a1317c5289784de114e84c53b983778bf8933805256c9a9bd05a11af8f5ac271ac3f1e635eb9a8263c855bb230f58ea3b7e8287d76258aa57646b97560e593944c4cb3567a2c382a795c991f69bc2df2cba8837c9a3b58a9dac5e4d84b50722a144737ea38b14be51c41cc55c53340ed158ab4a0b0f0a2612962b89cc2aa8b29198f2e04b0f0cb586f271c6414f31a71a45eccda8c597c38415d262571bf0a7bfa17115e0c7731c70c2d01c492c85de16c511102c5a96973c724f3b58b504eb65f56116aa7779b76b2554736d9d6176dfc6ba007a590a311d4b86a7a6251fffe6086ab3319db48c4dcb91fe680f45a9480241242e4ac9861b62860837cc813fadf00751c8021f7a1c4d7a1e5f13bc3e8462f372cd7498197d172eff98b1f8bbc37974b025295a80e3525d282fba8467f8079d78fa6068e23bdbb3349a31506e474ea228c3927a554d7747bd3621a0343cb155bc786075c3015c3692c0fc65b194a12152a14153a03d5147b0cdb423a3b50ed6461813f9ae1fd63ab7a53031dac2d0f87cacd1cb81461c8c08bf367c4ccae7626343469d417acc705546293498035195240387fb1f2e7c005de000e530b9e21cc7dbe463e7d24adeac1127026843b87cf6fc1bb94674399b0636506b1acab72f623adef866f883762b5b4509cbb2be142c5c550046e10d29fa431f9b7d977253928a8d2d4c33add899ad736b40cb4fc656be02d90bf8d393d632a1ab509c432511f1ca16b01139cb0627f6503bba75440414af97a04bc5239567c060ef94c9ba7221d4612eaa640bdbb8b72e32a4668401aa79421ba68115261a8d94878c90a0468510b247968b7463ff49a0578044c5e9147f0739f6a17b18828bdcf56966b1caa125cde7ba6dce939e56d350e896ca6219a6b8947e3909361754593fb8a85e742cacb74e1d45704fa4cfc91c142453ba5c08558de1321ad6a6a2804769a0bf69770a1264ba5148b40a3a9be3c513a382cfa3c244c9a138ea9cb8da7627b350cff87ab064a079876893d893250ef59f369c41f9ea40daa5a5984c19ce06cf9bec2947932133a4157bb8cc3c72a1fd25715962a9c88026c018b7202885224019466540c9eb5482a87e665157be7722bc64133c827c20b97d9e692342f23fdb1b75ab2ccb6fa5973820b92ef1bb45c2b5ed1330c1417ccfb39fc6301b8a749d3613b3803a6abba20990151305cb32ba6a5b558265c2e27d8d49aef3e91819920db20360355919d5f641922233a1c24c0045172cb10f9564a029f07578a48a4d215248f3ac7a912ef8e56e366b03c567ab978c750d85454c68a5806ac38b7b3395f19fe78a001c5867d3e90e9b54bd63954761ab7f4a57b1fa32b65f285742c1207aa0684c376ba98c3a0415a3bfb0ab42d0a3d68cb171109c5f83147c33adda2cb07c62a9025b44523b0ae4cb8a8bea5e550b717ca6c8271997cfd6c5ed76aa44e43da2a02d35610787f22966298ffbb45fd78a8d36eab454675d6951a70472caf06640bc1b97d6760e74b41c577855bc0756abe528eb4894e8776f1e739da45a9f84c9bf3c72b43262525b547f75176ab2e12d8ea808d3b0355766bd69d964eb3b450a96c835d7b238220febd62443b03985731333c54382d20200e30e4cbb2b607ac998f20def865bdf47ce78ac3dbc1abe33245d6fa7583b31b6fe7b6ede7a8ec776b20f7bbe7e376578f0933b761bb0952161123d61282cd6c80cdc8a85f9632aba1a8ef5925e410bb80beabc67735d07e4abdd587827745a3220a24a7b3902416befab3073c2cb1fa76ff04315b653b3e7c18343391f92015939829dabd0289b5aabc4cb5335d963ab842865bb7c38106eb1274eccd0140b415901279e8719c0415517b5101394f78a48f565317909371a3154d291698b0bede17052f30786dc2d46e71edc438c288cbd44445f993926bff0a8ca1a033b656c2362a659eabbcf37b2cb5916940aa9b3e850e51039c08c8588347e1099a0d8380ccc4b8cd0c87218bc24f09126a82a3d530a75500254510ac765cc1de612a4ceb14db78a7141109f947b4329158f87e4c8b41a92afccc9eb749d66a71159db90e7a36642636af22cc0d541ce52db7ab44baf30560691a637c93193a11a00efec075289953fdc9df3ec3390342aee44c08d661632fb0303681e1f89ce1300b0c1a36e63e5a45886a4c76534fa78b87a75cf96ac66205c28766ba5eef7062363c19091c61c543d5c1b8a547372515722ee515e8ef52bf8e089d93377e2c8458e626d3391953d658cdb05c7a40077f4e19dc0b132be719014c12b0cc242466112e94809630b63fad12c99d271dbd38e5afa54c894542b940415354203a0c8a785ab94200ee0cb976991c642257d9af6998b61ba27b236fdfab86f834fb2d47cc0904b9d6acd2f8311f0d4b8ad81a24f712d92272587220e8023a8bc13bd17572d38851778f319607752466cb0de7c5c12103fae4c57d953b96be93262ba9cb05405a5d2a9e012b21a22a2ef33a385c898c80aa9663565b63241a1b206f3379abe8262cfa49ba05c3b43e9485e60cd38d66eaed114ef81afd66b2594baa361d3c3b02069b1a164bc387632e24c82a91be2ca390eb585e900173699a8b26b8916e52bd643645d3225df38ba50a50ea013b4b2a86ee1f76278e27f5a4142f034004b567f309c52acca3c7530162ed744a67481ca338861ccc3e8331e1c67886023743719493cc3caea51438e28ac4ea06b906789a65220e3c7407c874c6322be1f9b627386081753ad618a8dcc013395f20f5017ae2b57ba908617490460d5a67fae2660a56c4c4d97babda0bae0f494260877f7077af2536b2ca46e297c61dd8422bbe515519210dabc02e7047b13f16607ac15e4950574c43bf8c39a2528addfa2782506635e5626967a1f30c02fa3442fa93250571a8173999a88dc27b43c476468a6a4739972dc1b68493413a2743b9b563283cc886916eca5887796a4f833aaed6639b9d531efe5cadf9225573a23664c9cea086428dcd19ff40a06186a41fec0723953781475f648e6eec2929feac2a86c9dacfa6214e2e353fda2d547c3829f5678025ff8418a1a76eae84d11c4528382828f7a689a0d5cff87b8ca0bba97feacb39b935a8788cb +ciphertext = 0ed9d867a5a681c5294598bf4ae653943fc39d85798d3ab337f344892209275d9916e72cac7e94757cd91e9c35b23e04a29cbf32320395c0201075f704a0149acb8b3624153e2d9ebcb6c072009850f3fdaf52fb27b559dec221cd22a24080b09b1789e5c7e0e927b613291fab9118ff69ff7876eb2fdab05373240ba5b10339c168b635c811456f2fe6295f1f22f01c04c8ae0e49c9e303edd658ea87a279b48e3a63180a645c40e1d0ea1f7037f53de37eeea6b3ebc8a455d3a2356ea047e09df3ccb32cdb60d7a894c1b708b6be01ed9ab7befe611f3699bbb54c1f9fda9b3fa6ebefcd9e535ff1cd1deb3ed6645498894c8dd29c89b6b4fae20bcb4e05876aa9ffd200c2672c6b0bbf2df9143a1a1383e3ca7ff7691c5c5bb6e94f489d8d269b6f19fb411df8865f0d07168df6fb052a31579be29954d1e6a7c9204e9095824b09e9c99d1b7f7c174dc653ac55cd87b6ad0ffdc49e54afc500d7e9d3674355f199c24ed2499d7f01e789017a33aff2f739e3b60420bb9658f2317fccc39663067fc9197e3d8da3eb414339d87439144b8b6c993ac3d715ddb2603dfd2b73fb1b89d7f46dfd757c1d2b6043f83686d7a8e81b699af1d4071fd4fb30309aa7a730e134539687e9cc2ea29dfdda6ef249ce9ee85b4e1c84da1b91689ded5ca4d1c9c9d8ac446139cae39ba54207e70fb18970078cb8256a0233d8b29a0e7883bf076c45dd9219f2694f616e7f370b53a853095435b0ed5a10210a9fe9e6aaa79076aff0dbbf7f9cc4e267a1098221c9abe8e7d9e8d36401878b4fddea1049267d1928d44c3a6f99be6bc476ed91feec35d9504a085e745e39f2474e1d3d6dfd9b8994014e294093ea397845c0ccc9915bc5c800c1e799a256174ebbf65ee8701e9af4f355c657a7cfd36ead4b475c5fccec52cba88e0e5e0306218bcd333088dc31ef4ded6a2294f29793abb4e3762df8b74e19ddf32a641ad8d1fe16f315c60dc68b2d29fd83d2bdabcd92d7cfa4e02818530787d60b19618a101d71f964dc95d1a921b28eeb343ab4e6008840d226a0e9e8915c3abc535e09351c0d898557027cfc578a07376e878c6b90220fb36aa04834dda6f9b7c1d8313b9242e9df2030474afa0743c9434fd189e64e76518573ab7a054d81e1ecd1321963a078805f9a074fd3920b7d4e1a435a5ecc0a2c25466913be3b209ee3b0693ee561e3d745920029c384f53c3abdb4a49cd4281ceb70eec21a9b47a693db42ae08c88d2ff41ef3d632080d33405a21b516ba377e521e868fa3659890ec0200985469873bf42daf4fa5fb8d0292c5bb8e9435433d2a4dd176c1d27f16e146262de295e2b1046cf5ea965e33ed56fb387ebd0fb39d95893d876e33278a699791930f833f2ed6e5a7defac09e6ace406deba5b19dac8440b6bcecaf85674839f775f279a8152f6fce0674e07603a69d10950f51da09b12e084ba70a828b00067ef26c9d3329532cafa9511f78b3c84b685f9b42d96ca5a1b0b399caafc45483a805b614f629a1 +expected_result = pass +expected_shared_secret = d0bbc576fb1aa43b6e76db0e87bc4ee3fa057c31642b37f3339217a1b041b521 + +comment = Official test vector 23, seed: "fbea1bc2c379f4f8fdcb0de260d31cdb064c9ea9b1d6dfbe91b3692add1d34dec9c9ffae7bf5e72ed2743ba3f9f2e43d" +private_key = 91c087e623025864c3c5d9049e865c6226cdd2b39f8a1578eb69a864ccb2fa155db32702def5b50e973495997e18c6c21756568802a4bbb86c5018016fcb0655b09e6a4b39a8ba2d70e32bbb255bdd296c998a21f5716d49968dd02a9c4f4cb9dc72c874c232011225f8e8840f7589c2d285c1e72c8588c0a33a502a385d0527186cc6809185408e9c7fe6262725528a439332f93a5ba2943e6dd7b30d79a25939a4c0802bf57c755a5a0ebbdc8390f8aee407a541c46cb1530fe1642215556d20ab942ddbcd1627826648acc3fa1367db0b45075470196b46697d9ec6974f477eda553f80b701e853398c69a6e4970a746534928631e6b811e533a4d1e89cdd6969bfe0c861d2cec3e16d0035bb50573ed61b5dbd45c8c5b223cef4266c5a6daf104949eabd27d3319bf12a7aaa4e5f636732b28e902a1098972977d98c00a267225b84af1c8c404a52472b8d1a793e370b17a9935ee590331256620e302e390474dd6a17d17a50291b6bb940bc43f89fdd22109a72c8ecf9acb1e67ef6a423396225e6acbff2880c35673135c5183ba37df968330ce992dae04e9455267a195a41893194bc51c67393251a11ed3c0829d99a3d23ceaa387208e00974e73178459bda539bcbe89f5eeb05ee21be3b1159018a3262120c21d4972aba1a1350231d3a646ba70fa5b641ebea1b130470a5ec7c40627035b03d15696be1313b458cc9ac8460cf281a6976a9d2ccaeb9fb157300b4289a55eca386d3d8a7d16c21102aacf361578010042c3a6397e2cb2ea5224141a1d451b38fac14d7b64bd7b72db17408b0a8906cec108bb926df54299261b6b5c6a636b395acb651ce6b6018ea9c92c1525de1624b5570f7000466cc09a909cf36f34687265b61db6bf2882514705fb37346385cbf4df33b98686e0189bddea7268f598db1b6cc7b32792d5546e242a807e760ece7080392823004453048c6f743b87c1670c6d10e3001008a24590294bc9ac899bd588197530fef9c2b85ac66520a195c77a7aff61672c8cb74c07d43a2bab7a764e750663091a005c9af8cc4b55d502169d4293e79b365f60085b1cc2f4900541588819b5edcaa3b80253178639f63a3091701c7e7b04e95435bdd2114bbd3abefb23355591b0ff102bc94b56b338083b82328712733f2762c5b1d0845073cb3b46aa28ce2cb282a4347f2118a6e062d7e8524147545488a01378a853d489c03eb0c6527307fb0ca5f7aab6c328438d33cedc10733ab8a68c7ab88e0b06fc51c92c557fd59488b6245796b7dc291728121bc7643aa5d56c483186cb55086d7e8654691cd5eb97580f0a553a2613c486c0b9566a6f05f9d2b82b57345aeec1368cc126ac53b9e794be471c16a498b743c1848a14d53478fc341a0ada42bc2e0717fb6965737876468515195050d64079d624da1596f88819fdf95653b8217f9885d151821a9529420ac95dd928fc429674025882c9758226194615304f1f5caaa456182c1bb11f0a02b6c758eec4ab6441879a42450a024559697c4494d8aac2f7045342234cd8081c0077c9232e66838460ea26274329988af3a82b898c4efb033ff4101f302a898e84bcedcc45e369cd1bb7f3517280d6655c8735813347c3c7c05f81a176264a5ff791d9801af88047574008c870635457126b4069071242c24dc0977a8c13d43b889d27f08984d9ea657d241922bb12aa28a1408825b02663b970778bf669d585a975abba6bcf8513c11bc73a0c33897991c3428a5cb4dfed155b9a2909e6597dd8cac1ad62f9cfbcb27088860512859761885c5b6c5d89fd6b18f9e324ee8f80b4c507626762a22f4cb7f4527527896aaa97a69b8aa4fb09b16cbafd73a667e9cb085f7ca36067d4f740694e6c83c671071762fbba26a640c86422197894caf01b0af66960651998073ba7fccd3189148187ba22dd2661262766399a6b8bb943aedc590fa048816d1b9d827ca80935d30e1830c8115b18b754f20acd7a376272c119cc8210c9aa112d604b2022326f51ad674aa1579c081f12df04a9a2b4571fc1c21a8a4ae2c701eb2ebb0ce65cd2fc22fee530fb3daa6d82b3d46e33e9c918f6d33abaec34f45391245453ef4d128c4c068227a6511800d69f6a31a1421e2d322f897145961abea377c9393acbfa72ab3c3aaf7f04ddad50077e7c36ac46e083075265c58db4b7b47da253b8a9361c08a1248b53098c6b797622e228939f110ece18c02ac613e00b624c61eff4524f92c1ea632553d9b90cd886fd2c364b25c877459ba6de0ac8cc2a8b0f2c6d71a051f8727c2892d1934857eb995a8d728b9739872ea472e6602f2c39484d290109ba924933d6ae52c30eb4d80935f0d2c87d4dabf07582cae3c2f21692f0825c079ea6700065a6086b197582b76cac90a58451d7479965475ac8a6af662c7d23055c404246264c97bd23d280b43cdeb59be0cb31e04474cacc4a1453fa10a9e1e4050f97ca3e9ab31e561ab18cb3af721570380023a9349ed6bbc5df66bb243928dd3a4b5e113a0f99725c9c8bf673818b89030db28edc536c9620a1625c8a647bd3d7055039753e11c4b1be3ae79eb565e6367690b5338c554cfda9369e9b1ba75651a0234d2325ed82369bcd415089692547b325ef28189482714c80dcdc5bff72a6152b70ac2f16707c63a42830dd6cb88ee646d882338d3dcb202408fc5210c71d1a8ba02b8c2ab7e06e43ccd85ce39a215e67914369c749c3978778592d9e34b7671283dc787446b5b70a32c4c1ca4613b01a5d0bfe55016b897130d1bcfb49bb5f08c5df9f15b6d531b06c53a389500675aafca9700fbc310fff968300360ab631ad95649f0bb47e55b90b2593d9a60bb0477ba848c0db9f8bf6c774cf8348c65695b31b921e4439e976b4306a47069c25e4a7515866c0bd77b44c7881121025cd2f28430383600e4ba0bd28074b7bbf2a2a3bd62a73ba240d644ab1f89ace0c8a83ae62f642237de265765458d6744273e4372add9cf5215bd39fa516575bad72034288ca3e0d3be57dbc7ada731f5f13fc0252bc5a9213f502c342a451b933d3060a2ad8a9c13013e3d93455327c187547809fa57faa299a843a251f8368a715508c32aa57a42f9551520433f9675add0359c5997c341464264986fcf67261d16b7a6989ee33730754a2ca0f66b6c98cb421c8e4b36002561b1a5550b93b144d5552afee236357c8093932829f864963159a8e7ca992b8fae006190b55c6a4fc08ad10190d2a178865abfa35607e1a88b47ec8ea71b102d7f1567bed46ac74f3b7fa6e2ef8ce99508c89cf3c71d666ab065a262581a5fb01b2c9b9444fafc9ebbe336dc464489861db8253606971bd0a9008a433ed17752d04023781552 +ciphertext = 94f5b9ef5dfd9caea5d92ed4a48ba23b9f55754c1aed2406de032457dddf538e797c2e02272aee5ed23bae0d5cba2e37e7afb8a472c75475b92f89db6ffa08d83b9160768541c49dc9da73ffa6f928bf16882b63c29e9eafb9467d0ffb5e3ac4b95c89a9462432ecebfa096e36901d2192fb2ef06ea10d908a48e9c1b2201b115f19f7b433d74a6ea836836a04e95eb93e1b844df7f36148ba6b218715cddc3ec5766df62ab97d5337869b14d674fc568a4c249f7832d34f05ce36c465ef020d00df336b2befb72659f97cf645d4420dfa0ded164cd10130ec7e9bb371f57bedda294e603f74b268333afc0d943330e0014ee57fd5a655aa24bb8c088637afc0d6300a8a3997f3e513154381a8f240d037791da03f8b536cb4a4a46059b9ef3c16de282cafcf7abf4c840584eef2a4617b3b015a0e3734aed2ca2d7c182181343718934f6f4bfb7bb3806ff6f412ebb0df25b588fe79a60f0118c9f0de2ad09031eb00f635fae0a2dc1e25d8460da9faf3d84c785522b817442fc1c801b5dc0192480649564731eb95aa96970b00677df4b2328988ef813b13c0175f6b73b2646a90107f1c031a920aa8efccbcd888ab6f0c249d22f7a08dc725ff5bb6969ea5d8a319c7c0b905c2c3b9688a6eb0d42e9b6d51f5ee1195b0591e7f279831e427d283b439a0432f77ad85345b1cf997e6232ebf21734b1cbb6d333e73e25f9aaa94de479b7dea838881b766ffc2f5e8813b32bcfde3695096ff2c9d201741c602be13e79a84718c0201a1232a89f6d2540e343327c1c9ce9c1687b4b030e7fc410018453f363d639470f480beb007812fb88d6c3450d13a9e9924b82198d9325c4ddcda7e3b1216753eb9364bc8954f1c3373efaf5bd0b70e260b712a79253459fcb928cc8ee8f770e233eff63b9d1d7e5d15db03c95a64e24c1c121e084f2aeb506dce765d03cec76be9bf8cb26dde32198ee9972ac2a441301e49dc703a8284ff900353951d390be673710d0f8c14b4ff42c15b6d2bb9e360d0b573b608b0e28d8cc8d40b9486217fa3c4783d1bb31e9f8f7f9b6852207b4fc9938c9f2b784ca4946dfa1fac87277ba62cb6a5b69bf34defeef435e6e03ec53ccf255fde48bc843df6ea502efe32f094efa52c991cde63678a5a8c7e5265cb096298f4d32d482a8149157aa4b025ae8ff5889928ffb3fb08499d704f3d146ad259e296fee0b83ec7fc4fd2ad036afa9576d1196c3261e2ceebf52eeeaf5cfaa38ae9f4adf7be4ba96d063ac8ed6fdf3480bc26c1ec8c382539f188e5b64e2016d511af0e8744aea561734efb76a4c943aa452da6523ff6b4c99fc8b13b51c74077cca51cd7d4c17b77f5f966d79e67cdbfd9489a71836c8e0f0fd9da93b4c1edd952d6300413dedc20fc77730811008a39f2b9d2a87e67d9657aaeb98ac4e73f99b4a5d9eddedfe04eddc6665cdc6dc277b5eeb5b86750096708205ec78c20a512bb01fa825ba85c8d1887d01304b10cc482c1219f97b5b7b97e76359c20b4cbb06c4df79de4 +expected_result = pass +expected_shared_secret = 91fbc37d4749ec6175c12f0d8eb6b6a8621e693c79f85f5cd2f557cafec5e7e9 + +comment = Official test vector 24, seed: "7e87fb886bc3c7c9fc12569f465d2ecd12532e76cc27c65644c8d3dd603b0cb2d036c5974e675058f271d5c82ad7a813" +private_key = 817471e55466b5babf92a2ad879c9c951ba60d230add630984b2528f9aa07ff755d7d79a2f9ab53d8986fd90895d5401dd97ad3f7a922516279b5858f2087e6491b7bc42b8a52a5952f23622d5603a0a3152990cfd6ab9cd863345d8be5e295c06b79332b0ac89282e61e5534fe0aac95aca140398b64175235b94417b8799a4b6d6933a8b815bfbdccf886664e7b8c5cb0b999bdcb2bdb288d569666c421e2a950d198158c0d36ced3a74d9032ab7a2b9f276be025296a773266e516826480e520b844eb69710120373a94705f9030ca200a7f85a94db1f55d46081570925a476099c3ebdb32c532a6d8f16be4de6416d0c30d450808cd3c08131a92551985b92255282be6087703f182156a13cd144aca3924fd15492dfd253ee5c9e78853590930521e843a0e37a26994197b3161ee1a60861c344720286b6566796787b05cb8fd76a419c364f1830fe2bcd3a2970e2dac1dbbb3803f8053591b29bf64c2dc660ea9938200738e2c0c318b77ff86749c43c72f9667d80d462d549bdfea30cb0d9641b29308a461df72914b4b40213b62e68b161f83224c1a45472b5464f97c6d6371c69ca0d520426db8c1e938a934d50ae0b03be706b74cb8c674ea955a4d8ae1f6c0b56263041fca1871a5799921c45d9bbf13c01f0a9c5d973086b33acf923a2721c8b2fa7b058bb2e64f43bd80260b6bb19f26a4f55d53e7ccb1bfe3aa424976132c3b4b3a00908e722557a3657d285c8580ef45b76a207cb31a71402ba1ef280048378b80dc3312f78a74065b2dc873b22d37990e465e425b992722a25009a93a7a005d91b9460ab7c2336bd303883a151e829234c964265e42fbf8252cb89858d590cf0830e59c54021b83da94884a173be6bc454ad5a719252beb52a4f7544a7fbc03ce9091e9acc0568306e5bec2ed942b39a8455fa341b84571ac3fca43c14563f91395d117ab021c8f141a4ec7364ba4abdd8896bc6b281c751a66c767ac960ab52058335e14e7fd8a4e1d44de2670f9bbc67f682a0657530eba11c31381897d989bd392fae02d0afbaa5afa1748a80847af4b326f970c6161e15b212a1c66003a4317348374e66b29fe87f36d01af5f1c75be11bfea21dd8626765c46f0c153d0555b419227d50da5232810d8517b1a5e4147a52ad07012d8da23829f39a40c70d565937c58a11b1a25b27c8207246c4e1b40230e39e4f089d43d562ef954f332b7ea6b36ea28a9d26eb251ab562c0e44bd238874e93a4d3b900a4b2b08a0b68c2b82c0cb56325548da3316279672913d2021d742c3619823c4391e64112b5b77e8d707f9c1a37d3464cd5f96543f720a0cc6c9631458cd9cedea7b6fcaa76d1e60c44f74b986a772cf593ae712214e21179519c39fa533a724fe8177ea59b1123e831e1dc561543a7e559697572157b60499c4c615d02099d34b0738581061a85b2dcaaf13556208b3e5af388392490fc338dbc55bbf7d25f49f61bd7363cbe3841aafab88524b0ca3381f5b22dc84c6a112979c3c39e45157c0749c04b022f83f53733a21e1f1842e0e72f78c6ae1e337b53215ae8563b16d99ebd6225766185a0d92f9a28bbf4e2b444b7c8225148f601d014bbb8839b4b04a592c364aacb2c89689106aba29029c58ddf7050a2c78787358571aa506570288e747a4204c43e8c6020aa3e2d77b36c3440a618c55f3cae6d43b979786e6a181d4107cb723bb6d0729ce3eb98e7a979caea9508563d5a0b7a7ba55b8985b71f3c489b370d37a66ce048a9dd27ad17b38c66880491985b2af8916c547e9c6cb16b506170f29304c4393e8274ee254a3f13c6b0e31105442bf92799f21774be9a0f64970e6ab581626115a1aa3ee4da7936504d036b75be6046e5778f58caba93f8640bdb24982c17ba3445f2ab983b685644b596ef66acf739039ad0a3cd61bb80b000f7e8bf53f60ebe235c0bf22c7873aecc6b3ae2f3b2cc3bb47d1b88423a188393c43c4999c32a886807cc4262bcd5a588c5e1bf8ed6a6ea9910c19a6042679926f314e7c7c85bf550482735e7fa088c857ac1578560a1a2f7e831223cbde33a46632b7e24d400a82a8c7307c23d6ca25075b58e727673d7cb5554042cfb9b7f95b11a55a9fd63b1b9f0b60f6931a0ba1ad28b485753446b0005e8710d7189bf438407b8ba36a1687a48e550fa37cf4c6b591afcb0af6b8d2ea5a97b6c1729e7ae22e28f2082a5e653b5babb0d147a8748f2606ddcc7847c24f0d32771b910ccba85befcbd2b89c5035b2062e6b9bb40828902b82e12b752d48d52b7a6599ac014731e8da091cb30186c849b61954dff867899e5bf27428229376ac7d97fa03996160964abe56d3d0278f9f91fec6bc821fc822949ad5ec8a9d728b95b19052ad9442fa0527b3935f4697cfa3c7413ca2e81b32a57f69479e89760a46d710032efbb662f9467f0d03c806b619b9228135076fa235d502230e56669e2354c1b412ecfd01a429b5c76b17ae2ab99c73b4110957aa38c22c8fa39c00261c78aa571b953d868690761655ff700803a477917ac8a6105cbfc220a30a0cc1466d7598b2058b3899c567a71a66d5c9da75085686aa4ad4015100360c6102c84c336c13b229ff599dee4cb2c90a1516682330722da110f42f7c0a4f23a2089add65438dc66246671be41e7766641b4c9139777e08cb4d5b953e602931a7db3e1ce70d765516242ae8987454b898f19c5103bad39207bb16771b5d4191abbbdca9b5bea711081ca6521149b60975e02cc2250a355897960a8e203ba148f8be76452420d2134b607976f7809ce97597d8ca57337fbbd6748c03227607fa082195b49753c43047b95a020c7d195b01dd3cddc4c091916c37e447acb606f2d232c37c9871831c1fb9a8d00717762f18e62e7995a7393e0a82617da4674078d8f10065a28649e53377a88bb0f996d84fc83e9496564344d65b73ab96c4e887107d6c14488e604dfa15e55004fda8b65ae19006ea7c8a7471b354a4e746703d5c79857a02ec222b78b966ecf161d97ba7cf39b37fe173485a0156c3712a6ecb14e629899da9163709b672a243d1b87e15c0ad611419d85522252bb5a02ab725cb5eaea5bda73976d534a881b8c32c5328d117306fc5217aab89cf51c6174489ad241d1cb261d449f24a235fcd46fc19a8d14a4281906236738a060061a494947bd91604431b1a2871080616ee2e915863b2bf2d9cd86743b0cc12a5d21c6c745b34247c17f9447579fcb9bd38af3b64cc94782e299e1d98e68f8bcefa20d1e8db85525167378ef967195c977d43a50d03205044006715a6a8a8263d717f40170b49e6bd0ff8563038aad865a817cab9ce98846ba75be9363718ecf5fea538aea90b2a558 +ciphertext = 4f196d816122c6774617c45e22df48ac3e86c3378f3459e569534f574842967a369dfcb6ee004e1d050636654bb9d0f7a2ffb7c574010fb2f321f85aa574dc3e62993a7870475787ad35d68e5f7281ab98488da56a7a871e8a6eb67baa98c09b9ae117427268d3ef7a3f8f012d0e0b241c39d12f3b1d405093dcb3d20ed8aa3f24a0ef8c08fa24623f3b96845f913e96b1896083f7cfa047bf50bda06000b5f8f81ace902062982aab78a5f800a3d7d7268855e8451de5c633ae05b8075f2d6c98cdc8fe55d7ce4364407f4789f0bf91870ddf6630bc84d3d5d5f8a08e20561c8645a95e51b1e657684e6f9b23fa979c97a22dd6a2e3a729f74201892ccf378db23abe5a6c6734db7de54555e033966516b08de0d652186327af83691a5af4a8f806dfda5aaea644bf1f1c32a9e3a50e9c5783623f20e0f7cceac32b57a908d28277430ac7f2d32232353c1e8d34c4a6e5113bf2de9a074d26196459638f76801619a699dce0a7599cbdbc9ebba872a1bc1ae83d07986e534454ccf1cfe526d4fbf599e79cba747f4f2c6b3a6e1fb04b993df44d87517e7657d81d5fcc1b220a3069c16868e279351ca90c20a73345fcaf12cb75f43102fba680b641536345c154cb15bf7592611313f8e958953808b06bf0d5655c74b022e3a731280ff7a7cfc92a60fa6c51161e3534e7529aa310ff848b4a0bb7c00f2425bdbc6cc1c2fb050fd0b2ac17db264f48a025eba86a7b11651108174b5b2d859205ef2480b9adada70ae09162f82c3edf176287f8e742cfb7a233367867ac8bb2c5306831d3c8d399fb5208ae3f15a24a70493b62f7a918312ea3fad7a978beb11c43e679ad45c284a47f68ae2970f5e66972a024ce0d6424e58e0262a0f94ff07621a2d5fd38817f7d989a45282e71463ef37b5687291c4f852a6b13625308f3a4e6fefa0ed84c3cb47725f00cd88687757d3c625da09bcb8910a441faa38212a4bdba9a1b513b003efc55fdee2a3bfc1ce0d0b8a0f2cb4b828c5758a174fb40b9d245f63cbe3bc07fa68067d8feb438ffba418e50ddb8ce6f5548b8319401d1b4193ec59da087badd67665e9b73ef489b5249c8794ede24e70e3a2eaabab868508adafa1c44dfc1363d3d8091a7acfbdeab2fe73de1bab8507b180f570ceaab92bb297557927909045515974c230840faa67d9df34390675fe206bdc4b5a48032b455b45bf85d150703aefcf57af41fb0a094816958193162e821f10b16ad8adb8021b0d5cf27447b9b2c2c3dcc3513832d19b11a85b00afb03e79f3e7cc06178639eccfb943ad60d5705f1e6c8ce1c8b1ac9a62aca9500bf870414aa2613fccdd9eade567c135dfcfd850f5d6617b1dc181f375806fad84bbc69e28c49348cdf09d7714fd35a49d57d75ae6d74f1ee337d2ac2e595152da79059c93452f0f89be3d1b2cb5e2c454a4fbee52fd97f51b4da45c68efa1bc08441bbaa3082f4b633e06251b9859298b2c4201759538bc46874fd4678eb27d7d5ff35b4fb497ed739d5d7119e213a +expected_result = pass +expected_shared_secret = d586b441b8eaf7d053cc96b6835f093426677a7c3acc51aaa3ddbb66dd14a623 + +comment = Official test vector 25, seed: "ad1424e804f306c7ff513da4c1e8d445afca7bc942fac5c0b335733aaf70693712ecbde26ea726ee0f9fd9d52a83b1a4" +private_key = 60e93beb5544294bbd612141956430cff041e0f969e954a48298c7b5f321b9e1b70b7c796a753cc5bb93722b20380abd6b8aac4f0b102ddab380b88ab9dc040fcaa8b775882a673864fb757a3453273627df0690c90000b54112dca50235ba14fea59a764736a018a091b822a636ae7934a33bc5c15a7b77e1e53289c9757ec75cbbb792645325d6755d79b972ae993c9e3413ac040b3bcc85c4f98a2e185bf4ea1d19a4737dc78547847b7ef385d2a07bfe272764cc873be8cb1286a0e7c83539d2b9bad5a17f0893ccf41e2b5cab8f66706955c5e168a99e9820a8402cb25a434f1a149f0148761014d32a51bc73a8cdbcb104c29be554b2724107ef314c25d082c7252e0ce68833a47a619a611b08394960a64d8c22c25aa1121a8033605c9bf35221730b15e6269cc25febcb8e3336870b3c1c9d3a89de4a9042758f517b55f85133b403c501590a0f53542239118f93874b319be0d063ad82144eca6156051424235d785c92ac00c412f8ac0ff5b88f056142f8a0934734b09ba14c00089bba136279a5fe462082ab4b0709a6db3279f8e9544f3909ff78b264399c2ed129c803b341d816eae96bc531952d55059ef0233b0c18e1f7aee5498ff6f11dbe801dfe193bb61b870008ae57483daeb8ca7ccb460193c68a509e8dc738ff227fda89b21eba0053992a4d3a1f8767c0d3f3419838c8c7a2c0b3d68e737ba77221c68a8570948a322a143e5a03888c08a1bb7c42e9db9111819ed94523848bc32781a881a468d26aa7fa4acb926ab8695b24a094b8ccb0423192cea88c1fac818a6b0ca19e423b7afcb51b121d48ea44037963ec1a325dc0bf7555977f468feb49b8346338db983e512b2fdeb35a300495f437cba88c36d01536f7a56bc9dabd1000b77751031102caba7182e2c440919435a14bc1ae1b354499324862885c9c301b7258faf778cd0a4721f26ee32c5dcc7a7283dc10e3cb04713255d0044bf1d9234f5180f32483f7079b2c0558b95c622db01be885b2580931fc8617b6940ddfd54cb327712da02f90a6a8ddb6ba17a31fb1d7231d94cac2fab88a43b0f56968fe2b724fc8a97e1a371c96a9a17a94fda08897ba1edf959f37029a84e707ef676b89fcb5e94b8997d95542e26cbd28a7d01b1fef76b1c91ac327874c04f01b2d6280fdc60cead3587bc0aa6ec76f064b3263b2419bf3120aa7791053bfa6e089f6cb8bb020b5c5e2517d4b2f34ec3c4237af98dab3f4d44ae161773ed53f391a689d7b38f01155fcd080869656e15baf9a2a6419b38c2ec39112b4216fbc5d94771fcc4369eb90aaccf3a752020e24f97c30c4c67632180e9b928a0941c23c03ce588f7d841aab91b74b7959bfd8b5b042294ebb094b523dfc425e9ef70bd2e2bcb2937eedba0ad018737ba91a3691030c1a6e54c0bd4336a4bbb7c5dc79057ef5c574c04dfcf9c8407cac999a54975b1a45519075ca167b8285b2d554eb81702e30626897413051aa546bc63a42723bb95f0dcc525944c967d7a5793c34c7638ee59608c8680f2418b648b7450b09c31bebaabb956e1203bfb3d377373b5483c93378f15dcf2959d0e02a15e2277b7ab78cb2ba78703f13dab307ba1b663c86bfd11fc259a2115806f9f68ab15859a763a49d169d615b4999714d550707e8a0c0a93c8db2fb5e4de7c93111206f052a7d7a5e0b5632d94c7a87596d24e950b361a185f065fa96435f312745164693fab8d3a741c56c6f10d8be52c06a5d83cb1bd327e5b28db12291d907a2888136b6fa3a20a48990c6b6c81499de2bb12d19b591234d55c4549a3861626167c5a17cc2a4cc9f668df0707d26795de7f771bc614b994b574fa309a1e1c8b4a0a4ad6240286bb78ba701ecc430269a37843149e1f1aab731523359c735694f09298e2a1a08c6ec273b4a1d57118b20524fda18190c2029da4095ead53212f609a76a343d5c68ff17ce6b92b340dbb8cc6c03ae4b29df243b93233af6b95eb5a7a8b8643b0cf5a8114152b8ea54f0e3668511ceff536d888baef85a62299c641769023b7b92088546f338448c1977804b71781a554bca5f13c0480b42c5a6626904516139abaa54b429e7a0502b17a5a2727a7f230d63c5764dd497f164b24e5ba3a626785ad1b917a6b77b175e64323783c9791832a7c442b895eb338e6a29ef671d4d7c0230668c14bc794cf11340229ac905891cf1c51ef62b6a4a0553331f7f581054da45c370bf606126b39492e4a3b8592bbe0359bc017557379471ef922367d82635d8494c88bd38a7720669a1f9145367a92090fc5df15c034b82cdd9b7cb9ca76e74b2069c36987556012bf0746424677f60ade29c9cb52c6d9cc2052394691d7306952c65ef498da41279eeabccc66b3a41747a8b447d7ee81116eabc04f4b776923c93a28ffe888652fc34415baaeb6854d4732745a4bd5ba61c35678780063ed874c81823ceae41b9684a05410266f7ecaffbfcb5285472e5b02fb8c15d126410f0ba3ba8536cfdb65d23797414a55f2620be653a98f33c95690714fbd3418c6893f8693908d41d6d69a744e63b2b0c190e3b1696a5c8b1cbbaa4719a0bd184f896c9d8f926dc933ba81b2785c05a51b22a95191f43dc23b42c050dc9133de2b003a5b6f1a5730f490454c58af291cd8d46acde69842df79353670a54e2c88cc693745516ee64c2afebb95df25ec0608ae4aa9c89215d471bbf68dc6530fc0fee495fdfa09e98ba8d37f9636b270bd1102579eb7f1bf0b911cb79f03537168867eaf60d77d48be27bc935b02662929dbf2263270670e0601e5e43008bcc07f06451e54755fcab421d584bb603008c9909caa61cf99a4b43a93ea8a3440991ba402c9a8fc51f90584c55eaa450b7a600342e98420d728a8b6344659f2a0263140e69ab86bdc6b20b3aa0920b90c70c0108358c8a92b27635154af9a0a76080ee593ce3d37e40fa33d0c654aa77171f822e0082c95cb60b54a6a26099443f671e863889f35a0b9597b3442a71fa704f164834fc9c8e2c63847c9992cd73c1bfe7abd3d75448d21926da0938f92b9133a92e426dfd2634a677878ea9820f5c26a2382fdb1c4b8ed59db74b4490b87b0dfc35f5b22112e5110d494e53c50d3fd6c64cb485bf5ab37f7a1b709122c7086d3fa56fddc966db2c53e09b976f986a334290dd8c3c7e6582c4eaab182766ff70503b03b4e68261cd0303f7a83732795cbf84a04d78a541a0929691c94a094b7b8f92c5d5a3bc95122a6a7968dbb1334a712823d470766b3b9e7b55672d02ae16fe956be4601573d72306a251f69bc2181253e2417e178341fd6553303ac189e1fb7456ac0aa1b97068f452cba64ebdc138bcf5d36b0a0fada2a3b374141eb9 +ciphertext = d1b9adfed05b0545598a380a908d0630ef5a5b633f1a0f71b7ab658c12b5d41870dc738d16dff8ab4009b04f1681382c91cd87cb1fa19fb83c6edfb215b14a21f6595e50f60d23f65c8651a7acd2d42b8093d36511183caaf38482ec02d0c5495a0ae08d86be9177ed05abc034337e502dbbdee1555a5df175420ef9d13ff88d34e3dea95109e543f83060050c948cb5248bbc30ae8dd31c16c0a2aa6bbe91290bf30ca690edbfdc3122961b529112d1c88b5075fdeae100176b48fc6e954de16894004a33f1150ec182d1978dfd30ae4db0c7abbd069ad761c131617643b25bb42855c05586cadfd35578b04ad23c599b200a42c75cb4614d4bc49e0cd69ae47af58eba9c4d2adfd39631ccc550bd3052e33514b1aef509d9d4156520510eff630878b9612a7afe6e652baa02cadd1cf5875ce07f04345a457a9cc94e4ce3ddafb51314e11701a9062fc38d126d3a5846c99ddc89423396c5dd19ae00648760bb9647d0d4d85aad167452ed2405f1482a9699cf70c99a3d9e7b897d99bb5e2f59dfed7a1c681315a881cd08a0dcff6678c7aed3211417d11f4d40da95e46c5aefa7e88e27ac0e91ebdac1b6961be17fa2c5b7ebcdc67354be0e43abf6a9a611ef02fba24a662b5b6ad31747155dcfc62ccd0149b355cad072e462331298f6b0155db2a00033f6b6aa71b8fdfb4e2db72040dc5b8e7a55efb0cdeaf6127474738fac38a5fd890259f86d5af6339c4cad26d1ccbf98408eaa182026909dee6be1069fdd9dce80f2c9233370a8cbc0a8a52b3eb999161ca9bd8c250dea2358f72340f48c9cfc0a8f347b7480630659e13708a34a9b121beeac05af0bb9f8475674affd1889dd75146d104ce6d50992311e3132c4724bdb1f793ad76bf1f6c3e30d9592aed479e406dc470aa810198c30ef25b549fa49ead13b66db0107201ac624982ba4570f97679afdaf1dd174e1121d6e02b26d8435795fde7a05846323c5dc7f64532375ecc44b9081ade905e4e194d1d17ba0c91507f16e34d4befb2b6ac08a0f0d3a8f09d2a1bfb01580ed0dab28645faa28866135961e2910481f9d39ce5a0ad97390a1d05f40a0645c3ab4b0c749127cd17b176199b5eb9e87f625bf322cf226390f9de5006e207b63c5e1863bcb60c6b05f7d3577cc59e9d9f7c8be6b30ba9a22f17b6d860ca6621e00ec18733645af0e9b63a40810225fbaf470ba8d232420bb004e779ec73eac3d688ee30926cd1ea673ec6ac7acff1d255189ba3ee8dd5d9ef0c0d3fd0bc911f818ebecff8cecb65339b8762492e79d4f69c2efc9e0d6a406b1640f820454f4cec11ea7ec441bffc79de43f9bc224a570aa693edd08bd637a3993de98eb29a2f8db93347875ad3adfe59ef1a1017ea9a2151e8e95c40b92f357e7bab7c5a74349e1aa557483667161762594cf28bc2f837815679729da4e0e1a567c7eb92d4cdbae032364db056ddec3dbab4d2cf2e94ef0719ea60465374d37110bc7d89baca24f7a420870cadee72f58d8504a37bb7acb384a34 +expected_result = pass +expected_shared_secret = 409bfd9102bd4632c6b5d3610eb349fe3e3bc51e73acc78a8e994a070e20e10c + +comment = Official test vector 26, seed: "7c33ca0e987226c8524dd56c811fa4d1ccf9995b1e4e4dd5b1481974e88cfabfbf6787775c2611cefb27ed4403ea9b46" +private_key = 3a756d6dd157aba65d60721c41eb4edbec38834c22e9ac88f03119b472bda0961d1f5c3268ec6492f92d5d066dcba69ce9c20311e1c15fa81fa5014c6c956f88055fc2d35e6b295d05d6167e4375bff23257ba72c0f97f452b609f22b57f7c27f71a4f259938b5aa18097399a0d32c3602203bb6769015495b4bb7317c9e99c966215c58d3455efcd36003826c2c7b1bb437a66a968dcba35dad7098fce9133110a109c2b91764719ca25866c98550082e88f29e78b38b40a53c4d626fe63390a290b54389624c597909d79fd6a658e2166704c386eb1c8e951b4c7619b7b79349c3f59505809b1095405949cc55c109a1108649552d5f83a970083bffeb6550893b5c5106417b0cf1e44b6b05a9f9093e386c9d43f14d4cfbabd3b17efb49aa2c571ae99197d2e4b7d58775962570d528b8ebb8032e8065bdcaa391837d483a27239a4a8c0b8f13013f4aaa6bac0ca86e532523d9620bf9c2c3e2aed2365e90a1699a4cbf454c4d2e2c4273e93456142f737c8b3697b9821039142c3e25b346d020c829850d6ce2649087ab762c25baa2639c8c7a852bc76d456ee69747fe561e267844a7e51ae05c5820f0c2b880b05cc935a3bbade2c6a4881cac21938a304c4cd2c1cc1bfabd932b777cc459bae4be75389862464367c6318a0521dd62c5f070a139a95522d10d2e4134c06522cf52834562a208b22a95431014934f51ec49f5ec087d1435db935bb5223c3ec87bb7f7427a458232474ad9cc222b422149977c7f366f48b0b14ab260bd0a8c04623f9b12091ae049725064d0bb4a249075816aa249718f1a7768c3469aac7182d2f01d6373038d7c4ca24802693a354c19c66dba1c05eb180ad04c1fb095b42947d16b66139384c71206bd0ba9ad9bbb5dd7593d08616c214fd9013e792a5b4930122d1c571f1315d235562c167d7546c8ef7536a929982f6a55ce7209b0d5735f69ac6c52a824e508d2481a5be01075c54d8743bcd76767b69b5e350989e629c97ac1982a75806126245fa692def22b15a29499c82ef7f993eb3472f850527d900da2f513a9366a4fa978038b9e46752dbb8084fb12cbc591008d692544078343e9ad67909dbd77c18bf18f02607210f4a0f5dc749f8b0bf371309027968968678b0135af65138c5544abd57ed8a646409224d32052bb14bab4d51dac981ccd838b4a513a36a351b81a0785ca281d7106872583b8babbd62a5787bab8ec9019c7009130ec6be4e25d9992aa1dd13da9c1a7f1ca27fd78968741436003789b8c781c599c98d2465c7513cfe85154d7a655216e5b3b800deaa6b9dc7c0d998b9ce2b99da6afc27a5ef6c152eb16184d91cd038cba69835ab3500ac2e87368f37888ba90f219ce9da24109f0b3e1894db5f640a17b0e705195a350a61ec62b2c7a216231c530f557d4c5605346a6500b7c1484012fc87dd4526823c447b71a726d65753716b30c212565dac474ca3acee664218285a5c4a726f681e98619e2a289d08895bea26bd6a3bff3a5c5c1ea894cb6440d075004f879b41a14ebb82b74ab0131d0b3348742db7244e750ae2b7bb57f8a95379502827880f8a50ecb1394db2553c07627c113a300078db1bac7b5007812422cea108045d2888e2c29ce0bcd454b95c09730d6c4698e779987523de0e972332544c34350d29c7bc030bb6273b9f1c98c3a63170abb2641c54dad64790e83387c51aac922814f834c4745409273ab00051b2a819eefc9a048f222626409fa7b3f8d27a0dd754f9372aa37eb92f6454fdbe3116d406b571203dc05201c31a52ba8b2b95b191a7b7b55e743c4ccb80a710863ab741b727f176224012c539af2bd062ba6be7a42eac08c5b6b420becbb41b55454ec1f41347ccd984f11767bfc82665286a56dd31598834b37ca6ee93658999798ead094298160b7e6c76978370db3180273401532315168a161e087d4c6086846a3b60b80103c1ad814843bca7ab329c7914982ed32bf16507b3024a16f231281a732d3d155fa60260064919c484c1741874ba96cfd91aebe5c314e407a66d7cc4c846176d759618654ac2a52fe69c69a375ecf625e2889abebf395fa20561ba6300a72a2091356fcf197c866ab5468a3af7bb3de755836d9784f7c0949445d83b3358721c7db3c09b5120f7f757bfe3366ae4365b677255ea680f27c310f768e56f1aab8792259340bd6b984406148a254bb605a291c0946c83b1e9c5bb3f879a787b9106f98809e94bdc23c062d592318f9854df04bcc343d64387baf398599bb352f82b1f0a5b530e824cfd69d7a4a15cb5624f70cbefe1c61302b8fca337d70d1900dc817837619fa893208da873c350f02892097708cc637093eb25bfb4b3c793331f0fc73c5446cb11276824cbe419378a224a683fa0d17c671fb8c4bdaf18c20c53a21a4bb8fba9ab7a1b7eccc81946bb5fcb15e1d08ada7761a55d503dba912b73765ff93a6ab642b5fb72ed4f16657ac448a1957413cae547ccd76d9936c860c70c5635c28754421af13448959d67cdea3997ee923aa326129b5397c15ab90f95832f263e080a42460cf9f081152aa59cf17263d008acbf146f34a7808257689a3148e58a0a0117fbb47bca97810a42a7e0f734c0a17745afc6ade752080b39f3267399c20b1fdfa195437b83ef5125405aba8d2ca42040371c541a5fc339772948a21b7efc30c909c7938779bd012642441083150118ce431baa72e989425210945a7c47479f4873e3c3ca6698ecb2a050415066d0bbe5e240222a2884b3cc17bacc14164be0d21330456a279547579f8a4e9443d913a154210a3fd1a1a263186445a8e1b884bbe8b54d0196affdc47544c8d10a69378fa139bc8a422c44c5568555f9080f170bc6e97284f448e6c23885d603a732c469b376a762b5068e29e80b74f994588d9822f3e81ba6ffc273a9c905d0910062bbe94aa1e0c8c3424303845779f8c9b515dfa0864578a66da8ad7b56da2810c11e1a2888b88bb55b8c096a145b62ad9d2c98e003658c9729d7b82550527411a9c0b981f3479251c1774014749d211687dda83626c6bfcd5b08f8075954bc10f48623838a736e38c1143b9472b4df5d30d37f0bd7c727a2f16a3cbe0015dab5a12e27a63f7aedb841d6d9bb1a79a5c3e903c9e374da62a298c549b9842b77c33aab6b4939aeb55704cb610d084950c41b746afd7157613618f6f1574ba51b36f7828af0aa4f79c0840ea3d679013df619046e935e0bd96ec59643250a0b38f9779b0142a9e546eb525e72ad204d1eb31a6633bee89571e8fc16151491ea71234ab83289426559f90c67903a36e4afaa6f49da0c5da5f195b80fbb99c2e8b06926074f3f604b3f6195b5a5b9737876bba72 +ciphertext = d7ebad4e7d0644b802bf0d325f8947e10343dca6ce3affb6645153d9842683b6d7526bb86e2d07892ead2b38662504bf8829b3591bb44eb03822d34976031ee39bccd8b418ed77296b2ecf1517a37aeff2193fb1a6f90cb8b3b46a213aaf471f7170a04b7eb24b8b62f273061fd3f04e567c695f9f85c1749f052a508f04917c7fdea48643f2aaf8d3f4208fa6e5e3ee001054826da4ed89240acbc68471bb06acd6843f639875042454ccc3fd0aeaa0ad416c16ee17afc0b8df9a49153ac2ba53d536fa4587d69df1360d98c82589f9cab145b07a4230e5c82c856a74f0ca95d205ce5d074c9bb54bb1caebfea0fe7afc30b69b852663752f478132d54d26e5372cd62f48e0f33c836a1e5f38562b6728061c2875126527ae4e84ef15c4e29df126fb9c555e9ddeb9cbc6c07036123bc615aeddaba1d53b0159ccede60943e1d00d7eeef769e3eae0181c69556e5daa1520103403f8b16e9e921be7338771d65339fd89e180caa88ac32154b9539289c587738fdf65eb3ee011961e0f0f365a5e885e811fe2db2e12435ea84ebcbb9e70ff8c8db1325578a7e82b1dfc53dc5322f971ba2cebce3772c019504d44f86156740d31d44fde5d877e68c108af3b22dacfee863d21d40e0402209eac16c3ea6934d9031fe217b326451b29130e42788e62a0def2eb2fedb2b01f57447044f0f61af4b71205b6ab352cf46f738d9582e5554d6a1088afae1fe4c7077beed897d13641adf5b6c053cb3d4e11311ad3b07627ab4519e51c0c767c8abc656648524aa42d8d4d3bf4fb82baa022a82e095a39c16b6945779391c3125d8249c6b66453123fd713443dbfefa85f1a74981b40e72065972af07d47e7a1de0f42a159dc1909ab3e8988f43c4a6b729da0a8dd33110c777e2344f1b8179d83de58bb2b95a8998b00008b2022b50a7ab7524d1189d840cb027c3ae29ccc809e3a977bcbb4aefbf16c524497e98acf053e14bedfa90b01750b1cce2c2ec50a701bb8ec8f9f5e3ed0e6923f8926807ff5dfae71256afa331f14fc8e73aeeb30ae63b3881ac4c27f9973eeee6095ec9033df4bb73537c304fc037a9d04932b3aceb69769e71cc73eb020864395e5b4f455e6ba92bfbf8588cd5bd3ecc7e9ec7566e2daa123d4c4037cf1fef134078f463e4c0a901d51071fbebf889245ccf13c0c0a889822a485b06fff11b241960ee95b0518f668c3c663b9fca9dcd911246e1d01d524a309e96cf50839deacf9eddde59ef2602bacc13cf145f23e98c4f033c7ce1896502f88452201fa81f90a16cd2816f19380c0dcc61f342fe479ef17f7f8212c3afb8f607da4673cefb3d58ad5d70ff938db0a593b1fbba0418041093f386761616a851a23fe0cf576ab1c0903c31f3f01e6cb76997f0b7dad2b088abffd67aa942c09635ef3a90b09115a5be2c694f493d076df5152e02756bebcff329abba5ca82bc77a699f650102e4f80d57d6c74a45779e53ac6717f2c449451f65f16a92a76fa87ff7c2dfa5eb564ac66e79a74b1bc75 +expected_result = pass +expected_shared_secret = 5dd151a8015c0b16d79822832ff4cc0da7fd38eb73b7da59bc519d4d2374b808 + +comment = Official test vector 27, seed: "54770ea1252ea2857d6635151194f5f520adea8a41e409ff498d40c271359858fe2b084d5b96bee087b8e8f4dd4e00c5" +private_key = 0baa531a985251b6b10153c8fce6938a280e93f9ace7a56dc7f44fa8bb2f88c09290888da8134a0fc43ccbb75b50b6a724d6812183acf876036dc252fc893419280314c7611750875821b2f3ac4f1c20b06365709bc07ad4161c94c41930568996f8cca58c4a0536cd5668488715593e66621f96c87a2178a36438dd4c390ca0532d30b88db712cd3c50d30baa91c98cf0bacf32c60c81468307ca35b47abfe59174e53467cf7b1d376758f1a5926fe225f0078ff288ae24d23241709e471624285c4fbd35a333088dd643cf6cb0ab6b27c8b679792ecb8ba4c28cd8b09677f0a7ebb692eca6777922c4ed6c20402533cbb9a3f1e0c10250209ef128a626b763b30b5e49c4c4691e3a13c2c2601b6666aba1d099987990bd1bb00ab5806390ce8088cae30a5b20567295aca7f0191cbdb4795e78bf150c7954f9a49880c218c23e59014620e18f18c536da0b7807b0c9e11b1e341c2e7e5ba799653fc669c1032aa014cb79769361b01091b5e000cbe100933c6d05714481f491b2355e72638831d0c4f4daa18c6b4ae6e825e688cb812490fa13b43d306e5bc857fbc18a61923f6b685e5fbb5be9c1871a9822ff07caeff40318482144143cecc5b0c579c84fc949ef359f0b24b20fc0a9f3300a3217a8058469c78b7998744024e275cd1c70a96a75fd86019ca031fec081dbdb796a56186d9a1df8c098940527d34a1df2db50b5136b6737829f0cb1da3b131ab238207a011f02bcd346a0a7138ebe3ca2d78646d7f98d5a886a24b83f8fe84ae81627011a2633f1c159c3870f7c69126b3c31f50d356888f9077fc207168cb075e0940fb7a0becc556de78089ed512a39a6adcda9c3c5126d874b50c163ba7b091656e52f9813cb318c87abab12a3f8996a4cb446d0793055ca177a1bf455cb956443e56c160f4788cdc6b008c086403bc910332d3e3274f9825e9964484d7a52c91c275e153a496801c0e6c8084b25b53c8eba77a9412291df78bd39895dfed82fd3c92947a1beab598d33da8344c88a9e073e28549fc939cf5c6978b6f74ccb23675616899fb69c5eca0c6b68090a338eab57a222fbb5a482837c097bd40141659a2a71d81e3bd38d60d0a903592b768b0ce60a7044350a75fb02f19482138603a9d8cb89ba6a32d37a15549548aace4636047d66ca4de6cf7643c2a5939478a39873820578150172f965d4dc6cc6d7adfc360568a53c97d268900b7b20122e50cc5e460304927333beb7bf73446064d76c3af1274b503203804774b00f02534772ccb83caa8475651460b156a7238da2a9847d445f55687a84baa06dd69d4a637efcc1c09f81bb97b541fd77a96883869731ac776913ed6c02ef03183b27b4655639509b1e8bba74837375628152814448f270b6dd865c888180aa071a2ab42740e93f05b32a9c85a069420be2ecc5335738f9d46c90c5af1625779f3a329dd693706618afb300b5c7099c220126c8398fbb8f32a2a35888bcaa187950365f022585c2e08243f53122b6c5ee9a95b84151afd10b2110135c2a940bb8370565bcd8739609c44f4aaa7c5c266c6ef7cab87b351236702e327b3e53555e24abb670ca6e505df0e0aecf7513f7e36374988dace2af54375d684a6cb1fb38bd9c803a158483f91175263779e75b6d42734dc72fa02bc3b09630a0f79e2f95cb067c7dabf42f409a9635d55106e91e32341aaa4808df6528c3ba98886184e0195e3ca09d9cc525980cb5a2e9027c6a88e9042bf77653b9dc02ad3cbb04f594bae08da4683dfc960708d85e39a28ad6e6a7dc81a2f0f8167633901298628b695cc1868756a97d80b1afebb71eba5969a1086de4d611f737af56a83c7378c6e5e04e79a8967514cc668bc8fb7c7a1a671e29d55068e34d883a8320438ae7a44f01db1d4dd07304081d684796a9257154381ec44562a8d005f3dc4c94d5ce9e36705132acc8876142194da54934095c2d5725a10e376432b17bf7d1b085d342cb3c633a085e950248ccc9c7ff350efc341d07d0ca06e6bec943353c479506691f2347a29ccb34ad09c929692ed98640e6b8560529cb17030ebfa4c769fc7707c75d86c234edd78e7b3010fe86bf71748cc1c5b00023944774200b2163b403b8207093dfc959b6aa09fe6b98f6e83f972a50abf113e9da2fb9fa10d0d05789ccaf05c448854249ba8973a19c537dd69d3f39744da89debb58705ec90ea56cdf428087d8333b16b1a9e59794d49a40b513b50867979230243b27f3d784932e1caadf8b58fe11bbea62da4875d004a73fbcc90b566ab998a45099194d449cc60b0562570648ad588b213cb99a01283706878287930a71b68b43f87023d2f49829abcbde6a37a941182b78b8cc1b93982c7a24457a9e1683d2bcc97b4259518e0102760100e1c26cdd85022a04a91168486ba3413613ddd6c42ccb563379a08096b287b41a011fc9594d132e33957f2a5bc1db4c57b4c8d9d3135476095ded35b2fdc09d8f996e332baf7939efb1032e529606677bb1144374c41c08807c9c0868b0c32772f18b755d7bc5c5b12f8eb9ca9dab589185553b74408301062c90b2d68504f0718d42a1989f050f9097889aacdc175cd7e6768d626a8c9aa1b0cd6cbe91b10af1a3e507575b47b6ac8c2b7c801a81985a81ad4ac04b32d0dd880d43b3d36857738369b7898b231b24ce6e9944526b9ef370354e21e38f6aaefacbda63497a85327a2112a5db95179c5285d805698209f2a1b67a7730405b02b3507b4e4b65298734f5eb1b66bcb68f9369abc01c7e4545568d432a685a6e038122253987edc55efaa3d926413dbdc43f9908df1925031f45d28712734fbcec3724653b019f7d5698da7b0c3c90eece1a1be3567a253a143723b9550c8f7333ddae88208667353a6184853a85a99c0c463189eb5763fe59d678349f536c56d014cd92b56ed2aa6b0518f1221a49fd6588650057ff00aa29b93f182b3437386f1f846d2a3c60cd900559425b2b7a5ff88cfabe24bedcc825552577b5c12e4856ddcd91b0713526098b5fa555f105a0f1219110347af9016254951c3cb5c7ebe602564242276399b0048ad8d370b544b1cb9789694c7753ef2cd4ab51513cb33f38bbb10c83c9a1a5fd1489d97476d9bb314849581d688c3dba01662b539c50b0db8e889a4654e6af708a64910fc503cfa0abc21b8abc233ab978965059c41d1123a4bb90306aa09263b25be885f4db186d0e720e97524464c7f1b57e338a864d6c447ed4e29d88c30bac7d2d0cdbac43e9f4176f0078c715acc3217d034b472a846cd317681c0f36feea187bd40e546dc4ad69c2e67fd9d830371600a8982c350df524cde514431ded7aec23576530894bcbf0ec0bfef0bb64f +ciphertext = fbac7fc21143080d74a75a743e156d9095fdd7cd5a13091f191437df1788125c9f908390b664d8d2ed2b9c56f0805df3254604d1f5bc1a9b49257247ca57863636a9c61433fffeab86eefb6ae8c2cbb725f7baf4d75e1f9ace6420cbf71bc7be58b5df198fd08bb2247bb19397754bcdf63567eef5de89120e40dd879993fa9dabe971abea02b5bf2e01d7cae26b98fb9ea5f253c6db007d06ebfa7047751fe66e471a2bb0781ba873074aa8d6478ca81f090a6134f5808fe60ea283557fe932d8916b675f5fd2f7104e0f652d9effc565288e2d1abea97e5313b482b8f83cb36b203cc63df3eb063c54f2088bb20c6a0d53d982c1803c646e57e6c4a5645b86b71b5890d488991716f3ca3210e9fe4fd7403aebcc5c54c6d59f5a9195d78d8223e459fa223e4f3d54d3c4443b54026128c71ea5d9171b26f63746d592999c63fe4d21a783666cb737351f88acd1428d46db5aaf965f4c55263895018246ad78193ce1e347d9d2fc71b9bb196e79115ad14625e562819d16bba8fc27371afbd77dbac73f4d20d4eb1d748a17ab00e2ef7e51c439ecfa7137c7183c3700e579b1f0ca20f4c2ab04645675d3fe763eb820274538cbee1fbd659e790bab87a9fe7d243cd3ffdce8e3ab157c4b42d354f37105b412ffbdfd0f626f196fcf44084e6d4bef2a77d92b6be9f4cd19a1e48f084982162dc832c36500d5eae06665f241b85467c3687b1ed0c2845fd98862a7426997f70973fbbb16bbb5847e4df7b793cc123e247dda4b1609aca09f9e9e41ff14d70a7fd54a0dafe80dc324d6c8cd03e1d2b7ee594a2c71e8b1bafb227b100b57fe8d04f13377af132f3b0fdc3db4a67163a47a8878f87a98e6956f7346bee24a2f5a3b1a393602e940f21040b4739dc6fddb41024730eb3756f0873e6696a3b8c2f7b507c36e9342a41a774fd55eb91123c54b874fb501b8c7bedab5436b50250f7c85f228b9b8ac016d548680a4554d6019ef68ece514be2a20b8148af168e0980aafe69772a0fc11cbf50c0ee4350d4cf72f4212605477cb2abb6ebf4f492452e194f79abc56f71ff7b00cf68b72a4763e442150a6c507e52e7b47f9984444680f7204a5e848a770cd27cd3364f6e020f2754d852b6fa82bde6f97d41909e66a4855e56c82dfb21d126039d9f06b802959d58c103abf59e90426809492053bf9793ae348d53759573545c3b0b16739938ea6122f77e1a56209edca1377141ebf98b5a79b6c7f1ad3e3afabfbb0e77c4578cfab6104207ae4194675ae9078eed0af2b2cc27d47d66df086a8eb89e17b65a7c5c19e0f038bab8e7f687477b01780ef556aefefe059f3fcecde27e8c1f83b92a4e325e85398aba2de802a6c574824d9bf627187e5562408e6dd53110bffc6269112be727a0bb638f5f011b1f88988faaa12f0fd2de21f969d1ef5e76a3c32b28915b32377a54eba21160ec0e62ad4209f81dee1cd58751967f3529c9590bff1c21a2caedab88c88eddfb7fd7099c3b097f4679d3a79430c2dc9fab2afab +expected_result = pass +expected_shared_secret = 1c729b8e580e124e715f19ea6f2409fc6de741afa3d9919b2b8bf3e54c053b51 + +comment = Official test vector 28, seed: "cd6cfe94e9c0a1cc4ffdcd2d7876504be5f50f1d1ca5cf93482943465b268276056f2781f4de805c138976ca72621387" +private_key = e0c2121f06048fbc565fdaa305202d439ab3a81b31fa257aa6f4273547c1465610ae51c2c1c8603aa36d1575754a86c9194b1cc6a9b8c9f77ce6484c5198a193ea4369293798943f7918142f849c8d7479eb0588e6e6b4abc4ce81a406642414eb4137c2da905ce4ad2b750e7d966d34a3b1bfa8ca5c8070456b1f6d5b71e582c9e1e2bf9dc37ab60a09e797a43f66b27b04c13c034fa6f594264c9d7da884c762b159d775f7750a1862216e8bc992c9b2e0d18513f409df8b0811ea89d2a69b66d34e59bc93f5c7bde25140a976a3195541ee22a7edfb7f9d647616b31399b6c924022f036225af7c34e6d221213ab5f7a20b908325835266da1b456f5649b895bb032142fc5c700cfac4c2a44cf1f96d57b8ba1ef2c9332a612e8bb9043559b5567090873d3f9450f37670b473a96f812ce1d71892e43c9fe61fa594601a27a98ec817dd822c625b98e0fa8f2d5a311a87a6c23b4dfdf44d7511373e64a4a18a833d654a946b0da9694329023086013a919971cc4c8a45916901b45c25c28eb6051600644660796935e65a4700496bc32204201d5c8708fdeccbfe949d1339947c6baabcc67ec901659d220fa4d1a3da1a4adc2b1b323bc4cabb6065d9032ccca3dd3c8689c9a35810bcb30b99b3f55cf2ac8258c5b85c696a372c7aab5b0dd62aba06804466fa4c22b2ca0e09b7d47c4644898aacf6899c79b5321110f010cd40253e40c5920db980a57c01b55c506a6662be1253ff171412820272613940704f63e70340414322b69b60b50bbb4459c1d6a0f25065da032455598edf678505f54b51713209565fc4812ad5f8a05a926340fc3853719146d049017475a09a1fd2d47b35371d715c455debb3a40a8a0e83247b6b8ffc05b2e857b5d8b201e56c109dc155b720b2528301c49237f7a629234231fba25c75d600bd360796a68991bc68cafb5b0b7c748ab7039d8c4fd1b3b4de76c193123e50109ba70956b9556f245ccd4330b888d43a84714e8cf17e5713b5ae5a9fc3a331718c227ef4bdce131f31028d68529f06a218ac32317e9b7634c572513974da2bc3ddc4c07f2c6b8d3aaf5734b5d9e691d790b0fa67cbcf36c0372c056c268e0c243132db5de7365310f5732151b80bc98a2bb76f9e8c616fb1c90a5b83ca5738bfa9cf1fb96242998a44d667a57b517a834834ac0f2ac00e91b32e4e7aab452249d31575bc96c8652ca8e4c3c0d3277a60f5ca7beb80b563391a3b8e1a1a97c85823928877954c28d052a2c116bdc325b687d26d1ccb3386cac9bd4c10c3ac381e056f9060c89e25a910c78e677964d153b74554c8f38939f881543f820b6f11989589302eac53111a45f7664616999d7a64aa26e4cd74539dd496a1f0fc530415b16faa4ac86341c5400cb1bbcffd2707be12c31acc9b5c94b806b71dafab1eaaa087efc1419cd2978ec1b973336d27b69af2fa85f6c33b73770c0f6b85d855938ed8758e6aa5724b8c0d457b29a9394a3528de99cbd7a875bb5b299c8a6dfe416104a59aa9e958e3828d3c651b5a9a7e81d7738374692033c4c68254d5170204f83a9b8520016466fd9189efbacaa23ab8f962af7d66aec2e27e468b9c326711673839541262a9c823efc5c946dab44b5b2068d61f00e7b0d87ca67706343927bfe4c12d20d69c4a5ba892f97eeeab7b5a45742cc4ac4d37219ad72ac312051d31b8385ca2293415a13bb8983b8457b8af9dcca9e6322094ca68399ab77dbb9f6aa7ced5f224641c3fa07507da9a08e0d180d52585dfb3b2fc95cdc733a573a888d403cbbb71c120baae2a195278370bf33299b9b2684accc5288a3cba1277fd3999839a6ed29bb91d71a528bb2e4f953778ba23341cba4b9b3c17f9a8366212af3b722397419e24874b163470b3b2b7f24ae62258983b6161c6773b5ac90969c03d01cf4669b9d1f46e05705d4f676d464264d7549e1e2c3290c9b2bf5a71132057531714bedbc7a91bc0ad56254d298908d33d588951333b3cb7924abf14b0d70652c45aa62cc3062d851e45c866c6200df4e74a9e559b9e6ab738f2b0da9693ccec3d968a866f0220ca95b7c6e8b04ec41d39c17eafab77444aad4ca3a9d6b5b5d4611a6c074fdfb01f7df68ad2440efc5588f3b4a5c4106efa3b9b6bb35c327465c7b656d1c1c6409993fd91cc20172e53190dad63ce02691ac326904cbb6424c906bd091312c1bfe6969ba6aabef954b5c8d439da5064a248c92988961fd2254479946dec829c76cba61690e3c541648228b59805d7fb2adb6aaba70718985279452a2fb1414e4704ac3dc84d3eb767101c8f4feb24bc8148316609bf963afa826a9b87638424052067ce8fb393d9ac579ab1080d1c549fd5103312a1ff9988dfe7805ed906fe9228e25942d49484a4510e0ff9a4a54a22cba6be945126ebe461c5940a74e1517c60603b2651e8371973da7051eb7197713f5583ba51b92a9eb3179b45a8a8a5099b40c29f59146f25a563291364f236038c79b784bf09524fc6810f91b777bae252e5b723e8059c06157653e335549784a15553ff9a7a29407d87725aa6b7a2a2669cc776bb810672967cb5b8b9a9ba751a9e69a8ddf796b1f324348712ff0c23f49a1debf210c027995b8a7cc5b288c4c74218e5086112237128cc57f4bfeddc21ed23bad00c58d835b5a3f0c8fdf1001e0ab26c2cad47d5caf2252cafd3520e36ae21119e56fb456f277132059ca18623bfd994878c794545ba4a04436d804231f430b12808fb01647fa15d94b975bb6798ab7c3f6355b9bd50bc1ca00ee76342c8609be0bc893deb398b65a453ba08bef83b805b61945229d98422f59c27e86022da5620d737867828540c20b097076bc6c03e5435aee1b9af19958a7dfb921da414280429da389eefe23fc9578b714b4f2e5b19b792903ff45aca045bec0b3d83c204747a2e24971b440c10119941d9316f45a87c4ab2ac0f7c4bde9bc8ef73a7f42513be3420c56720ddb984cb173587462aed9996d2a848d11344eac02351e6c5a18cc7ae813bfdc50d5b143f4d07ac72a213a0577f9802043a585d95031d017b319358a24b06b7c2ea19f22b6634146cc0a123a8051c51e6ad6a956b1a935ffe00bc65c44a60534d1375570bc036edfbce66255f523bb377b2256c29b870da2c870868299828f6fbbd8e0a109386b8d743a6e7a38384d5933e64565a037b9f520ecf8466f2073eeaf03d1b606f947ca2d2ca49e4b41de9011ffbd23920c0d2d0cb20e3a9c63bff3e047504a8965639e8fd0db690ffa1e791fdd1756ecfaeb695001ac490f36c4638151bee98d367fb7adf0e06a470844068af0e145e44aae52cfc609e6f47fd7a6f6af877190ff52256d0ac5b05b89c3f449f +ciphertext = f10dab8353de2ee40f5596160fb8f0be1722abb0207aafc3c475de6199bf2da4bcaf41599880c5c55d27ba1d6de27644a8b42748885222a8f6eed81503421dca84978fdd41f0380fc9b43c1aaa4e4a3437f3776d0f06a88eabf23723970ba13f127ec73d37ecff2593627bbb505362b29d8b6c6dc10474b373a7f5ba819bda564e0d7e24c298a557163309ddc91034eebc1a1bc4efa22909819f7f47a42f2deaa4025d5296288bef197c7fc71b4bd2a769a7bf73883e7d0fec631777d560b74a384a518abd2f660be886618c9c2ff82cf557f2c3ccad1dc29b444fdb5e0c6f82f111c338d9ed7b9a6ad148290786644b9107b2ccf3e78b57807e3b77f2b29bc58a3abca9505d3760b71091d0f6d9cf93a0f5932a194a25d3b87c5aafd8b7679eb75187b62f85fe5f6b12480f34d91b33aaa3c4e279a7b6dc837f203106248a49b9202e0676a6e697168b357a07ff4233dfaa42a2fc255220c33514d65ff3f7f8a41a9982f911b918e720f756b0558e996266b26c4dd7a95e3a7ed8b15a07b2b560276f06eff062be366108b7d6be96fdb25cb210fc1defff0d89f19797d4be632b04047f29f2d6a8485afd5303b1430e3cbe052ce2fab2b575fd07188832661059284c6bbd2862b9b707c954ddb05e7cdc447a7f0e102e348f2cb7a6ff9140b80cbafc20eee2282ce3188549f1f00a1a1a45c26d0de74dd818cedade0a1ab1543c50a05baaa07cf5544a338e7e1f9204b8d883d9c14a6ff983c3012b65b781d9bcf0377c9d8ec7167adda2b2582fc0ad2ae9b96b6a92e393023e785018a4317e69d852bee8566efada3e6de2a290949724dc0fa39067e035b3727040b2bb96be824688e4ad0b8f929987af4927fbb9ba08f49dbab197cd320a276740f48657cba5a295db5b599a3a15e00ea17eb9db3d91929029895912e11c5e0d8550343c4b9f414fe0d4517f3578ebe5d76c78ebfab79c1fc6b528f693a3d58fc2b735498d68f137530e5b992216ba093257425c51027d18acff20f980254beecbbde3c87ba75cb4b3718981bdf0b4bbe00eb30aadc8193a7200a5ef9a3f1361e724dae88fa0e9e329c5fddf8e1da9f77d39b512c263380891d57a14003ab607f44ece6794a1ad41d0aae15aa7367e0a74d04f0138124d583bcc76c9f79334ecd7d8db31e70de23c29276fded2afc2495ae70baaf0ce1c28f249e3d21ab72129093b53ab25ab2f6e66e022dc23c5649b210b208dad52bae848f0522f336f1cc732f9b0d157a7d8059cc851853b7fbc5865d6b79863358284f6493254df3fc3076b443e0539ca8ea7d92f2f738a8b58176829b7c2462a9b43171d4c6a857f4a51f1fabd691e50b350a13e6a2042e7f52ea47d810b77ba11cd0facc56a47b03d0f829edb9e13e355ecb8583b12c935a177191828317856307537b5d4457ec2eb19bef36c67499cdc0d0d5a04b7e80da3c0f82f838154f15106515e5bbfaa6d38a9ca997a54990f1f68cdca6d9512edb6eeb5bd67d733286c9a14680f094c4ab6cce15b6cc603 +expected_result = pass +expected_shared_secret = b95ac8b73c703ab1154152b3ac73f054596ed23d3be328fbe20f936ea95fa926 + +comment = Official test vector 29, seed: "265eb2de7099e4bd5614e5de7f0c2a05c78ef3e8e2dd4ae4cb70f3e5e59c8d1d88248303f07de0c5508652da66b47222" +private_key = 25933617206ae881c4de291b4f269f2e51897ff29d3c6803e1a4c58e53051e879f1af333393c75b366cfe2e84cf9cc930d1928298897480571d7050751601bc119b1071412efe8873ad325bc00420d13a752d33087bb6f884628def98f4fd21d01113219203f93419875c91cd33c7976b7a45f510f70e6002957ac49b862cd35640ce84e6b989201a74eb76422f88b31c94acfa811605a32634199be1639a50b709e89683c5cb0c975d627b76223ea48a2352c8bcc254abc60812a6a5ab7747ca82073d1d31fef708866a9801ad067a6da0d848c409861c350db559a0ab1d91c9be0c149d6c241a13849d9eb2da4b9b9b30b348217491449a43ea4544467824ff954c4869c8dc0b2ba2744c8d38ba584cb78ea6f6188bcd090267ba46882f16964aa003e2c60105415f937cf13b9cd00456d3545bc5e48b6ddf61a14eccbac23bb1d071bb14361b4c9acb7b48805b7890c3676b550238391b388260cb0e2567f725b0382c7174440d82ba8a6d226d325cdd1c26abd510abb195b73d203f9db7db44abba87581a3c57f079b44a9455e3fa16ec87a0cc14368569b35517272220ba7760a8a0508bf0033031d42763fe89b611366b8b93d2d523d5c872bb99bbb099515a5911f1182404b7b4ccea91462c6a5abc16c64f55ab38a763a03ba48e0268819b6df8ba88704ab4c7bcd8f8a150ca434ab0632adc522a49c0e45997375d69901416792f845fcbc1a18789b22870401d6872374b15c851aba4c3cf5a8930d34c74fd444a2c87f90d9353cd77361e26c99c8027b50504bc5b3f2bc27f3978822113e13d71e19e3915a9a4f0646aef6d513e155b41237b2ab08bdf38322bf4c00706c0f22854d080bb8ecf58cc9b75d19a0185412a74b3c7d61a04dd8cb07bb37156c46221a7183beb9321c58a924048ab86032f54815da1bb33ad4312391c1a6778d9070b1a4542aae231aac97bb5e1a1cf42792c9921313c07aba3a8c15db5d1be417c3888a2e0921a7aa1926044ab865935a2738b4378484b44471da250e41925e976beeca9f93d191b0c85b487badfcec4be7c7683c508412e096ae888bafb97cebd3266ef7397004cc56741f53683034fc3160522e6bdabad190c51f31926aa94b2f2a4506d69705623e3047176b46169ab8a715b84848bb4fb9830be744cad7591dd8d128c1a40f8a5b2829a92177d73cb1f319c0f45557a69ad790c87a6b8314e618444081c221c07c4ba5c1c450b8080db278770a0c110dc386fb8411d4b983503964f7b6afa10ac5154ccea9e6222b4a70e5175f125b0a83010474311f8ef84fdf3aab6d508b313a93c29675abe12cde50bd4b5b7e13c7228d9ac9df569cc1bbc995eaacbc2290b0293a2bba70ae8757c5a7ce84386093e02b3201573c56bcc368a7dd404371453c38823ba4752edb663e5fb99c5e91ca9ba94caebc9d60a6318cf62168a86c0c419cad1bc4fe514a745bb2c81701b89ba371cc1f10b50d95086d99778383108dfed849a1f74696464aa1d67f7f40bbc69c1fd907696d6227cf20750d68a3d36c600448c91a523a16e5c84b40819bbb2bfabb2cb03b658fd0656f410752f52bfc9bba4a3a8d09d5835b1540f5dc673df71540f560e71b4ff986bee57636f904c856ac93e0c18775864b7b932af200251b0328f5b3caa38116c5a187305622b4a152ca337ed7a3690c31161862447b847f5639c5851133f627b5980572023b4acc37c32f6b70b3555e0ec4c5809c9582407a0e59a866991564ca55b21a48ee530676a435d26b749c1264f9e58c3fc619d1a23ef5f6300e96665eab70e7350852115f5859bbf1a8308977648ae5cf5a55c9fb42801aca4f0592254461a632a94a9c3a7ccd05c8b7c3b09666be54f072cdc58d8cba687d609d1f021115085c340153ce63a37750acbda01a6944a46cd16cad098464a109bbb611a83346ce6b59a5f4ca3cbb4394daca06e5708459cc777534eb80a620c308dd779b074c11f31679ae98ae569bbe79cb04bb127208e24ba008bea28c5db5ec18f31c50712171e27042651701c3004e057a6865d54763843d27873220c174c57154c9a9705da162e8685a035b34e15c411fd1b7220c57265c2ba7579f4bd9ab1461650e8027c0ba79f2ba3f14093cab6015d8cc092905a6b8f09dbfd5743818489ada2bedf88ce592396074a79824457f7caefe334fc84869ff43641821ad60e80407649edaa8bdc2fa877eccaccaab8a1f35a1573546ac382222c193bddb31275b84374cb4679a5ffd803eff07987ed085fbd43e45752dd9a32f5ec03e7b74567ed9674e1070b026801e99ca27ebc0ed24742530507e19b97a09877a1b511da3b9835268ac35ae44187ea14b996dd96c35686eb98a81f1b2ad90a80d0c989b12813e7df2b34573b876289e7c79481c7247e637a60f9b2d3fc129c379a759756408636048565cbeb24c2186a875606a43d20bddd8b9d70781b1848be54a075fe978a3e112a567223d21beb3395921d1a100c578e7ea0455949b7b420b6494688aeac00697ae1914084eab375d86243b50a948874dc973b7670c8f9173228b64647e58761442a2cc90165b188b58025f8eba65cc654575a1bb3823a1a29633aaea1763f24486aacafd611c28774c98d89b3ce8a696e29f62775b5d5c50847c3ad4bb968c441086aa070097508da888b5b202e5a3b5db579943f0861a5b6e2d58415019182262c444fabb77679e019cced4e0a3854507fcd0935bf81b0e8500dc6c0b3c154ecba94d166407c5dcc67bfa6aea8b4ef0c53859ba4416d5c1975c1feb6bcad8076e6b020a62b077f0141deb5ab5986b386d51cb7e8c779654af5e5485a969467012c572f62daf788d1f58bf9ddb4bc6e04b00218cb671ce8b2515b072b76cf253a4006ac5437c107a077f162a3984586978ceb3752b1fa1a2b525961f96c63d7207ecc4c0268a354afb00231b1cb6eb4e4a694524448e7a043c22a5bc1094b23d3c5d0a9641f909a778eb64bab84feec3a53730405c92130f756050771999e469cf07cc8c308ece9b827d7558bf882630556150a602d9400e3d4abb229a9d8b8132a7f0c0c5475bb852000b63228c490472b42488aac0ed647b1e834f248534fe2195adf6952b83b6705593a1e53f0315613d2596aad44e27a26d632b9c71e9c9e5a6ab733c7e81e54db3437d894a19b4710a3cd5075602b176ec369f5116638775574c74425789154b0bde48bad6e52c91c451c87b48ec406674a75b0cd39d1173c3f411ad1efdd8bf4be2afea69c2327bd070cd1432c8d2191b1b0a8682caf72df2e0a48513a7358edbc77a615d6be6fe2a7145be66b7c50950a7a2354f7e5cefa6f4a4e9a1c411eb9364506e9e1204a8acb3cb77fbd2c4ed +ciphertext = d876fc40a1ee787db486792f9ed3a749a6e996dc5e20935d6b76c8cf2d6ee6cf6c9c05fa7d6a37314a06dc4042088cdb68599f8d27958ede9a31054cc6abf51dbf7cc76e7d6b20408447469d5860fa09448f2e54efdccc8d0255cd6d7b759b7e665f0641df729b4468789cf480c9a606c8d1860245f0995e972b02dddb7606b85e3efc19a93063d095ff068112c6bc4d2b3edaf8205b76b8fca8e956e3984f945b06527a49121a6f1754236e70aeabc770049bcc240d47e003f47bce03c988e8c1731e85f307d0dd74b8bbaffc511e74d04db81f04b0e0317d57c25d5a11b9128280a131ee849efe204836ab46820ba4e03710c67e79e0466a506c8eec2834f465c97e0118f138e8fb7d6aaf1c933ad13e3cffd84b6b2db732048b5720c108a6c1f3d576b57a7726cad853c31e4af74ac59e7620f87e85dc2035887cbc88080c28e49d986c21a9216ffad3b95b3391a52914ebd10f0202fe4d5c5fa11af3cac6e4a7358888ed83cd8567eaa4fabb73fd6a675ee4490722cd3ccf4fc3efed41ec07a5409b24864004e1ec0dcdf7bc630d537a9e303334e3353994d14c225d59f4cd88466185f8e0c01724ee0db468c2ff12aed38eb4a14ac13a50c7396fe0622704a45ccfa27053a15ff14046ebffdcc8b8fcbf1b347f3430db409c4b7b30bf138d712ca9177debaac6a3138e6651092473d86223943e889bf89a498fb0c0c662973408e9398229c76bdd59b5f626a2d06f80dee6db7457b917cd1f2a333f3853d1355a214509cd14db558afd1fd061d10113465d1682bb40044879b8b64910d19fe8c45d27caa82fd7d1370f7205669e1c62e03772d2a0fd8844fbf6a0d09ccdf877429d59a84efff509731d38bb7f0c17b90eb54b2bef365a4f014e6ca6f6f90b3e8adf99cb3587d7ef7892b488119cad921f0607dc6fb7a72aa5f33e93b6b53ecf3eeb3bd735056f8ba8a003dbd99a3563e85a2dddb27fd544a798c8bfc220654c9e3892a0c2fd9664f33243f9bd3660897bc41ffc7c862a139d1178bfc94cf067bd979ab0c66e984bfeda086c3280c9ce101798cfb73eed86cae129d36d72f79a8ce1114a3e74537e990c53a5b30b3334b1be3d2646daa719dbb216df3536bbe800db830de08769f04a6b874c109f7419febeb34e1e30445427ec154f2fef4a288b070996985e255a362224aa33fa5020d7b0b086e76600319f79ddd8984fc3aacd54b2a47e3bf115c7d297ed410649ad557e87f880c49cce91403fe5ecba4904b6dafd2c273d847e440d2b34270a3dca4ab85a1efe5318f3a124058399c4e6f607002314534fd603b4e71819396b5c168e52e3b47d347bb2dfb1c0f2f7c2e1bb0dd86de2dfb4d680d16cf0987d644bb4a38ab0b14309708bab82903f942267de8f6585d82db7af561ece89d635bd61dd9cdae73afdb29b6b7bf118294450696aa15601c2882c9a2d406e1e9ac78a46006bc62e565fda3b5608dea7f528b06b2826dcb07a1ed7893a5767891b6f740b1c88cebb26cc970f28059786cf6648 +expected_result = pass +expected_shared_secret = 8c3851393e5c5997cc95f06da96300f6dd85c041343c98db2e742aaa5f78b298 + +comment = Official test vector 30, seed: "806bbd111f27c2668318387bd0830f65ec21a51af01985ef48d03d64e1958ff7ee5133a4ebf6dbf36329bcaaf65f40ea" +private_key = 719950ed1960ff6c2d7d59bbecb83aabe1ccb569b76cd9b053389c552cb6bf847cf4fc1f18a03e66f02cdb284c15d656151644f78caeeafa8b12cb7c616256c032ce6112735a74285d66a90f3a745ed8733c195f6b1b9b272897520a02fafcb958a9669990b73420bcce373acf5a1c86a555c3c48f78166c0fbb023c49608592261060884b408c9fdb1f4b023506d3516956b02637af26fc7b1d9345f8b54b5af96997d39fa32c01ab64a6ab7491d50303b4e8a134086110d220462395b9d89d9651205aea9e1b88bc80c4c8bac44af4f1886ea788a0b259dda78116051059853d2cd073ed8cadad9ab04f7175d57c3224e953509588e788713d5a6714d0aa48e972f4fa55f16579d9bc6988f562ccf1286e87aa785929bf8266d7e340022c0221736c3cb372b85723042382092545a45032eb727bdc750449c786145acf42b85d4618b0d6f009d0224a816620f1db67f59713090b0849559a51b9589532ce2dc25df8f09aebda932073a2ac2115b12c5f94c64750220d645b34c14ac1b2208565377d61426d7f2a25cbd969a2705ea330b676ea6eefcbbc6cd40da9c0716d147b398b7d469a919d83baacca80f0e41414382804b0a321362e14e766db2450f599963cc2899e1048d839754858910d12c23f99158a9a3149362690a9c5540133e5f217a7b66b0d627321c810f7d1639cca948d708616047f85ba41cee9211df72731ac0986d1c3149854b71683faf68179799b12c031a2a84574b9a67c96a708355f7a86bfabe63ddb94b6c048359481ca7a45cbaecbcf34407d8e378733f812926599df5c156a94945fc7911db26bef17074470a7bd6b60f771cc3f396e847195ce26444b641f91b468fa1670d0184942472667aa76e42976fac48e78da72ef0c207fc7400f92699b46345e4c9972a35daea31adbe87980438de4f211b005c8dcec1a6eecb56d891677f9006c49385e8ab20a19b74325a9a95083bc711537480db30719815352616b2c5721979bd4267fb134188a75b9cb303215a76a246d8f69acbd173d069b2b99b727829aa5469a0212c006a88aa4a6b614674674fa75500aa294711c178b741b0275280bda27813647a5dcac3a258991db4bf436c23f37c697115143a2755fdc199ff32b19209d7ff904feaabff7383884c1bae3c0cc20d019066653b99c1cafe366567c9238785b0f0b4d1432a9e02ca2d9a3b37d84646b157684d7ac720727af4533749a9ff99bad8f3877dbe5cff9c75b38c4002178ce30773ee36a14f1497ab386cb36420f04d85c8312ce25b357d3108226925f6b85c7a3729064f81aa66336163c00506bbfc82030f4f33a5be7330926bb3f849d1dcb09f5cb814ba8a722506d0a037e6eb26216aa3c4d4c05d5cbcf0358501936ad2beb3563c341e2315de6d68404acab0149bafa84491ab67a2dd82972220b0df528da7c4d441c8cdaf508cfa2c0224932e7e5215572aa433c9212022899e43a93cc7c8f4aac6ed5acbd0162e4da4b897b7bdcd72a0b2a2354f61a6c211089c11e476715f3369859c3021584b6593b5784344d53b40da0725a90804c45d02f6eb7670071660478c53281b5e290bfc77ac46602b530b1300628a7a4f20ce227688518c8d8dbab01f270c3131ac1586bb783b35db82f3c24ae2b767e2c4a7d15c2a86eb19fdfc41113a7501367cd70d73d0f63705487ac4e0bb1c84001fe6657610c7d64fa3df4538bb6069128c4597ec9b291938ea5d7cd46897ac2179b52f1cac91b6c36f37a59780e454c50c5dc354b56a43040804de2394bea14c2d385e082c5f181228d62307f5a6a1aaa1eabb84f90f34310844df95a4e6d423d8c993fa7f390e6984e482024c2968254b54b7d3418d6f859e295665262246e1bc8cd6c9b726581cee69140f85c02024c5b59aa0711813d66433aa384b2a4a3447939378a1e6a98936bf04ad075981d93c53e9635b5e285f96755f8689b5ce5429142af6fa02edeb1a719b272f6b0a6211a5b9807ce6ff368739b51d4d9480bd884c8b456569027b08a3cb928645d450c6264c5fce2a2de2b241f965034a08716649a3c71020a6986fbc8bfb5b4a2cb162749264cc1e44bd66223f3db1b9bd2c68744b52ed7bba0b9773df128883110d2cc4757dacaf7f4c90fe02884e1a581d89af687ac79444c9d801d156325590a3a24441b7c2c893b777386198c16374329e640b6a439fe5bc71ab3ae195575a71cbab773ae6f0b5ab2d750d222a5d36b86ea2aa2006c54940a5f843ab708d19d5937643309c12d522dd479c3b2d57dd5696d25615abbb573fdb62eee5c6a6546cb1fb188f356800ff4177c69b636cbbf9ee9a7c7d512ca156490c96b347a5bc2cb257a061452dab5fd15bdf5026677f14967b6c825d03eb782cd0422bd1078b7781624dc318a33b0c437d6c35997a22e30496e876762ba5dcf5146c5188dde6c684c265a8f05031904572f7554123832c78767ff4b5ff525680c773ab3ba1a93776897d57b0d507b9391712344326f090b3d964df8c293b6638fa36815c7cb9b7962956f903f62c4ce3d7646ebc1a8ec04a815191cb4bb085ec8693f2188f490731c087c23a8bc7cfb32fc019d106934b2d17706526cc6f787be424bce5b26329591c47402d57548110ccb42955c422323addb4987fb0f3441558964bf14021a54277ba14c5773a10b81c1427f51173f5c6cbe1b7575a4b6766ac355bc443e479a2953a51f7010f7b04b23e0ca93d08836432e3ae5a1a6bb62f5476c07914f88532cecd00ceb340588ab675f93c286e7288da1c6ca3621ad6a4ae1fc64aa15b27a7c3eabc120e7460737585b5773ab18e23ee185c900ecc3b765983cb807e2f7047e6c999c6716e26801ea938302abc312aa797535358196b63309846675bcf1b33343bc3d4d172db81947643a84fd2173fcb0477ab87b57b55899a308d51311c9ba6916f15947d707d88b9228d0488ddaccb25455cf782b7a18264e55c9b6798f39a53f53240c82fbaf461364cd5202c5c94cdff23e0f731624e69310e5b47964b2bfd3a59a5b0d55a026e260731de346f74938abc607b4f579b8b200ecebb633614a46983e60e442a4914c93fa62219025e4a99d71032f0b00906126365c467e0a235570a544a7640f23800cd5f2a825479a632343f20801f1774f0e8b7db96a860fd40a43cb7abae76039c6bc80b94ec315ad49e9904908a20cb444bfe219452c464eeb2914ec19031152cacaa00dd541fde81ecaf1f339e468be45459e708bfb464d0c480a1becdbc021a06af7aac4772545eb2c54df6e9020e1e44b11b471dea97a382a2fe8d1042565bcd51ef21cc0884d68f072d9b5a99f9c7a0a011e4dc10f6b600d611f40bba75071e7bee61d23fd5eda +ciphertext = 101139d23556eb185fc84b7a91052c0739f48c9850ba8f6886b5c2d4c064d37c525638d8a434f902c4f80b1bd8f87a573f7426b109a3bdf6a1d6ed315e459c73ffc28039085eb8f426868a7b45921e05ee78eff266226b92296339fa679def4d89a2f1d53e3d8d868fedade22da561fcb57297da23688c1617e422ac3a855cdfa30d7454920b68ad591dcaf0a45cf95026841072f304c03054c5322684a8e4b6ef489b39ca40df1d7fdf47b73c4e1d82a538752f59521060e47494b372c8d3b5406fd6e5e39987cdfa03bbcc2f6f6a7cf3d77f1f775c22cd11b4a74b8fab4fefd93a9bcf5bad44993057fc2b8f35d9898acb25ac1574462621c29b74ba64f58336e817d5ad2c9df18f754bdbca516a0b41624ffa2f9a8d67f8ab013cd0a9010c21296649bbd159f3ef908fa368e212232948181b0b8679f658ea55064b59a354db13d44e2d9ffa372492250a8dfb8f1adb1e7593c3d7c3a54c6360488e82ad056071d0562cbcd6fcc82015a9e45109b7d49beec8fa187d4a2a41f1ab0928b0c2bfb20b92048ab9210f0a27f258e90e31b2021a1a94fd0f32dc8911b2ae5363f93e3d70a0e3ed6cee2649e6c4284133c9412aedf464fd83c291c477099cb8e1d7ba347c53a99c7f455872a51204f4c30ae0c41080287a5b247619e2713b79e506e564c3ddb3baf52f15b82733a7b367eb808db1f19f079e9374bc06a0bc6d059458e539cd3ace055e3895e8246a9e888226f05a9022ffadff3ab60bd6a4cae8700429162004532f1bd30843a1cb6b72467522c8e41908ec9c1573551e0b2485c287f48aff967c7a0586986f07c1bce12099d5011a7808b629eae7f3c2e8bd5e79235f958fdfb1377ddd4850894dbd1d78ee375ea3f2165b5acc7f02bc1bb54e7ac58a077c513f0cf17daab0c7934b1a9c3ef073e8543deddd3bca0c13926ebd64823d0ef62b15c26532784b323a67c37e90087a1086955087b1a1a9cc8ec9788609bf404fb2553d7a233691501b37a311968392df5704b8513090bc416d39b5d3ea4a7b21eca56c8b5eceb1ffb124dfdfcb36cb0b84a49808c6105087caa8de272af17df3d99f90e482a704bf135fbcb27c068be5b16d6ae7579c0a046a3c6825df0facc8b9402fa5cfc492c2272f7b325b6b71298c471518de97bed53084c8f559c8435a6b1e9a69a70382f4c35f6bef440a5745dcc98623c9bfe3cedc55be17bb22ee5de49d7b9fe8341137f0ac2907f897a639d816a096911c8c4b84119ae14d459f3377bc7ea7224fb1fb218052f9b03f29cac0aa72daee1170ba56939de8d02d24bd4d26c5814052a125256b083e9e59cf2c7252f6ad6d75eaba807cf4620d4145103f105a6c07f3aad6c4d9ccd783c1ceeec399349d877a82a8d25e56fdf771a56162f5d46ec068e2b7ce7ee89e8565fb95fe3599d8129e3b0737be46484dca61940e9f5f438c1be101ef4aabcc5c23f41121936d0d54af535e53f8880c2a99a70d9a41ac69e137ee32f2eefe7d4aca9c3fb747c3b21f6e7c9eb26214e0 +expected_result = pass +expected_shared_secret = 4b681fff6a755e1dda908d070f0d9ac610d85c73079c1022fc67d255e36f1f71 + +comment = Official test vector 31, seed: "ad540a9ce816d6fb1661e5483c44f6fdd00c9e7bd1a8ceda4b4c4d3697d4f78ed0a56954996ccb7da96ecb8f5cb15809" +private_key = 4da026f053c3ec1712c7f294dc891e26196894a1b620f97429574edee9568e113feb564d89a1883d5a0329929ca57ac001925c8d616791842dcd291627d61c7c2c3f842b547f074f46f082a06bb4282323a291c3cc07904079125cd5a854168d83ba8ab6b160b5e1881d25403b297c73048e3298287f51529a8ba2deda6b4d7665a373171b03b1c0baab6482c50ca3a028d485ca8491b1b73767ec9ef8874a54d4ca414895d2e49fb2ac0cc80c9d248b97ddc51d00a10ca3324fa8a6373a99c5dc1bb7a389cd9a3c6931fc7bee05abcba579251b742f46383afb48faa514319b8f9a0491f9212da443acf9b9ce5b29a6e723a4eafba5c1a7b3e017870fb35dba8a69f1f7995ef2aff817907de5c66899824889a760ca4a38a57b3afa880a3524e138b37487b2ee7332d2689f99a5a3748020fbca43ed6045a5aba65f6c67783cb74c217ba987ad381938b4a651b6908fa4f18e6d073a6992160438ba3c9547e4557e1e724192414c912648d25907bd8b069c845465616969161c483927f5d610c815638e242323465839d36a8149bad494b71f1336a3f0a954369d4265b6cab935f06694c482b500cb77bb32c4d805a295a692648a31611b206d06c2e86c61675577053a747bd3a748f452b480028edcbeca8a10eb843ea8a71e21e9b822d80860764d8c5a77ef0222f8004c902c832f1a344758776eeb99c3ec8b24ccbc03f5bcbe59027fb424e6c580cc3b41c041984ea552bdd6396d52867887430a2534a44ba544a0b285c061d7d6618c76945a5c3b29bbbb09a724b1ac53e5954f66708c8c0b2d7da57c62fc8b80e73d737741f9141f7164b4eac08822a4c340b5b74cb5c2d407b9d63365c55c14c5e6ab43a8bc68908c34074a9bf4816e000ddb464656c379fdd829b6961c22e5345674243ca64705212d52e616664587f90947feeb4366a7aba98b76d9f79a1ecc4bf50571a07cc57e0cb1af828bb26263a8a898bf3b7b0ed07988e82dbe3c0405d46b1cdc37600570fc37ad9b2237e3032bab1a0ae420b6f011a653987305aacc8876ac4d014b7e619227b8b35ba2616c9575506870fad2585549a2f902b185d7a61139c027912ee2a00ee460328b16cceeb259149a0881f8152d563bc0243302d29fb98cc57a45369517640bf0bf63a555a900269878c4ba567f8d376176d6941d34957e1373b7520483394c3606089d14aee0917059227bd848bb22e088def4194bfcb36eaa81d4da713e37be79e52f51ba2c32f05d06405947838625e49f5f6bcda5e683d014a12fcc0c81601b52f80c39b6659606a8fea82c62e061a939cb4451869922083268561e16381b026152170104e11f30b2399f4097b94078adc66f23f85ba6651e861237700bcb1ae92e2bc652cbf19bc0fca0d7f7577c9c96dbc9b8b07b917f258c15661da17621db1287ebaa7714a54052fa660f034f227198ea14c2467b46cf9877f4e0c29962992b560a7db93c8ec13343f734d86bc548246a57473d1285463d0942f288245d933ddab7a09766a9f8c178ef539f9ce9a0e97364cac0366b5b08b4c1b081e01d198c2aa5288617a50019eb3a40a300af538119d733f2544d18b9094f387a3f4c17baf01523f1455e55633267468551b3ee117792c80c1a802230ac805f769807976c06399b97b3c93fb83bdc136cb3cba70bb4ab5f11602e977ed051115508668c244a44e09569a13507d4009ab72b16cc3bc615c12ada7c56d50ba6307d00801bedf8526f0a9366869a4830314d162f63ab8f51996663c1138641275e164ddf60c7708a75376bc235e16d5c22033de1a149153d1868679e1825f638967becab5b9644a6e201906771a703b7844cb5cab61748d202d38b5b8f03cc45626027895e23d0c1c1b526c6d519620436ed593b58732164a39639c813f6032eb902b05db15c5d8825c8b11815768d29522536698a751bc1f9964dc579358adc57eb83a0d2201b9b9354b1b39c6e7008d5f3189902964973af9a9c694eec1298d68d3372783d34700b0280d692998b49a9bb76293d7a95363b317670352a71822f415b1c97742934713c5995fe5ca9642c3ac18b73c43357d4d497b3905df7f58c6566621eeb25dda29d97b598970684c5780f665243feb854f9f566177200f9331ce353cd1a23cce8aa4529bb667d1b9e59b1a312a7c6ff08871cd95c6934419f475c1c08395ce1a3aff83dd14784303b4ba7751054aa59f5710e4ac6039f3168c1b601a5278562b525abb11e66193dc9d34446bbcc8163578cb8065f89b9f43407f79246cad2b6b8b40f16b839a060a95b76855237bab2fa315db48e40842f8306125fb04145356bc50b00e3389dcca26ff048af5a730ac573b5b80331d2597c4188227682075bc0000186b8fd26a383e1bce5c19f13b18cb21602f2160dab202bb07b63d925b71708095daa662cf25dcbecc99395400a79842f5c40e79b46b5384ce730439f537bbc8a8608f61520e120ea9843456118a0a4cf36384832b12076044c65f06c8f8cc31752469c8a1e33dc529ac05485548a6e075f46a089aa8446c0d465bd43cdf0343acc9668fba2a7f7191a9d29be7e9300cef33d13a11edb2b409de297f30b8a7b077fd4ca4d1ac74b31092aded0503ccb5818d1834a734e15b74d3fe550ee49773a800d86f129b4e0250ea1c43da3a3b802b0757c6401ea090f98a28291621341a9d98c67bb001e46e89973f40c1c4950b0e34f07772ba6379fb6a93ecb57369b48b3aca26ef815c615b4a97ac2190fd2b15e83aa10545fb859635d084a57b0268ff085d9ea4b7ee1763b914e67b33dc46037f39815a1f8c58663c88662b91bab0db6758288c682372a269c64cf3ab5c46de2c8f0f1b7780a068948b9480c6af10251453c1fe213855d74675cacc7b162917730ae74ec7a8e7673a7d0887edc175791309ab28e6ccc629bf79c6d69b19269a19488b7b88a45a199841916ba4a2a1c2456a108a5cb4de1b15356ca737369668b0b5c7bc10e22377d6b5fef7515b4f348015872e3518c2676079b8a06de8b53bd189ec9766c04c084e74c6e747c783ff3a99b930547a72fc3a179cbd62b52d46207e79e37d65c9f3c4839d1afc167ae4041671e2c1bf3324d875b78615067dfe11653e6bd4dd5414579ad8c942081db4f1a10b0e1054fa3d79af6a285f2107d4232700676b8a007057d15c923a7889f115762b4c242392ce7c4438c68c6c3fbcccae4a071e404c24274f5066deaf5359eb3382eda6d6338f166acd09e376826299b77b781250c2224486ef23d424bddbdcaf7b417da8b8933279b33068f6fda313826c2eec500b224cbe046abeb37a75a4d0a8a41c4f666854e9b13673071ceb2fd61def9a850c211e7c50071b1ddad +ciphertext = 188663b7ec7e4a08f623c7e55c2148f8a6ff30aaadf2adca46e99287a7f8a6b37a1c6036653a321614ffad06f531cd01c62ae6e3491af8c06aa210c42fefe0edb96389306ad1baf1bd911c106ab8d32d681ed8238aec43591644a19b1f3689a1d9fe2a6798a4ebbb55316a2bd3725049621ff553a688e9fd101e4bb9d1c2cb6f1afcd2189990279af782458152379988be07135f061ff3d3af9796aaccaf78f01f4c9f0a89841885b8a015c6de80788fb3787ecb7ef2e36e9dd4b1d3c9df3d0ade0207cc37e23c8f758248a030d7d2d7c43c00c06711d00de431e53405dcccfbe3b21730c453a74365e7d1fbfff706a2c12b060b5ae1dfe6cb211a42a2f0fad86c6b0b2c70667bee5454434093afab1f37f955b895359749c4e61264e0b18a630857c7c3a98e159199e9fb1fa0fd6f07e2c696ede68333465226933c566da073297623168adbbf6d5ad7e9e22bc55d5c2aae513016344a7f2a5ef80d247ff1c71b983ec3fc88b4e2765c0b26a6614292763c14b8612b63ed0bdd43f78b5344f10a28c5df0b635b2f44f9d5c6496a801f7cfa5db18b2018eee66a664c0bac6bcf39f82e00e57a6eeb57a8097af864ef693b871b5857a42e0a99eba019a8ea639895e1a6373a3035bd3148a7b267b5e0e3ac6709a4cfee2085413dfa55000e09b4ec889f2f5456d4b5b9f42d23695e925643f9ec9b2618e09283c99b966f91284e176edc41265d3bb436a6771644460d97ee02afb7f1ae14d06bee9aee03a6279fcb36d069bda332d586851d9e32e9a58bc12104014cf7a167501b086e120a97498d0cf3f3177c2ff3b32a93916665137846bc21545930423e907329d8b57c2ae202f7a7c2cc9dce39a681e6108e233cd955914047a5e20552c9b3a482c8908f536feb396406001f9bb8e24807dc931798a6454fd6ae43600717ef03bef80e6fa53c2b9a74211dd82ce9aefe1e24f6a4f82b6d2b8d8ef6975c0433c14605357379276d58b8ec11d55b4e99cc2d3516198f4eef6901f70d6d74b96c289496adfb0109af4e3da8ba074f5dc936dc1268836a0bdc000ad8dba6bd9c6deca8487dba9324d07e66b07608dd4d884223460f0414228819c430ac30cba5825e889a07eeb75c8fcede709cb12dfe76381381ed76f89818c4d3e177eccedabf6a7ad44888e298b1eb51dc2f6a1d6bc5b0d71a9cc05796abb534330f1c9dcebd5a8144cc7471df50a684b424d8fe1db0f1351926f6c45c1fc120472f0a35a8332fed29b24c7534b90439629ff7ef469785d851703f070bce95d923a88bfd592cba6975619f07f9aa96733eaf9d3e44adfcee1a226bf5c6a006ea58753b9a1b0679a36e619bfce738b2125dbe1a517c6a4ca05417e267081c26653510a1bd1992468c59f6e56b857c8e95bc192f427c77a6bce7d4af50ae875e7b38aabc08aae9132188029576153204575e28035de11efe643e5a5195a49d50d590436912b25310bc4ac0d9e303d6e6c56583b9e11fcf15fc621e45fe7be1c118896918cb09d0a219e8d5c004 +expected_result = pass +expected_shared_secret = bbaa67f1dad879f2fb33bd4ead45aec354bc8f05c7cbea1e433509faac022edf + +comment = Official test vector 32, seed: "288a5f2684d862a86d2790afddddbac6fda934ee7d2e6da1508bb550838609e8107312b28e00a6c01706374ccd3aefa7" +private_key = 1f83902bbb77a97b032277079cd0ca70d09d57385ce5c1b3c08b80ed95b2bbe70c101cc1912b71b29b87dd08254b593d616a31ff4957c7c0c325f82024f6a7b125b0ff799fff47afa6a9a7055382bca08cbfba71ea1b530bda5a4548922c90c6de8927494370efa6c96780086bf585ae6534dc05344dc1941ef793eae214312a371ecccea680c1a166ba97e128064748269922c9a19cee4b8a669abd146491abe31a57b724f3a173740269a33309f651c934e09a564627896150addb8ba181cf2503256512b0dd5588f4372781f35cfc0328c0dac842a1b3f418b6e8c567f410568f2c6be8eac9bab558deb08389ba08bbaa50e1ec5dce044efe5830743402402a167a9369e1d281d37713eb656662600840409c4fb971c0fa7771ba53b6c13ebffcbb85aab3316a3a99a9ced8bc4596932b3d052fbb13a5cbfb762ad7a08ca4aaf33862b6325baddb0e56d395e8f92ebc7347e847956b471695c978dc2431ef7286c0e0a880f7871bb05160209900c0c403da599b988a8ef0a716a9535b71002b3bcdade60053f5a8bc66419fc907f1ea718b7bad6bb76fd3f710e6778587c36ba5e4c2d7796185bb72c5fbb839b6c91119ae6c954e9b66c3edb500d884428be2c7cb6a6c86b807a6059739e23f70433d8a7a4aa768975aa6b0c3924cc8827cfc731a464121090a685820068019197f489315a2274a7133422b2968830271fc94b1c775c5a21e3b07bce543b32f00b7250cabd0d04a2529347848830c975261a54717324533ebc0ec627f2064ba693a9bf9a16fce87a8d7270759a06c00eaab71a5cc25034120445334a39d63baa2ab3254d77a921209750f6869e6971d05da1e1bb29cec9cb7b4962370e5c139ba472a75114b28bbb8e7069c5a8201b730db571c1ee0b10e1c42b4a97fb7f7ae54670d12859d68199443157ddea85760445895e7175ef8bb919c7213f427301c4f6561afffb0b03cf1ad05613c52dc5ca71a74545abe77d239576303bc9678272873d9b28f4a4aacfdb46940f59b0a82a75642a0cd794d63d03d43f65e753a6aa2b58e0cc664a48ca3d8a3b18c7b05cf8293d3e23fdfda93506c831455b648e2017fd866c87683ab307c6fd9cf24212509d777f34b0618776864ebae9fa5318e739692c5aa86648d49778b67f81347b434ccfa990ee9a79de94c94054e6e4a8a152b5f4757b89f075a27ac464cd1801d02ab64bbba4f932c0003458ff73011282bf444961c54c5275408c4f79c3c553424aa4aa13a53d59b1b785c0ffb686fda185d5438af5c494d98b80381c821c493bc0e7797cd1995db681ec9e18859a9229c497cc251af12d9cfebc6a19c599c9d364e587c7d32245145a60ceeb54cc7ec5b541b71dae959c800a747eaab53f8cd24365c91f53b7b0b9d3630361d41ade4c82c85e04d8ba243763b3f9dd65d60921f962337a3421051d36889253a423939abeb0ad962ce1e1a9931c960d9f4948723ca17a731adfb4834615693f622470225cfa7b036b931a2240564cc35e59a7acae48707491576cc1410a304e0885534f577692c5a237344a5f674ec7c45bda3242d70b004d5ab620ca2b1ac0a56c0cd5b942529b054e0f840e3c1837e0053539b4a420a3005a17c7b4a08178b83f8540601145b102970b3fc29f30a4ca1a8a5bc4164051931ed68a59efb2b50d549bdc1a65e9909f5aa690b0235d32b1c6b2886ce2959fa189e2ce24224e99255863e6d964d4f422c02646a461bb5abf86f4b4c0975765a5b0ca01081677334af26c3467da771cdf40ec4293608801cad9c61d5f80839774eaff772b139051beaa65632120f00171ad020276a1fbf23517582149ad2c73450b11315ca4b244e7218800350aeb5808da774030635bc247508144740634ac4a078a5af2816e9206a645287de06263277242dba12af2a82ce13ba6787c5ac3020e5d30cbb92452985ae41027056f492bb1a5e23332698240b5038302e552c5acc0443a8795804126e15369ae96cebd7c9765233982458ad6520550baad77bc74296badcd4cc37240d0163caf8c806a0ccc3f4125a0874cdc1c67e4626c9c753453fa37b208caf5f523388d6308248b7688c80f6c925895670a1397880933af0152da1e54f7a7b512aa87499f7a718e62a7cc5bf5687add09060426b0d3cd292ab9b8372083ee462182872815cd740fd69acdd24615110bb618ca1ef662715f028864ba0872b8c199abe40f35f91906a821b8ce0742f931c661c65aa2445371a300e68f23b767382f3701ce685cea5f59c50e82e45234169c3bbac814ab9d68f83842c513a8faf475590b3bac2e3a4685b8f71208357d221ae41310e8454d315670c3a3409a2a95258b9057b42def7a7c6f588f6da61183acfb18a7cedf138c7984b50a940f17c687e5a2f83451d94398f4c82c93a375be195b4b219232e9a766e77040d3b9125e70fa4097d807a6d25323342508f2490a59702575d64af146088f59802aa2cab3537a8b4e92a10ec447bd89f9fe738d92a5f83c2861628601e42bb427b87c2153d4bc44b19413b79baa5ef55325ba8a42e1a88548155d03ab116e47ee0455f0e5a71bae3a03ef476f77a9a9cc6526df1adbea64930b6995f60181544356c0982e957c5e5186f321b9467d05dd5970a96e226c89673e50a056e7c0a8027aca8a5cd93723353ca1991730dfea1aee943cb0d62537cb5ad88c14f52a78cb6228ef4750eb7db0aa831a4202b178ef47446a06a17e7caf5274f384b36832a07ae0a66069bc59fe439f7b6005f064d865b550505210768bd636c61f0e7a1bdcb3c3065908d51302ee234a3fa113a1a1a2a618750075a6ec277cbdac535fc1524a62e3c0601aad1c46026ab6b8495c1b7093f776f9e6b3b533267ab99801e83bd18570166387f14ecb4d279b86cfbbaf90649e5c514e432561f850497d47c2bda1bc2c398b306751991392c399df6f408ff836f989c41cf76234b9445d9f81f4aaa987c1721c0c726efe44c311a589abb5e0afbc4add9bff6f87597a52e16a53d6c3551b7e6be0a1958a89a739e0717f0a86be0385c5ca433b68ab9506ba3a6e00debeb1ad0519e228b5b2d9aa3c9b4a2bfc8b35bf0a04b5a9d0154aef1a9478df4c8a0354f8878331f76c8cb6851940c996109113446367497cc73d395b34a9c7dd9621c9bb277bbaca6d976c3e65fc3fb4588643ab523bb35f551f1f30d0cd1c40d14b09429215e0c5325bb2b069b85c9e0bd9fa841771aa7c9709046b442990cf89513930f122152632a3c3d7c15c8018e1c23aa33cb89ad61e27e954728e2e2e230c94ff009417d7372938e2c29c38af22184eed530fa1f36b817736cbc5f7b1dd6eef5fe6332fb1a598f3871e5470d440fd2ea631da28a +ciphertext = cea8231a59705364e56bd14bdfd745a5edf808a710ed23de250ce3d4cd42c931ea20d4a888f594ef8909096758d207e22f7e6f1a0120d496fbbe491a9e7d02f4a332ca25322e7b3d8c5cce294b8858660574748a9eec1a832653b8586c29cff0c33424fb9dedace9204299642f9a34d7391e04be2d2b0b189291373f6238a5e47d959e8b6f1a7e965ecab91fcbf4b5fdd264dec224e291f3248c9bab12c2149139ce73d1409b21c91f02cc9ef9c41124c15796e1a04e7e57d727b9b3d54bd51af1abc79fb6316db1f23ca3e29fbc4812e828d2038408ff3e9164d503ddf3a31ba263cb38ec6b307f01291d680feb21730a7bf3adf21f7ea73e2cd21a2ccbe3b1808039c00d09f60a0e54775510e8121716d6c25ccfa1f0b402dd186a8f623d66f685913fc597d24f63afa8e5b88654019de57939ae9c169f201bc53eed1e5c9a6bf60d7a2ce5d0ff33cc6f9143619e13fcbad787bf3752f1563e9c3d201b8716eafa70b15a7adc241aaeab81e0ddc1945beba409b3bfaab9252e30cb26805e6b42946023c9664764192870cb05ea9bc0692c8ef1408db412117e2633c011ea6ab54ef7750670873284484c754a2d374a381e253d629b09c5402b12a73b90a1c70a4d18cbf3278457039601534745b5bc4a404f17184de598afdc6c38cee8d89af50473e3748ca229715d575ab7e31a05316c02df4d19a594056ca4c250402fff7367e5ce0bc30910982b098360e00a44652e4734e14f490532d5f6ef377d48d69da43d5bcbbdb679e8096298f2e9be4ad3a3dd322f9675f608930f7dc0d00bafd4d2253eedc5dbb1389200157d7b0fe5b49c5f2845884616045d2ca0d4daa45a967606c0e4319e21af8c4eae03c0473b8d902ce55cdfedcec31b3c4923ccb4563834d3683ee3750c39d1782e091862e08dc99e9aa709483e7e0337047cc9ccd4aa1d6ef65a4a4cd1817a85a5a7b0d59c9585073fa0fcde6eca76a83d1cf1f734096d767c9df176f0ebbee8dbb511db823a350c671739dd50913a4220a6d7d9f0d98ada716ac2775348d22f2864b2000adeaf081d730d02246d07f1f1b18d5a7578458387731150eebbe79126ad8a63a2562d4e937c39b9f99ad04df3abb938d29e5dbd29fa640fdd4007964c9e4c27a1b440597a3415c789fa6b241bc7d533518a60adda939f62872cc61ac2e09adb1d3c6004fbdca01498cb37538d5298cfea058853b7d55e0bc3d00bc4ecadebc7ca9492705d7c1db971a8fda2e10e40eaefda7d32338953f138f03fca15d2d0cbd1f89ed97723e8684eb6e4cfec9aa81182e90c695e0a747d2dad465d4dfb7fe28afcfee0a1240858fb6798651a326e0e81e09621da3a529405daceab67657fa4af019191f0ab9898a447eaf02d072adbb028221b509235aeddb4f0d82e84e777cc2ef6df4d3ca6b65b9f40e06db24b62260c44ffa7eadd11e1d05eeb0c5fd163f8595f15c2ab7d3a897341c7bd2c7ee9a0175c113eb454e49f7955a8c17a7a02236778ba7e366d3c1fb1bdd6d0e884959b +expected_result = pass +expected_shared_secret = 2c7b983d66978be80250c12bf723eb0300a744e80ad075c903fce95fae9e41a2 + +comment = Official test vector 33, seed: "4635dc5bb92ef98cdb6220df0dd717c7f8158375eaa2b78fc3f0b58e9c9653e92684cad3461d9158a481da3d14694c44" +private_key = 8b78635ac351c94bb6b1d2b861e4914dcba415f66ccc465b370578e136330a2c5cb0ca2857e1cb733a75e5cc4fcdf7a12580017f1c0ff484401cb23318a98000637b3d065608678103940d8ba75ccbe58206c130ed62bbc0132317b6556a9c2ae8f71a43712002d795ca52007782652d291dfe535f75034b0d624277527a6ef623168aacfbf721a9e8753195b82eb9855467322aab0ab1701546c470ad139944b6736e1c97c9768370846b45693aaed9c80a7b53b863830df61fe9600ad5717bfa2c8e59e30c8a20179b27b59341c855677880330afd1a227b6c6313e17c46e87d109a4aec4c1795908db6046598483159907a667378f80bcb84472d5a748043b1bac10ba5bcf61b07a2b13b12c347f3253e26c25ef0af6a003a67b0bee98a7c5a489c9ec9ac1f042c6f2bc7585cb01bb4b55496a93de903ec974398e277ca7cc25e3265a879420ea0bd8451716ac21f1bb806c12b3488d408ebf18b89b79b1f8c09eaca235f1c165f9504ff987139590f9977513ee037249b4e25e51a296526ba76cd3295895a571cac279bc65642cba501c8f131eb52b5c7cb73b17757440b1ee4e9295d404177e542bd744aa587738bfac0ef3c1fa0f19b0a5c5e28b53c2340c7fa061ad354c85ad26993087b61ac2002795d5ada7a3e6747ab8110367c824988ca705b818d7a921dba33371405ad235b18e463a8ac88180c88f071579fa5ab6d904a2f53b03f7c7ec39c473632369f984f8cc66dbd1924206a6376706ca36601be7b16edd17e93cb9a0437b3615374329b0712794f5058790d88182be4863293133a83aa00e07c8e79c6f12c33fa9437ed984a1392903da89bd43184db6c8dace3789af5cbba092010b889ca98af99e5b0b3d4399bf61266e833a55a85e11784708b98efab223a27aea1a16e76a73c2027759fd97a7db870f9fc79afc89435d092db556e0a738c133b259f86c98d78a43a49744f306da8cc6c9098a5a9cb091c9bad94970f03b543d669a9aa4944e0c08ddfcc1d7d485fa414b0765a88f175ab6c94b12a2177dcd4998e6aa263ec3fd5baa2466ca04568869466887f7bcf636c7a1f084277532841f51c3edc5c1873bce0f07a8871740c4aa82bb5ab164916082b795eb0660be32da9972840c927b7bb4061343d56757258ba4c91624f21da11cb265b00b9aafbb1665679c86eabbda12b74f1c5917101d0ea2bb293c71ad5b556369378a8d5b7297c9731705dd4493dbb173ad01458686a93287b6da0a6923b913989b69612a915a03a0962379bbc466a03f5517aaa0c0b030c6ca420636b2ee8821916e9c7f2ba228bb2aeabbc292f6c07ad85c6f43ca90d42629759536046394936c3ac5ab979d5cec1a1cc19b5c17edb47b0f47f34d616027b29a12725bf14b62fbac4f2cc6eece89ca0467d4868c11c17299373687b657d132c55785080f5b87f0e3c1504673825b98e8a0aa35f2c8d84f41b060ab43a930e7be1c9d04746169bb4ab403ed8c74aacb868b4a93f1dc55144738e2736749ac64170ca7d0f0348a9550ee494466a49617b541068f2c57ad4108ab813db58526c7647d55c1cb657ccd1143343aaa8421c23bd0c822f763b6a82b7d0041648a143bcc43163992e0d6a8f811b3f0d30807456c84c8bbb008d3b126a31424954cbc6cdbce91e25b19928f4a41b1371447ba3d173915580bbd7899e9adca37b4b5a21e715101717710bc7eec56ec2e58002127d1898bc55f8a3be385d607b3ba6561991ac6f0913617303830da25f0cf0ac14e67abb8097d17b0ad1ea8c6c267adf51a15a9a363d7aa5c8ea535a89115c984ac5d6bfa922c6fc44a3b35cb667f939fa6b2676ba212c17bcd25c82e8172f6a7506e8b77d82cb21d7066da93a7eb3cab8e881a24c7592bc6b656e459af33a06fc2846d71221f1da641004b68bd65dc28a59036ca678508614b15a93e74f89b8af58200d50e718dab1c41c4556cd47b43f14092ca47397243983406e12e423233c90cfeb661a32ce65ab464db58c922bb693f56553961868b064e17a11162a7f0e3ab0b0aa76b8494ba394c902c598c23721dc16c51d46b8258c635763776b922fcac747985b94c006696f18ba49d0c5eb0525cad1349745691320969b6bcff69c30851b41e66aac3353c6894ab0097b4ec49783cfe4960d61a6f94b317d488d2d04a8b42c7fb7d89d52d89b2de30336333c50895348870bbc311611f27845c7775128a9cc831966fccc06292d86b582a18c6ab2fb3cce03701ba91047227a9fcbc6f16130710756c5dc288ba92402b5b7dc90c39193737c206f3f8230261852f1694258d47c469c7452156e70634384825bc52b03e90720066b609a4102862433e2621987e23af51121bed807810501200b776f847ff615c0f594420dc29ca6573276559c1c84b0723569dc2a76728909d9d1279a8c240a3979b0b44003687a412389581b8ebf0ccb06c797f7f5815ccbb434132ed5f1340e2c669430b13a709f7d1612af876454f06ccb7841f84c60f3806d5e423cb34b23bba90ab630403a46783329707388a1f4232785d4723c993cc62284d0e35242e52cfd6981268b86f598b11472900f83333c48627d402abba59c6740b4a40abc3200b5d9e13010fb4dd6bb503548c777256e0729905a89bb386459e0b885b6e3017c94ba93c7518f017695f5bf5b99214c8555bda863fdd11d40053c0d652696286d2ba14d569915e4532132527ce1b88122640ad668a20964476db20afca5ca663c6c17156ab3cc8e4b723b3a5209d2d10767da52b2443764f91a7f3aabb35137ee18a1f744562e22385716892ca77d518c4bec578e0f1145b3241c1831bf782c760f9081a1191812790531648954163b10e6a1f02b2b9e17cdd439c6707aab0df09236ba33d9b271196a398ff0b2c9521e57b6c8833489c5328f4866c14d2cc1ce037400dc610b28cd99150404a175662102f9617205c1cbc24b5716c7b9b0e8635bf960be5b632a976156c64078cbb23eb86b7be9a2d3e12f5b56406cc51796c66a6e871deb601cc767c0b8e45744346de60bb160808210506c5779bc275940e000314f30555677689f23009a583cd6f9779c83530e5b2a5a0a771bf1376f0091c627afecac104fb2ba251c074e359e5fc44dec244ccb78423532a7eb27c8313a341dc1431035162838835c85c677a420b67c847dc6605821587c8064e0bc2f4fe6a6b22113e73519125b92b3a66f15564666023ea99273d0d5657cfe1b1b3bbf85039a8189076a3752784e23d8a802023fd0743eb03d989a6968672e53b28d579974d268132187e7bd72238639c6f2ca154d50d98c74096ec33075d12195ec32a8686d0600e45d4a7f54219b0d7a3826d193a51b9156ecf2edd6 +ciphertext = d17ae2301459a388f0adddcc7afd2405cffdd627343e2d01651c3fce83f51eb81a69fcb5ced2966fa4645360d1e89363c3b8104f2799e7a22591cbbd38b2f7ccb8c699bd1c9ed043415bf0f3186a916f854136a4546742d98b1c36084eaad725af2a92bbe8efde8e66a3ae38b0f4221bd7390fb6e99d4b5268dbdea674436f949b4fd7cc00c5424f83c669b3c2ae905501599bb6961fcf2f92bdc83c025285aa3194432fb7e0a1e66ebfd5089db70a061cd8a44527830139fc40e67985412768e74ad81d5cf41411238ed3535075931aefb8006e90c225fc9510d645b59f97c1165082fef535b25bfbc57c38a6e5030a2925b5039b7c3c6bd4e56e5eb2d6b48866b91ccde538bee232a3ec190dc8bb26469e02025bc5659e98ea50813176dfea7f4087beb9c59f825789bba86472714b676041fc385d4773332bec39b99fec6cba68b3de5ee080fed1a65a650c1c193f1dbd98d555320143d1db61db609ad6541c09135dc0054c4056b194321a63cba4142a8f397f4e8c6f5d04ea3988a1f769e191a43c0743644cbae9ee20fe4b1da409fb8c3bfaa2d3e02efff51816c5daf25374f7d5270a807ae7bc94027f8ee673b03e1b860bf4e3856ed5eae78b067b8e1af3cf0c4d9de86908a96472db51e7ee96fc8f21065e6f3ce849b09644e543b27b4573db1ef9e0fb407045ebce6457290d225d490d209d2b762d08e94ffc36c4e717954ac4376acbd322bb745200ca84c3e67115c5ec5566908083f6f9d06fca56996c4ae48e67182fa9bf7b547252a552e037f387fdf4105d147b9919f8c2f9c588bc7787a75d60b57e441687a15e057a379bfe9eae7ef0f222ce5886a7dd4d8adb1a1048ad15efb70b951998c7ff236e5401110c904dee9d34710a429a8bacf98a1f14d9f635db19edf5bb564c8a598de2bd33de9a33a8f96fb7d1742313578f2f83f382545264aa354dfdd9f145914260faeaebdb769df30203e41662e183a5dbb991aed6cfffca5db84058a1eb808beeb3b9e6ec299dc51a0c5a4e89a5cee1be3492eeef9e9e573c427e33291a3fc1efea7943760ed4a564e1b93049902fc35c282e4ea9b39f26290e6c88bf8f7c59dff676604db287af7e3af34b5348dbfebbab5041bb92bf0e114d12bbee1dce00e33bc44130f849113d80e95438de828684c8da1366fc3803f79e893812e81b5dbe0b417ca3426fb994a5b8534e941b9bbda4d9a975cbca174854761ef0f7e2dd14eec51f2926902aa84479044bc3275f5c612b6ab3004771f6b590eafd45c3cfa3c986d203b19fcddda741d6652a3282133353a66c45bf46cbdcd7f996d3b0bef58cf1e0276c34452f88babe26928e608a880baf525895ff3cb1114a5ed5bc4d5ecfe3ea527e4651743e7a036fa21c2794dae4772162a93968ec11385e2d4c73fc13a212cb957e9b40a99fdbd4dffa137926ca298f963f10eb9db3f5fd96744ed1e8c0f38f50a43aa06ebe280607c14ae30ec63bc4750e31a2923680966bf9973d799117bd0f514bce085d28dd49e3 +expected_result = pass +expected_shared_secret = bbc58d06cc14f9e96a10acb1789d93b93933f1429cc53a1735b3cd995f086ce7 + +comment = Official test vector 34, seed: "5da2c51b4acf488c8bded5e985cc4702e4a7bcb248b5ac18aaba529f7f9cbf30efa776e99f76d5c1686e94f50fb57dae" +private_key = bddb6a1bb704f8b530860b719752402098c84ae4809b01c8ec7583a66a3f4bc290bf2173abb41868225606d54991f5b547c2254c74391717045997a57ba534a97b3605e1ad9f7c6446ac08bbfb1999179bb8f67731a63ce1c717f30b57fd17bc00605e8e14127eb0c26e324aabd45138484a51a15dd2464440178ca7e966d4d58383f6bf9bb2a971729074781a8d978965f9a51eb2729ba8c308474d56089f2cc869b523c41c409507a671f0f3621e057662454d49c49a398343d64cca74b7822d773373d5185426b7b3951256154a7b78cb1f5049df0371b840ab21b83944fb383cc84ad9e24ff42b2731276c1d26b6120534438b029c4ac7c0739453c2860d32acd75229c63a23a7201c303032bc0a410319035d38a3c9802d41a56a8c6c2496db10441a2bcd13a81f90cda2564cc9e4020a47595a30994888b383e996115aa282eac3e3594447110c2d07774f9312d796c6b74a7634b6c0da2291458a35d3022bee048483461cfeb152e1d2ca9195afd1f9aa82131804d35e739299c539b913c54a0c58683259b3137aa464b9c6e03b0eb751999b6c5354d6171c78cbbef1b456ec4c88199764a5761d18c0849c1b0a263ea401b86cba549c712e4a251830f7b6ee16b2bfabca3ce018c3833bb881385c272dee151ac35a2c9561b3c1266855219b0c6b485e669fcbc49b24c50c6c3237aa6b116085085405115e0422d956beaff9360b58bf915654b9b887ad9733f425a5c6990b3f0223d8099bc0e95c6a5702cf5667209ace08fb4697d02dc45caca8074185f54ec4641b35bacd2f0b770fc215fdc171c98baa7ab6c0450ba6e47a838575a528f7be221c3c91f02734269a9425a2edb76cb6d077ed76040a716d39c9c87a58ad8867954c752367a905aa158e0a9019dda50a6213c260f7bd8a0a6e8cf581fb74cb17283f3a1a8aa9a0418c79a948199365a6a1045238104280ac704b33791e156a2377bc83e9b9c86d0a3d2aa3287272be6431bb4e598232312d10d03bcb13b4d838a9a624566c6a25fa44a0934ab6cc333e6d52af3ec26a6fb97615cc3c77102d1a315486bc69c555a3e8271660222a406022e8d97251308a90a15f748153c1168cb133593c1641e164c8a06cc008059c55449413c2b28667b99122ac42b8bffbc15fe395003249c676db7589d2896e7405bef8ac510782ff204454c8a0390c332ceb7a5a3123eb1a1ad0470096058358ba779df70106e24990da77aaf09705110993f16a2320a941d8865b387236cb8528babbf2d9196c15898bf71040d3ba500cb7b1ac85df11003a058d838c2652d4577306023c756ae9715136e91b20699fef425e48953fece15baf27489d929876803eb0b5764e6338bf5970c2f35d1e815bb5b0b1bab630138859b729923343c3d24922a8522e38e19868b8a4585acf14b795ff3a609d93b1a5ccab08f877c5b71ea78c2819113fb3632d5d995b02926663f2ab8e3a73dd6ab93503192e0243f2593618e3a809684bb6a31674e77802828fefea3a50fcaeb1088f7edc036cb84329c988d965071e97c1311643bb1ca2b43cc57c84cd5ea9109ae36de2801cbdca3bb6f977959578954ac17d303841d5726631663f12816edab5192042d43a4271e44d1546306137a4427130c86a2025bcc297eb36d3c44e7cd4b0b1c22005fa702ac12569bccccaf6ac9256a1693c8b677c5ca243b9c8556cb3a268165596fd0470400ccf5e3b56714792f7a87b9e03019751425695ad70e4ce0b2769571901c6c2003b58152fa9757922bd28a094771b0cb1dcc73741b14b402e8ab86dc0f647525c131e9aa1a9729075ebb3cdea4d31f6c3b23a5bcbf74a3c653d4c015ce5f65fd1042a137453462b8710704bea463204c463273bb71056378850ad28f37ede664e38514dd735bf9ab9b95d367c54d84ff085650ad33ebbc982a329c6fe3a516ef387bd0a0417c2655a5476f51a68cbdb4aebc53f00c11e78e5ba6692a516c076330c20d0a09f167bbfe1c956a619825a8305d1aa9ac5736e6d24145924b2409a8688b41f33a181a9e4858325140a797f2ba81d50f21af88650cd0ba8e662077708551a947c97c0a3355852a77576ca5b054d3b0b9fd973dada618bd02fff1cb59eb56b12c71b24bb1f02e27282d21281493ac7d07a20b124aac30b7bcb8c2ff24b2c927d3d62ade0357bbf7c1281fc94da2b21d10a5e5ee07a3fd9cf93e34615b871c8da7db5441020d0522c12711e1963be54739bd43949999083115988a09c6020ca88124b35c34ebfb0743b494b2666ccf5b5235968275fabcf9a054ef92833d8ec816d68c07fc53634a02ca192a411c87dd1f17ffea094b6868638716cf593b33483591e4049e4e7c65c8618b242b17d6021bf0a70c7c59bc81c34f5441b063b9a1d95481e6529602b95f874bf1c649d95a072e70a52e9252e1dd1bccdf64332345355f7cc48eb7dd1aa2f2c31ad1fd58b8b3a711d113c270a90aa2c5c79958f3907ae3ba071aa6144b88ba6c5575bdcf5331729a65d8acf3db97aca4191b72a2bc1433fb3483efff09698c291dd868275dc5a86d06d97305ba596515e434a8d956b2b73b3c00821ba055aa7541e4f35896113acfd9320fa91585f3212cfd5b023a77d7c5c0ceb746723c2c7d7417bfb740e4bfb2299b29f987698edfc1b8d7b33de2c80d0cbcb44f05b1ddbc667005b6e4335751ac281022cbcfac0a55226fa69cff845007b9a16d2b6bab3135b325b12c263a81fd423120a6fa639910159b693406411a289863736557a028bbaa23e0c984f04543e61916d9bceb4f64fd48823a4b13e4f83b43d443f62ecc72fd304f71772cce318c1da9a57a67502a1119313b93c4a66d03c2316c2cc5c2285b1e80c413b2f29c447dc975923d9100bec9db958acd7850ab0777d82814929121bb87a6f4f07880510331ee6171797bdf23850d5fc1802e432b2f51b3cbc37631c9729892b6a09baf6717e6ec39ec2b3489b33baf257c35b9cbeffdc1a1334380fc35df386116baa9bad3a0a8381c4fdfc4b1b98836f23ab923175eaf72c59d9c500e10944fb0fd701ba5142b3cc358bfaf2732d643d0b135c8f991b0c73789c465a7e1b3ea6804b5ab9ab2e42ca1e91158019306855a5767893bcd17e92a41470d721f6432448fbc370c64c3e330d83987f3a9479f000c75320a296393e253a68e0e1c05969784f5612adbaa2662459b09638202b74d8d5cbd2b01a915ab2ad06b08670546d8b76877b8b2eaa1abb3132e55d8bd5b08678bfa4243430bb4d059b58a4b0cf0fd26eb86d5b13bb8b72a9fb81245ab712f0d10f0e2e09b222143c420e3f2c3acea27b248c0a21ea0bb6d6f56f12300e8584d8e9a34e0e6f52227281151ae4c305fb8f +ciphertext = f597c7ed20fd0069d448c8616f8ca0a60aa23923c79f3bd31a13638775b7b3507bf4e3145221ce3417a8f22282c56862f8ea58cba7a512dc6a3fdc2da6716961ff8011c58c633ce653d39d0399d2e73d4668464a46417545674138259864e639c1f06d6a7a315805340fc277e17d774d3a74938390f399d53514947eded14cbc65f7e33b12662e956478000bf8f2cef30db0b975a93a7383845be2de01c4e87174db7af718e2cabf1b71cb22f166d9a75211bf30aec147c47a1b9d65d9d82c86e2966eb0c3d3b393360e13d085cabcc195c702e1cc4c696cf1860a9fb9b89116a7def1c2215ba5040cc44da0a908209f3554986ec2b60f967d09cbb6291f8fa38319cec24ad9ba588b0c3c6c46bce7d5ece8496313a3ba853ee2060608fb0ef119ea35ef976c77a006352a86796db6e531dbe6598df8d2074b27a170133cdf6c0110995a39796de53d4d7da5068a0090bd08cec831ce7d19b25b49f133b21670b1a43b52ba1c4f61cfb6c9b1ff1d42425501a054697a1fce811a4801aeaff05643ddde4610df7917cb89b82c22fa3940ee67219c6a0d8ea964a4cacb30e3a7d3e9c3bd83b1f0f815a6c0ec6dd8f21c1a49fc56e9d30245baca996c8480d7855e3c87094f1e1100bfb2e45f36698f69c6f2eb13d57e8e40e30f60abeafd09b435717fc89966077bb4f636b6c97dfc6ca7b3d042dcf04aa866afa00a4eb45d92d45bce0dd436c2e4726480cb543d0e95424c3077ac5328d0114a5749ffcfdb48753da9e8b2a02eaa4427ef17fc98cf6298ce7e793910d8b28649a8362a9715eace1cb82df37a96ef30adca9e945512725c4a1202408e6adedfdade710fb80a81c3ea45890beb0e1224763bb018be9f945f4ab02ef6ef3a143edbe9dde24802b01666946785125fd9dfc47066d4635701aefb93360443c5d38d72e5c0f1ff6d3b6d9c0461a91a91b2ef7af8f6533169f6f215b69a71e038cf1add2c04b8bf8e805b1a2a3c60b74bc236ff4f3adbe3cd3d6d1a245cfd080141f54dc036b6916cb5a8b5121b083d7d89d0df82cb924fa847baea59d016847c03ec506bb33f77baa0ade649403545f0f398a9165ca6e5a07eba51caa1a86514e47bfa152d6259570e04fd5a3976bd7a816266c11ae8b5db9330999e9bb1584c4cf669850fcdb064c9d58d959e4fdf4d732b5c7aa7ee5322ba653ffd4fc376f712b8f35e3832c37986fccf33330b1974655d158f3563f886acbdb73f76556c077812c3113246c03ff3a61e8ad973d869aa5f0537d987c0eb001a634b1a01c63cff5c141bb058ce3923d7e0bdc53c44a88fadc9aa48acb254f95d107954b50861fff2b15e9223ed5d575741ab66e6453185dd0c70cf1ec5a3baa6d677cb79a48f54db2d2e105e70809c78b4ee926b903dfd735f9e1ae9aac04c5ce73f34d4b3e3ee562cff04f7cfc383192adab68ae3cda8ec2153887891284ed5399a24d85287ef0a2669abca1eecba26d997219d98a2b81d9f8f91e508ff0d9525aa8d077591823b7cc28b3f4942f8ae +expected_result = pass +expected_shared_secret = e045e0391e15a66d6208467078f2ba5e429cc586c410ca6c5f3c032c21761955 + +comment = Official test vector 35, seed: "4d2239e84b052109a78dbab6d80c51a86d38248105970476b74a0b78b9cfab6283e30d5a406fae1c7f54f8bae1110ee4" +private_key = c6389f081ca0932ab66f658046c1278b38bc42b5c4e1a7c7a51b09d8a159773b67aae1c2aa8666000c6e6a014b5c0369dff147688ac6fd48c73d783e3025c92d782a479acbde8a7548384b763a868c46178345a773a9852016b9fe765db0bbaba5751e8056b7564c53fee8040d3c0125115d323c62a3f0a2b518330b6cc4abca84f62c792d07c1e1a0bbbd7c5b9a698cb683981f8828ee69912600311a0281dbf9c6c9e69daa26a446d136e8b0310f236d7a5a49b2bc616fd346c3462ab09544998c8d5ef641e7b48c35ba7a68f25414f703fb02b501c69c58a9b798c8c76923272ed9bf432208bab30f2db45e1cdc56f6ec11792a33ec1a62b3fc992441527e63328a46003db49b7dc07f73f705ca0220de94bea4967213d612b5a03b2c16a9bd4c66e0ac893263169a87aeae67843944628e6374b5518bf40919840b8e6c64172be3a35ee5a29777c035463380203072ea50e7daa4f906d01c502560621137b91649c97417cc2d3e1677006226d4621073cb1aa213525199bbbfa78f1899a53cb2b8d00819869867a41b2f48c615efe2c8da15a4e6965bef0c4207a499a2156ebfb611478182d85a71c9f8776d28051d1a6e4a104e54615992e0595ca9b0cb2a0ab0159575863f3145b3401498949502b2ea4392c77728215f8700c93f5846a1a8126eb6b72248bd1047bbe62aa58737268428509e53575f945735e75b42db2ba2f21b24c990a847241d2c3533b10d50847c85d98143fbb2eb5138accb055a8b8bcec8afd7b5697306165af982190821a14301ef0a90c3d829ed9035430725a99c67745ca415600d10d7c29b228998d7402efc1f0d0476c4d74c34754af9a1aa1213c9a0198065378de2d023eb73b3a4bc5801d98213ab7040cb63318b8395dbad6c7c604760ca679b301ab08ef1a948a5a83debb39651310b368c736a56977f78af0916364f278a4e3973374213f7a28ba70296d1916fc65cad3b33c4e1597f818cbc489ba970680999c373dbc246740c07d97c5e1ea5aa1d627757f4467e84ab9c5bafd9ba484f1212706788cf5ac1829c7ff0a66f26c30aae327bb7e167bde95fb5829340b187162a5fde3a7cc6a0a05fdb6f26902bdb0c6c4f75692e67ab1c8b1b46a40e53fc901dd892a3e612afd1cb2cd52bc5b0c3191137e602b0a5872d3a961ef7168990b634f438b744375d75995943caaa47e3cc5dc634432b6cf2db29b637a5e22559a59971be46004fe2a40f7c330610377a5b0eacf79d85f3c86223a4c90c31c2495314748601431fa1f49abff2575410af33f7367c5540084b75d6736ecaa010290839ee2456ee16bbcb57c601f26aa104916254a689c24cae98296e4bcef8770ed7485511f55a46c75592c88d6f76005356c397eb1e61caa04bf55a05c8409e644055759a7e60c1c8210221fb97780b92c2c8aafb6b94c259a9ce6291e18a801a82456b93c221a625129a1720328f11574a5c35c3650a7b57619c61f47ed6319329f118f4c31358a26a7e9191cab61012a71b27b47fa13cb0b2c959d913a2f4bbb3d106ab695a4c13d41256a0b442f0428de78f90609a11b8cbb475083712539e1ab034903c30f6b73bb8229ed50f901b142a597e7fe48b38e84df3c6a2dc2389897c3745183e08c1681b5b9f57c16aa2c12778528510868964122c1747662cf97d8b0353bf23693a70b3b2a7c8cd5c5508a227261cb7c3022058e318d3dc39e320770724351ad78010eb423ffbae6714999226895ac23735a9119622bbc0811516d617353c7f769628925bbd49629fe0aa333d1909a16c5c27604b7db0b4e602ab27987df23c3718630ba4c2846444b83fe914d840cc8ed79a85b645a32809ca069ffbb8b3201131cb129db9282b73174f8d4a14a37393552b109d2271edda8d968ac3ff67aa3374a2355c2ec895441873325db71c91020e91f19347d965f1410f606862f69643216b869673b5a70583fd1218639b5036cc11d051a13d219f3969c817326d2b60ba5c13cd8cbc9313aab478833d73716a2a48438fc529084c241bcb4fd67179d1f5494b4bac2b05a5767b9647ec8829a500d1365bca7b8ce7b75bfea0c68f8a28edb7bc4a3817c0d32c4e10169832b9abe271cb0b473aac2c3dd39ce895551a297a61f47162d97c41f051d48b62e5a8882da62fcee16eacfb89b98a12ab626e69d77ceb3b6b02878ce346ae5cf754c3f6097e0b5eb7ac80b9b8ccd9418f63e545d01c7d17a71e45ea3a6d927484d4976ca936fe392cf2052535c201de9464008c932617cad94085c5816aa41973a8d21610430ac4b3080dd480169258e65b53e340759bfb70d68b15b868c4098847901a6b255938ecd15d5ea94232b2971e3bcd56205fc6f0425f50ab880821f56c7b25f51f2412cd7fa023852cad04f2704d4103d4362e965473add3563d9b36e5097c982506865454ba30af132bc17c807309723847257c697c525e27cc570a88a1688134f4193db67eff018f54751e578483a77a119210106fd03066c403b3303ce54b39493323c4334d4a7a20aae04d8ef529a15cb7d0900fbc4236c717310246c9cba14d6874beac61b566593b5ec5887272b914ea655d254d595824288a666f10c7da583f933052f43b0b0fa59248b0584f193ad548a12a845fdf14a73a0a37adfb4d1845afe6b56ea50b00a5503cb542c254a26f456aa3286b0126350272638ef0b4a3abc56fc8d0aea2f7396d97b64c56817d58c32103996db88345d377fb7b2644fc99a24258c50730045b897ac908f7fccb81bc2b51c286899c8c499c1757c6b0a6ac0a8482159d564cdb746037a1224ca72177f79ed19a398040426664abfbbb7b7ba99906e7982b665a551881e0f02a97409a3e2acd37fa96a4f9293f786a11b21e1f0bb22cf400da06081bf68111a9bb64469487d4cbc10578106b381b8b054ee29339e1830dd613e19a9baf9a81c2b9ad1d121a47d40234bc9d4b79c2f5f165bab5a2db68c59c0737e0e4786990a92476aea44105f3c77feefc342b458e4310b9b110a8b2c01593b512f069944828a3f6a219354bbdbb1c344f24aa0784160ca704bfd89c4933b6123c4434cb9a6ce16d3f042f1fc571db728119f6a33e4a9f6981193d60be6ab916818b8e1ff9a1d1a59de8824f808043a1949a5520b675d8834ef65c1d47afde2710c6b63998d43ab47a681f0a856d166c24494081e076d5fc05b541145d3155e232a5af0ab96ecc0b09c2c41e285d350500a4f8bb32e99b4b05d558ea7918a7881bcf516457ad2c3ab72ef2e04e3a4acb85a987c285441cbd71c18717e9de7359b920a9a3bb7f32e619806f4e4718c585085be6241646460817a0fce5836bdfe124a7448e7adf7b8ecc2652ac6d280e986682df71 +ciphertext = 349dfba896178907a635a6d93910cb4ce0ae4089e9de6c1092bce826d207f0c09a6584f829136258e4fc56f90c21ec74f1984a23afd3515e45b45bd34120e761682de9d9b71670eef80dbc1d5b0131f740c708594e8c66d8096a571be068b6333075773f92a082d2ac79acf46b19de4d595b3ba7ba407cea9d4901617de4f13679af9a45e297aeef0946c2844681134a6d869ac2da7c90b089f66a805518146ec3bee2cd95744d0d2768a1daf931928e9589ee8fccbe3a44d010b794149f0397ac81a7bef9ff5243d98b9492c220e872ff5fea295102beb6f9381815aff179c0b2c26d2416aa41cee61ead73a2e91578d584c8c6bbb5c154a12b94cac64afece0f7081c7c2e071dd1e63e56b44296578a4402cf3775eb713146f13faa0d933e85030d0bf6a26f906f12f826c1b728811ad3ad141b4303763d2e9a651cd6f968af3ab97207b6d17f95c0b40fa6652637d8b84721f3a9802645d5f6f828000e58a4e5bcddf3d19053bd1f8f8b6b125cafaabc09d08abfc852858c7b860542e3b08f4e6661e0799d34ef209bb62df89d5a84e9bfdeb853410e54dedbfe0bc9425226d9aa4b00c51eefd9c2fcff48082e6b65720b45e7175f3bd9f1f4948495dfd9ac595d9b485c779f27af8d4aa8b781cb8b332105e0f38ad554696ce80c4ef5ff762f506214cc8e1e3fb1d7a230b20aef8e55543450eff4289d401861fc37c30d64c4093a2d512394c07340d814aa25476ef992919e6fe58577fb6bf70c6778aa976742bbcfc4677d44b79fedbad1424641915e8599b8bef53ce2c8ed682a1e10716e1d07d546801a7eaed846ae94908475ea20eafda70be83bb7e7211698a2ce33370b83da952140ce4029ef0491d8d039fbf1996cdbf1d04e576c0778b30e83572d05081238743f5b4ebde402629aa9ec70399e364aeae31894e56c397e5430c7250e80dc4d0b749a276ed02ba76e190bb17a2740f098785b8b0e2de69d65cad3e770d853316f7c5cfa508a7ec990c81fb912d1e5eea2f0857893d5e10a1b7a2031169de2ecf3935623c769652de3c48ccc671dab69bf992226d95fa549adf29533f6c58f3e79bf56cb5b0399c2ed2a5550e54b4f9cbaa157719c47f3db6b7ee8f32c04d830cfc4bba8573bd3c43c5f9069704448649bc3e638e46e5ceeac812d356fb616835acbf0711c31455124000d451926c1d55ee0b44295d2fbec5913828b5f4ac5ae3589045192a0e006b3466d8ce6347019f0879e4bb7baff07e53a95044525a843d7f6d91e06f6ec2064b975c1af4017eff586b7681c8c5f7125b6238703bb39333ef122e281229d9c67d495eb3d2c6ac5f176caaf3abc6fafaffd4443c353972b5276f4cce612ab4f2d11fbd30b71974655afecbe8814b9fd088655f1da3a3f7408b36c9292a6d086fab471cc98a21888298fe7eda2c5a1a732c7cbdfa70286ca361914ff83657b7537b84afcb8ad0c653c7bbe623745e95a7067d7cc698e80bd94bf02a0d52b1ff03f22e5e4e62af3fcf152d5c35a20b61cbff2a +expected_result = pass +expected_shared_secret = 0b8584b75838e084839d58c89cb1749e82ec06a0e85464c7546dd96870547d29 + +comment = Official test vector 36, seed: "ee762f5c9021c36446706a88ef16312f4a12c725cd7afff1484337c91eda8e89f7007f3705747d29907b3fb7500e5074" +private_key = f75196a57024be817edc544dbd552f6b42ba121c2b8ea95e55017856a10c5905a8bb2590e63b449364802c6b438fc19eefc875017acf652a8f0d6ab0f7f5aca1f1833ed3551d37419d906d2b55123ec14d5f109abcd9382e990628bb30d882cca8665957346c3a08553c870d32f77e66348ca9dc321960b7d50b09de64178411439c021899f2b8c583762043a4508c3160544ed2264735c600a6ab43c8515532130583298a11450ae3b7c99ff559a1d33115dc2d2489934518bd52fba1cb9a019d918464b59cc90941599253957364dcca9f95a08035f8be5bd36db6b19f1f191a6e4b7fcd493b7a41c90bc76fe882aa0f3b39b6f454785c5dd1d106c80960bbe5846d90bcde837cd277a039dc22427b86a6658f97a60101665f3f69125445647f3bb2d3125c80d89aae6096a01c24902321933909a8a2925faa1e7407b3c90c8a53d958c1c83465e557ab620e53509ee8c960b3c547fea08d4ffa215742113ed9661b57ae1b30ba5768645c632de76b96161a9b6c34b8da48b75d176c2c849aad55c6680bd0863273c345c4c7379cf3f873fa5953f53b9a026a4dc120c96e279085566c7d090eba276a0928693e639b5564a59c08aeafd25915f5478dd86e938a11529bb9a2b0b83487c696e79f1fd034ef000fa502328184be42b8959d9c0683f3bc20e71902423ab14a4744e162f6a2b474dbc4a6f21fc0432ca7422cfb253d0f952be9c13125458df8753f5d551caa38bcca1625b533051c5226c8768335854e7477064320cb765ab9eb311a1859b4b5a006d918bd8508a971205e6902897cf95e0b652e09030794b46fcf7a784560c0a18b8e6334a57ec177ba56a8bb9a857013c6b9998975379bb04b540015a14a76c658f856becca363cb37997bb85b185aa0104063696f1020bd1b443419989798826e141a24a3533494391fa233cf848451cbd609d014508fe137534c42d6f22ed2cb82363c847865aa243ca993b14992572cbf5535845cc708bb09a1e8a7834c200d8036768755afab53aba85813eb859ee83efea7563ee4bc158599f0cb04033393c829aedbda289ed852e1eb1feda9484777051f967e048041ba3c313a1414d463cf3ec36801aaa1aa540deab122ab530ecaca30101a1089087311972b338b045a1637189020c3030e63f707feea9af844c7e1b20b4a5348c1a432f341bb9f598b8c0c2f6f55c4d2c2c22b187430748f82842daba92283dbc4bd20636b6754b20a7127f01fcfd4013a1155e4746dbf3ca1f34991fe7c39ed99bdf5760d39db8e6c428f2de8157be0139415aea96bcf6fab633f2257b582312d3c7acaf6a5f8e55ad699672160ca01246545059e58502e28199cd0f5505adcb91900a283f0b059f33d1a8b352010a3c815717fb3a9482c946df0c74a526353d5c9ecd2590c5050996393a02286841580ab599bfbc8838a53301bb11d5fd492af40ba26224505969d88f6b193ea42b0348954180e17124ec2c64b962a92aa9c3fe2d72f94301531c4aaf847243702bc8f9c37d64b54f20ac003b844c52417e1436d2e75ac09c313c83b8575e791a7c95d0412cc61521a6826997561485dec26ad7baa8e065e9a279add7301c5c74c5b95c1b6915ebe390596bab505e51b3fc147af616e0f94506635a758964b3e7cc067b80827db21dc87450fe1415ee41fca8a2b56b355fff13616622fd1a19a7cd98f5084610d1ac9f1b8a6e78cad9281a0afa5a7c2a9a87916710ec9c5b3544b76b4808d01399f219b745962536026c79841f11961b63c10c99074edbcb4ed786f7e8c3826609533e5bb4cb80f3e515299eb757c217da2806d26664f154c0cc2b4a644b224933502adf5a66f5b54cd45a71589219aac65be0623cf5b4c0df17e72cab64b91bfbd903d75e164e2a0c9e2c997f36a0b432177de617f5e6746bd82984bb9375b4a0a12e96d06045a3a984667d03d8c08cd980b59cb2b0983b13f9c53790fd43653e78255882f9b0c980ef6b062789332a6b67b2b78e9e370b78181531846b9980a8af905fef403f47b891a6b440ee71cc5d6bf3ba5c7b087a31123ab61ec9f2d0c89e1eaa7dac36613a15f147938d32673402164b001975d9c4a8ba5ce84d20b47f26eba5909183c6fe1343d062389b9b99cedd21e30d5841fb68f3450a47f4c4be5e8c413c37ea4d5ad629141d7430938158cd04492bba8aedf7477ed13a0b97c8217a300dfcb22de05449547626d21409f491098162d7ab477e3ebaf0e15124f449f08e47d8ec6847a0ac839bc5d237b3d509a8b5c44c8fb6705a467a3d4d9102ff2b6ed976ca9d856e9f257d5d586c7d8a4c2617dca73aaa65719a21538d9e6997c5637df8c5a2ab98a169a5ba8f708bba55f2c0a9463c9b4ef0c9822fa64ecc72c8bda4030157bde5073fae6a6e6f036121125dfc5a9dca1504a1225e6da9db4d0665f6413386153ae25be78b3410369bbdbd84a86c6c7bc924dd70005bec0c54e07b4adfa2daeb8265dd98bcb8968a2f683a3b07633aaa0290550665c01fdeb22398aba31140fa7494fd6a0087194673f51ac7d759d649a2fa4d7520fc67138f445287b681f5c3d1678b497129bc6624163e3515c8381e85c173d6a4cc0038dfc2064a213c557931e2e7138fa1a6bc3eaba08965bd803bd5759332cb1bbc4c41337bccca153905990970c261cf63a53204b6f8cb228d4234f08837425a82f1da9be43775df88a20a0381f70044c76b3524b437cf365cb131baa14ea6f24502336762c8e126afd009e1997b8b3bc20c246070df7b33bc9a7bdfa8ccd576925968915f186ca4a5a4934528dc75282e246b0824ef7118d39dc1f07449a218836d47cbb7365b677ec7d6222abaf33068b5730d9e674cc008125226cbc5382a76a9823db1b42976c5c90c23bc02eb7b874dff93699e6035a838b22a7126aa42d62682505f9bbc77143dca061f5c38e99652fc2e28e30ca8d62127af02186bd9c95602992e20baa636ab050ab870b11c52da19b3a68b7a07a8cfbe7bb016a2537e50464265ff6f065d7a8c30f659998a35d79032f887b4629d07bb2dc895f09ac0387cca9c5cd1aebc08a687798721f24ca43c2c5ad42d1b6641838efc2a72ef210bad10218846f25da336a4c00c4a29eac8a608f2261b8c76b18f10b7aba755771376dc7b876152f9fba5370262919511d4ad50d76aa5cd6566c29225dabb3b668608d9de5bac08320cfc3570a0ac8deb4bbf3d941f9325aaf546fc368af005caab7ac6a7dd70d90506ddbb5f53a83079aba0927bd52a68e278d3f01ac19eba6bd065fb6156acaac591f1bf3ce71c4a046be8c6c55eb9a84d29569bd2b144c73e279238a80dcfd7c992d84b2dffa67493e669243d4fa38c46b090bdf86bc548411 +ciphertext = d0bdfda854711dd009645b9d16ca8d8f4e44c064c54bba2037633599d73cd05e6473dabd029e5518b3b9a39b6b01f6e36734b5dcd4f8aadb4e4ed8e343b8abc4732753d7942f22cf1bf6e9b7fe074195d1c8f414f856c8175541cf0745b755fd58be49ed7f6e8c48ee393f508eb373e79a8a06fc0d5696bbf3f8f8270e3e2b890b90946fbbfe694c34d4df5e70a92a2e6acec73fec7dd90cdc7ce99dfc563e9bd766779f1460f4776d7fc223e4110ebd68bee47a383bb5adc2258dceb67fabe8933641d2cd6f973c157dff849f6e190837fc795348d9e78b3aee438acf7dbb960f6cd9de2630b730100b913e856256c3c5d71da1c83bc29a584bceecee94a3a1e16cf22b7a610066603c14d44268dad9bec3cf53f72a0774ab0782c0cfcc6eceb9413769d4e6f531656e5592412152ad35d7dd7253b3e9578d11bcfd7f0cda76f89c5a3db06236c73f580d7ec441f67a67aac3ee4a80f9f56b56abf7debc9ce34dbc0bd01d5cf3bfab83a06754ad655c1610137071067feb622ff6afd666b74e52df3d95cadf8b05c5e2a20e3821d6e2620f778cf103af079dee56604169f3fcb4170e5ff130bd6365e3a6de215925f4388204da9579b40e98d5831c43fa0d9b60fe2c9f95cde75b2b324f3353206a3d978b805e524211f9e257ef0ef5d391e4258141b489cd52c8e1aa96e5ceef558308952c3ac6b9a01b5cd6f712545f686f9542632e748bf6b492af2c94e8686687189e2b330a71de41e1a9ee6e6d74b95989dc6412302817081b68d1739c82a2f9a532a58c7ae6fd5934d04aa824c5d1ec5201b755b3761a3756bde866b085778597087f99adccc1ca9fc04fce92a423631d4756cfbc70b7b1b96ce5ac56bb61cf14d84fec2fbfd0f62ef4691603a55b114d2216a24b4f6ab07fdf35d7038610882a7f34cd9958d94c9f0b99ce1e5601c72ed128db8779ab1c3fcf8bd8be63c01dcd14748a01e1d1232210006f4ae5183904137d04c9fdbc76e9cddba4316c7cea1eff42e9d5e17dea82804ee9cc40207e28cab35b342bcaa802555f35cb260cb481daaa76739911a4260f26e9567033d69337bda9b11f6a1f88cb65d17ae0a5cead6cace4b93a1f8184c6303cbe5695d37ebd3a7e27f813ec8afb0d18a72968048d27f38cf9de4cbde27b674a672a400aee9cb90c5c170153f56dc3ca8f01035ad173e6931332180fcb2a74e4ed21d6d27cfe9329dc4e275416be050300a90c12cceefca2bee8bf52c71803cd8cf39e29a51b60f188bcf905eb3c35039193d2d0852a62c8543c82f3b2b3fe3e4d51e752eab0130fa0b89f1141dc2f1e73536b8a963022c2a7914eb8f80f9af9ceaebd96137d17c3172bc2af2f819e0899d9e55fa39d6a6c7139a8a2866dcf41f46a78beec546de4b4b47f408128b9317b04949e6b083976cf9e0fb6031a8b88d82f0f6dc64cf5334483a339f7b1f157031a13c751fc62805d6d01295352df2a48c1520fd40e2924e8e7d5e4728dd21cd7069f85913ed776631125846e2e13301d8ff7f2 +expected_result = pass +expected_shared_secret = 3547a15b5748990a5436bdc4db283738eb7d64bdb6ff566c96f7edec607ccc9b + +comment = Official test vector 37, seed: "d882ba69ac8bbc88715f1c6387531f53273a5dab87e66faa8221a7f628d2bdeee1cbc59c0e08d0add84520a3a70c1389" +private_key = f8fb5ba9d24c8681558cd13593f0cebb335b6f65bd5dda6de6d19e09f15165051f981ac6472b263cec43883a79149707093066fc129ae148b04f860c2df119f8a51056eaa5dfd89bfc564226e56dc391ade1cc2a1df58edd4572c5a147bbe21283b97f1b213bc276a471b63a7df1cdc86c7a69a34ed17a425b37aef969c1cd079529ba29a2e2c3412c5615e23523f3124c00c778752bb9b3677b90885cc21b0e257bb7f335fd53928b737d19da3b3208219e6c898e96b45f801135a09a1425a0986c597e2b4042c1a4e6d7a4d0e30e729c73f2bbbe85b579c3c13a34344a7403b95d425936486c3b602804c08ef6f5ab22c400b9523ea3345abfe666023bce6a1b63a872c33e3aaf0ccac2c40a4d5a48107d0c7ab09001ea67ca6f4c1fa7137d259c860d032c396bcbcb4177f82439852463b640855ce604f91c8f2e4a0899b2102c6059dc077d5ee6054355c546c2148077b8defbc313c71f1a420dace126b16c21e40064e2522f9e224cc8e3526b1a99a2f4a81efc2dd3609043246d461c7c1af025b56a9c7e72adea57584cf044c2f0bb60352c32400d1631c034572ee46b71edbc0334031aed7bc26af543028c3918109da52a6abf3217a2219c0607ba9edab5b4daad5ec7948393c4a670c340688541aa713b596843e5ccb9616b54e92610539bfd39159fab36d4928ee9cc8b1291ac0134257e242faeb595100ac113ac416ff517866021b550b6d063512dc37477117d025964c95c13535c2f09a96740037fe1846efec4446ec03f93fa6b6fd8b539f0196444a61823b08cb74b7520618c08324f0667f142beb3a34c2c5286b3d159fce3b046079f07e558ba28a8893a8c94f9711c227fac6900114c8bb6aa5369b059dbbca008482a1843b62a1b06c68c6b2f40bac6f02b6cac1633055a178a396ef35f59f1a76543953d3b07e2b8be217c5d5b1a82f9c080f4119d22275958026280bb8c96626c1d0baea6658a29546e09418aaf85a121f8647cb4789484bee0189b9ab10852c397a2e25b9b15b71ef17440dc3554db740289ba05111979614aedcca79699021f4bc3a4c68b39d0256d88cdd7a24e3ac31dac35388720671a12a765d705f8429d0891c3e0d8062ad45a0b882bc53016dfb007d1c550998963d7e12fa51c7361d86156ea3a8ad7018c627a9ea18f9d3787ab3b88a27b3f9443aa87ab75eb1364a4c66c50e8170892a08fd15cf2913749d0c61305c4de45a1ba2550009726a0873c70049705009dc8327be3610f61f9bc60a26d14dc0c3e67cdae4b5ac0d5a0638804d6c6b4ceb351f0c19f0974324cfa28fab704b4677aa3f2bf65686c22100b74cb9ab5f7215452cbe8d6909754304573a9314b3c8362cfc34c6302b3cbd5dc482e76576fc5900b367016c03a860a88744928cae55413231ca8a5008d210cd2e317d1bb6bc8624ecb83002e66092d8aa77fa0c6766532178a8cfb532c70f1114e5156e91486c3c7658e2a22cf0a77873c944a5a4bd70ba1686146e18b328d30813c9850c3003698c5afa2082b3425c785200596592fbfd7b2ad5568f9d278fa24c523251bfc966a69ca882e707426563d2e099295305fe2e2a96f968a92e9423dc4a1f6662f68299899315a88d083bf5196f65cca4541bd4ce3526e514dccaa8ed176ba58014bd0ac486056240ce06c6c182040606dd98978d6cba367eb0ec18401ed348743780ddbd277f2ba22e1b34208f215f8f91a048ca497ec37a7663587ac85f221810e64acf87478a101062535287250907d0854b93a9d4bb39cd5788be361c00faa87bbe078b26353a51b7bdba58d17e5496efb263df826a59296a13535abd799cb931fa5886e35476dfff97e82870653d5c4ba09c2658a9a22838ba0c6aaa4ab7b19699b8b27243c42634045506762ab1817534f419591b04622c650b828b3d4a66d9b163d09847bd172ba8ff452759184c07b11183665c0185e0a089c957135dce64bda52338b6492a27a1238aa567f017dffa796de84532fd5bec8fa800ff4c5e34791cc5aa02901b73885557cba188f72ab5a35b489e98ab377691033934029118a34af7d176a436139aab3ac127a8f510c8719936e8676caac2211c8292a42f274c7fa85c542b21422c5790079f34a26f0678c005818bf4981a2b4c7db780c0bd43ad55c0acdf1ae0e0761d7527813076f3174a1d49c74659a453e09c2b4468de6f185d5f3c04f2b7e59e05317586e743285e6817283ca11faab44271a4667912df262c0c03843730acc24e80e2ee0251cca86a83853e6251e3036714576b1c171a112e7a15ca215f63039aaa7632ec77880b89ef8a45cb0b3746202ace1d7221fc98afb73a28a6ac2ae443f16e6072d6b3da1a3be5fac533a9175a5f176fe131f021795f8880d320c6096ab63f53525d01b32a2ca90e1a9138e4ca72502785976bee4e566dc0cc1f3827733b0a7d00cb58b6b89c5e26d2da00429a2450e269da77c46b5c954cee6bdc0339ba357a9b9951802a255b74a4f4ca1297d124056147a0f8123eb903071546d2c22723367308601a22f199f9588734fe1241450a45fd7395df965f46574a030581cc714a50c08da03a51b367b524a2ee4e56752db9b66d9c6b07702ec23bcef798d68300859383c5baca9d8f08b71409ae5552209b5237e697ba55328a1693af7fa0ba27020de2c35f643514db292c061c8e2085d06c101644c94d17c07560811c093afe61c6b4ffb970382ce9fd25f76c6728108842b3841dbbac62504185edc32dfb817c45878189a7ac02859eca77ab445797e030e910243b121a859a05d8caa3c32fa54d033714d20a771c7cca73999f6d91d4db4683a9543d3c978f1d56816d75590642cd4aa7d9e9c709c6cb5aea8832d7c84c576afbc837b6615b8290078e2c0ac9a8ccfa8338b36649b9f7c41d0064dca53b8fa1793cbdc8f7b75306f19c4127a214e5532884274646b91f49a1e36a3b42cfb90b27425d2645c5acc2482289d0b4b84a6359007f23b9f528718e6c499590d6bb2a5bb674e89561ab1a48e3988927ac41d05ba143799214701b2f6d708d365be84baa60df8bf7d969a425c93452a0277f218790c80c60b4b59fc6131e7865d1135ac84a6655507c1d98f6665c932093d61fa578e7acbfdf49f2e15c138bab4152c005ecc44fec299094a285ff50b09388b6ac3972911cfb8ecc9f0ea58761741ed23ce16fc02af5a341f65043f0802c0353d987c718fb72d3d922cdc861bb6a8ae003197c8f9c878a367c021db7e9273fe2e03a2716683dab6caed5c770f6e7984ced77d358342759291c2bd225b0bd82d659d28a24bbc5eda8f47975b780cd1291f135cf64b6403e103afae34da038613e2853bbfc36baafa3c6a95347193f37c +ciphertext = 65caf8276607786d9560a0d97f5165b79d5e4c80e07999acacee06bb02246f54a362cde4a2e7ce7f7119e974d8c6fff713df67997041a7cfe52576028d2c90a456390f6004f6e7a5ebde39dbf7aac49faa5060dad9259525da2b466d7da1c3964e94ca16413d7a1ee28e7398b31a0595bb3f06e8eaf26c350f27d348e957bb7ab37da03c120e61be9c4a7dda41775eadc1911a31bf30bda208db0e51dedfe7ef0421f35c2be9c891da2c636eedf8f46395c1ea6d87ca96f17387e444e22a586b4e9818a6cfe7a972fa3a6acc7583be04facf1b9c76cfec8d8d9d4456227c3990ba386bc3b7f8fbdc1a492f3c1ce46424248d6da00e9ac3f868312bee1754539a44816d85d9d2b9764d992728837c0765b9d03c7e8a070de91c655bd3b2cd1268f2a310ae5ec444281e87176678c6f0194d2640459a2b9a7867bd519ae9e092b28910dc45a32190302d34dd90bd068ea9c5ae9443a990b33818beaca0b6c64fe67b847819b943046bba7af092f05170f6a87310eaae2a813ca69fbe6b20fb7d09835b2a134d29b1018d6d05d03119297fb0c53526514aa14921b6cad0b89117cb9b80ff669f635652f67b8e9b26900278ab879f2dfe736284d501b38a48286e29e43eb90f3c6162e3db81ac69722145cb93e57ab98cf7c981ffbce25923ae7c2444bba4bfc007d1f7bfb56beee3425d6420a4c6952a70f85941565c83d9175b98fffa2b44a3edfd3d9665af0ea523daf7d88c739ed491680c1fcc0467c7fb2a4626d26f970f034062acec4ae7a8ad10c3ce34d6d2658a2d3be94e97929faa3e9e76f20e8e1ac5ba996e6bd2be769213164de7fa49d04e2dd010bd56487cf5f00210ffee81030434658e0cbef81757fb3845e3ee5bb126fd6432d19861c9a59a1382a542f5607e7686262f577ee7a5fa51257c286c173e6694533dbe4710e3a9ed6516b61f572bf9a343c0790af2160c97d21510df91ebadd881a8d3b26d5449ace1aa07ad01a192504d95f4b9c352bd000313273a62d099b73d07bffa85dd4bc5ef80b715186e0de4445d30a3eb38059ccf1c3a6f1dde918bb6034bd58975bd891b96aef7f570e9b262cb3b0e9cc721c4e151c1cf055a880ae794acb5bec31b855df972c7a642c28a15339064effa3cc97a9b5136f01f1e8d10b497d4bce88ed4776c23dbd1abc690a233377b39a4559c6e19b2b008484ad5e0ed9b0d449b908e20f9b042105064fa5fc2549e680f038aa3264df28f763db9db51e5e31bf8cc057ce596e23f8dba50c35f44c50e15d08f80422530cf2dafa1e0b9d250ee61b1672f2d01f82c81e396dd1b5d8a68af3635974f0f27242be9e7573d0813e3e77e1811635c0a9341d8647894659cd00ba490a1076cf2ef0c5c605c95cf8ff51ac83a856c45a903179ca136e38425fe005bc5c74aaacfe7f10cdafc5d9690d5018703821b168cd112a45cb92197a50e2dd989744a1da2e70c05ef4c770ab75678ba64a97521a112f579f9e57aa6d966777e128b979b85248793655296fcddd9c8e0c7 +expected_result = pass +expected_shared_secret = 852ba9be42763c5a74a75778eb839a3738a8ceed1520b0588f9dccdd91907228 + +comment = Official test vector 38, seed: "6c3aff39f5d097096d882f24717718c8a702382dc4aaffd7629763fda73c163cf084807bbb0c9f600cd31a7135f48aec" +private_key = 5b47b61ce23572623c431a498e378c6b71a5cdccb58e225310217f6f2b1b7140b97349b965d9c95332a66d7a9879f24c479851a0ea485254755db347bff9a06d00502ae3a910c06771aacc0a51add07a291496ac10e2899b6562dcda7b6b9b7eb516335d222c43498859d87a44cb8ad589a06e609fc5798ca06744051533d5c6154608c790a8abd776cbd2984b57e1cf4e0638c77915dd89249d3c0775b45cc159b44bd32f49a51a1e398763e35dbf5c6ccb100929c9b91047a1ab98a140e00f77f5076310c33179a8c80449591c4156c244eb8c8b3009328139c18f8c59e1961a2b91c840d552c2e4b3897265b16c28de6abb72d218ef713a1d179cea38561663c9bf21b68166aaa45748316877a9a5bed6f5230d3015193aa5a9e1b34dc6576b57692b543fff321b14879a24728de3d6a297c06ac6cb28ec3482da708abab28fa815272624af6e26a879f65c6432812470c52de01edce20681db43a967069dc9bb34f9c540a21b8d7322a3675fee059f5f655cfc480ba31255e899c48a7c25588303d67055434702ecca24d31a9d69796df408328912ada084ab122c6ac53c3c349c105270c9aeac73923614ea9129ce4c9fd8d78bd33045d8557ad3d0a698b34a7c073b93783670662f8558375647747905402a6aabd1698d1d3b430ce8b5ee8665771a34ca73b2dee04497c997c9e74044230690354b7af23bd94aa02cf599554391095c0d53f5c1db19ac33189b2b9aa3c48bc4e09bcdc5029bd3b45a370c59045abcbfb257ddf30085da053056c17dd0b5ddc6494524875ac189e6c7a7cd483288f03abc155bc2022eb427b7d5093f4616c124b7c29a0043181c7bded83de7592511e3617a75652d4568d7c7b3ab2b7464c514ce6ccf54fa8d73e61834e534966620dc59196ab44b736151a27c02e065a000611542fc296a69a24989331ef980f708142d7274ea863669a52039b59d48b90bcc75ce4b434f5751cef621cf3a29873c003a57276128e70bb4aa5de581834946741a8134890491d37b6051959739fa8eb81c6947141704683124136c1c382760e13f00c59ab5bcbcef98b973831b91ba87fec02216619f012859faa6b01b1649786b626348182398226cf794095681d1c25800b18bf33cc71123898ad2aee46905a8118916ba8651328a051697f8041667789c874394e96a0efcda8998d420684217952496ae9117c6c618513c147148979f5c8bfef8c7ca1836430c3cfb66b17cbca63ed1a2157961cee600617157aad986b5021f4f69c3bee6ae181a076c3cabf076903bd59814352f4ee2c04a138ae0eb018a2193ced58981caa3bb032317499e6ec4bc5cfab8b389467ef295dbe7305bd1cd099364d7596b1801008ed734d7775c5606af0f1a2978733dd7f55556dbc5fbaaca5a95bbc287b6d3a43aa9b78ad10a025f46af233512b126230cf928fac14d753160bad961bdcc4d5e1b4edd241609a0adc6b3c6cc9660e5371d6c1655b4465f16d535adcc54f8376371b758cacb81d84a7b3e6b8754b430c0753982a89d5ca8b2f4244aabe0bf05f75ed0b092f332aa83808f897ba21906af25e68a88b61a357a10ece1977199203e465ef9bc020e145f6421abd11b182e7240107059c16c3eacf4a1a8342b73911db6a51d3cf12bb168229a1b29f7c334d0d1ad99932f21babfd8153bae937fdd2393d9748518f12689ca7627a1041d868094aa7440c6724b4430ebd20776b602940c9d1fcb5a109978573434da891962b645002508e46992c0c148f5a039609826baf5834ba7271c443b69dc5110c4b7089068d16202cbab2e1e4525738a19c8315fae806fd139be91f4c1e192a2c04983291340dad4018a8a83c27a57c622408f933a51b7618148b16375a80e0a901f10aaf6e7803cb2a693abcd4ca8bafb942086f42f6b743937098e3d2a607f212f766603c9d89accf7ac584491f230bb1108b1465b865f824215d79fed2525d7e95c7976946e22a9e6510afa2a9e8af29ddb65c47be8820561661050b70ef3b7bb249b7fd0cedd688c37d7a3de667626c2b389b38be066089405703bd51fa32199e9c83d5265bd62a2aa2ce521b69973a18777e32151d3d5ba1983c8659a79ac978ffa15ceab733b49ea8f7a853d4b06cafdfc64c9d00e55d814536171496037036a078d026164d7b07e3277b7ecaa770b06dd291b9ad29241c3bb43553bccf66a1dd81fe2e2bf79f1a21e1539d0bc517a9ba8ede2c39deac4cdb7c65ff96048461ba2e350017095a35c1bfa25c242b000affc8af29495a2d349133c343d680eea815cdcd89c4fc283cd5136b89abd473b4aefe2228f4cba5e0c10ec7a1083833735f081034aa7bbf20c11319ca263b52262096e505c45805e73619e2ceb242e559883d20dddd4120f0c9e49f4995376284147cc2d2a96a046bdb3f56b6dc1889976ae1ed732eba43af5941831b2202d6091c16b680001a82d98ccccec212b79b5a884756c75cb2545316fc072d903c670864d5a13534e545d836276ee594d3a7841e5f91d6b738d97e73a7274671d6470cd2719b0515fdd67c6e4969ad213254502c5ac9ba23c264a375237369b46d0c45745041a20511459d3321ee9b395978f2c575ebe1c6caed03afc7027bc457e03f527b0ccbaec71850e0955f0a2b54d9bce69b6c8fbf90850168adac411ad5c973b578424c55ce01b3ec2825b0085232469968b8a96fe7b9f26846f789323a15aae6397242a712cd26b0465bc038a4aa30dac42c0036c062c21c3a4178a0c92b8992cbd54a6044b789d943f1eabb0bb24c3d0d4c067251779374579b27c84fb435e6c745334485fba84676750a27c520f79366d008e4be93fe8a958e8d06b8ec323bfd5bd01e86b1f13302eb17aa3aa8fdb3445ae5775111b2124e2a35021c04945661b2c510a29264ad855836c7d8eabc069011f8814934bb4b32176c0b59b04c5fb6cdbc8bc41b0bcfef4423635c0c7ac43e4d5286c74920ef37c951266b92074d239b2bd0a0d6c096141fb6a718a213a3387d75b927ce176169738abe0cfa6b68d3b064157c3cb03c5793a7400c1960351b059e43a7f1b28ae5073780cc606f7e40aeb458dbe95a31c23af7e760001b0bd601647ad1805c4329e46f490575ca928fa908b5a30fd31520c61c9f1cc5ef18578b350a929164de33b008338180ce41c45327152090a91b8c9b3928c2629a48d78abd1992720e841a52ca91a15a1c7953d18b4ba1f990af34ca408ba2d449f94385651c3b4c0503726cafa118167110e848fbed995526b458d362061a12fdb7c7e39ce1625c20a13a1c91aa5909d8b03b064d00877dce2415020370c7262d7033947ae42ca53522a65fbafe18d3bc3e0cb66164e9a094fe4b44d8977ed +ciphertext = 9520fd68f1a0428cf46c71f124f0e6f3f21fb2d5fc390d54127819c49541346d0da18c5e2d1259564aad5a1709d33a87ac8f070e9509c6275217407bdcb1802849d2d6428878a121717b6359e8aeb075304fdafd10a6e77eed31f4dda3dcf7550abc55cdac8476eccdf9b2088559a5cf7cd00c426e9cb3a3d3d533bdac13ea257641a324719a1c92b3f27dbcef88916fe9d7e7494a3b4134d5aab08246923053b3500dcec963dee7d1e483c20224f480fe6c2606facc609e7fd47cb0d70116467153719562501afce27d9d08981254b96836690a369c9fd2cca3ab0399e8eb794295cddf714b543612303b44b6b86280feb547e36e10bbe4fd729f3a93297ad20fbd53b665c91aaa966e7b0e2e143505f4b4c930cbf0c19766e0f045fc3cb21b09df4331157a751c8daeda28a8d515ca09c53dc37bb9c1d6b99c4689316b79f4745c969f10be1f601b81b989ef3599040917d23e20df69b716794bf332e9a31690749319f08cd3de0b3fa6a820fdbede2c8af4c5d1cf5176d6b457b8f57d18821ef22d16544f4b6f3450f87a181fea90893f917f379897ea322aeac04ab1b4207fa1723517e4831ea7b2c8918040c995c3265748931bf9bad6f66a112954de7fa799b75ed1572aa999d91232c29bae2f5372dfabc7bc6d5dfcf96e02747ebf039adcca1036b4b4b13c59aa330f817c2bdfa29edb911a613f5018128f72dcdc73dfe06ead3b0bb323275e3a74ab23763992031f66f20ac134a9e5c781c5948b533b08d777b4cff4d74edaff4cb27025592a670ff2aa74332156b4917f7ec0da54d58fbc7cc63b62d3bc1aa420b80a7bc4cd22a237c797fb633ccb0efaced8bead400b623e0f99d2db72cb5f9e8d44f97470917c303f4b1543346c4482532f795202c131c9cdcae8aabd5df2f3201e9dbd247979c1ad198ffc9aa45d20d052f48d3a675fab69a6e33e1a46f50413bfb73f377e260e5b150a859ece8eccc1d208bb6f9221e145f1a071b3fef1d6c4ec186fe8eff29129a31a323e7c6769eedbbb125c57b4fb13272147f631f5089b6b49b9bbfca3c20fe7d0955b9f9e2bd717a8f14705b5785391d28064499c5c1af95fad2f57e339e14498e1b4f2c59265223e7362042ee6f51541483254c9184130e45372be466796a6349cd59a002a3f0458bc72e824917a13d32efb7dbb3898a2cb830214388db9ab1a60b299e8671d42e92b096b704246140217bf522ea5db18d65480b23cae658bdaf48117aaaf3f555aa9521174247a31847dbfa4e592046fb1f4e60606aa894b2e6a78941c34fe79bfc45143ffaa8954388140e4b369a224067450c6d6e6e39348d8a00b784188a6229e6fb983cb103a30c7c8bbdc8ca658edf638a6acf29c6df500b91ae0c9cb9d8beecd9b58ce1ac8d1ef506d1bd5961e7080e9a78d37aae5f67ff01ab1f4afa1cabe98b5fa66e8f8c6d687a271c58c6003c6e499445e4fb9c85b6dd5ab4af31a33b3fa4e76bbb29283a9bad6ab7d9d2cef241d30fc01123a3df4b47fb270c222bd5d +expected_result = pass +expected_shared_secret = 618a8496b8850609c09dd1d18798ee2bfff3ed7ef6f8b8034fffcec98f291d69 + +comment = Official test vector 39, seed: "cf520b92a2e3677afd003ec1ec6ef136a709d78f828c9c0dd4946efbd451c5faabfc83ca66f9d3d17ee4220553b7a69f" +private_key = 2c021f19322a908456f1677d31dc8a4a2a734a2571d19c421c47aecc507c3c53a931113290b693afd1b7ffeca87cc90b0419c48bc4359d64146d9932beec78766408f59216c692228fe59b768c92f4d5a3ccfa6a35599da2695766d754c1f682ab13c8966997f37a74985551c36828224c177d3a3ade3c2c20a907c830bc32906df70b021b47c38c606ef951acf7c1512ac15fc0d761c9057a7db1ac6c56198f9a8ed2f67a0f159a5ee6612109254d57745736cc3cdb634f5658fb684d805888fea8582135bd4890343a545e4e0a6f0c130b8539125ab06358f8bcc0a4b44a7a4903d018c960ca45779bb564a30cf1b340b4c317cb77da50bf899c10b4676f3c295b90e93c2540a9e17c3bde560f351c81c58b545306449585718e9199a6302e3b0ca1e737c07a4b7e21ec154604590d415f4b82778778905360cc2e49be4b08c94a744995f18959d4492f0b7a3f53a98f9a8d914863b9583d866712fe583fd2677e8a3b8ba5341902178824f4c41ba21cbf7a4b666acb413c31cfa744b9a5405efc5b53a2c64481270484134753c1b0407e23b95850a8c026843643e42b329bcbb7422df5cbb968b04f39210a4ec959e1b5c9cb32a180588b9baa690f7459b1282d9e9200bd1a0e910a3efd948c3bd0af04d866edc61c866b48d7aa22e6fb5025c6892c66116e271b998b888e0481abda592c8b36f7464704fc22c51b5ba995928fe03594a8073ad790798aa304579822255e61d11557092bc9b5bd4c94068c60b2940c180831c5167487b7538c9ab47dc268215c8c7f324563d3973fa73bbaf07c771b15070d880478d2693535425fccae0f8272cd7224f3795a70241d480425e4a74922309906e1c11c5107e9f34fac3536354100f911234d55769b763cf2408b9812aa6b7c2601161953cabf0733cd3af819f5158a136621fb159db3dc6c3f3220adb8acaa8cccb7cb2ee583b9909c903ff43612d178c568aa7e9217e345cf4daa9aaf17cca1b5a4a5a73ce9b0581e73bcc019bce2b68c8c273dfe588ba0861c5a73a6edd9bbdd66935af04e5ea81a55d62c9a8c51b3e6a402587ff4f837c16380aef5640f333db08a6cddb425cb4189ed773d8adb91e2708f12b78a0105bffee30873c1b6d5d5469f6464705741ec4310a8185a1553372f6091c769109f19527e95a6802c2a49127077b21126e7531a5941298bae199309cbe00d97513bde1ac82292ca1a76957d20a306932f83994a00f21d89519e16138f0477667f338a67450e1248a682142a79d9ab6b58b88754362a32af3402d062a554ca8a40da0481ba721a9b023da71987b744c6b9ab5e80830f8b7200241007f0eb72ae3694ee92814df4b1db269f4404cd0c77a844d2b751f5a0bd1cb93d61a628098d0eebc941827f77139831575b98e47b7dc3676d887b56d0ad96bcaa1f280049776339cb3fef6489dbd26205530cb08c53fb0839b49909864ab06b2c3fe15957dda96ccda90c51904df02c6a1e5846f892a1683838b9760ab900664a1a039b6a1c75f9c4b05340ede9881f48869dc881da0191e24bb5aec448ea052e57e69edf254575fca87a1b50e6d39520630688b04328a70ca1a871ffbcb0a8823dfd4747dc859b45fc2d1bb1872a743763f12d29d937f3f2a41d257531c1172af59c90806c7e5a15972a8cb9dca049bc92700a72b4fa5a739033437c946ee062aa86c12103b557822a08084be63c4c74d1b92608c3b02c6520b2991f8499470114fb659f89a937a25897faba6c0dd142d8d4868ee3c6483128241b287cba0ae49430dd6a28d1339605a4b750e6029f73baa1fa8ce6219c36a40e5542ab45cc781a613fdf416502743df8cbb3c4b864d0b448a20c0b0942a829601f2b131fb038587a99b80ef44033061b2e4b8f9a12c3c03193506b62aa1c7ab08569c7d0a88c8a098f87061ee41000fd202e2c3af4e625b34787bce55f74aa58eeb9124de7089e51a581893354b36fe035ce5fecab74018ee6209b75fc2702429c932abf71d89b8c82c047d77725cb6ed98608f2ba0b3462c1d428352c6376f6269d9869aff4bc821870b63f2284d296677b6145683ba6282c12c72512ef015eb19ba86b3571be7438f17311655c118a530266bbc6d9d10636b6347c630607864949dabfa558522c100f6c7941a076109253b5ffd76328c99590f48b3fc7ae7a5847cc958fa5523f540ab54ea0a302174e6c401341759c121b355c9280d2ab6a84f9028634bf7e3ca90679aca188667d5086df35b88d95b262e8478561a414b627f43b0fb8731d3bda73c6396594694a9f7024cfd55d3ab88342516cb34a922e6835eb8c067bd35ce0b3711d7bad2d7529464c493adc40d8ec8679c903e8984850034ef4a828d3fabcae9474f7278cbe79c8e5c1c948b94798d4c68da8255237ad8b0b38cd4a8dfde5abf6b2cfad98a677a8c40e208206774661490c3c212d23327a46a23dd6855275b78d29830b23900b13c638e31b4745a917d4fba95a04956c371212e475271ccf94f6295346118806316ec01d08454b0cd922d6f1a3e4a651a7a931f380042a09244bb39973ec5872c28c8d41c4bcc72ca4409a363c49995c45c7909522128c03814612214a5eb01527b67bce4463202cc14e31225b36a7d7d10e26966beb389877ac0062f9172c0517ca8676f5a44a10106fe75a31a4aa86688c075918a4d8a7461dcc1ea1193913c259e3b44c2d976ec67613468358886a9108acc7d0c6a25f5a991d7c53b8638c24a585f07aa074b5a2cb514bf7178e14112c8b31727a38bdd20a5ad087746768957f837179d50d25f6697f4a88d056451a593e385b74de8a01cf0244e70ac9ae36b2d76cb91e5419165c6507d141148869d6676f28645653bc78c96b9e7f382cb0c6768e2968c513c7ab076928781a6530cd3ae3286b0c681743a58d9c524be5120c880605bc139f672e30174095932a000800d58a926cf40873c44ae6096940a3bdb6e7966595bb3d23c9915bc7e29aaac9f0344c9b6bbb25cb0aa084f616332197295163989e1448784082c327075dacbb7d912025e4786710b0c7452f827aceda11a73ada09c3e54b404419dbf3a8f8b6096a73528dc50fcd230155a97a614663174683d1095d97b7c0e994764df2095ab7bc029b7dda3799e5a88ed825cf1674aee01bb0c17a5c84b8ac1ba061302ba9cc20cd46f769e1021c03c43ab07bab1bb0c7f3426d252a15ed5a27854ca7b177a6f79502789842e229637fd32a677f68dabfa371062d8b8ce9dfe0d90bf06044ac3a840ceb626b16e13486bb11e7d9c1368fbba34ce3a2f169c2464ef5fbc11f73843c456467b6cdbd4e01c8e376fdb140ee343106c093af7cb149b316ba79446ceb4e5e0cedb9b164f9 +ciphertext = 027cf1e2d501b25ffc3a13f5a9fae7f3535a8749d0005ef28c3468d95a2931dc1d4b6908ab8a4d22012d7ae11b21d594275a9288ea7f12fd1c5a18c9bd13741ee16bf946383c8d18de5a8008d98187a7b55a42685a5a79415cc55dc2bc2b81dce12cac0494ee667b948f6bd14b8503a0bd549f54cbec3e1ff25aaaf142e03c8461f8fcfddd4b0ae1a8eae7f6eee9915df2f80c501dfbadd8911463b73d254385dd5c6bf96d3295495b27788822759e13deaf2665b6c5fe0b2d51425c447c7ca06d0d86e803194140433bd02877ca9e47c23c28133e4463fe0bb00292929bb4f7806cf8e71a0b3bab86fa386fd0611f96d6b648a30a079719a283f02116db38ba5b32778f15e9d65d11fcba269dd19f85b4de540508ebee0142a10c11bb0814e0fba0b4d0d951d0f5ea38749534f0c3b1f6d30ed9c17e13a817174844d21d399b36b71241e1b49e2ae1937bc6d1a255f61230e2aaba3432eda6da8c0e3a7906f07982c5ace4d484853c4358401745ede71fd8984acae82d098d9c72a0f8ed9ae7a0ec72d69cfcd56197f082bdcc04d3b81c2a10dab91e3a4e4c15b815d0bbc66451bdd5d7293d0f7823989f7d6e2704ecda52db3562cd2dfd139e0e30603c7f3317aa2d4131ee7bc1f9aeb697f4201505c3c102d42def728dbf05a9d55714da3ab5d4e8c0a0c77439118f804efba1a3953972a62ebf20da30ceef4dbeacf69746baf9c392ebc4d0ace031c46eb4a7fd1466ebe992d6262ed24779c21f17bb3c20b63e716ac68fc90fe5fb1ecadb031ce87f6c2d13abd5c2dabc67e726782f44498eb1dae0b601863c02f13d3ab7eae309c48369fa77a7ba1f185547ce10696da86e2668a67eb3283074c4e3b7b8fe27c6c81060353eaa860a89ab08259ee015deda20bae823e0c15a6734e835ab4e64b540963753782db41b9451083ab2ef38e675e1a792678a9b0a42bd35586576cfe78cd86450db997759dbd4f9c4989b777272ad6adaaaf4dc32199fb0798a11d08a006a47ffea9d8f9a1489562effd9741dcde99d267a40868a781ff3817080eb34bb931b1dcef5e4bdc7bf904615a2e6353e1e6ebdc37a85b9f81f72e2afe2eedf6414c07c95fdca8a4d9b58f8d4313f636c3f6c83aedb5e76c63abd838404b1f86b9ab1ecde167501e9a732ce656efd9dfd39a266f457d3a73879618c46b4c034f0d2e6e76edfd39154c65e8e601f40a5c199e802bfc96af5e557c0addcd3cecdb9e7c7d35a5c66d485b18def8a814321856019808746fa1df56994240d9f0684f6291d86971580f85f706a59c6013eb57a52da5b4d15ea564214d2106a1f5c131a6a8ad3f83f86bcf9a8623069cc8df231b7bc84147155f1f7680bdbb7e0dff61706d849aa7b89c549f04d3f5b53e6440c2ce437c65731e5d76fac50c6f310ae3734e4fa46f75af8d8aee4e25b93e84e3f7319fdd8bff9bdf3bf18ff433bd5a7af58e542bc91ff81393d04794cf85bb719c6e9397f355b201a85202de2dead155fc4ab4d01a1bb379e71c78e053f5d46 +expected_result = pass +expected_shared_secret = cbb8b7a05f48b47d163cf8c2fad32bc586f47f2c2e0911da349f29b1e3286c22 + +comment = Official test vector 40, seed: "197e5d562de7e01bed4fc597db28dc6efdf0179f3a5bda5f94caa39d67bae730540534d59a7a06c8448f628da8b7859f" +private_key = 47a7741316be87861aec518a9b38146b43aa54a98f47e242866b8d79f731d98c754b572a2a9170a7eb4b0d73b38d6665d1e43af0b61ab95cb54879707805bd787913ee369d231c600b76949bf86366579ab62724caa1beabbb02fc945bf007cf57a225afa67393cc58804a15016a12dfb90d5a52be41f907b1f2c4fe93712f555b0ae896e85931020089642a23e4c38581d4c40a46aa8ddb3c26db0e29fa5f7a12b6ca32cd2ab6b50327ad0dd8139ad83dce676ab2dc0c2774c86a2c72a5fa2d4dcab588a66d6551c040e91ae045698ac0a1dfb95048c545d08654c1b560384561ab07bd8c61182f99c79a2267c961ae66434321e8501d474ad84aa71286a948c5ad187232cf72576f167d63992f62d3423ce75577c2052ef84019404b0e1706ba704fe3d116a518293112b8b80708c094bde829ac38e362a404beb67026ea6782362035cae099302c5660931ce31b93b665059633699ec44c28c2bd230b1942421f12388900081618bb29e315beeaa090a06ac7feda567fd1a12d1a41eba931c279acdb875d9ddb7cd9a6adbfb32239e843012a8cb91776775408316b056fbc42758772c1e53ec0344479c2791b837a6a34aa77710d35593a55e57572fa99711bbe5a83454bca7990e834ba285a09aa11666cb2b2f39704904354687d0524888cf6461ef302139b042540138e322453619b3dd715b617230e08c4585478f9996798e9b47c712f82ba45857551ea4c79b4a0577938666403174e84585e684783d33f3b701420f66d48473fc6bb627b399e90697e760783a3e09d6531cc524568def8507f0437314488af7376bf2a6bacf783b632197d8565f9456d04a8476da8cd6c988d26a56d29479a2dbb85afc18dc81a8611bc4adaaaaa440471b530053adb874db67102b6a64ffca8bf8487e18b2f7582b71fd78d85f819c24b892741a83e67585b6b1ae5ab6ad1f5cc02ab78d0ecbe01087f46ac9bfca464a4b9ca817c3a1af5cb0a6a3f1dd3a2ec06774e805e001b44c8194660a280d0d59bfeb35ebe9c943e626b98e488f8984275401bdc4959993345c38bc801b95d56bbb47a2b23f5f1223d5a0e2a827d4578948cfc5432627c9586275679202e3c970fcc980af56757912080072a4af234dd030ec481a6ed8030921691d6126839635c6b270497ca4a87d4bef47cac60752383712636752a4aa18af13bb36ef445fe653628704e4dc2cadd62839f9842f9b2c264ab4ff648c59d15708f55ae4a396d5f4bc75d20603c03cdec4252facc579a0cbd1f64a734e8350f03aceaa2734de2b486f6b93c36ac11803e564070aba97d2309078fb43768f98ef5d03b09fa10ffbb0beb3b5fe01310065508100206a640b93de87bd94a634907730e30800803b233b95d1cc7cce49c08ab143734347f3459a5be0230f9481d50b4b835a91736d6a7b351c8082a4d080967b43b0553835bf52943a380051f48c27823c5aa0b20b7b733dcb004b2a7819beba4b3fcb1f991789c2c57ca01b50523214af309fdf421187492c411c14128744bf4a83599a30b86194473c2bc9222fb4ba34108689aa8065aa24ff3559a76f759768c81a8cc5aa2a6792f3033b2437b05068bed096475d9280bf349f6446774b30fef5b426f563962cc29ff78ade42b497dc3b970f1b848b1141d7a5f45a37c25b125aed61863f22732a06128bca08efc8cb176ab6343239b572e1c8c138d829810227afaabb81cca0a73131155377730a120558231e8f8a598a2b730578edc7800b0d6c5627530ee92930eb2b40a9888cf648263b688f0a12e08f004f4bb449a25282029cfb73c32f8d31229d0a58e6aa08698517fbc5f619837ae3331cf763631d305e88c8f85413e9d5420cc282bad24a783011184011a79a3b305db5b3032b75c55907ca5c7f839320028305c439c39484895212b1e87925999681819416dcbc7ead45ac2b1262154bce16866c04561eba2c9ec6022b07a57a67c7b901b5da3bb8025c7585c86bda0810c442c39374040236a82884199159729834663d3b1967df9955de3a387d93d50f5001924c4fe433d016bc2b6614f2d3ba72fda226864ad6ba5b8c31681dc104348ec2b29c39fc9f567cae17bdf1c6e215c92effc60e2d6a3a3106bced0bf301b542f7987b582b0780b6d398631eb8559459b1db01a0443100dcc731291c737499c2f86452394c0b6662401fb57a4db232e40d1b0f2511ee1eb15dbf7b603e2a67808c064fc5103fa7c9c954fcd12bc619582f82590b323698a328cc14acb87c217e39c309421c7e6ea15ba6c3bd8587126c5aa02c26308c9912d7262dbb91ac2c2cdbb9cb009a3ae10761771740b2e6558fae775deba7a66086859270ec07b584334900c278002d8a47d01547dba3036336616a8c12415b86a1423a6c9aab5f085c7fabb6355b3db4023e47c7917c10c284333110bc978b2c08e16512ba95a07237cc35c97bfa51bb1b25e30750e65664377ba49200aa6e935b4c7451e547859edf03bcfc6904df05220c02f5e576604a873ee82b7693b962853b5522a5b0986348da63df86a64671737c17201ed556e92acb56f065eebd31bef43ca85db1feac395e19110a2f0c5b90459838cbf779c27247709765569e5a649bf160301003169e4ac2baaa4c4697f25869ab99179f9f792d9b19df0c148df7c6b9aa20e63426697d83a6e33b35f4c7e798175bfd73ce60a050146a3d893c4dc9b2fabf5960bd80fa0679433bb33bb91915e93c1eb2aa16cb13e0b9870fef99835a674b1bb76946bc4064cafde3063498ca30aeb3983f5cdb3a6b9c4970459d969f4d8b6ba27755b6ca8fbca178dec28dfeb2ac03318be7002a9a4cd7b1749a7fc7f09a6b560740da89baab8130872510c99630f3b588069d50a9550c97f8198b7a46148fa7ac1580632db1ef49528f9125784a5bb2757235fe44e74529a7ce88e91543b2ff81d9ed78e2647aa07033cf3422d34942e7830191b104c7ed56b8951a9c8706e4cb33cb0b918387b869084386420c13b09be75d2a5e9276246b674e96bac7782541e1ca441e53ff3b9c702cb95ceab628d1617704a448ef743e8b811fe52c659cbaae22377f28646c45642a9886628c9b73c510bbfb645d4077c1d8b954bdc8b707b7f6bc4701bb1af0f28b88dd282b78b7ee96732521aa6180b6021aabb415839dc3a1f6f545c1320c58b965b62993abf6a10c18a22ce6a45539685f297b1f04a130465845d189d17552e2f4917e924cc0d2dbc2ddc739f6b876472eb12ce233ccd402ddef61523fd6fee69a88f34a34c29253478090cb4d580bc2a912645bc685061e5d4437b3811eda69c865ea9923c0e860576285483bb5fd36e2f944d32c4317bebc1e441470c1372046a790d79d4 +ciphertext = 3f6f05da5d7deeea60bb32a85c0fa85f2f6339a48eb45343e20ad802329006d35743ad24a30ea7e1688ac9870485fb2dfcec77a5dad30ba75d613ae6211674f12620b2f84e32f5bab410123f921d8967d7a1b8ff92f4d17885b2bfcac31442ea09e40a41b54588fca2cb4624663895a8e4990d121cc261d97e5211ea06e12278d550d5b0d5cb815cbe7a6b5c31cc01edca9d61917346ffa49163e363b1edb342d496dea50d463c3c330cd453b903dc4b2fa78b93e4a78fff529fd38a1b57ea5e714ff924c14d97654d390b8dfedba47034db426c371e158359c733437cfb5b0bb39b1f4b7cd3874394822b9d137359c7dea734e1bdb51e77373f7e6a37561a8051fcbde5da7f65f5a1e0dce2b1559a4a90c0d0fdfc57e11d8e8ec81cac05299b3f29bb211756e3811622b768eed23d84e20ff27a2dfc7738cac348a938c0b51f6e1340587f2ed4cd05d1ad2298dbe751863be092d8e0f9ca870cc7759f898cf2497249206b14dca4f06783d7b54d417fcb578904d87a674b82967a820e525bf1c708246565291998d83a78feb27982b3d7b9259936eb08239455fa099181df240787c3855e564ca1d53253e45d7f12230ed2d623e7dae75e53dc57c41678b63f66622f5b762abf5374a01265d82eded50bda26177a09007eb30d3ecbecdfd7d7f9ab455949426773a03f628ae86261c11e6c17b276a4fdb7745ac76c7d536ac83a7805f9aab8f86810f0250367a86ad682c070367d6ec4d11581fc9d0913daacc0053f381218f5aba830740bf531fbc9e823d71dbf1d8f3bb2f2997f8a257f02fc8b6b6d9be236e190bb0f83794824e6ac07d6727add717472a0894b27692b6070b9c4197d0af9db339b9eb13630bdc016bb43712b92e79c35f8be95d4469cccf385a15cb76a48d0597ffaa710d4fcdc62e9587eba1713afcde87efc2dc6002a2dcb4105aa473c30a827d8d4ed21bfc7da7293617029f1f0cfc0857dc11c273c86e18ff68a129a74039f717dea458e3fcde1383d70d800b3d369f20163d2eb0b3333267ca8428c8937ec809f33d3f532a6fe3054edc3e88505f6e7001247e21597927729affe877ac665a6d606c36cbe8fb737ca62e2af6f6a3cf6a1e3706e5259ba689c4931b88827250f0e1f5e5fce0e6d2f8930ea41f3a80938d9a50c2ac817302d7f60546ed233185326e8f872558ac16bdb5c16c132cc2ec05c2b2a19912ae41d900274cd8d9c52b025246fcf14ea1bc299efb10cbc74481a58a5a7a284f3357702556441de77647b29a727455f4196960a10b86e434cce0c69dcba15af5b1ed7762e7f211b34c3a9223959725e181f0a2421586c6d36fe7d31944ede70d63e2340feaa54f1983a3a37d834c2bfdb9470fb8df5c9c4ede73d1820f87961448374b19058a23970a63150b730cf6a7816c8ca21145b2cdd46ebb01a65015bdd5d982ff8e03dcc1adee845aa5bf09a590c695cd2ef7f5c1edf40f167b28a894d9c33baedad48da0afb5901a13019f72c3147269bb3f2cbf688b2dbc574ba43 +expected_result = pass +expected_shared_secret = 1eef87404f318351413d52ba8a07cfa5e72f235d6f91afd7fb8ad3e683ce0a55 + +comment = Official test vector 41, seed: "f170583cb451d8a45d105457c02c01a33a40350616ed8515bd49067142f61efb00f07857e4fff3fe11e7164c648c76ed" +private_key = 35e4451348cfb9a06f1836296178b6af41a1c0196f26525831c081ea779e6b8c4b3f150afe2963aa756968358bfcd47d76415ed4294f02a843f89b87d6803bad504a9165b9bedb0c946058965b64bbf953e719160b53552c100d251cc9c111837e0a7c4c043ba0777e53b39f658b41b5f8900d4721268a8ab868b15a12c3b8f41316dcbe117ab3a027b8fc2cbf3566569a130d6db132ddccc5eed69a392bae8e4a7bd6c9708a48badebaa79fa1ac1e729eee0399803a374d3733ae501f1a846cd2f5166dc31b4d53750bcccf937b1ca43c3a6cd5601eeac251f9aab8b2489e22ceff436f1142ccd1bb17dfc75db6125a1a433325a5599fd23b49bbc3d1b9195b984303735f9f2646efd050097ab23a8aa5569ab744a934c2991ba046cb012467d39c3936eba9cfec4268e1a0eea559980133b4121f9d5a603e092c199818c057b7c841a7dd00af2c0ab3637878a9ea90bf377874fa38bf290fea6131345340857a1a53d4bdd9201b99fb628d975a91001f907a2e9ad37c9b99b8af915070339fdf76125d9556b1716cb74a9f18092afd887880526fd82cb002ca49e879c50e33af2e747104674eb1f30859e3c22f3aaebfd30fd672b6ab855928c4085130488540c8cbdb832ae25249f46b7178af9769a4b359664ba48da4a746c215c58ac2752e43835b5c2a9ef0a3fca159d29038cd60cd60f5bf508521d3d59c4f083653264776501b4fc62337fc37562973a1f9bd9532b4bdb25c21597a11e17096b155cd43c76874c44f25c1aa1bbcea897367536ecf4124feb6cdf2360cd5a082ac03b5e94232dfb44e1f124fdf65a4bd03b16ed729884065d77135f1f730a7a91fc2eb43271c0b2bfb8e615c07df54041917a95b0544e8513e8c6060d14c0fb802c0f2680051341960654f3594c9972c08664b7bd30b2f031827307b95fc525a2632c2456041b1286d6f175bc0b41942e8b8be69bb364a11ab4cc199f20aeb516ced1acc1f4b2b91b860331677290c643bb9a00b4b65644592c5ca5bb19b25d2a7080cc32b08910c137946a3fab6c8e31a1e97a4735a5c0a239b073c6e056053cd6498117497870718d35235019b3ee6050dcaac31a27167fe35ce57586c364c13bcc7587ca066c6e05673e2ba0186281d94843df10bb3a93c05025c0c691a0c41b229a55b7b506724026c4f1b48313788a212b0c951783ec9447e64314e878734ab59401923ada0586225c7a5c00a5f97bb76632dec47c15c06c7c20090c790404b3044136c79f46181cb1123a7d3cf969b72f6cabe063a35774a60863267b1ba34b93a5d3db25fece84a02429a9d142ed897320bfcc114391bcc097a078b04bd9356113b3cb993c19384886df182e37ba659d5b8bee24445411e318cbd092b8f8e53c63bfa3896a2cdbdc66e27f25c83fa85c260a34fd6cfe6872172f1361aa125e6c5c6c902cdec68708c14c175e910cf002ad647a317f78f52f76bae006a3aa51780d37a00aa20c6a532281719c5ac88641a9d15549088b5a4dda23f443335abfc5c2f7c5be2a142740cbfd612a83af271af0aacb43833b56295b51a885d798825c3a2c04b399c528530ca24117b6e762c7b6527b0509b5963b68560015db4d4895fd557f7434fcb61b199e793c5e763764c48df412acb7c756e1370cd117f8c10cafb39cbf0c8c3f5dc8da1855203d02b39647856b55c38e944617b8348d16a8221962a42398fb61978f40328c83a0b49bc843060d1711e289434db4b5b0838cd87949df5ac0727d8a528b8b5bf30ccb9e37a6664050cc5880d34c13ca42c1779b8d098c5e0876627c17a79b6bad44a9a38c56883d97cf2d2b114a1c4f1a502ab4a9b7b5398d9e73e543b860f87062e27a9fd1a2035185f0d98857b0759bf1c39a41984c8c1a1a9027944417f84cca0dd4206e9133f6eb6a989075d004accd9f57cdc928cd455443f0222dcab9a8890004c2596efeb06903b5d0af33a88f14fec760fc074a3dcdc744e9864e7ebc608a56002e483e60b8202b31377dc7f5a486d5a060733fca9836aaeeae05909c6b6b0db4531271fe4f3548bd5bff1e92160321218f963081c518874c0cbb792fda4513f7902be6547745a0879ba6ccd7c0f73b123dc605bc7995bdd14b018d8278c8c3966aa87a24b4a4bd3abafe0c8173c028df14daad39c288943eac139210392bed70c38d7af7439697be96977d23a27cb6e7de7b785673c9d1b33a081a9cd417129430c6c6300c496b04e1796c9c781e4211915162de147501b7bc55f8913c66c5cbd209ba6d115f753ba739417c8eb182200113ce17c935a0622dcbc674553b9dabcda17bdbfb4865d58143c149512cc2e74a2b508f67be8058461252d95042f8b7641e1d85161521b81a616a02110d7ea3bca4723d003a4db1673d64273b34c9432ac981a0c01dc8b8c0ed5a05d20c5331831ce56014ab0732b301ca2f8569fc061ddaa95d63667b9acc7a1ea656f821d55a31b41f32dfb3b66ddd5cd2155438db6923069430b61c85ab309bf56b0ecd990427c1b7d93991e783a647b1dd66696659b5c926485e1642854f0839033138a3a54c349c138977275e71e0fe985493cb85e0923095804037462ae248780006d0778334f664262e88498fcbb22d46d4f4291bb90afbbd40fbf2b302415cf195542dcf3375e78602fe1067638ab995b70e6dbaf7b75bc11701207e489f361512b590a860401a3facc1ef1375d8b64e0e5c7f863786d3984710c2f55ecac578c41170194d832929075671b814fabf45c6e2bcdf8c0cbe2954c5a414e3f8878ab68ca13189d97f316517abb4c5187dbb03413da654e650ec1cca0bc9472bd4bcc60ca6fcdcb26e77a025eb70ec0e60e20b19d30fc261ad11d3c0c56ace53de82c6a38ca5d59e9c24568b7cd15a0531315dec20d9cc957fcf8958e3747471a8d944a6678f6ac8a8763a1759b3dc83edd18ceeda5036c31a897b65612d2b176e9648352899bb2869f48b1e70c1ff04864487258526226a7dc64306b6838f4286b9a81a3193f5c9c711dfc5b9fe79bc6cc14c934591f93860b66511aab061295af186b8ceff5772fe50dffba4f5256522b5c7c55a6ba9b13b615fb3b3bdc4b159a1c84c85d717824a0573cbf219fd9b2a32ab66bf8a498a04aa4e22509a5057997b74ab5a1b27b96656bc194af08114551709a41142b715c6e167e5ba5945729bfa702c236073fdddb4ceada972810253d642ec094333c028b0af40ce2e29993369eb7ddd07164969a62466b80918873a4ea56cd80a8e559fb30f6cce44f1f8fe60a286de7dc142efe935e84b0aeebbd32d050fd9d8b008a94e59454b19ea401611df89d7d99d5c3e0d10d6ef9af054d842375f695abb28e3b8eb495100f04306e92 +ciphertext = fdb35f966ebbfd16a07385adad48cfce34f8e312619d54fa614ae387f2d7c1e80f07d8233ca39dcac87d98d0b0972d96058f3d949dbdd749a759c31ad696837f7e687624d20d6a921ef055a55cfadf48a5952eb98a1d1508dfaf0c83d9623f08f7e6424a5dc45de4ffe226b3e1e5d5ee5ee53ff0a7e12a2497d5d4ca14dccfe23eb4fc26f27a62398d4f1eb268565487124306da0f7cd8a89e4746a9f42180ec5aaa8ac3d821e3f24cde824489fc38f7f26d83f1a134a19929e3ea4f3a3eb13bae2434104e115e451d7a7dd0732f57d764d7aa63399450b5e3a74bcf5cabc0b597919a1a14d6112549483e6d918ef6c0c1c8fc71ad382c63c3b81f14ce5a9c2f57ec3a3c58d643db18637a2e84c1ac4288dbde2660f34f12911000662b519e69e2aab4ff6f7093ef7330bc91b6a808487a5987389e380a2bf5149e955349e378f96eb17131d9d00b218df9f9de4a607614c614447ae1af7b7880412e686643396720978dbedcba4eab3de76233545b578ef85ceeaef3689c0f7a8e1b20c601d96ba4d9f2326f35d60a7c30b17344002cc37698fd84536fc9ed0848b12db94e17862bd2cea1fe8536211bb99bac84097d3a81661a452d05ff7be7f1a9febb4931351bd9d9515b69ce4030157ee5a468dbe9911ac26a93478225cf10d79ad86c75ab0d2c825cd43292515a317c1e9ed74bf7d51b8fc88ee3573634586569375c91731ac0e4eabbcceea2ac9efca2c8f9de612115eb02279826d0212de5fb25327084f1b07c364591e6fe8b1c647eea063dc923f2dcdda841bff87befa0feac5dae47626125989fb007f89632b87ef8318a2b0a669c554a830f29ed10cbc3820f1cd4bba6fa367ec20665858fc1033be26a443257a43329ddac6683649139b13b5a4237643eae57ff3a65dbf70377d943f9a88a8a355f32480a739d6913c0029ef691b6f9e14d8bde603b2788e9d1169086276702ad55fdc02832033c729e6ddbb142cda0fe072fd781072c954f07005189612db4ab774664793f8a00942d4d3304ef7d412f5717d476d67204a02667c3230cbee8ee41c6eec7c2d3fbc3582a7584e24b71e1e204a98c8e0073e068c6bfd607a1bf9ae1cdadd86ba48478b051411adfa3bef3dfb021f0e6acfc17a1722d0fbb802657ca3a1a3bfaad6f244b518284e2a88e7bea955e41556fc97eaec1fb6864a2f13b417984196ccd70d067b1d746d332062b2998c51f89ff9e7493b17562dace6b0f0dc521bfc2f833a405e1e5263006aecebf880dcd2cd489aec589793e4ab46681ecfdb07992f7b32973a179e7bc03ee5237eef3352489d81aec6a0fd039da71590ce193003816b04936935ef214d109c20c02acc085dfc79e4e4dd8b0640e78e8a90d45a421eee92b4ec78db88d63d3d21d5fe2d2550ed3cebcfa7a326abf3883d003b415cd3fedee17b934960bc2c2ce114a5cda73f7aa783070b7d9b04a7085c76d2862c9920e88e91c1639680db6b03b9947947136f301f4bb33048c323e061ba7948e1e058a01a9277bf6 +expected_result = pass +expected_shared_secret = ca2c0bba56645e4fce4b7e38a7bb4b839e754bf2834a302a2614377eddd6ae60 + +comment = Official test vector 42, seed: "44a6774b2cac02dff210ff861a090561a453db311f47b6fedb81811872d5d9489f5fc4103010139ae53fcaed209dc9be" +private_key = 03a941a829c025261f44172acf806bea5b216b58bab845328c36cb925a5169d6b1ff141ba44010ff2c1a446113c443c6d98ca879e673cccb84d5519067619edf59c23798b9b6bbcdc0d49df5f4b21563ae54e287dcccbe4c53c62918a6a213c460eb8c92377cb57a1b6d6467d40297fb90c6907b6be5b03db314c3ad5b2f46999743ec7ff0b055af2b2753695395c6157c60115e183dda398d136806b7017bb4fb4f36b7653bd17cabd1bffeecbaf2eab65b853c710820818b05afb86388f327fea6c3562a027c610afd9c0bbb23a571489120c2baa0d7aeffd196b2dc8b40d4016fda16062512a64462fe806d5959c49dfc0c9b2955e6480b7af0011edb2d44c6a43d08b5f469656cb9396c9c640bb077cc24ac0f293bab4cbadd998ecdba31534408b74420cb432826cb5dc8224c48159626053096063841153f723761f83315629c945778a24f826a28a90a5854ba7e80c48e44929eeca17e28304babcd0af4198962a045292f09ab5b7197a685a67d07ec9769b69e64ea1457fb8e1a70b23ac4a797132b021244944143e936c6e5d840494b674fdc9aee84a091175f8e3121150b1375e028d0ab6b709a443f14c56ab67e3a8721a4b698eac9615fa12c0e5277e4a412508446ed4999687ac5ac626ccf5468f3e944b8d099fdc319337c85e5024a0798556cfabfd47a40146691d32c0f179b5bb3c3088f2cb29e2b961b630610d1528fab952dc75d23339c26a38f68421c12c2360f369abce128cd64551ca29455e02aec7c359cf9182f5642f1bab42814aea8f2844af15670421e0e113063b4b8c614487f6b6236dcb21e48613c0635e5f6a6a6e070fb665756f98156c65a6f407e1014bd6540a92e8a09ef6c944db876250b951d16332251c5bb6b79f88928adf6bef819a241068b08337136b8bdc33476fddb0292b68ede75490db193e267bbf2f8459fabb17d10bef7018ae895995200453065ad45457e3e86a12c554db3617a99613767598031c86bd5815585444dfa41cbe068034fc0a1cc2636d010230870776d2645db640b409a292acc909aaa11d0d05a1b1469ea2673020bb7ebc7381190c271e2cf73d37f61f12c8389843b0540117c7ab924c140d1409f701ab0c0596103a1aef3c93a2a79be19c7870abe83232a7de265a1a1280d30490ff50c414a006d8a403c50948da4b1054b18be35a8f9252079c5acb2104bd42ccb51617839e07380fb3a62b3a5080295bcca410215ab5c30a89b727363185363027bb1a6b09fe83233d79e4527371ecc8b879c81a25b3e6e088d2e786976396ef8d6c383495b52eb69bb718dd7facf5f120303ea259fb2bc32a5269ab45e6bd8ab9f9456a68b869a4c13a0b6c98dd1bf276572efc9a31591acb33b9945919fd20495db284bd4ba7c66620754e58396c0a191f20304b545aa2279cbe62d08eb4c82e60569598147f9910ef70abf792d375420bb999e4a9cc28db0193a124d0cc78807a54d13933b25b350a16c842e4b31337bc7734104fe564c20f27ed6ab800717baac4a9c954c6ec5238bcdf309c6fc497a6a9b9e4973d7d44ea53b90db26912ac7796c327d24d3705db5bd0266b17b145fd8ca77624c8eccac1c209073b2a639d5f135d06aa99635c9b53244e1f898d8494b681312bfd243c8ea5b7e71ccb7a5386e477d01fca3ef4122a63934843450a446caff55184d052923a393fd887df6b045659cc282d1424b19b17cc2a2384132eff067a0347f88c6b392aa56a3519a440438d3f90f6941112124c91fc31187ab0ce6752d9b336a1e230f97837a657599e253b7798c912a66a48314447c352b84590941355c6bd1c0951374105858a46502ef39cbb58b8e63a64e2b99c4825912155695893a62af6745e76058d551a946161f25f1b8fc045602344a7f342facc50e9565c1d59a459d34233c1921ceac6e0bd936b496c8fd6a619d8b0649eb458f8943eac97293635092666688db559d255ce9f280227755c3605d6ed007ca718527227fa1f40dbcd88792801d8db6b2374a23178a72276c790f902d7e969f2686c9508186788905e77132dd909397f6b6bad3ce77e8cd4c4a3b9686cac35abc86d57e911cb58b0c997c1935ca64918370809d3b1b70cb09641878e7c0a141573030aa2b687761bf43ac89a81e73376793ecb32db53368ec9e079172e9aa482fd8652583b9155683da3467e4546f26ac98371487527c37b6646ca582017892a188fb2440ca7240c3c22577230b59ab8ec038bb95cc49c2a2f59a4a22c0c482713544fbca9d7404b3a6ad86e8764a601b7084289858bf62a2828d3091ff015089726ca23b1ca0f87195ba1abf80b01f101f8584c15289196744500000b431a60267174f2cc56860bc5ab4ec20d19ba8ed47535eb42fe1d33f2980ba211805a3618f2ff64d1cc634caa6b40fd23615538366dbaf41971d8b5857298c1e406a293c1b8b7f4a499a97be8cc51b5382020ea9c7cf809fa7323134290fa461218f4a6f495caba2d1511ea48b7e0905b0465f7a6711f2716b17dcbb4b9a1b31933d7d3622315c79f3f11a93c8058fbc01c4839a808a5d2d45b99f7918faf52db1d81d669c7988ba7eb8847187ac7b76404b1a139dc4e4917c9b4e29833fd9fbc36e4bba96e25bde691ce0c369ace7183c762bd04785efcc6b614165c014a0fc4b64b24b3b46418ac5b6b7bf69cbc75090b69aae46b4a12feabd4e134bcaf14922367b50f17976c6705e175ff34612cf7b086ed733deaab0ca815a53c99b2985963db89bdc284d251340b0e3ae20990ee93344dea18063db6ef4374a331244ede00b46676475937a9472c82e124b1751a9e4203becc77ace092b055abf0892637b39c3a9a011219c88139277b8bb73b9508142421939380acfc2b81523c72e923609a0505e2979e086ab85f9663e549f3350a694458ce7b02bd8716c0f8b8946a21d99d97632952bee898989c1adeb710e15bb25b0a22be598a65465bf2b899719d00f9d16367e9436803ba8c17b6b3bf62a10a017c177125396bf6745163fe24c455319cea69393ccbae42508156167b28a1d1050bdefa5a789bc389031bd86e72af5f5bc80a215260737839654998295d5aba8c11a5417b55d67201243393b7593400d46cca1d321c027bfb09cb08a1738c88b7d47e876ef7517f8d96cc1c93b9e93b7062227a55996fa958a684aaeda89587b015a6b336dfb610721298ac6ab713f3a2e37b2aa7b1ccd2a876f03c72546b861e351a73036f4b363137340efa7764c439f68d3c8e0723683aa8254a66284f447029a2e12c3e6aa668afb5be8a82576813fac7b8e61c5a88aff94ecc2770c585ecd292e4c5f9e1a55e0489bceffb204d672a6215f4f3980a646d9f880817c52dd +ciphertext = 2726c88c44097de218b782b16c655fc658d29386b80ccc0168220bfeb554b12a3ec13ade45147b3b68cf67384840e1b011b86808e2b922f7b9e0db40b5ebf11ee131a1b4c10a2d350c1cdce92b330de7f838e29062bb243e25f2f62422ff334f7ecb5863419b44024039d1f900d3a21f5f48bb78f066aa726e070711973c1f8de28efd8d71e0cb5ee72a9d675974c02286b56029dbba45e064bb68db2e25131243d9cdab71d2dc8b56263a6fe2b2d6bedf4cdbea2572e333c4b062c91622ee60d1e506384e17a10d08d61cacd407ec924944e9690a81d1f7f989cd58c243607c4cff68058ac8c970376585666d146bfe8816fdd0d20e13bdc0afd88ccc1282a17827adfa9c927c55ddb520c248216378b68908155a718f335c39d0504bfac4a069aaf2c64b8cd935d5494e31a399257997fa8df3c4237e4209deb9da336d4cbb116c531a8cef2f0be5184dd08668630632d030831dc13652370f0d7b54aba8b122f968b2e00af4a5d9c1790554b9077b2fec861ce9e8dc89eb21c23ccb68e9080c2cc0ad9dd4c3364183a164e9f57401653cbf95d0a58d289f481a38b8b13cef56926612848fad81e5f2a1468808ff45bef6de82c121a8d3e956710b5a0a37cde624d1aff6efefda13341a7cf6d1518b633f65fcf0b3b91c06769f307f94347c7e1efcc80e02e823dadbe0ffe2cb7f3bfbf3a60e8dd31506304155467d28b12740ad712177227b4468d5f4bd305ddd6341ba68ceaf4d4fade19fdadaa3db805d37671f1cac1c57882bd710b2a7545594320114ecafd0fda32fd9e06f7cf2f08ef27de1ea119239411a10598bef458b8f3604ba82afefbcfb7b6c92cd65e92e7518f506c684b08d156032fd00c3803cdecdb92351ad7a3b7768159deb534a24c9642684389399205a8b69f52e460be217ae7b5b08e8c1360b6ddd6ff35462d9066618ca07836a136d044794954e3812e29ed9b200d250f3dff0672aae2509b4f32cbd580631627085147c5fd76fabf284b88a836fc4a48911a892f03a92a4a497d62dfda5b71acf4dc4976c7670c88993a23b1bb0c21f6cef59b0ffa88c4c50393355a72299cdb456a592deb3f749e1341826b3e89c4138badfa1503041e50c70f8236ec881b08bba64c46d611e160cc9765c512574d875b50a5781a7871a6b4bdd02cb344a586bc1653ca974adb1175519a0371695d2490a54b2ac21d53916d584f597f7e861a051f93b64d5219339ec403d7d537271d5d9928e1530a6c6d0fe8e1055ce1eb70e5c929afdfd591cd8f9942b6fe252fc98801dc4ba50b9a9810819b1b245ca74a6d8238a4bb7a64cc6f3c7c4541779ccd0f8509d9202a88af0ab2552417b13c075e1c609af2281740847648719ed72e7695af239e0c288bd630c72d5957632c76e89b0c5dbbe74ced4a1536b1e7fbb2b7e6edf8feec8223428616ea5f967ed05eb2254598f3572e2627b6035025404911ce26378e8df914b06c6415e528f9e2901a90992a5eeb0a2326c8076ca8da8a80931b222b809bf62e3a5 +expected_result = pass +expected_shared_secret = 9155619e28de6cc0670ce70e0ad270f0e885e5f5f8d6d38426938ae1036d6ffa + +comment = Official test vector 43, seed: "49e1855588b6235df2a400c4a70aedf8ab17b6e5e2891aa745f132fa2e7ab0c8117c1df37c39f5d57624eb77c2b4a091" +private_key = c842401604c8c4c78d8417c804c2723b14733044aa2755897f65987951218361a07aa84d6af8a956454036b79e145c93b9d4b862146bd4db824cabcb61fb91bc306f851c9e93ac266e3c9e9c939be422b07e512d28503a6efa9d3ea8861e39b1ad481b8ad1805a8c0d48179aa1203c2ed7bb59d5c8ef651281c77f83ac7b49eb997965b161db025b47ce6e2c09edd41f5eab1c8b7b4d20783d60c90dbfe6ac387b629be10351868186f6a0bf68905f8c1cf34303fb577c25212919533c7044697d9425bfb76bd9d367f43b2d3613351d95395f4c2bae63b2a4608c69364f41e85d542a08f35b940fbc3b48f63360b50aa88259c7cb4634e5a34300c5957a3644f6ae381389b53210110329fc61519113c17e64782239941cfbb11a647b814372e313205844592cc3c17319b41ff21a0bda3f5acac3f18bad085c8f27b7758b7519316653ba9c253dc94ccad37f98d00b9fe67e2a13662c77921e4a9a86c8089682811e53a60b1089a1038483e615e6eb109a3b7636e02a44c2c3a81b96d84336cf594d24172be1bbb9c7b3685ea45e45b81d731b9b75ccadbfdb768119b20a0c346156cbcd5bb107a00a0e3c6e949b9db0b4ae21026c915908c5f38413c648edb20623f35b382b0cd5f4a8d7062bebbbcc9e809bdbb5c84042bce2e81bb0d795c6786af95a7e7b0629f7978a03558f98709a86319570273bea71986aa92560260d022569d4c98a85bb98aa198deff63dc6bccd1e6032ebab8caee5cf4717b17d89125c67a8a472c371153a4fc9045fd3304a74b983936060f42c80454a005342c1318a284bc5b9a71a39e748a94739536b517dac1619c00db64c81001acbc2793f9f29b42214442fba962f331d48c300da2186d21a4de61c4b5948c7edd1b9fa5865caf2280a81b9f7171137d6a678c92745b1aeb9db686ba84d65f6beabe332ff036bd113161fa068e74032ca5736d3ea3a01f1acfe067dfe5a5b398575bb9b148ee6155be2b4b67b348420ce758c5855102fd06a1fe8d347ef1b073f064f1f7926be5b2343029e5b7468e93b8abec6be231b6bee714031e04ed23c6da37032ecc00374706eff7453dd931d80029382f17e82a85ad7a8b25ea97d1d2aa21238b25517008b0400281168328b02869889f7f142cbf1ae8ddba5ef2713de649aa9ac56229494db211b90b96ae3b2829ae528c634110a3bcd355a243f3654295b0b79b9b7d43272321959b3632313aac107c8b7aeb83172778b7b199e736307fdf5ac6aeb40cfe750b7227f46a00b9000880d405877b63ff6c616bf4a51ca11c863a79b0e099308b42cbb7997420008268a3b762b9a5e181da14a4a92a5b55e7950268a9a83402889a98835cb9562a5a627750a5348b3398b39783009a081a058bbabcc7740af00b8cdbb4e0842c7f14b47ff4cb424b6252ccccee30398023a9b50b4bb4a2c1ff0a007a0a54eaf421fc2113f0353c7a1da6cbf3c7f5b448b86534fce3b3b82c3b82c3420bca7c865aa22461b3d95522e9792b37b78c5555a62a3439f3ba7646076111336079bb8352a286e542094bb58b07cb832e2b288021034ed4934469b1723e57e57e358942730196140f47658258a761edcbdc046c08bb89726ab73a3355199a1833a1268a37a087ddb57ab621046db1f407c804c488e4196048ceb762b9024c2157e7dccaa1a762881280715a1467e766dccb159f4780a39bc4f4a59715700070318c2ae03706b639f79a8a81af34fbf6c9ace4843151ab5c3cc81af08ce392335e4fa913052119904745ec68cf3502f4663bda74522ddd61a318539e10a853bc90a5b06aa12018c6bac4a8123719c567719cb723b420540ebcd84c2787f37a76c6c40fc983436c26f7fdb14df17062be752af2c1f1cd1026856500f3831cca75eff7a08d4d9c819d295674550c1c951ff9a0155856c3cc143824556c09025d55b0db7192d969926c18912bf5ca8629401b8c53e23832cefdb369020583b360595541f48573ba1557fd0c1058a8cc5ea7ca7f092b7dc7b4b04490fa4e72a37aac0e33b1746aca327258d9d29acf140c5f70b8f94a23195d60d30a498259c6f9d06bd69f82398953b4fd39adeca972851431b59c9614b7867cb1228e2519ac130f003903d801f70bccd776a9b916684cd89cd71723ca732a21fecbb90d547646b987155cf5425abbb2406cdc1821afa8da120a540d1c3af175032444e1fd85f43f47903665be922636755b5e75a90931c66e89345f57ca4a032959bdb4521cb62bb1377dc5c99fbe36c71347b81a80b6b7251fac3732475009a719f4374bd5ff01cce4601e761a754e05756968f33fcac4d6a540d93951d0bb4d0d838a3112872020c2dc67718888dbf408941b877eb6543432675c879aa85f102e608aedf267e32d333ca9c3860f907f17b553580aec75902ec304e6c7996ee34061b40a9f4f8ba2ccc55775490dc9c2a6d5c0134e809bd305d7445c9ebf7b89f9604146b2e55a1090597033bab2a25a3886dc524f4908adbe98dc2d74386806ad641712d9c23a19562e4ac7f57a86fc98663e455bd963c4e63d8471b504c14eb718d8bcd6475cc45687f55099f8fe2035f3812f081b6df2a174999765cd69433e5312be67698346fa1030a40943f8927b2cd8a1e2cf2514333bce85a89a6a99d03c4a5c0b847550972f9d1448d1819b3582b99a50ff97c124398cff30967013c4dc4d374379b4e8b037eb0e570aec147a1c99cadbb651bfb576ad61bc5449c5737bc4ba4a01f24aad80375acbcbaafeb564665a192211b4d6918260c1251eaa1014c6f41427465609310d8b665c6763639c71ad48019905cc0874be438023936856017b5562a9ee79686bcb55e04a38eb9b3bbfc07acd4865860a77af3b5acf7db344f139f79d5953778124c2c92d29cbfedc21678e54861eca5cd350fa09b1365fb74435316f37386b9b510e2bc585da30a71ecc7b9913921ec8d8fba2dbc97807b693b1e306832507cac90410e0576611ba79c1ca9c0b106d0147680790ec5051798592d3035aef57a0174cbc70b435710c51695852841907d41a8180123a4d911787b674acb513c84047bbd5851c3e83a8a046062c06bd84397858241c95b8d8d2a2c53038856247506065a70a5a29b701bae1b488a68c2bf02472d86bcbfe263e7820902102c612747cd60344957a871c7774a0980b70b56f7bc45f8e2bd2085af080cb923b55640bab2aa2c30f206ccbad17bc9f58c1cda80399962268f2ae99c43bbc1fa7d8949cd772a745bd9ab018fd3f6ed02f32cd2bf845923e3ec3671cc7675a321af8584a0961101c04a432772431e77f5740ba3b2ef488d8c64c049c6dfc0f1476cffd520b055756162f7ec94243de6b14ac0b9e5fb366c +ciphertext = 0a307d1a8a695cbb2a421d2c316ba05165535ccd1cc9ddb641b9edc8dacfd10d001d7dc8166a7e405f6251abaac6d5f466438f4a2240557bd7cd6ef811d4e1334b76274dee6c34b79979e02db09a682b3f965d6356e9fe640643b03c9d3cc37af284ff51f1ac542060c0377df1bf3f577d387c8a5adb0b0a615e9d93c7b54a6c7e3593ac118fdd7cd1985414fdfcaaf20b5ebe647a7de9aae9b43f0e1836493fba2aedc459aec78bf697469daa96819fa276113504ea82d956255e0de55f8c6268881e2795527889278ee674580866739fe66b66e94ab71de0f7637214c2e804bfd8414ffd95a5aa0d1f694760169455a5d47bad6d68f277279527e8d2e6e95051c6c92fefea4e07610abfa63ae90fc38d3b819df566ff44379354bc4479007adb0fcc603a346debe6a2bf14afd1da6e6c04b1483637f0814b5bd5f92984ed8f895c35c9f7f2fb5032614e52ab183639e6caad3796b9ffead73a9822a23e997e0c99acd309d93d227b9bf1297edda5a443e4b01a0f67e5a25b2f395635a1fa9d25241649767baae14de7a4bf3d5cc8d7360460ff85ff0cdc646a4a2f8b5d1edd9e88e353f4771b2395095026b79daa65e25bf9c4d19761f3e9bb955dcc6f2f288b1537b263a026b7067a309b08130438db1c6790835695987b705520a215118b20e636145264e37a1577c7466de14c26e4c372b33059bbc913a559880e31820fd0be232eb7d289f5d6e9abeebd9018fa4247acc708f602b1e8692ad10b0dc6499f0293d1b0624ee40d7f13b235210087be1a8e2c709b88f6460db6135ccda532f8061772a5767501750e58ced64397bd0f7a280558e86d7fe81d34a24d5736e4e65e118c7296b020c55af0887743bd53e2a60f809a024c68bd1324f833e8e1d505080fec99b3e2098df4e844341f7becebd889c15706d7dde9dc754b6393da40167a2f00209eaf0583ae4ef4048dd026ccdc2884f17238207afb355a419f3666f80d963f338548b6fad3c9b4a569a964691f8cd20a1abb3e01fc5744aa4db5ba0594cf863f566e7b3eb401e62e05a84b30054b7798d5b81bf994a4fdd3a876b46898820fa4480dd9a1a5ca970b459a4366e5097b6d792ca598ba6785b0e3328aea07f594706af89d88727a0fd7a5d16604766aa73c21081303bd676ccbe0ab287f2ae1ae235fad0a3d2346df4da3cae145a0d2b7f2a70dbe3cc70304ce49e528e1ca56fdf81f33267402d271203b8990773a1fa03f18380efc7dab62ca34e28d5db918dd6365c2d79ecd5d70c95a395211afca1a0542201e731e61c1dbd31316dbc41ded48e70ef47e4fbbab6bab47a56dbdf58c5d741008c74823561937fecba694bd31538064bf242eb926875b094d0282a9583886bee06c948496c24d563210cd96579dee6de96d29066ad4e1f9d1ef1ed463f7c9d21bac44c9cf303922fff1337fbfc5b9559736801f80974dda71ca185baf31f4e0e2936b4d3ba6f85539816b69a8d433d84a7a88d2c3abacc5d4838fd3c2952f293a0adfead7b2829e4d +expected_result = pass +expected_shared_secret = d1f24383d5b8d0c3c0a6a5f8f7d38ccce13ec179a84b0b09bcda4c9988f3eb4e + +comment = Official test vector 44, seed: "df0e41d2f6f86c1f79d31fd5878e7ab434fc0af3a0d5f47d2ab3fef31a42bd949b0e3629df9f575befbb62e829e51dae" +private_key = 0c9c633ff39d1c6c29f8356aa02981dcf189d6535e2ac00750c30b111a88b21024e4823e7d543614f30112f7c78f1679dab68b71aa992538658fd0c8e2984abdc09647453b3fd99dd860238cf40c9112a7dcb57e06540148ea4ad6f97020474afb65c5c67ab4fdb1515c6592941b1e38d4097155bd194b5324f464dbe678ece9b5f8f57822f87ed7f3a6b470ca3fea3314b4bb404cb66e3bbf8f2953f2682cdb65cfb47906b3962443775796564d75cbb4b9bb24a8a98d7723269e8204ba89782f974ae591808e97cb2468252c8539c2454041c9232f33b43ed8359dd6856c98ba4fc09e92f9a4ad497f8f1159e159b5af795ab09c20aa753931f47764b6cbab6968c7a779802b469abb1e7f677a0a485ff5cab2f028112ee8c35152703bb14127b33fb00a0ce21cc607e49a73544029baca215a67091a9ad89a408794c4d2da78557b1d31686c6b4c3749958efc60891f12c9e0b7c19613823eeab1d8f672089339e46c16daf0c3b7d53727605c26a723518a2651d8762ac373817bbddbec1ebca2cf91fa2a66896c55a4c946a791e5502ff19aa21cb132322bbfd127c10d87563028bc49b222e5401acdc81991828e4c111a54566e5724b40a452c0f4632b7b85f0445c881938134d516113560b0065beb409fceb25f796c0ba0ab190fac0214007916ca93c2abb11bd88553aa34c3c518bfec423728c86e529c300a1f70225f2f683911040ff9405614e1baac070e0e90337e134e3c93081514a937f9798ea7b57b3a3a0b829a2697b0778c802116c067a5c368576395c43d33882f97c770519c16426284e19bac180a2a6cb85d65b1a115316b08541dc231c123c184e82c691f20749a4b92f2d1040d09519df7678ac282fff9cf5124acbe04388ccab61bf71b87ab3b830a3ef6700a68b06770012424031e89a895ae81c8aca9169d6495cf01cd8ba0c27ae132c16aab0ebc4b13abb37d67ced10a0246e87be1233ff09a6802f6371858972d21b48d410d8cf3a8a1e664f62028cf851a134037142c20e8eaad7de32581b39b5d93221cf72124a73daa2b61f3d7c8f25a973a815b351206800bbcba60ac8c2a86a7758b38339751c23ea5523d84ec982a260256c69af739349d206ce9c9a70dbb0a950a0b63815994a6878711578bc22942914df8489ec5a09258eba796e8a6ff5483a71887e55783a94201e5b88898870e67d32eaab132519624f4b28f22e80903e591331ca792c0cef824bc62168be6eb8f7ba299bc519b0c370509e38377f171761521f8fc882d1b8d0db3c2109a43d1754f75529f7b071b7492b753688feef12fda217ccba484ab79192b7933781811986430bcc010b50a5621ec15dc7bb545cabc77c336892a0df4436e732b905d70769865cdee0a9906438e9d921f521862a3227bab93202da0cd19f6221bb68fda8155ae38132cf2a30a4a5c3dc0b17df0016fac3bdd56cd9d06cc8f2c6b4ac41207fc1aead0cd87506caf5c043941513f0a4abf725818c7686f0745ece93c23f2951ee263f51a3fb3630076dca4ea80a156dc6b4248246f638024b8782c9757e076ceaf18cc27284c321ba91766454640ad32d97e65650b39c9b23fa80405f8cec82abf70ea4fbac16e6e3c5e5d9c8ca207a5c77c7883b917fe0463d3101962b802549a87bf39b9bc7a30a5b654c9c96b14bc61506371e4768429db8f7c0a6204903b9bc9311c66b907c5825621b7ebfb52f6c7cf75c169c17129595631a2fa95920317aad4cb338329adc69c6795158558638c474710c78763e012240cbdc2e586adf93c028522321a94cb766f9e983fb5110a10476ecba92fc0c120cc83632409940db249ec569ed5740471c86623b06962910307781349f342c759886f7c376ce708091019fc407eeae76409387d151c97cf7270319143471a84994bb596f9b5e1a78d33428740fcbab415c575e478db4b4e30771802e409b8c1ad4ecc9cec1b7396e664645cce83a40d512684e0b2750d8445d2180be5b4cfc09bc9fffc8d6e49b49d68c4d849b584512cbb55283722ced5566149811545609a4c5459f523c1c76667859760e690385f65768331b7654c30b8c0b26f2b8089a3c5b4f21eed42179c54ae61d22736512fa3aac6eb018946a47cd79acd545719c829b304477541ea92b10a1ccae8b36ba83d5ad83083fcb51df653ce899227c52581699b7150456cfa1910212f7678056a33755ddc7d0648164aa297f196057060009dea8d87e86b6abc0106a5536d7c83933ab12e294b4f50870fa0bea16ab49b88a60ba7790549ccc0e6571e81875d5632dd8a5627e48e0395bb4c243ed9d53cce7b591949408d2c87a5e295e3c3231f4132e1117b835529456a53d3d748c16280f4d597573685b04780f611094c665c66164a1323c290ba8c8b1031b142a3b53062ad5c59d8d112f9926e5aa591aba711ee2ba1509aa09b86c60a969020d74e238b849374bcae7788fae61296d5ac7ad0927ee30912c4287e3981b7851d5823295076365196bfbee4a3cc189020254f31b06fd8d70c43a94cf380c01936465a334fa59b3d39296305dc8b775269ee204639bb3a30ac437936cbd734a5c6477b2a451eaa0159e571bb12473b77698621d5247eb5012f608c6f070a67551f6f63abe87ba12a56b2b2dba44bf72e01c9a2c490579d2c103ce91a841c4f4b3aafddaa0cc3d33d31ec3ffb4a3f9ab87f93494720d386bb13cc482a4adac46395479d1421aa91216bbf56bcecb89f11588b4085a62ba0a47ef9a184c2c9346525ce006ca4819857fac8b1498c9ca1222175ca5b01b6bd502f69f8977a0b3b04987a1897a8f2f20dcddb098ad070d15c15c099a5672c17087c6b58245bc25c382ed3bfd5ba9b8e48932a27546a089113f37e8c85971fa10d465970d61446f106cca6200f85eb2de2947bb4ec57e58c1f7be6b6fbc025a4a41eb05c516578ae9ba4c197b692d20976116ba35660cc5b612b616269a837012230b65f2913e5d0362d0b510f1272716a4dd2832d3bacc914929ff33354c01217d8a0745c9263b5d80a4f497d99d98a4d895b59a59a1dc173ca6945fa54c398f351c8c3ab8d66cb8971a68157ce3ce82104094fc83c7306d242f1f0497180842beb8e126988c5a830d2a39c2711b033490fe1d53e432c7a453b4ceb05a5644253797135231228f246bc6a1445efc16b2f2bc674327a62ec32dbc209f2c4a5c600920d2856dc34549bc4656f7953e697cea6f2891fd65321f89bf2d90cf3dfc681c2fd81792135e1938ca482ef3c253d8976201852444e79836213a513bd4cfd42ed281304e3ee4560e4e0c60fa53781f83d5bd2bbea52e40771856eb77e4633504899fcb86c6a3d433d0b8d60e26f07bd61f1d4ed69bd +ciphertext = 39acb3d169060aa5a9a7aa6d76e53f8e4cd790e536b1947c3f0e5c084348c8f3f5712ad3ddf33d798b7522fa7e8f570108897391abd2c0ef86e04823b115adc2f106ca8239a4f8a52d38653c256262aee0b5560b9f74e285ae1c190d2ce0e0eb65668087b98ebc9eaf32db83fbc09b83410dab78038cfe192ae229ce2bc82fed7d653ca71fef58d6f3ea9acac45967d09478080760dfeebf095d0bdf723836903b8fde5b3e74cf57a1edc1d178bc29c6cab5c4381bfb591952bfc70444951193c3bb0fb8645c7d9eab913d64cfdb76e1a2f02bd7f9c98c8042146c5428d641a79046d92aa6f926d4409f62ba47f73255ca57a781cc01f2a6c1c5bcfa890ff164910e4780b322c4f2a0ecd2fd2f8fc7a2870fa3c636afb0910d25b4c56e060bb22e969a37bcdc29f3a3de70bdca6a59d803f59a942694db2cbf73de3a787ea166a1c111556c1866468898539a7f36f2ed7d15324b76879af9b9b70bf99546345e0ec17fe6f1311e9f438dd92cbca8a02d7c3778f5b88f9191ad12395ffdba04509f3f338b0494ace5d52b1e8e3534b901fda4001d493f9b83f89a30ec57a5aaf4d5102b82b0451566634ba68e1f7e93cec122e7ab4f250bc78b6df0a9b7d84a4de5fb51e1b7381497ddf72ecb010832b5e0dbd34e41e1189744174dc01a7ff3eafcd717dc2cb56cc145b6a8dfcd404b748a1dd9cae69b1f3db48e414584d1cb902904b7652512a9f191dd7a95ec60d1387e1bc4b6943c7a6bda205343e2e67583dc06c72495722a678ae50ef4a8eb0caacf9a41dc13a56c5dc3e2d0b98d2804fdf7a43d0fa2d20722405bc002d71432424c88ea9dbdac6e8dcc81e660e85e4c650a90c7e6d0c50e5e14a2919b399b1838bbd7543bb95275e341ce086eb85eba4dff4c9d3aecc99829efdd0d68514fc304e5e2529d04c9fbf79897620d9307605bc566fc6ae6f176a25ba26859097a241974cdec07837a0c1cb86e00fc8f8a4365a7c348379eb60f12e0b1253f297fabf6e6b38c9cb226f14a4ca9dbcb1120969fd56c2ab38dd075351d33f853ca3c24f4afd756370b0ea4dba295652354b89d004854cd89f57cd583b7a7a415e48e4a5e38941dbcb1c0e5d55c479a871b8eec04e4d5a73c93ad1a7183093c28589612c6a4041d98809db41238efab617150bd9f9b51a279682ae75fe7a057cee50f9a98d6abb1c7efdc2a0b1c0bbede9e1d19a2762047ecd4f37416a3f86dafa241e078b3defcc414afe25cebda4008af5a356d10ff83dbcb6ca1e71268f60524849dac904d7c0e638fa3a0716141bb8f5c019228c930cac73143953e4cc86c554ee7a700bf5aeae2c8e872da8fe7c6f27d901bb74d87e1f1626fb53ee3bb080c21fcc41f828032214a738e28a51cd5085d0f5a0b15629268461561ed7caffab7f22c2d00a2fc9276bb80e9964d0bad8a5ce2b627479439a80587b9e22e0b579c59b59ace59510c206653842b2a4a75d38f2c7984503ca35a62952afbbe25049ce84f5eed70686848790a96f42a3e3572f130b2 +expected_result = pass +expected_shared_secret = d2dab0b39b7f62de3ca9826f9dd15a4201191a0e0c690d3e52b305a9d3af2d0f + +comment = Official test vector 45, seed: "d3c9ebba6eb03ccb5c9b9d2c8d7f0cfbbf50841e24396cddf0e56525b38918c2fbe6c34cc1b93f7bcd4f4d5777e1a488" +private_key = 2ecb7caa911a2f615a13cb82e5a8be85e1c2bcf06c71b9696682532639b57a91537e470e8514390949cfadc80b0e5c3ee3eca869e22250560d8896b5f6eb0fc6ec0a6d01760c9108b7a26cd79039bcb3cf9ea0432fe0581626cfedabc12f758b407c8e9dfa373f45c377fa6d41a7205a7322b737cdabc8114df437e864c4abbb3dd084964f971b36e24406a7a7544a260d917c0ef95ccf33b1833bb6d4232bfce37b96004ed7779258faaedd9abaeb5051d8f605eb85be0f9599ff28b40587488fa376729685a8336c0dd213f55447e2c4895111b98e73bd783b2d08960abce22f6f894ae5456577a81156c66f6f1bbebd9c04d1ac43b77936f13060d3305a3893a825781e47928fc492adc16b31b2669882fca10581603b400f297b7fe7525d20e82958099b2d118ed3a14a8a915731525c470b7852a9b0ef04b4a3b0b65b4c5d7d486366175540a91e752993ba979d8a446f94088c7c3a02fd5c051f900a141957e63cbd71aa012db60a02b3872f3a623218a6b1f628fe8580e8725d9fb647f128c2519a8a0cd0649671616b462b83904ce621c95ff44697ca71ce930eaf0b28a6448a1c6b38c14800427683b71c954e49b6a3b978417b78ddb1a1b9729b89160b4c7ba49f312e23632460913d82d655d6e00b5b17a635827d8a0781e12a68c536ab40909f46a7173fa9cc9990371dcbc0b8a433436133ac123a73664a14e1409b4476ab001c17f26ebe968ed8c6a9d491b92f234499435e2df615c849be5f6422c8bc9de8f148a7c0713d93642dc852b33652287010f02b1d7b77972c797add3a38651b4c11ea968ce53f10d38df4160101fb0ee557bcf5b3328e12150a7c0d769812abf2ad2c1c7661844e6b34b25e7a30ec64b6e7d4282f48344bfc6f33ab3c428c76705cb9b1e9637721c9ee60874017013374082892b4af174749041c606b3f6690146bf1b0c8d2844f80594f265a8fb639e209c9b7fc418a230aaf340bba34c1c66b7d570918ed6caf8f62768620058cc7cb4fe1c762aa96a5015b82216e204c5821022caa84af9b12b9c9bc683747a2724c88e650539779742edca6a6a6c5f5d68faaf73d4cc7aab9b105f3a1b46cc96c915912e807aa6c841f6be63812062ed1d07bc9164eccec7e6662056313cc32f63c6181cf3343adc9073888d5756f508d65025bf6490a5f6b164a942466e60c4410c72aa69d2ca10459b890a4cb22a7613d44e70ac96aca21169f932a6134d27a6c05582e830c0ba137df060c6249b360831cc6b993e3d455c2e61694b11b520c64078bb552a65a3bab407d46c0ee173bbb52a95c7cbd8612380fc0cf1655c8e691bb0493103ec80a5fc92b4951a0d78768504284ad52580f16247b3c44af0a397f28ce3d0c0e4d34cc48b26b3998b060f2a9a013889685446b6281b3341c08e8300a013390a881a3a4937b412bf4745b069acbf5315b9955aa4999ba827bccbbf776829291a9067272059104522d69d1834886bde76c078a6061305833fefa710ebbc0dd0729493a285acbcf2708cf93ecc76b85691e20bfa4379c8521420c231f68429bb5c76e69378f6ef3475fca5760a5be829c2b4fa955e0e0931423b0a615194c26225bc538e2db29b873b2397a7c7ada2f4b0b589ebc97c50174e4317ed5d9cf2878c924937bd258bacbfc83283a218d443d8ee43f8cf3c64459b189e6b3ad100a6c6a3ede9916f89b8bb67cac332c0519f502a4c427f5c9af1a16a59a2122521a0c624a20149765e986339ed63567cc29cff15d7e8ac026c96f08d6ac4e057db4e66361b18ccdc3bcffc300a996ab7346232db7310662c75b39ad7aa080b23763ece54960397b8de836071b8914d56f95a681accb8fcb9529e5e4cfc2ec0601f7b0b291524e180aa0a69fa74ac2f17aa88162c481f51543a5a527da5c42b59f9a72b14dc91574b51e5806ace3f022d1f19e3eb621560478bb70beb8407719a01e16313d2f0c785e3b9886f679acfa465ba974676c0689a149ac04996f4132dc4974f2fc322b56115a64b0b5dbb8dc71869cc655dd61390b032f062b024bb71505640a41cc6174b68870da11eaeac28ad061f3abccf4e12231655eaf9285b205251ea69371d90527793495835715ac005868a78b1cae80025426848c4ae869b52034bb266e1b97480aaa7a31e384780442d9933fdb750efaeac0bfa802e5314d28a17d374caa05b46121e16362e8341dd923a66872df3c942177b58951c40ad1641f53a53d8708ebcc22aac67ef262b6155007dc6880a1f45cad3a5312b282055b1e0b181d9b396591fa78dfccb9d6a92d5cf8189c14c68cf4238654716f0a1e4f2542cd35a7e4e2185814c1f5b16d8c423213c69d5958c46960b8df589c185087ec5474df3c5112b5bb6bbcc6ab7160abdc2ab28801d775caafa049479a837cfc8847763559ea86239889385baa43a2848b489087fb43aa20acd7ac05606767798500f9271271e52032f21fc2a82d8d15bf774771b69c570ec488053743dc5398c4363aeb3932a5c54d16f45a033386dbe3b2d0a851116c2cd2fa4671b95cf7e60bdcb4976a2393647b714031870b1a6b2d486a5cf2a8093b7b948c9418f3a27f6296ea12336b8a6dd5a5715ce9a70dc6978038369a10332e3ab6c2971961d5c66441abc3290113b21c46e96c509aaf09e658d9b77928935b9a122e42bba23f920b58ea48f3f19a7924128669c09e135f772c275e55904400495153a691794a8d182ee1314446371501e87c41a944f850c9cd288cc2ea90a4e27864c79e554cc5924c4ca9a217dca424ee8b76e49993ae4b085e9809eae27401eb9c6c794a67a31705876243478f86d5b9f9cb3295422816526439950a412b4d1d28a70c6b9794c959be155aadb39e00b418efd0664b08843d20b71c547f1468c5fdd92b9d818336282f34f19b515946a7961b5a9319d9444cdc1aba840cbb57272e4da4ab20facd5fe4958a57c3c812978fd772c2862dea8b60b30a601b692dadaaba0f361cff27c5c734a42265341641b861b7899cb311e7e0acce396bce2809f24289c5361b91cba88493991987c0aca3b070411481e154104c15780abafe725dd3e1adf00bb0eff4a29298ac10c63fc0669df6379294aabb4588aad2087c9c16c9afb654f0c9c213d79cee1a843a84742d574de252a4f24795e9aa631d5198f07511160300a2e02a402b4cf8aa556ce67bd341307ce5a1eb6609efea3f066379865489701783b2c95ee6967f0893d44d76104bf396577fd719d69eb306117f3abd65385a87af12d1bb6d04330c2e803c2872400c49e1bb10232946ab939319e84ff32cd354dc15d082cde5a3ded5edaec5de3bf5b4d7c2f2e18e87f499c1968993eff196753db8045e2c8ba8 +ciphertext = 0899b2fb6c3e1b50c82cc10ece1871e4288e619f6f83fe6c3373b7aec9bc0fd4fadcb8a1cae8c76f7bca200d22bc19130fd47fabe13d5af97b927166a5cef08c3b54a9311ca168f27252a389b41cf76b7ed09405d0805e44134bd0a90c29e28bb2488e063debef324014a7783cbc81741b0b7dc2a471ef3aebebb593d995b91eff21343f19521523e53319a21a03996e55036989a3d2eba8986100188daa5b243ceb9bf10379ac3cfa54ddc3b83f91d038c9dce1238782129682d38b605f652b73ea182b0ac01460fb45f0c05cc545808b87f84f00d96fb14915e1802dd6456f5466f8eeb70571afb129844dc95f87bb88d4270edd50971247ce1a2c2a07573d5a3efe3dec8989e9670974139102270b499ff657c2ef9aec1a1ae2a6a0ec968e58a0bfd58552bc4ad2de49df561e1c59c471990044dbd6f29ce4509a92466337704fd9deb5452b6d2558f2f76d6cce661414872dc0a0b9faca3874a9baf70c07e72562941e9b74b027818cf9e20519ff714f743fa7a53a778bb161739efb49e8cdf3ec9bcca18a72ef9a34f3cda4b313710cfed57e5bd7a6801428f7eae5b531744d8fa5d7aeea0bfd0b58d7585e328e065908fd9b4b853041fabea2acca4875cbbbf2bb73cd8c876fffae08c5c91e6d0938539c1c6f96852ae9c9aa90865f1ba78e5a17a00f8656ebd1e52024c940995b3b38b954d1bd3267636c74498cf4a996ddb024db76445b9d34687edd5ef67bac73c01f3a334bfc866a2fb036d2b00972ee4dfb7c6e8748cfd69698e0ffd9d9062c00ed57285cc96759fb99dc1ce49e6f76a18034f77fdb1dbb83b8926e37ffe62662e49a8f42d7affac1ea512302cf7f590865f01aca869188da43018a3f21a15b917e2878500ba1d1a2ac7e87c0f06a23bd20f7ee2e7399fad9a0f728161b6cf3ed9c4e57e66e71deef1838a56a70d4b59b4b49e0411ea09c91bf5fed61fc9d1d164a9176cd5ea8cf7639eb9896529260a8b76e2c26987278c11e0129f3ca598290ce7ee82353af0f99e15baf1470f6c3a2b3dcc141fe2090f87fc43cbe17769b3b7a5ee05cef079d4a153f8f160744dac6d5a8b208b544e51e75fc9a332c5cf95d39a27b21d4f98ac411273b9605068e167a583f8d43d6c764c6974cfcbaff4966ada842b9a60607b17897ca32793522da30460fadcbfc25e053d3f14877852769bd2d55fc27363b8e9ece93d9194dd65305b0b251479f0a90dae87758e08f0b4ee160e3c31ffa7f1570dced7f8a8a19f64e5df2d77c51696569049eedc6ce026f9228a01aa3d9a9a2d8a571b124763d1c9456fb695ce0284ae655c64315debec95c5587d25fb0fe9be32146733147cb7988bd8e1d9256e460958adbe92dd128327c0d4b7fe9443b01628260ef3edc66da4242077f1b29ce31d9b5b31d328972652e81b7d96cf4661ea5910343cf07007a5a07a87eac17fb52813ba186c499db08b584dafb6331255c53070a5795540ed2927ec82ff2f0cb4e182ef5517b1110646b2216ed6eefdc130fe528faed +expected_result = pass +expected_shared_secret = 6869ca370a496af2dbaa866265d91ba6be54b9686b1b8dd5714f6ba861b0d1e8 + +comment = Official test vector 46, seed: "6b3996e8bc6f52879f2b7be012c44ad555707cb7e5fd8abb3457a298336d6fdc9eb7853008ff13201d5969a315c7e493" +private_key = f3ac3178bc3e6b8002eb20046ee3288f9cc63c1abd0b14a118d52e2c9a998d4c67e2014415084f520945f55b985adac8c503079789aecc491eb7ba540f32be8823a4a837786be140d260cff5d46186588f4fe2419e0c4ba1b619567b9d8206b53ab1289640520f2259f5d6854871498b23696a321813d7a544e77fb3100b34c89af2c63856fb43bb0a74a6073958d1199b4098386984847962b353b4d81aaf4cf65349c8197db8c1b29a91fde5af1f9749a96b3b82c567207a81a163347919aea565304b4820369799d352ce72415cf1c692537a48ab603b9dc741a08a66d874bf46daad570b6f1f4133067a1d900ca87cc25e91c4ce1c84b46d3c5baad46fed227268f1a9dba968eff27249b3c6e4c7c19e8a13046a2b45bc24f4304a80c09d37ac289f924f33e97181b8393eaa82a6fa54f2e76dd88791b5c3773707046c362d94ea547c3050ab251953464f4e540764b08103a88e448446f6b82375c15e3ca9a98798639b83638ada857bdc1e3c6705471975c51b8087a26348babefd234d27d6c055d3aab7560b28dcc13d343a79530ac868b5f6ac83af04b8d7a20b64dabe9de32a5c1b2c2acaccc4588c1ba26f5462aaa5c1bdbc36467f346a1ab5c5840a07bd33ceb44093659bb0451c4c87ca4852172dc0bc3674b4275078cd2b9a3afd61bfe454107d092e5840c4968c547adc723c1970cfe705c5d33e3a4533f0028655c6ba44ab22c2a4c85a82b4b6dcc09765124e43c985459cb2ab1519db1ec6f348d017a785484802d90e0222ca2313b4fbc465dec0cd4f3a5675e33cf0db79145867d5f0b8f340526c8a744929728ceccd146b6e66d03f660aa4e2e15d200b5960f3a03b571bb2e59160048e498c15379027e07987ddd841bdaca79764bcaa1c9843fccc65b53695335d9d4cc789e062571665da99b4e10368467aa551775c39c7c9dfe7624e8940f294c8655503f2f970071b40f6ba3544c64c41887184828be6057a9e972631604901a7870733580c6ab8d4aa18b49cb4d567577aa8b0ca2490edc68b168583b8b38415d32f5558996cc911a9470951430c36f71712f1c579a12327c41c441c980c286b71a31748ea54df2a557fd1701c3173944b7b40117ef9cb08a7d03d45531b8de4c753f697ec4b4303448c260b0783c81ed599425d9b16806828bf795c8cf65a95f366bb90110cc75d3e6064bee17cf1497f36c48e68b46ec07417b2a876cb556c705c7ddc387d74f2b0aeec9070d227af09a324495f551680a474328d379aac253a6f4c42c865a183d7c2f4f8ca94a92388b1afbb5408cb1c0fcd3c945e2923acdb7e16a45c03ec3298b3c44e9c1e75d049b2ebbcf2f29a2d3b7fc68644530010e052a0d357809009cd786604a39898b385b70ad7b3be011ea83b93d4426f4f20a3d0836fc6fb532fa14536285013050c16d01c5752884e49a82a4a0bdbc8bc2c7598d548278703ab4c607a16b1bab64052f40a06d3915cd03825f12c069d956f2a5662e05804183932b5216ca66274214acf5c01a7f4c77ebf522db776068f94151f7ac33831259b53bc48e99c50b260faec0b7bd3cd4fa9b5a5c2588cf098fce5aaeeb15fe651355537953d9b8580313b56336f0846c63e2c3018bc8733f05f8ce3b614088a787669205ac9889bce2d3b523f366f4bf811f004666b2b654431b135d97a70a00fb9a3928c1a4a2c7285f6f7b19bb766bbe6b966b4013ec06833ec6f1118a772c2465d81b77ba740b7ea33129218542a41e2f1b10f42bb42396e9a6c5011351e783641aa692a982272d9544ac93580fa6a51b8c7b6a4b5b1ce3b58f1d901855bbb2b68b988953ab63607d988999ed96e5a4b963497a061ac69bd90c4eab7c0dc17820b6963b0293d4ca30d82f5997a877a9aa71c5c7893c1d153ac6779d0a88190b13df828bf3afac9d7ea392fea899ef844535187af673972399a5fa31034c02d70b57b97434ecbf3b1985c86ec75b23ac0afaa67225f12a257b78341966bfd2569670680e012899c112ad3873aaaf26d2f4a5c8cc133c92b9a446530c169b6b87b118d03329374a71ada1778a2035986ceae200c763a12b6e2b2fdb672b4d58d8be640e61576f2cac617a5ada5d1b874bbac9d272ee4c881bbdcca1c9a84626012b988395eb5a4a48bab1e7551b6cb57ea7b627138c3ac252bda1a83ccfaad69e38ceda6b149c1b3ba295fd5025c63225ce88ccdfbfa6b3950cbcdf96e14dc0962745a5fa32d10525f71d895a2085620c89024d922359741be366ce9038aa3b260320a456858a7b8d01bca12316e9c6d1782bedcb590a1d2ad9ada0c26d3818652ce6f3b6403c94dbcd1424d090e9deac559472c9ac19cbb26c16e8b27db9140a1161ea96a171728689cd6b6ba0c8002ba6c46719a1a0c175638770cd088ae29a7fa958209788ade14354a1b0880f05ef7c15a6786be063b357fc7521973abe4fcac0a8c26f3eaa052959e2f973709c9c6bbf4c889c8b76c0ac81353b4a4dc81b7d316f75accdd1911df10a7e838a7c2023ea1eb0a956abb53fba02c48396807229f492966796805e04ad62b8107493aab264a5beb32f5459c06aa6e7f79acbf171899a911fa910dfa6687b2c28c1d419a4817abcf656ff669b587b72374f3cc20b92858361d21bb85a3b9aba157100875c993b54ccbc84db2d72374bcae29c5479cc95197e625da047447ea5797551595853651912daec4891e68901bb67faa98bc5050bb50e913645874fb7a0e51c816acc88a7f8a4ad383170a583a2e17b0d5766e12dcc827386ba8d868ee16b2fb892aca3941cdfa7a487c13af9787a309779b759cdc037c13e839314803bb10a3ab19b7fae477c8c322bf05bd3ad9cfb0b241371c85ffcb607748cb518a6c896830b191737ba289b15288ab59869e22637c57019818801ef9a6b7160ac1b5b4d7519b41905e6687b3fa7230eb88a3c9530813561308b68bd2b740e7aa08ca72cd6468c008ccab34ab99b6773c533b3914b19b2b80bf7e783e7bd9366c8962e7f3410f34651ee606eb737e6c9c5f6d306af7348ce955228cf02d15b8abaed16994b56260221beb1a29be5596e204b9ce111127989bd2ab49cf27c976f74aa7b084fa6b8400a25f3c36213f7c2d160045d865c75aa14542f5a4e4d1459b5676491c6a3fa0a2f0319ca1a63a401c9c3a14c94f0016a9a69e64c522aee93e8b96b4f6691322242b20353e0d8b995a6a9129e961ae7349f92c92a90b833e82b9fae1ad459ad417635c409c28f9ef936ae28d221563e30f83162cef01b482889e5818ac8d7a38c781e3a0bc43d088e6d391d1d67d9639b260bb6f58a19a57150d1c96249919cedc2369d8d739ab125e0d2ccb82dfebcd90240a545cdfe07511f2 +ciphertext = ed4b1d8efb6224a8c0139d9df0f1dfdafd3a765d70e60099d700efb4910568ca3241f67b34d34aba653d0ee0beb023b5473f34398e5e5a62bc482b81382cda3249bbe50339843c37ecba16481b66da65c38a092a970d949d8e095f474e2deddea94e1d9997001a131e738956253fefb026076dee64e97ceead6b43109ac533ebcb1a05e606f1cfaf62f956bde4963f6b91f3774d4432114a4b14091790ca9a583a3418d1a3adbca8e04944a8dabc7d636819237991837eb8144168f4ad813f56e48aee382bf8e01a837e65a4e0ebb77e5e533bb718ca1bf0374da381fcabc5a38aa37f9a68f9d70656d0381916b7b74dcac08d444f532fa357323534bb7bf1e0413c8074e722ecb22a748636dae0ba5159d071c8a7ab0d2e2b4610e8ab3291492f429ef31f22f9d9a8a209a8fabc2c2e761eafe57c96a71e2cfd119f78c4240e6ef8b0aab89d4a0acd23d319b390a18696892d33de135092fb0035cc5f7e4d221dd4531cf6cca3e0e1c9eb0607cec1bd279ef77681b8ba22a6f8079095f6762d518c7472ab9e7292980bc2486fb8cc80d91fe175c668ba11429bbaaff4dd0088782ebccfae7eb4484800e0a183e598be22a64cc27aecabecd69b73ebe3bba2170db602e9c0e6553081458150f05d50d8a804fd80bfab0cc8119a865d4e558f06a7875b885571be68645b568de8182614c66bf0ed74a9defaf039ee478d1c026112dd94ff4a89b553a015ec5e21503312d7b3e3d163103c660a5312d1b56b009fa393ead12030f50cb495145fa4bf2fb95831aba27609620c0281d2887c2e49503ef4b0dd91db1b6fdba7c133846b775bc861dcc122514a3640c0098e628c8cc8ca313d94a4a2acca1da96ec33efa49eede82545094056ca79ce138b79131ed8ab224ef00839a388b0b5338629449bd5e2614b83ca644ded974a3eea42fa7bf75410a1c52ecc691b9bcaaf751beb00d0acbc5e05c5f1c6593dc674a049f652c2774e8337a72d94be074ec12863f37e6b719993c010a449e80c49998c0b7771abe617811e930300ff4302a3d1901a8a2b8fd5d5a569ea76858dc51c72cebc66f1a2eb7f73296d4bb251a8e9e5e33fc73308ba7cc5412159c0700e8d0a6ba332fa23386c06b4e551c849f11b00deec734870391cff398079a70e3f4f883e5b0c2ebf8d6a52146e62e37d62fc9c1ddbd8b1fb29d6c149d4573c435199056611b3bd76458a02f7f7daacfd2ef1b1ce3da534bca74a4bff0559380569275ba97f51538edc74844fa5a034a2b1b1e99f03de9647172365abf7cf7f3e94f2dc0fcefde3a9a6cb44d0da22d8bf35f9445bbecb3941ab70f0b9a7ea7aac71d6c49789fc72693262aba0a6a16fcbbc0956b8e04b4446b2791865d34fde941716a13bcd76729508a92dc7c5b2d2ff8160554f5fa5ae3cf701aed0d13128a76d0d0ed964da3ae47e50bd49650205effc5fff4d1dc1dbd426aff5d387b47ff9c54d7f1fc4fe65d60600c6f4b98aa53b0fde6a8e7e6320e8e0c98a59cb8aeff013cab388f5ea822 +expected_result = pass +expected_shared_secret = 502d92b2a7e1804892ffb8ff009987a58f35baa30c0392c83859fde82105a9aa + +comment = Official test vector 47, seed: "730b65ece22de27d573ce3aea7cb021c415df210d228808d91d4f380070ffcb0778b683c71d4853deb569c822765f2a3" +private_key = 37f7089480382622ac6687b4b15bbdbc1a9ad7467e8ff4cf44f0614de74b9591b9c5410d2d7084bb57ac27963aafac148de80dda6232f4a0c634d677a80c226fe67063191c05a54afc026080877538f63df93cc6fdecbbc0a9a0a4215488da1a2f7b1ea8f8b917f32f397b94c80170bcd423c1f1ba4c736449f84bafd6711b0070dae72de1ea3923435fe15a4fb35ac98d6379f0a44c200a37704b5b269ba3a555961aca5e2cc1518fa4bad3c23438e06952c9317d198b0c112d79a89560dc3361f5732f820ce4d16ed448ac2ed221c8ea3601602c27f640dcc394a7ecb5079978cf52b80de15c3015839a44b9ee36837866c5c8e9579849b331e53dbc049e46dbb524c2090a54ba793c845420a7c2c29e78a9b8c83c310d780f74127c02a59ab68c1b29952dff1196d0940edc338df3e1c1c8e34fd0dac4d5596f97a2afa98b1e8be46bc0a96df412639ae5b52229086229b5bc79ac020b61a56c04091c10cf9940f798a9c50ba1f5fb30bfa947f20b62a60215c5a88d23b70c0e299c53f49a1ed511ac5812558133d9f195e1fb5d77314559ea79e63a88e781c4224155abb5ca91f089c0c609cecca32e549b0cba167d9307a3a64681a815a69c5d7e787751162483e7701437034f0864d8d53201fab9763c7921eca6f11247e7ea364298c1c3ab893549572bec45c1a8c3b88659cfd526810b23f2095aa6c1424c7178187109f83063b52547b9c731f9933622a33c7a8b927a50191593488f9a0d12331017919159c7a027c3956fe109393a167a6475cebb49224736847319d161490ec52396d7babfb638bdea29f50c9ce37314fc858455f63fcc70cfcb751df12274feeb45a124ab1b997c917a550c3469a0c185eb0238ffcb4dcbf751e12ca17a71b807b1446ea7180ee302e6998ef8d12a857c84ffc377f5e42fd41238a54345229916a715977025b3b4a6060f778de7d426a2f95927335cb202bf4080b8510cc0da12c4eaec4bbfa42997e21504b8c5d32604f1d66e8d55b50c393f973acd37a236db595e3ef08239c42fb5e9243d967181b9b94f4521c104a8aa726dec057abd419bc8c6cf350c91acb78b0832144f409f78992652e30eed7ba2375b3245d877c8e8b873f0427071c956633495381a2c642b15282b9945c758910fe469cd091b4458218105da96a479be0ac6b3ba155d359b2815916e93e9bad3d431945b852e519df0129174b24a32cc9fb8a62de96733d153a799cb8fba3c86b9101cf3d4a97bd3b699467991a57129607c27274d3224cd1848c17f1550be47b71a119873045e215bb817cb92c12a7bdc6347df8b64dd686873d800b4672aade8af56d2995546cc37c06f9212a54745c5597184ea85cedca7b980386fb91b8ae677a035a4547b5848879c2567c8cd6ac285f6f2460dbc0b73f5ae0993c988418c234895380c556042acd15a6c015a13ebe16cdea4be38528a9d244230a0ab053c568e31c64d06a3d7bca0e5207b7669811a3512f8ac6887137b0b7627d2401ccd604ae786753fb6568cb522b28712211208c1849d1f75cc4fb951d2aa081ada952998b0b0e938b77359233a76c135897e91059cc5639e978c12c6bbfb735fef4bcb1d60180df21d964435fc16be2cd2276b7bc78ee8b5c963af2af4673a93940b429131663cc124be5a706bff5c157dc17dc5cbc2a11418dc4b8a28c841c5a831b1a2ba989a20fdd17dd06706ceabc0d20714d5595d54216e9fb6824e3272de0a1e262aa246494152b1cfd95c970f38aa35fc0337b26e76c77a0a76bc2c57b80757550b11807a423b85e32ddb537ab6d4694cb8b9ed58b11c9a6acc746749c21011a66dbd7896329c3a31d0a7e1e78efc93574cb7b051d79188ea4981dc6299eb9bd1bc1a133a41565305cd4a09fbb10934e7a3d132bb0eb83559c484ebc92f7cf93e445020b7187e2705a2d1a8386c008ec7f22fe172088360cd3fd160e7020b6d0c747ccbbeddb1b84fa7549f625dbc064621fc2e13f720188c200c1ac1f10394fe4117018b9640632fbed570c942575ff61a7149a51f9993b90827ea2a08c32a330747ca27ecae452154ce1a6a67a8b63676998af929e8a7a9d2ab709e2162a2e0bc0721bfc7e49c5b2c9ba975b3bd881aa3782391f5cee4cc1835c83732c84f54b373eb18869b2c90e9f986a0ea345cbb020333893b463671c95e6aa07193d06f7e62bf4361cd0009b1e528c85d147d0e650cea7b0c67f1b4fb754bf2f1a7b9cc621d4c34682a6195776bbb9b2cc866cfa94c368a2b4b346c75a2a6bfe946cef09416aef21b15d3c72b7cb408141608c058e506271380841656963174c70e09c1f593acdfb9bf4a3a9387b693f882495149c62a77595574c0bc745b51ba8338c6361a293402e74df74a7a70b49faa1ac4d66b89fb6c31dae59f318b610f00bf4f4a282f752a070582f2f3c141e168f6fa037f23945893766215b9ee9a3a1de662060a5b1fd34bc8dac56c0875a6f82ecf8863c1692dc2073cf517cbed3c362a853beef1a8cf2247000cc4cd8176ce980d683b8ad89b3eaba3b962624f5ab3695fa10a88055ddd664a2ba0749e439a39c6999496999be3ba7bba2ffe06388b1a6c83068ae70a1c6f8a36e788b8aa148933c896eda61efc86cbb7d5c9cc96c9f137c6a9210347289010979bc1e16700a610c7c990d685550f537ab0c45b2bc57e5ef4c08b2220961c6e17e95e2e4482a4a94da2e17b6854ce57c263d69429e1566bab646fdb216e0444cd8fcb7df4168ae66223a0ccad971583b5917c4805271a17b4a1e17462815cb39332699ac447332a3f7acedc03541e93a822a96089d6a1f47a7df35cc9b659cf419bcd2131b98aaca67343cdbafa3db35661c38c0ba1e18043a4c945067adee46e428a16011abfeb58c1bc8b2330288b57cc319389921857c9d015a0471128c34cbc13417db24b91a3567ac299cfa6d4c2f1123661a3ce0996111d340d9613b966955c6a758fa7f3556f6716e5ac7ad3a93174b2032a983cc0c73c0de302f9f83a0de89a1fb576cd3b41505b5ba712c387730c45399b8cf0b0e548cbed984e7bb5095cf7263b05cba437ac6fc369ebca85e0211715133bcc314723d79c9b93abac57ad3d3a5e77f2986a3539eb795a5b4967ac7753115b916236a97900870b658b9d4b3e35827e1aa9adc3500fd9ba18fc6b03465903858c61c1259cf485338cb700eb731f31643b469bb259210cec78c158e3290573c5228518e4697f19171d8f1a3a633448fe9c83bd28097bb29a168db5af1d1b354b6881a2ce509b172cf4f8dace8a96b8f70da966080a5e3f132873ca7544343377a99b65e8147fbdc370460375a778d1a31d01c42b66367ed8d9e8f84551002f552f0e52102b5d +ciphertext = 74bed33073033310bbce2a4a3856a92a519570deb8779e7b4dce5147f198bd71ee95be287839ebea96cf5b1fb11f274d63ca2b6d14c15e9cf2394aba065c27a94f7c6f1eaf6ea0655fc0cfbf7a773abc14d174ee861e6bab3c69beb678cc362135a5c2bd55f811edfdee774efc6c2b6675c2a94bc44845ed9bc711cb657ae894e80db0027c88935be4bd91966aba98726e111a549af8664dcfa9a343da9db39dda10ca22af7365da7a14d40dea90cb216c902a9dee17e371a538c85b7832fdbf1c3ed0721527204bfd7b75bae01f56a51b2b8c995ed7b74c1222d849a6df69fcb5502898c3e578668595c405a73514939d9b4a0be52c8e7846765c43771083e49ff08f3d06df2252a98ac8b096c729306b47c07b8000d6af8bca84416d7e45fbd749ce32952ef7ee2359bfc31ab36491f4445f231205d0766884d5ba5c32e361a269605a2836b092bb611e2aa1e8d0a761b36c3d7e2cdb14755ad1c79c104f46ae33f615601033a60ef387df1cfc1e2985f0052076805eb9900e67bb1e9048c6a303b6344422a714162c92c9f724311b7581e18b214e27aa099f507c1614a1582b1ecbcfd23b7809976ca80cc6cde473a7046207bc0d29af3fa4c509adf1f199c7171bf6a8d029d7a19e171dd272a7d95a268c6d1f757a65e4da37b8a63e1ad50fcda5acc1c377015bb942b946a0b6ac718ce4caffd229fa6f1fc2f8e02087c72dcad9062d2b7905a73830577454e6d63b602781056a43d5c0d39450fab97b35fa77456812bcc48670abfaf71cbab2e8255b5bc8113fc070dc2fd00d2cd5bc597631bf798858df26bd5d9398e0d3be2b8fe7d6fd5ded8b2694934b5fde4e1b713453b9397b2c8be399c1c835815485518e6ba6e8854e39d61f474cd4ebd752a61e06d7b76a713a7de9e80c6d34dc4069d0492768659bc8888e3d5a7462f820bab3adb4547e50e9afa891aaf477db8f24bc620405533b2e997f11276043eee6a3002ad901654abf4f3a89f9726c50612af40be942e809a2afa71c30ab00045a8d12cb57896e79ea12989dc79ddd43bc1542142c77af2dd2dbdd808f5d2e52f709f18fcc908338e126ab921879fd1931b720ed9e09c6c1e57c58ac310d8f5149037586a0bae9d8b119ab91f8951811ee7426dea158f32a1b7140d4e9402d68b26150288862277c370a4bbf6c296f440a55412cd1886f69d064bdf1ad73a5fc147129ca5f13ca8b9c1c7c816c2dcc2af54af917910dcabd247b614f4377a236aca35c4f8d29bea865858891afecac4acc0c6726fcb3927c12878a060aa4136b4bc3419b83f64920a63707ec048b5f9f1297cd38142148380f00f6d2dde4934ab78ead5c3414b6dde04c49843f2c54598fd511a5b222b5bd2d349b3bf8c555bb3980b42c7ee256878d3a8c8ba403d710a16e39b96fae3526abaf9ea9b99dfd7fd28579689e4f3787ed8000e1876fb531014e722fd2183371677071a6d2efad5d5725df77572c5d1cc20b9bae3fe89b8e0f393245625dcad1d0531ad787f69692e56d +expected_result = pass +expected_shared_secret = 48eb4b840c0d957f28808e434786c02a8f99d3464ccb3caf91cef4a0f8e70c4f + +comment = Official test vector 48, seed: "5522a5a891a9a9b5514f4556afd8df40b9cec63a01492f0cb8a1db073a285a963e4a9ff2376c88662f7d8d241f8acf17" +private_key = 5e43bfe8ea443466ab6b087deadc672e7aadc85521d549b978b054a9b8949e519e3fc3a653607d794491341039713037d31c9824eace39e7127a974403441e25b714fafba4b98041e85b2fd8d8acc2a69aea9c80930306b46baf5245a505d48e293a77aa4174d1c095b0b4a45754a4a94bcb01d4543bf7c7def2ae2009408725c58bc76bde03abef3c4ee0831d3c6b2632609707b3b861f093e857902d52a2a48619b1ec20dde7a923412f79c22389601473076965959b2aa3c79dd31b98ca9847731c89b0929ef5174cc6b92972ce2c07c8139a62c901216245cfc92b2da158079e1c93c8e08ff438a02ddca4ca948f47a106d40ab6a5b0afaf52052f237e44f0765b3436271421308611845785e257cae691c39fb8c80bbc1c5fd687a547b7e8e3aa1d7c15a918984b6b359cd24711cbbbb95716ea54a8d3511c5dc983fa1b019e0b0d7de90c3c0a9e7652c18e72cad6f9c510e64f0cda8cbd86502a5880ee1536edd16ab36bcfd859ce879b3f5d6a0d90630668b7385c8599ecb1849a4942d87a91497129e196309156c9ab245f4c637080c963f9648fb2ba6f32d2566f88bce680203dfb827438295f8670c9bcc34a98497851bdb0e631ea06accc26373809986da62fa714012d2579d5d61443330e3b882c800b6c9d02c98e9859a4022db4a09510fc91a3b95bcbf73b3a09311cd13e52b61733e02dbb400e8a54a30668311ac02fae2b55fe05c95ac43875d92f3c2acb3d4a6b53d363d5d75a697061055a3a788bcdfa051edf97c3515ca920ebac9e7a998bb598b8436bdb63550e416d2aea5057562a901b609b129d92b27536e02c26ec6a3b2c5f6b733d0529330e9a89600b089dd30a0bb52530a3062be741b09818a78b4fb9f274b7262ca23b3f2a40542caa64fe38a6ed06beb5498733a38a7fd0b5aec2673aca2b07e00909e68d40aa207fb179cf7a60a9e13719635a15cb221d1cc88b921e950c94cee17d60f80ca5b4a656f501d7136d1245207479a1da42c26c48664297562a0bae0e7906e9d853fc7c490e4078b5b3b226b37101a31b5d05a26f1ca1f231a853f23f59d86a3fd269a0256eebd02cc0c6b77f1b1c613114e1084d8d1cbabd0c7702f43d2ee01db985382c562f1b7885a7015edf59bd8988b5bcea1cb04639bbf5b119e6293f908245455070da3013d2b6e2116776694b44e3a7e433407099a51940870b336f547677665c7066e181ce266ff0e508268731bd13afa2ecb4546276a5dc50772a6fa38541af968ae5c59e2d04c3b6002c7120a6a970ada2671590411552e48e7119c7b7f7ac97429e9b7cc0b5242df277cc10e7c48976266643a9b2308cf1799324780743f95e65851c03599fea7129d5552b86ac35aed10b5f00058a8742c02a3e4f6cbf5df61c66143ebe933060c98a4bb55318566184601bb395625fc86e4bd47377b54459b45e50c145596b9178d57d01bbbaa9a63bf444889fc810f1e40e07d289e0b04a58f84348463b9fca3176aaae6c1c119cf679bacc6eb685b9f443c2a9e304bba0adf3888b42698ac1f68f1626439e796e1967c7bef581dbabb6c22c9c16029e18d8493a524fc2a41738a25e735c665e79ac423aca37b5222d970358718343322db0162d26965d5e946b700ab88d702fd5a1376920b5be702297aacde28588da91c719d40c1fab0af109742ac26c456961338c44c93c83ab58581635499545cca66160e15a35ba4931e2b91fee68a8734acbf72755e8d452d17215457161284435eb6a7a2933c8d146a12679143b80740f68ae052087eeb988771a8fb43b34d6ec79868a0670551bdd19cb5313892bcac9e4fb500d3375ae471a3ed551b2d9c76142b22607615454a910f8578e44b448aa9200d805cf4c15eb635013bb80a65593ff578c794066f05abddb850ff976c74ed6acb4c41064fb5eeab479a13ba57dcacf7f02421603194a3cb549f08c0d700790809ee0e585dce4088f96a740320c57d5a632c8bf5dc173f0f841173aa47ca42004b808ebc2a6a1770ad9dc06027557f80420db47b0158a1d1ff32007fc058875c4f5d21fabb67bfe8909e10b51bb35c76d0605d0e6a97e56cb93dcc58f722d95f33008b0a237b711420a20269a7097396a4a98be20b8226e103cb1136ea3fa39d438b305b63fa049c420cc378392b9f911bd7800bbaaf2bdd7586780c7078dea622df51c7190841585bb16bab9a0d83625d55826e3949ae018e7c4703ca082466b9a078393c30a4f6b7b1fc775c9dff7cfb5909cafbc66ea946e6f098f881b3039c251fd3ac142029e8728082f838a202cc3586672cb6285b021c41e3c16f5787ce6e319d849483fe40d989c246f7c36c11a991234ae7fea68770c79d8290aae3bb72ba014aa1279fd13977a49b0cdd494ca00c610cc2306059b695686399c1590f274f735142639425dd88026f8be0f260cd66672a12b5c7b5c7323408a2711677f062625eb8f3541098d079c13208415dccf3ff72d1999721db3c271f7521dfb0f129b3cb6885310a0689166a3b97b09610347ceea5579650720db621db20eeec24eec2144fb523ed2d30f64b9c6655928b3d06e1fd9b088ac8b7c964213e5674757c7bd48a3d066355f0249a50548f430c55a6ca0471953eb7c67e140aaf6322b7741225931622db114ed46b9ea997974c9ae2f54b87125ce79e8621d712688b50c7a49877d52091643a4a43148550135f27bb30ea131521583f5b79255309465f4b9f2233027855cc0e7c93bb33705136c88392cca717254640c540573d3a20032c9b297eb5b02c954c744c4c6143a56eb48f1d15439f885803ba5acb524f3d54bed37145cd9173ed92a00f724273787cf1b89c788184de0905bea74fb331ddba00cda70c1547c634c706a8447145489752b0633628ba4f5286851e1b5ffb8a7fa2bbad3f92c542ace74e67aa07b467e70b6a7d3056592b36a7a37c6c7114c610721e9c6ea933742e43609c41f6f3803e99a8d5a27b069bb73c892bf07524a8b2989633c96ccf33791ba29f3d575f249c640093046d1684fbc701ac633381bb349bb7d351230a8bb1a22223de3850258ac7043b887770a307c3746002cada2826e47f7694ef51f94fb9e3645aece6273298592bf00c0fdf14c07d8c9fca401ff351d2e35491aeb55aed9b1b0ebc2424cc729ac7eb07630b8b11d0e47c323d6b3c0ba12dc235d5c310ce2c7bc1f0a8467d627568a185855750e12717760355a0b8a756468e95406d375f6a1289b8cdbfed9f6518d7031c57fd3455d4544735cf52680424c90f14f268b6356f92c57da6dd34494b927e8764adf0ad519612ef0d1b8951e50966c2ffd5a08f656a6eb8cd20679930a31caa6a6331c4b133a6838c223ef9f769f6246 +ciphertext = a36c2589f709a16d07ec8ad94f92a168e6ad851e9b19ead54651ae5b5135f38d38eeb1e3ab60526f5724ef7741cb2bf962b4675042a9754227472604eb1ba179142c9b91a7cebf0ed64537618a70dd66f63c0e52f7c548906309e8fdcd30d573b036afb4c17cd882eaeee61be968c40ed5067b4d72a2b6a49e76a3d77dc36f1d9bd051bbaa501bfc89d3eea3439cbea585073aa09887d504d08a5cd0da0079f0698655ef809603d27f5b3c3146983c5fd8ab0df9d4e3f8b6f4781d35972425e13d03701b1aca48b7b9c87aa449bde4e4c37fabd70a69aadf9170359d1cd8d0c87121e468c385f099209575bbde29c5eb745d90319e96a1163867264383e6e908b9aa251547d15f8d95374e4e07b8e10e7f70758f19d76ab0d255d2870086db6070b7acc5242f92eec7a784515c584b9a831659ac86f3a610a09500b3a65a1f1c309adf2e4432111e0ccb6a2403de2d1395afa4d03de5a5f3c9c319ae0dbae6d3c40f6a4c0ca0a371991c7a4c55c21d50093e5257dae97ba3266a312e4647045780091194a40cb4543106dcefe181c104a29e2913d8d0491c0ee792b25fbb87f482abe52a7e38cae57af8ae52ef7c006e34ab21bf93127dbc744bd09d1f275dde2beb763479ea3f77db387703fe0e97a8d648a208379c9f0ace66bd442ae1254b26f0f3cb267f7fed926cafd59df43500564907e2a06eb3b6cd480b5f451f4f94562853e92974a13af6335661e69f16e265d9433a004402d9489f89e631e360c3ee3e0b2bde5ca53309df77a479371dfe9b2bf12734752127358f36a98fad6e60ffa1c3e418ac8c81c3a8f54d5fe592b079a871c0f1cf36bf2229bbfc5cf88f74757bc11dc826c589541d93e771a9870fd8c07562c76d6f4fc1dd2a2e82ed136f5e9981aeefffbabfce661bb5597e7710edcba41cec1059e96f15d667010dae62cce9bbd8a2e239c3dd762974af32e47ecfca58e4643c08e0a972b149749e4aa4a4e97bb89cf12acc2183125117435417dd3bc3d18304a8f56db2e88ad5ae15d20a7f68ffdd9f7a76355e28f8d308604b6945da697d85c5c965383e4247b03702d2cce376b651cce0c9a36f26485562f6b38d4389cb855f74849289848267f17aa874c475ec41da8e4548a3ec47a389d33e20de412d3fc37e630965a3fc919672c43865e9cdd9282f23401e49b9d110f73886a00c839905e3fb7cbf2d4b881b24d5a34a2896a6a93ebbd9cc176f5a00b7ac139f477541e8c2c412ec7ed30b01bac78595fd18194bcd608dea182c741af8de1cab857b551b7a541bf76dc6f706e32b688401435e25f9ff303ce8a487ce1c5140ae2a1b1aefb25320c91cc641cdea55069acf7d261d6d5539c0dd11789ddf6b7ffca89a2166a0ec7391db587faa543f17d98b16991c50f0d6ccd5ed6c80aa44a3ae3172e7e242e9569a1df9b1def0851d9c150d5a8825151569e56d06a53e624827c0b99bf586ec7a71c09d53643386309c74e25e329a7b3b8d0f3eeebccec064d83d98c8f1f6ef19aaf28b6b4660 +expected_result = pass +expected_shared_secret = f9507f70421be90f21138a1e135329ee8228682cc948a6914ea58624d396df0b + +comment = Official test vector 49, seed: "1853e72329353b3f89ae6a1b1ef700da8ed3c10d19f9e61ee9252e28ebb0e15802ee43083a12a0b7527088832605e3ab" +private_key = 469963001d4d93da7cbaac0acdfc833c47601ae334dcc0022a9220138c16b9eca73ad1863431a34f593addca4f0ea393fc4595d22a7cadd0a8d89827086a955400abad84226541114cfcb3e3a240fb600dd6c0960a7976175c56b0b48c66721e13882e3aa5784e12869f0c8518037955f876997975d27a7c92d4cf005ab859590504c768b02576a94263c87c4bbfe1afb09b8c0a5c067776a0d96a5d12925b44ab3d3e57c6971b0a86617f65a16c7e9b42c283577219409e1ca4de08a92dc5b4e8e87051680c1b24068dda801fe871e0b28ab0611bbb97cd49bcbf159b7785830bc9d302c0a61ad138277afc2374aa64e983506bd11288f4a20376b50ae1c1233a1acf30af1da67301a5a420aa826db58322dc1c7ad8bfd25c3b21025b565c357b4a0802e615a35a384f1794a0612e030228a865a0390197e7c27f45a4258fe26082c850170cae86721bb5c68cb32153b9934de4cb11528c570af363925ab0fedac79748b3489b7180e81ff6db702d5a100336955ec02fd2b9c86c2cc001833b0ba1b7dbc9699c6556b448324d29b0f6a4028bf48a49b1cf60b4a9f91321aa64ca849848cee2be0a29219f783008417da307710f87cafa2603fd206e5698177e81470af4c608a6128908541183a5b4769e74166349e55b4d2a2a84600ef712c2d1f13f4fb3c91bca8cad209cb5ba0ff578bd6e29a0cf07a972d262a2ea3c4dd44a5d55446c174b345b96871076fcf785cca68545eb6be64bc9be17a7d5914d8a50b286d3a2a8e1a53faa53815acf0237b8bf204c34766e97883071e56539361bbdf29187c180414c83d9c09e30983995aa4850a6b2358aa6240642cb9b0fdb739fa5a93ec60c11061aa8b5e71316a517be2baea2f74baee32eeaa0a75d2030f5e8bbe1b517f56511fd8aa499621a9ef6c88b96a9f33b2b3cf04381b5c97b743063a6286751ad9ee14903c4674b308dd5e28bc700134c43c788b04460db78a0e795e24698553722b4c3a095784828960672cbcafc11af32c918ace0580d5bceaa574409854051a2419f148809147133866f9b651a38622f21e0614f10139ba53724831ff312157146169ea29293d2a3f1250ab9cc877d448ecb53139e6c5487dc2931d45b4a74c34bba11cbb965e1e664ecfca54db7bfe7e61db2382e50076a70a9aa028670a354013c894b729945830b1125aa53f4d352bff33fdbe7c64bf70a4c3acff3680976fb26368693d928122ed5707b453a1dd714fa9c5a8e6534d45b53a2ba464e217dc0461be31c5763715bb66b6f3a4c0e7a3a4cc107602cc3b67487a7d162422468b5cf33c8e5a63f801c2016b15c40398f914cbcdac9664b7601680346fdd3a499d89b5cdb7e77cc8a1215661aa34737149bd0734f7be6a0c20bb94e6a89dfb9b0a9d6c4bfb86408922fdc9650df7577e5a89215c8636d5c376f4596c329158964084200c91af4a7699018c6d139f521204bc521110aa222203774db88ac0ac94cb97720a71411eabee0b2863c35607a617e761298825acd91c73685198be96b84a98ac7295142f6c19bab0082c53a8a50a3a39eec2a34e859cfa2c88c9cbc77b1bdb5377981f61c1fc394d70820336baf21820d44c0956e09a5d8279f9a0681cb98bc38cb551320031f46262799c182b0355eec82cdb58d750596a4e6bf1213490810415a4b347e13c9e8514890a0995843936be342e81c7f4971bf9b75925d61ac8c961492a85d83fa8e33c12fa37ba08d7c681c521ed4060481f58be673007a081321e01e21419e232283a01cb1a4481550dbade263382eb93b7e42470b265027a933c480cda340a9a4065b4bc47990833786456aaab5a81c0a46e0076b91ba5bb4d4abe21c6ab193b3a3671c18479db082a706768a63109d2c4224d71c7c95755ca24b056c355e9c22cf5006662b3218edd4b317b19962cb514af123245b152eac41391cb432c6caf9295c66da4e5737ae3d60023f46aa7a604c64a6c403306ca4b96fc2929aed5b4ce7e6c631b473d7d61cbcd19826ab82c0c58880d77ce8f9bcdbf59d645424baaccce334809b43acb99248bbd966c88793a273ae857946902649f97b5516fa2ea2a84fcfbc054653852d8421b6b78c289b49080c8efaf85df195ab5562a03e7099c43c439a25ab41390b86db4f57188f002129f3ea1ffdbb9e9c688ebbb26e0d7ac6eea395b698a134f70f98480e87313b79444963557cee82534e9c1cf10b74718caede3bcbd98a68d9956facd8a45e2184c16b14048b9d28e8bfbf5ab43d1b650ee8cf13148caf451cfb144656052cbaf82e2f765c8c9c66c23b0cbae0257d6000f247200ab87f93b5167478a27b42ad7681b6919529bb1430dfcc809e171a334b33a0527a1d9519c18130971c55f6ec172b86248059830fc57c7356c9bd8263f7d571d0f7bd87d2a1686a7c41db9306558cbdf39f0176959a188b4d457b40c152b7ea09f6860d4d945e78c45eb68b579d48774eb26ad43bc1be3c0ac327c80b4c1115c2cb58bbc24a18146470abc223ad51fa10eefc311f1ac02af4c7432210233a4abc408b1db484e7885d239c0c2b9c4952e577a8ebc3d6a7684e711e12db96e1f988df423a395301d2c15fe2f1abf708bc64147a30e2717f7868ff602d50fa9a3d0b3a0097259ac52057dcc14319c438e113da967f6dfba4279245b72cc86cf724c81769dae271e18c0b6cfa84b916ac89b12a1f8b05d88527ad40346775cc832713146806a2b2884e35628169bc12f67811b507bee3bbebca81ab93b5d700aa92898b3f5cb6e9d345483ca3743457fad8cc5bec2a8e7a22a41ba8b67641ab181d42abaf94d0055206b648c81361f8486408b610bb3552299316b5c0b7d301d9f1c3d55621859ab2ee922c59b11ea9f2a1efe277c534128f2cae6b598c0fa059efc2c24e8a0c2337bc2c57a0bc64a7fce190c656b529d21244eb66a900288b5c484bb033020b9b9ba3019b72387f2746b3b893a1427882bc3135f0a17f8271f9c8480eb60732672d44336b32f851a283224144c480aa302c05836edc1ac4569a6020130b341466322d17811229441c4513a2e8041c85e035113992f16799dfe8c1eef3aff8ca2f341628808a81e8b66ee5ba47ad0863c735a904565f036a85fb1203058137aad2206c303f22d3027e732542a342caf3376d6b065a745e31e865fc2243da31ce08eabbf8183b4294700bf8928da8ca78bc08490810c39747fd3851211b22f26451f6772e0c75659133e8d8c063cd3044da1719855fbbd9796314b11df8459ebd2d92b7fdc94c4c4c6d304e0494d88d83b5e3aa5761df3b299551a24f28994d2747b2b08945bead20a7237801f470fcc2bd9fd7bea8322859b850f7882d362947432913dd068c01 +ciphertext = eb9daf793643df194162e69b6c518b5c2dd3eb2e3a02334fe7d5fbaae8cb5b1946998a06dc8e3ea0c2e5f009e2fe5214d735c46855fdbb1d45cf47b78ace270537aab983305cb7b2d31e4587d71166b463f3ed2c21bb5e2467682ff74ba01cdf6aae255ebda0cf205ac9dde6d55a9e3c0ec9b9383f2a779d2286a86988ede3e055fbed98be3376c7f0421d629d34d753486a0e80a53d12d1a2ad0e8120687a92455d720a072e5df030d7dbfe55a7df9f144b34e7686b3f75b78d41043e945b3d2757e4625d0bf038dc9671b16c81f9c91574caa2d9ecbec25c0486c525a6b08e9dbb3de04670030b580d559159d0c95f0f962c1a0c524f10244fed82ae8c161bf97683f200a3447d3dee1794ae518a6bc7384930a6dba9e761498ab266e73aa99ab3235b65b6d8350652efb94f28e54e86e63628c5d86a88051400deaae123f80cf0e35c3f9b48a2d48e7588845bc327a07a9d2a0edb7ba9adbfd257ec2529e2bf93cebac1243c91508c0ef7b61d913036681468fe9768ffa4789ac24f44327035561df783012e768139313f5c58aca8e47302a5871226855403d9e3e862b20ae66c521135e67ecbc0b947f92cd1cf8f74b2977e826d513c66e00672b2d16e693aa088441a32b64d77387e963876ecb5853ab458ba1e4d5567fababf1c9efa0a255140c94c3f286600f04e87a1cfc5c4253ad5c5c9d7c7e614a2f6808ec8b9633d1bed84e1f6f27aaa72080b69ce6f1885cc63d9ccdc006139e67fbecb07e56a2ab8807f2f0c09d22ee1504a9aaf086656bea5b2ffb8d2f9ec1c586caa86ed3db23284f5952fe2fc4f0cbcc127071b85e1e6c6a64a87b1ab3f708b40812854cd3d187ed627f4c3612433aa2e0c4fd6709c4ef07436cf31801f6f77d6fd28b0e070b54191909d443d24e95617e39f7065066d65eb45353e80bbd11529f2c9385606a96b6b7673f258725a1587ac316dd56dd3d25bf2484d855e59d77a44272240116d11e725ac45766759dc89b3aa9e5cbe96ff7df371f4ec039f1472d241fcf233836b3da13224d92cc710a6caef02b2b77cba408539403e5a9c3f06c6984d43e05b5e278898e3e59c28af7d35a1a2fa982c7e014b185c7456a986ce41277122c50fbf2d7dc3014c5f2d3da0773f31afc83a138461ba19b21df959be21e2e9adbd059d2a141439cfe8210bfff745a5c3108dc34572ed87d3b60e0e6b1ac41e1d7a9cdc10e16ed2ecc2a20bb4669bac747726c8bb112874f48c7d618f0273f098e249e2ef0ac29953737e036ebc361a8512071d6fd3bb6d8661463856e387819ff9201476178f7683b983cf8473ce6688d93ed5e6a4be6d2fba23949a25bb2a1ae3f5634599ac8c83515d8d904357972c659ca5766105ec7108fff659f428f3100ecfc2bfc57f97e87249ed6640d47948ec2376268180a7a627e992930ac7d7cda5076ae04a1405b215d5d5f8bf98a40576615e02c3cf85aa6dac1b47632c66b947d8da73b1c6725032f70278177761ea063308d540a60acd162d83522fa6d188 +expected_result = pass +expected_shared_secret = 24caabaafe2063f812eaf57c58b6c0376ed8ff778cec1980ee9c3228801a75a5 + +comment = Official test vector 50, seed: "027c3d5847ed4470931141104f25b19ae76117cbb64b224ee424ffb782e9a0e988839e0bded0df666fe8e5fcbb5dbc09" +private_key = 3c14bdd913cda0f267abaa8b0a30a5eaa527638c01926623b0bc2ba55b0b596a92bad72e92845828e8050f4c2f40873918e4524cea8505208d345783f71202496721e361a582c5445fa31fb662a64941abf9fc203ab4a741c9214c1b80b4ca617c4976c819794f53cacdb3509978a6df5900016278388234cc1a09b804679f36718255b2db60a7eee5bc3bc78bceea8060354b54031c4c76b30a1a8b1ebb697ff8606ce408fba72dbf0856e5b53b1e4a4ecc746cdfc77545b46060974c8a788a1d59529a9aaa571b895be01ed5c23a0d22707d89467a5b9c662767a0d77d5c49adca983ce7401f34526dab1cb9fe744bde8c54c230705548b9ed00b9f4ea055466cde77019324c0a7c9ba404b641a6530ae64a964ea47e6e80aaa4652c9a8b66061103f385479e50a780249a909c92b7913329a478880162d8857d58fa39d3283f5a2a7f8ff6abffe2463db40728d06166627e9c92283fa57a2e46190ab869b6c21fbeac86911284153b259bd2a442070d1cc581fdd333e5990f84ac67f47491df01128f0959ada0891c236e0aca87755289c0e6c8fb136974c97dbb1b8871a4c70aa001fc950f0cbb3ace4ac44f800252f5bd76fc1dc09a3d2f8860385a4bf8d765b49c5379140e0a2801dac947c23803ab6b467f2bb1b019b9d53771418312f51b28db18be216794a0467d79ac8abaf2c90f4b1b3474c168bcbcc1e6ae59c5781296467f2b8d63d5842d67935dd429bf8319bc0b8199cca9d3f78c483b8e0771622ea764fa610ee13c1a188c56d0b5c17094c1b7a45321bb69d99a666a7963268a1d0a0491b8b5cb700a7d86ab9039330edd8bb17cf1ac79355a82166458d2323e070ac109c98d201358f22bf9a3b513b8bba43905d1a790a7b1a11f682583ab4fe0a82f3e316b7c70afdd823c8fb7acfd330b22f378e8597ca5357454a71197cb4039e9a81d7995d14587b479657584407b281886d6a7fe9b6170a056d2003bf898027c275b7c1c3d1d0c157145ba52d264699b969d60aa3873a9606041c20b17c90055b8016ea703539638cff8aa0a219542bf51b68cf153a86149881c087d898ef9c3a089cc70a8656117131aa3f233c73cbf439022d224422920501c07243432aeb925c4023185d3f897a79a983d857c6d1422f9b22234005e00882f77c7704cc74adea4c8f3971e7964ba1a530c1f722ef696828c46946f0b329d909a47b83353330630359eb8e9b7e78abc50fca8c3aa9af967c89f464430c815d1959a21a226a966a6434301fa600a4d129886826803ec49a54a34acd62b50e33fd782937571816421341cd76a3570c17ac9c338e4ac4c51077650b98ae445d236904da694f755c1a5b288275b517b4c9b896c49bbc18933e52d34969b6ad8add604b526488c6397842a54b6657b93386b0ed7d36fd2f448efe43b0a144c33f729df530c8b6340cd61897b3c50b0d8ba81228604f7a4bcd120cd2a7bbba3b4818177c435a2b0c3ad838c6d9bd3903d64b32b8a8da5d93589021251d14c920328c4063c2af3c8c41228355527adf41037e1ac6aa69a427a55354ca9d54025306c16f93154776b4a7af9c9ef2298dba9b669c40bd0601abd410357b8940511beb6c96541aa7b69158362a41767486ec3da09ab4335fe2a25dd6c07366478cda91c691c5ed9264f771124c1f3693050802f480f5df89d5be189da765337a69c5c838488a0a4ba7880e91871fe346cf3abb0aaebadb211b5acd3b773c9146cf97920e509dc202f79b14734c9777a567cd44a43500b5eb8005bf4c5a387701286639e6d9ac2574b33f2432b3a787039e34b2ae511a27825cba7a8e09b401cfc6123d3b4c42318e7b032331230da960a09f61a6a196dc185bb8bf1c1a6b691a06cb57f12be1e45269c56490e256a83c13352a878c724242ff0681881160ed03166612d69894951d65b95e690db46129d149afba2c835d3b138036931423d2f84ca51179466a1028d1601d5c397cc81b1b5e468869185b25095a0e5b5dd6a421b5c7eceb58c4cf97b7feb114fbc435c78857c65098d3017ff8a58f5927e5ee7712fa0c2962939b9d8c84bb6428b3902881188df17479ec01e4709b7840235ccd77acb0bb3a05995693781fb711d61f2883827a96ddace29a9cd43ec6abd4691be1a758b72a629f6aae1c795981c0d8bf8160bfb3b8f5047e1a410cdd49c6a42adf0bcafed1b21eeb95d504b1a48b1ace228bb5e1508bf05128f0cb63f5597851b9df4caa5b6ac10f7f6188dc41b02761f840caa42871c55205cd09771ac9125d6265ddc56a466249fbd774ee53756035349ca12a48237221bd53d7ff1ac18242442935ba818a3b50007a3fc14a2fa3abe437ff14705df0cb5af97561a608a3fea42a809a7a7d5491453c849dab7acd99636931c007a70d01655c7302f9a26012c494de47839c1ea2951a87ff73968dae83a86f392f021873be4c75d2b0700a3b540f50cf6fb664a4627dda9c75394032f434655755d12d4c781e2324ae00dd61744cef6c5ec9680f379a26284bf9590a33350905e080e9b70547ac1cf3ad888f30232fdea7bd2c184f9e1a9b6835401e737204c5ebf2b28f2b58edd399f873c7849cba8064b8a20c9c391841875b4963bba2097b958d752739383bf26787e64ec215974b45848185f44b8780c0714b9651a7685e673cd1b6230c5d6639ea5629c20659802bc6f2b95df274836241165a524ea99a941312fefc7cdd2fa8016d69b652c3e94e73c70c97f65b3adf14bba2d31916522701d80252e9c7fbd7a17d306a4e1e02cda405f3f07b38eb65824d5c9d8b91f7013784fba0df0348f21b00ef5a325c745a829714a5b9aba16acbdf029771d5415e867590cc5a57360a8969407f0749ab8a08a65e37e70146fc1b7bc40d789eae83761e77749a07859bbc046b5a87e3a92a5368251127f12d27789318f8b9c3c1f79211922c852a0b0e10bbb631599190b49a66937920b3f113185d89c6e37da5f7ce9c12d37c12cc24741cb9a79446606eabe8c9ab06d8963c959955f198e03a0bd127242dbf2a2180281a7b65f54c28ec9c6cafe64881d6456c07607cdfb89e2ca2fb3ba8f8357720051c30952734932b08b508402a6a2f4f9c76b053c12a267618928032b5d9e41990a18c2c04ba7c2868ad9f4538ff1b494707eb9da6b81374d7f9731f9a26089d7033a8c24600944d65871d313387b4101c0aaa27ae19d978653638577bcf4caf48083eeeb57f401544d4da3b73dc1c5c4a047b0a5ea85edac7bec66f4d87fd2fe422e7dbcd02d145572be2f5cd569e6229f00014854633f7b278e90af4ea593411909467a03e29cfb7b534537addaba4ecf14f02ab317d36cb9f0f50222ced7cf029dff8a0d3d2fd9 +ciphertext = 0b19df76304bbb9eac107e0cde980f205d0be113062aae748fcd6f23badb6faf0dca0b9a52a0c1a45fb39a5434d97795de72799398a6f7729dc32bc0fbb724aeb6a9742bb8e1f5ea50980b79c61da2118aa15b92eaa122bcaf059658bc763cd04a22318f8db35b6cd62d7149e4d5896b651ffce990974cfb4b0342946c13697e68a5ad08cd94b13b83a78ef022754434636363dd2314433a11c96123bbdbb242cb1224f31b1b171a30b975ea7f6e2baf749c0eae2271d33c58a247c56bfe1c362554dec75f8ac8a4d170009efef05ab92f0afcb47b6afbeb88c718430a98a09085f377a34c84922d1f48c004f790d9ece2eefca8daf3f44cd526aa074101a3ab083f05a163601b68e16c63eb293843d0aaa8e438ed68e71227959fa9baaed20eea22ae66b8de0b7c19f2a777928fba4fa17e137cc40d14ae3cb8a711cb4637f3d94f16a47b6be2345cc046a1f64c1aa0886098731cd9809a3b2d40ec95f6c7bddacaf68865cb22c32b38ddfddd008f11065167a4acea5212b1e1013d704ac9048775d6eed6ada96294971b6da0100def9a754e57b9fca70592974ac72a6db96c38c18844f5ef0c213cfb7077b11e8c53dafdb091fa81445975f38709741a295d46ab9e6b1f2c3449bf6b906a610484cc40a2c8ae35ab4311a08cc5f5e9caa90f8c5c03ca1e4c02921d24d38eea84688353ab5724ef73b16bd4e881376b78e992e9105f85c00cb30214c60e70b16e37f5d1c8997d7de9266f7f4cf419fd0e1be6cc1ff2128d3b21b46c2782af8c805c7fb7cb441ff4b5fc97a94902beaa56df272d0be1e48120dac00bee41e8795a210170eefe920682468eba45ca106e6e8a6c963d8587734baad6874229f8ccf5daef09836878e3ccb8edb7d0d3f10c466781ad04d943d478d40a1aead1537073b405ea712b6e879983d6dffda1885e5bf4354508c188246b4e205ea087ac883843d868742247a5fbb66baaf0eac8e5a92fbb8316bb5cb560a72a140ac57fdf41682729a69f2e87bd9d096ea7fe2243e6c958ee394158d70831c9d06660c46d86a14a39c8a2566588d72118eb8d53266dd16e35e3249e16aa16e0d5af04966f71037698e278e129e65de8629e28fefdf3cf399277f0eca62e9ff1f1d18429a3b06402c88e30d47aa4c1d5a9fb1cddd516ec907f3c97b0dd3076504b083004cee7db4a31d98d80c751b3a5ad56c4299434effb58b86149869bc0818738f95ed0dfb269b2d7a4747cd3d08036501f7b20fc0e66635bd89056e3de42228a607511a85dc37682e4c64a89c0592b86026d0f7cbeeef3b436e4d2f399e68334a29f514825ea8cc8e0b0e61d97391b3b62620b5f288e271365e3670d26e2e9faf37d41e3bb0cf937c446185706713b4fad79c5a4e358a3c208c37c66ab57ac40115ac256feacd89bb5ad0ae35c49cdabebee5d1f051f5ce2a5b4b23f00c53ee4adc430f8aa74f81f92871a4f6c87ad22c4d0c0387bb515e3acd8865fc1a14e9fcc5c4082fb0a1b8247736a510f45a2cc31f4724b44a0 +expected_result = pass +expected_shared_secret = 9f734b15fc7dd99bc10d6cc7de5d2c93ac789a5665e508a95d075dffbad25abb + +comment = Official test vector 51, seed: "450751d4401737459c6d93e6c5f2fbcc4a3af7cd7250ccf404bbb817a67bab7b4c9d0ef4570bfe25cf919da331c31d88" +private_key = 2d149d32c41889573ccb5166c597c3fe207cb806bd13a8a7bdf86267a93da7110a31f22221a17a5381c367eb1b9cd00810189c1f12358b59adbff2060ed6ac6712c660b51b553402d406bcc1d2444a863b6ff261e17aafffd01baa2b05cd83050ab460ced09bc7c0c2963784b7f9798d837bbc0483001539f0ea65a0574b46785645019b25130095725fb71556add2832ea245e250973f504dc58a4ba3c45cc8259e7906588d688f4f4cc79a1a955ee31e0fe931d16cc9da767c3a48bad09874f7730fa74c349d2163638aadfb59a462e904c5530a0b485541e391b6037041ec6a0560563f186be2ab97a42520a7daceabf1216e16870437cf012a6b6d082bbb23349628af4dd8ca9ea986498a80edfcc2418c3f5a627ba8baadf3739b3c578b2f193f57b72dc2827a2dc379aa31b6127c65352338c012cfcce0af1b33150d488cf47134e06b5ebaf0432c172090fa6671670bf7b66002e135e7c43d938343d5729e22e5597a06209e0793e65417de945b5e1aaeb2740fb1b350c902c1390a97586564fa94120cf7538b21aacc0ac0831b477e37c9e984b73ec91ed88705ef4cafd2f15a50227c0e4c0627d2a6d7875e9605afec339799690bb6f0a5b01141a6976fd51aa7a079827d37ca89726686ba95d6f275a59341fa229b4c163c260c4dbc4587c50ab8f0ac777849b5f700209f17c15251854c35aa23c20d486122ec8145565966f4a067251b96461950ac2171f1996e94517610338b88c091c356804cc691922449db0645a404ae4a641d1482b58e6230c7965c23605d66e96c8f0418ad786801d7530cfa2b5b757e06abc10518b274e3992e538922b717866c7eef827d2bb4c05ffa3322981cd8069dfe028d878a8b7a002472d302253a83ab84adf5530cc5f4671bf5219fe600ba97abd2555c52857abb76ccf4760adb30346c55aa5340b189e1968f72999e64c0b76297d232412b3c9384783457b83309ba7ef74abd50d16ea1c32a2362aaebd02da7790fb8827ff368261cec14f3a2095323502446703783ca9b6aa595d690031297c59b25414455c155924a47896716ac45330ce7069d131b75a57769fd4b4ca1990170a3570160cdbef1c930063d56e3546f09b1cd913c82057c0bb89111e6b1bba88eb8cbcd72078fcbf5059fe25c84bb5607d7b20bd0733fd96dbae2abd9531ddbe3cdd89a926361bb56ea0e5f9181b2c8c1532312f3f9005135c07dc211b824b1e63ac96e64845c35c41e0313511a5d429663796abf2443908d353766d40f47a910fd04a710ba5d6a5b301832a5b6016338d8858b220e8219512b643b8b60ca2a9347ec39638b787fdb44ce72408dcd2504de24af91130abc09b2e7c9bb26b3393ee06fd77019ed3466e019ac92a416c9683da22cafb1a9ad3475af17a15ee9f97446096647578f77fa02e79904fcc008fe509425446ca2a4c1dff32cdfa4ce120230bb5cc9cb49a2e2841bf69a1c49a762ec171698ca0445201c485a15fef2562eacabad3259119c9ba4185677e03aa0470ca848709c4ba0c8e5814416c5678033c819773db36e7a90c65fa82ffdf6921c38285122163bc0744de5c5363c9a973428a6daad20e5a62d37017b464da7637d32b6c92f059443501427ac964fa569cbb074c71053f179bf1963ac704489ebb9936e23950e51ab7e26a98d6031c652701fa4ac59aa7c15d88c0337a067257b8d916db0456fad9622f44a928df6cce84a3e6634c9caca246208920c487b9a666342abc389c14c499785bcb91a95dc868fa20d25b08ac0e48c72e9b486151f21b11731d1bf049174adf279f9020aa98c38372877299c4f54a4493a3b20f8bc71cbc490b363c4162055cf3a5c13650db1154687462fc01b5e5b78c9f603255a24189b808358e17e01b9cf736a77d78a32520b6ddc9c1dd65a00e84b562b607b6ab472d5173ab53a97db08b322e95cb3378d5d088cd3ca6fa4739c6633a27d686abf040dcaa766bcc18d6b8a2f91e51ed6d49aa37aa44531bd9dfa25c116a842e50f53a68bf1617245e8b7da778eb3343d3f2575ea84627c640a6509133f4c5d78151a6695245659955cd3824f264a7df58ec87c8aa3066ecd1b68d848cb758487e647223c0154388912ed028ae364a9fa9a018d8558c3e9b179b66f2488c2be8792b1849fac0401a9756f209889fa637cf7ecc4f2c0249eb5c6f7e0219faa2a9433759ac70dabc7baab623c2023cf7ec869b75bce953ca3316b7a6fa685bdc7c8d467273268a0797b8d6fe57ddfdb03fff7ad3d5b9c80dc1939720ee8810933a04f51b78262910d7e28c0eab06b91980b65056472a293f2361183125670ac2426e514790b945d6b09c9ec354fe7c895a30231d95794f89ee60761ac9b2aaa9a75ef168c0950afb498915b2518e010c3800764bc5a65c0c54b2af686b7d954e77bc4cf8137ab398fe93429dd0ab80fc846d4cc8db2b9b2b4bb36d4c4121639c1e74622e59250701302301b4df96b2fa62736b29caf0866096f842898b2c6012b93b5ac23d1f39e192002ff0b9005fbb8cfeb8930562a4e0aae7a40c5032b8b33d0760d96c7c203920e2439d3ea02372c7f5d80b92259349076ba20c3ad4fd21752a3963cc5126342a963a363c1157f33189732f7243e465b14969f1ca199af45b50851266742151a235a8ba9a595534bd6aa31ccf52b8c5885d571a93d2577c57057e2caae68c9c84f565c72681fb15056a345236b02a1e5b13289388f035a2f8e03402f8b0a44259179a904c94725319acacd28ac1e449b87e8916091940e33861a4a35a8600267f04ffc6a3e06c60858d578bec60ee7716fd4b0225e5cceb5fc5437387522200f66fc880e0c874119c71f462cb4eaa24e67be77ca67278344199b27e2a55b50f372b65345122225d7324ca9504ce4d12bc101639e93b331e3b60e1b520e03c9703a69f54c2b1a52254ac44b86f310a711263a5a9b87a7116ec5654f7297ea76b63f939c1f49ce99d52bc58876160401558193ad98c7c8f4b6822712429679214bb2b6e8b324b58e1f57695dc8968bca7ec3717df12c1279408183b49679b349e2e45686e722c3a57bd9547a65656cbc79aec1d3b129837d84a6975d018c7ab04c88775e9c68839955775fd66ab02aad69b76307f51db2ab33915aca61969aeff14674a557c322af6997b1a8d9c51445884779227ee742986446ea1719808996049038e0d9aecee828ba054417cc3a683a7295066aaee9cb429c4740531990744a987152dca2388ba27e3769c8bf287e54e41cbc0ecca95ce621f20831c75b153fa17d336a79ff6e88ddf485daf7b1b0bcf39d8df15319d52ac67ef48a9254dd40b117941fa35a66bb50296327b725525deef70e128ca8045ec451 +ciphertext = b7b48ff76d8b1709c67027c3f1161313114a848d6c0a3460850f2b08556a47dd82a0ea4e4818a1667882dbff42ff428caf7516cf7d32a31c6efb18dbebc69a7bfb17c04eb69bcfd8b8407b85d4e68118efee310f122b077560af4bd157bceca4b72a1b4e927ff144b0443d3fc4b00ddae83dd88c33e728b7520944cad9b1106d3c43f5c469efb9b00068668f0ee8528b0482ed82cebd51bfd0c0dfea9ab42338f3636a369578792e07182f379644219159d90ef9b309b312309f3e1b4e6c86ea904f0f49fff3469b23958bcbf00a4efea040530e20d4b8a19e7a67fad4f017b2e03224f0e2bf9cb88055743cad55c59d7965a490b1cab9be13852bfaeff93799d08875f55a765bb78bb7bd3bfa6573962a233951c99a8a1ce020ac8f2cad10927a766d4fadac01ff066f8b42bc071c1de33c0c0bdfe761cd607020ae3e2c559d77717dad70f62dbf147c86712d92a2cebbd80584f1ec5dc10cf94372d772e6087b9f73c62e7994eaaa8d3a52f2f7a623ecadec7d9cd3634e44cb282e07fe20ff0fe7c29534030b12c1d6e5894536c8815e7dcbdc82f291fc8309af952c489cbfd86560db108c731c877975bbc076435c227c3c6e5546c9c9c475b693625de1896ff066e24ce650483a2a391f31ebfb68e172641a8be54ffc35f09208bd2aa1d837f9302fe2cd7d54dfaa1f833c85222135609b4af0901daeb0f46a81dfe8396aff879acd5ab17754cef6a8f1406563f8899f379fd1ff99371929304338efcd3465100e0e7e3f94fcb26f20b28eb8367b7cf3d34f74ac992b5c37050daebfafb35919ce6703d6cb3c0b1cc40e7b6b8de1120977a5e7d09943423f0939839cb6bc53df64b387ac018fee33ac33d780090ad582432c4d61514198d74acef79ed0c8710243aac73bed13ec6661e46d1e8605634578bd17e1c94b1e705c6ef1307cd7f4e828b30d3cde1f65adfca10439ae9c369f5827b94c3f553d258573f0b7c7884133cbe8277d207681800291c139dd0787f0800763d79ffbe667c1c56ea8bfc020e339f22edde053a4bd05f345e66322216b56c168a7b11bb1e630ec1fc05cd30cc3ea0ffac9a223e3aba860783728f9ecc974a0279f307f984baadee9091ad4f4db905dc75014a29e9ba246b2edc076f7f82cf5a49c4b5f85d3b3306dd9d391ed8500a7d8c567cc25f0e25e46af32bfb44d2f57d59490884b494e30499669d5e8e0ecf5b0f8024e0e1cfb9d25d5152eb7b010398f49d169f57d7565a0b51edcd362a591686d00c6c72bb1a0a93c05b52cf13b82b08e4f28062b558fda675c5a9a2fe5a0fd13d7fa0b54ca094935971149c35c0feb38bb658e929d291920fad23f27818a5184e15a7db054e4dceaa162a1fad1ad647ea7084440e80e54c6805708c4aa9b269c8853f274a6097d313dff1e36cc789806a9acf77f1a18cdd88e1e8527abf12c3ac3bc45b506939f9cf8cb65a66f83fabd5037477cb29a0a32234eb4034692edc2ec6a8f79450f232c443639979d2d4a442963d7c63f04a8863e42 +expected_result = pass +expected_shared_secret = d27e55f2a1f9ef336c8537f11da9875e03cc7dde8951d81b0740457609654107 + +comment = Official test vector 52, seed: "5de720f2d152bf4e1f96a61e7ae5f1bed6b8548e32638c2ccec9f43b87d1bb43dfcf334f0582984d27e440d519ab662f" +private_key = 85b01a4a587bae308d39792b47f71997fc55fdc2746f881ddf7bc215145c56d399c6447ada39230866384bb718ada160a7349747867cf695cccdb8a4f1fbb3e573ade85ccf38924f36482bacb9798d481521a0cae103cc9fc9675184490f281d3516cbee910287758a4c374c0a4313f1c29251b1655522936dc329f540a1fd887f0c775823436df736c367aa3013341e66854fb39a9eb90b23caec3e84690ad531141f39914a77a767a47b60f2868cf11311aac9da94c72e9624d21814cdc99c89a4b35e1c4c63cbb3edea06888162e180503cfc6616b24d270601d0d275c03109dd9486220b66d523a8111b4de5b99d236586a09a4f77a240cacb4a737c770bc4915f55b609075ee68499654baf90622647052a8369872a93114c80c60fca1345e20114552119669a0d3a7188d3326017ce92112f0b715c26b40851683478e5c719c11088f00aac577f5a8763d4a76e3cd00cd9061f021672847ba0d4785ea7b1b28fa364e64c4fb7f718d2352b1fc26858b6552419a4d8e1b22f8c7992e3b5373183d040948777c356d514fdfb2d0c5a636bc5416a799270e5c975c0a62f3a76fb134646b333b75582f7f2c51cf4bd37835c3fdb2ce1ea86306362f8216d27e40ca43a45edc9554f08c604624659aa10ebd29e59a60f7bd66eee447f4398addc73387579148bc4a26b6749c961926fd34296db3044cb0d2d1312ca6a6755ec48c46865a36a6330a9aa5d39167c6062ef1a7c82ca5c0ac1b163b85e43c278312c4304aa127d66576e7218c2d0c850108076109919ac6931264dc2e919ff441875e607a97772feb45f14881fbcb37b4d00b45f416cf56c9501c6598ff9425249740eacca49d92e31d679a4f16c3ccb4384db45e47621719c6c585ccc03355216d43625c08760254ae3cc4aeb1287cd5c3f0911641b05c7036c9bb360c72902325830bd25eacb5a88abdc926e0f205ee857aa66c8c47e434d8bb4a6cfabbd8b681c427846f0e18a2762152b170063b489a3e6b8ba06b00f14a3f2e6ac00725e5724cb629b7a312b3a1221c9460917c07637b71050bb644a38a8192270c857d43ea9304495206bf62b1c4c11b04a817aaa996b2a266ceb8a80aa46674f16207b61bfb484af461b6dad9a9e6c22c56f81bb355a6705310e921239497809012159e78a8a249796c155a9dc7cbfe7384dd092239c29773f6610e536a77b879eef054c5e539a381043c1b53d69566a96d1931b166c6f066cf0ec81e7492a200876d42007724ac916460a1266ab77a327ef1282479685bc43a2718c93a806c3de3a0cb918c7a734cb04759341c5b1496679987aa5db93b70f903a5f4024c3da6fe8bb2ebc27182e1179611c61f8f6214069ab83c7165a46caa74bbce0897fabea9b6b58cd34e7535b0297b4359960d23e4a498cf7610601d92af2fb6163c4b2761615121b62a7900b08d61065c83a69d51253d48399fc665962ad36275ed3774f114a079f13b8bce420b44638cfa6ce6018b58bea422a8287a6680eb21c75456592e8b24cb6c26ec3d3c1dc4a19ca16888e9b7fea1a863b7a0143307530b533269a8b692cb4522ac1aa27b01d38603fd009e1c02017bbb36da2049a2c5045a63081266d7c6b065ef3308afba0cf3607b2c98d83f76f7c058262b55f7c0746b3c22437f00de9d7cb69f40afd60ae74b0506afb96e30669f51c464a27b4f177666f92459b293dc208a0dac5654a8058a8fabc2d1853009743a598bab2c248068750f01227be5a4f7c4c6948f9167e88894d43b5aa44687ff177de837e2f0537f708a8f73a11fe6632dc285c9026bb23424ac2d1cbce39ac6a0a7686f088d617b096436c9f773e7cc50cea1c08db20c2949a7878d18e7372cae746b04558a8fbe97df0b9a69090449a507e6e1c07a35680412033127037607b2f0502690b47bd300a84c041650dc748ac2c060260c933a0b81847243fb3267f3cc8dbea4cea40790f37cd0373a71ec00634bb3b3b087a82ccb1e1dab77300156d8094a1d61d1f1bb3f977b749c938ab8092d71c93394856ed133075e2bbdd3cc0f27c2a2d34bc0f633f5e55c0a6c989b1e277ee9132f8779923eb2e22f78a1502ba5e55b6d53a05137867c10536e672c7336a3ea1f237263a6046f260ed3871f1d479be589744361a0d819439779075cc47a5a33e18326615134d9f09b68b6873c6ccb682f6b75662cecdf5432c37189ae09faf36735ea01c12f9ce64f4116d509c70e0072a242ff126710d178daae86539226c92d090d9b60dc63539f51b46dbf24cc8d54eda255e0ac19b03d34f5a270b6fda6d6408bcf1d2a46824b5290b8a26a8131402c9aea052d0101759345f86a66a4d238a20c6531d792170c52deed889ac3050ff87c659524337830c205622a989736b788092101933c0073c0b686106a9b88c17958a8711d272392ac448b01507634df4a23846aa9d594c80bca99f17505ac1793f2877bab4f1b211d2985842795c4c1b9fc018dd15b510556ef89b687e6b01701cbce0b56159a90f7b2c6fc1039aa38449a596c087a62b2ee5a7c3799f5a601bfaf8b9c598834fa115ae010f71167fd41b5cccc45146009752f380cdc56453e554cc779604f976fdc34e9f135261eabffbf00afc514f2699aa6a5aba0638542891c6858c7f6c6c4a12e4ce2d89b50b04c33ef262ee8b0d9a7777d3c56c85b1bafac7052fdbaed24303c843110c1892381887eb351134798b9745bc229208b277c2c999570075903deb530bf22f7906b75db35c3b24b04751bf6ed41724058c70988952d86b48519264d25ec2b817894ac370bc081362c841ebaefcd7625a67a48e3ca492d63bb9036a5b9a35d21470586510acf76fcc683035b18c05eca7d0702e0453ae00a8144779117d7c19cffb568a3c0959193d689a6adbac13df43907fd45fbf3313d49425d32ab9d81c6bd9b3486c3636e6e0015152c1cc78c809f3a3ffbc6f0628609b996980b3c43294c0e293940cd65a34bac8fcf020cc611e3e2c8e52f5ae886b8d9480551d012885318e5e6c1ecee0a3d75b342667c691d19f34fc7946e7a7047097f7938516cbb6c7f3abdb85b15e302a5547198ac0b89e7c2bfbf74050970e8dc746cf16bee6147076bb89c5124a89e070a785427cea590301cea7ab28ada228ee7bc7fcc17074063358a706989c8d6c82677287905722cca0a24ff91958c44a3044787eab3599eaf241eadb932b06b151a1a02ba8b244e9262b96144302124dddb5584adf5fef6bde5872a551b6840e3a082a8aa6dfb7232a6813367038ccb30cedc4316b63d75b641fbad2f33241a3fc47ab8b3ee1a3ed597e5b04f77c68e6c45c7fc62329b13c8d29844405db8ff6860de474bf727ecd19e54e6e1a141b +ciphertext = 0abaa530450dace740e8afd009c206de7c0d5d5e81fcfe4034bebe306027fa8372da9cd5e10572bdd552e82a2e596dbf9b6571f8a009613b4c9795d44d377353eb4f9ca13c2fcced279674bd21d310f5704ffdc74b4ad98d72648106171cdd082ab3f78eeca66e7355c012838a5129cc0084d722948d24f00a91d2be8bc44e6dd949c1e241a22341e3256f7c751b8541332ac389d3c57a8d69365bb4c9a4757dd870f5cc7ef86aaff94e26858c6f006dbd1a63bd7e09cf5e4fa6b1d2c5e03e58c3d6823a524a76336db51447a17e64ed42e7da5e9417cf0b447f32143e689ed01c4e2e5a947bdd5e2f2f701e407276c341ef766238c8e04fd1c051f71227771e36809e6a53cc68c303f190613334737bda59b4375629ac14cf16d7e98bb435b9fe348cce9b216b6ad2e6f95aab87bff03b49f440e4e284ead23353bb85c81811731705fdace139c7264797eb2624ce48122dac337e146ada469011dd6a8e3022eceaf82b27938be256f84e74878aa568930ea88e6d823514491eb9a27d956452a9aa81b9a2068d3e4fa1c27e5eec5649aa395b2ee52ee8e87033be00e7c4aed4e1375d01a7be8b16673bed2758b22eccedaee993bd26b91e8e0c25dd1a5bedbc55cab0dce5e308259efd45cbf7e6185e2792ee36a453c693da35a668d685a8d70d49d75d4be3b567fcc9a978defcc480d2f70888db31de14cf90a2f489f020358095dc8b7588ddc8ce441fb1385be6843a6e36e5775fdfd14f03018e33c5a2c027cbf4328106c33afe57b0da9700e27b3d25f905438adf34a23718cf7e6ca992dc72b32aa1c432ba1792a626fd91ceefed47c8cbec2b9cea537b0f9253cf9a11176f3103c7a98859e4211e995610a4817527977eed6ea70b310f1c91ca5b6403118084159e84b497c9a995e3918216d5ea0706c89031c2d5ebf8febd8e68b594f00d266e41ce12e3dbfd16c130d44a0378b114dce1a6eb50f227d4d43f1f8d615b7b278546bb53dde219677c980f215c8b2b2284655e596a343d1aba0e277b8c98de9df84208a9e045828a75b1573bb15ce0e8d7c39809e57d118e0b8fb2d67d72afbe8e9750c4eacd95c4a69e03a16911d27f1bc5351a35212e69241dc4d780fbd4c9dccf01bb79fc2a40f4c29f0e22dc552758c7f735a9bb13685b1e45772b47a97d4312359ff0d3ab6191e572bbf9505210582a470e58a16b3c5cbede72d07802d973e09f80339684eec8fb84ac613c4c869cfda4c6ab82ec54d8d3aa70bdf89c792ba8b5ed3c2b3632fd391e43fbc66733212d439e5a67d20f237c2a0f782f96a9e2d93adb6f1333182ce55056d4cc807098b5333541269a10935d6132fc5dffc549d99b25a1f48d67999e669ed8b5202f0ce91f3f368882ad1eb67bff3a6941f16ee6349019bd41433c2ddd70f7d5b789b000503a2ec1f48e77869240ffc649b1133374e80a16ecca2e28baee086b973aeccd3692fe9597d934af1c53668af5ba474979d2d746156fbce5cb86367134f0476f06c94c3b52ee1f1b675a67 +expected_result = pass +expected_shared_secret = ed5903d1cf02861444cad7fc3793b4e1b9b6d0324bf6babfb768bb2f84300086 + +comment = Official test vector 53, seed: "d71729dcbb27d7cb39e9e905025d3e55c8602efbcc483c9b866ebf82326157833169243c14550ad728bd1470f39c642e" +private_key = ce732e28b21f42f2bbd1b049e6b80264b218b581cbab8c9186e325f7617895e6320fe5c697fc3b82546681b3ca5f4a52f1f7501b652f86d35ccb9756e869795c166362fac89c7b5ad41c7c74c596e2a7458e419cd10c10c890c94fd3564aa25f1ec3a3282607d8b1864022cdccebb1b1e48961207e29264a9ca86c94b71d5382c9c6b8004c818f51a52006706285bb3281618a157c80c2c00905c33316516c17f04460124fd79a1c330417984220334c84d96a66fc8a5556814c58f7826ee86f17319da3f504f0124c3f06ca50792c1e1800feea8a8e8805a54bcb90c52eca144677327f5058cca151617f443dabba304b353f4a5caabf0c179a772582711c033b3f3c1225f191b887d8294fd18914850de6b194b91c250374963bdc7215b07cdaa8001372a21f0c3845979386c27949e0bbedc0b004258866a01ec5cb82fc751ba2f4510e514a3fa09b6aea7e5e45762076b81d781c2ba91dd6f40cf13c91e947a7d7abc2a2aa91a1404d87462b42aa71eb15209a9b0d4990c2265b051163cd2ba8319576758237482f500f7e94b3ff099616225737a766c10b6aeb213b5b073eff93c3ac91bbf2b93ff47c84d7ca2e794990e2db4a7e9ab19cb50cd522427e6a935ce3976490b21792cce5e4b971668c4793ca4954b477703730411df1f5ad2557caef78c914d0c223d836c407936ec58825f3b2a1925a5164b097a94a13d8ad3a27bf1ffb0c08c72b92215cb1b67c7d2c4a7bc7a6a8a054d2a34de69c78195bb149e4b4cebab78f41612db19540385f2f74757c662c2da3c7b03a34a9524e2ab90f5cc21fc0d2ad84bb996e6c73426770ffc1c9942cc22aa2934d97a66037a18760c51b0236ca1b1880a2286ee5241ffc220a4c6ec0e296090874b3ca751dd701086a15f419c67eb4514744047d7848980c036107586d36818e74ad98989c8c02afab4134ee0b545ed707876a613ffa10be7c3f10b758b215827ada9fa1c83b129c6bdc5b621d3a5da7f396d6e29b184a38d8091b6a2c288ee2cae833a68a3cb6b30bac5ad7567c788d8c803a7b622fbd8a253b274b93593115b5b7a5282eaf93706c88c178bab897b7198c23b844219852a60410e8afa85c902edcb9a5e87a31ca84ac6b89a75830566062bc159cb129277af0645d5817c8822e384040f1621d66d41643897df21c1013cb1b426a703f120f21c780c67bb011fb3e8cb746c0b14c9f847dc1235f72e6bdfda1c55bd26e377395c4b17b764a41e0f7312782bf71820dd379befe58901a011fadac1efae549e5933aa9f9c64ce2273c486b56251674d56212c0ad7637854c7b8447a135fb960ffc435ac7553dfe935caa98bf32186817b5adb42375e96c30d0a96df39658ede95912946813cb75cc32b395aa73a916514533857b4c3405fc32c2946cf4f4251b2091b6cbb00ce296459c45e558b5048b79cc4cb8aa01bd7e82320637a62e2038d5b3c0593b42d32a38be8312ab022ebb496a5fc4a991a1baeb660a23988fba329a79dc7144d20b5246466f25af4ad971014970ebe2b36316b86b3585f6b0753711a0bf3952c688b4cf6c8a24c0964cdc1f5c1c34b3c28359ba232840063ac30bdda83f0611042fd8b7c2bb439e686b49d538cf32a05ab82372f7525df40085b3413f078226b97c234b815ec615b2683f1d9ab32dc0314c6cce6e9620c8e73b1dc85bed5205cde5a44f40427865a62356ce44751c7278a3b236bc2d208c7b383129661810a6a2962496d058ca4875ad234c2df951612e665984bbae791c279ee835b105202d4751f1a330dc6b0bdcc38fdd6458b0ca7a9bda026bd64e80868b87b58ccf2a37ca94cb06279ee77a6731e847487142561863b5f38c5aa4c0158ac28e95012c10a8b8e99ef7db12c05009311a74791c6c8b355e4a861dd3cb6fa085884d7a7e8cd270f656ce29f9bf3b91b798032c16b00f8cd722a1cabfbb25c3002324c56b66df87182504581a76297ee1181cf05a6d89698cc94021b16574264435f2cb137a7a667a4548c96f835cbbcf27805ae37448674aa998818cf26d15a63689777a9b98219ac3b9ecf84203826eae294800f5a07ffa886cc86e7d095f42c471c121a69a1972a7906abbd31003f6c8c0d07ef481b55fe185811084d9a472ccbcc586b6a9a6f24d269ab36126a3f0381b29532d027c2d5e21cc5b9c6ec8303e4b388a6b7216b3e581c0566558107c8b94c599f09c2ecc4b7a824fa3db9a29722317d5bc5d43827f4bc6d3a91f65dca56bc26de9d40bf2f69263cb010a9a24a749c931631ec2d13ea4d5136aa8a97ee019ae1291ea34b0807886ffa323ad3b0f83f82e5d9a2d748945a3ca34b9535d0460a6f734bbeeb66a4e3c257bb079f5d80f6deb0dbec130fe4a182fdb16291403f37a191c381723965c3fd90d9f2b67c36ca3ac141030ab516a01453532aa06b73a91b5ba7d1a308e286fced38f2858801022a453320a857b564179c55f0436b25cb191865de69877b47041d9d0c2c9bc42ca513f207a72ea9a5cc48b573fb402ba8b5ae6d73f2e0b044b8ca67c1031577099b9975fad7103c7f6bf80099bb51138d8a7af7bb509b761a9c6407dd9826b7ff87879098248d779d6f26aa0215084f286ac77c50849ad19f29a32b07ef517000ff71799d6be1d177508bb969d9479c6c037a5a18bf4302720e240dfa603b7f8745144906bb88522505b19336bee5572188853a47b4f8ed8a040b251307299be642e086317e1504784990f2149cb2d89b1a8542e4a19cfafd57ade9a234545142afcb3e544b49df75b0cc78f5aab935752746ee7a7f7936777330a66c1063c50becc4286a3db4aa66cb602553849b5baaf83965ac6bdb19a9e5db8251de0267ea3c0eec342b51505469aa7fe936a5829463892645438a3a182859da136e033b926695421a1891610816e136dbbe36adc08cf00e4b44649410b2a11ef254144c27787e54cc5a533e8e54f11ea94f7e9c2009d25a6248321f04a53c31787c12aca9cc78fcc06b161701852215bc6c29d1779f5c183152cacb583a90399746f75c5bb337f1b580b9029b112579884f792ea5a52187a109f547cda89b7fbba90c66065a33423da4515d13bb5ffa074aadb0c55119065a51239511bb33288f994b121da8913992b979a59bbd64036968621e76ae336096fd6125cdac4f767a883e6448b078dc04b1f2b7aa49a1180c0f3bc65d2a93458291982652063419a9cb7f1042c38f483c4a90e17aca78e9fe10b44687f9aa606cae8888e4c21ab0f7b85eb3d3a2a3d2fe8ed883d1de0ee044dbdf6787ff038dbf9c133557169c62fc1ce2580739369aa87df00b496485a3407f591791a5db4578b5972093a95bec3b8e70c1d542c9b5c9789729f8922 +ciphertext = 5794df0ad781361c6821319687c08ace02ce58cfa47ddb4d8d9659ecfc28c7997b98665da6b0e985ce869168935c6dc81877db1c88d3aeb37515cca3dbdde9eea44707066a89fee8c42d3c64921c97accb8b62249e20d248c7507d5b49a5849c54bca761745c7d2c5f83fe7551795d9c1979cfec5a0b31361a515d95899cc121934065a0cb0f8e8aab6f6789feda87579f26c14c76081ca22bd24f65c5d1824ecf796520e2ea33b9feafaa45da662c032e866b26f5ab26dfc7e7baa2e4a1d14c4a3fe70d3aea96e5a68d7118706a7869e37651524046df15eb0fe51c70b89b9f6462ee7481ab1472d4f9997a65e06650276b1fea8af04fae7746309307aacda58e3af745df5f02e9102b8c5b2d981321cbc3ec8476a2f7873ca3013d4ad3b9d1914d331a97ce1eaacd85f9145759ae255ab80c34564794d2f58c00a1bc10e69f5c28934b163ac554512b43587af22a43cb01471ff8ec21cdbc2d708476036805bee7199078b139009ced9b39a402bf0744842222515aa55d8d86d2fb04e81ee7a8fad1d7b46862cedcf5ec66503bcaaaac78f336107c4b406c4e67283b0e7ea99ac08d222822b6721f1e1669e3ecc52573d477c6784ef31637808a50bd3ae98701bd1a8831e11692be8e0c84474c9ba739dd01fdb24bdcbe8e9a3a12082f20ded7d06ed3bfbefd1f0e90ec2dfcb1cbd039f1e5c4f657296371ca5f2947b27e686541e8991603850422a2091a9ad87ad342e936f0d78e4211710f8b51b947e8a2aa98fdabd660119835eeafbcea6e2bf2895d22d264a9d558222926469d2454fc948e843c0d086ab8980665fdd0f600d03a14f14b0bbb2756a2f17b38fffaba6ade7db5768c0ab9473bc0e1d133e2467020c0ed4e53b94b722a3ea63ef74433a49ee5856848991cf9f0b24bd39e90d57c00dd86ca0bb4b3c0af67a84127a41cfc3d233ea766ed7de7784c9fc0a422f3f0d2b6432583d93d001e167765db6af0aca9b2320640d83d7b41bead197632aeff5b952ca216c0051311b6547d04f5edfbcab178ff1891eb6e42fd6c2986654b58f41c644b00785201b26f4606bf4b5c0b3d4f46d1f606df167be6584979b1d26d3f8b61a08d65c6f733c6ff2288d252052250fae9373d9b3e2b314be7cc454b749fcb6e5207d051be4fa345abde67f1603f12a5433a54d2badeb7a9f5912209b733f2682e7d39208af7a21872e4b64ef835a41e1606f8649823aa236b47579fc8263c2f812ad4846b2a8217c847656e2d54ab774fe8ae617a341aa2b3fd2ea3f6959bfe58c26a9db8c3badad7a7557c7e75ead54c9bf85ffe9e4249dc1250e37c9bfe5343aa0653618e0e651bce7dec72cb14510f1580c43c8ee786ee3ea87499c80183544a48db67b8a8435be1e68d8d3c6433aca5f42c8fdd3c144e96d3dfeb60fb1d9b1d92d8da62e51fa1e060c973ef92c5428e9be6d0a547c9aadcc47e35c0e7865b6493dccf4381da972bb51f99d7b6f4bb7ffb8950798217480a4230859480aab0586e2f09eec53c2f4f645f82 +expected_result = pass +expected_shared_secret = 0d301028c1cb31dedc8a702a9e95b7d3589f68a6a1f600af84ae0f543e625361 + +comment = Official test vector 54, seed: "a7c2c8edb3601396beb2df0657ec82fd5780a2723581a9e03dee1cdb018440439bb1142cab0487c5d136e9af46338ab7" +private_key = f76c7d8002b7ca65bfe6a59aa3645a8e51afe5fb80145241134cc072a60ad4b72d80c2bcbe1630eeda661cb62e01b0798203a1a287c4b8f725dd422beee6627c864149ebabd84280739193067a2348f2861dbb7f1a0914ba2bb3ac6c80d5ca1f483c8b86c1cf5a2c3bf8f6728555799381a1b1f3cd02e445cbe798ac0361e15335380051294667b9149f38d85a1839ae43d331bf14091c4accbb24c8e8105a9d1185ba880b7e13cd3563aa235b899e7509525280a37162c043b089d5a0bd48b225ebb2d0538f49c8ac3c3b0677d8093cf70b3404016b4686d653ce4715a85953171bb937f5a1916271ad53318e8155269dba4d0a520d057963e70cc01e680fe8408d03d3275c95a2c528190924749bc32dc31b21b58c6f5e4b59c157cab7653c0d146dec9a3f94e241993b09bd62446f35ad7772279e116464fb316db8449a3ab7525b3e89b12b54f14fb19057c39510b072894831a5747782d404487926ad756b1bf81cb416d94265dcacea475fcdaa727d0b5f01b376250b123f717fbb0b1976b7704fe5ae5ac10cd17b87fa8bbd3d824d3b91b567b5c20243677d741ae2cb1c1d049a842b7f9da9cece8931851bb35776caed97c27d395108e42661aa60cc181abb2774c67773fb29b445f3554d386c87d489d895a43ef268af0c81f6065e57e744f719120323b013d35801e26bac2700968566512106f5161ee8528372d45a42b41022239fb0b3cd23c4251927b355719a1f2a0689a4abc508660dbc282706b765ca4bc1887fd064cf8285b1155863e15b112bcbb1962255b362ce8fa4c51c97cfcea7004daa9f746766f2f5487c93b99ee9825cb78ab0a98bf6863a083758e9279245e495ad0a5b86724c1adc3e67d756c1c8647fb4ba32b75a6da3a05a870fc1e12cd279666ca046e064a74625530e742efc72c1d5f959c9d256389c4c63609fa11a8fb5e70e1e2256c8164d80c69fb8f4008a647af7f3ad960265f55cb786e8726b65689a6a751fe045b7d45aecf50605d135a44793ad2c6bba5a59d293528bd94d65f54bae4798eba5b26de8b225728eb8836ad1f373f66a2134b8b429a8457b600c5a3274b0157f66f091ec88436d5667802a15749b4c9c499a36c58fc5a7ccc10a604ed00de74bbf433502c02ab0ed949f5da8b9efb83c4a2395e49413a7030f4f95901e8aa2716a3ebb09aaf61c9384586021301de0f8c085421460a10fdd176c68b4c115c91dac04121924213855ac22e8c98e3643c3d7c3b6c6c4ca964308510525c5aa00c32ad9ba258bc44a9f521a2873bedaf7c56bfc26a320c0fe95cfbe12c0038c1a65b62c18c37e61a2b9194c9ec1db8b9fd036c7c3a620b5c661d8ab0b46a6cd3391e53218e40cbdb082c2207630c2715541b10e3c395bf2a5a15ae8b506880dde937432ecb150f9b3c136881058a750024d9b247232b7289bd07462c051b7ba599c985c6eb08c7ac22135c99e85930113554c59ac06ae298d5935658f513644b01132b4c1ab84677e342a1f4a8a9d5c6a44659805cc8898e563823c8286d54a1cb4b8db866a8f5c74f782784e4b6fbad380c5131fcae11d4ec89df82490b4f1babd4673d7417b9cf04513718f2cd0cfc29707145034ecd4c65cec93a9b26efe3b667405482e3aa37d48aeea67c1698008da4b68683697dfd34fd72a6f39ec0aa0806ea5c59b4554182f6034b9c5b7cb438e21a14774d58afab0099e478a4ba8568e192c71db7c208b7115d29bf649bfb3d23c2d70599682c549ea28dc16597a43aa6e65c77c432f554b067a64ad62ab71492a1aad6045677c74e3e8773fb8665259abd821bf07d2157c09199435bf41992628534daae814ee4ac64ad89ffa1547442b8cf6f54664c550da5cad0d828174805da5d66f01e584789992bf0a4036d770b6c5b3e21b78f5da2467db42479b478f0570d48071f028110f555857e4acb555b9c7d5b5d913b75d5b393bd4b9b2c12d34027aede4a22fd80abe26a9c93c938c6b1348708d1bda7fe6c55bf66981695487ab81362f50b7376c6a52cc39769b921f575e5d7a9666abc2dd9459a5595e3ad631a0c638c3a2181b649704748141394053849b4f996f9b8a68567b73227b8c9e4588ee4a13b75379d2776a7510abb21941c2b36357e8248686a5d973b946b82e40802290651a073636b367671c9c001ac91ad03b9d6e83721ae1247cc188fc05b0249571656a276eea09b6d3376c208335618b1fc2748655ceef805c39165d0ce9bfed062add0c0a50e43167c80e5301a076c9cdc1f13852a5987aa3cef5e5864a706b3de947d2ac8e8cea0c3f83745bf3185bac9fd0162510f70bd20129d7c5215026114c4b5ef044a8a29a3f01fa02a0a3ce928a65ce8cb566848110994e7ce20ea5c30304d6ccbc7477bb78b3ec527758b7828b836dbb2742af6095a0bb882c2c9d8e162618029c1fb5aaf4b963fcc4a35ab78b0d9942fbdb53d4684ca85218dc27678719ca0d4a8cd8e9bcaeb944b7c0670ab171927c56c35034ad92bb3e6714d0f7c137c2b9a1fc5b72367c35c55d5feb93d1274b88bc558158c5d478c34b68240ad193e95c0311aa501b3c1c44b20ab6ca2d2de1c56b65618ca53f0e91550851bfbc289206d1406b27047fe610ec01a86e8ba94516aa926b99879836dbb27a7056c4d54bbd19a44096d1b3f3e9956cac29e7ab95f175b9d9a0078da633f10a6fee899f400533f0f77102da19fb02610003674828758e23b5ec724c6829b95b8a6750f1988f431e7537ca9d05701ac8ae2034688082c5c20a122c6349db27ab958504fdb4c527b223b2420db7246a4a69b58085a3c1e6997db19fe17a2bc23bcd60b924cc393ebfca864da054ba38bb733b00fdf57ab147b922278fb132c5f5774bfe368dc2b66583790d30d282a248b7e9d43a562ba1892a985b75a7aff961762a05fb35b9420905bb8c4de00a3846e38ca7d71411e89f9e2c9489c597834c7a5315080130648f5347639184f315bff2d580ffd0227c9185adf9203ed50baa43a9174a7ae9b5655f2245a15c30f877bb7dcb2ec184138792738113895a980dca31baf6b5261e10a1d98ab660c066bcb05ac25429775c3bd1550d4a823fc96442cb2770751c812ce67613e48bfbe66a0fdba909317513220ebc3c55fa1364f318812199009af24f9f70c36f81b22b20be53208f0dc44dd3b6abb7236e1fd37c53fb1ee8c86810863a86b0029a58955dc73ec8a436112b5c3a75ceec356bbd91355e4c3941a07e45ad3ecb9ae67e7527f70f6e07a757bd112947074d5120a1f2a1e965ac6995d525e324e8252d8e2c2da909a29b24baca8b68daa5122cb539a474b9402bf02481ce4b27a52e87feb92c4399c7f2988d40e942e7496ad15ad2aa88 +ciphertext = 1af07cebe18b64049fd34156f0c1f2920934c333ba89237d4b942881e51f495d5cc4e1607d128519e51b8c59997b6a0c1402df0d3b032f6c3d0b4c34d48a5935ff61319530ec1e6ae306dc8b30e220031aa5549b00f4142201aec84beabf37c661c604bc26825e96075fb2ca24bb539187e1913849f7b9d0e6fabda2304d838021de30fb367172a9d0d0627398f966685df3de86f3d74f501eb56755844eb64f6b739820acebfa24ee515d7043e259353c7744dbce3886122abae686e4a4532a5863f6e898d4fda096266d25ddc674c28614e4d0ad2d38ce80b6855ac742b6f3cba2602056622565b486ade99294683b7de8cf7548b630ff5a6b0f6d52dbbfb9b5ddfae1d98eaf68a43a2b33cff3dd605aceed93f539b3da3a070d30efc2c1e9fbe027af86d87c3b8f84a2f30fb6359570ed3721eeee8efa351da77c69043c19c695e46a5f9535338142395c9e3660aee95765ed84646d6e60cb3343b60a61a4d3cf65975764d735f6aa57cbb07c06ffa651932e698969842dc1709ba7092192154bfc55c3d6362fa419e38b2001439b41a2d149e8ac22a5d9bb7700570b08dc2d3b91f764b43b70dfc2ebd534951701b6b985ad3b3420290b88b42e50b2e3edf857ff854f1693bf0977523e012bd6332381a1155b64e0bdba2dd7cd68d408602ed0912bb5b3f672f8ffa42eacc31da8601cf43fdf187a673b1309ff1bd7d8392bb76f71394a596bda178273192746c40d34eb4f80888ceae88291418b96f333cd1b15d7522b21ea6b57f12415509e932814505053320f84004637e479d1c6a944eee6896c75ec69367beb5cb7ecc5ce284120fbd24be653f61cea186f2f7b37a1f7d2bef08b8e1aa006118232bbf8217171ad0c0a71d0396cfdb42e64a1d0705439e131be2137af000c553d68e7830e3a3fefd5174bbbec523df366b228fca4c8fd4dcb2dbee571526549cac4dca391de5d82e0ed17962c52399aed8ec81c86717fc813139fa35dcf7a4a6c1b110883a86daf45840ef4bf7194122719b50e0980a7098fce047913348755fbc1f23de982560b3ecff6b82aca52f54dbd4f3bbf308ba1be699fab8207dc80ba11a923d7754769608a88c98835903054e66d810341f9809cfab29c53d16b3a804b9b51de50b07e7aeb9e7f378bd106a594c74af3d60e6d6b466d6f5eefe64f7b71a6cc2fb6b82a5c44b768e89dda891891ae853ca43da23068556a857fabd5f1689adae488c6bd4af811e9176b868deeaa2ad31caf71bd6f4ce8ba595c47c80ef6a24aa4d950c090ba805a99df998ef6a6305f176739ef2ae0bdfabb999a44aaa72fded16b7806d99248cd65394743da26358a661d6283c44ce9b8ed089eab79398513f8ebff93ed127709a43f050a7742100941def83b6d526fb499216d04d250e39fe6f80b4d36b303bb6898bc06362734370b3aba94c1a6244a5a8c7caa9d282082514629a0f864ebb91669acc757f9d7b8aa3059c9e44c7f1925ea18c3c80d85549686f74b7e8a8197efc89d42d2a15d195d +expected_result = pass +expected_shared_secret = 354d86b389021a3196b75c6582927b3a005fbfee0951f34d9cd5c8f415fa50f9 + +comment = Official test vector 55, seed: "467f6158cb86b724039ff18c47950ae5c49170163c910fc9a9b30141f86e9c06ebcec91497bcd156d95758c9f0c6ef91" +private_key = ab150a2298917b1707af1ac0941acc5b6b259d1aae8f878bb0a37089b845991b203ee4c8f1a58cf9d2cc0059ade2db131bdc5fe3049e17f350a805c6f30479be91b12a36190a5332eca4737df5a32fd60cce222b592060add75a62f88d5bf6426fb18a944195f1ecb1babac1dcf20c39339ed45ac8c3ab582382480851107683102fa1914e753731964fdff686f0a354703858c15c99f30a19d9c281ae93004c718d1ca5452fe58183d806dd666792da7a76b0927dc77793396e4508200ef5097e45095a33af5683a4dd1a5f6878c1e6fa85771a990ea16f7a28034a897855769db8e4a9a425860fec7031d09e96b665f57662b2bb86e362c3f9a706e354c12423ac6cdc74973a0767d73e75f5739747433c3451f8e5b85e5311b6e009f79c00cc07ba26b74d512520496b1998a4445c19249729225044cffd51679b495511223417b2bac86cc242241f2b70966e9a7a03c3cc0ab526abf857dc1a140ad85825757d2b5a59b97b7f8c5015da02159d013c1f15491ff4cf64c564e50c389f6c85b7c060f98011a4518cd3b48c2df68c67f3497f439c11f8504e577cf49acfae704a2b093238520292602cc2138762d87536f6285c001d6975a242654ddecb5663ac44228bbe5bd58d9b90426c66802b466b21dc8d7a23893a953033874d0a93626c00b6a4fa3fe9eb0dfeba2f3e789aad8103ca153fbd7218b95547de700ca526aed4f159639c59a7699296486188c3ca111479ddaa747f99ac825c7593911d6261683ce92ee8aabb77f82ab14838db54149194b12791c4991181c66bcf05c67e19f05dcb658d8dfab09c180967311f4e2aa03d9b8218889f87c5a5680299a7459afdd69db27302d9761daa20be37900b971694d3b6aea8c6b5d53a686beaa478f2abc17c1c461807597148719925590c1e482aa05bb73077c017c1010ea576bfb5a63031875a23b0a019d608d64a30d0dcb39d750099d1c7583c34ab1cb1dd99a115547e3e4ccdf2a872e821b2330a5f6b30918226b7fcfc9fb4f37d8103437db12ee073a49d29a7359316f8d922f783797e49b8c2b6146f76c7f8a66838c86364a788d3c4ae67d02ca09391e8547edfe86ca1d131c5b96caf479d9562688d1238c6196526b17844b475149ac3a76865c94993e518941a63a2e4559e81a46c8a99afd2a73b36c633ddc6b32b14723f04a83af89a420a3d04810311a28880247236a3761236b068a9a4edf55317e8841218441eb1137342977215992ba99c1eea7dbea33aa83382b909bf1eaa9030b4386f8baaea643e41531204bc0df8243f81367f4d979bf0125b84eb5d5df53318463102938a85214ad7355960300db40719a2acab9297381a6708391c78a8d4029487c324291a7e4a0945a806e0f24368c7a2af91b8bb155d04c557759228673b548b6a4feb8944b7334bccbab144c84344457b8b794a3d3b4dfc2357be9227f9c4ce8b98003452c1d8d19c7a8332403a41308086346129d3f929b847bab1aa5d88935d816a708c6a5e41023bcd4252569cbc724a53df1b88909267a932186c751339863c8dd49cbe200797186924c26edb976de613cc2c46beb06b39f5c264716a76e67831e4198822d77386592c777a088c5785417b65b2e4235cc67947d7b214627d326ac1adebccc3a64017e004499a8887c4a649e443e74720f0b1bedd52b1a8eb78b3ac2d5516b7a3233be9448575209675f4a813120422684191d6771ef2b44d92b2ca3bcdd5f5ac20a63efc237ff9d99bb4f5094afc187ebbad39b8b9ce75902190741640babf653886162645a84262a24b1885c626403f23136707816acf28950bf181742c98347022cd5941b7b69e21b5cfc2b4c6c5f301bd32a2e7882a1e1a9cd94743fc86af0cd26b51b3512003cbe8628d299663da40baef443677033da8b8c21e0a0f12fb93f4d63809375fc877866394a1a5409e2f13b3e5011a2a5877732415281b7b19991e6ee0a470561b6bcb46d87b4086f18ca29c5fdcd622f4315dcfb11db2c6cf136b7b0a870ae89669ad1011477899b8f679e5c9a8413959ca0cbfb3b54ad58c98b94760058c6f1f499435118d9143723da05ba8f13e5cca1813f91ce01092917ba1d798ba3481121026713be1889b58375e5c4f9bb0bcc5fa808e2c00a36ca575c68b1d232778f71bf0927c5f2092d0629588826d02005db9bc0dce456e2b928ec9fb9c7a138e7b1065a2b660c287c3d062144cca71e5c1294442073ad48afc555767f1bebaf550d520659496af9237a22c27670a080f8a461778aa42c6ca9a954c28a658c73847a586fc3ef266562240acb6978e026152b1149b8d426aefe37bbd263a00da05df48375e53bacf9c4c11d4bbb055666ad008736b9c323a9974661215495e032aaec611af0e6a9244c2bfb6f3195d5121edc3c0719c3fc1365c2bfc70d5c6140e6a383714a0931ccdff946adcf73993aa113c90aef03374e251ace73770a350428ec32a9ddb4aed8832526968412863966228644b9af9842c2e967957f10d350a3499876f25d157bb2812501c8dc95365f83bc64b6340fa6cb4c2816b31824d028726de0112aa9ccc9e0b6869099d310aa6e5b79609487e7a20a56ba75c45986f92f5a4d1672f3d99927a1193ba15bf5df2586e823292593c49321bac9044e4844a7a6bcb08309e2520b6acf20e73ba5b05931e29ba43b2000a48c72a5df05ef715cd8865cf16a835a83c271402071d1068a426839ca424cb666545664ea5e7461af147b9d84583285ea1a05a02732031bb0ba40b14c828bb0e82807fc57882b31d9cf509be7b712f56994721b55da921eee8ad45c8b4e99931c9b71b473a89a2d4821213a1acfc453a41784d35b522e93c2d994d083674c71583782128476b04fec71f17ccc65b9c83f52c207b08adb10824a505b6da8a78d4c599a5b09979d9491e1383ea155576730614fcbdec1a8c801b94083a0fb55790b136bc5f37b752f3a6c636481debc5da8892ac1b04ac7447953015e7251838acbb6e24b508578b62d7450c46c76272806ac407112b73f7946d9654a45e943b406776e057c22e669b34a39d92f87928f8689cb8363b5b07b861be5a750bedb4a909605e6e26a489a5a4d9fa7be3976479f8abab955200c479e75983be821e79682ffb18553b72cf0797b2d2117add5ac0abc71cf0e4ca83c26d218295aec75872ba3a8b3ca22a2ab83404a046355fd394bf35d66df46a6124d18b9a4606305a5968c4ccdf6b77a5ef23c5d54c68389e610b30de122c2b2cdcea30b3c780612fb9992721e26273a3d8a85f38cfda38c66ae39b2f9186ef7bc1e0c98e8976a6cbc6c4875d73d7fb24c3da70fe850e80aa818301d60c70f3038153866dcd5d179e22db59b8991bb4 +ciphertext = 6e4a75139d037fe938768f42f9de93f12feeff1328beb5a9f23790e2eabec1f605207994eefc2cb37851f718bae8b94570cb06fb35ada46207fc9a0e25d535731cff7ba833963352ee9feb501bb3e1365e85ae3997630c5b387271ed60ba872afa7ee2b87867aaa14da0a174f83f7d488ec12b72107372c0a31677a6e933144ce571955be7a06a7b152b6693a5f07ca8f90a0062ff6c88bf45956e13df2e92017c6e246c4228ff0e86b50e0e6224000a44edceda07b3e8d6be399da183ebea434db5e9e5703dd199e340b02797bf62b29f442e378f9b0d99ab7c771d39102ac07341ed6d823a4fe6094622e3a12d74f4615e7b216d4c3da113bf62109b12fdd8046de27fadd35330879359b0ed0085da5578a1330c3755572958001f25524adfb9fa6220e24417a7d1bcaf63ea1044a3e9b02fd249a2c0e281b2f9e2e18b9f7552f4446192b7b65f881954cfeebfaa3075860d1c6c4e819e40873a992b6837257ac50a7fe7e3d759deb249fec5755da72e4c93d2c412e316e22694dba50831ff7c2bf0a294ff6329d0d2022b3aa6a9791de9fe6face1ce67ad828cc0c6293a7e5d6bc26f58e63e025c757576e849a11f122e6eec09ba7025951df26ccb414cdc914f47584d443f06310e86ee20c303ef9e30e269f7a67f8e67313cbbe0b06d318a172d0c47d6a7fbb1aed20fb6da5a28c53277d1d38800593d571b6dbdf2671ff6802d7c346232aaea7fb96134d8d16ae62b07804474cac1b3ecdcd5c26c112bcc9f72a003c4931cdbe1c89158505ab8267e3f5cb5869aee93956bc0334d09b719d898685f04a70a32ea8b0e56aa6b36405221ce539690e6e85f2227fc6cf40d203d55a2de22c902f1eb16339191576f3dbbbbed0c2ef90a5e7fd04011b33fe9a0eb2ec1a8fad089a410995974f5b2ee8d72e80a716b2c389322a279a2bf71c0a563da36779887c8943fb2cdb5dc6396d459acc88d04d09d1d1f0ad82c8e26c89f48c2dfe104483145dfcd2faef8807c4a160fc4fd025fd35f188b55907556dc55bed560970e3046c4b621038194bafc02da0503f3a9828da90b7dcc73add69908421d8169d32225d54111d122a456092b08e012a3c0d8994cc43fe993d7501fb7c7be94ec4b223dd13f50272afeef76c7ffcabdb509f9c1f9baf4b72f9908cb5ce3770a3040557797f666c8927dc08608709eb97942a64c31a1f71ebd7066031f415034f9d8e9c267b539a3274196919959d4f919ad4068b21b53fb18cdcec7391b9ab46f401672a22f2302af1a5104088d9f6628f894a7e04a78b4666f669eaf906e9ed3c8c9bd7ac220104967485cff8df46b064b982a2b552cd521b477e8b8e90b5f1ce11ca9ba16b045f4dc0f36a3b4ca8fe87b1fa6057b5334e993508192c6b46c79b196012dede5a06e4655b46c2540a64ee40830c7ed1c85507809810086d5be4ea8f1197cea21fc56113e45368c6f3d590fddaffd2848481a3424c813f3047dd8697a6316611889a74c0b5a4fa071de935d2d473ac2a0d4f62ac009 +expected_result = pass +expected_shared_secret = 3afcfdc446f93a8169024a24fc0383692843cfd6b4854a8e490892fc35aad4cb + +comment = Official test vector 56, seed: "687c02de1041abac7b2c1e6ec2a7c3375552ed5edb10e3a8139c24cc76bda44d719d8121a81d47a0b762b4e9eeb85235" +private_key = f80c63dd6cbda93b6cee719fbad6bdbe1a03f18b3379306ace5625fb38c5edac9c8c94525c85961e14a76082bbd760ccf9b5ac777088b0cc80e0304fbcfc697cfb13dcf1cf777325eb473d11a43da4575b697a860445b02cf75e8b945ff9433a337c754e19453d4bbfd2f07c76e8b7a68b92abc870b56202f7634b9b37902d39bca04653fad9a0e4f0be548abb97c7a1fa18c34cebbae3987f4b3c52a5006629159ac6875276053908b389d931bc7e2871751169b6d81c8d8b5f52854a3e644c5c504675d688ba030e9e78a79e7788522516ffda2ec9946aa9791a634b6ab6d04456003acf348bdcd859567a74a7b73556820f8dfc12e467ae2fd11025e430114a5a60d3b42bb43845721637a69596eb953ab7b3e3b28b3bd9923dbc5189a37e9fe7bd9b763fa905314c0a35387a8e8552bf7135698e15b8d99b0777a0a5af1b7dafc172aa6a4d69202f10351603771876c580a7d24479db0d804b6513a09281f291f2706ab128905663aecb0bb31a41046771449d12c335051a2eb50ca81ace90940a8a6a355b21a9c7505491ea3b48b5323cc567ead909fbdb380fd504c851452bd34f0f65a39ac62d922a3c50a8566edab03358745d701332e4011022bfd4839ae7b6745c66aca80abab8213369e299253b40a7922df02ab70f9723baccb1ad563ad20c5eb8a01ae564be24f40ce91a0f06ec68c0604c74250909d317f8968947a12ea297a279821f1b5377b02653d66897aa526cf51553c268481f7174bd9495da4b0305650358a637a5fc31c99ba7ba304c6811b555e4b1c2f80eb4223c54032d16238861fb650bcba24b127026fba51f5985476103fe1375b94007a06bc2ab048bcb4a78e6d3c748b141be410992733630b8c917f89960273740a595071824a9d02908d52d334373e8a575d5d52e96e5ad0cc95bf2c761ae577b9ef6bead33103e5033e0765d748c409f8a44227b8f55838b38695c5e132f2cb9bfdd7cb8522906e9bc03dda468a04012277417869277e2169c63112e6a8942a1c13aee97300ff4caabf862058b6e7cc16f34c79ba200853701a98d630936a8a595098c8b19820ac91f47451e011069aa688bfbf5ac4ee018c53639a1b0573c8a420c4619166b011e79bd0b843d97766810a48e55d5ce389b5de4a739f77ccc5fb70d52b3ca5d01729935bf7e4bb984576f2acb7466c8248f975bad539b2260568dfa34cf2974d83699761c95405943a7a88374112f8ae79b4d244bf2d683f7cc7a533229bbd8b5e822c8b3449548634ff34bcaeff25a41aa84a1fa1f52f486f89630a7730e4f81ad23c14d6906816a849810951727042ed0782ef26c31281c0aade6c9334a88acb917b781c4f16327196422c24541065b5e80f4374da0853d478625a68f728a20c1c82ca4fcc4d62744fa658059141221a917d6121187d3b621179aa8f7b7cd0904e6e0787f9a5f65eaa78011b6b63290a55542c80a4bfad64677467dd1b12785e6bfbc31c1f3d46db55c0a035604ef658279db3232c675bc0bc97717ca3eb71d4f44caaf1b07bddc90ae982886594f98c41ae7481562cb63d0b2539eec589146735490a4a87b6ec5cc77bfc0810627aa3452cb061a1648ec7cbb4937605471feaa9e92b94016a9a05f585f3c52a993a91a6db73c9ae6364dd2a07b6c2afb449122e76a3b273d424b94343b3bd7e7b1e1366204820819c8ba8970218a22262ca649d8e3223167be77d9a466c860ad7c320b227e873a0d68faaa441c0907805996d64f7759bdeed65cce25b367f02094714be404ca9fe56f6ad99e7d38b5396281314898036493002cb516878db66ab19e09478872c0f76abbe0f754b443b13dd5afe610c1adfc52fb3c82488984dbcc4d9850a0ee4bbc07d0051208c87914a3fa5159c775ad91a552c2fa2ac573787ffa68f456012af600af60183f97cb3e2936ef683fd8e2b5742c6de946b96f825cd0f4807640a532561c70600d4995bf8d2ca543db1eacd68d28b207617c23cd9a57bbf75abcb620d941913e6506aa0123f89c261ce9c39c605646904d22586643f4ad250870afe94dc950913602cc1cdbb77bb9b4df518d1a18ab0c5a25948302c0535908e70f84587eff169114161c3e646740893faaf6b37b42168fdbc494549776d528bfa2c2baf6a00a7498f403347a646c9a58328c59274ae8cff8b82787a29d67336dadd3404fb5509640c29c9456fcf82d4abbcd9899ab108a1fef872617c5ca780970182861c046a594d62757d33247b79e12873493634c16fa70983c9b593814e69bb160120b4129370519327ac2332063992af4370d9871e7a27d13420a6fb16ed9b579d1ca1d36a2094eac96b537109ad83f4df1a1d2e184c309ab65d75a3e409c57578214ea4035657757ab92aa930a76d251a1b87bc6b58f9d900e38156d73a1961c43be2e044314c89ea9601937c0a87d9c4b14cb9e79d83e722cc40b048bec5ccd038304ac0a65bf93b9a787105eb31b5be8845c5c57b9a9caf6243f54438ed84159f5b1b8b246073b1715b0f635e8078991118dfee2ce08887f9680bd4e672d3aa78df8954554d398d1675d785b85dd28a1675944d7597968f22855999f148cceabfabc2358c315076c6b4333a82520a8332543aa100034bb0a6776cd959bcb263074fc28956726d0d99b9d81a7dec14f13ac5ceb5b9eaaecb28e282bb517cac09809073c3d085718d1dbbd75ec83707cc768bc79a3b637d0acb34f37c9c2b4c0eef3233cf91c0bf5a6a9279f6ad136808a9a3515b02e303f4da26f93264c5ab9010a9c8550b9076d6471c196675edb08223672c1a229ad31c05ebc4fab557f46b4bb37dc2b605a87b888a1f475516db87b92451127436eda7922bb45b8b8462122542de969c31622cdd62676a8faac5663a8bc2191711383ef4c1cd7a183bb55cc3c83b566e5514f233d79a2963710c5e5225f7b09b0b6176f451a7f77570b1c17b7ba335511bc3c3feb884e459add3a594dd35662419272499b4e9258dc9aca946ca80911999d455d06407cf9c69e814478a9f5151780bd754a440bc69925155fff0a675e0c322c69174c27cd804279ebd3260feb62c0e24eb63c7a042996c25bc9342c589c340e99999f9c5054ff35c760a43974096c5fd23bb9e51e2483722a132b0277bb24010297c4ba2c58bb286c49ed20b7aae98c5d9b0601f06ee53c1808e07fda53114efc6d36b28b906611be3a29e68a8da76457be5419d70059f7c329aad28692d45892f335d02d36153217d5db379b621e416a54ce8071dfda35f639a04b14aa73b40dedd61e6fdaac86971965c03ab14ae69e8130426fdf830bd57d0974ce3afdb8a246a56ee71465591831c371f2eb87467b0559dedd776ba063ee6d2f93 +ciphertext = 0739932f7b5b6ed0d363a0fc2a4829b0e1fb8c071b315c536b97eb6ee3c7e6b4022a5f6bc0770e3c48b8c0711029b6cb454b1e80e807ca35b55c06abb75fe24dcb4327ea8b1a7faa63d3de0f13c0a9be2c9bf101a293a078cb33489ee8b6ff1c21f5c4a42e9e9b16d4b860b0a624e00b5151b7f6c4db7893e485715b09e2964dc97740cba20650522f21644776c28b22a26ebd5e09cdcf07ec0415d3d464bdf785035b98aa1fdad58bcf06f87509b3690b327d9acb8b034a34f5b1061f58872f214b57d6e5451ab568c3e8a700fd8c95c82ed28427c7fc569fd3dc334ff8d9faef54b972da4ad8014cc22db0f1aa82663f3a8f205dc5ff8d1ebe30cbc1a590542bf5872ff6b0390345aa14eb43e06f52b35888915a0d8d64cabddc8194ea6a6bc96fa805113a0486643b79721735c0ff55d28501254faa73caad71600ff139a1a5d0d7930dc5d202512ed49e16f6fbe95913898688f3928dced939f2230aaccd2ace43276e0820c56bb7cfe0a1ed5d4aa4d044d2c6e6e895d408fdfadc689ec2b5f4cb24a89dd87cad740477ec812b2f8c9ebbd77aa73900c9a412c8ec72c39ffe3ec82cd65e036056acd5d37c4f45f25c65fdb035e1afce1e6743e985b8de817bf5d43778a0fc0edb3cf6825bcdfbb42c7cbb3a8c7fa02068ff0e1a1a3bd0eb3fca906a100fb92463c7c221e776d0bb43a13037d9a07b96e0f2c421ced63ff9f5442711a7d876ea5442c1d77639c7eb90d7dfea7a635f887ecaefce74aadc6d3cf722f75172835a24dea2664c09a70ed2ceab70a314f061187297428ca7d65d07e0bc8d161c5cb43b0fe2e3cb9cd74c9b2f3237bbd318c18d8058719ee0e65a3f1cabcfda9e10b8c685bece284a62d514c2e663b263220c29cf3a207066bcc53df0f734ca27f2360e5d67144104f8c13f5d12354d61ab96b939cbde93eec145c7332511127944a26ce2ffebdb03504982d25c86fb81bccb6441edf24d3975df84a0950ab9d28866c796aed23c91d12ebbc0a90774d60fa213cb5459b5e55f8d8a6d7aaa94973d88988832eca7cfccbfb9aaa7c44b08a391c6905fa75cfc6d7f1796168c33f8c4f4b04d89d8dba51c840bd0e08b2d660dce30b9880cb86841ca8ea05c3e6b1444a61c318578cef85c9cbe2146affec98afb815380298dcb39ee3913c63a3dca559ce4d5dcfd17152f68c8db381679ffdda0859b6d09866f296b9bb3c6953a4f3c9de9a6901fb46c5548cc150ed9eb30468e8473e308c9d80ec708f031dbf7860762a020702dc6b92c155f2b7f2af9147ba4012fb23290085fcd6a7590a4ee2542f8bbeb2d55bc81d49bbb439018bade94f8282c4f9bfee804f4b53782cd4e912e76f34839728dbaba746dcbcb94194496dabbc1c0a658888137cfdc6b42f6b8f9c6a83383ebab751e29fb29e97b5546e941e895f4316432cee99460bb680ea561000f268602ee0ae9ad74102f7cc0c212afc97f1532428ed658a59d8b80ec5f649726273ca6a5871d8db2184c52e25dce3ae7e2b20ea7c2532d +expected_result = pass +expected_shared_secret = ebba9a8bae936c829c1445c68595da96919041ee3d9b0fe27ca93db691146874 + +comment = Official test vector 57, seed: "4142237070c216bcbe245a39bd9220533c97651d84832b26727855ad994a0760c52b9319ad404693e4248b8c5ff324b3" +private_key = d809438c90aea78b897a528534fb009d716de8d513d32168a1537489e52255d00f49c424bf5b5db0e15a3a9b9845eccf287776f9700ff5bb7ab9f40ffeab7f148a9633546846b672cda9ab8a37c8f9711b76474e7975ab7e16675a8626f8648b605066a4fb4a5c255a0a39387b03bb7f618c9ed1b37e488d4b7175b593860f6c97d637a2d8761d3b933291b2ccfa6bacc4dcc4ddbca804c7c55edb9fc5abb503036059da4d2929447cab1bb1cb746ab01293a2b2f2638beb06030d476bcd2c335dd5226b7450f8b5b2b130332dc9210640c10daa5faac16c1381c2a0c4aae3174be4faa53ca9cbf29769084715d6f8c163a0185030b0c7c9621336a9875946fbb73bda9774c07615711451f5594a44313878204c291ab7550aaf981409d4d7cbee727ba689400dab7382605f03873f38566421a354b59a3b48bc8f62a09519d932af5800a9a0c6efd5783bd93483a0aaac7853c890c3ba18835d1a2e8f14bd0768cc7d0b951909825c988648f797f5711fbc654380e661bbc41cf89b088e1410f19669aef65fd817564a4a4f40281b5e16a69be2b503495a4b6b680a08a54fe0b80ae668041aa120c7a363e38aaf2156cee293bfd4396dcc503646acb74b9460142e4476807c058d72c9610e3cbb50a29ed7244419c2c258659b3a8a23e7e69a3047298378424b7a12df3cce34f1364732b292b105eee6a487126815bc0013d66fb7099efd4931e4301d570bcf2facba0b433b9a03147242c298052650416651db690ce81c268381032b17c429a8e418b7e2bb63d30b570da588cbc36dc3798c65f81ef05530b9043310e182e88bb3e58356de408898738c9b3c457faca42b9b81ed7c4118869d5153338ef4260006c6be294b528c779bd6c8ffcb16e2aab439d3032b8ac45216282346200cf1c812033a4f9667af842481d807f92245bb322e04343971a656087cca8ce9bd3117013ae816ba745888a4ad51a167a17482ee5b88b0bba455a565b1d97bd3b9beeaeac0b4f2879a727028d4a1c61900d0770f15451a01964366d8a6ad1b5bc520392d43bca270ccf9a72df3d68b955c4bed0352b3f78151c4716512097bc92f2cf0a2560923d01358ab1b5f8b7bc687f5c110b04c6512372f119fb23bb852398a6f599f4d145a8afabaf8ac8726abaee569c4579b494a01c67e232b93080d5df1542dd59f21760a24747e98e26466280c04d1784d9b581b4cabcac1c3dde1ca8e00588e0732f76b99ec844032d99ef65c8a9ef4a661e78a47b0542b3129e850647862132c208cb9b3986eb5b510ea1854300ee966b0d3bc09922260ffc96b894a181a95a41f1bb3acb2572475b3fe8933fe3902c965678b95512289cfbac30a2b159b8f2b3535e40881d81c204cba9080b9a7b23190965eb660754368955c0c7929e9447b92ac78e7867c1b4770596047fa820c03a11caa3c2ba48120e29ad46c289920222c511c9e18343ab20067f926435c6d6b040955f9394601b805e38a751bc8a1853fc05857eae658a8a7cad729373e73253e7728fdca89e347bbfc48a7bafa48cb167111367f40c93bf71ccf208a891c383ba3b593f2663148d779ed82b23f4b6796209d51425e9168cb22224f39f0695b668ae6721c79e07ee5d26233936d195b62b192058cfbcb0a5a73ea0154d78224ebe84b7b611ced7256d0726492a4b41d4a8d6b2ca73a3668f93a77294439b0d8ca9a725c5278c21d896ca5d706e5f03d71526cb175ade2606e3c3a24d510b4d9816aa6846a77663a80f5ac0d364747307068da942b15cd2e02a3eed2818f9056d697897b509bd5048b178240c841580bbb77a79423996072f39497869007b19442f401009ba1a039c18f191cca42f9551713cd791c9fb847690cf6247bb752a17a9873e97bcc36b793b6ad827acf418543054698d77693f9c38c84354cc81c7a3b6a43acccc32da070fe29411f17a420521fc69c0d09a6425a20affc98681568b8ccea88e54b8dd9f12aef4b3c10f256eb1519671091984a1dbe972a901bb4b24246d7db01b86665374bb6cb841b3cdb2593ba5c96e32c20936ecbc4abfd24af76158b36a2c752a9bba8946b34c414eedb355a3ccb87431221aa2e936b0bd7540e697142da0817b1b51314fc71cf4017f50544474c572c70bd142c676b69afba4292f5f19e88163f2ffba3b1685073c3bbcac825b095b5d259228a459fa7e866e09735e4cab8fa733d4db6a98172846397883394059c635d23c09fbee3cab350b9976c6a8a900c8e1693c3704e779049cd1221ce767651bc23755a3a49c6be0c314a8c501579f7a447070effe0314fa3687ab92090738434e55280a42f22a66eab77a2932b07e6857a32e31a527a2a909865e053a32148b59cbac224c12468e444916ca375dc204c600899f90ba7c854b3646f2af3981797afc4e261c7a93aabc40a93990dabc82564336d01b2447fd35e8e86a0cbf676cfe6c3d229b256e585d8373d26c3ad66161890325533818f845301d9311bc8035714a722ed9206967123e65410562a745fe28f90d50d772a9cded6354132688ddb1ae6956eadd896cfaa71c44aa925fb3b2c6b7d5e47cbae00a91040456f4023174c73dd8a4d50f9714ad1cff718321677a6962587ba6ca82c341f02a7382be9715b41994db91e6d0b487207b9b660793e62470b806a7444b6faab38f48747484062ff443ae1da9e7ef41f797398f0527406787e00e197ac3248ee4a0e5037cf6c754ab9a24d08936e9d3313b99ac18886cfa9972030f1a40e58b25939a21698c434391785a3a98f0445567a9dbc0b4284d49652bb1862bb76fcfc6abe60831cac9aef6469464319411a30f7601b5358568b014e67a76ea42acacd7c3fc2f983bce1bc0667897b92590dc724b5284fecf7c36b3842c61c27af1a2f2ec95899591e707272bea384cb9c8c9409bb26d743faf196d3b8b33119a379d5cbf6823d4176ca83ba4e2a426745f346a42861a7b5343ad3ac26ea8895f24a379c449156123ed91a4ca701bd789da84ba0ed5c707d373634ab7a65680667191f806b6f62cacb4b40afdd649cc9d1650c3a5e40c8346c91b27ec1b1a957c778ec9c968c670fc84645fc07881c54946b5ab0b6033f45afcc6a61fbb99746f3991f5b827c22972939c5ff620bdc4b131eb393d108c56556719abbb978452ff0a12a1d138c9065c304c8514658193232c832b05b0b21a10483c6faab378c6b1415b75b43796f314542b9d7c87c1ca5fc13a12e8459454d36096c3ba38e979a3d4c852032429bfe1e663e0c256c2e93cf754f2ee43694865a09ca7beb0deda9b1328fd0abdf30ca5c338e27e8be04b5230e05b7114ff0395cc6634db1eae8258072d09c09f291e92d6620b177dc50d7 +ciphertext = fd2b69a027c2fc20dcfad7a6765f0946a637a63374b349868b77d6b6d84a3e32392775e1cbc0d9f986843f3f19966f7a2ea83e4ba64b46efbab4c88649ff6e0532f5ebee8a218b9444bd815a44e2be4bee845a961815fc122598306b1d60c402ebb170402220d97bae5e04cce58470800966acc024c00c5e20aa3f1d4bdb672f1d4731cfdad84388c2e918191dd95d2b70ff1a5228dd38e7f2d936fc7e571d3d288f3c6b3f71c1219669c478a10fa46460340ef9c1ae9a4981c83df9a13d5b5ea04cf9b44d08688bf66e59670b9f13f1096f921604c68a44ca5fa79e12ea7bdf671fe1deda8488ede59ccedcdf265cdd168c3d8e9981f10fe225ab88f714d0c31bb53eac599fdfcdbd24e533327cd6efd32a39b24474da685eaabfa3f50cd290d8d681f684481036a19e741ecf16e4b59059522925ecac163083cc087f4b6d78f0452b429eae2518e7623333bc84bbe39bc85866e41367278b995af06e382d165c6957ce03f303965c94b9d857151840b1ad140923950c931b501a7f97c6ae2cada15a16ee5a7636a6f412d19358bf807130f8bcd614d29d8eea8016b04b8a9e2343c951926417fbf749f7f7bee048daa22d966f98975daf5481f3360a0ad80f501f2e4e5d0f840f48adf8f066541997b67504ad8aa89cfc3c12635b8fd25f5f2611c8b8bf0e88398846c9edf3ea57a49978d1fc704692c29165e6b0f4e8db8d298776e95f36dd21504d42f4ec2342a7354a47f4ed0536e6cb206e88e070a2d8a2c5ebe8e1327b1041eb34fe570b9af85f7945f9e2486966b5abc9edda49cb4d8603328f4a4dd77db3dc569894cb21b6db52665f86729c8def02e53f7051f406bc215827d9c82fb5f106a777f369c39c447cbaf4ed2efd105f93a46e5cfd346ef86af228b39f48c27625385f01f78a1a9622e58fc72a8ab21ccd362c7c27af6cd1844cba5cf0953f5aef4f7ce44e681926c691bbda9d1de170f78669546aac55260cadcb5ae44eee3459e3ebbeb14e053fb4daf6c1d43fd679a120e7da136d931238bb9df93cf2ea88b1112e46007c27164e36b1f8a0827d42a2950f5b58bd3eb1d643034d6c04970e00b686489fb493b8a68a87670d02e85b5097987cddb5f59286322ff9308b6de9a1c5766ea6ed47dfcbe40e42c4bc3a82d5ae872a82951d41bf062063f6f8f87ec5356055d94610ff915f930430330981af065b131bb5352e3172d59a09a4dcc84299ee5fa611f31bb61a011df04d4994c713a8774a6ac21b620c5cbeb7bfbe7e26f2478db2c105e02a194b237c8cef57867592aa3a1d0cad24c30d53be0ffc0fb50fc83e981490409b20e911e9ad3b1de67e51a4bee820dc5e136b26f9efdf38282889283f33f4d8ebdeda6c0183bbb27351f7869c3c59b05da65a152b6668226cd5bea860cb1b06de463fdaecc1853889bd2fcb98e5fe337a727524b7bcf3faa23aeb6de10223cfe128769025375e94f638c55d838bb1ff301db74f03285624064cb20142d9cafd33631038b0d0593a4fb141a48b9399 +expected_result = pass +expected_shared_secret = f063c0908deb2e61faa0c4c0f5051b2c8af7265060681df14bacb30f0228b3b3 + +comment = Official test vector 58, seed: "bd334d7b7eb14e00e68863f2e5551a095f8af10681c28353fd19b9a7e70b8bfe266840860609008a567abc66316c77ce" +private_key = ba45541ce7b3de134e6b17030710bcce09bcdba837f23566dbf1928c99cffcb674cab9c41b3151faa3078177b9126c7973e25687452da075965baa804276859b092d9d4095b5e3a27943776da65262511f62a3aa875b258c7929b502ad6cba00e3b38011c943310bb5cb24791a71bc5a2796d6197192d9594936089d88bfe976058ca16c152193838a3d7306b312f8160df15288f9063514a403acb76be298f5c92d65a90a0bcb28a4f438ea447a9c881808a18a2f5c3c1b876b3ae94ed28478fddc1e98a64fd797a0931cc4a18777e5d481d9e92c0cf2b5f5a58635b368cbc8c25dc733550774c0861795939b74e83a23757c212927805663de14a0fa00cf10f51850dbb4cdd7caabd5c09b2818cc0a09a58169e3827969518e8fc7bc8325b45656861a848347a358ef1155e5d43f7910a738a132c8892977075c9a19c1eb6399f2e7bf1dbab593a907bda509ef5b0de35a222fc951a0829a838591a0441294c35ca0b86be6fc02e1ea1b7d4004e5bcbcaa2a280ef37067d72790bb5d59587e050272ddf8b117286fe80c1bbf078e6d259a9b53bd6ff1b43a86b24adb27bbfa3546c179b8f295726ab768bc7fc8dc2a62715030d93581165f1e4a03d42374a31039d55741c9c49a1c807468cc826f0380b90c9c3f319cf1f73811d674b05c147bb2613ba56365ea04872b9244b236b0d480dd0b47b7797a23286269f97450e13791b205c8aa3310b72f3423b263d93ca320ae1ff04fe6e3bb703a6c4fc17dcfb6341aeb485576b53d1cab71d9049dcc68cf86008bdb6152994e70152f96c8ae4a0819102ba5077b26086b2dc6b04b324a31aeccb372cc18976bb9da42c8eba89640149acc544511546c5dd293c3173ef28ca92b85b86188bc6fc09e2725307a2c3802c6086f922cddc62b5989c5a6846496d2bcbf7775a4b3737ee6c6b69cc3373c96e79675cbc781146c7a78824aae4322e1a69dbf64336efc3348e414ecab04010b9f7399310253679b48af3c23961bf345b35172c1d472f9a31274c730373a29154a581631a0916a21259a46efa387b36cc9272b5284085709e46f07babfcc835959d841b3647f51147a013987dd9556111435124101e5d42ff0848bfe2169a49485c094226ec6994cb50ba9f6476fb2a39522a08145b987593f2fe67a2b2ccb036c4e6540145758c6745a389955ce9744cb8030bd85a838a5904198b318a4d265eea61c70e5a34156ba00a53f05c9be7f1ac214f6a75dc8154eeccec7ca6218b34b8e063231c450ea3a8b48f7c97d9c58fed709c350a28a34873ce76f0fc7a4237aaea0804e2d3874d726aec41c3ac8e02706da459c01736b7a5e0936b3abccbebf146350ea2a246c225ba897473817f28c8d6bbb55fe98a48de682a91770edb1bdb190a0efd677a7fc29fc62690668924cb5887f4078179aade85c0dc8e3529862b2760b187b7778a56c6b026769e339aca5f8c948801fddc4acc3bcc7ff548dd9fc12cd7a394c24a7cbe18d3d22ae3b48beb295905b217af384393705107f33b02547822b0a2cb1b57b6fc637e071c0fdba2f87f010d0c81c42db454f5c7be69ac0069c33330bc40532248fd0b90a28908f7471fbcc543fa94403818698cca518437873f144e7e261e8465b3720582cf7706d684f84e618e8834f35857d4a8bbc303134b5e235dd1b2387a81c663876c5530293f99571b97ae5a299df0c012e9662947089c9f81687722fbdc30ce50689690b30932a8a3ce7bcf6a353bf988dd310a2c347bfe6b30999e69c455b9f472b9bca0216c84265e5d9486f6a7f1f3125c16467ae41b9f85180497b255adb06a406a13a221388e14c0de8cf73b6a952c2b2501644831c3700b7c273b7a3180a7641621f33b41c0f9255efec1025fc46f658c64fc89352c54c264b97e5a91c2386cd3790605127740da2076eab4876e128f3746843205b8328cfcdc65feb92c2d973bbbfc68fd7a46db51641b7830e73589f41d413fb571c37685dff142863078acf00043395bfab3589b0cb435981b84e54318ab46e398389b8e146cab2a9666330ec4c90a652a0f036951519880a45bf5d000d4e40c6b6554cd222880d0b91b67153c43909eb2c0926354d436c2318c593f9fc214b548e17245c0c9b83174a6783508b97ac6a8d8a88ecd278e2e52c3c9138b1685dabba2bb1425075b298cb9120e790afdcb9792c88698cc156ca5a789474992f470b1d554514823e87bcae52ccc872c951b0c24b4a2b0460f488ee7768d56b07dc79b3b4cc321e5878ac0a5c3146aaeb6ca123206b0c7b5aa6e0bec5d0a903ac9415da345af199cab86ba99234c9526e6e8812f6da8001f31337b8498a8374ae527b6032a0cf3142d1d34181a5afd6aa432a588ae1f644f5a100fa593f0ed2753f441ae5677484738ff694abcec58781b06d0213579f827fb4f97b3fc343a445ba3035aee989685e7b20be6103fd39afabc334417379bd666181925ed369680b851a54c41b6546b9c04ca69742b2a814763674abc9cbcb03e96f9466cbeaec698cb5c9acf814e90887f8d15bee556b28f50b739185eb7a5a06e896ed0048bbd905e016436477a68ebbab1e172928ac8fa9a8b0a0d999b135a753a29a47d0136865b0f382572b0697d0fccadc8a77c1b591bd73b639e13f9c21b6f0969b0aba3ea807303377afe0f49421b68d0712823fc448fa9a468fa000d5964bcf9a9e7fc92dece03bf6732a36935b25023b47fc94c15795dd983bb4531e935a19778305d0e8a75c2cc770eb46b6d5759df503bac33f0669c775729c59eb94d48223d763880e8b58473683cee48e309380f7b442e6c83f0eb9bbb0b1ae805b1498471ac1149d578b454041aaa2f5cf13390f10a72df3385c6a8a1f990bb946f4c888e585069b5849882788a1be27da0725276ff9db130519050b74cff69a68534222499cc61f5845a8fc0ac5629e0cda20d3ea2f0046b78a2267fa0187f15721ec53083018772097892be85c1be99480247e6e30aac8fa2c593c630b981e57515e0f7414cfa8b606d931280a950e567c93b319fd23ca1b682fc0b960dd309f80455cabbbc71979c59a025008462c0681465d748ff2a6ae24e86c79922e2845568ceb5063fcb81b78295b93a80b221ae7e14a9a9bb7182c1acf347f2fa73784835f3375a29ed05e4bd120a119cd0fda29f76a1eb873aa88d0cb3c661ff0d5652f2b4604e2bdb1497486687f17b8ce7a096a59e0922260ae99bb7412e306cc0b25940ffddf25214ee4dd4e1aeb851878e2493c05e2bd5a30b5b99d3694543a842153dee9e035299d7e268c9492d71188f9fb24bdc2dd20c1ddca647a15231100ced48add211a5c937b8d6079d8e271af3f949edc61f70e60453aef20dea9 +ciphertext = 39c2464c42bbb75ccc9421eca048aa426c45eec971a442ce8790e14ca23260c9346c2681e7985e4e27e7ccf84f8a03b25b0604b9a64d943c2340d4818e28d774a3b4e04b6840a2cb81e542dc7e4fbd2146db158edc7250fc8ae2bebb24bf2b74c2cff7a9c5902a8963d576185576c4c6c4ced7c6f0878b67aee7ea494c34221d8907059bb989a65ac921c511c3b1f23c649811220f1cd528251a208641774228d513e80eb2ee079e9de73eb9774c2b51445235a262f166ada853256c6b53ec6ac3258059e4bc6fc23c6f0d9fadcbdd15d7f7f3a6a96743815ccb65117c06b2aa9bd134746b20337075f1eb45327942e22816cca244236514db48a46f353d5c0b0f9029ce274820fcf479c1600237028558b9acf943e8986c9f5d21af0bb5b294a421ad1a8a803ad0cd38b085dfdfe8f8f19206c027394d94b2fdf6d752b1eab11cd2ee871870d5f9a444077cd5f563faa1b1574b630704c01be830d9fa56eed3ceb9dfa8f384137ad76a461d17bb062b3b6a0325f787702c26e77cd649f3184a10ef5625402e7c7e1894071f8772331a714a4facbe583a1e1810e75c141440e1f6a903b6077783a2e2fabdb61c3b9a5deb1e7bf2c3852160aa8a366578e873d6d4a9f9b54f6a15f0fa3ca20146b608cb63a449656916b393a0633366b527b7e652eb2315e2921711125f9b2f0aaccd30474bdc2880bdd83ee40f94acabdba84810a02733fbcc1770ec56fdc8cac2accf15d6e739850b48616b7d56beacd5c0c30ee09530367675771567db0b05fe97f0e4f6244c020dcd1fe8b95560c8901cf350c9824b0ed5a4bf06ea63110d97ffeae97b0ed0fb5be0c91856cc0cbc4ee16d78d1fa3f2539570623bf53058e9b6087e252e86e0896c78e5bebb4dfe870d5d3a2d041f45346b559e81e24ff09904230d40125c17836aa20027ebf9fd40f045f9485582c124e01fcd22d05118ec6986788805cf0522e9b9d162e3b1003d7bc913d27c26a9171264f49db8463b5f69936d7abef9f28437b6caef081e1bebd7c9a39a43dc0a00ff49731b15e7f1467cc389b03a020fd94b90f5a491572d167ef6cffd5aa45b3b611fe7b9691721f4d9dd76f9d9ba3d068d8d9578f1e238742342a791e4b59f8271e09575a53f77ea871090907710c40973a8b07945109c1fbefab60add3e8ae3b783ad222db7f584b7bd60671afcca5713c0cfa96048bc3c52d62d73fb5182a70b499d54cb6286817cf85c63189590189eee2c81e05cbfdcf23dabaf7c7269a18b801597aefec507d0772f30e21c1bf49226ca74a8e0bfc334f7de59632b564a54aece295cf745784332e873ae704022af6732657c81d7037f9424920c1bf238921d6b596cc247daa20d763f61ecd3fe0cea7d79e7a6094f35606f19976e1e37ac8f81fe5c63e51129cd8a8ce602ac56d9315cc5d6c68398f01bed2e9fc79121db26e319257c40212220bab87a274b97784f932649517f462b05a423a0fdf88582dffa35f330a0c345755cda858b815b6792cb28b5e45c500f86c +expected_result = pass +expected_shared_secret = 02d2e466e170bf45d3e9d357e2f04c34cda408cf147e9ff7a6e8c715f2c88ace + +comment = Official test vector 59, seed: "a0264c58ab1f2cbcb212077fd378d340307accb31f1312137cf84e3d3135044d4eae8bd38bc3e540a0c14d46458f6179" +private_key = 2d80a415a1b29961459e396204e5b5e65540a2a9ae9cd52d867a9e20952fc7565b66151653448353697b09723b17e3b1ef375a3e260a5869b579883fd1eb3a06da5c11e493f4cc9d18381856fb2c36223e7214ad78a178b2153dcde882451776478a4e06b392ce9b9d0310a5a134b42c37312a8932151571d85cb69d9333ff8685569568a0fc4568682ec2f5506f59742601c46db34efb9665b5815574518ff677be1c0991b644b5931b112220c6eee10c37c19316156bcbf354fb661635e42f6b26b07f9552d7b1a65d51c7eb6a132034bd755674dfc14345aa72acbb85d4724b2ba14925421e570543ae904f9bc4016bc0389fb9922cb12a393a24df219290dc506e501003c0ae8cbbc685a25a91147265207f93f190b12baebe7cc7edec476553762ea45e48694ddd172b6787b7d9719e89d77563c9c2ccb77caeb23d7aa9181b82b6cba09aef1851235c7986194c8322280b4192b94262fc79ceace4b894c86814d4929bd773e6a73fb0c7c36c67391a314555674cf415292055bb39319dcaa7b07230204c068028b3ae7a7223df112032d60edd1b6b52ea1ed13b86231a1efb2969a691cef0d219835a44e907bb0cd2ce6da1442af1460f2ab882959e0862bccfcc6e3fc2bdb5eb673b218d6e9c5dc6461d8796945b614c81a68f9cf381d256bc1e63285141814077af5f54c2c6b487dd29cdb1d2ce08f09122d09632ab823cb00d86a57f8933743f347c203894d0043f5692a6e12283abfa1b98b39c6d638132ea4b94644e89a0adc35816be01a408f752b3215029d7661b554bd39abaa906af32f877cd4b28bcc217825ac897d06a4c233462fba602a81321db93279a19bf44131b86035db3c4ca911f1fa30146f9be0333650c3c24a5c85bf5e252413853defb040f8a16f4abb9e18cb3d496a69b356d8206c106864c7464a7a7ec5e998b3fd5b18df1d947e171272ec5aa1137ccbe50ae73ecc106250c0392a41a73a4861acea19257be33cef406b7eac1796f605a709a4bc06bbe40867966e830e8aac19af626a4642a8447276f09cfba6486564079e1aa38d7e179d9634e3398b743a1812f02818e979b4434a4516c2c77672600d5b7d3bb6d7e3253189c3694120dbe2519c62c80558ac1d522855682962df611febc9f33fa27a0787501a42802863b5cdcc6aa81b964cc2c9b8081b63750a6358db5566a0d3229d2989e98199855a2448f54688ed2487b816f5cd651206350fbbb5cdd995a9db37b089caa57ab0deddc9392ea1c0f99031a42c350cab7b6f54c1e4acdd0e28d7975a188502fef055feb5889bf87929b6006562626335b05edfc544f10cbd927ab3c4c9e806700349b9a0099801d5948cff3bf0977a9691a25ac880d593a36d1e5436eab078bd9a6bf25bc3d6b5bdfa02aab06ab5842c440e40d430aad9311015a8767417b233fa8cfc64914533031ab39b845a3c50ce00ba0f1a586053768ea48293044f3a831b456320600404761c7e826a0b111ae37db49b31bb3e9389bd3e354f08879906996df2036ac49b9c773af5fec5375519ae7b8c61ce475ac544d13a5b421b8a686251b6d1c64f8a353406248b0430c8a3a308b600d0c9506d6509aac9a460935645e451e4c8c85a192c91df27c17c0684baa6375b17586f8bf1ef12b91615bd08a340c58629cd45f7a392f10a04916c249af956b180bc418b8a95f66b2d0847e79d247b430812d682b1fb91879faab68f25602579bf0d895073780007b7d61940239913eb217cb16a63ea08b29656712a21a32c754953335c29e769df17125d84c32b3250ec96067b975bf524091ee4013a8b67a19a331daf38a396a765f7820a5e3606a734f5ba854d1e6b6e70cb9ee5b00d4d18d928921ebb8048e284a3a05a3df9469ec53195180ac9f869a8e8866d69019e9730fd6e672db024b6ecb4dc55729024033703b6fdb7bbeeecb2345782815843b7b7664627cad52038f98db605fd23d24080f809a276419c876aac69977998b1400395829656c97be262e053197ead738d9bc995145cb2713b5e181223e04497c8114ec5a05384aa31cb84406f93365d7059dd88db8f94a8f068fcd10be96e32a0e926dca518b3fe9286a755f29d83cf667407758141b2011fbb1764d3334f3a763a17cce33c2816ac79ec4cc4c2d842b004c352aba419be87281779300708bb20143a43413a2a55c41e36444046a3c021a4d7818dd146d1dc335c66152866597aa69a44f39a2814a4830e002672731d93b7fe5f77587b782aa279cc9807d6126392f812e83662d49db231dd3060f882d71d2a0a4c94adb3784ba1785187423d7e8a82f379eecba7e6f6a67b568698ac3a2c0b096b015100bf9acfee522a0192e49880439cc1fa9b30fb7a10544e1867b0c34da981ce6e660cebb8853545994454815178c60b04dca7073531aa2a5095f7b8578cd9889f3428a7d1c72b8fb320f304fe5d23a4291666bf7aa1afb5086532fc5aa347dc29279a4484261614f2774c81374aa453024b68d384b01565a36d98b751297477a61780e98135375af8ef68359332826da01ba6a73d5263abc659454f57d83172d0e515d3754270ad84543d995c0534788a6786927b952698abe693bfbb358e9e393151aac991c97fec8c55cc407bf027df7e2a505db531d47344552321107b651fa4e47d4b389c5825e02ca1f42839ada4d7eea2ccb24a74e34672bf1bc4f33c88c3603a3fa6ce87aa5cfe30125f99e81550c19b58a807ba8a586415c2924a6e467ca8bc85a5400f910457e8b9d74a11e2668c0f1a2a1d0389361d09900ec6671206139380ebf9390b2401555ba0a57fca36d2742f569a573096a2b442c5992c3fb65271479291f097cb94589fa15bf73cb9319d93860eacf1cd1bf7d380e03587ce3faaeb6360d79574803b5c49841b74918768efb518ca46b26929f68639eb8fa9f73e61a8b69b004cb5d9d92cf0dac9abc03171444a03409714dc1514931182701c19e242ae73b465af335c8d3588ff468346abf76604b6ef887a7eb8e8b44005bb55af328155af7928c732e7805010cf0a50ec68e29acccebc4a39e2aca10084e2543746be6c81d482f6f3c1fe0d31c6a69329d783a1bfa0b43e289a2f843c71196809ca4b82c75c59c7aa5d311350aa55e89735d9c34e6982d17c033937253d9778ca31a14a9894c5d801415056552c410484970cf2ac86b374644a37976ec4a123c0603ccc01c6c6e994514f13885bceb2f8b0a57073e0f3130daca54c038dc1085402160513337af2b6dd900b04dc3bdfcc90bdbda43cae3c4da51d69a57eb87094a03cd3a9c3e6b4ed864cc691a60f0509cc6467a3cc8aa3239d4c52ce4c95afdeff6efbfacac10d294edc0e7cf4535059bfdba +ciphertext = e7beaaf8f14f63e4b07afed36ce1aae517129415537b323347ab73d9154cebfbdf51a20e75b6625635ac552fc88f30866afc1eb1347e7963d1d634b9943db25d14e21030580d7bca1422dae24b0be423349735509ea2b756043498c41a893055f9c7b51a5783aed508a6888416b4f544019a6c0e3766024d804d8c067660161cc17196c98fc0a602b89be5b089e669efe0ad5086971c6b23883567df50c0bdf5508dfc8f62888238b34a0aa1736322838d00be507cd0476739a0903ba622f42f13478b7a127b43799324b990aee9e8bb603c3de3d679e34ef6f22a8d309bb882e61c04dbefa54004eecf710d80bb09d091ec716ad0f4392396ca1c06016fa1acc111308eef78eaf6f4ff1b87743fb7629da989c79f58b69619aa6e3333de32e8ab0df5001b12cf27318d45ba24343a6a1ba4745b3b702ca2799b4428af6360c526b67a2532ac2dc488bf386e7f83fe5dd4049f03293af0459f4879d71483f07dfab14fb1cfeaa7474b45d8a3acc91478723a87a2a16ba6fb69865abdff0e7e18606fc60613ed6f1968bd36b122f345682c2bfde19d0d0cbdbbb051651708d839593dbbe010194280394947ef157a0ee77158398b0d98f7a1f78a528175fde7891e40d7c2055dcb908862434c3875b06922cc3332f3b4acda02402b35514445c90cfaec583aac99100712b3fabbf6317cb7ab57bcfd7057e53580c978ae42be13581f547273dbd53f1c168d0acef9a38b29bc0c35fbb4c534634de64271fab4d9ec326cae654c4b6d8a8b2402e970dfc76a7d31a9649dba063ea5377741216adf8fb01d7aeafb80e8a4ccb9bc9fa2b62118b216815a6fd7c2af7c9b55e666cda56e03ee8ba78886d8b1a19ca0f844d5e2ce6f8ab530baed6057782af9b133a8a01a930c1b900ae48017283fc91f86e81ea77bb6e17c8a00d0212d2c9dc8ab39c90f7bac717c73fc6c05af9a1436241c8c8db904bd2c1d8d2b6df8e83d46220982c0debcedc62c83d547df31374fa85fcb59a4819ff45b8aafd06aac7845137c0dbe64f530c37ab877729222541303a13211c0a9b315111f836fae49fe0c2896a92f6da3786887a42b0c339e0312f6c2849f43a931b5041fe10e277465ea9f6839aee65ca2144668151172a781dc59d7a559f73249f6f0399a80049b15aac6de8b46f64100f31b41c4f0a2d99268b27512d61f69297761bbbc9c61fab51a02c83e13f6b104d89e9efc1f77c7926585cc84a19f3d17c2dbf16f8304fa942002d781be0a3e0aa3347731fd19571700f81cbfa0d7d30208611345023193885bcde430f7868f3f64fb941e8b22192f9974dc8bcf523a3f7c4f9fa73dbbbee9a5c32a1fd7f9e172f5f1d7c0379aa0987fb374018535d5e3c288e855ff53472b5232bec315437513d4905fe3851cb8b5c089da4fd4cc667321e1693a44e598d42ab61880426ff3c27d134db34a7f5f236510cc3474899657de4432ea4b878667ba9140d0257c3616d140cb9b501b0afafe5f2f91ca5b85a528fd920e2c9a53fde5310ca5 +expected_result = pass +expected_shared_secret = 6a5b0842c122ab6ee251399492b061d2ab3e40843f4dc01c12fbd5bd545c600c + +comment = Official test vector 60, seed: "99a9cdbfc674ab3ff2c64cded7d697a6e27a767434a47aff7c3fbf3c6a22d6043d27868955286a13efe3de36d22ec48e" +private_key = ca481db6775f3d276a56ca0e60ca79be147e63b6898f4b814c69a06f55111c9824cbc1c109a01a7baa259da651a1a51d60bb358432550bc1aa1cf3656e0667d726c69a39ae564bb99162c824634b8b8a706d82175bd9657ec09a308b51a3b429822667a5135fe4350a8b3ca10e8b03b6da0bbd616ceec0a08476909c6182ef0314b284cc3f43c337307facf7b617348779d7493ae0a25d415124bc5d9134182169238cea1a46a3001a8165713a3e5c16ae03a477207b99c2cc674fcbb14ca439fcc3032e4c2f1e92841d73859c76cfbe245193816d87c12bb3f12763174997760d6887a429a37f78c32cc1ac8facc587aa235821c254a2341b7c6bcf8b52c908836b67d39d63458afa9530fc2748de4a698af346f8b5405dc7b43b05953554021af73c585b6ef248c07ed23116baa18c845571823d25cbae0af57d4f6ab2473b5919cbabdd7b4cccc1be89150cfc585953389172590edd61c3885446b500495247aed57a9fb1140ceb6b29f7f9a9f524106d8cada3432c12468f9bfb9a50b920cde85654c25249350f6760293ddaa28c771963497c4c5230c05862a4391330f54cadc3b0c92b9798f5bdf8b21016725ac8f565466464c2033872684608111248fccf94c61337eb6b1a9017e342c29eb2b148936119797fdb2757bef51a9a2601a00c6f0547b1831b1ca1118cd2e1cdd601a0b491c588cb5ed88ac36ae183848b9f87264cc5b020b2e965e5b89ff74c58cd2b338177bf1350afda9a74516a5845381e5fe132b4089506e8cde6346fcc760759592345927c5c6a97045b0ad3973e806778759b35988953c80b3e7574b7caa225c744372ee3042e07cce978a3f964395d40176aab7905a4bba98250f594c5a96bac41851e09f897df0376a89516040c1f8fccb93d44ab474c56913826c9e2171ef67510b53eb31153fc028b3625aa7a353bbe79cc76d393e209115dd00b5d6c98f80101705544604351cdb87715618343bc3fa227c1e9fa1ea3989390b02c59ec9174e5165239427592a2d973774ca62dbd9410164bcfd95834c11621f7da54dc55c44c594785fb0016448f2cc39a05e01d8581658a2410caa630347c3f0f6c86f344816bd13b3a04313a730f2de9bb50659b642353f6463d2e2a1a78b722287616cdc266b01098b3544632152db3b23938d67c63e51949496e13182326d5b7d70b81d90cc6c5d84d4e5907833a7a76d3850ac4993a696c4b210dcf352a32b4c83dc9114305308129bb4ff73a91d733303bca92fc0083d95d32ca54557a6ff3c42c2bab46ff913e1d39ba3f6092e30ab47f9985c7c439448c92b245259d388e291c04de427f378011ca983b21b2ba8bea9d6eb36001ac4fa5061ee1670066f9252524848973782774cfa795a2285a2669515d4fda7093bc54439753fb6b4e6b781eeff574155b2438e074b332417d751eab1ba1475436e8fc1b670c3928a3553d2bcfd1a59c46ea2542884f91f98a38d42ecc026ebcf91258acc99a50ae1edc88b90c98b74c3961b70759f39b3c20175fa80386376cde2b66dff213151b800921ab6932b45b720932a540c79cca0eaca0a9d5bc841c3acf3c08096c0446326114f05cb09745ebb986ddb76913faa6a20c8da5745f754b89a990746ef771cf07a6d8109998936b282757f344a1b00b851eaac27a9a7fbf480d44262868542128461598b5597b10cd3a2a26e3f941a9a4719ab2033fa1181ed08e3247bdd396a834e43f5700522cb307ff4b150bba9d8b6aab47361a7947b7a04b8d923202ab1a3d6644be06bc6c1e0735d5d92821c5b8e9b9a83c343d0c456b181b6fa566b0e83602428b6cd33405a95abb623a73299c5b4550a7d6c31d6ef81473489bbe457e744b5d1e39ab74d8a051951abd01a6cff3942a102a33080327437635c1c17966834340c26654a3f38616e5eacb0e489141b14e9d1b15b7fb30927715273547999b93ea2a1ca2189f5645cc4889943f3ccd95496b71f392f78a82aa1a21d66382c37154323c0616804f50125d6b0698e5dca3e2d5658ce153bbf57e4b1908c92587b8c863ff4872e9e1963ae6c971c6ac3932bc974b9f15e5743ec069ed203c3624a022f9a7420ba951425a432b46c5e8bb666091d6f223e357ce96c55bf067b3c3f51abe70abd85a73a42233800853031313ae9971d280b3aed18489e75cdc16cbb3ebc95a8c97a768aaa6c0bb0da7943037bf2b4a523e33abf669c262941f326b11ec6bc8ef51b0666268d6d433b5190bb6996f65925a7eb0761eab6906178be9a923d1c61c0b7683cea681648c44608217d6dc86441a8f423a9d1c288b32ebcd049c15ec151e256a322ee79e2c689a23a53b8d473f4c643aedc646401761a7b75f7bd4145e837b756003bab223ff1a74feacc2e449b5dd9b5777d62ff0e20e4b395821474ab428aa2ea219bfa169b95039616598dae0b9282c69ce329b534bc7aea58e17467b1348b1ab2a031324bf835c985371b0f53877dca53570199b23bc4d70a9425a32b54749082e794e10012e9b458205e106da807c03ac3202a4350050815487626bd018706c69a6ab02fcb92621114a16cacfbea02aec424f82fb874800c61cc23bc6618ed75674a70a6c43c4068e2a7c9723a054967e4dab09f337695bbb01053a7c5dbc764a0856d2b75dd4a94a9898af8b95a62b487ec7fa9f00ab75325c9ab8248f1db65fd7661dfb0b8eecdc2a4134103380988758379d0a73b0f348b00b4b13b115e74674aaac2ba8c2a7ff440340b622b5c0bce05cb601259913c488fee540d7c058a28a0c28b856ea800d26a6a26f8bcde7d78298314cea6056b00a845321a245949a8c7c98d9f8821f1264c658a8061a3014249b7e522d586a54ad7a12ad805544247d74058bc9ac0f603a44ac5199bffb69c1570c4076b345064ec00c5ae0d6a2308947593a84ddb6133ba40577b7b245c20b5d04c5d08281ca0aa10da2a358386d2a4c048c89a2402c9150a7419c0a1aa17562fe786f00486dc82a9809dab08f7b16d9432981087b6741269424598eaa99082525d5db0deaf1b96f55b41ee209f57aceb895babc38828b712724204744834303c496b7171fc458534f46892627ae54800fe6f11d06b6af2b6b9259144f769b1f16c0586c9caf01f8491251907fd213aa6c0bce5b08f060124fb99822d964c502ac49c16ce9fb17eb0c91af559947c056af77ca687c4f675c89be35aae91584cf82202734379b56784fc5ce56e3852d89b052367d9a5d375d06ec7863e051cb44929f17a4656a2cb2c58d8d457897a1aa0d6533c524a32345eefdadc74a3c6ad7e981832797faf1068955b79f118dff93588f1481d7cab000e33fa07de8dc9627a85e76fabb4428a3376e66300cf12a0787 +ciphertext = a2e6548fa8b141a9e4657c41ef47720a20e1c548a4258cde5bab41b42b58d69e30b6f887f84c676f295266398aeec9b24a7650d710e0211ae2c76b9bdc0c6bf40e057aca0adaba8ad028c66df5ee016268a50ec7a4d5300e8fc128e6a0aa5f781a4108831554b2086f27938a26b62a3f26fa4c9315da5d43e5699e7dbf424f81f6069e3f9512952ba6958108038471aeb5f8317c3767723d1df5f982d6d7a653a561da3f0f0c4f1d8268770230ecb039a3e269ad58cf4e62732eb0a93cbca5611530371675faec5d5a22a86285b2edacb9b79ab07945f7a7d1e759234957a6bfcb47f13853a2d2062543bdee3b833b0925d9410b0fa83f9849cfe70783041a5716842d8d19d26c0e04c9c63fae13ea49197f2150c5b2e59273af8e4c45603e0f3d655e7e1d442e9e6ed3aee5fe0434104a006a3d5aee9f0af9593a9f9b8e7ed1b6b5f4c3be440d970d1b447c0343ea4982ecfc262a35c1567dddbc61439447f2b72fab241632b448e553c05d7e7ace39338a0df928c4a1a47d9230cc89f4f9a596cf5e08d5a724b85ba10132445bd8e5a91b9547bf602036ab50e31d069ba9f542ed462fcbab1915829ddfc05ce4801758d1792271bd4c68a475dac3453aab9ff0271600e80e68dec303b25384bb61febf82822b46efdbdae5a789040f0bd08714dc06fa8fb051f5a74d9a54be204a51e0fa41bc6cf8771dd70ab54e328381b581a809326331bb37783620dc2f7e9f528b7d59d587d3cef8a952f7f96a2bdfe89d33ae7714f3c53aed207c4cef6495ffd94be2673abbf7f3d3a81279b9342ba3093da3f9d280d381211955bfd5f84fab0ee430e63e4d485182e4152bcc715d1bf917987ec85888972645515ac8b2cf0d47c736aa652221c379b4c622bc1c9696faf0895d42d805b971e340291c952b931fcd85e7e56c43a120102252ad42a258791518677f37c5c6c5be67beab159d136304752daf06b210389ec4c07604bd72da410934fd08f053c91be2bdc410fd0b5e5886e0bcbae2033d8a6bfa579e24f2bff7e96e70b880331a4a7211435fdf9f78dbb758b1bc977fa22d3e09611510f84adfac85b151064796623278a0e791c1c38a6854fb344ffd786a8f9cdee2f9be606bd4bb55f57892046fd0d096e1bd577fc71b74c00bfd1c7c683f77f50b57eb93a93fc5a03acf43002dc35025d3731fc2dcadf031a2a0473e2f7530eb5246fc53f32ffbbf94494555d077fe6b01eeae398964c7a7412d5cfe03b758105bcee79d07524efb52065d94f3ebcc34357bfebb2cfacb51481f5368f33b4db2d1a032ed9283dc876c813f2787e14b55de96b6792e73697db908388499ff13a7d14f5a343b8fb37278ec1836cfccf592d47d7d4942332a6a2453af2d82df45fc0ddfc7b83de2c82b28cf7df01ec9171040c434b92f3adfe59dd5243cc80e76bbb95747a2672ea343395c79bd7154c8d6747f3a8cfc93abb97ea2191b0feb819d9649cbb4df6fd9c1835695e944e7815ca7ee52952bfef13a9027598dd893749909d49f +expected_result = pass +expected_shared_secret = 2486c0a6cf17d9635dbca1f8395784cde54dccb7df10fced92183f983478fac1 + +comment = Official test vector 61, seed: "c799d57b41f28c5c446dfc58a5ac6499c4bcf3c162afd2b09a16549826ec2a6f689e44bafc4acc82f5d6aec23f4a3993" +private_key = 90d7129b79c095b3063f53058a4baa74c262a99c822894254a050409215fe67773c26c7a6dcc739d8406a6055b388204604c7b065c0cdccc16fa880858a36d6200c6cec473bf81b245e09c6e5a55a8d8314334c23dc14fd6a9c011a2ca93753afa8609320b1d01fb9a2a4263ddeab8d5a00c40346b8f84afc7b945f521321103a5219b533f52bee42256edd1b9a526013a00ce07d44ebfd66c0bb67775d1acde4aadb7c98731931e54f5c458264894971df5d0ccd93817bb77a2e7d29ce47aba205c0971f34096280cc725a3c22a4ee24a9938cc2fcd9a670272a463c852efc04388ca8ce86a8e9f63273aa208610c2274709c55922ad371c197741af0526218e84c3bcb61355ab94d5c94dcbb4bc08986ac075e01134b4029c8c1d78f829796c1cab0ea2075bc25b797d82a8e0385ef1094d0a2b1731624308487991a7164d8a507f2390f354b4fa3a225d5a46463145ebb57b98724f1d3cabf11ad4fdc00bfa267d8f3107ceb7da37c060aa23e247c28ad0069d30681e37807117ab841f23548caa02212afbc1bc54297202fa549def55ddeb5ba4d10ace2650511366ebe9c1d61fa9d5574c86c0714aa523cdf946e1fd259148a7e2ab5c21884314e3b8082bc210b5209ccb6b95eaa2ef62203a0b707bf9c5db1a155169b07d41c0edb9709744caaa36622f189773ad7a59dc142317454d9c81d55d1c637876f104b6836a6842b87174290125505461eea77d63a8dad03c7941b69d7f66e434922e13a8182fcc35e51c9ce81978e35818504cb32e4a6dfc777227a5484409a38b2a1e2243110e84d024b1fe0e0bb36d4aac0622152599fefa177b294bece391d47553983e420de5462c72ab588b2934680a399ac40ef35a5e8819458e0a7bed1afbb29a446ecbcd4e45a50176ee201526e314cde085afda30226039ceb41a14d87256bf566db30ac77acb80b29b1f9d602e919707c96863304372a353771e1ce994241a12369fbf42bcb4315592724cd5085a589b1b4ca46dc49cd65a1247178151e455741c8b5d7c9cafcb75bf27a5b4ed05b22e932b1e3bfb0c93248400e5485486e0c39fd5ccec680c78e6137be96823deca37c6306d31c9142fc03ec540ac0120ebbe9bd5237583e1972d0c4676708ad35b559fb89bd872428a3e0504350451dd65f58bcb292c0ba437394dae55e6df13a8f41827939016a081935d1788c4807a53a011b89528fb60f386632e725b163e83e105324c3914f26f389dac199a926a25a02624d9a530bf0afafa4c5ffe6a5ef9422e422019ff337d1bc2fe16a07d9a046d183137d477dda378e17a95fc7e02ecddc0d551724a4f36ee7648c9aa771bd15ae29b7259abb63d0983917156ede6557be445735ec539b2199f9816c562842627cc83bcaa659075f5179abdd1a7056d27f7dd96a6813a940a9321cfb1946e95c16836ef028106bc26a3ee450d8e569eeb23b70722bcbf828821648b1668e6e47869afb16c0e4b827c4cec3c4c9948a6c7f874968dc80160a811cd06d58a885d033210341a6f7907f53a82c98468f6bdb7cc7a60107973db0e70f9a387673234d6665019676215ee4597c65a13a2636cee74266f373a4e48bb1db019bf44ebfb0a5db55c6cec7b63c0721aad84d2b6551fa941167c78a0c105ed9e5300a24bb2c8b2265251a38ec2b9d05a0635b2849a81a2a7c6f2660504d5602fd2763046820ca168d70b76e35b9641ce46a44f2a394f496dc32353c1a84302381e8d74ce4294a4a260a5b0704797567ae831d7c4410593cb7b9ab74d2042c84805c3aea6ebd193a927c8189082333b3a5e96857e3970be7daca4c884d7bb0b3b9c250cb4135d0b8c90ae320dcb3c423e8a6de79ad594240ae7aa036e320ad8807ccb7a1bc80c704c9532960864a9528347636b4123337db7e2de37823c6ae084418fdd05ff7e904211924fe5a370537762dfa012a2153af96a46987776d245fdcb9434d66aa10524a3ca74e494c9de919c8e23c3ff77c58cbd1cbaf5b8a69803a32e23959b2a7d9f808689906a0985aeff5a8464a2af64ba053a3c18d89b2cae3814cd712484288abf7655063c403f635d7a2afb9d804e2e89677131bbbf7009c981548036726d25f05f004d605a24b7c2bccc4294f065c013c8ecb242d25611b5c82bcabeb9e578758f2f3ad3f087bb6813db1f3990c867a2e679f47f074fd012e87b3b6f51cb1707b9287d99fdbf43c8e58940109c376789e16c4a30b6bc34c870364192c555b81af58962ae771df477ff421a9b46c6e64bacd1a8a6d00da4d9507212c910ed2c62d199c7e330a11982c514f27aac092a5216b13ad54beebaa4049065a68d8ce9b1c969ea01599a71d633197bc33c2f6f958f72ccf14c7c09d973770f170f1f7bb9e458a00936d8677717f4a17655bc7a7ec56119779f7aa391d2356ae3a97d7ca04971cc2515154e148568c176a659a8decbb2c5c449ccd914d3cb7431cb3a0a400a8c7b59b1cc770c5bb5b64e0932c61783c9979d6cbac042216a0cc5800ea160c8c8556e0721d610fce13992396c382e93bad1514d780cee046525c443fae063c5882a01e5a73658a30864b1d6344a6cc46729bab7810c46f5b480d309a263e30461769a55a2965ba6ba0b44054f211b98c6c2355150acab81881e5ac1e561a4bc4b39f9902d1027e56155f5d71b7ca67415185319ba769f88345611ca2c20b233dcaca9ddba42edb204576bd028a79bfca57c9dbb0a54b933c970de35032b9b51d00c9922abb5106897cb896065fca846aa486d9c27f5b616e99ea0ada711729b75d86669645b9a223959b3c1c2f3ab6536d74295473c4c055aef8c2cd2d321e9e73cbb872698b3a60667bc768014332083139d08c321157cff1481f259ed56a7a3ff1717bb64fc951297c709a4ae3c05fe3910d6507ac947f944b970070570fdc9843a8a5ba564141f80f1654766f93048be6297a1cb76c105a7ba3ada06a42ed1ab3c17542201712f11824766c07bf14685ab0a9f69a15ad6574e59709d2411b37b509de3b7fe5e8b0ac65922df23e680c33141418f9551660467accc0c794a67cc530a5b130b4cf1c28747601d26983764acbddd30e42eb96125956a5870142574419977209a12e09ab3c5e8a22c1c5252527c90987a816b8830a757ec44b12e2e2bcbf19097d02b19ae47cc7bc99189370a1aacef36415ded82fa7a63be809b515f79f06612dabca5768201c59e2c92eba6d13b72c31648ee1d504ec3e89c8d796e77fa9a772499aec973b63e864ce36a29de99ecec9695d12112ce2f60f27da7f318eb94a74b437f8e0bc9513e9bcc38dad99c174c1d75e0145f1e2f8d320ac3cb0c52efdc753282f092bc39baf4a18783a48ea031a191865eb78 +ciphertext = 459624a950aff4a380db1ec8f9216591e74b0bfb9448aaae1aaea886c781c414fcc95ddae21c478a1f1692ae703b8b80008661919cb910ca02b76b9538fc9dabc00140c0d790a88245d3a3e70823da64629066e039361442e60d25defc22c16e33f910c3ebec5d045bc9dd1a763fd42a9ca61037cbbccd76c64a494c0e2b58cc2a4e8c1210001cf0da6a2595c30b36b3cbde8d08dc0de26377f0a428a35ca414cdcce0f7e3d4b45f0a32b167587521e57c1e677a23ebb39753f1fbdce24a3a8316d2044165d2aebf018dc0e4fa4e89c75477ee02ba8afee69df1720cbf5db1d6658b7fe8fa0c5672bdc7af5fc691cc184fa80c9a4000b37b7bf8ab63ac072309374277e8b01a08b6e717a4ed0c0357487cd7aaa702bc593b6669e63ff8215e684049ee8466654cc978f81514740b20038adebf7cabf9b21dce2405726d7ed474f246867edc20a729434fdfcf2402675d4622230ae94fca7ebb4a273380d53416d587fae57fbb7907068f04ef35d7205806ffbb3ccca0ae38945966b7303ab930dedad2d02a4cadbff6c991c6af14dce43b59c55614d970568bb8137b600401299d2f7bfcb7ecf7b11ffb26a9d0c3b753c7c58803447edf17acf17e77d1977aa8357acc332662bbd3f4a1396091d74203b1f06c1993df3e34da20762a0bf8bbc1d0732d8d011d0f09264ebd1d1977bacf77c4fa030a4d346f152e0f1a132ca1b4f996b548e93104ad66593d8fde6d3c6eace63e1d0b53372f6e0bacf148b0f4bac5fe90e7467dcf62682cb70cd550257445758a6e159e092ed1952bf66e1be065e541e32954a08f8e0eca909ebbe54d4080b1f2e482952d912a32592aa089c82d7621d43ef59640a910f57ece74e5ee0af8a6eb59836c266360ef293339b97c194904bfe37b3462192247132a2407e27fee0639b4e3ce3e62208d0fa299d9113e3430d52eb295b170320511d110f83c05deec70b3e6fd864fb15912ec7e5d358ef277019719bfda9eb01e80b98d98af154aa22604988fc246fc4e1a1a7cf7cff87825ac183f5333391f32049ca0b09d57e1a2bc983c091bf55e048db026372f7cf673bcfd5e88d36fe0faefa7326a057caade1b50cad49a2413f9718f1a01aea81de054c0000dbe33e21f9081202f5c5e824bf240561c2f4f50763cc9718e66746da4443604148be687dedc2075fbb3814d7e0a2d79eb6695e7dcdd45ad9afeeecf58590ea21b1f78e273289259afbc7f97ecd517bbc8f33dd95bd9ba0da7b8e72d8ab1f336ee0dbb6b0e43612f87d558ae2315c91abed8f8c38c2d6b00df17206ba9752a8e958da506595f2c65a53e767d0453da2e70dd14c3beefbcd32fac60fafb379b67ea1d69c0febdac6558bec1f7b190028eeddb618e0aa70f4c65169533eda0a5f3a2e35cddec4d11508685278ba688b2e914ff23997c4d4b4d36e15113fd7bcd644cf3b4995799206e0d2f87f2fe1566b7e7ae721c49b871a30d16ac0cbccdf1747333745a91807ae6dc9b272558fe1eceba01bf5b68dc54d73dafb5 +expected_result = pass +expected_shared_secret = 85690ee044e4d8e0540ff984775b59bb5134383c4e229e79e37d7d77632fadaa + +comment = Official test vector 62, seed: "f7ae036a0176a9de9a036a542dd2840033277c44ae936d10b768566216de9d4395cd42b116873b69d9804ba6ccbc05d5" +private_key = 0246c2025246911b525e6c3421584bfdbc83d73ab936e76a26236a85215c78db7ddd010c2e038e3dda69b5aa2e9f4997d8589bdbf918be1c046cd518e6958ae6925146009d185b53456b5e16d59257f20cd0f6677535510d02602d5ba5b61c440fa07fabb1b5fbb38437e90522665776892ef205a41a1a2083902648844dc9d65e633266af871481f036a2888d3fb9901355397f37875a4494777c781ec40478d09a820204a4115701d25a74b4bd91676ea6391fa160617c80cd05b0a80e040cdf22b29978ca55282f2c40316a35433dcc8ff7cccf4280c0b11c548b5cc08fa45bd0760ce03a02f25689d0f057fae44cb1574c42e760cb331c2ce4be16823dbb2870592ba844f30dc407298590a088425e023b856e106437c6074547260a856e648cba07e51a23e70d7cc65656b4692ec24277f04905c4aeeaaacd36341c705b504cfaba73201c2745ab06b056f1768447981e0d676ec904698edb230f369190d8c1dadaa5ca59001ee8a68c302f04298dc5700c56b2b577d89cd9a585b239089847cd3e96ca80d928867b27f3657987724ff9031649c246cbcb4673f6cb8544150c9975a13938c89a68cd0b6de5237fc8d2b7a6bb94e0c0856f00b821636801e9ac84f35276065ee4108bc1d755c1c428566a1ca3762d050458dbc7093567a4465453ab8656272a3c03b4a3c55929271437724471d5d4926109c9792ba49d117813948106d27c33069eb3c40aa8370b79e23f35934ac28666fe72b43f722151f3c26c96cc3b6a40d9e1876e55970f252811070fefc00d70a009e4871f136a08515ab239c33e2de638c4260d0c89cfe30b8f8e5927f2c59fea3947ffd0bd636b10876c3c387c00e15469b42b80bfeb8681dc7715c2b248ca6fed92a9399b72d1023f9507229593bd9bd936a0f6abba09bc3367782370b60d9cbd0e8b3d5744101c8ca97eab822fa4cc399b5be3195cb1e3c9260030af60bbe3295c4de898c502543589142cf48dbc7505ec9a9d93cb6dd4c9678c1cc0a082c5631a255142603dcc01fc07c27d628d89f09b473816b5d5171c18a3f9737bd6d3420d4bccbd3a5624a2686e54062ce4696e061c83bc2586f1a618639e51e63bc6c64825eb50d4f88334b29145bacc49e28dd564b7a578217fac230ad00a44f3acbf8753aa572d66e1ab9198cecdf9bc722455bd267faf98424eba4031c3bbec8298a9388cabc6b3beec7a7fbb1c814811117a9d550407c9e6099cea65ece641f69454b6a0ca9bf86a3dd472f7c0a7703c6a5b25464c0b091b29258de673220857878434ea14cf50054fb2e63547e9be15107beb7a78cd5c00cbb1462a0347e72b51a15ccb5c333894aba511295b37c97c7f4c2eb6d97219559b40a67310f457108015ac1b8e3ae15acf85689c4058ec8a0bb18b75615011f2701bde8ba70986b39d3368e1f978675a49fbe8509f1239a1c88f1df4adf0ac8b68a87e2a403373fb808a7b1192371c7e68b80854b0e4335739090b953a2b67999f9878a32415b78c22289eeaaefe3298fd38abeb6abcf5a55bca388004e46375a729cc45926a7c3e3bc8b4e2a2b196aabe5651b642c1cb50f666a1bb6da4d1cce8c6344356a68de044214453d03b5c7a2912329482f244226ae33507ba8fc8366736352380b346ca39a936190f09576c5188c5e82315e3532f34d41f1b50bccc42c1138802ccd5b50a7846ffa7bcadd91fe757ab7fe30e873ba233e13b21d25461030593433f4f66482d94b916aa8d1b4b8d6786926e9364cb579f52236218f199c3925142b53500291a3164516fabb941f98f0daaa1e2d619c9622d649a0408ac02d5ccb9b787c1f9b196da37020e362ecdbab03cccb63b659c6347104074b1f8254499c8452364726b1294669a3a24ac8b487752175b30cba68860184d5f78b845b107beba80f8750475d059dad57caf827878b926facbc00b54388f24b7b431347e334ffa046c45e234124c958cf66023dca620e1400cd5c08b89554a474d7d04086e5cbd0d051c03c4580d3442a575255c833026bc19dd301a70367fed300ef27779d2a49819a370519c7fc404acb3fa441a931c67a3033799519c883bea134242f35f92393dc134bce15713ddb33e252b991af10c7134a8acd09408c8cb2ada36bbc25224e8867a4138ed9b4daf403a477321614b3ee5c7bc2281441936b0b05513c1525421871d007346bcf52d6e09b756b4529bb5480aa3165e617cef41720167707f35a4415975a62114c7918ad83bbd8905a283d14d22b2400cb29fb1e102562cbee5a9c10929229f8c60a4b153c430a361812e75b244e4c3954a945459f735d45572e83b505030c13867c720567fd681c539d7094f5558dc5a86da79b38049b0a45a1259713af2c1640ee0279bb7191f0c0ec59c2f91184ca70a2e8b7576ce493e32f2c549c4bad6c925039c4c57114075281ac7631ff4d94ee0723c3400cb2d73c184489aa5b440ad470cde548f2f70903d08b9b4cb6db68a5d4fbb049a5a9727f50f9e6c59295c62bed7182ca96d6093578dd014f7eb0b121ac6faf917fa9b47f6650c6c7336d8848dedb92a0f70971e456e9ae625cfe266b1000c4ea6252de1ce20c014bc161fef405ff327cddda37be4919c2a0c097d6995b0eb743ff66a548307cee1080a13841ed12333e62eff081514a5915022c550c6021a27889bb0421df3a709ab2f9f3b0c0f6019fa8810ce3a9c37f53cd651acb4e5bc1d8b231f373b7a4ca6723a9710681016943f29697b09f6abfc1c60e8fc4c201a9ab05c260d2452c83b88423b904df74f425a9b4d116de0d059d96779d61017c2e984c2bccd6159c82dfa5ae7bc63e59304b1105ca054a71d753e7e583742e715bfecc80e51245ff53c16854ae0ab41c581402221cc8834a5f4556a84c19f6172c7c80c759299a42c71bd67040a29185a45c14b91b56a4af9178e0bbb0c4c197549b5c9765a8874686c63445dea7a85d43ac4d0b979b4ca13a80bf8db634a163fe3f4327210a7a128716b9805bc1920dd322b15c74fc722a126069abb8c95bd090f84497d832a1ab72358d4193b6542bfd627a139374404dc1998416f46054d1b4b538e778d6d0507fbf5571bd01ce56362164793e58355366495aec80eea35463c4044b202451b3604d6ab96acc3617acc1015379564d6a5ff1a6ae4d802712a94422a99d90988206776055545172b0282b5162b479d748a2e9d22356af11daf2629036665eed0642044b76775cfd9417ddacfdcb371aaef7abb3c2cfdca88891dbf808a90028d4f12c57e4985f7d4bf608793939ecba27dff5889d4d921c583999a57e20a48085ac549573e6abf393308641a9a4647f230201e1389624a296b55192a9819fcb19ab77c25f95445 +ciphertext = da88cdf0e629ad2c8000929d89554053e692132ed02ecf7f3947121c3da49e64e1fbf87f48d8a99818864eab9fe3b715165503b6adfd94b6587c65864d0ffa31a1e2bdedc66d2ba36ecc03ee41520af6302c4150a1ea1bc153edbf1a8736f3d57b22e309118019a6262138f311055e9b3750cdab2b9fe95b8be05934a61eca00f64aa6ecebe7ae12bcc6da07b91001fbc1d3161ef92592d0fa8a86d2a5241991174ba94a054f1c975b16bf36d4550ccced94a96f52433846252043839a01678167bea5a5f613eb41b4b33707999e4380d10097d089a44a721eb888528310188f6d9e642dd7677aa1e19fc710c94f645fcd2ce7514d69ef2e4650c6df9034475f6eada37bb02a268150af7b5181db8b5ab7242d601e4bb2ffd9d508d2988d4e13b5ab0e85094aaf296c8ea577d75de39a08e2bca7e3bbf132d886a2965b3476f04541e47e883e659a8bfe1f4c16881c70425528c5142a389d0a3f96cff2503c77a40d5ed881597fe8e5b9ee4d3db92cbf20e97aecc5a984f4d14445a33c31983353f9cfac3912150c7c6a48a8237f3ddccfc80fac8c8d73e4e527012170b3f485faaf8dbf3ce42f152b16bcdcc40418ec45e78beb00cfa936f31e16626278ba94e8fc0589abd8619aa057880672509a4344500c88f05210705220c0ffc327e73a9751a2e03606d0400d6f3c5bf4405ff0be6dcd9629acc2817b7bd28ffec361892bbcffd220fc3d9813e73aebf0929b814953b3d02a5d5000ac52e3a81cddc5f64e2666d4c86af23b1f45efc634f18f512ceddd5cd52fbcc04805306a794a61b0a502a6eac8e069e3aedf5039fb6ee62876795e874d6cc7cbaac232c73806644b49e10e5d69b5493e3ee647e7f92467cd255da303031270f8366c6e39a91143f92b9a803fbdc42e83251761eef40928e447d43e75abbcd57b97c207cc35a66a64c81e81a6ff33aa58e5e6dc047912171b53e34bb3ada16e57c2d7aae76c430f764b672f60e7691ba73fc1c6eaa57c2d06609ae2a6ed311c6479c9d3c8c12c4be9ae17ea146850f5676464a63d3c688c485e1caaafb515bb7ed4ed7f3d47455002eeb53c6282ff810ad5cb2bec2c5e52a6c6e5e8227c4ac72a882c45c9b2b90262111e58280f0cc6de4c86c667bbac46151d06966641e3cc67c86d06825c3c53bfb03a2505bc5731d0909d384ded3669197a2668c9d9c9baebcffe8a489dd5b6c42a3e2b65b236a9bf62db7342b0dbe07a04e2b8a53e7d4cbb520e1a56d25f427d2bf61a1cfbfe72e6c09a286bda114642237d6416053fc077f0824f439ace9a25433f57896157298f449cab005f4ce8395a904a3590f8940212a9c39c02ba42fc6dae73451e48605f2431d463c2c26f6050a3412c7d5b16a318286f8fd001285b28934f956138d7ebdaea7704451dea0641687eb19d87b96dec22f8a2ba755a62435a51f9246777923a9430310f529219ba8ba0d948c6c6dd13d2c0ea6f8c921ad9a3b4d2c9829aa9571279984c2bda818a338f3af9ab411c29b17fc4caba1ad3 +expected_result = pass +expected_shared_secret = d179d901a0570bd23aa52570c5c233a2240d4724e81d98c9ceedb74187eb75a6 + +comment = Official test vector 63, seed: "d995d38f934b6e1a7ca77c9522e3d037676cc939b0c8bd4b84394b3dc91a791f09d2d97199258c9943da955e7f7b26fc" +private_key = 34c91f6ec981b1830501d8969f8847b2c6bd5d5c43dfa044c43b551e610d5675bb7e7c9e393b411e69575301bf4ef4c7fd0b4b59e213905a254eb5540aca856c370dd28899541b725091c23907c04390ad32a56385075f42a7545672544fe177b74c7ed99507e4d95def7c4a9f84c9687b9bc318a23eb452fb7635d5201165a47391d21a7ca732fe9b3455c44ee4e54fc3a6518d51402cd5a2d49429b9c8815cd4b1a22c59ed368ed6c7a9df83b958cc83c4654c5cd040245543431c0d2c9091376611cfdc2eb9181b21c8417e3931aa2b1141c1051cb82aca4bbbe6dabda3356bbf4962c3f883d0578580477ac56353ac7524f3855de2b00967b7bee0668112d51ccbc139fa73374df2685a3cc06838b150f92a64c17772053de2b05cc4d51832b8a2b8428436d99e1f2484b127ce0d861dc8a11ab0b0019e0b3439733b36a7a600f4638d820ba5624b445349a86465e1b25de787207dda0b629cb472d415a42a8ba191b76b5829d4d987a2b0c235521c187a0baddb603d755eb37396cdd57ff76276ccca997b00cd481587cb8728830021dcbb8478a267b744a5bfd08b4acb2c1e726121996e55b60d40f6975637831c392845d6823d4b9092151149992794f4ab29d4164a44239f07c365a87ed9786af7a57ac0bc0d491018007b6bf7705a21b082d1e040a4f4c25e329ef9a8518956044e7683af94728487a4f95305d4e15aad45c040f1cf9c442c519b2aa47a4dfc29063243c21f8b838171701b4b73516944efc4b61fb5bca63c3ed12a123f55b832e6c312e8bc48f145d62953f5901f7530068f2c9c9f51ca8fcb342852936d414fddc2c04f551c827071f99c7c24c991f9c97e10e051694c86789a9442d79092b6547d67af70d8c8b074cdbf854718a882daaca3b8eaad0bb1c2d3e859d3eb03c0a23b290518ef88ce1bb02fe71399ef71b380ec1aec4c7c6bf3830c1b15f7718d0e471d10234393d94fbd3305abd09cdf070a0abc09d7497d2f9b939794b923eb3f28b40904a53a05216a526132d9f3cc64606b40f26434142645d79481a8316e8cb0a9321a4c530a0ad139ed5953168a4ac864c726874e1366ab09a249f251ce5b1a7f5ca60ad66375bfdbcfa3d7ad23a13649c03327d409fda64581cb00a696557945c58e96c1c889be648c4885958adea79ab212a0bb15506bf5635e437ecee47b60032b4273b8c96806639c87031b6e23b71996b4576626124281ae4ca0a8fc081e1c91667967b25f76c4f72624cb29bd0a865fd67a4dbf14acc7a09871bc7adeaab37b298f12b60b6372b741681627e4c8346c0d34392716ec173b1b711b1c0a1d010dca486bd5167223658a5c55bcd0739dcfe30dfcf9bd8aa45b3ca0b5a90243547767a1843e4c87922031819ef9249800c6db8b0270f9cb8f2624adf4199741870b0630e1bb1b325768c79984d5e33283a991bb3c98b6bb8be0ebaac47c4310c51eb565baba36be54f6a3151a104911c38ef78e61f1654ef35b2c836c2321a52fac710d6b03811444de5b8403569c8ce0444ef615dad54ae5649e68ab437c00a2c9ea9b18f59346d8b2a5c6582d763730bbc7f24a7ee7c23607c0683a2826fbb4bad4a58ff6e3bb3122bc8e892a62437ce84445f2e82b495c9730fab393dc6f3b36bb2a63759a79ae27b162250076a608522440ac1e04630ba766b4c256341c6ac967b36e6934dc58cda15621827b9558076361192e89708ed88a71826a20e8ec948b9c7915566c70a7c15a72c36ecc7a3cc644eae696022657c53500a0f13a8ae50fdfa432d8d2530999275e5b9c1d341fb34b8a5a7421b7d290cbc3218486b555c92572bac8f1085f058a87fd48796824844553261ca11f06978a03f3a8d68657c22064af83166280af52270e004731d20b18982283e51ca3db7a2679da6fb0aaba1e75a2d283add699a797e1be93502c6823007ba5b9760a338768615b671baedc6a6a6937b9e1c35575776a4a791fec7751079c6683ba29ea28bad199175b9629c44bbf219cd88a19f1089aa551946e58032a9c9dfd29bc4ca3b654f494990cc02bbb8e1280b54ba3920ef98903f171c27a5c0fb679c8e84774f22136e89915a534d973733410a96280a3207407235ca0d81a636a35b9dd628dee9a64a12918d0dc6d4c600989168a163730fab8c78e61a57970c16c813b791a0ee9f625c438ccd1a9429a93062c4ab38da5890188829ad116a6f1564a43a2e4f3bba3712207b65e701995c99b29d691c86bd9844af2471eb5cecd934f764629dc25839c809432e395fd8582cda980359246eef0637b9771fa5853099007f173c8598164da69c8e67a910a50b9940b213547815e0589326b02ff21b89bc4200219652dea6ccd59883e29127e2abe3787738b124d839a67e02195d64989520737e3aa99c6822f2c32249256c45455cbd931a5a1fb27cd56a21e22b51c03217aa387e151631cfa445b2b77ec90ae01828601961ada8a8e6192104f02ba5064c4efc27cf2dc3353fc98f34bb947b21ec5235fba6caffb6bc6b1c09a783ab8ef14c4921a28a3896bac07ae8ba98c117b3624e01ed0496a8c649a38a33fb679bb535a7d1960028ca6c8ba825178e74f0e50b5d74c2a9119b595b863d0375a3da173c63a03d8c60a8d613cc08064588890e3894a9bf4580704038841526ab84e27cabc8fa4cad6dbbde9b53017f100778478b86138fbd6be713a7e695358538bc4cb5a4fff531bff178bb16ace5a295ca0340985f34267a3a931998b29a36935d3b13af0631cd37777689ca0b43b9208afbab88ef886a8672b331224c66c6086b8b15a8eb86107fc0ae260bf08f970cdec98ece9a197751b6996258ffb6dce05306380770dc63498e9b5d65acac5a179d8946b27630525b39c3755c070a120c9f468ab3aa8b1a48848081b888baaa1156bd600733be887abf962c46107c432c34edca8e549977d9a6f7eb77eb9974bb353896e8261502820f599257cd9c2852328b0fbc5c2b98658d67e4a636575a46e074a1efda2cfa50a0594b0a421661d81d95a9ae0ca1c037532ba7eead089961c29765c443d428bf20767d1f08615e85d0c08b0fa5076e297143249283c13486f61a4d9d39780624055d6043120a510d4a686f9b490c74f2da782ab42157a00991be019e093a509c0c00b7c1e6ab611dfc4373c640a2f488e7632be1289666206cba2b096a479b2140c6aa301bc448b13b6839447c4675aa1be46eb6ecfcb4ddf2569b2d79abe93fceaff0f0ff88688c870d19759a41d3d361a0cec73cc908f52bad865f03add3941d22c80d50659f501f8cca1b448d84462ccb93d5f065889484bc0eac9d531a532770837a854b4f5531f6e0c8d6c10183b30d3435498c2dd142951 +ciphertext = 3a289f96c11468b574dc8fba9ebc8e41d2cf47c1e08dd6cc9fad7519975af392d0f0608ff43bed72346208e0de7a19b1b5c6de3ff343cd5647afdc94a8d079b12207802c5b35fe1152c55cb37d5457835251f7d101d540c7fdf80e220bcda0305d8ab89f1105436071ef5c588addb1753756710e7ce507768236bc4637ad18749522ff2d5c238980ce4ff37d820ca43330e680d8cbf149abe46c8c856642191c8393e2471e3078f2860e57bdd8fbd5cc1c696e145f57a179a5c85393e05604a76c70342c2f708ebbf150765d7f018101a0b13c808886974202ffa8fba17e7579ed9a7ff1a97f323d8b3e00a00e19803d2132fe804248b86a13f4615de551a0dc65e2f2704b24c9b43c7efccb42b5ad4159a4e5b74c87f7df156874cbe4fbd91c2048299b27181aae40bdabf64657427570badae13bed38aefbe8d7f130ab272562bc3724a1ee05c32004b3e446cdf04a31e7d1628a6fc3c0ca547d7addbf959ce5038f5f6ea655df4d4d2ff45e124c5395833041582498fbdac6fcd27624e015f652d16cf7d8938abec77ba550807c598dc507105e855ebc717c88082481b92f1687bdb9c7e486774693a9140549dee7b387f28227a83968cc61715f68122e5e46b847056586fdc5037645f44d9654fe0aec4b4132d15056a2afcae3b31f0a0deef2964a7d039f61bd1920fb47facd8718d6ccc429704b8dd2c830d3c168405e9dd90b7a7e1fedf9c5ea36126ace5621404c6806e5a95b1c6495a3885c6c6d62ba4c5122303ee901c69c14f9383e51f8b565b56c1a3d8b54f048dc01a0193ca5af367e4fb92c47a019551becffcd2568ddc7d57b66b3cd5449cf3841c66d901e2c9cd6a9e93831c7b9e78cc26673fe3a7a54c85d3323029e5e9a3bec39edf9d4c00e5e1d939219842255c35265066c534bff32f32887a3a277e96525880bd4bdfa97e26083b4342c4f6882a074a14acfc1985732f732f96072f20e95328d4f52be6f3ba7d3e3972d6bf5d584ff7c5385af1b749af453356cfd6984591269c5014f717fc992b6ce5ff945ebc98e6df117d4e237112dedc2d8f1c88adc466ee74f612564ee5d49e94cf33470f735c3dae296e8fc1642c08308e285f20729c39256cbd63b664a375eec8a04e6e9cbdae34d5f27350d3313727c7b2f2612657865db4364551d315d8849a96e8525ce6e100ba496f6782e11b5d42c6da5f91cc4bce2c77c65c029de1f67f6977217d9256b70f47c4712260a8102a110a94bb3b7e26dade7b0b9cd0c158bc95262f54087eaf92eca527ae4cc835d443ae7c58daa2eddf7680637e42da68564168840d87bdfd5797ba90967299dc367ed48cd1ab7f1a0f094bd2915a9508ff2db189ab6aa2f7d813a9e2eb219620c8a1487993417319254038037c080051a98da562a0176436990937e64d458be7f34ed366aa942d169e486b163cb8153924d750f1c152759f36672de638b3f3afc7e569ec52165887acf342123a9d88d6c795ebdf6f5cafafa6c2a6e03249c33a74e2d12eaa9a63a44 +expected_result = pass +expected_shared_secret = 6d574af7fcb241fed8763b2d0a352870baf85ef686e90eea31f8500c35945ef7 + +comment = Official test vector 64, seed: "5929f02a271725cb40200de32d9d03d8bea53b53ac83186c42c7f565ccb1ca508305d470850cf86e9b2c61a5b8ca1c93" +private_key = ab4545850434076342eae8409fe0590c34955e860267305fca05c347bb3e53bc714e3134a6e9b338674a9aabb02f021d1a09a190757f03d573c27687f7e35f2d77294d10cded732218395b344523f1b704b27689dcc286b5c98217f239c159ae5d655436f00517a50c6dc6b7f4f111e7f37a0f319bf6acc7b0e3345c9367b2a2b8d9d644936220c0a817fbb38ceb3469cd55c661e1c58d06807504443448c4e53204dc59c60a5153494478eb4056c9a85967a42ebbc287afda51fdd6b84b285523d41d80a56f7a68a168a4527d902311b18d5e381cfdd578bb7924fe687d3aea5607906815181171a727e4dbce1b678762a8b03c2a2bff1635ca85332ae90f14b880c5ec4e5389b7816ab885c44a8d83c5ef0c4c754c7b6e673d984938d3ca4eb0f5b83b90bec27172ac85154ef27b91623841e188d76b040f958c38c8a112c05b54103e55a159de0954f2477e798a573339508b7c2ac3872a623429777ba3179060135c083e2198d1e0aa01967c39c27372a1a36a92bac3bb13ee3c94b1f0391e2702c50253dd497f16f39bdcb9c68ccaab6312084884b113e70f38555422767f4e613b2e87affc01395fca37df0a1aef74263c1001392732d9d1047cc7c6fb910ae6136c33094526876a113514f2918909532a759617dbe2c97e72176490995dc82b663655df65324b1996a42150be41b2a1c90f03b2a6f04174da1b1cc7fbb024c3c972b9714300c683c28a90f48b01c28607922c3ed25601a609673481b365544b7c36a9550ef20c37005b0e395a268e90ce1a5271e1421b46303b80cbcc81e2894d7569e82c2f5d8c6996c766bc505976628cadd84a3f468c67c209117c8254bbaa1ba584dc2661728a69e959949ed6c9f1b42f01ec8e55614aeb7168cfbb5e16504eb9f585c7789c48e59c17b5975c444bd6e32a6654bce298a605043bd367400c14b1d8e1a592a034543c04a44c85711aa66c807fb07378fb525600c19d9a4a9a8c920ba7db0b1d912a45f2b6d518b469e9121d25cf40499196376d3d92827e1b96ae255aff288037793c7db07e1d15533c07162aacae3255c0cc368e2fba3fef09540952910eac0fb2f3ae376aa666fc97a3e122570ccf797c79ec575835e0be6e808b3cb1b72d8241c3679bf15020b6a63be65b95a2c9147eb98c6553c71c550e37603e6b73c877c94e7b603a22eca456c1409d5aa049673d0ea17c123b1835692253fcb589186baa498f39481c3d0640a4d34931033b30f26ebed6ca9c49ba6fb219d6dc8461937284235a6417cc9c0ca0ad385b04b01c81d5a7b97a34977250e3679ac55c3d76d83b1f7b99dba039dc179147223b5d6c11fc9109dc062a1e4b7c88c710c449320949bb4405b28ea2c04d48c58aabb46edaa58e442f3ab6c9810b6d702855f7ca91af71b0e574bac1040dbe864ddaa76827874839414cf3418d1702c6f368a10714cb25e208c8a5779f639837a07e348841a11714f41399da175c49678307d3634d6b9921880fd43ccb8d7842e5f34ce44a4923e7ce6b671c7a989aa748604d147ce7ac25a1533e80ab321b7aacb8d523a3a6298beb0cfda435d77714993173d080827fb07b7855769eba987696afdf58231f361d61101724795296a2499158c8e1b50e4c900d65c8ae65503932dca40e058e8192cec2a997cf12c8a1227567b12a1b21bb31d3198c85c4878c6ea1967668e3952d04b4123cbb9cd8c77f3a7397a9133d99654e6c56e7465d9b98bdbd624c12e36c62b60b6a32c9086a8eeb9b8919706f4573a33c393f74bb51d5609231f1707e152f23f36f6c6830ef28253c8cb81ec5c27adb02fbda5302212826f0b88aa4b4d72a509e29cb1bfc8177c019c60598e693bce999aabc4621123415235208e7869f62aa7b50a51724c13da2db59d5ba5302c772f2c1820fb0882ef32f73321c17f40d019cad39c3b12c57c3519ca0b38366ac4353b133c39262be6ee47ecf660286f6ca8eb7090418aba0d9833e22b46b761fa2872fb80972b551809c02775be07c796636a2c619fc748b90d28e1e702ffb0653e250c8c3759178c39e42411327a81c7e7887b21915a5cc032c37a11382c4d9186221b1c66afcae8184559910201c8baaacec62bab984e080433b9465e64a2d987028e9d9090cb2c41753742cd77f0998c672441e83d45f2d06c22899c2136362271b731f6ba3965b32e2517463e627aeca0ae5644bb8602f7fc599abc120aa111e2e549a276a18d2a92c39502f6f9519ce76c0bcb514e8084c7122a321479338f59ece08a0acd30f0ad68f2091855d5980219083398a6c0a63c70d3743678a1c0202a69dc526ddb77e30b779c36ac2575704ead94ddf1661a38b2624e733f2e2ae18467ce2c3083b75017411390314ab06abb4d0fb58bff99dc3949e92994703e85fb6b863ae1c29bdd6656cd75d9ba453aa115a32745f2dc1829881a9f4d5cc2cc053ab79b89d107e6054c69dc93f5aa9c8ca6cc1a7583f2e2739b102378d93990cb8280b21a5d5ba8415c48ec17288044623a9631577c16639922978258cee0b6c51bbcfe3f70be07cbafb7c58111cc7f2f922aa023d5ad01d2d31a57e0469ac428b6fb88a97d957ae22beb768c3cb7c9f02f583fa2513db7c580d2986984314e8b346a06501d8972e31ab8ef5b983e9a15e8ffc624d0041fd523570960e09e57d616a06297bb3f9d938f5655628b06c4f6c4fa5f8136f8cc05dfab7389237ea75aef46117bf1b67aa978ba622491260128e743f28f95f533b708f3c59230b23faba96ffb5c239b32b30a65b36fc5a0a76b76f04a60c9c7d5eb78ebe44b736eb56a0812f59d9b5812916246228f2523175242cd1f432f9fb054a8b52d824349dc0756091b2f7c21e2a899362157bf9f631287b90d6c80fb55b1469273f79892435d031b62982c49a1464e2274f815f56f3b6f8c949be11388df1151e7077f603ae592623e4259853a2b90159344b041aa29c8afc5074bee81959102e0c57a761f1b1aa65b1dcb66a18bbbbe12b2b2942a37d13c77c77b2bde758eb1901f74c7d57d373a47737d6e23998e35dcee70983359b4162c7135126e90a807604034d52add3530456b66f0da64453150afbb67d67d9b359137c2420250c279a1c537ab06952e4823f09372198c253d5b71a7e70a1c48b1dcac3a85feaac35a11e670b2840a57f2a7c77b6a00cc80a282f0a1c8160080c702d619a6b6d68c757306c93a5b21ba8185b1a46c79b03c35880a7b265a3e05b2db868482fcdba0367177bbbcad04f3a50adeb85ded90bd59dabb8a3b8cf4709204a2fdb19889b0022ea655dfd58ff27e17d530510e1eef457933fc3d8392cb53f36ed647364a04e37278a0e0a45b720f4a75c580c9920eba98d +ciphertext = 85c0bb95389f7e5801345480ef8cd5aee04a6bdaa435f7198c4478ae8a16110b5356cfa6c84c202c0d7ac5a13fa01a5b08611373ad41db6bab6783bd8cb03964d27ef42e9ca1d123ebec7f32f21bce5ee855a48617e85ba20ec6da894b582a88367ab489b68628ebd5195d7ce2e969e5c4141c9295b95d0cb8bf18ccc65b9f6b36ade0ddd93ceb7c0473d2f1abfcb788d4b92262b8a220ce9d99ac358ded7f108c2c0cfbc54fe75f53cad2f7c8b2e1d5be8e24bb0c554548421d821ee1e8c6187c9ba06ae2c7d0ac58062282a8082713dbfbc536ee7a032f018bc8d85b0d01c4ab2a94ff97eee42322ed7ddf060ddee5803bd30268c29202817f8b698e87e03f5ed608a194d7ba1e89d027b31a4a2b7e23df5553c9194bf5dfa9ae4c3428d31b4851adf635a5f772e7747da34ac8698eb78835258006e4dcd1e2b6aebafa19924864263bad9e52f70cbfcbe8fd31f993515852a431ca984f0460f9f987075a244b8df3a8c6fb8cc5e46c31874ab657a31f32be45511bc49dfec92511335eb15aa3bda5f637349b1cbb8c1a927da6b4eb2af8d603fd988744f677bb7355dc737fe1f161c2181d45fd6b2792501aa6ef68de0621511a7b0bea9132e7b99dda23c074e8f2ae80dc5438123a63152f6305c6dbb156dd572abae44d3530c35b4f1458326d2824e636ea5b8476d9287af2457e528803ae3c546c02a24f3dfe9aa872bbfab2437ee2352eed14a2d94efd9b064c2dc59d076e882177af81e3e7571b8f73c3caae2c5880474f705327c034b6044d899635f16c15b45dbce6f3be9c72b5a9e82ae6b2c2cbd994e88987447d2a1b4f1ba3dad60c0ad9c6544296127aa9fd858cf2015dd5d6cb297744bce70b462dbabb8fbbf124e7723836a84fc613fdc0bc6b07ce574379197598e902912844813939ca8bdcc88f861b97ebe58d8aa250d89ab513c68625358a783b4df50eb5728fdb4a4dfb00a4059c3012a3a67fb942eaa4adea1341b3cfda696d84ccf833826750c27b5d9cd84683e5c3a562c89e8e2e4043d469ea530abdc68641e2171dafb8718ecfe9451430561bbf7c349acde5f73eb3d296b5d1bc0f0a004c4ff8d84e335a9ee548a03e1bcc2903495744637aa2de638ed226b202d126d4b80c0d56cc14e2d23a71f57baa5a866a19b490caa860dd01db946356c0e162727ec75aa5321ea332898de7356bdbf110cf32dbc9cbd9c6bcb844e60f0e7b064bbf8220e443d7385c0967d7f32d6e0f7b68d75eeac8a8c6dc3d8c69caea30222a11d4413c294b2ece3c5c14f8e17e685e0753a393218ff4dad9e0d3be4bcfb6d21274bd2be7bcf4ea0f5147bcbd7117f137d106d1ac6ca8c6c772bf815bed18aef0b16b7a000ac610b1d289626b1a8127879e5312462f657439e220b13cd94b0ac3977b4143982aaa10f2e3caea6457fc8377fd766bcd2c96453f6d0c03450a78d10fc8108ec1a21bef17ce36ae5ca62a5e3e5093d2db9ff8dbf8d9034e450d7b98b17826545a3065ffef40d932d94661681676be4f07 +expected_result = pass +expected_shared_secret = b1090cf26276a81c22ef0e4479a4c705fe294d3b892051ddce7eab16495e0783 + +comment = Official test vector 65, seed: "905074033d7b75deb2d06a2f29144eb377b452534c5710632989f02d45312d156557e96d4486020826db200153bc4a8b" +private_key = d7e3338b3ca1d6118b7485bf85ab9e8f6c36e158b67d2c3530b0a544b8afaa0a8604710987429d0d1b1eaaba8f06422e992c475dc4cf909061efe673a3547575e8b00ba47d5a158c22e6b2c280b3152165a5a01a43d801e96791b6d99c92c0b0602c94c0b13f2672146a7044e4372c5fa8843fa7974692b0f292af9fc3b5793092c705421e6aa39b7b3eec76694f5555985a94879abf737949bc33cfd1f8563565b2f345b6b3389fe061509be046b3a048a73599ac20466f0707e9b46045352f94507659ba428cc6994ee3375b07d09ad3be1872c15692c7394626cfc01bf5435d7922bf9199533a22cc4ff021a97c571db311485b36e2a3344eb880c67819aea18b09919fbc57cbc11cb228f8c24f38a445c512245c3a5cbc65d20269ee849bc268899981b9f334704499b60a891139d9470a1a147f38470752c4eaec5b14d51817fcca22e7bc1c585cd2189131960a9e9284ac7940b2949707ec7a67f22db280775d8163394a3a9557bd48f50c26f177ffe83030a3455de1196a763f8af156df73ce3bd07ac70447573a79dd04a59e8b40e39c6fea736e14f1b1b67b5cf556c3adb29facfca4e6d8b759d37737863da2a7ac4a645a8f202ad61c17068385c21415f7e14146d896020b89cc73aad60135d5a3b94879184e086f1066a9f56041b6029d1f538fb5b18a7a741e04e2c158b69927a1a7708bcc411988c0c315d0d1bc3a31b0cd473fcd3abacb1bb3eb23224379b5350081efcb8c45584d3b845e2500420453718ad83194130983a355b1388bf246b9fe7400443c52629812fc1125c3800c3f824c0ff95bc24a2e8b306d5e3278fffc585843bbfcd06d2ec3482295717a5111aa7b6475040083106a01491cf981197eeb77d9b01c2be476f07c59cbeb5c4d19a2000d61546a9cc149a149ba8e57cb0ecb3105d94715c7b1ba7800785edba95a7352583354b93cbef98c78bfa946a7431813ec36ac45488b170859c098b7c6813cab2ffb519814c3a9de3c254ed7a144fb6d15b183cb48a9021972233382fc8c388511add6a86837801f4bea0df0103b3a152648bbcda68499352691be0c3e5218a7c22c8ce49790af1bcd4f6717eaa18cb489b446d24f5ce239c79a6e34215e87bcb8461b5b509c895ec22f94c17c3bcc5904d968c469b200d3322b423761e3749556476d925a915971a62a5a330acbd106ad77da7897815cfa31cd44310d44915d762164b6170b2916b5427c694ff3340fb16b73500e92833ecc35bb25db6e652701d85ab215b366a173604c2797c2a9c420e069e7e4b3d1120dbd1c196d105211134478d23cc4428f8f56182ff3a51c7b84f01a08ba157e86b9374fb7c2e7eca3d4b65f4a73472e38c6f7c06883c99c4ce934f9b04436d250ef262c42d4862b90c11f4924087469210a25cf4cb29d139d85d9c904004cb246348c60736d707b2b9b111c91acd3937d9e8934032746aa5025bcec8bf637936448a0dd67a27db2a74b60bba82bcc87d73d4a9033c427a85883613eda43829c7ca3c7a8f24364633610d8199a5ec8038d0b6686abbd47692ada94282c40799ed4bf8ecb65ee7c8b2047c41eb255318c139b89ce909831fe3024bac10b4110ca34f1bd657b941f466659fcc971c1174aa4459551848e7a116b751e5e4022c8f2a4b3152a1b26a3096539c9b0bd6a435ea1e33413ac4d5f401f5de8570cc11cd4bb9fac473328d55501702743e2c8d1b97cedc8ad3d55b67d284158ea8bf1a4a8a17a9de6d5669e8b9571200b05300cb30bcec4a58b06f70830c2b32d28992b70427781854456129cbab53a7c72ff557193d3a221d06177d002095bc04e993b8606245416c3b998b01716af3b43a535f7a6bea71270b34ec808ca00e9453ae660b732963ba634f14378b1691a90e3708125cde31bae3d10451a5643f526cb790a8d6e091a725681fb539e9b05bda7b04c48a31b39da6e39e6be624663b6284de9f958c50149ce4090e6a486b68511ae90a0f093297bf090db3c81d34400a40cbe11d74271e23bbb7a49ea875ea7f7cc25516a899198362acc52c8a8ca14bee12bbcea9a6e3509b6887a3d1d4c3b2b4314c4c44f44c96f48b29a8e7b85339037acf131f2692b7e7a49282237c8f37267c835c24883d1a189d4dccb7c6bb1fe622fc31301a6d3612a448084e0a210449b7e15a4fd84a9a538b2d5844dc170c911fc1282bc513e8c18c469a01a548d1ce4853128a03a8b1d369b353c3003b0a29d210ab6af23acd010ae3671493c774efad8b3746180746401d0e5862a3265e7969f247c954955b4afc13fc420143c10263eb1c6dabbbf5a8857a7f3bee7658c8399503c21a9a38ba554132344e214cd2036c2b30d0770cc5dd87ed9b246e7f955ea926965748cb9e58351a938f7e4ac249ca5c970cfde48c0ade051ba873d36a581e0fc50d9583109a79549fc5b32ba432444046ac0a66f3c64ae1498f43b1b36d8082442b5aaa7bbcff2c4cda8c0c4d2c62cf9135a75709ceb5b82ba4ef5716c4986a36bd7b4ad5c3a505869fd34aec2d7caba492f4bc30d232382b2651d5923242bb50df87092ace5566bc5a18fb2925cab467b641df7b5b91142318d120456245f2f0887ff13516d23216637393c469ce1f776cf2426c6577844cb3d4e0a92aba85ffb59979a7c33eaf51ea2bac9862160bf8a85553a3d4edc05da102106f632c91b8d1df2a9b2734185283941ebcdfd788107b307738786d6c0a0e7d4957dfb17488c5d6cc11b83e3504ef2923034a06270563e18a18bb29f48c36a64c132aa626dcfc5a615e4416df76746673e500186a117a27c5007a4b04867213c33739e27058adb23c0de35ce6158c99e59b88b147e2ac05f09f7c0a414c3240abaf65c24cfdb6857eca66bfc58e52472861bab1e03ce70d2115480b443a9bf799379af9ac978d0072f75bc7923816a189da5974ed948b8a709a8191cc9be60ac2a383a7e27cc62543a2a0ca9ea6897d284ae79b595d0893514f75db35c9254b7ac47260785c1b86a98a5dd733d3dc2b947d148f698c5a117821847604151068412268169c86d50be92d77683386025704575177aac0b9d3d3196a610985e860e2f799f480b1331ba346db0c379cb1833223836d88fd4e11dbf2985825c78330658b9a189233bc76b172127bc7a98e6c644d28da7b0857f67157ae2c27659297c32a7eb653697a295097a32ac235a11887388265ecb3b46a75c865c239395300d0f8152cbcba77b4d655c9f1ea4b448fbe32c4996fc298d26cae25d276bcf6e66ba65e3e9779146fe6c37136273736ccb11df5b6d55debbc087de802404b72a003c5e8c809719d7e4b5d8021c486b9c3114d7cbbeb7cd49eba8a61bc2bcae1f1bef30a1daf76d +ciphertext = 175c3b39d3296365a6f8e1e6648985b0c1b353b852a83a7950bc3bcf8ccde62f52514f63823ea758d4e58bbda8b6e95a0483faf6e20612d042765dba9b60a3d370808c7554c79b1ef6454419e80924c202304ec41a6b4d1d12dbe20934727b94e3d60e0f76c37ea60f4c385c3158e882cec48b1433fc62135ea6f05594fd98f13fc6929be35492b354b58e26c8035fb07fe179929649c91a532831df262188aa0280e46f5ea5cccc7eed59586ce55d5aa088692b25cc3ab58c98ca228306b09c26fedd0a823b36d845d90f6e5496e3b6d70c07300df9fa5c90ac1798c4ca5ca25c16d8bc2738c475aa76b8e2dda6cd00279935ca1bc8868d6bacadc33c77656af0e53b10be68cc1679c54404c686837c4aa3f86c9b18c4d98e335f52a80ca28f61520929c8f6c044eda9b7802575051d89287d1af7b47519661d529065eec290dc145a7e496d6408a5a6f067a9e1db3f7d99fb0fc34ec167e747fccba45052586f12d7730a489da235d84d612777b0986c501c1e028232c9090fe6c8fc51a56088c1881c4e09ea9baffe50a6c2491f61c5dc0711d96c7396b8922551a70ade21f332f5236f13d9df8388cb6f0e461106d32ab61817305aa5bed1b9ebfb44f85413634bd424a95d913c9a2ca3b5c44ccb65e65be918dc2917cf9e5aedfae4d4b49dff4a613274f504b7f30b0e1f2c076d2ef31c8395219f9712ecab9df8c0d4b9b843a514d520166323dda4e9a35c212a8fbfe6d16e3b6892282bce66ff727a8472326705726e147761a2128752e2541c5f5331b8962265039b78bda79e326c3d7124294d29c2a60c9a01dd244d7edca5936560fd6323b9aaaec48fecb8e275930a882859a75cf7aa467bab38f54b34f3b35e8d29574dd2e301cb9b4ebe7043a350c14f46c308c5001bf680232def77f2b7c8f5fdcc8cc11d65b505ca393b97c0a6d2d2484401dabdded20fe2bcde15773a2b109952af594a4d943608b066cb78580d77403707d189c8a11c0ec5fccbf8a82967c151c955eed18b395350fc85506f42639a1f1e6382b269ff2611833286310ff91d97996e9c3896fb1c7994e877e98a89f9d0d1e69cc6ab6da66eef7b75cc147d1633450ac4d8baea19dc6bb88a4b93d2d7fe842a36d900d5b52e77165967a003ec5470282891e770369cf21d21d71a982aefd6e2d943c68b51ee312d537ba02a952baa7f6c0fbb6f93d554a4f13fbb8c48c04e2d9416cb9ebdae2ae2bad31d6ca5ed0f7cd01bd4db174bc79333c4d9292e07dbcd48e72cb7e63fb36dc54f0553ca0e43b48ef63ce225781f88a556c37cd2a1fd24130f41f1d778d8d9d0a0eed1a5cb75b924bff5dae57119cb38ceca4b9cbea6b6b7c5ac854a1f115945772b981634f402dd69e536d2bcf51466a20ae144fb853c475c04ae4c40c5828c230532982dc51e53810fc73809c1113ef54015290aeb9bcd736aa8ab1f747d5b90d188fdb45c8bbf14c06c41515f354746c7b08ccd2adfeec6bc02266a78380b972b7ff44e1d29cc4bb1933421cb5450 +expected_result = pass +expected_shared_secret = 2fda9fa72321be3a0946d6d914c7ae714b9cc175619ab8abfd1f1fd499e0dc27 + +comment = Official test vector 66, seed: "a3e2e511afa7bb560446bdadf67d2ee2e16ffc7baeae7efb8c5455068bbd4e91bf9be9d98b280072faba7712c75b26d4" +private_key = d338b8576c1fd9168551a681f9c590095b6b8d8474f571226a4b68ee81a83738bb964356edb663d925960388c92896029a201ec7f046cde497e3384f613a444634aa3c41656c6031d5233720241603612bec1032afa7b3d41242ce374c8b118cf6219fb5e645002530781cb4660403f88287d115baaa07ce95496a7232862282a653367fbbca1e337155a3c8905e368c1974418e735f93b6965fec11ce7b43d81710d727a4c4b434003b9110d013568b7bbfb341212543031c862fac505944b86394554772047b2a864a6675ed984583269362759cbb464e7e248a48c3554b8054ed9342aedc8e221439f812697b691bd5c89b7fb11ec716bff96c97dd73c45b00980bc6b1f69117c2329386518058e97b26626d98196025724baf0c5729109399e035ace9a630cb6d7ca9cbc16ab560da5c01e37601bc0dca7a3af891b80418c0056145c7ac8c176605411a39bfe843cafb4fa61463b20a504e984308f2b82ca7081a97951d0961b2664e2d7b41df902571d02c1fe24ec0ea998609248cf51cf2f81d96a983dbd29bb37b9a7d559c72fc0baae894583a842fcac92d910c7d682dde70a4a7b26e3259b290a182392cbe36b68d2e321708e9c00d8c06dca5043c1a461e76438b7801e8faca17045b272b16999471f8fb42f53a43294124c3b2b7f7a13eee8b195a01871909a70e41a0cedb37f3f733ee259f40c1cd12c79daf90788d78ceaaab9e1d20b7ff8800a17ac28953a4e90b257d099da195b6701a695195bc730389a84a499ab784762631935a5a974398c6988a59822bc6382b9cdc6072f0a6cf65c9dff2309d1a433ac52e6cbab472e788f76558d57986bac5c79b921f06e509db18c70ee88af044b527e221e5a5105a19610f059fbf6009b985190ac81640607cc4fb69d4892b5d9ac12bac26765aad5c874fe3080beff77961cb9e747a8e4b4acaf3f3b81d51a4a755ae8ef2994e8a722dcb5b8014c1ccdc6a79046664c3b75c02b91e0b4c5c250b8eda5d67e9a0984a6052053d22266b2413b98d841e8aa686f4e0aeb8d5b2ed2c8bbddb0374d0ad8cd47a0e6945f0ac352307ac0db224eba29bc09397f05b1308828cd42b85c556bf0a938959fa7cde083d3d0163c21b016133145ae0c47ef73604999e76f9ad19432f82e762ba8174f89a23d09333f7e677f33bc15bf996ae6999ada8747bb0c454412c2b651d2a90382937427ea555b3856d0250ab1e3663b8d78f3d96cf9eb90b5a501129715df5db38086076c4b351305a9718903abf12609fb1bc8a59162e2152f8e0c62241ca5deb5260d71ae162b7ea827a342584576b00dc674a5be149c7744d7ff43a5b04a3ebd38c110630ff656f2ff042eb603403d14f18eb17cf675c995c2790e936cf8b60e758484bc04314e50105b28346829077aaaca72acb46d331e9127b17dcae5e639d2b33b9f3cca468f731bf0b332ba41d196ab77b3c436702078730369cf59144540ea08b5025a4c880c1530f40a852e35f96519c91eaa680d90d25a4256feb1878b48e39143ce43378eb3335d3e03f2a358782e0b54ab56860148dc0fa5cfd149cf26a7260639a347aa72b977b6f38bf29e1472c26b4d7f80e4bb3192de06ec05a6aeb9b77f8c16dce72611902a8ccb81e8cd4c5a2fb1d8fc30ce226bb45779f41073ff3ec0362ba152102cf45d3a95874a551c14c8a621436e248ffbbc4ca3b4033d50efa392dbad9c339745803f845736c30bf309546229ef52788ab223758c03491f62913fb4ca4307dc6b4c7fd9503a701ad21671387cb2cbc728ecff4641e312779c7034ce720554a948a021751d4628890ca7367611d4b9f269c5ccb2381f1f6a01b0634d9c5c954fbb934e4144922ccfa2035892c4cc2a8457300946aba4ffe77868d34c7a90507be43748a366c49d0a927e66610a08cd0152a2c1bada92a05694b6e3d2610acd4579d5634fd2675f2101290e2ba1855252b57a438b50fcb854ea7b6a89b109ea9857c23aa38333428b94ca5a524977d72077b56978328c18980382ebc967dd37e6136360a958d5f00c3b9996de3b97b6468b9f98c3c50f37a9e73ac8e8364288347d9b018d437b3b065c120d26e9033078b5838dfc7ce68f244b32c5b4ac04def068f58fa733e99a418176575ec2ba0f78d4c402d67176db5717023b57f8d26c636a11f49b926d20b277d2613941c3e786b1a9a3c1135993bce22a1de16434a5902c0f101993b65777399828ba52330a2f356203521a3c59b6007c3aa41d198a8232d27c05f8e0280c9076d54d5aebdfbc95c7c06bce24507892641f90d2b774a2d98764c42bcf009799432b706da59bd84cde4892427c0586929c99850c7d769ad9a221c85a4062a62b2a1847454554224c4cc47898574fa66d147c4aedc59ff612f49285db54170508c89e6787a8ce6515cec673d4545970ca8ec486802933e319800fbe46d5cc14c8363656dac0600d895fe383fcbc3614fe334cac0a94c185b73db30cb5a56a8d04cb271b13859862f164f980625d78ac35ed120605cbd69e6410eb05168819440816eebf8cc9ad153cda5bc2efbb00a7563a55856711231cd12873a9a56996c174ae43b5c172a1445bb40cb3deef9051035b33214a61e26852ef3bcb3fb319e1b4d6bd832d6b9bb54b6021d180881d59d2458564acba148b0ac36cb501cc8242919064ee24343f26a87a0696000533a20943445c72b9260b4c8a46a1c921c582600d978c5370b400b2412f73541a13ba0349e66fa4025735cab6402aac51e08a019b48115c49c665f415244fa91c208c6b1f2bb02bc18c47a5aee366edbe3bae1e41a8b405ddeaa22a2fb254a6b70dc5a16c0217e4dfb933a127039b788e6c035df8993ff86923500ba466a81d34a0ada271da4262f33123a1b81a13621211845a167449d93370bd95a89725a56a8452b510a7fd2642af41a4a7856abd9688dd7c85433a868103679a8eb2bdfaa0cb52cc141267e91e2c1e57162c6b4897c9004a3d375c1c8bb87c5ae2cc80c2a107e0f904e5bf8065ac96c9152aeb07322fa181a83a9cba0224c9faa0f06cb67e2787eba832d3f53ac60b7b014d28945361759689c3ec65f8b885eda081443a2afd2a735b1c57c201aa4d273b1302267e5a63abefbcae8e1b2d3883439e2be2436382eb9bd62146de0e446b6e2baf8300575091db145a646c733bf352989938fdd8003218a607739c60da6758bf448bf18a22630b08ac40635382e3bf86d16625c45e12ebeef4308b229c948d425016d674119c0aadefeb21338ba6cedbf7df723a074ed1f76e97d68434ba4af2af0e549204222679e9e643580c35af3cdd247ceb2dca81e3f5f748d23c9d356a2209f6b2d60247b2e45c9808de497f64f124643 +ciphertext = a79775edf0315a85e2a48145e0ce0e7b2bb5d25d995a78c8b4905aabe811328d595575e87409438b07a0b772e9544246a296961385f20a180addf607531c8aa982b4a5ca6bfae414956a40e52de3c1427a087c74017b0b711696459fc50369e06023bc915cc0f37ce9b1a250bc5e3ffc1404df54edfb9935b7ae1a5d73811515e0c1fa539eb9b11b08d0329c1310d3e49c816249d1142240f605e39abba101adb143a143d7e4ca7abce799e13135033c98555fbfc900a319824691886026b395841387bdfaf4f2cb712e455e48880edf86c40563bece6cda265ed7eed3ed91e649cc086bdc81ccc5d9563567cbd45f032bf78235c2576a12d7fff82170b4e0d0d6dee1cdd075e55fde2e1b00a03edb1615c8f225674525d7a1c8f17e8f8dd6863dd41e990826b482a307ddc522e29d271ab97fa57f2e2020f50701c7151f445fc3a8ef1afb9443aea1919edba5a68d745e3863accd6e3ba32f016d405018890969148785d00ac8830c17a7610376a0450f037ee4f0510096cada7cdb7a38d9a765da618e8b5ba2fb0083cb761e96a753fa119425bd50e4b996c5cd4f58377de02ec10ffd8751e6b513c3b33e7b6e45027d25a910a380cc16cd6e85f079cfe1f985ec15be162efd333d594c2fc333f3389f3c6cba92ea1285d68112fa07ab65d18878c423ae22898d0c63057da644004de424d312d099d1c47ba88fc9e35d6f51691a95e0689ab180955afb49caf3891a329858f625bbc4c54871aa82692bd0b32d0ffa87662bbaa75920f8bb546bd0fa4c67c63aa72501f7e213f72a9d2b767eb5fc2c7b5f83f492bb9eeab10bfa746248d1ce4ea4d497ea4de28878f764a349e2f6c268b7b61fec881f3bdb7910a7fa2dffcf4dce41fa8ca4e3cf4f720f72bb29799c93e7affaac971734837e9e4358508b5570c4946938245c30b566292e7fced74793a089046cf396aa77f277ee2292d1ac516e09213b1a334dae4e4ed4c6bbecb9e6f12840a3a7e111ac10714dc73f2c74a137a7b662b515175b9ee56e76eb21d26b75bd5b4dfc7cee9fb6ff276c27c6d531b06e5fc26b740090cd6830c126a1f32e7ae449507eaff06332b792d82e68a285f5b7af77f030dd4535b8eeb713948ade1ea09559555fefb1a332ee3548d4a29f2a4cba841c7194c7d309bc6aaa4d8d299d99965300347aa16b35c90871c4c7577bd419b2076628adea586d73988828327220dcdb509807b7dc921d5f7771bd8a0de19667c965e3ab22d3198880e837716e506068a70de4b4d300a1f1a386ce65d8127bdf38b2bdbfead80d6b7b89600b880833d84a38b9dd9cce2646a5cf6849595f0ac740b5e65e6d7e1fffdbfad7d36ced685b4fd17911ff697a8ef8bbb37272a95139920727deb0bc7d5feb6fabc89b4d342421b29d71d0796c5312484711af245a0c53629148ebe4c1a61bfdda623775b75e263cee799334be799dc8d26791a7b8ff002ca4f92ea37660ce55199ea6b25134eb9c692b255d3f59c96133c6857ff5aceea9c32a3d90c3e1 +expected_result = pass +expected_shared_secret = 23798e8b9eaa0b369842cad83a2bc32206f791229c830d7593b9150161168011 + +comment = Official test vector 67, seed: "074ab1a37ba5a0403d8f68d26fb787bc2c90f5ef88f2a6d286c3e6b168abd85d393d8225618608b8eeb301d26af53bc0" +private_key = 9bfc3a71fa83a4070db5064ada8410a770845e818c49b91e09a251e1925edb226ee8ab153f94b2417560d88959113a6bbc854b0065748e6a7db90977ada0216f3c41cff70e5202b306cc22ff8a138c360d75b9cb1bba849c5bcc8c9b55e80647e513c9e3e15f66a144f013822da24266765e3f1125f435bda4c46ef57430eae331e1d54c91960eeb363ca25387d0d441abb930e4a7c329191c5ff7a87996a4b1aa74162611e67b303e284c7098a65069356b55304b11b8bba66c5829647493c09bf62166017977a988333092efe98d9c13a2bce53f8ea2c81a0099b7d5c2b11704971366a5565cc14610df796c604700680226cb165e9acaa6ab507a923b4d472a4b6c9424e7f5a622f87f4f8a1083b4755067a93c285cc0748d241c7051971128cc5af4db5c1f7c144f98b6bf9703f5338628ca22df4b84d10312edda9df71442464a24491a62687928c22455dcc23eca964e9248543520790d813924cb58a0c156aafbcf63906ec5fa891936c7e16b5fafd98026d64ea2012bd75b6c5f376eeb74ae9b29cff7041c650b91a2b852c021562ba33b66ebacf787be40810f22aa43f4174571c77710f775d1719968a5523780b613262f94bc36b611b63f460dc6e02cc588af99f164302276b0386e697469c55928c0e62438c25af90577de0883cf45819262905ed30d9a1a7918b82f9b4a28ca5b8dd1d9ad4326adc7ba69c087765cc6511668cc0be83d510245f8834e890662e06774f389c0c623be3212aae5accedb101c43463b68889ea9a2c21aa0acb5329ff80a336f8914fbc602e2b9ae452647777651ccc4bef70ac06423b66ec5982c861ad9723dfbc834ca6a6433174c1d6c1ab9569265a96ab5d48495d72122763b3a7275b297713f1a729bdc48329b64fff9c45955c6091375d4d77fbac540dacb140666610ec7a15ff18bc741aa69425508d5cf682bafb6d3c9dfe02d80349597f56fbebb7ec8031fe71b6d6c065c4e6b5e5d17abf3b412ded81efcc8b6b1935fb37b467a5cc61f318aed20678800726509baa73bba244030500050d4b23e4ad71349cb0877566ad100ba77f8b409bc8f0ef8cfbcfa3cd1baa1935c9abca798ff6965ec7b53141b6709597bc4f9983766403ed80df4095d59ab482fab7fca432ef5e76affc77f74f4cda522a0085a4917d04167a00b09863850d6caa0621c2d473de0763b7d3168b6147bdb009eb260901fa82013c8c0a3f6c39de3cc49a773d08b357ef932077b5bab86391239b3c366c43010ad15ea2eb1e05267029e5ad8139728a907b98761b65dd6dab895363159b48875fb6aa80882256a04460b2977280688745c5914c089b37bfc949a8f9864afec2e4dc13f6092070eb561d09b530eba2ccd66b87b0986adea1933448066521e28ac2ed9c57ede492799b401cdba8377d593dafc1a0d233004e25877242c30070779d8bc5bb488dd3988004b5a8554861b560ebaa5bfff7c89ded193ea077f421c216996c1445b165b912901b217315636a168c0216ac026fbbd4239858837b02dab5a39d1be6b072468a264661c5e34f42380c66526377c990092434bcb551a744227445c5108fcfc3cb4526d0b711dbd4539cea05a08a78fba723f9bd11c902a159f41cb5395be189b1b7e98cc23658dccc7bf9a843a77b2a6bfa27bc941b04f391950d998c607a59b49330811200b38b243060b55e381c078100da84975091f3a0acb06f22ae3fb1b7d756d36f54200a367c109b13cf40f3671231d5b0ce9e5908776768767209f4726c54277d0f8b0e05bb4cd50bb5547a01051c89abc4a352745316c8d85a3187d68382ef05dc96294446972f4c76c7b9b91a4babe06fc634e76ae4b778f939c308f22b8c816bc3fd6b48e168f5dfbc19fd8cb7e4686bf2325cb060638c723364b27c8e3123fe26cf9862f247cc31c844ae77754206b03b497bb3283cc7e38664b23771f709e1d308cfaf5086f25acbd04cbd9f1612acc2712d129c9c195bc024cb057b0766aae7b533e60f04d947947f920470bc37e5eb4ac4fa1c48066877b4456d4ea2a5ee089de38a7fc7573fae5480bea823727132651a85d873378cb97d6f7be1250a94621abf5eabf0114952665cd2a5005af338b36d19f6e4c8f77e2cfb6f24d3cb7a909315a026b5aad50a9cd4baf3308059a91323b1c226ffc76b3565cd9386592476b76057e3477c8b7cbb201ca91546a2354b59328d411a724cbd8b3689efa335d879996fb0d1d2244edb361be4b2489e84086f4a995f20ffa9404082c4e66061d3ef668fc155bce04916c92b8fa46b77a4a9fa82c8c0ca5a5a5245883d25fded230e74b22394169464bc33fd51fb7f2aa9214b1ed546dcfd00ad554aec80882ec170c6ec44794204170d738ef9341d6034920a7aec3b68fac00527b2812d88969c6207f9aa122464a4d76320ead6271d2836e574155310a756cd4249fa7474b301ca978a0653935b7740a16c50df1eb678c1bc3eb451cf6fa35beb903cd89cde0aa58a43bce9cf591286792fb3b5e658b5a32196ea24a4252b093d2ab40884c39a4abcbd19b108b81172e18a84a288aac2982d113454335423148168bb6b9d97494179bba1ec8760be59d06251b94b4baaf82a6481c4a8f33b0fc3164635452e6497f992308688352cbf44537c618000536f9c41a64361ee162236f9227219b8b84a3984c649ea82211207c974f6c7575027aeef57e496a58ce2719096a58e2e31e82844f4d674a4cd9cfcada79afb0c63e634d2514ba4d8604ccc42b2eeb64691aaf23727c93c4abe1423c27b3b7abf0b649334760056e591c32fe812a753723f7c93ef5524c8e0267db177e6e55620715688cd0ac70b2a90e133caec86945bc74d7ea1cb88479a37b45eae4993bb7048e5316bf66b9715591148c9a20a35412c2404bb62c512b3800b9ae104453d95acffe000d3ae85b96d8092532796a03039ba2154f84afa4a402acb673b8799441bc505e836c3b558e1fe2057fa79153e1630d72afd96aa4fe9c0ed4822ab33a559719b81d274ef0a2773e405761a036521278df5ab3617cbd89d7543cfc7c6ad373b2d0b781dc78dd3b2afa34b6565979231681fffb8c62843dcd11686ea59406e23cdf96aed95554e47027c5b6976f5515bc40b0e3a31c556219f89b73c0871e1ff552ca04c33daa4a363794cc7c0e05249b53d20460eaa8ad217787c8c9423a7eb71058b5a8081b82454dc91f77f8608d60caff30a7c42424542a1746f0f10feb3f0fa52eaad4f2d4c36e59ca0a5389566fad53898992a17bbe0a0f26659f74fc9ec372fe18be4ed6aa28b7cd84ad1c0f0115dad011a11d20fda9edaba5068af837be962f439f233593d193ce5e08f7d66efb3389885927b89d2523 +ciphertext = eb2ebc83c36b4b470e983a8f9befb67443567e2c532348990f62418cf62208d84c1e97c114fb76ac3d30491056f2f820178164276804a16267eab23b270f990de9307b5947680ac4d4c070a2c764ad520cdf3f4f0bedee9c2eece09f07df98209e214abf99c07e7f50e78e38cecc268f84ceabfdaa8010b1c8b0450f440923f23b22465770d19fec10e0917874dc78243c3483a38d49fe28526554b217b2a0eec4bb4b45fa8f92954dedca998ff1cb649237e0e056e72216660a10253ac5064dd0faf13d0675ddaa9a3142c399bfcd2efcc353c316e4e8d3bc9b6d27b9ff8bc7cc4f87dc4d4ef9f156b0e80ff45192dee9413e74b83dd98a6b5d3a0348202bf041efe408dceda6e1323c887e414f126ba35cf6d78da697a47ed66f8053d9cd0a096ddd6649e74138d69caad22d856297f4bcb2e4f7fd6930210e63325693adcf4c60a346b34b17fd2193cc3e6d484949106820fe308c874f93f9538365b9cadbe25230dd5b3d7f153bf54fcdfb1f2f668e039f3186d9e4f9f336614e88954ceccc791d584ca318d942917678f511ff1dec3f1534569bf0168dcdd1505fa98dcff66951fc28dda492f0afde670bc4fd0adf3b5303f3ded36d323a89d58c5b37b9df02a21174abc8f2d517bc15f2afadc22aad49a678392d3dc5c96c3969e4b55ffa30daef78b07a01563ed24b214d662648afcaec2ec91b5698b638889b701ae84fe06daf92974b545a007b73ed5a12602bd0fd6cbc5c62949ffbedc1337bd4d1c10ef41040e31168135c45c765245c00386ffb54a6d62eec1266a18daee9d4519214663d307d43e729954807c859c4a6834b1c9b7a47966c6bff8e8b4e062d1f9be53329e0961abf7872e42fa510cfe350c15030a0e12c66e8de05af485b9688112b5c4612973b81f50cee871d816839a2beeba30bba36981e483fe600e2993a60b3493e016596545243c7887f9ee9dc1ab6c875621c1d4b8c600e062d5d37a30421bfdb811b62fbc73c0910d305b71919d1c80169ad86c0205cbeb4bb0df6bf7bedf96c741870d66a78a62d8ee9cd7f7e7fa8ebe0adaa1389a4932245ba6f85b908366d1589db6c2715265e98d0f5e89ec8a0e35eaea4c9f50aaf213158e729e3766c50497e6c2b9f44668b4760e593fb509789ade992d9e7d047a50045093f2d935452648c7afaa320b52465d48b9e15acc640b9e89a2b0b893a6fbc8c257f386e4cc9a52bc5d2ae7590cc2161bcfddecd17e8daef627fa9dbfa92b76942e6fdc0a2f09692fd82391d69546986b364c5a22b2e91819d957e1ca654faa71b11a16b79c37130610c01f4f9c2da974da0940ab94febbd955578b28ce30ecd668c8ea876ec9b313ad41e5a29a04039e50fb24233716a726bb202e7662c37b90adbb942a6cf708eb77abafc6850af6d037024e6c781994c421b3fa916ae07cabe60dbd701f9dc7c29ca13dc810c89970559853066e00152d171823b237a0e189c1fe72d14186f420c1bdf6055270b3782d78a2d924be110794fd3eff58d8493bfd6 +expected_result = pass +expected_shared_secret = d5c63d2bd297e2d8beb6755d6aefe7234dea8ecfba9acda48e643d89a4b95869 + +comment = Official test vector 68, seed: "cc0c86cc0abf86fa21899be1953913c00e7c46e6b5f730c4e88b3c034012763981d7f14459d3081638080378348856ea" +private_key = 5e484946337e3f4135d738b0862b69f7b247a5bb0812d56201300c53bb87b798b2b551ccea75a87f002d7de7878ed08e976a2cb62b4aa559bc36816e9690973f608b262612f89b5bc784365e33193fe9013c05818e0a7151297ea53c95089388be203071d0335535436c799f6d3aa3260a9c8c9c9e36f79f13135c3dab92914137c33773660aa15557c32b7a086a5a1cfd125dea60183ecba94da22f0f3a18dd2131bc792c4013b7bf84a7840c976c53117653c4f947839d8cb35538bb97899418688a9e062f9fc17d77450d85261aab01bd9ee77e917966bd26bd3d3990aabc8561cbaddc5a22f8c80d99453fa7350b2a022e4ca48dea6c9c07309543611abfc7cda76aa03e51acfdf0cc73921ef2d02f45990aee50ca77b93f14e4bef44576134391f7b67658e1cc7876713742267a556ea8f562bd858b24e04314b025ccb5be0650642a23460c3c65e0d6cb68232cff709204b7b7cab0741807100a712686b982f632095d7730dd9385a7a26c23741474e12cd8fc259ef346b5f287eb01b046104ef8415372b47da145ab0c5c1774626b5dea7d72db4c62fab14c03ca51384420690a799194e8aa05bb914db21956bedc948299baed7289c884ab9833c8669422adf51d4e1a0466056eeca478f11ab55ce2ce34430addc889044a5601357ea6a5b097b54252b046fa83c0211c236953954c36840e390d2707848c0b879aba2354ea200fca56cbb86c0c2269a81c790b966893f782aae9a4bd1b02fa85995a757ff2083fd26347c97711e07560af77cb59c7cd64f7cdbc880ad26a7bd7fcb9b210710e581c49453a3200ac08554a641068e6879ba6665ae9f281fc14c8fbfcb0cac0081c1a06db017d80048b324248f699825a489d0726893e109127a0ae802cca29ac56f6118d209a54cb842c9a8c539e43b9681cb868018c95d872c532a10a77bf52a796d33187fb8aa3fd780bd2c4b30fb7394dc64b0fe05b81128763a1325bd00eba411247b1c22a1146feba1b255c51f74999dd29a9453151bd9869e3d548347b93c1b798fe92a053b88c80d7afa5c561d31435d61251253b9a4c2b0f42830c81e990006dcebddb7002240ee8e276d4e31c2d249b84414f3997b9c4f5c0698cb2a24c48e3605f6d704e5db734ead12d62634dedc68ed6a1248273bad5ecac0651978b098ffcc148667671d4b59ea6095b0b363c31299e5b90282f914bebc66f6291338bb7600c8310b83963336952ec33854ed7c979b71f30188180b11bb66314c93242ecb890123c9f2aaa786acbc7dbf560cfc1625d06c3828998ed51b79d28c583bb38719706d1d67b9ba5a556cb9ee1dc4ff2c53c33969f2f97bb93056729f65fd90aa2d7113edf611c521761be671fe37baada7a2b4a114dd458a19966a2a42914d61b47aef5abccf8240c88af752b51bcd0a3788c2aa38aad8dc00d835476c8386dd3a8628b261f1d6b2b9f771842c97da7bbc3d03696f60524be6476430044f6a8aa48c22901f750dc55c1ea7813ec3518b26b3fd0657ea6fcb6be94c026244a0401593664673faa680f866e174143b0cc086fdacc1f7126c3e941f090332d8487d5e66061d5311c9b5c8edc39bdfc34948400a9a3aff3a85a8683354b3c3f035586b50b88c4140f346a05ada7ce4beaaa5f096614cc767af89ffccb95124b00e8379efaf76ca381ae4886abed9240bda4710dac62a71017059b07921c770da1ca2d209338536c3a9b5238313bce565fb861bf8ad3a78f030b3f646b34347f1d215e8ec1789d602d92a971fa3c2e892a09cfa68968f96f206a7535766ed7533497fb051c8036b0aa81c2c802fb7333cc6744ec830e4be56ef1e4874371409486c477cc4ee90092d2919f585ba21f32bc973acaef42b4969746ab2618631b6536ec298b2828abf41e24776bf288ca6a4a8094d63c7ceac44854ba9e4837e44b3a7b269d6ccbb6d1712e9ffa937ec5194a3541e3fc9c685102f9a47faa077fecd688d607996e5b60c1715e617994b842b46574b87086a061488bb2445b357a38934b612c16168e662112756bfd764a4fcc5f7b1634f6f28094464d600046ee03b4540c1049bb3d18f783fba2ac5bd36ecde662d9e08e2a89cb754b090db7175277941e5973d010ae08a4b4c922aa99f47f657a49c3b81fcdb54c905a3010405ed544bdda9942bc857b6d979f796c859e0627a5212543477ed791c2adc95fdfac9d21d19750b8b5ddb95f02d721a9304099ba6b2cd0a40c1a2f9dc1649b2318acc93a5fbc52e3f4900bb44d20a7250142ae5f3b77c0720c77104b74c78eb821bd32e260051c499b5ccdd9d716521163557b5e4526acaf09a2beda04994188a5065b4a975b215171eb288024581cffa37d6289813773b29f1c0ef5587f9c98049f548d2a0c3a5c71c1693b5ec8c64ce0267fdf625485dcc4b5553c5736a0d0623cfe20596f984c014aac0380ba9b58257a993b1be3bd2cb9ac25912b36b2c085443074f093510a46cde5441ee3cc88dc2cd636a5ef77310f91cb21abb149db2541407726582b54b50306cab4b5356492c220c138c64b4ab293680e01c2aeb369bd611064fd8955b790222bd5997dd76bfbe50a2bd039c1f14f0469b623c53195a3b2ff068182d951dab05ffce9a6c8fab42886987b7999043c12870965bd463980aa6b35e13b5bf9c25b64920d7788a291a98ebc30d3785783c27e53ca9ae809004f23706e3cc0b9ac0bd571084100299c932db2933cd91566aaa367371b16069a706be664e86107b33b1cf05360248c808ea250fcacaf9096715478463932a1c632cc9a185eeb08583a9309259c567743995af013216b1086815b851655d0f14fcc43682720acdfc36f35806894177ea2144f6e28837cc887e560874ddcaaf60a3580fcc7a5f1733180b1f1202a08182345370cc5c46cd28a507ad846d1d9415af679d4b22ee560c6c1b2499d5b74aa2758da090e62713343b3a8b14c68e415a3f196c2573c5e828a16cea51443104f9cd899ad03c3b727774b48ae61db98feda4c1e029b57f89d1735381166b70450215af92120ca61a8a38e575abf2cfaa54c613031a9ba60275d23178ba553a3ed7179aac44fb3607e93c1c57c7bad6854533844bf3d6a9b95a966f891612239cf6cc41df1a859afea9c0cec6d2679cd7c71c2cf251dc9759666c871853a1012294022fabdeb2269b430397f337b3f416e528748903ccb8b24c8fa28197244c0ac3a0345e699b247c863e9a58d8caee564224faa36c70ecd281b67eb98908468420b38f3c24da9290ea98b242ca3d8ad2dab1dd8a2f4320658fe6eacabf70d907920593919119cf3745163360f4dff8e56f68440836a072412a30d851ace2c7c6f02d60e7a8420001a63e6c6 +ciphertext = 333ce97c3ce5fa6677ecc0eb829056e8732a4bffb16f97895f2893ef0f27f669208abef07f251184b011f5485050e7dc471ae61c651499318a2634feb720f81edee3a9153a82d840069601e13e8a05e35fa2c18b0fa66745e104319b785c36adcdc4a2dcf03b152bf488fbba844eda7eeb4d289dcc7e926dc0ecd84f651a3f6406929b26223509789a1465817de510542cfd42424b594587c1cea93790e88688a9492146076b87cd9b3d52e772a072657148cd22c6e3f1cb724795d4811330a0469f91b3df0cc389e3e7c6280a20f4a8086f66f1d8f37446060ce019d1781b7900251049389911c0ca210cc2c6741ae7b2ae5ac5bc5905434645116cedd2ec8147ce6021bb953b98d7e7576edb3c9ce8ffd31dfe2aa2bce390e82862def5de968971fc0463666f754317e0e5670d4a573fee33ace8196dc5767be6adc9976ccc07e9a11fb7fe8627cf6b09e07c22da8c829785a3cbe044f8622dd130498ca4aaf6a66e5980c7e4055b6e66666893309345f7e506426152a6ebe811f80e000634c09c356306bc9c4d6d535edf4f72b860d0f52f24acf910ec731743d0856075fe2e0f9432db321d509c122b2bd69b18b62f2d8925cfd35c273c2ff4c0fc184e6c060707d30de3014d8cfb9d291f2d6d31700805da5d41c1c6c3681fb7603ff518b3132fb42f95c23685b6b72652404b1e6dd61ec31d27ade50384541336230c6b2e435ec32fc783972bf5f48666690687642732dc5f7090d81460924e2a7e64c05d189b88d4276bf9c6b51632f197f3f76e5a97571467b83a2d8754ba7fa8e827bb2e7517c30e5ae5c0fe9735897a86ff3359634adf981201f6ea59adc80a63264c776a08b939cc9c5565281adea113cdf3bbb201f5c6754dc2874b9a67e4a68cd2853f2ff5becc9d3a7c43c8d3a917d7829078a76d097f7117f87b7d4054a439c22dd41183d0e74d5e496ec19d66d555b45348ada3ed9d3ae1b3d351921f68bbd1d9fb4c87185614bc7b0bd3a53dc81b9fab161794a9217ca0c5e716214621c2fdfe6ccf9682135a14d52800f7844096dab5c59b0a07623657d505701733e409c8c0ad70a143cbffdfcaab8e8f122942a8197fa3cb2b9e0d4b80d30fbe7a8fff8d49df0f59725db077839398f75961bc5b9ae4f1d03f6aaa4a42b3960b7212b535bfe34360d1809317b3cf268905e41c923752301b0a9660da97cfb14726245e55721637ea2a075c202753e33c97ae9f20aa5ec6ac03202af9bd5700e93b5f94d63a683cbbb8242052549c21b4380f13be398b8d2db55dfd9fb04c21387393183a7f5547dc7af9fdb6cf7fc8b0f1665e57f67d7bb59a06933a15fd7313c38823af5fde333572b15a5f13b2740886a6bce0e942f6dd5b82f4007c224c500b1675a25a5c0732b72391087f2bd04d8c9af2ff040ba18aef056fa13f088b3b564abe07536195fcb800800fe2ff41c79aa0cab8c561cddaf1bad9bb35792f0e61bcb242a3f2e3443f89391fdd0f1951c8b2b615b684abea2be35b1af327620e00a83c +expected_result = pass +expected_shared_secret = 29d6a229adf49a1139794209307b0ca24be5825b2771809232fb718660162475 + +comment = Official test vector 69, seed: "6d5a7cc326ecf3983c4e7683f45263a37f692f3bcd2d920e1fd9584350119e74f9a3f905f70d3e20318c1413de2a0dea" +private_key = de4627135b3976b8ac07c0059bb28d09e98e3428228c1786c2e8a1d6029d93cb9eed217d09b03e9a7561af7441e4271c7b6c8c862c5a93e955a05a87b01a63d9e8a334b26e1fc0346051bf31d078860a9afe939f4a90c2a395b2b6c205475164e36a0c2930cd26e26420470b0d068e36971a978b17be984a418a3cc5c6b62ab00d6dca5657f71e08b215edfb88a5b6751eaa525dea4b0bd41430388e0cfb445da3347eaa375b86858f19c81b73a4bf88c2f807638d808f78535b9fc6c6bc0c1402e16f0b784f9a22a30e5c6c1932c2063bc558a7b2636c76d5c0cb77e6c5518b3b31d920a23b2bfff3ab93fb03b3386f670b07655989c5185d5d393631e9acee701dad333379a63efbcc636bf2b4fa05b84a375559079c5909651e481da96b01a771befc7bc407db7d9f94b819a468d443a7aa8c9b4741266875268602336c1b1160a4ce5d41c57fb915335c87a72a7345316373d921a6d0ca09606154199c4f06c244a7c568bc5d82449149f92ad3350b51d3c474e77a3a1053160570c876132434aedd92c8961b95588910102c62ae1a75479175cdd666ab85478ebb6133920e9154441f1383b0f147137614dadc823f1848fa478b1f301d3f745c647c216c741dfd3b3195483f24f1a5313cb458273ffeb559689004cd534ec1369b0c68a873651f7413037118c6f98c538dab9c1ec649ff2301a03a650cc0c138e79d15f9079a639737e840a7dc720b173bb329a34cf65418495e4df2805a491a4c96b47d452725850ca8eb3944399f9d14157fa46b76f0891525461113766dc025ee1c2e735198c3db253a2b8a566cacb81b65a1c9473c6c6da9743d780685cf83cebb441cdfdc9fba20a9ce2943759c4d08c57a0e74bb0e1888e94723169437aec19aec1a2a46c81ae4645de32bb18f3527f4dcb8221a0f7be74f3f5a8cab0609be216465819fb858232b008a855c9e6b54439a67aaffd9701967bc46a274d1d6ac1d45cee7c54cf49669e89a44ffd7b73b2a12327a85bf5938e6975b949c03ef3a1d824ccde033cb175a3356c8a998e4c69d94630a896606fc1979dcb5c172a54eea2e99d5ae331bc64d708fae45c514a2544843ca59c3c122947bc3660da7357ac0e33f55485e79eb3117d14c42ec5c56653e0dd1a4e8205fe571823098ad8d9844a25b92238063a92040c500cc0bc2b25b493e4cf69de95c87b03b773a796d13f42014847727345888eb06d9251aede24d03e292cb452a3a38a0a461c8b4f9cd9f87b09bc0ca98e62e5027595c24792f818865777a346004fe3b5b587452648263aaf688154526d591acadb74520f3627d7395ec7b71dc3c6e8414985d591a05c88b6455870c48b12c576d7b328b88795295c051ca6293b0fb4dc61ab8ad34cfb114a4c7e44ab4667d4b1948c83c28baa424b19370afe997d8b08e447a2eff376024f5ca54dc8ec0972b96f057acf5a6b0d32869fab3e1797ee2571b1620a076082c4ba6799c27b07fb073092a7a2f7aa110635cb94900e487a6664b318f54956039c57ce509ede489faabac96cb11f58c87708a8ed3408a526701bfb8507d67415fe64e7d41081ac12c21f3092af02810c604f02c4064e348b4f98f6be65d87650eb147b4694b12c461130f3126f8f71673e4643b2147ded2a7270ab360f6303dc05b03a314bb776c488318686069c3a4c91cc62435e829a6a8621ef5cf838311a4278d7f453ea5484d32f94c2e9628f5532ff93771dae106c8ac9cc80ad07d306b1da78463a08226657680e5acaba6819543cd96194aa5973d4f7b8682b13a07e7a5194c91ec95a2d671a2627710a4c78aa107b3707942d0c78f3eb2b3a58b7833fcb0fd7785e349a2f0027aff079b62a68e3f425122f7bc0a0b4c053a6696f90a67088f139b2a39f542d6439091e4c1a0824734d8b6e5e6483f48ca738c39a5bc2016c0746cfa9c1889297f5377d614acff2833ced20abed0aa6c7024221b73d53610575c6d91a262a5e834abb63cf74207437b31b1e989ecd7416b2c4e7bf807b5f8973006877e204a42774c93a1b394e885cf727b7fd286def2b4c8d5684460219c31b1b225aa08ac2ee1da3922e935e981b3b5e2c3d044a784bc965a580d3052ac48000ef6183b94b0a870e65207ba8029c0bd34a10443e5706792207fe2224da533d307c3e3077e6e1cbad064b0399abc6f445b651864f18b42e1a518fea187bdd08072e47588527c3b9a5eb244ae9e910f93c92b69faa7250bcf38e68e9c3a2b2b733b18032f37673907097a4cd65a9b396db4859312d59113e07b39746c52126ea697a69929b1b625b5ae1b809ce9a811d13cca70971ae8bd6ad223206691af6897f136cb451699e0a19739d52d60cc89dfd654a320a79b2c7cd55116843239d6847b8bdc1efa29cdc0a979f0e3a8f225a16fcb7996fc8ca3e79fab55b93dc2a395117426a17af4d404151814cec80e856b777eb35085f1ad14285078803c2d76ac1d25c3f8609aeeec4adbcb64136516a2077cff4c13748c5d1fe6386782688d944e0027a2f8c9af77b79352ea5523767cbde4577877af1f8017e4db244e833e99dabd0fc70824bc3c50a38275040446a5c74406873ba0b5bfc2570a406570b424727379e5c1c39ec194a29a8aa249844bea2a078c1c0f25a400d6bada80731a00b87bb5a19325b4e79b78af0bbb2c52c3db38ae552ca972c3927291145438115a952bf2a85e78f6141e1cae8516b056e614b7015017e71d54268ab9919b7eba09d196768d99651d60a334fc443c8ccd9064a420263a68531f0e86cdc48776a3d44b4726916273a0d3002de095526257bc5e6246dcc10814d1907885207a53241a184ab7e40d87148a336a33262a4bb0826b417abcdf957f68737adee682194115348ac58814661765bb321254a874c4a3c6745cf984528c2b9726ac35441015233219e169d0ea761425c06513720881b330185b48bc271b275dc024419d8761eb23801eb704f6326f162656713acc2915a1a6f877a583c8372cc391ebcf2cb22873c5bd22c58c80640cce759b2c09b368ab4ab504c613493479b7725a18811837213f9237734577af09c4be0b3fe07ab78b712b0683060be76920cc5fc56993e56c7b46a543ad675b2d13357c008911320e0d292268768b8370c66ce757af191bb703cb5732113acb8f02618eac98693224abccea04e7b3157c03b27a3cc4f0b880dc4877ac35077c1c2d5584b971261d2c4bb767c75907827ad7370f4074721445e155a3a1624cb4aca373de6947f148ca7e2b3c93605e706eddd992de62eff56f6b49a156d065d85eaf0aa21ca229a20fa4e1372a410ab1c4ab6e7eb28f7e7a15a005f92400ce33db073d49b53871594a88fc45e0f94207b5f0f2dc +ciphertext = cd3583987c6395ecdc3ef180fcfb4262be1bf772a99b337df5eb36eff544d69276d7b4608b69022bd044fce397bea7d55a0a37807b53455ac6fdea5f0435dc71e096568cb19afa1992770c96f34f9f2eb0ce27e5e3200a47bf36336a1104f9de0d11706098fd63bb97123e29bbc4661a4f6237378e23272315a95b587ca6c289dfe0391fe12a18a257e3aea5a362dc0e60875d65ba9524999a010c23d2cd094744cf538e461cf77ee3ad166e54c8f7d2a746998d08d25ee34d5c8127c1f2f13aedc7e1cf874c087e123d9595a4ca40a482fb0696871438f0d3b07058131e532aab8041e95a42cc35b3a5937c59bec36be6b7b7773f60af694ebab7104434c23cc78e122724a912d9921b4aa0b1a44755161264b6f9cec639d4a7059d0d08ad9d1e2c1cfa9f0689dce97c04f070712bc54e19e9c053710f9ab5777fbefca8dd81761f93883f861cf5ab169fd701a39b9ee3d3ae5d1f961ff5b07ba15022f51deb1897983f2bb94050e099b573c2268e788e406dcc1e666734e1c74305bffc3c9a6f6b4ee4726694d5ecf499dc6059a17482b672df791ab1495e3be6a1cf0d7cb6a0c88250c19937f5233cbe4c2680f31c6b440c253fcbaf8de742c2d8af3f3734b0e8c433a7db21b105bdcf8c5717c2dfc8db54512492b0eaf284b1a6b33726d055d5e222ded00da6f81bdc30b728226d0aa46b64da409e2f884c1972fd4d123ee016b9fcbd7abbe92fe028d8b36ed4e9321c8baf833c0dca79d4ba16172adb1225d3db8f597bfa40bf58854641743b40dc28e8de9676f815eb5244499cf8b4a15d83b9f864ac4e8b1c0fbb684c3c2056abad006ec44b0c18ab5366cccc3f4871ebc15cb94d61ab91751d8a559b8dacea2b66409095460b7b352625782ac17c976936d75995d74c6f89318176951474c07b19d31b9bcf63ca772af3f923528839abd1929ca63fc6cf5d67435c34675d4ee6caf474585c65654c3d79c4e6ea59a42e2825c229a364a29ee84eb78f63846a7ff08b21fe077eac0559b91c91452e15147ed5f7109c59b510856f11a63f355923562aa0434b2e16d6067dfcdd619dbb80a68be5790c195e0b9d3b9e9ee13273290fab34969bce02c5eef6867b0fee382a7159b4c927bf56d29fd0d849831212386a786c2a9bc086895db111c7a3797a40c9236f425454380fc5a1f96e2df779f05446d123cdffe072aeb9e64f87f3f7111470061d87ddd0b8e4dfbf1aab0604e90da29ea0659fefdf17748425b2730b8046af71f948af2ca5363eb63d2f0399a22f8d3c01414c1291a5dce3cd654206ade8758077275458c95003452c1078cc787c6a4eeef475b78bccb0419c0716938a1ba1545cc87dfab4b18c253d8b7408093e2305359359f80bea22a69709a89f4b1a70d62b529d14ebe929a64132a1b53c7b6cffe3214eadfd77d385113fe3ca4a743cda6af120b25009b5bdecde4d956beb970b8ec1e2c5b7647dd5bd099f3f843c0aafb2d00e26b1bb368a82afbad3819bb34ab810ab55222ede8f28486a7d +expected_result = pass +expected_shared_secret = 2a56a7a6d5b4c0500ec00a92e322e69be9e93006240889552072482966c54f56 + +comment = Official test vector 70, seed: "f68fc0314dea88f66afaa76e6c9b6804b13d4876924410d1f526fac59a62e26c560b125b1d0f8b461f1fc2e351effb4f" +private_key = 84d7070ee80107976bfd1b0db6cc33f3c98178817d8460b63dc012311638aa43b253a705bc994931bab38a62c5d1dba793b8437bd600a8725d36aa898e353d6b955b80f8578f855bcee194ce2c6e4c6179ade8176e34578fb24b6d60c395b674a7a8a4c72550f83a09d24582f94125690428a4e76972b77a53e852ff3718a440b67d6521ca699e5a8c434dc47a38032129bb76bcb4c810028938fc94f1741a1fb26ec95252e259b8f9176bbad8763cb63da6f295b460cde1479be8d6b9e3c49ab77845c21c8f3f88741759461e339f76376ab81b4f07e7bf0db861a4ac5b24e09d4144ac900b43cec07f1dd2cc4f7c976eb0baa4d8637bcaa70946391109981e978ca023313b200092d26ccc823ebbaa85b8ba1680636d0be656f01769555b058af7825fa00d10a38b0a2b127a773cab406c1d4310a0882889759f20b44aecf68dd24416d9491cb523a1afb1a1ed87b28e5589f4059132603e228b185d426f49031af8fa21b11cb0f37c4557f94b2f158340921f95091128c5616f54105d47253f150ff335081d231f5b308a526b9506b03e0b5c6a88394f0c9c6e7c2b475c7508a3a8b1e0d571d1c364784cc8a7ca7ae6c2b24366a0d2865658d42a8495b24a16c9a9d8b1ea77332a1058dc292ec02c4723fa7204e93eefc24f10c4877425975cbb6142026a2aa649fc6c77e8c72dd3e5b0d9e9495a02c251b12b7ab51f6a9853bfd151a4873cab4102db62676496a8b38c8038e4c6d988880a6b2774875a5fe69693d9726af64a51d77a03e523bad8b2a6dbcea137a051d19e81059d07437e38db7891956c5b2c8abe282b5a02a5530c56a7b4b46daab256588b04344365313a3ad94a2d7aca4ba7072cb9259e2676a5c86215b24faa159bc18bce05451c69d2699a056ed3f6a7f2bc7676f11bb06cb72dc53d7ea6bafee89797b57445f3ae11262543a2882b863cdb455d5ea03eba56946dc61d798a76bdbc4ca7f2a102c518224a2091211ec4d251ccfb08aa2598065a79b8b61a56e925031a579ac5bdeef1a6e0b1381fe180db008f19e775e030052a624b91d1550fe5365260150ccaaf228acb8fe471d2c8b4b27bb57d62ae9ad9ce15a0b72ed98b8a619cfdd3a17ada37cc455d77640ea327088e9c33d4281b65dc9a27c68d27088b1f2a5fc586bb0993753e62a67bc3886048274ac267a95b42aaac3e60c2699321a79301acd350b92899a2c0ccc4703b243660a39c5901e3b6bb146c588dd3431c4a5bead8aa29e04f8fdc0d04783751707cc25ac359952abe7384f839b42d9c9982dc66a21c7fb5cb7316748423e25005d389bcd56fc498080f88cd75ec974ca9ce9f2ba995b50eca85cf09612fcbdc492ccc6d0662a59f8cc0ff3355f17424abb6c774a377b81c12b9982f60777926ba0b860123434cae8f926e902a5e633019e3c62087a1bdddf2186768baf91656d903c4f1ca88163b8dca041823bb6ee525583816cdfafccbcfe63dcae0b93c46a14fb72114194cd084c208921925e7c55ec807ee6c0a8ddb71c4ab3bd5836b7fa160009dabd1e5498d005718548324b0339ec71ac4a75c81f522dfd92b64e3676b337758490e068c3cc747bc004da30cecab9c542ffce826c0c8122855031d7bb0ca735042bb43b8ec6ee13061046acab9b873b13519c22678ace2b59f92aa4e8269844b1de5e3426d66c0451a8d78cc07e719033a536c2bf4c7397c64c6478be5f42a06413b8b44111ad9742b8b020711446d63cdd64490c0917557b884eb429b05dbc0df7acec032adbba55d3e104f7bf391cba28b903a07712a8da3a1a92f5682cd650a628573844032a307704fe77af738696e974181a85c5ca1c14f7546f8713701115883480be2cc686625a37b62292367b5e1546f4189592639cda4cc20974c6a87c0377d15b8ec5c84b70233b64800b79c62e536553b43263532c6bc2b726970cc58bb20f0c0bd35b317d9b66b327bbeb5175d9611985ad799ebb19ad0587aeb856c288464d983256649827de9af0fc79afa1aa5817c06d3447a25ab3eb8248167ba60a4462ed47c007107b1eecb630ac4707b837f24d26da46bcda77c4b6ed5b4118b79294744788b9a9c21b168565d9398b41edb91517493f5fb48ae5cc04fb95bb13a8fcdb8615262408ae25c2985189ba8ab99643624b70557a984011474586c357f1c7551f0bb069336fe85bb903040f48c4a111113507055f2716d37ea6a6ffa48f40584914c4738397430d65756f298aad345671077da8a4173728364a493bdca944b1879b114166cc3b8293937221257c2e78f8f1c7794eccbf0368ce34921a2ebb01e32a92255a676e77c39564b575aa5d1f9c7d1388226d636f4f12c5636b2e2f712c59ca583a811bdfa56448c013cc820f21a36c3351aec3c2c6f01243ff47bf17181ecac752108c43a97729c6b9472270fcef5a7c08665f7aa9faa55b152163e8446c1bee5082192b5eceab269ec13e7879da3768bbedc0a104c5e9496c63e9507881a4c8e758211076653f369e58b59bd7cae5b9a64772c2a84329e43f492fecabbb56514cbe70970f361e6d3c6595065f6cc668c64bae7d587fa8bbad129136d5c9b6f757a51e653d2754aa0e35307845a55b80086d5a0e86302d306b9ee1550419b495d424f701a098220897fc47333d5a1e994c8584a00d79804e4989a1cf02dcf9a0ac2ac52be1090bb149778235ff6091075a5360ce095cb705c81e3be126984f51aa471f90ff98c21d3989fd936502a8a2b38c4a2320a618df751c7099d1063495a6a5936c744a094cc1ff1b04ba8b56b0464e852bbe06176034cbf5239cd2c687facc2cd37329adbec3a77b4842aec40be902e8af72fa5805345668408cc7b6073097391921e765e4d76025fd5c78e246da268a4db21446f2cc3273861d2081daacc2cc775631927b709dc1fa8993b1e92619590c08940342219682af351495b2e0aac74786c897fab196abb609e216997c2c7b283bfefca4b1f2b1b6e98991bb32424321ab7d61e4d13c44dc93295a75f6145bf2d4b8f1a03109bd7038ef4b16fc15f44ca6ea3411b68400eb20c46c11cbb98201d705a6cf4f4b792aaae80d97a6ab830576aa651142793fa7da0b8bedd877217d54897375ec285849a79268babace85176842c601ef8c740a21c2c5321436a21cb968ecb5410e811912cb0962f713322021516535907914b86e9411d27cf164b580528768ad37b57300dc201557bb0a142d9416ed7afef52d284175dec18f24979ef5ba8eddf7caa3880aec7b42a147e75f0dd62b3d066f161d27dc34e1a2f4b98b14a2b221d7eae26a593bfe432487d9994cb480656d8128601c28b1def8d393a0db283229f7c7383152a814e7cefe8ef9d9768c473 +ciphertext = a611a3c02dd6d3201596fc2e819f631c7c468d7437c5cb5e1dd20d69079b6397e4735b54ad9f14ce7764e1f7665ee1027423f129ce329d4f89d967b7e9a1f1851a86b9241695db93f77276c8c13e115603394fdce1e29768218f10b051481ba1477b0f50424462f08232899c6d0da4d1760e9baa2523a59ed4bbaa1d56ba1610174e99c81d56aeb8f9811a88cbca115e98b4f16fb0593ab5ac3b86f2c0c1b66d8be9d2774b66c0c2f0f9cc2df6ee453d97f0256ca73338643438b03e3c59ed591646afad1424bee637a50eca224adc62d447c64c3b18a55aa01b938d66ab90099a76a48f201cc66e067d4db6f5b4f58568eefbaa68fea67ad5eb8c253bf4a1c30ce0c1993bf097f9a9b5d04a92fbfe666e326b92ce22de4f11d3a87024c315e94e4c9aa404cd5e4d2ec1d2c7d95657ec50e15ecf10801329ab243f1dc95af92518fb4162656f1aaac8bc8bb8832a6755e29d7ff78fe1e4b93578fae62c4e6b2d896200f7523427f55d6305b3eeb5285a47db7c5e4f628d29d2ad39af473167625cd848efe6dc72e45d4b531b4a0af4dea4206a6087d7a494f7e7e27ea24b5650fe06aefd954da1cfb8691c10957ebfcff92a7683ea584b112bec9e0a67f831b305e72b7f3e58f790988e96ff9fdad1c6b2b5f5f03084fd7a7d6895f8e7bea32a344117dc9be191e89abcc8888b72f091c0a742af35be4af72a657e93df0b48bcd602e3a7141d962d692a3ee90b33a625b83945356b13ae531a5d43f30afa5901bf791f22650f3f2faba02817dbded8b9712b7641372d4af4ef2916b8cdc05bb5800c3289388e2fdbf07f2fdb95b154a2e1cc6998ece7a514bedbd489ee21cc1df314b4fbc452c1378bafafa083ef00842e2dd585668eef7b00e895f013edc2611ad882e76f9b85074be087bb9f8b45990d1a65053eb561a34c8cef2b61d017d50055ac478e82c6fc881e64cef53b0598b0e354c2042325d5a55fa7d592bf8bd8f01fdb18b391a069d3eacc373765859468700234138d0cbaa4cf64862ea30b66afc2ca9effebb733e007fdd6fdeb483d5d6e3523d32092fc0fbf94ffd7918529e192603a609ef632202c37f49e34ccacef9c1be4781dca2208097cdef7365025141ef427b789fa4da96a07d58c2a22e158de7b4394c38e17d98b1e363579560199088bf6bda0e799132ca391849ce59c0742282d20e2ad70df32d8484dccb5247322514f6ab1588723450f4245920c6551088f0a2d204b6806f054c185501b031b0d1885c33ca17ce9124edaca319c16aeb066295b66b86b70ea7762cf502a0b6d785f645a3283e2f9c97fcd54ec07ace7ca8ba0fefc013c201aa18a3c36ea8592984783e128b076d5b99a237cf99bd449d2b92eb66c1c2503ff190ec0eb172f6d6274008c5cef30b5b08a1b295d437b357fb2febc2bc7a480ce7b22fd7af4d2805d786f3502d743fec304d7ccd0c42d25a7062049cb778f4492ef4ad90a97ec1c2e14ad79248c325e297101e73d65960aa0085f688d41cfa95e31744e5e6483 +expected_result = pass +expected_shared_secret = ecb62b03f640ae4a9d89685fa0070efa93c24dfcff0d555142f9de25b62f861c + +comment = Official test vector 71, seed: "a229218b0d51f58d915df549901548fb0722f352c7470900e7e4d8399205764a319bbddbd06c00e8c5932722ee5a404d" +private_key = 47318b2cc6a9d8bc6ebe7c12489017c03214325b61a2a8541fb783c448c3a31c1d82ba7906b09e3512af8d00d0706a3d391281f0315044c9c4f92b0ad72c60e18637577b942a442589cbb466ac344438750b86cc86b97d16339a9db0365e6696b183041543b031c9220e82bfb89c21a5b0a0d301109568b1c00b2b878c9284375949c88394f141abc188ef7607cb8151bae654a7b7bfd785b44bbbb5c5a68ca5f96bfe5abf179cb83a58aee518202c9119c80081beb38caff81f5ea51811f13be9491f431b127783227bf9b691031145d6a144213fb4f1c89c38c00c81abf075c4415586bdf28b946380c948b94d7a0c3a793100842230663f4eda9174dc7214884e0f552a50d16dfd0a5ddfa7920b0aa50437bfc735a546f5b0f4bb22e174b061bc80e91428547576b6205490ca3934c9b15fcb69611a1639974478800b2cba3d5243a0e2762be2f87035295fff40b56be37ddc71915434c4af6472c1e5c519506e691703c49c715b50b360a5c2fcdb79f59c7ade27380f9905eb7aa6f5042c6a32bae657c699eb85a53395c0303e87e89800131f96969bf45b3f574a40ed813268603a24f1c3180607814914775350b88a1fa7e1034c9cb155879668950ad5950803abc0cc58bdfc408fc1f2bf7d3a2972aa66b58844c048150c0b8c89aca3bd3269474875bf10a94d2b9ea3687ab9547ea59731b73a8849ac7b7c4b946d70b8b87c56b81b77024503ba87485ba3655f669770410e89fc84925b87c008c3cc13c7b9447d82fc2932a1c641230725a422b6219d9bdb5ceef17e121132e6615075e0b26cf71e91a1593210a09507214716a3405b2503ca5f29d4479914cd10b3457aa62a6bb71bd08736e1519e69f709b8c8439b4441bbab5d0911bc6737ca742747ca592e5ed734a8aa1b77450a9d4188e05422bd9240e285865d530e718c6f1a816153cc27414446bba8129a1716171aa60ae086ad09951c2b9aa2744e0153cbd4ec9d1736908cd78e7cd75d0333434715c517633ee6603f7993083724a596069f3270c071b6bab955844a081a896096f76059b9738d819ca3b6588d5f578058d28d2d0710b2bb2e307a5f9e18533713c41e172a99614a97c00ac0a83a25526c399cc9fa9b74cc4774830c8e754231b04274c90c526dea7fe3d203688114e7a90d3ac02ae69a139649b754581bb56825a215c3ba282a26c036e5d5785c07c62956b612fc37fb73a7c6ebb506b998d54979ff29781cd09ccb64993299745b34b6d7f897c0e05e1a6966e6757dbee29af2eacbbb7701dbc39294db584c7c3a7841112258951d88145cf73404a17adb8cc4d11788225557a83b652f95053e8507093b2a8b00ce77e7bbbe83233dc18880f2274472c05e646b90952fe92440d164092a058d69c96869d8a83377a2da92c2d668607dec3cbefc6242b49a9da97c19c2067722c8d309cb898593b08b5d8138bf2fd1c59081614f764acb392d7feb205a85270dfc1129929cf7b53d41031c92944972b8bc9a9c494ab384996647e177a87a101c45c747660aa4a38088a5f7919ca46dad338576463a1c1425a6c4409e2ba8217827ae83bed4e6c80ab528a6bbc1ad58c868b995d9f72c77e84173c9ca80b3b92647a1dbec6bb883a4b2160e4dcc84c89c6adbd955cc055933d3238e325fa826acef899a555873a5b9c189117844202c65e40eaba07d9fa94d421bafe8f3a5e3346b6b93cef8b75628e4418e2885660b1d3df32d1bd50cc50757c5227928b32e0c567872e66bcb58128b15c8696710a7b33bfda469128996f6979f896b93d22910383c90d0d877a56b4b7c77c53c99128719c2995497dd36877276a25fa8b74a4947e223215a314a075585da457daaf17c41711363950ef9013a8ad95f9e07635546485a3568aa502d608321061a6999057e705c46b6691183874fa9ea38bc392f718c99ddbba59a1865a135207a00058a408b6c61772ce777456c92b28a51ce823f7524a26639ac64aa49d6903cc2b2b5b60b59643bc950230362caba6abb5ba4f6964331b1f62099cf385be3f5b43c2b8402006bb3386f5a16354e45118f0b759c3363ab4069ec2c4c15cac4e07a24fab0c682548337d157e6ba213c7801dc5a0a7045a442b4939d611469746e9da665e2e910b51c56b77a035900b25490216c0bb53e04173b3bc454a7a17d77283ee278e7d30496301480c8c1af6b3e1dca213b174f968c8a45a3ba2044bddb1492bef2af610b4ed2481ae0823df53282ba7750fbc7a764db58e3789ccaea778083c27ed101e3c75be5486249f9818a08047f97447773c7dec3ba7c59aecb5778a09cb7f1182b2e0a01c182a1bd13ab7d72af97f96f564607a9a970b35a6adff275c35c22c2444ad6e997d821c065ea49080900e766c0079b7acae7bc7cb3b31301656fd39591e0bfec2c33f05a0dd633bba463781f1c519d902342bc12bd16c1ac8305ea9769e489073297784ee45f99b248670749c728385f601fc84c1ffb298bcc447537785226bb5de712b7bdd04a0ce39226919105f06ecf6bcddb0cb5ec3b5505b5a169b05480b2587ce4934d2b232a44a6683920a81a6038c59497c9b47faa62f4f2120b15c360616e6573bcc5a23a88887b50d1a7dbaa429bb00a9f87b63829b1b641922425016c979db571ba0f1a139267bb362c68f47689715cad6636402049c2b5c616c321cba6e43c1c1a48a0e141cf3a71c0099bd183a5c0e59bca9a2fb637c1b534cb6687493eac495acc7c5fcc4898a52e44094fb1b7014a15c88e11a9e7244ee53c2d5b16708c233ed37859268501630a296d63c094f563f0e559c59453abf05a93722aed5ac0c3cc6a0be7890f8c3191677c21f70c8153ced3e2bd96a4bfdce27f86b809d8ab04dfaa837fe030f420b845d23c78cc82a2d7c440897c91c3b726b4622445899de72bfa263b93c3cceaa8500b4b0c240046387b25bd98b5901aa670180a2a8b27de424f4d804a68dca2e044430d701b67e9b4af33c60fc54bb3a94a8b8604fa5882a401a5647b8dfbb20878e4b4094136bd4b5bc14288463c2e87f0cdf6d9497fdb5f42f26d2f9ca2e048a757a59b440c2c5642232e714d11fba959ab9ac52126bf689864ac98cbd1a633baa3ecf75c09c4c6878994cdcb3e882798ea02aeaf39915dcbcebfe2ba14e620f53b3d83ab58bbf99509033db99b0acbac29fb4674c95cb94982ac398c2771a8ab6da1ce9b0771e3d5c2e7655b4bb99ebbb57adbc7a540f228114639b811c5c1d3b614daf84266bc4c312fa43c4109dafde79000ab397537e68ccf14e8b7e57090d8f648529dc461ca3950288879e88116acaf57b4a2b6d75eac6c76ced1b0a025b40a55440712ad8424672e761e9bc400d63812006f +ciphertext = 06cbb7fcb9fd91bf6cbf7f1c8a47511fbe998d1e0c6c20ec92ba6c6d86e71a22e7233c44494ffaf7c9f1075222019d9a57dfd3f9754905a5ebdaae12d2e2b16b537eb00ab967016539ef46700d15ea21fccb92b17b7edc5c87e58ec518f167acb81ad4b96e4e4d51e605b3ae45fa0d6816c9c6f103bee9687ff098f1543fef241b80d1f6ba194fcb9f21ab1f5a90bf7053bafd8fef1104ec367de4525c6f60b01180b9166dfb66f192ded9707cf59c16761ec1970eac7b031821bab340f23758daeb9e36ee899ceed7cf2c42017f0f808743a6f7b97fa7bcdd5a35a72402da6eeb5d10e4a1ebc6eb5489c0bad8d529fcb47f4c6b4254ee64d31ebb149c975d5e14b7ef9ee3fc64bde6dc0019585e66f19a99ffd1db55bc58a3aa88ef7a575f2383f7e781f8b41d36bcea14d03fa9bb65a243dec37efb3fc19622340ab99a1183fd55eedd7c4d12762b7d5de711dc182b9281a5bb75cca2a5d179b2213fd7c940991a30b88297f0a9d307ad443363bf776599ea76bd25ffe9929cdf7a9e148f23e51ee1597e63493d54c4d9487cdb8f524b5004711af2276cfb8377cff0787c615d38536167b8431837492069b2667cc311d3c1be3381931e702822c04ae2041cd3a9e3a96527efc1f427d60aba9b4d0327537346bd853bc6e9486013ba744e922931490b841aa8bb1396f05a11bc1346c86164486add3be92c27b76f1e9edd2ca9150b1ebf682097341fdc85095dbaa32b7201af8b2672d7ac76c5d2eceb2b14eb911c48571a7fbdb6246300701122374e761a0ef1d6392498ff8bc3f82f77a555820e79d4d99e9954770f0259b54f01757bf9f19ea655b2baf3f4edde69613cfcc1cdc3c5997ffe893cb2c65fc70319579495c071ee08b18bffb1066b3202bf75313e45894f328a56a33299f3b9bdd413cf5d8e7c299ee920ea2b26d5e0d44f994f76ed0554ac767427d73ad1604236634a1d294b1f246c544a2aca45b0c35a7cf2f8b66390f1ceef3209f0562c39a5f340c85eb267ca91f2a8786d0bdad4968faf8165c10e2cd52f8455fb7d118dc1f75517a7ee655ef7069840b8ae9a03b788bee0ea758cbad93806896028dd050e6f1a7e62871e7f4b69e5beea271682dd667f01106dfe97a423a4ddbe0efa184985c25a20fafaa0cdecf4c940c43d4b53a10508e13cd703258ae06072a88a4ec02913b6f3bf7a66fd7f207dcb8ba2d988a547fc3d1d267746d0ff35c4975c3814e53041d2937a2a19ca7a639792c132a64b035bc6273223bbffa5cc5b65878f47ab6b56943a2a2ef39918b2874594f803dd5f4cb5228b41ac59ff34dd50890d0e99f24891d4fc04a6f30a4311f958fa8740010f74258e87727f855a4cc466f5d12aeae18a9073071e0c4be2fc0cd130431fd753630de8d347f6949b79c046c0b90e4e636656978f3e5852bbf6044d9964747de482b448dafd3f7b8e169cbd1a56eb7a803e1bf06dc11bf65a0adef9eb33eb2aef852ffbf03afb82459abd087a9f260d776de5f735a311318f41c5273481 +expected_result = pass +expected_shared_secret = 6cc30699701927e07b559d708f93126ed70af254cf37e9056ec9a8d72bfbfc79 + +comment = Official test vector 72, seed: "6960f21c7350dcf41b4770c551dc8692d8ba2c0b6e162c589166ff22e7a1ac0f94c2f48504a5f7eb0da094df427bc98a" +private_key = cd28aa8c74142a0508c2534d5adc64284806bb2c653bb9783adc640e9945c253af86f57c19b42c6697ac85d1bfa46b5231559c11f5a0da9b2bf43c40001d4e6c00b81237343e15a41da190cf8940b641a4b42b72d9cc8bac681369dc07d80aa62f135b0f956355a4a68e575f34393c42bccea68a7a63c269a5821557299ff63b9f0161368f6084132c8b56984f4d1626d7436dae2596e1b24a86562374b066d2483a1b354fff9766845480ff396f6ad089b724b0f15a34c2288deb05a8418909803cbfe2f3c63c30056f358fab798f4e385eb0e35ed0c38ade7382787a2502d117ad0bc6cc0a4746aaad23345f10074b21970c18eacc898472766b2313472dd3348c82f69b7d961cd35a8c61984e7ca20ae6382f04a977a72b532a1395707cbb7cd595e0da0202498058e59f22e0c340c438851674e3ab1e0d872fda3baa7f87b67f449e6bb461bdf1cd771475d5b59facc30181599ddac8ce68dc2de5741b21422fdd512b39d9633adb202af3941e323c9326297cb58086c3282f722c4d50b94b32153ff30b91f07a811a9d9e07b7667846806b6f7071ae29323156b668f831a9f79ab7949cb363dcc8d151349db4b5ec1266e7f5af98105c95c0a4d47648aeeb01fbe1113948b407fcbe199bc2cdba40257745d765c6a0766012f19df41a770e96cc95d3cbc70549f7e61914a73dc71062f2a3a377ec26ded59e0cc85b11a74f43c3237c7561cb7046c0e660b5bb0ba0634ff2b211438a9b9b906f241b04b2439f29a3cf0ad9128d683f0c2c26ca050978cc179872b1664a751458c072106fdfa07d97105188278268b0481018782f361d08555fe5799a0654398285b378f7a9f143ce20673184c75e8b662085899812912fb8a60485921b2f7b3feab95cb7aa327d8b9dbcf7c7256a131270b731e33f8f555cf4f8b7a1e6aabb4c83d2938b7b21beb1c3b3cb3bc08bf52fc1f5715fa89ef8e205d85862f6a2cf420592aa24568fa0b8dcbb90d0b654c7c82c7411b6c3e219f46c352aa034c4fa0aa4fc47daac204b351497727b96714359a66466f6c4cc2b83bf6b87785367c7116489d6c5feb975e41c4bbb2a3d8fda920021c523227a438374d96032f62c41b17422584ab5880475cdda8b7f4844e5420c25d97235b0acf71012adab59298bc80052aaf1807e8015695d92184741bad318ba9ae27c306a2e42c80512534963b70b9d0b7f5ae70326c33e7d43249e8c9ce386947c167c8f33c88947244989c45b4858203249fa5a136734153cd94f1ad467b5043f7ed77f58d34490d1b5f9e323f3e2146011921b8a9f94e419bb85ad965443e7f4a73534457be43ee5f677a63a7738762b799600fa0b9cd328ae4cf507c1d9845eda77c30bb7c39c618afb402cd9b016f0092cb61e8be13a18925ca122a142409b8dc637a364093cd76925a194aeda21c61709255ba2de330693b888a6c2c6f0c39fa5b4c7fcfbcc198b3253c0abc5ab5edfb438ed3a82b72b5f54a39d21c37879480c4a648f182a94ea566c598ba4cf697140a20fdf4cabbc540b80e8664216a6e880553899964a7b239d00c68e720706512cd2a58b9c49bc0acb90283b506ca196f7855ed69ab21f059a11fa3fc4670d03a20a0337040adab8bd449e0beaa93b07512485ba33f291af1a44540bd04af4a3dd2a09f6454d7304d0944674a580551061ba5f88217aa57c10640dc1a97396f138c1a32cf40b0bd9286f88c4087f9084a9012d248c63efec072d77ab0e736719a23a913b7b8b62aaa5bb40be97cbbc1c29edb283c776aeb9b032e2c2691aec9ce89617b84b09712b40e2b713e566c714e0baa75957d6ba5062ba76471357252b72ac66ba97e10921ca2313a232a6ba908dea13645b5617938381fbcd748a11f61cbcb615c458d056f0d55a449c4f544c6673322ef106010cf139d1c586aed5a5dc210fff7a60f3138c34a4244398b692c567ade5beb55c1edcfcbd93183e1ed0c2aff5bdab67b51e39a58bdb8388d67cc1ec0d7313b7ec8a56cf3c9b73214c4ada14592794749b6834e9b81a2ba47de929e9ac7856b56549f40f38f0784ba0cdfc195952d3155222bceaba0e3c233ff7e19a65822437217a42721f9c060ac2cbb9c4e6bfa9fc3014d8add7b4bdf78291423511f9874a07e06a82b6369fe349e08333c7f56b7b7b808a0b4e888a95799a2df4873944cc43eb958b1508c66e571268e79a69178793e7a4d430507e1259d01c86f999c16772cfb7b4b330114ff55a51ee5407bce95a6d27875a91773420c24f8734b3023e9db777819ca2163c431de46f22f38398d46ee352b815b6b07e1a242b01a4230b59ea8c7b0c3c3dbe2b7c77b4c860660daa04c452e391c710722c67bc0632c072fc1e5296a2e70932d4d38efbb96bd636bb41260a7bf27cf5e71ce3708e6884cf0b8584adc3cd3b5c5ee1003a13731704472a203c8f9b49534309bf2b60cc3e2448e02b5a46d889ffd78fbe722a709a2d5b5c8a7d805bcff44052c553cb990ad016079bd87db7573eb1d431d1e549edc8ab56a0bf52999f32555e8ef2b03182bd8d812cca638055a73b548c8b432a2a7d4a6a074aa212d50362d1382747ca8dbb95e03945d95b995d6346d7db47b24b86e4f774f3767db7996335b789733cb251f9b1edd04f8f8cb7af4c947af224dfe0af6a42c7b65120b9c18abe9161d88cc5c4780fd74403cd177f7160281884a11cf686f0f523f39cb7ad39b780f13a8ee83c0d646f9d85babeb306d53a7df53ab00b5a1aa8c215914a48222940fee10d1939ba5c93617690cae113a59de071c969436b3771fc50b2f4aa641a4c852922380a420fcdfccb81816f4b474a2ab293a4d97b2b280cef031148ea7e4c9c0db7e7cd0e50b203a6b7519c3cbc8062c9b60b8b81cd956463b8180c67f34be4868e3ba94b9f0226d9f010d9ec5ef0bb62c865c807184b96526d94170af9474bbc100530f7c77e46b98c2aa41f92a48d8027c855c7f84684389bcc8e7c67164a204bc5c0c90828faa439fba235b6f20785cc8ef4c090a708bfbbe26e1933886cc96ad9b4562a119d4c66589c85bf0e55606886206734142d432c1b032e0aa93ee3731f069a8cc069a03b95a8ab873b447a04ead3a32be3054af834882bcc581712be18539b805577e50ff5d982c98c0b0dfccc96a4c6429281068c8429997dc17a6600f0736b8453e3d77636faa8d0ca89f9193bb34819ca1117ea368ea23198ee11345c613993ec052992954099bb9a086057df0c5465326e1932aa50da74aa8435d9294fd6b7c05a153f3082f68b15681cca5c2852c18d6e88bcb102a059c1d21936582adb71790cc0a335273b38bddc18488024ec90e62a4110129a42a16d2a93c45439888e76008604c6 +ciphertext = 3a00a38b5cf0894322b8f5c5b35dd486f4e4cd14b18cb3a101345718ff843b13fab8ae89af0bdb731cfbe6c5bca36200e5ac90b9faf0c7296b6ce324513504bc1ab4ebb91e77e9736743722cec11ed929a2d536c25855e7c28d1a6ae521eb9b6391647073c55ed0fab85084ffbb47552721bb6827a0dbc65bff589165f25610ade382367ac20c48dc380bf89c459d98cd5bb01da5899431e29b938262c29e68898602dafbcb9465d0f166986e19d51c00c94131d3a5c0abd1ffbf793d6e9a52e5e11d72233565cade9c20a8810e55f4d2fa80072db2c1ddfd98681e693730b693c3ad8d01230e45aa8822d191a8bdf90cc62829dcd40e75f568b8f562aa61a6a9c6a7d1be451ad6bfa404216c102b4d6aeb4599951b0b96cd81e2a03d825380a96a831b321c6f14ea5af818d008d6d80f28b93f2e3bbe22195d4ab020abd3af6b545473250720bc992ee57ed9f328f0cc1988033728fc2a28dcbefebd698215b3a91a05ea5270cc8bf8b0a1ceca7e9bc13bfd8359892c795aa6360e1fe6d8a2965356cd5ea7f4f8740a2e9073126d0c41f07fad51c74cad707c9f83140a2370fcabe3e9f48673d9f1d007b41c647ac0d195f279696ff29ba14b6841213b7218d769be8f684803bb1d29aa6df3a0d6e52f29b19063a81f1446e54fd8f1a6887b0132da286053836c0cbe97bc36c8770198e203908d3496c43941b35257dd86fd1a9c5f5177b1f75a426b00ba9162e1630779c6aa4dd421b4abffdebf19472a3c3e27d270d30d17812c49dcf3c5b49109800625eb8454098e1f994bbb193c2f6260caa9ea62cc2eae8bf26255b7f3b1a2fa57231f00a7cd97387d5348d68737e167f7f22f6f4438b911a040e142fbf2d9228480d83a474d54018d92635bf2c14ebe728bf901689f35462801aad5545cb411fdac9dd55354e7896c92cb9eac3aa0b88fd6e2b82f8c93281d5fcd7a490a537efe83e9f3b8ddcc8f8a83a081354f0e9939f77f8368fd6f8aaa98c7019ac6c2b74a59067d4ec0b5c9bb1d7f0bc6b6e06b05d2332284eb5f24cc35e14af83d6633020df2e74c124bfefabc42338b4acec89031cbbe5c1ed3f2d464b77b4c479e37dc0f5d5d4497e1b97dd00aad4fcc47013791b2ba6f098bd751b66b51971fd886c03cd6a45addf8ba4af20679c498ef3b92f793d1f6a7a460a665c65b58796f57f1d8da4c127a2cba6af842125ee6f9c10a1cd9c9f06cdbe63ec6ed979b6be2048db2f83e4cd16a80e3ec5908f8090218e2e9f97b60707337dfa770d3ad27076d9c0b0c7aa1eb8e220392e3683cd19519660a17661d2eb92621f59a75a8c2e008119465793477e055c14765262b33347245b96dc1347792ed7271c5d20f73def4056f96100a80fcb89f69c451da786f045fb2556a2b3d84aabec88dcf99d2016c3697cffcb7f8f452c654375d1eb30bfd9a7941c6cfb1193f1d371ab335966aae0c14b68fbe23f6a12f5160d786577b2ffa3af2dbe46fea002bca529419faac0a3c9da0b2c161beaa83422fa6e875f63 +expected_result = pass +expected_shared_secret = 250e7f67bb34dd5477471e3a701fb71a8138a1920eb807824380f88a944a6fa3 + +comment = Official test vector 73, seed: "53df46012cad4a745b7a3c06e18ca95e0b839fd8161e3025749a0887549eb0ed6a44eeea08bd6060d6509dbf7e9dc864" +private_key = 8dc4a33d0a013d102a7ed6a5303693669033816bce0c8a83594695531999647a48f6708c65220be4d9a60f013201a36ee053796356b26e3617126c3d0a354d2fbb82312a372ffa37b939a7bac8ad0e127f18eabc771462fc57b542a73bb7067fde6bcffe4982e6db3394264d34dab222318856ba8b6919c5a0a667866c0d2166b69ae04432c044f289bfd7255542cc7946b82c2db388c8b656f234a3b607c2f6611acc3a5a12c8111e42138abca9b8dba79921a177682c2ad1138b133636951f5aa77a52b7554943af52f7b53d0b84ecf44fd77018f7062e564c5e58753994724242d6b3a8f8a66df518f7e13a0a5c1c4b253dce12ae197342f5d72c296498bc9888ec347f528958aa689c8ddb81870184c9e2254f918b7465354826870300790044165216c8bc279ae93854381c28cb438bce444b2258afc3a84cd4f91de8373f877b30137c4ce4664e4d330bf763b344489604e97f4c9c24ffc226d07c5824ccabe38cae22487ea2ea0e89920f304bb911b401f45735089512dca2298ea1a57f643cd7524a3d6c9f055b25eaa62fbda318a7b8c8dc9c5cea953ad5170c0452a7bc04469987712d0522256a1ec52961561175c32abe93dc5ed37289b9d4cbd3966911fab85fe47b3c68692cf5a845286baef91493e15c6d23437bf7517ec5cf609c8628d82ff7cacb54d4a5ead25c85f59ab51151f9350247782459b598a2089a85f2c9bf66797e863a4ca0732268a4e40c57009d0c7d1ab1ff46b78e350dbfc19fcae823bcc040183a27182abde00a966a6075e68c011aa62eef913024ccc85b460098facc9c4c81d17c577bc009b8f9416d225d156c4e75b84691a90948d31883b1b2ab3635dc357ae867b2496983cf9595423c541e3c17947042b3d141ef825c99862302ba911c67619434b3f9cc489e8c8abae92af1ec3045c895edb41f745aa1f3d1a625e47eabb49432129a5608571431c4890c8fa5769563b8b1f9ba3c1b77b034f568038865c90304a4f79f65f74c17fab9e6b52236cb636ef5b686271f955a9e889b7a1ea1a010828aea1a838de1723f0149cf172f48890161c34039e99b36185f068b5707fa476d650bf149479b8c928f93089a4b941047b5b528135685797e0b9e65f595d9016a614393cfd630c6a217d0a03091853f606b238ee13c92c2b5d9e19b2c57638ce82a3d767639e115838b8eeaa5a47b7b686ea05cc088abd47a10ae593ae39a07f55cb4c1347acaf7cf59422182749e6aec39d62ccb876094ba3cc0b871c57a03a00ad67c5c1c6ef911c6dc36b13cab713be1a6610caa46db4ebb86b76572a0bd60adf163b325c89b506c33cc343c37a2bca7cacabd90494f044b550778677c2ebee76e03622705556b509c204087b5c5e5936c0153857691c3149521b800b76c43195897067529a4a87d68e974ed57178b7980eee227e4150af1234025757eaa3b645064202d632eaea3943b40cb10922bf569ab2c44867c411bc8240d110134d78143d3d44b450056be166b57921fe64a44f80968a1941d91a971e10c347aba369702b1ed542984f28b6254bf61d94b69f015b0e32b05e8897502238fd21d87978eaad45bf5997654b40a903319ca64095c9297611ba36d3a65c0d17cb22b7f3a682b593595b1c682d521a16dd621a05a7d22c9b2d29c9bb75cc5a8567ed3a545bad39e2c85cec0f83f37c6aaf101bec273bca5d606a5e76fdc183175a233c93373e956580a522badd22d97d71199c1a7b4149e652686eda541e69187a2abb68f89ae9492443547cfde7b5d609b4835911d154c33e49248c4cbb244acbf03e93e52e71ed87a75cbc43c3f505422c1ac31c014e82009d4b13bf2cb7dab16896a320fe6c0476f37767ccccd80850dc94b410b983fbbcb484dd09b44a817fd95686106c710d983cd2bbc11dc4ae59091a401a6941bc704142c792c407f7524ede1a71a726e2f921b0626768307c31dab514a783febd67b50e93479d2c7d1787142f591607b7a5626a718d502b37a6f5b8766e8175c6ef276934a12ac1107aa3362840513d3f5c02042ae681181dcab30f6810389db07c3fa1790345e786031e3196bcc01c22bd064b2f9c439d7b7a7b7633232aaa4d88e0288cdb791049b8a8c64883637098def7c88fbcb974554af0f3c51c70a758176215871227869766452871602093d6949e1d078691537d9d7030b36926147aff8151cfba202c0364795122d1d748a18289cdb33982900b38ef9aaa5d10d146985c757ce5cf82ae0a2489e0c00c83550d455a03fc885dc7a5ebcd71529ecb0ca13ce1259186f9b0ceb4b90789aca0762c8bee063780801ce365540f440b0aa0128103ae0f5b4a5d9b98ff3aec5793e8fd046a7e15b517c5c4164105e87c593db19b85792b6c705e615c4d95c38bc4bab4f30737a20241a3189eb38865c6b60f6341dfb931626e729ce39313e122687862bced934ccf88411730fd066be831542abc5b15a1cb2d3f0aeace904cb419754d9a5cfa35d72e570c8d3b0bde5a5b18201f14cca3e3564c16769757a2daa89b03dd993ec8b7c9fcc63098478af1890346a8824a4b142f88759f382292ac404f436bd21282d6a3242417b36211c84b75f388151f087186cfc01e59383e8218039db15da50120aa1c5489743bc42335a774f8494a4244acb6677b22a46224df7bdd8a9292ae58e07f3068cd975abb51e44631172535e52c910b48748a190c50d877903a4c7b9f4b18993669d254ef566058528a157428111d43d360ab54343adebc2a3636720f1e0c8ccfcb0fc3b71b55353c2682946408cad171fb711cf0b3ab561ba6722647acee4b8daf0aee2c43352609dc617549841adac54adfd3319efc715dd917ab2b887dfeb49cbb6323acb566e43638a5c9b6f865da4157cc3f866066a551230a335510f55733ca4f3a6329aa0830894e06a05ee578c45b3117fd07d62718a9842ced5f49710f7b15741ba5b06298c550b96bc6fdb0561926240faf09012e2cb49c66868e27ea318aaac50bf882c5bb8e674381a96645b7a7dfa936201933c31955e24912e436528027b39f74a909aa5ef4653cc23c5e448be6f81088fd322fbb1779be52ad60005c2f57241932ea3b435c47a39e6e0477b989c00bd5ea71ba671d8a37dc64d36216ccebb14e6dc7420c362926b555598b92f6a78061423a4cc8961d57733982fb8c78573c35584185fed801ea674a7fda06008517b42d1a45fcc50416883d0963d3b744edb5e8548c3b3dc474f7843c49a8dbfc939c41af7f8ec6c8354aeb0c67e05eae0104fbf09445794c0ea0654f5caf70ee09d51c8386d4e1f467b10633c710ac2a4a3729672816f3eba84c9638a79676eeac0f22c8a48e0c5d50a26ff0844c66b99 +ciphertext = bc05257f294ebb1d9f523ee049a3a6730e4cc5b52e9760cc5d47e7401dd902179a830fc9261554103aed30dba87790961d9524952048d442623264dfeb2e4a4a1da9894a07d994b9054d664efba14181c35da270672e2a96b6c912eed8c5bb9487ee426399cbae893fe08ae6000a4ecddbeaba0187af28aa9f30f11e46e2e622de5f5fbf89e4c84a10c94724cf0810334fb4a9c609619295cdff0a7079a55d7231c05cd13b9fbc381d1b33a3f9170a4aef32889beffb76d91c3f9a3ecabe60430006aff1c59e6781c816fbb4a8338f4af1a1a9a719497b54bd7b753611ce0da6177850f0762d189312670c6028f3af43b6c8d9f9297c636c8e4e6cc926569c81f93e2c1b7844eb83420070b57b5df5357adbde5d794fc5d1c2c6c411b563450dc843a1139a405d16908c277db81f202cf53b2bf3a6231121e7d8445b6d45d7b258ef24483e34bbcda7c2670ff02e23b6a7a6fef8625fc83bdc56baaf2dd7987f37e565dea443b2c2e25363f74009a730f8f986d021af214692a702b38cb56d048a1a5ce2157cb932c9d8a4663c33b500485f7f3147eb9c50a49bc8c3d7eb5dad6cf206e275921ea4fb4e3e7b00abf9eda1c9c2b93f439e979a7b0331bb5cda584e59551564ca3bf065ae9097d0327220d265e6ace108258fc09ea5e0380e5c97114ed4fa4760220568209cf52a79f0aaa1efcab10e58b047d44c2cdd74921aa81ed53d6c98a341bbd0834b19628826691d6aeff3df36f123dbce39a84045011a7d9493911cdf171a63cbd7ef21a6fc206abaf9ea46d491d94e12e88220dc27891d1e4a728538f3c930807ddd5292ae905e22b395cdccaa6431ad6f3b44e299aeb2772db97de93963eacb47d24f09791380d98165ea0e38d579f1b5f6249686a0c1610dfe223ee389c09a7c4ecd67bfbde3348b4c27d7087cae132f88b1ac82d31e1c41c4418b6354b57e2c37cfe8e60218730beb2154437b66db7531b16bbe4b4b6a1c8cd1650c732f872c8cfc6761480da34dfdb6f538bc28f91962bc52447b2898815a8f79bdab2ff82ffee5073e3c90d90960d9b0b6c389969decb7a41686cdbf12005c0e96f3a096175425130b485c94424896ef25a9d7e00bfea40f0e2facfabe7355937901af2fb8da23b69eb2249de3e6bb98b84b3c11f65b2889a01073e75b20b7077df34c4a3da9461ad036c41a926f4c18db0989ae4963ad31c59aa2c14d177bf94a12f73d5b6d61c9a21702fad90a2f7f519f502585e3fec795463eade03bfdfab04f17f3b8dea98e713f91e21f3284a6521d3c051b2388c6c5683f5bbecbb1575db97be5f24418fba1e4d30a3b3ed014fdf028c3b8d80a91274995c21bba4cc272d31466d54fd6ef2a593c5aa5511fb95b02c3aa932aea4bc5341d90ffbed8f7fd8f94c2a511abddb4e2498caa887512d6662ac02fe6fc0a01df4377c05baf88a74cfeb50fd3bc6403a6dca1d794043ca59584bd6c5177731beacd58ffb2f0b6177d0ec260f2df873b594500bba6b7888c772a61326bd69a5574 +expected_result = pass +expected_shared_secret = 0210935a18f1add5ebc2e1107bf40a628ef9cf8f6e7cdac81dc0291bb50a5a3f + +comment = Official test vector 74, seed: "deb963f8b1d8fbdf499d564ba8d2d47915bb402da02f17031b37b4039a842afb9b7e48f37200605992bd2429427a7a4e" +private_key = 38bbb649e7520a59ac57783e32a5022489365713cce30171ab46ab219b7e81369af44bab6f5badcf613e963938a0829ace625bd8594ed3c0981c5963f68874aa87685599041c4c296b4cc181e57667d499b2f961f44773ca958193e97988d816d702078c0147e41390f503921f139384d75efc91cd08544536b4c9c09bcc2914a807e090d98b5c07c1a4a0c16ff0eab557e5ccc1871ba1a36ff66b1acd113facd6bd16053f22cc85634a3d56e564e30862aa1409d48aaf92643b62009f8e206c2c8bb7f357b9432a8474349c3e1679f1d154cfd4a373665a86c481b9c3163308cf3a1a265a6313d0068ba2181ae5e5a1114995005c8fb574c4a7da80562953348a80bc23cd90c37a2d166ee4e895f2a429aff3c9eeeb869ec9982d367c5809396987a2efe93dfda2cf45e774cc3541bfe655a7280af9b7601fa5183ab62682465fdb273ab435355b84563047bc4c6204aec310d4b91e8b849182c16a57605a6f5690d3804d8857379e11b324977f30b461954a17cb16c4dd93761224a47f4c680373c51de251cb69a2c737cbb1f76d7278033ae86480c7776cc7ca02393f333b6cc00c200ae58922756d3664a30d7b262302672c27a7496746f8f56797726340c734473522fa880819d76a004a480f48b74f7c6ee1998741d39fec12759670b4e8057aedc67950b929e200526ba5a27e0bbb67570bae100b77d525af70b7b6143a7419a35273c14b492e1e42c5b5918a62f3c829a50c1fd8715b030cec454c90c72e6509ab1936ae7490c6b62a6720a840aa714f7b6b0134335c75c44a421598b790631e2ca497e256be08910b69c01997bcd20591d1967ef5ec5c035b0c1f19a01bc0103de6cafda45db70950cf551da2442741eb7233b36396c124c6365a83b66d9cc896ff448f54194fa05267b8154895173075039143dcc58062cbbb1946a917abb184788052920d1428c856bafb3461a463627ec7430671ce75bc2adc95622eb2925a582a15e487787389bcf14dfd84801a37bc39136cc1a49cab7cb924772606d48d3941bccd3221eb418b12a6342ab6c357f273795339bbc720439aa9cd5a478122b8b01769edb013686c8e872a4e2c049a755a8f954614665c61d5d9aec7d67cddb779512a308ba3cffd5c4bc642c091226667c40957c17b3c92bea102143dec663b6155464ac7a9559c533a647c5a106c38972a26beab45c2f04c974c9bb860bca64615b6f0782305c81862abc973d280088bac791876d3172d4e340f26452f60009a49989bec107b680b62cdc12751f9079ed07c28143a405a600a974230b20719b0953da3c2da574ce2c31786c77600646e25b3c305f6507d91084a836366c273d62c526e0630f9b483caf335d6bbb5bcf4adeb4143443a07055349cfb690948487f7795b67dc2e45430e7a5c9564cc84cac0ad0832480aa844417446b9b086a493b7aa163b76a50f35b7384bd054147a8621674843c3040ce06eaec68b6ce8a2c5b42390c76350e10dddb35c9f4c4a1cc148ba08601f92b2fb12c9088922c3463139239a62e878e4db61a3529a8fa7905a7a1aaf90216dab5026469b27d4122af5561bb91d111a721a78587eea259a4c7f6b743574398e30a119db0a138c9442fd3a7580e68eec01077d31525465babef901806363a2d664ef8c1908a30491e336e27b0f8690ac71c30adb145805a15fc654ab8982565eaa96fecb93a2ec7ebb697652965fc5ab837f6b7a20e224e4361977b71c694a88e5252f608cac97e97dd7c80a5ad10d62681b57162269f7b8d812af039226ce2a7930e43007c0b3ec6a4cdb3897ee85796d051cb053881e1b9706a572ccc75d0ef32f92610c40db4553824f1a352fefd979a310124b9456a9106367ec6a50db6fe0b057fdbb00a46028c0d6a638bb7f2139ca6df68f014c4e1e0b79670869353912b5d67edd4b77c70c067aa76d174cced6c7a901c65737082276188cffe28bcfaa2604447e68d490c0f11cd22b8c351c2d63e7a01ee460bc408e174bc4a6cb023492c6eed42f5d85244ec883b1b49b8e3584f27835f21b6b2e6060e0671f289771d124168e196edacc1aba26cec9e09fe7367f46893c2ea3677caa3005e34e722608a3b64a3b987289952dd695a82de89b9034390355c5e33546eb833f602cb9324c095bb4cf66c05fa0ab98d69bbdcff155c3169f3df2a575901724b678fb080b67f32240ab8f0198cb43176f6ffc93fa602748d591f0b2acb9aa67a8d8b15c27140c320b0ee040e737077a8c9fd6a20dcb865ff51c41808757b0ca750c502a356b1c7d821f1bf804ae2b337819c5ea89542e079045c887ba6550e4f05693f5c7012424d37a17e2294669c0538ce69a1f1c1f121784e3c3537424bbc4d73cf1a685f03a24c4ba8fd603b328d2a07fa2b714dc1eed17693727732ec7be2b02c0614caf3d42b222061ddcd758a0674133e6cfc5362f855b717695acdb971aaf16320690606c1c42238856d757b5d610bd64427f04c97abe1bc6b0185116cbbb2dca28b5d7a9aee205dbd37e92bb36311c8936d958aa1744ca67332a600d8c719377273c7fb0029f27c75817746e1058dd196de71b0e4302682da21b4ec1beca3cbdf690509573959d816cf5fa034ce01d6a4ac477e3bfea75732678aea6c0a5401c623dc225c7a9a7ae6a572f738387181913cc71b9379a5a2bbdc45773c6a1167fe756e13731f47226bc678331312b99428b07b2122b2b9dc86b01c5f090ff632fa83b598863c0b42623549ca831f66bdbbbb1d4747d56a97dcef9c81766a3d90043c1a99ce5e81105e9113043342a539de446a7c5f9c4b46a8cadec388fbb8bca527d90a56c649200cb2a7f968611934014f9a7b6faf3015bf6494ef72fba0c7ba40c499357acc96562c65b9ca7c53231045e35771947172118eaa02cd95f7137c93e2159d9389607c3011a76363560a97df950b0329258b0126c7bc10e4081ce46b7c7b0af0752b038386e9afa2d0a7543d85ab909376b618c0a2d33875d264b76941430e81c48832f43270160176ed5938492a06cc08392237caa8487abd3c83019000bb6671784109c7bc4c2a0362a5b5122e620aba511c49ca42d75091b3b1abaad9b8162bc27f182ae310872e789cf05f6c949598c41c3b73a1a9cc0808e68f95c8ad8392f021f77c79618685db2fb1d04a9a8acb8441ccc764aa3b191736f5a24ae31c23428390c1c22c6a6052664db63b94960a433584036c05e031a07823a03ca153015fb2665c77d8fcc529f21afde0d4f32cbfa399f2973d812f516c86b0f353d6a29813d354471eb8b4c38df93939eb3b1db80ddd1cdd6558a9f2687a3e03ff73e02a217659f53d8c47556bf3d8c94040f630d63605e2d0f923579370c +ciphertext = ed678ef3105bcfc14050898f388a2daa0d61c5ab310fedc2107297881a1097f329c679ccd9d1cebbe957c137acacb33cb7ee31c9f5c148ac51e57caead59178132f69a7020a8419f4f833bfe4b8718691b26b771ac6e858551aabed2b9ea3c904a8c2723f5fb8b87d519f4a93dc43cba81c39063f732ba91116f359721ff3b6fcae87c5965bb728f4442f35dfb3f2078106078aff64f51cad6c62a5c8b056a5e6fe7e08046f097ebb1311603f7b719d93b53a1efbad985dd5bd5d2375d118f81347104593e6a05118836beb278a62d5479c7bd62e90b2aad04f7c6c0a4b5b410568b9033e72f1cd6c71c53717faaffc9fb72e27a3f00661f2b65a4e0845c2e7aaa391fc1ba253e6ac33abca8a2839eaa0be8e350101af3cfc7363424626ef571c6db515cb8a8ee209aded9f56a5bdc3dfbdb9d4f1a94b73698838550d4e348e5826a8f632d556385d3135ae872580986b43a5d77fe471db736328931dae7f9554604ffa969d5d2e7802130afd2bc5e05b3f3947483fc8ebc680176d792b0fce9f7d121ca199011efd51343a9f68cc40cf3c019338cb6e1b46f3ca920344d1207be283329945c1729704d3baf1953440474be9aadac1f705cb5ee8c41ca4f29645fe9b5044897952899d18ce25b841383ee086ba8ceaf712dc69d23e564e35a3cca5309cae57826907403065e943f255bbcccb64f39a54c18ab26a8164ef5d9d07f6522e7cbb50a2b80040bbadf0799ae1b55abfffd5d2a74c9c94b43eab75f55c2b438475bf4a4f0a123ce8e91e94b6ca6106b39ca34430efd34fa0a741cf93e0286642d45e78d8fb26af2ea594152a87d1737f54238c7a8cdaf174ce7e9e13aa207b627ebb4a92598d184bdc62a643934e114b356b4591ea5415fe42a9f47332d559b9f748752c46e4c8e1196a9d16df310ff2824afbe1abf520ee7c6a8ad7a833e01e1ac3fb0784cc85f3d731b40a12c667e6a0f3ad83505080aeed9309fd7492eccc9a81fc5f047c47c624941a0ba626563813f74eeb0a8a558fa968f809deda218f6a73b821f30700307b3aa52122c81ab3d48e4eab8e1bf8ce95f9d77014b5edbbfd21152305d427abc30c19ef3bd6e206eb128d245ef3f0132008957577081e1863ac3ca83232ec8e3a9d95546948c9fad4275e0a1863d5fa2a54fc42d0846dab4a0d74bd55fe5071c6c514b0f0fb69a8f27347013b87fb48d00a670b6fd28e8c844ebbd6cc93c527b5e0da483b3625e754b5f39257c9a167e5b381bd60f3cdfd5cf0d65fe96e02340922e10c488f35df7fa4ba9296f1e576aec3e425cbf92d648f6095726ac3ee8a6d812fe9ee629413f78978e200fe3eb1816fdd1eda1845382a1bec1ac57b23b79189ee7f67f9ab45731d2a2ee4f208025f0f0530294bc2e38868118bf2464fce482113463325223ef8395f945e0002d395c0e9695c9b8a0ca20fbd1f3b66327b69e6579a1ddb49f50daf499031b090dc2f8486e65d8e715dca3b5ee26a1cb3fba97d4df8e3f283c28a4e2abbfa3ae5ba78b6b5d8c +expected_result = pass +expected_shared_secret = 34169fc520e944f94ff1fa3799db802a4c1b26cb2971bf196259a937ab8362ca + +comment = Official test vector 75, seed: "8e2995f1b3e43853b18916bb1212aceb05898e2b177a87abeb928ad7184e59695c56b2cccf5db80853c28a525e327d13" +private_key = af361347809757c2ae0c4a60393c90222c394cf136e95517552721ff136dcc234d64715a1ab43d15708187f89a6830791e0062cd43253ee486ac54179d320fa6a8bac4d0c07b7158a1eccfe52c4847403849982d73288877d04eaad37d392aa487597f80f19af7444e5a82cfbe51609ae515c1b320b6c75aefc121d5e2904a0185654a418e5c7a379b41838ace149b45c5a4040dd239ada846102a6bbc811ebed4710b2393ecc4bb8c6254dc815d2667831f962887a74eb883a5a8642e0b427450d01321246a8797b7be1211eaf64b0c706eedfa17cba2b010626112ab6b2b2b928df38ccbd9b639b9c6ad090e92da98b5c9914549beb6a9b5505579a56943d210722bf590d63c1ed56534a96552005226c34cc1ac32572d2ac0823bce348086096525188088df229536bac34a1c95083309a0971f31d975de0598e4e009d24661b2a79dfae85343b94fb1bc171493ad77d767e0814837348616205652eb4f98838ce536691de8c3af0a4970eb0c3600b4605841bcb0884e08bca3198b04b2afa6f575229c56462b9516026d32d2ce33a4b1add3b411371ea6516765f457613ccb50f94ab9395f6fbc94395a6c9c104ce3b79171a83a49b22add3a915086b804c3b42301bc1f14630ee3217f059aef485c019a4248b4a78a516d75919eb2b15bb1e5a34cb6b470ca7a797ba1b5193cb4565497f98bfe30a7578044867897c332687d925c8bab05d0c35693f557f541b571d6ab7e4a752b80267b0329d7558fe4bbc54c8612aa95c03f81641a129b1793160dba78c4e0269e9361087328a73c67c0044217a25c2e05b64a1b8ebec972606bc220b1a456d8ba86a76ac4a3c06429cfb6035ea50549db887a5f6170ea282bcc295a2ef000f571038fa97b6bd98fe0399ece3755d4b55e16261f7fab678c394c83676cb9f080bcc915c8b1c67dc998d7097074249585e31c5b30bd0250abc570531db43f546c2e05983a7b5219127809987343cf722fc38525b2ecaad2ca703679cbb7500420f83960d7505bb7b7b59a8b6f0c876c7a53d893a10468a516fa7a6a08c04d3259ad003db768559e173df06a08793b10e5a1a46145b6f0fbb230ca504424b4e9617cb3f509993567b4cb94cb2cb39811bc1eab31b5f5691ff4108e5a6eaa9b15dc2aa45fc4ad26b9ca007a7c2a680acefa88f12790abec7e3da1c13a355c1c669117070a7e1976f6859921e273f53632b4144b58e0a74207100d2cade0c8a0410814d40a4234843a44978d0d4a173be52434760423235f5d7c8e1f56c8181487bba930cc9272acd524eb6c9d71d753fe62b0e9ba33a478b7e82b36d9690607550aca261085a08725281b02e531432b35398b7ed1355b8172776926bfe41880df90af6951a58981c708724deba6b6c2bb8af1c0009c71a0b82ac0d14cb0910a8ec3988251dc9e93f17e067608115c85bb6c47d33a2a9359a35beb47c3a04ab65537f59bc1ebacbed4b97855f753a954929b6449a4db7d2098cdfc04008873004bc535bd5c74dd49247419601513c4e8125731307bc858845896a67d33902afa4b58b50be969b947851bbd791d66887cc6e92e19a2b92ba6bcc2825c4239ab2894b2467547ff3a63bef65e35a0c8ea287462d8cf8841cdc9016796500e61e89eff672e87c667f453c8ccd148b94c9a9a3765649ccc6e1c05e5350218d091783b6c7e4958a0807e73e9839992c8c36a87891b7ce5d7122e38b5cdd745feb1058fc2827b882df77cb564323746855392247b054527ee862abc91a557c431e55b81d23b1c1a94992ef540e07338fa944d24b17ed4e693eeb8224a0c5307202457c8033aa4651b2b30f85a9bd8070d1b11675fe240a1009dacfab21d50036426a6dc9c3dfc05cd1612ba91da51bd5a0f7ef9b235f1b3b2641747ab8a380b42c060357bf259548cb80788cb41da4c7d3c4b9401925588920df255167240f6b092c1329799f0039b74cbd549b2c053a71d4641071a3a95a460b2b3a8ada727193267de555e6ce87986ac06e647c4b7967cdbe5083c4b99a1b44b5df58959c48beaba0818608fd4046ea0c09a28416c6a97a1066c0650ca619d14a056252d38539f1c2676b69cc53502487389648fe596783baad0d7627cc6ab2da5b6788410b67285841a323e04d037f25e103b38b07672248186c969b04661ac6b2753c5429eeda389599b78e84608dea89556a9510627b29e13b1713a1442158561db8f435bbd6234a420618985dc4f71f0a5f15762fa16084f178e0e76bfc9ec5c35fb52e52301e6809cbb287d42b7591828afe605cfcc93c337bab78b55237b075a8bf08c48c15087e82600655234fa99f6987da7904ef50a1599867d56760ae1d70006925ade67157508289f137def9b9714f4cb72a017ee6a6325f9418f3a0ea3a8762c55987ab406dd9a6d248a33eaf264774aaff6f00607f37bc20041d3a170e07407792a43c5407fb3622ccb065b74bc1a54f86af9f7246d288fee725a6fd85e82477483f778d5388728c4565467a9ba3216d92089bc1c742a20b03bb526b73573cdc91aa8e085f1eccd1866280e791bd1e43d4843a440e050e2967daae26686cc2d32f512332cac82095ab0005133023e75c9c92b0388bc8b2822a82f93fc3520972e2e0a062a388931092bfa8758f251895c641186d1b40f6a332df3088bb24381da133ce40d3461a7d87a93e702472e49ad91cc013c936b02a96c4ce14c2b23ac79869c6d139c8d85b58da27c6eb4c4250bc3ddaa56dbbbbffaf452c09074e013a3c7599cd5b8a876076523c6b0aefc6a503bcee0fa76407b779db92453f7aaa4e58401cbc6f3718a3352013e1383b4222572118878c99289b91b02d929dba06c6deb6f4c2b0459f86d04fc8d287b6a676b17e45997027568bf7bcca05c3d394c1557873711174242ca50cfa30bb3d715d1400807cc5ff1049ce720be3c360febccb61dd7244f4352b655a517485ab13b413983cc089749ac7144312966b2c67ad50096bc176142858881f09e3a075f8fa6bf638a13af572ba026a172b23317a01a999c8c1ef478422cbfa9802f98f2856bd6a11f8584c532807771c19c411a2900c5a57c9b8e44b4c07b3be3477baa738ab2c407653a309d7a82cfc6b86a1b59ad1251e008598e453e04e3306c1877dc703869da25a9b91fec80aaf4f30b4d0a83e2daaac73990f05a9002d6ada0409450454291e37112a9ad97147cc89999dc89a30c809757933c5d0356f329bfa3823d34197b7d9e60e307bbabd9b3e8272a0ef1b3333269a7af6a5bb8740bfa12e89c47142418c26396ef0174c02f69dc00022d56494d31af935490edee63859f684fb055ece19459eb464e91e126a7a6e3ed11ccee0046da234d964c985110 +ciphertext = ac958722deca4336b0f60c62e7c9e13fcd4b006cb719e07b26fce400e3467d481cfffbf51699fa8dd5706cc65dc69d8ec2c04229c636a94d6a0dd59bc81e90b7538bc0622489f18d445cf2a7082c5062f4534e0a156b4b77095af6ee36d2599ed7a961b0288f40a52a769b5ff92a7bc835cebf20b0aa61a33379b669be2efa997942b71204a97391df9461b2ffa7f58c85f437effcc82220484b1d352f17ff76ab8516411558fa3e3386a79726ada7c29e8195fb41d480b2ead4d48faf6949aeb157ce17f6524f1c0468defe260f6b5f634b265428574e259b546cd48050f2e8144033f686bc08d202563d55833c217bb649d50e68ebbe5084a1752cf479a24332f6b87229ba8f38a3f75668f7478cfcfc4de61e65495b22e746ed7cc8ca5ef1af1b3aad68dc224d8c458eff394747e235c191780c8c405bbfd7ada024558b04e93afc1b09ce5e97474aca4053be829cbf7668c660fafe8296e7f0c625741e5cd0ece5c23aa4e5183559cc09616dadd9fe4a471158d27d54bdce7b95c6374d88353e8f09907b6d910d228598f77faf7d14eb4faf5cfb1aa6cba24062878f06d2c8bf4f57673547abbda6266f26d6893ea8d9f09c5adc8918eeced2aa88c93a6039d53adc5b5722c2bc4bccadfd2768acee766d400c200babf7330e17be15023522123bddebb445274caaf1bde7ea23e2918f9b520a3173d7e060791126668a997c29241af3e531ba30e1c26e7611b32a346f733de31d26c7971beeb6d8a9725c282b2b07947e4a6899de0d7cc703bca6cd09c2f6d24922ef78592106d1dd0fb8ed29173f6d79e82df387526ceb9f0292b8fec498757d1680a1784df0c22fc05f409a908816bb060b7fdd6cc95b180fc3dddd50405c4deb8af5c68e166c841710610ca126b2469f964c8d19b3b0e9d54aebd19553e9c791c0e50b90e9c676e8bbd1cf0571810d6ff0134bb77b451bca63b37325e4574e67b553d834b537c4dc371a69352822844fc8e68786f73826fd3e38b8735966b96caebff7a67b5053f7e18f3fc0133317c6f3f88c0bafee7b1ea9dfb9733c8834f401171cd8837d7466a9114f58dbe278b6882050730eb0a979919a267779cdb35eeb4c2e4d1187c0e0c96f63a067bec7c8a91db1342b95386e062af1e43e619a04c040fa30f40d2ea3123ca5ffcbc00b353e8df0486df38da624cee432284b18d22c6051da022255d16fd85736cdc5a1c635279f28f2348d5ea50c22f5ad445e3e025ea208dfd9be4c42953a578e238150253364530c51fbeb90b9e83d0c0bfc59ba37ade7f001272eaf84e88b82bfe939d43830fe7f6cab1309392352fe2a91d05ab5a93b3b530e1bac3dc3fdd3157dcef43983cbe0a5b4a6f0dae4912126bbe5d4c62fb9ca542a25c2bf463d519ee01642425b0c93893a9adb034ec67149d8d3e91dcd643758094449e1cb3675760cef095c91b52202748ad12bcdd4de0565cb0d214d0f2cf40cf9cdd21ad6eb0ccad52cd6eba41e72fb3ac7b401cadb08fc6a6de0b1ba1f02eba76c +expected_result = pass +expected_shared_secret = b5901e97eb656a09d2dd132528148ad07a0a89f638717eb53516a9ad19aa36bf + +comment = Official test vector 76, seed: "9218943c51fd2de47e509aac67eff176795102f37d7a2017e3afd768fcda7877af38739b00fcdf227c2fd62eb635942c" +private_key = 31cb44a14c3ff840758055bf2afabad14a723c048d4d20c5908bb781844d574a96a0807c59d5192548a0089396a78b953aa52677b9a111cb012954b674571c5d0c7c5e6488d498290f7665f4f32dba7228ade2a724413798ec32619901215663b2c26360612558070bd06261bbab86b4f96056a498bf37b1b84238c5099ec8f1af4251c0862b861f334eee85af8d364a54f6bad0e44a23a0577933ca8482889a955086ea3a2c94b057c1c20d540cd6d2976126854ac123cd386a855caa385927318825494861079ac84606ac0f1810eb78a8398740be69cfa1777c61a5cc1d758ae28c072d6087c379a567648558ac8a1883734c64361db33cdd156fd371a2abe534b162c6e336143b944dc2309aac106525d6586793a2b3420358185fc787c2cee3875e3425be5627c1d49313413ee498b17e8c295908b718b3c4a6e03024d77f1ec37eaeb7462e09c683cb9b272431ef0abbd0422ae2569fc37902ab90bd2c236f4da66d78301a61765a77e43ace81102c7355749c1463b55f10e26727086d73a1800924c6b0eab6ec905d5b01adc538c9eec7a25989b85f24b1f68b9a22637613e9acf609a67cb20b38bab1a8d81cbd22a5ea8c7587a13bf8eb8a37e5949084c26b4433741a31c502a4c412535fc6a1c5000057c65103027f78f81ddfc4a8843c59f8563bebda15da543be2146a3eb7b521700958bb2a5064923236193d981bd1e2920d00b1cfc504e32495dbb116c5bb7aa21b6cec5c9fc0b1ab73330544e7af5bb1ceb7c159e3509938d0332cf51add245606617dcec688f117bfedc27dc5b8b4884446861b592b720b53fb23cf08513f66c3b51833e51b9a63e297054a8c03f8baa257c64c2c8a265a8a92052c41146bdb3a32ce0b7196aa33564806dac33ac05a20178c2a0cb04000d484f0325c9d16956da0af88f68bb72b7bc6b122a486cc1eb01bd3027aa316c6d7c1ae7d8b9a747443c5d7237989a93ed939d905832e76afae4172d5f70589e54f7b5cbabb536e5f316b3d38911513b400ad83f7b2a3c72a6c09ea3b4f68129ed285fb99442fe61237d61756a2ad78b7790ee69748b79e42ebbbd6b9b0d803a3eb77477609ab2cea5920128356c369878855126c22f1ab66a3a4c202892c8863b609f7926175cf1e3967ea93b7ade7a8e6779672023dd5d81bd4d9345af36a38db17e96b8d85b7c0beb586aefc9fd9ebc585f071c1b9c34fa2283a60884a0cc5ea210887aa677d24192db582f05117fa189c868a3cffe8b2fb584686eb3d009733e1d86c07d6a9893c7e9410b4ca99a4a880b48053878a45340d0056031068a63113be4b51a630016875541e099935ea92b2668ae84c5a183cbbfed619691038973cc07b72adb803cbe26986c827ac75428cf183cd5fe7c9c719378438058f470b62fa977dd658f219983f97b517bb1aed01a478a18dbb89ac1b916419a3b25f388c276c190b866356ec84c33b29022286c08a34d26948c59341a789cfa168adc0c7a73db36a72ec6c2c688c06aa3eb1fbb25b7b828cc3719c7b2473719f4e2b5c4ab8a4fc172a132439e0e3af22a1beae17ba4cf39a155925c62a4c9ca76436496646906630b9349a335a4852c01b018f77da15e4749bcd8577d50a102352b869402efde59f5fb54bbee919e7d4a8bb8cc40fb8c7240401113152ba727cecfc8e4b817c5d537df050902bd03df866317006a2aef59cac269813a47fd337a0c5b694f4b080f100089255614634a2b0bb1ecbcc3f1d84cdfb3054fa749736e531c2e673716079cf45c89b444b7d821d892c7ec39a74d39b815c2b9981ca47f5e56840341ff9d23fc877285f9b90fc78bea1b9c5c647ac52d066ad7b8ca2aa01e0729fa22c39d9c3c6cd833c6aac061aab1c1ee6819d2a245997b8580a9e1630112cc6b62c4952215a3281111675f25a10ca0c32bc68c7bc920bfbc7bcd82edfe130b0434afa29b2b9d90ac3f1143b5664e5e51984b52d976439794507d92cb256a1520078972b843ff3dbc6736602f68b289e0850ee845e49586c889ccdc104cbf13470f6f6c0e6766007e5c3a1348166933a45a1a62e0b749ee14a38e11a094bae60a38c84079d81aa655782138671a0fa186a727457d351a8a45b6fe05369f7b158de844e31117ddc47af9fe52075c6acd5f93a31c38ec7f608ff9096c8562e0271a35fa7265a56b24bf31c6a727376d1ab3f600573342e60884f41d355b2336e464b94554b7c108614c3394fbd561a2e74ba7045c0d74032877901e4f8a95c41ce9fc72013c51fa93b5c0b3c3b0a8c90ce0960f510a9f6a453b8b0012f7c2430350b8a4b6143ab5adc7aaa6f3533e230c3062b7caa33b1e9a3bfda7bbffef8341ad0a33ab272bada717a4790f4c99cf430bf114b62854810eab7af582a2ea327a599c490e25795cc5c42219771391b33df4c7fc01524c4c520eb4559c2ea8c38ab5cfe27035c756248662c1e969ef478a2d2419ed9da7125ec32b0557edb5b77e0dab221544e5f7a57a2941b89b803ed1c7d8de65f64a29d8e7bc2020b723d391987f83db0bc35e96aae7b2772b37159a3257ead277532119cf55959fbec482169c5391a9409877c79255cbd1c8d2b8352cba074bc4714deb09f9cd81624d2782de91efbc30882c45631e96e35c9b53f77cc0d268722ba5eb858a1de719a88ec240da229cd7766b9a237641c1277c006a6672bf61ab5dab4c223b7381fd3c16704cf7920b2f11210c969b6b46a152b72598de4aac1665d72a45bf51370de61559f83081dcb6aa49339e489968c80498550afc467c8aaf0c6c1b9085699b801c75eacc3142be38de6f6a64ad6708c426eacc13b09d8bea819bdc200258d31a8d1f308d0a7470dd35161379191576a03b81d70ec58565ca7c4a6bb333338d8113d70f5bef45b6835917e17c2945a06cbb7f2225675252f351593b06a6db504b6e67c6e88763fb06879187c5053029724b3477281cc5c5294b36b64f12a08084eea098489d5cad338a0cfa61231268bb866c2c524c71bd6a467c845ac7a4eac579049734970859a2ea753c6b93ef01532b130a103c6244a17870b75023e0014e6d8433ae5cd2b145bfe253a8bba300b6465fce277e2fabe36d6c8112887cb0a6daea4a54e258cf89071e407594de1bf1f4aa2beb50263dc5d5fc729b632957375b5ce6373d9b93211a66a29736a6ed616ef8538e95c45bf595b2eb743d79436d6385bab74c80d88c1a1f4022e6c3bb3d2294c474c2c554f3be4d7fae86455763b97ec8fdbe9640219b35fc36033966a3525d485f12fac52ca60594e514333ead02cb1bfa5cd1d9ecda4a0b25ccdfc47ad3f632a85f03a8abb0a5010f400ae5722a75bdf5a2f6d5b546b34d73857cb1bfc7e587aa7 +ciphertext = bef2266443f466793113b5d0fc7413bf46e39fdfb568b88550b25cbe578868d6074a6b2de2dc03b8ce8a7a390cbb67c46c500c7e6a044391db3af04e95c88f2acc12c63613b2a139a4551e9189b118ef4f04de5da17fdff8338483df67b9f683ef87a2ec36185a33bca3147fae6f6121cfe41ad623f9f15676bd40fd7a2802568e9609ca00bcdf1d59c6595ca1b67db3a3bdffdedc7dee22eb33bf9e444c9f115ef088a32fe4c800bd57fc854ba31c53979d48a8071f8f8b83049dff41f729ec4bdd5423fdc088592b7bf04206b920cfc96aa4721a55235520237e1c7cf15e7905d864e6a040f8625a55330a2dda784554891d35862811969c77ae7260f776f1a768606117fc922d936a058151850df0aa94a05a9ef0ba817533073f831b03097ba43b2a3433eaab922a1020cf60b5e02994ab56d8b1c746fcb7f699c42254f3161cd53388b50c9c089a73f30ce34c2ee1168e8acd73c3665c89205c7b1caccb8baf5d94ec9451a6ed00cdff4515fbb8b3cbc0fdfc0d2e249eea42ace1990e519198306dc8c040e6b8822af99755825d2ae48ea94dc5304e7646863a7af04d393a35305f15de1c38e4ab78c061d0006e85074af2e8a7cf53a3ad7f631de6d49c84124271b3a29e32e40ce001e2d21d26cadb65d825a126281a157551c87f712d32e754b5d8cc66f3c0d719ad0c0fa3afec198c8a89d2459d304d4b8fe164008a9432fc62e21199f7a3f648f1d990a55f1ad253995cc848f6e5e7e320c221e33a31e8517aa35a6001f75a75b1e3721aa912ac92e4a4d0c5c847ebdb834bd6ba30addb70c613d4ce7e83e3a17e5273441eccdfb05f9f205d697e0e3c4aba2070fff99e2496fa5e9548767f6b3920eb3f6825c194cb6d720caa133bf75d98bb858bab11d4e1dcf57e251aa4fb82bffc1629acffdf25010ab54a6226c88b2582ad8f6adafdb62723b0d173377e5f7bb894ad70b26a2c22fe0b940805f1b5160aea7a8396729e1428446308e3ca349207d6354e2197b6edb19496146cd71edd1564e07afb401888c22aff7ddc721d276819cd908915e0d7797b20bc7d8e2e63c9fc3d899158a0862df09e506e437bf194807544b3ed75813ae767538beb5f2bb1f25abb08e9b446d8ac4e965d759f033cb68980121660e2c9de083caa42f8543ae4da5dd31a1c1eb9d460b5175f5b913a0cdc99e81c696ea831cf6e87066f479950c852a240f716462773205e5ebbe5b769f844d36729ad0996a40f69ae558da55b9792c328403170f2b917b65a971d0ece55be01f857d67ed4a8ef59ad83f7ebcf3163770bab4f583b32e8213b000b65d5a7c2f276430c4b23cc33d9877a72bd2d755a131ecbbf88d489fa75b36159c17a9f1d61f109048a48507dcce311875a52920010712c6af5a181051de669c4bdfbd370590218f597e9e39afd39adeb31850733df8928d7daf5a6e2f3ce694854d340557647f4b8fc0f6cf633396f2ec7e03bb74b1f8f3615a78555dfd3a35d540151d4ed385967890818f997d8ac26a4c29f +expected_result = pass +expected_shared_secret = df5117706beedfb521f0f021069fe9650d0844194339033de6997dced05268c8 + +comment = Official test vector 77, seed: "542e20078add5296050af150360f057f6b9ab3ba835589dd56987de805f900b906505b5390a0d86cba28038992dfc59a" +private_key = de9a3f4dc6a54e98c850e3af0f7abc5cb5b363bc668f2c10c6e197927c89e57088c4960c46b767e27129fe78c7cae38717e6a2a7fc16dbc1582ac697e8915c90281a0a784c4b75345a13161bc6a586166d4385b507748d3b9516b10550f05782125c10f3761aea2c631afa83870c003950b891d96ae721317b192f21a50f2b2caf49f81177790c29c02216759b005692ccab4281927a46739ff7a9583e9a5eb9a62314e4967f5bb375fb627e5a45b918c801b4b1dac24d55c13aa7fc5cfc104647295650b5cadcac2c74aaac28b82233f64c1c01ab50f16213154d0312c5add25af449cfddf494045000a01c449d1084c876163c83c13321b1f6f87757dc186d4c30ce916240e538f196936ab9bb419093fd593409f3a308827ad9002e5a621fb1387ac06b442970cda9c720ac9049cff1c307806e9ff9209fd0cc52b9517c685c36c45801875dbce490163c91c707755cc8701af04deb9aa0ce460f24c72e5d811c4ecc297abcc4c9ba304c75812196409c19be10c494a8b138a6f05fb5558e7f2cbf6f1694e7d417f73781205b941eaa3ecdf91c71e998f9a8b6b72400a048a77ce4ad17eb265313303cc86150d477e42a39cb4b8c5a3723d03550f4b76d5fb7b524ec2658d374a8c955b0fb3fe878072ebc0201b2328b737f9f19bca8411f35980890d71e7bd9707c917545aa6a659c3c70877134bbb0a1e970e7035021168c4a493ce1c9950456a76cdc05fef147fdd625d2b4bc51b39f3b9bc73a35a06a7485306457544b88c168b22e81cbe9bb0174a2b526b6ba0641456a3cc941569124557d3bc652dc8259ac66552db0ae06cbaedd091c268c2c6f4bc7e948329778cf48c3b37f9a3ed714c5c8e0099036514d9a052631b256fb7e7f7c91ea0311b8db8721d5001ae90991111c5873499bba20a9d08a135abeaa544706dabf7338497c578084e1bdce9155f87417b29313dd39505cc90c45c12c324b5d5af01eb2656d58607724725485465e33a6a64da220421c038f0a625254ad127ac941eb23362649d2049f8ae8c057321aeeaa31e0e98fe3da74d53938f4f900b6a33f1305a383cc12b35894ad498293957950010cf7912174373967c294bb89a90331c828048e3fa862fadc95283025e2f66dca10104be8b9f286c198b8c9f0f24c79a454e8dc0742283cbba84b95b388d8f6912f4b74198aa52ab561ce59508ca6cc09251fa2780ec0da59d8b12b17179320d23b822a3395466dac34384a364d06882592734f72ab0d2dd7131196afd4da54fc5801d85928cf61bb257274c98479ee0c2f65fb985f6c669d948fac153158530849311f0bc51ae72bb8c23ab5fed55e793a4e8489b423044a1b017273a4be35a305e19934b99b45dd2734ad4cb4c5b368c7a32650f306b7148c199a44bcc3a297429cca6015e906204c827cff8c9dcd48bf1b638091f732dfdc570ce6618dfc839b4a4648a52bb8302e32098c26e9a51a6571c9c290005265b6359f07598b10c7674f5356b0365ceacbb55b1a1822811c92c44f0e4bbda4a13364749c5384ca7670acce69bc48b6a0b0b2bae8ac5cc40aca6ce24957167cc0f24dd0caa3a0228c13934fbbb0c205f53d713aa441f5b0feb01fe26411e0cb6648d36c6236468793848aa4b7f4510377e0a24bdccb712bc98cb21ceabc08101328d3d032cfe9c82d21372924c69ab5a402e9b3d88c87e9bc5c90335e5ac231a1b87ea3c2527b82445d7c8596b10a609616e4da431c9593b91a1aa21a2e436a359a7a5901902a6b516d562363bf95890501af4c5946626ace3f276af8966709cbb9b666b9842102f3077978e4872307ac65ea11002cbe4dd0bb83677419b89c9e0c9847fa6441c86b8b601663e40357831d1b3c21b4a8985ed50e546c2917f332d4acb59bd64d9be88efb981362458b8d868da7ec516ea9c807a29c5d51385781302072c1f3295da2559003d4265cb330f43ac5b774562c182be83636fa034bdbc3cb25ab6c8c21c69b873329321533a788287a40c1659f457c5e6e15456da54a7fdb18c8ba246447606f2aa340a48b4fc667d7e67efec47910e05c3da4463b75359668821711530835357b6a8ec62a3e7817c508c79754063f7110362be73416a46533341cde577c17a75b3316ac59575eb1a1575ec0104ee77f70941e91786ad457832e1493466a3faaa55911e9bacef8ce49f579f1753b5138797ef827f0bb0821ea69bd9c43abf2181d0775fb64b8694c74f0323600fd3e5f1bc5cbdacdb2329928247e4759747c02cdd924cf1c93bae5c37be8c3b9c7e09b4660c3b9901ee33b62350a695d799b52743d5158c015cc609e891c87f9ba02616ed2d3a1c14aabef101b4b42ad5c47916481bef01b11b9496819ab76a428c0f5b8a69ebb24fb5b3407e1c22e2020341575c7098e63379406c9b60b6a1733c171682b1776719db5acbd2ac6ac4b97aa0a3c8c168a5ab389010a01b4dd01829ee4a402e54e633a229a94cf96e01f72ec4054c13335b89bd6e91e965bc324924c028b433074c9705ac4ca2682fb1b385f058d574515319397754cac9f68cb70022882a24242d1c3f1242cabdaa4d68a91ddc8a22c939bdf1539645a912a33c1d11a5849211d831abc2c86834be35bc3500cc44522bf9aca86988aaf580bf45a5ff7f8192e110e163356b8a52486f772204bbbbc19befc631433f081e8556579d288b3b27c1a8209ecfbaa30a82b34eb722fe2be60534e2f625c0ae477826a9e75b7c5aed2398525358bf0ad127c15915133a32a9add47a72270a98f942807fc59f2420e14365a758c534f289160a65cfb34619c7c9b2992083cc699f554bd64586dcf379605581711d607235c944820cc28416ac761498d8b54193a8cac8b815d7b19a21b02a6d5a737c4984f3a888c0b9e3f51b95ed9430327642a082787132e94d6c26b298b77554e7f2237ac286f419266580697fc9316ec1176c4d763b194c52d79b25604974c1bc899560b72094701709797c5183391a268853b9ff3aa277c707906be0b078fd6619050e14b48bc73f877bee69a3ebdabbb8b2198cf51b14b2cc9abe673caa803b419be1c34b6341c2e83d2013152b557a87ac4fb55c5c86ccbba995492cf960479b044b3d6233317677c78a453d4e247ecdab3fb200c3d2a0564c4100a995c4f70597e498cf0897b507ab35e4587e2b875030303dc2ca8ceb41ae2a9725085c12040c8d0cb20ace46f1936725bcabd60d0b880f7aabc887090195d95fb6ec060b5257ac37481faa2eccaef99c0da37285d53baeb0e25bdb93eb856043b822df9d60b55fccb537afa3cacca9ef50433bde1dd9831e534d192a59b3bd23b49a95bc1fad20070fec930b6060bd827d742b077092e422268e15d +ciphertext = ec483fe1e90af388eaccf12f71eee44a9868b9d22fc604716b42147fce466a3d9499f2ac1a601e1eb6a268ac14025edbbb5d02c0b2f8a60a4b1419cfd3682fb6f08d8d62d51f535753b05d4a3c3bf515dfb7f32ba2dbbf491739ae06850b4ff7bf94bbf18395a3f7ba4f504899f21e27f31c58b2389e5d018aa232cbb3287109d52655efc595e46faf0724426fd47db5eb9db222f9f325bcb97e7a273fa1c1bf3e5a22c2b5d3b915f7b27ce6d7fa9086cf92fafb7e0f1cd466e74add460ca84d518ee5be65c64f5cdd3eb13b1a5447b0e3cf1f5bbe40ced8a2f6dd6a76b175d017400611951e2711fad5a880412b1a29bbb3774b432020e93f90cb7643e0cc43b4425fdabfeef2586ee284e02968773fe186facf694782feadaa1d2c10a54d5eb7d274bf47c22c8e7545c5992204760f8f1fd65e26978da3bae8c85f0117e6837a87e2b4239363968d949ad3af50524733291c72585f21c8e91fbba2dac44e6968a3bed82723b9da8b6bf64eb4ed0b7188aca874835bd8591a14386ef6f6a968b8306a4a5e38ae04acb5533c3aff6e36ef7de90b6e9946ab7a1212714efb564e9464c47a1dc0173e6668c61f7fd24738f2ae66708abd047b582cbf5f8b794de988092c293a21ff273e1249ad499ebd36cc7ec6a7a5e28694bc820e8f9a5e4b17eef4dcf421f6a4a872fc3c5aff93e6f2c4753e84fa352178ee1c2defb18aca27c55a32cd3f09c24d0a5cd1eef3c33f8dcb52e0613b6c45f16d4cb2058f89491310027ec1fe23a61ccf5778053aab940d4091fe34b713205b074e1fdcc6f7f95235d46749879717d64d012facaaf35f4326670cd5d312adb6cdf493645056a13fde2b9e7be6e83e09056e6b54c51bee49551b333126d35987d7a75a494bfc8ce611b2dbbdf954adc160599e14930846ada2e76a457d473f8bd2a3d0e4b4db62ec8e4255369466bc9ad4df424ebe5d6727029e512517a68d7f426e5fd3f8c55d4b1ab1889369da30b38664e77e9b8e6458c70c9ba6d7ee3eecb61db33b71eafb21544ecf68a22b0499912ece6db40c6aa0283b76446ceb8388a7a6929c100b4f0f333ca49de2b1e68495336b70468a43877cfff03f30dd306a813961979ce3118ca0309b4c8be667393e9de346b2cbd730cacf59a2499330e3b0c7c8ddc284f9923ddced65f067bfc7474a4b673f6e1e0a39916be5cd05e71d96b797dc9c072bcc2a4f6690d6bae6594d9ca5333a7b8280150f0debb5e0d2d14a37540efd2ed2691d487d144c42676d96bc902168239667ff39a0d5d82b8ed9af5f79a972fb571dc1b47dca3cecef6f3dcbc045a730971b9e417ec682cedf562e4e129de4285e590006ff03158f4c5de616b0280524c0a50898f13d21adb49483f3dfe51388582e4ef2b3776ae8c2ab36726461a7bb404af15745a751d48c78c3f82475dbaa0e634d4fedcf2714000b16857d8b25e71acbb407bbfce4926cfa5d527e90798c58c820f7052a7dd3cbf506d63ec499e953a9c21cd8144b3da89b6f02a04b32e6998c +expected_result = pass +expected_shared_secret = eed6ecb831c881508f99ea115745448a7b312a4fa97f65044ebcede172dee2fa + +comment = Official test vector 78, seed: "6a85a61dd08c0733fcbc158abb49fe0b0d96a50dcca140a2e9f5a254f1901985844613b1c656c0cb0112620591b88ad0" +private_key = c65b5692b9737bd5bcef94376a685fe08cb59c2b94884b47bb6a4b292c4ef8dbcfd1d9392ba3c464442cbe0879fac60cb733496ffa7116011cada07377eac759172db45c9035532a5a48c18f3343e7fb3a0a7a1da9c75f647648a822bb8fcc59a2e0476fe958cdf968433b46ea296056a8460edc0b7d4430252b227cc38c8dfa639a72759de9325d3bbbdb1a5305e546580127b11332bb666236924ff1f13105176b81a777ebc946bd4b962e8050c0f80be026a513f7c9c74308f8336a9bc73bcabc8353aa10afb69aa502b3b6e9a53ac67f8cd8784be4519ab3c6e8e47212bb59ec3958be442bf2162dda987c602030770555c0bc62b1422367b95a91399642155cd0b17dbb848b642c765fda2400358040d4cd154a68db36265bb525fc90988fd0c04bf0b66ce052bb216d6183b444cc385bb8ae17388d5e8024aa41563653b5f72899cc16b37d642f6ff7385f557c941571a1c73bd9425fef3c343ed9b88bd02a9be5652736ae69949e43b5c9719c4b8e42c9071c10e3d454b3c90d315c93579cb106a3b16bab7163983f5c514b818516bba802b7fb1166679ee03c4c41ebcffc6322db61a7988927dd83b48c24bfe82a4fb1901f70e2c39c411fa65c43d56c02c79849e7745bee15b70e405939b055c2a76fe1021e094b4671a290f5d708ebf0b1155b94fee9b34cd9858d3a8dd4bc27f5fc0627f2a80d6681c11324ecb74639540b72a23083c3758cb29ad40c979b42679e1436fc56b3a7d1115137015e2a2af9a8bef038b6905c8847c16558ba2bc6ea92ad90b026228695d664720c15e6708b0934064760a745ea4a5587ba211312c7203005f838a2d5b7bb09b8dc7aa39d4956d494472f71a268991ca907aacf8048fc98c095798d0ea043c42c437f6762ed3678b6d701560016f405cad66117c786b56b3a88fb5968c26869f73a2227b129553b220f67cae75b5433b29259553ab4375a0aa6766b2aa0ad480b6969201ed21ccda0a39f8b8f565112565065d8d26dbc1a57425a29fe0a606ba826ffe45a69493b08b11712e88a2b4b0371db5c0ec0125e2659ed08275d18277b9c0ca51797d46cafe91951737868483a418427733ee2637b4aa9496c30fecab67b0b7278a76da2da201874711e6928b7a40e7859378c867b9ba81529656200584ea9a5881b657b68980ef8cb201338ac1b856c4ec5b0c48a80bcd6676c0ca624f05296e59155d5587c2c20bfa1bef1005bbe9840db205d9658935a67614595bb3fe48e52877fc5ba639d023f54d534c58cb90a0a98bd1c2e9e940fdc61193d4753d17463d7eb8c9c6575e0f6845b5c0a5bc69c5f90128d3078960671394b75c5c72eaffc1e8ef4afdb395ffd40a2f6bc75fb9b79e1d8756705b710b0bac1dbb4ac312fff30745590739c08bb25cc9ec62caf1226176c161ece62aedec392a3591ec2ac80e92571c1417be7d82b2f9a1990d50dab78c1dee631304ab5ac57274846a8fdc6547b224c72e0781b233ff8a6c876eca3a3e060a00b560f661042e85340c4a8257660c0592a429c7b81b5137d410b5492864e156dad292dabf59035fb0e02247e6c6847cfd86b6958c74209a8f389041e5389ebf5b9b633b7fcc08cfe14bafb262aa9a031e49084a6127b8410a5a46cbcabe6b18f607c97d4af6c6a598a089bb40c1998d16cd307895035b15df2c34bfc05f634813eec780c96b83fab557075cde3b64eae6ba98b65106e729b81d11c926404e99164bac5b546997d2a842f6aa9ce1f6bb7ab7551a06a3649e1caf7872ac675cb8981a124ca05a318bff9a234853821a3036a86404b0f056491a5b20ae09dedb123df8b4e9eb612a00207c6ccbc580373b0921fe2831f50610340865232c60660655184d8a0867a47811b88bcdc4e6dec5874839919188f63740588ba97405bb1ff2925c1553188c0137336948f7809dbb96d2f910a9c0aa95d49267e543057976e3dc7346cdc7560e68911b8829d37bd0eb20dd5e2b0eb1538a98a76a68798b5469f9dca82a08648a2da13bdc1a9b52a7b6f345626bb691aeccd14ec20f1c252b4fb2595474b2dea0edda47b87cb51f020072d489a2e79cfcf9a12b52bb4f626c35ba4c0888c7939f38e6126484a7932f5d6a029e1ca5cea27d729065d7137bb518c1885a299b58e1f6446fdd8449e58a21453cde7ab683bec6d84876cee590d1ad93852885db721b85d4061dca1327179acdbfc329416b23234572901b3f63a2cda36aa65b17035f449af2b404691957c30028f053989c501d8c2cf8a8cc0c04aa59f3b19a98777f814a18a0753a7180264e59f2be7c9f0266b8dc481cab4833be8b3b599818aa930571748d41657256015f68a8c887c23205a6655f30c51084925167bb75c98b8a25b7579bdf40a912365164814794bdb0b78824fe9066cc63473496ab9cea06248d883d1846fc8084d59f05277aa3eec0c3186d68bdceb6c240cd0128a6bc1361467b861ab025309c82183233c37b35e8af1b464331cbe7cc3974a48a8e015a491677567472f263e31188966eb556151819cf52772053936abb0d0a48e99357e558301dc8157a8a7853212828269786919a8f9032e17f9b692ba8efaebb602e83bd4b75160541500779d1907b1159170dea870e6f57f5229222e85b178dab32f897bf45510ead084887566942656357b7896570756ab1614994f982841a525c8ec63ccc8e4575df03be2f5cf96505ade252fa4e80fcff664f6fa8c337980251904a9135abcc509db15a49fe4c6d57b41bb6383b3483ca5f5ce11641f9eaa423c0c3254a508d4319dfe72168070cc8c771ed3e06ce74c93240947a8dab87d889f9ad894f37243b25259153324e103b73c708371400ebf007bb5459ee084be938a18d055af7cc7aa98fbb88a156849765936e7273bc385a1bca94a74368168cf26d8806c7901eee2359c8694b5439f1e82c0a6892e4a68c4858a9a00b1496e177d1efb57eb9c0ae382b56626595673230903cc19c79714364cc4b10891823535e21cbcd45c90d471e684af1fe243e925c848565a1989637f7614c900af1bea9049b78e07f00950ac800ef72860e209c192a4aa0b901090987bf15a2db6165516ad0238a40b0bb233a365bbf2bab2f60eeb8a54771a8d8e5279e2740298563aa2868e2df1be582897c7a9a0547acc2d8933aba9cbd5d937073455489a30e8cc3659c03d37240bff084d77f09dee76b60952221ed2c1aa73b772cbcea4d7a1fd64561e88bb90327b7c13c809696c0e4711ce152577517be0a2fb3d597fa5804e0c106a4c10306aed2a804a1c9bad4ab9e59f6126ad7c8633cdd0c2dd9d4c6f639d312ed47be99c0e7b82be89bc3c1eaee6680aa4efd394e40c2b3f30523c8117f7c26a8969 +ciphertext = 9e87e3da4198c29968ff7e7ffc34af342463c33e928f1269f1f9dd9da05f7e6ccdc1368ca53debeebe88475d7a820be6266995b186c27068361275e3b2ea5fcd04484f981e77e150612841c15f5d3eec0e42ddde5c8dff60c0357fef646c13656e83947706b402f0bf4e7529b5912d6ce1478f9afa10b33e0ad8e64fc0c511267fc3802c21e8b39904ca88e8336f6eeaf9c9588001868fec48c5417e131345431b56db9b6e4468a2d9990106051ba1393277e9a55666916059e75ef50b399a45bb8de993ca4423ba9eefc797f1b2f4e9b10c63a79912b697d36472c3a53666542bbc5614b1d7e598e04d6d7258ee3a870bf3c715f3fbd0af474edb638cf94d4b000d4aa1f84f938f21e2b64b4f5aaf8d4a64e66a39268eb54c3f283c6ab0163b7ccd7a8c830bdf7cb5e7ecef736dc3837f6db70e18e23221cef0d6d2a3a50bc789116bfd1d3e4c6fb4ead0f5cfdf66e2a8c1e5f769595aae06555f0473247a48edfc9b5952bf5b5aef540eef286955347f4e16423dd6401e34000ebd9e330f2d8c801365c62551250f02c30128422992e34ff615ae123fc30a203382f8e5d190ae6e5347e90086351e4adc328f01557addb597968791490bf99baac1b5a4c7c5fd0348f71f9f62d0e65932e621cddf5de6732b182a7549c7d945a8e03857eacd7578623d993e1b9fabc88bdc9ca1007e79cfd0ab258aa1eb8ccea56c28b6da4bddcd74012d4526a39cb7a6c19175717f65fb02b10ae0ff90189c9672fa53fdabe48469a2fbcbcc5272d26f6ebcecbb5db514a53b2fe5ea45a1498022353918e67e3d53373ccbc0616c3f72d87f13ca8660641ddbc8c6f345aaa4e8ea397a690009fb080b70c7bd7b442ab8c5f7caaabc284fa140484636598a725868235a78b91c748c6e5a5c5fecb7bd9504d35745b1f06fd7ce6f7823375080937f81e8d8c6d894e606fbdfa64c928ad9beaaae76cc5f4ae37bd9cbbba7ba34181442961aae39cc534d44cfae600e79cad2d198969c85b66760dd7aac5c4aac439af9c8c49182e8d1151c33803fdc45a7bc9b3fc7ba063dbabb7670b184ff4092bc2f9e50156f5a85fd75dabd385740eabcb5bd816372b869bc1b751bc8db94fabd51c9759ecbecbc0403b233467fc3f08d2c94f1d0e0a6ff92a6824bcd6088cec85771ed9f6c4006d36a92c0aee038f96cc1378821827cda9ab645391feafcce1df8a6e8dad89abd81e87337db2ec1981159bd6cd17f39fa6cb02759939722e53eb0f42cc4265f85ea042027a36a9d77fe2d9099a48ab1644102538c958b7a5ec3a55a4d6291e885086605c07abd1d21b05e3b54962b87a2db165e6e351d91ba33ef882d83cc3ad5dd01d248db82642df1a0ee9175d115f86b1df2e7a3f5d1b33b1f6a41ac0c9f1eb4311c8720687886a5b9abc0de282f5925bccc89f9b779970cfbedf951ab1c7a06e4a0c04d7d1692f0edfc61eed1eeea7e0e3a440daafc6abe72508bce43e8516bc2eb9f7e2eac1ca693863b4b07ad985fae99980ee736d32c69af71b1 +expected_result = pass +expected_shared_secret = d6cb77dc96f9ae4bf8b2fc0e277935b3b7b7a59f749ff2c08ad42659dbce386b + +comment = Official test vector 79, seed: "7f4a56eda151e7b097cfb8ef980440fff707affba91867c89522ced6c5ff3bd7f5f00bb49ddd615d9361a7e4efa42851" +private_key = 52d431d74363ba07b7ec47c2a5b98157f616b8c7b7d3e68ce3f2a31365bf4e21747203c5edd758000a8c09d38a83457fb7b015bdb187e842b46cb9bfab29a917435431184219339df7cb81018a81b283814ff8b15e3a526ac35185bb45c7a865c45ab0ca1c7c5cac9e35f753d378556a62c8aac92f0ff59651c1abb789970a32c69d153b14a687fc2a56b9e0c382ba4f907a0bef79bddff781776abd042044a1c84c4c80ab9ce9a76bfa6374e9cee06081e3661a09cc3272331936cc85d6b2319cc7873227303191c36842b61013c0a41082b82034a2e1bfc8c47916859eda53033d5427741510e842265ae36d530a19e5d7365127bcab5b506321abe2b69de823b660b4699f8859de76899098159c211cffe51c7198cf1025bf9ee69236c913b16aad84aa4c381a577b6c7a3403627b323f11ebc1f304747f47407db9a8c9e4b866082597f28b6ec272ad2140a43a52188b061650bffae19761ba99ca724b71191b6dc5b16450cac50b247415370d5b207701aaec3a13cb477983f180388050175658ccb4714acb603b6b3aec340dc6c164fcb81331ec194c382fed024e0d962b056627a5b05a00b5511d78badaa489f8bb3f3c5b484f9c1450708b89828ef24b815eb43a6b8b127bfa49acacafc46434987bcaf5f91a926140bd56504fb4525ee1921b63733db2986dc133078caa44518871ba12894a553bd024fb731a0ac44ab80199394a2385bc440515877cb69b73b0c847e40adf238847608908c20bf7e1b86fa84781371d4cb52fcf2cc30306c8d98c679d4cb41eaa0ea8b395c08cac6df2348474a9504592ecd34a93b3262c9751e42193719b617355c59a25679d909a5e756c8db03e3b174e1a063edc733b9350b4f738618648baeaec5b76376d05329be6e706e632bd61292755f361096cc4565573562053b4402c42c85b5299b1cca0b9cfec4605d63665f24561d8c1dcfa896d1c6d8918a3e6f2a8d4224ff97503d1ebcc8d5395f0a64d1454623890bb7ac6b87b29333096535118cd243c52e49cbc0945385e38781b9bcb6b220a66d96d426b9a1f4c4c4d0349ce2bc790732247ec5d98e43bcd37cd94b652bfca7b988b063bb102ea0772df0aaec74c228261b4fa7a49f3b329f2c7c6d04c859c9816d5ba2aabb85e52dcae066b9af4d9951766041cc783dc672dde42558f50473bb43bc1f93bc6ea7d33f46ac4999cd33698eea603c7da265ad713e48691c8b048b21134c9998da19060cfb6ae31cb5a3b7387f2257fe94bb3ea4c963d01849fb021741395f1862085f031b6b05a7834551a6c8f0ef91397a29e12db6d776b05c7f12c8b260cf128c02e48a9f403a487ac3a6c0888c5299414aab1d7283252f62f465867a851be9a82c9a79a25cfa727c632727c765d4c496d466942147a8a7b65aec4ba84e4e2745671bcb207654b087a26f93ac77c82cf34a7c2f86fe8f48ff9a0b663d79bba6b2b8908b32fc145e4f65c6a8a379a99c9e68a10c278130a1969e0cb708d0ca6ff1669d8756d1d530ade051aba3a07903b5d801456315057187758351588bed222785c9fe83a0fb4c59245cc2a72b309767348eedb7c2097b457bbac8aa96a67d785803744e149b3f131a85226aa8edabd5a4a5a7cf6633a394b756ab38bc652ebc1bdb728c74ec316d039ac982b118f1aaefec04e48448d45f72b319289691a93a20283c3cb1fec992364ca83226332107704d3390f71e1883b46bc2f31b4242744e0847e72d5645586ad0b8c0fe48ac04a003045ac2d2101b52c7c1d494673bea69766a5adcb38ce3a978209471b5d7095a720a4c1971d94970884f11fa90c5c8b7009e2e1769b382004c93a2d9187b23929d941468444cdde233db3791656c860705b714e3aaf076921458b8dddd61e09ac461e96a1b1e9af19ac6984129b6c8ca9d4e39d70277b5d9a6a4b605f5e0454ac05729c2691e87a8d79353289678490a822c41c52a2f56b91a35f89918aee8935ef2bbc48485bd747cc5c59066b7577739b669ad21a5561018f021663f5cf48e08f39881d221552c846ad789810030326c8530dbb369681c69cc00c2390fa857a37ad81623eed4262db69929353118a0886e6c1ca3d36c65898968eb7c187b7b866f18a8bb369aec780e0033ebf1b0df846cd60633a461c569683598c7744fbecc54282725e337cec503d12a87f9cf5ba6587baf31b852bd45a871abb81e88c8b8a56d324c87a777beaf543ba153a222418bbc57d7e1325fc2a075608988bdc44e276af10ca2d7e52b045514080597a0ff73732789d0f955f93ba77e8034900251416b43e291984cad36c53c947cc954a8320c11424be43283a6dc586a9fb39b2927867b79772dc1caa16234233adb5ac819f1a172da5194edb997f924a827a85fc7c7a8281c98f7a9cee443f68a2aea6001de7c7475b46b55ee8991dccc6527b5fa1393c9107c4d35a073ce29a7ea205a9279b62f5ce21f3aab0838b42e6679000cc4c182504a2a4e81757b7f6a183428786f09c76c69e2d7598f1e5049cb57738daab6972abf6d8bfd2ac7137493bd2b8b5f997519b2026ef38623294b91999a5419356bfe03e338194e471926fe5842e79740f416adae2a24f441ba4a0c08acc175f347ee3b614664496a5e51c01a55b1d2a3e8486cec4c3ba461970868502a0f9553d776514857bb8a872c7f736ccb432b1392e99568b51b9c9a56c441ac0ccbe785693722f90d63a0f78c8ee777236ea43de2583d0e093ec8bcab7c8c6ddd8254258b7a5732939d953e491a6bf310449083986b2a0f236c5b9a300db22299146b9a0943115845f3fe98045ca844bcb1132e0bc98cb54746937b1479dadac5a4f9320dc572ba81cb250f13869d132fa259604a76a5dd56a7543b96c3096d3046389a917dce53cbdd9ab04a65b31c6c5cfa23a2ad53faea3bff3985fdff9ca3e3965989c072f4659ee8914ddda0acf30a64a1a823b78561d5a9304950ea3056f50b82915c71ae0b6883ef319d061464d8050f37c24c62c7693f204dd4b4d74b66dd7526fdbd707a3490769764adbea61c09a2d7f464d7e932705212d6a9151b46c2ed93a7b99c1148f679d622419a4574310ac20941b3e51591ca5d53cff51a6ed2c081ee7b4bc23c8ba8b1aa2924406618715731b1cc404929a38911020fac6647c24306e349f1ecb4e2f530e8f200eb9c0a315606a3e130498f96ad5865ebb4cbb55265e69316a3bc96e51745b02f4a593b796b5951f48ddd5d61bcb3f79106fb3f881087b21e528bdc627a8a1fdbb3b1ff5d83954f79bb3963cc1c5cf2b2d1c6ca76226328ab765a79999ccc71fe98d5bf3b34f51b19c35d165453e5fcdc6f9df64526d9de698f2bd3e6bac6c7fdd86601b9ba5f4a5 +ciphertext = 7f5651959d131f3dec04f463341a622dbbb71494fb88a8df3c32ba4f398696feeee85b56a6870f77362e5bcce245c5e26e6ac9c8a995cf8b16591a3fb13ca611acb8b464556e1301b742b18b85e79bd8aac5e0c7c69faf37d3fd6c04b22a6a0936e8f3ea4acbabd6e6e1c5254f30061fec7939d165fc83196071a4950da73299adb4797665ab76167b024f7ad115a89f937eed5a9f9223250f54cb496e94509b1368f6ff28d1a5a5428c7f43158fd8b4b962db4e69f95841c82f9b9456999ac0902787c6b94b6327c13c40816afdb3d27f5a5153607d48f79d3dc3a40cee37ef2b255685435af03e82e4ede89cd639c7f66ad44a8a6cb2c6aba3d3362e075d6d11ac78485b6c69c77048db47d59c5662d4ba1462b40d1b7851592a9f442d6ed6e1db0614203a0667589e9736fed1621446b4d92c6dc550964d3436cee676aa72dbc7f47bc053434aa9fe04ee2ac3d37715fb6df7156a3bb5366fc2f50c2082556abda2695bd8b46de24624b11b3f275265c441e946c0b4e37981a4b2229db4b1b04f37fd716e2b54e345c12b231f201ac546386a72d0d2657f5ff3149e6d2981dd87c9bb1e2f067e79935ad015130ffb2186e93fab5be37f141a04ad649ced8f1bd1a5c745a28df4fbf9da9d7650c3cec51980f5bb0117c0c5835eac133f0fb570c86baada7b5d8b6c68fabf9f0c9b76580b512ee9b0d265cefd838bb7d6caa92d7487574d6d4d710e5a6edb453fb3d6227d8eb469539911bc8273524b48957eb32bac6898dc09e8538ea3a0508c860ff7e61580c5a8d146238ea6620be7b435d10093e184ae98228300f9b0ec5eb388953ffd45392dfbff64cff7ebd2f62ef5b4adff8a2dfe16d8d97481ef00ae4cded00e75c6dca982df4c06e703dd6c42ce47fa61cf576cdf11752496003331985b032de9cd03168559d483101a48f4e3febb92bff1ca9a07ffb6e0f9682b346316b567abfbad857e5ee520fa659536959d7082ebfdb86c92ca2189dd74ca92b9af4bba9b989a7cd218cfb3bd58f4cc9cdbf59f42ccfd9f86fb7f68e319753fcc1d2863e730f0f8e0f51ed12b991c8f734b440d7de3fde744d49d1c3e403dd5f5f2a845e157263b514ae72d16bf9ad5634b80f9ef434d9e35c3065057f23cac769f29e2ffbcad8ad08db5b0dd3baa828e035240a5498a87180be4f3afc748da484a877085ff2b2e74580cad830a9e3b98fa6b9db91e902ec2ddde406e1c8e3bacb333be8b6b5e83f81ef20e3bef0a8ffe7da5b0d127c67e64c0e0498f2e117f53e7dc1e052f181b9c8e2320063acf49d8db7645b5222b4a255c22c7ccd050a0c246c9c1512eb6830fe3d93fc820fb3edbc8a6482ee06989dc344489a54ed242cacf6dbe0ce21ec394ee7662dcdfde16c178a890e0f58d6466dd2244881beb22017d0a915a1df3ac4c78d8b67f50748b3937b939be6c36ece06c7908a8fbd9a444da6dc496f3b8acdadd2cfbce80a78e2f4bc1df3aed9eb195aeb01a01714a2c15b28b20460961303a44721b10cb8583f7f5 +expected_result = pass +expected_shared_secret = 1592f1413331f1871b41ff298bfa669bca667241790370d81163c9050b8ac365 + +comment = Official test vector 80, seed: "09fc004519bcf85b20d25d314a0dfc79e00cb6262a7dddf9c52473641afb8cfa0f5dd5f53558184caae9ec34b459e98e" +private_key = 28ba2f24db8e2a5b21092964f1871e97e10f2727c8b27916a5068edd27670d26b91a93332157ac686205e23616eb0271b081b51923c5996743cc114f3ad310cd6791aeb05f77960991513ec655533921a8d14cb2589399ebf18f7ba89bb7d6cd2d7336ece1b7b63b98f26a49d356578ce7275ee67677d1482e1bb3d85b88325bae0a00cfd1288c34078d73965442b7b140705f0fb76ee3d0921112c400c7a4d1337d6a3a8cdff9af05c64c079c64dd143f1fd56c28096313e82d51836a2dc1b0f37a2e00545f802b417a9406e55420b4d71fbc2210d05a771cdc164ad50932ea40a876051828236153b4e1715edb1453045721e89a60acd0066227704b8ab991e8a06812226bc59943c0814c847a1865c19df4b7fa13ba3ef95543e724ef854ccb28bc1db49b75c1aca3649f848bc6f32c139aa79197543c628238adb755f4da6bd67130772b4790b28c9f1544a4e9860e875e68c1cdd9cc0cf17451434c7c53f3a9be39849720b1b80a836ba4c531d49bad16077e90203c9120c23239cea972454b08a5f10812443ca75b913df98dbe29c3312157e156311f67354d414aa041833f8454aca5b3898b3572e819fb2c4cada43c9c5191d6f7aed8f310cf77ccaf0c478686952e71a8a8173d0c223b04462b96c04ea7b218a13519b90cbe3be8c32b276f90d349acbb6362706dcd54aad0497a058ab0138a8e57d514d5d431043184bd1a07b77c3299ba6c7205938eca8403f31a1c605a942b73775a1ac11c40d81988e69c15079719aa769b5f618052d5290d84714ca57418366c15b74da4e98df96abdd19884ec1703f7978c4dd72b48528789d7148f16c23ef8bcd1f353cc4a76e7c238aeb1035424300f529acd46926874190556133021a6a9283ddfe02edadb7de23a4d141b0787539b68110b4882a51f95403865becea06e2d7a1c1f534fa3366bc1ab387eb867477b92f00c0d09615bfcc1138137cede4098ad57894ff74982d71ba2eca6a0f502cdc9c89bc6a44bd84fd8b62bb5d84332faa830e2a732259945028d2830a8aa866f92c24e46d164c4f4658791c11f0703d906a82546c75f81285c24597bba4b1be3972f069d6b383d61cc32b9b66604b7cdc4bb39058c74ce770f04f758e6124543e13d2365a915802f75e90997b10b15e650aee33a291c87030517b6c29cf10670d2dc5c8889aab7518b4dc86d86e25c52acc4db175a5957118f983c3a4443b33803a3161ab24004b7a789778c8414a8aa8c819468ebc28b68afe5333f7e666d44b5a961533280b0021bd3b24e2aa51ba58f2f45767a5722e918b1204656a2b44ce628a3a84125f918999a6311cb3569431c7b0d6b58adab6a30f9473b3747e33c7a2a9baf87b709353a77743949277147928273f112b5e618167a5715157b49ced69a2492203a08730ed07b7aa14bad136cfa969dfa68c28af40b9763872ed1b05d4161489bce1f473d4cc067a86258f6b664d2436d4856166cc60467887f9b97439f607d336114e46b2a2964c228a18eb532cc4c6813dfb841e60c3baa59978234a06fc95aaaeabec0123230ac33bdc48a4452403842bd6158c668f28f20bb5501984c5d3992594a9238e03798d178702b86973350724abfcd15255f0a5efb7783d909031ed02c52a203de570873c7a7c556202d53a6c086899802bdc877bc6a813ab59b781bb95f4fca9ee76028aecb9142a992dd7180bc1c15dbebb66765c5abbcc5ebf764d5234d89a378d5925fbaf63a00e35d568804b973450a045e55c7c5f4907fee390fe6877963e386bc20cbe929c3d247611e346eae401acb972843dc204eeabb043644eea29ba2c1a160b98f0d28caf0677ab2aba362b7bfadaca4e1197f54f03ac8033814a71e1cf407972b3f1d9a986637a972b46d3ac46509c053efbcb9a475bc4055265961c79e1374c2159bd2409a84f22755a1b32e4b604783bcb2ac49a27a5b0b07ae346ac38f54a2943559f02270bbb19508e903888aca4bab72e332285837b9ebb466e5cba74d5ab6bb3b2a0fa26209a97f959c905bb4b058ba8abf30a5a6c190a018a9803ac29d84ba710b30da9a0844cc1a1478c289c32737144812355e0d7589b9ab765ca3b23353a350876f05081f3e4b14d8f66c998b81f458a394cc68c3b7bfd37366ec93113db928e5f9bf0e9aaaeafc619e332a7ef3898a66020dfc64f671879691c023409b53686770f8148a2b6f7b62b6aa42981ea0cea7753599585034b9ad99c9ac8b12872b1a47a088bd8afca2d42093928a4fb770198c4cc50b0214c4c94fc7b62b5e636423c6adb553b138591f6372ca6d53343ff7c70782a2ddc4801b262f220a539181c13f3c3e8e0a0d7191a43a54ab008d326df803fd8757f88ac9bdc8bc75cb83517ac71ff8613b3ba713377fdad2199bfa332b8c22c136350adb9553e3643d0c45413782f3bc9e941965dc051df98738cf50113ab422e4a22759ca016bea6fcba390ed64540112842f5b1373a2847107a43403b4aa5ccae154b9c54831e3911239b79f1fe997bae30a542560fe6647a2e7c4916097fd484c3d040456ea2bf8b63dbcdcc8577b7aed99c05fa28d468272876b614045095e918600f7c94bb0944f62235c169b58789ae8bc3e6f677ca8d238602399e307553e235d11836be120b3bac41b0a668e0841ab11f49e27aabdfc27afcaabbf542911b6a220cdd626d819c44c72556a3946df86c43d1b8693944d399a3b5b1309b9780e34330ca387cde8e4c9b2d0775a962f447828d6295873cc1629777fd93c062098b6149a3e7c383e2c33cc3fe7730537416fc1adb6c09f4caa736e4c796d2a97fa3807c9eab72993b4b876136b856c7bc75ad054288ef491effa872247a99aa39a9c2b7602027d65a169317cafcbb77c37d89ed32489e3c2557998a06689b06ab96615bb5752d439da446354cb0640686aa794444a806c31d721b8c6b820810a5afc00932a885107b5f968b5c8ec98207293d8851892a01dfae4a99832326e3863bcda75190c4a487b46e3914b702017b1b520ccc30a5c475fb2da94ea217f76556bfee825076533973bad3ac7305b5c764cd040d723617090af4a7811e9ab206c6a331a647d9385a5e7d8bad6c89b390b617018c4a0691d262429bba173598b37d7c245452853506437e756a399670ad8e292b0d820e3567047c82870e82236389d99d678cd9b49526aac30d1b830b12f4e62407a59c8f88b7b5d088a2d08b9f114c3f158650f32c682ea6a76cb62d3ad7357cc617d597a3dbbdf515f6852d71220768859d599bbaa6d029bb2121c788b5b6ead7226df664490dae362c4befb615717d81c656b32735fe6141a25f7ab9f875f79e0a82d6ea5cde5a017ab637d5fdb7c42646a1d71df +ciphertext = c1a71212d3e37d620f58b896a7d06bb05b206b6d84c0ed4b08a5c55d1579cebee866e8f58273b10eb698f9769ecf270ad900ee8871d8c89ae01c90228f57eb877f7f6ca888369ebbfe2efd2509ccef519f80b678d33c6f63cebe6e003e9f63d36dcee6e76663677ecf437d59b71e8fe106477a92bcea414662a647be78bcc02c65836f83e0111d4e2eab9b14f5de6b940663ae6edc3cae8bc090116b84ea78ec7e8bff76d91e735280eac3d40556d4389d2a7c39720118dafe3c8a8db614905e620b7b1abebc1a0b17590a25e30cf46abee0c4cf1c498a1c81a68e22165c76e857b9f6fdf4a2a4e3414ed47afc180351dc441c8b3d534703cf2f36f630b1416c12557115dbbf5f0ef3575b0115a9121749a061e2b674d0336e3ba496aa54f376bf594786d5d6de95e27e0615b67f6c318be228f1e89afc8ec7589627abe3e024224b85d9b11542411267ae956a6057ae955ec9ef8848c9a300ef227fc0569531d233713d83ab84afda6481a7ac32b4460ac0df8611384c6e9104048f7fa8f5d6c0bc9b55f52cc0e733ed6b21efa1067bc86311e929e991ed38e5ebd2acfe72964180e775e4abcde3106bdc514f8c47bdf872ae256346dfd90b9109e27f4eceef8ca436c868aa56a9ee277f8152e10658e8643326e3b619d0222f3fcc3ac878073f1ec5db29bac0da0c55e1ae7d818083f3fc071500ad6aad2e84dbf363664b4b54c88cb4598121e45d86367e215bc6a436d864e6431aff34b79c4e6617e9ce5599189494b9cfe0b87d34727c2839b6756434ac84e83e0281dbd8048d2b1b19f831faa198528245f77a102e1b0bdc93649219cace43d961cd86eca2fa1c77b65f2e5cdd785fc5ab7c237d8fd1181e598c4b8147dfc597df9dd6855eebb3685d21c82e9e80707c65c2f84cffb4f44abc15d563ac82e8fb46be179c01318d112c36608db929260c27c280b5e3ab11901de1e15f41dbcc578ffee9a1bed3f31ed3ac49527c442ff392044c98e6805a82fec28f69904e9dd99eda5a473590172478c1d637c12b949a7f6639a86fd8548e2c06fd9b1861c64cf9f9f3a0ad913a077cdd0305227e50f2e38bd7bb726ff7408907f71e68427976104de4d2df0e8e21f4cc601ea968f51a933383f28776d0abe02b5680562c15883b6ebd2fd5a6db063546e13c47036a657bd80b9dd917227a52f5b00b66091dde66f950617c9ebe73a0d464506bb3bf89d6801f8803e770e424a12500ddf6b8fbd45c533a99ef70c42788d4660eb5968cda54df25a994bd2c92aa5ecf72282bfee5c376a2391deab3090b292dd574e630859e7c2a866ec9c557558bad78b236460c05e0fae86b9b0e960974b340ed31ea35ca171308bf54d40000adc56d8b4ee6d10c238c5390dfdfa034e28609e95ae09d4f431c5b96232ae85c537742b3068a4059d3e8894c41dec04d87901fd25a78015c845c858ff75d15cb8c1de7ead6f1487d2fa582156a24d254b6633b7a027c61c2cab286ea16dd9d1799c606cf4102d6455740868fca9ef583 +expected_result = pass +expected_shared_secret = 966f35c6bc47b4525d9af1ba350e8f44ea448cd1d90cf4e9c55ae5878920b7cd + +comment = Official test vector 81, seed: "e3c41cca6f04cfe7732fd54de30cc5caac93e2f80e76aed7d24a962a3969c1b6a311459a3ec3e510e3e9b1e4291d4d7d" +private_key = 2f766ad78a0112b8cd4bf28dd0f589873553bf114f19c2719f61a32cbc85c71975b911237bc6aa6acb32b613cac9dc80c85493faf63c3e337c274542ab4729d02abc5dc07309032c7112540522575d663c89714aa7a456410144d7c2bc1041c03d5a56e08cc7e5663c01f52e5077288bb8cbfba21b4a8a19c055691e05c22f94c62c3cc2b6a9c155e2a4eb2bb9d95b8c9d5a6394d05af87b038c210d9faa266cf07088b3cc7ab56ff3366fbd595b3c790b5497b34b94a72d8153fa13b40be96b51315ca4d22be3828c3556843545c47b0254266a802a44bee6e5a19a446472322c6aaa4cf47218ee3c99247564c552c93ed589ea8bb2c637bcf7277d5b5058dd80342815b2e8864b4c330920a82ec76b4a7bb893e0d18278f47f84743223a67f2983ac8c4a1845a61259670b02d6053ca181ba4c1bcca05b7af2a27c59c1e4e38da723b787aa2f36c71e3be05039183bffea6ab3bc779de2273326b327d42517b6c6ed8c7f96c6330d4c39e3d2a7b81a538693329abbbb5947b068c3cf7b45c173c1ba9964c86ed91d0bf64e209c1910c218434311a50a2128d52754148159891e00475654ab30b9693ad507b2e19acb7fe6b14f27c09c6b2570b861926683a285014631c2d7cb8c0c10a25d073d3c067ab819b9dc27971825ae21cc2e50d377e3396f0266a5ba598bbe9a868b0b6cad2ca3a8cb503778967bb930d90795719b237238c1f831007c690186949c600c6f587ac0d81c8334c57fe0c59db3e2815d63c26c620fdd75836261644d99327a334ea5a40571f0cda39ca716d2bb894a50bc4cc84d6621b60509dac77ecaa39b9779a3696749ce83933eb70c1e85bb2dc3421ae9a0ef40ac2d83a1fac16c6dccb0aa16aff9a94bb6d125665c3001b845e7f20e7c90a3db636950b0836ba008da33500fe47fd4a81df0e268c62974bad02a6d3b2267f917e2046df3c1883187683f030a28a129902083ce26730438b0dc0042998c9472f5a7fdba371d74481dbcb9bc4cb281e7cc1dc4455823ae1ab8b233e83324544913dc261b6274464b656bcb645f87b0cf4512af443959e67c47d679020c2905d45e21da586ee8291085a8a432ac6afaac594081ec298dc13175779b8635fc8eae58982258759999a57b704a5b040245d282a9b6c9cbca838399523f26695f60389ad42f6512783ae65a0c25b7258674398839af28866671329109a58e579c026549f0b7041dbb6623665fbc9a2ede41c0436635325912366ab1364b5a3162c4b8c2a14480aa6bf165588b8d26ea968291cabf66a4e26722f87977dab7807a2c65a26a9cbd339bac0b24e6b46e0a8082be95bb7a41b1b8b670ed3105eaf994a06a6414e9abe2a1b608c29c94b846012a0fcbd6959ed411d8d0c70a32559c68c74d94b2a9707b9d9755e3c69ac40782e97a1f904a32da824c7459b59b174a9fbb6b41947f47b3361d5558d831b2b444818ffa4c17f4bfcf8b9c7ce451f4ca99884c13f85c24d3cc4740d2567a54ab0583a175759fd7e197f3000a39717bfd9c768248518d50791cd84dba795e85388dca21507bc669ff0b906bf515f38c04dc838d0d1357377b1601887ae1b0a0c4490d38a871910c695c50008e5a5a30e92dbf312758b73beb83625df3b8d5c47a7a334d4e140915ca1401d461d7052e9ff05f73a1598dc9622c324c1c8b5de9b0386ea3cd95b86d80085588ac69ae310be6b5b5379202f4f14878fbb5508907b99490e4191b1e13a6890a9209f0a12910a3e096747eba94a337af9e609da4e8a9f8003633ec099983b8e778ca3d72bca1c19b4fb4a0faa4459ea06782367580b7aa49ab74b60c4cef7ab3bb9ba081227a7e1ac2f5400f8f7395f96567403b2401a2abb0b70e92e6ca2102c597f496cc8881d7b688861c7988363112155b5b88271072a7a7d68b76036059ca5e402532ce8763c52ca237a334832832f2a49be3907d15852fced4675547796d3046535390d44580c24bcc3d67a50cfa2ad8936d46121a7f60179be7aad0746e8a2c8cae124d27181a374493da6a68d47387a44460b39a45b2619f1d29b08ba4495230470b87bb926279eb760b9041632317c4d7a19e7753458dac07eb73331d808ce318555e1a2828da2f1d101cdc9b8363990b85064f63226c36c71061444e17a28c3b56332bab4bec2602f5c31394c870dd21030997564de52602c2628c41cb7ac2388ef35371f870a21675ac522660268a1802a2e4ca4c7152a9776410910175fd08c5e0307f4c2a61c877abbd2185ce58738fda15335aba2c77a804f94077a777fb49854c7a78462263e435a1d7b4a5205ab879438a91eb60397704cd937e66c7310625a6276182d86894ef9750f1817d85709bc578092d3b65f5c84514361264909dc2147ae6f3a577097e64bbb2c679c845d827b1ac393497575e385bb39563e125c3a3925a21160201897072f03f45d6ba85db7eb1d5b8ec7111dd785ebde07056653507e967385945389493b95c0a95827583f01dcd473fd3138887d3472e18b24c1b7e2c837668fc6917175471f3caa1323a34432b72c7b68f658868a2ae87306109b1053ed2bcedcb7037ab72d8c2bf48d29a0822575cc91ca1e5698286c9b19a7471a5b652f6a900659df9183c76417f0fc89d743aa635791d588cae6f650f3d314d65a6ae81a935f38b964f290be7a1a75f256776f17383f9bb9f9203415622b60b2a152a7ce3420cb49c3592ab8aaec009a237a12c2c04abaa08a382622dc84a053c94881664a97381ab88ca41846e82c02e00c6033b4721db29b71fd29069297a2cc387f2aa5336816c66e75b594bcd144171c3f7ac6df8a9a10a71f35b39a3da7d53571cb33860315288c2f7843e855d27db6f27b38940f973b2b063eba12b3a8b73d46c6781ac87f44c91e982cb27e534161212b367ab74a318b0f41e7a060823f17814f9a6e4f5a9093a6379fb0291d99916b15abc596550f152bc79703f1b0393b720cb85a510d4c9557acf3e620cf994c0bf8c06c2606041e7c3ce6044879a7612c3a2fa587b1b7676b956291a7ba5a78527a163ae08696c7c881076189bc1623c8d360c8d85c287a9c0c6965d0fa315e2037eed604084416fe31b2f01c7678311ada765acd7f70de59a9a85a8249205c78cac786aac9a0a0a7352b18f9cf936165a9c39d99aac7c175a5025f1c66d04354480175fc3249930e66c9d06aa50e7adfefab6aa9c205c1507a8f40512a45cebfb2b39f3330a962ed717408e0934fde42a5e1cbf04c80f37d7dfc7eb53a785194c4a1232e61c37a564c819d9bf66855f6ae70627f04da8378547e5867e2eb9759fe0971efd601c4a11eafeca9e810796c34e8cfce9d59342884456007b01ddd12edce6d10ed87e4c +ciphertext = 8111151e8888872490f4154b113ec0c4ebf57a28a670a85c362c7db91f1024cf7b6ac8030cee1081be1531a8af52275a3b94cd0647a949a6211ed50b0b362a034bcb17829dd73864bfe5ca9b2364ae0fd13e9824f8fab68922e937d2103a74e170c6829446e2fab2b7149bf2bbacfa817a68803e6b70a17f7dc65401f6a6813410887e4e8a784bd2d1f492c0052152cebacb091795ca0ee732486c992be11867f70789385adf6c0d82fcaa8eaafeaf706fa6434df3896d859e07d94cc83ca41e691cbc8cdb5f49222d2e883e9c900362476632b102761aa641dbe498c090b39789e88808dbb3ebb7fb7ee3389401e754a812766f7b8525411af6575036714a2be871754442b958601c1b2318b2d381ea5c852b31e1fa7c8db120482048181aa13014c361baabff04cd155e23c16496aa62a65e0ab8eb1cfb2b594f1714ca530f7893e89a3192ed2db714568e04d64fc8358f0735bdbf58570e179492365c1e1316be77c0b2e2ba15f5481c16db022bb314e3ff0593a3159d28ffe314fde190ebbb779590e29ad69136f695750a7d5948132b4e1871ea2ebae888942ac10f3d3c7a6960bdca579b43f2c258254e6ca45211f37e6cc324c646a51cff077271b959c7d39334e1617afe1c6bc54d0da480a5ed7b175d4bca69d97aebf3b9e399b1c498f985f2224f00845a8d78ead7b81ba0c324c5479b430fd8c4ca9c63e2acce7252c1b3530456a572ac3be23291437f1d11abcbe67a8df9ebcd22019b2d54cc3a939c5c72dbfbec61780b3a47481677c069197529c0f436e5b94abb7a731e6bc0622739eb6a9f9e3716c1ae50850d9f104e1193a9d3b05c2fef5736a5078e45b233c4bf9f85521f4b8a663b7a1fd63faae4825a47c0bbc2ce5fec7d492019c7315ea6145e53a91057c0c7245cad154ba809d6d18660cd9195273a83170c9add780de366a4e6bcd3fa5cddb4f84ba8d638b2318649417dcbed7936397e1850ada27b7ae967e6fb1b7a62721e8e70bff0d0de1959ec2978943feae4efe55bcb5de33ab5b71d6cbbeeac12af32c353e34bf53fbc05e1a7cb431a808260153cedeaf20da4a087b69fef49b05a8eec70d85cde26b8313eefff1a458d8d155233a54d025f013aa6cd0cd3d54a714e19fc5fe22aec2557c465144eb9315e2f1b1534678196d98c2991487c29ab085d363bac01f32d77a8d9d1ec055fab8cbbd68c8351a7e62bc76b860fb7829ef3e19c123e60991046305afc39fca4fa79040c7a22be2599749a7fe847992a7a588f8df9407e3692a34a52a9348e3bc5ec05120d5f0541083893eea1f967dfc45ccf4951f613c87dbd9cb3758f4ed4a46af79a11d9167fc931f13bf9356249fc2e3342bbfe977938518d6f807a7c62807e87a4dd6df7d3b205fe5f31898105b7a536aad8ee82018be1c3c331c4dde0b26d8b5c5c55e872f46565576088eec6ebdf37c8b0c36c98f9034ba52b98f225a69e0784a1ee452c2e318a098e634b824ea59ff3d57aa5b9000759cad7bd2a4db030c53906b44af0 +expected_result = pass +expected_shared_secret = aa333af0226492126c6985130ac7df2226a64d6d5c5314ce3f7a99add6696d49 + +comment = Official test vector 82, seed: "373fdde922cfc416ed96b444e445bdd0962e8989f6c50adf9912a89937c57217d3600b06c95440448e3f601ae69ca5be" +private_key = 6c33b8ab2b4febac9ff7dc3e4a689f468a4f08d5c87ef8a142b4766e24073df336efa5a0d6fc17b6bb2c615658eb04aa9035560ff7979e27c65a85ca6b1b9bfaaab23d89c6a825cdf7e312f81066d516be72680e5a665830f74e371bc411ba86f00704dcd3c40c8c1295d6b52aca51ad41732032535af95bef907127eab1eeb54899a36961793ec47b91d9725643664082c4375f4843b0031b815c8dffcb7f25d4414191746d5aad14093bf2c005df655f69917baa956721b4cb8b8b51531a4a6c0ca50f8ab21dfc7cd9f81d730157a59b971e4b4a0fba8ef49754a7c2be0325c8bc623fd2a94a6cc4226677260ffcb64d75167d63334e395df5ba4505495cbc8c3a3e40ab68796d6c646775339c29683a21f921a7c6a79d39a95c876f782a27a6365908381d793b537d1a681cab5599817e050cccf7803bf9a90ccc4084743c96069183b08702979c9dca2b9d9bc26e1de849976aa1465b29eb260ffc64478c39945a9b402520172cd7861c5a0cc089a028c8200208b3e4d7b3a91cc8c209c5e1d201278b01cab34126c701bfc2913df501f6d73d9424cf1176b8616c04c10940ef9832957585ec350e9761505162aecb28884f659ea23125c382cf24f383f9b09feee8aacb981df21a6bcec26e2a67493b919fea06170c18b79e5a01e6e89516707bcc7ca353727825514aa0d52504606013e53ba916bd133814c36b98fff15f847b7383854f692450aad28231f2bb4fd839d2b532066114da65be8cc5073f9992e03836ca3a623c301999a56fb00332d1ba8a26d599d0f5a97975814be81fc9dbc536d1c165a131ca3c55d04a05d7a53fff1299d3860cafd8bc6e3b97e72a595d294303a12994510f74887fd1d7bb18da70bfc5bdd58c1f6c1cb56f5994b7f2225ce0ab29e8cf3dc851f1aa5bf2ba255f7215cc71c5da95115d6a98a2317224bc6de1b2c79353bc5c3c046a7a0933a73419f7b117b88f3a53777143546cd29014e15e37c33770a8a9a11bc2f38777e400132a812a984908b3d2b87fc465b564045e79453c0666e3682a894c269551afe25286fcdb681cb50b260b4327b46c2d0699beca103965b0a218902eb4680c1b8c3ecb2011a396b0dca97d56aad231168fd9a7cf177b85b7729de4a4bf035482aa7758aca9e1f36bc9033ea34c6dff91091e8b36fd2a2c6b1094a8338ad540c8f53cab80d73e7dec3977452915b616d0f0bf9e842663cc477cdb5dc94579d6222d1b647ef4d358c5435d3d0799242b66818a683e8c5651b0b26ce4909f8656ff35cd7ffa1c5988074ffa32df093bcda32aee2003825593b545b44190787c4c8656d85cac293f615811ccb35eb0413f44b1722e0a182f09481712ac68e3c9d31085ea77946a54baa91c8ab8e814c5b94206070c0a6037bc02a292082018933a5ac32141180a6dc760c2c9aceb3b1a1505464150a732664aa51b02a721b63759379a638bbfd07ff9a7a84e071fda70200c61894a8891dacc375c120a35e0a4f296a02845477bc0484fb5bc539c3b8bea3ed2511d480b1dbe76c640622b67a1a8e000b954057322cc005f88284d6290a5d720e32b5f6cb6b992bc182d66a73b5019572867640343f267133b060545d4b2be0aaff4d255d72c6e8424c2d5d23f0aa4c28094691ac4bf0f56a51ea4799810cfb024c151c35cc3c6cc90a41ab964370c2bc953a84a73c87a02813de34b933f233da28643a93388f944c033236372fa6e6aca085b598123f27122a40074a4af57684d46398e5d58b13a863b0b984e224a7ad52c1c4eb26909451dcf2a15dcb11ac4ca38d93ca350078138e0ae87f1390fc9045eea420260c913c6b54dd93495f31aac32350cd03500da308fd8ba0777c999cb4982c91e569a1c52396edc506ac7cc43264a05cc880191501860f1a32f7760ad3b17ff693508339fcfc05fae095c6a96c1e6864baf147186bc22dd882620e5a5f4516df92b8b715394c5677d0db913efb25459d6c636442a8ce22899f8943957bb2b281a8ed14bb5d0ce6de3086ea8b6165798619b2ecbfb22727cafc6409e23088c6c940c23e86a603788c07ba89d6badcef07d79174acf70c55b7b30c067bd8202a1a70998459c54384196f814515ec9c7f360061270090ef37ad32115242c2aadc0121e1a08623038b311982c669de3dbb1c7789530191b07a947c9637bfa241ed35aa1d03c81f0d70f8b95112a3b1b08b25c34dc7e1d577fd30a808ac574decbb51538c2a017287e62128f32afb0f7a73ec8831e6b975007592b5c652fa636c7315baa474f873a5da2e82fd146268dc951689ba83e046c0f4820447c3b3e6c78cd240bc4d21e0a4660eb1c69402b617b83057874122e203bd6313d7874a987f2987599cd4d7946e50665f7d9a80651cc8dbbbc4df605f48274fba0640f8609b6554a7760856259c32df00d3056aef65436a285583cfc9d9a644f66e382d4907c6d78aa461a2b6ba8887c238f81d31e796a675ee8b7a598afd5d79a0587965420a2e9f2782b71331737680a499aa759824d11acf1a001f9a5865b6568ed8a1f4f4cc38f74c24e231965e9830232924526baa377b2ee933a1fc4677ee74fd98a0881628315aa95085c7415a1a51a98406fa345a69802ba71cfc885816ea30fadea0232b13eafbc24b84347124bb41f8c663506665ce4c3801b09933c19675c1f9ce54c418207b69215c91b10451730de65a4aab6c97804ad33c50233f83599133510bb334d9c1f4b7970087700ef45500ccb31b7933fe74a346aea4c9bd409bc5a186f00bdca67cfa8d041dfeaa56547a71c35cef1b664629ac9d4f431cfccaf62a781a4bbb2adca7a7914627da380873977e6e1a11fec0938a3a886e9b328a8a539557f6c700285693266742f779bbe2e7a0603060673c7be9591be19a57a0cac91cd1c61860a86356b90715886acac2306190cff686883a61e56140f64ba76123c1b07614ff5c8a4b402cdba738ab68b749c1151da62c30dfaa3bf826d4848c4910c9ea20669735cca4df583e0c5412b610bce816fd17ab9c203a7ea42081901c8cd78940f090efb49718ac90ad6a101093580c13b5ffa0ac0d7b094d913a9ddfab03f835f79173e966746c69a0228d06a2c363e94522ec68312cd312eccdc688c4a88f6a5b7c3464cb7ec842fc1377359a162032c8c504105461936714f451481d8a4942d1715b6a65583999b96b0c47a914f2f721f5ec6315c91b009e714f6518bfdc75e828256f25740c91e7efd93a5d7db1850127df85b8f086dfc57f1f62a86d6ee7e45aff3f27bc1db315cafbaec2f8a0142f45affff65289e826c9244ab1cb03f9f65df3e3cbcf711136e2681df2ef881b51a092a9badbe72c9772c169808521c47149578621e28 +ciphertext = b13cbbc323f152b23a9715d1e210086445587a3a62a216ec00b74c0026982b21e6c2fd63d059d5f001deb171703127d47928a6cd9cb5093c3e6dab85d8c36af2815563817e53ea71610b8ffe9f6d969f0515550a62a7712341fa7e3a98b4823bcf0c3a98ba7976cd5ff343aaf0e01872718010bf60f6c28ec3955539b117fe8c0b5e59021462f4f32e5253514d41a31436190b9b4cf0fa55647d71742893a7b83aad7caf98d5bd0394c8ae4ba6dc192288b69e0406fff2b0c61dad7f474e7a3bac1cd2dd2c96ec38521e0a3a37d807d554316d7f2f998d91389aaedc370845813833f147ad4494f7aa59899a9b23be3daec4d79038c746728021e6b341ce04c2904b323224a8eb48e6bc6f81bcd2b3484c5921e2e6c243e1d2b66593144c350ec5ecd7a5939527bcffed92ae72d7e1c71aee263bcbdb50e5bf91b276b3fd2582a8533c4d2088d7d079d821b5f5b25775d60b6512b8fe64d677a67118656ac602b0033661f6fed92237c6a078f037c3ec19fc4a9d8f0a31b9ae80a3e060868b2af0011ee08afffcd0b62c17d91d96c5eb13edc7adb97b6a245d34585094541b138de269f38ad87a3edf3062a24d551d239fd5c409b038b45581fa8529f64859cd5091094e9639f18bfc422190356b6d8bb92368fde8c670d053aff96539ff179e7c8e1385e328b070e9b1e40174d7344e2f552eee4eec8ce9b6e81ba9f67782cbaf0d187caf801d0fd4cc66e88139698eef60638763f90c24f5d072f6895f1d04243b4ffa6fb106d6db627b5e0fddf2452b383f76020ac14be23977a17617666bdaef26bf60ea597407ece5668f334290edb4abf51baddab112fc9486ca90048bdef3bb79a18bc6ce4d7ad1abaae3e593115ffbbdfede454943370a7a5f58a47930f82fa7999a8016028fdd906be7bbf4a21bf4f4851278515d3d18ebac857326aef3273a82a7a78538f9c4a0365acbc61a0cecbaeffb5f66efad5d47b78a690a7aad41fc8c9787af7c09f4a5fb38def3eddee45eceeaff670315cdcbb174b4fa5f0a5bbd7e2d8d65f0b0862e141a9cf6350e6611cbc5ee2ac10d1ec3debafc912627aea0607c4510f9ae4d8ab076c84546a0e76309057fc66e4813bde218346a4fff9e026446dccb73225308605a2ba9b552db468f43f22d81b305bd255f59e4fc62a7e5e0c559b839e2be1a875826fc22dfb4f57eec3bc7cc45064d7438f2b11ddbd319c9405a5479ddaf567c0e6ac8e8361350ccae87e5b2219b6383bb16be9aaebec1df4f736ada17e663afd9f65d68aeadaa66d74b4f8828b14f33466d6ac3173d6c290608d449b493d6f45f9afb00fde8e10007b367596db43f5a931fc83c3e8f5cb3aa218c25b76ccbeeedc17bb1b08f0ee9ee08e380d663b482d39cfdf5167a2b862a65107471852df5f50591212b42fd3942940f5e8a8693d107306ac7b21e4562fa2413b08375c92b1d73476d6d67cca6ac3776de360d3da5d330f2e0ff9df91df9503162d5723fb1bbe2edb8e04a21dba70bd868d403a2c42bdc11 +expected_result = pass +expected_shared_secret = 9535303e6035e30c6605c9e0f10c553dcd73828d8525cb190fea79937e093331 + +comment = Official test vector 83, seed: "16bef67f7ac3a755c59c816478b75fcc16ce5844db537791accd1ebd49d2824b105fd2e970f728c8f0cf16e439a9ae2f" +private_key = 2220bfa6a447db5013ed5811b45742b6e95c723a35851518e04b1b619c5607944c341a1aca4c0eb297bfe3990d514aba3de30867d646cd76a1ec1176f1e84ee60704b0e04366e27ed0f321bbf42322f5289f5167435b880851b48de717e40a1b56387d4705815701bc2b80c55f33b3c20244e0e27ffcf43c457a3674000a4404b4157cbefa05c54f50021684059939a3aa088dbba13be56047df450afe33c8742abb0cf48e0b1c24e8719eece41ec4a3254836b4e45b4eebbb43d398a813bccc0c42cc4e437050740c892b657765b252943896325e3f4c45887452847aa315ba8c811b39254a5c3ee64f65823fcf2a92e3198d2981289e021530aa4cbd210fabf51094392e25e755d778a02ca145fff47165711ab9397a0f9b3def26bd0e5143c23a815c8582976521d63bc74d8b42b95280cdc77de3528628862f44d475f49ac204c87d2647414a4a136a094b7fb923bfd3496b187592e81b8168bdffd9522f60bc37052fc579cb3f7a398dd677ba14a3fca1248057a59a58531b7a1f1773735a27612520b03121390cf624d46927cec7c7d00ab13dc2ba6445236bc68642ec9659d7bba40aa692c40794bc4bf5f13fbb617e711a54bd825329ac6a9af2a88a54a600c0cd6754b4a3accadb397cabf2af41463c00512d6d206d011baf6d833e4abb8dfbf736df8036278a8125389c3b99940881760ac150967464483242dd52358a075271fb82d949af57f345e5dc46845a94a37893613a76b6e7b4d0db0edda213302677fb73c493a349704333278b201b6baa8315731a348ded27283dbaa05e057c26c35d68a5252f1715337a1543895dfa4c395f9909b7b1283b450b71730292c32dcffca05221b14849aa5f94888e2a3fd33cab3b380f8093742247ac27012e8d7a6b8702983dfba43601677679568a8051925133fbf6550dc318e387c3e3176ec9c3cad6a739c6ba5b72fa587f000ca8f06eea003cd05970652b0f3f92b8bd4aa1570b02cab21d2bd0a9937a499943ce285b32706589c11cb662461444629f5c755b4a09805dd5659127bdcf5466270a5cb6328fdd0583e701aa98d34095506284b63a6f7b39d0b31fedc43e20e4bcb39b99d82515e041627fc5402290be758a062822c26b750463141d9de8793b385f556a3a3f74bd8ab61f69304ac4082e08f2cd05e5beade17d2c87b9535a084a6b0547389d08f548030b1dda0137d170039e082c5583bc83695aff0898f7e19e54204582989556b924df35a00c518ab95cbb466b5ba0d8aef007a8294294870902e74152832365fdb79508b69e45484139b4342df8c391864b80e807b9dc8ddcd4463fd1a986986b81a62d79aa9565308ac1471f09d09a23f24e4ee5522b00265770674c61348fdb3bfdd539994b20ff22b210162961b56dba538252610fa607372db1317497b85307b61d890a62b90e4dd37246763dc6093af5f4cd0dc20081ba4ce2d6bbdc969580607022c590a1687004b0730af71c60590d1a6b2a5e51c742d2cbbaa826600055f4811287a062da1696a22808507aac327a9194c5c6d49c823557100c158e60b845af953539a855d217c5a77599b1783f7488aa85f222df73b837e4b8d1006a8fd6b5b06083690b34b6586039100e84215eddb39ad2d40ba9f80165623122a2c5faf3437ab0376894ce67397d32a67c3bfb9761850c1c68ad988348725c83a378143d504400f995157903b9d04ee43404ab2cc7c35b8e0e09cce4559945f5640450703f81c35ed332746162f7b8328f78bfc3359e7c1b4fcf06155fc745c70245ffec09eca957c8475c62b05bfff288a5e5a5c78206e48c3ef373658859c3d9636786980578c07b764641d6a87222224557d10436fc72b563883ecb0934e50b6ec89429d7792ec0bfcda416fc2ac323a58df3fbcdb6e023140478868055251b1c09fa023e240e109869c1d2967f598a529042d9859f97cca2e85a635418707b3aa1835b77df93ae4dc53f228083de6a04bdf58655c59bf57b107987b88cbc001e010b9c2458bdf138288190f955b62c7013dd5784c809a7b1a29f8c3c33f0311a555306327392ddd44ec8f72fd5893f56f58baf207f9ee98b7e31092f761c390763a8b57409c7c5c665a913e20c9b62a5e80646364aa8e3b95030fb2fb289991b8637ea57c7b324a25e0389ce979b5e816ff841456261bf042c85dad84f80d788076b7c69cabb8e389a72657d7d63949657b934a468516c36674194df1ac3f595a294c28d24c26e1b1b5af5b542e025a182868e1555442e0b0d064865ed5cc1665074e55aaad601779e591e1ed2ab07cc551437603d24ca743218fa846822b2857f871fa26834e0422746a6c7dad256bc0b4bfff21bd7309482d7669f8857543a0436140ec684c959d26f2f827a84b37534b7aa3bc0a08163689f01141b511e7d11a316d2aa7d73909e889dd000c20e38667da048278b5ee87188607b4210642f5c38866fac1549637c600c8be8c60c11aa394e8344b6c6536e687ef6dabac397abf1ca7486f6ae87d8a3dc8070b5687f7c6a73225b9233685c6b703d33677998c24e40a72894193cca1c5acbe4a133d85a6912587ad4ad522214974cbb1f877e16164683021ea9c335d41b000cf52a3ed45b2d95b7e2d061b5213db4c6bc36d76df5db9ee6984d31bcb1f6757de7e51871f1ae7f388c5134956d3286a49bba39967889c9a424772bf5dab014c94893a4c8b74ab099687919243c7633caf297b2b73ab15df419f6ec22d15a95553831be379ed0489749c495e3b6b8e190049a8065dba8933fb21ba3a751cff289a2e2772b06a4687338ca88c0eef1488b848afa1041f4f9607eb18bc0650055803041b728f2f1922cd984d228096ff29e71f097921423cb82254c40a615240a2482a3f5f095f5b399a8f9addeb6b726f43e3af64d09038cafea26686caa2ce2194cba660edbb083f92dc2a51142bbc922958c86c62ce7a4b3a4c95240d72244a912c3c193485208cddc4514495b35863cfc6cb41fa721a78080fd7ba72669ac6b29accd3b832d35ad70f7584e197d695b78c832000c1c337fc019f0aac04b2149a469420c15b2daf5281dba5dc3618e0135c043f139cc74b14e7451fc11328f06b73f124766403541131d94506628c30b7ba68564179faed9c9d2a20f3b61793a33a65e92b699a47fde974eecbace22690273a757da903a886778002d283a819cb1ea2d34b8462dcab57c85653e363629d9270738434ab1bb46bb71890031ffecaf8fc027d2dfa2a4ad271dd702f055836f40ca137e5d0ef9c8d853e65b5b118e28b7cb6f0d5d6f282e0ea20fd72f3690a6b232b20a8a55ec6ceb14f7662be0c42779459f69a145c0e2ce9f0bd9a0cd1bf32ed5694cc9ae32 +ciphertext = f4245573118edd0abc115298abb1c7c118cc0d6a4365febfec360b289f244e1971e472049c9cfcef5f27d6bb6ae106138e1b42573f8dcfe10e41c49857cf586c8e1fb88e14e4e96c51d7a3775b84c38dca2361c4cfb637caf53ccfe6789ff289c1771b68832d0b445b66453699e534d81bd7d9faf248fe49b5e1be19a5e49c837191aa8ab301cde1e69b49481a2788c1aa99eb974ae2dc0a8dfc94f14baf821ef4cecee893b1c296903412c48a4aee3b1eea76370961fde96f772fa1b20a3209299e2926f76605dbd256938a9069c2564ab418c5343cdfcec02ffb2bb5a422615fdbd12a661a067e38cd35b86af9e18537e3c1f041b601e1c305ab6712d6b42ee2248f985787701270a51b052e32a52a4d9db52f1f9a775b387b0c4dccf4b5efcaf4e25c522b515cca2ab912b2cf07b7c421747357109205530c9927a3c9b639c7c473a991459f7b3391c0392a63534b0f0e604a969b3da8c29969301d8be3ba068d9a2723a6277334bc651f906166d78366e632b686145a0afd0b940221a0057274fb16b7f74fe8674c2c59199ae2f296dbffff51082655c19928eaa3bddce0fb27e5d72af612c7484d715c61fe11bb9d8b17b741aeb3b14e501999764dffca386f683d07d1b1e72329c7da38b029a970cfb1a94ac74901e07d0ccd40225ded0a778870419a7c3b32ef6ef05b1419521006706916f7d7663f8603b62e7396e047e1fc78661d7d6346623ea28e80510ddddcf918e2b985180a1a1c58ee5d40bb0a287890c0344d3cde39fda5a8c64a4e4c906dbcca97b593918ebd9f70ab79412bdc4ecc3417eec3a26cd5854b479d623cceb9129c1ab490ec98418737e5501f1fe51299eddeb86655d702d85bed3c4ae44ce16395124706cd763c80af32464504fa0d267f6ee03990b57afa2fd3a8067cd5d34b92a753bf9f590b506e2e81862cd7bc617bba82027bb9f900b55c7fcdb11485904ee2df24ffd095fdd05c1eb5d2da47080a8d3ec103d5ea7d516e1fc59bfb4f76591e10ea9e047b082b9fbeda25fdff8a946acdab298ddab2df2cb3d9ee0a781685b3b47d97009324bec36e9ad95e615fedd28505b969004b5a49aa517eea6d20ad42af18a46361df1caf9d3663fe5bc9d043d407faba0515fed3b6a615b03ef11685e4657dfbc165f20df62644e62074b9d86606e736d362b855f31402f936a2cd8d5cb96e3c209b7862b2687f054306b106b3b92570ce066ae63de2b1523590c7fbc03fb516d17ce1e13ddcc692e15f2d262b87688b9334edc0b33bbe4113e608d16c7e34b23bd3e854ed1cea39cd2548edaf85e1ff413c2afbee72cbc9d6d91ea2e98e4a1afd06c44b419b5a6a75579d89917e828edbefef6aa33c26489d7cda35e9c781b7ef5e41601593c4536aacb5cda2d8b75655f5c807f1e555da5c1415076ab0dd8d925ccd8e9493ec4a8185670d335bc7e348d8e3af544b17beae9d910c3de0b9ad5111dac9e80caa2d9960f3808858cb7be6151b76530254e8966fdb2b27cef7b7b941ebf2716b +expected_result = pass +expected_shared_secret = 0caa79e0054182c15e54159fbe36d9fb09481331a560ccd9714fff81db5615c4 + +comment = Official test vector 84, seed: "d0611f9ae5be4da5d7eadc9109944348e716cb3daee545721eea8c892e7831cf2e54603146454cbfd92387739e9a78d8" +private_key = 7934a9fabc835bf9a77bb807332251daa00876e5500d2c59f07485ed01bc934911a336acde5527dd166476ca1d1aa558cd88cd7bd17ce1791958e851991867c0525c9472a953c8b04a730e2e132c6c26811cb86f3234229f4caa2aeacd2e3c840e97b8f1805b94d7317b08354bcab64887a4e6a98ffd90a7544562ceabbcce6489c6e8534119c9589c405d7a96de3230094a459549b6f37078f2c01fc9080f049464b0a969eb742419147c8b39b8065a769d400a17bb25de51a699b69d54ba460d33ac6a6965916829b7a578d0b24bff786cef9963bf961adcc20f9a0cb1c159865a344a0e36879c67852df50aca08a46e72a4a70c027ce283de5bcb219808f2635bd7540915c5485ab70358cb017882b12acb4426b22b02605873f2bd0da59a658075136cbe15418cca0a11386aad43a52e3c5ac97f36bc7f648808c260643c325cf456e6166eeec74ee8476ad62c73d7d334ac279d84b66b6c8aac217a813dbb3dc6007317a165e6a1657d0277c1e683beccc956d973c7624e959724ff9275c1aa2bb5aca75159721b8c6d7b299c7acb4704c654335982e83ab3724ccab3709d20601c2a943d5bfbb3d384a7e83a7793905301b1704cf49992077b19f0204f3394717c9ab9a173113004fd325edb797a30155d0d2a1e4984644f245f5b495b56a98fdc487b29b4a5c6dc4e3047a8da2c9325f1705613705628458bd525fb333087cb4b967a61a994cbefc504d18c1b8a62898af32bc454a57e264722897d5dc71e32c2495ca857e1a234ae61c77083ba9b780342d7cfdff8b7ec1257b79cad017113a3238510c5683c3a8c396986ed392b0122c16e34a7249691ea7a931c44087fa1731746c1f3855bc72414fe3484d85b5e2586b6231b4bcf27831ea7b57070a815795f43e90b2112b235f5959ea253db76192bcb11d4e16399d40c5dc0a15d98c3b3b0289f07839f7738aba3281d45aa0a9ca1d349a64e79246c2c7770227f1e1cc74db8ab7ea7b0e60a9dc0e45443b30ca656cd6a8897ab105bda51b02179936f04374554a52992710f2a70972479462a2859736c2fe4359a474939ac3531b2905f90bc38860b5615abfb1a1327814c01048bb93c9725c7c3b0547921975766a97e29d529e4d8a090c36820db0fec33277cc679cd4a51f7ca05f204bff20acf63ec403ac7ccab951a8ec166c545abfce8734833274f724e77e68137967da75515e3c270ce79838839721bf3a14c952085071d6b3a555ce62d96e7736a583f44f726aeb921caa340d4bb788d63645deb2621629dff8a2c51d23bfee95caa7756f1884a0cd263039c37f7415e83d4908507c1b17a7308cb329d829c86953422b8b2f1786a4b86b980751255339258572a02ab22ad845632f859eac223e1245ac3533d359246316a3cc1ac58b4e6386592859547171ce05dd7a76bf8e93901eb7f40114175ac45e0b35109ac57be844c52d31a7ba60a24f30ef0e45581242c02e020ec86af106836b3dba8071bb8e8574fdf208100982e55f4b0dca72521440a2aea68c57b2039d14b21a56274972eccac7eed41c4b26cbe2c973507f1cdf4e618077406ccd3c8c5118545178351522485730b1a1ca7971b01766b914e835244bb530c48419abc7578b33d6db56c76179e9da3808ba4c8d7c227ba5c64afd5c87e01c1ad12a294758f45804719dc7369950e9e6398bfcb60a7819585a689462346aa5968dfa83bbb3b8a51bb59311c9d100a4a0c7586056201ffc3cbd92c3a42d6851ec064a89227b4d1551ca7af6b5b3e892b4e44571669412e4240a08c42551dcc50086389f9e0c0290956b5ac58844a84be308d0a5562b57b5cbc594ceae87910a13167f27ce63b822f201af5e9c33bca746ba7c5e8541fff17324228321c7a0ec976646a6b5615f80fb56351d319b31960aa8823426682a610652652994d4a78c25659b533f5b40e6236a6e704cd891502e9c2d1858ca64c94d3734ac0bbcab2db2f9e03450e721a38c82a4c26a487f006e1966fbf8063ab115e74f441837506559ba5b7266f62b17e4d959209b657193689a0354149880d08434fbc282713118d9daa89c52186ea918ce2c170d8380e45a32e9f710cd6f89daf91c9210b767d743f61655a9702051d7c8a46f17a681b136c0863cb62430d084d282099d1636c04d6b1ec212a74046d2d8108470123dd751db685a1a1fb3a3b2c216f51302fa13ad73b919a439d424a4ad9e12994d1963b3c0e0316739ce50a1a7c23d65acea61423a5792321a84ad2e1b3f5b595f11637eaca77fc753260e04cec9ccf55d70d4d567bb78749efd005c9525f6e921f0630c25cb9a129781b9b864b7556272d5b4164e340d9464bf192979a073384f6a5e52aa0b6b74d43faa5412c5914524974161afcd91660705659dca87ba482d67c8c1400b069e66a19905b331243701ac8261952c5b736b25290235669fbdcc254631294fa2e97c440d97a0211c35c2ff4b6009aa66e27cc09bc09307c7b3794a5d189892ea60b2b323e95057ff355114ab48613e2760e00baeb82b0a763067e216aab899e7ca06e195a5e92486ce8911bfd5c7d956318ac3b029436a9d88c56aae2a3dc7b382f2c5e7265a037a827761447fc59a40a3c8693bc996ca786fa7ac1bbcc6aa404a1bfdb3d227c6abe42cfc463c2f1542ae418cf4b38cc2c1595f9343d41b4a1967c7c94a7a0ae91cec8235705805af096cbefd0cad6dc0bb5130907d64e76e4be957a117d121d66071598112ea7d02b9648cf53e57af9e7cc3c9803aab327d87c53e41cb9bbc42368d332e0a963c3385c18936ad7483a5f4292b625c844c2282f25af0c86984ddc09371ab555d57de146664faab59dfa514f8bb8d397a987bbc8dbe147efc2a34daaa712baa1e36c9c5113a7f47ba8c4a83db2dc79ae93688af7c480dc8adf0b12d7f5453e669be2d805dd6961454ba8b40c6efa961e53da19eea2243c998b504c8ab9eaa2db11b2f9b591990040954a1567074e69154ad6e618d0830d3b554fe4c99f48b51cf6609952cc9693acab000c335b98126b4b45a9f317f80a6049558fe9d855a026aefdc649d295387c530e075ccb32aaa202171c6f6907a4a2202a9c5fcf252d98328f12f927e31c596047140af9b177e0352b120954d00529a07d6b2bce5026a6d7cba01231a85ba39b1692694788c9215b69fcd111fdc8934a1ba24cc7890eb479aef01ff29161b0a7ad921bb72a8b495ffa74c62c880bf03f0bc175eb865a17ecb56e0aea501bef8e12d3025185ba4cf8edd1b0f297471d58c26516f69bd52cb1d071f1cc7720f949d44f66f40c917eb30f3a4b0eb519ecad2d03dcfaeb2ef44d2f608621e831187ce79b2d2f4a20f1568bbe76b0d3d5af36111714 +ciphertext = 692da34419ae1d6ea887c5910ad9c1e027ca2717684d8cf8d73519be768bbe6844139f4e75a63b0251cc9842de4aef1473122681f288a19ce658cfb921114e619de23dabd7db3eb80befd83216eeee6639c589aae70ac2fb8f1b839e953a9070d287e498329e5748ac3cecdc3effdb7c75b860a64ef4a389262959b42070bdffeddbf1b41853cd7c5517a6dccbfcf74f392fa85ba62cce1dcf30a3ed8cf6608381a06051767b3f8b9e836c44c20bf54c4e174e1da9cdba988d049ae0f43f1eaf9ccfe4ad537de224db0d54efc313cdc8a16d356bbca595811f6991f80f94fbac41c45db49892ba56b20256c375b130d64a24fda9c9d796554923418dc18fb92f4e93df2ae2351c5a53566472f57e0e206d818e1d1128abf61f984ceea23df1697561fa48d0d6d5a0ff59f705297da6949955091dbb013c091d200f5856bdcb6166ecc42c36038588791f0b47dcf6dcc7a045487ba59b0075e3b53817bb8544e98a9b60a426ecdabc139792367d99e18611ac931680d59c876fe55954e3cb311c683f514520ce59cca491e3c4fc4b0f201d554f9b7667b19642639db4866c1242f0745d29383a2d009c844d2605e93e9c62d65e1d44b7030d3cc943bf0f291547f7a91f9edf37c3d0dbf1ef9d770e838f626e591e751ed64ce5b94e114cd443be38955a2ab79ce76f28800cea4cb662c1dfaef1985dbc955e09fe1156dd87d93701d05641e65127a96853ec478bd59ce855f28674db4f21188ee0572e3cf0840009c1029edad1dbc119ebb219a37f3407427c1dcb96b4f676979bd77ceebfdc0f89a8f0b759fd19787f3105c98d0797ac038d3989e1ded23fa49f3c9c580a5147d847a9f0048ee9d816176cdedc5c3bd97961687d59794dee37a2a9c7c4e6c8028b48976e944c8d45c7d7f637e50b25e4440263a67ef562e2baa5ec3c978ff8e6c390b57ff082c202272fa7e6bd4e482fb5fe7205dc56962d28d6f1ce85659299cd913938cd036268856b564a154af0e877fdad96ab0a185048cd1ea6b7dc8de79412378126be5d10ddfe4d5cdc027f183fbdd80cd9005250d72b5b2b8d824cb4512e1d15f85f68626ac262b4e169b8201ef197da7c208378a3c5d495de78bd780dbdf8e0f1b55811512fd78c1695f028f386d7bb591dd962b403da023977bb66c4145239e61730da1d91741237a65e686bd48fec1be0a6bda744a16db76f0c4622fca5d3dd2f87628deed85f8efd90f8778b2d9ff8a4150028b65aafc318571a8b954819c1c9bf0eaa2d1aeea6373213513696feb1eef11057106a76aaf501ad784326caf958c5c94bb473ad548b8db8dd508d44a667a420f7252d44e46148e76a9dbaaa766ab0578111ebc542aef2a85c0249893053ec5fc19c4fa0979227ca550e46367fd2e09d018cc894d9c24409b946f6464c54987a09b54a96bf5e672129b391b0aa95aab3903066324ade24b51dfaca8af884369f77dfdfb5e5923bb5a497e721f46a6332a6d6b822c25e581f4190080834b2e973263f22f8bd9708d7 +expected_result = pass +expected_shared_secret = 744ce1aa5a9c515c6571ad6e2f5985df8434e35e9f714cf3659f184b5db4086f + +comment = Official test vector 85, seed: "fbc38d7614d7718e931edb850d2c6f0c5eea9ee889b3e25bd69ac255d5b91e885d93e808e66bf9c88c655dc594da5792" +private_key = 46f47850e2b9aa4a6d209125be58806002c278a6295da7a4ffe85551529f17d83b358b243f2a622f353eb6138cc6380f8ad3340d7575e865a6cfd34bf473a3da8b9fc961cd921452d09b3209d041d6612576c573b08422715160b891a3370268468078f5464d7e5b84b3a3793f0c7cb2a0a13df37b9763cfbf054c768b1e65a00e8366b406251f812c5d428853d0e00f7bd58a8e348275461c1336c2ac6a39783a35d849aa9a847f37f50be0b95f617bc7adb28c0506c16ea3ce89aaa28a9252f0e228d0fca732289d05d9395133a82d8cb76db2023924273b39cb52b5a846f338b96c5b6f3acb41c7265a0c5b13094231f05943d58875ba7c2a6889f16107d325ad1b810a0b3c9e8928169d440194bbb90f771796856f9878158a432eff742fbfd5acaf59521e361f448c0bebd805a1b4435d0761d0448d83e1201a506a0b0a4980172d05e88d7d87b42054680cda74a386027aa4c3c5193fb1a893bec2722d55ab9b840d99cc81408153b383345192649eb99825bb4b1957326c4791a2722951c0ab67472f4841c20c23926c3c331f24c360e81977c2791ff3171c2c489b68c923b65d8ee6bd2d510e6ae97fb771bab401bc1a42935f38a0fd43ae2f8a24d8fc3f6e15c2c6bc800b73ccd8e91c592452484b44e6b2a624881064526182950349c78c7d58180b1676b5191eb6065c50596232b9566e4b8f0635a7d71927f8eb8572e62d57996ddf66cfed2147dc3451e95c034d6b9145bc0d30c915d66b1cce367406212f8bb40755091c9cb0306a490ef5336e21f82c1b7b6ccc8980da28a348815112f00c57362eb163a36e016d60f020bd12b6796c9a88a8af4e833fc4585652e76f2ff77deed799757c7f64e07ee6e6a300dd1cbbc840af561746d279beaa71dea5318aa3cb3c4c63c4a91e0fb60d6dd6abf1fb24d1b078de9413f1b0bfd8916577c4cc9e0b0c332625a5fb705e94babbe0659e022234586529a194012a6e9e7650c504c380436e1df83e5c5c9e22f79f394bc0f22a0acf114b90829b43112fdd617089c8b9d872b70d7027d74402b65058347b56074ba33fb91998e5a559d46622f5423808c8236317767a32e4772ae66ca472ec7828d682d045835ebc5e0089b0ff955dcfb9605214a3e5087f7ee57d5369abcff1be00c7bbc5b5b25a0c1d853424123c98fb330318432d324bbc7330342224baff909849d65e1d08a77e07d07cf16ce6f64fc71374eefb66bf9c742e518f2e30c480f82652b81c4ce7bf42593b990980d94062f96a7178258f31e2b90e86241c04b7b44057bf4700a040b6c0b08e4e8a6bf1cb1eef738f51ca9beb9c19b94b1cc623704a6c2455009f48b4cdd0f4a5d7f06320457670db92c7a4371743593600022da4600c56296d336a52e98888818ca10282d4767010a7abdf81bb6752048b5b163da385d7c5cb134108ecb03398500c1612a1bd563b21a0bc7b94c9719a75bf3b3e02143bf04a7e3d9b0070c4b449cb9594a1a8bbf871e595178bbcb611b466a8677905443abfa1601a9664c5f54f36dcc1ddf35381f586b4aa4566c02be610186df8493a30479f4c72aaf049a6666e806b13fd77c3b738721f81218b48984ef374babc0156f94e9eb92fff176a27197eb4ab0171211dc7fa954c652698c50105b5c2e9f7a2a887bfb40880f8624e1fc67b1b43a51139ac6025b9eeb60925d424bb82c58b4b617618c43c99b07fb14e5b86538d29700e1ccb4f53a52bda2ef566b20d8cce1d7616dc81398d14abd03964940c794e6100da994d5bc0bcf28b04a8971214e7ab9285515ef09a7b486ecae5c84655c9ee15255b715c3b784d9c243993171c604a3e29450728396e7572228610bb9ac04b06577b3636c137a24e2139b48db005553152c6b040cf0b2408248675eb90afb66d6105537a316c7c989746f43c3b284342e2cdb5f2183a16ce71ab39c67797112b0b907c00f6a47f17db08d924826d526cf88234a25676d82449f93b2859076978860e499a0de134a936e35f06a7802456008c23970818318aa2b55a1762a9394dda7a49ebb4b38469410f5945dba2801ac25ba39a2df819b0db194b53c4247fa5065ff99f73e71d51c22f51fc262dd2809ebcc6879b0d90004da5ba7cc9462f6c822ac8fac8ab95b769a465cd743ba2babb26958ab9c3494d329a0c736c28a9cf84f5c90c5a0594485a9b339212d01bf6910105d44109b09bd063b4f2f3b903c94dc650812ae5cc87527754d476ffa82f34f39b5462006029875712cfb1da648dabace5aa1590b5ccea82c20e74795c71bb70826ef4d0bba580a447693a42d8af3256c64ce327b370ce576b6343f2bf8fecc76e1434d5e448aa8a3b326584ddc56496704be54108f8572170c2bc39680598017641422bb81645959b8092e82a54c68aff60b78be78107e7bcacb241b09913461579b52aac5c6c8627cc033be2273580a523d4cb7979cb65d7056643856be187ddac112799559a87168aa96a18089a6c547e87da949c62b8ea876aa0192af409bfbc354f05dc08fed46904a2688fba59fb71b83031a19bc8a6350bba93552be0c01b73c89964563fe588a5b76971dacba69868b588bb2f9076532d6a8fb4316dda4c85c2945a2a29b6ead3900e50abef2b44375ac36bcb0e028a20cce58353c827f1d53a9a0510e3827cbd1383a6d18c0d22c374e2b6061c2197a6cb094ca9dcb42f0418c24a9cb893c45423447cd5eabb0b9b410c9144013543e5c3bad525377ce8073d4a5f4a22bb24874b7e21523cca731265572b487e3b42ae581a617437348c290f00ad09460aa0c7b6a1a53128e4e01b3c406a296cb35ca0bd0d1917dff42a4848ab3bc28a2a28044c719ccaac45c513ca007653bc854dbdb79181157aa17220153ca3563b21be77aceae06bcd02531ff5b7f5453db0119364dc4e97ac7a495287815b5eb512129643aac4f42b3af35afc1207db0a3194302fef097bae37bf382c154e78154b3407bbd90bb2143bc285af1ea0b1b4fbcd3ea373a077c6107ac2800c89f20544cb7a83baf26ef19367724b1c989c39bcb4337deabf7d531fe2b3327f4ab0f6457c5f3869590c49664923993cb2b0103b8e8a41cc5793acd192a047972978a2ea1b9e354cb135f2ad8928574b2c14fbc1a4c02715292c9052b69ab2a8329c02938bfa0994c209f816a24eb13f4365af2d20240ef66f9bf6b39d54ab5d350c7cb3cd6f645379815aa3028232bc89bb89bfa2c62e351a3c6401b7b384ec61a83f9056f3665e523a0c28d48e778b0314c1ec2a83ee9805d010e01965f9c196d2f5f90ce3ce8f552f8a0d76ba8f5345365392febc50560012a2985c1c4d203778597947d710dec806e36b0cd949fe460ef141213bfc525e5b +ciphertext = 6d7d3b4a4c4089566f5519cff32e125274f9706757ac5e10fd2e3b104025ff7aa64192ecfc2ffaa86e2f48c8afbfbc635b75ddc04d2867a39054d0c3489ebefb7297215a505e7f65d93115592d78a709195f9cdf6a3cd7a7cc1b9cef75aef9fb2bc05136c5c73714d6b078cd2ba88bbe9fb61302e1d0771520509b90163d1514bb510d2e2a0e4e4872e607f303ecd6b9d36bbd694c3ae905d7c9424b604be28ef2e985977a575d778e219dad4a16b0107cd68af5ade5fe9e3ca48910fd2b6545ab2a38fb9e7159ed97b1c8d3aa7b962e4eba2d75439a6846f9c7447685d8208934c6b9dc0a47103fc71ae6612b10d4c71beb667746e9ac680a2c750331d1d79a54b3e991aa7eea7ff896d98a63c7f499f646b349b695d74aa849a4268c450d72aa8f531784641282c7f58f207c085144a1bbb28b657e9dfeabc03ef0784fb4aca22a2fd0678ff1b365b987c170225c6785540ec2112a577c20151dbd47028e88bc2b45723c3b50edc0efc0bafc741c4b8208aeca01f2af5c223d5c6016676b09c8ffb64874616a2891031a3fcb2c4d21c073b5bf14b6e5e313bd252267ea4165b347793de3f4f93b9f269ea07a60548c9fb8560a49e544aff22017ceff150ef44b12dc013b6675c1b709d4f40808fa37a9352dff8d37acf1ac5f7e6a27673dc79e83cae6b1e69fe113155646cd1b6e87e2e9cf67c3f2d2576a2c47a6156caa33fc547f343c51a17932368e1290e0ba91e35482a70c7777eb45a482f261f77cd88dfc4ffdbab03e01740fac45457a6653059975519f2db38c9155a31bafd22c57c5212483bfc55ef9bec51be4860eb574bde711dda9825db976e39f535a7edfae6077e1e1644776fadff2f9e18e98eb238c7bdf35c9c1af1889f08d61f51227387c5b01d0434178b55aabbc1945c78cc4da30d4b799ca4da2228c410bd8d5d4a01a0a8b0530a61277c9db721946cc605d089fd944a8c8787aeaa9f3fc6026bff912cebb5b85923d25cce52e1372b5861957a39db748cf275c4530479b3f0d061ae44599fb392337b2e5f8cfe8a77c73dba4c9a77428e47abc6011cf37e86d8a748d2899bea405b2fe43172ac5361482b69c3b16afeac9f43016f3dd0191f627624e5faff4a92e1853b16f4635b41cc1b256f27f54930139c3b50d5b2126c86121ec72f7fd11d06f728412e309b9df172d2acd8f1f7c1a6c86629e3e0174023e3e73d01379327a59031829aa7d6acf01b22cd550b1fe31af06d91f43fa51cd5b6df75e6081c84875773b053c6e473b8cf1b13620633082a47f1610cd60e64da50902801f0077e65a0d4d2a5467e59d7e1b95b0eeb95db0642ff81c2cf6b76d42e6bdb58fbfc0730a55f81c2886160df921a8c04c6175008743796a4a67494cea3049b8ac89df062aabaab5c277bf1a81a61d4b42000b2fb55b027d9bb6d3e3e984ee595c6a76b66332b9554b38fdb0e93b77cfd9f891f25c7105fd2c1679a04ed526cfa6a26984e19d71b2b57ac3635f233dff02a799e9cdd565bedfca93d2ed66 +expected_result = pass +expected_shared_secret = 726f7d790df4c860a0b2c40de9d62c85d0ff70c704ce5a1b3f6bf1b3e3f66cd8 + +comment = Official test vector 86, seed: "1722219cb5db47374eb0af0232c856a57f026f1cb09e5a5799f4c333dd422ff6a0a67c4da502faae727fb2d45dafcf35" +private_key = 8747252c693a0d6c06ab66071b13517e1c45abb370d26aba3fb31641a170b365c5f6235d1fd688d81c72716a3921420d228a7bd5a1c48ff445c47489b8116b7ca14d3ea78b20a7b5e579c5681187a2aa8fc900557501003fb9bead185ba9e7939f247bf1757ea66a4392095ea90239a3c67a8ca70186047d9a6b06b8887fae01ba8e556319a003934c88ddeb05f9f3b4964a6545e8443f57383a2bcdafd96c794b399296615bcb9c59f8703595709724b6a4bcad06e116f4542c4322072e3c6713015b1339512419b4daa8c87f5a8bff481964a8ab8a101943230f9527a10a604df6275e1ef18fe54a57d7544402134ab77802333897d4769ac23093f9b951d735b5623452c90270a0896ed3a81bf1191e451a4a67a4542556af78f1690982360ff1bfcff66386827df93bcd894ac8c996be6e0a29de70ccd459b9de46acc9e8043bb82d01c40e5785845ff4b0ddb8184afc5e52a72e899093669a9eb110a100a1159241bdd40612a9b1955b1752810764e7b68d89704a61442adf68108aa229e406cd10b6527a39a6b46068685b5e802cc25614492dbb6e06ba2160e930733956e7b29ab9981d4b477cd4eab880e56eb711b278f540ac204a996b32fd06b8bfcb7729660cf5125fe1626199f6285da628faf491dce2ca3bf285902350d52c0649339f31ea3ab764b90701bd647194fb27383681c13470b8d5ccb61dd74c5f666ffea7b0714c469c4803107235599c998349b5be7ab9e9dc6f01e928593939270411ee2490f16c54ba672ee03b710978760b962319bab3c2fc67cd9c2e9d4c153a8717826bc4c3d6c7444c051a61a06a2c87a1207a20754e9d7725b91077766871509ccc93f5a1fc1c20680263082801f6b81e8f319b92110f2da22f0d8c251ee4531b127c44b378da6a0d26f55de3285190ba1357012e42521cd1855252147d1abcb1582422f55091b5eaade93194cfa0be536343a282c4a948c355984cd20a7ca454ba034ac7355b02730107a71b3986fa01faa38d17e07494fb510e5526f690bfb27294fbb963a0606e140a182a9a247029abdff6bd8e876ec92207312432cc2700ec4c6a4a7037c5b612eeb2099d54872a5884e28981d794c7855590f1f1464017c8724bc92e0b644de92b5b80a573f641e4e65bd6f0396184086d6a5a50662f9cc6241fb7241d194b6d23ae6fa3c59fe60c81309ff7e39f93f72bcb0696edc771a80cc5ffc74138ac9d01b95defe7258bc555e3e28cab6a73372337efa0b4aa0c7d13b312a7313f8b63426c6677407903822aa1acf4acf4a130c4c68dd4dc47dd061ed0a4969e5ab630baa11fa0aa51133c6509c83e603425a385730aa0e07a2bac0754358c812f483f5ca6bef3105cce4cc33532116c6493f19880f693581e08999be24db44b84970c8fa4f6784d50614cdc9e626a31966acf81309ea6a730eb42011663cf10a90a9ec12f3fe133a7d02cfb95cecc6b52cc08571bd03e8315532b7c76c2040b60e9021a24734854b6a3d77cbfd087015410b7322ad5d9b04f651f895ab5bfc25f8cc9703bc67dc5eb5aede41682a17feb1b4339335efaa44a64e8b4eb0bbe17fb00875a06318c1e68c42e6ce0946a59c61700a72779765c405485d51fb10cb0f150b9db466c53e070f5849049d225047bc47aa15f630a6d62c5b179906ee6c067fa3384a4c22748f984eb31ab4cd69083da31a5b45f586560371bc99113c44d05828fa7687aa649b261beb0eb4eebcb8548139bbd6a0a844ca1e4e59f3d7c4372ea8632b278a7e68b59032012c5518a8021bd5367557077c9c1b4a50944ea1a834bb61004b2cba7f6401a57839a3cb85b326449a25457851b4a2bba2e2187f040745fb608079c8b59d2b191813d51c5c3f329b1f5e40771e1b33f63ca400555ce5351cffca2ddd268d7855151618587c8b037e7ca290467e4a7c2c38290b84ab8dc4a839f57102dd559114092165b13b130b41bea2f857c84ae45c1734375a3ea91021014d29ac58f12bd5a44b91ce986e094a66089479dcac23a6275b864195df24f2d4a97f1b26b508c3a5bb89b9f0a913867c1294c252d5022d9fc60ffeb3ff3c29b2dd1aa97f22271c5c8e749cacea39f2c637ff4a235882747ceca1d95e093966462ad401510ec112026bf0fbc106270988b2c35cc7269da693a7d67052f9156d30c916ad6552eacaa3ac2396bc56668686ea8a1578e46658a71b4b7365ae56a263c783973c1b63100b1aff4c3feb64856a781334c6e83519e541511b4d581914c697ff31239dac56662a145316ac4d14e522480782c4ec52b1a2b8a85f657217ed11426a2a606c01c17171fd10824c07042b189225d40919aac5cbe05b031689b1ea61041f6091d961a8910a205e62ff21909c6b4095b270d87c9727a2b611118c84aac033ea9cab5f40efad6117f2160a56505fd775d3f415aae9271a9b2b1fd1964edfb772a9c4875f06826a49c26e93f0b1846e006468de71b98ac6fc0f81ab146236739c9a7b6c13952089d621936e8b265b50dd4016547a2abd52339daa0b459d265558a1d9b61c73e49346396b6155195c9c3a437614e68e23143f09fd28857aaea50aa808600f5c5ca33c5963cc00c4b1c1ce2609486ac4f1b2ddb7b06acb62398a32320f315dabcaf5d4a833e2a01a6e7c971ca15e40c459ef18db8452aabe1584412b4c4dc52e6004ca56b5f48555041cc828a7a6da77c435f05574e5c25efc3c6057443eb77993c987cac2363c3030d88e288f4d08966e624794078a39c53ecf273df178cb022a5fb025a2687409a785cd6c019f5761b0a3087ae91844a69c2a89c1a00b1caec7c1f7a67425b87be02d80b67ca6c7dc3b45bf425dfd33dc5a13e7531907ed6329593c333466d9628668b98422c985182f8c0952cbf5052225363398e516d23678b5320a9cca38e21c6be86822c4fcbb9094277bce80992858c5498c6bcc57db982c196b1a78c317975544ffdf33e57a30dd29a5ca4a22a918746fd9a84ee1008db920432e39b6ff182c930243cf350c6f486832a807a36c8a9242a5c39140eaa7a45bace0086a86fe36be28acec756b5e9a47225638659b250c52b564751ce8c42c39bd1046d2b6cda70b7951707b63073f0eb5ea3fc5229f816ebf4007ce97307c6607b4ca17ca30330570d4f39bf76998147060cc04b33d4b91294f85f4a717ef9c288e3741f70fa5823ab8329f56d9d0b05c996701a050a387362db09427d5587e7751131953146ea3591818f0dde74e33983c010419218b08822da9c3c62eae1f2284801b3e47c3991fa7983d0dd6e7157cfb152538466e9d5c3998a2b8ed862162b91ca851cce7683f8a03d3cf04e46970ff7d6a12494ae12558346dfc8fd9370bf944a0102 +ciphertext = d1a47ec5e9df73d00ea6c31f8189070b3cdbafbd59d3561ff50a2961820739bbd40cd0dc9183f9dedf28da0dc608b7c0da800fa9ee2b44331062d972cfaf9a08a943f60e4cd3dfb6eee587cb152308ec9c772c566452fcf0e16745d5ea6854a2fd14812c4c08e065464a0d494df56861e6fe82fabb22e955825d303dab2abe42d094f0abe8f10b788a24f90180dc9434b163db2aa4d461566111e6817a92434a2427c365a05232fc31ece1d49463cc3667a92760480857c893a180bbb4b4afa50ca382e9e4cfe5cd3e3a424d5b927fc75387fe72f7e38c267fe94a9cbc12b64141b574c45d6aeccc7cd28ad9ff4563d5ecdba1dc19baa079940d6c71f18819180481fad6025ddb5254e7cf39cca79bbb190cb526c427d15551a9af18c003f92f35c8f8db6bbd27af8e6108f9827332d836dfb5299cf9af20d6cedf3f3bdd3c29d0c46350dc4bfa046ebd38125f4a5480e6543090c4b3ecfb11ae6b31c501d38ae00b21d4889c10d697207ece62b5dc607ed66997bce2a2c2aeb2db1e8e9346456b9bff2f40668d0ffeb8fd3909ef59b7bf2e23c81938502a702c4c531024fbd6265980b2f16c70fbadde02abe62a9e530ac31b2bfae08581146a2c47691c755cc4e08e35bff1acd79cd12dad150e308f0d421dda9539b3d142fa544dccbf9bef3441fb8dd08c21756fac0d4efe441ab6b8c1c21a5e7604914a3181a52ebafdb7de84b0b634cac7cf9c616d851f8a7c3a1e6d1e7362642cfd00870fbe15dbe0fb122ec58ab300e93c65462f8e9fe59be9a05919aefb568edf13e4bde5ecd0b5912b29a044e3f33477a35f925f32d1f52adb91620e8f667d5a55d428737b3fffb76439db79b74e7da3ead61f3c43a13e030cad345415ee18d7415ff6296ab1cd0d306058d3a785fb1cb27a18d245dacee17fe8a0e3aea3299f6d3c211be3165dde7caf805efab878de257a8051fd2650473e6d3ac4eb9233e38ce9452ad85862d3684d864220902358d35027451962ea11492038fcaf2ef3faf3cfd8cf77295e30b7dffaba171f48062e6b9213efd6d2feeaa688191626dbb2fcc89a0175ab32351e7c72005ebae83c13d59bbaf0d4a5f1030168de6a7c76c83943456867435b63fe864550dd99bf934703debf2192d6a1cc1a363e8933f1b5e176941b3189ad53f038423d90b9a2ec584ede715b903f1a9917358bc7616a6d5bfd20c73f98104bf1509aaf19960fa2145caf47915db32af854b2c75abccd0763d06c5977efd369ef5a55df1c3e13ffaebd2a9cf99ea1f75e796c3a6bf38de65fc10aaaf024946d1df9f429115139fd5564682773e5513f2c0ff6838a5e31197fb199284402274c10dc157da502a06a2c610822a1f970adebf555e5832767f21714033581699b1c01e554099a7ac9b31e890ea981cdbc917e063fc162c877c51358431d00875c4270160d54d93841535c582804e1b68bfe87877fc265ef906fb62331e4b7bbceaf9f12f255df44976e4e34e3f5fe186a21b2b411410c45deb34a64911bf410de13 +expected_result = pass +expected_shared_secret = 68f3e22d1b2d8c57bff32160e550becfce535fdcb327394aabeb60eede263213 + +comment = Official test vector 87, seed: "ac139b78fd16ca0f26d6d7f9e15345c888d857b1910cf38d883339b37ead2dcac30f7cf10176f23ff34b4488eb79437c" +private_key = a32b081d2579d7737a984126b05465963ac3d0fc3d471b94e30b242699ae3ee7a305d187d9371af3568d7bbabdc30ca69be166aaa07c67799dce7345b2024ee41c5a6f35733cd12efa19256ddb74440829c6b52aaa25b258bac8d950ccdea410535bb3a44a46ebc44f5772cdad96596980c32a14916cf5c4a2fa8538491f7eea270543abc467344ff098edb4762f658b6b26431b9863cfa7546c1489a25bc9061b8ca0165528241b4bc173bf17b4e7873a5081016a1c55e4bb1e7f71b849274d03e05e866656c126485979ce9660afdf3622e3051f76d02243e660a5a78c663880a7f9765df45410926a86acc7962878b4037cf2960b06f072367b476eb24b8c57924a9c699815bbeb0bb10b2a88b0c63f0171c759d59cea91c5c043a41a8155e462325893685f18c5458a0ac3e5bf2c696c8f07727c090e1d3502d075a706551c54a00a710027c52cbd83fb9dbd7567aca2b6eb809c00838e56b209e0c5aad2e6235e2c157d3659d906452f4a8c60b26f838a51f6789e42c00580e4595a5c0a12b796cb44240a4724c298abff1332bb0970a3ec475a434ec4dc2a4aa92c42e22035a4499c66827c882b542a8fb22b6b6054984fdcbd6a637583145010d89a4654bf0bc0a0c3b86788459b659a539833629c1b585a13134d766c9e8003282683aac1486a934edd3a7511319a7952b5eb7c5947b69ab5c904b2481a7709c95bca352df45e8bb87775a9cb566581c3777e7b975c629c89063c8f0e982a24d344ee8a22221a02c6538154217c453ac0ecd4bb1f820baab94d920765c4ac15972aa79ba974f3b5055efa7fe5bcb454f7ae70e1c017322a20c73ebf278054060687c6301e13b52952459c56bc8d8795044302fc9123921143ec2c73278939826682126b65c7d9bac044ae6cc7ca40f92c8ff28470e41d51895adb53ae30216b1aba552fcc14ab277a872029f3dc8d56794d842ba06770808f1c097787973b0a14280c5fbcc45c102c23821a07eea6c3abb4b52ae116f4b38e4a50cfb849177766495463197bca3197b53ab72b172c163003c9ab89721eff925f56b59373f5abd1430b0731419a12ba80641628d78d712bbb74579c0a18a4cb2aa6edd76fd7605fbf8214a00aa44e486810f3ac6e36345431c23f247f251112cb8a6c76444b1a5277b7c68afd2c49d4a81fc5069b9a004cdf0587a4a193d243bc5f16357e1b1f280706b4c16f9d8b3b6a5815a1597c49076589d5303a5c89ad320cf6042f2f819cdff04b850870e807b4f2b6bf99aa8f3fd16e95b3bedf247cdbdab048586116db7a4530c360bb240fb2964fd41a5128cee9fa6ad434b536345a49bc758d849260b78cd9f3b3e8461cbe906e93b209742c0abec1c1bba9baa05a8fd05637d26548f48512f5477b93d0bd54f6674158b2f6ea0488191eb023a641b175cc689a2f326214793228138d6da03bfe4466dc962fd2a7c57102cf3f96cf3a6619d2f613ca063a35f4515c0473140b8ec3c53b1d9974021616bca2459bc31502daafc861990c1b97ea1ab5ae018ead781a67a075cc4924f9ea364bec33ed167637f0a643c3a810914a49366af69b3cc25938e77422832b7078c6be562513ee3648758515e3c04f7e395f02d56d41b5c5889bb6b2f149425a2ac8aa06ff23a82841887de199b56c91846392a026b50e87453f44588ee6ad4a443f54d25ecae39aaf286efb47a760da01b6c13fa178811c47a0dfb14110fc6482543e8a3a52abec3a8d7176aa2868b2d46cf68538c27514222a34371c25fe832184206e5abb699d61426027a942581d0bab075a367793c81b7fdc11e2f6772c8040d271be5d07d00b330a6c874b46d26f51db8f43f22dfcd72613f8c22d15c28a2b384051142c148b07f7362eea4771959b635a215b1351f650342d2a071acb16dd8ab50539096f295e44173bcac20f3cb271a8041e3008a742057ef2fb2d78f8a3a3c252f6d38d8e85bd57a75d45ab4dc21b8033992caa623866e8989f98560de33004d3409f233020899340b2591e1a4a0223a79e20b4b85c632ce7609c0c45a0246251468c1b6c20716315a54520c5718f4c5c7066331fc7e953ed91aa5f3b92e69617b29c256657124242ae8305780cc0caf00c92896929a1648be9b47f86f144a3b12d9dd51f347875e6da935f0bd043abbfdc7b85066a7836d442872c56fdd41d9a3a01d9ac6a12531079f74b273ca129f36a7ae463f6464436e50fa70cbc2756bd25234893b50a2898345e588b819c0955e9c50072517d58b0a3e4bfc9832b727c7f2fa924ac672d4d104a8f3ab81200a624c61eb6aa7b4553aeb2084360f1c03e443ab99acb63ac699443a638ba9b8013c7aca95acebc9ed6b12e8be5a6ccc74efea7cefc7a0f5ee18857250d08f03cd94cb4c455141d7aa2fbfcbe3eb896c2404bfa3580bc63b73265581d87618b206caa9468c65bb1863b18f560413d1b1d392259f37c00f7d89124c56913483513006feff89092f218fdcbb8b118b206b64f2de52be0b553665c32831bb4cba3762991716be65e6a222b30a0a5cb246207352732bc3c8ad7a2c3243c62424af222a922787f7fe44df05299da1105f9ebb0c5aa18b6c6c73f43390af9c2454442110aab4aa629c8f300dd38318c43a25d269885f970ddd8ac1e5918e59a3d53dc8a44873eea97c31f34108b893b634284d69153779230c28b2a1636b6b839a4d91b7e23f0414b111f2e7c1b3ed58613120fec37c78308587494233313950d82ce946778e044c3d245a19c29b09a80c3b55416a811af33032a0068c7a4767f05e9aac3e8b99b967f88d5281a38b072b8c4e194794c40bcd5366714525e846048e55c008cb48b5ea0c61655b8819b08fbb88337e20d63003f2453462598ca66181ace033c707c1ae9760ced165596b2b163e54934540c4f7097bdf14d29ea850b95be6fd42973436144270549a81b5f73192c2c6ac2474686a9a3ee556b6f26a9039866176026e25a60b5864e963850cdc8219d21859b5c5c3714434ea53bb16786dde8036f317c430b3bdb025e6b62c097340f1e961b90e0c5182183de05b293a05b58dcc251d8a2911c6e71a635f5179d06d93d33d8cb332c8b835c0e2973261bdaa43e414153118b66c641f834c949e77fcdbcb59dc27089138a2e07a5b40c7666794fd8e6b97685bc4a3c2a65912c35f50a278bbad765c8c775bacf28181d61530e54ae7fdcaa2681a01bf51c0d7a033d6b005893b98da86005381f1c6e600b1787bbbc13a01210c0764a4a2578d4bf90a24704178f06a4e4b110f58aacd8940ff6fc27f175342be74d48075f8ae9320cae20a41c879c27c1bf815d7f7054814869cf7625e45647bc1547aff288dbb90699b2ad84893f3b755d9722 +ciphertext = 9066923999bae264f53cf96f4712cc8655ec53d9a692221863ac713b2c6febc02e5b43163d008e1a5a81525dab273757a27c568ab980e5f15dc01ba4e370915d2f77cefe1a1e6fc2fd189e7717f135d9b5ef2cb4097715a825092e022bd750abcd7cb3d6ff8f73918443eafe6c2c06a00f0c65d45dec9cf12626e19c1ec4bbb01bac2a34e02d096be6836153d0802eb8e62c1f4e46a53ec661a304a223b0b3c7ae0799f8f0b162b962ab3c92dfb5fc8168632bacdce1bcbea60a0e88956288152d2a2403c3ec1cd483eb119eb62c5878694276a18d58b20c849bf41f42b1bd8abdbe68a9f0504fc106f47ed36c2b1fea208583737ff02c23470fd81597079bde3f56845a3a444870671c410f7010af93f253c1f14fca19737738923a90b78e097fe52a130df7f2fa622203a05a7099378cd22de5511db73715839a043b17adcc7d9ea75fab128482182efe6fcf9d87af3bd80fdc1afef0a635d387f39b27e73948540953976e66df8672115184bd7719248ece5afa6e85e59bac2415a9c242c7e28556d26ef5a298c2d7b4e80d05854e5d8148439695b645cc27e041095bceafa10e3f049f23f42c4a7bae8b58f031a1885ca2a18f1ced48148e52d16ebd12b63931dbb9f21e46209f6714a092535f454a8d3968fddd8022130c6bb989d0dd84dee9849ea3f75496425654634adee5462d6b425ba4e911fc8c47f98a67c3c116d12f372608d0bfa2d066bd5c3b961c64044a0f8186833213551415b2beafcb74d9b77f59f8b78568c9337bf73449f70c08ead3086c50ad0193082925cce5ec4df8df4b841ac1deda751873d1b0698e8037499fc3ee3434fb72b1710e6294909bdefe9e670cf80260066fcad5d7dacf233af61960c651164c40eed1d08e91f87ed638cd3879e2c933921108a4da065b4b2cd8f965a3365b130ddb2d1f0ff017f6d91e9aac01fee659403e00ca1008198eccc6572f0e49dbd0ffd8006a45fb6daeda45ad2a7ec4970406b44f6f0c5252bc2234b9db504810a15ba85ea28dd19ffc0476a38d0b74856836588a31792ac185f5208ce4ca0d1a5e2210d049a7a38c9b6953e8a4a154a34a15d4dcd1a758e5a03a746ae1fd576cd14c85f09d0bc8554ad570dd55e6ca80308a927515b215c1af914f9e409ae14cf99960e8355d6316297c6b18132dc89ee1a5bcd3ea1623a8c0b974e17048a18081ca47c2a22049c98f0c5c640d304a7fd80089bd1c0baf634b7bafe352e7d57c12771c8c4f944e4ee03b50fa3d4561f615f8f87fdd3f3181cc6d74e63b2393e5e38e71b1fd2a3aca442d45f1ffd7776184c5e2eb5637e31aeb60e547ddb12c7d276304f166c7be9c4569f34209875407fe3e273842b4cdb28408515e69313cbef447234f6dd7fb0606aa3bc42293dc31d1be2c18a221dc650644708dbadc53849c80fc2e91abaf51f869796d5e78c5b53d2ebeb3a2efe02dac17a177aefb0a583bc271cf7ab5d73686fc971db994575adf973fc84bb9ca50609c52a22fe421cc3b6f35735de793ce75 +expected_result = pass +expected_shared_secret = 7f6085840a30c6b1fb9dca782e0c78a2264d54726c04c3127956f131165426c8 + +comment = Official test vector 88, seed: "cc7152849c98d5fed2813275d32069e44824ecb14eaef425ce017448cd9a401c91c06d0f7eed6d22b7bbe8ba6c429ec3" +private_key = d1f46e67cc5aea63ca9ec413938661c2f8156cc79e10a64174774545b597e91a8cadb58deb15b27f343073b071873870bf858b5fa3ac3689698deb68c570406972210c2b9909571a12753448e00e6a0c165a101469828e8f60a16b55478c8899d9a38c1751bf220a60a999b0d2a429b375137db8bc9b85ad5fcc073355ae630100f8fc68ebb8534135590ce22d0a0672ab54936c8665aaf476b50293a32135283777c375767b04547501a53b72a14d3c4de4e001d16b2b2b598a22d784a3711c39db183ac82cf895b242954b41c713bf464464917d6b608d21b67b3519a6df161ad237359e262b95c6be3a8522b9248346785fd0db03cd083a21092f4d91af156b12f4c9c77c11cc0b68adbdb813beb21289743758f8136661704d0c5ca9302a064040334017d47815b7c35363f5c730298670536c69c122cc91cdfd18783efc4c39c8c29cb1023f1488a7469f1cfc1d7ebb3d1ceaadba3b07310000bd89c043290abed896e655cb1f43a1c7335aee30044d9652e6d3b8e394218f63072c7050a2984032c45735a3aaa4108aed8b9a19c13b9bac28ccb123d9987c45b91e89b7a949b5b4ad56abe4237f21dbbc53ab651bd4b703069f82133c54acc1aa415df9961a4785337535869fb758cd04b798907e36197ea428c66aa516f602404e87341e154a0e09c881725cbf00761fd9645b658d97d21f33059e4a898deb0c826d9057ac302663897d71567117fc4416c860775b026e51a52663711868777d542f1224b277ec005f2bbcfc0c84146591cb36caba82692b010de229797cac57aeb64af446a896527bed9b3e55539c0f6a0e9eca5953890b95b0b282c3a4c46a44a8705a54a8806ccc0d3c736a20d34aab118813651d85f12906958933d69679d0457a4817dc83b525ccc63e94c1bcb1c869cb3a0bc46d47084481c2563754aa8f44682b870ed04996cb8886f43b91ac8767ae12856ce5b85f55c8802830ba1babf5797d0da723eec24616a195ac809371d93f89b19c874c840ee9c39e7370ca561b6e91552cea47f1d09c9cf633e7cabc9ef85f89d01a29d9cfca8143bb05c3015b3c6035afdc45ac7b08b5406566bf864657bb3a82322793906462c03c20969f76c2c8c8ea2622a373c3e40164a77055ebae05787965b60a861c09658c32d4194dccd7ab1df87826590890b1785f0385b965b5ab3b870a0088696a783b5c7a69962b86f789bd43588705315258c117c4313198af42e2b7fe39894a86189ffc4e8c6bac5e7a0f03d86d18089a6999972f309a6debb365781f64197165d259bda98c7a920a9e790bddc587e7c08040d649b8b08fbbf36d1904970354410bd77b87889668566cdf4a94e1c65b04d33c269c5152b049850857308ba1310283a976a31db34722e97c97da85d14372e14a8a95bb45c63670bd7712686200d451cafe599ab0d3a183d2b0df7b8fbf0995042ba0ce682eba8b71dc6c0744262c75b7638b51b9c4931d4f7c842328486a799d06027cd5cc75e4b1b6816c2ad66b86ed047ef978184bd344c00aa1200432c5d142246b883b5b85ad5cc8f8fa994f4a790f3b6c201353f77aa9b7e9bb195375060282b7da42ecd36295fa55f8b5ce94b812bc421bb5d6022ef207e7629736d614527619e33cb92600a1e39a20b25a5b16eb0ec1070e5d566b28449bfb38936f44721ed428ced5768ee647a771b7d76a30c7e5563b515f5aa89ffe994cffd9277b0695049c355267b3a07c61f3c5a2c0d4ab8df76129c19f44f762b51bc0374a43e6f6c1155901b2430b2b77afc9ba4e14d3658607387dbc2d12b99ec0c0b0c2721af298a6ebc92a7e6b97bc460674931e21f68377c8303b24cae8d5ab720c79c4399414a514254603b565397857a7078b36e24a262cf9070a92c034c76614d5ab455b60b3b3388500946677195cd587942342a6fc91bef144ea412ece186a422b85a213c43fd0c361aa00698458f5c5370c6c553a9c238201754e2b2e2785bb03053e0b414e472087a0276bf2d805cf477378ca34d8f01c21b433f33b49a8b9bcf762451460558fb9c3cd071e654c250df04b6541baa278c1669bb49ca3ab4c78cc92d0137a2864bae0c904e23aa28395edcb435d9c1cf742562d603bc61c521145ca16f69192b137ee372f04402527bc557b754e187355a388410751267561a6b1f59e04190ebc604ff64a2b08b244b57abe84f18938c5a9ecdc972191bba33915c653a84b1a970aac7343ac98bdb7bb877a3170e8b1e8693fa5089f421281b5763865c584cfda6aad7482d00a0520d947fddb173947865fe178f9800570d4b2b9529a42a514a8691c8531a271c18e5f84380c20cd9a992051d29b5be76b2235b511514904e3b284e8854556334515162db1b09894b18a3127982269509bbc5e8758015a5b810569e544bef9398f7d195a50a958dd78bda187cea0b7b2bca04e2cd90db634a3d52b734e224c4c60ba3c8240d7b2755ae5892a09a0e7ea1b2424402c45a0ad59563ab97ed906a1a15b8c4412219203ce6826b91dd00ad602089ebc5163b416c0d02009a7a5440350a00a7b49309ce39ba26df79ece038f23f4b4300c01287a51f5fc619eba04ab1b78e6396bb23c1cb86a0f3bb11f7d31a161a480b8f33734cc63ea7219d76bab759b1ab3405ca61b535b893b1bf2b678849751a6a4f18923ef44470e543924d0c462d8a078782b80241334f547d2aa474d95b8709747162b228993ba15a0c4fbd8bd662a1a2f01cfa859ca723a011949823fbb55947b9c27c2bad547b0e6d29665071b30f3c8c536651e6437c0d4a314ab38a8f707928c0c2b864a3a67397a936dbfb98fab2c0935441b83157d05072891a43573882be97686534c8bc7015ac267b75f0a79c6991cb6c96c735a4bea90acc9bb6ba1b12388f0821a074018909f76944d9295b5eff73e70ac1b0e1644e3a40685305f8a0626b2f05969fbb4cae07c61f6213159b3471654a88ab58ec3a648f2944625820f6592c67126bc085dce216fa708089d4947ab911ac14c00e53782a01580fd967594e0b2b2a3272d590aa70c7a3f419accd33c1b1294d21242c739a3e8e577316c23ebd4b4c4d0577b2bbb12cca71841b54c0b76729320bce26dbfe5bbc017c92491762a6c938d4bb0099aaea190813a3a78e5685d83975050d719d6b6a80ac313d3018d25b9054b5013f832c1353401e6cba3fe527b8d2906871b79836cb35284725e733d8fb60e6a8410e5f61428a3cf9c25fd45802d5699f33205a71d6404704483bd2c82e92ba9457926a45bfa0985149e0b6b49fe8adba1217c2c57c83f2b8c5f1d92f319e502b184a65869214f75d82c2f1bf2e6aebde5660fa73356982e12999d8fdafbb3cb186341d0386dead0 +ciphertext = 99d62a49c06c371bd6d26ec8c497e9383a842e6374424085f3922951dd554e866a4593f4651c64c1ec8123ace1cc6f54674e685018b756d6d7a5d6ea146ce22f25743c06aaa95093177f25ca0be23e6e76f5f71a5b741a29fef9c82137aeef17392972687f24184bc0c90344d3c51759546dcf761aad332c7d31ec3e08bb6021e07efe3b8fde04f6d1f718eca765e27fec6592b94315e116cae292d94e72004bae5b6d5a99d03801bcd0420a459605498f299cee4b3ce6cbbf0178894b9e20a421b885914e436b7356294e69f1d419a9633a712771931cbdee3b1c02539e4a080ce2be2dffc33f15fff7d3368dffb2fdb4ad6ebccb71b5746ff2bb19c809129dba5cef8d17ae011b64472b38107416b88585645cb3c80a794febed9e0e16c169ed0dea7ef52c079ffd05e2cd3cf2c6b3cb31813ad0780be61ff258b53f04735c2a3e8ed23dde9d44b5e7e182d0bcf1e19fc9d7fe5084f06e311aa4cffe8e2dd79457024b94a2b0a56f2f6f3caadc4ca3c6dbcfb538ad58862306e63b50472194578d708e5456aafb34d4a31dac16c6e596367b636dbb07a5a932b863d86d3b9b9a20514c6aac42b135b98b747b6bf1e0ee53cc9d9ca1b6ba97cd4b029ecf0ba3fbcbbe01392e43593195e34442100017655486b8bfa442f65256ce79a8e1c4c0429030d4d37cedee7d1fd6749de72d187a8b4554756842f035e7e873f06794a315ac8f1b26a6357447813b60fc9d6c4757b696df2290529765e2276418a8df9d22408cb9b8b1b34da3778cb981e9d08c69e003e251d98651050676d4238698a0879209e772fd5db2e552c38e38a822a1d6ca1c0f2fbf8399501991606ece8480f8b5f84a965a0e1e3da39459b7e6adfcd4d4bfe27119a608b0edcb134ed12d5798796cccae06970e1f283aa2ec5c5d736fb7afdda1dbfce7f89015eb195c56ec23ba0c10ef7937ea39ed252a47a812e599ec99048c50456631214fe7e76d11d7f1e2a5ea7b52c93c9b810a18f71309b0ff7aeec8c9243bd8695ed9b8311f18022533f6f294e281a9ecc525e99774627628f8b8bf9da0308e1910f255494d9a349211d4172a2fcb7a135ad940c4bf579667685833b21b7232b818ce2a40d4a14b28eabd8feed6016181c591de5a569e3b663338b9c710649bc7fcc5451785cbf6c2888fc5e7cf992ec049c46bbfbc20f7b4da3df1cfb59f48d8e24eee95597c77a18243544a693010cd2a0b2209a260d6d7d5ecf8d86a57b54fd16a5aab3908fa9f4c4da42a0c4f686dc08dadd5ca536a80213cda1fb230ba45b45f3d6d590b17f6844f54132e6e8c422be287117d35c12ad0707c6daa0cbb0fa039ba168621c78f91b65f48bf23af0c84493c77edc132e1a335e2e15fc3830b90df5d1029c08afb86703d46b1b4e018b9234a54cb76eb906f2b50a414e68b59d44a59d6b1cecde5163684933361055e51337372e239c0f94940ac4a44cbb780594d3419df9a896e271bd2e2306415317278e1bf7ab91ada048ed232065b9df3379ff9cde44a16 +expected_result = pass +expected_shared_secret = 96e30641ea4280168da37291a3063342ced8e77b33b5415819938c0bd7264ffc + +comment = Official test vector 89, seed: "96d9a06f88ff2c2036fa8e914b89c765e4a510b468dee40f914f78858c811857efe9fd0e17c0048e7389e8d996b7e2b0" +private_key = 09d0009aa9878c697e2eac9cec9675a9570660346547d7aa8d4548e3aa917e238cbbc10c389445d15714b237566cb44132d6983c9610e779570b74482d5ba2742a1bb51c68142c1680b800f1938795367b6d8a56c32a0d77922c78116643530aac01cfb2692f4bd6bbde615a3335b397487db8a1175a043719ea58d0dba627d7c8511468b34442879cc227e6b39e084dbb68be71cb988766114a80b1979118eca08217540f032966688c99feaba06d0a0a1e701deaacbcff9c2f2948a209ac8ee505c85fe0444b5c70d067100b63cbd6d98f9aab73cb06c97ff31d7aa0ce188707ddc5c07d495b27957b369055650abd5d9b9f75761770920dd0b574a5841c3bbc9f6f1ab0179c118c7a83b2934e950b3dc732c84264c66fcb0df78975fcab5feaba4e6af97131696a0cda1cc9e2c40a266fbe6667c1abb361f063103311a792b95cc525ff872bf3f394ffb48b30b334ca02bb32a901e3478f811505da066de6a5caba425df83c27565ca48b16bb2855a797a72dfd57615d5117b24374c2d306473a349521a8107790d268ac6b5813c593cb9e8621f8c68fd2e8082c491c95c5ac74c86dd37b0a4ea0cb66aa576af50fbdb0a31235bdc9e8107f1859acd2674fc72c6669a3465556f90269cc30b0a8f53563378ee016a7abcb5460d5371b01754bd7373c2314e2a42d98636112f3cbe0638e513b38d4850afd6a1d3d485308181febd88b75f532e4541965e0bc592885fd1c1b3108c33f74725850617b526ad4f2c8cecc19b0a0ade15057c90ab086c26cb014bff92988903bafefa3c4c96ccbcef178f988a40d339db324257de69a119125c52a4147360b1274808299446ee768680170457acef18814559996fa96b418275e031199e0d578e86c946381c369ab839b1a75e9d6845c98aeca24253b3b0f00ec7e92cc6f6a40a4d8b04900ca3e78cc7a5c51886e0901a908bf0a08947e3b524f1c606b055451ab6eda2bbcf832510b3075e2cb0ecd493b71102f4ec69565f96651a3a2c3b738c2d55805798253e055dc8508b98822e6803785130d22e494b50025b0ccbc69667013c4ce4a140c2e9ba928d41d7fb5237da8c5ac0310ef5007b2b0c6737bc17a747c5a2c1f3c1166bc2b0ad7aaab1d870e54694c1ca293665286c4eaa35d34bd6ea7aacea04871c257cf63641264aaa0db4f65337274356f71d02310a57e44d23ec6b4185bc5cb45a65d3b592af3138216332060264a6e53702d766d0f4a0f14f70b75b780688591cc414283a59ad2f84d665354d71c2aaa1c278ab6c8ba902283b286f82761906c9b2796595bf5ac01455ed2b43607207a30c949afb1ba5c50659143c98237279003ca820b4b5963b0882a088ce09c99f4a6368971a7d6885237bce28580e2ec483fa305fffc0aca173a89cc41727a55d4e29a8c410b3fe851b3d58b58c31920759ada529da162cce47618b2f715f3658d71f5455365c67b04748b371a5a96b75f342cc4c031c713c04d2b6cdec0cc92b7596bf4a2a0c91537a0c8174b3456489d2db70d3af2995c4830245120e9411e92ecb2293700973386983a0c6591cd5eaa34d5cc00fd672d20a604e78696d5542646c120e02c8dc5162630e71465accbc55170fe0945513748c0ecc9098a02e9d51e44acc267272633645ad562816d479466b54d2150afb682b4f32265f1f4bced21caf7c7980105b08056cc4192bfe0da9aa5e00864b0a34712204cf6ae82dbad360a7c840b4804826c39a59ae029056c1b2542b6a589eb47c14a70acd1731bb0a4d657656915b91d696b2f92afd82245945c7b77958a5b6a3b6cbb179ab83a0f32591b757e8b68368d6a5ee63490604aae70ea7fb4619c91a455429a6b195214bd28bc717385d3cb8235991c05088c7939bf852125dafc3bc368479165438092b530bb2b869246988b8f85425a2a523ed108c6d2f54358580944d64d801078a4b621f58012f9d8a17a92ab8ad43821e24e2f87bfa844abd0c6b08650ab76d5397f2cb0060b31af689fc8612249d46374848f496b360e733fc991809da804dcbab14030a4bd18cfe37b41cad91a66a263437b7ddc2484ed55acb16ab95a1a8c9345a898e89c37248f9768524c616babd17a8dc7924f37345dcc32de04273c5a0ac038a133ba01ce2481ffb57ba153826a7cc4123570293c82082b6a75fa05031cc7fdbb9031e10ca94aa283aa26eb3546f894b646b9a85afc5df3b513db522efb340287c64492aaaac5fc25547129b56b9541eb0912222c2e60a11b9304692a749bb174cb47679cc294253b0f768a7872f698c23493fd908c9ff95f9275551b947bfe84780f86c1e0bc105f6cb7c9430369b58bbb07b3b0c87d8541618c76a43d52c98a08166e052b4487177ad222e6a002f7fa3f3601cf1ef0b4c02ab550d76447eaa695561118a46301b544b493c368b5b77ab17c5af4543fa6a8c682a46af39ca48046b1529684a53d0e492e1b8596f55334ade15591dbc4b411537c88a5113458f187a6d77278675b0c85bb017416b6e9543fa1b924b631ac1ddc5556127548fa8ce0c90125139bdf13428e2c7805607a44251a5f289be4e3a2c3c95c5b5cbf7c87b4a7d87a39a44b672bbe9af8343dcb062ea3a039e949a7f151c8900484368f1cfa385bd13cf55685bfa4b959f8634ed7c437fc9c044b401683cc7482722c98583de24ead414c1833858be987672c557db87aefe4ce2db8a676d14083462db35862dc0cae95f88ec1f59426fa2e24e9cfc54813be07c98f78a87b9703276b455e15474d7a283d5738d4b639369077e7790dead3336e1467c871a571080004a91162fcc31d2912646a9406902248fbbf28dac4343b081c327743335b9efa4b7fd13d5177064a5b6e8065b64d8c6580b47e6472c8f5139268145ba7a23a02f59acf680692b20ec2dcc087a99be036bf7e9c8c0df15f168c508ae28e33d951740a9b0f0321e35cc01328b7ba860592b566cb369b21f51b7ae583d26652da729f07f5b8d59caec65aae42c7c9cbe73c68504f26670bedc542fbdc67a95c9f2da1a08e559797170ee63147a4688c8e101e5aab48a4d1862506cfcd297c7ea61a9ed4a54fd3a28380292fc1570fa2ae43920b0e940675b60534425c69f35bba714c88b3a6c323090b4c56b7f89963059f8ccb0994373fc1344412f694175c2eabea110e035bee6abf546396d79472eeda164bf49350f54c2e75754f502de4a42721b37974a8266c49b57c6837b38a28ca489f02fa05307d7163b35ba6a4c5024b70ba27db0de8d64bb8b55c83bfdd2429b1bff7f12eda28dfedfbf0ac16e27008c9fdc62c35e53b28a312bdc91c40bf8b2809fd40008be70a6b184981101724bc3d5ec5e1956b510b82fd5ad0668a5a +ciphertext = 39afaab7974b00311d124330c72214db54b573bcd9fc3efbe3cdc82b4b680c4699ff19c1af2b0ba0fd7a2ca1016de5fc566a098d40dabe6c09cced8fc3466bddf7fd4166bf9f69dc4f8dd8baedddafa1c07371f85cee047165b030a99897eed64b7bf34f427ef1fb5ffa56fc4150dfcaa480385b86e215c116de9636b59cfb5c1485c1364bd6ee0c12d471d219701d78d470ca7b6d16d9bba3fd0610611fb7e0d13acff438b6ab4644a1d97814f2563d7159f7b11f632c3f5cdea5dcd4047a9084515441b5e16f22098b6d943cbcb71f705ea675544193fcf2c8b0f0457735840bbebaba9d6dcdacab820de3ea579e8ccad0d59ca19fc1f70578730254ba58fd00235e77dd346c92f4916d7bacdf6597232d18beabe0f7b4f8f916d661094066060b9a0383170758e3f5b2fe0adefa80a2c7b553f03f83d465a1cf090ea5f5d04410f620e509f9b7c81dd0dde465e4c52afcce12f5ffe58506162e888afa1ed8700741ec4d424fc46e1c7baa9d7da6a450019be4522f23088a239ef39d0ce1e3e46a8d7d6dee09450b06dbdd701cf9ca5b920bca236d0ff8d2932acc4b590b16fd314c8fc466809c06c7066dbe7e4716d32cc40d48dbd3a74820ee85b0e8f200b375ae5729b8a708ea902780ad6ade4ab87f8dcde5e9552dafd56599ebedda9e43a220b209932227210b744b7676098cc1a9fca1a325f28c6537d56e6ea922c6a9ccc48ec1fab814631b8eb8d5dc466f6b2d7f5a48a5dd3cc42880751cdf7b6649cb662bb973b0e0b88c95d8de90571989ed9e2ed115bf7f7bfc4caccf262247e90a7f63febc66218525f255329c75e957a6cd8650583560605faaa84676225cd42580e1a24fe7f3cbca951812762adbd5fc514bf094ddf9fefa94c72e22ace942ed493ef021a87d5a794f4c27ba5cf6c06408f79cddc81b21d416eeb01982120e77ea036b11eb2aa6f16ef380a90051a543e45d3aae0b313be0a9332b71db12dfafeb0128623553d69a30b967ee7894e54bc39131c376e73d2b947f0d06d3b5d35bbca914c8896a683ca39947247747def3ade0ee5a4049fbcc26989f792309fe1793becff2235de7434a83c6cb7e5519f8a7c67970d5acc472d3303dbef8fe7491c949cb8155614b692f17cc0ee844f7f0c3b2b538a70d9f3b8e9c698a77753616721c4a26ca766df1af04c8011472166ec8acde6ae95f002005dcbb5ff0f2d6db1eb3b49c258a23c9dc052e8d44a6fe08515537bf5175b7618882703160c285207b64d55c1f9563f50cdb151f4dcc5918f6d34c345160fc405931dd97f7e3403f5117a84a16c17077f6e13119bb5fed5cf8f128c50b46e81105879408ea5a90a128e2bcfd54c3c091633dfd9cc48be1e492d2615b8c3766730b7a9484ede6d646d3c45a09b52e3180c8b281595a97ed66c0ec03b66aa3a364926ebacb166b7699f7dc56f3606538db5128bb8b408c8fea3cf2ab0903fdfcdf5416c8623cc5a700995be6f0bec2ab7283df510d95f6ba323bac70fc058567daed0a06f1cc81 +expected_result = pass +expected_shared_secret = 47e54c85cc0e2503629a8bfdcfe038c3cf692d723d462bab733c7c8e0aa37b02 + +comment = Official test vector 90, seed: "d26ce360d399bf7b89dc364aa7ac06bb513eab8f527383e93e30727edc3f22c262aa0ec70257b39edff0630dcdc1b79a" +private_key = 96d9c668915384c2847b7991e5f557949c99a3d46a2fc9ae7448a229a89ef7f405c2911777fb1e2f44721be8cc326a80e524486a16a083527e22d51e4ef624b02625fd6a857bea2c0590a3a4e39f0e041b7284bcc501201842345ed5ceb097a5a5f730ee53176f8acbf9e03c6dc4a069718dd64c47e1d17323d29acc630db2da9922804802cc768070245380cec6672f6a5a9d14e4012bb13caf8c320a320ed63b0591087a0c5a76ea29b57d5c997fdb372e9a57e3f4827a2441cc485718a421d3c45bd0426a87589362e52953822cf785802b2c6aa441adaef93dc6451ac68a9867c9b9703abedcaa540146ba6dd8acf7dc317a82a4c1396267032fccb53be9306e20e4713b82842e03b7fa984e5827c441e293352b2e2a51566eaca8d9c4206000655f761729020f7ff9b230d6c4b986bc94551175a8acc7e2a2c174c500666d3cf021a9b40f1a465447291f920865ad16240309b5c838a2ddc5beb8aa11bf987aa9d7c082e8c55c63ab01d0664e545e505b4aae50606136b6b01499a5ba10174852224ac6bd242d5d21758c4342f9a02a3d46a9a845112adccbb73488cfe3055cac398b0245c467b94eb342e1845969d70511bc7100f886308cbf21c13840bc17626ac93dfcc4eb22ba18f62b15b521539901166598f25555c32587637a341017885af1a6d1841aa1c747d918253e1c873c2ccf292bad45805d8946b00dd23cbda03878f66357d175d67a1b743c1e5428ce90661067011874b062e9ac8a0f726b55b76627c53338549c3f2605840a11d5606acd104bfadcb51253af718835826628235878d6160f15033844d76ae946ae6c240053c2ad6c3a3d72e721d9565a6c79b56840cc5a878c6a4033bb9c88dc43b130348082e41c269cc0d3b05ffe356b5695bb01c95f8aa9c30e50cf31f11419e13acffc7192b75948e06a68458db80a8f71573b6edc1513aa5b060cb77b12c62761bc188159a49c95180249b3e35c3100635012637cb9cf17ca9936787aac954bcfc655aec8b4215861a7709f2846a1c14889d0384591753e3f19cad2236dfcb7b225abc430a7b61e6018ab30146d60a6563b2f980acf66186fee70a458750cc62c433e651f447ccef8a773bb2731a866832ae535f0d82e605371f6b35fd6fc1188a52080c609bdd8748c321ca37190321b286c849d35224bb5107d83e2827ef0c63859133852630b237247aa8c100678e43618289239ef19c99aa6b9156704643285bec89f0b0c21f3a091e2063e5d3029f52c33af97529e701298d3961f492e6b731d4e2064d034533f4611fefb64f1899ef563ad71a52e20b199f0d80c557cc8cedba3cd1746d3a6ac2e697637f08a43d681ece3769c8980c76a26adcc585eb1194d28ab163aba5563a5c7985720248662bbc21470022ef4110b33b6b8b744a80ab36d0a9b0a7988a0c98c6a597f8cdc76791c467b0cb53a020928f7a55981b520017bc06b36d10a21433797c15124e0892a81230bd6bb4774d46f73b874602588d3f8966469194041bdee87ac54059458b19724949e7998ae8018755d491bffda76a70a64eff902a4281734a7484037c739b7bf71b658b779cf6370420d2073fb820bea1b1df29c3b12c54ed3b1cdafcac7f6d08082da095a7658b3a45f7bf717d4b80a3a050a04cb23e01103ffb1731b2c35a9dc23c4341976b188f5226459a02d348bc9d2064d574040147b41612914cfc2954e4190905446e5ab8632ec96145b917dfb4a9dac62b18cb0120679e739901d9bca662024335a083911aa53828d6d79c948425422c32ec471c2fa843b54f6731fc401475612a135aae4b146fa829871c0654c075dce41190483c3ef60b7336200a4a39cfb6787ac09ac85f4cb3dbb494727a20acc8a1cc9cc765862b0d402147a08a5e4aa6e679d482786910399bac7a36efa477236b1a01baf452badb3f184d7d6ac6ef64cdfb89d1ce66a059a4659d8137dfb3c95cbc9e8d86e064cbfdfa50c68130a8d82258407bb7b926f7a802b53209f3ab78784102e88fb91e6311d496251f7b574aee5797e881ba1db16af40281586267d826c0f33a0518c26e6533e19ea0ebf29474a131d882a189ac03b835c16c34c9ae7a1c4d9f5159f85b8542284e0409dfb0876fa6488e6519867b5c53896867772210e95399a1733d2e78532b7651ca9704ac063df086cae4aaf65150093f27054f34e2849449c7680ef1ca1a0ac399a01a9b74484a967592ce85086230582518414c247bb7680abfc2a04a35a20a851b73548a8e4cfc2b84cb5ec24108396c28498a6614790d56bf8d1b9f9e40bf574c497218eebc06217c9bd361baa5d0715e666c2d3d299346a79be0bbe4b7ccd49f948a60438514129c126aa1f3875718922c5124728f09fe5437ae83194ddeb81f0d744fd2b9b59fc223e2792501b4932924facc16c1e5444dbd6a823016b3afcb46ef59ceeb49728ac541bbb6bb64b7e196c59910628c8ca22b1138d884842c387b594b544e5d99784b06acc3b5d80ba81cd34739a20af11f7735d645d9ff25c07f8af9b5902524a1953ca2a58d6b796e3695a006ad6c703dd161c12c01b9bc995773c5d2ce59470c765c3f5401cc07885c77bfb3c15d7f766f0ec7cb3f601dbfc210d599093a21c87d82002212b06898a5a878d4ee913eb451dce14a1bc424838d4797ed14d9eea2473b304d6624f1725c820751a9d313cbdc79ac9a26548587fb41371c5f48a4da04d37ab7189685aaa054853f0491a0388ae4b7af4259969e29eaaa2b2eb9503518c7c53ba0e6bd20ea8355a63f1c481eb5e662a0b792014ae4c0981274d902759af794338072a839b05d9d42c1ebb1a3da33b54066d1a63024a3b1d1437b37a83bbe816075cf416275a6f58336905937105e63a1a017f87911cf0b41daa41a5dae3856a606e2a9333176628198b49d2517f54a9182e4ba877760517dc94a079538822251204b4c4a2382cc7889bf84923c09072f86bd1c5879ecc3a37678e6d031568c24012578dde5ca01005b2df71a4a0b0455a03afbe7c366bf1b086973038fb5debd793a303b4c867b611772733f66574cb0d7c303563c389b2f1b46e98945a94b142b2b0d647521f4b58f12326fd86286a448909191bc600bc7578b0169a45c071c77f280c583788f9c2aa1200a73431ad56d23b20471bb67a627a594ba9922b1ffb75d2d030432a954c71235a9278857c3010a8a8906c070b77060fb831842140770acb92e856c8a95e163d5181caad6a478ac9ae82ee27f7256f4d4cacddd43f45cfa4de4dd067cdcab990059e901097d00e0ebaf40c5d5dab009c66798489d357e760478ce884cce5c95fa08ed106ce84660e8a4c90bd2b22634e40769aa0090a101c5dddad45edc5 +ciphertext = 6a97fb0d3fc17256c88c551781f6f142a05547fb8d0d96cdb0242069d0aac67f102232efd259c853d4a5222e4d8b9e5cfd7028afa9de9c3777669fa77bef10515be69536e6dba285206b1a924690cc8882178f04702dbbd541a38dd036ff8e6d81253e7e902c6de5151c04eb29236b261b30cce838b8748c3da04e524f3c71f8344235adaf16b54bfdca539be81daee0c2640a03e69f55f974e8573af1f42813fc32f99f31bd1d462324dcbefa61641e6eb2277a143ba321f3524307976d26ee122a758c330c80c91fcf5c7a7a5709401607f723c3386cf8314cef0c14a69b6868f117811a7c3caddf1935fa2dd230381eb62d1564072f6d3e68d4ad87e4fd2915d2fb80ab2f6f3b18e853dbf0d06a057f930aa61898f1b04148f5387ed19d6c2c36669ec31cce3974dc0717a188f1d2e37cc31de7b15b7d0712d33ff646b11b724b12509ba41735a771c6ccebbea8da3e651cf795c2131f910689f11a2b6a241ddd4b71605d794ac24778e2ce1d47566f8f68d22251b265fb0dd9ba211acd4652b509a6b412536f4348a0cc95a7c8bf736ab2b2a9870bb7e75af32e6b6ca5d318c5ab752234ee9e09f3deef5e0bc52fd7c8dab5c2e965b41397413b063829f194e9fc8d9a92f0dec9619d6d6aa8bb368a5a80167a4511225fd88145be368f210e1dec5cf94f28e1399a53612fd7d4003eef30a0106975c1d198a97055e9e44aaea6f9d21056ed983b54524eb706b89d7cdb6372dec8adb8217a214bc29f02e236530f56daf7966b31997ec4201be6d776880a5b0cd7a8784eba3517c2e7613c53c1ae23e5b1fe3d2f95ad0ef951e06e5a249d8225d48e70dbb406731ae18e404d4bdc2d7e10c43e62b7b18b7308b4effac86680f6a84bcfed751ab5d3d68f093800c1bc243a28ff898c66d3636820db810bb7b5b92087221b2afe6bd8e953694f87c38ea2c59c151929ac831b120c66de1fb05cc39a9b57ab491a7762dfb8ccebbe3194a993b4867c4d336a04351b30ec4d2f0370440acb6bdadad12e4d3db51e701aa49c455296e15b9d13cfa68340915d2f694b8b67b0f34d275867c3a53b6215dcb0c3654e6c77663524301d1e828a0ceaf7d2cc226da11d1cd78b072ac7f3ee14d2b06f8cbb9560c6d7e60dd95ea5d402b5de9e7b96b64c4accb8eece2a4bde33e8d27859d6fa6ff7b609ab159d1201df7734d4c73ad0a4eed2d80f24b8638273e9c0e53ec0b8272ed6fb82a6ec30ae431972f929759d000e4e5b801189473cc3ea318f07dc495b7b9eb7afda03f7e470345c9095bbfc00bd0321eb5498991c75d29731df41db55e24890e4beb84d5bd6666347a53f2dedc5c6480a93b19df229b8d7ee732e02c62db28623fb11c24b2de9d2ab0707e4c174acdc7b1ee8e287b62d1d797a3accf53decd3ec40fb57e571d129f1a7a70da324d094e51cdfe1a648650670736e0da6aaed753822e5bde4a2b69cd0c05a875b5f75148a6a65ff26c670d17a0fb598bff1643ba62d03c2bf9d1ac3d33c044a0348b762f95dcd +expected_result = pass +expected_shared_secret = 8569bd042465a2c4af628425cb102b15ed4f5feee16090e2234f3a884a0fa938 + +comment = Official test vector 91, seed: "c5856298c3cb6ac9787a0f30938537ab2635b96f6d19cc9522063360e7a5c88e644929d2879180e3e5bcad2422b7cfc3" +private_key = b1c127d24808fb2b9922332832131c4fd67fe8a1a070ac8d17100bf9f6291efa0bc8114d98f65c8f4abac3ab17b4241deccc37688b881bcb68503b54379838bbc100b5bab306327e7965b694644c470a5148666c7fa89872d39aff60bc533c83f280abfbc26f073331ef40b694ab25feea5b2f55196798b70681caa21537dfb5746c66129775852e5850f57c2db2e8a0e90530a57b387b1c429101d04096c3e0bb6e9af19f83b1b0b74c47bac678b0f2269798573fbca5d8e687965b13e495827adba63da8a17564a3e68037b3a4991993401c1c6b149895ffbc03760c13595035a713140eb7a42ff6adfe6bb371c9af5a686ef858a8fb7a63fa137492b53305685205b08d44a3ac8f8948f2b7bed9cace27ab6265722d8f2950e0c9ade053a4c4ca8e3f80a907a39e33db78e6065fe9dc050a5a730595ae5ea32e38c512edb79dcf345f1d9c238a1732c552ab8db2ccccd11822972896b323cc43aa03633617f82e89d63d4a1003cf9c5ce3379b1d53a63eac57adbc91510316acdc30fd74a1a2e6c23584ad1cb28444f9231661079b0913e20b3278d8a2e8b18556f336cb750694066b6c82c5d267a903b624cd440d8e187d9e438d178c8394706f016b835e1522ab6904f80cc24358b7dd3bb271039acc174164021e8a522fac473054d5b4cb3bc64bb107c6b637cd6360e312a85a3b1e3d2b64436a87e81016acb763a23ca9b7463023148b0c4888bfb18d9441841f723b9436b77b09c79fc714385a3ae97b5bde0a2a0c541dcd2b668c696281389ec270bc6d088fc42506cec85bcb4b611342af0a61b1b9d75e0df43be293cee6eb0413363716ebbc48ec6c361a48b9d871bd5742fef2ab286094a92b508cb794f2f69a8ee15c2d748d8fca8cd2284719815e75b3b0df76298e48280bf530e09a34d166cd5379777d472f0994ba8e5629ea7691fb973f45869635b61b277c375606b911aa1228271c85b047942a52187bb231412b50f5be423476720240e62b9d3cfc5b7af5ce9fb38e03349063741ade945e994a2d6492a92b1250880318b9b9ce845ba29bd3733228ae960663050888bb98a0fdc21d6fb34cfb5c1af6d9b98ed6ae454c09b89b6067401fb30a17dd331a845c713715b5bd4a087bbc14cbbc9d2ea83d0f9b0d56d939d01b7d590b3082d2405a20724e2c44b5123bc1407b11da3de5889ac52b7b7821c4af1303d3959eef3888b8847f3e0695b5b844e8e3c221718a25057e707a50e0159af4462bb1d103b9057ff7fbc1740bae1afa44138aa2b7e3270cf80a6ac745cf701040c97253133ea195648e929e6c6394940b6eceb18844f1c862da6597a46f64e0cb5d2803eaba4a08110a011a32452185a6425d9d44b43463893369514957592f519c22d2b06bdc762c519d5cb84e9a68456ac60aeae85ac6453de2bcc103e32dd509309fdc08e3b3698a193d83d62df74719703bb5f8cc5db7b88b80110d74d6949d00469b840ff7fabdd4c0cec1a097a6117c28046b06b82c8ee8204296428ab703840acf7f3333d742726b114d3292b3154b2c4095b6d465657ec0780c488a0c60443717109363c45777271955135e60b46104bc18bac09a18690b37c8078a22645532112b1dd09313b9a25b7094700639775f89b8d0314eef0186adf7ceabac36cc9292c270717f27caea51b1afe1cfe6b6a1cb1a7da53c6715c9c9b2694bd5a581b733ad4841b229fb7a17bc213b969935c672d0993a94ec170bdc8b7c800e66bc6514f84fbc81c7d1c9417b79a82e5b3980acc792a19c46d13a2e75a3af791beb401f7555793d94c0ee1b9e98a5b6c52777e537bfb287268ca9524a4438ad87a0e85279e474c5be7740b7867d8b04781a2436a8d343f62274e236c736dc3c59d5b326563b9c86798ab14a6c9a0e67b36db89a82af690da7016418ba2d6c435e39095bb81a0e49c01a73a31ec9159844d1a3eb233d16b932919421e6a342473a71de629477183e8f34b2b7c8abb7a3b6e516107cb5229d780b93417f9bc94c38bcaa58f34dd88835308c742875cccf4928122199cd932148f48a94c5c2252295890bb4645761d3c2c0f33ab3e1021aa56b573e9c6fdac37c83f678b97148ce573a244b0487f3cf771bc7b6a13fe53a6ba58854b87a67a6a17d6a301c85f7c061071b4ddb27b3f404dc402ebacb8254a0568d48b2d299bd831188886a65aea5cd8d987f6017a2f4392f455c2b4f9b63e6cc1a27ea38f2588b0f8086d7a5c5e4b05b76d2b8918820cb8851704ca6d730861b512fefb0a76b61401e23b01ea710c5e3b73fa716dfa6408a635423c61372592dbf174d6d811eef7c4d885bca5fe669233a141e43810ad10235cb59f824728bd7acf17765bcd354a493aa60438f07d266d728b640cb07d50275bc2605fa6c964614b2c8143b37b184f3c30668662149bc18c6038706c12f0d31b896b69a7d588d0004497e4808d8c12253987f000168ea758a5b32c195f03f23a07c5a546a6607084cf79e073bc6cc1cb372e385ca827c490a42d900035bf735c6242031b8332bc57765ecce4792706f1cba0c7cc390e7bd3595ab876c4e397c58fc325c9607b0ee39692c31730eb4744e967e7ff8139fd1a545622ec870516b2925628ba782cac845b2429c3cc0ebf7747f414e8d35cd4a91c959d2276404a5df4790f4363104e6a0d1d60a48b65bbd92b417b51a5338cebe36c0f218bf27968c05d99947e9b44b4b5b2934c538f85cd7c8b9e3c31637e14c5c0279cdd6386e20ca89a53671fb2f04249565491ac2f900ad380d1a68b67693b185f26a232aa1b43503398002085713ca4b2f94cbcf6e837b020404b7f519a2b520f93b901943c918393f26061346a0193ce9ba8a48b5c4b01b0efa231eba0528c5b38cd32cd5d22586494734fa746b411759303a51a12ec58b03fc99a1edfb1cb01375032054878a6ec9dc4425945aae387e7fc6cd399c90049854cf51b3db690eb78a0a2db04d05102dacaa9834620aba427b5733bf1d1693643c88bd265af0280ecc66344b81129c491b3998c6c70ccf03257c2d06115b72aec35b4c8774cc7936c578b29fb3b0a5c66709363b73f41b08db919cbe57ad817cbb5df62b7836af6ff4ab8cbb07c9fcb7e3d601b2117e6a7242abb24ea96ca867b597e9e9b45c01aba9b54d2d323df8b38d3d37b72c2790e1041037355f274cceac2714a92955b31c55d4903a85bca55b2bc22c536aab22557d912fe2234423e7bc0894bb5f846a2dbc4a0dbb11c51840059ec11bf6cefa3ab473e1cb0f0bd17ee0bc3c59175eb63c3144108548720ce7ee0f43a9ff3f52a9924efe9f2f59318bb93c86b5e15274a8e2bc08fe818b117ba28c5dfae74d54fcdf6f20052f79be333edc8dde +ciphertext = 1bd710a00c224ca78beb7e27c43a7541a1618fa3dc2615317cc4aa233e6169785f2b722e6e1c73d77d8ed134a6d56e3cebde5fd64b5a7b6030bdfa7a9c95960ff5d2c0cde027a437f272311bf4e79c00be9b0700aedc165d911ce9e3b7c75d9b4c6230e734c9d1d6b9a835da5d666cdc8c129f4cfa5b640bea9c1da52aecd5272e65d80f1e53d261cf0913ba405eb4019e0f9a54e99239fd8e247ab5db67d062cb3cad1d6e2ec8c0c8f13bf2db8a1596e16966e68454c10b9fa416441d15113da81165f2813a727b7a6b3f598311405b7051532dec40035ad088a5c598e104ef624a06a98f58f28f7fd22ad53d6b54d26449fb289d0fb6c42e6f5039eaab0fd650b627c62a57228119920435aa41190d51418896932e338c9dde3b0e532fdeffd03551d0e039940134695412f2e81a99c73094fbbf9b03335155ab2ed25f0a96d73fdc08b04fbc32a2e5486110997f25a7308d33aa8c051d3e6aa887b7fc5294ce8c4a91812c41fa6160e37f928d9e6e10ad719f3dd7ae18f6444b9645991a1ae8e2d7f284a96e652a7f40d7f132e681f6da4f4041ed9ce41de22f879ed09fb765bccd340345095642a07bbfb8d8d1854c1107200e0288da6790603dff76906b44365c16a3d05e5de2a22c3414ae3e2033218e918edd9b1c3275927df7e771d7b5b1c5e07953f3a30da668b3ed6d408b709791fd5ede9328561ec40123606673a22d496e6ddf6e5ee838a47528f44efbeb9718e4872fc6c63d8c9860ba2c1689958b77cbe94057b6779021b039e4c18de0b75702b2d9c7123a2e281b979b22d1e476e6941b82786355ebb6a76f8ead17349c1e5d779b494d0b7e0153e56e967cd4f5cc5b0f136cbfa965d323998ebfb73ab2563a62bd222f9d4113c16accce74ea94468e0d721fa7f5019c1f9d31439560a5bd93a071f696dec1d0f52f4d671767cf4e25cfc46f4eb5f6d67fa40951ba31ee8aff31eca1a7787c90a4ac7667bcdd66a220e2c69df7b7ec49f7d6d8558da91c4a05dfea6da06d774a420ada78866c2d5cdcf526dcd2738a27fbf2df61322fa7e8964da5b634c7bf19985dfe77a1e0683844b101242b641e7d0913b37bbf9d3f2bf3519c8ce95e917126a7f72a8c49daf48d4bbe37e9cccc9ee4fec24f47bb2bcf661e6c0dc9b2b1753d929430cf923117990e0f22b43a74854a2b3fa62d3618faee0b877061317128ec4553f74bef2633d847141ae3b0b2dae44605b97fd159532cfec972103342b21e6edbfa9f03f483a67c45cfa31d338a668870a26b34023004ddb2246dcecaebdb2305aa4b178c4ed57fb0e1b33fbe37f3246be553b68c240ae8e54b7d36fa4bdd0a0f7602745e2885c7a85832320815eecd846a08c0974a2a35542373092dcc4f7fbeaf61092c43b25616a876ff66d9a2f458955056972c5a7460a4ba22fbf65680ada0d1c9664e5747740c4fe921e2c5671d9c6e30374217578c769c3a8f089c5ccc9f3d19eea5389db458ca87f03087006cefa7f3669753fe6fb712073d267d18bffe82 +expected_result = pass +expected_shared_secret = c184e0b019c2db772e2c1ca6f97f47478d99cf0c4c5ae1406f51d15815022123 + +comment = Official test vector 92, seed: "a28ead0a08e7228aeff602b16a1e752278b8ed1e91dac67994f5adc372e1d82f95cc390cd97ab9212275e0566c833fd8" +private_key = eeeb8866b17cda12a45fcc6f9d05afd103835147647a7301ee071366398473c8103ab3b064e340f4f9866190acede02473fb49635bc38debcff0f34c5175ae0ec025aaf19cccd46d658c2a6ba62b50d1452b09c21b430ee9a3ce05d36a8e1aab2bf0185f35664b4999cc8c0df049c01056af6aacb025708c184534f1172b28fcc94aac2fb7012e20443f11f43478e7b1dd8a5c7d9b5a8818c0d2259c7f710f51003777b060f8db5fe06c3520d35e97f6b5792b0ac3304349387b637686cac1a6e45149173041fd7c3cfff5a398ba832dba04dd7179d0768122a701f4e0bfa48149ff140e2978a723fb985b939458b081e1068ee5102e5f540365e6accbb8c28db84125b21e8d04622412c2f075cb57019eb828616caa245a8b099a01bd86268cf491823e440e984335af59924fac1d43263af725895c717e827532d35c7da9ac1420b46aef13c9f33a427bb5a1bc646f7b54a21760527d303bacb2a21aa39c5577bcd5f416f126741fba9c2cf9401ec20a14e9a7bb927cc8135bbb0c3180696093289f4b19539c58655b8698a5d1339c9490be7c04ad3311fd422045a5027b203407cb5755462c21ac51f523389e803f30e12fa9c0aa7b4a1fdd85c66989af558cba916c9a037ac7de1a3f7f1b5bd3208fb6f28661696ad0db88d10a3b224a5bb5c99ccc96820e153e478ac579c65bec5a3d4b85aff1c4af5bb222e7aaaf9e9149afd11ea5e86990913d2b543913942d148639d9815d4a8908362a84bfb6ad20b8acf9596df4187009e7b773070450010744712f9e7a9b8e9624e3e2b1d6140a9e4789775abcbd2657aa487740314ea1e446db5c09746accaee29783b23ebfb255ba5c9706f1254703c676ea09801762e9fa45d858732ae7218b37107b3708eaba05d2c035fd447ceba46ee446aa324bc184e7b929f7513c16bfde5c5e55c05e6b5041552c17dd223af273cbbf65a44b4b6dabd51b341464a9993effd671481592c5a655d116b963975006b13503baae38332248f58656620098f42f97a813dfc7b4df880e5e783af5d833b89079474040ac05a6a7ec5e9ec1bdb282443c736514514f1cb7455958608a62503428464d89c66b209c417445416a54aa66234b1a5bf1c0c3f7064b6d0a7243e170b6acb01c033c5b1670a3ba6801024c03b24cc1786025fbc56bf04f3b241e4be701c9764938695bea4316adb6abacfb44f2041d2c29bb867379374b211e990f194b872a7b684a212dc179a4add943aabb1e6beb93f5cb100fe342d0781aa80989406571d1b79d08e31ae15b81740a22df02270f920ebfaa3c9d74392cd64e71f363df221134e9be32b6b855fb76e15b5c91cc6c3f750aeed71071a0803987ca7f35882ac31413a6001a6023c0a183961722b6ebba16f5577d95bea2c5ab446ac8e57acc96281a07599a8d335c2c12388bb0cb9f8633cd2251c8a7563b396072d0cf6e7b8e3af2192e5731341214c30708e128914c124973e759d4221f1735386b874905220c41fc731a22b9c665cef0cc5353b799399905f0acb549f13c6fa56fae2907d0353ff2054accec40310a2c4b62aac3f392b014ba88fc90eb868693eac83516336baa601f600518fc820bc8b0e76c66dbf001bfa28b07e21adc142c75111b9785aa2109a795ab792de4cb7b6298a504200f8850d32cc44e54182761a1c9c9ba591a9fa6873a61025515b068099bb1e63751c5b887d283077f86b733e4344d13310ce12d22322f254a0e92779a87067d19c53c70dbb927e14e1f2892b5273949428eb4c70c49da8aa7fb87048961db4892a6f89f18f0bb69347b9575025a964047ac7bd2c7472838383a6072f8338b23aa07d6b7b221e18d4e3c62641916106694315a2fc5bb88c6d664667680df556c3c046398a88328421f32ecb758bc64cf246815a25922021dcb67c995fc72cc6b46bf5ca9ef3998535ac5cfab70aa54318f9532dcd138a4c03e2ff5024c52bb486ba7665b27610b822975c412331ed6c98e66721daa1897936371113a4f17d96ea735a5cdc019809c3907c03fa950c00eba9dffc69a902151a39163f2931e1c0271d491562e0a87fdf7b7846c31151017ef08727dfb68f22a8585295659ea358cc1b85c9ab4d107413225b8259804b31850eb347e1fd37f5435617a7a07b15321cc204b1a6b7c30d67e91c088a458bef5cb704e6b662189a9c0079e224a94e21502c0f1a4dff6028ef6645cba38c0c86eaf673e9b2613620bc216914a9781645fc48e33cb9ea06182637439f1d1a19fa50cfd3b5e2cb8310229b74ecbaead4b079d535521b8587a2995fa9b8c6694be6e432343c97c16ca23bf53883e23cc38f10c38e54f5639b9fc0943a4f41cd0acc8db40cb12e644cb74b9d4b858f7d6767830b92381a42368476cf2602adb9ed08b35ff5c4d1ea93c94aa75e218779825401d859902d19822e9820d86c7e57562795b89cda97eba773070bbc502884a6f437d7ea7a459c0764cd943e0b6a5b61b8358530459685e2842ae9ab867fa712172207e692a7affa872323779087547c3d8b89f368ce078acecd55aafd5305371a5bef24fb255211b2169f4543927c845a3049f7a88513a682303960c2d12bc277656f15738c4368deb70cff2a32a1d179f4fdca57812cedb21b356e0aa63270788b510e58b4bf613473fe931dc80a9cb8bafe63aaac3913936c8a939c413cca10a1277409250b5da321ee5c24ad3d093c1c7095fba34b81380e5da561bc039e3a8c15ff3982a7938bc16446a3ab2679a50c2e5c1d1a08127db4cea30340b5589b2327988c97b78f003d1315dacb301520a11f9f0b4fb33ce7c0203ff11c6a66136c0aab83928c145f4b968783b131281f2153925dc13ad133fcc5247b595cef0f03ff0da0a429c0de9a54f66c03f1a616c7210b7ed3624fdd27e99f38472867a9283c6b294b0d7014cf9eb62f0d7b051b190f093450453c056081370b45f5ebc4c03808fbb5c6d8b659bd22612c2872de9034b11c6aa6d356b2baccea0f909da0c775969c12fd5bb0c8a9bed5172a9358e01c29d308636b5d668f5b2c9def1380ba23b5c84259d887d3dc4882702b41d99c72c800dd5b19935d7722610741a105c1d227c38c5665cd5a6daaa991a9868499830c1697fa430bf4f95b03004126fac283a167281e4b847eba8487b0032914edb0b67b1e320c25bab50499378115cb07a9000e0156c9c93c1d90693b9c22623a3eb15618fa1c470481c4cf292b7462410d057c2e5851e08e31fd88af2f84b0cf79a88de834c1f17c7a5fa17d329caa09bc32a138a2fb5b6072464172abe0fd97e9eabf357c3fa5391d94a415b53abd381c38c2cb5cfafac81b96a810ab749b61806b6d54c9f8cf4bf1be0192423288f +ciphertext = 56faf8ba810d4962b71cf915ffbb0c4dc4fadbcedfb4d7778d70d364c15a803aa91866c8b086db348f84680b08f13c45d0b154b68e5b355b43e277a6457b3d304f01b5dad75324aeac512ab2aa2864129a10fb287e12fba81843ee33def6c12dd9e4b29c170592a907d3350850a55addcbe92affc8515287f73e4fca3199e536d0c2e2b74dd92ce862c3f302621689d666b8dee9fcf90b4721818cefc3776f9b1195cefebc7a45d6088b3b588ce4275d32685d1c06f0065079c8a73dd8d8e7120907a141f189ffd63b2b7568975a21c90b0cc69f2120bc94e5ed04b8c3628aa1fc7d494a2b8119f939afab0e5e99ad377661b04e85ba80a62e7468ac3e90e4dbd11c196fa678d3246d69928a20e4b9d6bb0c3fda5d33b4ee8b8e8e7c651bde38a9918f9131f60f4ec5b5c340ae3e64b39a1c507b77ced606ef9b93246a204dcc5363ab0302726bc94daad4214807f33103c7a7c57b460f432b8556b54953e6beab1a116b6b73d38bf54758e65a236ba13f10c8abb4345f336660b215d9e43209f8b85363342a930d8d9f229765258bea0d520d6d9710149b26cbbb1929fee006a63de21194cfb90c32deb5c402743c4d6643548e82071ecfe64e6d0a5f333bbfc7eec513a7e4bb5f16f563de4f45df83d220b8df76ef10c750b90f48e18a9fb7727dd64093dfe9fb6c381f7e19189200a53efd6e1d4d534bd3ceebbd3021e9410485465adae7340cb599a987f6792d9c8d675a12debdc06bff40572eab9ba1d405204b6fb7f87c5fedd49603bc743082cb3752e8893ae720668481487e86160d590422f6bdd3ac742081e3ae4fa0c145c795281f0f61cefc18e79fdaaa2d0d6cbb06cc0e4b9e7b3c0c3b02d2d6a9efc4b61f0156d510ff5effdd8fb74b32acc81d31dc38abf0211ae1ae1669f2d7753d209e00d9774434291a105695c9e618800cd518591b1facd18ccd4939b51a410c1b3c0e3503a0d5edaaf37b0b4d55e33aab5ff93ba38fc1ae300d42f1983cf3367b0a300817cb79fedbbda6132e2fe9f815f5f88442ab6d01d0eecb7d8185762d30fdd94978865dcba58a6601f407e1b3ee3c3fddd40439a47ae414aa37410faf9e10d6b661d452b38a1091781f3cb0c7236be1ee528f174c58397fec391f7c02a0627879e943e317a8cc075213218354c81e73bfb9f7c8f95e2953872d42603c844304ff42cbe05da1bcb1880a3d2d5858f79390ca5f60bac06968c5c0b9e159d5c49677f0c8313701579cd2fa921e4e4fed73622a7e783a9542653e000e530144a60622d79a804ff48cb933f84599b5183e6cb93e257de282e386f6b211f093e37c3c2a43247c1e6d97686a5c46d02a5e8c9fbf611f4a0a308f15106e9561e8c5a2b1c78c45ab0d4440972dc28a6d92b5786d5652190bd8f5460ea8d0dea988162fabfe7597a5deaa75e3ad2de1d2172d3147d3332f3160361b41ee990d5a89b4b2d27e97b2d21fcbb3fe26e04672366bb03c34cf5ac6975219297d3d299ce5852c6e63a7dbf632cb14078f31621ee4 +expected_result = pass +expected_shared_secret = 6d72e23c8a4cc60b2f14adc788a5c480033bbf6eb111070912bc83ad7b89280b + +comment = Official test vector 93, seed: "92877d706daf88ef3412eb143db8cd91bc047a9a43b7acdaa42523560dee4c172697be4332042fcab91135839bf74ab2" +private_key = b27ca8d40a1cf8aac1a62553ff541ef56b4b4e352e38c0ae8c2cb2240c2d2525adc52b1953a1c239e3add71b5f7693196875babf8b31edc528f3b320e6569997639f1c9b5279c38d5ddb3b691b0228ac4480d45077db55bac24285c5820c49be25632c4aaaa23ed84e10a1256d9cca9b584d423a9fd37276cbfc5953c9284a4097bf71706069ac413ab857c64ebd179eb75496170778afd74180d877c9d69e1956450b1289948323f64227960a0b24b442e78c551c5b35e89b34b018b80bd094f7594365195f44c05bacbb2e0a976a86559bd6b23d220b5c900375c6b188fb353c3b064ced669bee6751d5d22659eb89900a92b7ba84eab58b7e95cb8495191ca0491ef75a3abb9469a7939796c2f8c15ca22283235852b0a96daec403c5c057b5ac91d09cb16e01bb0d078170e0ce9596b913e953c5aa67bd8a2ff20c0261ca814f334244886daa0694368293fd858e14e23d13e66ac89a58867574804786c4c48d2fc003336c002a7776217acfe7084588455a0a85b8aa51c33e99b1cdb75541855577911db00475df42168e7a21efe57402303dfe37ab5bf10200395550a1639da2aa8e358748ec38946bbd3dfc27deb08f4f017abe33a2df3b9b96cac0e8c261e487cfff31a1484ca5e04036797cb4fc87ae6cc72f9ec0835ae2b160b425acfa8b75236d92870e4d43bfa7ea5c98827f95db6dd4200068650e3d8812de827c3f660cf8049933daa52793ac10f57ad8f2a7445927ca6022d5a485f9424662a175b2a6349b248aaf4853be709d42228c3ce3b13990794b9698869842b81649cbd9482c2435886441ed9a7927384371d02005a514717abec398bd183b321134a4de85a1fc9b72f7268ccafbae289c15dcec18bc26b81ec43c6b8a3919625165617d60c33f1e6b04cd5492414a15bbca5ce84284557c9cb481a951fa5df2e444e2c20969f38284e60ff15b0ee707115880bc6d3834230c7d22c7cd69229d1eea957f58b2d47b11ca97c926070cf1c1934ef83f5a26241c7c73959c8a0501c2c1c70671987243635fea56ce6ee292b1d6aa26c4cddfaa1751520fc3218e7e20c13c6a1df4835c7d6c0ba45923ceb2ab40fa7fe3732e47ab652309cdf28091d8d86308b73f90d86995220acdd9c544c95fcd24a77e7c90f2f15e52aab595e11b1ac0799a3ca95e0644771420aedc777a9048fa89ce94780c8f2b903548bd46a2c22e453b68736f5cca6c35ebb027c0c7035678f7f69a9ca02fbb4b23746759660251f6757be3aa1767d7280aa75b60a7a0cc892f70f67cda886cfcabb451a36023c688d7ab5e0a3b5bc88514ced3597a594d0e28c7aa25859e57be9fb12691c047a8a7373fe1695ae742027a8f5630cb2776721815742c66a4ba0c7e7e8b8281144b80288cc7296bfc8625a2cb995b548d48294b2fbca97d375b91203392cc27fe835f62db97b14739f6c8b1880a53ddd388e2636f866416817a110258a098d9af4458a64c68654e97099746b9b9e23adab5653970c00719b54e4a2d2092cd7bd62ad9317357e35224184a4e24b4a58014f666b33e1530365070b73aa6da432d04f2588f34ac1cb3b3f7fb4ab200b459966fafc689cc40adad0c26108859a2943e2df84a0272c13da5a495942ba848ac92d302a98a3e55937b8b1b49fe588be32a540ec90b5cebbd90d1b80dd24d32eb85fc041a7ca307e522b8c5fa9c85bc258c8abb9f2678d29569f313a1e660a2454730261a6766945ce42c140e5181c68461eaf12d1f185c358233b9bb4902fc5089f851bac83ce3f07bd7b185ef08626d7029129703334084375bc5ba27ba023ca6722319a916baad529715661e3a413c8137cbbb206e313906df1ca77cba73e5499f54fc53047741af2341d5623278f76131ab47af10bb4dea8f493b6c0e4829ecf4c425a46d21755e93e5a80d0a927739848695be93444a98a45d02d1131e493da5a0a1117b41d4ab3db35a7a2e95c6055ba70ef159e7aa0dd5452598f91477087bef1396acd48e747b962205af92eb99faa809b4bc47eb93bfd3860102d4adcbfc39be80024550656c42785a6788c7a851b107823a02a3daa4caf25097f1f9afb29416dbb360c4a824e3ca2a30e19f94b805de181d0a028e685c378dcc225112899a6b79869109ca4b094909b21042c179c6cdeb22564cfb6f89135022fca3028caf7abab19a4045dd5a60721c6bb47ac53e40cd932511f2e5473d3b4ceeb44be1a00e090a886d345b13a58620c49ca0893f23058412054ae5069c1014361cfb0379c2215f330abc647114a3c597765fd014c64c8c1b1b45b3bd02be9d5a55b0cacfce297581fb48fe0256f4c0cfc84aae1c542f36730e5f10795c72157c653210686801210418b549a7398ca8b7c70ed007cb153d2a55178ae23a5b095ee2d116b9f3a1a9f19faec40d75256cdf76ab8e393210d3afae375a7bc384799a6efc5b76f287499c6701368b8ddc219a9f2295e6e01d22c4a50bd08179a08044b702ffd786faa088f867b63b951a92751cb0f839cd554a83745444c3bb88d3609a9a4bc2e0bc73108a71cc7534217872539bd6e942cd36a09aa0374a3894d279a1f7c38a56e7c0298948c330b8c3a5b6aec3bbdbb87384677ada78017564a7fe40c2983a9ed3acbce5e29e3a78502952a9540a44975572a1512b1d4284d9bb528e538f43a15216f4b4f2a5208e06c43896a19c416c99c3b677564975948468792edb6532f9b0567f407fc6d6c302766c6d1373bf78a18896188cf20ccec39632269f6a193de5ec5dca85cad6bc79023c691d5682643b6f314827e0b24539e2aa91123b3fe42308f041dfb6c876d079d60a3ef5735ab8a36abae34f4a12729be4a00f753c7e4699572375e6c7b037948684206c08a27ec12b26f7349cdacc3559ac29d5cbc35c310870597e391ac4e4c02991096f37492083bc1c43304bc3d5925843622494c735942dac8904cf195387eccdcfcc8a999b6d1b744a542359e6b167f91022be1660bbd218a6a6861aa17c57152552172f38b43d5281956caa77daf9b94cf60cbf08cd9d9b4c1edb6c4a17bae3b36800891910c280c3e7cbf4aa11f33a7c70e3b419c2b2b9a64709c31878f913fb934d77b4c36e329ba98b44f394631e0a289042061f527d67446d6ab55ce7b43ee1080fbae67085a2a03b36cc9ad9b5b546156c3c5a79b092a67912a19575f6b5546397c15ae334b451c3d919422f28b70727c75fb631a2ab012bd5971b5b2b75f80e14bec0494baeae3c7ae947bd69827e1fb86388052c3bf3f8b4cd25a5687ef43a72ef04766f1e899d25c9a005009c788b5faf985123cfb3fb97975de26dc06c5bef7b6508409daf847a64c8d30d0974fd3ba7476dc76c46b458a036d884 +ciphertext = 4894d82e0c293e45df99ede632043a85e6054b1611e5559a4cef6e13de2f1a4900f0765b01da4ccbcb823fd715242eaef76bfca91fe70349bc1c24b265a0d3c8294e1dbc274fdf5e0e14194c418f5ebcaa17e602986608b1a7456713cca5e121389169a056d1ff870c6f23d44c96c2afa779fefc28a9439a6f17a28c76c80b83f54916db504d15c3d871e9c31da20d957a71fd5553c7b2478859124f74a5bb62891586d6641cad19be57b806e59ef42790ab89a0ece8ddcaa718e965c7cb91f7b2e7e8bda3db23a4f7281d0ec15a6455775705d00a6cd2a6a900e4cf6f584163990c211a49da061c2174444d3794e76fe271e7dd01e580a2dc34c5feefb118fec7bbe3d28505d39713b985a5d8391589ca29f68834db1f5acb42bdc6ddc7fef72b0528c6aef837ba5ddbfa47638cef78adbfedbb93104a8a8ca1d121038bcc3cd29128b8cd93a69872d21b00f64e0c6f64e970d0d5454f08785af96a7f3df920852456b51d1c6559be74ae8b902f499e4f47bf65916cebc9b092939b3fac9097fc29e33d9c60e511763c7d48d05e30db42845c102ecf542b2296fd448b4adb8cf6f3a2b1ecf59477357feea532f41013f6f8494cef0ffeba1c7e88dc31f3a80e110060f9363638aa577f97d56554a9cb48ccefcbdf211665ef0d19c0e5667d4970e46b3a122fd9feb6369ea20dd39bae8ebed4f2ebe7bb388b2c38abff8010403ce5c63a9ce090b2ac371587353fa892cb221a6f104c58c0f24d5071a1a3f2fe15e0936de0853230b8a8ca393182276641286fc393264b4032ca117ccac3b8ab44660213cb645b0a91ef6f40227f13ed27c79cce843569a5e6fe0ac49d1aea0508902f33e3b4a4ea6a54c6e0baf40315291a367950b6bd7efa92d1051c135de04f5e2f041273db77ccc0b6d99886a88acf4848f5c235534ee1503afb3152dbff0fbf85d36aa8854c84c9b4403bab1cec6de2bf0682dead6a5aa800338aca87b7d2627d26bd842ee17effdbdfe3fa6df0db28ef11f01b0a93fda3edb75fcaa9921068a4c1e7d96d99864ddce1eea3f4707abb56bc7a8ea6519462209ace4535f2e119d37e24746e9fd3b56c078f01492b3f800ae10dc633d0f64f106dac5c60d928cd3e15097b92c99a5163ba27d5b0961cfdfb49aad6acb76e8d3c09ae9c3b093e887d1ff0f79ebf6cc2f1377bddb95a2269d18781a4e046fc5a9d13b366906edbd308b546d7584c9533615857680a22dd7865644d8c62d27f5585c1f8699762f86fa3f64662e77157793a33f4babdcc657af6de6267ee3afa991c510be7af8a0aa0b154d78646f0e5df267c9a7b0e46dbcbb02fee8f3c53b2f5388f01674c21dee845450f659bc7fe4776d515a99f248df58bc24819857d672dd2e83d84ef05476ea6cba94b0587d85ddf6214873fcb332b98c087666bccbc8df96687649700471eab9ae063bd544349c5d39e1d43363802d8fe6286401b2ccdea2408280bc53e0087f9905f13c3847ec2687897375c8ddf9de7aeb115b712fc8a7ae189b661 +expected_result = pass +expected_shared_secret = 29e6b1edac0a9aa33066c113167e42c64d70215ed04963d8be2d4c2dcd0f6589 + +comment = Official test vector 94, seed: "bb4c0082ca4044b1ff60b036c9b0e0495d58667156786c530bc69d949a13bfaff53798e456423d7a0e162a60039367d7" +private_key = 2735bc066a2488726c89432e56452acb24a2a5407522988c0732ce072128c8d5147c42988f94a8516c77873858394a2bef65b87741c5b9691b6db84e3b1b2b2f851b1305832e4210e5d05710a5bb7195b8bee0cba9b5ba21ba57b962a280565aabe1c9015635cf1a7121a8581fa0a78ab26fc82838b6a405c6fa5d46469136cccc34930664240915ba5c86e67ed9e73f4b123233c92d73bc05408005dcd6cfd62635c3026c990753c55ca8dd385a29b1c79fdb97c0b4cc8f26b28ba573b5194d6bcc065f5b97df702009c43a65eccf452447af91200ef68f18cac25e5c71e62a39fd7a26c6b64b47e29d1e4084801599aba838a3808ed83454b506965507cc6d0b34bb139300d1014168a79d5707c74bbc7b980461249fc31734dc384c9dac4ea6eb4701402084719593b62aae53c8d55719945975cfd25bff31c886640fec37cab3942676c840a453c6751caf16a4743495bcde6528a942a47e7c2d6499b2a872a76e928ef4b0aabbb21604f33231235a7cb47c96d9c976a2aad533a06a24024ad0925007984d99aba3aa8168a8ac92f662348686f756bdc1a23f8537545d13ae9f657caa801788c9368864a05f40af22e33e10705741f06ef577cade6ccbf1d01065565a5b13284690bf611093e45684d6c69fc0f548af852248db6a6e86a2a907c95ce0053fd942a92b024dd18803474b03f73fc022912257454c008d137c5e8404379db2719581af17108a03f58dea58892912c5fab701d28ca845068761f6bab69bbb75584f7d289dd921ab30379248c91106a784738b17cf0044418bb9ce34bcd913bb26d04ca04896109a255a39beba1a2b58490862409e473ca623933ac14c90f64cc74af396c3186917061b5c8c28f3e8b694535fc2c73af9843031c19166d2c8a3a76a2aba45eca36321ba367bd5b176b5c7b8d7b7192c95cf2803e2c3ca5d585c4ea63009c7b850f08759c278f1027c59499526a8b2e494203197a9304022fa0c4e47a3a6fbd8bc59a7c1312a6d19d3063e8078b1a1bff964af48151e4cd3cd87f49bbbe01afa3a5bf46a7f9bc97de729285af35a6a9168683658ee37ba6d9499cbaa8cb44c93beb287ef7cc7b1eb6491154c14fc2027ab49316b70b8237a546090c9687cc70cbfb82208a7f61f63aac1a42961568407343a050b1048967c5334f3542860249ff9c2fac8639ef8c125d0b9fd537fca93c1006a77499658c0286267b910c10b12a6136152bcbc03e782c41b1fe94a000cd974a3a9ade3a3b8b4bb8ed8b403683ab4ea3b84b84c4825f61f99d72eacd894337523c6b6af765bcc99393213938d66b18b2b168d6c73c2eacc42ad22255cd3ac6d75200111c0a6076f02f906b1c96213e80310b8752b1b619e72366f9a0ba4283520333ebf8693f93a7fd6c3560058a8d16cb50b585b3d519e4263b050259a9a0a8823e3cadcd0b81c1ca53820323a9539133c68b0a6cac1fc834b808d9375431f961fe3233c49fc9e88ea1ed0a068a271b502c0a0376a1309f86013b4947bb671c1b048c0905c8ce16d8035c7c05b9cb8755c7d7b6db2907dacc5a91b61b666837f209075e8ac5b86444b49ac878f9b2e18d42e0f791ab7cb7c973ca8e0437f158889fed53d194419c06b92e51498ac2601869a1024eb0370ca3a420c48a765a5b99bab88a759251cb83259a628603c54a831ac0147f3a97b8329474258b7bd6067476605a2b2b8311252fe54565c865e2dd96ea9e43b23121c27ab02c348310acc38d9d583b0d8105dc87896c238069c689027910f9bcb5d29aeebf57c2b9c78f76866768c0699c6bf743c0b43108c128a5277f39b32c351926369fb8754cd0197eb9ab602f391c4ba564be2c3423005266229a10b21d31a7cc3d40c2e7192cb6628afa692d3e75aace66e7bb1169893c8ee45bda5560e7f79c711d32d52c0c783eb40bf8977c3063cb114b6368a8d1486a86cb108d146a648e080751440f4d8087116701987c328d8547d0573f8c03d321ac07138a60954297cd832dfb989fd99aba8b213e7501cb3d25b384c023f66776efa3ad4981037a54400729634a782adfc24404bbb4f2405a27a8500cd79e8521daee48848e485f53a28de91089d849ebfb54d97d0cfb3cba46a27438f426eea1a0122f2180630864ae46cc5f3a828725cae89331d540b5b3633eebc0228000d75908f21277104d7816f56854c3289ad1a5c72c1655830089cfb9c90b1306724cb2828be679b989a3565758b058ae983c1ea9b71f10553795537d454eed50f50a40274592ae165c846d85527e479e3fa8d8865047bf68d200287c0a5b8a6a78c4769bb3a795979b774713a522dbb723f3628f2f4126b639e3b4c5c4b076d321a208a123d82852aa0db6ff8457e745b6b710b396c8106e635a379e22c59f17df7b7070eaab38d5448e4ab67e6b21078d5b9f9979c6d7365cd1423cef6b4c2b186ac6b792ef9351b6040f423ca22e7a1455a0473273e3b53b92a132d7c44556477907fb41f981a06cac9beeb9655fe90c4fe93cc33337d78294f7c128ffee82b0d4211e550342c599c9932a201f3cb8bb253a0559fd667a3d2cb46a4936f5cf9c4d0d105880a446066ae06841e12f259e4e6220d932633f77f9a6b463e180778d53c37e0bf423717f4d476ecab6bfbda7e461ac3cc9806ff4b38fb80c0ac9b0dcef56e9b27881d1aa0892657b12a913a8ab84037a6c78399f53816d79c6a1fb40f1ce200334a7e74760999f8a0294c3029bb23ee0cb81700b95ba20140cc5de537aca62c9808240e74d508a93263eb14b7d202a31ddc2147747192ba1f38932538241ad1db35caa40097393038957b64e716d4cb3675aa9ea46257bf55a6d1fbc2c356b020073e16ebcbddb3692515be92dba54cb62c702165c74864c3a7ce67d8af92eb78496c4e8eb78b55db7963b016a252a85e655c95936d6006bc07ba6250e458a387bd7bb43a3f5a16cd8733b66565377c1a74d5488c1a0dbfd7a6dfb474eaf29fa80aadc83267d0b98eb7a8ad3aeaba977a0a5e55b8937ab68e385f94db13fbc6c26bc23b0b8ba331a578b99b493d875f206c278a3b4f63e156fd386fc13104d6dc96ae9bb3055481b846183de71eca09273e58c466ea225b1824246c799ab8b045fb844572882299bd6f1b2787e1094bca102fb20e0a274257062385dac60f37a15b0496ed23c465a3ba46bcc0ba9b5b78c93b45cac0151687859b155ad62a8539cc6b872aeed63847ca64797460ff5f477504df1b1894fee3e6bbf8218590936e0102dce8adf459d590355576e12c0db43f39b672b2cd912f907cf76a0f6fda925eb2d205546431be0b37b204114f797c007e4061f95c7d56cfc7ee5c49e849dde3fea8f25e7876df2a18515c34 +ciphertext = 2f2b7e105dc744c34852481001d4d1eb1d0bcdef8c5845d58258f6bf6310b2edbb26de7891a00b6e217fa62ff257dcae69b6651ee5e074ddd61c8a17946d1ac239e629bc2c99a3076e97cec64c5a626cde2cd58e30192aceea1d0c743ade2914df45089b6fd8dfcce48bfd740d0bbfe76572e2619fb648c2c9abbe128d3c4154c2e95dc29e3f5a362f6e7a54c5a1c903963c5759533b9a6824eecfa1aa486c5008c3039fe220739e8fa5b135d0e68482623d46f4486e9ec5161c070a6ad330027316b5b7fa0a7d6f46c4a18460259a0185f63505442053a356cd3866e2d8652e892e9d4ac7a87e1b0beefebb3ff94751d7d82247264c6701daae5fff0860e72d7cd26596e7d6cf4e01c0e5deff512ad211e516db0a91a0104d0f693fd924702ad578d535a024a06220e24110517c0909c71bc8d1f53dddb4d1d00d87e529b02081ce5ddf7db06613e6af9fe774e81040f37b00e7408c9a6583c273bf7a742d71f14bcc5b84aab2ae54217891f9692c57494e0a13c64d1434f9c47de6677947de61b092ffab34d05488e0277b5e8c29ea908c92ae68ca9873057cf0ad0c1e7ec0f4becf830b8edf3f6a9f3f06850a3c94ee0b62a39efba961f067b2c09d6b0eb774869896924620687037d052ed339853446fe3312c676d28e5bd54f22dc080961f546767a9c683e4267d8e0b412fca766268aeb72aa35111a5eae473ee808fc143113adc424fbf120029493bd311bc6c0f5084b371f20c73dfcaf52c77cbbd39fccfa4c1b0ca5ca1e4002a891b4ca6b0197c34b3e23b001d6367208edaf9085173c81ba7d25a139c4bea5798f4d2fecbcb46261474b1fde3dea181d8b0158f18297eb0eb3eb493dbb5de70543db4e193ec0eb79aa0097729bc8cd5d93303cbfbec0b892ac9f9de71c349f651c75bd327eb8e1c1e3b9c2b6e2244693d000af2a37510adce9e542c4b455aceec3909b1d3d0775466d14e185135b7cfd3f2b5c7d6c33d4def0e55299ac30a129c79e3d66ec9edb0ad0001fb4e18327aa3428659ec4b2ea509921eeab807459c72e214977e4209b294b9c105aa88e432ad017dc2698291ab51304fa00402a6d0085626ae7462ac4e953c6d9f590c7d2593c25a90b9b212b71e4882a4dc449bacdc0a5b338c5712c3d6865ac00e9f4e059d0fb87851c77822f17875563484e3aa7310039fcee3b6e6fe6560a925a1efb23852bdecbc7bdafffafc1c769cf7f1be11185cb0a426f49bd4ebf60e52f6196ab216ccc5fa5ca40b3ac8626626de041e4e14270aab1339c562dcc40adc1de8c3e184ef9868def9f469b035c082a44764352fe03db55beba995197d04f1ffecc5cfd47b31be972de5db28137a6fd1d80a958d80b35d20c6094f36c6584646a644b9357b36cf4d307165dc8849be47363c1c1d7244d1d4bb13f143fe8978ef5089b38966ad6961f2bedb2f51d368798b0b3859a8f165edc5a02adecb9eae1ec60624d523aacd6da4f2ada45004f096a6911227d62e2b9d6ff277e34beb6d2ce6ce428311b500 +expected_result = pass +expected_shared_secret = cfd1b82181543656807880f6e2576f0b095bf84629b3367e9bdede24662ee42e + +comment = Official test vector 95, seed: "121d90e70af6204445d0deb28ac0c108262719e9fd3476aca74bbfde89faf04d8d5f89a624e8a75db80431f0d10ad28f" +private_key = a680635121c694ac4672c809bb3b913e8ca2f659c756db1d7bb2369f41ab4ac9b3f5141216f3c997b00dcde37352d46463f371fec14b26aab239498d44975f787504815552e727329dd78428f5568b912c76b572ad9b3d335a9f5bc0283c76aef8d81369a0ceb4523bdc4bb0607c29d9998962f76b217774d74a3453a61ff1f40f89a51365212f39a07e913824bf36b6dbf6c8934014dd8716e998a982b124aed8b082c3a2998708bc1c4733773b73e0be315203e8e264a032797280ca0ab023a9d81fbf0565f491837cf031e219084b640ee8710589e05e1701870bdb7bf0b0bb539a0b3ab0028447110288c1d7d83f89578413a46b0b04406657b4e7e5a6d04bbb91055becc8ab907ca9647c4b8b144045b6cabcb974a47a35308a23e9c9281c61c556ec148c9a663ad9518cea36aaec71b6995110fc01cb66b75e128478280fcd31a3416a12e28c15ba617574730437da8bdfb86b58d88c789c4f9e23adcee53b170c6a0b80033ad52cfe1a155ea1a568f5b2ef77ab74878e0ce42a1f7c3c845713d17105ab2c91b83836e11b9858a66997b22e8a67682588ca78e6b6d736298ee34b100bce61e0ad921a9f020a7032351daed655d35b3659a96b32db9e68d882fc986da904408a98c469a84cd29cc999b2b071f84c921c585b9b3233c5bedf82637bb1253a4b29b36b42b54751dc629a215656aa1890c0c56e0cb62a3c02252b771d72375a60374bf8d84552080e0d456579930b3f2a2a3b7913c031112fabacaef75bb2da5202d7671359282cb4707b52740d9ca06ab7034b48a292404d26b6cfd08c8b0da61550044069f4cf27488c028001f2c29292840b60b321de5cbdef1ca216838091c3172ed26d141c957dd93bb6a59d9e883640d87a2a85605a9730dd5333843805374b58747c7262d5a65ef442d6843deb731c943269b4a9bf00f39b4a3847840c1bf4b9907fd7b9a66c5da724cec467102f080d4d0bc519d0b2504a05f7207edce7398d009348f64267e01b0ec207780791942565aeb061bf03719d706f87953c4757a75a126ead15c6c9447c02938c3b75a58ab25ce65a5caa21898fa8050319880223899f5546e0d253df7950691b86f8e3115438c3b80cc2e7a6178a96a0f38a0cc47394be36c9b0721580d646a89b9327210d40728f4bc4adbd8b130eecccf528a5a09595f32c0f64e602f6898b8a4c82d79a8ed31c4172a7812c295c93841929b782b334490eeaa38c17cb4e77664306bc7b01726ec656e24311c51b0524c72f0745665d43073604c59ec88df6fc9ee2f2a0476079bcfb735e562f57e2b0e1987a0220c98f0b4cdebc70f93ca709c5c2fac7098a7b866662accdf09c85974d7c88ce9afb01f48276ee320d70c7c0e15950fc0775e13173b60555a470302d0a0047260e5cf85ea2f3c326968d3c308c15eb400b13bcaaa65ebf941ef59a069ba0bd3d00841b6124574303ba8c2bc9f90f107865882c18eba462f6b09eaee05796e43a8647c59c64b7a8db9c0941299280af728b872c303755b682a3ec10c5876f040543bba028e870c02a4312aee9cf2bd1302df80bd0facbd0765a778a7fa2d3a4c9675965d6799fc7bd4e28a4e2a53948790234f62ba0e473a9d639b1299251b46d07c79c0df1ceb995a968b5b707b760d8bcb120f6226ef5b742f34548902a7c73338a8cbf8d6b02a83470874b1ec5845dcfd3a4067c420f8485fae1286a23adb7373b9217c6dc173748870bfd164a16d62a3a6608f5e2b7fe78b92364a4b821967db45ae29aa1b11c0cd67cb4299b32d263aad7a26eeb3a69ba56790fd806abe3935d82487aec3205a856b4981e7f53b8f82a30d13c1b725b1418607b6619b0e8a8870bba6070e33545730182fb5f6f9938ab2ca68c50719fdb472a88384ef210b0c22785367dedfc840979ab758479506064b7971426d70af9a95e7d585dc8b67d4ffc2082bc45a4fa9b4fb9541493c3dfb88fca757eccb50f1a9cced9c046f37062e3879e13958bcf063041e858810b057680276d2ca12a307f511217fd626561587617674319382a4a00ce5e3bcfc5ecb5b3816133910650a469ac663f7a4a742ddb87c4e5be636213880c246370b1cbb8adaab6bb7e1185e1f95c945bb001a0210cf56f326b35051b8dbe85245f9bc6d973b39afb3a3b961501862b4caabd0d55693c201390f48fb7511990571985764be7373a7fc4bbd5e82b31f52494b15b6c2c8b5b593182028bd7ac7a40fb446ea756463c396de29d0fdba2569b9001e169f7c824c8a42d313a15b682bd52004867837344324e2f91a06a4c9f7ca447d6291635257cb0934e015c1937f732c1bba2c13591ccf4add16960b2303476000d984a8fc8036772c3b7c5721261387ae535129a7921a1711c98103161a95ebe16c0e0a28555dc3598cac2d701a98ca249801a4bb10379a5c29a1932acb6f6c3d040639fa98fa7297c6d453e35587488576db9bb2f9d1c37f8260cba3ba90e4b779867ad97db03ff005ecfe3470d2c25d54105ca287a9e0c039c2a2b71a1cbc6260d59a268d60c05d61202ec336cb8285b41a043bf58949df50def5937bee1af32d174e8fb463d03449ba747e92a79a1eac8ded247aa0a50821a16ad4c9f533a0fa24684d452a71df461aee15cddc2185551112682b4867c6cc27c43bf835432cca184840b85886a5d970e9f515f7f97151410c401e9baadf41ce2b8642313c295d28587a327c41c24da18967a6426663642dcf389c50892d6847718365cbbbb80723c1397b90447b197842c96a141bf6cd317bf12bb64c664fd237e886a9f793313aab15f668c91c71149c4b90b35b147f7c34b8ab6948799897855b22283050b113d64a60aac739948844a9f99c448d21c414425d77560670c298f493d891128ab1665d8141d2b1c8e67950a68255b7f9376332b1cd7c6630ac05ae7c127fa7acc35e640e94285e78661b15b21685a36c889a8cc890ce53c36ef23c2f17cbd8c31351beba827949f8707a05324abf05aa71857bcbe690405ab0030e648fcd3bfc0f2ae2c627e04f490bc3ba237059ab93085de218029f056b0f57abd342170f5b16db069073a3c16bb1c0bda5136952919b22ac477ac2489237bb0869656614e4ac248b003799c761b2ba5f2711b24a01419c88937dc4ce745acc16c796e0123a4228ec623a2a4e059b80b72beb1329c9204b6555b0a62c14df0b19b4a157bca985090b428dba8587b53ca2714b2ec2a04d306b3cd5d09045252960a068412f1bd67b83a217049d0685ec3d63d691559a327b2aae8e61b905723fa092fb95b839f6de3670c39ce0498c27b87d20c24e7f64e22e32d432b4f9f751bde0496c580a181ffed762aa35454a02d3f1f47ee0394c89c +ciphertext = de60b879b315048087f7a044acf1495002d4d8c1fe775d9f05319b141573f998398a2ec9e0a4783497271e5b3ebc33db67f59b721586c2d09e45cdbb77e59dea5f83c2e4a9e7fad83769ed0b29c89a117ff7ef7172a63dbbaeee3c1f6c6ffa92d69cd86a3e44639f718c0b3e713c17449b0ecbf674c8d84d1a33d7a96b4527c270c206c00aba5bb834930469d7dbaa5019dced9408b12774c4a36361a1d9bef01b95af6532ac982345cd45f6926017bb2189031aa64af89b83ac99db3fb349191de25ea482c88f3232d6cdbf02e445f76bc0aa19f35d178684c4715284d52ca3063e2129dbc757ddf36c3fbf08051bef13c498feddcc27591b69ba34be65231e6e4825e28e6cc626902e1ece7a4e08cf7e6f029fedab272f79c928ddc22f78113b9cb94455afbcaa7b7c9a50c1238ad2eb31adcc8a88a4c02a8fa3d90ff586f8a45251b485014a4e8f154181f5ec04f6ee3de1d7c5a0088d4ddb1e9563dbcf0f9c0f2576d87017cbc89a491317f388f06757bd8cb8a34d7125e2c66d7c00602c785104912bb52e9ef681e54425fb384cd443837338cf3f093ee407f3b5989c2d8b7477d2765c1cd97a66d46f1dad4a837389a1e09d0d4a6b56762efd058eecaa8aae088606b8543dddc23dda1bc5a4fa76c94755a7f5ee314ebd22832cdd17b05117919c07dae55aa8419ddbc9ecf4747e38a9780c2cec7e956a58687b082d7d873f5ef4258392b8713b1728a6e295eedc87cd848c3f8fe88340e2a32629a5d373512be9a46b2f6b286edfd3b9bed40c55dafae968340f711d48ebc28aeb93fbcb039714eb11d698a5c73eb3058a015a4d0e01678742a312b8b9fd2a6cf7eb26078cd4c17dcc903d4f51bba698167882912c7f7b6417d30ca0f074c628a6d5b16356c813f592e568fbfff725900a8313fc528bdf6beb60cc5b445ebba573ec49721bc9aeb6025b1295eb536f4287c88d3dbce90d5dca6b9c27a6a879f0032e01fceacd348c92832003bcac4e766888f849ea6e7636687b766ff8bc93a94a7ce3d2d2c8236ee3409404c3394e807c108c3f6e17d69fc3dd5861f95e959049545a4422957b11c65ce6cb926c3df73104d19f67589fdf09b44ff4d4cd0c7056125df52ac7952f8b6800652ca91452ceb11de8ebd09b52dc4bfe9b60559ba1547fbed198001637a4c8abb24b78964f461f910ced77c71d114fa44e7dcca920522100c8470e5699ee58338e715ea09e257f74df146e9b2083b394bab377e472b918a8e94274595ffad4f27e7660f5e29f2c292f3364b2bc758f741f11e215ed45427c5f512b7216270513524814b931f50b1b59a89752318a23b927d432b2876bdc663dc04cd30de442ab832d3e20f77ebbe261d64bf4124f64f6aec0100216f453420cf66a65d4620bdd74322fd270fa502c7f4c100c39c79edb4c6d09d065036d7cdbe0e8da3298f65408f6b010e19e3e9990f46793e32a52713991a9b88a3814a80ae52bfeca0f60388eadf5c51bdddd5853a591d56f9008e491e11710f2b722ca +expected_result = pass +expected_shared_secret = f7331b0a4674969838482b7184fa92e5246f11f5b5e284c3e179effff7eb6329 + +comment = Official test vector 96, seed: "b3ac6503206accc2a92cbc210d020a2654726911d11ce676aa04feaa08af1d20c654e4105883ae470ec3ab299075d420" +private_key = cf8293b02a9a6f579f51066bd6e51abd270104634cfd482823102f2b63b18a8bb4f45a5af4d8202523cc1779b44fd283860bd004307c399ca5d8eacade156af824a988f5ac6bb50eafa6177a95b9752c922bd6a7c4265a6a88b11d0403e47127b1e80787742669e763929483393cad6ef91f18143e9d2b7cd3e028c6f56b91768113259bcab926a082a2a6185a1bf18656448a628258e21a3c6cca23449b4f9483ae9d01bdd4bc674e06566300ad2a215809e547e2626f8d9437baa727f3f05c31e85e4d34643148981bb6a82c3c75099a33a0e7528d45303d98223e1a4ef6536170f53a0c61004beb75fa34b8aed5156e4a538269775808283cb0ba5282607d50661d2a626fac2737c98cf33050353bb83e1c1136f1c26fe48d81973eb974ab1ba4b97c95c0dee065523430cc06620debba3db92888497658bc5c64b98be65ab2a0738f0750022b95a66c583354a63865b5237fe7098d279c53f731f3fcae8689754194a7b888199b89761fd09ff75677b2c500d7359905e76357163834712659f26d0d8c9b47192404975cfb89969a77615d1a3fb404baaa54511ff1b3b08c1577eb274f5b3b0b825434e87f60d18fa73141f912701a99a7c11305000789229a144a0899685596aa646f13573eba0b54dd3205de2c60c3ca1614066474b89f2377994bd14ee0a77e1d4c0af77748c1e623cb8947a98636694c4efaf0ce2bf779c66a317989a335a0071505831471c8d845a5fa4b3e42d195074244f70578124c4c7894ab84584daec8c13a6598524c023ca99f4c0499a68aca3e6827798b10ef9a4639605e2fe8656606438274ac8ed8c87ae0a16ba3b8e5857a7f25831d8b85bc7105828575320c6baba75489455154b31e50074a313ba9ad10b747f39405544f44949dde165070c8271f1ba80e57bb5bd1320c8a1f8fb47354079532bba51282ae3197026e18c46ae6b2ab9940eaba9f1ee421592770c9a9604263a4917c825c084c3534381f22c057592dd97940adb1a439d5128cf795cdd25640fa9229220a1ce4a6624cc9956105465246334c77ffcb9907159461cb1416637d8df34ab4b401413c27b6d5a1d23331f88273222653adf9685a614bec9840355b1a23a0c4ce60b0b678affed200bcb383bec2580c89127b2870745c15570ba1cec89f5dccc47be517bb020c57959e433c11df10810d5b37aa8ab3392b3358793246f11ece238646724beb859c861463c42b5030d9a1fdba3e1d391f9ca5a99df58a7948c66fa2b50864b73a40b52dc7cff031b3a3b21009268cd5cb00a89b44c156333b802ad03b2f07f70f7c11057ce78705ab6ee43681aff0874030807412a7743399cae832f6f3b65df56ab1b30d6967379e10b4ef53b9efb5632a23b942f832a7fa22cde494b0c7393d51ac807a38af119d526a5a3b91068e107812269ec85410aa739c288c20446b68880343f2e12157094dd424a349d1523e76c0acb9c29c22b6346386b522b0466bc8a85b97430a1df80850510c4825ec4f2aab987c4a07f11693e7bbb4662a4890a3c54ebc0cbbd75ca468428e38276e81c43d81a8d0e3bdbebac9aeb89fc9d7870bb88c5c16a137c41fee75640774c4b536bb1d7bbce797844d960c98359f5719b20dca6d1e2916f2829e73f79b55b468170b64f2f8b0c788796801c8ec244e1973c7e033b768414c55d43079b2711bda630e678b184a70dd161c4dabbcb91c07fb634620d1450664a444e82d22a0a4f54ac6c7c02d74120b2ce205fe49a139b9c8194341f4295ef126b37f3b22e35792a8853b60eb3f7ed01314491c4451470870a5ea5b1d23442019bc1def547fb8935ecbeba0833228b8d7bf2a4aca52436a3f993f6164666ebb3c38317bf5b48cc7182c00d58d4a095d0fd4c60e4229e77803c4f38f22464c7a4259e45ac71e8ccde6e5738dcc798777317f9847f8357dce21b24ae462d0465f1d58203f3b8590d88deb9c6df4722a1420a9ea0813ec3777a6cb11ca0271292b6c662a870c292291164004299c82442a8dd5404e74cfbcb45175237ae5649f7136cb47b9c6c053203f265bab420eee2c95a5960f8a87c3333785e1b89ff841a6aa5aa964f3a853e512acabb60e29c3a4810df33830134c0e49bc5e1ba41b07b671e1ba6bfda82576406e6da854920a46914c8ea986b1d6a0328d4a450fc0ce698b9d16954aaa0c52b6f2b5ff7b5347e84c3af403e9b31ec180238cd5af96f5c6f0d3644ab51717f7255ad6551f44378294778937cc56b610680704bfb37e3ccc07c5276777e37f36623dec8225388c3a5a2c7026eb902c63260ce27ffe657bce34a47db43667b9293e04ab9677b6fdb0b0a429a4435a9f5624628a2c07bbfa8afed562be4233019524e67cae6f955226437433bc59835561c462071ac38058c145787c242d4b6dc055170675190882792ea49726dc8b2cb638763784d3c23e1791c93a55383a8c4b59643626f8948d228b670312893ab3ce5b123401b1b24432545889d4d124d2b846070c1663b87a3475c01adc4f4df286fc91c76b018c05b5a26a696df86c4b1fbb2ed3050cc9b54ca2786839f854b9461655972fe21c3c98007a693a4d0b8aafa3ab73f1c411dd283cce59528477b6e089847ce6518f29b523602f80ac573618070bca649efb84fc3947d43b229e05682914c153809521ec9b7978a6bd667f59b18f1d986222dc9ab345ad2c7c7cc5799c15297c22c3734df18a218c5bacb364c9136b8e055053567a1856c21b96a1a2723913c98cc364bbd1fc4edef37e1853c523727a6c677ca4c82ac4d49238e1b60c1531d1dc9835c4a96124a0011c09350353aac4568a84293e8666f6016e56c38371489eddbb3df3e53e6767bd01e231eb122f13f59a83a35101844ab389954e8068f6d7128c738ac1774edc6465eae8ccbabcbb41271467c407d36928d9e3174c99665e3a9af0fc1b2733925b254a3aba050ec3925dabc511427c0b2930bca63ba7629366c1ba620cc0d7090752157b5d70c098745e37db7316056c7bb37c024226425107da8ba0e9c30e2606752f31a017e50a0e10c05332677ec851eae14f594a55d07392c23a962248ccee1221feb2c8f801860892b33ef2247b801e5ff55ba97675a71037fd133133840050b8b7914125e9d30165847319eb1e483005ca0bb8338b75eed618c47408d0260ddfb1527640a148f29e64f65fcafc59a8715a8126830024767009bad41a3385c0173be51a35f3825843b59fe06b5fc03dc21f6d925b9f6d92fff175c9dd625bfaf502b4e287096185885264e085f67e48f00a7a7f82963e8c67176bff839a54fa1008328c0612f98d83d35aeda108ea4d6c6bc0fb958286850422bc357ca67b83c986048e0d0087fa11ec +ciphertext = 9ce63bafe883f7e6b5932e071982bc35f643185589ff435bf663b9fe433014e07285e8be328729d3d01079bef62ee178fbf8e7d9ed1c2529fd9912958b8f120dee444881a4634d0e96973b8c47c004b373d513ecffc97911b53cf0686fe2cb8fd33eb7c0f50fd38592e9b7f73d119eb8b7288e7259894812acf13f81191f5f383279dc7c05f290e580f6e0a2e488a002071abbcbf2cefc4bcb73eaa86ffc1314e120b8a96edd6c0ee4faabe7037dbcc63d8dab849a55a35f39e75502c961f1051008ce4c9b0fe062cbfcb6bbd6d99ac1cb24e979d72d39e057233212af4afa92a3284b1b272509d0aea213d5f18e5ecee943d90cf8bbdf9061b7da7329cf363e54237ebc2f07de66ad90cc12744a74c6e5d577c8517e140d64bcd40018995143383f5ddad2f7828163d25f9c3af254119541fbd304b96f70a8cc9822087cc2ba3fdcedd9529cfb7137991dc8842c5cd1ea2cfa9b831f507c04ee4db010780fd3703e54fe7748597f1574683f88c3a0e8a5bb36695b7c5b1d6f566f318263f3777db8f433019b287ca1b8406e7755426e593134880c908ff7cab24f2c8a446dfe1bb1b51a546ef9ec43ded91f7ec7f1f97df2ee83d8f52ac9e174639fe9591deb37b9d9f9dbc9d1be6b2ffa2e8c4b5eac3332ec069e9cec31bc7d21c5253bb20ee61ee701985a8a73cafb73b479cc19ea62b998eb85cabb5b4ff462088255ce5cfead669cf5e17871733361a9e25392a8baf8958bcf08da7bfb12b3b174acbdbb8c9cc1a87b2f6e48568f19b1ccde0e9f59ef624dd525168ce64dcf1e63b0c118a077cbd7b48144234001910dda0094e21d0abaf3741aedffbff4dd92d291180c67e3a253799118eddccb6033e3f450ecd84637b563dfa9010a2c07e9b4d4d55fb71c7cba9485b612561ab34566c40575c4c41eb9ec7d0c08b100421b7e07af4c864b7d8997fe4458867ff0cfc02b001250eece27b8e8b71a1a04983193520762f4b7c4d2fd289af45f1316f89108f19caff5703960efb9ba42823a6b9d9aed333e37e5989c8720341ed60f4b47223bd313b56e6160fae8a3bb56f97ab1092a7e36e2811226f9bc14d63bd3f48db4fa2abfdc2b7b8215d4c5afa301783940d3c9f8f0b48ef9c35b02e272a7725c77af66a4c3f43f7da5852569115857f7036f7fae04db993d6a016913c8c24912eb8c6c68159059fc3c3a4dc6c47da86cbab270506651e2f3a2fd268f81aabf83239d885c886fe85df698f72d019aacae6d59eae99e2e1b10e77207d047659b00bd0cefe7d675d7b4b50669056e536539a0c29d35633c6a059dc09abeb473b99a85b067d665374209a5e2b729642d03bbb9a41df15d8a2f12f65d32c965c0f883c6acce98ec4692cf48c55c7cd4e5ccca0e93048600b3a37fc6b2cc617f03926d033c2b6a4255968cf927c665c601a9a23c58db533f67f65e6b501d42ac65365e14c0180349580ed85e9c5c1f4f0592644460027830ec2470287d6ccb55ca108d34bf1d373f27e46b64b848834c85fd585a239d +expected_result = pass +expected_shared_secret = c89d62938a5caabfd5b30d82ea88aced52ef5f8ec0528e59a654e1f6aff1cc2f + +comment = Official test vector 97, seed: "59eff60b1ef6185db34ee1e3b1dd2f159106ceceaa79beb74923b4f5623d5bc52dbf5d2594a1f7c6c64d12cf144e9ed4" +private_key = a428a1343429ce9c3dadbb6213410e264426d1cb5c69c68e7f377bcbc454aaf867771258faa622b6367fc5cc46e960682a3984a13230b3d7c25a69ce4ab9af0234a109878e0cc42a9b858dc559ad3fe82c4060539c08828c51b337b7c0ea768ba646a2f04900a235a4042b88e8934d3b62821a13b67a912f162aa80953cb71c396d91b91521b6665062551e0a6ce453c233460789138cb16ac6e598f670c70d6325804cc494466710d984e3ea551f5ec60c5031e94421919f62c301181831b7fb4fc61da443fe12784cf84b5ecf240daecc87d711aad10808b96233d345ba80b0469797dc03583214355e8e9a356e367a593a6898355ad129a8546a0d03b2279021889c118db3583da691a9ad544086540bb2178b2125f00c94ae753038486b6cdf1cf7e5a2202290b4e5ac807eb04bea95678b52ff76c4757c68d2eb9283b8766f1a39e06c999015b1f1d5c3164338aeb432d54b338c361b9a7258981555fc2563e585a6ff60886c32343e0045746e50fe78a0a9bcbb6281abe3474ba50e1267b3276a1327a8f128e2b5ab077618c59902c35488553f745d2a0c942b81c0aab7afd0c869b9b9c66c1847257cb22b018b81b25c468a9bc35a180b090f4bb90c4ec035c0078b799046833cd90f7bc2678cab9b75b95a6b457dca8fcb84937c01479a0b7b6da9643da507a2b8b1ae25373825189729bda8b35fcea315b3b359705cd5b486582379093e64f431309f0389ff899beb4c3ca9689b412a210eb654f183362ab8398b1e3696df7432be662cbe62666471f2c056504a5c1c91017a6326acc7306524058fd0937ddeab972b00734f60d065a1ba8655dba3093d161b99e698fc778b2fe782fa8ec7c62d422e17b24fd107b87a8338ae7af6994c70d959cbfc3720b3174b9658f5d43713cd47325eb926320073f384f04e6831435524b686f2cd377c18363f8e554dbe6af09f93c2ff2a1f4a87159472e7d7a4db9243a1c6a636ad50735b870f1297b6d6b5303e2552a54aa5991340aa40301ca2d6bd9a765b72fbde1c3c44a7649ea350e00cde59628e06acad29888c9b73cf0aa65d44b60f086c21c6abcbd544295317b55ea9ab1117989ab7b7304304e5612119396727943678c31cf2b1779c946b82420a557a8d6426263d33c7f71591c7857e90a7fa05158e315ae19d1046249b3011b22291cae30501d1423674824b852c34c97258ab972af6c5195ffa20b6cf05ba0498a529756f173349bec8c180869293c5967454d01cb3c8edc7a3a776dba54c37513727a69caacfbaad8ec4a529a1872ca25cb4a99c38b225e379ace27485d8b91fef9ceb97c04322b59f533745d23720ae457fa11b3a0b831de777d07f88ed1771fa1d89db9acbc7bac471bd423acac482bfb29de13881aeaaae2f340c1e747a73b9071cc551ea59b03646b65bc2e6e04875754a77025985a026adcd321574ab45cda47134b560219338fc93b0a398d7f85169b4b32c2ec3a06529f8e3a57fd353327b03f87d5cb60c67074146fb460476c92619d9c23ba7a371fd9425cfc6486992959109cfa1c1a75ab9eba4235af63c6f8648ae7855a4eab5c9d3923386996181980b16b02a53060e5a64a8cf3ced087bbb49b9264faafe731c0dee965ac981965a28ff907ceabac477e2c9b6dc95aaeb0531cbcb65d8b3f6251be17ecaa89a5b57c1198ea66af1f4461b91c360e4531c4d49269896107f10ed1f1070e68cddb2a4e06c387f3126087a71a366a250b450be1567dc957bbd034b66ab65fd4eab2d89b8481ec2427a4af3c1b861c799263f492779053a0128508c86ebd6201c876bbe8ab8053b790314047a1901c9f327207b2130be5bce8504bb03817a380975cd81fe0c0416986a7b74a16a21146636abe4d2b2c5c1223d39265a6845804d49e5f160abfe3ca21a345b5d044afa5636c37b976f2894869bf4500c62ae9941b9b3c3e6064fec351268243fd75bf287cae8aaa9aaefc1cfba1032ad2623a6239a7f834a4826f86132b59ab24efc9c57cba929a64ba90271b987bc08a913298911650399429e9bfc40742df735f7cb935eda73a41f96caacbb34324b29e64348c6063aeb0bcee9066028b3340aa147b09c42752cfd6d491ffa497e17ab6c0726aefe59c2577764a1a996fd879e58c23f1c0ac9e9372b3f0be42c829b7b09acb722e3189a2b3e72124895ccab565dae583c6c76c34c2c0075568379639869325f6e92e0b91a2d4100b2f4aa6486b756cd521e1b781a964a21b8b0c72637a2e4299fe15c1ac275fb077cf42f36453e7603c91a648e09cbf128ed188639b7247584b333003a2175bc587925111654f24680c540b32643b035ff38bb4598785524504ebcb26163d513867d74744c8b562bd48989b3a328374a125ca05fa962ac08b0d22277e578206a165a9e3d31a084b4492c664448aa62986b55fe8c8420816a5a9c035644f592969fd0951b6e9aa57303d1f9927ff6b3de99263e2e11cd8317cfc899a45706746e9850922b9a4f9cde515623f3c48b86379c969969934ccbec4bea3e9796889cbcc56285e9a85f0b3471bf9692f3c72ffd945089b9a262ac1a8844c38c807f7274708aa0587f94a107089a99694fc627291c30fd6b0430eca692db54a96019eaf89635cf54f579a63048070b7f32dd2c32a18e2b7e8400344412e9dc5943bf3af11b4aa6c328499da7c220670958a22bffc89b8f0091c8665b6605571d8a1b5c934ce4686c7c047ae416bc6e39b7ccc92cb076de94001374217e9b8820354351cb377b4f06b7fbb69f64c7b48f781ded2cfee998718d875eb94866e7c5135358ea4ec92849978438c77cec1ba1803bf9933c8856657c953125eb76014bacca8ec9be6290936130d166b187e1463e55cae3ad85e96e81bc574220ab0cd374aa1f657abea849259b4431f1a00ee59b35486beb09302bf71b4c2e840963333b4a3be37f8048d42a0f67c886de9b47611555495248ad4c587577d45775f52135518793ea14582bf153c74210c36b9251609a4b28559ade5a93203725a475971b92beb88a69357bf83f384577cc1dfb62c70fc65401073c67a66af878fd961bacf46c633e7cac0e5092458cbba0c3b69494c4c0c0da6025cd6516c1ab89b3216bb9ba123040051563610251974a0b11be7190504522a128ca3107938f5b18e4441b52f7944b0e54cd3946c57e7ae3475bec06791a9f5a83eacbb12f40ac971cb475610a0e6c546998dafe5c2ed852d7715b3dba61b94849dea30e28720bbcb90c7af7feb0af619a0cf57d173405c828dab879de09b58d0fc7ade140393ffb5343abbddabdc118fad519b14436a964ce63f8ffda3565c2424c89b20974b748a65a5aba75133fcb3156dfb6626a83bab +ciphertext = 4106b63bd9cec4d8be3ac33234128e2bc1346ae6388357a3258c03ad9689e68cece1992893dd26409f62211674a84155d1af8ba9750add112f33c812c04adb0a1a59685ca91bca59979af97c948d5443c38894543a225f05317c22e6a8afa332f4cb4dcd6638df6b3a0efaeb8f065c576c06f8cfe3cc0b3c823d0dc638e2203b886efbd82e6cf5216a055e364de238948c55187ba2d5503a3fbfbb684cfe76da66ab53f97ffaff0322a1c0224941e8f64e3705a2e4e9d58d022d31e6403329b220546268abc3220bd49db91521cfd149fa186474001c2a86c407ea8ff96ce07cc335b3cb692998ee7929e27e80cede8eda4406494d289f479f15c51d3ea30873cbc9e5ca00ae20df9ee94901542c02ef705e068f589a4056a9521b6e003a345afb85cf66319506ca2f5a75d15baf62c6c5db502afdcdc010f93cbe1d1fe4212d6796f7876c3f1417508480678fe36aeb0715cd76fcb15f4154a7006a073e55ab89fe90b708e05279a9d51bb83d268e729e47a832c2a93642ab79023b6aa81063cc2c82030012cbb2374e005b9f0ded74e82aa174496744434220d74afb7c018b93555d9ceb8a23c5fbe22744d8dc9381d43ebd2c8088db2c699c320f7a45fcbb2003573157a848459f587b22d571b37b94a76575f1f2341085e08e31ec55f330b66ba4f5040b199dc847262f6d87e8ffd3196367beeb904241f7e0c09e9e2b0094a26ef78ab7ed8e7400bab8094b6eb75601427af06fb9a3ceaadf3eabe93a4e3aed4b8e1a72fa616f010bf0642ddfc84dd435e9ed98cae09a805ec5fdbfc740d6d218cc7ba34790debb2141990a3402145d48ad84548d5d2a1c3455379f1c1fda6e6b03cda2c6286f9285e9f4b77aa6c82e7254ad5cab2c9028a0e47084f1494978d58e2f8bc0ee2c7f2cbb38f7c50e7f60049feb80073493b1cca02a700f0d51901869432fae4687e11639144785a8c53b285ab1f9cb7bffdf5c5bcd322684fc871759e6d43bd61bd450cd69ee905724111e11f3723eb87949bdfdfbf769b76e5239814eeef6d5ad7fd65c8e0c32015868b9756f7f96afafef2861506e882043d1f947e7a21572575a475b0ab0d11566428cf7714f1497ea85de68282038563fe43e72ce17ab525e93265df6d62d0254f9c69ceebbc0fd6a30e37d2ad218119ea8d4aa85e302e4e70e25e2428032c00250b14f6c434f2b02557c4d8367792692fb31e79259c76902bcb37c4c00a1beb4ecc502b7c66412358f93382ae592a25505ccc42fc8f02e43ee8e8ed6a3d93c2d9505de290ea8fca4519237b7c76a6ca6fecbaa47e7f519f68f118ac54443a5e7ea238a61a1348ab16fe8bf1a1e39462babacf98e39fad4af8033a0dac02c806ef6715d6d9978e9b91d28cbb6b894898de9cbca5ef3b49ce91e19e23be8b75b187bfdb14fe943f30e11f253065df04b1863566e456c0f4af829d3ce3c88f728bf08e4b38efa11758a308fe6a2a45d0deca930b9929a51e72b7f8da6a45596378e071f7bfca861117f534573b35e994e +expected_result = pass +expected_shared_secret = 204d9272682710b52fb39b1176af3ff737848978770310df0c67996f6cb596c3 + +comment = Official test vector 98, seed: "dddca9dc31bea737d3f474e7560b37facb2f53c803e768ffaade7669ff94b1d4fbd17068cffd5dfdd24aadada4ef6b12" +private_key = fa198bb15b4278509dc232002c75a8bbf1853c474c8248b5062821e4d77fd5880979922016d17377f76a89ab9477a1024c9780fb728f6df3295666828143c52fe817b9688c70eba292d2716ab4970840abc4603f597b5fcdeb0144813602242625a067ea48b426738dad0ab986369aa5326dd199c72212c59ab20c8f63429683721a2c682c5aa853b86542698732ab86fe39c340db2d452286fdd599336b9923599b66c144c0c7848c20a6979133fb7b5efa3726a4f44389cb93d6a9c1b7e300cb852698c236ac00b2855861c88bad062a25423362c7774c1626834ee59880762508fb518f926a3f475d01aa8e5c8c4140537091d494af66b0e9426359032a2264af67e63541c2408b1853f87c68c28c8c13417f94d77f6ac3315f23405c233e14f7762c152609ac34842553de175a6fe1c08b44baa9d15cf09a6049b05b69f71df322171701ae91d050778a6754e374878169181a2e1336677889318cb54218ac055491b918bc2553023167151c98b30e1340403e0c59b3252f4d0c85ebac1877798c41aa43c5c7b738b7ce116428c049370ba6665be646b3125aeb947b1f3b2ec5357c7566c13eab148c453d6b2274a9295a06c822df9222cb2026f19603b5602d08d46d4c71384e776af2a441894826e4559f5975c586e47bc0236b4897622ae4396160334cc97aca101805814ae44786d1e445147a4728275c32554b9bd148ae9605e10c5a6b556704f1c17297a32eb311f1e92ee5f160e8522e06554b93b5c796e44086e75d236ca88ecc533c3b348091891e35639bd6cbdb3a408720b6e3a328c4268454169267a5c5348703c412c58846c192e0a162014600dbb351424fa8d0599775bd2d851db4b07438f655aad6402628563db3a435f75d440636cd64041de162d178c923490839f190f106be0020ab63e7b3eb718a4fb59e01057c416c330cc26e485a6d9c72b707da0b297c0a25247d26d40f044844c2db883a5bbfc2b06f1bfbccc6d10b65c9bdbfb806d7a04cd71774dd60bc423c1dfa897a0512365cd54a90ba6ac509298bf6455363583843925281aa405c291f11695cda995a9ac5f742351560b38f8720d66327b4dcc47626744241679247cbe42695b8d81c37c718cad53d1b318f9f900757267c43b982f26639901028f8f636c35091f1ca90a1e329d5cb069a918f45a078f33ab4dfd248390627926aaddff47ecef1718b2b048304cd40e72fb0872b6207856a61bd764034e82bb426747405e1ae5b93c63cb12c7bf09e47e27117d26acbc102b043616e60b714316dfc17306a77800ee87e03e4b74759794ee6943dc274aec1a08197a841e68f258202b1124803064f6e3295dd51ad18949a5a383a81363bb00118a8569a38d138bf8835362c723e999402d3cf728b0e11f647ce2b9390615b9e50487e23cee6f9cefc4a1ce5e83d28d642e3c16934b43931158ccef3832a457a5e833f317918858807ab084f687a394c257abcd8435cd717d1e6b79e78a37bb71a236729839b89a9905b5d935afdc2c1e6c71c597898c6a69765ba05e9784b7849c685ab5b6de3358c6299d8a4b075045d6ee15b639601aa95603a67378157b54889c3021453e373208cd06c0deb77bc962535672a8d77c9eaf9726cc1a8b8d87d61b1461f33b7f7f5a003a8657297cd100324fea561ba879ffa75287d9a838275734593abc2b842d9353906334d3f9324c7d00eed794c78310421db45cab6900817348d67490bf1485e85a3dfa255694915d286ab5243b62d3a91f8493f0b19626fb89c0b9109c6e1084bd8c848c06b3472a65a2646dd89be2d922a0d2c5e816652c826854ab36f44809ee56c9f7e26a1dc30823535997a05255756704aa1029b86601e2853c2d34a192a9b2b76b31c69c1a048a76a6a58e48bc8e512b1c767347ae28ae046076c20179d0977d2d54a3f78add2ec6bc06071d9447f0461846fb1a5e91a760112424082c2994a98d07aab29e818fd15134de437c7fbc59469ce8ba80545a4a5bf337fe142b72e602d8a1b3009cc95975759ad38274e234aef0552b8aa65cdfcac975495a84c124f8426a9c87d8db03ce48b0382642cb9e31ce210b774724912b09b16d88ae007ac4542c092f9bbed9c262d823d9d5719b357821d4c245f384fc923cd334b9dff579e324a0bcfbcba61fb7ae9f69b3ab88693e005ee32bd1a6a3ca950a22421125391a060276b07242a795085d0098906969c421cbc469128fb5393b72590fd391dcdfa3cf87b9f7a4c6cc3a1791ae1717478a5280a3b7580bbedf88f0dd7c1c09aa67d6b284334049398ba983bcbacb8c56237bc3efb3fbfdcb358a006457832df7a01efd937e68b3299580cbe1c9f69e165d22683b3721e4189adaaa91846b7717d41baf8d9a1dc76c387f0b55c2552533326597466ecf06aca624fbf73226e471d835b0ee4a24a8f1c5fbe359c61d974a4d57c2f7c49822286ca27116839b784d6782c13b606b87804ba0969c7c47c7a29ce16cecff5514028c3d84944ec8cab4b4acb5b681723511087e25b8ae84f3741a2de6cc21e7a370b35c255c34555f29645d4b420494c4d993ba3f092ee240f1d3691753420891acfc9421c361ca2186b563ed63456096227eaa738a33ab56029976c1125dca790114aeb83aebcf271ed59bbc2e8377301b53d697cfabb4c6b40bae19b6cecd421a1109f9cac7b71c749e60a2005a30179c393d5033cb4f8795de4c98d91538fb9a8cb1654b1e6a82918471470461f54cc71fba50deb3e1221c55aa616ad5262e352adb7a89ca04557a2090fb05704b9521809b8cabfa325892ab46765cee83850586918422212c812373a1c6217ba890b4c5310f7b0d5d8275b884aa9e4914c85023ab53bea88ad4281a7f501a87534ac1d806b0f8691e9f1bc7171001043015b391cfac09b5fa88f840c63194632bd5a012b34b50441ba08c879c44654f136cccbb7114f7b4099016e0193cbbae63522927df4b740b3ca5b32b741ea15a47370b98926a1f90618f5235357e8087443c93444803dd22bbdd5340c876d41f3ac1db59e9ef17db71369a315600fc6801a54483fb015ad3766284a97cbc241ad73461f4b2a0f6645ef428805762a6e57474d29288404ad98fab63ae95e25436626bc66ee10c01e55103597288ac521b463886f863833948455319d3455110b68bf7bc495d1a922191a1a230a5f036c3c4ac05ee2609d09891ce368c01f037d818805a566193a433e924b30f4e86dc76ae2b345932a0e7025f8ce6101884469e31aeacaf4d77e3f1201bc75919a696301240cd6129f66be58e19d99b0d827d9932785cd9ea3d92f7ba54463fda268813efab5204efa60f78bf81d320d01ac09ac06244f7afbd2d80fd356d9 +ciphertext = b1ddab92816e9b3d6c9414ca303b6d420087f1f154d8fb5ea6dc1d5508e37f6edeb9e00b1fcb7d14066fc3585c6b61452303e8f76c034cc94efef7c29b703f2c5f997b2e3e73ced4e264bb8d940cb26ee5e048c7baedace34c3404752746593b40806baf5a7d13d1d4f43e7d178a85d3edfc37e840f7d7aebe4748a4a6f862073e18e916f795fb9305fe250574f2e7de19aad589e2a2640167d49da76c63e0dd54065e83345c9672367cf0e64596ef1357c0bc580ec438aae9b9293eea6bb2dc43eb39069e6d409ec1c61633c436959cab8f564858a835fc468815fa445c647fa6b4ff9b32a5fe4bce0ace00e15511108feb69fd12ec24900fdc7ccbb3ace5677279b33be301ef70247b625315439c805eb3f1d68ab316635cd5f5eb8e9ac9439b5278bf7df4e58da1353508c6601af0db94691f15de3d2fa21b5e2ca7052330f55218f207fd956b2aa774e0920dd6ba34041c0c801b69f4c3feeb1b6d64d78fb8d3d8b4d13792ca75894c28c1f172272a99799fcde0c9e10eb3671eec271855eea93d50e8a341ef680056eab4da00cc43c38207aec9d678c0d00b64f695aaa6ae2ba75d11f275d2985ae217514407c952084b123219c2a119d2257c1ca1b635d770cd1a01819d03a2d6880d6b0ce1b8bc59da04ade0ae64b543fcc6e96495bf5fb5d88807d5582c36088883dc14bd616971f1d98ee6083dd74a2bfbe96dd08d2711798643a84f07aecdb2f30797cc98939f61fd5d5ab12ae0dada77ed40c8187ce5e505ca5e8da98c7f5705c252b0a6ea56d8e347912b854f414c606d36bbb60aa9dbf30fbb1152afba2d335d82eb865a38baf10a01ef2cf5f16f06bc826b1f980ef49ce6e7e411a15750adb337b3d3e7503b3b50a3db53ae8a7bf59f26fded1abea8fecd430cbc72f4c6b357bd30d01d4d03d70f07c2644282c133b0408ede5a61f797b01d288d9a8326ba620f071f4823e73328fd2c18e6a3376fe5b41a54f63632338b70ae5e85b7bae061621c35c609a6c2754229a57f65d8be1b0889a148fbd19d58c002bf5d6e4651a3feef2fe29dd8732211e9dc7a68f8e2341c33a573e815e67026bd559c398121ccd61305961194f69ca1c21debc8caf921f54a2ae0de9285966a9d0a8720cebbe6d18363b724be75e402da9d56aa1a13ff4bbcdcff699adf148998f5e47f6ff9a43355687c8c7baddca273b8bd337464a42fd11dd33feaf6f3c218be2b3a3817019a4e4eb9cc88529285274d5c5e5c2329a42392cc28aea4ae431dc29e6d33a8542fb79593d93fc4d7702791d16ed6934e6d1473dfb21305657d2e57b5032388b1164165e3f6446c024bde67994c7d1e9fb32ce1a9ed53094744f08a5e9fcd34c390313555ab80a08b45f91e2137bc555da994a3951711eb699f2c0ee681e2abeed06f017798b5fccb3e0a8ec4eb880deab51ce1b21507d47c3065766325f03032b8b747c63b0feed45cbf1af5eff06681096f49b2f54de23430f165ad9cda134bfc9d1554eea7336094381a91b75e861d39416d +expected_result = pass +expected_shared_secret = 76e5f7623e3e867fd12f28dfda4311f7cd90a405b73e994e857f693573fd2b8a + +comment = Official test vector 99, seed: "2a6f7386b815366f572aeb6c79e272cc21b7095fe09575f18072c9d677da23bc9c8a4bc393b7524604d299bedd260c8b" +private_key = 55873ec8c5bac259501e025faed327b9b659b0810e7d43b8bf7a25a8c1a51062cfbc9bbeab182747196797913398db1c1ca41c1cc3a883400a29797ab4cbb553076c204167aad2208355279f504dd9a476985362898b4e423821cc2642c335c3c953c866451cece03098d5a2ae366ddae1a06e05547e1c0c0667cc98494bfa778eebc5cbaccc3038f93b82e57f814799cb7a921fb14042aac83a1b4897bc6a15c87fc94144828966c49b6cb8f842a3157b60d6b3271c3661529d8a93c7daf7b4de1396308c0cbbfc9f984617cbb5b1825c88bdbc4c74c58ef3d54d089613a6a431e3a59acf4201fbb6828db0061f1bc514dcbfe72023cf8102e9834d5d6bba8a354fe04c6008b37f9b07857cda1238f5a562f288f3217ffd1a1bf8b2a0fcf3af0310c84bd6cd805c246c4a227c9bcf963093a9755cba968e7c06cc4f987b516171461b69e013076cb652c2a0b10f1b0fc9d6b583a929fa3905ba4b6b41f19d862c82b5f170277530a278773fa740eca749c00a61735aa1a27719cfb75eb0768956718239f43239e25a316339db665eb9784ab581137d020b992782956522b824b3ea4cb540a4b12ad7c512046711b0463f779e1279bcd2b7238580c72df6120850376db48978dc717cd1424d0b5e7331b76d0ac0b024c6283c8418e5b1a7a297aa483e5d2a65f2181ede32c69cc4b9a8c4c0b90bb17ec06336d2100766aed931876ce45435b5662dd8a5b9f545292c870a16925546ae0cecacfb737647504ea1a29d13e0bc2d060bf7480345051e9379cfb0f901b9a426641802e5522ff8b199439026b123cf9b5827ffa147567912c46c88cef0b41d9526d227a72262c0e3b3157dc4898e07caebc8038142b5172a799b8a6db0f7703730c98e1957fef13d5d7b2a52945eff5c4337b6cc5004bacbb419ba73568aa357f61c70383447c6015a5896b9c0c0a2f2c7a76d940278d736d6b685f4fb3cc392caac1830b439468b6bc73585b4205751e55103099986308702a477588611a990580d88657024fa6d371550141405a8240109824788675d2546afad54628e93281abccae4eac11d200aa5c40a9e440d9f2a40deb31c2688a3266c9e16b60461087da271a1973374c99693c8111f9d458f92ac3208268078b177c818038305ab421b6d8297063061bb36f1318bb2108163a723a4bfc3c2a25f958f28b2b806a15e4310b8852103843c8ac26c7773084f1f82151c52083e69772a049123027916f039fd08713b98039f3b84cc83a8f88b2c19f48a958a443339a5a2158dfd7a08d11983601a1892a8c1152c602edb1592c3ae555b2ee54c5dc6020c0b95626fc06d85d78120ac135fd369de6b6aa902bb015a7bc3ba13a7391960c533d2f1a6278494e78b6a3c5b91a2b1aa2a0752e5c0a30e33cc86dcba2e3232c98b9aaf1bbdf9e825b15a6dc3a741d43a53eb10ad18e93541e224ec5a952d673984990af0d81577d1bc83b09856794d11707faac63a1e49a799224b51464916bc07f0a69f06f26696f5806e92ca4ada050cda48a9c90635a9c68acc753a711115c35488758a68256a32f4964c431d50c0a8c5053d1a41126a952270a309f69931c32194fd201bc3809db548a000558528441cc07c18856568c4fc0eddc04175f564bda148788608b71756367551a5709127668efbd60b389877001b948f2c50ce62c7ed63122daa7c1889400a4175ab959d09ab124bea2c9d3659b8b4861e482eded950dbf57a47c87f79fbc143d20420f4162f711963c47dcf7b8ea7faa329d6a70f601d3a1b15a7890804917c84477d95f916a3761e3d94a0b0d69d9b7c39692b7f4acb9091f87583810ccf67bdf86c4be8f08762f2c3428646a3d33df4b67eb87a2662353a208403bf59334bd9758a9439f8d8bdd45195f2255282a73456d168a2b249e8d180d5b310ba828685b3a1daba2fb88783bb5062c13b79c2b0c3a10085664377eadbb477329567d1158882085850b95697248c6271f44988218777d33823ad70791bd40e29825ed124b963e05d06547c740a5ab7a1488e38c464b53b6f016ba1b7648a14aaa111907846c5df162f61cc62747386915724a3b054e868bc04c934d64b7f2ff461aae980fa806cca7a9c4d7255564b420887946f7a72e4d1384d8222c70330b09c08d9a70aa176529f0685d087b8f9eb464a776f93606b05d0729fd2afa7969eec2662ebb7c7fc821d6b5393707acf25c0c2c81702cb195f8cf730e8a46442e91e18fc7577f4aafd6933450491ee24763bf6786d794d889c3005a323cef2a8863c7ae00998d2e3ccc1f5a6c8a933d5d615ce82af312990969c6288b6893c42142ad87ab483362461b87c641f646410ef5b393283230220a34730397188920b6873f16478331cb22a5a2c73273d865985533a1f8e109dbde719c10c8ed87a831ab65562751ebbb15d3d5b6e01f78db26a54e47943d6b31f916a552ed01a39f96dff820765d6ae52265010545162d509f6ac3f9b7c0fd0ecad4008732d6a9df9449b2017b389522f11870704127bc6d018e0a420dd441ebf636c31b3b63da9c00dc15be0b3188371bbc855254217b99294815d78194fdabcd1970e31e38d37b4b1cc69bf428514f50ac9bcca9125e6473028571be535fca274651752dac691ff8a28c555036378b260acb060faba9573b0b65cbc76b892425294d65658f4a1b3309b424c6865bf1ab307b88022087f97f6882d4360ecd91f3d2513059a784bb256e47670afd5c1ad5c177142a2955b082fd0b546577ca5286e0f1c85af8b0bd5650038609e8ec8344e6ccb6df93a056644cb89294fa19266948e9a561bfa66517a900b67f6be5efb853c703ccb4a296a493c24607a6ac4a749361d8f738080a80ca62aaf658b6a972894e6ca402af3c09d2a6e9c181005e0c4d193361859011173bc8b97755fd1085b52808373b29733a7d0488c5f890364abb9716920c074645ae023679bc9c2b3ad29b9051a94a124a43688a1027c35b90f9303664aa37aa92284f97dbcc7ad0f12b5b6ba38ce0a07130110518c74ea36ca6d6a44399a3983101458f926e0bb3357bac5a294446463814806ad1623185f295d27f2c913c9608314174b2bb8bc03a92db6cc6f044d964a7e3e289ea8f064d9b5c0d0eb43357495d09c0fbc4069903bcdc683763bc4c6acc2517b7c94e3e0265029bff55773421bc6143a38f57410bfb50bf21bafec948548a87667d95439bb78cca2c9da670beb4c816478683b5487a4ce6401ec27a1605f879e2d9c53bf27e165246401cad7840a077934b8cb6d7232426bdbdfdacd373c9190722e7bf342825f7d829185dcc9120588fc76ae77e0f9f21eabd8c0c6eea7767f4e10fde5c2d79b8400bf96b19014b457ec21 +ciphertext = 968bdb85e8be748513a831e247218d164bda5f1f8f433ac105e0798820c1300777ab82383d265ac6c7464c42f2f1b82734ce4208cbd57abb0a0eed81beea32d430ad955c6535d8576a4258a148d8ea33449ccf1e63b4bedfe1752a6006afabda3f7a6f6bd81bd49065357cc1a2b4252faa112997cb4d8ce361dd76c9dc1015368e8919fbb67709ab3dcb2cac18ad6e8c06e05d1586db41ab3555a43e5b0631022d04f5e784874e3a68b8a2f3ae31f49279fcb83c4fc1600870b1d25e433c68339aa9a5bcd1985da955149fe2fccf0e1c912b435beb46a083fcee0c924acdb192f87504b27018c27a2db9c71d4d870676631b4b94fb023df02f6fd2b97f84741d8ebbb055cb786d0734b83cb2bbb2f094a80b204a5a257c770053e94373d9e9dd13dd345fc4963fc05243ae659ab7be475519f85956d2640068e28bdcf7dad6b44372d1d032de309e4e228cb932bf12f7da347acce0e24bfdd89ff7710afeaa973f735d7d69574dede21e4099181d0c885be477d176b19e79dad497f8d46b8843456a5b338c37aeece04596e6ee4b74dfe3976449627deb97e2fd6ce4e903ba2b0adb9396846cfb0996ea32143c4188abcaa15b3a0f38a44625a52c62fdf3bb9cf81e1e6e0cbc102e251a91eaefe8a3e0c903414397ea25321672985bd8d91e07e297b7472e04fc481ac17ef4a61a4e618d2fb3aa728c80206f367d5c44c29ab4704a405cdff7c6aaa34db06cefccd64ef24370ba1c0d2204069c1a48f0556c7664cdd5b80600c466da748e4c774a4784e15234c20f7258cfd998d764eaf8359e69c3fab08b148b634257ddab72777698e63b55f817e370b804851c40b642df365fc97f73a0161140b127ebd3affa31da4a2f59918b095ffd877739e3d1d7af7455e99a5162c301a66536d198d18e2db6876e7ad5f95422a3e363dc637ce45dc663a975dc0d27b9e92008df453364256c3c12acc52e7e4d228c931dd5fc4465151a4d7b453775ea131dcd06dbd05f8e8a9001dcca04a23b2d4d18abf23fb50484a382e1c07e33f9a2fe69ab38ccbe51510a9389c2d522deb000a66d406b2b09c29fe4dec4cde29f358e813b72b38ca32afbb5990cc37f06cf18386e39a06cae8529400fd479152387f0c60d301344666765405ef92b98a7379e983ee89a5104cb3306a296b53eb2242e6fae55f04cb29d0c875bff6b1856439375ad697c88673e49b8753d4180db24a28ea0c77051d28752ac9cf6c571b129fd91c3b0c79b19a6b1afc1b72d1d986658740dc01a7aa7ac69144e99af53089e072be0f2d0e173f579f91acd0047d28b1259147fedc28d0e66589bea1207479f2c13ba9e4896d45a715e0aa9a401f5b5a35e29bf1f791d45ecb581063d6a82fbe7f623ffa5ebcd804932c81904a4756ab940eda4c4c7a4b69ea22701597cdeecc857b4231fded57126cbd5fd91da14548f5b82cf33605abadab82565ec80bdc6f63b8366f08a2bb9b252f33de69f13ae4dad178897f8ab66565b2e0ebc143427d35215ac75f4264e +expected_result = pass +expected_shared_secret = 874ac966970f29935db73c231e71a3559b2504e5446151b99c199276617b3824 + +comment = Private key not reduced +private_key = 07638fb69868f3e3f0e596fbd96933fec3e1b47fd93c9b5d5027dbced43f1b536d9b2d4bb20ff795a5dba2ffa9e8eb828b28448886db3fc84facad4275d5628e39c5b257e374283c513f99c0ab49b66b8bbb56a41876f4f919a2ba59bb08d855198dc2befc4f88ff5f59ab587a79c327d792d54c974a79f62ff8a78948f89e9a87b688b084ed5960ffe8b6cbe505a4ece2f8ea5a64c5aad6d417256985349ee47a52420a5f97477b7236ac76bc70e8288729287ee3e34a3dbc3684cdb7b21df9fd2d3418537e7466ba6385a8004eeee137d8f82aaa1e48dfc7a88f902d5ab7e88d7e95952a55ba21dd9b79a47141e6fbf6eb7dd307b08edae3a5bc5f6b68581c6865b27bbcddbbe42f5bfcbff488c9bff705faa98a2b9eea3530c76662335cc7ea4ad07787f5ebcccd2a4636b2e9e22ff3ab781f3ce0883c1a2ee15f5dc9e8a94194e48dd1dd9cffb3adcd3cee9253d904dd7adc0dd63213e575aa7f9e7b5a1f3362dec936d4043c06ff476c07578bc9cbaf2ab4e48f727ae4e686a96b2548820cbd3b330eec291ead62f489ea5e632acadd1df89680cc8a8b53b481e9fa68e7db4faec3a6a561c079f882b5ca8cc942a8d495afdbd6de89498fb935b775908fe7a03f3f4d54dce9d5eeaabd3593b39be9ee1388fe59fb441f7e5b5d4253786a0d69ad337dec29efc88504a5ba5997070f3a61363e17c6b9bb59bdc697452ddd59451983d738ca40dd34e3f5988854ca0513edb0a6e1498988197c6b31df58e0ef626564ec89a4b31d6864e9389b03cb74f7ec4323fb9421a4b9791af6d18bd399af676745d909f84d57b6694df830664ca8b3c3c03fdfae67b89006868a695f7ccd666459ab7f056671000c6164d3a7f266a14d97cbd80d4d6d9fcaca87db844a4faabe82e8be8ca895d82ac5646fcb4a15ee685ffbdc9ce3372ab95366cd4fd93d84f81af3001ea05cfe5f7fa5acc7cdcb462c33cb5f4fa6b8bb369d43ba68609ebaf536f8ed08463b19653b5435ba946c9addfbf02b04b031cc960ddce2e55e8d428b32b257a4fc83e3d3a7980e9dd82e934f9d95c32b1ad192af3604384ddaed79bbbaa267de4c3f756ba02e33107433a4e83fa7187282b8d9203a4faf94e851833d121ac383843a5e55bc248e425e16c7db4cc9ab6ceb0e9ea47e2b8de0e582c86b6b0e9d7bb46db9804dab5d038f6b75c815bf7d9b968d419832bc9cfbef6d5ef6f5d59d43e00e9d485d3784510e4221736c084d7cac36d408aa649276e9788b8602cfa753dea6cb08f1d7c7a04726f03225b3895b9343de47a8185cfc1bb65cad6b424f339903c0ac4651385b45d98a8b1adf8cd6bab088787f7feeb1256e766b43cbccb964354f7d94cd65550688f6948ed1b5475b4f5f1b95f09d16ec08b56c1dcd69f7cda7c7ff9358cab911087732a649d27c9b98f9a48879387dabd0c25959a71654d6f6a946164513e47a76edd5987cf364cd9f6b537eca78b9303a5fa457608a586a653a347ebd4dfdce9175b3a30127f53616fa658a95277570c895fca8973f4bfef3a344d47de7e1c99f7a635ad3388a527b034bf7b8e70fb7d2c1f7c23ed3fd19af37499dbe9c787a9409c82d29fc4bc7d5a2f996cf4d5da72c2d9c843ee9f8313ecc7f86d6294d59159d9a879a542e260922adf999051cc45200c9ffdb60449c49465979272367c083a7d6267a3ed7a7fd47957c219327f7ca73a4007e1627f00b11cc80573c15aee6640fb8562dfa6b240ca0ad351ac4ac155b96c14c8ab13dd262cdfd51c4bb5572fd616553d17bdd430acbea3e95f0b698d66990ab51e5d03783a8b3d278a5720454cf9695cfdca08485ba099c51cd92a7ea7587c1d15c28e609a81852601b0604010679aa482d51261ec36e36b8719676217fd74c54786488f4b4969c05a8ba27ca3a77cce73b965923ca554e422b9b61f4754641608ac16c9b8587a32c1c5dd788f88b36b717a46965635deb67f45b129b99070909c93eb80b42c2b3f3f70343a7cf37e8520e7bcfc416aca4f18c7981262ba2bfc756ae03278f0ec66dc2057696824ba6769865a601d7148ef6f54e5af5686aa2906f994ce38a5e0b938f239007003022c03392df3401b1e4a3a7ebc6161449f73374c8b0140369343d9295fdf511845c4a46ebaab6ca5492f6800b98c0cc803653a4b1d6e6aaed1932bacc5fefaa818ba502859ba5494c5f5402c8536a9c4c1888150617f80098f6b2a99c39bc5dc7cf3b5900a21329ab59053abaa64ed163e859a8b3b3ca3359b750ccc3e710c7ac43c8191cb5d68870c06391c0cb8aec72b897ac6be7fbaacc676ed66314c83630e89448c88a1df04aceb23abf2e409ef333c622289c18a2134e650c45257e47475fa33aa537a5a8f7680214716c50d470e3284963ca64f54677aec54b5272162bf52bc8142e1d4183fc017454a6b5a496831759064024745978cbd51a6cedc8955de4cc6d363670a47466e82be5c23603a17bf22acdb7cc984af08c87e14e27753cf587a8ec3447e62c649e887a67c36c9ce98721b697213275646b194f36758673a8ed11284455afc7a8529f69c97a3c2d7b8c636c0ba55614b768e624e712930f776169b01715725351bc74b47395ed52b25a1313c95164814c34c979cbdfab85954662cab485e75087a98cc74bb82ca2d1b5bf2803238480638c40e90b43c7460e7aa917f010151fab1169987b372abb59271f7006c24e60236b84b9ddd600623704254617fb498d89e58b0368bcb2103e79353eb587860c1422e476162e425bc2381db82c6592737e1dd602864b0167a71ec1f223305c02fe25052af2b3b5a55a0d7a2022d9a798dc0c5874a98702aaf4054c5d80338a5248b5b7bd09c53b5e2a084b047d277a861b1a73bb51488de04ef573c85230a0470b73175c9fa50594f66a5f50b4150054c93b68186f8b5cbc49316c8548a642b2b36a1d454c7489ac33b2d2ce6668096782a2c1e0866d21a65e16b585e7af8618bdf3184c1986878508917277b93e10706b1614972b2a94c7310fe9c708c231a1a8ac8d9314a529a97f469bf64962d820648443099a076d55d4cea824a58304844f99497c10a25148618a315d72ca857d1b04d575b94f85c01d19bef211bf0aa3362e7041fd16596d808e867b44c4c00d1cda3418967717f147d0eb21b42aaee74ac35d0b92414b958531aadf463ec6305ae5ecaf79174002f26ddecc813bf32672e8529d95a4e730a7ab4a3e8f8a8af979a665eafd465fc64a0c5f8f3f9003489415899d59a543d8208c54a3166529b53922d4ec143b50f01423b177895edee22bb739f647ecf85f50bc25ef7b5a725dee868626ed79d451140800e03b59b956f8210e556067407d13dc90fa9e8b872bfb8f +ciphertext = a413be81047259202401ee35989d25a3856cd1c0260ce2391de323736b678f328005c821ad092180b4496f2129280f4f299404362b9d141948b6bb02acd5736559fc9039018c961dddd94ee559198471d4a049e547b5636cf8bbf7db1a90c72b870923dcd54b148c60c9c8ee604d30eebb6901e6df2596121826058d25029ae399c95f6aacbaafe34f118ddba7a69d7cd899b5f4d58d3df2a889b030ce9a7ea6446d41a60a175f127da94c276baa1edfb357d41b2857ad462c83d8ff00236d9bac59325e0c3bddcb37bfe0fda4e167fcf6aec149fe5f9f6393fc4715c6995d67f2b4ddb0c7678ee140bcfdd2365e8122ca92cbba1ac703357edf15210c6892669f1a2b88d792be7d9aa56c5e8df758abb4bbae83141d2759dfc4ea8f2cf00dd86a7312fbaea9cfe6d7fd3f13fc8cb75d252cb3ec7e7b37cd81d88f38ae593ede6f8a81d51183d7dc7f57abb21ce2c593db72f0bf779cccc82420f53c2fe364b1fd3cd2ec54b924a62afa4c3195578e48aa5f507e7928d7527d6577d3fca87e7b7b19a89f69f0018eeb36871baadfcc7094e344fb36481fb14a5c53c30867cf1c5c02cf6227f9aae8d8a12b24c5ac2b8eb912b87de8325409e440a47b5c74237179a6ce5558ee09101ca4e645e24bdc28778735abf98b0688f6289d503251582aab6e81ced0179829f7311731d0615d0a0d955978aafbf8aa440a5c85870c58b3e5c1ff9267f094b742f516e8e9759d0f88021d99a7fd65bbee801217276656d21f3734de0a5589b33fe996ecb99c0d8a52d54b39dcfe707fc11e35638a69d908ccb0edacfb2aa435e3beb981d3fdef59cade6f63cda056c526cdc55b87a3ef2638bcaeedf406711053a09d310699dc8e3d07acc10e1ea8ec8d51ab31c04ca88c2177a51193b418ccc4b2548ecda861598ffaa8b16eaf89d59c8403c39c8d94c428cf19180e1420287b455fb6e4e5bfbd383aef18ca99f810f6cea703be4b9bf0cb6f0c5383e83ed3a723a27d8e3991067656726925b20fb735b12752facf684e5c03dc5be7a63af4bd930754fdb5f749306c2cfa6e398925c346d9d572924b153b7673b7a5022140264fd5a0abe00b5d85c686f296fbc49dd3155ad2f748255506909b355c7060dded4dd2fa21c7bf681251e7d63289e15f85854a25b4fb085ef03a03cd050f4f5021d112f3291a9fd60ad01e0b5797e78d9b94befe9746d754e6ce41da34c57da3d7deda6b233082c4137614e964fff0e38472e36e495f54e2d2371a7581b694cb263ddf80bdd43f6383578b5e18244a69cac9cdabea3d05718f5c23b1d4ce6684457597d01284b38b9d3eb1eba4f5beff990bb749f096a30f1bde724ade3789de5ef183a60163e28f1584500984ca5153555c38c61649683a727921ffcce3007c267783bddbdb9de48880c4e8452dab29e7c4f8d1d5dfd303a908b1ce08be0b9fae98894dcb2692d0b32fa39da98bd4ff0ea10f0b438a4971a7fc47182fbe52d6de71fee3e824a39f19c27f51aec6d92bc7f8b8f071847bca +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 94b49ea435f6945f45c45a7d580b6aeff8bbe0f5342bb8bd266df12ad5935f45cba7caa6e09e4007fba79e9946c9433a87afc4202bbdcfbdd8af78975e76e9d368f78763ddbb83e8a63db7b6af7d24258c7ccaaaf505ca92cb853a68e8d4269be91fbecf169a05f7eeb957557787c2f3c7f31538edba87476b157a06095a30e5fb388ac2294d755b43440aa3edf8b7d9dc435b415a7babcbd4ccd93cdb0dca20bd90647bed6514813368a794d38c917e63b69e7497cde8c519b160d5e44d74f44966f6e3a5ab9ffb8d8e3e68d77599a89aed13cd7d86498d88eceaf7fa7de25d73fd4b62802cea903bf15e7cc3eac350bb63adeaf9c7594844795a9a6274aa3edadcd10891f05795a77b30add76b6b1a35338b815679dca2faec9c3b602b2332492531507f6535b36dfb355225d37e7c85be15a5976a8a6ad5efc35d4c45acc954368ba6df88a47dbb8c782336f7ea507a7cfd26d952dc03b4bfb89872644084783ab493cd72d3befc2c803b79f729638af6abd3e6db9b82e678a42969fbe770fef65723f77da6437c21cfd3601c884a9b9e09cdb1ddbbc1a675e7dcfc76b40ef6f7795e5ddabef0dbd01197785765e3e05ac38a89d1a0e8c8794685c1ff74060d97bd6de68818a74aba5d71a8df5c86f79fddf14ce5eefa9af1391567fa15fe6ecdcf9c0fe7cf09f97d8d693645a53e7eb3d85d9f6a53fd52bfb0abeef9b5a4f78da74ffacbb713357d735a744b7c65e58fb7e27fc67a5b4edabaae123ffb8bb6b4564ab4fc2dc28b4981614b69bb188db6056608ed89f658d3d9afe0c7f6d4267bd0549afae27996196a6d6f86fc28cff731f7942543ccef3856edf9ad1b2be652a33c3e038ddabfcd9a56e2ce174315e67b26dac767f5de695d8d104bbae2afb89b88f66d27b10909dcce1581a8b8888d9dc1c4ea5fc20ddad5073780cb4545087c890f6b9b9abddac9f3dc5f620713c8b5ac3301e8715ac39d13084926e841faf4ea7bbb7913fed680a78c0c363a2527f0b2d69467b6cac5d894f96f59517fa7cabe4bfefaa2fdcc75cd4f892cec6184c5f962b9b73d663b7d76c1ea499d538bb45a4caecfedc8eb93bba5fcea8c93615648fb112dfe331eb2dc1566351f80606d590ec33dbac8dd2a3bc05fa8af514564508efe005cf0f799650159c40dc952c9a54c27f8e6c3a6a95efbab24b3ef6d5df300f9baf88a46644b4df9af4979f8ddc314f5b9e75a753a36510b87c5fa95cbf36e1abef245876003b54d4f0d8ef7ab9d83c5a2417de4b5cc33b6167f4c55faf55d84b85efec19556d83bda6b9dc1aeb6da734efd8a7a8e517de89727d94ff950af2b503988964f0aa227d5f3487471d3bc905b6672bf2dbc7157f9b7b7e479bd7a19f777dec546c624723af7b5f7ce42274ac5652a7c2d7abbf127ef2bebe2f1ecc87678ea6018d6d60cf39e6a8f6424419187bd22e49b8f27486ebf5372ce69b306ef8123eb57659b113da95989dba5d642468db1f588326db9cd02af60b21b8c4216fb883854fb173ea86e3764e4edd6b89468c7ba6d4f36d2ad436b945b8b44d9840f3139293fc49cd7659b955453bba08bdeb5efa91f594232a47c65c66e1c5c827afe79925c55ee4adb6dd406b49b9ca035467fd26c6c0b824bea310f435fbe8bbbd3430b5c39889e6b117e994e2f08823a33789ff858b72715323c6204a241d9835ec0da85c5884a8a96210219099c8c383c182632280356c1b4f298405258a170e81624e861fc1082d31867a9037e3b90b0aeeaa064d27020da7ba79398fa92a963a8a294e7720bd4cd9ea213f08063079c4d55b094bebc4e979444f462b967972e61206fcc80337911b02c7396bc64405ffc0b77cccd2ebc121a734037cb90b77846b2359c30a451beb20a6d72c238284e5df2ad1cc1a33fd5a104965c86251a596360d541240a4828231a827a0168b6d8ac7e27328173886453a9c91498765c2bd9ea9f666bb4a1d60f992538a1a746df845574f99adad23b9744afa81c7fb79a32b175706454438f46b8985132b8e1cca10c2b0fa011eab2428b88cfef9378a5228e55d7463dfa5022c998abd6354118b5116b3bc1004f0008134b85a1cf2a9f409a10e14b6d06c26d8e355864c35bc71b60d5cac33a513efdf6b9bb83bc880983682c8fb8a81b6927ca52e93835956795488181a8cd82b1a50dd18a25f35e2643cdd76c282e7018bb99624f031418fbc8052c4179b43a5998be9a20cd2d8a883b313ec282598202add6471971c88cd9607d3a8052519930bc5bc71ca4652352b4d02620b8d983b9849ce8b8935f1a4decc3250de7b0cfcb49eb7b74e0b5792ae97633b092081c3c6bf58f1b242ca07610c3387098ac3f0f9043901c614590c4ebbc64ce1971e824694a999cbcc430ae923a1432b6a4911162213c429481394a27006b9d48c0ab5801823d756bfd8c6919502d613594aec81f5669bd4e8495292606959292467ccac7f688333b3f48a39fce5c42c9c2653886a5adf4747cc943b2416348f46df5b58e4916ba64e9664a4baaa3e0a9652408c8e5076c226c3a7932c42a846949a2a26b4e2c452f86cacfe5c201ae1321ab5c2cabda557648a849241f077a799edba3582202cb27763047219f5546cf18819322b9c63974b322b949baa491d97c70f20545886c87086721d3ca2aeab441264b516975ed0c6044a425853528424532e4d721e85cb0bf65c26082c790765b062916fac4a0dcecbc2e900c6f600270838e2df20ee0a907e3613dcee049c445640362c980a292f123c6c9b5918f21443c996016c44d2a124c5925a8e0c48e89bb167a129fcbf67adb89903e1249f6028bc176bacc722366139858e583eb582ada714e79b5ad1bc1a6f18754e100624620968d0702e080befec425bc16b650a307802004c57590897c87e65347f32c324569051d798bebdb421eb28b2d1a0c662444c7db32bf97845d7225c7539f457894eb87606fa85b5e804053fb6ecdea773566c006e540ee65101d99bf314181d666680985c78b103dd00a040dc69cff389fea7c18e48a363b943ff042b476dc86be953a5925076cf749a62a77a9406165d31dacdc3a677b9114d8bf84b43f59f647fa4023535140fde04285921184809c5f193a7df45f62187854061a4d6754da528f3b71a134aa487d9b5f7cfc6838108b8b95b51f5540c9ea5f29990f7be07efd502461033f103723093a16dd96c098977f81330249183cf35a636841bd1a9b9796f13f56be785d942d7eab011805cf3504fce325b6a5ef1aaadbbb11c662b9d22cedad700b675e98641bea57b936bd8befce2d5161e0ef4ef8406e70f1e2c27c003271531cf27285b8721ed5cb46853043b346a66cba6cf765f1b0eaa40bf672 +ciphertext = acddfedd604fdb81a6bb89518b9c4542ddfa46f4acf3a1ad092de5ece00c823b4938a85cd32b1c291ffc446adba2fbcd0078e9ad7dac7aa54d9d38d1603a0707e9bd77fe2a41e2d35fdf5d1c3b7a9c4a1a91a1d6b96db95e11df77af9ad3511abc41a8f84cd1e8afe8b6d5bf43a912c3ae871cce1ad968f2736dc856208ed8802a42b164238e7529570be8a3b57954d9b6409727100153df71d3e405a633dac6668440919fdf6692e39505a7dac58268c2b9eaaa0dcdfaeb2ad38d7edc13617eff27e365ca2e015f17804ef7204158fda049ebef27cd80b4d03416cf0d34fd1298440c807079aeaaf86951dae492efcf43d9bf52afd9eb2e2fce0c644f4efa8c5e74f612537d809a64f68145df78d458908e0e8c8901e340e11fa5c0ce78cd7e2923a880f4f069934b7de2a6eb076045b7a3b43a5fbb9e56afe3de239fcff2eeea1d75e96c64779d9713d43de1efe523bbf450fa8236b9b57def1cc381a798b3b77ab02d8a3e944d388932eda80f5eb542b6e275d8c6cb92b31f8bfc0454643dcb9041e0069a0b8f6ac1c4600d4f15543fd5c25453ea1cd5a3cfc87bee71ae1a955a60087ba5db2773fda9c0acfcf22b2fb0804793add6d44413930eaf6f9b2d8c18433da6ce17f9f5352a9922741be5558c3d4eb57f9642f9774ad449de5d672226163174d82c5a00157f4b69d3d5ec3f1bd5586fdd9dd1c9f4e50cf4ab7d60201c7e13c5a3475f6ca877319a845a2f80459d7032b0388742e101c26f2831b7dfa78dca4f3b8a127cc956fc013dc068498901eec716d8f5d8cf943892c98bb435a0c3440512e10c3c6d65926549309e5a83b391b06b2b5e8f51353382527557507654dd895f0b83cee90de518228950d141b968c3e4ebe116905b3d233f8febaaa7e83170d50227ad35283dd31ebd69ceb7352e3351cec82285520ae8d56d6f597e52e360cd9586d99eb3bc1f2cdf1a1917924e58d2db1a813024cbf02f5d0a3458fa55617eefd30a5667c988984fc6e61849edb588dd66ce3be5a52e42abf0a53e93e0e0b92e178fcdc1d5a092f1d9dc9578f555a5286b112672ec8ff7a2aa7ffbf23ab5cc752a45e0ed056b3beb9711b28e415da7bb31fa2c9b5227d5bd30d56c910f58eec5946a15b6af1f69aa343070aa2aad6172a98875ea2f1b33ecacf8c477eaacf56231daba5e91a97f869e0b9f13ae213153e2933f10e55bbea8b8111fcdd68655ce09fd893862dd26e29cc24fede5dedb2cfa720f14fc739088ab28eda8c5b36ee7cc98d104ba6a463e8f6de7b906bfe165efc1fad56c499a64d923d20f49648323527dd6e172b34d79517baf2fbb975e4568c40ec4f19054721055fcb5255a7249c60528a816df084c6bdeb1986207aae2e6e2776bad47c31078891e2bd5a44495ffdd7d0a942879b33195fed959c30dc688666b718d6367867667260eb23229483123ebec5cd2d78e0f99572fd293d453f0691d1d72da92db5c84036e1a0bbfde755c9c1d18eb721856249db963ea546b4f2086f1f4f528c457 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 734d8d45cfbe6e83c803eaf846d852dfce848ef4e504b5c91f774f6f6efb5107eed26fd203c486f73f40bab4c1dccfe2299753b96f7f9c0fe27cd6a83bf4d75a385782ab804b5fd972fbf5bc553eba8eaae7d7a7162ee3395f9f6116c10c1dbbc20b31c326ed4ccea5f16df20b5584abd6a546ab51aabed120ecc1323fd502697e9e6ebdbad346fc43824135692204b49b5b377b97db7b28c86956d77b2e5acbbeeabd95eeca479988bc69ccc9975ec4fa345f3c525434bc594218aef123957dcece8e410a6d6b9eebed9adb4135b56f4562f343aaec34396cbd556d7962679a76935bd16b4b4badce4650c55c3aec9bc2e85b548b5d3eb891b6596f0c54d09cdd982d98bf81ac77c8da98264a719cd8568e58f79df9c8e965fb94aa773b43a7084fc75f14e91585f551347f00447d72d934bec553c02de4f4276016edb4db77cdf8c546af05861804a5b7e9f838744511ac6c8be55e883acb7775b98c4b4c9c8789aef3e7f90dfc4127a6ae879d03ce3773bdd3938d41c53351d8e7dce5abe4cab5ca31e7e7f7aef9c8fabe4668fca5298ed166f09c25bc5797deea44f55deeb4c436f11f957d74876dec169c4d5e6c8716b3ddec6c3f7edc32fdc52e13650f1bec711f4dee37e11a76abf08fc8fe3e72d564e21e6a87e9d3b58f1e379cc8e2b7f4b95d56e04934ce75d7e5782fd4d7c46aa9439836453bdb7d9cef3bc1c944e995ff5c48b5c80fcc8a67f3e6c53ebd303bf0904456b3283e9caebdde494ce9f8a3f0b432dca69d0ba9c43d7d3e1626f72cd6b904d5b6279c55a539b7e46a601b28493e38a2cd9ba66d997c8c5c3b773e822d5f9fa48835f9ad8f3236e5e96b9087d7ec9f36fb6895ef0048648adf5c933fec2759c8954dce7346e4b8c7a06f26b374cb4f8a6a7d67da521eba7233cda4c066886b8450755896cff77a369bc8fd4b3b5b0731452a908acc68366b8edba66d0a0fe3c943dc83a9dab2db7095e7d8b6c3589b09fafeb3e534646538dfab023887fc286f00f46f8a46d476998e4fe7315f03c2359f9247bba2a15f97a6fdeaa9cc6158458e240f513274a2e3359d671f6f5fd44d348ba2b634642faf6c6cc6e6f65afd2d8e9abaa48bc565ca0ab67e6cfab112aad145deda003b44bd3879b4f6fe0ad3a58bd86a713dbe353d9f3309642c0e7b0bad3ffac4d12b36adc49a95ddba67ce8e306ef6bb20b546bcc55eac2b815fb38baea9ed6ae7aa87e4fecbc740cd8e6a3e04ff9e2d4ca0177cdc3dcdcb97d386d3f0005fb137578b03aef5bb5e8a5b887d7c9d50e00ee44696d8f6335ea81a59b87cb7547f4ed1ee59fa57d9ad0e8a31194247a6a9c65443a35ac36f1ebfa6a8559d0fdf511e6ee5fb37800ad4dcaa77847be8c04894e50486acfc3b8feabb8cf860d7acf734b7d0ab83e739244580653699c5eb7fc440b8dbed6cbe36039ebda6ceeaeda3c77a25b40f96763a47f51266ee0e5f848fd6a3a834edea49c4c24692cb43aa22067072fac2dff7898f298cbbee7f9ca68a1333f1942f95162aef32ce78943dd4d17854d7d9c69f6640ef2e67482df28029ea5695433763b6cf3b86756aae22a37f9f79f0c46ec2ac68a7e11c8f5505af220d651595bff5a35b4ec7538b62289dd1204db91ac492b610538c93eb5f2637ad97dc88f0035ff3cb735cebac9be7ca78a4149cf10b6d93283050167e737596b711a9f32a0f6909975055ce6632f4b42cf9a2361cf69047b5bde1868dd745a82cf473ebb30d86a71793364f70b1255b1c2003f166683c936a7977df156a84051e69b95e02616dd3090dd38086ef3bc12353bad25377618965c2810fca929dfbf46f20360fc847818cf90dbc044eed16b3b9052c5c70a5a430441e53a5527a689f49b35ce82b84d6057c5269fb60c710c5731f431a970b86431125910277fa7c310a2285117b47b95054e4174a1eb11da3e3c26ac25619d36712b11b2ef7405bcb943dba10d50c0436b50de5b04d96488a38f53df37895ac20c10d959d81a29fe1f319ff871831d93c54654172a02e65599f9d820ab037438e62714be6c7d868b66ac03c31c8753a062318ca36b6e59d340b9696d47c38f115104765865353a05c8fbc4b0a62a96577e94c17094de259006f169e75b8919bb4c37df6787b59bec8fac999a90b73123a5cc8772ad67585c879ebe05b5c06afdb440adfbc4ad400d0e634822a843e9b165f2f0bb748e231c0e0ceeca8806046b5dea7cac614a5e2cca3767556448785dbc739caa9c58fac291a0bbe96e9ad36a4a1d9c96939603bcd76a81c040fba27a5a39a1c387cac9d1b086e512468d378e96039aae2622fe5483673850d411ab64b892f2c29853822eae76feaf5716a660b55c2020dd3323a150ceef9ab79925d2bc09cc6faa31727a5912a7f5e9051f8b94d8866c4da173d3f2a388e6c44218338cb85702cba2f602c24e1788158b0129e7c15dcf2cc6ed55c54b456cacc07d179b432a5aa63e8ac59f0b6979a833d99c13aa0c56cb65928032e2f30583fa6c038748ceb77a91c631dd09b575f13126f1447cab00bc9c85fc7601da44ac5fea5adcbb599a409bb1a67b24ef438d750bf87a8814df22449c9256da1286dc623e81546c283b80cc88c48f003678ab35380a6da551ac7041cd5112d59d15a80032c28b61a1bb3b8a7267adf4662b5963468b3bc5918418f980cd7db3946c5a67f864dc1f3adea12142fb71fda590e070007662b5c3b8b31af169a092a2e466aa01ae879641bc4d1d62523ccaa3ed436cc089b2621456114215d1a9eefd1016dc81d5320956fd942bdda40f3a033e5170ca6a2c57ce17eafc97aa0959cf37b92e789636f159faa827ddb895553540d52a61edc1b3dceb22a7231c48037cc78594718902333d0bc4fe6b29352991e2ba5d31217457007057b9d3c07c39b7c7eeecc222d4415d6d9272ec50b81520bc607592947c86d2612e434c22513235536cd08f10022b97675b89f1de58130eb6797380f6b68773dfbba0664bb7caac84f7b06711587c6ecaa383505f62751c8346bdd502a58e9326e4a0d2d29226f794ad0064b2cf0a56e6a67c18b331f5537d2fc6c3aeb52a5c3313118cb7d159b8372158c1a7bfdcb65d426458edbcf8797383e272d3b18bee68c4d74e25751ab1ce4567d66b714cd62a8e9b886baa812a9f50739e30f296791414727d55003bcb52ab6bb74cab215b348ad06f974192cbd61576baffc815999ab8556583024cdbd1c4398f4a4ac60e8cb68627382a145f91be9d78fd51ba5e3fcbc3155b62bc07751dd3dbc65b722a8982d058e27d409f04f744551ecde9015b62607cf67bb8ececbb8e82fcc97ca60ccb27bf6938c975658aeb8b4d37cffbde25d97e561f36c219ade +ciphertext = d4aa3d0de639a1563732d6f6a1d0e8dfa86c667977822bd99f7fad9c2996b5b0593aad975d8a7257c68209d80f676f7083b5f2d2690067a9c639882955c4717ac9f64d01676cd1656a181124b299010cef7094772a6c83b4dbc15320a22b02de44da9e532064f3dc3b6e1e540cdc168612b4271849a1c48efab76c3614c173d973ceb61bef391eecd1e3bc8aae662c4d60db2f55458f4d13c56262961268f714dffdf907aa08a434d7b897d1ecfffa32f1c62c3487adbc6f3c6d6dc38302069e2af348d26b39ada73b2c5d927eea8ab080cffe74c50f6e2a5e2bcfebc73ec4f100710c2283b42cc8f3db9609bbe487d0ab933e970cc30d3f084b179602b555f797bc53a49d56a1ca53a8b0e539b2cb41a08c306a162b902f0e8475d0332ae8c2329b54c45314b598d11be48fc0f9ea0584df93ba3185c94c063968c914e390fc7b04202936acac5c8a7e7677374f62fbb205467697881e3d8ed60b0f3730eadce1d26058e58f652e4e00b9b8c2b94102d1fa39460973ca8cba348cd67c20aaa1cbba500a998b50d1b0f48885edf46b79ea816bf7b1831ce4297a0330521bd131a9e5a43a5d8676619be7a45fe29509179d8eea1d0afd63a758817c3c5ce5076f21887a48fbd2afc142489768ca4bd0dafec9727b1fa77aa1f977f7aa72b628290265d1d3a904f5b4c22fc313f5f75d1b8496b2195742b6eb017eb8d0c4d40df0913a7ca9dd5427708bebdc435ab096d6c2cace5d24e8dac647bd5e7e8060a81a379abb478702341f0376e2ae70de9a4e7ec6213d61983713fefab2e4f7e6611174fe4c0578435cf87fed3171ae5488bded533e9e4a057c6c79e37f93f6727ae9269d0c96bbde650e4163278b54ca865a38ad0ec3a04ecb2eeba9b7f1d55c84fffaa5603a662884baf8f715ea6a30d5350eaf6b4abcaf7bc2a3db44bba3f66e84d7c0ba4afae3950dfef27985198533ca5af7d59b4e89f9dbfd29688978c0bc639dc7b3f06536ea66fe0f7aed7d5eec6acca1ed5d13f4ec5ee9e94a7682d803477d0b31ddb77daf14395bc54cde91caff9dac3cb641a1b7354d1fa9e90756bb59617cf1108e2bfdffa11bf8e6565f7cf3df3501a2193cd03047a7e7b44aced6ae6381cdf440b7ed2efac1ed5f6889d69170490b57335a01adf88fcd6dfbf8bb1e7c97038b13e81f018868ed52516f6bad28043d48abc1bd69d93f6a192d3264f38fd693f5e9b43a81446079369fd8bad5197328691dedd297ad98f1684a03193c6e6ecc469544463a70157f644dc14c341ac3943f3920e9de4a96d8091b282ae5fd5d9fb3bcc94357a67e0f616c6906e555d52bd13a24b05be0866e43ea957b297094f34a3636d3d9453a34b6d1565861fa67a746d2fbb598a6f1aad8b2c7db65043c5b7bf97eca89e32588fe105aa6ce7e30b687194169c4fdc6729079cdabcfb0085d00de34ba57f9d8140ffe1087c469d7fd5af5242e096e18648866bcf24bb5e68bec64289ba207caba330b6c8ee82bd43bb71fa96977909192ef9ffd1ccf +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 549ad1804af31ca6384397fabf16b2c4b9ab7407a093b354f898fc6775bacf2931de0a501c5a7ea7ea5c3bbad6739db9fdad59d69cc6de9b772dcd58470544b65be1abb77f490746384b83283740f18dfe18dd46759b61e85d30f187c2293d45b22b4f9f3ffca44980dddda42e67d4504bb3e097cdf93a99f057ab21e3ac305666710c3b4c1b750aa3ac100da6f69f770e8d82f6157adebe70a956456c86e6c856657835970578b35fa87d8f79c2ae54ad378f3c6a13a4207453ff324f18de3d43b4d0a32dfb707ff4e70fe42cbe4a32fa3f10a446d7944428b66e0e1ad4b204c5994cd3c294927d6d540f836572793c882537643fb64e1d9bb7273147a878ff1bdbd38d8b631d4516dd824d9da4e249b4ec9cdf6b67fbb72eb7a84d89de4b49eac5a3cfc6ea5d6b420779a29e1c5ae98ab30f0ea0b45538caae4ce61c4dffa27a4e56f757a3bdf01cd206c5bf5243e32c47b7111771daac633f3fe32af8fcbe6e6ec92b4e9d1c88e7285b84d9a12e14897b1fdc0693fe9cab42102ab999838a93a77142eefff068ac13dc4c6863f8c7036cd0dfd87be9fca5a675cff4dae4d3fb28eb770ead4234a456eb889ef92a93a0d3ada816e599d99cd8a96881afb5e54d766a9c81e8af4f15cf95283c333a0576b49c569c99450f97e4160c4cc4a8f8090bc2ca49d095ee4bd6b3d11a6cd38f19f7fb4bad3854dea9f96feea9e41c564a91f9c86dd7f498f89d06bd47461699fbba62ec28698e273e2b8436a6eb8c9c094d3404853a55e3798ec69145ff634dabd2298488299331dcd3b1b3e06f34fd297e525587888e448d0f45a6158dbd7e377dd5b63e153d93fcc8bdaa563264baa458649ce7fa5826e4b9b59e59e764ed442e43c5093a2a5bc5b835535fe7395ec556bd467a10975ce273d4bb99fd056a6ea4c5ce09dd33e9334cf7f6750cc6f209caf1f7be47ac875c401e95d9d991e333c7c25465176b8a566a71451b8305f35d831a36c57c64b664c707f3bf08b54ff3847f1ffdac4c3fba7d563af51ff8b2957b8aa5d63a65bafaf86609b4bfe21f7c02acfeb224465e2ce78c74cb5db4c0c2aa46456761ec4a528bbfbb909fc121aeb78aa5e7a29c8ee408ae7fab4fe0be941cbbae4c3630f407a2c23c4d10a58a8e64546737e53e6e766e0f42c523f236f637b83f3905f4a7812ceb8019a808946c11a54f8ca6c16e06ad9a685edb094616b8d383a79e482c61186dc2499885471942671dd722743347de3c8007f218cf5cbb48490e05789c6a5e85ecbfbc73669f249c11befeca037dfd15994cbc450ec4d868abc2ffad5b5058429b7bd4ddefc4e273da13dba2bec9be9d3db9f90b45aa7d40a20ff8200ccb4a54e3c9bdc5b169830d55ebc7993eb3d5b4d914a02d3e83b84f3d622deb0e3ac0a3ae86741f6f6a6eef27ec55e28b975f2fa8cf9ddc37473cad7e788b4fcd3acf6c176c9c255c4355b6fc0b84cda348e9a1ab6c07bbc4f2847aa23a600829cd516485dff565de9c39289eb84bdb45813f6f5128556d26d1017ffaffa2756e1cbd0a1aef218adc198a6dc043b1c518e3bcfb3c2488a5c02c79393b65f39990b72df74fa77b814ba93784562e0794c179549fad927d9b4a25949faea67e908040a25908a7e33199d586f22a3cf5a7ac49ea41bf83452528c7f12118e0685b09d30947ac76f4f72e89bbb7579bba13d3cd4e262fcd385eeca8b780d7b6d3343ca7ec1958569c49808b97586c263903989928ab9b63efac00b27037637897556b8aab33198c144d226ab9284541400138e03a31f10cbf1cc4bf633c3ad70c65218c1b18770c91d139971574dd90317a421b8bdc56c02c2564b2496793a27a12009ecca141aa337e911f0b448d913394ec1abbb46a568ba749f0fb0a2c4562637a220225a0afac0e9a53ca4f506391d7483932814dea886c89879237a95c03684cc0c2d2701b40e5b3a340316159cbc56bae84130f2fa830501257f8a8948f482ad194ccd4f6ba6c01bacc4c1b9c3188c3d002f8f18f62393b373396f6c510308b6754b8ca81f53d5a1512ffc3428a6c2a543a61fe1193a86b97b260339fb43a9f0375b1c2c62ddb4c1f6629db701b2d2a50577cc7d5d55a30766400842938d83a6818a128310d16648614a6b6df6b5d8d9a8d0ea4a127f4233b9a50ba539f5f01b62513a5c7bb8ead8463c0a346252c94f753a34751b078a06dd785ac6532c2730caef7249515514f8e18713c2a72d8949de781c698e708deb35448ca1df99b8e09ac4faf694ca71b7bd41bb7024c0435424831424f680a77f13506a56c97b6966afac4b90fe60bf5e7507e6a7093c47b5f8ca47d86c767455d645c502d82cf5b1ccd8880758bea855dc71b1c98494862030202c06b935125654ee498a7e7f37254084aa1795484fa77926c8b438592f4d7baab58978329cf12f461b1f93aacc7117980774e12355af27e506a2ac63c4abfe585b2123e2404b9ea9753fa101604663d07e153c07b743b23c56b86a91ca34111803a1f5865e47807c012a81885104495499884b495ea3f457a2ae1363221b2a94be84e27cc9e8bca44f8fbb92746821782b3b92b1bfe87127f34076bd4acabf60e4f9b97a8f63008b584d0221af927c67d616bb9933be9486e38d7befda11a27175f670600041a6dbf0c9a4364b3ffd28eceeb0c8077c3aba19c6123a20ca72c0776aa8e21a582168591c7c1eb146ba820c9ea1aa3374625c8744612bcab37250ffb34a89d305c35169660dc9b09f7c960a4c4450b1a2e56088e8605fd75a35eb620c3c90b93fb001e03c006a15b67136ec1c354d405a61014821fa9590dd212cc6095dd011bd8801a10f08f15da21c14cacfde606ca02b7e2e1483e3514cc6bc88c2987587458d77851e476aea14a94c176a4eaf865d58c033ba2280ec0521bc53dcc3772d48258593a5a1f9974228652b8cb4a08296eeae869c733a316d926d400cbb09a2daf532da06522da9694cec2a29cd4c87f6a6c837c6ef6182a30548afdb807bf447953a3827db3122bcc7e33576a33a943492a61f3625dcf412793996c664a4664b3666c154f90b40c3ec514c4b1a2d265a23b897177342b76c69637d52e356620f468480472923313a658683566dc8f8fc1079f248f9d8ac67d4ca703339ae28a86edb4bc21db231dfa970249aeb1e2138bd4791352151520a73b0792a0e77d4967bc8b46740cf5599d4056f382c9006b79938825dfe2806cb6afe7523d940792782d978970256c691434f939b02c14f42b1874087ea68917c2f3e31315e2258194391b7a41175a41c15cd995ebc69c83b29e4bcea6c186611dc4a79578e37f4cde950541fd53a8a47aaa8cdfe80d928262a5ef7f8129ec3ef92f78d7cc32ef60 +ciphertext = 72251024f554cdac42bdb223557f2c724beb9df0001783cf348f83294177c086dda8f240a793f879b84b7ddf199fab6cc89a5c1a5d9e72351a6eec092567a7fbc0f588b970151d55d1d8391783396c352f1842300fd934a2ad4a2627b455e47102c45e3d23b5ab6cd0db4b40f689762c36d0c90ceb333820e736fcdce8f0f683a3476602a5f3326fd6278ff073cb5833584d8a5317bb6349b6d4a0c86b4adfb9f3e09cad0c35acd652b16646150e40e3653e230fedace908bae8b9411a8b344b90708a468129781f42dfab8476b654ceb3042407d8ba005d7577976e6b5f918d53d3cc3bfa1426633efd8a8a211c57fcf3026daec0d1b63cb874efe2f9b0b90bc43421c39b17884fd1adbb1b7a27189743cf9b785692d2afaef0d8d7f3dc84cc0a04351085550a53cd764ccabe0dfc376dbb140562d8a923fc5d6478e5fa951c1797673db456634f948f840f534f66739943509455deb3e1b7e4249f5b35f0ad810cec14e275f9dc23b00fb89fe12c211f310620ddbb24871a15eee57527e12764f45039695780f3eca702d7cfd9cd85b2411bc426192d6e9b77d65b8bfce6fdf610564402e8be61831caf75fea911112cf42e65ac431c891c03914c1cf6cbcadaac24f654b4f853de2a7ab29f7dfa52b91efeefaeafda36feb7868b4b28f8f987b9117d5049cc61d41b253e4ae985319210509b25be27e4c1a5220503726318debc86321cd1fa4158b1afe3f1677f1474ad276e7adb6ede24cd85a67023e85acc924792bb15a4228bc242426b72672b1a443a188a2b6f95555ae0ea41e1e03a26ad7f7f3f0d1629fed1002e8477693f97d334caa9b448e0e09e9a1216fa03219854beaebb0e932c4b51f9c7f8cb869b05c5c401b3de89cb08b9bbffda04d6b675988fabae97a16c5991a9bd62aa093bbcdcb80f5251def293ebb350a4e8834ecfa67f716f4553beb0731069ef5ce77af83f29cdb75309f8488a5eb7418677b4cffd27415d4057aaf750e9da84445146b21ffbd57e3ee5fe3cb0525a9192539ff44581b96c6ad6131af9578b2d82c0d5a9e9d165d992f34e7f24805cac07d6595734a166e946a7b0e13e972f3a4eaf34b82e5c04f10dea2b31346d5b7321a718f0e162afbe6f80388ff18b4f3d2701e17b9ff3a3b8d62a412b6bfca7ffa618ec1e54c150e2b7b7b94a1ef82bad5d6659b22733105632a0949068b2b78751a660567f1f74f79f81d4bf35250fe1cac57c4bd5bd2a759b23289188444645af0de21274f92c5341781634c9ac6548684a9ffb2960735aa2562fb02562ab8b86cc5cf544e71cc1348f3fe5c25e9bb086e40773b2a860a12a35799dc602a6140e6b29a249aaeb366b2df08fde7ee87ea86a40f195b179bb355a61f71c40151a3e4bfe5298fec2146b968141676c9b24e662253f5579523621cdd775c56257f1fb23bcfbed0fa1a7381330f678493794a0c6d79c26a2171709f615898ff6a71b2af60e410b37ebcaa0de88d54081d6659a670b9d4c2967364f2995e744c884e1832430 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 944ab696cf345bb67894d451ea2a5c9266ea5467c76945f379a5d879899c9cac9d05e89cb37f9b2bb477259f3fca357623c69643569d67aefb2f9b324a9d8090d4c5f68388a624e163c931df53dd7039d951bd7de51daf914cde5b2e5c3059785ffd5b824545acadb95f7f79d1c5726b59890c9fe31d5c62e8b3be33c8d16cadc322cf48a5293c71eca570c9536f958b84663b1dd5bb6f37fc3f3def014aa3ae05640ee9f200274d45d9bf451dce8eb7fd680ace1efbd4cd9bd02df7f795db60681bc9ecd387fcea796ff77270bf9877f895e693feb7fbe79a5956499ca3bc03f93fc8489d494a88668e6614b1f4a8f4f12a448c3ea4297ee90ce3a9f73c6ffa25622d7a504e0694bb7c75ef7ecc8f7e8ce9d57ac87ae17227f1e628ef157c333bed98f8a6823f765b61fd300f4733cf75f40c77956a7fd213b8a33183ea7c3e937104becc0995ef67f5536ead9b246009f855cb8faf210eb25686dc1553d74e7db3c588f79b45e37e16ac2089a4c70d38b877ed308964b69af211187154746c27f59c8105981c8c7d0ad58717978c01a66b5fee697188bfaac9b9289ffc940c53814d9f38459f5c4dfcf7dc9d6be8f3a13d8b0da45c35d541d2346baf4e73fb0c677efcf6a94c4159bf8d4d7b4b106fa4ab06bae0c4f209bd99a174bb4c58fc7d4feaaca49c4b5e7114a5cf408750e8588545134f83a67769cc6e0c4e3bb90dc040a3e84625a7ee34e34b8fed60be571ce8fdd1d7c5fa1d3e0c2c4416cb775baf8df48643084b391edfcaf49f78e9b3ed2254871b27dae1c6da4e39b1f5a8473f68dc7153caa1369d8e9ca38176da57ca8d2533f02816767ca8cac19e4c17fecec8ea4ea5da930e14d3e7a876c49dba310af60d946a2eeaa479888011db7942f7676b2fd338357bca38c4ca5d88a5ad884b8b4c14e9c09e93ef8aa658ed77cc175ef4cb38ef61856bd6c965b6b6cd61beb1034888f3a7d555443f0f5cc29d9ddf5798d6beeb4730ab9af4b9beb8a5d2ab48761e188cb9aa95ba06b28cf4b89d3ddb2145a4339a53406b6790b5e8f559d2ecbdf30a9cfa45447125b733101f645d935e0075ecb4996e395543b7e643137abf3df59e042abd70bee92716fd74dda107ba6fea19d8ff6759aa7fc11e864ee739325415ebda558d4b37fe6dbfc337747a7ef46f5ac872d5e5f3862ec09f2e495ef98b5adff961e5a4967370efc4865f06a72b4e464d37ce4ede803cdee7888b681d45e95c857a47b764c6799a87ef7327fbd403a3ee2909e0ee96f8aa43b3346e5bc1ff51718df4ae4ea24e3c4f15b99e72f536dd989c0335f25dc682e47ee640d99c165f506e687e18a883f90882057ce4385bc08bf8f616e8e1a40bfec93670945b7efa17593c4b7bffb76f9b8d5f533dc50b065dc77b409ca8cc0c7e90ab6e614d5f8af3deac131ce9e446fe85b4d693a87c00935a887b9b58699777453d8278c445bbc8d225412bda6fe00f6207e3b2086e3d2ed74c0867d7edd555fe5cd0b41bfa83baf19cd643f1d83ec00cf2bcf94fba6a8262d959c9fb34603ff1082c40a26dec46c55082ebf70933db0419d558cb6d6825e73525725d8cc0bc93c881c99a1614e757d6a05ad7ea15e887eb14cbcb226951857be4b3bc2a1b578b148e824a2414412a3d57c8213793c418bf2e0803de4a16eb9c8b5d53718d38ae40299b89793f14741792bb10d9c21d5f06633aa3cf1cc78d0dc99983076f8756b2f96b2095e0b812160fbb9494038a88057671dc692f14a956d5e6565ff752d28237c70b8f8528cb1a04cfe5e6495bd3b46a3264fd7364e0d54f2ad27dd27b022efb3d3a632a7f99551bc3317250207f2658f363164a9631a34b468e9b3c9b34b27a3a02fcbacc516469f69b3a51554b93e05fd6dcb098e8af8a3681ce89548ca311e2f5421ca1496a532366435cfd56a26a245ba68655db99cd113c1ad1170bab16a22bb3399e45c6a9ba45b5dc5da04a426c635c844744c557af7e49ca12437cf455b302c037bab4954627a2363020c4ab5ceef5aaf2e352ded62fd6a52acb70c84723a527ba34f179204b26ac10692822ac66cc56bfeceba65c33295fb805c596a48a0c59477405c21ac3edd2c27e56c19bc84d710584ade48647c681746038ac74ab73591fde872ccdfbc3cb1218fe12acbfec9248c00e19424b1fbca70fc5193151aae1415416ba2d7faa6a2c745cdedb94295438bb182dadb77182b2be5bd1ce0cc028b7eb71ba8cac8585cba3ca01620b63fc91bf3c210f67c65c92f893fc616158c104a5799720ab0fd907798f0678746475c8502029865dd653209a39c0c362258a266b1b244a4f42b4adc1c6bf602fe61125c3b989c018c0a0e0c73e35abc97c9ee695cd265909af82548b865eb4238376a6ab53a6baef185799489f64e200fb542ec3d1b42e8b3960e02730936d620360ff4570b4079b369a83629b599e7b27ff48c37f727a4f93bbb2d4b7e1c73fc0d6668e53c1efe0a0b547b1f38c51f4001654f45bf0e5766ca1c662f2cb99a6bd42a17f89c80a4db03c990a81ae9487e1a52c13720266083e152061aa08c03a7a703de58251f129546a42282515a3e27195ca97ceb39b00566cf4acadaf320d5c88c75ff310f10bb5ad738d38aa47c945235e1730b6cc227a194dcb04ce046a22c37319d910060b594bf8a64f2c4b8f26000031948046721e6546893a341ed2c32804149954e3788ea5054c51a43da89f9c789eda6727bdd4be32b15d47b9c327ec68422813b00950bd73c96c7175274a5ea8bc128a7c0993031b4e8a5d3c074d2d1abde8239d5af58c06509b24109c84297e3feb447fb3926dc19f39211119c4597711a222b341cdecb0698580e422a951db2305d4a7a871967db945a60439de206955c371ea52452f865da438130d2b8eab3669a97911258b08931a2e36c6c390b6845e8076a0d621d7692971ba71bda0b8aaf7ba0ad3c4f05ac23621a146c68bbc501854062b924c3a64916a1b9b19ce5b466f8672ede621ea987f83495106dac22ffab6f4a5cca797587126ce50589f68a2084875bbb505c7ff46922eb496da260e3719cdb2f23950455dc8d36e3932518bc11bfcc067ac533360b86550b6ad09e93dbb092be410721d48bf56b3594b93cbecfc785a5852b598425e4c4cdcc7cae1907adea5772276b2929b9507db5c06041e5f9846506055417c6fa091652a4a424bf6396d46365bb40601e3a55801b93a1ccf39126ba7f025a2467f6d44de229c527f6e4e7071cb826cfe76fea483d9163eaa84f6afac495ac5dbd68b3a8c148b2e7ac049bb986e14dd1cebfa1cbf3edd6bae85a4d2dda082be2d3c64d38269a1ee8660b9a2beaeb9f5ac022e8f0a357feebfd13b06813854 +ciphertext = 6416527ba23e80f4837873839feff13b3514abd118bb91d6b361b9bbd9abad576f3a4d8db28cf4461b9371ea96971269360f966cd6220bee62d94f3fdb9857fb66b0a9245fa492d68ee1a9e8e2a49f1610391349377d1810a55258b3529d1195ba41b6642b7c8b5ee3e14cf59216a870790088bb0511ca47eaad07326f2596cb851b00fae41118dbe6f0e3563fac9345bccaae3f1608f10e0541022de77c2f820499042e3e0398e48e8df6cef984c91675c3ea283e00ba9f12e7f3f0b5a4e9a958d648afc3e5012af630b6b64848036d95bcdc79c5d1b11bad1327853623309c5d0cd670a65d64a3737817f5961cde07a2d4adf8e4624f0cd88494b5050ec665fca1991384f9bc93e0c3be752f94d4d0fb3908fe8ebdd8b8a9968c00c4482ede3f60eb6736dd4e6a33e44652e82a4cd16751b760b784bbb778663bc514073a93be9e9626c7979052816fd54514611134fac5a6a7ad1b5c8363336ad8bf44f05daf59d6b66e28f86d1ccb6a776622114190dfdd65f5088f82f6ad4df28369d7c9a7f67f12ac36f143d9e2ebb990c4f87c4442e81d16e8753457183dc14b0dc1aa803a4b016af2bdea1b90e888ca5f15f5e0780fb6ccbe45071fa6f73035a547d1eb8318f735b15b9dc465e6938f5454808358bc4444304e82397db3d1f2b06fb5aec777e2922887408eab4804499268829b5b94e66e75b01e4e8ead235be8bcb68c801d9a92adad2abac3ccd87a486bb4c17d6717d3f679e0d8d549af5c8fad6a0a398b395a57715e8a7ab3870a475d5c30b917d24e69bf0c9fec18cfeefe54953064a1c56c00108f82df8f224469e2fedf46e2a8cb3a0105a3542284611ad45433f7782b9e879f483f4d5ee87b481f8b353741b5565edab5b252c73988c705d7adf1c3f2c87b2f9bdcb94ca5e4a0c5aabfa3ce67e8cfb8f79f43dffb385d8ebbd4e76ffa8ab641a3c8f3bb2291cda186160abc78169568e7daca87a9c536d8a7c345ccf8046c38e165488301872b1d7ca223782f5acb7bb664ad8c7448beff305147e7bb663483899ee1a4c481761f7b65bdc9c0d4396514d48f22ae383c39c9fc650b7b7f166bbdd2ec8bc54161f7524ac69a9fd9c538f584a096636cadfd633d1e64d5e89246a08a51a9c334608631c2687d63836f6fb8dd515bc7a4e769157499638d2611b69058f2615527a04f4ff2b60360e46e34bef1c8e57d499850f44ce7529e80ef0980790a8925184b4b22049b356f4fbfe293ac054d63985540cacb9f25e9180b626bf1e3f5bb3f413f090f5d468402edf672da22212f2d1214b760944f57d3c914c042eecec08aa5d2944fab51fc833d9e374f2be7c5fe94296c0df98392592e0a6b183242db0b124ea728c44a5aefeb2ac1c1437bb8ad49fdacc3fc482aaef9e814a4a8010fa2f0d0cc6a88a259aa8c09b7204e09a71fcf5a0e7a801c3319369cb933a57cbfcceb64f96be35598b4d2dab925014efb66247362e5b61cd56471a3ce4399ede77b09879ee29fa51513d4532bca164dc19be35bb7 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = ac65af9fc8b906dd9638374e58c551da08ac4ef86a90fd4489ba46294ea85e9d7ed0d7de1a89d297bbfdf7d6cdfc5c6af523e44ebed5deafc7600d736de9e564a79668e335fbdca1c9e3e592e73d60066b95aaffcbf55474f9c21cfd58f12e457586766fda4fae6fef64a4dd4a3fb07ad8ca7e2ad6662730ea7ce5aa2cff976f552323e76bfd4fa4a989632de492566adb8bbc3fcd4f9cab9ebfe5860f886d58afc740ad50a46d7a8c0998754b417c9c5ae2fc3f829cc3a2ebb1e927ae87b68c6db355f4c661ce1ddd10d6bc31daec249a9b3a3ea4d1c57904dc6df923839d9a90aa2b93a87c44b508ff6b9f5d22e679438d64ffcb9621067b75477fb7e5ea1d3b9d9df4d51cf874ccfce2976562752cbfcfc59f57cfc60b8b4610a9bb36f9d19b9745034d7d57289726ab8a38d7a6c99dd74a5686619abfffa5757dc79e144940895e502beb8196f493f4b7f4b9d681646ad7b193586c6cd5d9eede2c968bd35eb8879ec368ece8d08f70dad3c22b05da3db4cf05668f8c73e5c0ea3f55495e784ccd6055ac451363fd77a91686ad77c5af5324eeb5e7534fac4de58e741e48b4154dfe4743789e35dc39c45c0a15cf42e7b3631b6a8c0971c8a34b830dbbff2ed04bbd6bfc5949c46e5b02947c73e7a0717c6b61ff679dbaf1afe4c55768a08f8de05868aa6ab4aaa848c79c0ef68849d7b9daabe367afce273e2c168aac0facd27855e2944b67b938170a9258f6739787d136e466759cf60ccb7da226b5a956925157f7fd48953d6f959c88c8784a8a5223ec4ba5a6d757b4321d48b70fb554e8ad50abdc13bda64553cd437dca92f36ced2f7e17bfe7c769a2bc1aa6c356a5a39c69f4963ba6273db933ff1d9af8ce65b5b9058f1b9ae64bbd380d4fa8eddb6c2b9be9f26b557c387e4db9aeb92c4d7d1afca1e35f98ed5cf69dbc511ac5f0bf357f7d525cedf7b36c6781c4b86c0d69e7b89c8ca643fb9990ecbbfcc5a8a5a6bfb0451d76ce934d96bca900dfdeb6e7bb093675e97b68894bb03068ed8a1f3643dee18374e15a76ad1c28eeed4b691bcce5df28fdcefddc71f8685c7e883a184396d3475cbbcb674360dc14c42dd6461514479c85557194a97a654c4be7620fa84c59db5058ad886d86d460cc4a3b7e3f4fd4bdebaa93b943c48e63480547d3ee8e8fdd9cbd63ef46c0b69a265aa3829ffd6a474c5aa530aa63d6a0c8572d4e3719af78194367405789e1f749ab5ad2af87b362067f3ebefec01a83acfcf6a49dcb5419b351bc95e08c7338fb933c8e476ea950891f75a186c9e9f99dab63634e6b7314188bfd686d74fcf03c7e542c6fb1c0c7712745940f7b923765e46757de5b1ba2f8e34cf585adbaf980317c9db1147382946c132f3c3a45973b879a523855bf0ef2151bce631fe6dedc6c3457ca03a5eff45b662f79a1a7a5cefe9a846dd5774c8cfa22f842e4e465a953e4e036bb56af787a2adf102ee14397fdae74af706a369ca54259c8d578bacd4987d0871842b98cae2ac3b572f98f145cbaaf54569779b61634f060c3db2a58fdaf335c9b6dfcd328f96958c69607d90c7a3926c7b62f36a5dbfb87ea15e8368e55e8e94390b6c0f808b91c166577037d86b5c9a75157e73ccc2e138518ea98a246145dfb6bac9b2ffc333c0ba5806047ca9ba8ab797937000270e773c9863709e59786f8ec948ed27660aa3758e33f59140e527787fa74a2ce22a4a8f3037a26903665cbfe8a0677ec273f590d64c97f69f396db78448535746b43296bfa2bf0a251bf986a524074c1f96077f5219cfa9124d1458520993f627aa8b7b6a0f191683233e0ba6bde24561a666fd10151b0c52c9982c301e0970c3363de27825a5bab078848aa5cb75a90c1cbd24cf67a68f3417780cca947131e4573934f9959787b6320a4b47bb311048289e2c915e35344e3a144e2708893138a15a03fce3816945464c229c587093b5cbbb519767fc65c078d6c684b8b81c1f9cc2b3ba749fb3074623e3c9124a8e1a513510357656b37087bfd02773fb59157eb885e1501740483f3ec070bd492dfc217d7db99cd7c9d57b937297634c3494deb585b8c93cd4eab1865f8a9c8bb15dfe583c7dc0427274f8df3c693fc351289964a89a3c745967231261d949552e0809ba9b7c5d258af579a4515981e991d93154bcaa170491b06752415b1d52bc2a98b7f39c5b91a87eb759a9a4537218156746930a347a5026911adc0412f10a7a7c200a1514d500805c10a276c327e4899aa3f9b95d1ba2347e0140184b1235a719e6c4a3011576235215d77084034771129c33199b70774b2130898a0c69d8f39c3a50b273c665dcd8031b4454d144a4356b9c2b16641311856cb65466991b06d1a8a74a5aad6b5b935b65dba8374ee690cd1c701a5a28b41732b5f88a9ad919a7fa563bafb529885488f544e1240b3cd673f94ebbc91b4757444a302578aa953161993cc918216bc56ba53ea17664bc5b543a38c3516d4063c35695791d8821240bb749caf98896c4718a9db33c1a7e9b91b9b6d06fbaa58e507f8a105e2f71f6095621e354b3dec1f9c979ed7b3aab56b4741110fda601fac78c2edc386669118a425c634157875f61adf10c43d2184d3252edeb11a61eb67a349405ec74b9fd307558a887efbbb46c904f9469db491605a3582be433bed57363426055cc4852acc0317f24d89903a918875c949556a6a458fa3cfb5797d6a3a68ee9991d97a38e16b9a727c5b2e7b5e5a0029c1513d5a1a98eae78713785bd4322261d90109a0806e565ebd9308849cc6708b536c83a2fa35995c819d99b850251c1d50ea902a053c7ca31faac37bcb1b40d6123cc4d52002909d0ac566f7d75dc89998036aabb267c5aa70184ab4cffeab018f195f62879be0a51b42b843caf7c494c181c2f06866cb2287a00349ebb136747da52a3c4a3c581798c413929ce3e698fa594f019579ae329a22d4af66f27b46453f22e61aa6ec5d7d854ff6d3c3d4117be2145b5c2ba7a57ac968a5ca43b461f808167fb5a76a942c95145098b95cd46439669c00366960e2162ab613c5ecb151359b093c27c04ab230fa7c0074684996f44939c81fc31373c8231bd0b6679991a32a031002b257b2f31101317b3e2b6b28b8911e3991479444c6086110b7a70125ca71c6659c970f94d0942124c17ce3ad50d5a7019146bf51b012d1cfa0f59b220a795dc6b3d7896aac680adad383ec46762b669d35909a47c12dc8ee619e1a0c8915822d574a243f67e14104d4f021cf95bf33271c9bc962e0447f7b5ae8a806b741ca5c302230b555c3786c11f3eb43894a8f45e3f7b1a08ccf451b049fd51d7a9ad77ae14a81569df8c9bd3a8f1ebea86fdcfb823082 +ciphertext = e87c238704de82f3b46046f3501bc2f30e57e653fca6d1bf693945caf49a924072cbbb21838970324ef7c44537a67d90dfa64ad9048fdcd9cf15c7cf55af3155afbf69a498a3deef649022a61ab18ab3267c38707d732f479fbc7021038b52e0da50bfbeff9208eb6c09cd5931feed40a8ad8a6fb95fda48a911bcc1dff75e952c1c4f8d66cf7a6c1788de249b7c559c9584781ee0814b9af67205d76fb32df7dd1e6bcb11628aeb198fe307baf9db66158019ae9866263ab0b7bb301fcb36f5f78f7a70b14e8c75dd505bd204ab79519b563572b14f332f7b434733dd3dc06c968540585f07fb2533c6a4599940b92f0afc09afdd0f0e74c13368267ead2ef18b0f4c0799a6abe14c5fe16aa5c81e9189b66c8b2121e4b38422de375272e296bdca2c3632ce6e8558dc8dac44971fc55cbd9eeaa9d91f699ff664b0e8eb096cb007556afd783beb895d382aeefe1a6004f96f48cb0adb49a75612235a2ac318c9ae11e6261f2b90d975d866fcd1d7f330a44325f5ca0f792f3daf1035a5107b90bcf9907f9a3649ffaaf4a31b680184bb3f76899f834958625a91652485d84fe7567d667ba84e7d2c8bd3296a0d1b1f59975f92ed1c16e0e5cb83437a6b9d8c200ccc2e38e53d3ae037869e018958e6bb473d6a009f3c09714760bb2afddafbace214b8e119f0888f2c6b9343b9cc907633583a8495dc4178489e95dd68460b892c27c0897a2e6b2a9499515cc881673577683fbb28c8e7ed4fdaca6a58b8e98b78065c5a4b2b3414d144b17ba898b8c268afd0cd6e1c7543801a13b2218b75cd6ba9eda819bfedd4094c3ca7e439c1e9c4a8df0e6e3518115a3791d8bdc86bc712b613c7708d36f94cd95775334836f39bfe641ed8a4ac9d7e3c9642ba5ba766296154b6af09baff56b7da6c43c848b7518f445f87a31554c90054dbaf3a2fd1b1ffd91306a5888620b90838b7be589c9fa15055aba13b29e57f8b5dcd2dc7dee25d31bc977c05eb0012c261a5916cdd6b91ce7c7f3bc4662bf500d06374d59f0ee21f35cc04ca90ee4951350f2fad026ebaeae4ac28d36882b824e9341dbbbbf2b5406451c8b4eeb4defa8c572e9c83c6d60b98318369b5a2bc88af89dcc6120140f4c5caf432c67a6c51b2c47a3893f80776a6ee726300e5587bf3743d4372bc9e1e3a53bb583412297866c0174e4b81cb4d2363bd5a08355e3573118066eb549d9969205a61e8bd916be103481d0a8fbad57d13cfa057305b469b9ebaf78fcf2a333783956e2cb0e865fe4e9287eb5a608403b1353d389391b3ab57010bdb0838c2b21f8d7c1c063de9a27f4d600aa82737c805b0f0264cda08a3d315613f8741519e9dc16d7cdfab9816e2a639b5ec31cc7f66782f0e382dd1710be19610094c61230ab72f859ca4ace9a63e3dc1e101a95e206d832efbee6c3c1819da9d3a03c42100e309dee54b2d8817bcec51944a39aceb7ae0423f7f8fc7a55970defac02838dfbbc72f0a84869f3f177bde1e403784032e71dda78b484ec1eab5 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 67a93bb27acd00c9b95bad35538d9c39ad8480dbaa67a9584a56d346ffde5f48ec9b8f710ffe709cb5e39309e73467e9be3e44b42fea8608c0a59de7963387f7b3ec5febc6b6749e6bd9be3c58a9a77b53d786ff5854a3467a85941ca2c03873c0458b950f75e5ab85b83a5c2027894caff46dd8632d68a310fbc6d214381128528b375fbb8c3c7923ac6a8c7f9e37c2ea4c6b72e3451a2f761bcf74b5cc8569ccb93917a748e93c1913f0e4fe381e08ccccb7d903975ae25689c137d9c8f9d96b16a26e4439c265fa098e94368b36efe3871a7aecd54ca0c70974ac936e45dca01eef96a14c7d2075f999f6e841dcba6d0e71fcc4d6e14a95b1ddf517447bb947d996176bfdc5beb53e6c0ed34a1353ee34bbf7d9dccd3ddaa49e3e4659bb8d8a3f509addb06a3e796ce65c0628c817393bb197df1abedcfe3546d8bbc2519d583286f6f59da1bbca6fbb653ee1c3555203353509ab14b64cf9af9c33be70978d5b8d85e848dc4494279267ffcc485ff8b2c7d3cf08f00f39e52f45701525e79a5f62d705af00ce8dd413c12f37b605bc32eddef92b9ac99e4a34fa1ec8dba9decc9a3dfb37517446908c9eb1172a3d4f547b3aa642709ba40c3939734545ddb6b45c66a1a3e58c6d29f9e68febfc6a6021a635d86c8378d4a0ba68ce385b6b7fb983ec4a95c9cfdb3ec750b18fbf2cec89a6f8c2881650e5c7ea0135c865bb3fb12a4c2c3c917d655a2997984c8557edfe943436a9fecc5c858d8e398decc27af51f458334f59bd40bb0d808ff7417ea5ae3c9439541aee59c6e46a5852834ce67e2b3665018154c5339467e6d6af189ccf20c68c583c96d9698161d9cd3ecad4f5ab0a8bb8a7b68359b13e9078a74069fec2709a615864422cada3a7dc8ea138ffc25f2b1a53ed1d7ed397aded6b782c665fc712e6679bb4761b6d0644f76d553cd703897c6943a86aee2caf9a7ac99517c23ce6457aa069b6fd2775efb36fdbc27b02fe6923d14b048af5cdc6b86d20a55d96ed8ff276f121a352e098e5d4cc3f09fb3a1c4a38244621b055d609ef189f6941b59f3300bebb0a442a656655455b38c6ffded5640cd4e36df6cbf4c5bd65163ecd8c95281efaf13fc57c977bbd1a8bdd263d96ea98c3ab33a516448a94dea4b24eae213bad2f640b2d5846c99a2588436106d4333197816ba9dd2ddc427c5b8d3a6b4352d7b8539ce519fccda67a755d6a6d7e8bb6ccdfaf1ca7283e797f25ae043df9b6436ff2abd482b94dbd70a3d6d64f05d04e3dd6490e3dc38c1236758f65e462be1ca58db476875c79f508e7bb90c53d798ee91714e642d88506c17f55ab9fea335d8463cff4a1661c16ee4c946ef651b7c5f07dc42659ffef7ef58cb79e445536b8948142cb4ec16cfe6cfeda659c2dce4523473f3f173fc380ef9a75f5f41ed3d6c073e05476253bfb0483c4b88cec1fd8c972cf651eb9684fafba3f96fc861acd8a01ef77c14be7cf779081fca1e8877a499d9efb3ed815cec21f4a151b8860768405474e9a1c8b6ca4466389a3f6dbb69e8494d7b25a4eabf34a8e9f8a26b946f03d6b8a33b0bf8b3eba9fd68d3e2b4074788e69d1a6af11c3b55f8c654ae778fbaeaed750bf405eb362461c4a2e81885084505c3862c3b647d181805205ef3e4ca5c30c46a0c21eb97700b70c2bee78d862b3e19dc1e0cec0ae6998a7b3c4fdac39a950027fb2a3bee027a8e54b4a5b981bba01badc0b5ba6a36a2913f1c1a046036960790ce2cf2583e6c62a778290f242b49606ecf24b3a0dc023b22ad8945a0b8dbccc9356475b36b2a990d7435b12e1536a21079fb7802b998488e690f763646c3b66adfbc8161855b20ea18afd87229d05e60372694e4c4c6215344da04173559d7954b029555e6ca4356f6cbe325a39431a64df06e75c63ed0e40bb0cba6ed68bc7211b02f1165c370ada1e0acf4ab61c87cc32f7017b4a26ff8cc0784f76047316af6398ddecc0c62e9a37fc4ca685017b33aacf597767312192cd330b2f3a84e0bb858480a63a607295a39f61510dc2c6998614013f45d319858da8228fe5bb6eaf3b03aa60f4b721a3f046d3088671930672c61c92d6005254372d8081be322ccead06cdd472cc5a481ee385096a5b8ce64b57781cbfc4457e917162da007bd7bad8e3803e05b08876842d9e6a0a545407a5067ede3510ccc4478c040310aaf46051454d855d1a5521e2514af676846650e0043bebf453e7488b6db8aaefcc16e26a75c52bc0ef3c80da3bb39f73b9852b54d9c606363438c45dac4ff1a1913d81b9a80544177ba7db6503a04a5405299f80a83fb7135fde04f8cecc0962461c0e80298d219531c9cbf00a3bb5b84908b5a807739a63485128512c0478084c8964f9064cd4514ce92c30454ac25b48919b719c5a853010a2eb712b80975660456562c4c448c39162ca63aed14af7f28875149857f9b8965bc1d04cb8ee2e67c14a493a3822fcd0a2dba2677e719b8f2c8bd09431b82ba56007584beeacaa1f081d244b0d771bdb0c8033b18ca9597443ff8cdf754569dcc2dc4d4c212e2bbee88925ce73034e19167cc7ac46059cd3b9ebbf6bc3a476f08438c61971af139a248821002480f42c2b9c0979ad3bc6868565ca3fcbc124a7548d53f56b51c9f8aa387b59b07638c7aa45704420b3c24642035a7884cb42f877260c29697809aa7482e3fc356d8ca061c1c443cf24c4535bdeccb02c3e3b8b1d90e5b47bd11615caf849da5811aa743b9bd7810c470187e81af9bdb4d1307303f615ace2a58e7ecb3be260e9f7c1e10eb3a84f207d2e75a30c7c741ea45fb04a9473c1425f80a9186a7f2625ea6abb4aaea3bb50602df23acf8e452cc01a909ec9034acb47b969d904213f0a79edb7766d0290005c954a1da0155f7318be854fdb038d019c1904b714f0514ac331c3813bd703b45076365be4b47ec510a9f585907bc0f461a6befe13a2667593e12134a86ac139777a50ccdad16b6891a0871621b387684b5226368400164b29109328f672cadadf7648377cd11c9232094165bb1cf12f694f940c3cd784c84925ba74c8a49dc27cda4c553c85334a860a8a55d8a75969977ad1f505b9b20ceeceb24a262c707843310f39434390ea5315a67491f0592bf722a1c2658c8a720991b26561e14b178c3a1028003cab8b69f60828f47b876d43d3f193c3820804068a5cae76dc3f27f5f1323e6a2797b9a13c86713a83ba9c161899cf295cfb4a4aa443f32d16b72616a0db4d3849fc41a7a6ba87f4af757a0ab1956518f0c1d832af7b7282d8bd81a2237107ee60d81e28eb64d6a153ae0eaa1a25797c284ef52db5eaa6df8ec3a0bc5ffa730db0dde8c5f38f266d5c680a78d264a7b96 +ciphertext = f030991858a580b285c29e337892c953d068fedfdc83b1997d21c7cde737d0215a3629565b8b060f17033dd24a7c957bf76f490c814636e745689ec0582d17bae213f6986f88f9cff9fd86771b36320483b6dbb019ebbe8ca5642a4613d9fd3ebf436beea3590b08f411287b8a0a50a290621f0430364129c3ef1a5730cbb1ec741277965299bcb0b1097a9f9aeab4b4f1f392141897963f1f0f6768a763af9033c2d52988fdf794bafbd357cb19a101a11d0d35eff4039cc8142b834dc8e60c6d87304f5e1065cb982c5d1e5524d3f32b72fe65c42f8ba83be04f54a0d336fbb88a75e121a7a5a895e7a3c1ca80d70b2463b3b589fc35781cf2b8e917139a160522f88188bf92188eadd1c964cb5f2d3b14d0e1a1ad5bff6a0a5048d2b621458b1c088252b5410fa7bb8ba1d9187b90fdf216871382560943d7ffefb0274662982f83445c112a0015444415beb57bd1a6d282e097f0cd3cea94f92c761c54e7f4d3d27482cf2026d5e5bdee65ab969f8ed3d7861947bdd20a7b86b2116772168e5dee105c59cca176527e8762ceae54fc71bb2eb1301b0a3b5d77d26c4dd3326f5cd7dc535bd4e3846f3c4ca211c4e3e61dc276a0e6e1a5b278ad02762a2a6d48a6d06f73334ea229120a9a8ad71c6bef1beddb53478d1e2af606a955ad8d055f12e79b1733db11b67ee5599340e36cddd89d3cb6ec842dd39da1ae7b9b6943974dc24c497cde4263f56e6bc1dd309fe7c6a7905a6080a2dacf1c71d703c6e277c7661c7ee1f0e434a1241ae089444c31a971b141bc717bb10163af514547d7475191aae32d3adb8bcf0bc49f08b40b3860f2ba046ceef3e381675f803cdc9c4f1a0a4f8c1b5c06cad2465f6608ddc6f104494906e79faf03c3c48b89c613b016e7529e5e6494668cbc4092488c1238fba0993a81df3a3b46896a58a44848486429342f4c823c96de88c203c502df63fd6a58765a2ccf89dcdfc2b8e11cd8521c270ab50d3dc97e66a01aba506c713ac7550ca174b51efbe5c90fad46db5375f09ce999ee3ec2f30dbc5f5dcd04224827bee9fd94b56d4d5f0805300a3775c142e7a1e81905ba012c2e62000c9e2a6c2436cc919f46361c0287c56981d40c4d2c571dc7b566d189aabfb904c8177b52f525cfabcd37e22801e9025657245ee339a8f780d6103f2ebd613b7276308fb3eeb7869fe5a7038a0dca12abc39d0e6802317789514a610b265500855376207ebdf94423005af9724744fb94ce218c2c87e15107d71284157ccf6b6ed55d772b4efaaa4687f1c5a0da143ae00687c749a1e9a869cd356c04460868f581771a7e7da3674d221d074fc2d44edff15932008efbdf1ea5f6a023d1e7c67617701b6685f624448e4d2677638558997f0edd44c4ab4cb9a895044f00056c946e07936ed11aee915fe25038007ce395ed773bb281665b87920a7d9ecb49ed8e4a0d9aa277f7e19b5bcfaa45416a7437699ecad80b43e16948c2be55f69f99e7e849f84b92f45f556389008c1a3b89588ada52c7 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 0fcbac2fd83a9eeace0215c785ffd261fd991c2f5897e94ecf93368b79565b478731537eac74550cd599d5268e04af5cf327606686ab8864677907a3c3555018b478fcfef5498652d5259a32cfb464ace4c89bbc5758a9b53c64e95bc9cf3dc30647fd431cbc643cdd61ef5136c3919f3bb48b38db9d5ca0b21bb4e26edac49aabe00fc9fd66420b475d083e918a4a5d3c7a963a468fb7a86c128988ec36c34f475f2b87791f66d4863ba6ddaf97ee39f38ba79eeed5d96e9b336dfdb24dbcc9feb8bfd77ac888554472d7732e7492c33e302a073680c684870b86a05592355baf272db51ddc7b17c9328d7a74da6367d9fcfb87f9f21c297b5398cfb56ce0e8a68323aabbee8d6c237fc1920be90e7a5b959ad2dca5c55654a43c84f16b29f522ccfa2ecd5bf875d62cf5683993eebb837a3ed8c7369ce5933730667b7463ab7026848bc9cae4617bfe89ee7acb5ed9b5db56510b408465523307619fca752919b947eb40e5e8c19a7b4a9099734d648daac8c81c1c628c895401ef45df8a3248a9f73efb441b564305ec48ac3d5c69d37e846ac9b78af9189e5e82286ddb397936769be7e37fa8ff7a013d90c8ffb9b395a4147db5a39cd7c2d8314637f680ad6bfd4e6d8bdee55df645c625dbef7dc4cad8c6a5c564ba2571c9bc9bfbfdc2d12578c8198d4aee414cba5749e7e2556a537b4e31f4fd85f904773558fe2344fb229ed1ae4de22123d60cca4196f778c77cad2ee58b6f33d71a85b79d2fe5f0a7c8745abcdb768c3c36d42d09a9a0355a5c45745d1acf53dfd5b949acf68eab75cac74f2364406a43a84f69655e66fe167643addd16aaee859f9da4cb361f8dc42dd7d2a79364f1d664528b6cec667bf34dd78bfd6a0b48466dd9db34ea71026efe37d8ba3a45ed7023aee75f351af5e4b9efe7fbfd9a07654b0ccae85014ed7206cecb05c8f77d3f762c97db08f355daafcc46d8e899ee3ad8b3d5ee8dbcf6a1c2e74cdeb87d15236d70943dab8ff48179f890a548d7c69a14fcc1166fd2ca4941c4addb57a452f39ed91a94781c64a9583c8d303cf1484cc6159b88aa3eaedd4f91e097982efbd529ce52a43b97dfafa0b379f2fd6dc226c6e068c792f377b9f655940d73702e4ebc525d86e809f76c53a4c15a35907cb2fc3aff19bc5f984d34677a33b648322cc9bfcc6b947b5346e02d4424a6f3e534308a5f95327c9b35f59ecd4a9521f4b93a5cd31b6f4c1204dca17b9f379d8e462b928ad452ec74b84f9b5c1c69660038c85d6743f8a5a65b3787b574dd683b7a460d9a1efcb5e50a35244c94320ff01b78f6311673832ccbc1794feb9e7268f5323726698f67bdb41bcc023fe8929649ca8fe49393845dcbac7fb58582964405d4adec8e4037a39e512c3fd07fa22ac7de21fba3822b493df9983866412f0439e1b6e3924d42ca8f73913e949b2780d8133e13e632fd4f81de567a333c5d8ad458b848ccd65bc87a8b6b29134556a6780eb7b02e4437ae69c09f3d4210d5cce3ca3dffff61a809bc5dc44788bfdafff49f3f0e56e7c4f8ae1cbd339fc9d818844d47673437d8e50e6eb9cbdf7099876c26729f443e7cb3b9666441dcbdec8397953f586e3da45789c28969078e11664ca1554eca81b9542bae2ea8cc12b44e81b3354818141af0b494543d4674160a086f7e8755a87258e7e6a6aeb96955286924b42636e04583f74184133d8acb9067925f4969642f274085f70fc12361ff96c3130b143e23797f2a3a6cc757c97454cc8aa5d9c062f9254f4cc7335b44cb66dc712b4677c290ccbba08cfc3948c535be29f44736a23b4c8ccb3978404e419a08a67aa555becb48bcc161cbc5492b55e3498e74bb515c28a7a44a3afa0148ec3411d82a1ae103513074a13938a5fc17dfabad006d90455b4b5e45079d7bbe956c7a18a8bec9a64c1db72544cb00c6997d545ac7e3bc5c6565885536af486417e728cc99c78cfa12a1f7697f1ad26efeb7262800ac4e0121e766aa9bf0a74ae635074c62fb6ca79975761419b12a985ed7a2c8788c9020462fb5764c087681be1595a5ea4ee7234aa2d22f4119b559a536e0da0e8d0b2e493c2b5bd576459994acd684a81a0955684818e1b88e348446a22c9143a4eefc7d8ec678624763d4548fe2451f078582c93c986b0417e1aababdd76dc0532e252b59e47370e81951ef75ad48c223316a40237152e3508ec164c7375594f73b5f0483c560f52f250aaef28431e9d1b2b9dc650d2371bbb7c8360c72369755bd8696fc5c83fca76a7fc02eff54ca60579caef6341385aeee34c7182445bfdb549bc59f70b76368da88d47386f75968aba093e8f42dd3c7cd68c8028a90cb0c93cb44d42ef9d15e6ca978ed5b88914c4e20768028f2c927a33433d33c5e6a45a6c5ae8c252a83e68ec121347b025865f26912b89a9da7472b75b9aba75581852b97d27ea7c9c5c7e8bebc0094c01947f43a2c6501c97e43231310167eccbc4c3a2022839584a12ad5b51b4cd308c94302e58c70eff7b24faa051cf548b5a73ab4254179eaa038ec95d4d4182d2971084cb33a6ca1106076dfa76ec0c4b3bb5c7266a481001cad07d12051a77e31603bf47c62dbf959c89774587111db1b038ae834e0a08c27f2b772a967179a9bada1ac12bcb8fd3b06ca44b3f11a6762ab51a9a0b67fb83def8c9a712a1469b719f2557e5a03c6bac808d0e0aa304955a3e961618920d0bc2347c74ad6725a9a855d1d8456d2c26addd849e59b7ce7c85765064ed6d63039e368e9f18d4fa11e16f8cc88bb3ffb40b4c6269996da8a6b5586365292b5b1c78bf4161c171e2fc7a6a8293a96d61d683275eafcadfed74473e30a1026809076a1025398b745be723a78e008c85b558d2b76392f5015d1024c171c0fc6c7c0c0e631bef57166e660269231c3216fb08b6cff0a420aa413ec1285b7b5ae9fbb15f9fa6b8af29ec061996a7612de524c7e0724766bb51e1264ab50c3a095815645b1d1021060b90c96555e8a001044d16cffd7719858065efca6c2654ea25506f0541fae242dbb154e420c0dd4e13a79053b431b7c00768bf0f781810a0832a2b814c5517aa1a0949523e12aa35893912256a7370bcd9faa30788b631b87731cc5c831a26e8f48ad7cf9c935301aa8cb006ac59fd2ea5bdc1736b2a5523ff3c4d8f429dc037292e863a087bb29cc2732ba30bf11490dbb1f3adb3448d6110a774b25d242602c250999ce69d1b32ad3702602e6d28fdacdbd2a03546764c4fc1c62c0efb3462c7c88ab8d94e20b2b757ac0425152bef72ed852ab1eb44f4359499407bb6a020ff843a31657c5fe99daf37400cfe59841afc412ec97f2929dc84a6f3c36f378ee84ce3e46cd1209 +ciphertext = b053db98bcf8daca0c50a98c575bf2272f8f0c70343d5f78e97744c670f9d436142850638fe135a85d212ef2b4d2e23e8ba9a5d1327ac7a55454f9e1370861409b296ee2dfc6e7a4f1e5cef633489948173be158aa5192c6a9ff129e0b63b311f7595425aa29dfc758de1629be6d167fc58a65a4252863c5016042409da5227fc1c5334fa809235721f6f608a5443a67dbb33a1e5fa690cd34e9accadc99072a1db81386fd42257e1035b6fffe1a559b97fb71cab8e8e922aef2141733d39935d754e487656cb3b9b2bbb0a5a7c6bebaf62f86a407fdaf776e3a973074cdd2cebd67bb2305d67db831fee54826cfd8514be7117ac424548de1ec0628594062c97b570058bff7f0b38b25d57e953cb4a6d748828d56d643b1fd2068983d138e0f0bf67cbccf7a5ce79068eba43bc77d3abd7222ec5a22568874281ed644d5f3627156d35bd56da1e59fef74ce30a2185834df0f74d776f4c1661f6ca1343cd1149624b9bfeafc0e0084a3b68887cb44d51b7abc7f79886fe6966ee47144a78d12f99333a8a56e2a40110b7c505b6164b0a812590b4dd89d66583aed83348f27d88674a26440d423d1ead252edde582049f0f332afbcc54b4ec1ee81554dabcc8422dbedbe38f9c503722f3ca042ea0b51300d078ebb9663016bf61344f26d6bda836cfda3d06c3c1a2e8ec11ba197105b75942938117811cfb78afb5264f02d1c3a7b8cd72406ae08fad11966140a1ebf31cd5df8bd203453db15ace5e8f0a6ed9d36e1f98d55610e5c048c93c173f0bb47299e8c55bf2b2e1276ea90b22473e8f97a7bab2758087067da3dcec80749b66443e819964882f886bb9c232ef91ee1f57879eaff19f8c7472a8a709b3466801ccf756fb2ba6142ebdbf39643530879284ebfba338053479d78eaf70edbf439ec03f92c440aa15bd765d49ec0c580abf7690efd67068f20b5aa5537fd6a44dddebfa0f91bb6124c2bfdc3c6bb0eb6ea3015e202c6a5644c627963d172168c1b522bec3d6f7c83c02936fce8f3e774d91468c652e40c30ce4628927c44790f98c024860b07f758f1e09df4d6e3394d4dd1c0c5403c2c3a208ee3a2948985354929a90163a00e86b481bea2b4f14de01a0592a80695b5ae23996b1ddf4a712931612af6a6fc529f819b8361b3a8e98cd82fe92005b9c147f3bb4dc9d3155656575de568bc2199ba234bdff2ab277207d8615902229c48db3dcc589148d1b33b1d0594da5b27612a996d33b40ba2da0631471afabb3d155b2645958eac3bd6841dae38dc0adfa59b5e1aa809f888504448a56a3c822a613c998535c3aad312a41385a42dd691f7e9bea9dbe2cf0df32a86199a3fbd537aeea46e7c2768958912879115e2dcf76ab592cd3992036c83e2b2c562ad99cf42c9bba8b96aa54f01a4ced5769d22f51826b4217b2b47f721fc58d5ad5016ee4606b78e93194706332569a673425fe02bef35f942b9637c0f428a54f0bc190b6116aef98a2965181faf2f1d31a436e002ae9ef0f2a6bb912046ce +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = a5c798161d819faf7d27a945a0f6619d83ddd196b6f4ae58a4c48acfc8fd1c34854026db0cc665c43c4c0e4567b46867cfdd6d2d0ff9d0b647072f7593db7392395b7ea953611d5c1cbd5472787430654aa03b6e895cfadd3ad467ea51b9486f3efe8275cda2079459df3b9aebbe5d203b466eb4f6911572252bdc8fc5ea31bae42bdc4142e393d3d5f7c94ea03f796e0cf7cc71dacb47456fdd386527bccf6e53d13eeb755924a22e3a55f74a8974b38e079d8349fb3da5887d1a14ec8acc6f07a7519856f353a4f267d7600e5f43095bb013dfa70ceda3fb2bb59993ff8aa68652846ba60ebab3aa574bdd8bca9ec8b877e7b87a45041657d0264f36fdc2b713f4eac43d5a2fd2cfdb9a7d35748907e086d6308d3382d09e39106cb28d947ae3bc389ffe8b729ce568436b3e08d7450d9a810deff65dc7951eee45ff812e05d8bd55820a97fb90e797626b8ef2d94012b4cf639bc5c8a7b87306753f93cb12e46a66c4b2054cd37b87c51436cc83b884f7634a6a5dc419684af3b78d420d64681d5f763e94144539df45ac7fa46e728e5f54df304b474a435bd2518bd83b058aed078dcf86746313bd8118e48ea346596e3560ca722b1f6dda147af8c5733705bc8343331bacc5b5c8de424ccf6114955056329a68a2a74d3d65197c21ead2a49dc41e07e4a814a798a434145b9e3a5c31aa6e4cdac8a8bcab6b5274490f5c45b2b3d7f59fc28f04dfe3acf068a5826e8466542559ea4d9ff11b463e9a4eba1af172ec8ea643fd3a5bb6663eb670d5fcc2f8b651c5e3e60a9e6479536aedc2cf56a9921669299b6b5399537f2efac368e1291dabc6945bde69aadb9f552b2df19a73de26e4ac7d9b5c7469a960ac64a7eef7981f96c54ae5df4c847d16ee69dcd30b9cabc6e58903c5adc88882cbce47f2888263ecb6ae97a9b2baf45f23ee2e2939f5c8bb8f0cd22cb578b9babf90ebd6260fb1923ca88b35c424fc65251f8fd1d7b5cb7e9f5a9a538b5ea97ababce08bd06ec7d1ad8490b74462f93648fc39a2004db6ea5eb4c92e9ce49395891594353b92b6b496d09376fb28711d97f2195ea5fdab80cd5fa6353cd62f06c80f99eda3ad7573c4fbf0f6cd5d6b63fd5bec5cff572fc8460385a642f6f90fb79a9b1cb18cbcb34bd87f7eb595f0598c687d9d731eefbedd7a0eb6616a88b8e33571bfa7597be4cbd6976b93f3fc2c088de3ab59dd0ff44e553a5b2ab143c46df24fe1e816aed7edfbf7ce3fa7f8b282237f249aaedbd3a6fe8771015ceb812cd5fe96e02c1bde7e9b961d2dd0c834d8d8a8aa3815529218d3418c49e176fc7ed8c3d35763c61d585a78664fbdd12a9ad2f35bfbd7e96ee6cf98dc296537c985577cac3f4ed568353ec2ca8eeab4bb1fef393d5b3cdd25305b148fd8bbe1f60b5871e9c9359a46a5ead03e98b61e8fc51ce9f62764301c96f68db87fa6273f9fa3c35b2cefd92faaf2f74edf73ab5a09e8517dbdd7d5cc770da5177f6c3e49348d138d19836391a54954ac4a0d0f9b154ec37965422019c2ca49cfcb8e317b3eee22faf297b865da163a0befa9dc25701f7e847a05754cb733620a824f19dd591c51c345420f2f6b8f3b846fd356e78b87764b51d1dabf923518de898c5e7cb5e0066fd69522f5889dc05c41a472c983583333132052a1c93a464120b325764b8665ca42555b98d8d6a93c88a0a383ab51280f52873f2be26e12c131677027c616711d478342cb424b0463c88161ed84bf6e869abe9cb915d13534d2756dd72343359e9911624dc7c6e828b19d6cb178c43a5ceb9360d2939df2744accb4dfe8aa5eca35bf87c6ba265fb4ab7c4888516ec91e52c4030f5453e6bc9103b9c19cd83e69048272855b11b8af3edc09b04ab31179bee59abc76726fbe9612d271b7010844f62535f2f30d8417c35f17c1619b055fab6a0f5458568c753310299fcb335a7697e7cbc9b9eb1b14ac2d0ddb765b266b6d68bdb5b0236895328540b20f91bbd2910625e674b33a4f8b6c1b4f66c4130c2e973ab72d809282ca63edab71268c02a9d020bfc805410aae2dd4b699448a56049d1e9a58c5fc2abe159dec69c5027099a3b57d3a2560ce24a6f5017d32e00f3078b792309384421878cca555b7065d57537c804e10bac052788769b7c1121a78911a153fb56a365a2f97b070d7b61724d0c4d14c295d78be57a8aadb873d3af6b74d020b8654cf48543de8ca22371a48ded585b7073ecee0c44eec27c85b5a68f6b454b0cb10692039cc68ec2c2bf892804520c71be5b7badb807b4059a3d87d32548ba3e4b698ca150d784a8c2c35a67a8c92c68ac0037888b65a4c9800ba7a1ec050627af648fb61c87cc55b8243545aa514cbc550a8804c8598cd35786eb8c6b06077a1e2d4344e4a6baa789c305b6326e0bbd4402dbe26cec08a7c1a19457bc2677f15b984a74fbc52cdce48618d50c47400011b392908ac2cf08a579783a80fb2990cea90eee90b7dd81e6cc9c961372d8c720d7eb223d5a6a16d4571c1a93213b32289934f7b30a63527c6399920086940b7696503e623e63a050f4b69810b6e6f6729e5782b572221f596a09a1879bbb46a62a955043a30a2aa3e62e02ce1ab6f3d03693a8cb653e361d8783ffa37274ae06a3f2292f1a6557182006e493ff2653437a64dbea950bf6a8ca8836407fb489d42a6f6257770310f28715bc6411c81486cef3cb9ab500558f070f4a15817f8c177d63cafb176caf3b2b1cb7b7254c18fe15111fcab9e9a9682f41c9fd247ec532ccef514860a3fed330255323dafe46eed198041d732538c9424d43fe2f5481650470f08906791b2bfe65a445bb26ac87d9bd04aa648a54dc13a137b60e5c2779fe4b5a866620dc2829d42384aea9ab1552fca920f8929b7baa059dea53e6a5b3e492a6e45b5ae11f6ad24d035d4246a0cd53436687a0204a1de29aad2c8b53ad4b938a57c2e29555219544ff64115cba2668b54c6ea8779146980b58a2e669124a81ed4420c87b0601de23e3ccba915faad0c2b47ef6238dba9449274c64ccccd85e91712470e8f9a2866720059a8501c7762c0883cf9827bfd62bdc0882ee03b457be2b2794b8becf74ec0da4684282200a294c13c8a9ff376c1187911121bdd886f27514846f740b72aad5544cbd97a7e208635480acddf404fc067c82a45b5c97829f06abca5201429e9a516f66e65d07075cbc0c60c2a9734baadd68f421617fbf9515b569fd08bf3aef948095de1afe74bbc3bdbb45fd8f92eddbf0c682c81a98f930f616553b9d62e64f9069d9fb94ea2c0806459b201531f4fddd708d162981cc1fb3757da1804ddb5aa9b1c6a47a98f8505a49bae2affde5fe75e69e828e546a6771004 +ciphertext = 4d372cbcf55aeaab39558fa7f1b3936da31e6679efee4b0af81d6b6e94e485e0f79a1a54dc8358ba0377a92eb5270b7b0cd814e464e2ee1ebba10ebdfaf6b53b5875a89fa0b0edadb5a60d815bea517523636fa18fe1780d152bb90d47d593409a2fdfa6b39c42214f709a86ddfa81bebd97ad6d18719d107dbc838111987d4f721746d75ceca8fd414f4055d206fec568c13d1ffc34ba1c243899bb5c16cfb6489c4cc018d39eb93873f520333d8cdef4fe3b9fcc117f291c2a2c1bb9febba997341404360213d9f5d7d80314fb059f57e12c884a4c42f6977b5bf3ebd6e0136da4065a91d9665cc141670e492beb0bf2d1fad2d536f2c0659a8d367c282fa5f117e0d4e0ac05610031e5624c61529b144995c155430063ca9a5e654bc84b1ecf790a635c3e5c3dbb1f980ae8b80c1b2ae9a48eee5a0f5e2aa0175eb19531a7ad6995a2d5a62dc236b596e9edc0c2da79aec60e5254c748ca80b90623f2309201ba88731d63794bb1865912866102fc732c88fc9c511d3a86648e8a5c59189941e694908ed80b513684b0cbba9ea16dee6cebf857b8d791175d623b3eece53235086b45b78fff9fe4b742803ceb85518009f5d94cae007e7cfe5cdfa2aa07d397aa97ac75b53b722c4d488ca391ec0c9f3ed196fc4326eb50b3efd27d0b34d9c9f200d7c74d0e30fc04022c331b55b0d7adfa777b0cce009786cfe71a020e33835012da068158102768cf441a078e5b9ffd6a6b1281f2c6159f114599d1096cc74a1980aa6ac45c8c4025067cd6e947c62a908be3a033367f1828e846fbc78bcf0be2d63a24ddf18336b8524c927a03ba76ce527b84a1358e3831a76e955a1b937e0ee2f006ab0d2dc886115c4fa6c9a7c831ebcde5b1aacbe33a82495349bfca371db6beb88e8ccbd8bee3585bae39a435c491292147e4e4833aa80ede11d1b98651e6d0525944106a454d76c3db9d74ecca42f52805037575420fda0ac6e6be3d798531ec283916e76159c79bb054ea23c24a41f124e1dc887e6b45babb35248f5c2ff7096a458acd6430f22eab1e5a6849fe783e612bbe435aaab7bf6efdb27220279e7021c75ceabc76422056a322afea422b17a8abfa6c3160ba885b3e54e70f3be0e304724cbe24d7b95359fc04642d3063d5191173a84f44f1e930c6c2346ab973ea722dee19f8d36065596e83d7e532505add1ad3ebbee0315d07a10c44f288a7c97ffcb03b829db5a01bca183ecd2dadd64bd2dd67aceeb0d34d039c3c4a2ab7a65c2d7479c2350663b754fd9e063bdf4ea73a04cf1cd0fa6782d46a9a834936f25baf39f0367a3e53298259a48cfc6d0c9ef767c30cd175dcbf92a559cae64cc9fd71eb630dbf78d9225e5cb216beea284440ac4497db0b095c094daed5d39695ae2360859bab3cb62673ef2ae5a1d03c4582764f2270644326a0c4143126de4d4600baf1ca099db5b562f33e9e35504496be65ba3e80f62ea820b8f11c91b64a53e6bd53ca5d62be0070762111804109bb8e1a594e5f536ecd8c +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = b04c33b257b19945fa85b55625fea1a43bfab72c4810b839b2cbff51b5d2cd498aa258373eb3bd44ed3974eef9e4fcb61df589878d9ec4ea4333659f03ecdfab236cd4f8e5d3f9524f9da28a4adaf869735b46ffed98378564f9700cb815c43a6e75de54e6f67a93fdc0385696274e1e73a12b5960a94d9a4b4564df9d9b797771b48397835f6fd69abf516a73f9eb813004edd71d3a6e67c6734e86d1d7d9d3e9d142bebc1d0f8e293f4de4846bcc6837fc243c54dba144d4dfcd7ff3fd19b8f55ce1bc0982ffd366530abad387946e1495a4cd5d9cfbb62b28778905ab7d576610a74b3daac9768ad51b153af7c6bf0177a4074397bf5ed411cb33ddcb89519e990dfb85afee5e9f288d01ec5628034a4aebd1da19f83493baffd36d225beefe09628aafafd427b82f9bd4ea44319f5ae6bb07bd220f6f2ef550b919ad01cb3744b37103eb54e634d0e033670025e0776698e28b4fc367a77f1b4690dcf916e8ccf1fa55aa34950157f4f1e66ef7ca8283e9e7b60ec931274d9808a8114dd4176bb69783c094bbbbecd5b90fae4e7cdb9768498b2243f283f6a079a9e988ac6a85bb591fff99bc67d27b0ca9932a41c15ce93467374f133bb8539c2e5e64f01eb70b5afcfcdacdf694ecd835c4f5ee74be4cf6b55770ac04e47666a431d669fd5775a71749923cdb223abe36284fc98dc3aa2a41f45a4a299c647d6738595f87f7a47b88faec6c088c6207646d99cef5f56a2f0fcd3ea85202c7725dfc99d05bfd537ddf0f89366a3a83f8dc74e5af7fc58a62216ea63334d3ae8cbd0189e49b94ef5e0ba193fcf37ac57a4cd5528d1d545cb75e36bfdc3ce63951cd9a7b18e0b95ef4f4bddc9ebb67bda9b2ac5fe13e73e123b4a858a7e60637a32eb856d56cf905f7c655e4dc84f9fe783d56d249fd43e33c509f56dbfc7aa0683803dd4d228e39f829ae363cef48096fe48bd9756c36873cadc64ddceb8d94e6f8925c1b81ade69fee64f0b7e94555286cdb596e08caa81f758022b3a949059ae91aa9b78a825703cd54eef3590d681dbc7657a777bc267637daf955cd93452eda06efbb90a83f95a9d986fb559ccef8277893373e701393b705a5c122ec3646ceb364367c83444d30fa438eb3a479adbae24f70cd495563a9d85c566d9e6c467dca66a3f36370693ad5f86a9a3f773af5d64e9bc73ff7979a65e0c98e98beea7ee2aa494fbd46e4e7da3f9ca0f89bf34f79e8f7eb41db97a3276548376ed277fde54e7a4dfa088b8acc5f02f598d1494bfcdd7c323fc5ef6c3b4676d6b3d93da2e69c96744095435fcadcfd24d3d1610fb5c4b988877ccdb9233c490a8b121ba7821b529de85e648e68b0565d50f735d1cb54cbb9ecfc1b9eff98fa654ef1e877c43c6e47a2b8f66196346859ce5344d208253ca429f76b884dbb3b7a30ac3de983c75ad73996adb62de7563ec9a4a715bcdf376dfb6433de79ec54e660f4aaa4b194d15026b618a4e5e66c90de3fc0b015aee63b5d8b3cb9eb2d6e45ab4938bc86fc54c7598c6554cf9ac35bf213c9dafd144c8b56f9a66d382778b28d666667caaad49633a8f9857313e8eb033374b5cbebacc7f453ccd8e77c5a9abc12eaebc1733e5a1278bf11b37fbab1db212359473012f3b545301ddc833c69a75afe16744557b5e28bc0ee895da16c2c5dd34fe6783949d555e580c1be7994bb008daf27a47f554932b87222e82ec670490ca5139ff49d5ed896218825056a8639b31d3ac8550356a408a01404c6aa9c2b7284e7c7c27036256b7902445dde00630d81930f4ccc518b9efd8ab24fc16a365b8068c90f7e09bbd23c2a6ab12792d245551a9894f704042501c8fc49eeaa0132701e29a3c97834530a7c61f1b8440822cd1bb6b11dca2a5951b4deb0b1268c2f5aa8cf76a6bd0be3013a37ca1a903ac634405ecb3714bc54610baa63bacf0a263d8cb018b03b0a286083998a7e8b2a573e570179712130a19f9ebc2337d43926f9c96460996cc03199d81a0e19259da696fecca7906931a787a5c264826099a3e03339295b587e7a4efec6a11aaaab057aa8689473f1f211c6d85499c46746bb00ba687a17877e6650c678d13861337faaa7045a16b8eb7173e7c08b6394b5f2b99ea3083ba175c55d350fd61b73aa790ca6f479fd4b01282b6baefa00a1946f6dfb855ce7bd50389d42856823301e01a228ac754cb65a0e323a0943b75741cb498cc499c8649b6bf87e991507194983aad1b57994b7d79bbcf2eb3b5f8734ccf3cea2662e95d486989144aea22c94c363571ac7dcd81f577645cf19b313f849b422afed963cdb701395020c2d18601a40a42429896aa9b0b1c10c4876928aeac59862414e143722a0b94746abd157343d15bb9fe500763b18c61b184407449b1b5ba8fb1554e4bb58ab99faaac9cdc3b698e64179b089b786204bf95eda86474ee799440478348989c91c3462446724340cd2376c682907edb58c85a4ce3ef46cc5d0ca345590ab14844b224735dc05e0e66ede94258f395fe867ab9d8c1b0fa80743002a15da197614295dc358f40758c9cc05e45bbc659b93ed611aa58845d94acc7aa75deba56d4d83c640c252975bc3165254c92957b78c9583b370ad785f2c16cd5cb9913839939c7293e6b956e23cc5d14cb3ab2a2e94f179bb076355157920085236f60b84449d43ac89c2b46dafa6b784438f3510bfc48357a5681043ba7428583bb5e912b08786562579df58a41bdb82114344b3ea3574b997f8564248210d4e50ab2277100b9a5423178b1f138e9d427762253cffc3cd095cb53a776f4fe015b5168b1a9759ac4acc77f90c69b307192b7b866753872a69813b1bcaab5cbb8126d8998e78d99f5a527992b89495a28e3fa83e75337ca2b896172ac244ab7e30761c8e3a00890046e5f599eeab65bf1a4cdeb5791cc10ade7197fb5bc754233f3b10c9ba2240adfc61c05231c36a6cf71aa752ab3c95c3756ef9373b677105d11f86e68036348bdd181f27407e344bcd297cb02bc44f077976ed588d6a846c2f839bc9bc4872617bdc17a7baa97af9a9322ff015956678e8d622cfb1a11ed929f29bb1f094c17f49417c09c1c443369123caf8701199c43bff97034efc6999424144c9395d9063bb153c0ed82b1c5659bfb23d4cd2c758a26b6c448525060f686bb14873cbf5046b3a3033c5c8081027bf5e3c51f6fb6a1d54a77c46b0ea4299a9da4ab03b95f9d3601f553d46800f661e2c9a7e548ca42e385cc6a0678f9e9d268ffce02c4b465a46773432109a759cfeca12dfe978bf0b7ad7271487cf61b2b8f7c60f389f33fc18439a95bcbb6356047447b810cc094d400ab204cf9ae71e3afa68b88586ecb6498c68ac0e51b9 +ciphertext = dee3cb7f92c8c7b79465a085e92d8061c7234ed5c76ea7548e220737a13fc67d46246d0331fc32d43b0094935c1e709f03f0d40d9f4fefd86aae871ad7bf783e8a8fdd6c690a71901970b882861591ff94792fd0bb16c04a6d5cacf617032f4efb3d032254cd04bc5b8b209c5a1eb3257bfb36e986dd6824ed046852b56f821e931973aff63ffcc586892c58e854705935c44f614dcaac0aff6b78a6aa36ee7914548c9c1413e8b90ab7bfdcde7c5d7c2619394e2dc8508346c187d051683299c041154c3e75939d94afdf3e76676d3acd2cb4de8bd4b6094249ce63155c87c561396dcc300c699e87422df2c8201196b4f320c422b6239e072f6a1ad5dd518298dd0ccaf2da7093a65272b3eddae908fb36e23c00a49d924787210ea21342e014dbf9a335b15c62cbc5c214d27c17a2b6d1c185d5bcd7cf15ebe4a8212e97ac11008ad0e645cc02ce0c7b313f672efc67776516959bec21b66c9a226d95c9dee529990fcbdc8df96b044998b3f1da1ed732e2301f180d0c419a8b95bc6584440bf4fe30b305023570eb91b16dd67c432b0f7dacf63722937bcb45655fe7445abf8ce2c946c03c4c5fe2274a7231df907a5900a3ee0f36bb2009eb4abba41d4f6c372ed7e825d99e0fba3ffef67cd52df38bd2a9588198d9be63cc980e909b978516a25e63302958e3328c10fb61375fa9c218b572b880b13966a8c483ee5967b22cf7dd7f8365e765c71e8f4bd57e70b17c8b79bf259d517826f2780adaf3b8e7774f3d9122809dea47ecb9118671e068b9c9a10cfda0b2a8f61349f0dcf623aabe70a5421427511e48c45e71553072909b8156722be3b301e421e8f9413fef0efb157845c54a593e0e7e37027b47508ba12a75f340a566a4b984226a086497cbf79dcab6611e0a684cf238d7e26c1114829b1e360de4bfe688f7405e5dd46dc3a31ae538d2177b17ec6393c1e973f69ddbfe3a465ab22fd2d2dc3035fe53983c807edceea2c7d157af345cd87c504983502c9d8b52fa86a7fbdb748cd94faa0734b6a0231a1dfa1a36447ae3a27ac1b9d39c0d65b7ea0d8c21ca23d491c7bd64c8c4495fc90247cb5e1a539657e8dda18dac206efc7cb8403d3f9223e800ff2c961321ec5ef918b6f2bf959121cdc940056d06d88910cf622fe70a5af489a069e58277305d9342c05f403ca9fa9df2a80d6dacbd00a6e622043c7f0038da2ca9b49e011bc73df548564e3f55ece3897bbdc95142857aef3f31296699671ade99deb866b55d738e23bfde2ca6d9c2f783d0f1246c3dec26ce19e4b176fbdabf19157a83d308a9e93f65c285c494f4d48b736fbad129c8ed1e12e5174cb49814e1b53ff6e1265e7ef6bd00c969c6a56bd34e4af851a40399a749c4c8f939c43bff06878c7dd80612b0c3cf6afe9c8392ff4ce10ea9ac601523e56f7610d23cacd60609bebfc37b9a063377439d307db2c14d19ea22f19141e80e994d988710045b536762773c12fc42da4f1f9506a38b9003d2eca9a4b971822ebd45bc52425e +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = a60e9e7c8f405cac3c8f45bec4f7de2069dbd7e543d465ba702cb1448cdf114cc4504d4a32bd91c638347cf5a4651d6a309fa0b4f6d0a3d86ab9f57e00fe88d1887865c695c3baf9ba08356eaeb4052e46e98e7f2bd56bc024d71b896d5b2cbaa0bef4cba45e295adf300ad2e4fbe8272d59cc987c6409e95abae2d7faef288d308b9ea3b3fe71d9d4ed166872bc8bd70d44af8556a356b631a6fbfe804cc09c63eeeca476add8e43eeba767298bf2ace9fb2496e0c573938babcd749ee3edfe9817a3ee5a687fa3f4e8fed829afe42c04ae9715c4a6a8dd73c6a54c16beea97a659da476e49c1dd1b8293ed4321783e0a66a36267673f9fc2c7463669be742987405c26f1f94b87ce88aebaeb7bfd787116c3da5b64a7e8956321463b351a9754ad389937b7aed431a60f8d309cbed2d8ae67f859ce47ecd1b3cb11a8a70d3b9b93ee5531af60d1874118ec505fd4518987e2af5ed4e68bed2cbf676589aa4e8833e04bd17afbf666464c87ba809f2ba29106b49647666fc58c712b5b8127882df3723e74a9b9e4b0e5a96bb335e4421ec75e96a13b5566e8258e36d34a76096f9c0e3236c3d36bda5e3d53eaad3ca33eaad916d8cedcd3466c75c1b66d3a3f7f4c60a796e0844cc0d79687fd86c61dca0dceec2e936ecaba44666daaf0a3ec6b9ff98bdc7fa82aa6a0c3fd361b3335cb83dda384188fde9e745bb9dad08908cf6a3eab2b4a7b78036704153359dc4fdb5742ab3c39a356d05374cf3107b95cb771ff1c9592d59c810a93e3593169bbf6de95d77dd79a3b3aa03c43fa9d177d7ef88625cf85aa0d99d2edf09a0bb0c425ce6af9f21613b2cd596aa77ba2bb98a386df898e5d4d691e7ed16f33e69c43b64e438c3f74b579c1a6cf7b0d95e59836aa499d7f768c97b7bfb19f4756561ff69128fb2d9c80afdefeca0890c9e47bf7646850fea94e1d83d869d5212431b0ed93430d4b45ad90ce7e357d2431c923b3ce08bc836b3edc8fab2fa3c508867eae87bf2768ad61d4894c1f3b6f96edb52b9b3eb77a8c99839faed8704c907e258f8e9dd1577d78037aa1ab87b03a46ad3a0a30c753b8bd89d923b7454f84c67ab6bbbdded5edc36ab6ab67c29ced3a54bd06f9c09d1fcac8483e0163d1db6650cb4ff8abb8353d2b3d95fa5d99e96bcab65b37dc8a1e958f7395391bcbb4a944aa955bc2176aa6601add40489d0534423786e84c95d57bfdde9636bfbfa76c2e3f9625747968f53d1fbf6cf4f95d6cca45c61bfda1fe899a8aefc75ec12ccfc3a2dae6d8aba4e06cdcbccbfb72c48ef564d3462ab49cf6576d8c358a865de1f795cc16f9f5be3837b6b1714f50b8e97f7b1e6fb64addbd1fc955b49a67094cfefbde8c8bf3abe4bdabb787d3e45eae1d8a96e3f06a4977ab1f8866e596dfca9d68996d831fea448dc0991561af4da96bf490dd5538f17e8098479a5763787939453a7a87a359643885bc5e6e49ea048b5ffeadc65c78e4a9c91726dbdd6f5352596034b3558f98637b43d61f769cbe44ef9c7642393e8882caa978996d1d4fea92838d10ace8711ebf85de7ff0bdf71eac7d5ed9d74323d234e79089f5b9a70df77813939b5a3b234fe3760be892d8bcc4a90087866b29244c3641310e94b8311a1303465975649288713e79ca67a9085c8f7449c0bb9a6ab196245b0da028cc1765a8ba0501d5e360cb3064e11554f3fc2914f1260509073b67b4a0570d7f708ca7c435ea987762f2a5a23cae53907fc9db26942136d72202d0a0bb10b65d422091abaa1c21d152dad59c25d20c016237634741def8ca26b9cce3097ffd896f1bf08300282fcb7000c7e1956673223902ae5b43bc63b6806c469a4ebb8bd34b057b375e725b07ee856fcc0453379b96f89888d21a7bd5ec91f837b90a2c334a97ad70d87bdcc12892d588d06655f6103e033547cf5933ec237b21b2956e5921cf10a0c55a70e4a24a57b93f6fcaab2a44bb079987eba57223b4b9deb60ec6464faa4058283b8cba6956c792ae8ff9184e93c2e2152823c15412c102518462c2691db1c64412eb1ec6d75d47c82fc5a9214670b3297067e30c6d9ce0cf3eb314cc1a4cf35342ae419513ec2bd47182c4ea52626a56f7831dbdc5719f532a5a421a7bd5a115c2195d0532e7c1c0ffe40166404137a5b45d7b2cd31752e1646588021508293fb881123f61034318700eeac429500905179b283162ed0b69590541eba0848decc94bd18c888170a4c030a89305fe97a2b0292390a3b1fd6aa22909cf0134a2754728b6fb5180276b7d65c2fd530b4ff48cc7c7093dfc2b418b97762c42bb0980c7f41d9651c69387173a6718038010f50b79b233187bc3a0f7c770e50abc62e8acbe297c58c58055387bc7711473d81ca97b6a6e6504870c0de1d806e3603ed0b04d01dc62529434014c5068c3ab3d4a909a079947127a8a2746cc8126f0212e21a0318ef273d5e0be16253848413c5cea22853c6e63b675cfac1d6590004a2bb3bb4974e79aca0dd927607a71d4b4c9980a86e5a2b5a84bcd2e694190491060411b332aa7e7766a4c693b00eb9d68f34e5b0564de24377d3a6d45f72d82ec24fb268537c07b81aa79b5b28ef5a657e0f8b6b2f3a4279abcf06ca2a79401312943d1d1086d91b1ad3030d0c0bb21806cb87b56ed391e6bc6aad974034664b4902336d6e45a7449cb656207d59367f2b142746636e44726f111603b28670f47113d28ce6bb11f464b181cb3205febc13cc70d3fb35924a641a1117df5cb65fd9a69c71bb800fc22a6bc47e52756c23533a3a494733b74d9689d64a849d048a2ffaa62b24ba53cc76ce8489d7515834ad3a2ea920e4f2275f4f7bb361866647c04c573bf47e6b54cd31810c7814ab5cd27da1905fc5976286b781787d2db606c036a2616af7946935713ce2c7ac3fc4972abaa2229c4c294e7a70f97bb6d119be54553eebab1c80c8da7459258e44a234357a1c9cc46412794116123d21db27455063672245460ebc8b6b1116b34f2401169ace16a514534154e798ae3155809b651ca963f854ba501407920765a14f826dcfa4bc4f21766b05bceac55e6854f1ad080d9b2538848a8dc7857f10c4c843c46b172adece3707e01c03059313bb96bb144996b127a16006db4063ca1251f550836e167adea545b3a0c55c0ac5de3fcab6e8242c2c5c09313646117a95ef46536dc74d869301335a2f9040484fb0c9cb85a3d034d55b03c66725d000c47537e0d5ae249eb884b67dadb110119f1d0a5ea38cdf9f2e0e27c75a43a9aa64a30bed5aa8300772066ef577f79bf4813e3315a15f2c28b2665e4dc7e2f8d6c42e7270ee2b77b6045385f3d175984a0e260363166c73b0c70c971644363 +ciphertext = cb8021857be83d6c14856fa999c0296939540b44fa0973d41de5a98a7b8ef1bfafcb9b16885d777ac157f018f00899c739a8dea7feac36c5dc8402456f565488495f4c236456f7775424bfe331013dd60a242d436dc354b06f76a46e23f7ccf3cc398ca8b041f2591245a15452248d193474589b275e1a7f1a9ac3c7bb651bb17e5c4bc116d976dc447565a29497effea01ccb07220b45919790aa8be2f63dde259aef47f135456803471932046a51b0ca0a0b0418f989373d780f865f890ca055eb1bde17bcf131a956be72249d4155d35b2fd4ad28a59540d7334ec453e19561697797758c413829c46c9487a35024c67dd2bfc3cbfb2b35e556c1a271b6455ed7b9ad266a3b246ebbee224616f23cf9aa8ccfcbe019847ec34ede915970f2b7976446133c1862f961f4f059ffc9f722f6d267929819545a9fbeb6f03465339234e98cb6629aaa06a40d6159a94aec36f39b71bf0d3bb8ac93f9df0c8043e9f9cf17e78066a57c5d10d2d27dd9c0a8948275b14c82bbaf7d8451aaeaddc8eb2ee2c768d2d19d590c1be7af7ba30bee182b3de636125c9dcd80d4c64624d2c458cfa5f30fff16d99c97001404d6c64c5fa89bd225abd0a647fe92a0d004f270b7dc84a88e35892abd37a3321396815a63d1305a9dc7e495b592dd80046c82c13347395a6a92dfdbfd8fe1f7634b472f266e603209df3ba334bb0c68cdbd6d6724b32452938ea0dce4c3a6596638b0916865566586cebae4c0ee3ec36c782ebbb85e583c108436852d4545073774b2177de52f9610f7d778d7eb6d2382455965ab5b3ce9816d0995247945c31c9ff479587a9f60058d0867d5bd7ac12a3ad9dc581eaf7e4c5766829f7f8e2935bd1bc159b5e27f827c85bacb41f2ef5ff75666308c6a28765d6f2b261805bce28c6ed48cbe20a0945b31f59826be0742c711054a2623abecf9245fc34bf6c3b5e8f2f66114af277812c773f0470da69d10006e2dd44180713eef89307c3ce79a877ed3cf6f63acd681cff64647a3c08ff5a0c4fbf7c8a80b4bc3336948bffabd460dfd548c62e6167a24e841f13e1b0a868bc20e9ee55f9d89c44f58912cf23333a9b04e3bd813a0d2c61d0d087c9bc2783476dea746ebaa805de06eea87e7c50a20f1518bf6bcddf09f635bc1145932b4b323c4614882277130315ca6e5e3cce1f937de71e39505235f0ebd8e6482a2845ead61224bd8d84398d8816b31a0b178e95c0ba50f9757670e2d23df3475ebe38b6e53d8e95884fd60c38b3502a762f6ff5078188426a87c6502ac7251110f29e16bea769b1ba2bb27458dcaa225ee7e35397d3bd8c2b82401584b666fad035b2b99cc6d518ba1df7918464eba094d8297254c2e804aa06c00191af19acc9139728de08f19689a2507430b6e2597b1e5284815fb60273d80c48d2d4c934d813c0e1bbcc35b855e09ddae9f97111fa3d1f12cf449784012170e594f6e74d0646691a09a6f8956b815d9e3fa6265036ab2aca4ab450a62645155fa81ef4efa44682696 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 7ec737eb05ffb89d5da8b3c58508928dd74462e8968b1f65bb3b9780649210d8f02e2950ad1e863bd78af41f3ae9899cf0fe992608cf5cdeb4eb0ac1c13ccaab4ca89a869424cceaf777cfc7e9da081f73f5aa5df41d493fbbe7ce5b6477c773d8cc81d995509ff3a40cf8de734a9e8968b7fbe79a9a0dab85f7b442077a890688dccadbd5e64ae59ece5d39b554e6b82b86d2a149a687ce9fcfffeb8e4be792e7529f33d7505c77ed84a63a78f58e93fbf10ee9bc05c91a7bf16ebcc051c9d143b9748b365ec94eb6098c4eece8aa833ebc25bd3e733adec55aa5b0f3f31efb7c7f0ab21e2544073cf2b6c4d75049b63fcad5c68a936989baa2e55ad1846fd1e335569bd1d4acc869f7e03587d8becf5db545447f4e727224545ca8c16bca5458fbf4d746a12e27def29ecc8dd840e279e0cd9484b4f4dd0c7446959a521618b9bc57fc810ead0d1c8428c43c0fc3f30fa9b176a4f84375a0e1563fdaeab6cad367c9949c4723802d6931f1dfe2b14dd4675652b958518e3ec8d5bd6dfd9982080f319e668dffb5c8873fe70b1cdeaba56ee7b77ef5d7600bacdbbbea5b9aed5a9443bb81a68c22c7904a1755d4d8da47bce48fde3c3a8ec6c05ef2a798dfdd597429b3fd6046981146743ae85cc9cdccb715937f29c933d63ab475c2c5483ce07acc5b8bb4c7456398b9f36e0fbed9b951f6d43a67fad6f7fb803acc33e965fe725dc34003a2e3feebfc0badfc537eb2b6912245fffc6fb285b6cb0935adfa0385dead74f7a63adb76bcf4b8daa84aec32f87be3a786537acaa42e78b136c8c08e7ac1dbee25b44654266f4b3be4f33358b9b75a2e9e6d78e89d3cec68b88f7350ed52449598d847b2a02c3056a64e72c5a3b34685e90bfd0037736e1af1df39a3574ed777a36fcf9d8c243a4a512e6b6199cd63c7bdb18b95fbe4615e9799767e76fa4a88c93459bd3d30e09889eeee48890cc22146f472586e3d0f6b0ededba5b8f3f07acc1c693e9b03e618c9d359b7aaec5447365f835b3590185ed9337b6171eac38eef9bde08da5eae3a908de4b3f531fc25fca5fbe9859673d62d67e28c751324e245376baf368b086f7fb1b844fc033361994ffb3b39823afa2eee7598de66023f986604fd3697a6f523fdcfbfe40b97e480f5d523c3c5227537a5089fb684fcbfca55ba9c307b4feabe54d241e34152bfc2aab6ad568e7b115330c1be5891fa35bf344be7d93ad44bb27a7fe01a8f902437f42f6bd6f96fd4e738aec7a333a26dd1263dd4b21b5e6fa95a41a4456f74c9522657a9b4df8c5ae62f4951cd5bb8a4f334f45a3a73266e1c386caed53ab52b9a4d0ae83b96869fba6c72987f4c3f8a0e56a08c96a00d78854d6762ea2394c3bed2172e43ce5de92749cfbd5d3173a7e1f1ea8c37db5b635bcfe9b6396e39d2d56bb135eb8976eeb0a28ef58d39a7ae84aabd46baf4ecfa70fe8fb71dfce33fb7a45a532dd54d3da8c580d6cea52d9098a3d478efd7622a7cdeecfe73cf4eaf5787d5bfb461889d23ab93a4ba327c47eeff58cff7f65738886abd046895834aa06a6cb57973f21ee353fcc1453bd15b3f4c4075e5e939daff4356fb393b5704d76077b21538e9b6a69de9718a491b3262d206be72a9ceb000e81b6be6668d14a124bb49be524abb09b91942a60ed38b1974e36376a7724ddc7e5a993ea9c25f40b80c766cc57e807bd5932603403458b84703ca58f8e57c451227128654df4537fce6a57bd1bd6fd8c5be1135b2c82cbfa4b96d577575406f92538034d22d6198a9cd000fc8dc8988f95608c1974c4359ada14f7dd4870c63bf79886ab2d4cad1c89a8fe232fc1c8c515b7d2aa9cc35759ef583244ea767916478f8415fdf7b1cf85a80f4d6960298b977a7abf380709ef904c1706ee3f51abf415028321e4fc79fb2e15454c47b3572bc09c62c0dc466efaa759f116e8ba4717f91220f125656ba7c52338ab1facb0fa6a75ce61f3135911d5714fcda7a5a271205547018cc0607c5aa7104a4a77266c0525579f054ecc6c62522068e79352ae7a1c3265413459939764a4421caa937c8f9b2b276a2c77ce7814fe9034783b8aec29881e2563a63780cbabbcbe72501d68f1b72c6ef3c5d84a4bd7cf4a84686682fe36a151bcb3bb76ce5fa67ae545c9621bed149be06aa2e72f72d1b24b086836b525915b93a49d90cb3c45877c54204a605cc27f1828de6ca1e95056938a6c9651eb3b4a9b09c5aa9fc4401215d9ea9015a996f9a7b898cea466ca14f0065a5b1f374d422b4a277a011f3b3e8143b053507bee829e582528dcb3c9e950f39d17ad0a849c701779d070e34cc606c84a596650b7776a468659344446bc19186b43cbf042516a7b133065393c83b85313c53b71a5bc4421a91694beeb39760806d3b910aa8ea546f53763b656c99ea50a179986dc3786a554b819317fb58564dd69428bb1d7bc45a642a8ab9cc013f932a67222d1fd42b455930b8147d6175c66330217246c400c4b619b922182101b2d8165f93bee58757c14cbfc958552137b904009fcf845321841f8648b8f9e58d1572119b11cbcd59480246a46e255adcc1649817a052736ed9c18a262c36f7c37918db789ab177ed39add0850a509319888073b54bc3ed81000c780fc87ac5c302235a959b1164b491001b92811d4aa76876065e841b276a27b868822fd1da7c3fd1831d88c9f5d891ff610caf264fbc9280b8d4085251774ee20c23576ace6215b3eb8c1610ca2405115e89421418a7610c05bb526ffa39918e9558c6cb2618a612b6d38bf8a2569b4c3ae902a4ac744ed4bca8ed783c4eba450470aef5ec5370b87daa419145298170d64caafc2eda7c989645b9285a3fbd16c16e0c1e3fe085a6bc05248426ef106e7f6012e80882682660cd05ce49520785ea66325078f9a91e5ffc3ba0833de333326fecbcd8878f286064cd1b672f210133e30d106c61af9a75a7fc64fb5b1e1a1649fab356c0f26b9062c5dceaa7cee502c750a93187a21c11b1b7fcaa45f8b857d38e18287b1e878c7ee59e07966f3619bee70253d77065c02926bfd9b031260b5af95846573ad09c42573c8338609fd3e5c0b50092b17a83128a4a9f1a6a232252884504846b3b7df82981dbb036f6a57c5c19136789af9690a978145ea6adb74132ec55840965083f388877a93fc01b006fe4cde4012a1814b327a12cca8991cd18027f4485b4025b5583747fbb37916585261abfea163b617347acaf453ae235166cdd8afbffdaaab9919f0cffdc75d8796fcc28241e5c7b836862d7482d507973ae3fd8dae96eec4ecebcedb68fbda75e04b401812083bfa3b670e3eaf9b443702fb6db16ac1197656bbd61a8e25ed523b8d1e5 +ciphertext = db57de9e2cfc65b4ad9d944d6b8968d8ef73839c55b96a77ede1793f2b8ed9c8bfb6e3e711e0f947d7789c97960b9598ace9109d603c97474b5829a5729fcb19d2232f5f02ddd2c7b7bee5cdb042d2e255f986b3f6c16666a223e49b0316028bad8416082fd7e837f208ab21fe97d884d05b8bebf05c206006f6c94527398a204377051e15d2115a998faee7dfaf49be6dfd6e3288226106f25f2cd89c576dc74bce95538594b6a72e1a0f422d6f8c49c5a5eecff37d2ac8d86e94a65e6d95a1c421b83719b30cbc8a39fd82fb21ee981a2bf86dd6cb0a964b1fd408d086a86bb2fab39dab3bfa25137f7963e94ebc54dd93148316ef1c6b3b9f8d7af85264c7ff14b69cec63520b5d0e4476a693545c515252f879f7a68b4b2132aadbb212a4ed8c6ca154db4ca7299fce1d218bc95b4f058d77ab04989d918e712c266417d2e9b72b2a7c128f4b06d5131f92e2fe4285fd75412326d29bd9a1cd3efe33cdc3a5f1f404831fd7fee72facb4b37d42d33a7799df32122cf349ce0d64b8be5980d4cc140ec58bf0f52f304fa035cd6e0a9edaf54ff56c9d6aedfb61fb1c4aa597bb87298403fdb140be8fe124f9a2c8070719f1a16c58b2093c645319c137c1f53cfe9c267e00502a442918121c922cb6afb3befcc19321f067a2838a0d89ecf94ec88648a64218dd2f2fd2359b31fdbbe1a616daae89f736bd2e16f05828e70e4b9c0bc610041900a29a29ec5d7f3cbc0254442686eed9ff7aef4f42958dbc30b64352b7dfa97864122a889257a5f4ed365fb13fcafc4845080a8a4607c31eef8e8a3b49a0e4b4f6de1e1d01e871c87ca0a191f69b73c2e773b64912b86406786d4c90a8fa113e298871acfb77de35138e2f68cb2bf8b26fd7d464a02d2f1664d6df49dccdcf869a8f1adefcab1f1148bdbc97855a6ebc160394164663d04205828b711e62e8accde8c89f4fe02b2f1a6701e28a364d10bbbecfac9f113a3db495d2720e096db5562259900ff6a2c6a0be74e66012ac2e7360daae5dbd3ad6825dafc23491c732e6328f40e7af2cdb78eb88f91eee5c8163fbb3f7f4b8cb8671f0d6b0317432b4caf2b6a077a712d3cbc68157a2b340e01838fab5f22a28e432713a33b18556076681ea7f43f48cb0339d360cb6f47247220e23f313959c39cbca191b1911c9939aa541cd2d95c7a56338e09f846c4d38080100e82769ab86164bdfce24e68b6be20483d761981ddd4c963862fae0e9fedf619dd7a3e8e64561c1fc4c778ebae8741cec91a4d5161ca7f975716d2bbb4f50536f11710010aff928a03118e698e2cd20edeb34da6675ba04224cab7f5a25e1b1d9252971bd79d757362363c5491d3f2b2b0b95dff046b7168501e3a25ea58334bba7e1574bbe1c77fd4f66fa424313b095ab9dab5f810f818a9bcbf31edd63980ae89bdcea8306ef416124a06041e8a2459219fb863caa7a010843b4d41fc28abb73cd610208201e5a7ad693998b19946d05c563a8dd60e706ff5c237a17d875df0522c72fdd7a +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = d62c6ce5e7594be682a81677441d6a4458fe3a79ce2576357745e3f1bdbf78ae61c8274a705b93d2eaa899d8c0126ac8adb7b3bbb589181e380eaea9de0541e426ddccabc13a165b5c64e78da95b919457c684b9ce08ef97637c740ffb3cf9f95de79bedd83c3ff871087b94134de864ef91b047794588d7abe4687368c84b44d8e26aa30bf58bbe4bbdee3fadb046d75997e4475ff2524b3c2cd4c15f98a2e6695463257bb8fa9a8423ea64d45a57b9a539094b5e957496b79008878396d3b9b2ec41cca75b66fa6d069a51b07eed4ccd3e20dbe2a226d72d7834d996ae9aeecc662fa42b48c5438fcd0ae8cfdd1b874fbb4ec17434ad584af5b4561cce597aab63390b60fe8cd52e57846e1a8c4f6c6758798b715d350755494648ffa7ffd04b6e6a40dbc2b0c596c2dbf873c38e6ff82ff159ba93563d2377edfc433949d3705f398b385f680169657623937a8c357864c39e8fc16da5c1ef4d7fc7fab358cdb114965e8a8e5409964ccdc54cd8d5b17039aa9283a59e746a46af800e58d6064683c39fb426ce8f73baff720a6522ad50c5196bdabc9b094895ba5f775acea7210958e11a3412bd5e67097fce3ce1ee0f4a86bff684c5eedd75fded89c23e1440ca66e6bb754361c549787ff2b9bf97f8f4bb808e8d3b29b16c369cc8ba9d91f6d12c0dd7999c7057bafa44d3d2383e407abfa55c63990c3ab657cb80d52df2661d97ed78dd210e95bf8fa9badd8b25fd39bffc42c66459b0c8889dda6714b63762494a5f7ed6f45ff3990772b1dce2dc76df5bf6feb1ae5c16d4a0303773d768c7dda7b74a8eef7d1f720c25dd30ec6b6266f4e3f94861483be13f71d9bd5780ab62e0294a8dbe93238530b49455718c872428bea1d84955f54a3bc6e9dadc6106ea3ef37d94a08563462437741f648ac46559d7a7deadf497aa9f22879d132ad8ba2f3a05e5b76b0d807225b30458df6105cbec9ae1cfae8e8a1da9bba691047c95676c9e2dc7ab76537691dbbee397738d6e3e20cdda7afd6699dedec26c97dd0db82a54af573ad2801aac2098331104fcca18699a2684e4b5aed83c7ad8aae706fe605a87cabefac499a56058d8b02bd5977445f4a90c3686d9405e33c3d70880b6449d41a76f84ef3759664f204ded3935998d79da7167afa11a59cf8b87634f83a738c0d32eb1b55453504ab64fb8982445ea49ebbcc39e465af92f50d7b53874c1190a766dac5e717d6f88097be56dd942534df5e5887c48b235dee99203fcf4ff867dcd55d7d6c3a5df5d2a24ebe7e7d6bd2fd3814667552888e3cbe3222ae0dc3a4157e8e1a7daf3088ba5aa1a3fd61cdc6bff9b3c5faa6db3e9d8e359d94fc6dc65c29eccc0534ee5d16be9a7c9dd119dc5949cc66b0d4f0a15e3132640a284a87384c7ed06782607584bf5cdd9fd99adcdf29cc9588c0f4b0f3b5ba80b962218b3bce4c0f64fbac9e8c23546fe33ea30d799d94ff8ffbf64569907755ed7bfd00c3f6f446dec0da27b37bb92e454aaaacb69dc85463fc718c85508ac8742d7e80eb8d5a789991129e5be4e4275f9fd76ce953d1d968d9dfe4aa6429edada5ef49fb4046ed2c939155ddb0d98fb68cf75c493d37e859c8d0e5114345d52853184aaab60195152259d9b643d864c4ec5fc4978c657c3365ea81212eb91339aaa4bfa87a197a04d46a7b666837f55db6f16c095db449e9baa879ae14016ea4f8ba975da26cfcf59401237accb908efd17146e9439b1473bafa07703f2932d5c598276b59b419402d681d87111f70c20d2710e10a407634ab216907d7363af0bc4647dba208f9c6744d71a8a1c1a99082a3bd8a843e4ce581412f04877edb1709d1a9623c3c428eb111a1189073c9a3d34ad16aa1f1551a07e6880147360e60888ddd5b0956036951021af4699c96382cc0c16b3f0b960135391c6692b0c556a5b9ad2f8a5ed0cb0baea2406868ac6f7a5a44b722721535e098fe832c9af148ae027604c47ce4d3214a1bc974675289ac7bfb9a644db30235a664417c57a8a46a86e18a10f81b87f4b4727f7234017088f447f28680b0600ad1dd672f0ea19e38a39fcf964cccc64528c97fa474ef3aa6777676b3db443d0a2042c744555049c48b2bc2577738a698bc58910f55b0ede555b171838f6086ca365aed981aa5354561411990707bd3305cf4d10161fd3124156691daa5cf3795653e2aee1c4ba021b0edd0809b14905e46c2cd0bb1e165c8aa428b180ea394e6c92bd6873e12328e5e1916c94c81393172df3815127b937b9646a783524671fbd8b5f01395178c6a9ff42c47d8b25fb37a2d1da975f69c7a8286504faaa6ad5b05307c2d20b4f27640fe59b1ef407110a317cd72023828192b131cb9af96899a69b0f51125b2828f29493a997a33023661bb7811c4593e4e579f8b17d0cbb6037d9273932af4eb235f7d01dd398b70752a925968adbf56cf132b85680abffb937c35425c244345e805bdb608cb0666984775ac1852690908cf2a60214f6a888004aa41a44831537e55a5dfae7b2a4448fe6c562ea66764dfb5fa508b6738c4f52f10d4a852d38f5354981cdfb7a851a675c5a01c2fbe886192582d1f08ab37753bbd81ba6d848949731c99ba92278a2833cc11ac3bf603512bd6557f9684eb980c7588424db0c1e2bb2bd09196a7da29d79208da50c4a0c839284a44d8861706e991edd099e0b1467b88948c89778787c26dd4436fbc4bfd12b0acc00ab4d85b613bba4f928bbfcb04e2eaa51b81845c3a710bbc8458027a4f055061d0b39ad28482646aebc5458d0e70d396c99a0b456837376110488f49a83f48372327467ab87870d11b3c1e6c112ab3d6d486a99bc2b9b368a0695c6c6251d6bea5b56fcb96fc23475719b8cc82806875cad772e4716332ffb02189438e27097e565159e4b1790558273ca887fca2a6e7226c53879adbbc07ac1072e6aafdd2a1dd89677842041f33c447204a3fb91c1e4935111ac739cdc9fd6f2ba8c0c66dff5552f3b2bdfdb19d4f65cb3b23777292cf97cc54bfbc41ed041e53318386173d229b9288c5d68e87d0ce2032d481c46b646ef71940d97af370732533260c6ac943272866bb2bc90ec64424c67b1c877f5d2b35c39656957bbe40c53ed88c4124764b726a5e24aba7b0c866a52385c85c241677f75487d4156c85db639ad741e0412438bdbceb6092fa14501fe1c5e95d90833332debc0441554a8cb5a8f7826b047882b415b78a0c2e966ac7c67b03ef5106f0a751017b67cc52a3d0e1586c74513d2b5f132606ad1d739f1598a16c608a240cd13dfaf8263d74866315e2898a3431cf19e46858e9a30597e4b52ffa87a54b83c91d12a5e9c2cd90fcac2c11b3a348240411a4c +ciphertext = 434defffdadd10d9567ff7de185a5081952e909d1a43b163483f8cbffb19f07b20cc3152c39709c3769e3152a3870edffc8dd78d5c9e26622d7b6c7aa341c60a5966b69c71265d8881fb94d9e13efb08d0a738b857cec7fdb63d016c025fb66e1cf8ba31961f56ac47871c7598b4cd2679fd7ca0ede0805c76a6f5564ce1bd748559f3db064e1da38f33cbe9c993c7cd1476472b4ca2075666380535d70176864275e438a543766ed89727cdaa4da0fcb36d948618a935ce49fce7148836b35d80f9885e82470f3ea9e321783047b136ab25f3cec80fa385f81722c0b02e924b7906ddabad71b8607353669aa8e3ab3826e895cc43b55aaccff387b7edfd035d39918738dfa7930b4dc7be3b3103552898c590ceebf0660db1b9d1fff96e339bd7845d6542418ce34208e662cf2c18104971673789c1c429aed0f0212868a808a5d6bd5152040285b8e7f5294df6db7129061c22e16595c57a45deca829ea1fefc4e9fe7d25a7bd5d17981bc9212eabb58a6ba17231753571f6f7f2e1efcca7b8e8db179a774da3d2994be50f8a32dc18bbcf606f73b1f72e5f36286ec13b576a013786b5af3621473719a2e069c0e59b1de69973ec0ab482a0d34c0bd4e815df2c36bf79c5e2bcb511043bc4e6802e7fdb358c5994537dd9a6e5535e281627a0a40576befe4d863e1b645585e0935f3cada9e64303effb1e5d8be5418db1fb76d1784aa7b56c2825f970e221e8c8d6b6f43e8b80f03acbedcc4224da3942016668fda692383178faa7328ca7aca8be1c4bc9ef50bcf209289eb47abd34402a7d1e21c9ff6871a3b7f603d77e08ef58853aa0db5789bca441c50ecf6b01726b8cca5656705fd2c670a8fbaac44be77fd6b60c863873dcba0b5d883667f37cdf979ca1a098cf05421ad841ae88d5c235141104b32c1075c5c9b03ee60a33415f3863e0894eb112046790ae65b8a6606c2a295f1d91e32dd37a42ce0fc5be9457fca8babe3bfe142c9abd48df57a848ca966930c1372e68e939e9b75e72d52d6a2babe0992720f3a3452176e13619ab4057a3141aa1fcc82ab50d470b31a9beffc5a57597de1415998a9e5806ea9bc5df191624432543d86c2ba247cb78ab4b6f73afbd5533041b30ac9e2a5c2221721330bbe258a84ef5e9d5a14645cdcded23af731bc9071c66a21c7dc36593173ac63d818965d835d572ca8f6562c048773321f2a546082f4f0bb479c32b5fd6008d417debd9ed9c36c15ac9ff3d990f89e5f26bec912103b5b3ced9193cee7712c6442463cf60c7e613d1215594a2086d3695db7a5f0ebd6bc953a2c388e4866a0c54770cdc3342986beb6591953bf6d0d7ec07b975d01076513d5cda1bcfeea1852ccdf15660a73585a254ef9df4199ec11c30d04935d299908aa92ac5c3a2a549ef139dd061f80f8330a92b52439bc512804b2bb75d1233f6ef04625db0e621f4d817489c34c90b99837eef09fae7484f801a97f21ce732e7f1352429e00420474936f73188eba2000465bd8961f393c87 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 212393fa68c40e1e53ec29801f4472dc3db8e75e6647cccc6a26dbdad4f99e5e5717d46bb4248674eee558d8af5a6373720a9c96a4c51c0efbc506cbe51b560ab742ec684ddf86cb092febde5efe2476842d15ee328fc415c49b7184c9332f42f70b63aa6d576296a8af5451f5d474019c47e29ffe2b25d3d30cb8eb2db3cec334a31e4fc248ed910a98e633716ef9ca2f7939c7033bab756371d6c2e916d61d08f3113c57dd5992c98f6adecbc9ae48e931473558ac94fe9ae9c9c4bea3dc40defbcbde234a2126f3f8e8dbdefc74f657a797098ebcefb6b57438c2253f8ade3bcbd5c0c52d4def79bb37859e36f9f0768ca7d075ea7ec9bb63336698acbfb6c9a384084df0cebf5dacd50087b691e4d345fed7bf0df51bd9946363fa05b795f93df1349fcb16d668605ca86efe34c03c4a7df581f8ca7daf83ff5aa75146457163c3abfa9c655f966a607a69ab1f34fd1ca2aa8fe3f38da10e84c4abdf6c0fafcba6773d63b39ef745df6d284830ec3275e5bb9b3e8b03f87cd3f3bba41632c0f9a1e65989b74b91b23a82bddffd617aaf8b14c10e0d37aba7db8cebbec0cb866bf5d57964b7cae6c9b3084a6976d2a25961dc53558c065d6d9bf5248aba263beb6363f2bc9fe65a8cbedf6dbbf6c7f459d47b64a964b3d3fca563ba5aeaba8ee9e2d82bfe733b4b4587a99af5d37eefedfc9aca5d869596e36548cd336ae774b8ba63772fa598cd5dcd43b092d938429886c708448b24a45b8dece9fb9db54c67bb63ebcfc8febc15c1284d9b02a3350e6e68f1296784b86f741db9160681f0133a663568445deb9c14e4d7f687aaf4ea36857ccd4bf6bf9ce1de03d869f3d630169365aa3c3b53cc89d9cf48cfcc6c166f197c9e5c6bf409bd3c42bd613703cc497fbe78dcc4b38d89d81e8ca1186baebce355d5b9d4e45515897ae233a2691d356a373dcbf6cd600fcdde8c468cfdd6dbc67e60a69909eee71d4a5ec1643b87059cad8dc259788eaf195f4fbccfc5ddf84bf8f2f95cf9780ae2948ef91657b927f8b3331f4d62de7e21a36486dfc3f289386503d6589a8d049bd6fba7bb9f087f96d5785678a7f3de6c892cbb2273677fddcb70f5729bfda0404bdbf16d8acfcece33ff924535c16e94f3be0c8854e439ea395dd89f399dc98aeeb7493b64965858be35977dc053b3c0b3788fc4f44cd3b49f4d93509db454c983da38b2b5c88521347788f832e9c64a6dede2521f34275c9f6c35e442a87b496743334ae61d9cd4e3d78be3097942aacceeed9b9cb673e10af71bf7edbeb5c4e1049b2b3ad0311acad457df8afc85172476b949aefcdde10a36e46139eb5ff7a74697c88ae4dc8287dfccf68b9ad5382125879e637b7cebc1aae95b042e9cf2488b2e4bfe5158dc8ce8d22d2d92480f36ff6d42dcebca24cb9ee9379386e8de55cf32dec93b99b694e99ab5e41cc8cfb8928d6cd8edc7a707044b49b8a131986a3f37bcdbcab5255b64b59d5a93b7e9d01a32384a87543b6ba2bffdb75c9babdf57bc8b9d8b78641b394c7bed64087454d0be7b307bc35a97cccb94f602a9d747e6df31eff0ee3e71ffd7a2b87d49dd3ede2377607c8e7f25dde1dd736d7918874aea4b8bd98be4597242c95c9641b194a093a928b8d3b30f33c10ba326943a8b704c09a6dfa55f700c488c38a3334716cceb6585008a853162e40a544c0a16878328f47c4e67b5aad276a2dec4c320047e2eab345cc14982b96d1d13566da409e93072377a1729546117a04ce291a2090b60030a35d5b360f9f871cad52f37e63954da0e0a8675abcc3717972f89469978730607293267cac89e3c96a98576c2351d8756429722a1278a173a75114baa4f0eec6a12b09cafdc99fee2c1af7acdae3c747b94b06517464f654adae25888a15cb4c5017076c9d3fac3b1560dd9112d88b2bcf31b15ac420fe5a698d52ab41ef33fa6ca8d8cb9b94d58648f39a138974e8016a972308c7b040d2fa32bfd1096503a3a0e84b9941188a6720e06e6641b896d365190369766995826b72122d780477581bd69b348bb6c5c8f65b4d84ac3f0768ef6645e422b3ed7e38d0a423409c285d0e21bbca97be6707557bb0027e755f9a81912d04b9ebb374bd79411b2c283068670431f2de58d346bb525d192f128c9316742115275e9214def7a61da509b5848013b304216f783d77c3f57b76fb8dc984f05ab557709dae4691b519c44d41813e4b61e6664af5c970ae7a810714217745af087bb00575b18081921a854b7d953e29cb1de704e6578283292168ea73a03e2082b8b641c819649270011861a7b301dcef74e9b116a86f717e30ba6c5398e34390072e20c82f570fcfaa2bd8847a7187052e6b9d0d9bc9fec0217373bcc7b8d38245e40a1597077bb00a408e9eb2bb451c31a746d2aa07fd6432cf176382b6665d45343cf32731817023ee046577abc342bbe25416daee417f2971a8ed4c839126e996a8db40a55bd424c0e534cab677fa1c6b692d2b7e322a331305f75289a1ed102ed604722737e76501c7e7acc69842d6ffb2d31d1003c3b3bd8f4458d93b0270cba21db21a7d16e22e18584e68ea5b890ee839de75b68d60b25d5452bbb91658f3220aaab200ee7a8f070a5b5aa7fa30a768275970012324fe01910e8647945ae6f8b3a17d08e5c36af468a7f6308751c4141439b567eab03d72538ddf71debd2aec5db13537a2b0130b4c2f6662182bd08eb750eb681fce77981a3012102c45642bb8a44ad5cb27cda8369ec28190f64987eb600101aceae7a807158cc8100555a82644b3b513d7cb283a363c70a4ea090241c8a96ac562e7fb3c38f3515c3a68fecb271713729fb77a1a68695fcf995855749c1f0ae09f90741ec332e7602cadb69e55438b9d8ccc213119627410488145777907d280ddb7391d2ec9f27371277c266bb1b14f6eb8d46b2c8bccb0c68f3beb2d87b07044904d5b08e84305b0686f923985a49acdcb1a662d1a08948c9b8d95883518d0ad3933976c464a41c18351216d84066d71164a32d41886a153703c584b747555eefe8309f0810d49c0df8c5512b245f637c9448c47e1456995e922460b8210c7ac1063047c3764077288a1345c23ee0c8fa6865fdd52acb49614207285d241c14114db55cc0c92049f3537abff81b8a30a02e5ab013741b36d92191691b3197cce8d2328bbb6ff61932434899ae01412b231b0efa18d8381555866091c77981e753f8a2b95e8095765ef7a13bd38f9fed3bf36477916cb802690a213c83f6624a067a5e2c9510a2a0b4fcbd414fc61aff04a8df579660d14b13c40ec0470c45f639b65a588aec87a9a79204cee2986867a2906eb851b734b8b22b91d6749b1a5f07c44e3b +ciphertext = a07bccd6a1000b2d0f27be9021ff90c945731a7f45e8565550bd4196b7fd1b3fc4265aecf0714bec8fff9975ea86b40eed6befb80819936d437df6f83dd6d00d36692ea2c69ca0c93544e3ec86bbd6e24b12e7985e7bd89cbab9cc0167091270095529280eb6520545c07a7d76c99eb452e3fd596ac1c493e05aee285aeb22767bf7482feb0083147361198bab22b7a9b90051c42618443e621761a0e4bbf5444e23aaaa99ddd344dc738a81b1900e546d008c9e51c5a28da10309e35d40415b35fa9823364a0da0a5204a8c67e073128ebe2ae9f82dee1a91753ccdfce4247d9a3620545a8c4b5c5b1e55eecc4e9cd4338b912f5316f206ad53ba83adb62023c6d220fdcd573dfcfccff31616b50182a4f5fa42ac71b2ed506eb260f69b183d0dfb43f9e47fbfefbcc43d5704b7d4e303671dfebb03c83c79b3f7dfa0af964dcbc2edceef8821be9926ed353b9760c1d42552fbb8bc55d793a795bfd380e4616b3384bb6ac4c0dd9b73918c17a7b208138022a2835b5b0f1b8d79f186dbbf4a53300d70a18f3a0a8c3f3a8f57911d9958e5350d835bb4253b4c720675f81188480b62059d7af0935b81ca49313e49dbc2e5ace73cad23d8579218686ce283549e2f39b712dd7570aea5ebeb2fc0896501a39203769b41aa931876a2641f36136b82b53101e0868f000adcaa5157544fd010faa592cbef477f12149e0e45754bc25d66c0cf845cbc78b6bf3f52e6fdcf9e7932eb05f1eadd9e1a8d6640aaf34fc0da9cf0f64ae8398ea5ab0caad93648672d084d27a5e8f036b7390616df5a8536f1260ccbd3b8810f070149df4ba40ddc9633e7c1ac97da236c4269bda5b4a31cc39c5e1c1f2928ae140e67baee27fa30ff122fc431091558d52951b1041772439fe52a867df5c34a5d407249782a2ce947475a59d21463461a556f670801903a194cf4c55e7e2e570f89c93bbbd2e0ea1097c7d971b41c85a2fb20159b6271ce2a8feb0fcae0eb5f5c7ddf1482f6ccc35ebedacf47e67fc63581f79aecbb95d050edba235543e0c9f90a26572674f00b331226d1e00795d0323c331de978bad64cbeb8de9fbc2cecce265b7e8c85d0f334cace439e27f320cc8b475758e6fb4a1eda0021447ed963c8952c6635e6f3e5ad1372e3d4c6ea668434f5a00a9022dc3af451b0b0c8a4d9c705c9e837ada61d85eeaeaecc43f4cc3b0ba795dd712a943b09a5682a25f4a6089df5885c9a3a7e8789419753306134c46c3f6da5c68ffac355a4b8aa0a1708c7f5b66fa9f5c5cb3b4d9eea2ed038253124c3c14f572ac43fd6b817ca6211f0210a3d96e72e38cd415cfd525425536809b6d590b3da32a8c3e87c649896b1d81de6622cee43b5fa022e2bc6a378b4fa6f421f79ba8d6630afed853530d5f3b2d9341e6ce5b16da3c919f8bff21192fa4c3b0b4eb7187e453f0c3437c7407912902fb8d3a85584ec961fe7094d606719ccd89128f636119ed9ddcffbfe1d2c2296036d870fe0903b81446c6cc444bfd20548bdfe8007d4 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 69e774db244d0529fa2e064257f3a7babd8942bfd18adaf8c71db8bfab59176bad88b9a7792ff2cb03aabe6a4c2937be24645a28c3a7941f40503769eede86607fb44c4842114980ba64a59a647438c5476b8ddd0dc4a63277c4dc73a3dc9b59bffbdddf18e7612ab73bbe4378e93fa4a8fd1523ec5016b36a639e4f689e9b7bfd2cbf501e23deed07fbfe4861ae7cbe7f7e7b4d5dd1b78bac719c6afe4d96949fcfb1e9e8794b4988a7c03a23c8c5a751ed2c39d4ee8474b43cf8b7814a5932234e41fd543871bce02cbda349153eb5ae3ad57ac0670fbfc7ceb4435f84ebdd58573aec7c0cafdc6756556bf034dfce6709e65b16726625928faf6d14efc0c0a66988eab99643b4cf23ac697f4ce645e88dd8b3f204f2e8e8a9f838b708ae6fbf27445a7555d0cd52982cb00223dca46ddcc428aef24f81564997d5f37d0a1c411cf73d3e2d82e5cf6c3bb7beb9fba2d9ec631f8953b4dd30763e8b4c8fdb4fb5b177d43c11e8979c74d639136fa20b718c0846405bff0604c55cb8ff529f41d91ea6981dddbdeec7445ede93affe83446410a93150178a4a2b52133e74dc1f8b2eb97df4e8a617d5876ab9977daa8b7845537ebda2b7ed599c0cc16543832aeef51d6aa09d5b30f37d40083ae35c2b831b87f2c426d72c655c4e6eee1fecd284a3f84a1f6d49b5a03b3593894bca251bdd1996d1a039d0ca4d6d8f5b69beda735a45e2bd355dad587bca7330374d31573b44ebacfbd103bafc7f83c1c9f3ac3a41f16d7d4b7b7e1e78eaac9b4090538b6b7975b9c5c64d6e96577b7861cc88ed6c3365aabcc9b97a6b3e8a3aafba8b17376509a563b58dfbf4584e7bd0d56bbbed3d9164a8fd1c9d6636ae46c04bad614cd2c9efc2d0597fc285779d6f8f3e39da84d8710745c4455edf12aae40358991e7defdc787faf55d6c70d3e223dc2e03b3ffed39ca3b9bbaaa34abae794d4266e59b8defb44528b3bf34e8dd25767a5dfad9032767722d6ee544f3417458de9f8d9a52f57a38dd1e9c8ad43b775bc853d8475abdac86811d568e9e387486e8aff1bd901283a3913b6595cb2a85b6d432dedcbd9d146ab85ea5449850bc9d9be35709fdef365731f176ec1ada5b7f35d9848c42603fe6a47d46574a93cfcc0446e4e8718d2672ea06bddd582da7b655fed505daaac1bb10d6bbaeb3e80881fb891344b7b8652446e4cd706c2dc098b0a069fcedb89ecd67de93e9c92f3aa0a9b92a10af6640f587a5859408b5cab563ef28e4cea386becd756db669fdf87a003faee7654cab39ef20c2ecb234ac1c4b459ee48517bc838092e91de35b265e5f64119c05cc5d0a063d7c806ae8256e28b8e94f72df4f6bfb7c51d68925dc0a8f68e1b3a51dfaa834b7c8ed989b351e683af7ba73de9ee9743f830af559ac53aa38e981129db5837d00d9843334ea3da2b77f4e588b0088e3d43e8d0dd49c4777f7b08678144618e34d6b9b6b72698888c55f9b7e3b272f9f620bb367a2f66c3da4c9d4d3d1d49650b5530bf0e7c3b99c06899df270570254daa0bfca823059823ce8982ad3b1677de127386265487665aca4c27ee0246f1a853965b6f9757148e37833d31e453dcabf0191c94230833a6bb3b93c181b651918a25235e22779cf052e1d30e6852557ca32aaf841834b423a9e61cc24b5231d7590f863e814aa19f123c0cba97cb3773740871ac23868731748355a85f03b275b3273486142153be4920bc9ee77ab5c05d2b96228906586ec831ebe8cf6f9bac3631b7cc904dfc768b1a717274b33f70d08b6a79c4aec3597e1c9664c9472b6c100c1601f27bc0aed37152e20b327b5d32646f2980bd780c8f476715ac04bf1e03c2d4a31da23b14dc0233c1a2c2d983627bbc845f023e349ca59626a99eeba5dcc12e8b82076ef2295238667308451c2052c6f9b127778a3c656213a23dc7e25660443183298753475bcaf667a9483192c6bf553b7e50b44a84a4b881b0365fe513fc661a03689581e045d2f921444c6a76e6344ed8a335b6681ccbc7b42b50b9b03558c64da65088f60b136882012135a8a659355503918ba25da1c167b9fb9f771b5727493c921338c1acccefa80201039d28c968aa3a40c2a28835f63bde23b9722a245ee3c859997f45e10a11f1906c1485b0b51093f51819963393a692ecdb1dda2c88a6133f69f401b124cad796217c818152a528f7d073bfcb9eaccc6cc8825ac4612533126c1ccc736db53f648201ff29a6c3f77b41e01de2087986f237200014e5fa540735513400004b5925cf64b0ffe9575e27ac19ac5644f355231bcdd70348c4507c80780f1d51abf6ac4c5e2957a94325a3f64e83a0a192516f6cbb40b8abba5f8b85bf2aa60e44b46585bf009a723fe1a44fc97543f269f670c593935bdf87a52a1a31cd2b9ad92807407b5851b49eb1a2318611cacaa7710b6764a7e57f8962bc3fc483a8393640e602ca55526eb1be56f2c61ce802b9592f24c14aaa75aa4b002ac9b81fc1327b2a93aa889c9eb178bebdc91579ca7bd30796cc324447892558d2c052308946a451ca49816c06aad39603dd3841ef03ccc1075df164739feb342adcce87aa12f550200ce94765eb4f291a5152941b4eeaba91c3a59257c03017c0b7e0003b07657ba60b4256a8a4b205d7646813246385b348ec157dc6eb3be4546d7eb85c29512840018968743d2ce147f071c8f96c7436596337d69f5074485bf4a288833f2855787f8a18d874c5a2a41422157f65b62b5e581c2181a7023698fdc1ac60a8340a34b29f81b03dc35da2b453fa61293070b1c6db57f3040c3af7766c69b84d624dba1163feb0c71fab6582473f93c8753d67b0259a2eee1c847b1b8a73455a74fa10c3a4c21a35ad20fc36d563be9bc55350f565e4076670f0c77b3c4aa2a06f7bf2ad1bfc4fc8721618454d640189a6f8b3d6c71086dba68b213f4c51100a6037e717147893cdae20a97759204b2c684d8206fdcb10df575799aaa3de388cead4446dcba8e14368f7202520c71e453b41cce426be6c1e29ac475c45742ddacf7c520da15780a9056183900559129e5e3cbb3feaa288b25b6fc69bb8b164c1db8e24391172a8c23859545e98a13725130e45c3d1cbb5d6f5c0dc275608163916013e6e466c29502902c97d3bc33dd006abaaf2aacc40c046e55951d744e31887155a3fa880058a8767b35684445982767c697540ce339a0f4c29c2ae42b5dac5047c12c22bcc155a63a8610db945708cb5425ce0c3c651532a43d32473f236519d54fdfe0a815dcfbe9649d9d1c384baad67b91b2f3e21f2fadd6bb582a0b9cb016051dd82c75aa2acf359556df4a2abaeb9dcee945829beb71185b4d6bd18b76e5668f253383a +ciphertext = e3305af051f2b2d4d411b8846aea1fd866b2e9f2fb4c92c7d70a7c31515dcc9b9b5795d7c1716dee295b1b92703315bcf4a5506b70eecffa872a1c94585d978bf2b610a464499f36e58526a1ea99aadfd0f18ffa916134cdde7b857e72e8440c33de1187032280cb1b9cc7facd37abf84df7fb60b2bddf242dbbe89ba881d4b4a4bae19d706cd24d3dddf19e6619a0db6cfc5311c5f917dbc9eca99fdceb6f240144bca0697c2dc759446abf52f4a960afb3dab2a28c9922f29ad0c93a24b3f276138a980e7c6fe6d4dd349aa4254fa950ccf1ca5b177eb10c13a795ccbfb9b866b6c1d1a7b92e680728f45be3ba332d026820bf1f3b22ae9360d9a80ef9412194c1801838e2eb7467855bae54063ffb4a173796ee577769859812985ed1a0779a1b44b31bee787d6c894f475d1975bcc5b956201fa8029c1a50579893084874099c5d9ca37b33c24e08dfb45ad8c3533161feabf9290666218010de638757d46d8f36da00eb73f88d363382e3c99773c34f925d95da1486be5fa085e6670f34c6ad07453f21b3509bbd1eba6d16d2ca83b7942731a99766ae98f1a16df4a8d9a6c44d4c9c026f0232aa8219f37eaa2764945db0a57ce9700c3fa57849e8dc7848425b7538267b749c1474ca6f9ede161bdf7614f8384438250d13bd9fb3b86475de88bad4ba9cab85e94e3ee8c5f6a17867fae42353de0eb6807abb0180261ba13b5c28f3374427d9b70a49cafe4fe60ccd4264322f313173759383a3fbab05e002fce19a98ca8e8d112ef35fda07636fa8a23b4806497efba14e91608b92a737756d921ee5895c36aab80f5b863ce28ffac7fb55534a7643e27707c6caefeba5a60388f185e2477a66ee285dbba5ca77d79c4f7a10d40dd61e9e161f42d9c8674e3a5fb00dd22483466ef309474ad64850a13ab5e9bfef7df441adce7d678639fe4cdd49d58d23d722ec96127af9819e392f158a0b3d7f69e872349ed4eb81162529f8767a345d00e9588e8238d1fc25722ff23240202d7b1039b2b18eb14ae2da455be3851466ace03d27fafe35f5b676565c4a259634d24593efbbb13a9225f3233340cf8c3cc3504bb43158a57de9307554189d30936d5a9399aa71739074d5d487d7c69c3daaa10e40f6007668e76a7a3013bb6a7ca94cf668847996a7a496e839821cfa586254e21c3c04e3d40f730847b8aa60f4cb1e028899f4915114bec79d17501f8369c7c5b0a16cc0bdaf10a9dd18245ae33b55ab86391cb027a7129713cd130e7327639a7afca5f2d291b1f36069ff0b78979157c938619dfba02c24ca90486ce306d552d512e1a6fcf3f388647232fb0ad4feb4d3c9236e23a53962dd1118dbfe5f4ee1e47677db5f094c3bb3845dc7d9f7922ade82528e0d68a76b9608f3028100e5cfb2a989dd0690cf3bcbea5d1a827ac63a4f14992974e5fcf00981145d40c8d0a943dec836042ef5e859b9c6c12ff19ecd8957579b43ef7960952a020a571ffed0e37f7844cf37e0932f573134bf43ca169f09cd5e69 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 48c78cb714b9cf88a8b317a6fbb681b8f47d575f41221565048f3b610f36d47f6ede9d875057d5cb4698a25e5dc0e8db3f87c63d575170f45d121a848d897c3d0d63dfe9b2d616a9665f384fc7fd6226a19309df15b364ae667c34caf7feddac0debcf450578c7de82da365d40786522c37b55fde26ed7b3c6bccf2804d871ff3736b394210b67ebfa72f7bf77990bf06e48cb7417f61a8688472ec529974635b35f5b4c530e68bee8dcf13387b66b5ef7d12ff3190d67a2fcf4b2ebb579f74bfd64e7fe995bc08e67388ff912b5b4dbb4c939dd686d2cfa4498dfa733e945ce95fbd67c67f6d862de69ddd4ef825db52a68c14435e90cefabbcf5babb734aa03538899678d439d738cc63eef6e1e4344ea73b9c41f36c712a4c6d7f42210dcb94ee44f3c588a2299d5704cb347b90b39d5cbf69cf1dc5c6719d9c488d94e89cd1bb3b3e50ef46f8dc3c62da37bb13b6e2046911d85d589d869fa4a550fe67957fd4819e9c0dd74b9887bb5d1f5c34d76b3527a42a46b689fc4c5767eaf13c44b7e3da052df8e98cda1f5d621567374de7a4207acd4dbe8417c7984645cf4f2b5a5434be901e9799cd760229301e14431b0b652c643c0fadccaa13cbc6fa6dc8d348b908b78343978fd5a0eef9dca61d4184f33f107837b3ec667fcfd7000570dd33856939bc8ba671b383eedb2a94596a8f2f37bbc05d48097d91fd2ab164f5c6a8f92f65239f08844ed406d6e3ccebf88d877eeb3f4c85bf696c691f85a94756e331aa33b15973ab59f3f429c7913731bd0f553933f21708d2ed7d78e3fdaf3ec7494684bfc40b4ff31798467746f60bc9bccb5b1e397dfd6e65773a965e65d34eeed94966694d88d6f205d6cebc3b3dd3d7405431fdbfe614089c633b52261da5fca73462c3ffd7afd0dd6e4c5e88454f28ed846be9b886625aaf372bb3361b9abd5baf78b1773058ef6108cbd20aa6e0bc19af13454df46b4fb5a68c3e7aba6f7e97ad63439d7f52cfa5d7e42d72e447f96883c93a1ff50165a1aee8be0ce6acc30f9e10e97536eb958b79eae3e3aa9996986805c6d1f6356d26c1e63c55048eb2920bec96ee83ca933d5ceebaf6294c4b248b426472481fb2a38e6ed4dd9042287eb9ae7ad6c86255ac492f53a21ebcc19b3c8bb1e78f58ba98bc8aa77f6a5cb91cd457eecd673e37e21e85537bd2d97d8644539702be93bb6ff58064b28add53404bc78a397ab86895bbfe934e9bff6cc3ae48869be85ffe581a6ff748519bd3dbc96c716b1af4a02679ace5e51dbfa0fb1f7c81ea513c3ccc3b84a34025522486ce424bc04c96dedc5758aaa9dfed47fdb324614ff9e589d78acc88c43c2643d64da50afd90ebfa621493fc76ca982fbaeca4465f9c14ab4e6459f17f558946cebb1e3b5fd7d24a364970d7f93343ea6a5bdd4196b9e72e9596fff9f4ef8fb2d5c6c5cd41dc2f6ab71eb04c3a80fb5a7f16ed8df3347df00f663aa39409ac4e8c8bb0934b46b6a8816cd7dc8c1be1a7fcecce57bf5baa30e7afd7d7e59c9e386d5cf7863c133ba1c5e0f6ed6c4876ba7849611bacc36abd39f0ee73df6b8a22469e203ddf2aa53ff84390b893d2d9f9915c4b8257754b3433d97e7c6b8452a77401c4e343bdcbdc985b70189ea976e3d65c47649593c9cfc112a4292238302253118cab8ec52060305392e6a131f0445a0bb4e11a1a8d7465e704b3134c3807d9be9f8b2abd57a00758685392592fa0b01e116410706a669a0ec5acb524d1561a265e307c24068b12897568490458121c572c2cc43b2464f2703212641202a40b27a41fafc4b24bea9f26711f28b1050645a38757708ad607ff6763f14c15a2caadfc2bc4d23c576e5cae6a20b10cc9cf610a5931ab4c59ecbe67ea079bc3911a96b24b86a0d6b99cf85aa44094b0f6c55924776c4e1bc9cfc88a127b8195145da3515288f933da602f1a2747a6856657b2102774bc1946163b534d02a1ce2e641cd9fc7f7d48b6f643ab53045bc690a249433553845b34a5953c873c1c686c83ba46acec4e91046f9e7590196c9c24a747c6d986b4b414c223a52a6c88475405232c78ab3aae8861a45a817ebb16c3a3070b8e842527e965013244fe50907bac3883122393340b1e06728fa0400791b1dc3ba103c8aadb6cb0328b5efbc85694164d0934c207b63614cca28eca71e5f63a58604599eb6d1d248a37ebcb17335713c4c9a0500fbf893df475cf7c19792fd56fe0a7505de0158f34603e0071b2aa0bdc8a12376a1313f571d33686d505660c4bace8ea40820918e05bc15b381b90d9b31bf52e1b18c422c3935d04140170542829cdcfc883bc344606e75a2ee7af469c5a81daa1071771fff275f2358472b409b1ec31ec887fd6e76ceec6812d40ba4469b3eeb028a0a6875a19b7aca51465cc3fe78566a3eb1b98c621eb3bbda4e7beb5f2344b64013ec233fb5714bc68b767da8b60a6b0ffc8565369c19877c16d7c70f17b85f7a228d28a5936968915d026cf683c762714830c1742ab4dff789f1f43782622a070a4ab52633efc52693b695dab939bc24944733905ae86801c4577324c625159b141c5a1014a6e458b71a959001839c461e17a3ac46da47ab687d2342ff63b83d3331510c98ac484f44b7fb6a31f6926cf047982c400008bb3b0d1ebba3cb2345613680531b0708a64b937c88b2985c01a10eea22fe5022912f9ad2bc667cea16b0a091f3fa9bbb9b8c30160717b21cef9d74458241beedc215d44900cf40709f6671f221d39c804eb6756c812364df0503355b8b01102574ac3f07234bbb1b658ea822d52a452545da3544c041c3a3f89ba30005a992b432178bfba078686a07971601f8b12c22b23b69c05a89adc2469287f052a6d4f58798e10a464db4aa71ab30a94854d1b8c16893b432a8dc2859c66a168c8c5ad4d04559056c4588b0a8755013e378545b47efbe90ca97552c9b8711d3281cc7b9057f78a68a59d5aa642d1e9233de093df5705d8639d702097f0dbc98451a46905ae72d876e1243546590599fc5923b37b4cf0a3f7cb47dfe8af00f6a999127a256681a5705bf5100d7096713c49149c7c561c0783e048cc3444776bf8997671970535c2cac5360c9b53e0d952af348a28e4826db9810f07110a48771c2c9b21da3ca719c7a5407b92020aaa0180b4d6b3ae42a1c09ca38fa59d1ed02a3a0079f2e922d0b36d9795c1fa42354ca51ddc11a315515a45bc7e1e21bcd3287e18bb0ac3f8119a88d1fbce1d3419bef67b6694d9fa1bb309cc61c819176964dca19c2c9c907b129d01cc44a95949121c39534cc98b6d105e60fe519a000cc2aedf05318b5f655efe36f1b678cf4b875108a18db2fa312261caf839f84bd956c5 +ciphertext = 9ec0cd62bc32489cf014d70757b26fb83b3bbb19bc0c216f48829326dcb00b90256a7a5c4929fe9aa669803594abda4d1daec5bc98176a0cf44d66619dc04ee086b7dee5ebfec9af3d77b775d88a0d458f2a3d5f7517a98ef5a1ccc287047250d7ccf20be0154833116bcc1974534f3336441fb7e2185c08c6c79a4cb12cff37f05473a508dfdca60d774b4bfc5a52f7338648a8b2e34382c7d909ec79c620f5af5d3458985ea89c1316ecb77eeba08a0b294744601d0ffa16608c76bcec186203028c1bd5d3c285052db30ee906a2183194b790f8fb6d7a74ff6dcd25909b93bee46af942cd43defc71c7a70cc64a146f43546d03ca0ad34d8dcc4528a8f65d3f69fdceca37d78359cbd76416ee442292b3430170fd589eb8bf278df46415c740d31624fab2b73e116ab8b01f61512de5727117818598470179de87f9fd007475eee6297fae76e20df24958782bcfd4b4c3ca2e80de164b41bbf304a31edeb81906b22f9572e4411985349e826f6f2c37d5668f93e6544dab78cf8d4787c1234a04a98e8120bdd2ec23cd69f2f2bc42877091cb42cc459d5ce7a88d19dbc6b52c9783e03931d726219cee1be57fc4c4032143a7855fe1df7df26cfd815f8f67942adaed372d13c55dd90278c3f3563233cc4441a261908cc81598f1ae3812a0c312a6860a35ec0c80173aa24d7ed55732ed793fea7fcec59b3b355102fb286029d448c3ef5a39ddfda82da997782e352b089724bd7e570ea6b2314e30a3b075e37c16e289afb3c2f0eca3577ff385b9faa733fcae2ae01d84fc685676494382cb25b14d41c0861a814eff00ed266e3c3d1f9e5f6a3b11923860ae71b0e139fa3c75a93bd9bfc4286e3d432ddef5a8de2d767cb0fedc1eb5e4742aadae6585dc8c726c8c8c38eac111a3a25e008045e11668bfb48f940a567f80d6f16e03ecd19e00ce59d1aaacf598df4ea754cede6157e5f62daca54f10e8172b92f0dac2183684dd07308a5236c480e3a6a5aaa174fc0cb166897641243b6401ed5cbc31180afd3f4fab3f9246812c5a5382e00ea1cd89d67ab1c3dc80bd52070f9654cb0f9b4c9f179aceb687396cced59ee20cfac6372aa759e9423f1bd96240741bf34af940079840229a120392c6e01a37bf5c24d026c4ddacf9c4a96364dd985ef98da55ca7780d2c75ae85ae08d462e54d2f0db2138e9e373bf65896dc2967ff481cd2b0f724f0086b932f728c201463fac0ab083d4440bd967d4929b7fa19c3a5f2f9b8ab237722d9930bb0f31b932c5538725def050e680bbe4b2f92067e739897d6d860a8087af3fd4faa34d09a9d0362edb5374ed988509ce4a61245eee1c1c531e5e72b977be3992caed8a441ef8ea849ffd4fc2efa3dc9f254d582389632b29718f638a6ae13ca506f117bdd204bdc2f1c07a182b1fe44e5b0a5ee3833b8611b0da300b28aec5d798aabae37a97b76a61af12cd82b017c2e2503e9b1c56311fe79e37af0b881106764fec52e0b1724f3b371a90f225bfb1080dee64f4d45d7 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 953b6e6f55fffab6b9e27b70807dd993fff8f5fac9278daaf323d0155bf18af5ea012a4cf53840cfe7e4cb63cb4c7aa0e8ea6e518d3ca47dbb38d7f05d9365448b38308868c83348acc365bf6fb4fa763ecd6ee2a48558e67f30d92b5869d77d99a5c0bef4981a6ddb3343d0921ee7e06bd82d15368af5f9923c6bc9d3594ab33c91c8e54a8f9a2ee55ad25f493f8daa80399f770899ec05417a698e6493aa647691fedc92855cf3702caafc8ab3a3194ce8437b8e2a7f69454ae03e70c38f972abb93cf25fdd85587f637fb0c7e590d8eb3a9f680d1944500fec3964eda17f55272cc3e1364a9aea7a67af4561d0ed143b7b7eb4ab0791a8d638e4f4b6536cfa69ca0493fec1a53d597d9fbab9c87578d83c9441e6fc267e7aa4ffdafc81d6c9f834a5a23f06c4b58d7378af90b85f8ed5237559d6d88e9f455aa01d68bc297a8dd86da0df9715439e998afe8b496ea49e45aac1fbe6718dd198cf5ca53483d88eba27893d23baecd393dd1643dc2a53275c84a1aaddb364ccc94a8ba3b5768f8dbbe08a7b090df746bec62c98c5e5198695c2fd48ba5c98753aaba88bfbbc6c8de59dafaa8343d334aaec7f532c63d60667079c4eb6a287b04c797458acd9104c94e96bf18137b0868737eddda8f2e64e0a8db9c2e35dc8cde81eeb931dff8740cfddcedb5542732e8fa80e407a1a6e5af0ab3e68a963587379aa3e6a2b18fa8a366d4bae8f7bd6aa1fea76a619ed0ddd4db17283eddbbf335b8796ecebb57887787b4f73d4e85867368be68ef6e5767bcfd580f07b003556ecffc3ae346f610ada80a2c9e4ca9e4144551c89a9d68373ed9c7afa83c75c6b8affb64e87d3b46abdc61daed70b5584be7564f932985ea4c739cd9d6732a7cf79a65f0f7b0682caa5e2d70b4ed699b1bb3ac0b38cb0ffda4db9473dd6b02954e37cda3d899d473588c77e43990eaec710398586eca722ed9bfcdb8066d7d732a36baf897e93c6d9a988b94c67a469fb7594ef6fd55fff0b45a0348f49847e5c60478685b9c2e0e3d41b47eb44fa05fb76232554df30990d7feb37eb9e7212dc66fac8f4166e5eced7834af588e06f3044d74b214ccd939564817e822eee09daa87c1fddcd9573254538ec3b8459ce56579cd9ca66a508e88c4db06e93a268b86fa4b7733a8cc89ac826e9af8f56d8aebef665a7ac423d05be730ab4ecef3bd6a7fba53565fc8cef73e90a8584a8b799d3f3f61faad4b9cf5d06cb883493147069eb1c9c8fb36fb699693d17de262e9ce5b383a0d27c1572c49547bc909ddd34918f7343a690859a15c3de19975c35aa991193d52f117b53d06c5f4683d19ca5ba6f5595b9bf69d96c1b45f4cc8fc6eec85dca33b55196d3f59c5d742df46642bb88e06eb8bd4c54f48af3f573d4cdc5143ecbddab5a2825dd721544e16e35ea8ad5f172dd3a6c3adaf79d189bcb074f546bd2d33b1e8b00d56cf33ed733dd8ed05eb358d148a91faca963b814a9c5fdfdb4de79b729d0cf7c3d9b48a4730338bdbac9cfa3638f68159979f7be0aa9ab90adab98bacd928fc4e367dab020dfe5a64c5f605596e3498ea63f47286df61dbfeb734c174e48237c656636645886b65c566bf95e9f7a16730c3d8a8484295a1d995716a3bf93c7270671afb7886f397af65f5bac1b1a1a49084d1a672a1f98bca762287e90410ab01098c74869b42479c2cae5906ab354970c05cd256514f5c2e763230b6770884e7b700544977993df1f57969e0265fac4f474b76648b36f5711163638069820232b8a64f16bde83557b0540405d7987cc39069923dfa984ca4045999a77483e04fe6eb0be954a74c13cfcea79ed0d8124b01b740a26ed961b2bc496cbdc539a10b8151e0078f66751fe78d2f3a5100761c8beb514923a7b4f3ae208766fd852222dc31fc1a59a883c401459dc73468eb35af61d28ec1da147c882cc7f5ad5204bd8da270e4c91dc37baae1811cff4cbf8605bb48ac8585094327a8c17527bf5b3968aa268e152b6896a288a9722183e199f608cd7a412ca949113e87a956e4ad12737d53c3be4752533bc755f7a1c4b07661e988210ac72131b4496941893a9c6f1180ba622436eeb02f3a3a090c00b1ffd310e811a7a8b87984d275d76b0f99abbfa45cc5096a1562a375f0599d9698b18012a84a0628601c731ce1ce6824907f1b16878a75418c2fb0751202fcc988779be2326e2e5228c9493a0e628441b13d58b3c79df34b7b53c7be816cc7368f2f31c380296250b33269158c4f9706d75b3b5536adfe5b0bcf514899287b4b637bb4249db25a0413533d628597ddd745a7f5270d136763e48a517ca62e116913350e7361580cf77bcdb5b607b38d49e1581654a61ad9602f4415f484bccbd833255a29d2e76262b401f7fa5a1e68bb136771c41b29333b653602b79a2aba21004e8a257df7362163b6512eda4e1376aba1facf04d1aa56c814000d718b5b504f1b9d2e627b8a678d0294c5e3b186a67c082b90abb1c839232912c39c3e02717a65e24a185a5d96e99851eb538a4ab872148c2d7bc52ec4270f708690d0678d43c783ca194b4aaeb6f2156297355d7823e0f80890608768c65073e04e7e5b45acbb1cb6446483e7c315a0a0c2066f080a53818a4ec0e4973f630f6822a437f6684fc9431f20a306a055f9906435172699b3cd0d46457be26560f692864a97f80b493093270b5225980287f1f5711b355f9ccc018d670ed8ba64f10ba98b0068e7714074e14736087819ec2cbc960fe6939a4e9a4de2045b53e81fbb845b0e546de6b34ee9e91ecf0c9f74c569dec949d3ea11785639126bbd45137021e9670735488e46a325342a2b4a959297816d1ac731cb501d628bc09083ab5c4dafc09a36c7c70f2885a6622bb7162aa2c999927a1fb749bae280237db21418e2cec419990288b813e80765b47e4c314171b849e570c7533cc5bb77cb9f10272926c382fc0796f39924b6971fe6b54638c4cf25318e146aa02769e64c47e4da2d5264b282b32933d8c74242aa73c15875934e99d6c570572e03c54e47726e3b0416d3737a29624169778970e99de64bc2b16039ae97c7472a41c9a6c6fd45bd7738cb662505bb26a307a2cfb9680f5cac086f9bbf7799263c0b5367032196f1bd842534601094668a33bd339db59746d63ba6007887ab750f5887453e02b22c3148bf6c48c806a94cb7bf23568789a1260c87af0548c71881401c565268317756a211b6955ed03c49e0beb46c4ea9ff7be444932e61d464966bffc96bec0647ab34f2e4174b6e7542fbe80ab2bc06dfb802f691aff147ff90332d5ea739216c18d872df7d92dda83e6b2ef4cce08c9134563063068a196d7b1a1a13623e48ae12528e +ciphertext = 7c8e5f4f09ed554cbed6874d860af2b8fb97fc6de51e23a003338d67723b50616d0640c2e7e1492cd5251b0e4f442db191e500b3fb6d0fa76e6112f20eaf1e8f66e6634de166f2a67ace1d95366bc124129a016f6a4d669a643d9d90223b8a8829ca2314e88d76ce49a05e15121fb7116afe19dd38603e994f207e827135be71d62076b75453dcf6588b1a1c98ff2c517a4620f5d951cf06be81f28bbfcd08ff396e1a0894055bea6b7ef41a333df33e5c24cf30da5d78c5de7629cf8bf458255a3348f67127ad36d71641fc7a8bb9bf38c4706afd14e9de0fcc798c0fe35aea08343936f552a1dd7ca42d513c2896ad762fa4c0ab737d94f63330d47aecd1ea50a083f8660a797a9edb47ab2140748a610e981085f7dbe268e25e9b748dccfbdd9c312bb64f41a143a2a7f6e8d0bb7db83325747a414240e9316c2b4305940a42fbb9d5d7b3d0f593f63877d7461934a9a125d16673f288e828f17ffd75c0046564f092d47e99c59f51ce741d736cc26a35fec6d1c2ae909d6b4f4e635221139c9e6ea9f1b1135031ff694e3e12503e6315bd9abd54d0b4fbc9da7d48463e80ae57d3dfc1bbb468b206659f60772a2338f38b274ffc0d391a103e0a1a50833218d1165ea4e88f07782b1722fad72bc409feecbdf6a0bf99862af673488d3c39e9b343c35a5e6fa14b3c6893e727347bb965dbd9f8fd50b1ad0f23f7d3307f650ffdb5d8c085acdecc4c3ea7c52b1119175721f4a382b91c59c26220e40fdb57ba76f44238e1a77a062025daf823219ff117202f5f8ed2789b2b9e80bd98fcb4a4f42d006e299f190836b7e3f3a66e7ba13dadef54a2e5029bdb1d0f29318c3ad3013ce6793f5d4bf15c70cf79883b0fd455e9fb6bbaa0651d72596bf2392e38fa140cbe0f9e42f0beef0eee3263642a52f04f345c672560914e80ffa70b4f2700c8823a6c3352331690b54b3c20320a8a810f4c5f0a7eae739e343a93587846c4acdd4d93ec3e48e9c4e3728701ae9cfff5eb219cab6c50ce52ebe263bd54d29d4e785d80ee87cb4f064d2b38c3b2090329124ee0c74e4e7b7779769b14babd36396e1eeb8614b3af9f8867dc8f93c46376f8a5450a3761d6f4b7de3b4108c080e5e3c4c9628f160458774f0a1994f9ef5ba86933670c800a9f76866e38210a0e26650dcd110ad5f0f621e1c6cce1279e2c8ecfd4055d32d7b7a910eed993222cd2dc83dbfbba7d04e0121a849b545f646ed140e7afb1816982f1f2d8c6549f9d73148c5adeb3a30a9f3a459d3afbc552cb999bbdf104003955221fbdf7f6d06e9087e3c4ef49104ca51510c544b0abb048d1345c72d2c5e873555019487124998a67821f119ebf6ca973cec4e29bfb5704c92ebc7c742870e8de0f5811cff0107b168762d8051551133e3597ef4d56d50fa9333c0b5e6ace36ac36b0bac6ac16cec413f7e9d449f0ac9607b52f5a43f33921f3f226eac9eaa72ec17f0348b04a5191adb2e7571a4e1dfb11a1e2f731c124a6246d94bd253bd88296a9e60363 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 88cdb4d44cc9eb48c126c5877ff8792abd8485fb81e489e39d3f99c70c43c3fc8c238a81d4f6ee62a33db2499c866b7108eee6b7fcb1b063da7e758a8d487d11575079265b3158302a23732cdd733017ebd7cb7199476c39b583a2446109e99fd5c95be22af92cf374919d6e84b8f605b8455825c82eca4b7f2e864456dce69ef14c78ac4473688bd6a9a836f1759dad791b7835a8593588f847a8eca97b6dfe88b6380ecfbe49f9a2dbab1638e55506c353639d153656b90c5aff36baeefeb87da5bce3bed8fb6c3b29e77daf8d3a0dcba48ac6882f7ce194e8838703db48cf7d02c37d988346a3af9584a55cb5d3c44c05a18619a4fe5efbabd3ea057ff1b3994c902fce272c9e6e948c3d04329504e4349796c399e1f8dcadeae47352ce5e9a1743eb65bdc757ef37fcc93cec867cd4808edbf820ce7efe0d4dd64ab432d664864b43f8a9b1e763529befc413abbcf30a4a478a30a11d4d812d37c4a8af01b534de7dde32ae6310fe3b2f83d924cb790166af3b83f2baf4409cbba501cebb32894e65445f04e4b4b4933de61f67645d37faa44e2775caa53eff4e16d0e61d69aba662c96e45e31e7347cbe748d63e412550c014f37d0dfc02aabb18d8533d19b1a879a079c3ed529aacc05f58483c80738b380c93e19d1fb23cdcbc7e0f7506f3705dee316edf4594a4bd33eed382f8ab47478f23763898398d754df64203a76b0c4455237f3e765ea65e6388595ceaefbce2ecf258b5b96c88f865fb53554f7a2d88d6124bdcca88fb1d3f9411c6c133934ba4a959da88a072bc6e2d63a00767fe36c8fc5643564bec47bc8953d4aaabd146ab5eb36e3308f6fb9ca01f2f3253d3f0f76c98f91dca53afc6057fff7b6d378809a59b19680aa69eee3dd3e37fb8a1f3c8a55bca129640c6bddd187bcaf475f04c73cee67affeeb4e4f02859c9988357df6665196675df5e64cc5689965cfebfc0e47a531cf3fb3daa9c649954342a3f62253fe08f6aafca7dc85a7a8e25e61445f12d7a4a3bd4b57a2ccca45d6999e4d7d9b6abcca7f09fa97455bd974ecfc7cf3c3fa413d6ce6f39dc55d536974a8ab7733755d4b9889cb42bce4ef4606bdaa559346f19dd87bf8b7f0dabf1b0c9b75b69d3195bd745aec47483488eb4c1ca2c83d8198cc6b5f3da3f9f668f863cbcf951268c0187da818ec1c26587d87ed088f6d68f1fde1057fc825c395ac6783f074efa8597feac3734399bfa247e4e1531ead7dfe49355e44b3ba5439ea1e65eda94485fc7e0124bb96859df1c8b68e87a4c479fe570cd6a33275b6c3dfaa0e5d8b3789aacb6f7f1fdc19026cec38a95f7547d937bf55be7a7525c97ac4f82714c32a23c4723b8f299ffce90fcb4761b9eee869e4d3484ba3bf22ecf8bc71fb1f426d7cf57781aadd09f29617549c0b2179705a34916ebe54aa3747867c3ef7ad693bba5c1e4fe14c3f47c5ed5a09f607b6dafcdecc1c6f3839db943f5ebc4d44daabf3ef69095b3f7d9bde9ebc21de788794b63e1098cc39d3a83daf027e8bcb78b855fd56fcf16b45e47994aac71fd8e5c521ac1a1b697a18569ac38e6f52640d09d59c4eb95e60aec32b77bd7cbcb6ab384de74b6a37d8400e980ad735e9e838da63ac7a3e1cd3e574db17c2601d3927cc2a9d228a05f5c1e51a63634383ff5e03151f43c66a07be9e992aa65ca4ca17b1e021e06b261ccaa89b12a4916a5a4e39826a94c86bcba9fc7d65ff04549db70b300b1cb280b3a41e82b6c8b0a4a3c5e40eba59fd18f004ca3e4c15bedf22e099c99a3d114eb0c5988ba02873b9581107a23e54a8e51ae62375a887929f7333d4d763e23b20a246785e07700bb16c531692531433eb6a6594d1464bca7348022c1d4219cd8aa6614862c42376c3a0c4674181983f2a2ce8b7f32659ae87accab6023938592e188a3c1015e98720eacc9aa837a49c4617a850c89e1212478f3c6bba51c30a64a8a1c225274c92ea953872342a96ca3235ca7a9467be55250796126b30694f71b2f75b56d84ac89c4b635118145c7b8967de515ecc719e35804194b7ea9304636283cbf72339474ce1da00106110a596725574747dc07b3f0c7c527aca703cb23baa080bb7a4cfc1009b3e5aa89659121e365fd6cb6fd15afed70779a978b3ff50f915b6c16a350141721efd61085189c3265530c1a17491b317031b4e4667eb8314ad34cb7daa50566a9812377cf24076fc3dc748fd58865b1b02dbb831b25b7b7383579376fdaa6c8a5323230025a4bc66977f6a458374faeb14e47f70e654c42c94a5fc5e386a57abde3f29349623e4de92f900527c165870fcc26a2f95fa1850f2c940fb7b87686e253dd54b6706a84a0c70e3ab04ca8446efb77609e9815a261af5a135836064d44a485b5e850f10153653838e5874b76568516e847a2a9b186e8a50c34c2d2b0839ee58024211018b0a13fc781623cc313b30c26a258106941a66b3cd9481aca7c7e3ce3202f098746c42c58f4c7dbe52fb5f606fbf31b9b5022e691cbef1464f6942aa503147eba081817ae28581ecdd867a96195db320bd2d91c36db01ade9affb6b00f86c13e2e252c988300b05afcd007470cc3022e96af0768dbebbcf62b53345b213c1544491f1bc75ba96bd73be57a2cd6874511b44bf2dd27f4fc87c167815fec59f7a043f699ba4d23400886a7214160c23dc96056bbcc7007a0049435c534b66971e6e5c90effa6645c45031c0c905b9887700181565b53165bab605a51bcaca0dd0c308a46432794c38f21e04172005f4348211c63a40cffd7c32bcd57fde852fec793cb7013e74504721f6bfb7637f73319f75b08e3c25777c969c6ea000c9b79d6f16a00cc4b00ad7ca4f8704b2e54d9d27524f6b80a6d51f85447b22c29af0036c6ba486862c8b4fb03f26042a0e195a3e91bc303770ac844e77805e41ec6aca920ff3a1a3abe81b598c193723b20c8685590131da89c0ace08a592489791911c92c7e6ed55f642caf918173f190b2fb8cc0cb2139fb6caa259b5a4634cfd0a532b719903e32831489a2d390b4c5a5066b4ab5a3316441b162407096a0bc0342599804752fd4f21c45923705a7a04012ae4a900c01d584f9f41676c36681994c2f4037bdfb84a69a81fa561e5be05777b571922988eac714ff249926fc9cc4e93666e198308a434df74dff3c5a440948437a7c500582124574ae225f52d322d0909b5e946a5e22ac8f774f69c48b7874417bb1c0b93cc0a90d2a9640377808ccc2673495c4839fda0d1038b27befe3d22e2b727a2006a70fa33ff4a65b00553734c5bd8cca0a65eb3a115d96b8aa90f8fdc5f8f40f6aa3e88f7fa8a96067f8cdaeceeac90c2d0b5e277e56e9c405ec9420c30252 +ciphertext = 22f3f2214b8b2b7fdeaab34d714c6c4a7c474464bf0229c2c7f31b323f65f220adf521118a41218c92f737c2e8bb753d6e19649e5fcba1f5c821a7d5603c84400015986d669ef0847ca0117f03ad3ce2928f3b88d079ad95ad6396afbeb8146131bf4d822dc4dfac100f23fb329e23f3123fc4bd0605903dd911a6f9c092259a167445caab38943790b7556469cf37c07f06d604906d4d10af9370dbd8a2e45ab870063ddf1b3f24fac5c7b5b348bc6281dea95547c84641f697ced7b000334493c35df845a12a1cc3d61efaf5a84738c2279128485759c838993d7204706ec6487010e6935d71319ed2dadfcaaae323aefdb7fc4ec8f121ad6a3bf1f31afe622bcbe17ade7db20eb98ab81a5fd91cd22fcba60176084ad5a51aa5c786650fb0eae9dfe79f74e919961e018f1718ac031e46fc3601a6ac4f83d3cedc66225a1bd7879217df9b8fc3dd0be1b9992d0bf7c8b84854d0d9bb82813f3dd74a5b7f38d174d67a00743c4bec322d6fca86ddba4fbb199c5d1a257b5e94b3b1f3a5d8a3b1fcfc4fa56eabc48520a2db9291885d912173ae0bb798b9b5ff15298cd87689964a5ac8283b4d5fd11444ded04b8abbc91727140c93acc3c817cc66176ce64c4b7e5cf3d5063050d28ae924103b0cccdf116d72df01d2b492524aedda5522dfc54bc83912d18b984f7b3e5d5b1bee11e352b44f04f3ca3906cdfd4a08324008665d712ae8ea746cd4dde1c70f4f4299a22ecd16d17d5f66f1060311a378e7b8d7e20d1d7548bd902ba9f4559d5f870d587cfb4a2f39d41743e7610861d24e8703ca8575228ae41a88d3f7d5cc496694873e5fac388cf3c42655cb521d4680ff42a12a6e1f9e4f6685c2a7e786c1ef26fd6be01bfc37ad8618bd799bad70fcc502d9fe543d91b47e10a58a1787a2caac3cb38ca418323ca97a1c0d4427fe31ebaa4d548ffd41e696a541eac93baa53219944510c4b8a891d930d656e66da78d5ee1518fffbce85cc31072f234a0584c97a193737f6044a2ddaaccefffda4ad055f01551cecd853bba68d85f24037d8e34cebb8d625c80b5602a3c6080a393255829f94dca02f7c6f31a674cf37307dc5eb649249236cd8f44281d6becf64f9d301dc2b624c6c0a7ff0cb38461510199b83b42d716c5fd6cfbc0c571bb07620ead1f72ed1960c97d76d51805a48bf594357bfb08a57c504983d1cd8ecef8a6e5cccf0abdea45abf78c044f1dfddf5a884ec3182c3884df3c1e271408712f1d55be61b80e9d4f64fe5f3a4506d85875a59908ce0223e40c775ebb258c0cc9169ed8dae85266a7f191c5729d867fc8d6185798a1bd4a6e9f7594eaafd61a925ce5b18f7e07885bb2d37704a544dcb9152d1822c5ba449fe71c499b46a6590aa8adcdc3be9d5c0a94066a53fc682f5d01800d5b7240f2188600a7f1099e2d42d9dbf4e2831c0e046692548918212ce5d52808c6556ace187ba18e0ff1bf27ef6425ac18ff437de794d546334f940fa5f545128aac740fa0fd0a44888346a70f0bb9c +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 4dba785c3f456e16a8eabfdfa7536f1b4555a9c4d3a09738658ae4846e788d3c358a7baba8b4c58ac979c4f786e588ae245cb0c13cf84f848b89585f7699ffd65cb906d39b386ad4d2f5b2154abd1e77ad960eabac83f3788db33d7defad5dba40cd7e8525819593b7d7e69fdea46f150ee38a475e4784af38985501dca6d20bc8dc1c5c784db3380435907eb6e98bfa0e7350f86d8321736083dc54e0253c6e5c5666ddb7e68355d4e98daa753c1acce429b397da773b043459e5aabd093a5b031d502ccfcab36dd41997861286924bada1913d74327e9588dcfe6fb68711c964fd2d393c73b7c967c6042fda3ddeeb2efca3dd76e6d1efc835fa92946a40c4dcff4655301edbd9434f86b3c7a07ad3c6ea37bf623faae2d9a335e34b6d8e6d93cc7edf1fdab723b272c7df494834ccd93bd89ddbc3a9e9dea4be4c585f827a4352ef33026760dc83377329ccc0fe80a66fac50833c0f96ee796cd0ee74b584f693223bf8eefcb446fe9b06154abe1ee0c7bde7ee5f5b5fb3dc64f6d663573b879eba69efbc590e57f1c66ebe388aa2747c519e9af644acd903a801a5c04a7afeac686c89835cf59a791ad5642274a0f88f44491670c66c9bce24ba5cf6b86967aefe77f8dce89740df9045db844dd8d022297cf63dc8eca480906d3a90a840ae7da803e6a0bfb44b396e6816073c5d7ba26a74d4908ea3bad3a0c9dbd672c7466e38824539f98a8cdd82a4d540d3e2f429411c4d3f64f4e9d08fde1f83d26184cee538b27cfb91f26e86dcd3904ba6a34264e55b3cb3157937d66e8568f46f283c7c0e88696324a4fd77c3e6fa5b5ecda13126f74e5792fed69eaba973730a79889ed3bf63934d179143ecf3ed39585e4dc06a99aee0f446301f3b8a6b539dea9e061e7b08338dd6754398e749707efb4d99fca55ae3ecabfdc81ffcf779668809ad6db97a6e9be5ff0a862e664d292c4af559e95a23c19e2b9fcdb9b4a5b9ae517873ccc6449a3e96de6cf716d58d50e7cf11558f45ae6580c980654c8ca68e67122ecb2f8cc6f915f9c9754cf18ddb30943eea1a7b06fdbc8fececf776b0cf3cfeac9f7dc93e97a417edab0cd8f983bf4d2c613e087976eccaac13eb895fdceceb6df045df04ba61ab39cad4c6b2b335d3d773a34514b7d5bbb9d5e7bb6dd9ab5bdb8f34a9880c49ab5d4d970c435509ef6cbb5d705c6538696f49d344bdb7d8f0a5c8869b47eb90ee3922a5af390bbb7c8d9c3a2f66541671c75cc2b7b7f48e0f34fdae6da74f65e5d7d257d770d2e9982d6aec6d19bf0ba48b53ab900fd8f80c754c14774939b83c6369fa12f35d1a8e94679942ed2f7b46cc8f354ad547f9f9175c35861d7239aaafca25edf3c835e87d921e5c9b134ca7e28ae8c7656bfd6a4fd253ece1743576e575dbba8905f4cc391d8e3cdcbf0155b5301ae00958aa99a4dbcb473ef65bd5baf55e91a5fc4695ed314bd990ebcf2148cf2823dcf49c8d080841fc8e384e73367c89fa11099f5b8984169468277e4e252457b23a3a1e33a36fef61247fcb2c14d3094da87f96a31913a428cccdd38e7b3847fda4637f46044f2218c28e5f5a57d9c0cd2864fd43aa5caad03a09a35ba786a86fdce0b9190b548bc164bb826874c1800980dab529866b951c01c20cb4ad363c681336b13105fc338b1788afbff321bd981974c33d98a35666eaabe3612e61839d6ad65490d71ae992111719aacf12a060648667e34d09343d93db88abc69e0e098a63749bdad39f8c6b93d75990b0731621cc04e6e2061e93cc4b51209ec92abb303bc638c52ab2ae40d746cfcc43b7576a240540bf410c14744f80a442d0555d474192bcd9b187a56691b63965973c7793668682852f91cfbce70d6d4832a1855cc4b83a847734c24019c508b2d29539fd1a114f787285e197b51bc092f80b559446f1076f02e984a1b27cae7aa1d0b50967939aac74cf2335ad421021e3225d94fa3b09148e60c20e8454c68a8022043206b7bb1e799c9b69286509a188db29a9ebb078420a0844c858cf4b11f9b4959934002be0229e714350451b9c2775a5cc8c45b07e121290eee32a73d46f8d7c55311a8c29027356139f153cb405fa14064c5c31060d7a964b33d76bcd4809d21b34a2f7806486bd2835b7f871164ae496d4264f89fb4eb15b7e5a7232b6c68b11351a41b09bb0c92c8437534d2b4c0ca2538023b29df93d93c98136780ff6f82846cc2868664322ab28dcd7279f68994ba5a5ed406d4d717d16c14dfdda58db1524f7c53f3cb170d45a411b07cd64f001daa0ad1bf63a11550c0c154d20f5096db44d1ab0a1c9d66581891a9314c18f778330a0936e7a2f3e19c18f7bc87cf078627770dfc5a2fe71b27eb8276863c3295c11e08703ef4a4ff6b3a1871c7b42c43a6eeb6bd1526aa95b7dcd6b38edc207c630bed1768ce9505544e9053e5c8cbf6a181a1a0f48c8a98b59c3adebcc3a5c99e61588834024cfc71c9dfab1df558711b311404a739f79b45b1a8a7633081a27a08c3c16478c9d24c1229723addcea225d39bde7851345b18b1b08254181b01623347a9a57f5d902290b10476083949556663309059815626c3ccb5302b978b2ce82af231934ffc7732352b990b21b69210f2acc048387b95c346974c2181148078154416e08564d664db3045dba82c9a7934de51ab5c1d7346a391baca48209c8c7235309943c1cb9cab4771c7eaf59321b510d430c88473ab16f54ae461a5dc613c6fec61a5e899552e835eff57fc34b7992755d178a0365c52b3f020ab40020ce21b45717654634606dfb2917fcc266193e2e5b2c4559cc5652aad1121cca0711e26c23eb33c1f7d389f2d742f384725d3268f8159f8c463585998289e58369fbb883caae21b87139e52d7ebb92b011cbe6426390458247c45f06f2519ab35b35675bf93325351617ad3ac470f73d3d3985e10277a647c96a6c56cc2346563cc496db232fd742aea3adcfbc506ca8cbada7b040a04f6e329fcea77bec0683e1a87c396113639159d9ca52a5a5484d2839869a2e80557a6bf7ce2ee295a464aaf835c542457d021c65c2b2a457c771fcc47f8b1056c8b7aa61d1843a40c4c9b083269b2e89fa3ba5959f89972805fa4b46e35abef0c57d875c54804de77071f1219195bc8b4f7c18a19a7953573e7f4157ca03be2852461a784e736110157ba3f83a6947aaa09e9bcae730b9b212bb837627293a485ed6b42ca1cf26792676c1f4bef1609e71524b877f53fd3133bf71ab13912bf37c2cd7a359eab035cd631e1de2556ae65d57e600c21e8e355a4ed586d667177ca0b7545cb5a23d669f4f3029e1be4e1c0258c3a22ff5b50b2674cc094ba7018da2a61569845c17d26f +ciphertext = ef721977b01338d0f77a3f31f04fb6dd98be2448a7d73e426cbbc87c9eb56ec0a36df6d71a95516b8a6880c9a722ed440407108a41d0dd34893d2a6f243a28d8ca9920ed831315fa207f059c0841e6d2d7f9c5311ac5bfd74a36e81c9da718a87d208c2eb4f1c83676216178022a27a04ef6343e958f206d22a27f565907cf39d521f5d0b4f7025f37c228ec396139233c4f56abc399818001ea2c10a15b4b46bb348df15c2da0ff6ff9851336ac936804a27455449d21822090e6a8962420e742a7ba41f058aab77556bc2be4a59fd6588246b539b003f90efac50784e13814336c4b06838dbba07f6eb287b850b05c9e4f7542ba1412c9e7ef5af7f8cc8f7d3699f9b32db4623357a24e3557bb63612a2705aae3132be9c6a1c143fb52d0d87530654f1c890d40a645df8538a707b35d173259dbbbca97c4f5ab88c047936ac72eeaf415d1e5f8d27817a45a137d66e6c25b0e6b2791f65063166042b4e750d6c445a4b5830c9c2c3ee8a879f1685f8aa7deeb693df158a6f2998560502b3882839c1508cb1611af1966f62bfe50b1554e4f0d70cca0eec02c0d295cba03eeea812a031757af2a147925daceb64f7c0a4bdf728a6536012c2e80b486a3ea82c7ebd7b97005aca5bb3e890a9515d5942de00ea502ef13d620b832c7a57fba93ec30b259512c666e3d325922394c1b4fdfdb1cb24fa6fffe747dff802d277370a97f4d0b7fd78a176a6758bdbb6cc88f1ee95639bcd9dd69f56b45e1c8faf26e205563481860e5c3e999354f38c4a34b56f8ae19848e53e1d319b3dcee667a5495a47b9fb79aa137787d2e1d51784ce0b90e8d6040d8da5b9ff736b22c1eaf1da117b258b5151239543330e33e6a61e821abc31352b41032fd51690bcc65b95280ac5cf1bb146d2cf364e1c83e654407bbd3391d68cc494c93da50e360176c3caee6e96e334a868d6ca8a0873c7a4e300dee289496c71f6d2c81ebe9895afabb3a274f8067035ee602152ecad5fa1597a3fb5e356233c63fc9e339a17204ca879e084bbcc4eb9079d7e41154cbd974231cc5a74f1711109dd06a1611f593e0ed4be5e5f2ad8619e16e424e249e3f3d7af016785582db7d228f7139649d2de795b264a65554f55d4621517262595f5170cfc96176e397e84e247cabe61bf60564a3ddd3c782bb428de86962f1b7510d136013a7dcd72a464180f59e23772843a012d03ab5d38dbf96d424fa371c28e7db3cc123304dc65026fef804d6a24c55ba5ad15b3bda23ee7e61fc2555969d87131a15f29ed7a5abc5e715126a6590e9c1960e8bcf9ab46988e0f3f2d58d5a6dec84aba81731e02d7a862350f8c54d48a5477474a1fd7d58dffeb3c2485ccf956c20dc9e0547454c973d6ed72bae9afe2ad4e8775e5a57f6663fb464077cb812268571672ca5d1a3b49fbf56db19cf7289820538a4c426f1601abcec6db5893a394b8b2f99382948738656dbff1a5c8fde40e29ef40a84a6dbcc4f184842fff1bac63275a3127435e0eb400e204e9fb45c +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = ed55584416844e1cb3c75acfb387e014deaaf1fb3ca8a5b718a8ce03ae5ae26bacc7534f8b084a666bd60888de533ae61686b07faa83884c6a0efb490a8a3fcabb50aeefef58ac43ef4355247bea661c593766ffa6067e7aa66978e4b36fae431ee4ee4f4f82d50d3d5bccd6cdf7af225b6560c44f44af78677abba8c6b7984eb3ce8cdd0769ab407c9b3acd32f0f4fd1866ade03ee5e2f3336384c61ce9319cd9fac145db264cbc4059b9447f631d8f41ca376aa6f76111537019dded1356d19e6f8f200dcdf828b48c47cbf958989b846ed893bb0b6444bc2a35c6443f77d757a0cc95771637356da7aa4e51cc548f0c78aa5b3f3582ce92d00b4d972e9807ad4b1a0ac82a1dfb7fcbc8cbf8a8e3abafd3ecf165dd3a25ce9d50133e967c7668aa8b81977b410d67fbdfca802a76716b95e4df8be66d3e4977c33d3ba5df2446f62658274646422d4eda8ff86b58567cbef9bfcdcd6f1644c413fede6f39309aaa259a3d998beecc535f17d773ab1c5350e3c82d7dd175269700a56b0e5fe1de0fc13d4bc7c64f38f50e634427d2614aede34ba9b0c4fef1af9300098667f8d03588577e64b031139dd228ddb113623fc4b74e946eef86a1a6bb52764c6c13aee765e37a6864d0888aa9140a3adfc48712688435258d56337fb8d8a9e1f34bd2f8e8ae3b748005d1fb6bb03be5d019c33bd38bd60ccfc45e9af268de8928cdaf66076619889ff7be769fe59e5f23ef5ff4ddb38e5bb6886b7bca9da659935db493ded9a808157e425eb04c153e673333424b7aa939559e4ca973f7644b8e3b8dacedb8c87cac6365c1fdd8e329403c69490976cd400d6f3148e14a6b3e6b3c4f054451e5bbcb7d33ff286afef63dfb8184d0546eff8e4b33fda87ea71d42d1f9736ed58e9047c8744735a728b636dba7abc33b2eedb1573af8b24cf5a8668cf09f91990a499bc8935f955e1dfd301a65be870b7f02fd609929f431f3436aa5aa6564c468aced2f1e540365e38d9eba6f0e82b6daba0e8ae77f03f1c7bd4977d47da0e5e672eb96ca054ad2d4a0f72930061775592aa40e9c9418ca6118a3d4456d495d8a46b35ff01886cb52e38d92df5d7fb8f6239d628e9e323edfa51f8c7a33487232f4934143e176a9d2848e751d8594fd94910ef4e15389c5736fba58aff0567a7b5c4f441a74efd673dd7ccd6802878c76bb9ea576965ee45acc9dba54aad1b6e873a1d8c74176f068bee6e64c8897e8320427dc9cff676e06dd20f3450804c7a1c8d725eae7f9ebe8f715b7894ccbb543f1d00e755d168d19a96356fcd7efd6fd9a8c3a8f0be6500433f925e37ad4fa474b8e44ff83bebfb46ce6fd509a5aee8cbe23b74cd58d79d92f93bfc9cd941f89a0baf7d8a930bfcfd00adcf019e3cce107a18e9c4408d5e6fcee9e45459ed87f31851b88b6b73156ec820a5cd9717fc2fe6ec83d23413ae5e0662894dafbf38aafe38fa8e8514fb53a637aefa83379cdf6fa7bc3155e6b25d343f1edaa787fcd2eaf7f8b39a8becb44923792a7d586632bfab963ae537768e45961f5f96cb433f0e75738a974e68ba4d3d5b3591ac5679b6e857d8e8b2a486bb2a9d19c8bd3bec5dd2e4da17e84712abcd1f1390e49f3b488ac39d0e43292b70042c52355eb48b841887ea256055a688fcac5a71c896414ce75f57bba12967215c50d4b5be692b6dcd1ad2190a3d785c19e283f87f784a03c8f52a23e150734fdd7bea2ab6d122c928606bfb60570bd696d9676397ac3aa1d062ee1ab3922a2c9b5b02d14557164149c62e8029b139e6950b3f8acc9e8c30274b69926c1658f7836f479c8cc70138b829848c7698b179643b7550e9193d6fa87350503c2b69136b08cc298b5c335b1ab95054d13c9260625e34c6c2fb8186e1916c137ad9907c8b2ac9d88faaaa0375236751a47918f96477b7ec01819f8ae1d72951e21608c87532a9428bdf4cb5658440cb025ce3b271652961bd935624b9eb70047e63184b9503adcd057b6744fe42908cfa325e401b9d0db5ada201f5d64350d392c4fb842823895e15720dd7785c7f5986f15cc2565a71f6ca11b854a293c9ce6c9a1f4aa3917130308f2a2aca964790baf960aa12de3334d146e64db81ef09563c9667381424c809441ee989eec93597e7c5b558a89dfaa976f6934cd18b8eacb6f2f54e8f748e4bdb69b0764fd59352575066dc242dc0f1356fab4467c8064fd23f8823148b77a4acc642eb2c181fd5ca251b323561191cb15f2ff0784900a15f67014b518453c4c3663528ffb53271e195c27533fec8c3b159ac1bf39c6fdc69dd5a5fe5872ffb6b2271a09966a5c738c48e63e141d65315051610f0f5588ac97f14100027b144aa23774f199d0d9a122953aca8782a4136820ffbcc1f2692bb919b674aa1f4d679e8418e8597c74d60c5c287cde6d44492411222636b03cb661ad66fb442193690a5f1d6b80a947442a46bdd239fe3989e6da86949474e395056a5e6cb42b25343a7c73b650d843527444243852518a9034b9efa7a6bb8505bf605ec238ffbc08cbee35a94845d7319144b381819d0928c27023b727656ea843140649c03098fe74c717aabe91948ea7698db0a86d34296b5e50dc0a9949c8ba07f64ce60da2b6e62458da229d52c08b9b696a124a8cbb791c0d255d3e4a69ed2c242000dc6476b4555552deab63ec19fe8783151daaf78e561e1844886d4418e7510bd025299b1c83c7ba22f63335b9823043336da897a44fc6a28b44c68a49b436b0dfa406be642a5bd303bb0d633685364d80440cd7189b6b34f6535101979ba9d251474fc91bf2497670bad0da78ab3c13eeaac864572a2f919546a57c719bcabc9dc8215b492d53118c2d379e879234a700638370a530577700982c4334673aa5d71db98627384e8ca876e24b5a31575ea3c334d3c7d3abb6d8891b4904b8f5db93d0531caff25be53e28c45c94758e309b83abc2ba66d98d3bdbc53b7d06592f2712663c777db60aff496a217e82d8272c3a218ad8c8b04ae7c66be35c08e3a955fbc18edd07e8e68a806fc3fe218b87f87bc332b86c2625d8ff01c9ff6214b75a20cc465f847511030b47ea664a75b3d4ed9038a9c747c6872de0a57f3b76c60585ade64570a21cf8548a5be4996bc22b3d16a7bbbd20149034764b820892b9394581697e39f9b35077eaaadb06702968a5e5418983110a97d4749d3160ddb2b9c587767fb56b9ed9bb3d91cbeae141769c2128e0acadbafd72fca96aed457caafaf51dc8c30ceac70cb4621cd4d7b4c87f3829eff562789b3e19fafec92e4b5f95b45f3786f12d9c24915ca484a49ce1c0ec046899a777655233e4e1b5ca44e9afbdc67964bfd5d5e3dbb45e60d03cf +ciphertext = 011f7beb6c4be8f266d9d6baeb2d0ad7c3f7a4257b770a8cfe675d00d80fe92975ede583a59727628ca1064987718fdcf8f8269a371accd47560caa9daa1cd606b258b1532eb341b47963281d843462e822406a41681bbdd81247255b4ce037514695a4a596ad23b493cd368897e94c654a69b102e4aed52efe1ca2407222ea5874a4366f3fb804b9d482ebe6ba777b9d79701dd04becdd10acd05b0b4281e6db009188cc9a0e263232f233091af61005f8258f05e638f7d779346f59555827b92b190829003f42156dd0da2f43a3ab17731f2e15f7207b11f4ec0dd6ad56cdd5b5a2066d1788cfb060317cf36b90ccbcf0014efffdf291606b615488a762240733fb52e0fae719f434414e245eb8e7ce84ee0a35ed39925b233a219d60458c4434243e6575b2a654c4c6dd8bee20302b442201d846261f1476098459d9c2f548a097dc4043e8403ec21f6df98a2f1020a09e7609dba49a5df6e91fbc705a09d39558d7b12ac4092c96de40c18cf4e0d2e0aa575716ef57165d38f8fab47e40b914d75e5f4dd65fd99eaf77296fc742ce9e52728297729f9ccaf0e58f15726b6b664b3998f3eae5db3803da3a98c11149ca1c7c1dcec42f6b2be604134b381e4ecb044be5b1aa0a912e71f59d56f3d011ab99d3defdc09c345591c79295a528341ca533af543a5777a5a5df06527cb961a28075491da67334ca67f7ac1f8b26855ad3b8e05291fe9d401a6d6ef19d3e915235aa3de6556b7fee9c7faae019bcd21f54a137ba08d305ded214c208f197ab65123f58068d9b770f79ee0f022c85a5e18c0f99d96ea57e3df44475746c3bf59ccc5040b88da34c1ab7e477cefb479377844988d1737e56b52e95b02ada15df5125b6a380cdda6331ac4afb8285638465b6231169523096b49b0d13bbfeb905483893f5aec46d003fcb37165dba2dc96cbe7c269eebebf8f437992dbf4dffc7b69f202580b84184ece0ee39b6e6b782e33e40add26469687b05b06a02633316b8b1bc251aad358327f998dce5a95e7bdc5c4ed526854d5f44b2e1c6403fdfe2091f9e31cf706c18cd02d1a019cfd88d7a9429d81405c1be11d57582ea371b80dc19e89a030982177e3781ce086ea0d633f09e11ee5708d90e37e8c68eaa4a419e2fa01b07ba6c2bedcf57b03e740da6df1479e3dce41a7a1b587b918851b98efc67218c19d2cb71a04961ebd147d247d9834cd8c976d42b7658ebe82194d823865cc5cf1125b0768de6f33c8aaacf45ab11379ff8d920e1f1addf6e570c3a550f8ffeadcdc0d9c8174f2cf3c3fe70f17808f25c49eea9ae043208bdf9d5bb61dffc86adf687fb60bf3f8eb289e22125ab0027383fa2fb04495a9f70c66fe5fdcf1bedf9f9b7b52d6b3f9f39db14572e707a15793d06fbaad499ea36505777455420acc090d2fbd3bea249c225403a6e9c80b1cb49d91926a9acd9c66388386ab198421f2b51a04d914738026e009b022f1d4d513d44116bb293e317e22afe91381d64629145a2aca70d4b507c8fd1a +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = ffd8874d8b37c946409d69cb045f9b7d1a43debf4792d4773cd7f3643567671b8e10cfb903e3d2679a530118ac454bd542af389c46b3903e7b4323d97237ed8146a66593b8fe659db67dc942feabb5ff954a3d85a95f77062c3d4ebe68e476d15eb5d6b5b8a805a435ef78e2a6b68afa93727777e7c114fe24e7a10a94f182e7c40c4cc547b98fe007a1d998d4ac5bc3c31b65124f5a558c73e6be935c7a664ffff4955b6d67ca54d48bd4e27ff717af7b220efb2fbf7c17df6a541cb0c1ba5a1a96f9b80ff32b84cdfed9cb6f666b41d9ffd1bd74f42b5d2ef7fe8c5443f34c5dc3afdda165558bfd74e3ccae85cecbf107d725eea3a30a7db045a2c4a79bb1a4b0f11e87bbd8b29a8c60b17d68a82f64d9c3d5b5e391521bb945d53ce1d6543654e932ec5867549408b47f28d3bf37d7af0df432ccfc3667f4ace969542ce6f6637b570fd84210b3ab5456b23b8b339f4885e9a96bb17ccf1ca4a962c5667d0c3dfb356147cd4bb849e197d54d105fd2f26d824eaddb27b36bf8abc7876ca332cfc3a9ae61d995f3ad0ceff9d538ca2d3a6729cfd06d89f7e7ff57093ea3a34113749f23fcf1c15eab2c83667acdf10a549f2678c7187691de949995af5769d4647fd992bf5eee24f3d2c07569cf26c11f3942cb5d5391a794d42c77da0a324b05908aeb9c70b88b38a95f372be903ed6d071457bbcb382ae4c36f14ab3a747a30cb7e9d35791879873a0333b3fab96787d466ad56de9c442076fc046aa8cb4fd93bef3abe8d406ff6dbddde725daab0e50931c575a0c9137fa61442b22deb05686d398a6fdc0bbbbb25a073e99c380fb9268ca9152da1198b5c556dea03c878b78f7e6d586ab43cffa57f58d1255711654968fc80e1364887fe8e980ce1eb85645b399788ecf25b2af33fe564604a86397a4484ded2213e88df667961bac9ef19b9953f475c1afc9978c81cf5314a3bfab3747954abe4c8e7ded9fdc6625938ca4a92bee5a7aaebf86f5d7ee899d772c3353e35c2de8696041bcc8c8e997f8c78014e7c91d3fe9b8b34b63af5e6cfaf2854cf912f69c3c5b50b6fd9dc1c63f8835b3a83e37d855c69f9335fc66efb985933f4a66b084aa599d9e658998a15ae8b087120f59a014f6cf9b3f7dd48467f9ce2cfbaacea7bca7417d60d4f950cf9543cbceedfacf96d978a2c36aad92b665d6c9513b59278bcecc89ef04e555e2708ef976a74d3055a4803520357f960e596c7c4c2d0158a006d88504d681c76e0f21f4574eb9ff63f3e1058dd0f3d6f1e398ad1e6cf8067d24d17fdef57e9e3a6be9aeaa07b66d77be495a635c67066a2945376c9836ebf4c413a05a9b1348c323f9884bc7d820a6bad7a63be6f518878a97fc5f5332433573973df74a00fddfd50198a2b23d6005335e6b5e1925d5fb244999cc333bcfa4e7845b767bd50cf66607a9fd14d28548a4454f87ad6ea4fec8288e478cb938d7d9ec5cc81ea1a9269543dc8ebc6d253be1698990d8ec587e7f63e7445baf53317cf3eb8863d151a4e5659928ae7d4c1c7b2bd3ae9889d7a05ccbd2f0c78233ae0653452e3dabb7598ca83d3716689eef12af524f371180984c07fa6e239e3026d6b745ea285aea62d7b0180596be297a4631abe0d48a046dcc99c8912b8255fc45592a2a61230652bc7c450a674ccc3abb27395738d177e7579afdcc30e74e7c7b5ac5dc235176343cfc4920ed8d9472e13c9b36a6d38bb44756bc31fbab62893656da065901303700a14b2f785d98896ae97953ba358fd53091012b97498cd7516b0e1898e2f6803c5a13d70f5bec346917249940ba35e3ea954f6ca13c343a09cfc02d8e66852c1ae0ff8b22e7424f53b1897ea11268a6b866c09efe8694031754ed1a2a147c0086283284133aa6c324e0b0570469f09e0901f25213ff9b113147990b54cb241268e0b6c7a3a90c638b7c483c71ac1344bd65c988736c4756e0b71111bf5b810fb3cc4187363a94efa020de1c3cb9a005cf472bec5685322faad5bd1cb0f240458b56fcc5a6167f22577565dac1ba9b984c33c348babb70506b87926540547389b805ba01e4443b5d60b9a407f8b060fcd96c4b717baaeb72400eaaa9853b962e8a0c8d966458cc4cff31e960c447c6b205629419478360cdc945d6b9a55504d853c1e51364e7a9aad82b64fc37a02e4139b9e6c392dc83c04005f6d1299d990a89ed68acc31b5d1d224f2c8b3cd5280a12c6e088cc2f9d3c59afcb9fee458af5135c9b4b477d878f34723e3912189d2764f9366ab8752c9248a5684296ed46f404a1739ba72d5d652c614860d41898e45b72bf66d587089fcf49e3b94cd26999d7539c32bdbac0139b20988cc7b578ed880048885355f193ddb1690b9092aa2a86af03a41797120be84334ef25c2e70bfe8e0a658f03435b65787f38bc9452ddc584162955f8b8560991c407fa0c12d770e80fa4a2cf7b853708bef2a44f959b9d05b6faef83f6f41a2454257b0157c55047ae7d0cc17079e118c8a4ee3358d877251970eaf86684ec70858a94bbaa4bd2fd1895c2223320ccadce636c2156471b76c48d53e6a6c12a1317c39c48bf3a0aa0dbc8afc034b43398b9f1c56d407a4b7c2bac134024df6ae9800b230e2592f529f79f0ab048867a349684b242bc4d2284a6106dba36de7b3a114b6353b479d014a69e33acf5c465ced6669b22027d6657f12379abbd248c6967834239e2d3a0211b73a77d681b61892877b7e102a53cb4602e3dc1704ec92a9e260d9817c6393062bf520f7a845fff19123a1662fd241090ac81ee1748eea878d53969fea20fb95688fcb3d235910f154bd09a75556d890409cce0a20c6cd2a59664bc4ecca3d4725910d210db0c848ce7242cca945f1568561bb90d9a4c3dfba83074a16fb3ac934c865dcebaf6fd90d5b458c22542ded5111e77c12d8656908557649e9155a8472d5213b46f739f095b5fd4a2418074ef7db9385f19d6630aa29b28881aa3474b7ac352c5dfbfb20fd7b8a0b87cf3933547cd498256a9e17733ad6967d7b9c7adc64a951ec5c8ecb75b9190064f3a862d10cb5707215f456caa10a2c240619925a140b6cba878a0d40283efb9e1562c227d716d2935e8d96649c06ae9465aebf552d68da1e7991bf987a4dff4371049a0dc9e56f110779d562959f278b069b3c7712af29027aad6109bb0c3201565c0b0892a62aa74ca7bd6b48039066a95dbca4e76a3a323612269546b18ba1bda19c123c24504ecdf72189dfa1cd24ebf011a3bb66d35f78633e1ee7b249ff699fb2f061a75f111f4a7a60195d9045dc01716b6502cc107cbcedf122e8f6196590a2e5c7ed86cf2c5c2a898662bc9a81418720bbb632ef9cf0b845ed052d73 +ciphertext = 800e73bbc8dc491180b29772408aa58d07cc850910a70660127c54207460eabfaef758520f288cfb6b7f1403986abf40fad912f2ad1d40acf9ce8d2126dd59c4148e5483542045aaeebb0fc8a5d86172ff25f8b65db0b1c2ff9b2f7b10f82662ad06e40370465f74c8ab12396c4b7c877ca8c231ee5a88358be2e6efde24d17cae8d8e9185255e173f465a9df4131cdce630cab9dcfc6a84a0ae35256358e643b068c521bb3a3f1a63f751a0ac8a2ca2771a30fd8f11b6c9dff802ed6f1dab41499ed0290beed78292b1ce7807ec6cd25d934efe72177a91c4e3727956143bc3427eef3cd9daebd5d9f84ee6e335b77e2f0aad546b938a6e92504d3724a0de4e8f0d1b4ca83b119d92fda08793635b25a4547d910f2c90c143f891eeb14e52b5874905996cb88536643a64c931ddf8048430a63e1ff5be1904da5b136ee0f433217d1ae3b2040327f51323fa93a20610f273ad3af90d2c649698d524c407e04b8aa25ab6e5580be5025f34709314f80f06caa9b2e342c404679d8a08453ee3fa0b59c0b04bf14998bee7be578871deda59931c4e665a1f624cb181e22194bf5b0611cf6a41f7c3cedb2d52dd30a434a504e60ab7fe4d5238394d5b340d38bbde7260f3743f31b3637cfc6f3c6777d9f6f4dc3977d962a558bc533725f315ac425f3e2104e754d361dd24564aec0bbf5cd3253909e091941e8b7e828ca70e730abebbcfb3dbca1dbbad3e16f0d68ebfbb2b208a177ca988c8f69874650594e912fffbfc02d274e094c5ace6e480a3e51872488955176664dbc42501d9b0b4671e0fcd8e096539908d0147fc6011cef14dabfeaa9a1ca31f3010f17b1960e8233d8e2425e96c37f229e53390d800a6c059c3f6aa2b74ebb5ed654001cb760531792d796711c4eed4584279fc520a8e78995329d2ae238b1745f7410dd9cf0265caef5411606475735a6c298941cfb7ae810524c870d355211972e1856d471a7f928e4bf400bda5ed9707ec838b43a4dc080f2a96600db1a5759b246f7f870add6ea8f91608375976d085a5507c9a03ee3da29d77f4a2b32e51a90374ddd79e331a99ffd0d8458bfb5a65fedfa7196d36dba0f2fc8e04ea9fe8cee7aed584eeda24437bedf1812d30fb096bd5e3d7613d620f93dfcf1cb0cd5968530e6fe291ada0411daac93a6269d66db7e3908e91f4511551de33da82e74ca2a6fea7006705408260d7aa57387b8bb4cdd4809b2b140e264c25daaf9f50a8fc28274c17fe1dacff35b4006e311bf0bbe7ee895d707cbe2f1c46824a8813882d46d2d6de5eb8a4ac2afaf4939f36459f64a7dbadca53e098f44d8a0f75042ebe6ab566c8191679f6224bc6676f3d68bcbf422a8cae661c231c841df80d9e40566176a58d610e006811b8d0863d73aa66bd59d659135fc05d0568f438f82a2d4f9938d57811c4f1654dd127ee06fe2d99e76a5e716674d389c91ac198ee0fc0afbe93ade71540f2ea0cb2d63c5c45aef6d0cef2d624fdc309c7d312a39be86bfbcbea53fa206442 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = d32cbc1116ac892e9f9bffc33beb59bb94b372f97815278f0fbbfc690c94b90fdadd1575bd8cdbc7f48aa133bfa068cf1bfe612c43f5b9dd8963bbc66d938f46843fef4f4357e535c2259ed958a75cb6f03296e90be53a9b46373f8b41cb38c1cbefbcb91898669a872f1a8d9defe227f4fed65556930fcc6b494cc6a6bdb08731cdf4e7f48b86554ccaf953b8fc7daec737d8561dcdbaa7cd2a0ba8549f888643ffb1e3a419c49b34ec90fe3eb71635facce7a79d05cc04074d69ab3cca8d910236ea229ea08633edc70aa583e86912e5beb3cea22e94ef39db531d6cf6cc333835bfd480d6b1cdfe9a664e49045791d33b414696375dc3c7b0644626e8822c63f5d52ba765ff361d853d2454e6cb9a5bc064de1238ccb53438c91ae96a45571f743895fd60f613efd623abebb4afea15e90dd9452ca8e352a78e09579f06ef4db2033aac0be1d9335986e8542d9480bf66d3faa3fd2d0878c3753e6524a80a3f4ad7fe69d7fb6d9d0f64423a632996abf297707d94e2a6b86160b69981ee8add1c372faa406f64dc00fdda75c354491e759c3b5026e6c1920fb7160883ee1dfde68d7b59339350bde559c4a79033dee94cf15bd75a001f7d0f27db4feb7aef6bd07aca616e6881610cd1cb037c833fcf2dca56a00ea2e1ecfaf7ecb6121e81f2ebcb1eff7c6ea84251d8a2b6b6582e09e6e2b8c7f8fb6be8844478fc570c8d54a067b3422db47fc6ac691f5cca95e4db4540b7796ca0dd5523f7d14db34b8ec94d5eb66c9f5cae2f838192eff34f43c7236fa18deba17ab495b8fd529d89b8e1f4d7bd6ae85ebaf445efdc6c9566526b8708be3bb0cc8d9589773dc9d952a5cd78e43bdc68cfa55ded7a1f618f456eb4f97ac1b49ab948592986f33fa6fb19165320de672bb69be42da2985b38b90f79572488c5f86bf3d55fb9fb90449b66fc874b9439f000466786fb7e393765c7057051999712df34b5df7741a3f0e0046ec19f5b41d6b89d7fe33cdf734e296dcff9dbf6344219a6a22d2cb50c75bc03bd7fd0eae1fe1ada0b9aad771ded5d7c8feeed65dde87d5d47821e756a926638395883879a91b94c6164b4d89547626a9e7cafcef944dc956174b6cd5e54944571a6f655406d4d331f7290bd8af6e8c0eb1df65bcdc5464595b31a913197ed79298867aab427edd9481cdbf0cd8ace149913a9d79cc6fde9e6bc80c88c3339640fc667ec837b691c3da4556a952b3e64ce62edaee101c5a49b35475ae68634a7b0cefccfbef6d8cd4c43c8eba7a8f957db595645c64ecf08b50c7438bfbb415c27a45ae940ad077e5a533825d998a9095a735b5d23887b0048af49ca85f18395c7d3cd06bb687d9fcda9ac9c03a9333a866a9639803c76b5b199f94a269f389abb511d789e5edb892e5c565dd8cc2df74f88eed7bdbe3903576dde6934c4b6b75f96c477aa184d43f06792f3944efe1fd6e44d42d827caffd2989b936b91694825c4bd8c1dc0778be1971cc1efb93ec1b3674afb4fd07568ffe89c707b5786ce40d51b433b7942d88a6ef9bc9d091472844dd4005aa804ad50ce03b2bb65ef620bf0ac6649d4ee4f024eb2eaca73b80d489b73a8d94d834a88d2a96864611be0f3576ff861541032094855b18cf574d868b0eb783ce9011f28fc14c486b122cc80093897bfc8ac1082421f99767bc42b0ff41b22dc7b50d5556041338e6c4368ab190e92608f6cc69d8b33f1ab04de68cf96d9c5882c97cf28c30b86924aa57849954369c5427c876a9b1ca341e8522e1357e60a4450b69f150658715403d1e1c957e5a914b9a3bc4c45489053306329c7984e76f169c8639de4080db1671ed01a24724a101df89e45b5b385ca2ef663586ae58d9b33ade9738f84482e6e28909e7641aa673ad772b125161a316166e1717fdbdc8d02b2b2b6dc21805619d4facc40e9a21bcca9d4da71220a4631e95b25e960192a22a39b904bbb02f1184b79a97b3cc16b5e4b5eaf278913b7a195f3107342a77a68cac90c1b5a3ca9b354a6095c29c09c5ac2b44c6cb28a250834d5f2a307ea3434977d0087017ca2692b79008640b770b41ee2c2c77bcc2605f1857368c8e12983afa8633c870115a3818d6bcbcee864a8db694f4b77bcf63a8aec407a45716af6358065c30b77b68c2198b2fb558f463a7477b9fa7680f1e65706a888b8740a87cc7e7949156f896c182b53e464721e46a258820201887ce9b83d43250b63e2ab29900a115084a6e66584f767853b2e684c547d97266b36b6838aaba73298dab79c58c88f1b51113ee752736b7566eb5759cc4dbc37551135bb3c87b1a6c83ac5a38dbd78106ec0c5e9967a6d81139cd516027c25afbb6c47e3802d56079e6265c4f21f1315a96ab994597214b814cc53e8566330cd51fb4045f605df1c7c9c255166651de6041b7fd85c7e376e28076ad352051c65494a1054c30930621c53ee8947dce3c55bd686f186cd5aa21afc17664d36a2d7f5008ae83950b93ae510847552a5c2f761207b0f478c73c4d6313c8acc25b13ea64a72ee3334013cbc0a855b55e88ea17466534786b6176b9053ca9d0494c6b4a940b70b68f40bf570c461f11795952e69f21ec4562dec99448263188ef44e71a1681d626cac69c6b56ab51ae656be1ca028672d97d044e43577f26329d50851b0f8a4a1b6c2b673ac6418ccd58005ad400c27d274dd4732e56b5d7c0b6ee731a99e15229f7295c153aa3a873c20c23a35b6137c824f6fb021a0e28f98bb3be8dc07a5b038dc89944952913af7a39a9b00f1a038a628686a735dbd4c45e0b8bcdc1c1a902cc4d0571cbd589f507a0c0dcb81bd39811e723358d6320a3049bcc90d776562eb34877978c9929548286a85efb85f7c6c76ff255f13a0cf5e70304f1cc838fa398fb34e26ca662759c8f3657125dc2aacdc4615653ef074a784500ec60980be4aac94b0c7a9012dbe73cdbf1687a684ac63526778926654a4ae4cc779a600a836e3273acb95a802051f18af32683f52363572583fdfe30287b2632874cb04832f55e0944712c86d37420137c56f6251a1352ae37a0c3fdb885cb561e63a493a15beb5e3b123aca6b6b7294d8002e7ec758ad2c22d336aae3c067703821842cba2dc0b1b7a45cc0a48202a002f927122c040f84a884c1334c1e17347108b91c055d331c0b170c6f06048b40ca0bed838ad963fb8747ca714cf1d3267b701132046699798421acc06a3bc1ade172fc62123235c2d8dbfe40dd56ce5de6756cc4b6afdf64050da2eecd9953e893c53bf7ffbd3413880d082f26986fcf452a84a8da934ed06198b290ada1789e74d9081a9e7b6591121e25d64010c25a18676033e1d7278ac5f2d0b43a31f3a4156ae710465 +ciphertext = 9aeab84b3e0a280ae182a9ee4f3e5075883a9e22f0aa84470b1d481a7a1c45acd500e666cccfc98f1d01c1f1dd3fabf4d2a60e8a4bcbc237acd856622431f667719e83b8ba4d14da5131d9b377998414f3ae58a98295396e41cbe34a8a3b65ee20db915136097e6676a96c093da827c206f9619d09d218468ef0a2af7e3c06a647a148c26b706507b792c0eb9ba46f0d7e3cbe4e71488f83cec8af88fb29e3c61d43221d21329271c77001acaa2d47f2e3842d221834d20e232a5ba3a49f33f7a82fe0cacd6aaa96e24d2d75f12a71eb10e5e554c98adfa732e9d5cd6cdafd6a3fbe97d7b464b15909499f6dd739de3ba963406ce45cad0e8e25122d469857b823b821f59ffe138a29d19c4bdea4e839e5191e7187ebd96eb1249b50a0f4a8d7e3f4930162d922d296301bd4955c44775b42b8e06d25f731bb18e8cd13c1e928ce58b101ec64d88a643deff0dda247300dc7de01e1b8d1643c471369528d94534fe54ecd90203c7fc680582140ae1abc4963c0158d26be214eba6a262ee6f35c73209f9ef2611de8c37152c9e0f5d5195492dc8d91825593e2af1f348e4bd228ce205b50f24fe769a5cfb7462378e3c6f87e680501991e8ef4babafad6ac15f1bce68d0333aaefa0b8f169a2431890ea62d99cfbfba14ba9d0a203c967ba3ab036f485f96cf2c5f033919a1795f60c5772f0f6677aba09c56bdcb33d44470b02e7e1af31cf9b449056ac3b2eabd13c7ced8472744e4d0b8fb396b0791a956e97312b376eb045d7cadfe03c7153a4efd25dd393fd7a8a47bcdda4d4279183bf2dcfa553340ea026a034aa7e8c755175330fbce7c176b4f4eb45485519a72bb4d29af2e439460ffc08610c3aedd144749bdad2dfa5d674e0f6ec6e3fbba1e96ff5b3cbdf68b187c98ba31d25836e25a82e8434c0b79c4c5121dbe00d6a45947c2f4b7a6d2b04b5f6f1aea722caea639bac03b282db978e98235ab21c6714e7684ac2aebeab9b4418a77277cd3da7abb0a44c4c3d2fa28be6fd30a295d85c753dface9090ae37e56fda6c1cbdc9d4d5eff7388c3b96a909da4432877263f67492c35a48ab28ab686e1803d18009c62599762611df174ca87a4c5381b062731b3bbbcf07b846040bee6cacea3e7a1b3781a5568e7c3a9213320ef4877317cde72200ec9bd731d30d0a061cda0055761f0221a1f804a4bbc23754c829d94df4952f36664e3f677bc04b6f9a16412cbbb78b2e5a340837f587388eb17e9ec07c29745b22387da055e1e0c8cf8c01eed2140f21a28d38441d1ce9b263aed39dd1b20856b69082ccb797848177535b31f8065cd86c73cabdc68000575afa2fe8e5c539fba6ea5af3c017b6e3d0e40bd1e68278a339e49a4541d691b178758d90e3b8d016d89deab0820e4c0cf14a53b281e608c74586be07f1e0a5492e79a09f2c5464374c2f287c97d0a0b7bce04e55ebd3371c5951f46714bf52721706a1c086a1168081fc1d1a26e7c472fc1c13daf9f98a85568e993fbc14b4a635d9fcacbd698600 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 818b55fa5ac30b8e891f3a36449f4b2b046feb6765a61cc81d9d59d1f82f6b0d67a20f825c88a531de5f0dd95f0b4742d29abe7044c62d45a05bdac4623d305e3c3417d67f60c9fedeb6b2a3a8e19bde60ee3cb0fc6fe44435a5bb64e2c16efdc72febf6f7fd0f87a3834ab5348e96fdc950a3dbeb7354c4e50369bd4364cef9d66b3fedfcd580f1c9e4c0c335f547748cbe9264b787a02d6a9d7ed573b8676cddbdfd777a2a0ca5ec99ea1317c5289784df1e4e84c53b983778bf8933815f56c9a9bd06beeaf8f5ac271ac3f1e635eb9a8263c855bb33df58ea3b7f8f87d86f58aa57646b97560e593944c4cb3567a2c48fa795c991f69bc2df2cba8837c9a3b58a9dac5e4d84b5082fa144737ea39be4bf5ec41cc55c5344ded158ab4a1bdf0a36e2962b89cc2aa8b39e98f3ed4b0f0cb587ff71c74e4f31b7ea45eccda8c597c394e5d36f571cfda7c0ae7116edc7731c70c3edec492c85de16c5122dfc5a96973d7f4f3b58b504eb65f67ee6aa7779b77bf554736d9e6e76dfc6ba007a590b4eed4b86a7a635effff6d86ab3319db48c4dcb91fe78df45a948035ef42e4ac9861b62860837cd8e3fae0dd851d8d21f8aec4d8aee5f13bc3e8462f47fcd74a8e97d27feff98b1f8bbc37974b025295a80e3525d38ffba8467f8079d78fa6069ef3bdbb3349b3e506e474ea228c3927a554d7747bd46f1a0343cb155bc796d75c40e5c379fc0fc65b195bef153ae4154ad3d5147b0cdc4f3a3c5ded656e813f9ae1fd63ab7a53031dac2d0f87caddecb8156ec8c08bf367c4ccae7626343469e4e7acd7d554629349803519534d3870bf02e8cd05efdd0e63db9e21cc7dbe463e8df4adebce1280f6843b87cf60cecb9467439abd6375d6b1acab7306f3adef866f883762b5b4509cbb2be24fc5c65d047fedd29fa431f9b7d987f53928a8d2d4c33add899ad736b40cb4fc656be02e9dbf8d393d73fa1ac5d9c4335e1f1dae6b11e39cb16f7f75d3bba75440414af98ad4bc5239568cd60ef94c9bb8ff1d57efeaa74dbdbb8b72f3fa46694d1aa79421ba6811536ea8d94878d9da04695e0b247968b7463ff49a0588d44c5f9e47f0739f7ae7b198f8bdcf56967becaa125cde7ba6dce939e56d350e896ca6219a6b8947e3909361754593fb8a85e84fcacb74e1d45704fa4cfc92ce42453ba5c08558eee321ad6a6a38d476aadbf6987da1264ba5148b40a3a9be3d5e3a48fcfa4cf44caae38ea9cb8da86f7b45dcff87ab065ad79876893d8a3f50ef59f369c41f9ea40daa5a5985ce9ce06cf9bfcf947a3f133b4e57bb8cc3d7fa1fd25715a6fa9c99df6c018b7202885235de9466540c9eb5482a87e675e57be87f2bc74e33d8f7c20b97d9e79f343ff3fdb1b75ab2ccb6fa597392db92ffebb46cfb5ed1330c24e7ccfb39fc74deb8a749d3613b3803a6abcbfd99025e305cb32ba6a5b568f65c3ef7d8d49aef3f9e81aafddb203603569e9d5f641932f33a2cf4c0055e72dcedf9564a02afd7578a48a4e2e5248f3ac7baefef8e56e367bd3c567ab978c750d85454c68a5806ac38b7b3396fe9fe79ad01c5867d3f9de9b54bd63954761ab7f4a57b1fb3fb65f285743def07bad684c376ba98c3a0415a3bfb0ab42d0a3d68cb171109c5f83147c33adda2cb07c62a9025b44523b0ae4cb8a8bea5e550b717ca6c8271997cfd6c5ed76aa44e43da2a02d35610787f22966298ffbb45fd78a8d36eab454675d6951a70472caf06640bc1b97d6760e74b41c577855bc0756abe528eb4894e8776f1e739da45a9f84c9bf3c72b43262525b547f75176ab2e12d8ea808d3b0355766bd69d964eb3b450a96c835d7b238220febd62443b03985731333c54382d20200e30e4cbb2b607ac998f20def865bdf47ce78ac3dbc1abe33245d6fa7583b31b6fe7b6ede7a8ec776b20f7bbe7e376578f0933b761bb0952161123d61282cd6c80cdc8a85f9632aba1a8ef5925e410bb80beabc67735d07e4abdd587827745a3220a24a7b3902416befab3073c2cb1fa76ff04315b653b3e7c18343391f92015939829dabd0289b5aabc4cb5335d963ab842865bb7c38106eb1274eccd0140b415901279e8719c0415517b5101394f78a48f565317909371a3154d291698b0bede17052f30786dc2d46e71edc438c288cbd44445f993926bff0a8ca1a033b656c2362a659eabbcf37b2cb5916940aa9b3e850e51039c08c8588347e1099a0d8380ccc4b8cd0c87218bc24f09126a82a3d530a75500254510ac765cc1de612a4ceb14db78a7141109f947b4329158f87e4c8b41a92afccc9eb749d66a71159db90e7a36642636af22cc0d541ce52db7ab44baf30560691a637c93193a11a00efec075289953fdc9df3ec3390342aee44c08d661632fb0303681e1f89ce1300b0c1a36e63e5a45886a4c76534fa78b87a75cf96ac66205c28766ba5eef7062363c19091c61c543d5c1b8a547372515722ee515e8ef52bf8e089d93377e2c8458e626d3391953d658cdb05c7a40077f4e19dc0b132be719014c12b0cc242466112e94809630b63fad12c99d271dbd38e5afa54c894542b940415354203a0c8a785ab94200ee0cb976991c642257d9af6998b61ba27b236fdfab86f834fb2d47cc0904b9d6acd2f8311f0d4b8ad81a24f712d92272587220e8023a8bc13bd17572d38851778f319607752466cb0de7c5c12103fae4c57d953b96be93262ba9cb05405a5d2a9e012b21a22a2ef33a385c898c80aa9663565b63241a1b206f3379abe8262cfa49ba05c3b43e9485e60cd38d66eaed114ef81afd66b2594baa361d3c3b02069b1a164bc387632e24c82a91be2ca390eb585e900173699a8b26b8916e52bd643645d3225df38ba50a50ea013b4b2a86ee1f76278e27f5a4142f034004b567f309c52acca3c7530162ed744a67481ca338861ccc3e8331e1c67886023743719493cc3caea51438e28ac4ea06b906789a65220e3c7407c874c6322be1f9b627386081753ad618a8dcc013395f20f5017ae2b57ba908617490460d5a67fae2660a56c4c4d97babda0bae0f494260877f7077af2536b2ca46e297c61dd8422bbe515519210dabc02e7047b13f16607ac15e4950574c43bf8c39a2528addfa2782506635e5626967a1f30c02fa3442fa93250571a8173999a88dc27b43c476468a6a4739972dc1b68493413a2743b9b563283cc886916eca5887796a4f833aaed6639b9d531efe5cadf9225573a23664c9cea086428dcd19ff40a06186a41fec0723953781475f648e6eec2929feac2a86c9dacfa6214e2e353fda2d547c3829f5678025ff8418a1a76eae84d11c4528382828f7a689a0d5cff87b8ca0bba97feacb39b935a8788cb +ciphertext = 0ed9d867a5a681c5294598bf4ae653943fc39d85798d3ab337f344892209275d9916e72cac7e94757cd91e9c35b23e04a29cbf32320395c0201075f704a0149acb8b3624153e2d9ebcb6c072009850f3fdaf52fb27b559dec221cd22a24080b09b1789e5c7e0e927b613291fab9118ff69ff7876eb2fdab05373240ba5b10339c168b635c811456f2fe6295f1f22f01c04c8ae0e49c9e303edd658ea87a279b48e3a63180a645c40e1d0ea1f7037f53de37eeea6b3ebc8a455d3a2356ea047e09df3ccb32cdb60d7a894c1b708b6be01ed9ab7befe611f3699bbb54c1f9fda9b3fa6ebefcd9e535ff1cd1deb3ed6645498894c8dd29c89b6b4fae20bcb4e05876aa9ffd200c2672c6b0bbf2df9143a1a1383e3ca7ff7691c5c5bb6e94f489d8d269b6f19fb411df8865f0d07168df6fb052a31579be29954d1e6a7c9204e9095824b09e9c99d1b7f7c174dc653ac55cd87b6ad0ffdc49e54afc500d7e9d3674355f199c24ed2499d7f01e789017a33aff2f739e3b60420bb9658f2317fccc39663067fc9197e3d8da3eb414339d87439144b8b6c993ac3d715ddb2603dfd2b73fb1b89d7f46dfd757c1d2b6043f83686d7a8e81b699af1d4071fd4fb30309aa7a730e134539687e9cc2ea29dfdda6ef249ce9ee85b4e1c84da1b91689ded5ca4d1c9c9d8ac446139cae39ba54207e70fb18970078cb8256a0233d8b29a0e7883bf076c45dd9219f2694f616e7f370b53a853095435b0ed5a10210a9fe9e6aaa79076aff0dbbf7f9cc4e267a1098221c9abe8e7d9e8d36401878b4fddea1049267d1928d44c3a6f99be6bc476ed91feec35d9504a085e745e39f2474e1d3d6dfd9b8994014e294093ea397845c0ccc9915bc5c800c1e799a256174ebbf65ee8701e9af4f355c657a7cfd36ead4b475c5fccec52cba88e0e5e0306218bcd333088dc31ef4ded6a2294f29793abb4e3762df8b74e19ddf32a641ad8d1fe16f315c60dc68b2d29fd83d2bdabcd92d7cfa4e02818530787d60b19618a101d71f964dc95d1a921b28eeb343ab4e6008840d226a0e9e8915c3abc535e09351c0d898557027cfc578a07376e878c6b90220fb36aa04834dda6f9b7c1d8313b9242e9df2030474afa0743c9434fd189e64e76518573ab7a054d81e1ecd1321963a078805f9a074fd3920b7d4e1a435a5ecc0a2c25466913be3b209ee3b0693ee561e3d745920029c384f53c3abdb4a49cd4281ceb70eec21a9b47a693db42ae08c88d2ff41ef3d632080d33405a21b516ba377e521e868fa3659890ec0200985469873bf42daf4fa5fb8d0292c5bb8e9435433d2a4dd176c1d27f16e146262de295e2b1046cf5ea965e33ed56fb387ebd0fb39d95893d876e33278a699791930f833f2ed6e5a7defac09e6ace406deba5b19dac8440b6bcecaf85674839f775f279a8152f6fce0674e07603a69d10950f51da09b12e084ba70a828b00067ef26c9d3329532cafa9511f78b3c84b685f9b42d96ca5a1b0b399caafc45483a805b614f629a1 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 92cd87e633d25864c3c5e9d49e865c6226cdd2b39f8a1578eb69a864ccb2fa155db337d2def5b50e973495997e18c6c2175656890fa4bbb86c5028d16fdbd656bd9e6a4b39a8cafd70f3fbbb255bdd296c999af1f67e6d49968dd02a9c4f4cb9dd7fc875cf32022ff5f8e8840f7589c3df85c1f7fc8588c0a33a502a385d0537e86cc6809185408e9c7fe636f7265f8a439332f93a5ba2943e6dd7b30d79a25939a4c19dfbf57c755a6adebbdc8390f8aee407a541c46cb163dfe174f215556d20ab942ddbcd1627826648acc30ae467ebdb45075470196b46697d9ec6974f477eda553f80c7d1e853398c69a6e4a7da746534928631e6c8e1e533a4d1e89cdd6969c0edc862dfcec4ee6d0035bb50573ed61b5dbd45c8c6cff3ce04f76c5a6db01d4949eabd27d3319c0efb7aaa4e5f636733bf8e903ae098a7f977d98c01af67225b84af1c8c404a52472b8d1a793e371be7a9935ee69d331256620f4dfe390474dd7ae7d17a50291b6bba4dbc43f89fde3fe09b7fc8ecf9acb1e67ef6b4f33a7ff5e6acbff298dc35673135d5e83ba37df968330ce992dbed4e9465f67a195a41893194bc51c67393252ae1ed4cd829d99a3d23ceaa387209fdd974e73178459bda539bcbe89f5efbd5ef2ebe3c1e59018a32632fdc21d4972acaea146df31d3a646bb7dfa5b641ebfaeb130470a5ec7c416f7036bd3d15696be23e3b458cc9ac8460cf38ea6976a9d2ccaeb90be6740db4289a55eca386d3d8a7d17cf1102aacf46e57812dd42c3a6398efcb2eb5f2424ea1d55eb38fbce4d7b64bd7c7fdb184d8b0a8906cfce08bc9f6df64f9936eb6b5c6a636b395acb651ce6b6018ea9c93ce525eee624b5570f81dd466dcd9a909cf36f34687265b61db6bf298f5157d5fb37346385cbf4df33b98686e0189bddeb7f68f598db1b6cc7c3f792d5546e34fa807e760ecf7d8049f823004453048c6f743b87c1670c7eede311ed08a24590294bc9ac899bd58819763dfefacfb85ac66521ae95c77a7af06e772c8cb75cd7d44afbab7a764e85d66319ea005c9af8cc4b55e6df169e4f93e79b36506d186becc2f59d0541588819b5edcaa3b80253178639f63b3d9180ec7e8bd4e95435bde3ee4bbd3abf0bf335569eb100ed3bc94b56b338083c8f3298ef734ff762c6bed0855d73cb3b46baf8ce2dbf82a4347f31e8a6e16fd7e95f4147545489ad1378a853d489c03fbdc65273080bdca5f7aab6d3f8438d33ceeded733ab8a68c7ab89edb06fd5ec92c557fd59488c6f45796b7dc39e72822ebc7643aa5d56c483186cb65d86d7e865479ecd5eb97581fda554af613c486c0b9566a7fd5f9d2b82b57345aefce368dce26ac53b9e794be57ec16a498b744ce849ae4d53478fc44ea0adb4fbc3ed717fb69657378764685151a5d50d74d79e6f4da1596f898e9fdf95653c9fe7f9885d1528f1aa5f9420ac95de9f8fc429674025882c9758236e946163d4f1f5caaa456183cebb12fda02b6c758eec4ab654e879b4f451bdf4559697c4494d8abcff7045342234cd818ec0077c9232e6683856dea36f74329988af3a82b898c4f0bd33005fd1f40fa898e84bcedcc45e369cd1bb7f3527f80d6655c8735813347c3c7c05f81a176264a5ff791d9801af88047574008c870635457126b4069071242c24dc0977a8c13d43b889d27f08984d9ea657d241922bb12aa28a1408825b02663b970778bf669d585a975abba6bcf8513c11bc73a0c33897991c3428a5cb4dfed155b9a2909e6597dd8cac1ad62f9cfbcb27088860512859761885c5b6c5d89fd6b18f9e324ee8f80b4c507626762a22f4cb7f4527527896aaa97a69b8aa4fb09b16cbafd73a667e9cb085f7ca36067d4f740694e6c83c671071762fbba26a640c86422197894caf01b0af66960651998073ba7fccd3189148187ba22dd2661262766399a6b8bb943aedc590fa048816d1b9d827ca80935d30e1830c8115b18b754f20acd7a376272c119cc8210c9aa112d604b2022326f51ad674aa1579c081f12df04a9a2b4571fc1c21a8a4ae2c701eb2ebb0ce65cd2fc22fee530fb3daa6d82b3d46e33e9c918f6d33abaec34f45391245453ef4d128c4c068227a6511800d69f6a31a1421e2d322f897145961abea377c9393acbfa72ab3c3aaf7f04ddad50077e7c36ac46e083075265c58db4b7b47da253b8a9361c08a1248b53098c6b797622e228939f110ece18c02ac613e00b624c61eff4524f92c1ea632553d9b90cd886fd2c364b25c877459ba6de0ac8cc2a8b0f2c6d71a051f8727c2892d1934857eb995a8d728b9739872ea472e6602f2c39484d290109ba924933d6ae52c30eb4d80935f0d2c87d4dabf07582cae3c2f21692f0825c079ea6700065a6086b197582b76cac90a58451d7479965475ac8a6af662c7d23055c404246264c97bd23d280b43cdeb59be0cb31e04474cacc4a1453fa10a9e1e4050f97ca3e9ab31e561ab18cb3af721570380023a9349ed6bbc5df66bb243928dd3a4b5e113a0f99725c9c8bf673818b89030db28edc536c9620a1625c8a647bd3d7055039753e11c4b1be3ae79eb565e6367690b5338c554cfda9369e9b1ba75651a0234d2325ed82369bcd415089692547b325ef28189482714c80dcdc5bff72a6152b70ac2f16707c63a42830dd6cb88ee646d882338d3dcb202408fc5210c71d1a8ba02b8c2ab7e06e43ccd85ce39a215e67914369c749c3978778592d9e34b7671283dc787446b5b70a32c4c1ca4613b01a5d0bfe55016b897130d1bcfb49bb5f08c5df9f15b6d531b06c53a389500675aafca9700fbc310fff968300360ab631ad95649f0bb47e55b90b2593d9a60bb0477ba848c0db9f8bf6c774cf8348c65695b31b921e4439e976b4306a47069c25e4a7515866c0bd77b44c7881121025cd2f28430383600e4ba0bd28074b7bbf2a2a3bd62a73ba240d644ab1f89ace0c8a83ae62f642237de265765458d6744273e4372add9cf5215bd39fa516575bad72034288ca3e0d3be57dbc7ada731f5f13fc0252bc5a9213f502c342a451b933d3060a2ad8a9c13013e3d93455327c187547809fa57faa299a843a251f8368a715508c32aa57a42f9551520433f9675add0359c5997c341464264986fcf67261d16b7a6989ee33730754a2ca0f66b6c98cb421c8e4b36002561b1a5550b93b144d5552afee236357c8093932829f864963159a8e7ca992b8fae006190b55c6a4fc08ad10190d2a178865abfa35607e1a88b47ec8ea71b102d7f1567bed46ac74f3b7fa6e2ef8ce99508c89cf3c71d666ab065a262581a5fb01b2c9b9444fafc9ebbe336dc464489861db8253606971bd0a9008a433ed17752d04023781552 +ciphertext = 94f5b9ef5dfd9caea5d92ed4a48ba23b9f55754c1aed2406de032457dddf538e797c2e02272aee5ed23bae0d5cba2e37e7afb8a472c75475b92f89db6ffa08d83b9160768541c49dc9da73ffa6f928bf16882b63c29e9eafb9467d0ffb5e3ac4b95c89a9462432ecebfa096e36901d2192fb2ef06ea10d908a48e9c1b2201b115f19f7b433d74a6ea836836a04e95eb93e1b844df7f36148ba6b218715cddc3ec5766df62ab97d5337869b14d674fc568a4c249f7832d34f05ce36c465ef020d00df336b2befb72659f97cf645d4420dfa0ded164cd10130ec7e9bb371f57bedda294e603f74b268333afc0d943330e0014ee57fd5a655aa24bb8c088637afc0d6300a8a3997f3e513154381a8f240d037791da03f8b536cb4a4a46059b9ef3c16de282cafcf7abf4c840584eef2a4617b3b015a0e3734aed2ca2d7c182181343718934f6f4bfb7bb3806ff6f412ebb0df25b588fe79a60f0118c9f0de2ad09031eb00f635fae0a2dc1e25d8460da9faf3d84c785522b817442fc1c801b5dc0192480649564731eb95aa96970b00677df4b2328988ef813b13c0175f6b73b2646a90107f1c031a920aa8efccbcd888ab6f0c249d22f7a08dc725ff5bb6969ea5d8a319c7c0b905c2c3b9688a6eb0d42e9b6d51f5ee1195b0591e7f279831e427d283b439a0432f77ad85345b1cf997e6232ebf21734b1cbb6d333e73e25f9aaa94de479b7dea838881b766ffc2f5e8813b32bcfde3695096ff2c9d201741c602be13e79a84718c0201a1232a89f6d2540e343327c1c9ce9c1687b4b030e7fc410018453f363d639470f480beb007812fb88d6c3450d13a9e9924b82198d9325c4ddcda7e3b1216753eb9364bc8954f1c3373efaf5bd0b70e260b712a79253459fcb928cc8ee8f770e233eff63b9d1d7e5d15db03c95a64e24c1c121e084f2aeb506dce765d03cec76be9bf8cb26dde32198ee9972ac2a441301e49dc703a8284ff900353951d390be673710d0f8c14b4ff42c15b6d2bb9e360d0b573b608b0e28d8cc8d40b9486217fa3c4783d1bb31e9f8f7f9b6852207b4fc9938c9f2b784ca4946dfa1fac87277ba62cb6a5b69bf34defeef435e6e03ec53ccf255fde48bc843df6ea502efe32f094efa52c991cde63678a5a8c7e5265cb096298f4d32d482a8149157aa4b025ae8ff5889928ffb3fb08499d704f3d146ad259e296fee0b83ec7fc4fd2ad036afa9576d1196c3261e2ceebf52eeeaf5cfaa38ae9f4adf7be4ba96d063ac8ed6fdf3480bc26c1ec8c382539f188e5b64e2016d511af0e8744aea561734efb76a4c943aa452da6523ff6b4c99fc8b13b51c74077cca51cd7d4c17b77f5f966d79e67cdbfd9489a71836c8e0f0fd9da93b4c1edd952d6300413dedc20fc77730811008a39f2b9d2a87e67d9657aaeb98ac4e73f99b4a5d9eddedfe04eddc6665cdc6dc277b5eeb5b86750096708205ec78c20a512bb01fa825ba85c8d1887d01304b10cc482c1219f97b5b7b97e76359c20b4cbb06c4df79de4 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 817471e55466b5babf93afad879c9c951ba60d33dadd73d985bf528f9aa07ff755d7d79a2f9ab53d8986fe9d895d64d1dd97ad3f7a922526f79b5858f2087e659eb7bd4fb8a52a5953ff3622d5603a0a3152a9dcfd6ab9cd863345d8be5e295c06b79333bdac8938fe61e55350edaac95aca140398b74e75235b94417b8799a4b6d6933a8c8e5bfbdccf886664e7b8c5cb0b999bdcb2bebf88d569666d5fee2aa5dd1a8e58c0d36ced3a74d913fab8afb9f276be035f96a783f66f5e682658de520b844eb697112fd373a9470509d40dbfd0a7f85a94ebef55d4608167d925a476099c3ebdc3fc532a6d8f16be4de6416d0c30d55d808cd3c0823ea9265e985caff5538fbe6087703f28f157ae3cd144aca49f4fd15492e0df53ee5c9e78853590a3d521e843a0e37a26994197c3e61feea6096ec3458fd286b6566796787b05cb8fd76a419c364f1830fe2bcd3a2970e2dac1dbbb380308d6369eb29bf64c2dc660ea9938200738e3cdc318b77ff86749c43c72f9667d80d462d549bdfeb3dcb0d9641b29308a56edf739e4b4c4d213c6fe69be61f94ff4c1a45472b5464f97c6d647ec69dadd5214f6db9cee938a934e5dae0b03be706b74cb8c674ea955a4d8ae1f7cdb56263041fca1871a579aafec45d9bbf14cd1f0a9c5d983d86b33acf923a2721c8b2fa7b058cbfe64f43bd90f60b6cbe9f26a4f55d53e7cdbebfe3aa424976132c3b4b4bdd908f7f2557a3658df85c868def45b76a207cb31b7e402caeef39dd48378b80dc3312f78a74065b2dc873b22d37990e465e425b9938ffa260d9a93a7a005e9eb956dab7c2336be3d3884ae51e839f34c964265f4ffc08f52cb89858d69dcf093de59c54021b83da94884a173be6bc454ad5a71935fbeb52a4f7544a7fccd3ce919ee9adcd5693d6e5bfcfeda4fb39a8455fa44eb8467eac3fca43c1456409e395e1e7ab12ec8f24ea4ec7364ba4abdd8896bc7bf81c85ea66c767aca6dab52058336ee4e7fd8a4e1d44de277df9bbc67f78fa0657530ecbeec3148e897d989bd49ffaf0fd0afbaa5b0ae748b8d847af4b326f970c626ee16cfe2a1c66003a4317348374e66b29fe87f37edeaf6fec75cfeebffbfedd96f6765c46f0c153d0555b41a2f7d50da52339edd8517b1a5f4e47b5fad081efd8eaf3829f39a40d7dd565937c59ae1b2af5b27d8f07246c4e1c4d230e39e4f089d43d562ef954f332b7ea6b36ea28a9d26fbf51ab562c0e44bd238874e93a4d3c9d0a5bfb08a0b68c2c8fc0cb56325548da43e627977f914efd21d84fc3619823c4391e75ee2b5b77e8e7d7f9c1a37d3464cd5f9654307f1a0cc6c973e458cd9cedea7b6fcaa76d1f6dc44f74b986a772cf593af8ef215ffe17a5e9c39fa533b7f4fe8177ea5abe123e831e1dc561543a7e55969768fe57c6d499c4c615e1fd99d34b0738581061a85b2dcaaf13556208b3e5af388392490fc338dbc55bbf8df5f4906ecd7363cbe3841aafab88524b0ca3381f6cffdc84c6a112979c3c39e45157c0749c04c1fff83f53734bfee1f1842e0f7ff78c6ae1e337b542e5ae8563b16d99ebe7ff5776e85a0e9ff9a28bbf5efb444b7c8235e48f70ed014bbb8839b4b04a592c364aacb2c89689106aba29029c58ddf7050a2c78787358571aa506570288e747a4204c43e8c6020aa3e2d77b36c3440a618c55f3cae6d43b979786e6a181d4107cb723bb6d0729ce3eb98e7a979caea9508563d5a0b7a7ba55b8985b71f3c489b370d37a66ce048a9dd27ad17b38c66880491985b2af8916c547e9c6cb16b506170f29304c4393e8274ee254a3f13c6b0e31105442bf92799f21774be9a0f64970e6ab581626115a1aa3ee4da7936504d036b75be6046e5778f58caba93f8640bdb24982c17ba3445f2ab983b685644b596ef66acf739039ad0a3cd61bb80b000f7e8bf53f60ebe235c0bf22c7873aecc6b3ae2f3b2cc3bb47d1b88423a188393c43c4999c32a886807cc4262bcd5a588c5e1bf8ed6a6ea9910c19a6042679926f314e7c7c85bf550482735e7fa088c857ac1578560a1a2f7e831223cbde33a46632b7e24d400a82a8c7307c23d6ca25075b58e727673d7cb5554042cfb9b7f95b11a55a9fd63b1b9f0b60f6931a0ba1ad28b485753446b0005e8710d7189bf438407b8ba36a1687a48e550fa37cf4c6b591afcb0af6b8d2ea5a97b6c1729e7ae22e28f2082a5e653b5babb0d147a8748f2606ddcc7847c24f0d32771b910ccba85befcbd2b89c5035b2062e6b9bb40828902b82e12b752d48d52b7a6599ac014731e8da091cb30186c849b61954dff867899e5bf27428229376ac7d97fa03996160964abe56d3d0278f9f91fec6bc821fc822949ad5ec8a9d728b95b19052ad9442fa0527b3935f4697cfa3c7413ca2e81b32a57f69479e89760a46d710032efbb662f9467f0d03c806b619b9228135076fa235d502230e56669e2354c1b412ecfd01a429b5c76b17ae2ab99c73b4110957aa38c22c8fa39c00261c78aa571b953d868690761655ff700803a477917ac8a6105cbfc220a30a0cc1466d7598b2058b3899c567a71a66d5c9da75085686aa4ad4015100360c6102c84c336c13b229ff599dee4cb2c90a1516682330722da110f42f7c0a4f23a2089add65438dc66246671be41e7766641b4c9139777e08cb4d5b953e602931a7db3e1ce70d765516242ae8987454b898f19c5103bad39207bb16771b5d4191abbbdca9b5bea711081ca6521149b60975e02cc2250a355897960a8e203ba148f8be76452420d2134b607976f7809ce97597d8ca57337fbbd6748c03227607fa082195b49753c43047b95a020c7d195b01dd3cddc4c091916c37e447acb606f2d232c37c9871831c1fb9a8d00717762f18e62e7995a7393e0a82617da4674078d8f10065a28649e53377a88bb0f996d84fc83e9496564344d65b73ab96c4e887107d6c14488e604dfa15e55004fda8b65ae19006ea7c8a7471b354a4e746703d5c79857a02ec222b78b966ecf161d97ba7cf39b37fe173485a0156c3712a6ecb14e629899da9163709b672a243d1b87e15c0ad611419d85522252bb5a02ab725cb5eaea5bda73976d534a881b8c32c5328d117306fc5217aab89cf51c6174489ad241d1cb261d449f24a235fcd46fc19a8d14a4281906236738a060061a494947bd91604431b1a2871080616ee2e915863b2bf2d9cd86743b0cc12a5d21c6c745b34247c17f9447579fcb9bd38af3b64cc94782e299e1d98e68f8bcefa20d1e8db85525167378ef967195c977d43a50d03205044006715a6a8a8263d717f40170b49e6bd0ff8563038aad865a817cab9ce98846ba75be9363718ecf5fea538aea90b2a558 +ciphertext = 4f196d816122c6774617c45e22df48ac3e86c3378f3459e569534f574842967a369dfcb6ee004e1d050636654bb9d0f7a2ffb7c574010fb2f321f85aa574dc3e62993a7870475787ad35d68e5f7281ab98488da56a7a871e8a6eb67baa98c09b9ae117427268d3ef7a3f8f012d0e0b241c39d12f3b1d405093dcb3d20ed8aa3f24a0ef8c08fa24623f3b96845f913e96b1896083f7cfa047bf50bda06000b5f8f81ace902062982aab78a5f800a3d7d7268855e8451de5c633ae05b8075f2d6c98cdc8fe55d7ce4364407f4789f0bf91870ddf6630bc84d3d5d5f8a08e20561c8645a95e51b1e657684e6f9b23fa979c97a22dd6a2e3a729f74201892ccf378db23abe5a6c6734db7de54555e033966516b08de0d652186327af83691a5af4a8f806dfda5aaea644bf1f1c32a9e3a50e9c5783623f20e0f7cceac32b57a908d28277430ac7f2d32232353c1e8d34c4a6e5113bf2de9a074d26196459638f76801619a699dce0a7599cbdbc9ebba872a1bc1ae83d07986e534454ccf1cfe526d4fbf599e79cba747f4f2c6b3a6e1fb04b993df44d87517e7657d81d5fcc1b220a3069c16868e279351ca90c20a73345fcaf12cb75f43102fba680b641536345c154cb15bf7592611313f8e958953808b06bf0d5655c74b022e3a731280ff7a7cfc92a60fa6c51161e3534e7529aa310ff848b4a0bb7c00f2425bdbc6cc1c2fb050fd0b2ac17db264f48a025eba86a7b11651108174b5b2d859205ef2480b9adada70ae09162f82c3edf176287f8e742cfb7a233367867ac8bb2c5306831d3c8d399fb5208ae3f15a24a70493b62f7a918312ea3fad7a978beb11c43e679ad45c284a47f68ae2970f5e66972a024ce0d6424e58e0262a0f94ff07621a2d5fd38817f7d989a45282e71463ef37b5687291c4f852a6b13625308f3a4e6fefa0ed84c3cb47725f00cd88687757d3c625da09bcb8910a441faa38212a4bdba9a1b513b003efc55fdee2a3bfc1ce0d0b8a0f2cb4b828c5758a174fb40b9d245f63cbe3bc07fa68067d8feb438ffba418e50ddb8ce6f5548b8319401d1b4193ec59da087badd67665e9b73ef489b5249c8794ede24e70e3a2eaabab868508adafa1c44dfc1363d3d8091a7acfbdeab2fe73de1bab8507b180f570ceaab92bb297557927909045515974c230840faa67d9df34390675fe206bdc4b5a48032b455b45bf85d150703aefcf57af41fb0a094816958193162e821f10b16ad8adb8021b0d5cf27447b9b2c2c3dcc3513832d19b11a85b00afb03e79f3e7cc06178639eccfb943ad60d5705f1e6c8ce1c8b1ac9a62aca9500bf870414aa2613fccdd9eade567c135dfcfd850f5d6617b1dc181f375806fad84bbc69e28c49348cdf09d7714fd35a49d57d75ae6d74f1ee337d2ac2e595152da79059c93452f0f89be3d1b2cb5e2c454a4fbee52fd97f51b4da45c68efa1bc08441bbaa3082f4b633e06251b9859298b2c4201759538bc46874fd4678eb27d7d5ff35b4fb497ed739d5d7119e213a +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 60e93beb5544294bbd622e41956430d0fd41e0f969e954a48298c7b503f2baeeb70b7c796a753cc5bb93723bf0380abd6b8aac4f1be02ddab380b88ab9ecd40fcaa8b775882a673864fb757a34532746f7df0690ca1dd0b65ee2dcb5d235cae4fea59a764736a018a091c8f2a636ae7934a33bc5c15a7b77e1e53289c9757ec75cbbb7926463f5d6755d79b972ae993c9e44e3ac14db3bcc85c4f98a2e185bf4faed19a4737dc78547847b7ef385d3ad7bfe37f764cc873be8cb1286a0e7c8353adfb9bad5a17f0893cc04ef2b5cab8f66706955c5e168a99ea8f0a95dfcb25a434f2ae4a00e48772de4d32a51bc73a8cdbcb105cf9be554b2735ed7f03e4c26dd82c735fe0ce68833a47a619a611b08394a6da64d9cf2c25aa1121a80346d5c9bf3522183db15f6f69dcf5febcb8e3336870b4cec9d3a89de4a9042758f517b55f95e33b403c50169da0f53542249e18f93874c3e9be1dd63ae9fe44eca615615e424235d785c92ad0dc412f8ac0ff5b88f056142f8a0934734b09ba14d1dd89bcae36279a5fe56f082ab4b0709a6dc3f79f8e9544f49d9ff78b264399c2feef9c803b341e8e6eae96bc63e952d65d59f0df43b1ce8e1f7aee5498ff70eeebf9dedfe193bb61b870008ae57483daeb8ca7ccb460193c68b5d9e8dc738ff227fda89b21ecad053a9fa4d4aef8767c0d3f3419838c8c8afc0b3d68e737ba7732ec68a8570948a322a143e5a03888c08a1bb7c42e9db91128e9ed955f3848bc3288ea881a468d26aa7fa4acb926ab8696bf4a094b8cdbd42329fcea89cefad8e8a6b0ca19f4f3b7afcb51c2fed48ea44037963ec1a325ecdbf7555977f468feb49b8346338db983e513bffdeb35a300495f437cba88c36d01536f7a56bc9dabd110db7786ed3120fcabb7e82e2c440919435a14bc1ae1b35449932496f885c9c301c7f58faf778cd0a4722ff6ee32c5dcc7a7283ece0e3dbd4723f55d0044bf1e9f3505e80f32483f7079b2c0558b95c622ecdebe885b2580931fc96e7b6a4dddfd54cb327712ebdff90a6a8ddb6ba17b3efb1e7f31d94cac2fab88a43b0f56968fe2b724fc8a97e1a371c96a9a17a94fead8897caeedf959f380f9a84f7d7ef676b89fcb5e94b8997d95543ef6cbd28a7d02befef76b1c91ac327874c050dec2e6f80fdd6dcead3587ccdaa6ec76f064b3264bf419b03e30aa7791053bfa7ed89f6cb8bb12db5c6ef517d5bff34ec3c4237af98dab3f4d44ae26e773ed53f391a689d7b38f11e55fddd80869656e15baf9a2a6419b38c2ec39112c4f16fbc5d9487efcc4369ec9daaccf3a7531fde24f97c30c4c6774fe80e9b928a0941c24cd3ce588f7d94eaac9eb74b7959bfd8b5b15ff94ecbd94c5f3dfd4f5e9e07dcd3efbcb2937eedcadad018737bb9ea37aed30c1a6e55cdbd4336a4bbb7c5dc89d57ef5c575cd4dfcf9c8407cac999a54976bea465e9075dae67c8f85b2d554ec8e702f3d62689741315eaa546bc63b4f723bb95f0dcc525944c967d7a5793c34c7638ee5a6d8c878df2418b648b7450b09c31bebaabb956e1203bfb3d377373b5483c93379fe5dcf2959d1fdfa16fff77b7ab78dbfba797d3f13dab307caeb663c86bfd11fc259a2115806f9f68ab15859a763a49d169d615b4999714d550707e8a0c0a93c8db2fb5e4de7c93111206f052a7d7a5e0b5632d94c7a87596d24e950b361a185f065fa96435f312745164693fab8d3a741c56c6f10d8be52c06a5d83cb1bd327e5b28db12291d907a2888136b6fa3a20a48990c6b6c81499de2bb12d19b591234d55c4549a3861626167c5a17cc2a4cc9f668df0707d26795de7f771bc614b994b574fa309a1e1c8b4a0a4ad6240286bb78ba701ecc430269a37843149e1f1aab731523359c735694f09298e2a1a08c6ec273b4a1d57118b20524fda18190c2029da4095ead53212f609a76a343d5c68ff17ce6b92b340dbb8cc6c03ae4b29df243b93233af6b95eb5a7a8b8643b0cf5a8114152b8ea54f0e3668511ceff536d888baef85a62299c641769023b7b92088546f338448c1977804b71781a554bca5f13c0480b42c5a6626904516139abaa54b429e7a0502b17a5a2727a7f230d63c5764dd497f164b24e5ba3a626785ad1b917a6b77b175e64323783c9791832a7c442b895eb338e6a29ef671d4d7c0230668c14bc794cf11340229ac905891cf1c51ef62b6a4a0553331f7f581054da45c370bf606126b39492e4a3b8592bbe0359bc017557379471ef922367d82635d8494c88bd38a7720669a1f9145367a92090fc5df15c034b82cdd9b7cb9ca76e74b2069c36987556012bf0746424677f60ade29c9cb52c6d9cc2052394691d7306952c65ef498da41279eeabccc66b3a41747a8b447d7ee81116eabc04f4b776923c93a28ffe888652fc34415baaeb6854d4732745a4bd5ba61c35678780063ed874c81823ceae41b9684a05410266f7ecaffbfcb5285472e5b02fb8c15d126410f0ba3ba8536cfdb65d23797414a55f2620be653a98f33c95690714fbd3418c6893f8693908d41d6d69a744e63b2b0c190e3b1696a5c8b1cbbaa4719a0bd184f896c9d8f926dc933ba81b2785c05a51b22a95191f43dc23b42c050dc9133de2b003a5b6f1a5730f490454c58af291cd8d46acde69842df79353670a54e2c88cc693745516ee64c2afebb95df25ec0608ae4aa9c89215d471bbf68dc6530fc0fee495fdfa09e98ba8d37f9636b270bd1102579eb7f1bf0b911cb79f03537168867eaf60d77d48be27bc935b02662929dbf2263270670e0601e5e43008bcc07f06451e54755fcab421d584bb603008c9909caa61cf99a4b43a93ea8a3440991ba402c9a8fc51f90584c55eaa450b7a600342e98420d728a8b6344659f2a0263140e69ab86bdc6b20b3aa0920b90c70c0108358c8a92b27635154af9a0a76080ee593ce3d37e40fa33d0c654aa77171f822e0082c95cb60b54a6a26099443f671e863889f35a0b9597b3442a71fa704f164834fc9c8e2c63847c9992cd73c1bfe7abd3d75448d21926da0938f92b9133a92e426dfd2634a677878ea9820f5c26a2382fdb1c4b8ed59db74b4490b87b0dfc35f5b22112e5110d494e53c50d3fd6c64cb485bf5ab37f7a1b709122c7086d3fa56fddc966db2c53e09b976f986a334290dd8c3c7e6582c4eaab182766ff70503b03b4e68261cd0303f7a83732795cbf84a04d78a541a0929691c94a094b7b8f92c5d5a3bc95122a6a7968dbb1334a712823d470766b3b9e7b55672d02ae16fe956be4601573d72306a251f69bc2181253e2417e178341fd6553303ac189e1fb7456ac0aa1b97068f452cba64ebdc138bcf5d36b0a0fada2a3b374141eb9 +ciphertext = d1b9adfed05b0545598a380a908d0630ef5a5b633f1a0f71b7ab658c12b5d41870dc738d16dff8ab4009b04f1681382c91cd87cb1fa19fb83c6edfb215b14a21f6595e50f60d23f65c8651a7acd2d42b8093d36511183caaf38482ec02d0c5495a0ae08d86be9177ed05abc034337e502dbbdee1555a5df175420ef9d13ff88d34e3dea95109e543f83060050c948cb5248bbc30ae8dd31c16c0a2aa6bbe91290bf30ca690edbfdc3122961b529112d1c88b5075fdeae100176b48fc6e954de16894004a33f1150ec182d1978dfd30ae4db0c7abbd069ad761c131617643b25bb42855c05586cadfd35578b04ad23c599b200a42c75cb4614d4bc49e0cd69ae47af58eba9c4d2adfd39631ccc550bd3052e33514b1aef509d9d4156520510eff630878b9612a7afe6e652baa02cadd1cf5875ce07f04345a457a9cc94e4ce3ddafb51314e11701a9062fc38d126d3a5846c99ddc89423396c5dd19ae00648760bb9647d0d4d85aad167452ed2405f1482a9699cf70c99a3d9e7b897d99bb5e2f59dfed7a1c681315a881cd08a0dcff6678c7aed3211417d11f4d40da95e46c5aefa7e88e27ac0e91ebdac1b6961be17fa2c5b7ebcdc67354be0e43abf6a9a611ef02fba24a662b5b6ad31747155dcfc62ccd0149b355cad072e462331298f6b0155db2a00033f6b6aa71b8fdfb4e2db72040dc5b8e7a55efb0cdeaf6127474738fac38a5fd890259f86d5af6339c4cad26d1ccbf98408eaa182026909dee6be1069fdd9dce80f2c9233370a8cbc0a8a52b3eb999161ca9bd8c250dea2358f72340f48c9cfc0a8f347b7480630659e13708a34a9b121beeac05af0bb9f8475674affd1889dd75146d104ce6d50992311e3132c4724bdb1f793ad76bf1f6c3e30d9592aed479e406dc470aa810198c30ef25b549fa49ead13b66db0107201ac624982ba4570f97679afdaf1dd174e1121d6e02b26d8435795fde7a05846323c5dc7f64532375ecc44b9081ade905e4e194d1d17ba0c91507f16e34d4befb2b6ac08a0f0d3a8f09d2a1bfb01580ed0dab28645faa28866135961e2910481f9d39ce5a0ad97390a1d05f40a0645c3ab4b0c749127cd17b176199b5eb9e87f625bf322cf226390f9de5006e207b63c5e1863bcb60c6b05f7d3577cc59e9d9f7c8be6b30ba9a22f17b6d860ca6621e00ec18733645af0e9b63a40810225fbaf470ba8d232420bb004e779ec73eac3d688ee30926cd1ea673ec6ac7acff1d255189ba3ee8dd5d9ef0c0d3fd0bc911f818ebecff8cecb65339b8762492e79d4f69c2efc9e0d6a406b1640f820454f4cec11ea7ec441bffc79de43f9bc224a570aa693edd08bd637a3993de98eb29a2f8db93347875ad3adfe59ef1a1017ea9a2151e8e95c40b92f357e7bab7c5a74349e1aa557483667161762594cf28bc2f837815679729da4e0e1a567c7eb92d4cdbae032364db056ddec3dbab4d2cf2e94ef0719ea60465374d37110bc7d89baca24f7a420870cadee72f58d8504a37bb7acb384a34 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 3a756d6ede57aba65d618fec41eb4edbec38835cf2e9ac88f14ee9b57fbda0a6ed1f5c3268ec649209fe5d066dcba69ceadfd312eec15fb8efa60e4c6c956f88055fc2d35e6b295d05e6e67e4375c0ff3257ba72c0f97f452b60a02fb57f8cf7f71a4f259938b5bae8097399a0e3fc371ff03bb6769015495b4bb7317c9e99c966215c58d3455efcd360048f6c2c8bebb437a66a968dcba35dae7d98fcf9e3321da10acfb91764719daf5866c9855018fe89ff9e78b38b40a53c4e6f6fe63390a39db54389624c597909d79fd6a658e2166704c386eb1c8e951b4c7619b7b79349c3f595068d9b1095405949cc56ded9a21d864965fd5f83a970083bffeb6550893b5d6ed6418bdcf1e44b6b05a9f9093e386c9d44fe4d4cfbabd4be7efb49aa2c67eaea9e97d2e4b7d58775962570d528b8ebc8d32f8d65bdcaa391837d484af7239a4a8c0b8f140e3f4aaa6bac0ca86e63f523d9620bf9c2c4efaed2365e91ae699a4cbf454c4d2e2c4273e9345624ff737c8b3697b9831d39142c3e25b346d12dc82995dd6def649087ab763cf5bbaf639c8c7a852bc76d456ee69747fe66ee267844a7f5eae05c5821fdc2b98db05cc935a3bbade2c6a4881cac21938a304c4cd3cecc1bfabd932b777cc459bae4be75389862464367c6318a15f1de6fc5f17da139a95523eedd2f4e34c075f2d05f83466fa209cffa9553e014934f51ec49f5fcd87d1435db935bb62f3c3ec87bb7f7427a458232474ad9dcf22c5ff149977c7f366f49bdb14bbf60bd0a8c056f3f9c2fd91bed49735d64d0bb4a259d75816aa24a7e8f1a7768c3469aad7e82d30dee6383d38d7c4ca258d2693a354c19c66dcaec05fbe80bdd4c20bd95b42947d16b66139384c82fd6bd0ba9ad9bbb5dd7593d08616d2e4fda0e3e792a5b4a4de22d1c571f23e5d235562c167d7546c8ef7536a929982f6a55cf8fd9b0d5735f69ac6d5fa824f5d8d258ea5cfde075c54d8743bcd76767b69b5e350989e629c97bce982a75806136f45fa692df0ffc16af9499d8fef7f993eb3472f95d527eaddda205e4a9366a4fa978038b9e4685fdbc8d84fc1fcbc6aed08d79f544078343e9ad689d9dbd77c18cfe8f036d7210f4a0f5dc749f9bdbf47e309027968968678c0e35af75e38c5544abd57ed8a64641aff4d42d52bb14bab4e5edaca8eccd838b4b5e3a36a351b82ad785daf81e8ed6872583b8babbd62a5787bab8edade9c80d9130ec6be5ef5d9a9faa1ede3daacea7f1daf7fd7896884e436003789b8c781c599c99df465c85e3cfe85154d7a6562e6e5b3b800deaa6b9dc7c0d998b9defb99da6afc27a5ef7ce52eb26e84e9ecd038cba69835ab46ddac2e87368f37888ba90f219ce9eaf410afdb3e1894db5f640a18bde715e95a45da61ed6fb2c8af1633ec530f557d4c5605346a6500b7c1494d12fc87dd55f6823c447b71a726d65753716b30d3ef565dac474ca3acee664228f85a5c4a726f681e996e9e3af89d08895bfaf6bd6a3bff3a5c5c1ea894cb6440d075004f879b42ae4ebc8fb74bbd132ddb3348742dc7f44e85dae2b7bb57f8a9537a5d2827880f8b5decb1394db2553c086f7c113a300078db1bac7b60d7812422cea108045d2888e2c29ce0bcd454b95c09730d6c4698e779987523de0e972332544c34350d29c7bc030bb6273b9f1c98c3a63170abb2641c54dad64790e83387c51aac922814f834c4745409273ab00051b2a819eefc9a048f222626409fa7b3f8d27a0dd754f9372aa37eb92f6454fdbe3116d406b571203dc05201c31a52ba8b2b95b191a7b7b55e743c4ccb80a710863ab741b727f176224012c539af2bd062ba6be7a42eac08c5b6b420becbb41b55454ec1f41347ccd984f11767bfc82665286a56dd31598834b37ca6ee93658999798ead094298160b7e6c76978370db3180273401532315168a161e087d4c6086846a3b60b80103c1ad814843bca7ab329c7914982ed32bf16507b3024a16f231281a732d3d155fa60260064919c484c1741874ba96cfd91aebe5c314e407a66d7cc4c846176d759618654ac2a52fe69c69a375ecf625e2889abebf395fa20561ba6300a72a2091356fcf197c866ab5468a3af7bb3de755836d9784f7c0949445d83b3358721c7db3c09b5120f7f757bfe3366ae4365b677255ea680f27c310f768e56f1aab8792259340bd6b984406148a254bb605a291c0946c83b1e9c5bb3f879a787b9106f98809e94bdc23c062d592318f9854df04bcc343d64387baf398599bb352f82b1f0a5b530e824cfd69d7a4a15cb5624f70cbefe1c61302b8fca337d70d1900dc817837619fa893208da873c350f02892097708cc637093eb25bfb4b3c793331f0fc73c5446cb11276824cbe419378a224a683fa0d17c671fb8c4bdaf18c20c53a21a4bb8fba9ab7a1b7eccc81946bb5fcb15e1d08ada7761a55d503dba912b73765ff93a6ab642b5fb72ed4f16657ac448a1957413cae547ccd76d9936c860c70c5635c28754421af13448959d67cdea3997ee923aa326129b5397c15ab90f95832f263e080a42460cf9f081152aa59cf17263d008acbf146f34a7808257689a3148e58a0a0117fbb47bca97810a42a7e0f734c0a17745afc6ade752080b39f3267399c20b1fdfa195437b83ef5125405aba8d2ca42040371c541a5fc339772948a21b7efc30c909c7938779bd012642441083150118ce431baa72e989425210945a7c47479f4873e3c3ca6698ecb2a050415066d0bbe5e240222a2884b3cc17bacc14164be0d21330456a279547579f8a4e9443d913a154210a3fd1a1a263186445a8e1b884bbe8b54d0196affdc47544c8d10a69378fa139bc8a422c44c5568555f9080f170bc6e97284f448e6c23885d603a732c469b376a762b5068e29e80b74f994588d9822f3e81ba6ffc273a9c905d0910062bbe94aa1e0c8c3424303845779f8c9b515dfa0864578a66da8ad7b56da2810c11e1a2888b88bb55b8c096a145b62ad9d2c98e003658c9729d7b82550527411a9c0b981f3479251c1774014749d211687dda83626c6bfcd5b08f8075954bc10f48623838a736e38c1143b9472b4df5d30d37f0bd7c727a2f16a3cbe0015dab5a12e27a63f7aedb841d6d9bb1a79a5c3e903c9e374da62a298c549b9842b77c33aab6b4939aeb55704cb610d084950c41b746afd7157613618f6f1574ba51b36f7828af0aa4f79c0840ea3d679013df619046e935e0bd96ec59643250a0b38f9779b0142a9e546eb525e72ad204d1eb31a6633bee89571e8fc16151491ea71234ab83289426559f90c67903a36e4afaa6f49da0c5da5f195b80fbb99c2e8b06926074f3f604b3f6195b5a5b9737876bba72 +ciphertext = d7ebad4e7d0644b802bf0d325f8947e10343dca6ce3affb6645153d9842683b6d7526bb86e2d07892ead2b38662504bf8829b3591bb44eb03822d34976031ee39bccd8b418ed77296b2ecf1517a37aeff2193fb1a6f90cb8b3b46a213aaf471f7170a04b7eb24b8b62f273061fd3f04e567c695f9f85c1749f052a508f04917c7fdea48643f2aaf8d3f4208fa6e5e3ee001054826da4ed89240acbc68471bb06acd6843f639875042454ccc3fd0aeaa0ad416c16ee17afc0b8df9a49153ac2ba53d536fa4587d69df1360d98c82589f9cab145b07a4230e5c82c856a74f0ca95d205ce5d074c9bb54bb1caebfea0fe7afc30b69b852663752f478132d54d26e5372cd62f48e0f33c836a1e5f38562b6728061c2875126527ae4e84ef15c4e29df126fb9c555e9ddeb9cbc6c07036123bc615aeddaba1d53b0159ccede60943e1d00d7eeef769e3eae0181c69556e5daa1520103403f8b16e9e921be7338771d65339fd89e180caa88ac32154b9539289c587738fdf65eb3ee011961e0f0f365a5e885e811fe2db2e12435ea84ebcbb9e70ff8c8db1325578a7e82b1dfc53dc5322f971ba2cebce3772c019504d44f86156740d31d44fde5d877e68c108af3b22dacfee863d21d40e0402209eac16c3ea6934d9031fe217b326451b29130e42788e62a0def2eb2fedb2b01f57447044f0f61af4b71205b6ab352cf46f738d9582e5554d6a1088afae1fe4c7077beed897d13641adf5b6c053cb3d4e11311ad3b07627ab4519e51c0c767c8abc656648524aa42d8d4d3bf4fb82baa022a82e095a39c16b6945779391c3125d8249c6b66453123fd713443dbfefa85f1a74981b40e72065972af07d47e7a1de0f42a159dc1909ab3e8988f43c4a6b729da0a8dd33110c777e2344f1b8179d83de58bb2b95a8998b00008b2022b50a7ab7524d1189d840cb027c3ae29ccc809e3a977bcbb4aefbf16c524497e98acf053e14bedfa90b01750b1cce2c2ec50a701bb8ec8f9f5e3ed0e6923f8926807ff5dfae71256afa331f14fc8e73aeeb30ae63b3881ac4c27f9973eeee6095ec9033df4bb73537c304fc037a9d04932b3aceb69769e71cc73eb020864395e5b4f455e6ba92bfbf8588cd5bd3ecc7e9ec7566e2daa123d4c4037cf1fef134078f463e4c0a901d51071fbebf889245ccf13c0c0a889822a485b06fff11b241960ee95b0518f668c3c663b9fca9dcd911246e1d01d524a309e96cf50839deacf9eddde59ef2602bacc13cf145f23e98c4f033c7ce1896502f88452201fa81f90a16cd2816f19380c0dcc61f342fe479ef17f7f8212c3afb8f607da4673cefb3d58ad5d70ff938db0a593b1fbba0418041093f386761616a851a23fe0cf576ab1c0903c31f3f01e6cb76997f0b7dad2b088abffd67aa942c09635ef3a90b09115a5be2c694f493d076df5152e02756bebcff329abba5ca82bc77a699f650102e4f80d57d6c74a45779e53ac6717f2c449451f65f16a92a76fa87ff7c2dfa5eb564ac66e79a74b1bc75 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 0baa531a985251b6b10153c8fce6938a38de93f9ace7a56dc7f44fa8cbff89cd9290888da8134a0fc43ccbb75b50b6a724d6812183acf886d36ecf52fc89341938d314c761185d87592eb2f3ac4f1d2db06365709ccd7ad426ec94d4e930568996f8cca58c4a0536cd5668488715593e66621f96c87b2e78a36438dd4c390dad532e3db88dc7e2cd3c50d30baa91c98cf0bacf32d6dc81468307ca35b47abfe69e74e53467cf8bed376758f1a59270fff5f0078ff288ae25df32427d9e4726f4285c4fbd35a333088dd643cf6dbdab6b27c8b679792ecb8ba5cf8cd9bd9678fda7ebb692eca6777a2fc4ed7cf0402533cbb9a3f2edc1036df09f0ef9a626b763c3db5e49c4c479ee3a13c2c37deb6666aba2dd99987990bd1bb00ab580649dce8088cae30a5b20567295aca7f029ecbdb4795e78bf150c7954f9a4998dc219cf3e5a0e4621ee8f18c536da0b7808bdc9e12bee342cfe7e5ba799653fc669c1032aa014cb79769361b11d91b6fdd0ccfed0933c6d067e4481f491b2355e72638832ddc4f4daa18c6b4ae6f8f5e688cb812490fa13b43e3d6e5bc857fcce8a629f3f6b685e5fbb5beace871aa8f2ff07caef04d41858f144143cecc5b0c579c84fc949ef359f0b24b210cda9f44dda3217a8058469c78b7998744025ef75cd1c70a96a75fd96d19dad31ffcd81dbdb796a66e86daaedf9cd989415f7d35aedf2db50b5136b6737829f0cb1da4be31bbf38208ad1200fbcd346a0a7138ebe3ca2d78646d7f98d5a886a24b83f8fe84ae826f7012af634fec159c3870f7c69126b3c3105de356888f9077fc217e68dbd75e0a4dfb8adbecc556de88d89ee6efa39a6adcda9c3c61f6d874b50c163ba7b19e656f5ff9813cb318c87abbbe2a3f8996a4cb447dd793055ca178aebf455cb956443e57ce60f4788cdc6b009cd86403bc91043fd3f3f74fa8f5e9964484d7a52c92cf75e153a4978d1c0e6c8085bf5b53c8eba77a9422f91df78bd39895dfee8ffd3d9f948aebeab598d33da8344c88a9e073e28549fc939cf5c6978b6f74ccb23675616899fb69c5edadc6b78d90a338eab57a222fbb5a58f837c097bd50e4165aafa71e8ee3bd38d61dda90369fb769bdce60a704445da750bd3f194821396d3a9d8cb89ba6a32d37a15549548aace4646d47d66ca4de6cf7643c2a5939478a398749fd57825d172f965d4dc6cc6d7adfc46d568a53c98df68900b7b212ffe50cc5e4613d4927333beb7bf73446064d76c3b0ef84c5d32048d4775cddf02534772ccb83caa847575e461be56a7238da2a9847d445f55687a84baa06dd69d4a637efdcec0a08ebb97b541fd77a9688386983eac7779e3ed7cd2ef13e83b27b465563950abee8bba74837375638e52814448f37db6dd865c898e80aa17ea2ac4f740e93f05c3fa9c85a06a5fdbe2ecc5335738f9d46c90c5af1625779f3a329dd6937076e8afc3d0b5d7d99d3fd126c8398fbb8f33afa35888bcaa187950365f022585c3ed8243f53122b6c5ee9a95b94e51b0eedb222de35c2a940bb8370565bcd8739609c44f4aaa7c5c266c6ef7cab87b351236702f3f7b3e53555e24abb77dca6f5d5df1edaecf85e3f7e36374988dace2af54375d684a6cb1fb38bd9c803a158483f91175263779e75b6d42734dc72fa02bc3b09630a0f79e2f95cb067c7dabf42f409a9635d55106e91e32341aaa4808df6528c3ba98886184e0195e3ca09d9cc525980cb5a2e9027c6a88e9042bf77653b9dc02ad3cbb04f594bae08da4683dfc960708d85e39a28ad6e6a7dc81a2f0f8167633901298628b695cc1868756a97d80b1afebb71eba5969a1086de4d611f737af56a83c7378c6e5e04e79a8967514cc668bc8fb7c7a1a671e29d55068e34d883a8320438ae7a44f01db1d4dd07304081d684796a9257154381ec44562a8d005f3dc4c94d5ce9e36705132acc8876142194da54934095c2d5725a10e376432b17bf7d1b085d342cb3c633a085e950248ccc9c7ff350efc341d07d0ca06e6bec943353c479506691f2347a29ccb34ad09c929692ed98640e6b8560529cb17030ebfa4c769fc7707c75d86c234edd78e7b3010fe86bf71748cc1c5b00023944774200b2163b403b8207093dfc959b6aa09fe6b98f6e83f972a50abf113e9da2fb9fa10d0d05789ccaf05c448854249ba8973a19c537dd69d3f39744da89debb58705ec90ea56cdf428087d8333b16b1a9e59794d49a40b513b50867979230243b27f3d784932e1caadf8b58fe11bbea62da4875d004a73fbcc90b566ab998a45099194d449cc60b0562570648ad588b213cb99a01283706878287930a71b68b43f87023d2f49829abcbde6a37a941182b78b8cc1b93982c7a24457a9e1683d2bcc97b4259518e0102760100e1c26cdd85022a04a91168486ba3413613ddd6c42ccb563379a08096b287b41a011fc9594d132e33957f2a5bc1db4c57b4c8d9d3135476095ded35b2fdc09d8f996e332baf7939efb1032e529606677bb1144374c41c08807c9c0868b0c32772f18b755d7bc5c5b12f8eb9ca9dab589185553b74408301062c90b2d68504f0718d42a1989f050f9097889aacdc175cd7e6768d626a8c9aa1b0cd6cbe91b10af1a3e507575b47b6ac8c2b7c801a81985a81ad4ac04b32d0dd880d43b3d36857738369b7898b231b24ce6e9944526b9ef370354e21e38f6aaefacbda63497a85327a2112a5db95179c5285d805698209f2a1b67a7730405b02b3507b4e4b65298734f5eb1b66bcb68f9369abc01c7e4545568d432a685a6e038122253987edc55efaa3d926413dbdc43f9908df1925031f45d28712734fbcec3724653b019f7d5698da7b0c3c90eece1a1be3567a253a143723b9550c8f7333ddae88208667353a6184853a85a99c0c463189eb5763fe59d678349f536c56d014cd92b56ed2aa6b0518f1221a49fd6588650057ff00aa29b93f182b3437386f1f846d2a3c60cd900559425b2b7a5ff88cfabe24bedcc825552577b5c12e4856ddcd91b0713526098b5fa555f105a0f1219110347af9016254951c3cb5c7ebe602564242276399b0048ad8d370b544b1cb9789694c7753ef2cd4ab51513cb33f38bbb10c83c9a1a5fd1489d97476d9bb314849581d688c3dba01662b539c50b0db8e889a4654e6af708a64910fc503cfa0abc21b8abc233ab978965059c41d1123a4bb90306aa09263b25be885f4db186d0e720e97524464c7f1b57e338a864d6c447ed4e29d88c30bac7d2d0cdbac43e9f4176f0078c715acc3217d034b472a846cd317681c0f36feea187bd40e546dc4ad69c2e67fd9d830371600a8982c350df524cde514431ded7aec23576530894bcbf0ec0bfef0bb64f +ciphertext = fbac7fc21143080d74a75a743e156d9095fdd7cd5a13091f191437df1788125c9f908390b664d8d2ed2b9c56f0805df3254604d1f5bc1a9b49257247ca57863636a9c61433fffeab86eefb6ae8c2cbb725f7baf4d75e1f9ace6420cbf71bc7be58b5df198fd08bb2247bb19397754bcdf63567eef5de89120e40dd879993fa9dabe971abea02b5bf2e01d7cae26b98fb9ea5f253c6db007d06ebfa7047751fe66e471a2bb0781ba873074aa8d6478ca81f090a6134f5808fe60ea283557fe932d8916b675f5fd2f7104e0f652d9effc565288e2d1abea97e5313b482b8f83cb36b203cc63df3eb063c54f2088bb20c6a0d53d982c1803c646e57e6c4a5645b86b71b5890d488991716f3ca3210e9fe4fd7403aebcc5c54c6d59f5a9195d78d8223e459fa223e4f3d54d3c4443b54026128c71ea5d9171b26f63746d592999c63fe4d21a783666cb737351f88acd1428d46db5aaf965f4c55263895018246ad78193ce1e347d9d2fc71b9bb196e79115ad14625e562819d16bba8fc27371afbd77dbac73f4d20d4eb1d748a17ab00e2ef7e51c439ecfa7137c7183c3700e579b1f0ca20f4c2ab04645675d3fe763eb820274538cbee1fbd659e790bab87a9fe7d243cd3ffdce8e3ab157c4b42d354f37105b412ffbdfd0f626f196fcf44084e6d4bef2a77d92b6be9f4cd19a1e48f084982162dc832c36500d5eae06665f241b85467c3687b1ed0c2845fd98862a7426997f70973fbbb16bbb5847e4df7b793cc123e247dda4b1609aca09f9e9e41ff14d70a7fd54a0dafe80dc324d6c8cd03e1d2b7ee594a2c71e8b1bafb227b100b57fe8d04f13377af132f3b0fdc3db4a67163a47a8878f87a98e6956f7346bee24a2f5a3b1a393602e940f21040b4739dc6fddb41024730eb3756f0873e6696a3b8c2f7b507c36e9342a41a774fd55eb91123c54b874fb501b8c7bedab5436b50250f7c85f228b9b8ac016d548680a4554d6019ef68ece514be2a20b8148af168e0980aafe69772a0fc11cbf50c0ee4350d4cf72f4212605477cb2abb6ebf4f492452e194f79abc56f71ff7b00cf68b72a4763e442150a6c507e52e7b47f9984444680f7204a5e848a770cd27cd3364f6e020f2754d852b6fa82bde6f97d41909e66a4855e56c82dfb21d126039d9f06b802959d58c103abf59e90426809492053bf9793ae348d53759573545c3b0b16739938ea6122f77e1a56209edca1377141ebf98b5a79b6c7f1ad3e3afabfbb0e77c4578cfab6104207ae4194675ae9078eed0af2b2cc27d47d66df086a8eb89e17b65a7c5c19e0f038bab8e7f687477b01780ef556aefefe059f3fcecde27e8c1f83b92a4e325e85398aba2de802a6c574824d9bf627187e5562408e6dd53110bffc6269112be727a0bb638f5f011b1f88988faaa12f0fd2de21f969d1ef5e76a3c32b28915b32377a54eba21160ec0e62ad4209f81dee1cd58751967f3529c9590bff1c21a2caedab88c88eddfb7fd7099c3b097f4679d3a79430c2dc9fab2afab +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = e1dfe21f16d48fbc565fdaa3063dfd439ab3a81b31fa257aa604f83547c14666e0af5ec2c1c8603aa36d1575754a86c9195becc6a9b8c9f77ce6484c5198a193ea4369293798943f7928e42f849c8d7479eb0588e6e6b4abc4ce81b4d66434e4ec4e37c2da905ce4ad2b85de7d966d34a3b1bfa8ca5d8d70457bef6d5b71e68fc9e2efbf9dc37ab61ad9e797a43f66b27b04c13c034fa6f594264c9d7da884c86fb159d775f785da197ff16e8bc992c9b2e1de851304dadf9bd811ea89d2a69b66d34e59bc93f5c7bde35e40a976a3195541ef2fa7edfb7f9d647616c3e399b6c9251fff047ff5af7c34e7eff1213ab5f8bfdb9093f5845f66da1b456f5649b895bb042e42fc5c700cfac4c2a44cf1f96d57b8ba1fffc9332a612e8bb9043559b5567090873d3f9450f37670b473a9709efce1e7e892e43c9ff6efa594601a27a98ed8e7de9ffc625b98e0fa8f2d5a311a87a6c23b4dfdf44d761e373e64a4a18a833d654a947bdda969432a0f30870e3a919971cc4c8a469e6901b45c26cf8eb615e600644660796935e65a480d496bd3f2053ded5c97d8fdeccbfe949d1339947c6baabcc67eca0e659e3fdfa5dea3da1a4adc3beb323bc4cabb6065e9d32ccca3dd3c8689c9a3591dbcb30b99b3f55cf2ac8258c5b85c696a372c7aab6bddd62aba078d4466fa4c23bfca0e09b7d47c4644898aacf6899c79b5332ee0f11dcd40253e40c5920db980a58cd1b55c506a6662bf1f53ff27e4139fd2736e39417d4f63f7d3414e4322b69b60c5dbbb4459c1d6a0f35d65da13f455598edf678505f54b527e3209565fc59efad5f8a05b9f6340fc38547e9147dd49017475a0aaefd2d47b3547ed715c455debb3a40a8a0e93f47b6b8ffc05b2e857b5d9cfd1e57ce09ece55b82db25293d1c59f37f7b6f9244f31fcaf5c75e6d0bd46d796a68991bc68cafb5b0b7c748ac7d39d8c4fd1b3b4de76c1941f3e511d9ba70956b9556f245ccd443db888d43a857e4e8dfe7e5713b5ae5a9fc3a331719cf27ef4bdce23ef320f8d695f9f07bfe8ad3f317e9b7634c572513974da2bc3ddc4c07f2c6b8d3aaf5734b5d9e691d89db0fa67cbcf36c0373cd56c268e0c243132db5de7365310f573225eb80bc98a2bb76f9e8c6170bec90a5b83ca5738bfa9cf1fb96242998a44d667a57b517a834834bcdf2bddde91c3fe4e7aab462f49d31575bc96c8652ca8e4c3c0d3277a60f5ca7beb80b563391a3b8e1a1a97c868f3928877955cf8d15fa2c116bdc325b688df6d1ccb3386cac9bd5ce0c3ac381e056f916dc89e25a910c78e677964d153b74554c8f38939f98e54409fdb701e989589302eac53111a45f7664616999d7a64aa26e4cd74539dd496a1f0fc530415b16faa4ac86341c65ddcb1bbcffd37d7bf1fc31acc9b5c94b806c7edafbbeeabad87f0ce419ddf978fceb973336d27b69af2fa85f6c33b7387dc0f6b85d855938ed8758e6aa5724b8c0d457b29a9394a45f8de99cbd7a875bb6bf99c8a6dff4e6104a59aa9e958e48f8d3c75eb5a9a7e81d7738374692033c4c78f54d527d204f83a9b95f0016466fe9e89efbacaa23ab8fa6faf7d66aec3ef7e468b9c3277e1673839551f62a9c823efc5c946dab44b5b2068d61f00e7b0d87ca67706343927bfe4c12d20d69c4a5ba892f97eeeab7b5a45742cc4ac4d37219ad72ac312051d31b8385ca2293415a13bb8983b8457b8af9dcca9e6322094ca68399ab77dbb9f6aa7ced5f224641c3fa07507da9a08e0d180d52585dfb3b2fc95cdc733a573a888d403cbbb71c120baae2a195278370bf33299b9b2684accc5288a3cba1277fd3999839a6ed29bb91d71a528bb2e4f953778ba23341cba4b9b3c17f9a8366212af3b722397419e24874b163470b3b2b7f24ae62258983b6161c6773b5ac90969c03d01cf4669b9d1f46e05705d4f676d464264d7549e1e2c3290c9b2bf5a71132057531714bedbc7a91bc0ad56254d298908d33d588951333b3cb7924abf14b0d70652c45aa62cc3062d851e45c866c6200df4e74a9e559b9e6ab738f2b0da9693ccec3d968a866f0220ca95b7c6e8b04ec41d39c17eafab77444aad4ca3a9d6b5b5d4611a6c074fdfb01f7df68ad2440efc5588f3b4a5c4106efa3b9b6bb35c327465c7b656d1c1c6409993fd91cc20172e53190dad63ce02691ac326904cbb6424c906bd091312c1bfe6969ba6aabef954b5c8d439da5064a248c92988961fd2254479946dec829c76cba61690e3c541648228b59805d7fb2adb6aaba70718985279452a2fb1414e4704ac3dc84d3eb767101c8f4feb24bc8148316609bf963afa826a9b87638424052067ce8fb393d9ac579ab1080d1c549fd5103312a1ff9988dfe7805ed906fe9228e25942d49484a4510e0ff9a4a54a22cba6be945126ebe461c5940a74e1517c60603b2651e8371973da7051eb7197713f5583ba51b92a9eb3179b45a8a8a5099b40c29f59146f25a563291364f236038c79b784bf09524fc6810f91b777bae252e5b723e8059c06157653e335549784a15553ff9a7a29407d87725aa6b7a2a2669cc776bb810672967cb5b8b9a9ba751a9e69a8ddf796b1f324348712ff0c23f49a1debf210c027995b8a7cc5b288c4c74218e5086112237128cc57f4bfeddc21ed23bad00c58d835b5a3f0c8fdf1001e0ab26c2cad47d5caf2252cafd3520e36ae21119e56fb456f277132059ca18623bfd994878c794545ba4a04436d804231f430b12808fb01647fa15d94b975bb6798ab7c3f6355b9bd50bc1ca00ee76342c8609be0bc893deb398b65a453ba08bef83b805b61945229d98422f59c27e86022da5620d737867828540c20b097076bc6c03e5435aee1b9af19958a7dfb921da414280429da389eefe23fc9578b714b4f2e5b19b792903ff45aca045bec0b3d83c204747a2e24971b440c10119941d9316f45a87c4ab2ac0f7c4bde9bc8ef73a7f42513be3420c56720ddb984cb173587462aed9996d2a848d11344eac02351e6c5a18cc7ae813bfdc50d5b143f4d07ac72a213a0577f9802043a585d95031d017b319358a24b06b7c2ea19f22b6634146cc0a123a8051c51e6ad6a956b1a935ffe00bc65c44a60534d1375570bc036edfbce66255f523bb377b2256c29b870da2c870868299828f6fbbd8e0a109386b8d743a6e7a38384d5933e64565a037b9f520ecf8466f2073eeaf03d1b606f947ca2d2ca49e4b41de9011ffbd23920c0d2d0cb20e3a9c63bff3e047504a8965639e8fd0db690ffa1e791fdd1756ecfaeb695001ac490f36c4638151bee98d367fb7adf0e06a470844068af0e145e44aae52cfc609e6f47fd7a6f6af877190ff52256d0ac5b05b89c3f449f +ciphertext = f10dab8353de2ee40f5596160fb8f0be1722abb0207aafc3c475de6199bf2da4bcaf41599880c5c55d27ba1d6de27644a8b42748885222a8f6eed81503421dca84978fdd41f0380fc9b43c1aaa4e4a3437f3776d0f06a88eabf23723970ba13f127ec73d37ecff2593627bbb505362b29d8b6c6dc10474b373a7f5ba819bda564e0d7e24c298a557163309ddc91034eebc1a1bc4efa22909819f7f47a42f2deaa4025d5296288bef197c7fc71b4bd2a769a7bf73883e7d0fec631777d560b74a384a518abd2f660be886618c9c2ff82cf557f2c3ccad1dc29b444fdb5e0c6f82f111c338d9ed7b9a6ad148290786644b9107b2ccf3e78b57807e3b77f2b29bc58a3abca9505d3760b71091d0f6d9cf93a0f5932a194a25d3b87c5aafd8b7679eb75187b62f85fe5f6b12480f34d91b33aaa3c4e279a7b6dc837f203106248a49b9202e0676a6e697168b357a07ff4233dfaa42a2fc255220c33514d65ff3f7f8a41a9982f911b918e720f756b0558e996266b26c4dd7a95e3a7ed8b15a07b2b560276f06eff062be366108b7d6be96fdb25cb210fc1defff0d89f19797d4be632b04047f29f2d6a8485afd5303b1430e3cbe052ce2fab2b575fd07188832661059284c6bbd2862b9b707c954ddb05e7cdc447a7f0e102e348f2cb7a6ff9140b80cbafc20eee2282ce3188549f1f00a1a1a45c26d0de74dd818cedade0a1ab1543c50a05baaa07cf5544a338e7e1f9204b8d883d9c14a6ff983c3012b65b781d9bcf0377c9d8ec7167adda2b2582fc0ad2ae9b96b6a92e393023e785018a4317e69d852bee8566efada3e6de2a290949724dc0fa39067e035b3727040b2bb96be824688e4ad0b8f929987af4927fbb9ba08f49dbab197cd320a276740f48657cba5a295db5b599a3a15e00ea17eb9db3d91929029895912e11c5e0d8550343c4b9f414fe0d4517f3578ebe5d76c78ebfab79c1fc6b528f693a3d58fc2b735498d68f137530e5b992216ba093257425c51027d18acff20f980254beecbbde3c87ba75cb4b3718981bdf0b4bbe00eb30aadc8193a7200a5ef9a3f1361e724dae88fa0e9e329c5fddf8e1da9f77d39b512c263380891d57a14003ab607f44ece6794a1ad41d0aae15aa7367e0a74d04f0138124d583bcc76c9f79334ecd7d8db31e70de23c29276fded2afc2495ae70baaf0ce1c28f249e3d21ab72129093b53ab25ab2f6e66e022dc23c5649b210b208dad52bae848f0522f336f1cc732f9b0d157a7d8059cc851853b7fbc5865d6b79863358284f6493254df3fc3076b443e0539ca8ea7d92f2f738a8b58176829b7c2462a9b43171d4c6a857f4a51f1fabd691e50b350a13e6a2042e7f52ea47d810b77ba11cd0facc56a47b03d0f829edb9e13e355ecb8583b12c935a177191828317856307537b5d4457ec2eb19bef36c67499cdc0d0d5a04b7e80da3c0f82f838154f15106515e5bbfaa6d38a9ca997a54990f1f68cdca6d9512edb6eeb5bd67d733286c9a14680f094c4ab6cce15b6cc603 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 259336182d6ae98ec4de39eb4f269f2f5e8980ff9d3c78d3e1a4c58e63d51e879f1af333393c75b366cfe2e84cf9cc930d29f8298897480571d715d7527debc119b10724e2efe8873ae3f5bd0d420d13a752d33087bb6f8856f8def98f50efed021e321a2d3f944e9875d9ecd33c7976b7a4606edf70f6d02957ac49b862cd35640ce84e6b989201a74eb774f2f88b31c94acfa91e605b3f634199be1639a50c7d9e89683c5dbdc975e6f7b87ff3ea48a2352c8bcc254abd6d812a6a5ab7747ca92d73d1e3eff07d8866a9801bdd67a6eadd848c40996ec350db559a0ab1d91c9be1ce49d7cf41a13849d9fbfda4b9b9b30b348217491449a43ea4544467824ff954c4869c8ecdb2ba2744c8d38ba584cb78ea6f6188bcd1adf67ba46883fe6964bad03e2c601064e5f937cf13b9cd00456d3545bc5e48b6dd06eb14eccbac23bb1d17ebb14361b4c9acb7b48805b7890c3676b66df3849eb38836dcb1ef56807f5b048fc7174440d82ba8a7eff6d325cdd2cf6abe6edabb195b74efd3f9db7db44abba87581a3c57f079b44a9455e40ae6ec88adcc14368569b35527f72220ba7760a8a0508bf0043d31e4f763fe89b611366b8b93d2e5f3d5c97fbb99bbb09a5e5a6aeef128f404b7b4cceb9e462c6a5acce6c64f55ab38a763a03ba49fdf68819b6df8ba88704ab4c7bcd8f9ae50ca434ab0632add5f2a4acde45997375d699024e6792f845fcccea18789b2297d401d6872374b15c95eaba4c3cf5a8930d34c74fd444a2c87f90d9353cd77362ef6c99d8d27c5d504bc5b3f2ccf7f39788231e3e13e7ee19e3915a9a4f0646aef6e5e3e155b41237b2ab08bdf393f2bf5cd0707cdf22854d080bb8ecf58cc9b75d1abde8551fa74b3c7d62ad4dd8dbd7bb47e56c56f21b7e83beb9321c58a924048ab96d32f558e5da1bb33ad431249ec1a6778d917db1a464faae33eaac97bb5e2aecf42792caafe314cd7aba3a8c15db5d1bf4e7c3888a2e19f1a7bae926044ab865935a2738b4378484b44471eaf50f4e925e976beeca9f94de91b0c85b487badfcec4be7c7683d5d8413ed96ae888bafb97cebe3f66ef7397004cc5684ef53683034fc31616ffe6bdabad29dc5203e926aa94b2f2a4506d697066f3e3057e76b56e69ab8a715b84848bb4fb993dbe744cad769edd9eef8c1b4df8a6bf829b9f177d73cb103eac0f45557a69ad89dc87a6b8314f6e8454d81c32ec07c4ba5c1c450b818ddb278770a1ce10dc386fb94e1d4b983503964f7b6afa10ac5154ccea9f6f22b4a70e5175f126bda841ed4754eef8ef84fdf3aab6e5d8b313a93c29675acfefcdf5dbd4b5b7e13d7f28d9ac9df569cc1bbc995eaacbd2f90b0293a2bba70ae8757c5a7ce84386094fdfb330e573c56bcc368a7de4d4371453c398f3ba485fedb663e5fb99c5f9eca9ba94caebc9d60a6318c06f268a86c0d4e9cad1bc4ff5e4a745bb2c827d1b89ba371dcef10c5dd95086d997783841d8dfed849a1f74696464aa1d67f804dbbc6acefd907696e7ff7d02d750d68a3d36c600448c91b5f3a16e5c84c4d819bcbfbfacbfcb03b6590dd65705ed75205fcfc9bba4a3a8d09d5835b1540f5dc673d07e640f560e71b4ff986bee57636f904c856ac93e0c18775864b7b932af200251b0328f5b3caa38116c5a187305622b4a152ca337ed7a3690c31161862447b847f5639c5851133f627b5980572023b4acc37c32f6b70b3555e0ec4c5809c9582407a0e59a866991564ca55b21a48ee530676a435d26b749c1264f9e58c3fc619d1a23ef5f6300e96665eab70e7350852115f5859bbf1a8308977648ae5cf5a55c9fb42801aca4f0592254461a632a94a9c3a7ccd05c8b7c3b09666be54f072cdc58d8cba687d609d1f021115085c340153ce63a37750acbda01a6944a46cd16cad098464a109bbb611a83346ce6b59a5f4ca3cbb4394daca06e5708459cc777534eb80a620c308dd779b074c11f31679ae98ae569bbe79cb04bb127208e24ba008bea28c5db5ec18f31c50712171e27042651701c3004e057a6865d54763843d27873220c174c57154c9a9705da162e8685a035b34e15c411fd1b7220c57265c2ba7579f4bd9ab1461650e8027c0ba79f2ba3f14093cab6015d8cc092905a6b8f09dbfd5743818489ada2bedf88ce592396074a79824457f7caefe334fc84869ff43641821ad60e80407649edaa8bdc2fa877eccaccaab8a1f35a1573546ac382222c193bddb31275b84374cb4679a5ffd803eff07987ed085fbd43e45752dd9a32f5ec03e7b74567ed9674e1070b026801e99ca27ebc0ed24742530507e19b97a09877a1b511da3b9835268ac35ae44187ea14b996dd96c35686eb98a81f1b2ad90a80d0c989b12813e7df2b34573b876289e7c79481c7247e637a60f9b2d3fc129c379a759756408636048565cbeb24c2186a875606a43d20bddd8b9d70781b1848be54a075fe978a3e112a567223d21beb3395921d1a100c578e7ea0455949b7b420b6494688aeac00697ae1914084eab375d86243b50a948874dc973b7670c8f9173228b64647e58761442a2cc90165b188b58025f8eba65cc654575a1bb3823a1a29633aaea1763f24486aacafd611c28774c98d89b3ce8a696e29f62775b5d5c50847c3ad4bb968c441086aa070097508da888b5b202e5a3b5db579943f0861a5b6e2d58415019182262c444fabb77679e019cced4e0a3854507fcd0935bf81b0e8500dc6c0b3c154ecba94d166407c5dcc67bfa6aea8b4ef0c53859ba4416d5c1975c1feb6bcad8076e6b020a62b077f0141deb5ab5986b386d51cb7e8c779654af5e5485a969467012c572f62daf788d1f58bf9ddb4bc6e04b00218cb671ce8b2515b072b76cf253a4006ac5437c107a077f162a3984586978ceb3752b1fa1a2b525961f96c63d7207ecc4c0268a354afb00231b1cb6eb4e4a694524448e7a043c22a5bc1094b23d3c5d0a9641f909a778eb64bab84feec3a53730405c92130f756050771999e469cf07cc8c308ece9b827d7558bf882630556150a602d9400e3d4abb229a9d8b8132a7f0c0c5475bb852000b63228c490472b42488aac0ed647b1e834f248534fe2195adf6952b83b6705593a1e53f0315613d2596aad44e27a26d632b9c71e9c9e5a6ab733c7e81e54db3437d894a19b4710a3cd5075602b176ec369f5116638775574c74425789154b0bde48bad6e52c91c451c87b48ec406674a75b0cd39d1173c3f411ad1efdd8bf4be2afea69c2327bd070cd1432c8d2191b1b0a8682caf72df2e0a48513a7358edbc77a615d6be6fe2a7145be66b7c50950a7a2354f7e5cefa6f4a4e9a1c411eb9364506e9e1204a8acb3cb77fbd2c4ed +ciphertext = d876fc40a1ee787db486792f9ed3a749a6e996dc5e20935d6b76c8cf2d6ee6cf6c9c05fa7d6a37314a06dc4042088cdb68599f8d27958ede9a31054cc6abf51dbf7cc76e7d6b20408447469d5860fa09448f2e54efdccc8d0255cd6d7b759b7e665f0641df729b4468789cf480c9a606c8d1860245f0995e972b02dddb7606b85e3efc19a93063d095ff068112c6bc4d2b3edaf8205b76b8fca8e956e3984f945b06527a49121a6f1754236e70aeabc770049bcc240d47e003f47bce03c988e8c1731e85f307d0dd74b8bbaffc511e74d04db81f04b0e0317d57c25d5a11b9128280a131ee849efe204836ab46820ba4e03710c67e79e0466a506c8eec2834f465c97e0118f138e8fb7d6aaf1c933ad13e3cffd84b6b2db732048b5720c108a6c1f3d576b57a7726cad853c31e4af74ac59e7620f87e85dc2035887cbc88080c28e49d986c21a9216ffad3b95b3391a52914ebd10f0202fe4d5c5fa11af3cac6e4a7358888ed83cd8567eaa4fabb73fd6a675ee4490722cd3ccf4fc3efed41ec07a5409b24864004e1ec0dcdf7bc630d537a9e303334e3353994d14c225d59f4cd88466185f8e0c01724ee0db468c2ff12aed38eb4a14ac13a50c7396fe0622704a45ccfa27053a15ff14046ebffdcc8b8fcbf1b347f3430db409c4b7b30bf138d712ca9177debaac6a3138e6651092473d86223943e889bf89a498fb0c0c662973408e9398229c76bdd59b5f626a2d06f80dee6db7457b917cd1f2a333f3853d1355a214509cd14db558afd1fd061d10113465d1682bb40044879b8b64910d19fe8c45d27caa82fd7d1370f7205669e1c62e03772d2a0fd8844fbf6a0d09ccdf877429d59a84efff509731d38bb7f0c17b90eb54b2bef365a4f014e6ca6f6f90b3e8adf99cb3587d7ef7892b488119cad921f0607dc6fb7a72aa5f33e93b6b53ecf3eeb3bd735056f8ba8a003dbd99a3563e85a2dddb27fd544a798c8bfc220654c9e3892a0c2fd9664f33243f9bd3660897bc41ffc7c862a139d1178bfc94cf067bd979ab0c66e984bfeda086c3280c9ce101798cfb73eed86cae129d36d72f79a8ce1114a3e74537e990c53a5b30b3334b1be3d2646daa719dbb216df3536bbe800db830de08769f04a6b874c109f7419febeb34e1e30445427ec154f2fef4a288b070996985e255a362224aa33fa5020d7b0b086e76600319f79ddd8984fc3aacd54b2a47e3bf115c7d297ed410649ad557e87f880c49cce91403fe5ecba4904b6dafd2c273d847e440d2b34270a3dca4ab85a1efe5318f3a124058399c4e6f607002314534fd603b4e71819396b5c168e52e3b47d347bb2dfb1c0f2f7c2e1bb0dd86de2dfb4d680d16cf0987d644bb4a38ab0b14309708bab82903f942267de8f6585d82db7af561ece89d635bd61dd9cdae73afdb29b6b7bf118294450696aa15601c2882c9a2d406e1e9ac78a46006bc62e565fda3b5608dea7f528b06b2826dcb07a1ed7893a5767891b6f740b1c88cebb26cc970f28059786cf6648 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 719950ed1960ff7cfd7d59bbecb83aaceeccb569b76cd9b053389c552cb6bf847cf40cf019ad3e670dfddb284c15d656151644f78caeeafa8b12cb7c626f56c13fce621f735a84f85d66a90f3a745ed8733c195f6b1b9b272897521ad2fafcb958a9669a9db7352dbcce373acf6aec86a555c3c48f78166c0fcbd23c496086aff6116d884c4d8c9febef4c0f3506d3516956b02637af26fc7b1d9345f8b54b5af96997d39fa33cd1ab64a6ab7491d513d3b4e8a134086111eff0462395b9d89d976ef05aea9e1b88bc80c4c8bac44af5fe886ea788a1bf59dda7811615e059853d2ddd73ed8cadad9ab0507e75d57c3224e953509588e788713d5a6715ddaa48e972f4fa55f16579d9bc6988f562cd0ef96e87aa7869f9c08f66d7e340023cd221736c3cb372b867f3042382092545a55d32ec7f7bdc85d449c786145acf42b85d4618b0d70ddad12f4a8176f0f1db67f5a7e3091bd849559a51b958963fce2ecf5df9fd9aebda932073a2ad3ee5b12c5f94c647513fdd645b34c14ac1b32d8565377d624f6d7f3af5cbd969a37d5ea43db676ea6eefcbbc6ce4ddaacd716d147b398b7d469a919d83baacca80f0f4e41448f805bda32146fe14e766db2450f599963dcf899f1d48d839754858910e1fc23fa9e58a9a314946f690a9c5550e33e60fe8a7b66b0e6f7321d8e0f8de639cca948e7d8616047f85ba41cef9f11d07f831bcd987dec3149854b71683faf68179799b13cd31a2a84574b9a67c96a708355f7a86bfabe63ddb94b6c04835958eca7a45cbaecbcf354d7d8e37873308e3926599df6ce56a94945fc7911ebf6bef27d7457da7bd6b60f87ecc3f396e857e95ce26444b74ef91b468fa1670d018494257f667aa76e42976fac48e78da72ef1cf07fc740109f699b46345e4c9972a35daeb3eadbe87980438de50fe2b005c8dcfcea6eecb56d99e67709d16c49385e8ab20a19b74325a9aa5d83bd8ee53758ddb317e9815352617bfc582e979be4f680be34188a75b9cb303215a76a246d8f69acbd173d06abfb99c7f7829aa546aad213ddd6a88aa4a6c6e4674674fa75500baf94712ce78b84eb0285f80beaf7813647a5dcac3a258991db4bf436c23f37c6981e5144af755fece99f03fc1a2d9d7f09d5feaabff7383885cebae4cdcc21ede9066653b9acecafe366567c9238785b0f0b4d153fa9e02ca2d9a3b37d84646b157684d7ac7217f7af4533749a9ff99bad8f3877dbe5cff9c75b38d4d02178ce30773ee37ae4f1497ab386cb375fdf04d85c841fce25b357d41d82279f5f6b85c7a47f906408eba66336164cd0506bbfc92d30f4f33a5be7330926bb3f849d1ddbd9f5cb814ba8a7235d6d0a037e6fbf6216aa3c4d5cd5d5cbcf0358501936ad2beb3563c341e33e5de6d68404acab0149bafa84491ab67a2de8f9733fdb0d05f9da7c4d441c8cda05d9d0afc0224932e7f5f1567faa433c92131ff899e43a93cc7c8f4aac6ed5acbe0e62e4da4b897b7bdce7fa0b3af35406eb6d3ee08adeee4777e5f3369859d3d21584b6593b5784344d53c4dda17f5a918d4c46edff6eb767017e660478c5338eb5e39dbfc77ac4670fb531be300628a7a50fdde227688518c8d8dbab01f270c3131ac1586bb783b35db82f3c24ae2b767e2c4a7d15c2a86eb19fdfc41113a7501367cd70d73d0f63705487ac4e0bb1c84001fe6657610c7d64fa3df4538bb6069128c4597ec9b291938ea5d7cd46897ac2179b52f1cac91b6c36f37a59780e454c50c5dc354b56a43040804de2394bea14c2d385e082c5f181228d62307f5a6a1aaa1eabb84f90f34310844df95a4e6d423d8c993fa7f390e6984e482024c2968254b54b7d3418d6f859e295665262246e1bc8cd6c9b726581cee69140f85c02024c5b59aa0711813d66433aa384b2a4a3447939378a1e6a98936bf04ad075981d93c53e9635b5e285f96755f8689b5ce5429142af6fa02edeb1a719b272f6b0a6211a5b9807ce6ff368739b51d4d9480bd884c8b456569027b08a3cb928645d450c6264c5fce2a2de2b241f965034a08716649a3c71020a6986fbc8bfb5b4a2cb162749264cc1e44bd66223f3db1b9bd2c68744b52ed7bba0b9773df128883110d2cc4757dacaf7f4c90fe02884e1a581d89af687ac79444c9d801d156325590a3a24441b7c2c893b777386198c16374329e640b6a439fe5bc71ab3ae195575a71cbab773ae6f0b5ab2d750d222a5d36b86ea2aa2006c54940a5f843ab708d19d5937643309c12d522dd479c3b2d57dd5696d25615abbb573fdb62eee5c6a6546cb1fb188f356800ff4177c69b636cbbf9ee9a7c7d512ca156490c96b347a5bc2cb257a061452dab5fd15bdf5026677f14967b6c825d03eb782cd0422bd1078b7781624dc318a33b0c437d6c35997a22e30496e876762ba5dcf5146c5188dde6c684c265a8f05031904572f7554123832c78767ff4b5ff525680c773ab3ba1a93776897d57b0d507b9391712344326f090b3d964df8c293b6638fa36815c7cb9b7962956f903f62c4ce3d7646ebc1a8ec04a815191cb4bb085ec8693f2188f490731c087c23a8bc7cfb32fc019d106934b2d17706526cc6f787be424bce5b26329591c47402d57548110ccb42955c422323addb4987fb0f3441558964bf14021a54277ba14c5773a10b81c1427f51173f5c6cbe1b7575a4b6766ac355bc443e479a2953a51f7010f7b04b23e0ca93d08836432e3ae5a1a6bb62f5476c07914f88532cecd00ceb340588ab675f93c286e7288da1c6ca3621ad6a4ae1fc64aa15b27a7c3eabc120e7460737585b5773ab18e23ee185c900ecc3b765983cb807e2f7047e6c999c6716e26801ea938302abc312aa797535358196b63309846675bcf1b33343bc3d4d172db81947643a84fd2173fcb0477ab87b57b55899a308d51311c9ba6916f15947d707d88b9228d0488ddaccb25455cf782b7a18264e55c9b6798f39a53f53240c82fbaf461364cd5202c5c94cdff23e0f731624e69310e5b47964b2bfd3a59a5b0d55a026e260731de346f74938abc607b4f579b8b200ecebb633614a46983e60e442a4914c93fa62219025e4a99d71032f0b00906126365c467e0a235570a544a7640f23800cd5f2a825479a632343f20801f1774f0e8b7db96a860fd40a43cb7abae76039c6bc80b94ec315ad49e9904908a20cb444bfe219452c464eeb2914ec19031152cacaa00dd541fde81ecaf1f339e468be45459e708bfb464d0c480a1becdbc021a06af7aac4772545eb2c54df6e9020e1e44b11b471dea97a382a2fe8d1042565bcd51ef21cc0884d68f072d9b5a99f9c7a0a011e4dc10f6b600d611f40bba75071e7bee61d23fd5eda +ciphertext = 101139d23556eb185fc84b7a91052c0739f48c9850ba8f6886b5c2d4c064d37c525638d8a434f902c4f80b1bd8f87a573f7426b109a3bdf6a1d6ed315e459c73ffc28039085eb8f426868a7b45921e05ee78eff266226b92296339fa679def4d89a2f1d53e3d8d868fedade22da561fcb57297da23688c1617e422ac3a855cdfa30d7454920b68ad591dcaf0a45cf95026841072f304c03054c5322684a8e4b6ef489b39ca40df1d7fdf47b73c4e1d82a538752f59521060e47494b372c8d3b5406fd6e5e39987cdfa03bbcc2f6f6a7cf3d77f1f775c22cd11b4a74b8fab4fefd93a9bcf5bad44993057fc2b8f35d9898acb25ac1574462621c29b74ba64f58336e817d5ad2c9df18f754bdbca516a0b41624ffa2f9a8d67f8ab013cd0a9010c21296649bbd159f3ef908fa368e212232948181b0b8679f658ea55064b59a354db13d44e2d9ffa372492250a8dfb8f1adb1e7593c3d7c3a54c6360488e82ad056071d0562cbcd6fcc82015a9e45109b7d49beec8fa187d4a2a41f1ab0928b0c2bfb20b92048ab9210f0a27f258e90e31b2021a1a94fd0f32dc8911b2ae5363f93e3d70a0e3ed6cee2649e6c4284133c9412aedf464fd83c291c477099cb8e1d7ba347c53a99c7f455872a51204f4c30ae0c41080287a5b247619e2713b79e506e564c3ddb3baf52f15b82733a7b367eb808db1f19f079e9374bc06a0bc6d059458e539cd3ace055e3895e8246a9e888226f05a9022ffadff3ab60bd6a4cae8700429162004532f1bd30843a1cb6b72467522c8e41908ec9c1573551e0b2485c287f48aff967c7a0586986f07c1bce12099d5011a7808b629eae7f3c2e8bd5e79235f958fdfb1377ddd4850894dbd1d78ee375ea3f2165b5acc7f02bc1bb54e7ac58a077c513f0cf17daab0c7934b1a9c3ef073e8543deddd3bca0c13926ebd64823d0ef62b15c26532784b323a67c37e90087a1086955087b1a1a9cc8ec9788609bf404fb2553d7a233691501b37a311968392df5704b8513090bc416d39b5d3ea4a7b21eca56c8b5eceb1ffb124dfdfcb36cb0b84a49808c6105087caa8de272af17df3d99f90e482a704bf135fbcb27c068be5b16d6ae7579c0a046a3c6825df0facc8b9402fa5cfc492c2272f7b325b6b71298c471518de97bed53084c8f559c8435a6b1e9a69a70382f4c35f6bef440a5745dcc98623c9bfe3cedc55be17bb22ee5de49d7b9fe8341137f0ac2907f897a639d816a096911c8c4b84119ae14d459f3377bc7ea7224fb1fb218052f9b03f29cac0aa72daee1170ba56939de8d02d24bd4d26c5814052a125256b083e9e59cf2c7252f6ad6d75eaba807cf4620d4145103f105a6c07f3aad6c4d9ccd783c1ceeec399349d877a82a8d25e56fdf771a56162f5d46ec068e2b7ce7ee89e8565fb95fe3599d8129e3b0737be46484dca61940e9f5f438c1be101ef4aabcc5c23f41121936d0d54af535e53f8880c2a99a70d9a41ac69e137ee32f2eefe7d4aca9c3fb747c3b21f6e7c9eb26214e0 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 4ebdf6f053c3ec27e2c8ff94dc99ee26196895aeb620f97429574edee9568f1e3feb564d8aae883d6ad32a9f9ca57ac0029f5c8e6e679194fdcd39e627e6ec7c2c3f842b547f074f47fd82a06bb42833f3a39ec3cc07904089e25cd5a854168d83ba8ab7be60b6ee881d25403b297c73048e32a8f8805e529a8ba2deda6b4d7665a383e71b03b1c0baab658fc50ca3a028d485ca8491b1b73767ec9ef8874a54d4ca414895d2e49fb2bcdcc80c9d248b97ddd5ed01bedca43f4fa8a6373a99c5dc1bb7a389cd9a3c6931fc7bee05abcba579251b742f46383afb48fab5e4319b8f9a0491fa3efda443acf9b9ce5b29a6e723a4eafba5c1a7b3e017870fb35dba8a69f1f7995fffaff817907de5c66899824889a760ca4a38a57b3afa880a45f4e138b37487b2ee7332d2689f99a5a3759df0fbca43ee6d45a5aba65f6c67783cb74d2e7ba987ad381938b4a651b79d8fa5fe8e6d073a6aafe60438ba3c9547e4557e1f7f41934e4c912648d269d7bd9bd69c8454666e696926ec4849f7f5e6e0c815638e34f323465839d36a8149bad494b71f1336a4fda954369d4265b6cab935f06694c58fb500cb77bc3fc4d805a295a692648a31612bf06d06c2e86c61675577053a747bd3a748f452b59dd28edcbeca9ae0eb843ea8b7ee21e9b822e8d860764d8c5a77f01ff2f90d4c902c832f1a344758776eeb99c3ec8b24ccbc03f5bcbe69d27fc4f4e6c580cc3b41c14e984ea552bdd6396e5f867887430a2534a44ba545adb286cd61d7d6618c76945a5c3b29bbbb09b7f4b1ac53e5954f677d8c8c1bfd7da57c62fc8b80e73d737741f924ef7164b4ebcd8822a4c340b5b74cb5c2d407b9d63365c56ce4c5e6ab43a8bc699d8c34074a9bf4816f1ddddb464656c379fde8f9b6a6ec22e5345684f43ca647063efd52f6e6664587f90947feeb4366a7aba98b76d9f79a1ecc4bf50571a07cc57e0cb1b08f8bb36f63a8a898bf3b7b0fdd7988f8fdbe4cd405d46b1cdc37600570fc37ad9c2f37e313fbab2adae52db6f11ea653987305aacc8876ac4e0e4b7f6e9227b8b35caf616c9575506870fbdf585549a2fa0fb185d7a61139c028aefee3bddee56d328b16ccefbf5914aad88108e62d563bc0243303df9fb98cc57a45369517640cfdbf63a555aa1df69878c4ba567f8d376176d6941d34957e1373b86fd483394c3616d89d14aee19e705a2f7bd848bb23ed88de04ea4bfcb36eaa81d4da713e37be79f5ff51cafc33fd5d074d5947838625e49f5f6bcda5e683d014a12fdcdc827deb5208dd39b6659606a8feb8fc63ed61a939cb455e869a3fd83268561e16381c0f615227d105feef31bf39a04d97ba4d78adc66f23f85ba675ee871f37700bcb1af9fe2bc652ccfe9bc0fca0d7f7577c9c96dbc9b8b07b917f258c1576eda186f1dc1f87ebaa7714a54052fa660f034f237e98ea14c2467b46cf9877f5edc29a6f992b66da7db93c8fce3343f734d86bc548246a57473d1285463d0942f298f45d933ddab7a09766a9f9ce78ef539f9ce9a0e97364cbcd366b6bd8b5ceb082fded199cfaa5288617b5d019eb3a40b3d0af538119d733f2544d18c9d94f387a3f5ce7bb0de624fe455e55633267468551b3ee117792c80c1a802230ac805f769807976c06399b97b3c93fb83bdc136cb3cba70bb4ab5f11602e977ed051115508668c244a44e09569a13507d4009ab72b16cc3bc615c12ada7c56d50ba6307d00801bedf8526f0a9366869a4830314d162f63ab8f51996663c1138641275e164ddf60c7708a75376bc235e16d5c22033de1a149153d1868679e1825f638967becab5b9644a6e201906771a703b7844cb5cab61748d202d38b5b8f03cc45626027895e23d0c1c1b526c6d519620436ed593b58732164a39639c813f6032eb902b05db15c5d8825c8b11815768d29522536698a751bc1f9964dc579358adc57eb83a0d2201b9b9354b1b39c6e7008d5f3189902964973af9a9c694eec1298d68d3372783d34700b0280d692998b49a9bb76293d7a95363b317670352a71822f415b1c97742934713c5995fe5ca9642c3ac18b73c43357d4d497b3905df7f58c6566621eeb25dda29d97b598970684c5780f665243feb854f9f566177200f9331ce353cd1a23cce8aa4529bb667d1b9e59b1a312a7c6ff08871cd95c6934419f475c1c08395ce1a3aff83dd14784303b4ba7751054aa59f5710e4ac6039f3168c1b601a5278562b525abb11e66193dc9d34446bbcc8163578cb8065f89b9f43407f79246cad2b6b8b40f16b839a060a95b76855237bab2fa315db48e40842f8306125fb04145356bc50b00e3389dcca26ff048af5a730ac573b5b80331d2597c4188227682075bc0000186b8fd26a383e1bce5c19f13b18cb21602f2160dab202bb07b63d925b71708095daa662cf25dcbecc99395400a79842f5c40e79b46b5384ce730439f537bbc8a8608f61520e120ea9843456118a0a4cf36384832b12076044c65f06c8f8cc31752469c8a1e33dc529ac05485548a6e075f46a089aa8446c0d465bd43cdf0343acc9668fba2a7f7191a9d29be7e9300cef33d13a11edb2b409de297f30b8a7b077fd4ca4d1ac74b31092aded0503ccb5818d1834a734e15b74d3fe550ee49773a800d86f129b4e0250ea1c43da3a3b802b0757c6401ea090f98a28291621341a9d98c67bb001e46e89973f40c1c4950b0e34f07772ba6379fb6a93ecb57369b48b3aca26ef815c615b4a97ac2190fd2b15e83aa10545fb859635d084a57b0268ff085d9ea4b7ee1763b914e67b33dc46037f39815a1f8c58663c88662b91bab0db6758288c682372a269c64cf3ab5c46de2c8f0f1b7780a068948b9480c6af10251453c1fe213855d74675cacc7b162917730ae74ec7a8e7673a7d0887edc175791309ab28e6ccc629bf79c6d69b19269a19488b7b88a45a199841916ba4a2a1c2456a108a5cb4de1b15356ca737369668b0b5c7bc10e22377d6b5fef7515b4f348015872e3518c2676079b8a06de8b53bd189ec9766c04c084e74c6e747c783ff3a99b930547a72fc3a179cbd62b52d46207e79e37d65c9f3c4839d1afc167ae4041671e2c1bf3324d875b78615067dfe11653e6bd4dd5414579ad8c942081db4f1a10b0e1054fa3d79af6a285f2107d4232700676b8a007057d15c923a7889f115762b4c242392ce7c4438c68c6c3fbcccae4a071e404c24274f5066deaf5359eb3382eda6d6338f166acd09e376826299b77b781250c2224486ef23d424bddbdcaf7b417da8b8933279b33068f6fda313826c2eec500b224cbe046abeb37a75a4d0a8a41c4f666854e9b13673071ceb2fd61def9a850c211e7c50071b1ddad +ciphertext = 188663b7ec7e4a08f623c7e55c2148f8a6ff30aaadf2adca46e99287a7f8a6b37a1c6036653a321614ffad06f531cd01c62ae6e3491af8c06aa210c42fefe0edb96389306ad1baf1bd911c106ab8d32d681ed8238aec43591644a19b1f3689a1d9fe2a6798a4ebbb55316a2bd3725049621ff553a688e9fd101e4bb9d1c2cb6f1afcd2189990279af782458152379988be07135f061ff3d3af9796aaccaf78f01f4c9f0a89841885b8a015c6de80788fb3787ecb7ef2e36e9dd4b1d3c9df3d0ade0207cc37e23c8f758248a030d7d2d7c43c00c06711d00de431e53405dcccfbe3b21730c453a74365e7d1fbfff706a2c12b060b5ae1dfe6cb211a42a2f0fad86c6b0b2c70667bee5454434093afab1f37f955b895359749c4e61264e0b18a630857c7c3a98e159199e9fb1fa0fd6f07e2c696ede68333465226933c566da073297623168adbbf6d5ad7e9e22bc55d5c2aae513016344a7f2a5ef80d247ff1c71b983ec3fc88b4e2765c0b26a6614292763c14b8612b63ed0bdd43f78b5344f10a28c5df0b635b2f44f9d5c6496a801f7cfa5db18b2018eee66a664c0bac6bcf39f82e00e57a6eeb57a8097af864ef693b871b5857a42e0a99eba019a8ea639895e1a6373a3035bd3148a7b267b5e0e3ac6709a4cfee2085413dfa55000e09b4ec889f2f5456d4b5b9f42d23695e925643f9ec9b2618e09283c99b966f91284e176edc41265d3bb436a6771644460d97ee02afb7f1ae14d06bee9aee03a6279fcb36d069bda332d586851d9e32e9a58bc12104014cf7a167501b086e120a97498d0cf3f3177c2ff3b32a93916665137846bc21545930423e907329d8b57c2ae202f7a7c2cc9dce39a681e6108e233cd955914047a5e20552c9b3a482c8908f536feb396406001f9bb8e24807dc931798a6454fd6ae43600717ef03bef80e6fa53c2b9a74211dd82ce9aefe1e24f6a4f82b6d2b8d8ef6975c0433c14605357379276d58b8ec11d55b4e99cc2d3516198f4eef6901f70d6d74b96c289496adfb0109af4e3da8ba074f5dc936dc1268836a0bdc000ad8dba6bd9c6deca8487dba9324d07e66b07608dd4d884223460f0414228819c430ac30cba5825e889a07eeb75c8fcede709cb12dfe76381381ed76f89818c4d3e177eccedabf6a7ad44888e298b1eb51dc2f6a1d6bc5b0d71a9cc05796abb534330f1c9dcebd5a8144cc7471df50a684b424d8fe1db0f1351926f6c45c1fc120472f0a35a8332fed29b24c7534b90439629ff7ef469785d851703f070bce95d923a88bfd592cba6975619f07f9aa96733eaf9d3e44adfcee1a226bf5c6a006ea58753b9a1b0679a36e619bfce738b2125dbe1a517c6a4ca05417e267081c26653510a1bd1992468c59f6e56b857c8e95bc192f427c77a6bce7d4af50ae875e7b38aabc08aae9132188029576153204575e28035de11efe643e5a5195a49d50d590436912b25310bc4ac0d9e303d6e6c56583b9e11fcf15fc621e45fe7be1c118896918cb09d0a219e8d5c004 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 1f83902bbb77a98bd32287d79dddca71dd9d57385ce6ceb3c08b80ed95b2bbf7dc101cc1912b71b29b87dd18f54b593d616a31ff4957c8cdc32508f124f6a7b125b0ff799fff47afa6a9a7055382bdad8cbfba71ea1b530bda5a4548922d9dc6de99f7494370efa6c9689dd86bf585ae6534dc05344ece941ef793ebffe4312a371ecccea78dc1a166ba98fef806474826a9f2caae9cee4b8a669abd146491abf3ea57c7f4f4ae73750f69a343d9f75ec935ed9a5656f78a6e50addb8ba28ecf2513f5661fb0dd5588f447f781f35cfc13f8c0dac843aeb3f418b6e8c567f51d568f2c6be8eac9bab558dfbd8389cad8bbaa50e1ec5dce044efe58307444d2403ae67a9369e2df81d387e3eb6566637dd8414d9c4fb971c0fa7771ba53b7ce3ebffcbb85aab3316a3a99a9ced8bc4596a3fb3d15ffbb13a5cbfb762ad7a08ca4aaf33862b73f5badebde56d395e809ffbc7347e847956b57e695c978dc2431f07f86c1eda880f7871cbd51612d9901cdc403da599b988a8ffda716a9535c8ed02b3bcdadf6d053f5a8bc66419fd9d7f1ea718b7bad6bb76fd307e1e6778587c36ba5e4c2d7796185bb72c5fbb839b6c91119ae6c954e9b66c3edc5d0d884428cefc7cb6a6c86c8d7a605973aef3f70433d8a7a4aa768975aa6b0c49f4cc98f7cfc83ea475ef1090a68593dd68029e97f489316bff74b7e33423bf96893d271fc94b1c775c6bfee3b07bce543b3300db7250cabd1dd4a2529347848830c975261a547183f4533ebc0ed6f7f2064ba693a9bfaae6fce87a8d737d75aad6c00eaab71a5cc25034120445334a39d63baa2ac3f54d77a921209750f6869e6a7ed05eaee1cbf9cec9cb7b4a6f370e5c139ba472a85e14b28bbb8f7d69c5a8201b730db67ec1fedb10e1c42b4a97fb7f7ae5477dd12859d68199443157ddea85760445895f7e75ef8bb919c721304f8301c4f666eaf00beb03dfead066e3c52dc5ca71a74545abe78df395773d3bc9678272873dabf8f4a4aacfdb46940f59b0b8fa7574fa0cd794d64dd3d43f65e753a6aa2b58e0cc664a48ca3d8a3b18c8bd5d08f93d4ef3fdfda93506c831455b649ffd17fd866c87683ac3d7c6fd9cf253ef509d777f35bd618776864ebae9fa5318e739692c5aa86648d49778b6708e447b434ccfa990ee9a79de94c94054e6e4a8a152b5f4757b89f075a27ac464dde801e0fab64bbba4fa3fc0003458ff7301138fbf444961c54c52764d8c4f79c3c553424aa4aa13a53d5abeb786cdffb686fda185d5438af5c494d98c8d381d8f1c493bc0e7797cd1995db78eecaee8859b9f29c497cc35eaf12d9cfebc6a19c599c9d364e587c7d32245145b6dceeb54cc7ec5b541b71dae959c90da747eaab53f8cd24365c91f53b7b0b9d373d361e4eade4d8fc86ed4d8caf43763b3f9dd65d61afef962337a45fe051d36889253a423939abfbdada6fce1e1a9931c960d9f4948723ca17a731adfb48356e569306f3481ff5cfa7b036b931a234d564cc35e59a7acae4870759e576dce410b3d4e0885534f577692c5a237344a5f674ec7c45bdb3f42e7db004d5ab620ca2b1bcda57cdcd5ba4f52abd54e0f840e4ce837f0d53539b4a420a3005a17c7b4a08178b83f8540601145b102970b3fc29f30a4ca1a8a5bc4164051931ed68a59efb2b50d549bdc1a65e9909f5aa690b0235d32b1c6b2886ce2959fa189e2ce24224e99255863e6d964d4f422c02646a461bb5abf86f4b4c0975765a5b0ca01081677334af26c3467da771cdf40ec4293608801cad9c61d5f80839774eaff772b139051beaa65632120f00171ad020276a1fbf23517582149ad2c73450b11315ca4b244e7218800350aeb5808da774030635bc247508144740634ac4a078a5af2816e9206a645287de06263277242dba12af2a82ce13ba6787c5ac3020e5d30cbb92452985ae41027056f492bb1a5e23332698240b5038302e552c5acc0443a8795804126e15369ae96cebd7c9765233982458ad6520550baad77bc74296badcd4cc37240d0163caf8c806a0ccc3f4125a0874cdc1c67e4626c9c753453fa37b208caf5f523388d6308248b7688c80f6c925895670a1397880933af0152da1e54f7a7b512aa87499f7a718e62a7cc5bf5687add09060426b0d3cd292ab9b8372083ee462182872815cd740fd69acdd24615110bb618ca1ef662715f028864ba0872b8c199abe40f35f91906a821b8ce0742f931c661c65aa2445371a300e68f23b767382f3701ce685cea5f59c50e82e45234169c3bbac814ab9d68f83842c513a8faf475590b3bac2e3a4685b8f71208357d221ae41310e8454d315670c3a3409a2a95258b9057b42def7a7c6f588f6da61183acfb18a7cedf138c7984b50a940f17c687e5a2f83451d94398f4c82c93a375be195b4b219232e9a766e77040d3b9125e70fa4097d807a6d25323342508f2490a59702575d64af146088f59802aa2cab3537a8b4e92a10ec447bd89f9fe738d92a5f83c2861628601e42bb427b87c2153d4bc44b19413b79baa5ef55325ba8a42e1a88548155d03ab116e47ee0455f0e5a71bae3a03ef476f77a9a9cc6526df1adbea64930b6995f60181544356c0982e957c5e5186f321b9467d05dd5970a96e226c89673e50a056e7c0a8027aca8a5cd93723353ca1991730dfea1aee943cb0d62537cb5ad88c14f52a78cb6228ef4750eb7db0aa831a4202b178ef47446a06a17e7caf5274f384b36832a07ae0a66069bc59fe439f7b6005f064d865b550505210768bd636c61f0e7a1bdcb3c3065908d51302ee234a3fa113a1a1a2a618750075a6ec277cbdac535fc1524a62e3c0601aad1c46026ab6b8495c1b7093f776f9e6b3b533267ab99801e83bd18570166387f14ecb4d279b86cfbbaf90649e5c514e432561f850497d47c2bda1bc2c398b306751991392c399df6f408ff836f989c41cf76234b9445d9f81f4aaa987c1721c0c726efe44c311a589abb5e0afbc4add9bff6f87597a52e16a53d6c3551b7e6be0a1958a89a739e0717f0a86be0385c5ca433b68ab9506ba3a6e00debeb1ad0519e228b5b2d9aa3c9b4a2bfc8b35bf0a04b5a9d0154aef1a9478df4c8a0354f8878331f76c8cb6851940c996109113446367497cc73d395b34a9c7dd9621c9bb277bbaca6d976c3e65fc3fb4588643ab523bb35f551f1f30d0cd1c40d14b09429215e0c5325bb2b069b85c9e0bd9fa841771aa7c9709046b442990cf89513930f122152632a3c3d7c15c8018e1c23aa33cb89ad61e27e954728e2e2e230c94ff009417d7372938e2c29c38af22184eed530fa1f36b817736cbc5f7b1dd6eef5fe6332fb1a598f3871e5470d440fd2ea631da28a +ciphertext = cea8231a59705364e56bd14bdfd745a5edf808a710ed23de250ce3d4cd42c931ea20d4a888f594ef8909096758d207e22f7e6f1a0120d496fbbe491a9e7d02f4a332ca25322e7b3d8c5cce294b8858660574748a9eec1a832653b8586c29cff0c33424fb9dedace9204299642f9a34d7391e04be2d2b0b189291373f6238a5e47d959e8b6f1a7e965ecab91fcbf4b5fdd264dec224e291f3248c9bab12c2149139ce73d1409b21c91f02cc9ef9c41124c15796e1a04e7e57d727b9b3d54bd51af1abc79fb6316db1f23ca3e29fbc4812e828d2038408ff3e9164d503ddf3a31ba263cb38ec6b307f01291d680feb21730a7bf3adf21f7ea73e2cd21a2ccbe3b1808039c00d09f60a0e54775510e8121716d6c25ccfa1f0b402dd186a8f623d66f685913fc597d24f63afa8e5b88654019de57939ae9c169f201bc53eed1e5c9a6bf60d7a2ce5d0ff33cc6f9143619e13fcbad787bf3752f1563e9c3d201b8716eafa70b15a7adc241aaeab81e0ddc1945beba409b3bfaab9252e30cb26805e6b42946023c9664764192870cb05ea9bc0692c8ef1408db412117e2633c011ea6ab54ef7750670873284484c754a2d374a381e253d629b09c5402b12a73b90a1c70a4d18cbf3278457039601534745b5bc4a404f17184de598afdc6c38cee8d89af50473e3748ca229715d575ab7e31a05316c02df4d19a594056ca4c250402fff7367e5ce0bc30910982b098360e00a44652e4734e14f490532d5f6ef377d48d69da43d5bcbbdb679e8096298f2e9be4ad3a3dd322f9675f608930f7dc0d00bafd4d2253eedc5dbb1389200157d7b0fe5b49c5f2845884616045d2ca0d4daa45a967606c0e4319e21af8c4eae03c0473b8d902ce55cdfedcec31b3c4923ccb4563834d3683ee3750c39d1782e091862e08dc99e9aa709483e7e0337047cc9ccd4aa1d6ef65a4a4cd1817a85a5a7b0d59c9585073fa0fcde6eca76a83d1cf1f734096d767c9df176f0ebbee8dbb511db823a350c671739dd50913a4220a6d7d9f0d98ada716ac2775348d22f2864b2000adeaf081d730d02246d07f1f1b18d5a7578458387731150eebbe79126ad8a63a2562d4e937c39b9f99ad04df3abb938d29e5dbd29fa640fdd4007964c9e4c27a1b440597a3415c789fa6b241bc7d533518a60adda939f62872cc61ac2e09adb1d3c6004fbdca01498cb37538d5298cfea058853b7d55e0bc3d00bc4ecadebc7ca9492705d7c1db971a8fda2e10e40eaefda7d32338953f138f03fca15d2d0cbd1f89ed97723e8684eb6e4cfec9aa81182e90c695e0a747d2dad465d4dfb7fe28afcfee0a1240858fb6798651a326e0e81e09621da3a529405daceab67657fa4af019191f0ab9898a447eaf02d072adbb028221b509235aeddb4f0d82e84e777cc2ef6df4d3ca6b65b9f40e06db24b62260c44ffa7eadd11e1d05eeb0c5fd163f8595f15c2ab7d3a897341c7bd2c7ee9a0175c113eb454e49f7955a8c17a7a02236778ba7e366d3c1fb1bdd6d0e884959b +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 8b78635ac351c94bb6b2dfb861e4914dcba415f66ccc465b370578e136330a2c5cb0daf858eecb733a75e5cc4fcdf7a1269dd17f2cdff484401dbf3318a98000637b3d065608678103a4dd8ba75ccbe58207ce30ee6fbbc023f317b6556aacfae807eb448ef002d795cb6fd0788f652d39edfe535f75034b0e6f42785f7a6e06f4168aacfb07f2a9e8753195b82eb9855467322abbdab28de546c470ad139944b6736e1c97c9768370846b45693aaed9c80a7b53b863830d06f0ea7ddad67e7bfa2c8e59f3dc8b3de79b27b5944ec85567788043dafd2af27b6c6314ee7c46e87d109a4aec5ce7969d8db604659848315a9d7a667378f80bcb8457fd5a748044bebac10ba5bc06ec08afb13c1fc34703f63e26c25ffdaf6b0d3a68bdbee98a7c5a489c9ec9ac1f14fc6f2bc7585cb01bb4b55496a93df9d3ec974399ef77ca7cc25f3f65a879420fadbd855e716bdfef1bc8d6c12b3488e4d8ecfe8b89b79b1f9cd9eadaf35f2ce65fa5d4ff98713969df9977513fed37249b4e25f5ea2975f6ba76cd3295895a67ecac279bc65642cbb5d1c9fe31ec5fb5c7cb73b17757441beee4f9f95e4d4177e542bd744aa587738bfac0ef4cefa1fe9b0a5c5e28b53c244dc7fa16ead354c85bdf6993087b61bcf002795d5ada7a3e6747ac9ee0367c824988ca705b818d7a921dba333724d5ad235b18e463a8ac88180c88f17e579fa5ab6e9d4a2f53b03f7c7ec39c47373f369f984f8cc66dbd29f4206a63777d6ca376d1be8be6eede7e93cb9a0437b361537432abd712794f5058790d98e82be48632a3e33a83aa01ed7c8e79c6f12c33fa9437ed984a149f903da89bd53e84db6c8dace3789af5cbba19f010b889ca98af99e5b0b3d4399b06e366e833a55a85e11784708b98efbbf23a27aea2ae6e76a73c2027759fd97a7db870f9fc79afc89436dd92db556e0a738c134bf59f86c98d78a43a4974503d6da8cc6c9098a5a9dbd91c9bad94a7df03b543d669a9aa4944e1cd8ddfdced7d485fa414b0765a88f175ab6c94b12b2e77dcd4998e6aa263ec3fd5baa2466ca04568869466887f7bcf636c7a1f08427763f84105ed3edc5c1873bce1fd7a897e740c4aa82bb5ab1659e6082b795fbd660bf3fda9a7f840d9f7b7bb4061343d56757258ba4c926f4f21eae1cb265b00b9aafcbe665679c86eabbda12b74f1c591720ed0ea2bb293d7ead5b556369378a8d5b7297c97327d5dd4493dbb173ad01458686a93287b6da0a6923c9e3989b69612b9e5a04ad962379bbc466a03f5517abadc0b13dc6cb4f0637bfee99fe916e9c7f2caf28cbfaeabccf92f7cd7ad85c6f43ca90e4f629759536046394936c3ac5ab979d5cec2aecc19b5c17edb47b0f47f34e6e6028bf9a137f5bf14b62fbac4f2cc6eece89ca0467d4868c11c27f99373687b657d132c55795d80f5b87f0e4ce504673825b98e8a0aa35f2c8d8404ec060ab43aa3de7ceec9d04746169bb4ac4d3ed8c74aacb868b4a93f1dc55144738e2736749ac64170ca7d0f0348a965dee494466a49617b64e069ffc57ae4e08ac8e3db58526c7647d56cecb657ccd1143343aaa8422cf3bd0c822f763b6b8fb7d014e649ae43bcc43163992e0d6a8f811b3f0d30807456c84c8bbb008d3b126a31424954cbc6cdbce91e25b19928f4a41b1371447ba3d173915580bbd7899e9adca37b4b5a21e715101717710bc7eec56ec2e58002127d1898bc55f8a3be385d607b3ba6561991ac6f0913617303830da25f0cf0ac14e67abb8097d17b0ad1ea8c6c267adf51a15a9a363d7aa5c8ea535a89115c984ac5d6bfa922c6fc44a3b35cb667f939fa6b2676ba212c17bcd25c82e8172f6a7506e8b77d82cb21d7066da93a7eb3cab8e881a24c7592bc6b656e459af33a06fc2846d71221f1da641004b68bd65dc28a59036ca678508614b15a93e74f89b8af58200d50e718dab1c41c4556cd47b43f14092ca47397243983406e12e423233c90cfeb661a32ce65ab464db58c922bb693f56553961868b064e17a11162a7f0e3ab0b0aa76b8494ba394c902c598c23721dc16c51d46b8258c635763776b922fcac747985b94c006696f18ba49d0c5eb0525cad1349745691320969b6bcff69c30851b41e66aac3353c6894ab0097b4ec49783cfe4960d61a6f94b317d488d2d04a8b42c7fb7d89d52d89b2de30336333c50895348870bbc311611f27845c7775128a9cc831966fccc06292d86b582a18c6ab2fb3cce03701ba91047227a9fcbc6f16130710756c5dc288ba92402b5b7dc90c39193737c206f3f8230261852f1694258d47c469c7452156e70634384825bc52b03e90720066b609a4102862433e2621987e23af51121bed807810501200b776f847ff615c0f594420dc29ca6573276559c1c84b0723569dc2a76728909d9d1279a8c240a3979b0b44003687a412389581b8ebf0ccb06c797f7f5815ccbb434132ed5f1340e2c669430b13a709f7d1612af876454f06ccb7841f84c60f3806d5e423cb34b23bba90ab630403a46783329707388a1f4232785d4723c993cc62284d0e35242e52cfd6981268b86f598b11472900f83333c48627d402abba59c6740b4a40abc3200b5d9e13010fb4dd6bb503548c777256e0729905a89bb386459e0b885b6e3017c94ba93c7518f017695f5bf5b99214c8555bda863fdd11d40053c0d652696286d2ba14d569915e4532132527ce1b88122640ad668a20964476db20afca5ca663c6c17156ab3cc8e4b723b3a5209d2d10767da52b2443764f91a7f3aabb35137ee18a1f744562e22385716892ca77d518c4bec578e0f1145b3241c1831bf782c760f9081a1191812790531648954163b10e6a1f02b2b9e17cdd439c6707aab0df09236ba33d9b271196a398ff0b2c9521e57b6c8833489c5328f4866c14d2cc1ce037400dc610b28cd99150404a175662102f9617205c1cbc24b5716c7b9b0e8635bf960be5b632a976156c64078cbb23eb86b7be9a2d3e12f5b56406cc51796c66a6e871deb601cc767c0b8e45744346de60bb160808210506c5779bc275940e000314f30555677689f23009a583cd6f9779c83530e5b2a5a0a771bf1376f0091c627afecac104fb2ba251c074e359e5fc44dec244ccb78423532a7eb27c8313a341dc1431035162838835c85c677a420b67c847dc6605821587c8064e0bc2f4fe6a6b22113e73519125b92b3a66f15564666023ea99273d0d5657cfe1b1b3bbf85039a8189076a3752784e23d8a802023fd0743eb03d989a6968672e53b28d579974d268132187e7bd72238639c6f2ca154d50d98c74096ec33075d12195ec32a8686d0600e45d4a7f54219b0d7a3826d193a51b9156ecf2edd6 +ciphertext = d17ae2301459a388f0adddcc7afd2405cffdd627343e2d01651c3fce83f51eb81a69fcb5ced2966fa4645360d1e89363c3b8104f2799e7a22591cbbd38b2f7ccb8c699bd1c9ed043415bf0f3186a916f854136a4546742d98b1c36084eaad725af2a92bbe8efde8e66a3ae38b0f4221bd7390fb6e99d4b5268dbdea674436f949b4fd7cc00c5424f83c669b3c2ae905501599bb6961fcf2f92bdc83c025285aa3194432fb7e0a1e66ebfd5089db70a061cd8a44527830139fc40e67985412768e74ad81d5cf41411238ed3535075931aefb8006e90c225fc9510d645b59f97c1165082fef535b25bfbc57c38a6e5030a2925b5039b7c3c6bd4e56e5eb2d6b48866b91ccde538bee232a3ec190dc8bb26469e02025bc5659e98ea50813176dfea7f4087beb9c59f825789bba86472714b676041fc385d4773332bec39b99fec6cba68b3de5ee080fed1a65a650c1c193f1dbd98d555320143d1db61db609ad6541c09135dc0054c4056b194321a63cba4142a8f397f4e8c6f5d04ea3988a1f769e191a43c0743644cbae9ee20fe4b1da409fb8c3bfaa2d3e02efff51816c5daf25374f7d5270a807ae7bc94027f8ee673b03e1b860bf4e3856ed5eae78b067b8e1af3cf0c4d9de86908a96472db51e7ee96fc8f21065e6f3ce849b09644e543b27b4573db1ef9e0fb407045ebce6457290d225d490d209d2b762d08e94ffc36c4e717954ac4376acbd322bb745200ca84c3e67115c5ec5566908083f6f9d06fca56996c4ae48e67182fa9bf7b547252a552e037f387fdf4105d147b9919f8c2f9c588bc7787a75d60b57e441687a15e057a379bfe9eae7ef0f222ce5886a7dd4d8adb1a1048ad15efb70b951998c7ff236e5401110c904dee9d34710a429a8bacf98a1f14d9f635db19edf5bb564c8a598de2bd33de9a33a8f96fb7d1742313578f2f83f382545264aa354dfdd9f145914260faeaebdb769df30203e41662e183a5dbb991aed6cfffca5db84058a1eb808beeb3b9e6ec299dc51a0c5a4e89a5cee1be3492eeef9e9e573c427e33291a3fc1efea7943760ed4a564e1b93049902fc35c282e4ea9b39f26290e6c88bf8f7c59dff676604db287af7e3af34b5348dbfebbab5041bb92bf0e114d12bbee1dce00e33bc44130f849113d80e95438de828684c8da1366fc3803f79e893812e81b5dbe0b417ca3426fb994a5b8534e941b9bbda4d9a975cbca174854761ef0f7e2dd14eec51f2926902aa84479044bc3275f5c612b6ab3004771f6b590eafd45c3cfa3c986d203b19fcddda741d6652a3282133353a66c45bf46cbdcd7f996d3b0bef58cf1e0276c34452f88babe26928e608a880baf525895ff3cb1114a5ed5bc4d5ecfe3ea527e4651743e7a036fa21c2794dae4772162a93968ec11385e2d4c73fc13a212cb957e9b40a99fdbd4dffa137926ca298f963f10eb9db3f5fd96744ed1e8c0f38f50a43aa06ebe280607c14ae30ec63bc4750e31a2923680966bf9973d799117bd0f514bce085d28dd49e3 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = bddb6a1bc7d4f8b530860b71985f402098c84ae4809c0ec8ec7583a66a3f4ccf90c02e73abc4e8692f5606d54991f5b548dff54c74391727d45997a57ba534a97b3606eead9f7c6446bcd8bb0bea99179bb8f67731a63ce1d7e7f30b57fd17bc016d5e8e24e27fbdc26f3f4aabd45138484a52ae5dd2464440178ca7e966d4d58383f6bf9cbfa9727f907488ea8d978965f9a51fbf729ba8c308474d56089f2cc869b523c41d4d9507a671f0f3621e057662454d49c49a398343d64cca74b7822d773373e5e85426b7b3a5e256154a7b78cb205d49df0371b94dab21b83944fb383cc84adaef4ff43bf731276c1d26b6120534439bd29c4ac7c0739454cf860e3facd86ff9c64af3a83dec313d32bc0a410329d35d38a3ca9dfd41a56a8c7cf496ebe0442afbcd13a8209dcda2564cc9f4d20a47595b3d994888b383e996115aa282eac3e35944482edc2d07774fa3e2d796c6b74a7634b6c0db2f91458a35d41ffbee04848356ecffbe52e2dfca9195afd1f9aa8223e804d35e749f99c539b913c54a0c58683259b3137aa464b9c6e04bdeb85e999b6c5354e6e71c78cbbffeb456ec4c88199764a5761d18c084aceb0a263ea50eb86cba549d8efe4a35e830f7b6ee16b2bfabca3dfde8c3833bb98e385c37fdee25eac36afc966eb3c12668562e9b0c6b485e669fcbc49b24d5dc6d3f37aa7be16095d85415e15e14f2d956beaff9360b58bf915654b9b887ad9733f425a5c6a9db401ff3d8099bc0e95c6a67d2cf5667209ace08fb4698edfdc45caca8074185f54ec474eb35bacd2f0b7710dfe5fece71c98baa7ab6c0450ba6e47a838575a528f7be221c3c920df834269a9425a2edb76cb7dd77ed86d40b7e6d39c9c87a58ad8867954c85f367b9d5aa158e0bade9ddb5da6213c260f7bd8a0a6e8cf581fb74cb17283f3a1a8aaaad418c79a948199365a6a1055f38114f80ad7d4b3389ee157af377bc83e9b9c86d0a3d2ab3f8737fbe653ebb4e5982334efd11dd3bcb13b4d838a9a624566c7af5fa44a0934ab6cc333e6e5faf3fcf6a6fb97615cc3c782dfd1b3e5486bc69c555a3e837e6613ffa417df2e8d972523d8a91ae5f758e53c1168cb133593c1641e164c8a06cc008059c55449414cfb28667b9922fac42b8bffcce5fe3a5d03249c676db758adf896e84d5bef8ac510782002e4454c8a0390c332ceb7a5b4ef3eb2aead057d096058358ba779d07d207ef4990da77abfd97062ed994fe6a242da941d8865b387236cb8528babbf2e9e96c15898b07e140d3ba500cb7b1ac85e02ed03a058d839cf652d4577316d23c756aea7e5136f9eb20699ff04f5e48953fedee5baf27489e9f98778d3eb0b5764e6338bf5970c2f35d1f8e5bb6bdb1bab630138859b729923343c3d259f2a96ffe39ee9868b8a4585acf14b795ff3a609d93b1a5ccab08f877c5c7eea79cf81a1e3fb373fd5d995b039f6664ffab8e3a73dd6ab93513e92f0f43f2593618e3a809684bb6b3e674e778038f8fefea3a50fcaeb1088f7eecd36cb84329c988d975d71e97c1311643bb1ca2b43cc57c84cd5eb9e09ae36de39decbdca3bb6f977959578954ac17e3d3841d572673e66401f816edab5192042d43a4271e44d1546306137a4427130c86a2025bcc297eb36d3c44e7cd4b0b1c22005fa702ac12569bccccaf6ac9256a1693c8b677c5ca243b9c8556cb3a268165596fd0470400ccf5e3b56714792f7a87b9e03019751425695ad70e4ce0b2769571901c6c2003b58152fa9757922bd28a094771b0cb1dcc73741b14b402e8ab86dc0f647525c131e9aa1a9729075ebb3cdea4d31f6c3b23a5bcbf74a3c653d4c015ce5f65fd1042a137453462b8710704bea463204c463273bb71056378850ad28f37ede664e38514dd735bf9ab9b95d367c54d84ff085650ad33ebbc982a329c6fe3a516ef387bd0a0417c2655a5476f51a68cbdb4aebc53f00c11e78e5ba6692a516c076330c20d0a09f167bbfe1c956a619825a8305d1aa9ac5736e6d24145924b2409a8688b41f33a181a9e4858325140a797f2ba81d50f21af88650cd0ba8e662077708551a947c97c0a3355852a77576ca5b054d3b0b9fd973dada618bd02fff1cb59eb56b12c71b24bb1f02e27282d21281493ac7d07a20b124aac30b7bcb8c2ff24b2c927d3d62ade0357bbf7c1281fc94da2b21d10a5e5ee07a3fd9cf93e34615b871c8da7db5441020d0522c12711e1963be54739bd43949999083115988a09c6020ca88124b35c34ebfb0743b494b2666ccf5b5235968275fabcf9a054ef92833d8ec816d68c07fc53634a02ca192a411c87dd1f17ffea094b6868638716cf593b33483591e4049e4e7c65c8618b242b17d6021bf0a70c7c59bc81c34f5441b063b9a1d95481e6529602b95f874bf1c649d95a072e70a52e9252e1dd1bccdf64332345355f7cc48eb7dd1aa2f2c31ad1fd58b8b3a711d113c270a90aa2c5c79958f3907ae3ba071aa6144b88ba6c5575bdcf5331729a65d8acf3db97aca4191b72a2bc1433fb3483efff09698c291dd868275dc5a86d06d97305ba596515e434a8d956b2b73b3c00821ba055aa7541e4f35896113acfd9320fa91585f3212cfd5b023a77d7c5c0ceb746723c2c7d7417bfb740e4bfb2299b29f987698edfc1b8d7b33de2c80d0cbcb44f05b1ddbc667005b6e4335751ac281022cbcfac0a55226fa69cff845007b9a16d2b6bab3135b325b12c263a81fd423120a6fa639910159b693406411a289863736557a028bbaa23e0c984f04543e61916d9bceb4f64fd48823a4b13e4f83b43d443f62ecc72fd304f71772cce318c1da9a57a67502a1119313b93c4a66d03c2316c2cc5c2285b1e80c413b2f29c447dc975923d9100bec9db958acd7850ab0777d82814929121bb87a6f4f07880510331ee6171797bdf23850d5fc1802e432b2f51b3cbc37631c9729892b6a09baf6717e6ec39ec2b3489b33baf257c35b9cbeffdc1a1334380fc35df386116baa9bad3a0a8381c4fdfc4b1b98836f23ab923175eaf72c59d9c500e10944fb0fd701ba5142b3cc358bfaf2732d643d0b135c8f991b0c73789c465a7e1b3ea6804b5ab9ab2e42ca1e91158019306855a5767893bcd17e92a41470d721f6432448fbc370c64c3e330d83987f3a9479f000c75320a296393e253a68e0e1c05969784f5612adbaa2662459b09638202b74d8d5cbd2b01a915ab2ad06b08670546d8b76877b8b2eaa1abb3132e55d8bd5b08678bfa4243430bb4d059b58a4b0cf0fd26eb86d5b13bb8b72a9fb81245ab712f0d10f0e2e09b222143c420e3f2c3acea27b248c0a21ea0bb6d6f56f12300e8584d8e9a34e0e6f52227281151ae4c305fb8f +ciphertext = f597c7ed20fd0069d448c8616f8ca0a60aa23923c79f3bd31a13638775b7b3507bf4e3145221ce3417a8f22282c56862f8ea58cba7a512dc6a3fdc2da6716961ff8011c58c633ce653d39d0399d2e73d4668464a46417545674138259864e639c1f06d6a7a315805340fc277e17d774d3a74938390f399d53514947eded14cbc65f7e33b12662e956478000bf8f2cef30db0b975a93a7383845be2de01c4e87174db7af718e2cabf1b71cb22f166d9a75211bf30aec147c47a1b9d65d9d82c86e2966eb0c3d3b393360e13d085cabcc195c702e1cc4c696cf1860a9fb9b89116a7def1c2215ba5040cc44da0a908209f3554986ec2b60f967d09cbb6291f8fa38319cec24ad9ba588b0c3c6c46bce7d5ece8496313a3ba853ee2060608fb0ef119ea35ef976c77a006352a86796db6e531dbe6598df8d2074b27a170133cdf6c0110995a39796de53d4d7da5068a0090bd08cec831ce7d19b25b49f133b21670b1a43b52ba1c4f61cfb6c9b1ff1d42425501a054697a1fce811a4801aeaff05643ddde4610df7917cb89b82c22fa3940ee67219c6a0d8ea964a4cacb30e3a7d3e9c3bd83b1f0f815a6c0ec6dd8f21c1a49fc56e9d30245baca996c8480d7855e3c87094f1e1100bfb2e45f36698f69c6f2eb13d57e8e40e30f60abeafd09b435717fc89966077bb4f636b6c97dfc6ca7b3d042dcf04aa866afa00a4eb45d92d45bce0dd436c2e4726480cb543d0e95424c3077ac5328d0114a5749ffcfdb48753da9e8b2a02eaa4427ef17fc98cf6298ce7e793910d8b28649a8362a9715eace1cb82df37a96ef30adca9e945512725c4a1202408e6adedfdade710fb80a81c3ea45890beb0e1224763bb018be9f945f4ab02ef6ef3a143edbe9dde24802b01666946785125fd9dfc47066d4635701aefb93360443c5d38d72e5c0f1ff6d3b6d9c0461a91a91b2ef7af8f6533169f6f215b69a71e038cf1add2c04b8bf8e805b1a2a3c60b74bc236ff4f3adbe3cd3d6d1a245cfd080141f54dc036b6916cb5a8b5121b083d7d89d0df82cb924fa847baea59d016847c03ec506bb33f77baa0ade649403545f0f398a9165ca6e5a07eba51caa1a86514e47bfa152d6259570e04fd5a3976bd7a816266c11ae8b5db9330999e9bb1584c4cf669850fcdb064c9d58d959e4fdf4d732b5c7aa7ee5322ba653ffd4fc376f712b8f35e3832c37986fccf33330b1974655d158f3563f886acbdb73f76556c077812c3113246c03ff3a61e8ad973d869aa5f0537d987c0eb001a634b1a01c63cff5c141bb058ce3923d7e0bdc53c44a88fadc9aa48acb254f95d107954b50861fff2b15e9223ed5d575741ab66e6453185dd0c70cf1ec5a3baa6d677cb79a48f54db2d2e105e70809c78b4ee926b903dfd735f9e1ae9aac04c5ce73f34d4b3e3ee562cff04f7cfc383192adab68ae3cda8ec2153887891284ed5399a24d85287ef0a2669abca1eecba26d997219d98a2b81d9f8f91e508ff0d9525aa8d077591823b7cc28b3f4942f8ae +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = c6389f081ca0932ab66f658047def78b38bc42b5c4e1a7c7a52bd9d9ae59773b67abeec2aa8666000c6e6b0e4b5c0369e0fe47688ac6fd48c73d783e3025c92d88fa479acbde8a7548384b763a868c56e78345a773a9852016b9fe765db0bbaba585ee8056b7564c53fef8d40d4cd1261e5d323c62a4fda2b518330b6cc4abca84f62c792d07c1e2adbbbd7c5b9a698cb683981f98f8ee6991270d311b0f81dbf9c6c9e69daa26a447de36e9bd310f236d7a5a49b2bc616fd346c356fab09544998c8d5ef641e7b48c35ba7a69ff541407d4fc0fb501c69c58a9b798c8c76933f72ed9bf443fd8bac3df2db45e1cdc56f6fce1792a33ec1a62b3fc99254e527e63328a56d03db49b7ecd7f7307d6cb1ff0de94bea4967213e6e2b6ad3b2c16a9bd4c66e0ac893273e69a87aeae67843944628e6374b65e8bf419e9840b8e6c74e72be3a35ee5a29777c0354633812d3072ea50e7daa4f906d01d6df5617fe137c9e649c97417dcfd3e1677017ff6d57fe073dbeaa213525199bbbfa78f1899a53dbfb8d018e9869867a42bff48d6e5f0efc8da15a4e6965bef0c4207a499a2156ebfc6e1488e82d85a71c9f8776d38d51d1a6e4b1d4e556e5993ed595ca9b0cb3adab0159575863f3145b340149894a5d2b2ea4392c777292e5f880dc93f5846a1b8e26eb6b72248bd1047bbe62aa58747f68428509e53575f945735e75b42ebfba30fec24c990a857f41d2c3534cedd50847c85d98143fbb2ec5e38acdbd55a8b8bcec8afd7b5697316e65af9821918f1a153d1ef0a90c3e8f9ee9d354317f5a99c67745ca4167ddd10d7c29c2f8998d7402e0cf00d0476c4d74c34754afaaeaa1213c9a0198065378de3edf3eb73b3a4bc5801d98213ab7040cb63318b8395dbad6c7c60486dca679b301bbd8ef1a948a5a83debb396524edb368c736a56977f78af0916364f278a4e3973385fe3f8af8ba80f96d29e6fc65cad3b33c4e1597f818cbc489ba97078d999c373dccf46741cd7d97c5e1ea5aa1e6f7757f4467e84ab9c5bafd9ba48502fe2706788cf5ac1829c7ff0a66f26d3daaf3f7bb8ee67bde95fb68f9341be87162a5fde3a7cc7ada05fdb6f27adfbdb0c6c4f75692e67ab1c9beb46b4de53fc901dd892a3f6e2b0decb2ce5fbc6bdc31a1e37e70fb0a597fd3aa6eef7168990b634f438b744375d75995943caaa47e3cc5dc634432b6cf2ebf9b637a5e22559a59971be56d050efa40f7c33071d377a6bdeacf79d85f3c86223a4c90c31c249531474860153efa1f49ac0ff57551daf33f7367c5540084b75d6736ecbbde0290839ee2456ee16bbcb57c602ff6aa104916254a68acf4caea8f96e4bcef887ded7485511f55a46c75592c88d6f86d05356c397fbee61caa04bf55a05c8409e644055759a7f6dc1c93ed221fb97780b92c2c8aafb6b94c259a9cf6f91e18a801b8f456b93c221b6f512aae7213f8f11574a5c35c3650a7b586e9c61f47ed73e932a0ee9f4d3e359af6a7f9e91cac6e012b7eb27b47fa13cb0b2c959d913a2f4bbb3d106ab695a4c13e4e257adb443fd428de78f916d9a11b8cbb485d8381f539e1ab0359d3c30f6b73bc8f29ee5df902be42a597e7fe48b38e84df3c6a2dc2389897c3745183e08c1681b5b9f57c16aa2c12778528510868964122c1747662cf97d8b0353bf23693a70b3b2a7c8cd5c5508a227261cb7c3022058e318d3dc39e320770724351ad78010eb423ffbae6714999226895ac23735a9119622bbc0811516d617353c7f769628925bbd49629fe0aa333d1909a16c5c27604b7db0b4e602ab27987df23c3718630ba4c2846444b83fe914d840cc8ed79a85b645a32809ca069ffbb8b3201131cb129db9282b73174f8d4a14a37393552b109d2271edda8d968ac3ff67aa3374a2355c2ec895441873325db71c91020e91f19347d965f1410f606862f69643216b869673b5a70583fd1218639b5036cc11d051a13d219f3969c817326d2b60ba5c13cd8cbc9313aab478833d73716a2a48438fc529084c241bcb4fd67179d1f5494b4bac2b05a5767b9647ec8829a500d1365bca7b8ce7b75bfea0c68f8a28edb7bc4a3817c0d32c4e10169832b9abe271cb0b473aac2c3dd39ce895551a297a61f47162d97c41f051d48b62e5a8882da62fcee16eacfb89b98a12ab626e69d77ceb3b6b02878ce346ae5cf754c3f6097e0b5eb7ac80b9b8ccd9418f63e545d01c7d17a71e45ea3a6d927484d4976ca936fe392cf2052535c201de9464008c932617cad94085c5816aa41973a8d21610430ac4b3080dd480169258e65b53e340759bfb70d68b15b868c4098847901a6b255938ecd15d5ea94232b2971e3bcd56205fc6f0425f50ab880821f56c7b25f51f2412cd7fa023852cad04f2704d4103d4362e965473add3563d9b36e5097c982506865454ba30af132bc17c807309723847257c697c525e27cc570a88a1688134f4193db67eff018f54751e578483a77a119210106fd03066c403b3303ce54b39493323c4334d4a7a20aae04d8ef529a15cb7d0900fbc4236c717310246c9cba14d6874beac61b566593b5ec5887272b914ea655d254d595824288a666f10c7da583f933052f43b0b0fa59248b0584f193ad548a12a845fdf14a73a0a37adfb4d1845afe6b56ea50b00a5503cb542c254a26f456aa3286b0126350272638ef0b4a3abc56fc8d0aea2f7396d97b64c56817d58c32103996db88345d377fb7b2644fc99a24258c50730045b897ac908f7fccb81bc2b51c286899c8c499c1757c6b0a6ac0a8482159d564cdb746037a1224ca72177f79ed19a398040426664abfbbb7b7ba99906e7982b665a551881e0f02a97409a3e2acd37fa96a4f9293f786a11b21e1f0bb22cf400da06081bf68111a9bb64469487d4cbc10578106b381b8b054ee29339e1830dd613e19a9baf9a81c2b9ad1d121a47d40234bc9d4b79c2f5f165bab5a2db68c59c0737e0e4786990a92476aea44105f3c77feefc342b458e4310b9b110a8b2c01593b512f069944828a3f6a219354bbdbb1c344f24aa0784160ca704bfd89c4933b6123c4434cb9a6ce16d3f042f1fc571db728119f6a33e4a9f6981193d60be6ab916818b8e1ff9a1d1a59de8824f808043a1949a5520b675d8834ef65c1d47afde2710c6b63998d43ab47a681f0a856d166c24494081e076d5fc05b541145d3155e232a5af0ab96ecc0b09c2c41e285d350500a4f8bb32e99b4b05d558ea7918a7881bcf516457ad2c3ab72ef2e04e3a4acb85a987c285441cbd71c18717e9de7359b920a9a3bb7f32e619806f4e4718c585085be6241646460817a0fce5836bdfe124a7448e7adf7b8ecc2652ac6d280e986682df71 +ciphertext = 349dfba896178907a635a6d93910cb4ce0ae4089e9de6c1092bce826d207f0c09a6584f829136258e4fc56f90c21ec74f1984a23afd3515e45b45bd34120e761682de9d9b71670eef80dbc1d5b0131f740c708594e8c66d8096a571be068b6333075773f92a082d2ac79acf46b19de4d595b3ba7ba407cea9d4901617de4f13679af9a45e297aeef0946c2844681134a6d869ac2da7c90b089f66a805518146ec3bee2cd95744d0d2768a1daf931928e9589ee8fccbe3a44d010b794149f0397ac81a7bef9ff5243d98b9492c220e872ff5fea295102beb6f9381815aff179c0b2c26d2416aa41cee61ead73a2e91578d584c8c6bbb5c154a12b94cac64afece0f7081c7c2e071dd1e63e56b44296578a4402cf3775eb713146f13faa0d933e85030d0bf6a26f906f12f826c1b728811ad3ad141b4303763d2e9a651cd6f968af3ab97207b6d17f95c0b40fa6652637d8b84721f3a9802645d5f6f828000e58a4e5bcddf3d19053bd1f8f8b6b125cafaabc09d08abfc852858c7b860542e3b08f4e6661e0799d34ef209bb62df89d5a84e9bfdeb853410e54dedbfe0bc9425226d9aa4b00c51eefd9c2fcff48082e6b65720b45e7175f3bd9f1f4948495dfd9ac595d9b485c779f27af8d4aa8b781cb8b332105e0f38ad554696ce80c4ef5ff762f506214cc8e1e3fb1d7a230b20aef8e55543450eff4289d401861fc37c30d64c4093a2d512394c07340d814aa25476ef992919e6fe58577fb6bf70c6778aa976742bbcfc4677d44b79fedbad1424641915e8599b8bef53ce2c8ed682a1e10716e1d07d546801a7eaed846ae94908475ea20eafda70be83bb7e7211698a2ce33370b83da952140ce4029ef0491d8d039fbf1996cdbf1d04e576c0778b30e83572d05081238743f5b4ebde402629aa9ec70399e364aeae31894e56c397e5430c7250e80dc4d0b749a276ed02ba76e190bb17a2740f098785b8b0e2de69d65cad3e770d853316f7c5cfa508a7ec990c81fb912d1e5eea2f0857893d5e10a1b7a2031169de2ecf3935623c769652de3c48ccc671dab69bf992226d95fa549adf29533f6c58f3e79bf56cb5b0399c2ed2a5550e54b4f9cbaa157719c47f3db6b7ee8f32c04d830cfc4bba8573bd3c43c5f9069704448649bc3e638e46e5ceeac812d356fb616835acbf0711c31455124000d451926c1d55ee0b44295d2fbec5913828b5f4ac5ae3589045192a0e006b3466d8ce6347019f0879e4bb7baff07e53a95044525a843d7f6d91e06f6ec2064b975c1af4017eff586b7681c8c5f7125b6238703bb39333ef122e281229d9c67d495eb3d2c6ac5f176caaf3abc6fafaffd4443c353972b5276f4cce612ab4f2d11fbd30b71974655afecbe8814b9fd088655f1da3a3f7408b36c9292a6d086fab471cc98a21888298fe7eda2c5a1a732c7cbdfa70286ca361914ff83657b7537b84afcb8ad0c653c7bbe623745e95a7067d7cc698e80bd94bf02a0d52b1ff03f22e5e4e62af3fcf152d5c35a20b61cbff2a +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = f85e96a68df4bf8e7edc544dbd65ff6c4fba122cfb8ea95e560e7857bedc5905a8bb2590e63b449364802c6b4390ce9eefc875017acf652a8f0d6ab0f7f5aca2fe833ed3551d37419e9d6d2b65e23fce4d601d9abcd9382ea9d628bb30d98fcca8665957346c3a08553c97dd32f77e66348ca9dc321a6db7d51bd9de74e7851e439d1fe89affb8c583762043a4508c3160544ed2264735d6d0a6ab43c95e553223d583298a1155dae3b7c99ff559a1d33115ecfd2489934518bd52fba1cbaad19e9e8464b59cc909415a9f53957364dcca9f96ad8035f8be5bd36db7be9f1f29ea6e4b7fcd493b7b4ec90bc76fe98faa0f3b39b6f454785c5dd2eed6c80960bbe5846e9dbcde837cd277a039ecf2427b86a6658f97b6d101665f3f79e25445647f3bb2d41f5c80d89aaf6d96a02cf49033f19349d9a9af925fbaee7407b3c90c8a53d958c1c83465e557ac7fde545d9ee8c960b3c547ffad8d4f0af2585fe13ed9661b57ae1c3dba5768645c73fde76b96161a9b6c34b8da48b75d176c2c849aad55c6680bd0873f73c345c4c7379cf3f873fa5953f53b9a026a4dc22dc96e279085566c7d19deba276a0928693e639b5564a59c08aeb0df5915f5478dd86e939ae1529bb9a3bdb83487c696e79f20dd34f01ddfa60f328184be42b8959dacd683f3bc20f7e9034f3ab14a4745ee62f7afb474dbc4a70ff0c053fca85ffcfb253d0fa5fbeace3125458df8753f5d65ecaa38bcca26f5b543d51d6ff6c8768335854e7487d6442dcb765ab9ec4eea1859b4b6bdd6d918bd8508a9722d5e6a0f897cf95e0b75fe0913d794b46fcf7a78466dc0a18b8e6334a57fce77ba56a8bb9a857013c6b9998975379bb04b540015a14a76c658f856becca363cb37997bb85b185aa11d4063696f112dbd1b4434199897998f6e142af4a353349449efa233cf848451cbe6d9d0145090ee37534c42d70fffd2cb82363c847865aa243ca994be499267fcbf5535845cc708cbd9a1e8a7835cf00e8d36768755afab53aba85813eb859ee83efea7563ee4bc158599f0dbd4033393c829aedbeaf89ed852e1fbefeda9484787d51f967e058d41ba3c313a24e4d463cf3ec36801aaa1aa64ddebcef2ab63decaca30102ae089087311a7fb339bd45a163719adf0c313de6307d8feea9af844c7e2cfdb4a5348c1a432f44ebb9f598b8c1cff6f55c4d3cfc22b187430748f8294fdabb9f283dbc4be2d636b6754b20a71280df0cfe4d13b1e55e4746dbf3ca1f34991fe7c39ed99bdf586dd39db8e6d4f8f2df8e57cfde39415aea96bcf6fab63402f57b68f312d3c7acaf6a5f8e55ad69967226dca01246545059e596dfe28199cd0f5505adcb91a0da284fdb059f33d1a8b35211da3c815717fb3a9482c946efdc74b5f6353d5c9eddf590d5d50996393a12f86841580ab599bfbc8838a53301cceed5fd492b04dba272f4505969d88f6b193ea42b034895428de181f4ec2c64b962a92aa9c3fe2e7ff954de531c4aaf857f4380fbc8f9c37d64b54f20ac003b844c534e7e1436d2e75ac09d3e3c83b8575e791a7c95d051fcc626fea682699766e485dfcf6ad7baa8e065e9a279add83d1c5c74c5b95c1b79e5ebe390596bab505e51b3fc147af616e0f94506635a758964b3e7cc067b80827db21dc87450fe1415ee41fca8a2b56b355fff13616622fd1a19a7cd98f5084610d1ac9f1b8a6e78cad9281a0afa5a7c2a9a87916710ec9c5b3544b76b4808d01399f219b745962536026c79841f11961b63c10c99074edbcb4ed786f7e8c3826609533e5bb4cb80f3e515299eb757c217da2806d26664f154c0cc2b4a644b224933502adf5a66f5b54cd45a71589219aac65be0623cf5b4c0df17e72cab64b91bfbd903d75e164e2a0c9e2c997f36a0b432177de617f5e6746bd82984bb9375b4a0a12e96d06045a3a984667d03d8c08cd980b59cb2b0983b13f9c53790fd43653e78255882f9b0c980ef6b062789332a6b67b2b78e9e370b78181531846b9980a8af905fef403f47b891a6b440ee71cc5d6bf3ba5c7b087a31123ab61ec9f2d0c89e1eaa7dac36613a15f147938d32673402164b001975d9c4a8ba5ce84d20b47f26eba5909183c6fe1343d062389b9b99cedd21e30d5841fb68f3450a47f4c4be5e8c413c37ea4d5ad629141d7430938158cd04492bba8aedf7477ed13a0b97c8217a300dfcb22de05449547626d21409f491098162d7ab477e3ebaf0e15124f449f08e47d8ec6847a0ac839bc5d237b3d509a8b5c44c8fb6705a467a3d4d9102ff2b6ed976ca9d856e9f257d5d586c7d8a4c2617dca73aaa65719a21538d9e6997c5637df8c5a2ab98a169a5ba8f708bba55f2c0a9463c9b4ef0c9822fa64ecc72c8bda4030157bde5073fae6a6e6f036121125dfc5a9dca1504a1225e6da9db4d0665f6413386153ae25be78b3410369bbdbd84a86c6c7bc924dd70005bec0c54e07b4adfa2daeb8265dd98bcb8968a2f683a3b07633aaa0290550665c01fdeb22398aba31140fa7494fd6a0087194673f51ac7d759d649a2fa4d7520fc67138f445287b681f5c3d1678b497129bc6624163e3515c8381e85c173d6a4cc0038dfc2064a213c557931e2e7138fa1a6bc3eaba08965bd803bd5759332cb1bbc4c41337bccca153905990970c261cf63a53204b6f8cb228d4234f08837425a82f1da9be43775df88a20a0381f70044c76b3524b437cf365cb131baa14ea6f24502336762c8e126afd009e1997b8b3bc20c246070df7b33bc9a7bdfa8ccd576925968915f186ca4a5a4934528dc75282e246b0824ef7118d39dc1f07449a218836d47cbb7365b677ec7d6222abaf33068b5730d9e674cc008125226cbc5382a76a9823db1b42976c5c90c23bc02eb7b874dff93699e6035a838b22a7126aa42d62682505f9bbc77143dca061f5c38e99652fc2e28e30ca8d62127af02186bd9c95602992e20baa636ab050ab870b11c52da19b3a68b7a07a8cfbe7bb016a2537e50464265ff6f065d7a8c30f659998a35d79032f887b4629d07bb2dc895f09ac0387cca9c5cd1aebc08a687798721f24ca43c2c5ad42d1b6641838efc2a72ef210bad10218846f25da336a4c00c4a29eac8a608f2261b8c76b18f10b7aba755771376dc7b876152f9fba5370262919511d4ad50d76aa5cd6566c29225dabb3b668608d9de5bac08320cfc3570a0ac8deb4bbf3d941f9325aaf546fc368af005caab7ac6a7dd70d90506ddbb5f53a83079aba0927bd52a68e278d3f01ac19eba6bd065fb6156acaac591f1bf3ce71c4a046be8c6c55eb9a84d29569bd2b144c73e279238a80dcfd7c992d84b2dffa67493e669243d4fa38c46b090bdf86bc548411 +ciphertext = d0bdfda854711dd009645b9d16ca8d8f4e44c064c54bba2037633599d73cd05e6473dabd029e5518b3b9a39b6b01f6e36734b5dcd4f8aadb4e4ed8e343b8abc4732753d7942f22cf1bf6e9b7fe074195d1c8f414f856c8175541cf0745b755fd58be49ed7f6e8c48ee393f508eb373e79a8a06fc0d5696bbf3f8f8270e3e2b890b90946fbbfe694c34d4df5e70a92a2e6acec73fec7dd90cdc7ce99dfc563e9bd766779f1460f4776d7fc223e4110ebd68bee47a383bb5adc2258dceb67fabe8933641d2cd6f973c157dff849f6e190837fc795348d9e78b3aee438acf7dbb960f6cd9de2630b730100b913e856256c3c5d71da1c83bc29a584bceecee94a3a1e16cf22b7a610066603c14d44268dad9bec3cf53f72a0774ab0782c0cfcc6eceb9413769d4e6f531656e5592412152ad35d7dd7253b3e9578d11bcfd7f0cda76f89c5a3db06236c73f580d7ec441f67a67aac3ee4a80f9f56b56abf7debc9ce34dbc0bd01d5cf3bfab83a06754ad655c1610137071067feb622ff6afd666b74e52df3d95cadf8b05c5e2a20e3821d6e2620f778cf103af079dee56604169f3fcb4170e5ff130bd6365e3a6de215925f4388204da9579b40e98d5831c43fa0d9b60fe2c9f95cde75b2b324f3353206a3d978b805e524211f9e257ef0ef5d391e4258141b489cd52c8e1aa96e5ceef558308952c3ac6b9a01b5cd6f712545f686f9542632e748bf6b492af2c94e8686687189e2b330a71de41e1a9ee6e6d74b95989dc6412302817081b68d1739c82a2f9a532a58c7ae6fd5934d04aa824c5d1ec5201b755b3761a3756bde866b085778597087f99adccc1ca9fc04fce92a423631d4756cfbc70b7b1b96ce5ac56bb61cf14d84fec2fbfd0f62ef4691603a55b114d2216a24b4f6ab07fdf35d7038610882a7f34cd9958d94c9f0b99ce1e5601c72ed128db8779ab1c3fcf8bd8be63c01dcd14748a01e1d1232210006f4ae5183904137d04c9fdbc76e9cddba4316c7cea1eff42e9d5e17dea82804ee9cc40207e28cab35b342bcaa802555f35cb260cb481daaa76739911a4260f26e9567033d69337bda9b11f6a1f88cb65d17ae0a5cead6cace4b93a1f8184c6303cbe5695d37ebd3a7e27f813ec8afb0d18a72968048d27f38cf9de4cbde27b674a672a400aee9cb90c5c170153f56dc3ca8f01035ad173e6931332180fcb2a74e4ed21d6d27cfe9329dc4e275416be050300a90c12cceefca2bee8bf52c71803cd8cf39e29a51b60f188bcf905eb3c35039193d2d0852a62c8543c82f3b2b3fe3e4d51e752eab0130fa0b89f1141dc2f1e73536b8a963022c2a7914eb8f80f9af9ceaebd96137d17c3172bc2af2f819e0899d9e55fa39d6a6c7139a8a2866dcf41f46a78beec546de4b4b47f408128b9317b04949e6b083976cf9e0fb6031a8b88d82f0f6dc64cf5334483a339f7b1f157031a13c751fc62805d6d01295352df2a48c1520fd40e2924e8e7d5e4728dd21cd7069f85913ed776631125846e2e13301d8ff7f2 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = f8fb5baadf4c878e558dde3594fdcebb335b6f65bd5dda6de7de9e0afe516515ef981ac6473bf63cec43883a7914a7d70a3d66fd1f9ae148b04f96dc2e0eeaf8b5e056eaa5dfd89bfc564226e56dc49eade1dcfa1df58edd4572c6ae47bcffe283b97f1c2e3bc276a471b63a7efecdc86c7a69a34ed17a425b37aef969c1cd079529caf9a3efc3412c5616ef352303e34d0dc77885fbb9b3677c9d885ddfeb0e257bb7f335fd53928b737d19da3b3218f19e6c898e96b4609de136ad9a1425a0986c597e2b4043cea4e6d7a4d0f3de729c73f2bbbe85b579c4ce3a34344a7403b95e4f5936486c3c7df805cd8ef6f5ab22d4d0ba5f3ea3345abfe666023bce6a1b63a97fc33e3aaf0ccac2c40a4d5a58e07d0c7ab1add1ea67ca6f5cefa7137d259c860d13fc396bcbcc4e77f82439852463b74d855cf6d4f91c8f2e5ad89acfe02d6d59dc077d5ef6d54355c547dfe48077b8defbc313d7ef1b5fddadfef6b17cf1e50d64e36fff9f2f4cc8e3526b1a99a2f4a81e0cfed46d9043246d461c7c1b0df6b56a9c7f7fadea57584dfd44c3fdbb6045fc335ddd173ec03467fee46b71edccd33413eaed7bc26af543028c39191d9da52a6ac04fe7a32e9c0607ba9edab5b4daad5ec7948393c4a77dc340688541aa713b596843e5ccba6e6b54f9f610539bfd49e59fab36d59f8ee9cc8b139eac0144f57e34ffaeb595100ac113ac416f05e8877df1b65db6d063512dc374781e7d025964c96ce3536cff09a96740037fe1846efec4446fcd3f93fa6b6fd8b53a0dea6444a61823b08cb74b762d618c08324f0667f24fbeb3a34c2d5f86b4de59fce3b046079f07e558ba28a8893a8c94f9711d2f7fac79d0114c8bb6aa536abd59dbbca00858fa1843b62a2bd6c68c6b304dbac70dfc6cbce633055a178a396ef35f5afea76543953d4bd7e2b8be217c5d5b1a82facd80f51e9d222759590f6280bb8c976f6c1d0baea6658a29546e0a4e8aaf85a121f8647cb4789484bee0189b9bced852c397a3ef5b9b15b71ffe7440dc3554db740289ba062ee97a6e4aedcca796a9d21f4bc3a4c68b3aedf56d88cdd8af4e3ad3edac3538882d671b1fa765e7d5f94f9d099ec3e0e8d62ad45a0b98fbc64de6e0cdd7d1c550998963d8feffa51c7361d86156ea3a8ae7d18d6f7a9fae8f9d3787ab3b88a27b3f9443aa87ab75eb1364a4c66c50f8e7099fa090de5cf39e374addc61305c4de45a1ba255000a7f6a0873c700497060d9dc93f7be47edf61f9bc61af6d14ecdc3e67cdae4b5ac0d5a06398d4d6c6b4ceb351f1ce9f0974324c0af9fac7d4b4677aa4ffbf65686c232ddb74cb9ab507f2555fcbe8d6909754304573a9314b3c846fcfc34c6302b3cbd5dc482e76576fc5900b367017cd3a860a887459f8cae5541333eca8b5d08e3edcd2f3e7d1bb6bc96f4ecb93d02e76d92d8aa780adc6766532178a8cfb63fc710ee24f5e56e91486c3c7658e3af2cf0a77873c944a5a4bd70ba1696e46e18b328e3d813c9850c40d3698c5afa218fb3425c7863dd59669ffbfd7b2ad5568fadf78fa24c52335ebfc966a69ca882f7d7426563d2e0992963d5fe3efa96f968a92e9423dc4a1f676ff68299899315a88d083bf5196f65cca4541bd4ce3526e514dccaa8ed176ba58014bd0ac486056240ce06c6c182040606dd98978d6cba367eb0ec18401ed348743780ddbd277f2ba22e1b34208f215f8f91a048ca497ec37a7663587ac85f221810e64acf87478a101062535287250907d0854b93a9d4bb39cd5788be361c00faa87bbe078b26353a51b7bdba58d17e5496efb263df826a59296a13535abd799cb931fa5886e35476dfff97e82870653d5c4ba09c2658a9a22838ba0c6aaa4ab7b19699b8b27243c42634045506762ab1817534f419591b04622c650b828b3d4a66d9b163d09847bd172ba8ff452759184c07b11183665c0185e0a089c957135dce64bda52338b6492a27a1238aa567f017dffa796de84532fd5bec8fa800ff4c5e34791cc5aa02901b73885557cba188f72ab5a35b489e98ab377691033934029118a34af7d176a436139aab3ac127a8f510c8719936e8676caac2211c8292a42f274c7fa85c542b21422c5790079f34a26f0678c005818bf4981a2b4c7db780c0bd43ad55c0acdf1ae0e0761d7527813076f3174a1d49c74659a453e09c2b4468de6f185d5f3c04f2b7e59e05317586e743285e6817283ca11faab44271a4667912df262c0c03843730acc24e80e2ee0251cca86a83853e6251e3036714576b1c171a112e7a15ca215f63039aaa7632ec77880b89ef8a45cb0b3746202ace1d7221fc98afb73a28a6ac2ae443f16e6072d6b3da1a3be5fac533a9175a5f176fe131f021795f8880d320c6096ab63f53525d01b32a2ca90e1a9138e4ca72502785976bee4e566dc0cc1f3827733b0a7d00cb58b6b89c5e26d2da00429a2450e269da77c46b5c954cee6bdc0339ba357a9b9951802a255b74a4f4ca1297d124056147a0f8123eb903071546d2c22723367308601a22f199f9588734fe1241450a45fd7395df965f46574a030581cc714a50c08da03a51b367b524a2ee4e56752db9b66d9c6b07702ec23bcef798d68300859383c5baca9d8f08b71409ae5552209b5237e697ba55328a1693af7fa0ba27020de2c35f643514db292c061c8e2085d06c101644c94d17c07560811c093afe61c6b4ffb970382ce9fd25f76c6728108842b3841dbbac62504185edc32dfb817c45878189a7ac02859eca77ab445797e030e910243b121a859a05d8caa3c32fa54d033714d20a771c7cca73999f6d91d4db4683a9543d3c978f1d56816d75590642cd4aa7d9e9c709c6cb5aea8832d7c84c576afbc837b6615b8290078e2c0ac9a8ccfa8338b36649b9f7c41d0064dca53b8fa1793cbdc8f7b75306f19c4127a214e5532884274646b91f49a1e36a3b42cfb90b27425d2645c5acc2482289d0b4b84a6359007f23b9f528718e6c499590d6bb2a5bb674e89561ab1a48e3988927ac41d05ba143799214701b2f6d708d365be84baa60df8bf7d969a425c93452a0277f218790c80c60b4b59fc6131e7865d1135ac84a6655507c1d98f6665c932093d61fa578e7acbfdf49f2e15c138bab4152c005ecc44fec299094a285ff50b09388b6ac3972911cfb8ecc9f0ea58761741ed23ce16fc02af5a341f65043f0802c0353d987c718fb72d3d922cdc861bb6a8ae003197c8f9c878a367c021db7e9273fe2e03a2716683dab6caed5c770f6e7984ced77d358342759291c2bd225b0bd82d659d28a24bbc5eda8f47975b780cd1291f135cf64b6403e103afae34da038613e2853bbfc36baafa3c6a95347193f37c +ciphertext = 65caf8276607786d9560a0d97f5165b79d5e4c80e07999acacee06bb02246f54a362cde4a2e7ce7f7119e974d8c6fff713df67997041a7cfe52576028d2c90a456390f6004f6e7a5ebde39dbf7aac49faa5060dad9259525da2b466d7da1c3964e94ca16413d7a1ee28e7398b31a0595bb3f06e8eaf26c350f27d348e957bb7ab37da03c120e61be9c4a7dda41775eadc1911a31bf30bda208db0e51dedfe7ef0421f35c2be9c891da2c636eedf8f46395c1ea6d87ca96f17387e444e22a586b4e9818a6cfe7a972fa3a6acc7583be04facf1b9c76cfec8d8d9d4456227c3990ba386bc3b7f8fbdc1a492f3c1ce46424248d6da00e9ac3f868312bee1754539a44816d85d9d2b9764d992728837c0765b9d03c7e8a070de91c655bd3b2cd1268f2a310ae5ec444281e87176678c6f0194d2640459a2b9a7867bd519ae9e092b28910dc45a32190302d34dd90bd068ea9c5ae9443a990b33818beaca0b6c64fe67b847819b943046bba7af092f05170f6a87310eaae2a813ca69fbe6b20fb7d09835b2a134d29b1018d6d05d03119297fb0c53526514aa14921b6cad0b89117cb9b80ff669f635652f67b8e9b26900278ab879f2dfe736284d501b38a48286e29e43eb90f3c6162e3db81ac69722145cb93e57ab98cf7c981ffbce25923ae7c2444bba4bfc007d1f7bfb56beee3425d6420a4c6952a70f85941565c83d9175b98fffa2b44a3edfd3d9665af0ea523daf7d88c739ed491680c1fcc0467c7fb2a4626d26f970f034062acec4ae7a8ad10c3ce34d6d2658a2d3be94e97929faa3e9e76f20e8e1ac5ba996e6bd2be769213164de7fa49d04e2dd010bd56487cf5f00210ffee81030434658e0cbef81757fb3845e3ee5bb126fd6432d19861c9a59a1382a542f5607e7686262f577ee7a5fa51257c286c173e6694533dbe4710e3a9ed6516b61f572bf9a343c0790af2160c97d21510df91ebadd881a8d3b26d5449ace1aa07ad01a192504d95f4b9c352bd000313273a62d099b73d07bffa85dd4bc5ef80b715186e0de4445d30a3eb38059ccf1c3a6f1dde918bb6034bd58975bd891b96aef7f570e9b262cb3b0e9cc721c4e151c1cf055a880ae794acb5bec31b855df972c7a642c28a15339064effa3cc97a9b5136f01f1e8d10b497d4bce88ed4776c23dbd1abc690a233377b39a4559c6e19b2b008484ad5e0ed9b0d449b908e20f9b042105064fa5fc2549e680f038aa3264df28f763db9db51e5e31bf8cc057ce596e23f8dba50c35f44c50e15d08f80422530cf2dafa1e0b9d250ee61b1672f2d01f82c81e396dd1b5d8a68af3635974f0f27242be9e7573d0813e3e77e1811635c0a9341d8647894659cd00ba490a1076cf2ef0c5c605c95cf8ff51ac83a856c45a903179ca136e38425fe005bc5c74aaacfe7f10cdafc5d9690d5018703821b168cd112a45cb92197a50e2dd989744a1da2e70c05ef4c770ab75678ba64a97521a112f579f9e57aa6d966777e128b979b85248793655296fcddd9c8e0c7 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 5b47b61def35736f3c431a498e378c6c7ea5cdccb58f2f53112e7f6f3beb724db97349b965d9c9543fa66d7a987aff4c479851a0ea485254755db347bff9a06e0d502ae3a911cd6771aacc0b5eadd08af91496ac11ef899b6562dcda7b6b9b7eb516335e3ffc43498859d87a44cb8ad589a06f6d9fc5798ca06744051533d5d6e54608c790a8abd776cbd2984b58eecf4e0638c789e5dd99f49d4cd775b45cc159b44be3ff49b5ea1e398763e35dbf5c6ccc2dd929c9b91047a1ab98a141fddf7705d8641dc33179a8c80449591c4157cf44eb8c8b3009328139c18f8c59e1a6ea2c9ec840d552c2e4b38a7f65b17cf8de6abb73efe8f07e3a1d179cea38561663c9c02eb68166aaa45748316877a9a5bed605f40e4de5193aa5aaeeb34dc6576b57692b543fff42eb14879a257f8de3d6a298cd6ac6dbf8ec3482db7d8abbbf8fa825f72624af6e26a879f65c653f81257dc52efdeeddffd681db43a977d69dc9bb34f9c541bfeb8d83f2a3675fee059f5f655cfc58dba41f55e899c48a8cf55893d3d77d554357d2ecdaf4d31a9d69796df408328a1fada084ab122c6ac53c3c34ace0537dc9aeac739246e4ebaef9ce4c9fd8d78bd43d45d8557ad4dda698b34a7c073b9378367076ff8558375647747905402a6aabd1698d1d3b430ce8b5ee8665771a34ca73b2dfed4497c997c9e7404433d690354b7bff3bd94aa02cf599554391096cdd53f5c1db19ac33189b2b9aa3c48bc4e09bcdc60f9bd3b45a370c59045abcc0bf57dd03d185ead53056c17eddb5ddc6494524875bce89e6c7a7cd483289fd3abc155bc31ffeb427b7d5093f4616c124b7c29b0d43181c7bded83de769f511e3617a75652d4568d7c7b3ab2b7464d5e4ce6ccf54fa8d73f6e834e5349676f0dc69e96ab44b746e51a28cd2e065a0017ee5420cfa6a69a24989331ef980f718e42e7f74ea863669b5f039b59d48c9dbcc75ce4b434f585ecef72ecf3a29873d0d3a57276128f7dbb4aa5de68e834946741b8e34890491d37b6051959739fa8eb81c694724e704683124136c1c48f761ee3f00c59ab5bcbcef98b97393eb91ba87ffddf2176e9f012859faa6b01b1649786b626358e823a8f26cf794095681d2cf5801be8bf33cc71123898bdfaee479d5a91e8916ba86523f8a051697f814e667789c874394e97adefcda8998e4f0695fe7952496afaee7c6d6e8514ce47148979f5c8bfef8c7ca1836430c3cfb66b17cbca63fdea2157961cef6d0627e57aad986b61fef4f69c3bee6ae182ad76c3cabf076903bd5981445ff4fefc04a138ae0fbd18b2e93ced58981caa3bb13f317499e6ec4bc5cfab8b389467fff95dbe7305cdecd099364d7596b191ed08ed734d7775c5606af0f2af978733dd7f55556dbc5fbaaca5a95bbc287b6d3a43aa9b78ad11ad25f46af2345e2b136f30c09f9fbce4d763e60bad961bdcc4d5e1b4edd34e60aadadc6b3c6cc9660e547ed6c1655b4465f16d535adcc54f8376371b758cacb81d84a7b3e6b8754b430c0753982a89d5ca8b2f4244aacedbf05f75ed1bd92f43faa848d8f897ba21906af25e68a88c6ea358ae0edee9771a9f03e465ef9ccd20e145f652eabd12be82e7240107059c16c3eacf4a1a8342b73911db6a51d3cf12bb168229a1b29f7c334d0d1ad99932f21babfd8153bae937fdd2393d9748518f12689ca7627a1041d868094aa7440c6724b4430ebd20776b602940c9d1fcb5a109978573434da891962b645002508e46992c0c148f5a039609826baf5834ba7271c443b69dc5110c4b7089068d16202cbab2e1e4525738a19c8315fae806fd139be91f4c1e192a2c04983291340dad4018a8a83c27a57c622408f933a51b7618148b16375a80e0a901f10aaf6e7803cb2a693abcd4ca8bafb942086f42f6b743937098e3d2a607f212f766603c9d89accf7ac584491f230bb1108b1465b865f824215d79fed2525d7e95c7976946e22a9e6510afa2a9e8af29ddb65c47be8820561661050b70ef3b7bb249b7fd0cedd688c37d7a3de667626c2b389b38be066089405703bd51fa32199e9c83d5265bd62a2aa2ce521b69973a18777e32151d3d5ba1983c8659a79ac978ffa15ceab733b49ea8f7a853d4b06cafdfc64c9d00e55d814536171496037036a078d026164d7b07e3277b7ecaa770b06dd291b9ad29241c3bb43553bccf66a1dd81fe2e2bf79f1a21e1539d0bc517a9ba8ede2c39deac4cdb7c65ff96048461ba2e350017095a35c1bfa25c242b000affc8af29495a2d349133c343d680eea815cdcd89c4fc283cd5136b89abd473b4aefe2228f4cba5e0c10ec7a1083833735f081034aa7bbf20c11319ca263b52262096e505c45805e73619e2ceb242e559883d20dddd4120f0c9e49f4995376284147cc2d2a96a046bdb3f56b6dc1889976ae1ed732eba43af5941831b2202d6091c16b680001a82d98ccccec212b79b5a884756c75cb2545316fc072d903c670864d5a13534e545d836276ee594d3a7841e5f91d6b738d97e73a7274671d6470cd2719b0515fdd67c6e4969ad213254502c5ac9ba23c264a375237369b46d0c45745041a20511459d3321ee9b395978f2c575ebe1c6caed03afc7027bc457e03f527b0ccbaec71850e0955f0a2b54d9bce69b6c8fbf90850168adac411ad5c973b578424c55ce01b3ec2825b0085232469968b8a96fe7b9f26846f789323a15aae6397242a712cd26b0465bc038a4aa30dac42c0036c062c21c3a4178a0c92b8992cbd54a6044b789d943f1eabb0bb24c3d0d4c067251779374579b27c84fb435e6c745334485fba84676750a27c520f79366d008e4be93fe8a958e8d06b8ec323bfd5bd01e86b1f13302eb17aa3aa8fdb3445ae5775111b2124e2a35021c04945661b2c510a29264ad855836c7d8eabc069011f8814934bb4b32176c0b59b04c5fb6cdbc8bc41b0bcfef4423635c0c7ac43e4d5286c74920ef37c951266b92074d239b2bd0a0d6c096141fb6a718a213a3387d75b927ce176169738abe0cfa6b68d3b064157c3cb03c5793a7400c1960351b059e43a7f1b28ae5073780cc606f7e40aeb458dbe95a31c23af7e760001b0bd601647ad1805c4329e46f490575ca928fa908b5a30fd31520c61c9f1cc5ef18578b350a929164de33b008338180ce41c45327152090a91b8c9b3928c2629a48d78abd1992720e841a52ca91a15a1c7953d18b4ba1f990af34ca408ba2d449f94385651c3b4c0503726cafa118167110e848fbed995526b458d362061a12fdb7c7e39ce1625c20a13a1c91aa5909d8b03b064d00877dce2415020370c7262d7033947ae42ca53522a65fbafe18d3bc3e0cb66164e9a094fe4b44d8977ed +ciphertext = 9520fd68f1a0428cf46c71f124f0e6f3f21fb2d5fc390d54127819c49541346d0da18c5e2d1259564aad5a1709d33a87ac8f070e9509c6275217407bdcb1802849d2d6428878a121717b6359e8aeb075304fdafd10a6e77eed31f4dda3dcf7550abc55cdac8476eccdf9b2088559a5cf7cd00c426e9cb3a3d3d533bdac13ea257641a324719a1c92b3f27dbcef88916fe9d7e7494a3b4134d5aab08246923053b3500dcec963dee7d1e483c20224f480fe6c2606facc609e7fd47cb0d70116467153719562501afce27d9d08981254b96836690a369c9fd2cca3ab0399e8eb794295cddf714b543612303b44b6b86280feb547e36e10bbe4fd729f3a93297ad20fbd53b665c91aaa966e7b0e2e143505f4b4c930cbf0c19766e0f045fc3cb21b09df4331157a751c8daeda28a8d515ca09c53dc37bb9c1d6b99c4689316b79f4745c969f10be1f601b81b989ef3599040917d23e20df69b716794bf332e9a31690749319f08cd3de0b3fa6a820fdbede2c8af4c5d1cf5176d6b457b8f57d18821ef22d16544f4b6f3450f87a181fea90893f917f379897ea322aeac04ab1b4207fa1723517e4831ea7b2c8918040c995c3265748931bf9bad6f66a112954de7fa799b75ed1572aa999d91232c29bae2f5372dfabc7bc6d5dfcf96e02747ebf039adcca1036b4b4b13c59aa330f817c2bdfa29edb911a613f5018128f72dcdc73dfe06ead3b0bb323275e3a74ab23763992031f66f20ac134a9e5c781c5948b533b08d777b4cff4d74edaff4cb27025592a670ff2aa74332156b4917f7ec0da54d58fbc7cc63b62d3bc1aa420b80a7bc4cd22a237c797fb633ccb0efaced8bead400b623e0f99d2db72cb5f9e8d44f97470917c303f4b1543346c4482532f795202c131c9cdcae8aabd5df2f3201e9dbd247979c1ad198ffc9aa45d20d052f48d3a675fab69a6e33e1a46f50413bfb73f377e260e5b150a859ece8eccc1d208bb6f9221e145f1a071b3fef1d6c4ec186fe8eff29129a31a323e7c6769eedbbb125c57b4fb13272147f631f5089b6b49b9bbfca3c20fe7d0955b9f9e2bd717a8f14705b5785391d28064499c5c1af95fad2f57e339e14498e1b4f2c59265223e7362042ee6f51541483254c9184130e45372be466796a6349cd59a002a3f0458bc72e824917a13d32efb7dbb3898a2cb830214388db9ab1a60b299e8671d42e92b096b704246140217bf522ea5db18d65480b23cae658bdaf48117aaaf3f555aa9521174247a31847dbfa4e592046fb1f4e60606aa894b2e6a78941c34fe79bfc45143ffaa8954388140e4b369a224067450c6d6e6e39348d8a00b784188a6229e6fb983cb103a30c7c8bbdc8ca658edf638a6acf29c6df500b91ae0c9cb9d8beecd9b58ce1ac8d1ef506d1bd5961e7080e9a78d37aae5f67ff01ab1f4afa1cabe98b5fa66e8f8c6d687a271c58c6003c6e499445e4fb9c85b6dd5ab4af31a33b3fa4e76bbb29283a9bad6ab7d9d2cef241d30fc01123a3df4b47fb270c222bd5d +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 2d1fef1a4ffa908456f1677d31dc8a4a2a734a2571d19c421c47aecd5d7c3c53a9321e3290b693b0deb7ffeca87cd9db0419c48bc4359d74e46d9932beec787674d8f6afe6c7aff28fe59b768c92f4d5a3ccfa6a35599da2695766d754c1f682ab13c8966997f37a74985551c378f8225ce77d3a3ade4cfc20b9d7c93dbc339d6df71bd21b47c38d6d6efa5eacf8ce512bce5fc0d761c9057a7ebeac6c66e98f9a8ed2f67a0f159a5ee6612119f54d57745736cc3cdb634f5658fb684d805888fea8582135bd499d343a545e4e0a6f0c23db8549e25bbd6358f8bcc0a4b44a7a4904ede8ca6dca45779bb564a30dfeb340b4c317cb77db5dbf89ace0b4676f3c295b90e93c264da9e17c3bde66df351c81c58b545306449585718f9e99a74dfe3b0ca1e737c07a4b7e21fce54604590e4e5f4c8f77877890546dcc2e49be4b08c94a744996fe8959d4492f0b7a3f53a98f9a8d914863b9583d8677e2fe583fd2677e8a3b8ba544e902178824f4c41cbfecbf7a4b666acb413c31cfa744b9a5405efc5b54afc6459ef70494e34753c1b14d7e23b95850a8c026843643f4fb329bcbb85ffdf5cbb969bd4f3a3eda4ec959e1b5c9cc3fa180588b9baa690f7459b138fd9fafd0bd2ade910a3efd948c3cddaf04d866edd6ec866b48d7baf2e6fb5025c6892c76e16e37eb998b888e0481abda592c8b36f74647040cf3c51b5ba9959290ed3594b8d73ad790798aa304579822255e62eee55719fbc9b5bd4ca4d68d6db2941ce8093ec5167487b7538c9ab47dc278f15c8c7f324563d3973fa73bbaf07c771b25d70d98d479df693535425fccae108f72ce8ff4f3795a7034ed4814f5e4a749233d9907eec11d6ed7e9f34fac3536365ed0fa2ef34d55769b763cf34d8b991faa6b8cf60126e953cabf0733cd3a08eaf5158a1376f1fb159db3dc6c404ff0adb8acaa8cccb7dbfee583b9909c903ff43613de78c568aa7fafe7e345cf4daa9aaf17cca1b5a4a5a73ceabd581e73bcc019bce2b68c8c273dfe588ba096ec5a73a6edd9bbdd66935bfd4e5eb8ea55e6fc9a8c51b3e6a402587ff4f837c16380aef5640f333db08a6cddc4f5cc4e89ed773d8adb91e37d8f12b78a0105bffef3d874ceb6d5d5469f6464705741ec53e0a8185a155337306d91c779e09f19527e95a6803cfa4a1f7078cfe126e7531a5941298bae19a3d9ccfddd985e3bde1ac8239fca1a76957e2da306a3ff83994a010fee8a5e9e16138f0477667f338a6755de1248a68224fa79d9ab6b58b88754362b3faf350fd062a554ca8a40da0481bb8fea9c0f3da71987b744c6b9ab5e8093df8c8fd0252dd7f0eb72ae3694ef9f814df4b1db269f4404cd0c77a845dfb751f5a0bd1cb93e6ea628098d0eebc9428f7f77139831575b98e47b7dc3676d887b57ddad96bcaa1f38d049776339cb3fef6489dcdf620563dcb08c53fb0839b4a9d9864ab06b2c3fe15957dda96ccdb9dc529d4df02c6a1e5846f99fa1683838b986daba0d664a2ad39b7aec75f9c4b05340ede9881f48869dc881db0e91e24bb5aec448ea15fe57e69edf254575fca87a1b50e6d3952073d689bd4328b7dca1a871ffbcb0a98f3dfd4747dc859b45fc2d1bb1872a743763f12d29d937f3f2a41d257531c1172af59c90806c7e5a15972a8cb9dca049bc92700a72b4fa5a739033437c946ee062aa86c12103b557822a08084be63c4c74d1b92608c3b02c6520b2991f8499470114fb659f89a937a25897faba6c0dd142d8d4868ee3c6483128241b287cba0ae49430dd6a28d1339605a4b750e6029f73baa1fa8ce6219c36a40e5542ab45cc781a613fdf416502743df8cbb3c4b864d0b448a20c0b0942a829601f2b131fb038587a99b80ef44033061b2e4b8f9a12c3c03193506b62aa1c7ab08569c7d0a88c8a098f87061ee41000fd202e2c3af4e625b34787bce55f74aa58eeb9124de7089e51a581893354b36fe035ce5fecab74018ee6209b75fc2702429c932abf71d89b8c82c047d77725cb6ed98608f2ba0b3462c1d428352c6376f6269d9869aff4bc821870b63f2284d296677b6145683ba6282c12c72512ef015eb19ba86b3571be7438f17311655c118a530266bbc6d9d10636b6347c630607864949dabfa558522c100f6c7941a076109253b5ffd76328c99590f48b3fc7ae7a5847cc958fa5523f540ab54ea0a302174e6c401341759c121b355c9280d2ab6a84f9028634bf7e3ca90679aca188667d5086df35b88d95b262e8478561a414b627f43b0fb8731d3bda73c6396594694a9f7024cfd55d3ab88342516cb34a922e6835eb8c067bd35ce0b3711d7bad2d7529464c493adc40d8ec8679c903e8984850034ef4a828d3fabcae9474f7278cbe79c8e5c1c948b94798d4c68da8255237ad8b0b38cd4a8dfde5abf6b2cfad98a677a8c40e208206774661490c3c212d23327a46a23dd6855275b78d29830b23900b13c638e31b4745a917d4fba95a04956c371212e475271ccf94f6295346118806316ec01d08454b0cd922d6f1a3e4a651a7a931f380042a09244bb39973ec5872c28c8d41c4bcc72ca4409a363c49995c45c7909522128c03814612214a5eb01527b67bce4463202cc14e31225b36a7d7d10e26966beb389877ac0062f9172c0517ca8676f5a44a10106fe75a31a4aa86688c075918a4d8a7461dcc1ea1193913c259e3b44c2d976ec67613468358886a9108acc7d0c6a25f5a991d7c53b8638c24a585f07aa074b5a2cb514bf7178e14112c8b31727a38bdd20a5ad087746768957f837179d50d25f6697f4a88d056451a593e385b74de8a01cf0244e70ac9ae36b2d76cb91e5419165c6507d141148869d6676f28645653bc78c96b9e7f382cb0c6768e2968c513c7ab076928781a6530cd3ae3286b0c681743a58d9c524be5120c880605bc139f672e30174095932a000800d58a926cf40873c44ae6096940a3bdb6e7966595bb3d23c9915bc7e29aaac9f0344c9b6bbb25cb0aa084f616332197295163989e1448784082c327075dacbb7d912025e4786710b0c7452f827aceda11a73ada09c3e54b404419dbf3a8f8b6096a73528dc50fcd230155a97a614663174683d1095d97b7c0e994764df2095ab7bc029b7dda3799e5a88ed825cf1674aee01bb0c17a5c84b8ac1ba061302ba9cc20cd46f769e1021c03c43ab07bab1bb0c7f3426d252a15ed5a27854ca7b177a6f79502789842e229637fd32a677f68dabfa371062d8b8ce9dfe0d90bf06044ac3a840ceb626b16e13486bb11e7d9c1368fbba34ce3a2f169c2464ef5fbc11f73843c456467b6cdbd4e01c8e376fdb140ee343106c093af7cb149b316ba79446ceb4e5e0cedb9b164f9 +ciphertext = 027cf1e2d501b25ffc3a13f5a9fae7f3535a8749d0005ef28c3468d95a2931dc1d4b6908ab8a4d22012d7ae11b21d594275a9288ea7f12fd1c5a18c9bd13741ee16bf946383c8d18de5a8008d98187a7b55a42685a5a79415cc55dc2bc2b81dce12cac0494ee667b948f6bd14b8503a0bd549f54cbec3e1ff25aaaf142e03c8461f8fcfddd4b0ae1a8eae7f6eee9915df2f80c501dfbadd8911463b73d254385dd5c6bf96d3295495b27788822759e13deaf2665b6c5fe0b2d51425c447c7ca06d0d86e803194140433bd02877ca9e47c23c28133e4463fe0bb00292929bb4f7806cf8e71a0b3bab86fa386fd0611f96d6b648a30a079719a283f02116db38ba5b32778f15e9d65d11fcba269dd19f85b4de540508ebee0142a10c11bb0814e0fba0b4d0d951d0f5ea38749534f0c3b1f6d30ed9c17e13a817174844d21d399b36b71241e1b49e2ae1937bc6d1a255f61230e2aaba3432eda6da8c0e3a7906f07982c5ace4d484853c4358401745ede71fd8984acae82d098d9c72a0f8ed9ae7a0ec72d69cfcd56197f082bdcc04d3b81c2a10dab91e3a4e4c15b815d0bbc66451bdd5d7293d0f7823989f7d6e2704ecda52db3562cd2dfd139e0e30603c7f3317aa2d4131ee7bc1f9aeb697f4201505c3c102d42def728dbf05a9d55714da3ab5d4e8c0a0c77439118f804efba1a3953972a62ebf20da30ceef4dbeacf69746baf9c392ebc4d0ace031c46eb4a7fd1466ebe992d6262ed24779c21f17bb3c20b63e716ac68fc90fe5fb1ecadb031ce87f6c2d13abd5c2dabc67e726782f44498eb1dae0b601863c02f13d3ab7eae309c48369fa77a7ba1f185547ce10696da86e2668a67eb3283074c4e3b7b8fe27c6c81060353eaa860a89ab08259ee015deda20bae823e0c15a6734e835ab4e64b540963753782db41b9451083ab2ef38e675e1a792678a9b0a42bd35586576cfe78cd86450db997759dbd4f9c4989b777272ad6adaaaf4dc32199fb0798a11d08a006a47ffea9d8f9a1489562effd9741dcde99d267a40868a781ff3817080eb34bb931b1dcef5e4bdc7bf904615a2e6353e1e6ebdc37a85b9f81f72e2afe2eedf6414c07c95fdca8a4d9b58f8d4313f636c3f6c83aedb5e76c63abd838404b1f86b9ab1ecde167501e9a732ce656efd9dfd39a266f457d3a73879618c46b4c034f0d2e6e76edfd39154c65e8e601f40a5c199e802bfc96af5e557c0addcd3cecdb9e7c7d35a5c66d485b18def8a814321856019808746fa1df56994240d9f0684f6291d86971580f85f706a59c6013eb57a52da5b4d15ea564214d2106a1f5c131a6a8ad3f83f86bcf9a8623069cc8df231b7bc84147155f1f7680bdbb7e0dff61706d849aa7b89c549f04d3f5b53e6440c2ce437c65731e5d76fac50c6f310ae3734e4fa46f75af8d8aee4e25b93e84e3f7319fdd8bff9bdf3bf18ff433bd5a7af58e542bc91ff81393d04794cf85bb719c6e9397f355b201a85202de2dead155fc4ab4d01a1bb379e71c78e053f5d46 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 47a7741316be8796eaed5e8a9b48e46b43aa54a98f48ef42866b8d79f731d98c754b67fa2b9e70a7eb4b0d73b38d6665d1e43af0c6eab95cb54879707805bd7889e3ee369d231c600b76949bf86366579ab637f4cbaebeabcbd2fc945bf007cf58bff5afa67393cc58805ae5017ae2dfc9dd5b5fbe4109d8b2ffc4fe93712f555b0ae896e85931030d89643af3e4c38581d4c40a46aa8ddb3c26ebde29fa5f7b1fb6cb3fcd2ab6b50327ad0de8e39ad83dce676ab2ecdc2774c86a2c72a50afe4dcab588a66d665ec040f9eae045698bcda1dfb95048c545d08654c1b560384561ab07bd8d7ee82f99c79b2f67ca6eae66434321e8501d474ad84aa71286a948c5ad197f32d07f576f167d63a9ff62d3423ce75578dfd52ef8401a4d4b0e27d6bb7d4fe4eee6a528f9321fb8b817d8c094bde829ac38e362a404beb78df6ea6782372d35cbed99302c5660a3ece31b93b675d59633699ec44c29cfbd231be9435fef1238890018e618cbf9e315beebad90a06ac7feda5680dea12d1a41eba931c279acdb875d9ddb7cd9a6adbfc3f239e843012a8cb917767764d8317bd56fbc42758772c1e53ec034447acf791b837a6a34aa788edd35593a55e57572fa99711bbe5a83454bca7990e834ba285a09bae1666cb2b2f397059d4354687d0524888cf6461e03d313abd4265de38f4ff4546e9b3de7e5b627f30e08c4585478f9996798e9b47d8eff82ba45857551ea4c79b5ad577938666413e74e84585e684783d33f3c8de420f66d48473fc6bb627b399e90697e760783a4ed9d663ecc524568def8507f0437314488af7376bf2a6bacf783b74fe97d8565f9456d04a8476da8cd6c988d26a56d29479a2dbb85b0ce8dc81a8611bc4adaaaaa440471b64dd53adb874db67102b6a64ffca8bf8487e19bff768fb71fd78d8508eac24b89284ea83e67585b7beae5ab6ad1f5cc02ab78d0ecbe01087f46ac9bfca464a4b9ca817c3a1af5cb0a6a3f1dd3a2ec06774f8d5e001b44c8194661af80d0d59bfeb35ebe9c943f6f6b98e488f89842765debdc4959993345c38bc801b95d56bbb47a3bf3f60ef33d6ade2b8f7d4578948cfc54336f7c9596f75689f02e3c970fcc980af56758aef08017fa4bff34dd13dec58ea6ee8d30921691d71f6839635c6b37d497ca4a87d4bef47cac6085f3848ef63685fa4bae8af13bb36ef445fe6536297d4e4ecfcade6f839f9842fabfc264ab4ff648c59d15708f55ae4a396d5f4bc75e2d603c03cded4f52facc579a0cbd1f64a734e8350f03acebaf734eefb486f6b93c36ac128d3e574d70aba97d2319d78fb43768f98ef6dd3b090ae1ffcbdbeb3b5fe023e00665d8111fd6a74db93de87bd94a634907730f3d800803b233b95d1cc7cce4acd8ab143734347f3459a5bf0f30f958ed50b4b835b9e736d6a7b45ec8082a4d080967b44bd553835bf52943a49dd51f48c27823c5aa1bf0b7b733ddcdd4b2a7819beba4b3fcb1fa9e789c2c57cb0eb50533f14a03dafd04f2187492c51ec14128744bf4a83599a30b96e94473c2bdaff2fb4ba34108689ab8d65baf4ff3559a76f759768c81a8cc5aa2a679303d33b2437b05068bed096475e9f80bf349f6446774b30fef5b426f563962cc29ff78ade42b497dc3b970f1b848b1141d7a5f45a37c25b125aed61863f22732a06128bca08efc8cb176ab6343239b572e1c8c138d829810227afaabb81cca0a73131155377730a120558231e8f8a598a2b730578edc7800b0d6c5627530ee92930eb2b40a9888cf648263b688f0a12e08f004f4bb449a25282029cfb73c32f8d31229d0a58e6aa08698517fbc5f619837ae3331cf763631d305e88c8f85413e9d5420cc282bad24a783011184011a79a3b305db5b3032b75c55907ca5c7f839320028305c439c39484895212b1e87925999681819416dcbc7ead45ac2b1262154bce16866c04561eba2c9ec6022b07a57a67c7b901b5da3bb8025c7585c86bda0810c442c39374040236a82884199159729834663d3b1967df9955de3a387d93d50f5001924c4fe433d016bc2b6614f2d3ba72fda226864ad6ba5b8c31681dc104348ec2b29c39fc9f567cae17bdf1c6e215c92effc60e2d6a3a3106bced0bf301b542f7987b582b0780b6d398631eb8559459b1db01a0443100dcc731291c737499c2f86452394c0b6662401fb57a4db232e40d1b0f2511ee1eb15dbf7b603e2a67808c064fc5103fa7c9c954fcd12bc619582f82590b323698a328cc14acb87c217e39c309421c7e6ea15ba6c3bd8587126c5aa02c26308c9912d7262dbb91ac2c2cdbb9cb009a3ae10761771740b2e6558fae775deba7a66086859270ec07b584334900c278002d8a47d01547dba3036336616a8c12415b86a1423a6c9aab5f085c7fabb6355b3db4023e47c7917c10c284333110bc978b2c08e16512ba95a07237cc35c97bfa51bb1b25e30750e65664377ba49200aa6e935b4c7451e547859edf03bcfc6904df05220c02f5e576604a873ee82b7693b962853b5522a5b0986348da63df86a64671737c17201ed556e92acb56f065eebd31bef43ca85db1feac395e19110a2f0c5b90459838cbf779c27247709765569e5a649bf160301003169e4ac2baaa4c4697f25869ab99179f9f792d9b19df0c148df7c6b9aa20e63426697d83a6e33b35f4c7e798175bfd73ce60a050146a3d893c4dc9b2fabf5960bd80fa0679433bb33bb91915e93c1eb2aa16cb13e0b9870fef99835a674b1bb76946bc4064cafde3063498ca30aeb3983f5cdb3a6b9c4970459d969f4d8b6ba27755b6ca8fbca178dec28dfeb2ac03318be7002a9a4cd7b1749a7fc7f09a6b560740da89baab8130872510c99630f3b588069d50a9550c97f8198b7a46148fa7ac1580632db1ef49528f9125784a5bb2757235fe44e74529a7ce88e91543b2ff81d9ed78e2647aa07033cf3422d34942e7830191b104c7ed56b8951a9c8706e4cb33cb0b918387b869084386420c13b09be75d2a5e9276246b674e96bac7782541e1ca441e53ff3b9c702cb95ceab628d1617704a448ef743e8b811fe52c659cbaae22377f28646c45642a9886628c9b73c510bbfb645d4077c1d8b954bdc8b707b7f6bc4701bb1af0f28b88dd282b78b7ee96732521aa6180b6021aabb415839dc3a1f6f545c1320c58b965b62993abf6a10c18a22ce6a45539685f297b1f04a130465845d189d17552e2f4917e924cc0d2dbc2ddc739f6b876472eb12ce233ccd402ddef61523fd6fee69a88f34a34c29253478090cb4d580bc2a912645bc685061e5d4437b3811eda69c865ea9923c0e860576285483bb5fd36e2f944d32c4317bebc1e441470c1372046a790d79d4 +ciphertext = 3f6f05da5d7deeea60bb32a85c0fa85f2f6339a48eb45343e20ad802329006d35743ad24a30ea7e1688ac9870485fb2dfcec77a5dad30ba75d613ae6211674f12620b2f84e32f5bab410123f921d8967d7a1b8ff92f4d17885b2bfcac31442ea09e40a41b54588fca2cb4624663895a8e4990d121cc261d97e5211ea06e12278d550d5b0d5cb815cbe7a6b5c31cc01edca9d61917346ffa49163e363b1edb342d496dea50d463c3c330cd453b903dc4b2fa78b93e4a78fff529fd38a1b57ea5e714ff924c14d97654d390b8dfedba47034db426c371e158359c733437cfb5b0bb39b1f4b7cd3874394822b9d137359c7dea734e1bdb51e77373f7e6a37561a8051fcbde5da7f65f5a1e0dce2b1559a4a90c0d0fdfc57e11d8e8ec81cac05299b3f29bb211756e3811622b768eed23d84e20ff27a2dfc7738cac348a938c0b51f6e1340587f2ed4cd05d1ad2298dbe751863be092d8e0f9ca870cc7759f898cf2497249206b14dca4f06783d7b54d417fcb578904d87a674b82967a820e525bf1c708246565291998d83a78feb27982b3d7b9259936eb08239455fa099181df240787c3855e564ca1d53253e45d7f12230ed2d623e7dae75e53dc57c41678b63f66622f5b762abf5374a01265d82eded50bda26177a09007eb30d3ecbecdfd7d7f9ab455949426773a03f628ae86261c11e6c17b276a4fdb7745ac76c7d536ac83a7805f9aab8f86810f0250367a86ad682c070367d6ec4d11581fc9d0913daacc0053f381218f5aba830740bf531fbc9e823d71dbf1d8f3bb2f2997f8a257f02fc8b6b6d9be236e190bb0f83794824e6ac07d6727add717472a0894b27692b6070b9c4197d0af9db339b9eb13630bdc016bb43712b92e79c35f8be95d4469cccf385a15cb76a48d0597ffaa710d4fcdc62e9587eba1713afcde87efc2dc6002a2dcb4105aa473c30a827d8d4ed21bfc7da7293617029f1f0cfc0857dc11c273c86e18ff68a129a74039f717dea458e3fcde1383d70d800b3d369f20163d2eb0b3333267ca8428c8937ec809f33d3f532a6fe3054edc3e88505f6e7001247e21597927729affe877ac665a6d606c36cbe8fb737ca62e2af6f6a3cf6a1e3706e5259ba689c4931b88827250f0e1f5e5fce0e6d2f8930ea41f3a80938d9a50c2ac817302d7f60546ed233185326e8f872558ac16bdb5c16c132cc2ec05c2b2a19912ae41d900274cd8d9c52b025246fcf14ea1bc299efb10cbc74481a58a5a7a284f3357702556441de77647b29a727455f4196960a10b86e434cce0c69dcba15af5b1ed7762e7f211b34c3a9223959725e181f0a2421586c6d36fe7d31944ede70d63e2340feaa54f1983a3a37d834c2bfdb9470fb8df5c9c4ede73d1820f87961448374b19058a23970a63150b730cf6a7816c8ca21145b2cdd46ebb01a65015bdd5d982ff8e03dcc1adee845aa5bf09a590c695cd2ef7f5c1edf40f167b28a894d9c33baedad48da0afb5901a13019f72c3147269bb3f2cbf688b2dbc574ba43 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 35e4451348cfbaad6f1846f96178b6b04ea1c0196f275f5832cd81ea779e6b8c4b3f25dafe2963aa756968358bfcd47d774e5ed4294f02a843f89b87d78d3bae5d4a9165b9beebdc956d58965b64bbf953e729e60b53552d2ddd251cc9c21e837e0a7c4c043ba0777e53b39f658b41b5f8900d57f1268a8ab868b15b1fc3b804e416dcbe117ab3a027b8fc2cbf3566569a23dd6ebe32ddccc5eed69a392bae8e4a7bd6c9708a48badebaa7a0aeac1f7f9eee0399803a374d3733af6def1a846cd205e76dd3eb4d53750bcccf938beca43c3a6cd5601eeac251f9aab9bf489f2fceff436f124fccd1cbe7dfc75db71f5a1a433325a559a0df3b49bbc3d1c9e95b984303735f9f2646f0dd50097ab23a8aa5569ab744a934c2a9eba046cb012467d39c3936eba9cfec4269eea0eea559990e33b52fef9d5a603e19fc19a8e8c057b7c94ea7de0daf2c0ab3637878a9ea90bf377874fa38bf39dfeb6e31345340858aea53d4bdda3deb99fb628d975a921def908afe9ad37c9b99b8b09e5070339fdf86e25d9556b27e6cb74a9f1819fafd8878815f6fd82cb002ca49e879c50e33af2e747104674eb103d959e3c22f3aaebfe3dfd77fb6ab855928d4d8523d48864dc8cbdb832bef5249f46b7178af9769a4b359664ba48da4a746c215c58bcf752e43835b6cfa9ffda3fdae59d39d38ce6dcd60f5bf5095f1d3d59c4f0836532647776deb4fd6f337fc37562973a1f9bd963fb4bebf5c21597a12ee7097be55cd43c76874c44f25c1aa1bbcea897367536ed05ef4feb6cdf246dcd6ad82ac03b5ea4f32dfb44e201f4fdf65a4bd03b16ee7f9894d65d87e35f1f730a7b9efc2eb43272cdb2bfb8e616cd7df64d41917a95b0544e95e3e8d6d60d15cdfb90fc0f278d05144e960654f3594c9973cd8664b7bd31bff0328f7307b95fd5f5a273fc2466d41b1286d6f175bc0c4e942e8b8be69bb365ae1ab4cc19a0fdbec5e6ced1acc1f5bfb91b860331677290c643bb9a00b4b65644592c5ca5bb1abf5d2b7d80cd3fb09aedc137946a3fab6c8f3ea1e97a4735a5c0a239b073c6e066d53cd64981174978717e8d45f35019b3ee615ddcaac31a37e67fe35ce57586c365ce3bcc7587dad66c7ed5674efba0196f81d94843e0edcb3a93c060f5c0c79ea0d4eb229a55b7c5d67250f6c4f1b48313788a31fb0ca5e783ec9447e64314e878734ab594029f3aead586225c7a6ddda5f97bb7673fdec47c15c06c7c30d90c89d404c3d44136c79f56e81cc2ef3a7d3cf969b72f6cabe063a35774a60873f67b1ba34b93a5d3ebf5fece84a034f9a9d24fed897320bfcc11449ebcc097a079bd4bd9356113b3cb993c19384886efe82e37ba659d5b8bfef44465eee318cbd092b8f8e53c63bfa3897afcdbdc66e28ff5c83fa85c36da34fd6cfe697f173fe361bbef5e6c5c6ca0fcdec68708c14c175f9e0d01dfad647a317f78f52f76baf0d6a3ab5e780d37a00baf0c6a5322827e9c5ac88641a9d15549088b5a4deaf3f443335abfc5c2f7c5be3ae42740cbfd71fa83bff71af0aacb43833b66f95b51a885d798825c3a2c04b399d5f8530daf4117b6e762c7b6527b0509b5963b685610e5db4d4895fd557f7434fcb61b199e793c5e763764c48df412acb7c756e1370cd117f8c10cafb39cbf0c8c3f5dc8da1855203d02b39647856b55c38e944617b8348d16a8221962a42398fb61978f40328c83a0b49bc843060d1711e289434db4b5b0838cd87949df5ac0727d8a528b8b5bf30ccb9e37a6664050cc5880d34c13ca42c1779b8d098c5e0876627c17a79b6bad44a9a38c56883d97cf2d2b114a1c4f1a502ab4a9b7b5398d9e73e543b860f87062e27a9fd1a2035185f0d98857b0759bf1c39a41984c8c1a1a9027944417f84cca0dd4206e9133f6eb6a989075d004accd9f57cdc928cd455443f0222dcab9a8890004c2596efeb06903b5d0af33a88f14fec760fc074a3dcdc744e9864e7ebc608a56002e483e60b8202b31377dc7f5a486d5a060733fca9836aaeeae05909c6b6b0db4531271fe4f3548bd5bff1e92160321218f963081c518874c0cbb792fda4513f7902be6547745a0879ba6ccd7c0f73b123dc605bc7995bdd14b018d8278c8c3966aa87a24b4a4bd3abafe0c8173c028df14daad39c288943eac139210392bed70c38d7af7439697be96977d23a27cb6e7de7b785673c9d1b33a081a9cd417129430c6c6300c496b04e1796c9c781e4211915162de147501b7bc55f8913c66c5cbd209ba6d115f753ba739417c8eb182200113ce17c935a0622dcbc674553b9dabcda17bdbfb4865d58143c149512cc2e74a2b508f67be8058461252d95042f8b7641e1d85161521b81a616a02110d7ea3bca4723d003a4db1673d64273b34c9432ac981a0c01dc8b8c0ed5a05d20c5331831ce56014ab0732b301ca2f8569fc061ddaa95d63667b9acc7a1ea656f821d55a31b41f32dfb3b66ddd5cd2155438db6923069430b61c85ab309bf56b0ecd990427c1b7d93991e783a647b1dd66696659b5c926485e1642854f0839033138a3a54c349c138977275e71e0fe985493cb85e0923095804037462ae248780006d0778334f664262e88498fcbb22d46d4f4291bb90afbbd40fbf2b302415cf195542dcf3375e78602fe1067638ab995b70e6dbaf7b75bc11701207e489f361512b590a860401a3facc1ef1375d8b64e0e5c7f863786d3984710c2f55ecac578c41170194d832929075671b814fabf45c6e2bcdf8c0cbe2954c5a414e3f8878ab68ca13189d97f316517abb4c5187dbb03413da654e650ec1cca0bc9472bd4bcc60ca6fcdcb26e77a025eb70ec0e60e20b19d30fc261ad11d3c0c56ace53de82c6a38ca5d59e9c24568b7cd15a0531315dec20d9cc957fcf8958e3747471a8d944a6678f6ac8a8763a1759b3dc83edd18ceeda5036c31a897b65612d2b176e9648352899bb2869f48b1e70c1ff04864487258526226a7dc64306b6838f4286b9a81a3193f5c9c711dfc5b9fe79bc6cc14c934591f93860b66511aab061295af186b8ceff5772fe50dffba4f5256522b5c7c55a6ba9b13b615fb3b3bdc4b159a1c84c85d717824a0573cbf219fd9b2a32ab66bf8a498a04aa4e22509a5057997b74ab5a1b27b96656bc194af08114551709a41142b715c6e167e5ba5945729bfa702c236073fdddb4ceada972810253d642ec094333c028b0af40ce2e29993369eb7ddd07164969a62466b80918873a4ea56cd80a8e559fb30f6cce44f1f8fe60a286de7dc142efe935e84b0aeebbd32d050fd9d8b008a94e59454b19ea401611df89d7d99d5c3e0d10d6ef9af054d842375f695abb28e3b8eb495100f04306e92 +ciphertext = fdb35f966ebbfd16a07385adad48cfce34f8e312619d54fa614ae387f2d7c1e80f07d8233ca39dcac87d98d0b0972d96058f3d949dbdd749a759c31ad696837f7e687624d20d6a921ef055a55cfadf48a5952eb98a1d1508dfaf0c83d9623f08f7e6424a5dc45de4ffe226b3e1e5d5ee5ee53ff0a7e12a2497d5d4ca14dccfe23eb4fc26f27a62398d4f1eb268565487124306da0f7cd8a89e4746a9f42180ec5aaa8ac3d821e3f24cde824489fc38f7f26d83f1a134a19929e3ea4f3a3eb13bae2434104e115e451d7a7dd0732f57d764d7aa63399450b5e3a74bcf5cabc0b597919a1a14d6112549483e6d918ef6c0c1c8fc71ad382c63c3b81f14ce5a9c2f57ec3a3c58d643db18637a2e84c1ac4288dbde2660f34f12911000662b519e69e2aab4ff6f7093ef7330bc91b6a808487a5987389e380a2bf5149e955349e378f96eb17131d9d00b218df9f9de4a607614c614447ae1af7b7880412e686643396720978dbedcba4eab3de76233545b578ef85ceeaef3689c0f7a8e1b20c601d96ba4d9f2326f35d60a7c30b17344002cc37698fd84536fc9ed0848b12db94e17862bd2cea1fe8536211bb99bac84097d3a81661a452d05ff7be7f1a9febb4931351bd9d9515b69ce4030157ee5a468dbe9911ac26a93478225cf10d79ad86c75ab0d2c825cd43292515a317c1e9ed74bf7d51b8fc88ee3573634586569375c91731ac0e4eabbcceea2ac9efca2c8f9de612115eb02279826d0212de5fb25327084f1b07c364591e6fe8b1c647eea063dc923f2dcdda841bff87befa0feac5dae47626125989fb007f89632b87ef8318a2b0a669c554a830f29ed10cbc3820f1cd4bba6fa367ec20665858fc1033be26a443257a43329ddac6683649139b13b5a4237643eae57ff3a65dbf70377d943f9a88a8a355f32480a739d6913c0029ef691b6f9e14d8bde603b2788e9d1169086276702ad55fdc02832033c729e6ddbb142cda0fe072fd781072c954f07005189612db4ab774664793f8a00942d4d3304ef7d412f5717d476d67204a02667c3230cbee8ee41c6eec7c2d3fbc3582a7584e24b71e1e204a98c8e0073e068c6bfd607a1bf9ae1cdadd86ba48478b051411adfa3bef3dfb021f0e6acfc17a1722d0fbb802657ca3a1a3bfaad6f244b518284e2a88e7bea955e41556fc97eaec1fb6864a2f13b417984196ccd70d067b1d746d332062b2998c51f89ff9e7493b17562dace6b0f0dc521bfc2f833a405e1e5263006aecebf880dcd2cd489aec589793e4ab46681ecfdb07992f7b32973a179e7bc03ee5237eef3352489d81aec6a0fd039da71590ce193003816b04936935ef214d109c20c02acc085dfc79e4e4dd8b0640e78e8a90d45a421eee92b4ec78db88d63d3d21d5fe2d2550ed3cebcfa7a326abf3883d003b415cd3fedee17b934960bc2c2ce114a5cda73f7aa783070b7d9b04a7085c76d2862c9920e88e91c1639680db6b03b9947947136f301f4bb33048c323e061ba7948e1e058a01a9277bf6 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 03a941a829c02536ef4427fad08d6bea6bf16b58bab845328c36cb925a5169d6b1ff24eba55de0ff3cea457ee3c443c6d98ca879e673cccb84d65e90686e9edf59c23798b9b6bbcdc0d49df5f4b21563ae55ef87dcccbe4c53c62918a6a213c460eb8c92377cb58aeb6d6467d50f97fc9dc6907b6be6bd3db314c3ad6bff46999743ec7ff1bd55af3bf753695395d6e57d7de15e183dda398d1378d6b80e7bb4fb4f36b7653cde7cacdebffeecbaf2eab65b853c7118f0819bd5afb8638803f8fea6c3563ad27d7edafdacdbbb23a571489121cfbaa0d7ae00df96b2dc8b40e4d16feae60635e2a64462ff8d6d5959c49d0cdd9b2955e658db7b0dd21eebfd44c6a43d08b5f469656cb9396c9c640cbd77cc24ac0f293bab4cbadd998ecdba315354d8b754f0cb53f826cb5dc92f4c48159626053096063841153f723761f843e5629c945778a2508f6a28b9da5854ba7f8dc48e44929eeca17e28304babcd0a04ea8a6fa04539ff09ab5b7197a685a67d07ec9769b69e64fae457fb8e1b7db23ac4a79723fb031f44954e43e936c6e5d840494b674fdc9aee84a091175f8f4ef1151be376fdf8d0ab6b709a443f14c56ab67e3a97f1a4b698eac96160befc0f5f77e4b4e2508446ed4999687ac5ad6f6ccf5468f3e944b9dd99fdd3e9337c85e60f4a0798556cfabfd47a40146691d33cdf179b5bb3d3d88f2cb29e2b961b73d611de528fab952dc75d23339c26a38f695fec13cf360f369abdfef8cd64551daf9456fdfaec7c359c09e92f5642f1bab42814aea9ff844bfe56715fee0f1e3063b4b8c614487f6b6236dcb21e48613c0635e5f6a6a7ed70fb665756f98156c65a704d7e1014bd664da92e9ad9ef6c944db876250b951d1633235ec5bb6b79f899f8adf6bef819a241068b08337136b8bdc33476fdebd292b68ede75490ebe93e267bbf2f8459fabb17e1dbef80e8ae89599530d453065ad45457e3e86a12c554db46e7a9a6e3767598031c86bd68e5585444dfb4ecbe078d350cda1cc2636d12df3097d776d2645db74db40aaf92acc909abae1d1dd5a1b1469ea2673020bb7ebc738129dc272efcf73d37f620efd8389843b0540117c7ab924c141de40a08deab1cd596103a1aef3c93a2a79be19c7870abe8333fa7eef65a2bef80e3d490f05dd415ad06d8a403d5d948da4b1055be8be35a8f935f079c5acb31d4bd42ccb526e783aed7380fb3a62b3a5090f95bcca410215ab5d3da89c7f73631853640f7bb1a6b09fe83233d79e4527371ecc8b879c81a25b3e6e088d2e786976396ef8d6c383495b52eb69bc7e8dd7facf602fd303faf5a0bfbc32b5f69ab45e6bd8ab9f9456a68b869a5ce3a0b6c98edebf276572efc9a3169eacb33b99469e9fd20495db284bd4ba7c677fd754e58397cda1920fd404b545ab2f79cbf6fd08eb4c82f6d569598147f9910e07dbbf89fd3764f0bb999e4a9cc28ecde93b1f4d0cc78807a54d13933b25b350a16c842e4b31337bc7745ed4fe564c21ff7ed6ab800717baac4a9c954c6ec5238bcd03dac6fc497a6a9b9e4973d7d44ea53b90db26912ac7796d3f7d24d3705db5bd0266b17b145fd8ca77624c8eccbcec219d73b2a639d5f135d06aa99635c9b53244e1f898d8494b681312bfd243c8ea5b7e71ccb7a5386e477d01fca3ef4122a63934843450a446caff55184d052923a393fd887df6b045659cc282d1424b19b17cc2a2384132eff067a0347f88c6b392aa56a3519a440438d3f90f6941112124c91fc31187ab0ce6752d9b336a1e230f97837a657599e253b7798c912a66a48314447c352b84590941355c6bd1c0951374105858a46502ef39cbb58b8e63a64e2b99c4825912155695893a62af6745e76058d551a946161f25f1b8fc045602344a7f342facc50e9565c1d59a459d34233c1921ceac6e0bd936b496c8fd6a619d8b0649eb458f8943eac97293635092666688db559d255ce9f280227755c3605d6ed007ca718527227fa1f40dbcd88792801d8db6b2374a23178a72276c790f902d7e969f2686c9508186788905e77132dd909397f6b6bad3ce77e8cd4c4a3b9686cac35abc86d57e911cb58b0c997c1935ca64918370809d3b1b70cb09641878e7c0a141573030aa2b687761bf43ac89a81e73376793ecb32db53368ec9e079172e9aa482fd8652583b9155683da3467e4546f26ac98371487527c37b6646ca582017892a188fb2440ca7240c3c22577230b59ab8ec038bb95cc49c2a2f59a4a22c0c482713544fbca9d7404b3a6ad86e8764a601b7084289858bf62a2828d3091ff015089726ca23b1ca0f87195ba1abf80b01f101f8584c15289196744500000b431a60267174f2cc56860bc5ab4ec20d19ba8ed47535eb42fe1d33f2980ba211805a3618f2ff64d1cc634caa6b40fd23615538366dbaf41971d8b5857298c1e406a293c1b8b7f4a499a97be8cc51b5382020ea9c7cf809fa7323134290fa461218f4a6f495caba2d1511ea48b7e0905b0465f7a6711f2716b17dcbb4b9a1b31933d7d3622315c79f3f11a93c8058fbc01c4839a808a5d2d45b99f7918faf52db1d81d669c7988ba7eb8847187ac7b76404b1a139dc4e4917c9b4e29833fd9fbc36e4bba96e25bde691ce0c369ace7183c762bd04785efcc6b614165c014a0fc4b64b24b3b46418ac5b6b7bf69cbc75090b69aae46b4a12feabd4e134bcaf14922367b50f17976c6705e175ff34612cf7b086ed733deaab0ca815a53c99b2985963db89bdc284d251340b0e3ae20990ee93344dea18063db6ef4374a331244ede00b46676475937a9472c82e124b1751a9e4203becc77ace092b055abf0892637b39c3a9a011219c88139277b8bb73b9508142421939380acfc2b81523c72e923609a0505e2979e086ab85f9663e549f3350a694458ce7b02bd8716c0f8b8946a21d99d97632952bee898989c1adeb710e15bb25b0a22be598a65465bf2b899719d00f9d16367e9436803ba8c17b6b3bf62a10a017c177125396bf6745163fe24c455319cea69393ccbae42508156167b28a1d1050bdefa5a789bc389031bd86e72af5f5bc80a215260737839654998295d5aba8c11a5417b55d67201243393b7593400d46cca1d321c027bfb09cb08a1738c88b7d47e876ef7517f8d96cc1c93b9e93b7062227a55996fa958a684aaeda89587b015a6b336dfb610721298ac6ab713f3a2e37b2aa7b1ccd2a876f03c72546b861e351a73036f4b363137340efa7764c439f68d3c8e0723683aa8254a66284f447029a2e12c3e6aa668afb5be8a82576813fac7b8e61c5a88aff94ecc2770c585ecd292e4c5f9e1a55e0489bceffb204d672a6215f4f3980a646d9f880817c52dd +ciphertext = 2726c88c44097de218b782b16c655fc658d29386b80ccc0168220bfeb554b12a3ec13ade45147b3b68cf67384840e1b011b86808e2b922f7b9e0db40b5ebf11ee131a1b4c10a2d350c1cdce92b330de7f838e29062bb243e25f2f62422ff334f7ecb5863419b44024039d1f900d3a21f5f48bb78f066aa726e070711973c1f8de28efd8d71e0cb5ee72a9d675974c02286b56029dbba45e064bb68db2e25131243d9cdab71d2dc8b56263a6fe2b2d6bedf4cdbea2572e333c4b062c91622ee60d1e506384e17a10d08d61cacd407ec924944e9690a81d1f7f989cd58c243607c4cff68058ac8c970376585666d146bfe8816fdd0d20e13bdc0afd88ccc1282a17827adfa9c927c55ddb520c248216378b68908155a718f335c39d0504bfac4a069aaf2c64b8cd935d5494e31a399257997fa8df3c4237e4209deb9da336d4cbb116c531a8cef2f0be5184dd08668630632d030831dc13652370f0d7b54aba8b122f968b2e00af4a5d9c1790554b9077b2fec861ce9e8dc89eb21c23ccb68e9080c2cc0ad9dd4c3364183a164e9f57401653cbf95d0a58d289f481a38b8b13cef56926612848fad81e5f2a1468808ff45bef6de82c121a8d3e956710b5a0a37cde624d1aff6efefda13341a7cf6d1518b633f65fcf0b3b91c06769f307f94347c7e1efcc80e02e823dadbe0ffe2cb7f3bfbf3a60e8dd31506304155467d28b12740ad712177227b4468d5f4bd305ddd6341ba68ceaf4d4fade19fdadaa3db805d37671f1cac1c57882bd710b2a7545594320114ecafd0fda32fd9e06f7cf2f08ef27de1ea119239411a10598bef458b8f3604ba82afefbcfb7b6c92cd65e92e7518f506c684b08d156032fd00c3803cdecdb92351ad7a3b7768159deb534a24c9642684389399205a8b69f52e460be217ae7b5b08e8c1360b6ddd6ff35462d9066618ca07836a136d044794954e3812e29ed9b200d250f3dff0672aae2509b4f32cbd580631627085147c5fd76fabf284b88a836fc4a48911a892f03a92a4a497d62dfda5b71acf4dc4976c7670c88993a23b1bb0c21f6cef59b0ffa88c4c50393355a72299cdb456a592deb3f749e1341826b3e89c4138badfa1503041e50c70f8236ec881b08bba64c46d611e160cc9765c512574d875b50a5781a7871a6b4bdd02cb344a586bc1653ca974adb1175519a0371695d2490a54b2ac21d53916d584f597f7e861a051f93b64d5219339ec403d7d537271d5d9928e1530a6c6d0fe8e1055ce1eb70e5c929afdfd591cd8f9942b6fe252fc98801dc4ba50b9a9810819b1b245ca74a6d8238a4bb7a64cc6f3c7c4541779ccd0f8509d9202a88af0ab2552417b13c075e1c609af2281740847648719ed72e7695af239e0c288bd630c72d5957632c76e89b0c5dbbe74ced4a1536b1e7fbb2b7e6edf8feec8223428616ea5f967ed05eb2254598f3572e2627b6035025404911ce26378e8df914b06c6415e528f9e2901a90992a5eeb0a2326c8076ca8da8a80931b222b809bf62e3a5 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = c94f401604c8c4c78d8417c805cf723b14733044aa2755897f65987a6ef1846ea07aa84d6af8a956454036b79e145c93b9d4b862146bd4db824cabcb61fb91bd3d6f851c9e93bcf66e3c9e9c939be52fb07f6efd295d3a6efa9d3ea8861e39b1ad58eb8bde805a9cdd48179aa22d3c2ed7bb59d5c8ef75e281c77f83ac7b49eb997965b161ebd25b47ce6e3cd9ede4ef5ebbec8b7b4d20783d60d9ddbfe6ac387b629cfed351868186f6a0bf68905f9cecf353d3fb577c263ef919533c7044697da4f5bfb76bd9d367f44bfd3613351d95395f5cfbae63b2a56d8c69364f41e85d543ad8f35b940fbc3b48f63360c5daa98f59c7cb4634e5a3440dc5957a3644f6ae381389b64fe01113f9fd6e519113c17e64782239941cfbb11a647b814372e323f05844592cc3c17319b4200feb0bda3f5acac3f18bad085c8f27b7758b85e9316653baacf53dc94ccad37f99eddb9fe67e2a13662c77921e4a9a86d8d8978f811e53a60c1d89a1038483f6e5e6fbe09a3b7637fdfa45cfc3a81b96d84336cf594d2427fbe1bbb9c7b3685ea45e45c8ed731b9b75ccadbfdb768119b20a0c346156cbcd5bb108bdda0e3c6e949b9db0b4ae220f6c9169d8c5f38413c648eecfd623f35b383bdcd5f4a8d716fbebbbcc9f8d9bdbb5c8414fbce2f8ebb0d795c6786af95a7e7b16f9f7978a03558f997d9a873e9570273beb7e986ab9f56036dd022569d4c98a85bb98aa198deff63dc6bccd1f6d32ebab8caee5cf4717b17d99e25c67a8a57fc371153a4fd9d45fd3304a74b98393606004fd80454a005342c23e8a284bc5b9b7ea39e748a94739536b517dbce61addddb64c81001acbc2793f9f29b42214442fba962f43ed48d3d0db2e86d21a4de61c4b5948c7eedeb9fa5865cb0ff90b8eb9f727e137d6a678d9f746beaeb9db686ba84d65f6beabe332ff036bd123e620ad68e84d32ca5736d3ea3a02feacfe067dfe5a5b398575bbabe48ef6e55cefb4b67b34852dce758c58562dffd07aefe8d347ef2bd73f064f1f89f6be6bf3440f9e5b7468e93b8abec6be231b6bef7e4032ed4ed23c6da47d32edddd3757d6eff7453dda3ed810f9383fe7e82a85ad7a8b25ea97d1d2aa21238b25527d08b14d0291e68329bd2869889f8fe42ccfeae8ddba5ef37e3de649aa9ac56229494dc3eeb90b96ae4bf829af5f8c644e10a3bcd356af43f3654296bdb79b9b7d53f72321959b373f313aac107c8b7aeb83172778b7b199e7373d7fdf5ac6aeb40cfe750b82f7f47bddb910d880e4d5877b63ff6d6e6bf4a51cb1ec863a79b0e099308c4fcbb7997431dd8268a3b762b9a5e28eda14a4a92a5b55e7950268a9a845df889a98835cb9562a5a62785da5348b3398b39794dd9a18ea058bbabcc7740b00db8cdbb4e094fc7f14b47ff4cb424c6f52ccccee30398023a9b50b4bb4a3ceff1bdd7a0a54eb05fefc31e3f0353c7a1da6cbf3c7f5b448b86534fce3b3b82c3b82c44f0bca7c865baf2461b3d966ffe989fb37b78c5555a62a3439f3ba7646086e11346d79bb8352a286e552d94bb58b07cb832e3bf88031d34ed493446abe723e57e57e3589427301a6e40f47658258a761edcbdc046c08bb89726ab73a3355199a1833a1268a37a087ddb57ab621046db1f407c804c488e4196048ceb762b9024c2157e7dccaa1a762881280715a1467e766dccb159f4780a39bc4f4a59715700070318c2ae03706b639f79a8a81af34fbf6c9ace4843151ab5c3cc81af08ce392335e4fa913052119904745ec68cf3502f4663bda74522ddd61a318539e10a853bc90a5b06aa12018c6bac4a8123719c567719cb723b420540ebcd84c2787f37a76c6c40fc983436c26f7fdb14df17062be752af2c1f1cd1026856500f3831cca75eff7a08d4d9c819d295674550c1c951ff9a0155856c3cc143824556c09025d55b0db7192d969926c18912bf5ca8629401b8c53e23832cefdb369020583b360595541f48573ba1557fd0c1058a8cc5ea7ca7f092b7dc7b4b04490fa4e72a37aac0e33b1746aca327258d9d29acf140c5f70b8f94a23195d60d30a498259c6f9d06bd69f82398953b4fd39adeca972851431b59c9614b7867cb1228e2519ac130f003903d801f70bccd776a9b916684cd89cd71723ca732a21fecbb90d547646b987155cf5425abbb2406cdc1821afa8da120a540d1c3af175032444e1fd85f43f47903665be922636755b5e75a90931c66e89345f57ca4a032959bdb4521cb62bb1377dc5c99fbe36c71347b81a80b6b7251fac3732475009a719f4374bd5ff01cce4601e761a754e05756968f33fcac4d6a540d93951d0bb4d0d838a3112872020c2dc67718888dbf408941b877eb6543432675c879aa85f102e608aedf267e32d333ca9c3860f907f17b553580aec75902ec304e6c7996ee34061b40a9f4f8ba2ccc55775490dc9c2a6d5c0134e809bd305d7445c9ebf7b89f9604146b2e55a1090597033bab2a25a3886dc524f4908adbe98dc2d74386806ad641712d9c23a19562e4ac7f57a86fc98663e455bd963c4e63d8471b504c14eb718d8bcd6475cc45687f55099f8fe2035f3812f081b6df2a174999765cd69433e5312be67698346fa1030a40943f8927b2cd8a1e2cf2514333bce85a89a6a99d03c4a5c0b847550972f9d1448d1819b3582b99a50ff97c124398cff30967013c4dc4d374379b4e8b037eb0e570aec147a1c99cadbb651bfb576ad61bc5449c5737bc4ba4a01f24aad80375acbcbaafeb564665a192211b4d6918260c1251eaa1014c6f41427465609310d8b665c6763639c71ad48019905cc0874be438023936856017b5562a9ee79686bcb55e04a38eb9b3bbfc07acd4865860a77af3b5acf7db344f139f79d5953778124c2c92d29cbfedc21678e54861eca5cd350fa09b1365fb74435316f37386b9b510e2bc585da30a71ecc7b9913921ec8d8fba2dbc97807b693b1e306832507cac90410e0576611ba79c1ca9c0b106d0147680790ec5051798592d3035aef57a0174cbc70b435710c51695852841907d41a8180123a4d911787b674acb513c84047bbd5851c3e83a8a046062c06bd84397858241c95b8d8d2a2c53038856247506065a70a5a29b701bae1b488a68c2bf02472d86bcbfe263e7820902102c612747cd60344957a871c7774a0980b70b56f7bc45f8e2bd2085af080cb923b55640bab2aa2c30f206ccbad17bc9f58c1cda80399962268f2ae99c43bbc1fa7d8949cd772a745bd9ab018fd3f6ed02f32cd2bf845923e3ec3671cc7675a321af8584a0961101c04a432772431e77f5740ba3b2ef488d8c64c049c6dfc0f1476cffd520b055756162f7ec94243de6b14ac0b9e5fb366c +ciphertext = 0a307d1a8a695cbb2a421d2c316ba05165535ccd1cc9ddb641b9edc8dacfd10d001d7dc8166a7e405f6251abaac6d5f466438f4a2240557bd7cd6ef811d4e1334b76274dee6c34b79979e02db09a682b3f965d6356e9fe640643b03c9d3cc37af284ff51f1ac542060c0377df1bf3f577d387c8a5adb0b0a615e9d93c7b54a6c7e3593ac118fdd7cd1985414fdfcaaf20b5ebe647a7de9aae9b43f0e1836493fba2aedc459aec78bf697469daa96819fa276113504ea82d956255e0de55f8c6268881e2795527889278ee674580866739fe66b66e94ab71de0f7637214c2e804bfd8414ffd95a5aa0d1f694760169455a5d47bad6d68f277279527e8d2e6e95051c6c92fefea4e07610abfa63ae90fc38d3b819df566ff44379354bc4479007adb0fcc603a346debe6a2bf14afd1da6e6c04b1483637f0814b5bd5f92984ed8f895c35c9f7f2fb5032614e52ab183639e6caad3796b9ffead73a9822a23e997e0c99acd309d93d227b9bf1297edda5a443e4b01a0f67e5a25b2f395635a1fa9d25241649767baae14de7a4bf3d5cc8d7360460ff85ff0cdc646a4a2f8b5d1edd9e88e353f4771b2395095026b79daa65e25bf9c4d19761f3e9bb955dcc6f2f288b1537b263a026b7067a309b08130438db1c6790835695987b705520a215118b20e636145264e37a1577c7466de14c26e4c372b33059bbc913a559880e31820fd0be232eb7d289f5d6e9abeebd9018fa4247acc708f602b1e8692ad10b0dc6499f0293d1b0624ee40d7f13b235210087be1a8e2c709b88f6460db6135ccda532f8061772a5767501750e58ced64397bd0f7a280558e86d7fe81d34a24d5736e4e65e118c7296b020c55af0887743bd53e2a60f809a024c68bd1324f833e8e1d505080fec99b3e2098df4e844341f7becebd889c15706d7dde9dc754b6393da40167a2f00209eaf0583ae4ef4048dd026ccdc2884f17238207afb355a419f3666f80d963f338548b6fad3c9b4a569a964691f8cd20a1abb3e01fc5744aa4db5ba0594cf863f566e7b3eb401e62e05a84b30054b7798d5b81bf994a4fdd3a876b46898820fa4480dd9a1a5ca970b459a4366e5097b6d792ca598ba6785b0e3328aea07f594706af89d88727a0fd7a5d16604766aa73c21081303bd676ccbe0ab287f2ae1ae235fad0a3d2346df4da3cae145a0d2b7f2a70dbe3cc70304ce49e528e1ca56fdf81f33267402d271203b8990773a1fa03f18380efc7dab62ca34e28d5db918dd6365c2d79ecd5d70c95a395211afca1a0542201e731e61c1dbd31316dbc41ded48e70ef47e4fbbab6bab47a56dbdf58c5d741008c74823561937fecba694bd31538064bf242eb926875b094d0282a9583886bee06c948496c24d563210cd96579dee6de96d29066ad4e1f9d1ef1ed463f7c9d21bac44c9cf303922fff1337fbfc5b9559736801f80974dda71ca185baf31f4e0e2936b4d3ba6f85539816b69a8d433d84a7a88d2c3abacc5d4838fd3c2952f293a0adfead7b2829e4d +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 0c9c633ff39d1c7cf9f8356aa02981ddfe89d6535e2bddd750d3db111a88b32df4e58f3e7d54361403d212f7c78f1679dab68b71aa9925386590ddc8e2984abecd9647453b3fd99dd97df38c04dd921fa7dcb57e0664d148ea4ad6f97020474afb65c5c67ab4febe515c6592942bee38e4d97155bd194b5324f464dbe678ece9b5f8f57822f87ed7f3a6b57dca3fea3314b4bb404cb66e3bbf8f2953f278fcdb65cfb489d6b3a6f443775796564d75cbb4b9cbf4a8a98d7733f69f9fd4ba89782f974ae69e808e97cb2478f52c8539c2454041d9f32f33b43ed8359dd6856c98ba50cd9e92f9a4ad497f901e59e159b5af795ab0acf0aa753931f47764b6cbab6968c7a779802b469acbee7f677a0a485ff5cab2f038e12ee8c3525f703cbe4127b33fb01adce21cc607e49a73544029baca215a67091a9ad89a408794c4d2da78558bed31686c6b4c3749958efd6d89201fc9e0b7c19613823eeab1d8f672089339e47ce6dbfdc3b7d537286d5c26b7f3519af651d8762ac373817bbddbfceebdafcf910afb66896c55a4c946a791e66dfff19aa21dbe32322bbfd127c10d87563028bc4acff2e65deacdd8e9928f8e4d2eea54566e5724b40a55fc0f4632b7b85f0445c881938134e5e6113560b0065bec4d9fcfbf5f797cdba0bbe90fbcd2150d7916ca93c2abb11bd88553aa34c3d5e8bfec423728c86f5f9c301aef712f5f2f68391114dffa4d5615eebaac17de0f9d337e134e3ca3d81514a937f9798ea7b57b3a3a0c8f9a2697b0778c802116c067a5c368576395c43d3398ff97c77051ace6436f84e19bac181afa6cb85d66bea1163e6b0864edc33ec124ce84e82c69202d749a4b92f3eed40d09519df7678bcf82fff9cf5124acbe04388ccab61b07ec87ab3b830a3ef78dda69bd67711ef42413ee89a895af8ec8acb9e69d6495d00ecd8cadc27bee32c16aab0ebc4b13abb37d67ced11ad246e87be1233ff09a6802f6371858972e2eb48e5edd8cf3a8a1e664f73df8cf95ea144d37143cf0e8eaad7df3f581b39b5da3f21c07f224a73daa2b61f3d7c8f25a973b8e5b362fd6800bbcbb6dac8c2a86a7758b38339752cf3ea65f3d84ec982a36d256c69af739349e2d6ce9c9a70dcbda951adb648e5994a687881e578cdff9439e4df8489ec6ad9258eba796e8a6ff5483a71887e55783aa5fd1e5b8889897de67e3feabbe3251a6f4f5bf8f22f8d903e591331ca793cdcef824bc62168be6eb8f7caf99bd5e9b0c47d509e38378fe717625f1f8fc882d1b8d0db3c2109a43d1754f765f9f7b17eb759fb753688feffe2fdb2e7ccba484ab89e92b79337828e1986430bddde0b50a5621fce5dc7bb545cabc77c336893addf4436e732b905e7d769865cdee0a9906438e9eafef521862a42f7baba3f02eadcd1906f31bb68fdb8e55ae48e32dffa30a4a5c3ecdb17e0dd26fac3bdd56cd9d06cc8f2c6b4ad4e2070cebebddcd885d6caf6cd43a4e513f0a4ac07f5818c7686f0745ece93c24ff951fef63f51a3fb373d076dca4eb8da156dc6b4258f46f638024b8782c9757e076ceaf18cc27284c321ba9176645474dad32d97e6575db39c9b23fb8d405f8cec82abf70ea4fbac16e6e3c5e5d9c8ca207a5c77c7883b917fe0463d3101962b802549a87bf39b9bc7a30a5b654c9c96b14bc61506371e4768429db8f7c0a6204903b9bc9311c66b907c5825621b7ebfb52f6c7cf75c169c17129595631a2fa95920317aad4cb338329adc69c6795158558638c474710c78763e012240cbdc2e586adf93c028522321a94cb766f9e983fb5110a10476ecba92fc0c120cc83632409940db249ec569ed5740471c86623b06962910307781349f342c759886f7c376ce708091019fc407eeae76409387d151c97cf7270319143471a84994bb596f9b5e1a78d33428740fcbab415c575e478db4b4e30771802e409b8c1ad4ecc9cec1b7396e664645cce83a40d512684e0b2750d8445d2180be5b4cfc09bc9fffc8d6e49b49d68c4d849b584512cbb55283722ced5566149811545609a4c5459f523c1c76667859760e690385f65768331b7654c30b8c0b26f2b8089a3c5b4f21eed42179c54ae61d22736512fa3aac6eb018946a47cd79acd545719c829b304477541ea92b10a1ccae8b36ba83d5ad83083fcb51df653ce899227c52581699b7150456cfa1910212f7678056a33755ddc7d0648164aa297f196057060009dea8d87e86b6abc0106a5536d7c83933ab12e294b4f50870fa0bea16ab49b88a60ba7790549ccc0e6571e81875d5632dd8a5627e48e0395bb4c243ed9d53cce7b591949408d2c87a5e295e3c3231f4132e1117b835529456a53d3d748c16280f4d597573685b04780f611094c665c66164a1323c290ba8c8b1031b142a3b53062ad5c59d8d112f9926e5aa591aba711ee2ba1509aa09b86c60a969020d74e238b849374bcae7788fae61296d5ac7ad0927ee30912c4287e3981b7851d5823295076365196bfbee4a3cc189020254f31b06fd8d70c43a94cf380c01936465a334fa59b3d39296305dc8b775269ee204639bb3a30ac437936cbd734a5c6477b2a451eaa0159e571bb12473b77698621d5247eb5012f608c6f070a67551f6f63abe87ba12a56b2b2dba44bf72e01c9a2c490579d2c103ce91a841c4f4b3aafddaa0cc3d33d31ec3ffb4a3f9ab87f93494720d386bb13cc482a4adac46395479d1421aa91216bbf56bcecb89f11588b4085a62ba0a47ef9a184c2c9346525ce006ca4819857fac8b1498c9ca1222175ca5b01b6bd502f69f8977a0b3b04987a1897a8f2f20dcddb098ad070d15c15c099a5672c17087c6b58245bc25c382ed3bfd5ba9b8e48932a27546a089113f37e8c85971fa10d465970d61446f106cca6200f85eb2de2947bb4ec57e58c1f7be6b6fbc025a4a41eb05c516578ae9ba4c197b692d20976116ba35660cc5b612b616269a837012230b65f2913e5d0362d0b510f1272716a4dd2832d3bacc914929ff33354c01217d8a0745c9263b5d80a4f497d99d98a4d895b59a59a1dc173ca6945fa54c398f351c8c3ab8d66cb8971a68157ce3ce82104094fc83c7306d242f1f0497180842beb8e126988c5a830d2a39c2711b033490fe1d53e432c7a453b4ceb05a5644253797135231228f246bc6a1445efc16b2f2bc674327a62ec32dbc209f2c4a5c600920d2856dc34549bc4656f7953e697cea6f2891fd65321f89bf2d90cf3dfc681c2fd81792135e1938ca482ef3c253d8976201852444e79836213a513bd4cfd42ed281304e3ee4560e4e0c60fa53781f83d5bd2bbea52e40771856eb77e4633504899fcb86c6a3d433d0b8d60e26f07bd61f1d4ed69bd +ciphertext = 39acb3d169060aa5a9a7aa6d76e53f8e4cd790e536b1947c3f0e5c084348c8f3f5712ad3ddf33d798b7522fa7e8f570108897391abd2c0ef86e04823b115adc2f106ca8239a4f8a52d38653c256262aee0b5560b9f74e285ae1c190d2ce0e0eb65668087b98ebc9eaf32db83fbc09b83410dab78038cfe192ae229ce2bc82fed7d653ca71fef58d6f3ea9acac45967d09478080760dfeebf095d0bdf723836903b8fde5b3e74cf57a1edc1d178bc29c6cab5c4381bfb591952bfc70444951193c3bb0fb8645c7d9eab913d64cfdb76e1a2f02bd7f9c98c8042146c5428d641a79046d92aa6f926d4409f62ba47f73255ca57a781cc01f2a6c1c5bcfa890ff164910e4780b322c4f2a0ecd2fd2f8fc7a2870fa3c636afb0910d25b4c56e060bb22e969a37bcdc29f3a3de70bdca6a59d803f59a942694db2cbf73de3a787ea166a1c111556c1866468898539a7f36f2ed7d15324b76879af9b9b70bf99546345e0ec17fe6f1311e9f438dd92cbca8a02d7c3778f5b88f9191ad12395ffdba04509f3f338b0494ace5d52b1e8e3534b901fda4001d493f9b83f89a30ec57a5aaf4d5102b82b0451566634ba68e1f7e93cec122e7ab4f250bc78b6df0a9b7d84a4de5fb51e1b7381497ddf72ecb010832b5e0dbd34e41e1189744174dc01a7ff3eafcd717dc2cb56cc145b6a8dfcd404b748a1dd9cae69b1f3db48e414584d1cb902904b7652512a9f191dd7a95ec60d1387e1bc4b6943c7a6bda205343e2e67583dc06c72495722a678ae50ef4a8eb0caacf9a41dc13a56c5dc3e2d0b98d2804fdf7a43d0fa2d20722405bc002d71432424c88ea9dbdac6e8dcc81e660e85e4c650a90c7e6d0c50e5e14a2919b399b1838bbd7543bb95275e341ce086eb85eba4dff4c9d3aecc99829efdd0d68514fc304e5e2529d04c9fbf79897620d9307605bc566fc6ae6f176a25ba26859097a241974cdec07837a0c1cb86e00fc8f8a4365a7c348379eb60f12e0b1253f297fabf6e6b38c9cb226f14a4ca9dbcb1120969fd56c2ab38dd075351d33f853ca3c24f4afd756370b0ea4dba295652354b89d004854cd89f57cd583b7a7a415e48e4a5e38941dbcb1c0e5d55c479a871b8eec04e4d5a73c93ad1a7183093c28589612c6a4041d98809db41238efab617150bd9f9b51a279682ae75fe7a057cee50f9a98d6abb1c7efdc2a0b1c0bbede9e1d19a2762047ecd4f37416a3f86dafa241e078b3defcc414afe25cebda4008af5a356d10ff83dbcb6ca1e71268f60524849dac904d7c0e638fa3a0716141bb8f5c019228c930cac73143953e4cc86c554ee7a700bf5aeae2c8e872da8fe7c6f27d901bb74d87e1f1626fb53ee3bb080c21fcc41f828032214a738e28a51cd5085d0f5a0b15629268461561ed7caffab7f22c2d00a2fc9276bb80e9964d0bad8a5ce2b627479439a80587b9e22e0b579c59b59ace59510c206653842b2a4a75d38f2c7984503ca35a62952afbbe25049ce84f5eed70686848790a96f42a3e3572f130b2 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 2ecb7cabaeea306e5a13cb82e5a8be86eec2bdfd6c71b969678f532639b57b9e537e57de8514390949cfadd8db0e5c3ee3eca86afff25066dd8896b5f6fbdfc6fcda6e0e760daed8b8af6cd89d39bcb3cf9fad4330ed581626cfedabc12f758b407c8e9dfa373f45c377fa6d41b7f05a83f2b737cdabd8e14df437e864c4abbb3dd084964fa7eb37ef4406a7a7545af60e9e7c0ef95ccf33b1833bb6d433fbfce37b970d4ed7779258faaedd9abaec5d51d806d6eb85be0f9599ff28b40587488fa376729685a8336c0eefe3f55447e2c489521eb98e73bd784bfd08a6dabdffff6f894ae5456577b8e156c66f6f1bbebdacd4d1ac43b77936f23d60d43d5a3893a82588ee489f8fc59fadc16b31b2669882fca1068e603c5ddf297b7fe85f5d20f8f958099b2e1e8ed4ae4a8b9e57325f5c470b7852a9b0ef04b4a4bdb65b4c5d7d486366175540b9ee752993ba979d8a446f94088c7c4ad2fd6cd520adda141957e63cbd71bad12dc6da02b3872f3a623218a6b106f9fe8580e97f5d9fb647f128c2519a8a0ddd64977e616b56fb849d4ce72ec95ff44697ca71cea3deaf1bf8a6448a1c6b38c158d0427683b71c954e49b6a3b978417b78debea1ba7f9b8926db4c7ba4a04efe2373f4619e3d82d655d7fddb5b17a6368f7d8a0781e12a68c536ab419d9f46b7e73fa9cc9a9d371dcbc0b8a433446e33ad1f3a73664a15ee409b4476ac1dec18ff6ebe968ed8c6a9d59eb92f234499435e2d06e6c849be5f74f2c8bc9de9fe48a8cd713d93642dc852b33652298de0f03bed7b77972c797add3a38651b4c11ea968ce53f10d38df426d1010bdfe557bcf5b3328f2fe50a8cdd76a8e2acffad2c1c7661844e6b34b25e7a30ec64b6e7e4f82f48344bfc6f33ab3c428c76705cb9b1e963782ec9ef6d874027d13384d8299fb4af17474914ec606b3f67ade46cfeb0c9df84508d594f265a8fb639e209c9b7fc418a33daaf44dbba34c1c66b7d5719e8ed6caf906f76873dd58cc7cb50eec762aa96a60e5b832e6e204c58221ffcaa84af9c1fb9c9bc683747a2724c88e75d539779742edca6a6a6c5f5d68faaf73d4cc7aabaced5f4aeb46cc96c9169e2e807aa6c94ef6be6381216fed2dd7bc9164eccec7e677fd56313cc32f63c628ecf3343adc9073888d575705d8d660f5bf659da5f7be64aa4f466f6dc451dc72aa69d2dbed459b890a4dbf2a86e3d44f7dac96aca21169f932a6135df7a6c05582e93dc0cae37df16dc6249b36093ecc6b993e3d455c2f6e695ceeb520c64078bb552a65a3bab407d46c0ee173bbc5fa95c7cbd871f3810cdcf1655c8e79ebb04a3e03ed8da5fd9fb4a5ea0d78768514f84ae5f580f26f47b3c44af0a397f28ce3d1cde4d34cc49bf6b3998b061ffa9a013889685446c6f81b344ec08e8300b0e3390a881a3a4937c5efbf4745b069acbf63e5b9955aa4999ba827bccbbf776839f91a90672720591056ffd6ade834886bde77cd78b6d61305833fefa710ebbc0dd17f9494af85acbcf2708cf93ecc76b85691f2dbfa4379c862e420c33ef694f9bb5c76e69378f6ef3475fca5760a5be82acfb4fa955e1ed931423b0a625e94c36f25bc538e2ebf9b873b2397a7c7ada2f4b0b589ebc97c50174e4317ed5d9cf2878c924937bd258bacbfc83283a218d443d8ee43f8cf3c64459b189e6b3ad100a6c6a3ede9916f89b8bb67cac332c0519f502a4c427f5c9af1a16a59a2122521a0c624a20149765e986339ed63567cc29cff15d7e8ac026c96f08d6ac4e057db4e66361b18ccdc3bcffc300a996ab7346232db7310662c75b39ad7aa080b23763ece54960397b8de836071b8914d56f95a681accb8fcb9529e5e4cfc2ec0601f7b0b291524e180aa0a69fa74ac2f17aa88162c481f51543a5a527da5c42b59f9a72b14dc91574b51e5806ace3f022d1f19e3eb621560478bb70beb8407719a01e16313d2f0c785e3b9886f679acfa465ba974676c0689a149ac04996f4132dc4974f2fc322b56115a64b0b5dbb8dc71869cc655dd61390b032f062b024bb71505640a41cc6174b68870da11eaeac28ad061f3abccf4e12231655eaf9285b205251ea69371d90527793495835715ac005868a78b1cae80025426848c4ae869b52034bb266e1b97480aaa7a31e384780442d9933fdb750efaeac0bfa802e5314d28a17d374caa05b46121e16362e8341dd923a66872df3c942177b58951c40ad1641f53a53d8708ebcc22aac67ef262b6155007dc6880a1f45cad3a5312b282055b1e0b181d9b396591fa78dfccb9d6a92d5cf8189c14c68cf4238654716f0a1e4f2542cd35a7e4e2185814c1f5b16d8c423213c69d5958c46960b8df589c185087ec5474df3c5112b5bb6bbcc6ab7160abdc2ab28801d775caafa049479a837cfc8847763559ea86239889385baa43a2848b489087fb43aa20acd7ac05606767798500f9271271e52032f21fc2a82d8d15bf774771b69c570ec488053743dc5398c4363aeb3932a5c54d16f45a033386dbe3b2d0a851116c2cd2fa4671b95cf7e60bdcb4976a2393647b714031870b1a6b2d486a5cf2a8093b7b948c9418f3a27f6296ea12336b8a6dd5a5715ce9a70dc6978038369a10332e3ab6c2971961d5c66441abc3290113b21c46e96c509aaf09e658d9b77928935b9a122e42bba23f920b58ea48f3f19a7924128669c09e135f772c275e55904400495153a691794a8d182ee1314446371501e87c41a944f850c9cd288cc2ea90a4e27864c79e554cc5924c4ca9a217dca424ee8b76e49993ae4b085e9809eae27401eb9c6c794a67a31705876243478f86d5b9f9cb3295422816526439950a412b4d1d28a70c6b9794c959be155aadb39e00b418efd0664b08843d20b71c547f1468c5fdd92b9d818336282f34f19b515946a7961b5a9319d9444cdc1aba840cbb57272e4da4ab20facd5fe4958a57c3c812978fd772c2862dea8b60b30a601b692dadaaba0f361cff27c5c734a42265341641b861b7899cb311e7e0acce396bce2809f24289c5361b91cba88493991987c0aca3b070411481e154104c15780abafe725dd3e1adf00bb0eff4a29298ac10c63fc0669df6379294aabb4588aad2087c9c16c9afb654f0c9c213d79cee1a843a84742d574de252a4f24795e9aa631d5198f07511160300a2e02a402b4cf8aa556ce67bd341307ce5a1eb6609efea3f066379865489701783b2c95ee6967f0893d44d76104bf396577fd719d69eb306117f3abd65385a87af12d1bb6d04330c2e803c2872400c49e1bb10232946ab939319e84ff32cd354dc15d082cde5a3ded5edaec5de3bf5b4d7c2f2e18e87f499c1968993eff196753db8045e2c8ba8 +ciphertext = 0899b2fb6c3e1b50c82cc10ece1871e4288e619f6f83fe6c3373b7aec9bc0fd4fadcb8a1cae8c76f7bca200d22bc19130fd47fabe13d5af97b927166a5cef08c3b54a9311ca168f27252a389b41cf76b7ed09405d0805e44134bd0a90c29e28bb2488e063debef324014a7783cbc81741b0b7dc2a471ef3aebebb593d995b91eff21343f19521523e53319a21a03996e55036989a3d2eba8986100188daa5b243ceb9bf10379ac3cfa54ddc3b83f91d038c9dce1238782129682d38b605f652b73ea182b0ac01460fb45f0c05cc545808b87f84f00d96fb14915e1802dd6456f5466f8eeb70571afb129844dc95f87bb88d4270edd50971247ce1a2c2a07573d5a3efe3dec8989e9670974139102270b499ff657c2ef9aec1a1ae2a6a0ec968e58a0bfd58552bc4ad2de49df561e1c59c471990044dbd6f29ce4509a92466337704fd9deb5452b6d2558f2f76d6cce661414872dc0a0b9faca3874a9baf70c07e72562941e9b74b027818cf9e20519ff714f743fa7a53a778bb161739efb49e8cdf3ec9bcca18a72ef9a34f3cda4b313710cfed57e5bd7a6801428f7eae5b531744d8fa5d7aeea0bfd0b58d7585e328e065908fd9b4b853041fabea2acca4875cbbbf2bb73cd8c876fffae08c5c91e6d0938539c1c6f96852ae9c9aa90865f1ba78e5a17a00f8656ebd1e52024c940995b3b38b954d1bd3267636c74498cf4a996ddb024db76445b9d34687edd5ef67bac73c01f3a334bfc866a2fb036d2b00972ee4dfb7c6e8748cfd69698e0ffd9d9062c00ed57285cc96759fb99dc1ce49e6f76a18034f77fdb1dbb83b8926e37ffe62662e49a8f42d7affac1ea512302cf7f590865f01aca869188da43018a3f21a15b917e2878500ba1d1a2ac7e87c0f06a23bd20f7ee2e7399fad9a0f728161b6cf3ed9c4e57e66e71deef1838a56a70d4b59b4b49e0411ea09c91bf5fed61fc9d1d164a9176cd5ea8cf7639eb9896529260a8b76e2c26987278c11e0129f3ca598290ce7ee82353af0f99e15baf1470f6c3a2b3dcc141fe2090f87fc43cbe17769b3b7a5ee05cef079d4a153f8f160744dac6d5a8b208b544e51e75fc9a332c5cf95d39a27b21d4f98ac411273b9605068e167a583f8d43d6c764c6974cfcbaff4966ada842b9a60607b17897ca32793522da30460fadcbfc25e053d3f14877852769bd2d55fc27363b8e9ece93d9194dd65305b0b251479f0a90dae87758e08f0b4ee160e3c31ffa7f1570dced7f8a8a19f64e5df2d77c51696569049eedc6ce026f9228a01aa3d9a9a2d8a571b124763d1c9456fb695ce0284ae655c64315debec95c5587d25fb0fe9be32146733147cb7988bd8e1d9256e460958adbe92dd128327c0d4b7fe9443b01628260ef3edc66da4242077f1b29ce31d9b5b31d328972652e81b7d96cf4661ea5910343cf07007a5a07a87eac17fb52813ba186c499db08b584dafb6331255c53070a5795540ed2927ec82ff2f0cb4e182ef5517b1110646b2216ed6eefdc130fe528faed +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = f3ac3178bc3e6c9dd2ec3dd46ef3f88f9cc63c1abd0b14a118e5fe2c9a998d4c67e30e4415084f520945f55b985adac8c513d79789aecc59eeb7ba54103fbe8823a4a837786cee40d36dcff5d46186588f50ef419e0c4ba1c6e9567b9d8206b53bcef8974d52102f59f5d685497e498b23696b4fe813d7a544e77fb42ddb34c89af2c63856fb43bb0a74a6073959eee99c4d98386984847962b353b4d81aaf4cf65349d8e97db8c1b29a91fde5af1f9749a96b3b82c567207a81a163347919aea565304b58f0369799d45fce734e5cf1c692537a48ac6d3b9dc741a08a66d874bf46daad570b6f204e33068aed900ca87dcf5e91c4ce1c84b46d3c5baad46fee2f7269fea9dba968f0ff7249b3c6e4c7c19e9ae3047afb45ccf4f53d4a81cd9d37bcf8a09f4f33e97181b8393eaa82a6fa54f2e76dd88791b5c3773717d46c46fd94ea547d3d50ab35e953464f4e64d765bd8103a88e448446f6c8f376ce5e3ca9a98798639b83638ada857becee3c77d5471975c51b8088af6348babefd234d27d6c055d3aab766db28dcc13d343a7963dac868b5f6ac83af04b8d8bfdb64dabe9df3fa5c2bfc2acaccc4588c1caf6f556faaa6cebdbc36467f346a1ab5c5841ad7bd33ceb54d93659bb0451c4c87ca485227fdc0bc3674c4f75078cd2b9a3afe6ebfe464e07d19fe594dc4968c547adc723c1970cff7d5c5d33e3a4533f10f8655c6ba44bbf2c2a4c85b8fb4b6dcc09775e24e43c985459cb2bbe519ebeec6f348d017a785484802e9de032fca2313b4fbc465dfcdcd4f3a5675e33cf0db79145867d6fdb8f44d526c8a744929728ceccd146b6e67dd3f660aa4e3ee5d200b5960f3a03b67ebb2e59160048e499ce538adf7e07987ddd841bdaca79764bcaa1c9843fccc65b53695335d9d4cc78aed62571665da99b4e10368467aa551775c39c7c9dfe7624e8940f294c86565d3f2f970071b40f6ba3544c64c418871858f8be6057a9ea7f6326d4901a7870733580c6ab8d4bae8b49cb4d567577aa8b0ca2490edc68b168583b8b38415e3ff5558996cd9e1a957d95153dc3607e813fec57abef327d4ec441c980c286b71b3e748ea54df2a5580de701d3e73944b7b411e7ef9dbd8a8dd3d4563eb8de4c753f697ec4b4303448c261bd783d8eed599425dabe68078f8bf795c8cf65a95f366bcade10cc75d3f6d64bfee7cf1497f36c48e68b46ec084e7b2a876cb556c705c7ddc387d75ffb0aeec9071eff7af09a324495f551680a474328d379aac253a6f4c42c865a183d7c2f4f8ca94b9f389beafbb64d8cb2cdfcd3c945e39f3acdb7e16a45c03ec3298b3c44eacee76dd49b2ebbcf3ff9a2d3b7fc68644541de0e15fa0d357809009cd7876d4a39898b385b70ad7b3bf1eeea83b93d54f6f502da3d0836fc6fb5330ae453628501315dc17edec585f884e49a82a5adbdbc8bc2c7598d558f78703ab4d6d7a17bebab74d52f41ad6d49e5cd048f5f13cd69d956f2a5662e068d4183932b62e6ca76f74214acf5d0ea7f4c77ec06ffdb786d68fa4e51f7ac3394ef59b53bc48e99c51bf60fafcdb7bd3cd4fa9b5a6cf588dfd98fce5aaefbe5fe75e355537953d9b85813e3b56336f0846c63e2c3018bc8733f05f8ce3b614088a787669205ac9889bce2d3b523f366f4bf811f004666b2b654431b135d97a70a00fb9a3928c1a4a2c7285f6f7b19bb766bbe6b966b4013ec06833ec6f1118a772c2465d81b77ba740b7ea33129218542a41e2f1b10f42bb42396e9a6c5011351e783641aa692a982272d9544ac93580fa6a51b8c7b6a4b5b1ce3b58f1d901855bbb2b68b988953ab63607d988999ed96e5a4b963497a061ac69bd90c4eab7c0dc17820b6963b0293d4ca30d82f5997a877a9aa71c5c7893c1d153ac6779d0a88190b13df828bf3afac9d7ea392fea899ef844535187af673972399a5fa31034c02d70b57b97434ecbf3b1985c86ec75b23ac0afaa67225f12a257b78341966bfd2569670680e012899c112ad3873aaaf26d2f4a5c8cc133c92b9a446530c169b6b87b118d03329374a71ada1778a2035986ceae200c763a12b6e2b2fdb672b4d58d8be640e61576f2cac617a5ada5d1b874bbac9d272ee4c881bbdcca1c9a84626012b988395eb5a4a48bab1e7551b6cb57ea7b627138c3ac252bda1a83ccfaad69e38ceda6b149c1b3ba295fd5025c63225ce88ccdfbfa6b3950cbcdf96e14dc0962745a5fa32d10525f71d895a2085620c89024d922359741be366ce9038aa3b260320a456858a7b8d01bca12316e9c6d1782bedcb590a1d2ad9ada0c26d3818652ce6f3b6403c94dbcd1424d090e9deac559472c9ac19cbb26c16e8b27db9140a1161ea96a171728689cd6b6ba0c8002ba6c46719a1a0c175638770cd088ae29a7fa958209788ade14354a1b0880f05ef7c15a6786be063b357fc7521973abe4fcac0a8c26f3eaa052959e2f973709c9c6bbf4c889c8b76c0ac81353b4a4dc81b7d316f75accdd1911df10a7e838a7c2023ea1eb0a956abb53fba02c48396807229f492966796805e04ad62b8107493aab264a5beb32f5459c06aa6e7f79acbf171899a911fa910dfa6687b2c28c1d419a4817abcf656ff669b587b72374f3cc20b92858361d21bb85a3b9aba157100875c993b54ccbc84db2d72374bcae29c5479cc95197e625da047447ea5797551595853651912daec4891e68901bb67faa98bc5050bb50e913645874fb7a0e51c816acc88a7f8a4ad383170a583a2e17b0d5766e12dcc827386ba8d868ee16b2fb892aca3941cdfa7a487c13af9787a309779b759cdc037c13e839314803bb10a3ab19b7fae477c8c322bf05bd3ad9cfb0b241371c85ffcb607748cb518a6c896830b191737ba289b15288ab59869e22637c57019818801ef9a6b7160ac1b5b4d7519b41905e6687b3fa7230eb88a3c9530813561308b68bd2b740e7aa08ca72cd6468c008ccab34ab99b6773c533b3914b19b2b80bf7e783e7bd9366c8962e7f3410f34651ee606eb737e6c9c5f6d306af7348ce955228cf02d15b8abaed16994b56260221beb1a29be5596e204b9ce111127989bd2ab49cf27c976f74aa7b084fa6b8400a25f3c36213f7c2d160045d865c75aa14542f5a4e4d1459b5676491c6a3fa0a2f0319ca1a63a401c9c3a14c94f0016a9a69e64c522aee93e8b96b4f6691322242b20353e0d8b995a6a9129e961ae7349f92c92a90b833e82b9fae1ad459ad417635c409c28f9ef936ae28d221563e30f83162cef01b482889e5818ac8d7a38c781e3a0bc43d088e6d391d1d67d9639b260bb6f58a19a57150d1c96249919cedc2369d8d739ab125e0d2ccb82dfebcd90240a545cdfe07511f2 +ciphertext = ed4b1d8efb6224a8c0139d9df0f1dfdafd3a765d70e60099d700efb4910568ca3241f67b34d34aba653d0ee0beb023b5473f34398e5e5a62bc482b81382cda3249bbe50339843c37ecba16481b66da65c38a092a970d949d8e095f474e2deddea94e1d9997001a131e738956253fefb026076dee64e97ceead6b43109ac533ebcb1a05e606f1cfaf62f956bde4963f6b91f3774d4432114a4b14091790ca9a583a3418d1a3adbca8e04944a8dabc7d636819237991837eb8144168f4ad813f56e48aee382bf8e01a837e65a4e0ebb77e5e533bb718ca1bf0374da381fcabc5a38aa37f9a68f9d70656d0381916b7b74dcac08d444f532fa357323534bb7bf1e0413c8074e722ecb22a748636dae0ba5159d071c8a7ab0d2e2b4610e8ab3291492f429ef31f22f9d9a8a209a8fabc2c2e761eafe57c96a71e2cfd119f78c4240e6ef8b0aab89d4a0acd23d319b390a18696892d33de135092fb0035cc5f7e4d221dd4531cf6cca3e0e1c9eb0607cec1bd279ef77681b8ba22a6f8079095f6762d518c7472ab9e7292980bc2486fb8cc80d91fe175c668ba11429bbaaff4dd0088782ebccfae7eb4484800e0a183e598be22a64cc27aecabecd69b73ebe3bba2170db602e9c0e6553081458150f05d50d8a804fd80bfab0cc8119a865d4e558f06a7875b885571be68645b568de8182614c66bf0ed74a9defaf039ee478d1c026112dd94ff4a89b553a015ec5e21503312d7b3e3d163103c660a5312d1b56b009fa393ead12030f50cb495145fa4bf2fb95831aba27609620c0281d2887c2e49503ef4b0dd91db1b6fdba7c133846b775bc861dcc122514a3640c0098e628c8cc8ca313d94a4a2acca1da96ec33efa49eede82545094056ca79ce138b79131ed8ab224ef00839a388b0b5338629449bd5e2614b83ca644ded974a3eea42fa7bf75410a1c52ecc691b9bcaaf751beb00d0acbc5e05c5f1c6593dc674a049f652c2774e8337a72d94be074ec12863f37e6b719993c010a449e80c49998c0b7771abe617811e930300ff4302a3d1901a8a2b8fd5d5a569ea76858dc51c72cebc66f1a2eb7f73296d4bb251a8e9e5e33fc73308ba7cc5412159c0700e8d0a6ba332fa23386c06b4e551c849f11b00deec734870391cff398079a70e3f4f883e5b0c2ebf8d6a52146e62e37d62fc9c1ddbd8b1fb29d6c149d4573c435199056611b3bd76458a02f7f7daacfd2ef1b1ce3da534bca74a4bff0559380569275ba97f51538edc74844fa5a034a2b1b1e99f03de9647172365abf7cf7f3e94f2dc0fcefde3a9a6cb44d0da22d8bf35f9445bbecb3941ab70f0b9a7ea7aac71d6c49789fc72693262aba0a6a16fcbbc0956b8e04b4446b2791865d34fde941716a13bcd76729508a92dc7c5b2d2ff8160554f5fa5ae3cf701aed0d13128a76d0d0ed964da3ae47e50bd49650205effc5fff4d1dc1dbd426aff5d387b47ff9c54d7f1fc4fe65d60600c6f4b98aa53b0fde6a8e7e6320e8e0c98a59cb8aeff013cab388f5ea822 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 3707d9958d38272fac6687b4b15bbdbc1a9ad7467e8ff4cf45fd614de74b969eb9c65edd2e7d84bb57ac27963aafbce48df8dddb6f32f5adc634d677a81cf26fe6706329ec05a54afd0f6080877538f63df93cc6fdecbbc0a9a0a52e5488eaea2f8beea8f8b917f32f397b94c90e70bce4f3c2feba4c736449f84bafd6711c0d70daf7fde1ea3923435fe15a4fb35ac98d6379f0a44c200a37704b5b269ba3a555961aca5e2dce518fa4bad4cf3439ed6952c9317d198b0d2efd79a89560dc3361f573309fdce5de6ed448ac2feff1c8ea36027dfc27f640dcc394a7ecb5079978d05fb80eee5c3015839a44b9ee36837866c5c8e9579849b331e53dbc049e46dbb525dfd90a54ba793c84552da7c3cf9e78a9b8c83c310d88df751f7c02a59ab69ceb29a5fd001f96d0a4dedc338df4eec1c8e34fd0dac4d5596f98afafa99bee8be46bc0a96df51f639ae5b52239d86229b5bc79ac020b61a57cd4092ce0cf9940f798a9c50ba1f5fb30bfa947f20b62a71fe5c5a88d23c7dc0e299c53f49a1ee5e1ac68e2568e33dafe95e1fb5d783e4559ea79e63a88e88ec4234e55abb5ca92fd89c0d6d9cecca32e549b0ccae67da3d7a3a64681b8e5a69c5d7e78775126f483e7701447d34f0864d8d53201fab9763c7921eca6f21f47e7ea364298c1c3ab893549572bec45c1a8c3b88659cfe5f6811bf3f2095aa7ce424d7e78198ed9f93d63b52547b9c731f9933622a33c7a8b927b6de91593488faadd1243e0189e9159c7a027c39570fed9394ae67a6475cebb492247368483e9d26e490ed5f396d7babfb638bdfaf9f50c9ce383e4fc858455f63fcd7dcfcb85edf22f74feeb45a124ab1b997c917a550c3469a1ce85ec0f38ffcb4dcbf751e12ca17b7eb808be446eb7e80ef3d2e6998ef9eefa857c84ffc377f5f4ffd51f38a5434522a9e6a715977025b3b4b6d60f778de7e4f6a2f95927335cb30fbf418db8510cc0db1fc4eaec4bbfb4f998ffe504b8c5d336d4f1d66e8d55b50c393f973acd38af36db595e3ffd8239d4ffb5f9f43d967181b9b94f55f1c104a8ab7f6dec057abe4e9bc8c6cf350c91acb78b094fe4504d9f78a9f652f3deed7ba2375b3245d877c8e8b874fd42717ec95663349548ea2c74fb1538fb9945c759aedfe469cd091b44592e8105da96a479be0ac6b3ba155d35abf8169e6e93e9bad3d431945b852f5e9df11f9175bf4a32cc9fb8b6fde96733d153a799cb8fba3c86ba2decf3d4a97bd3b699467991a5712a6d7c27274d3224cd1848c17f1550be47b71b1e9873045e215bb817cb92c12a7bdc6347df8b64dd686873e8d0b477faade8af57df995546cc38cd6f931fa54745c55a7e84ea85cedca7b980386fb91b8ae677a035a4547b584887acf567c8cd6bcf85f7ff460dccdb73f5ae0993c9894e8c234895380c55614facd15a6c016ae3ecee6cdea4be395f8a9d244231adab053c568f3ec64d06a3d7bca0e62d7b7669811a45e2f8ac6887137b0b86f7d35decce6d4ae786753fb6568cc5f2b297e2222fd8c1849d1f75cc4fb951d2bad81ada952998b0b0e938b77359233a76c135897faed59cc5639e978c12c6bbfb735fef4bcb1e7de80e0fee964435fc16be2cd2276b7bc78ee8b5c963af2af4673a93940b429131663cc124be5a706bff5c157dc17dc5cbc2a11418dc4b8a28c841c5a831b1a2ba989a20fdd17dd06706ceabc0d20714d5595d54216e9fb6824e3272de0a1e262aa246494152b1cfd95c970f38aa35fc0337b26e76c77a0a76bc2c57b80757550b11807a423b85e32ddb537ab6d4694cb8b9ed58b11c9a6acc746749c21011a66dbd7896329c3a31d0a7e1e78efc93574cb7b051d79188ea4981dc6299eb9bd1bc1a133a41565305cd4a09fbb10934e7a3d132bb0eb83559c484ebc92f7cf93e445020b7187e2705a2d1a8386c008ec7f22fe172088360cd3fd160e7020b6d0c747ccbbeddb1b84fa7549f625dbc064621fc2e13f720188c200c1ac1f10394fe4117018b9640632fbed570c942575ff61a7149a51f9993b90827ea2a08c32a330747ca27ecae452154ce1a6a67a8b63676998af929e8a7a9d2ab709e2162a2e0bc0721bfc7e49c5b2c9ba975b3bd881aa3782391f5cee4cc1835c83732c84f54b373eb18869b2c90e9f986a0ea345cbb020333893b463671c95e6aa07193d06f7e62bf4361cd0009b1e528c85d147d0e650cea7b0c67f1b4fb754bf2f1a7b9cc621d4c34682a6195776bbb9b2cc866cfa94c368a2b4b346c75a2a6bfe946cef09416aef21b15d3c72b7cb408141608c058e506271380841656963174c70e09c1f593acdfb9bf4a3a9387b693f882495149c62a77595574c0bc745b51ba8338c6361a293402e74df74a7a70b49faa1ac4d66b89fb6c31dae59f318b610f00bf4f4a282f752a070582f2f3c141e168f6fa037f23945893766215b9ee9a3a1de662060a5b1fd34bc8dac56c0875a6f82ecf8863c1692dc2073cf517cbed3c362a853beef1a8cf2247000cc4cd8176ce980d683b8ad89b3eaba3b962624f5ab3695fa10a88055ddd664a2ba0749e439a39c6999496999be3ba7bba2ffe06388b1a6c83068ae70a1c6f8a36e788b8aa148933c896eda61efc86cbb7d5c9cc96c9f137c6a9210347289010979bc1e16700a610c7c990d685550f537ab0c45b2bc57e5ef4c08b2220961c6e17e95e2e4482a4a94da2e17b6854ce57c263d69429e1566bab646fdb216e0444cd8fcb7df4168ae66223a0ccad971583b5917c4805271a17b4a1e17462815cb39332699ac447332a3f7acedc03541e93a822a96089d6a1f47a7df35cc9b659cf419bcd2131b98aaca67343cdbafa3db35661c38c0ba1e18043a4c945067adee46e428a16011abfeb58c1bc8b2330288b57cc319389921857c9d015a0471128c34cbc13417db24b91a3567ac299cfa6d4c2f1123661a3ce0996111d340d9613b966955c6a758fa7f3556f6716e5ac7ad3a93174b2032a983cc0c73c0de302f9f83a0de89a1fb576cd3b41505b5ba712c387730c45399b8cf0b0e548cbed984e7bb5095cf7263b05cba437ac6fc369ebca85e0211715133bcc314723d79c9b93abac57ad3d3a5e77f2986a3539eb795a5b4967ac7753115b916236a97900870b658b9d4b3e35827e1aa9adc3500fd9ba18fc6b03465903858c61c1259cf485338cb700eb731f31643b469bb259210cec78c158e3290573c5228518e4697f19171d8f1a3a633448fe9c83bd28097bb29a168db5af1d1b354b6881a2ce509b172cf4f8dace8a96b8f70da966080a5e3f132873ca7544343377a99b65e8147fbdc370460375a778d1a31d01c42b66367ed8d9e8f84551002f552f0e52102b5d +ciphertext = 74bed33073033310bbce2a4a3856a92a519570deb8779e7b4dce5147f198bd71ee95be287839ebea96cf5b1fb11f274d63ca2b6d14c15e9cf2394aba065c27a94f7c6f1eaf6ea0655fc0cfbf7a773abc14d174ee861e6bab3c69beb678cc362135a5c2bd55f811edfdee774efc6c2b6675c2a94bc44845ed9bc711cb657ae894e80db0027c88935be4bd91966aba98726e111a549af8664dcfa9a343da9db39dda10ca22af7365da7a14d40dea90cb216c902a9dee17e371a538c85b7832fdbf1c3ed0721527204bfd7b75bae01f56a51b2b8c995ed7b74c1222d849a6df69fcb5502898c3e578668595c405a73514939d9b4a0be52c8e7846765c43771083e49ff08f3d06df2252a98ac8b096c729306b47c07b8000d6af8bca84416d7e45fbd749ce32952ef7ee2359bfc31ab36491f4445f231205d0766884d5ba5c32e361a269605a2836b092bb611e2aa1e8d0a761b36c3d7e2cdb14755ad1c79c104f46ae33f615601033a60ef387df1cfc1e2985f0052076805eb9900e67bb1e9048c6a303b6344422a714162c92c9f724311b7581e18b214e27aa099f507c1614a1582b1ecbcfd23b7809976ca80cc6cde473a7046207bc0d29af3fa4c509adf1f199c7171bf6a8d029d7a19e171dd272a7d95a268c6d1f757a65e4da37b8a63e1ad50fcda5acc1c377015bb942b946a0b6ac718ce4caffd229fa6f1fc2f8e02087c72dcad9062d2b7905a73830577454e6d63b602781056a43d5c0d39450fab97b35fa77456812bcc48670abfaf71cbab2e8255b5bc8113fc070dc2fd00d2cd5bc597631bf798858df26bd5d9398e0d3be2b8fe7d6fd5ded8b2694934b5fde4e1b713453b9397b2c8be399c1c835815485518e6ba6e8854e39d61f474cd4ebd752a61e06d7b76a713a7de9e80c6d34dc4069d0492768659bc8888e3d5a7462f820bab3adb4547e50e9afa891aaf477db8f24bc620405533b2e997f11276043eee6a3002ad901654abf4f3a89f9726c50612af40be942e809a2afa71c30ab00045a8d12cb57896e79ea12989dc79ddd43bc1542142c77af2dd2dbdd808f5d2e52f709f18fcc908338e126ab921879fd1931b720ed9e09c6c1e57c58ac310d8f5149037586a0bae9d8b119ab91f8951811ee7426dea158f32a1b7140d4e9402d68b26150288862277c370a4bbf6c296f440a55412cd1886f69d064bdf1ad73a5fc147129ca5f13ca8b9c1c7c816c2dcc2af54af917910dcabd247b614f4377a236aca35c4f8d29bea865858891afecac4acc0c6726fcb3927c12878a060aa4136b4bc3419b83f64920a63707ec048b5f9f1297cd38142148380f00f6d2dde4934ab78ead5c3414b6dde04c49843f2c54598fd511a5b222b5bd2d349b3bf8c555bb3980b42c7ee256878d3a8c8ba403d710a16e39b96fae3526abaf9ea9b99dfd7fd28579689e4f3787ed8000e1876fb531014e722fd2183371677071a6d2efad5d5725df77572c5d1cc20b9bae3fe89b8e0f393245625dcad1d0531ad787f69692e56d +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 5e43bfe8ea443466ab6b087deadc672e7aadc865f1d549b979bd54a9b8949f5e9e3fc3a6546d7d794491351d39723d37d31c9824eace39f7e27a97440354ee25c7e4fafba4ba8d41e86bffd8d8acc2a69aea9c809313d6b46baf5245a505d48e293a77ab4e74d2cd95b0b4a45754a4a94bcb01d4543bf7c7dfffae2009408725c58bc76bde03abef3c4ee093ed3c7bf6336d9707b3b862fd93e857902e5fa2a496e9b1fcf0dde7a9245eff7adff38a7de473076965959b2aa3c79de3eb98ca984783ec8abd929e05e84cc6b92a7fce2c07c8139a62ca1ef16245cfc93bfda168d79e1c93c9ed8ff438a02ddca4ca948f48bed6d40ab6a6bdafb06fd52f237e45fd765b34362724f13096e1845785e257cae79ec39fb8c80bccec5fd687a547b7e8e3aa1d8ce5a918984b6b359ddf4711cbbbb967e6ea54a8d46eec5dc983fa2bd19e1bdd7df9dc3c0a9e775fc18f7fcad6f9c510e64f0cda8cbd86502a5880ee1536eede6ab36bcfd859ce879b3f5d7add9073d668b7385c8599edbe849a4942d87a914a8ef9e196309156c9ab245f4c637080c963f9648fb2ba6f33df566f88bce79df03dfb827448f95f8670c9bcc34a9849795ebdb0e631ea06accc26373809986db6ffa724d12d2579d5e6e44343de3b98fc800b6c9e0fc98e9859a51ffdb5ad9510fc91a3b95bcbf73b3a09311dde3e52c6e734fdfdbc5dde8a54a30668311bddffae2b55fe05c95ac43875e9ff3c2acb3d4a6b53d363d5d75a6a7d61055a3a788bcdfa15eedf97c3515ca920ebac9e7a998bb598b8436bdb63550f4e6d2aea505766fa901b609c1f9d93bf7537fdfc26ec6a3b2c5f6b733d0529330e9a89601bd89de3da0bc5f530b3d62be741b0a8e8a78b4fbaff74b736fca23b3f2b4d542caa64fe38a6ed06beb5498733a38a80ddb5afcf673adafb08fdd909e68d40baf080be79cf7a60aaee3719635a15dbf21d1cc88cafee950c94cfee7d6008dda5b4a65605d2d7136d1255f07479a1db4fc26c48664297562a0bae0e89d6e9d853fc7c490f4d78b5b3b226b37101b3eb5d05a26f1ca1f33ea854ff3f59d86a40df69a0256eecedfcc0c6b77f2bec624ee4e1084d8d1cbabd0c7702f43d2ffdedb985382c66ff1b7885a80e5edf59bd8988b5bcfaecb04639bbf5b119f6f9409d8245455070da3014dfb6e31e6776694b44e3a7e433407099a51a4d870b336f547677665c7067ee81ce266ff0f5d8268731bd13afa2ecb4556f76a5dc50772a6fa38541af968ae5c59e2d04c3b71dfc722da6aa7dada277e5915ee552e48e7119c7b7f7ac984f9e9b7cc0b534fdf277cc10e7c48986f66643a9b33d8cf179932488d743f95e6595ec03599feb8ef9d565fb86ac35afeedb601dd58a8742c02a3e4f6cbf5d06ed66143ebe933060c98a4bb553185661857debb395625fc86e4bd47377b54459b45e51ce45596b9178d57d01bbbaa9a63bf444889fd8e0f1f4de08df89e1bd4a58f84348463b9fca3176aaae6c2ce19cf679bacc6eb685b9f443c2a9f3d4bcadadf3888b42698ac1f68f1626439e796e1967c7bef581dbabb6c22c9c170f9e18d8493b5f4fc2b4e739af5e735c665e79ac423aca37c5f22da7d358718343322db0162d26965d5e946b700ab88d702fd5a1376920b5be702297aacde28588da91c719d40c1fab0af109742ac26c456961338c44c93c83ab58581635499545cca66160e15a35ba4931e2b91fee68a8734acbf72755e8d452d17215457161284435eb6a7a2933c8d146a12679143b80740f68ae052087eeb988771a8fb43b34d6ec79868a0670551bdd19cb5313892bcac9e4fb500d3375ae471a3ed551b2d9c76142b22607615454a910f8578e44b448aa9200d805cf4c15eb635013bb80a65593ff578c794066f05abddb850ff976c74ed6acb4c41064fb5eeab479a13ba57dcacf7f02421603194a3cb549f08c0d700790809ee0e585dce4088f96a740320c57d5a632c8bf5dc173f0f841173aa47ca42004b808ebc2a6a1770ad9dc06027557f80420db47b0158a1d1ff32007fc058875c4f5d21fabb67bfe8909e10b51bb35c76d0605d0e6a97e56cb93dcc58f722d95f33008b0a237b711420a20269a7097396a4a98be20b8226e103cb1136ea3fa39d438b305b63fa049c420cc378392b9f911bd7800bbaaf2bdd7586780c7078dea622df51c7190841585bb16bab9a0d83625d55826e3949ae018e7c4703ca082466b9a078393c30a4f6b7b1fc775c9dff7cfb5909cafbc66ea946e6f098f881b3039c251fd3ac142029e8728082f838a202cc3586672cb6285b021c41e3c16f5787ce6e319d849483fe40d989c246f7c36c11a991234ae7fea68770c79d8290aae3bb72ba014aa1279fd13977a49b0cdd494ca00c610cc2306059b695686399c1590f274f735142639425dd88026f8be0f260cd66672a12b5c7b5c7323408a2711677f062625eb8f3541098d079c13208415dccf3ff72d1999721db3c271f7521dfb0f129b3cb6885310a0689166a3b97b09610347ceea5579650720db621db20eeec24eec2144fb523ed2d30f64b9c6655928b3d06e1fd9b088ac8b7c964213e5674757c7bd48a3d066355f0249a50548f430c55a6ca0471953eb7c67e140aaf6322b7741225931622db114ed46b9ea997974c9ae2f54b87125ce79e8621d712688b50c7a49877d52091643a4a43148550135f27bb30ea131521583f5b79255309465f4b9f2233027855cc0e7c93bb33705136c88392cca717254640c540573d3a20032c9b297eb5b02c954c744c4c6143a56eb48f1d15439f885803ba5acb524f3d54bed37145cd9173ed92a00f724273787cf1b89c788184de0905bea74fb331ddba00cda70c1547c634c706a8447145489752b0633628ba4f5286851e1b5ffb8a7fa2bbad3f92c542ace74e67aa07b467e70b6a7d3056592b36a7a37c6c7114c610721e9c6ea933742e43609c41f6f3803e99a8d5a27b069bb73c892bf07524a8b2989633c96ccf33791ba29f3d575f249c640093046d1684fbc701ac633381bb349bb7d351230a8bb1a22223de3850258ac7043b887770a307c3746002cada2826e47f7694ef51f94fb9e3645aece6273298592bf00c0fdf14c07d8c9fca401ff351d2e35491aeb55aed9b1b0ebc2424cc729ac7eb07630b8b11d0e47c323d6b3c0ba12dc235d5c310ce2c7bc1f0a8467d627568a185855750e12717760355a0b8a756468e95406d375f6a1289b8cdbfed9f6518d7031c57fd3455d4544735cf52680424c90f14f268b6356f92c57da6dd34494b927e8764adf0ad519612ef0d1b8951e50966c2ffd5a08f656a6eb8cd20679930a31caa6a6331c4b133a6838c223ef9f769f6246 +ciphertext = a36c2589f709a16d07ec8ad94f92a168e6ad851e9b19ead54651ae5b5135f38d38eeb1e3ab60526f5724ef7741cb2bf962b4675042a9754227472604eb1ba179142c9b91a7cebf0ed64537618a70dd66f63c0e52f7c548906309e8fdcd30d573b036afb4c17cd882eaeee61be968c40ed5067b4d72a2b6a49e76a3d77dc36f1d9bd051bbaa501bfc89d3eea3439cbea585073aa09887d504d08a5cd0da0079f0698655ef809603d27f5b3c3146983c5fd8ab0df9d4e3f8b6f4781d35972425e13d03701b1aca48b7b9c87aa449bde4e4c37fabd70a69aadf9170359d1cd8d0c87121e468c385f099209575bbde29c5eb745d90319e96a1163867264383e6e908b9aa251547d15f8d95374e4e07b8e10e7f70758f19d76ab0d255d2870086db6070b7acc5242f92eec7a784515c584b9a831659ac86f3a610a09500b3a65a1f1c309adf2e4432111e0ccb6a2403de2d1395afa4d03de5a5f3c9c319ae0dbae6d3c40f6a4c0ca0a371991c7a4c55c21d50093e5257dae97ba3266a312e4647045780091194a40cb4543106dcefe181c104a29e2913d8d0491c0ee792b25fbb87f482abe52a7e38cae57af8ae52ef7c006e34ab21bf93127dbc744bd09d1f275dde2beb763479ea3f77db387703fe0e97a8d648a208379c9f0ace66bd442ae1254b26f0f3cb267f7fed926cafd59df43500564907e2a06eb3b6cd480b5f451f4f94562853e92974a13af6335661e69f16e265d9433a004402d9489f89e631e360c3ee3e0b2bde5ca53309df77a479371dfe9b2bf12734752127358f36a98fad6e60ffa1c3e418ac8c81c3a8f54d5fe592b079a871c0f1cf36bf2229bbfc5cf88f74757bc11dc826c589541d93e771a9870fd8c07562c76d6f4fc1dd2a2e82ed136f5e9981aeefffbabfce661bb5597e7710edcba41cec1059e96f15d667010dae62cce9bbd8a2e239c3dd762974af32e47ecfca58e4643c08e0a972b149749e4aa4a4e97bb89cf12acc2183125117435417dd3bc3d18304a8f56db2e88ad5ae15d20a7f68ffdd9f7a76355e28f8d308604b6945da697d85c5c965383e4247b03702d2cce376b651cce0c9a36f26485562f6b38d4389cb855f74849289848267f17aa874c475ec41da8e4548a3ec47a389d33e20de412d3fc37e630965a3fc919672c43865e9cdd9282f23401e49b9d110f73886a00c839905e3fb7cbf2d4b881b24d5a34a2896a6a93ebbd9cc176f5a00b7ac139f477541e8c2c412ec7ed30b01bac78595fd18194bcd608dea182c741af8de1cab857b551b7a541bf76dc6f706e32b688401435e25f9ff303ce8a487ce1c5140ae2a1b1aefb25320c91cc641cdea55069acf7d261d6d5539c0dd11789ddf6b7ffca89a2166a0ec7391db587faa543f17d98b16991c50f0d6ccd5ed6c80aa44a3ae3172e7e242e9569a1df9b1def0851d9c150d5a8825151569e56d06a53e624827c0b99bf586ec7a71c09d53643386309c74e25e329a7b3b8d0f3eeebccec064d83d98c8f1f6ef19aaf28b6b4660 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 469963001d4d93da7cbabcdacdfc833c47601ae334ddddd22baff0139ce6b9eca73bde86353ea34f593addca4f0ea393fc4595d22a7caedda8d8a8f7086a95550dabad94f2665ee14cfcb3e4af40fc7dddd7cd960a7976175c56b0b48c678fee1398fe3aa5784f1f869f0c8518037955f876997975d27a7c92d4cf005ab85969d504c768b02576aa4f63c87c4bc0eeafb09b8c0a6cd67776a0d96a5d139f5b44ab3d3e57c6972bda876e7f66ae6c7e9b42c283577219409e1ca4de08a92dc5b4e8e8705178dc1b34d68dda801fe871e1bf8ab17eebbb97cd49bcbf159b778593dbc9e3d2c0b6ead148f77a0cf474aa64e983506ceee288f4a20376b50beec1234aead03daf1da67301a5a420aa826db58322ecec7ad8bfd25c3b220f5b565c357b5ad802f6e5a35a384f1794a17efe041ff8a865a03a0e97e8cf7f45b4f590ef6082c850170cae878febb5c68cb42e53b9934de4dbe1528c570af363925ab0fedac79748b3489b7180f8eff6db702d6ae00336955fddffd2b9c86c2cc001833b0caeb7dbc9699c6556b448324d29b0f6b4d28bf48a4abecf60b4a9f923f1aa64ca849848cfefbe0a39f19f7830094e7da307710f87cafa36d3fe2d6e56a8e77f8e470af4c608b6e28908541183a5b4769e74166349e55b4d3afa857ddef81fc2d2fe3f4fb3c91bca8cae2d9cb5cadff578bd6e29a0cf07a973df62a2ea3c4dd44a5d55446c174b345b96881d76fcf785cca68545eb6be64bc9be17a7d69e4d8b5db286d3a2a9eea53faa53815acf0237b8c02d4c34766e97883071e5653946ebbeff9188ce80414c83dacd9e30983995aa4850a6b2358aa6240642cbabdfdb739fa5a93ec61ce1061aa8b5f7e316b5e7be2baea2f74baef3feebada75e2d30f5e8bbe1c5e7f575e1fd8aa49a7fea9ef6c88b96a9f34bfb3dfd4381b5c97b743063b6f8685ead9fee4903c4674c3d8dd6ef8bc81de34c43c789bd4460db78a0e795e246985547f2b4c3a095784828a6d672cbcafd1eaf32d9e8aded580d5bceaa574409854052af419f148809147133866f9b75ea397fff22ed61502de39ba5372493eff42fe57156e69faf9294dfa3f135dab9cc877d448ecb63e39e6c5487ecf931d45b4a74c34bcae1cbb965e1e664ecfca54db7bfe7f6edb248fe50076a70a9aa028670a364d13c894b729945831be125aa53f4d352bff33fdbe7c64b07db4c3acff378d9760bf7368693d938e22ed5707b453a1de7e4fa9c5a8e6534d45b53a2ba464f2e7dc056ebe31c57647e5bb66b6f3a5cde7a3a4cc107602cc3b67487a7d26f422468b5cf33c8e5a63f802cf017be5c40398f914cbcdac9664b86d1680346fdd3a499d89b5cdb7e77cc8a1215661aa34737149bd0734f7be6a0c20bb94e6a89dfb9b0a9d6c4bfb86409afffdc9650df7577e5a89215c8636d5c376f4596c339e58974d8430dc91af4a76aade8c7de39f63ef04bd5f1110aa2232d3774db88ac0ac94cb97720b7e411eabee1bf863c35607b6e7e771f98825acd91c73685198be96b84a98ac72a5e42f7ce9bac0d82c53a8a50a3a39efcfa34e859d0afc88c9cbc78bebdb537798106ed1fc394d718f0336baf229fdd45cd956e09a5d8279f9a0681cb98bc38cb551320031f46262799c182b0355eec82cdb58d750596a4e6bf1213490810415a4b347e13c9e8514890a0995843936be342e81c7f4971bf9b75925d61ac8c961492a85d83fa8e33c12fa37ba08d7c681c521ed4060481f58be673007a081321e01e21419e232283a01cb1a4481550dbade263382eb93b7e42470b265027a933c480cda340a9a4065b4bc47990833786456aaab5a81c0a46e0076b91ba5bb4d4abe21c6ab193b3a3671c18479db082a706768a63109d2c4224d71c7c95755ca24b056c355e9c22cf5006662b3218edd4b317b19962cb514af123245b152eac41391cb432c6caf9295c66da4e5737ae3d60023f46aa7a604c64a6c403306ca4b96fc2929aed5b4ce7e6c631b473d7d61cbcd19826ab82c0c58880d77ce8f9bcdbf59d645424baaccce334809b43acb99248bbd966c88793a273ae857946902649f97b5516fa2ea2a84fcfbc054653852d8421b6b78c289b49080c8efaf85df195ab5562a03e7099c43c439a25ab41390b86db4f57188f002129f3ea1ffdbb9e9c688ebbb26e0d7ac6eea395b698a134f70f98480e87313b79444963557cee82534e9c1cf10b74718caede3bcbd98a68d9956facd8a45e2184c16b14048b9d28e8bfbf5ab43d1b650ee8cf13148caf451cfb144656052cbaf82e2f765c8c9c66c23b0cbae0257d6000f247200ab87f93b5167478a27b42ad7681b6919529bb1430dfcc809e171a334b33a0527a1d9519c18130971c55f6ec172b86248059830fc57c7356c9bd8263f7d571d0f7bd87d2a1686a7c41db9306558cbdf39f0176959a188b4d457b40c152b7ea09f6860d4d945e78c45eb68b579d48774eb26ad43bc1be3c0ac327c80b4c1115c2cb58bbc24a18146470abc223ad51fa10eefc311f1ac02af4c7432210233a4abc408b1db484e7885d239c0c2b9c4952e577a8ebc3d6a7684e711e12db96e1f988df423a395301d2c15fe2f1abf708bc64147a30e2717f7868ff602d50fa9a3d0b3a0097259ac52057dcc14319c438e113da967f6dfba4279245b72cc86cf724c81769dae271e18c0b6cfa84b916ac89b12a1f8b05d88527ad40346775cc832713146806a2b2884e35628169bc12f67811b507bee3bbebca81ab93b5d700aa92898b3f5cb6e9d345483ca3743457fad8cc5bec2a8e7a22a41ba8b67641ab181d42abaf94d0055206b648c81361f8486408b610bb3552299316b5c0b7d301d9f1c3d55621859ab2ee922c59b11ea9f2a1efe277c534128f2cae6b598c0fa059efc2c24e8a0c2337bc2c57a0bc64a7fce190c656b529d21244eb66a900288b5c484bb033020b9b9ba3019b72387f2746b3b893a1427882bc3135f0a17f8271f9c8480eb60732672d44336b32f851a283224144c480aa302c05836edc1ac4569a6020130b341466322d17811229441c4513a2e8041c85e035113992f16799dfe8c1eef3aff8ca2f341628808a81e8b66ee5ba47ad0863c735a904565f036a85fb1203058137aad2206c303f22d3027e732542a342caf3376d6b065a745e31e865fc2243da31ce08eabbf8183b4294700bf8928da8ca78bc08490810c39747fd3851211b22f26451f6772e0c75659133e8d8c063cd3044da1719855fbbd9796314b11df8459ebd2d92b7fdc94c4c4c6d304e0494d88d83b5e3aa5761df3b299551a24f28994d2747b2b08945bead20a7237801f470fcc2bd9fd7bea8322859b850f7882d362947432913dd068c01 +ciphertext = eb9daf793643df194162e69b6c518b5c2dd3eb2e3a02334fe7d5fbaae8cb5b1946998a06dc8e3ea0c2e5f009e2fe5214d735c46855fdbb1d45cf47b78ace270537aab983305cb7b2d31e4587d71166b463f3ed2c21bb5e2467682ff74ba01cdf6aae255ebda0cf205ac9dde6d55a9e3c0ec9b9383f2a779d2286a86988ede3e055fbed98be3376c7f0421d629d34d753486a0e80a53d12d1a2ad0e8120687a92455d720a072e5df030d7dbfe55a7df9f144b34e7686b3f75b78d41043e945b3d2757e4625d0bf038dc9671b16c81f9c91574caa2d9ecbec25c0486c525a6b08e9dbb3de04670030b580d559159d0c95f0f962c1a0c524f10244fed82ae8c161bf97683f200a3447d3dee1794ae518a6bc7384930a6dba9e761498ab266e73aa99ab3235b65b6d8350652efb94f28e54e86e63628c5d86a88051400deaae123f80cf0e35c3f9b48a2d48e7588845bc327a07a9d2a0edb7ba9adbfd257ec2529e2bf93cebac1243c91508c0ef7b61d913036681468fe9768ffa4789ac24f44327035561df783012e768139313f5c58aca8e47302a5871226855403d9e3e862b20ae66c521135e67ecbc0b947f92cd1cf8f74b2977e826d513c66e00672b2d16e693aa088441a32b64d77387e963876ecb5853ab458ba1e4d5567fababf1c9efa0a255140c94c3f286600f04e87a1cfc5c4253ad5c5c9d7c7e614a2f6808ec8b9633d1bed84e1f6f27aaa72080b69ce6f1885cc63d9ccdc006139e67fbecb07e56a2ab8807f2f0c09d22ee1504a9aaf086656bea5b2ffb8d2f9ec1c586caa86ed3db23284f5952fe2fc4f0cbcc127071b85e1e6c6a64a87b1ab3f708b40812854cd3d187ed627f4c3612433aa2e0c4fd6709c4ef07436cf31801f6f77d6fd28b0e070b54191909d443d24e95617e39f7065066d65eb45353e80bbd11529f2c9385606a96b6b7673f258725a1587ac316dd56dd3d25bf2484d855e59d77a44272240116d11e725ac45766759dc89b3aa9e5cbe96ff7df371f4ec039f1472d241fcf233836b3da13224d92cc710a6caef02b2b77cba408539403e5a9c3f06c6984d43e05b5e278898e3e59c28af7d35a1a2fa982c7e014b185c7456a986ce41277122c50fbf2d7dc3014c5f2d3da0773f31afc83a138461ba19b21df959be21e2e9adbd059d2a141439cfe8210bfff745a5c3108dc34572ed87d3b60e0e6b1ac41e1d7a9cdc10e16ed2ecc2a20bb4669bac747726c8bb112874f48c7d618f0273f098e249e2ef0ac29953737e036ebc361a8512071d6fd3bb6d8661463856e387819ff9201476178f7683b983cf8473ce6688d93ed5e6a4be6d2fba23949a25bb2a1ae3f5634599ac8c83515d8d904357972c659ca5766105ec7108fff659f428f3100ecfc2bfc57f97e87249ed6640d47948ec2376268180a7a627e992930ac7d7cda5076ae04a1405b215d5d5f8bf98a40576615e02c3cf85aa6dac1b47632c66b947d8da73b1c6725032f70278177761ea063308d540a60acd162d83522fa6d188 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 3c14bdd913cda1ff67abaa8b0b3da5eab5f7639cd19276f3b0ccfba56bdb596a92bae7fe92845828f8d50f5cff40873918e4524cea85062d8d345783f82fd24977f1e46ea582c5445fb3efb76fa64a4eabf90cf13ab4a741d9f14c1b80b4ca617c4976c819794f53cacdb3509978a6df69d0026f78398f34cc2ad9b804679f36718255b2dc6da7eee5bc3bc78bceea8060354b5413ec4c76b30a1a8b1ebb697ff8606cf4d8fbb7fdbf0856e5b53b1e4a4ecc746cdfc77545b46060974c8a788a1d59529a9aaa571b895cfdeed6cf3a0e2f707d89467a5b9c662767a0d77d5c49adca983ce85def355f6dab1cb9fe744bde8c54c33d705548b9ee0db9f4fad55466cde88de9325cda7c9ba404b641a663dae64a964ea47e6f8daaa475fc9a8b66072ed3f385479f5da780249a909c92b89e3329a478890e62d8857d58fa39d3283f5a2a7f8ff6abffe2463dc4d729dd61676f7e9daff83fa57a2e56e90ab869b7dfefbeac86921f84154bf59cdfa44217dd1cc581fdd333e5a9df84ac67f47491e01ee28f0959aead891c236e0aca87765f89c0e6c8fb136974c97dbb1b8871a4c70bbdd1fca5df0cbb3ace4ac4509dd252f5bd760ceec09a3d2f8860385a4bf8d765b49c537924de0a38d1dac947c248d3ab6b467f2bb1b019b9d537714193e2f52bf8db18be216794a0467d79ac8abbffc90f5beb3474c168bcbcc1e6ae59c5781296467f2b8d63d5842d67935de4f9bf93e9bc0b8199cca9d3f78c483b8e087e622ea764fb7edee14cea188c56d0b5c17094c1b7a45321bb69d99a666a7963269aed0a0491b8b5cb700a7d86ab903943dedd8bb17dfeac79355a82166459df323e17dac109c98e3de3590ffcf9a3b513b8bba449d5d1a790a8bea11f78f583ab4fe0b8ff3f3e6b7d7dafde8f3c8fb7acfd43db22f378e8597ca5357454b7e197cb4039e9a81d7995d14587b479657584407b38e886d6a7fe9b6171ad56d30d3bf8a8d27c275b7c1c3d1d1ce57145ba53df64699b969e6daa3873a9616d41c21be7ca0d55b90e6ea703539638cff8bada219542c05eb68dfe53a96e49882cd87d898ef9c3a089cc70a865611723eaa4ff33c73cbf44adf2d224422a2d501c17f4353faeb925c4033e85d3f897a79a983d857c6d24f2facff2350d5e0098ff77c7704cc74adea4c8f3a7ee7964ba1a63dc208ffef696828c46946f0b329e9d9a47b8335343d630359eb8e9b7e78abc50fca8c3aa9af967c89f464430d8e5d1959a22bff6a966a64353d1fb7dda4e1f98878f6803ec49a54a34ace6fb50e33fd88f93767e81652e341cd76a367dc17ac9c338e4ac4d6ed7775db98ae445d236904da694f755c1a6bf88275b517b4c9b896c49bcce8933f5fd34969b6ad8add604b526488c6397842a54b6657b93387bded7d36fd2f448efe43b0a144c3307fadf63dc8b6340ce6e897b3c50b0d8ba822f8604f7a4bdeef0cd2a7bbba3b4828e77c435a2b0c3ad838c6d9bd3903d64b32b8a8da5d9358a1fe252de4c9213f8c4063c2af3c8c52ff83565f7ad04e138eeac6aa69a427a55354ca9d65df5307ce6fa3e54776b4a7af9c9f02f98dba9b669d4dbd17deabe5ed357b894061ebeb6c96541aa7b69158362a41767486ec3da09ab4335fe2a25dd6c07366478cda91c691c5ed9264f771124c1f3693050802f480f5df89d5be189da765337a69c5c838488a0a4ba7880e91871fe346cf3abb0aaebadb211b5acd3b773c9146cf97920e509dc202f79b14734c9777a567cd44a43500b5eb8005bf4c5a387701286639e6d9ac2574b33f2432b3a787039e34b2ae511a27825cba7a8e09b401cfc6123d3b4c42318e7b032331230da960a09f61a6a196dc185bb8bf1c1a6b691a06cb57f12be1e45269c56490e256a83c13352a878c724242ff0681881160ed03166612d69894951d65b95e690db46129d149afba2c835d3b138036931423d2f84ca51179466a1028d1601d5c397cc81b1b5e468869185b25095a0e5b5dd6a421b5c7eceb58c4cf97b7feb114fbc435c78857c65098d3017ff8a58f5927e5ee7712fa0c2962939b9d8c84bb6428b3902881188df17479ec01e4709b7840235ccd77acb0bb3a05995693781fb711d61f2883827a96ddace29a9cd43ec6abd4691be1a758b72a629f6aae1c795981c0d8bf8160bfb3b8f5047e1a410cdd49c6a42adf0bcafed1b21eeb95d504b1a48b1ace228bb5e1508bf05128f0cb63f5597851b9df4caa5b6ac10f7f6188dc41b02761f840caa42871c55205cd09771ac9125d6265ddc56a466249fbd774ee53756035349ca12a48237221bd53d7ff1ac18242442935ba818a3b50007a3fc14a2fa3abe437ff14705df0cb5af97561a608a3fea42a809a7a7d5491453c849dab7acd99636931c007a70d01655c7302f9a26012c494de47839c1ea2951a87ff73968dae83a86f392f021873be4c75d2b0700a3b540f50cf6fb664a4627dda9c75394032f434655755d12d4c781e2324ae00dd61744cef6c5ec9680f379a26284bf9590a33350905e080e9b70547ac1cf3ad888f30232fdea7bd2c184f9e1a9b6835401e737204c5ebf2b28f2b58edd399f873c7849cba8064b8a20c9c391841875b4963bba2097b958d752739383bf26787e64ec215974b45848185f44b8780c0714b9651a7685e673cd1b6230c5d6639ea5629c20659802bc6f2b95df274836241165a524ea99a941312fefc7cdd2fa8016d69b652c3e94e73c70c97f65b3adf14bba2d31916522701d80252e9c7fbd7a17d306a4e1e02cda405f3f07b38eb65824d5c9d8b91f7013784fba0df0348f21b00ef5a325c745a829714a5b9aba16acbdf029771d5415e867590cc5a57360a8969407f0749ab8a08a65e37e70146fc1b7bc40d789eae83761e77749a07859bbc046b5a87e3a92a5368251127f12d27789318f8b9c3c1f79211922c852a0b0e10bbb631599190b49a66937920b3f113185d89c6e37da5f7ce9c12d37c12cc24741cb9a79446606eabe8c9ab06d8963c959955f198e03a0bd127242dbf2a2180281a7b65f54c28ec9c6cafe64881d6456c07607cdfb89e2ca2fb3ba8f8357720051c30952734932b08b508402a6a2f4f9c76b053c12a267618928032b5d9e41990a18c2c04ba7c2868ad9f4538ff1b494707eb9da6b81374d7f9731f9a26089d7033a8c24600944d65871d313387b4101c0aaa27ae19d978653638577bcf4caf48083eeeb57f401544d4da3b73dc1c5c4a047b0a5ea85edac7bec66f4d87fd2fe422e7dbcd02d145572be2f5cd569e6229f00014854633f7b278e90af4ea593411909467a03e29cfb7b534537addaba4ecf14f02ab317d36cb9f0f50222ced7cf029dff8a0d3d2fd9 +ciphertext = 0b19df76304bbb9eac107e0cde980f205d0be113062aae748fcd6f23badb6faf0dca0b9a52a0c1a45fb39a5434d97795de72799398a6f7729dc32bc0fbb724aeb6a9742bb8e1f5ea50980b79c61da2118aa15b92eaa122bcaf059658bc763cd04a22318f8db35b6cd62d7149e4d5896b651ffce990974cfb4b0342946c13697e68a5ad08cd94b13b83a78ef022754434636363dd2314433a11c96123bbdbb242cb1224f31b1b171a30b975ea7f6e2baf749c0eae2271d33c58a247c56bfe1c362554dec75f8ac8a4d170009efef05ab92f0afcb47b6afbeb88c718430a98a09085f377a34c84922d1f48c004f790d9ece2eefca8daf3f44cd526aa074101a3ab083f05a163601b68e16c63eb293843d0aaa8e438ed68e71227959fa9baaed20eea22ae66b8de0b7c19f2a777928fba4fa17e137cc40d14ae3cb8a711cb4637f3d94f16a47b6be2345cc046a1f64c1aa0886098731cd9809a3b2d40ec95f6c7bddacaf68865cb22c32b38ddfddd008f11065167a4acea5212b1e1013d704ac9048775d6eed6ada96294971b6da0100def9a754e57b9fca70592974ac72a6db96c38c18844f5ef0c213cfb7077b11e8c53dafdb091fa81445975f38709741a295d46ab9e6b1f2c3449bf6b906a610484cc40a2c8ae35ab4311a08cc5f5e9caa90f8c5c03ca1e4c02921d24d38eea84688353ab5724ef73b16bd4e881376b78e992e9105f85c00cb30214c60e70b16e37f5d1c8997d7de9266f7f4cf419fd0e1be6cc1ff2128d3b21b46c2782af8c805c7fb7cb441ff4b5fc97a94902beaa56df272d0be1e48120dac00bee41e8795a210170eefe920682468eba45ca106e6e8a6c963d8587734baad6874229f8ccf5daef09836878e3ccb8edb7d0d3f10c466781ad04d943d478d40a1aead1537073b405ea712b6e879983d6dffda1885e5bf4354508c188246b4e205ea087ac883843d868742247a5fbb66baaf0eac8e5a92fbb8316bb5cb560a72a140ac57fdf41682729a69f2e87bd9d096ea7fe2243e6c958ee394158d70831c9d06660c46d86a14a39c8a2566588d72118eb8d53266dd16e35e3249e16aa16e0d5af04966f71037698e278e129e65de8629e28fefdf3cf399277f0eca62e9ff1f1d18429a3b06402c88e30d47aa4c1d5a9fb1cddd516ec907f3c97b0dd3076504b083004cee7db4a31d98d80c751b3a5ad56c4299434effb58b86149869bc0818738f95ed0dfb269b2d7a4747cd3d08036501f7b20fc0e66635bd89056e3de42228a607511a85dc37682e4c64a89c0592b86026d0f7cbeeef3b436e4d2f399e68334a29f514825ea8cc8e0b0e61d97391b3b62620b5f288e271365e3670d26e2e9faf37d41e3bb0cf937c446185706713b4fad79c5a4e358a3c208c37c66ab57ac40115ac256feacd89bb5ad0ae35c49cdabebee5d1f051f5ce2a5b4b23f00c53ee4adc430f8aa74f81f92871a4f6c87ad22c4d0c0387bb515e3acd8865fc1a14e9fcc5c4082fb0a1b8247736a510f45a2cc31f4724b44a0 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 2d149d32d4e889573ccc5e66c597c3ff2d7cb806bd13a8a7bdf86267a93da82eda320ff322ae7a548ec367fbeb9dedd810189c201f358b59adc00fd70ed6ac681fc660c5eb5544d2d406bcc2df444a863b70ff61e17aaf00eeebaa3bd5cd93d50ab460cfdd9bc8cdc2963784b7f9798d837bbc0483001539f0ea65a0574b467856460e9b2523d0967f5fb71556aedf832faf45e35d97405d4dc58a4ba3c45cc8259e7906588d688f4f4cc79a1a955ef3ee0fe931d16cc9da767c3a48bad09874f783dfa74c349e2e63638aadfb59a462f9d4c563da0b485541e391b6037041ec6a066d563f186be2ab97a435f0a7daceac0ef26e16870437cf012a6b6d18fbbb23349628af4dd8ca9ea986498a80edfcc2418c3f5b6f7ba8baadf3739b3c578b2f193f57c7fdc38f7a2dc379ab3eb6127c65352338c11fcfcdedaf1b43e50d488cf57e34e06b5ebbfd432c27f090fa667177dbf7b66003ee35e7c43d938343d67f9e22e5597a16f09e0793e664e7de945b5e1aaeb284dfb1b350ca0fc1390a97586564faa4e20cf7538c2eaacc0ac0831b477e37c9e984b73ed9eed897d5ef4cafd3fe5a512f7c0e5cd628dfa6d7875e9605afec33979979dbb7fda5b11e41a6976fd51aa7a079827d37ca8a7f6686ba95d7ff75a59341fb2f9b4c163c260c4dbc4587c50ab8f0ac777849b5f81df09f17c1535e854c35aa24dfdd497ef2ed8e45565966f5ad67251b96461950ad2e71f1996e955e7610338b89cd91c356804cc691922449db0645a404ae4a74ed158fb58f6f30c7965c246d5d66e96c8f14e8ad786801d7530c0afc5b757e06abc10518b274e3992e538922c7e7866c7ef08f7d2bb4c05ffa3322a8ecd8069dff0f8d878a8b7b1df472e3d2253a83ab84adf563dcc5f4671b05f29ff6d0ba97abd2555c52857abb76ccf486dadc3d346c55aa544db18aee96907f999e64c0b86f97d33f412b3c9384783457b83309ba7ef74abd51de6ea1d3fa246faaecedfda789dfb98f7ff378f61cfce4f4bfd95323502446703783ca9b6aa595d690041f97c5abf5414455c155924a47896716ac4543dce7069d131b75a57769fd4b4ca1a9d170a357026dcdbffec930063d56e3546f09b1ce9e3c82057c0bb89111e6b1bba88eb8cbcd72078fcb05d6a0ef5c84bb5607d7b20cdd733fd96dbbefabd963eddbe3cdd89a92646ebb56fade609e81b2c8c15333e2f309d15135c07edfe1b824b1e63ac96e64845c35c41e13e3511a5d429663796abf2443908d353766e4df47b9e0fd04a710ba5d6a5b30193fa5b70e6338d8858c3fde8219512b643b8c6dca2a9347ec39638b787fdb44ce734d8dcd35d4de24af9123dabc09b2e7c9bb26b3393fed6fd88de9ed3466e019ac92b4e6c9683da22cafb1a9ad3475af18ae5ee9f97446096647578f770ad3e7a9d4fdddd8ff5d9425446ca2a4c1df03fddfa4ce130f30bb5cc9cb49a2e294ebf6aaec49a762ec27e698dad4463dec486ae5ffff562eacabae3f59119c9ba4185678ed3aa057dca848709c4ba0c8e5814416c5688d33c819773db36e7b9dc65fb8fffdf6921c48f8523fe63ccd744de5c5363c9a9744f8a6daad20e5a62d47d17b464da7637d32b6c92f059443501427ac964fa569cbb074c71053f179bf1963ac704489ebb9936e23950e51ab7e26a98d6031c652701fa4ac59aa7c15d88c0337a067257b8d916db0456fad9622f44a928df6cce84a3e6634c9caca246208920c487b9a666342abc389c14c499785bcb91a95dc868fa20d25b08ac0e48c72e9b486151f21b11731d1bf049174adf279f9020aa98c38372877299c4f54a4493a3b20f8bc71cbc490b363c4162055cf3a5c13650db1154687462fc01b5e5b78c9f603255a24189b808358e17e01b9cf736a77d78a32520b6ddc9c1dd65a00e84b562b607b6ab472d5173ab53a97db08b322e95cb3378d5d088cd3ca6fa4739c6633a27d686abf040dcaa766bcc18d6b8a2f91e51ed6d49aa37aa44531bd9dfa25c116a842e50f53a68bf1617245e8b7da778eb3343d3f2575ea84627c640a6509133f4c5d78151a6695245659955cd3824f264a7df58ec87c8aa3066ecd1b68d848cb758487e647223c0154388912ed028ae364a9fa9a018d8558c3e9b179b66f2488c2be8792b1849fac0401a9756f209889fa637cf7ecc4f2c0249eb5c6f7e0219faa2a9433759ac70dabc7baab623c2023cf7ec869b75bce953ca3316b7a6fa685bdc7c8d467273268a0797b8d6fe57ddfdb03fff7ad3d5b9c80dc1939720ee8810933a04f51b78262910d7e28c0eab06b91980b65056472a293f2361183125670ac2426e514790b945d6b09c9ec354fe7c895a30231d95794f89ee60761ac9b2aaa9a75ef168c0950afb498915b2518e010c3800764bc5a65c0c54b2af686b7d954e77bc4cf8137ab398fe93429dd0ab80fc846d4cc8db2b9b2b4bb36d4c4121639c1e74622e59250701302301b4df96b2fa62736b29caf0866096f842898b2c6012b93b5ac23d1f39e192002ff0b9005fbb8cfeb8930562a4e0aae7a40c5032b8b33d0760d96c7c203920e2439d3ea02372c7f5d80b92259349076ba20c3ad4fd21752a3963cc5126342a963a363c1157f33189732f7243e465b14969f1ca199af45b50851266742151a235a8ba9a595534bd6aa31ccf52b8c5885d571a93d2577c57057e2caae68c9c84f565c72681fb15056a345236b02a1e5b13289388f035a2f8e03402f8b0a44259179a904c94725319acacd28ac1e449b87e8916091940e33861a4a35a8600267f04ffc6a3e06c60858d578bec60ee7716fd4b0225e5cceb5fc5437387522200f66fc880e0c874119c71f462cb4eaa24e67be77ca67278344199b27e2a55b50f372b65345122225d7324ca9504ce4d12bc101639e93b331e3b60e1b520e03c9703a69f54c2b1a52254ac44b86f310a711263a5a9b87a7116ec5654f7297ea76b63f939c1f49ce99d52bc58876160401558193ad98c7c8f4b6822712429679214bb2b6e8b324b58e1f57695dc8968bca7ec3717df12c1279408183b49679b349e2e45686e722c3a57bd9547a65656cbc79aec1d3b129837d84a6975d018c7ab04c88775e9c68839955775fd66ab02aad69b76307f51db2ab33915aca61969aeff14674a557c322af6997b1a8d9c51445884779227ee742986446ea1719808996049038e0d9aecee828ba054417cc3a683a7295066aaee9cb429c4740531990744a987152dca2388ba27e3769c8bf287e54e41cbc0ecca95ce621f20831c75b153fa17d336a79ff6e88ddf485daf7b1b0bcf39d8df15319d52ac67ef48a9254dd40b117941fa35a66bb50296327b725525deef70e128ca8045ec451 +ciphertext = b7b48ff76d8b1709c67027c3f1161313114a848d6c0a3460850f2b08556a47dd82a0ea4e4818a1667882dbff42ff428caf7516cf7d32a31c6efb18dbebc69a7bfb17c04eb69bcfd8b8407b85d4e68118efee310f122b077560af4bd157bceca4b72a1b4e927ff144b0443d3fc4b00ddae83dd88c33e728b7520944cad9b1106d3c43f5c469efb9b00068668f0ee8528b0482ed82cebd51bfd0c0dfea9ab42338f3636a369578792e07182f379644219159d90ef9b309b312309f3e1b4e6c86ea904f0f49fff3469b23958bcbf00a4efea040530e20d4b8a19e7a67fad4f017b2e03224f0e2bf9cb88055743cad55c59d7965a490b1cab9be13852bfaeff93799d08875f55a765bb78bb7bd3bfa6573962a233951c99a8a1ce020ac8f2cad10927a766d4fadac01ff066f8b42bc071c1de33c0c0bdfe761cd607020ae3e2c559d77717dad70f62dbf147c86712d92a2cebbd80584f1ec5dc10cf94372d772e6087b9f73c62e7994eaaa8d3a52f2f7a623ecadec7d9cd3634e44cb282e07fe20ff0fe7c29534030b12c1d6e5894536c8815e7dcbdc82f291fc8309af952c489cbfd86560db108c731c877975bbc076435c227c3c6e5546c9c9c475b693625de1896ff066e24ce650483a2a391f31ebfb68e172641a8be54ffc35f09208bd2aa1d837f9302fe2cd7d54dfaa1f833c85222135609b4af0901daeb0f46a81dfe8396aff879acd5ab17754cef6a8f1406563f8899f379fd1ff99371929304338efcd3465100e0e7e3f94fcb26f20b28eb8367b7cf3d34f74ac992b5c37050daebfafb35919ce6703d6cb3c0b1cc40e7b6b8de1120977a5e7d09943423f0939839cb6bc53df64b387ac018fee33ac33d780090ad582432c4d61514198d74acef79ed0c8710243aac73bed13ec6661e46d1e8605634578bd17e1c94b1e705c6ef1307cd7f4e828b30d3cde1f65adfca10439ae9c369f5827b94c3f553d258573f0b7c7884133cbe8277d207681800291c139dd0787f0800763d79ffbe667c1c56ea8bfc020e339f22edde053a4bd05f345e66322216b56c168a7b11bb1e630ec1fc05cd30cc3ea0ffac9a223e3aba860783728f9ecc974a0279f307f984baadee9091ad4f4db905dc75014a29e9ba246b2edc076f7f82cf5a49c4b5f85d3b3306dd9d391ed8500a7d8c567cc25f0e25e46af32bfb44d2f57d59490884b494e30499669d5e8e0ecf5b0f8024e0e1cfb9d25d5152eb7b010398f49d169f57d7565a0b51edcd362a591686d00c6c72bb1a0a93c05b52cf13b82b08e4f28062b558fda675c5a9a2fe5a0fd13d7fa0b54ca094935971149c35c0feb38bb658e929d291920fad23f27818a5184e15a7db054e4dceaa162a1fad1ad647ea7084440e80e54c6805708c4aa9b269c8853f274a6097d313dff1e36cc789806a9acf77f1a18cdd88e1e8527abf12c3ac3bc45b506939f9cf8cb65a66f83fabd5037477cb29a0a32234eb4034692edc2ec6a8f79450f232c443639979d2d4a442963d7c63f04a8863e42 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 86cdea4a587baf3d8d3989fb4707ea97fc55fecf746f98eddf7bc215145c56d399c6447ada49f30866384bc7e8aeae60a7349747867cf695cccdb8a4f1fbb3e573ade85ccf399f4f3658fbacb9798d58e522adcae103cc9fc9675184490f38ed3516cbefaed287758a4c374c0a53e3f2cf9252be65562f936dd3f9f64da1fd887f0c775823436df736c367aa301344ee66854fb39a9eb91bf3caec3e8479dad64ee41f39914a77a767a47b61ff868d0ee411aac9da94c72ea6f4d228e4cdc99c89a4b35e1c4c63cbb3edfad6898e62e28d503cfc6617bf4d2716d1d1df75c14ed9dd9486220b66d523a8111b4de5b99d236586a09a4f78af40cacb4a737c770bc4915f55b609075ee68499654baf917ff64715fa8369872aa3e14d8dc60fdae346ffd11465f119669a0d3a7188d3326017ce932eff0c7e5c26c4d851683478e5c71adee0890ddbac577f5a8763d4a76e3deddcd916ef021672847ba0d4785ea8beb28fa364e64c4fb707e9d245fb20cf6858b6552419a4d9eeb22f8c7992e3b5383e83d14d948777c356e5e4fd0bfe0c5a636bc5416a799270e5c976cda62f3a76fb134646b333b75582f8ffc51cf4bd37835c3febfce1ea86306362f92e6d27f4dca43a45edc9554f08c6056f4659bae0ecdf9e59b6df7bd66eee447f4398addc73387589e48bc4a26b6749ca6e926fd34296db3044dbdd2d23e2ca6a6755ec48c46865a36a6330a9aa5d49e67d6d62ef1a7c82ca5c0bceb163b85e44cf78312c4304bae27d66576f8fe8c3ddc8511d80771d9919ac6931264dc2f9e9ff54e875f6d7a97772feb45f1498efbcb37b4e0db4604e6cf56c9501c6598ff9425249740eacca49e9fe31d679a5fe6c3ccb4384db45e486f1719c6c585ccc03355216d43626cd8760254ae3cc4aec1f87cd5c3f0a1e641b05c7036c9bb46dc72a0f32593dbd25eacb5a88abdd9f6e102d5ee857aa66c8c47e434d8bb4a6cfabbd8b78ec427846f1ee8a287fe52b27d063b489a3e6b8ba06b00f14a3f2e6ac017f5e5724cb629b7a312b3a132ec94619e7c07637b81d50bb644a38b8e9237dc857d43eaa3d44962d6bf63bec4d1eb04b8e7aaa996b2a266ceb8a80aa46674f26f07c6ebfb484af461b6dad9a9e6d2fc5708ebb355a67064ede931f394988d9022e59e78a8a249796c155a9dc7cbfe7384dd1aff39c29773f76e0e536a77b879eef054c5e539a391d43c1b53d69566a97de931b166c6f066cf0ec81e759fa200876d53dd7724ac91656da1266ab77b3f7f01f82479685bc43a2718c93a806c3de4adcb918c7a734cb04759341c5b1496679987aa5db93b7109d3a605df4c3da6fe8cbfebc37e82f1e79611c61f806f24069ab83d7e65a46caa74bbce0897fabea9b6b58cd34e7535c0f97b4359961df3e4a498cf87ed601e9faf2fb6163c4b27626e5121b62a8addb08e6e065c83a69e5e253d48399fc665a6fad36275ed3774f115ad79f13b8bcf4f0b44638cfa6ce6018b58bea422b8f87a678deb21c75456592e9bf4cb7cf6ec3d3c1dc5ae9ca16888e9b7fea1a863b8ad1443d7530b533269a8b692cb4522ac1aa27b01d386040edd9e2ddf017bbb36ebfd49a2c5045a63081266d7c6b065ef3308afba0cf3607b2c98d83f76f7c058262b55f7c0746b3c22437f00de9d7cb69f40afd60ae74b0506afb96e30669f51c464a27b4f177666f92459b293dc208a0dac5654a8058a8fabc2d1853009743a598bab2c248068750f01227be5a4f7c4c6948f9167e88894d43b5aa44687ff177de837e2f0537f708a8f73a11fe6632dc285c9026bb23424ac2d1cbce39ac6a0a7686f088d617b096436c9f773e7cc50cea1c08db20c2949a7878d18e7372cae746b04558a8fbe97df0b9a69090449a507e6e1c07a35680412033127037607b2f0502690b47bd300a84c041650dc748ac2c060260c933a0b81847243fb3267f3cc8dbea4cea40790f37cd0373a71ec00634bb3b3b087a82ccb1e1dab77300156d8094a1d61d1f1bb3f977b749c938ab8092d71c93394856ed133075e2bbdd3cc0f27c2a2d34bc0f633f5e55c0a6c989b1e277ee9132f8779923eb2e22f78a1502ba5e55b6d53a05137867c10536e672c7336a3ea1f237263a6046f260ed3871f1d479be589744361a0d819439779075cc47a5a33e18326615134d9f09b68b6873c6ccb682f6b75662cecdf5432c37189ae09faf36735ea01c12f9ce64f4116d509c70e0072a242ff126710d178daae86539226c92d090d9b60dc63539f51b46dbf24cc8d54eda255e0ac19b03d34f5a270b6fda6d6408bcf1d2a46824b5290b8a26a8131402c9aea052d0101759345f86a66a4d238a20c6531d792170c52deed889ac3050ff87c659524337830c205622a989736b788092101933c0073c0b686106a9b88c17958a8711d272392ac448b01507634df4a23846aa9d594c80bca99f17505ac1793f2877bab4f1b211d2985842795c4c1b9fc018dd15b510556ef89b687e6b01701cbce0b56159a90f7b2c6fc1039aa38449a596c087a62b2ee5a7c3799f5a601bfaf8b9c598834fa115ae010f71167fd41b5cccc45146009752f380cdc56453e554cc779604f976fdc34e9f135261eabffbf00afc514f2699aa6a5aba0638542891c6858c7f6c6c4a12e4ce2d89b50b04c33ef262ee8b0d9a7777d3c56c85b1bafac7052fdbaed24303c843110c1892381887eb351134798b9745bc229208b277c2c999570075903deb530bf22f7906b75db35c3b24b04751bf6ed41724058c70988952d86b48519264d25ec2b817894ac370bc081362c841ebaefcd7625a67a48e3ca492d63bb9036a5b9a35d21470586510acf76fcc683035b18c05eca7d0702e0453ae00a8144779117d7c19cffb568a3c0959193d689a6adbac13df43907fd45fbf3313d49425d32ab9d81c6bd9b3486c3636e6e0015152c1cc78c809f3a3ffbc6f0628609b996980b3c43294c0e293940cd65a34bac8fcf020cc611e3e2c8e52f5ae886b8d9480551d012885318e5e6c1ecee0a3d75b342667c691d19f34fc7946e7a7047097f7938516cbb6c7f3abdb85b15e302a5547198ac0b89e7c2bfbf74050970e8dc746cf16bee6147076bb89c5124a89e070a785427cea590301cea7ab28ada228ee7bc7fcc17074063358a706989c8d6c82677287905722cca0a24ff91958c44a3044787eab3599eaf241eadb932b06b151a1a02ba8b244e9262b96144302124dddb5584adf5fef6bde5872a551b6840e3a082a8aa6dfb7232a6813367038ccb30cedc4316b63d75b641fbad2f33241a3fc47ab8b3ee1a3ed597e5b04f77c68e6c45c7fc62329b13c8d29844405db8ff6860de474bf727ecd19e54e6e1a141b +ciphertext = 0abaa530450dace740e8afd009c206de7c0d5d5e81fcfe4034bebe306027fa8372da9cd5e10572bdd552e82a2e596dbf9b6571f8a009613b4c9795d44d377353eb4f9ca13c2fcced279674bd21d310f5704ffdc74b4ad98d72648106171cdd082ab3f78eeca66e7355c012838a5129cc0084d722948d24f00a91d2be8bc44e6dd949c1e241a22341e3256f7c751b8541332ac389d3c57a8d69365bb4c9a4757dd870f5cc7ef86aaff94e26858c6f006dbd1a63bd7e09cf5e4fa6b1d2c5e03e58c3d6823a524a76336db51447a17e64ed42e7da5e9417cf0b447f32143e689ed01c4e2e5a947bdd5e2f2f701e407276c341ef766238c8e04fd1c051f71227771e36809e6a53cc68c303f190613334737bda59b4375629ac14cf16d7e98bb435b9fe348cce9b216b6ad2e6f95aab87bff03b49f440e4e284ead23353bb85c81811731705fdace139c7264797eb2624ce48122dac337e146ada469011dd6a8e3022eceaf82b27938be256f84e74878aa568930ea88e6d823514491eb9a27d956452a9aa81b9a2068d3e4fa1c27e5eec5649aa395b2ee52ee8e87033be00e7c4aed4e1375d01a7be8b16673bed2758b22eccedaee993bd26b91e8e0c25dd1a5bedbc55cab0dce5e308259efd45cbf7e6185e2792ee36a453c693da35a668d685a8d70d49d75d4be3b567fcc9a978defcc480d2f70888db31de14cf90a2f489f020358095dc8b7588ddc8ce441fb1385be6843a6e36e5775fdfd14f03018e33c5a2c027cbf4328106c33afe57b0da9700e27b3d25f905438adf34a23718cf7e6ca992dc72b32aa1c432ba1792a626fd91ceefed47c8cbec2b9cea537b0f9253cf9a11176f3103c7a98859e4211e995610a4817527977eed6ea70b310f1c91ca5b6403118084159e84b497c9a995e3918216d5ea0706c89031c2d5ebf8febd8e68b594f00d266e41ce12e3dbfd16c130d44a0378b114dce1a6eb50f227d4d43f1f8d615b7b278546bb53dde219677c980f215c8b2b2284655e596a343d1aba0e277b8c98de9df84208a9e045828a75b1573bb15ce0e8d7c39809e57d118e0b8fb2d67d72afbe8e9750c4eacd95c4a69e03a16911d27f1bc5351a35212e69241dc4d780fbd4c9dccf01bb79fc2a40f4c29f0e22dc552758c7f735a9bb13685b1e45772b47a97d4312359ff0d3ab6191e572bbf9505210582a470e58a16b3c5cbede72d07802d973e09f80339684eec8fb84ac613c4c869cfda4c6ab82ec54d8d3aa70bdf89c792ba8b5ed3c2b3632fd391e43fbc66733212d439e5a67d20f237c2a0f782f96a9e2d93adb6f1333182ce55056d4cc807098b5333541269a10935d6132fc5dffc549d99b25a1f48d67999e669ed8b5202f0ce91f3f368882ad1eb67bff3a6941f16ee6349019bd41433c2ddd70f7d5b789b000503a2ec1f48e77869240ffc649b1133374e80a16ecca2e28baee086b973aeccd3692fe9597d934af1c53668af5ba474979d2d746156fbce5cb86367134f0476f06c94c3b52ee1f1b675a67 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = ce83fe29cfef43ffbbd2bd49e6c8d265cfe8b68ecbab8c9186f3f5f86e7895e6320fe5c697fc3b82546681b3ca5f4a52f1f7501b75ff86d35ccb9756e869795c166362fac89c7b5ad41c7c74c596e2a7458f4e9cd11ce0c99dc94fd3564baf5f1ec3a32836d7d9be86412fcdccebb1b1e489622d7e29264a9ca86c94c7ed548fc9c6c8d04d8e8f51b5f0077d6285bb32826e8a157c80c3ddd905c333175e6c18fd44611f4fd7aaec3314e7995ff0334c84d96a66fc8a55578e4c58f7826ee86f183e9da305d5f11f4c3f06ca5089fc1e28d0feea8a8e98d5a54bcb90d5feca1446783f7f5058cca25e617f443dabba304b353f4a5caabf1ce79a87f5838eec033b3f3d2ff5f29eb887e8f950de891495dde7be94b92cf50374963bdc7216bd7cdab8d0147fa21f0c3845979387cf794aedbbeecdb004258867bdeec5cb82fc85eba2f4510f5e4a40ad9b6aea7e5e45762076b81d88ec2bb9edd604ddf13c91e947a7d7abc2a2aa91a24d4d8756fb42aa71eb25f09aabdd4a9dc2266bd51163cd2ba831957675823748306ddf7e94b3ff0996172f5737a766c10b6aec2e3b5b073eff93c3ad9ebbf2b93ff47c84d7dafe794990e2db4a7e9ab19cc5dcd62f427e6a935ce397659db2189fcce5e4b971668c4793ca4954b4787d37315eedf1f5ad2557caef78c915ddc223d836c407936ec58825f3b2a29f5a5164b097a94a13d8ad3a27bf1f0bdd08d7fb932e5cb1b67c7d2c4a7bc7a6a9ad54d2a34de69c78195bb149e4b4cebab7904e612ebe9540385f2f74757c76fc2da3c7b03a34aa5f4e2ac9df5ddfefc1dfad84bb996e6c7342677000cfc9942cc22baf934d97a66037a1886dc51c0f36ca2be881bff86ef5f41f0cf30a4c6ec1ef96090874b3ca751de7d1087ae5f419c67eb4514754d47d7848981cd36107586d36818e74ad98989c8d0fafac4e34ee0b545ee7d7876a613f0ae1be7c3f10b758b215827ada9fa1c83b129c6bdc5b621d3a5da7f396d7ef9b184a38d819eb6a3cf88fefcae833a68a3cb6b30bac5ad7567c788d8d8d3a7c7fffbd9af53b274b93593115b5b7a538feaf93706c88c178bab897c7e98c23b8452e9852b6d410e8afa85c902edcb9a5e87a31ca84ac6b89a75830576d62bc159cb139f77bfd645d68e7c99ffe394d40f27fed66e4e643897df22ce013dbeb426a70402fdf21c780c67bb011fb3e8cb746c1be4c9f847dc1235f72e6bdfeaec55cdf6e377395c5be7b764a41e0f731288fbf729fddd379befe58901b1eefadbceefae549e5933aa9f9c64dfff73c486b5635e674d56213cdad7637854c7b8448ae35fba6dffc435ac7553dfe935caa98bf32186817b5adb42375e96c30d0a96df39658ede95912946813cb75cd3fb395aa73a916514533857b4c3405fc32c2946cf404f61c2d91b6cbb00def96459c45e558b5048b79cc4cb8ab0ebd7f8f320637a62f2d38d5b3c0593b42d32a38be93e2ac1ffebb496a5fc4a992aebaeb76da23988fbb3f9a79dc7145efdb5246466f25af4ad971014970ecefb36316b86b3585f7bd75381ea0bf3952c688b4cf6c8a25cd964cecef5c1c34b4cf8359caf3295dd63ad3dbdda83f072ed42fd8b7c2bb439e686b49d538cf32a05ab82372f7525df40085b3413f078226b97c234b815ec615b2683f1d9ab32dc0314c6cce6e9620c8e73b1dc85bed5205cde5a44f40427865a62356ce44751c7278a3b236bc2d208c7b383129661810a6a2962496d058ca4875ad234c2df951612e665984bbae791c279ee835b105202d4751f1a330dc6b0bdcc38fdd6458b0ca7a9bda026bd64e80868b87b58ccf2a37ca94cb06279ee77a6731e847487142561863b5f38c5aa4c0158ac28e95012c10a8b8e99ef7db12c05009311a74791c6c8b355e4a861dd3cb6fa085884d7a7e8cd270f656ce29f9bf3b91b798032c16b00f8cd722a1cabfbb25c3002324c56b66df87182504581a76297ee1181cf05a6d89698cc94021b16574264435f2cb137a7a667a4548c96f835cbbcf27805ae37448674aa998818cf26d15a63689777a9b98219ac3b9ecf84203826eae294800f5a07ffa886cc86e7d095f42c471c121a69a1972a7906abbd31003f6c8c0d07ef481b55fe185811084d9a472ccbcc586b6a9a6f24d269ab36126a3f0381b29532d027c2d5e21cc5b9c6ec8303e4b388a6b7216b3e581c0566558107c8b94c599f09c2ecc4b7a824fa3db9a29722317d5bc5d43827f4bc6d3a91f65dca56bc26de9d40bf2f69263cb010a9a24a749c931631ec2d13ea4d5136aa8a97ee019ae1291ea34b0807886ffa323ad3b0f83f82e5d9a2d748945a3ca34b9535d0460a6f734bbeeb66a4e3c257bb079f5d80f6deb0dbec130fe4a182fdb16291403f37a191c381723965c3fd90d9f2b67c36ca3ac141030ab516a01453532aa06b73a91b5ba7d1a308e286fced38f2858801022a453320a857b564179c55f0436b25cb191865de69877b47041d9d0c2c9bc42ca513f207a72ea9a5cc48b573fb402ba8b5ae6d73f2e0b044b8ca67c1031577099b9975fad7103c7f6bf80099bb51138d8a7af7bb509b761a9c6407dd9826b7ff87879098248d779d6f26aa0215084f286ac77c50849ad19f29a32b07ef517000ff71799d6be1d177508bb969d9479c6c037a5a18bf4302720e240dfa603b7f8745144906bb88522505b19336bee5572188853a47b4f8ed8a040b251307299be642e086317e1504784990f2149cb2d89b1a8542e4a19cfafd57ade9a234545142afcb3e544b49df75b0cc78f5aab935752746ee7a7f7936777330a66c1063c50becc4286a3db4aa66cb602553849b5baaf83965ac6bdb19a9e5db8251de0267ea3c0eec342b51505469aa7fe936a5829463892645438a3a182859da136e033b926695421a1891610816e136dbbe36adc08cf00e4b44649410b2a11ef254144c27787e54cc5a533e8e54f11ea94f7e9c2009d25a6248321f04a53c31787c12aca9cc78fcc06b161701852215bc6c29d1779f5c183152cacb583a90399746f75c5bb337f1b580b9029b112579884f792ea5a52187a109f547cda89b7fbba90c66065a33423da4515d13bb5ffa074aadb0c55119065a51239511bb33288f994b121da8913992b979a59bbd64036968621e76ae336096fd6125cdac4f767a883e6448b078dc04b1f2b7aa49a1180c0f3bc65d2a93458291982652063419a9cb7f1042c38f483c4a90e17aca78e9fe10b44687f9aa606cae8888e4c21ab0f7b85eb3d3a2a3d2fe8ed883d1de0ee044dbdf6787ff038dbf9c133557169c62fc1ce2580739369aa87df00b496485a3407f591791a5db4578b5972093a95bec3b8e70c1d542c9b5c9789729f8922 +ciphertext = 5794df0ad781361c6821319687c08ace02ce58cfa47ddb4d8d9659ecfc28c7997b98665da6b0e985ce869168935c6dc81877db1c88d3aeb37515cca3dbdde9eea44707066a89fee8c42d3c64921c97accb8b62249e20d248c7507d5b49a5849c54bca761745c7d2c5f83fe7551795d9c1979cfec5a0b31361a515d95899cc121934065a0cb0f8e8aab6f6789feda87579f26c14c76081ca22bd24f65c5d1824ecf796520e2ea33b9feafaa45da662c032e866b26f5ab26dfc7e7baa2e4a1d14c4a3fe70d3aea96e5a68d7118706a7869e37651524046df15eb0fe51c70b89b9f6462ee7481ab1472d4f9997a65e06650276b1fea8af04fae7746309307aacda58e3af745df5f02e9102b8c5b2d981321cbc3ec8476a2f7873ca3013d4ad3b9d1914d331a97ce1eaacd85f9145759ae255ab80c34564794d2f58c00a1bc10e69f5c28934b163ac554512b43587af22a43cb01471ff8ec21cdbc2d708476036805bee7199078b139009ced9b39a402bf0744842222515aa55d8d86d2fb04e81ee7a8fad1d7b46862cedcf5ec66503bcaaaac78f336107c4b406c4e67283b0e7ea99ac08d222822b6721f1e1669e3ecc52573d477c6784ef31637808a50bd3ae98701bd1a8831e11692be8e0c84474c9ba739dd01fdb24bdcbe8e9a3a12082f20ded7d06ed3bfbefd1f0e90ec2dfcb1cbd039f1e5c4f657296371ca5f2947b27e686541e8991603850422a2091a9ad87ad342e936f0d78e4211710f8b51b947e8a2aa98fdabd660119835eeafbcea6e2bf2895d22d264a9d558222926469d2454fc948e843c0d086ab8980665fdd0f600d03a14f14b0bbb2756a2f17b38fffaba6ade7db5768c0ab9473bc0e1d133e2467020c0ed4e53b94b722a3ea63ef74433a49ee5856848991cf9f0b24bd39e90d57c00dd86ca0bb4b3c0af67a84127a41cfc3d233ea766ed7de7784c9fc0a422f3f0d2b6432583d93d001e167765db6af0aca9b2320640d83d7b41bead197632aeff5b952ca216c0051311b6547d04f5edfbcab178ff1891eb6e42fd6c2986654b58f41c644b00785201b26f4606bf4b5c0b3d4f46d1f606df167be6584979b1d26d3f8b61a08d65c6f733c6ff2288d252052250fae9373d9b3e2b314be7cc454b749fcb6e5207d051be4fa345abde67f1603f12a5433a54d2badeb7a9f5912209b733f2682e7d39208af7a21872e4b64ef835a41e1606f8649823aa236b47579fc8263c2f812ad4846b2a8217c847656e2d54ab774fe8ae617a341aa2b3fd2ea3f6959bfe58c26a9db8c3badad7a7557c7e75ead54c9bf85ffe9e4249dc1250e37c9bfe5343aa0653618e0e651bce7dec72cb14510f1580c43c8ee786ee3ea87499c80183544a48db67b8a8435be1e68d8d3c6433aca5f42c8fdd3c144e96d3dfeb60fb1d9b1d92d8da62e51fa1e060c973ef92c5428e9be6d0a547c9aadcc47e35c0e7865b6493dccf4381da972bb51f99d7b6f4bb7ffb8950798217480a4230859480aab0586e2f09eec53c2f4f645f82 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = f76c7d810fb7ca65bfe6a59aa3645a8f5eafe5fb80155f41134cc072b6dad4c7fd81cfbcbe1630eeda661cc6fe02bd798203a1a287c4b807f6de5ffbeee6627c864149ebabd94f80749e93068af349ff861dbb7f1a19e4ba2bb3ac6c80d5daef483c8b87cecf5a2c3bf8f672855579948ea1b1f3cd02e445cbe798ac0361e15335390d51294667b9149f38d85a1839ae43d331bf24d91c4accbb24c8e91d5a9e1e85ba98db7e13cd3563aa235b899e85d9535f80a47e62c043b089d5a0bd48b225ebb2d0538f49c8ac3c4bd677e8d93c07dc3414d16b4686d653ce4715a85963e71bb937f6ae91637ead543e8e8165f69dba4d0b6fdd057963e70cc01e78dfe94d8d03e3f75c95a2c538e90924749bd3fdc32bf1b58c6f5e4b59c157cab7653c0d146dec9a3f95ef41994bd9be6f446f35ad788ff79f1e6464fb316db8449a3ab7525b3e8acefb55fe4fb29d57c3a5e0b17f89493ea5747782d404487926ad757bebf81cb416d94265dcacea475fcdaa727d0b5f01b376251be2407e7fbb1be976b7704fe5ae5bdedcd17b87fa8bbd3e8f4d3c9eb567b5c20243677d84eae2dbec1d049a842b7f9da9cece8931851bb35776caed97c27d395108f4f661aa60cc28eabb2774c67773fb29b445f3554d386c87d489d895a43fff68af0c81f6065e57e744f729e20323b013d35802ef6bac37d0968566523ed6f526eee95f8372d45a42c4e022239fb0b3cd23d4f51927b3567e9a1f3ad689a4abc508660dccf82706b765ca4bc1887fd064cf8285b1155863e16be12bcbb1972f55b46fce8fa4c51c97cfceb7d04daa9f746766f2f5487c93b99ee9825cb78ab0a98bf6863a083758e9279245e495ad0a5b877f4c1adc3e67d756c1c8647fb4ba32b75a6da3a05a97dfc2fefcd279666dad46e064a74625530e84fefd7fc1d5f959cadf56389c4c646d9fa11a8fb5f7de1f2f56c8164d80c69fb804d18a647af7f3ad970f65f55cb786e8726b65689a6a7520ed45b7d45aec05d706de35a44793ad2c6bba5a59d293528bd94d65f54bae4798eba5b26de8b2267f8eb8836ad1f373f67af134b8b429a8457c7ddc5b3f74b0157f67fd91ec88436d5667803ae5749b4c9c499a36c58fc5a7ccc10a604feddde74bbf4345d2c02ab0ed949f5da8b9efb83c4a2395e4a4e3a713df4f95901e8aa2716a3ebb09aaf61c93845860224dede0f8c0865fe461bedfdd176c68b4c115d9edac14e21934f13855ac22e8c98e3643c3d7c3b6c6c4ca9643096ed525c5aa00d3fad9caf58bc44aa06fea2873bedaf7c56b0cf7a42dc0fe95cfbf1fc0039cea65c6fc18c37e62afb9194c9ec1db8ba0dd36c7c3a620b5c661d8ab0b46a6cd3391e64fe8e40cbdb18fc2207630c37e5542cede3c395bf2a5a15ae8b50698ddde937432ecb150f9b3c136881058a7510f4d9b247232c7f89cdd7463cd51b7ba599c985c6fbd8c7bdff135c99e85a3d113554c59bcd6ae298d593565905e3645cde132b4c1ab84677e44fa1f4a8a9d5c6a44659805cc8898e563823c8286d54a1cb4b8db866a8f5c74f88f784e4b6fbad380c523efcbfeed4ec89df82490b5febabd4673d84e7b9dfd45147e8f2dddcfc2a7d7155d34ecd4c65cec93a9b26efe3b667405482e3aa37d48aeea67c1698008da4b68683697dfd34fd72a6f39ec0aa0806ea5c59b4554182f6034b9c5b7cb438e21a14774d58afab0099e478a4ba8568e192c71db7c208b7115d29bf649bfb3d23c2d70599682c549ea28dc16597a43aa6e65c77c432f554b067a64ad62ab71492a1aad6045677c74e3e8773fb8665259abd821bf07d2157c09199435bf41992628534daae814ee4ac64ad89ffa1547442b8cf6f54664c550da5cad0d828174805da5d66f01e584789992bf0a4036d770b6c5b3e21b78f5da2467db42479b478f0570d48071f028110f555857e4acb555b9c7d5b5d913b75d5b393bd4b9b2c12d34027aede4a22fd80abe26a9c93c938c6b1348708d1bda7fe6c55bf66981695487ab81362f50b7376c6a52cc39769b921f575e5d7a9666abc2dd9459a5595e3ad631a0c638c3a2181b649704748141394053849b4f996f9b8a68567b73227b8c9e4588ee4a13b75379d2776a7510abb21941c2b36357e8248686a5d973b946b82e40802290651a073636b367671c9c001ac91ad03b9d6e83721ae1247cc188fc05b0249571656a276eea09b6d3376c208335618b1fc2748655ceef805c39165d0ce9bfed062add0c0a50e43167c80e5301a076c9cdc1f13852a5987aa3cef5e5864a706b3de947d2ac8e8cea0c3f83745bf3185bac9fd0162510f70bd20129d7c5215026114c4b5ef044a8a29a3f01fa02a0a3ce928a65ce8cb566848110994e7ce20ea5c30304d6ccbc7477bb78b3ec527758b7828b836dbb2742af6095a0bb882c2c9d8e162618029c1fb5aaf4b963fcc4a35ab78b0d9942fbdb53d4684ca85218dc27678719ca0d4a8cd8e9bcaeb944b7c0670ab171927c56c35034ad92bb3e6714d0f7c137c2b9a1fc5b72367c35c55d5feb93d1274b88bc558158c5d478c34b68240ad193e95c0311aa501b3c1c44b20ab6ca2d2de1c56b65618ca53f0e91550851bfbc289206d1406b27047fe610ec01a86e8ba94516aa926b99879836dbb27a7056c4d54bbd19a44096d1b3f3e9956cac29e7ab95f175b9d9a0078da633f10a6fee899f400533f0f77102da19fb02610003674828758e23b5ec724c6829b95b8a6750f1988f431e7537ca9d05701ac8ae2034688082c5c20a122c6349db27ab958504fdb4c527b223b2420db7246a4a69b58085a3c1e6997db19fe17a2bc23bcd60b924cc393ebfca864da054ba38bb733b00fdf57ab147b922278fb132c5f5774bfe368dc2b66583790d30d282a248b7e9d43a562ba1892a985b75a7aff961762a05fb35b9420905bb8c4de00a3846e38ca7d71411e89f9e2c9489c597834c7a5315080130648f5347639184f315bff2d580ffd0227c9185adf9203ed50baa43a9174a7ae9b5655f2245a15c30f877bb7dcb2ec184138792738113895a980dca31baf6b5261e10a1d98ab660c066bcb05ac25429775c3bd1550d4a823fc96442cb2770751c812ce67613e48bfbe66a0fdba909317513220ebc3c55fa1364f318812199009af24f9f70c36f81b22b20be53208f0dc44dd3b6abb7236e1fd37c53fb1ee8c86810863a86b0029a58955dc73ec8a436112b5c3a75ceec356bbd91355e4c3941a07e45ad3ecb9ae67e7527f70f6e07a757bd112947074d5120a1f2a1e965ac6995d525e324e8252d8e2c2da909a29b24baca8b68daa5122cb539a474b9402bf02481ce4b27a52e87feb92c4399c7f2988d40e942e7496ad15ad2aa88 +ciphertext = 1af07cebe18b64049fd34156f0c1f2920934c333ba89237d4b942881e51f495d5cc4e1607d128519e51b8c59997b6a0c1402df0d3b032f6c3d0b4c34d48a5935ff61319530ec1e6ae306dc8b30e220031aa5549b00f4142201aec84beabf37c661c604bc26825e96075fb2ca24bb539187e1913849f7b9d0e6fabda2304d838021de30fb367172a9d0d0627398f966685df3de86f3d74f501eb56755844eb64f6b739820acebfa24ee515d7043e259353c7744dbce3886122abae686e4a4532a5863f6e898d4fda096266d25ddc674c28614e4d0ad2d38ce80b6855ac742b6f3cba2602056622565b486ade99294683b7de8cf7548b630ff5a6b0f6d52dbbfb9b5ddfae1d98eaf68a43a2b33cff3dd605aceed93f539b3da3a070d30efc2c1e9fbe027af86d87c3b8f84a2f30fb6359570ed3721eeee8efa351da77c69043c19c695e46a5f9535338142395c9e3660aee95765ed84646d6e60cb3343b60a61a4d3cf65975764d735f6aa57cbb07c06ffa651932e698969842dc1709ba7092192154bfc55c3d6362fa419e38b2001439b41a2d149e8ac22a5d9bb7700570b08dc2d3b91f764b43b70dfc2ebd534951701b6b985ad3b3420290b88b42e50b2e3edf857ff854f1693bf0977523e012bd6332381a1155b64e0bdba2dd7cd68d408602ed0912bb5b3f672f8ffa42eacc31da8601cf43fdf187a673b1309ff1bd7d8392bb76f71394a596bda178273192746c40d34eb4f80888ceae88291418b96f333cd1b15d7522b21ea6b57f12415509e932814505053320f84004637e479d1c6a944eee6896c75ec69367beb5cb7ecc5ce284120fbd24be653f61cea186f2f7b37a1f7d2bef08b8e1aa006118232bbf8217171ad0c0a71d0396cfdb42e64a1d0705439e131be2137af000c553d68e7830e3a3fefd5174bbbec523df366b228fca4c8fd4dcb2dbee571526549cac4dca391de5d82e0ed17962c52399aed8ec81c86717fc813139fa35dcf7a4a6c1b110883a86daf45840ef4bf7194122719b50e0980a7098fce047913348755fbc1f23de982560b3ecff6b82aca52f54dbd4f3bbf308ba1be699fab8207dc80ba11a923d7754769608a88c98835903054e66d810341f9809cfab29c53d16b3a804b9b51de50b07e7aeb9e7f378bd106a594c74af3d60e6d6b466d6f5eefe64f7b71a6cc2fb6b82a5c44b768e89dda891891ae853ca43da23068556a857fabd5f1689adae488c6bd4af811e9176b868deeaa2ad31caf71bd6f4ce8ba595c47c80ef6a24aa4d950c090ba805a99df998ef6a6305f176739ef2ae0bdfabb999a44aaa72fded16b7806d99248cd65394743da26358a661d6283c44ce9b8ed089eab79398513f8ebff93ed127709a43f050a7742100941def83b6d526fb499216d04d250e39fe6f80b4d36b303bb6898bc06362734370b3aba94c1a6244a5a8c7caa9d282082514629a0f864ebb91669acc757f9d7b8aa3059c9e44c7f1925ea18c3c80d85549686f74b7e8a8197efc89d42d2a15d195d +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = ab25da2298917b27d7af1ac0941acc5b7bf59d1aae8f878bb0a37089b845992bf03ee4c8f1a58cfadfcc0059ade2ebe31bdc5fe3049e17f350a805c6f30479bf9eb12a46e90a5332eca4737df5a32fe6dccf3ffb5a2d60add75a62f88d5bf64270be8a954e95f1ecb1babac1dd0fdd39339ed45ac8c3ab58248f48096ee07693e030ae914e753731964fdff686f0a354703858c15c99f31ae9dacf81aea3d04d7e8d1ca5452fe58183e8d6dd666792da7a77bd927dc77793396e4518f00e05da7e55d95a33af5683a4dd1a5f6878c1e6fa85771a990fae6f7a38d34a897855769db8e4a9a425860fec7032dd9e96b665f57662b2bb86e46fc3f9b7d6e354c12423ac6cdc74974ad767d73e75f5739747433c3451f8e5b85e63e1b7fdd9f7acd0cc07ba26b74d5135f0497be998a4445c29f49739f25044cffe5e679b4955122f3418bfbac86cc24234ef2c7d966e9a7a03c3cc0ac5f6abf857dc2ae40ad85825757d2b5a59b97b7f8d6de5db1fe59e0e3c1f15491ff4cf64c564e50c389f6c85b8cd60fa9de1a55e8cd3b48c2df68c67f3497f439c11f8504e577cf49acfaf7d4a2b0932396fd2937dfcc2138762d8753606f95d1ded6975a242654ddecb5663ac44228bbe5bd58d9c9d426c66802b466b21dc8d7a23893a953033874d0a93626d0db6a4fa3fe9fbddfecaff3e789aae9ed3ca153fbe8fe8b95547df8ddca526aed5fe59639c59a7699296486188c3ca111479ddaa747f99ac825c7594aeed636e683cf9fee8aabb7708fbb14838db64e49194b1289ec49a1e81c66bcf05c67e1afd5dcb658d8dfab09c28d9684eef4e2aa03d9b8218889f87c5a5690f99a7459afdd69db283d2d986edab2dbe38addb971694d3b6aea8c6b5d53a686beaa479ffabc18cec4628d75a7e4871a9f5591cee482aa05bb73078dde7c21edea576bfb5a63031875a24bda019e6d8d64a30d0dcb39d85d09adec7583c34ab1cb1dd99a115547e3e4ccdf2a872e92eb2330a5f6c3d918226b7fcfc9fb4f37d8103437ecefee073a49d29a735a3e6f8e9f2f783797e49b8c2c6e46f76c7f8a66838c86364a788d3c4ae68edfca09391e8547edfe86ca2de31c5b96caf479d966f688e1f38c6196527be7844b475149ac3a76865c94993e518941a63a2e4559e81a46c8a99afd2a73b36c633ddc6b32b14723f04a83af89a420a3d059ed312af8880247236a3761236b068a9a4edf55317e8841218441fcee3744f977215992ba99c1eea7dbea33aa83382b909bf1eaa9030b4386f8baaea643e4163e204ccddf8243f81367f4d979bf11f5b84eb5d5df53318463102938a862e4ad73559614dddb417e9a2acab9297381a77d8391c78a8e4d29487c32439ea7e5ad945b8d6e1ff4368c7a2b09eb8bb155d04c55776aff8673b548b6a4feb8944b7334bccbab144c84344457b8b794a3d3b4dfc2357bfaff7f9c4ce8ba8d0355fc1d9de9c7a8332403a41318d86357ef9d309fab847bab1aa5d88935d816a708c6a5e420f3bce4f52569cbc724a53df1b88919f67aa4fe86c85e339863c8dd49cbf3dd797186925cf6edb976de613cc2c46beb06b39f6cf64716a76e67831e4198822d7738669fc778ad88c5785417b65b2e4235cc67947d7b214627d326ac1adebccc3a64017e004499a8887c4a649e443e74720f0b1bedd52b1a8eb78b3ac2d5516b7a3233be9448575209675f4a813120422684191d6771ef2b44d92b2ca3bcdd5f5ac20a63efc237ff9d99bb4f5094afc187ebbad39b8b9ce75902190741640babf653886162645a84262a24b1885c626403f23136707816acf28950bf181742c98347022cd5941b7b69e21b5cfc2b4c6c5f301bd32a2e7882a1e1a9cd94743fc86af0cd26b51b3512003cbe8628d299663da40baef443677033da8b8c21e0a0f12fb93f4d63809375fc877866394a1a5409e2f13b3e5011a2a5877732415281b7b19991e6ee0a470561b6bcb46d87b4086f18ca29c5fdcd622f4315dcfb11db2c6cf136b7b0a870ae89669ad1011477899b8f679e5c9a8413959ca0cbfb3b54ad58c98b94760058c6f1f499435118d9143723da05ba8f13e5cca1813f91ce01092917ba1d798ba3481121026713be1889b58375e5c4f9bb0bcc5fa808e2c00a36ca575c68b1d232778f71bf0927c5f2092d0629588826d02005db9bc0dce456e2b928ec9fb9c7a138e7b1065a2b660c287c3d062144cca71e5c1294442073ad48afc555767f1bebaf550d520659496af9237a22c27670a080f8a461778aa42c6ca9a954c28a658c73847a586fc3ef266562240acb6978e026152b1149b8d426aefe37bbd263a00da05df48375e53bacf9c4c11d4bbb055666ad008736b9c323a9974661215495e032aaec611af0e6a9244c2bfb6f3195d5121edc3c0719c3fc1365c2bfc70d5c6140e6a383714a0931ccdff946adcf73993aa113c90aef03374e251ace73770a350428ec32a9ddb4aed8832526968412863966228644b9af9842c2e967957f10d350a3499876f25d157bb2812501c8dc95365f83bc64b6340fa6cb4c2816b31824d028726de0112aa9ccc9e0b6869099d310aa6e5b79609487e7a20a56ba75c45986f92f5a4d1672f3d99927a1193ba15bf5df2586e823292593c49321bac9044e4844a7a6bcb08309e2520b6acf20e73ba5b05931e29ba43b2000a48c72a5df05ef715cd8865cf16a835a83c271402071d1068a426839ca424cb666545664ea5e7461af147b9d84583285ea1a05a02732031bb0ba40b14c828bb0e82807fc57882b31d9cf509be7b712f56994721b55da921eee8ad45c8b4e99931c9b71b473a89a2d4821213a1acfc453a41784d35b522e93c2d994d083674c71583782128476b04fec71f17ccc65b9c83f52c207b08adb10824a505b6da8a78d4c599a5b09979d9491e1383ea155576730614fcbdec1a8c801b94083a0fb55790b136bc5f37b752f3a6c636481debc5da8892ac1b04ac7447953015e7251838acbb6e24b508578b62d7450c46c76272806ac407112b73f7946d9654a45e943b406776e057c22e669b34a39d92f87928f8689cb8363b5b07b861be5a750bedb4a909605e6e26a489a5a4d9fa7be3976479f8abab955200c479e75983be821e79682ffb18553b72cf0797b2d2117add5ac0abc71cf0e4ca83c26d218295aec75872ba3a8b3ca22a2ab83404a046355fd394bf35d66df46a6124d18b9a4606305a5968c4ccdf6b77a5ef23c5d54c68389e610b30de122c2b2cdcea30b3c780612fb9992721e26273a3d8a85f38cfda38c66ae39b2f9186ef7bc1e0c98e8976a6cbc6c4875d73d7fb24c3da70fe850e80aa818301d60c70f3038153866dcd5d179e22db59b8991bb4 +ciphertext = 6e4a75139d037fe938768f42f9de93f12feeff1328beb5a9f23790e2eabec1f605207994eefc2cb37851f718bae8b94570cb06fb35ada46207fc9a0e25d535731cff7ba833963352ee9feb501bb3e1365e85ae3997630c5b387271ed60ba872afa7ee2b87867aaa14da0a174f83f7d488ec12b72107372c0a31677a6e933144ce571955be7a06a7b152b6693a5f07ca8f90a0062ff6c88bf45956e13df2e92017c6e246c4228ff0e86b50e0e6224000a44edceda07b3e8d6be399da183ebea434db5e9e5703dd199e340b02797bf62b29f442e378f9b0d99ab7c771d39102ac07341ed6d823a4fe6094622e3a12d74f4615e7b216d4c3da113bf62109b12fdd8046de27fadd35330879359b0ed0085da5578a1330c3755572958001f25524adfb9fa6220e24417a7d1bcaf63ea1044a3e9b02fd249a2c0e281b2f9e2e18b9f7552f4446192b7b65f881954cfeebfaa3075860d1c6c4e819e40873a992b6837257ac50a7fe7e3d759deb249fec5755da72e4c93d2c412e316e22694dba50831ff7c2bf0a294ff6329d0d2022b3aa6a9791de9fe6face1ce67ad828cc0c6293a7e5d6bc26f58e63e025c757576e849a11f122e6eec09ba7025951df26ccb414cdc914f47584d443f06310e86ee20c303ef9e30e269f7a67f8e67313cbbe0b06d318a172d0c47d6a7fbb1aed20fb6da5a28c53277d1d38800593d571b6dbdf2671ff6802d7c346232aaea7fb96134d8d16ae62b07804474cac1b3ecdcd5c26c112bcc9f72a003c4931cdbe1c89158505ab8267e3f5cb5869aee93956bc0334d09b719d898685f04a70a32ea8b0e56aa6b36405221ce539690e6e85f2227fc6cf40d203d55a2de22c902f1eb16339191576f3dbbbbed0c2ef90a5e7fd04011b33fe9a0eb2ec1a8fad089a410995974f5b2ee8d72e80a716b2c389322a279a2bf71c0a563da36779887c8943fb2cdb5dc6396d459acc88d04d09d1d1f0ad82c8e26c89f48c2dfe104483145dfcd2faef8807c4a160fc4fd025fd35f188b55907556dc55bed560970e3046c4b621038194bafc02da0503f3a9828da90b7dcc73add69908421d8169d32225d54111d122a456092b08e012a3c0d8994cc43fe993d7501fb7c7be94ec4b223dd13f50272afeef76c7ffcabdb509f9c1f9baf4b72f9908cb5ce3770a3040557797f666c8927dc08608709eb97942a64c31a1f71ebd7066031f415034f9d8e9c267b539a3274196919959d4f919ad4068b21b53fb18cdcec7391b9ab46f401672a22f2302af1a5104088d9f6628f894a7e04a78b4666f669eaf906e9ed3c8c9bd7ac220104967485cff8df46b064b982a2b552cd521b477e8b8e90b5f1ce11ca9ba16b045f4dc0f36a3b4ca8fe87b1fa6057b5334e993508192c6b46c79b196012dede5a06e4655b46c2540a64ee40830c7ed1c85507809810086d5be4ea8f1197cea21fc56113e45368c6f3d590fddaffd2848481a3424c813f3047dd8697a6316611889a74c0b5a4fa071de935d2d473ac2a0d4f62ac009 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = f80c63dd6cbda93b6cef7e9fbad6bdbe2ad3f18b337a3d6ace66f5fb38c5edac9c8c94525c85961e14a7618fbbd86dccf9b5ac787d88b0cc80e13d4fbcfc697c0be4ddfecf7783f5eb473d11a43da4575b697a860445b02cf75e8b945ff9433a337c754e19453d4bbfd3fd7c76e8b7a68b92abc870b67fd2f7634b9b37902d39bca04653fad9a0e5fdbe548abb97c7a1fa18c34cebbae3987f4b3c52a60d6629159ac6875276053908b389da3ebc7e2871761e69b6e8ec8d8b5f52854a3e644c5d5d4675d688ba13de9e78a79e77885235e6ffeafec9946aa989ea634b6ab7dd44570d3acf348bdcd859567a74a7b735579fdf8d0ce3e467ae30eee025e430114a5a60d3b42bb438468fe637a69596eb953ab7b3e4bf8b3bd9923dbc5189a37e9fe7bd9b763fa905314c0a35387a8e865fbf7135698e15b8d9abd778ada5af1b7db0ce72aa6a4d6a3dff1045e60387e876c580a8df4479ebdd804b6514ad9282ff91f37d6ab128905663aecb0bb31b5ed4687e449e1fc33515ea2ec5dca81ace90a4da8a6a355c2ea9c85d5491ea3b48b5323cc567eae9d9fbdb380fe5d4c95e452bd34f0f65a39ad6fd922a3c50a8566edab03358745e8de332f4d1112fbfd4839ae7b6745c66aca80abab92e336aef99253b40a8affdf02ab70fa7f3baccb1ad563ad20c5eb9bdeae564be2404dde92adf06ec68c16d4c7435d909e3e7f8968948befea297a27a9fef1b5377b02653d66897ab5f6cf51553c26848207e74bd9495da5bd30575d358a637a5fc31c99ba7bb3d4c691eb555e4b1c208dfb52f3c5413fd16238861fb650bcba24c1f7026fba51f5985487ed3fe1375ba5dd7a06bc2ab048bcb4a78e6d3c749be41bf5ed992733630b8c917f89960273740a5950728f4aaedf908e5fd334373e8a575d5e5fe96e5ad0cc95bf2c761ae577b9ef6bead43e03f5d33e0765d748c409f8a44227b8f55838b38695c5e23ff2cb9bfdd7cb85239d6e9ccd3dda468a15de22784e7879f77e2169c642efe6a8942a2ce3aee97300ff4caabf862058b6e7dce6f34c79ba30d85380ea98d73d936a8a595098c8b19820ad9ef4755ee021d69aa688bfbf5ac4ffde8c53639a2bd573c8a420c56e9167bd11e79bd0b843d97766810a48e55d5ce389b5de4a739f77ccc5fc7dd52b3ca5e0e729935bf7e4bb984576f2acb7466d8f48f975bad539b236d568dfa34cf2974d83699761c95405943a7a883752eff8ae79b4d244bf2d683f7cc7a544ff9bbd8b5e92fc8b3449548634ff34bcaf0ff5a41aa84a10af052f486f89630a783de508ead24ce4d6906816a849810a5e72714fed088fef26c31282cdaade6c9334a88acc9e7b88ec4f173f71974f2c24541065b5e80f4374ead853d478625a68f729af0c1d8fca4fcc4d62744fa65805924e221b9e7d72fe187d3b621179aa8f7b7cd19d4e7ed787f9a5f65eaa7811eb6b73f90a55542c80a4bfad64677467dd2cef785e6bfbd3ec1f3d46db56cda0366d4ef658279db3232c675bc0bc97717ca3ec7ed4f44caaf2bd7bddc90aea8f886594f98d4eae758e562cb63d1bf539eec58914673559da4a87b6ec5cc77c0cd810627aa355fcb062ae648ec7cbb4937605471feaa9e92b94016a9a05f585f3c52a993a91a6db73c9ae6364dd2a07b6c2afb449122e76a3b273d424b94343b3bd7e7b1e1366204820819c8ba8970218a22262ca649d8e3223167be77d9a466c860ad7c320b227e873a0d68faaa441c0907805996d64f7759bdeed65cce25b367f02094714be404ca9fe56f6ad99e7d38b5396281314898036493002cb516878db66ab19e09478872c0f76abbe0f754b443b13dd5afe610c1adfc52fb3c82488984dbcc4d9850a0ee4bbc07d0051208c87914a3fa5159c775ad91a552c2fa2ac573787ffa68f456012af600af60183f97cb3e2936ef683fd8e2b5742c6de946b96f825cd0f4807640a532561c70600d4995bf8d2ca543db1eacd68d28b207617c23cd9a57bbf75abcb620d941913e6506aa0123f89c261ce9c39c605646904d22586643f4ad250870afe94dc950913602cc1cdbb77bb9b4df518d1a18ab0c5a25948302c0535908e70f84587eff169114161c3e646740893faaf6b37b42168fdbc494549776d528bfa2c2baf6a00a7498f403347a646c9a58328c59274ae8cff8b82787a29d67336dadd3404fb5509640c29c9456fcf82d4abbcd9899ab108a1fef872617c5ca780970182861c046a594d62757d33247b79e12873493634c16fa70983c9b593814e69bb160120b4129370519327ac2332063992af4370d9871e7a27d13420a6fb16ed9b579d1ca1d36a2094eac96b537109ad83f4df1a1d2e184c309ab65d75a3e409c57578214ea4035657757ab92aa930a76d251a1b87bc6b58f9d900e38156d73a1961c43be2e044314c89ea9601937c0a87d9c4b14cb9e79d83e722cc40b048bec5ccd038304ac0a65bf93b9a787105eb31b5be8845c5c57b9a9caf6243f54438ed84159f5b1b8b246073b1715b0f635e8078991118dfee2ce08887f9680bd4e672d3aa78df8954554d398d1675d785b85dd28a1675944d7597968f22855999f148cceabfabc2358c315076c6b4333a82520a8332543aa100034bb0a6776cd959bcb263074fc28956726d0d99b9d81a7dec14f13ac5ceb5b9eaaecb28e282bb517cac09809073c3d085718d1dbbd75ec83707cc768bc79a3b637d0acb34f37c9c2b4c0eef3233cf91c0bf5a6a9279f6ad136808a9a3515b02e303f4da26f93264c5ab9010a9c8550b9076d6471c196675edb08223672c1a229ad31c05ebc4fab557f46b4bb37dc2b605a87b888a1f475516db87b92451127436eda7922bb45b8b8462122542de969c31622cdd62676a8faac5663a8bc2191711383ef4c1cd7a183bb55cc3c83b566e5514f233d79a2963710c5e5225f7b09b0b6176f451a7f77570b1c17b7ba335511bc3c3feb884e459add3a594dd35662419272499b4e9258dc9aca946ca80911999d455d06407cf9c69e814478a9f5151780bd754a440bc69925155fff0a675e0c322c69174c27cd804279ebd3260feb62c0e24eb63c7a042996c25bc9342c589c340e99999f9c5054ff35c760a43974096c5fd23bb9e51e2483722a132b0277bb24010297c4ba2c58bb286c49ed20b7aae98c5d9b0601f06ee53c1808e07fda53114efc6d36b28b906611be3a29e68a8da76457be5419d70059f7c329aad28692d45892f335d02d36153217d5db379b621e416a54ce8071dfda35f639a04b14aa73b40dedd61e6fdaac86971965c03ab14ae69e8130426fdf830bd57d0974ce3afdb8a246a56ee71465591831c371f2eb87467b0559dedd776ba063ee6d2f93 +ciphertext = 0739932f7b5b6ed0d363a0fc2a4829b0e1fb8c071b315c536b97eb6ee3c7e6b4022a5f6bc0770e3c48b8c0711029b6cb454b1e80e807ca35b55c06abb75fe24dcb4327ea8b1a7faa63d3de0f13c0a9be2c9bf101a293a078cb33489ee8b6ff1c21f5c4a42e9e9b16d4b860b0a624e00b5151b7f6c4db7893e485715b09e2964dc97740cba20650522f21644776c28b22a26ebd5e09cdcf07ec0415d3d464bdf785035b98aa1fdad58bcf06f87509b3690b327d9acb8b034a34f5b1061f58872f214b57d6e5451ab568c3e8a700fd8c95c82ed28427c7fc569fd3dc334ff8d9faef54b972da4ad8014cc22db0f1aa82663f3a8f205dc5ff8d1ebe30cbc1a590542bf5872ff6b0390345aa14eb43e06f52b35888915a0d8d64cabddc8194ea6a6bc96fa805113a0486643b79721735c0ff55d28501254faa73caad71600ff139a1a5d0d7930dc5d202512ed49e16f6fbe95913898688f3928dced939f2230aaccd2ace43276e0820c56bb7cfe0a1ed5d4aa4d044d2c6e6e895d408fdfadc689ec2b5f4cb24a89dd87cad740477ec812b2f8c9ebbd77aa73900c9a412c8ec72c39ffe3ec82cd65e036056acd5d37c4f45f25c65fdb035e1afce1e6743e985b8de817bf5d43778a0fc0edb3cf6825bcdfbb42c7cbb3a8c7fa02068ff0e1a1a3bd0eb3fca906a100fb92463c7c221e776d0bb43a13037d9a07b96e0f2c421ced63ff9f5442711a7d876ea5442c1d77639c7eb90d7dfea7a635f887ecaefce74aadc6d3cf722f75172835a24dea2664c09a70ed2ceab70a314f061187297428ca7d65d07e0bc8d161c5cb43b0fe2e3cb9cd74c9b2f3237bbd318c18d8058719ee0e65a3f1cabcfda9e10b8c685bece284a62d514c2e663b263220c29cf3a207066bcc53df0f734ca27f2360e5d67144104f8c13f5d12354d61ab96b939cbde93eec145c7332511127944a26ce2ffebdb03504982d25c86fb81bccb6441edf24d3975df84a0950ab9d28866c796aed23c91d12ebbc0a90774d60fa213cb5459b5e55f8d8a6d7aaa94973d88988832eca7cfccbfb9aaa7c44b08a391c6905fa75cfc6d7f1796168c33f8c4f4b04d89d8dba51c840bd0e08b2d660dce30b9880cb86841ca8ea05c3e6b1444a61c318578cef85c9cbe2146affec98afb815380298dcb39ee3913c63a3dca559ce4d5dcfd17152f68c8db381679ffdda0859b6d09866f296b9bb3c6953a4f3c9de9a6901fb46c5548cc150ed9eb30468e8473e308c9d80ec708f031dbf7860762a020702dc6b92c155f2b7f2af9147ba4012fb23290085fcd6a7590a4ee2542f8bbeb2d55bc81d49bbb439018bade94f8282c4f9bfee804f4b53782cd4e912e76f34839728dbaba746dcbcb94194496dabbc1c0a658888137cfdc6b42f6b8f9c6a83383ebab751e29fb29e97b5546e941e895f4316432cee99460bb680ea561000f268602ee0ae9ad74102f7cc0c212afc97f1532428ed658a59d8b80ec5f649726273ca6a5871d8db2184c52e25dce3ae7e2b20ea7c2532d +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = d809438d9daea78b897b5f85340bd19e7e6de8e5e3d42e68a1537489f5f256eddf49d4f4bf5b5db1ee5a3a9b9845eccf287776fa8ddff5bb7ab904e0feab7f148a9633546846b672cda9ab8a37c8fa8eeb76474e7975ab7e16675a96f6f8648b615d66a4fb4a5c255a0a39387b03bb806e8c9fdeb37e488d4c7e75b593860f6c97d637a2d886ed3b933292bfccfa6bacc4dcc4ddbca804c7c55edb9fc5abb503036059da4d2929447cbbebb1cb746bcde294afb2f2638beb16d30d476bcd2c335de5f26b7450f8b5b2b23d332dd9f1074dc10daa5fabce6c148ec2a0c4aae3174be4faa53ca9cbf297690857e5d6f8c164bde8513db0c7c9621336a9875946fbb73bda9774c086e5711451f5594a453e38792d4c291ab7550aaf9824d9d4d7cbef7f7ba689400dab73836d5f03873f38566421a354b59a3b48bc8f63ad9519d932af68d0aaadc6efd5783bd93484adaaac7853c99dc3ba18835d2afe8f14bd0768cc7d0b951909825c988648f797f68eefbc654380e661bbd4ecf8abd88e24e0f19669aef65fd817564a4a4f4038eb5e16a69cefb503495a4b6b680a08a550edb80ae668041aa120c7a363e38ab02e56cfef93bfd4396dcc503646acb74b946024fe4476807c058d72c9610e3cbb51af9ed724441acfc258659b3a9af3e7e69a3057f98378424b8ae2df3cce35fe36483fb293ced5eee6a4881f6815ccd013d66fb7099efd4931e54ded570bcf2facba0b433b9a13e4734fc29815f6514e6651db690cf8ec268381033be7c429a8e418b7e2bb63d30b570da588cbc36dc3798c6508eff05530b9043311ee82e88bb3e58356df4d8898738c9b3c457faca42b9b81ed7c4118869d5153338e04f70006c6be294b528c779bd6c8ffdbe6e2aab439e3d32b8ac45226f82356f00dfec812033a4f9667af94f481e8d7fa2f45bc4ffe04343971a656087cca8ce9bd3127d13af8e6ba745888a4ad52ae67a17482ee5b88b0bba455a565b1d97bd3b9beeaeac0b5ff879b7f7028d4a1c629d0d087df1555ea01964366d8a6ad1b5bc62d392d43bca37dccf9b7fdf3d68b955c4bed0352b3f78151c471662fd97bd9ff2dfda25619f3d01358ab1b5f8b7bc687f5c111bd4c661f37301e9fb23bb852398a6f599f4d145a8afabaf8ac8726abaee569c4579b494b0ec67e33fb9318dd5efe542dd59f2186da24747e99ef646638dc05de784d9b581b4cabcbcec3deeeca8f0d588e0732f76b99ec844032d99ef65c8a9ef4a661e78a48bd542c4ef9e95d64797fe32d2d8cb9b3986eb5b510fae8554ddee966b0d3ccd9932f60ffc96b895ae81a95a41f1bb3adbf572475b3fe8933fe49d2c965678b95512289cfbad3da2b159b8f2b3535f4d881e8ec204cba918db9a8bf3190965eb76d754368955c0c7929e9447c9fac78e7867c1b4770596047fa820c03a11caa3c2ba48121ef9ad47cf89a3df22d6eec9e18343bcfd06709f7435c6d6b14d955f939470eb805e38a751bc8a1853fc05857eae658a8a7cad729373e83f53e87f8fdca89e347bbfc48a7bafa48cb167111367f40c93bf71ccf208a891c383ba3b593f2663148d779ee8fb23f4b67972d9d524f5e9168cb232f4f3afd695b668ae6721c79e07ee5d26233936d195b62b192058cfbcb0a5a73ea0154d78224ebe84b7b611ced7256d0726492a4b41d4a8d6b2ca73a3668f93a77294439b0d8ca9a725c5278c21d896ca5d706e5f03d71526cb175ade2606e3c3a24d510b4d9816aa6846a77663a80f5ac0d364747307068da942b15cd2e02a3eed2818f9056d697897b509bd5048b178240c841580bbb77a79423996072f39497869007b19442f401009ba1a039c18f191cca42f9551713cd791c9fb847690cf6247bb752a17a9873e97bcc36b793b6ad827acf418543054698d77693f9c38c84354cc81c7a3b6a43acccc32da070fe29411f17a420521fc69c0d09a6425a20affc98681568b8ccea88e54b8dd9f12aef4b3c10f256eb1519671091984a1dbe972a901bb4b24246d7db01b86665374bb6cb841b3cdb2593ba5c96e32c20936ecbc4abfd24af76158b36a2c752a9bba8946b34c414eedb355a3ccb87431221aa2e936b0bd7540e697142da0817b1b51314fc71cf4017f50544474c572c70bd142c676b69afba4292f5f19e88163f2ffba3b1685073c3bbcac825b095b5d259228a459fa7e866e09735e4cab8fa733d4db6a98172846397883394059c635d23c09fbee3cab350b9976c6a8a900c8e1693c3704e779049cd1221ce767651bc23755a3a49c6be0c314a8c501579f7a447070effe0314fa3687ab92090738434e55280a42f22a66eab77a2932b07e6857a32e31a527a2a909865e053a32148b59cbac224c12468e444916ca375dc204c600899f90ba7c854b3646f2af3981797afc4e261c7a93aabc40a93990dabc82564336d01b2447fd35e8e86a0cbf676cfe6c3d229b256e585d8373d26c3ad66161890325533818f845301d9311bc8035714a722ed9206967123e65410562a745fe28f90d50d772a9cded6354132688ddb1ae6956eadd896cfaa71c44aa925fb3b2c6b7d5e47cbae00a91040456f4023174c73dd8a4d50f9714ad1cff718321677a6962587ba6ca82c341f02a7382be9715b41994db91e6d0b487207b9b660793e62470b806a7444b6faab38f48747484062ff443ae1da9e7ef41f797398f0527406787e00e197ac3248ee4a0e5037cf6c754ab9a24d08936e9d3313b99ac18886cfa9972030f1a40e58b25939a21698c434391785a3a98f0445567a9dbc0b4284d49652bb1862bb76fcfc6abe60831cac9aef6469464319411a30f7601b5358568b014e67a76ea42acacd7c3fc2f983bce1bc0667897b92590dc724b5284fecf7c36b3842c61c27af1a2f2ec95899591e707272bea384cb9c8c9409bb26d743faf196d3b8b33119a379d5cbf6823d4176ca83ba4e2a426745f346a42861a7b5343ad3ac26ea8895f24a379c449156123ed91a4ca701bd789da84ba0ed5c707d373634ab7a65680667191f806b6f62cacb4b40afdd649cc9d1650c3a5e40c8346c91b27ec1b1a957c778ec9c968c670fc84645fc07881c54946b5ab0b6033f45afcc6a61fbb99746f3991f5b827c22972939c5ff620bdc4b131eb393d108c56556719abbb978452ff0a12a1d138c9065c304c8514658193232c832b05b0b21a10483c6faab378c6b1415b75b43796f314542b9d7c87c1ca5fc13a12e8459454d36096c3ba38e979a3d4c852032429bfe1e663e0c256c2e93cf754f2ee43694865a09ca7beb0deda9b1328fd0abdf30ca5c338e27e8be04b5230e05b7114ff0395cc6634db1eae8258072d09c09f291e92d6620b177dc50d7 +ciphertext = fd2b69a027c2fc20dcfad7a6765f0946a637a63374b349868b77d6b6d84a3e32392775e1cbc0d9f986843f3f19966f7a2ea83e4ba64b46efbab4c88649ff6e0532f5ebee8a218b9444bd815a44e2be4bee845a961815fc122598306b1d60c402ebb170402220d97bae5e04cce58470800966acc024c00c5e20aa3f1d4bdb672f1d4731cfdad84388c2e918191dd95d2b70ff1a5228dd38e7f2d936fc7e571d3d288f3c6b3f71c1219669c478a10fa46460340ef9c1ae9a4981c83df9a13d5b5ea04cf9b44d08688bf66e59670b9f13f1096f921604c68a44ca5fa79e12ea7bdf671fe1deda8488ede59ccedcdf265cdd168c3d8e9981f10fe225ab88f714d0c31bb53eac599fdfcdbd24e533327cd6efd32a39b24474da685eaabfa3f50cd290d8d681f684481036a19e741ecf16e4b59059522925ecac163083cc087f4b6d78f0452b429eae2518e7623333bc84bbe39bc85866e41367278b995af06e382d165c6957ce03f303965c94b9d857151840b1ad140923950c931b501a7f97c6ae2cada15a16ee5a7636a6f412d19358bf807130f8bcd614d29d8eea8016b04b8a9e2343c951926417fbf749f7f7bee048daa22d966f98975daf5481f3360a0ad80f501f2e4e5d0f840f48adf8f066541997b67504ad8aa89cfc3c12635b8fd25f5f2611c8b8bf0e88398846c9edf3ea57a49978d1fc704692c29165e6b0f4e8db8d298776e95f36dd21504d42f4ec2342a7354a47f4ed0536e6cb206e88e070a2d8a2c5ebe8e1327b1041eb34fe570b9af85f7945f9e2486966b5abc9edda49cb4d8603328f4a4dd77db3dc569894cb21b6db52665f86729c8def02e53f7051f406bc215827d9c82fb5f106a777f369c39c447cbaf4ed2efd105f93a46e5cfd346ef86af228b39f48c27625385f01f78a1a9622e58fc72a8ab21ccd362c7c27af6cd1844cba5cf0953f5aef4f7ce44e681926c691bbda9d1de170f78669546aac55260cadcb5ae44eee3459e3ebbeb14e053fb4daf6c1d43fd679a120e7da136d931238bb9df93cf2ea88b1112e46007c27164e36b1f8a0827d42a2950f5b58bd3eb1d643034d6c04970e00b686489fb493b8a68a87670d02e85b5097987cddb5f59286322ff9308b6de9a1c5766ea6ed47dfcbe40e42c4bc3a82d5ae872a82951d41bf062063f6f8f87ec5356055d94610ff915f930430330981af065b131bb5352e3172d59a09a4dcc84299ee5fa611f31bb61a011df04d4994c713a8774a6ac21b620c5cbeb7bfbe7e26f2478db2c105e02a194b237c8cef57867592aa3a1d0cad24c30d53be0ffc0fb50fc83e981490409b20e911e9ad3b1de67e51a4bee820dc5e136b26f9efdf38282889283f33f4d8ebdeda6c0183bbb27351f7869c3c59b05da65a152b6668226cd5bea860cb1b06de463fdaecc1853889bd2fcb98e5fe337a727524b7bcf3faa23aeb6de10223cfe128769025375e94f638c55d838bb1ff301db74f03285624064cb20142d9cafd33631038b0d0593a4fb141a48b9399 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = ba45541ce7b3de134e6b27d3081dbcce09bcdba837f23566dcfe928c99cffcb674cab9c41c3e51fab3d78177b9126c7974ef568755fda075965baa804276859b19fd9e4d95b5e3a27943776da652636eef62a3aa876bf58c89f9b60fad6ccad0e3b38011c943310bb5cb24791b7ebc5a2796d6197192d9594946d89d88bfe986d58dae6c162e93838a3d7306b31208e70efe528809d73514a403acb76cef98f5d9fd65b9da0bdbf8a4f438ea447a9c98e809ae8a2f5c3c1b876b3ae94ed28478fdecee98a64fd797a0931cc4a18777e5d481d9f9fc0dffb5f5a58635b368cbc8c25dc733550774c096e795939b74e83a23757c2139f7805663de14a0fb0dcf1005e950dbb4cdd7caabd5c09b38e8cc1ad9a68e69e48f796a5e8e8fc7bc8325b45656861a848347a358f01e55e5d43f7a1da739ae32c899f977075c9a19c1eb6399f2e7bf1dbab593b9d7bdb5d9ef6bdde36af22fc951a18f9a838591a054e294c35ca0b86be60cd3e1faeb7e5dd4e5bcbcaa3af80ef37067e7f790bb5d59587e060f72ddf8b117286fe81cebbf078e6d259a9b53bd70feb43a86b24aebf7bbfa3547ce79b9ff95726ab768bc7fc8ecfa637e5030d93581165f1e5ad3d42374a41d39d55741c9c49a1d8d7468cc826f0380b90c9c403e9cf1f73811d674b06ce47cbf613ba56365fad4872b9245bf36b0d480dd0b47b7797a23286269f97451ee3792cfd5c8aa3310c7ff3423b263d93ca42dae20fd4fe6e3bb703a6c50ce7dcfb6341aeb485576b53d1cab71e9d49dcc68cf96d08bdb6152994e7025ff96c8ae4a18e9102ba5078bf6087bfdc7bd4b324a31aeccb372dce8976bb9db4fc8eba89640149acc544511546c5edf93c3173ef28ca92b85b86188bc70cd9e2725307a2c3802d6d870affcddd6fb5989c5a6846497dfbcbf7775a4b3737ee6c6b69cc3373c96e79675cbc781146c7a798f4aae53f2e1a69dbf64336efc3348f4e4ecbbd4010b9f7399310253679b48af3c23961bf345b45e72c1d472f9b3e274c730374af9154a58173ea0917af1259a46efa387b36cc9272b5284085709e46f07babfcc835959d841b3647f51147a013987dd9556111435135ed1e5e4fff0848bff2e69a49485c0a4f26ec6994cc5dba9f64770bfa3962fa08145b987593f2fe67a2b2ccb036c4e665de45758c6745a389955ce9744cb813dbd85a838a69d4198c3e8a5df65eeb6ec70e5a34156ba00a53f05c9be7f1ac214f6a75dd8e54eeccec7ca6218b34b8e063231c450ea3a8b48f7c97d9c58fee7d9c45da28a34873ce76f0fc7a4237aaea18d4e2d3874d726aec41c3ac9fdf706da459d0e736b7a5e0936b3abccbebf146350fafa247cf25ba8974748e7f28c8d6bbb55fe98a48de682a91770eebebdb29da0efd677a70cfafd6f690668924cb588804d78179aade86cddc8e352996fb2761be87b7778a56c6b026769e339aca5f8c9499defddc4acc3bcc7ff548dd90ce3cd7a394c24a7ccee8d3e2fae3b48beb295905c2e7af384393715e07f33b02547822b1afcb1b57b6fc637e17ec0fdcaff880de1d0d8ec42db454f5c7be69ac0069c33330bc4064ff490ddb90a28908f7471fbcc543fa944048e8698cca518437873f144e7e261e8465b3720582cf7706d684f84e618e8834f35857d4a8bbc303134b5e235dd1b2387a81c663876c5530293f99571b97ae5a299df0c012e9662947089c9f81687722fbdc30ce50689690b30932a8a3ce7bcf6a353bf988dd310a2c347bfe6b30999e69c455b9f472b9bca0216c84265e5d9486f6a7f1f3125c16467ae41b9f85180497b255adb06a406a13a221388e14c0de8cf73b6a952c2b2501644831c3700b7c273b7a3180a7641621f33b41c0f9255efec1025fc46f658c64fc89352c54c264b97e5a91c2386cd3790605127740da2076eab4876e128f3746843205b8328cfcdc65feb92c2d973bbbfc68fd7a46db51641b7830e73589f41d413fb571c37685dff142863078acf00043395bfab3589b0cb435981b84e54318ab46e398389b8e146cab2a9666330ec4c90a652a0f036951519880a45bf5d000d4e40c6b6554cd222880d0b91b67153c43909eb2c0926354d436c2318c593f9fc214b548e17245c0c9b83174a6783508b97ac6a8d8a88ecd278e2e52c3c9138b1685dabba2bb1425075b298cb9120e790afdcb9792c88698cc156ca5a789474992f470b1d554514823e87bcae52ccc872c951b0c24b4a2b0460f488ee7768d56b07dc79b3b4cc321e5878ac0a5c3146aaeb6ca123206b0c7b5aa6e0bec5d0a903ac9415da345af199cab86ba99234c9526e6e8812f6da8001f31337b8498a8374ae527b6032a0cf3142d1d34181a5afd6aa432a588ae1f644f5a100fa593f0ed2753f441ae5677484738ff694abcec58781b06d0213579f827fb4f97b3fc343a445ba3035aee989685e7b20be6103fd39afabc334417379bd666181925ed369680b851a54c41b6546b9c04ca69742b2a814763674abc9cbcb03e96f9466cbeaec698cb5c9acf814e90887f8d15bee556b28f50b739185eb7a5a06e896ed0048bbd905e016436477a68ebbab1e172928ac8fa9a8b0a0d999b135a753a29a47d0136865b0f382572b0697d0fccadc8a77c1b591bd73b639e13f9c21b6f0969b0aba3ea807303377afe0f49421b68d0712823fc448fa9a468fa000d5964bcf9a9e7fc92dece03bf6732a36935b25023b47fc94c15795dd983bb4531e935a19778305d0e8a75c2cc770eb46b6d5759df503bac33f0669c775729c59eb94d48223d763880e8b58473683cee48e309380f7b442e6c83f0eb9bbb0b1ae805b1498471ac1149d578b454041aaa2f5cf13390f10a72df3385c6a8a1f990bb946f4c888e585069b5849882788a1be27da0725276ff9db130519050b74cff69a68534222499cc61f5845a8fc0ac5629e0cda20d3ea2f0046b78a2267fa0187f15721ec53083018772097892be85c1be99480247e6e30aac8fa2c593c630b981e57515e0f7414cfa8b606d931280a950e567c93b319fd23ca1b682fc0b960dd309f80455cabbbc71979c59a025008462c0681465d748ff2a6ae24e86c79922e2845568ceb5063fcb81b78295b93a80b221ae7e14a9a9bb7182c1acf347f2fa73784835f3375a29ed05e4bd120a119cd0fda29f76a1eb873aa88d0cb3c661ff0d5652f2b4604e2bdb1497486687f17b8ce7a096a59e0922260ae99bb7412e306cc0b25940ffddf25214ee4dd4e1aeb851878e2493c05e2bd5a30b5b99d3694543a842153dee9e035299d7e268c9492d71188f9fb24bdc2dd20c1ddca647a15231100ced48add211a5c937b8d6079d8e271af3f949edc61f70e60453aef20dea9 +ciphertext = 39c2464c42bbb75ccc9421eca048aa426c45eec971a442ce8790e14ca23260c9346c2681e7985e4e27e7ccf84f8a03b25b0604b9a64d943c2340d4818e28d774a3b4e04b6840a2cb81e542dc7e4fbd2146db158edc7250fc8ae2bebb24bf2b74c2cff7a9c5902a8963d576185576c4c6c4ced7c6f0878b67aee7ea494c34221d8907059bb989a65ac921c511c3b1f23c649811220f1cd528251a208641774228d513e80eb2ee079e9de73eb9774c2b51445235a262f166ada853256c6b53ec6ac3258059e4bc6fc23c6f0d9fadcbdd15d7f7f3a6a96743815ccb65117c06b2aa9bd134746b20337075f1eb45327942e22816cca244236514db48a46f353d5c0b0f9029ce274820fcf479c1600237028558b9acf943e8986c9f5d21af0bb5b294a421ad1a8a803ad0cd38b085dfdfe8f8f19206c027394d94b2fdf6d752b1eab11cd2ee871870d5f9a444077cd5f563faa1b1574b630704c01be830d9fa56eed3ceb9dfa8f384137ad76a461d17bb062b3b6a0325f787702c26e77cd649f3184a10ef5625402e7c7e1894071f8772331a714a4facbe583a1e1810e75c141440e1f6a903b6077783a2e2fabdb61c3b9a5deb1e7bf2c3852160aa8a366578e873d6d4a9f9b54f6a15f0fa3ca20146b608cb63a449656916b393a0633366b527b7e652eb2315e2921711125f9b2f0aaccd30474bdc2880bdd83ee40f94acabdba84810a02733fbcc1770ec56fdc8cac2accf15d6e739850b48616b7d56beacd5c0c30ee09530367675771567db0b05fe97f0e4f6244c020dcd1fe8b95560c8901cf350c9824b0ed5a4bf06ea63110d97ffeae97b0ed0fb5be0c91856cc0cbc4ee16d78d1fa3f2539570623bf53058e9b6087e252e86e0896c78e5bebb4dfe870d5d3a2d041f45346b559e81e24ff09904230d40125c17836aa20027ebf9fd40f045f9485582c124e01fcd22d05118ec6986788805cf0522e9b9d162e3b1003d7bc913d27c26a9171264f49db8463b5f69936d7abef9f28437b6caef081e1bebd7c9a39a43dc0a00ff49731b15e7f1467cc389b03a020fd94b90f5a491572d167ef6cffd5aa45b3b611fe7b9691721f4d9dd76f9d9ba3d068d8d9578f1e238742342a791e4b59f8271e09575a53f77ea871090907710c40973a8b07945109c1fbefab60add3e8ae3b783ad222db7f584b7bd60671afcca5713c0cfa96048bc3c52d62d73fb5182a70b499d54cb6286817cf85c63189590189eee2c81e05cbfdcf23dabaf7c7269a18b801597aefec507d0772f30e21c1bf49226ca74a8e0bfc334f7de59632b564a54aece295cf745784332e873ae704022af6732657c81d7037f9424920c1bf238921d6b596cc247daa20d763f61ecd3fe0cea7d79e7a6094f35606f19976e1e37ac8f81fe5c63e51129cd8a8ce602ac56d9315cc5d6c68398f01bed2e9fc79121db26e319257c40212220bab87a274b97784f932649517f462b05a423a0fdf88582dffa35f330a0c345755cda858b815b6792cb28b5e45c500f86c +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 2e8da416aeb29a6e459e396204e5b5e65540a2a9ae9ce5fd867a9e20a5ffc7565b6625e653448353697b0a7f3b17e3b1ef375a3e36da5869b579883fd1eb3a06da5c11e493f4cc9d1848e8560bfd372f3e7214ad79ae78b2153dcde882451776478a4e06b392ce9b9d041da5a134b42c37312a8932151571d85cb69d9333ff8685569568a0fc456878fec2f5506f5974270ec46db34efb9665b68e55755e8ff677be1c0991b644b5932be1232dc6effedc38ce9316156bcbf354fb76e635f4ff6b26b07f9552d8bea65e5ec7eb7ae32034bd755674e0ce4345aa72acbb85d57f4b2cae49265fee570543af9d4f9bd4d16ccd389fb9922dcefa394af4e02e9290dc506f6de004cdae8cbbc686af5a911472662d7f94fe90b12baebe7cc7edec476553762ea45e48694ddd27fb6787b7da7e9e89d77563c9c2ccb77cafbf3d7ab9e81c8fb6ccad9aef1851235c7986194c843ff80c4e92ba4f62fc79ceace4b894c86814d4929bd773e6a73fb0c7c36c67391b3e4555674cf425f92055bb3a3e9dcaa7b0734df04c068028b3ae7b8ff3e02ef032e6dedd1b6b52faeed13b86232aeefb2969a79ecef1efe9835a44e907bb0ddfce6eae442bfe460f2ab882959e096fbccfcc6e40cfbdb5eb673c2e8d6e9c5dc656ed8796945c6e4c81a68f9cf381d256bc1e73f8524e814077af5f54c2c6b487dd29cdb2dfce09fd9123dd9632ab823dcddd86a57f8933743f347c203894d0043f579fa6e22f83ab0aec98b39c6d638132ea4b94644e8aadadc368e6bf0ea408f752b42e5029d7661b554bd39abaa906af32f877cd5bf8bddfe7825ac898dd6a4c233462fba602b8e321db9327aae9bf54e31b96d35db3c4cbaeef1fb3d146f9be0333650c4cf4a5c85bf6ef52413853de0bd50f9ae6f4abb9e18cb3d496a69b356d8206c106864c7464a7a7ec5e998b3fd6be8df1d947e28ef72ec5aa1137ccbf5dae73ecc10635dc049fa41a73a4861acea29f57be33cef406b7ebce79706d5a709a4bc06bbe40867966e830e8aac19a06f7a474fa8457f76f09cfba6486574d79e1aa38d8ee79d9634e3398b744ae81300f818e979b4434a4517cfc7777f600d5b7d3bb6d7f3f53189c36952fddbe35e9c62c80558ac1d62f85578f962d06e2febc9f330af8a0787501b4f802863b5cdcc6ab8eb964dcfc9c8d81b63750a6358db5566a0e4ff9d2989e98199856af448f54688fdf487c8e6f5cd651206350fbbb5cdd995a9db37b089caa57bbddeddc9392faec0fa9d31b4fc350cab7b6f54c1e4acdd1ef8d7975a1896dffef055feb5889bf87929c7dd65636f6336bd5edfc54501dcbd927ab3c4c9e8077d0349b9a0099801d5948cff3bf0977a9692af5ac98dd593a36d1e5436ebbd78bd9a6bf25bc3d6b5be0bdfaab06ab594fc440f4dd430aad942ed15a8767418bf33fa8cfc659e4543d31ab39b845a3c50dfddba1fea586053768ea482a3d44f3a831b45632070d40486ec7e826a0b21eae37db49b31bb3e9389bd3e354f08879906996e02d36ac49b9c773af5fec53765e9ae7b8c61ce475ac544d13a5b421b8a68635eb6d1c64f8a353416f48b053dc8a3a308c7ddd0ca5d6d75d9aac9a460935645e451e4c8c85a192c91df27c17c0684baa6375b17586f8bf1ef12b91615bd08a340c58629cd45f7a392f10a04916c249af956b180bc418b8a95f66b2d0847e79d247b430812d682b1fb91879faab68f25602579bf0d895073780007b7d61940239913eb217cb16a63ea08b29656712a21a32c754953335c29e769df17125d84c32b3250ec96067b975bf524091ee4013a8b67a19a331daf38a396a765f7820a5e3606a734f5ba854d1e6b6e70cb9ee5b00d4d18d928921ebb8048e284a3a05a3df9469ec53195180ac9f869a8e8866d69019e9730fd6e672db024b6ecb4dc55729024033703b6fdb7bbeeecb2345782815843b7b7664627cad52038f98db605fd23d24080f809a276419c876aac69977998b1400395829656c97be262e053197ead738d9bc995145cb2713b5e181223e04497c8114ec5a05384aa31cb84406f93365d7059dd88db8f94a8f068fcd10be96e32a0e926dca518b3fe9286a755f29d83cf667407758141b2011fbb1764d3334f3a763a17cce33c2816ac79ec4cc4c2d842b004c352aba419be87281779300708bb20143a43413a2a55c41e36444046a3c021a4d7818dd146d1dc335c66152866597aa69a44f39a2814a4830e002672731d93b7fe5f77587b782aa279cc9807d6126392f812e83662d49db231dd3060f882d71d2a0a4c94adb3784ba1785187423d7e8a82f379eecba7e6f6a67b568698ac3a2c0b096b015100bf9acfee522a0192e49880439cc1fa9b30fb7a10544e1867b0c34da981ce6e660cebb8853545994454815178c60b04dca7073531aa2a5095f7b8578cd9889f3428a7d1c72b8fb320f304fe5d23a4291666bf7aa1afb5086532fc5aa347dc29279a4484261614f2774c81374aa453024b68d384b01565a36d98b751297477a61780e98135375af8ef68359332826da01ba6a73d5263abc659454f57d83172d0e515d3754270ad84543d995c0534788a6786927b952698abe693bfbb358e9e393151aac991c97fec8c55cc407bf027df7e2a505db531d47344552321107b651fa4e47d4b389c5825e02ca1f42839ada4d7eea2ccb24a74e34672bf1bc4f33c88c3603a3fa6ce87aa5cfe30125f99e81550c19b58a807ba8a586415c2924a6e467ca8bc85a5400f910457e8b9d74a11e2668c0f1a2a1d0389361d09900ec6671206139380ebf9390b2401555ba0a57fca36d2742f569a573096a2b442c5992c3fb65271479291f097cb94589fa15bf73cb9319d93860eacf1cd1bf7d380e03587ce3faaeb6360d79574803b5c49841b74918768efb518ca46b26929f68639eb8fa9f73e61a8b69b004cb5d9d92cf0dac9abc03171444a03409714dc1514931182701c19e242ae73b465af335c8d3588ff468346abf76604b6ef887a7eb8e8b44005bb55af328155af7928c732e7805010cf0a50ec68e29acccebc4a39e2aca10084e2543746be6c81d482f6f3c1fe0d31c6a69329d783a1bfa0b43e289a2f843c71196809ca4b82c75c59c7aa5d311350aa55e89735d9c34e6982d17c033937253d9778ca31a14a9894c5d801415056552c410484970cf2ac86b374644a37976ec4a123c0603ccc01c6c6e994514f13885bceb2f8b0a57073e0f3130daca54c038dc1085402160513337af2b6dd900b04dc3bdfcc90bdbda43cae3c4da51d69a57eb87094a03cd3a9c3e6b4ed864cc691a60f0509cc6467a3cc8aa3239d4c52ce4c95afdeff6efbfacac10d294edc0e7cf4535059bfdba +ciphertext = e7beaaf8f14f63e4b07afed36ce1aae517129415537b323347ab73d9154cebfbdf51a20e75b6625635ac552fc88f30866afc1eb1347e7963d1d634b9943db25d14e21030580d7bca1422dae24b0be423349735509ea2b756043498c41a893055f9c7b51a5783aed508a6888416b4f544019a6c0e3766024d804d8c067660161cc17196c98fc0a602b89be5b089e669efe0ad5086971c6b23883567df50c0bdf5508dfc8f62888238b34a0aa1736322838d00be507cd0476739a0903ba622f42f13478b7a127b43799324b990aee9e8bb603c3de3d679e34ef6f22a8d309bb882e61c04dbefa54004eecf710d80bb09d091ec716ad0f4392396ca1c06016fa1acc111308eef78eaf6f4ff1b87743fb7629da989c79f58b69619aa6e3333de32e8ab0df5001b12cf27318d45ba24343a6a1ba4745b3b702ca2799b4428af6360c526b67a2532ac2dc488bf386e7f83fe5dd4049f03293af0459f4879d71483f07dfab14fb1cfeaa7474b45d8a3acc91478723a87a2a16ba6fb69865abdff0e7e18606fc60613ed6f1968bd36b122f345682c2bfde19d0d0cbdbbb051651708d839593dbbe010194280394947ef157a0ee77158398b0d98f7a1f78a528175fde7891e40d7c2055dcb908862434c3875b06922cc3332f3b4acda02402b35514445c90cfaec583aac99100712b3fabbf6317cb7ab57bcfd7057e53580c978ae42be13581f547273dbd53f1c168d0acef9a38b29bc0c35fbb4c534634de64271fab4d9ec326cae654c4b6d8a8b2402e970dfc76a7d31a9649dba063ea5377741216adf8fb01d7aeafb80e8a4ccb9bc9fa2b62118b216815a6fd7c2af7c9b55e666cda56e03ee8ba78886d8b1a19ca0f844d5e2ce6f8ab530baed6057782af9b133a8a01a930c1b900ae48017283fc91f86e81ea77bb6e17c8a00d0212d2c9dc8ab39c90f7bac717c73fc6c05af9a1436241c8c8db904bd2c1d8d2b6df8e83d46220982c0debcedc62c83d547df31374fa85fcb59a4819ff45b8aafd06aac7845137c0dbe64f530c37ab877729222541303a13211c0a9b315111f836fae49fe0c2896a92f6da3786887a42b0c339e0312f6c2849f43a931b5041fe10e277465ea9f6839aee65ca2144668151172a781dc59d7a559f73249f6f0399a80049b15aac6de8b46f64100f31b41c4f0a2d99268b27512d61f69297761bbbc9c61fab51a02c83e13f6b104d89e9efc1f77c7926585cc84a19f3d17c2dbf16f8304fa942002d781be0a3e0aa3347731fd19571700f81cbfa0d7d30208611345023193885bcde430f7868f3f64fb941e8b22192f9974dc8bcf523a3f7c4f9fa73dbbbee9a5c32a1fd7f9e172f5f1d7c0379aa0987fb374018535d5e3c288e855ff53472b5232bec315437513d4905fe3851cb8b5c089da4fd4cc667321e1693a44e598d42ab61880426ff3c27d134db34a7f5f236510cc3474899657de4432ea4b878667ba9140d0257c3616d140cb9b501b0afafe5f2f91ca5b85a528fd920e2c9a53fde5310ca5 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = ca58edb6775f3d276a56dade60ca79be147e63b6898f4b814c69a06f65e11ca8f4cccec10abdea7bbaf59da651a1b5ed60bb35853f550cceaa1cf3656e0667d726c69a39ae564bb9926fc824634b8b8a706e9fe75bd9657fcd9a308b51a3c4f9822667a5135fe445da8b3ca10e9bd3b6eadbbe6e6cefcda08476909d6e82ef13e4b284cc3f43c3383d7facf7b617348779d7493beda25e4e5124bc5d9144e82179f38cfaea46b3d01b8e65713a3e5c16ae03a477207b99c2cc674fcbb14ca439fcd3d32e5cff1f9f841d73859c76cfbe2451948e6d88defbb40ef86317499786dd6887a429a37f78d3fcc1ac8facc587aa235822cf54a244eb7c6bcf8c5fc908836b67d39d63458afa9530fc2748de4a698af346f8b5405dc7b43b05953564d21af73c585b6ef248c07fdf3116baa18c8455728f3d25cbae0af57d4f6ab2473b5919cbabdd7b4ccdcebe8925dcfc58595338917269dede6ec3885446b60d495247aed57a9fb124dceb7bf9f7f9a9f534e06d8cada353fc12468f9bfb9a50c9f0cde85655cf524945df687df93ddaa28c87e963497c4d5f30c05862a449e330f54cadc3b0c92b9798f5bdf9cfe0177f5ac8f565466464c20338726846092ee248fccf94d6e337eb6b1bade7e44fc29fbfb148936119797fdb2757be05eb9a36d1a00c6f0547b1832beca21e8cd3eecdd70ea0b59ec588cb5ed88ac36bee83848b9f87264cc6cdf0b2e965e5b89ff74c58cd2b338177bf145dafda9a74516a584548ee60ee32b4089506e8cde6346fcc86d75969f3469f7c5c6a97046bdad3973e806778759b35988953c80b3e7574b7cbbff5c744372ef3d42e07cce978a3f964395e5de76aab7905a4bbaa8f50f594c5a96bac4195ee09f897df0376a8a5e6041cef8fccb93d44ab474c569148f6caffe71ef67510b53eb41e53fd0f8b3625aa7a353bbe79cc76d393e219e15eeddb5d6c98f91ed1705544604351cdb877166e8343bc3fa227c1e90aefa3989391cdfc59ec9174f5e6523942769fa2d973774cb6fdbda4e0164bcfd95834c126f1f7da54dc55c44c5947850bd116448f2cc39a06fded868e658a34e0caa630347c3f0f6c86f344816cde3b3a04313a83df2de9bb50659b642353f6463d2e3aea78c7f22886e6cecf66b11d98b354463225fdb4bf3938d67c63f5e949496e1328f326d5b7d70b81d90cc6c5d84d4e69d7833a7a76d3850ac4993a696c4c3eddcf45fa32b4c83dd9e14305308129bb4ff73a91d733303bca920cd183d95d32ca54557a6ff3d4fc2bab46009f3e1d39ba406d92e30ab47f9985c7c439448c92b255f59d388e292cd4df4f7f389de1ca983b22bfba8bea9d6eb36001ac4fa516eee177d06609f62524848973782774cfa795a2286af66a5e5d4fda7093bc54439753fb6b4e6b88eeeff574156bf439ed74b43f417d85eeab1ba1475436e80cec670c3928a3553d2bcfd1a59c46faf542884f91f98a38e4fecd0f6ebc09e358acc99b5dae1edc88b90c98b74c3961c7d759f39b3d3de75fb8d386376cde2b66e00fe4151b800a2eab6a3fb45c8fd932a540c79cca0eaca0a9d5bc841c3acf4cd8097cd4473f6115fd5cb09745ebb986ddb76913faa6a20c8da5745f754b89a990746ef771cf07a6d8109998936b282757f344a1b00b851eaac27a9a7fbf480d44262868542128461598b5597b10cd3a2a26e3f941a9a4719ab2033fa1181ed08e3247bdd396a834e43f5700522cb307ff4b150bba9d8b6aab47361a7947b7a04b8d923202ab1a3d6644be06bc6c1e0735d5d92821c5b8e9b9a83c343d0c456b181b6fa566b0e83602428b6cd33405a95abb623a73299c5b4550a7d6c31d6ef81473489bbe457e744b5d1e39ab74d8a051951abd01a6cff3942a102a33080327437635c1c17966834340c26654a3f38616e5eacb0e489141b14e9d1b15b7fb30927715273547999b93ea2a1ca2189f5645cc4889943f3ccd95496b71f392f78a82aa1a21d66382c37154323c0616804f50125d6b0698e5dca3e2d5658ce153bbf57e4b1908c92587b8c863ff4872e9e1963ae6c971c6ac3932bc974b9f15e5743ec069ed203c3624a022f9a7420ba951425a432b46c5e8bb666091d6f223e357ce96c55bf067b3c3f51abe70abd85a73a42233800853031313ae9971d280b3aed18489e75cdc16cbb3ebc95a8c97a768aaa6c0bb0da7943037bf2b4a523e33abf669c262941f326b11ec6bc8ef51b0666268d6d433b5190bb6996f65925a7eb0761eab6906178be9a923d1c61c0b7683cea681648c44608217d6dc86441a8f423a9d1c288b32ebcd049c15ec151e256a322ee79e2c689a23a53b8d473f4c643aedc646401761a7b75f7bd4145e837b756003bab223ff1a74feacc2e449b5dd9b5777d62ff0e20e4b395821474ab428aa2ea219bfa169b95039616598dae0b9282c69ce329b534bc7aea58e17467b1348b1ab2a031324bf835c985371b0f53877dca53570199b23bc4d70a9425a32b54749082e794e10012e9b458205e106da807c03ac3202a4350050815487626bd018706c69a6ab02fcb92621114a16cacfbea02aec424f82fb874800c61cc23bc6618ed75674a70a6c43c4068e2a7c9723a054967e4dab09f337695bbb01053a7c5dbc764a0856d2b75dd4a94a9898af8b95a62b487ec7fa9f00ab75325c9ab8248f1db65fd7661dfb0b8eecdc2a4134103380988758379d0a73b0f348b00b4b13b115e74674aaac2ba8c2a7ff440340b622b5c0bce05cb601259913c488fee540d7c058a28a0c28b856ea800d26a6a26f8bcde7d78298314cea6056b00a845321a245949a8c7c98d9f8821f1264c658a8061a3014249b7e522d586a54ad7a12ad805544247d74058bc9ac0f603a44ac5199bffb69c1570c4076b345064ec00c5ae0d6a2308947593a84ddb6133ba40577b7b245c20b5d04c5d08281ca0aa10da2a358386d2a4c048c89a2402c9150a7419c0a1aa17562fe786f00486dc82a9809dab08f7b16d9432981087b6741269424598eaa99082525d5db0deaf1b96f55b41ee209f57aceb895babc38828b712724204744834303c496b7171fc458534f46892627ae54800fe6f11d06b6af2b6b9259144f769b1f16c0586c9caf01f8491251907fd213aa6c0bce5b08f060124fb99822d964c502ac49c16ce9fb17eb0c91af559947c056af77ca687c4f675c89be35aae91584cf82202734379b56784fc5ce56e3852d89b052367d9a5d375d06ec7863e051cb44929f17a4656a2cb2c58d8d457897a1aa0d6533c524a32345eefdadc74a3c6ad7e981832797faf1068955b79f118dff93588f1481d7cab000e33fa07de8dc9627a85e76fabb4428a3376e66300cf12a0787 +ciphertext = a2e6548fa8b141a9e4657c41ef47720a20e1c548a4258cde5bab41b42b58d69e30b6f887f84c676f295266398aeec9b24a7650d710e0211ae2c76b9bdc0c6bf40e057aca0adaba8ad028c66df5ee016268a50ec7a4d5300e8fc128e6a0aa5f781a4108831554b2086f27938a26b62a3f26fa4c9315da5d43e5699e7dbf424f81f6069e3f9512952ba6958108038471aeb5f8317c3767723d1df5f982d6d7a653a561da3f0f0c4f1d8268770230ecb039a3e269ad58cf4e62732eb0a93cbca5611530371675faec5d5a22a86285b2edacb9b79ab07945f7a7d1e759234957a6bfcb47f13853a2d2062543bdee3b833b0925d9410b0fa83f9849cfe70783041a5716842d8d19d26c0e04c9c63fae13ea49197f2150c5b2e59273af8e4c45603e0f3d655e7e1d442e9e6ed3aee5fe0434104a006a3d5aee9f0af9593a9f9b8e7ed1b6b5f4c3be440d970d1b447c0343ea4982ecfc262a35c1567dddbc61439447f2b72fab241632b448e553c05d7e7ace39338a0df928c4a1a47d9230cc89f4f9a596cf5e08d5a724b85ba10132445bd8e5a91b9547bf602036ab50e31d069ba9f542ed462fcbab1915829ddfc05ce4801758d1792271bd4c68a475dac3453aab9ff0271600e80e68dec303b25384bb61febf82822b46efdbdae5a789040f0bd08714dc06fa8fb051f5a74d9a54be204a51e0fa41bc6cf8771dd70ab54e328381b581a809326331bb37783620dc2f7e9f528b7d59d587d3cef8a952f7f96a2bdfe89d33ae7714f3c53aed207c4cef6495ffd94be2673abbf7f3d3a81279b9342ba3093da3f9d280d381211955bfd5f84fab0ee430e63e4d485182e4152bcc715d1bf917987ec85888972645515ac8b2cf0d47c736aa652221c379b4c622bc1c9696faf0895d42d805b971e340291c952b931fcd85e7e56c43a120102252ad42a258791518677f37c5c6c5be67beab159d136304752daf06b210389ec4c07604bd72da410934fd08f053c91be2bdc410fd0b5e5886e0bcbae2033d8a6bfa579e24f2bff7e96e70b880331a4a7211435fdf9f78dbb758b1bc977fa22d3e09611510f84adfac85b151064796623278a0e791c1c38a6854fb344ffd786a8f9cdee2f9be606bd4bb55f57892046fd0d096e1bd577fc71b74c00bfd1c7c683f77f50b57eb93a93fc5a03acf43002dc35025d3731fc2dcadf031a2a0473e2f7530eb5246fc53f32ffbbf94494555d077fe6b01eeae398964c7a7412d5cfe03b758105bcee79d07524efb52065d94f3ebcc34357bfebb2cfacb51481f5368f33b4db2d1a032ed9283dc876c813f2787e14b55de96b6792e73697db908388499ff13a7d14f5a343b8fb37278ec1836cfccf592d47d7d4942332a6a2453af2d82df45fc0ddfc7b83de2c82b28cf7df01ec9171040c434b92f3adfe59dd5243cc80e76bbb95747a2672ea343395c79bd7154c8d6747f3a8cfc93abb97ea2191b0feb819d9649cbb4df6fd9c1835695e944e7815ca7ee52952bfef13a9027598dd893749909d49f +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 90e7e29b79c095c3d63f63d58a4baa75cf62a99c8228a4f54a15d40a2e5fe67773c26c7a6dcc739d94d6a6055b399fd4604c7b066cdcdcdce6fa98d858a36d630dc6cec473c08eb246ed9c6e5a55a8d8314334c23ece4fd6a9c012afca93753afa96d9321bed01fb9a2b4f63ddeab8d6bddc40346b8f84afc7b945f62e321103a5219b53405fbee52f56eedeb9a536d13b0dce07d44ebfd66c0bb67776deacde4aadb7c98731a3ee54f5c458264894a7edf6ddccd948e7bb77a2e8df9ce47aba206cd971f3409638dcc725a3c22a4ee24a9938dcffcd9a67037fa463c852f0cd4388ca8ce86a8e9f73f73bbfd8611cf2757d9c56affad47ec19784eaf15f6218e84c3bcb61355ab94d5c94dcbb4bc08986ac075e01134b4029c8c1d78f829796c1cab0eb2d75bc25b797e8fa8e0385f01d94d1afb17326f4308487991a7164d8a508ff390f354b4fa3a225d5a46473e45ebb57b997f4f1d3cac01ead4fecd0c0af67d803e17ceb7da38cd60baf3e248cf8ae0d69d30681e388d7117ab842ff3548caa0231fafbc1bc542a7f02fa549def55ddeb5ba4e1dace275d511366ebeaced61fa9d5574c86c17e4ab5f3cdf946e20df59148a7e2ab5c21884314e3b8082ccf10c6fd9ccb6b95ebafef73fd3a0c7d7bf9c5db2ae5516abd7d42cdedba7d9744caaa376f2f189773ad7a59ece42317454d9d8ed56dec637876f104b6836a6842b97e743ade25505461eea77d63a8dad03c7941b69d7f66e4359f2e13a8182fcc35f5ec9cf8e978e35818504cb32e4a6dfc777227a54854d9a39bfa1e2243110e84d025befe1edbb36d4aac17ff152599ff0ae77b294bece49ed47553983f4f0de5462c72ab589bf93478da399ac40ef35a5e98e9459eda7bfdeafbb29a446ecbcd4e45a50176ee30e526f3e4cde085afdb3d226039cec4ea14d97f56bf566dc3dac77acb80b29b1f9e6d2e919707c96863304372a353772eece9a4f41a12369fb04fccb53e55937f4ce5d85a589b1b4ca46dc49cd66bef47188e51e455741c8b5d7c9cafcb75bf27a5b4fdd5b22e932b1e3bfb0c932495dde5485486e0c39fd5ccec78dc78f6e37be96823deca37c73d6d31c91420cd4ec64dac12fdebbe9bd5237583e1972d0c4676708ad35b559fb89bd8734f8a4ed50445d451dd65f58bcb293cdba437394dae55e6efe3a904e827949d16a18e936de788c58d7a54ad11b89528fc6df386632e725b163e83e1063f4c49e4f26f389dbce99a926a25b0f624d9a530cfdafafa4c5ffe6a5efa4f2e53fd19ff337d1ccffe17ad7daad46d193e37d477dda378e17a95fc8fdfecdecdd5527f4a4f36ee7648c9aa771bd15ae29c7f59abb63d0983917156ede6557be445735ec539c2e99fa8e6c562842627cc83bcaa659075f5179abdd1a7057df7f7dd96a6813a940a9321c0bea46e95c16836ef038e06ccf6a3ee450d8e569efbf3b718ffbcb08f9821648b1668e6e47869a0be7c0e4b827c4cec3c4c9948a6c7f874968dc80160a811ddd6d58a885d043f1044ea6f89d7f53b8fc98468f6bdb7cc7b6d107973db0f7df9a387673234d6675d19686f15ee4597c65a13a2636cee74266f373a4e48bb1ebd19bf44ec0bda5db55c6cec7b63c0721aad84d2b6551fa941167c78a0c105ed9e5300a24bb2c8b2265251a38ec2b9d05a0635b2849a81a2a7c6f2660504d5602fd2763046820ca168d70b76e35b9641ce46a44f2a394f496dc32353c1a84302381e8d74ce4294a4a260a5b0704797567ae831d7c4410593cb7b9ab74d2042c84805c3aea6ebd193a927c8189082333b3a5e96857e3970be7daca4c884d7bb0b3b9c250cb4135d0b8c90ae320dcb3c423e8a6de79ad594240ae7aa036e320ad8807ccb7a1bc80c704c9532960864a9528347636b4123337db7e2de37823c6ae084418fdd05ff7e904211924fe5a370537762dfa012a2153af96a46987776d245fdcb9434d66aa10524a3ca74e494c9de919c8e23c3ff77c58cbd1cbaf5b8a69803a32e23959b2a7d9f808689906a0985aeff5a8464a2af64ba053a3c18d89b2cae3814cd712484288abf7655063c403f635d7a2afb9d804e2e89677131bbbf7009c981548036726d25f05f004d605a24b7c2bccc4294f065c013c8ecb242d25611b5c82bcabeb9e578758f2f3ad3f087bb6813db1f3990c867a2e679f47f074fd012e87b3b6f51cb1707b9287d99fdbf43c8e58940109c376789e16c4a30b6bc34c870364192c555b81af58962ae771df477ff421a9b46c6e64bacd1a8a6d00da4d9507212c910ed2c62d199c7e330a11982c514f27aac092a5216b13ad54beebaa4049065a68d8ce9b1c969ea01599a71d633197bc33c2f6f958f72ccf14c7c09d973770f170f1f7bb9e458a00936d8677717f4a17655bc7a7ec56119779f7aa391d2356ae3a97d7ca04971cc2515154e148568c176a659a8decbb2c5c449ccd914d3cb7431cb3a0a400a8c7b59b1cc770c5bb5b64e0932c61783c9979d6cbac042216a0cc5800ea160c8c8556e0721d610fce13992396c382e93bad1514d780cee046525c443fae063c5882a01e5a73658a30864b1d6344a6cc46729bab7810c46f5b480d309a263e30461769a55a2965ba6ba0b44054f211b98c6c2355150acab81881e5ac1e561a4bc4b39f9902d1027e56155f5d71b7ca67415185319ba769f88345611ca2c20b233dcaca9ddba42edb204576bd028a79bfca57c9dbb0a54b933c970de35032b9b51d00c9922abb5106897cb896065fca846aa486d9c27f5b616e99ea0ada711729b75d86669645b9a223959b3c1c2f3ab6536d74295473c4c055aef8c2cd2d321e9e73cbb872698b3a60667bc768014332083139d08c321157cff1481f259ed56a7a3ff1717bb64fc951297c709a4ae3c05fe3910d6507ac947f944b970070570fdc9843a8a5ba564141f80f1654766f93048be6297a1cb76c105a7ba3ada06a42ed1ab3c17542201712f11824766c07bf14685ab0a9f69a15ad6574e59709d2411b37b509de3b7fe5e8b0ac65922df23e680c33141418f9551660467accc0c794a67cc530a5b130b4cf1c28747601d26983764acbddd30e42eb96125956a5870142574419977209a12e09ab3c5e8a22c1c5252527c90987a816b8830a757ec44b12e2e2bcbf19097d02b19ae47cc7bc99189370a1aacef36415ded82fa7a63be809b515f79f06612dabca5768201c59e2c92eba6d13b72c31648ee1d504ec3e89c8d796e77fa9a772499aec973b63e864ce36a29de99ecec9695d12112ce2f60f27da7f318eb94a74b437f8e0bc9513e9bcc38dad99c174c1d75e0145f1e2f8d320ac3cb0c52efdc753282f092bc39baf4a18783a48ea031a191865eb78 +ciphertext = 459624a950aff4a380db1ec8f9216591e74b0bfb9448aaae1aaea886c781c414fcc95ddae21c478a1f1692ae703b8b80008661919cb910ca02b76b9538fc9dabc00140c0d790a88245d3a3e70823da64629066e039361442e60d25defc22c16e33f910c3ebec5d045bc9dd1a763fd42a9ca61037cbbccd76c64a494c0e2b58cc2a4e8c1210001cf0da6a2595c30b36b3cbde8d08dc0de26377f0a428a35ca414cdcce0f7e3d4b45f0a32b167587521e57c1e677a23ebb39753f1fbdce24a3a8316d2044165d2aebf018dc0e4fa4e89c75477ee02ba8afee69df1720cbf5db1d6658b7fe8fa0c5672bdc7af5fc691cc184fa80c9a4000b37b7bf8ab63ac072309374277e8b01a08b6e717a4ed0c0357487cd7aaa702bc593b6669e63ff8215e684049ee8466654cc978f81514740b20038adebf7cabf9b21dce2405726d7ed474f246867edc20a729434fdfcf2402675d4622230ae94fca7ebb4a273380d53416d587fae57fbb7907068f04ef35d7205806ffbb3ccca0ae38945966b7303ab930dedad2d02a4cadbff6c991c6af14dce43b59c55614d970568bb8137b600401299d2f7bfcb7ecf7b11ffb26a9d0c3b753c7c58803447edf17acf17e77d1977aa8357acc332662bbd3f4a1396091d74203b1f06c1993df3e34da20762a0bf8bbc1d0732d8d011d0f09264ebd1d1977bacf77c4fa030a4d346f152e0f1a132ca1b4f996b548e93104ad66593d8fde6d3c6eace63e1d0b53372f6e0bacf148b0f4bac5fe90e7467dcf62682cb70cd550257445758a6e159e092ed1952bf66e1be065e541e32954a08f8e0eca909ebbe54d4080b1f2e482952d912a32592aa089c82d7621d43ef59640a910f57ece74e5ee0af8a6eb59836c266360ef293339b97c194904bfe37b3462192247132a2407e27fee0639b4e3ce3e62208d0fa299d9113e3430d52eb295b170320511d110f83c05deec70b3e6fd864fb15912ec7e5d358ef277019719bfda9eb01e80b98d98af154aa22604988fc246fc4e1a1a7cf7cff87825ac183f5333391f32049ca0b09d57e1a2bc983c091bf55e048db026372f7cf673bcfd5e88d36fe0faefa7326a057caade1b50cad49a2413f9718f1a01aea81de054c0000dbe33e21f9081202f5c5e824bf240561c2f4f50763cc9718e66746da4443604148be687dedc2075fbb3814d7e0a2d79eb6695e7dcdd45ad9afeeecf58590ea21b1f78e273289259afbc7f97ecd517bbc8f33dd95bd9ba0da7b8e72d8ab1f336ee0dbb6b0e43612f87d558ae2315c91abed8f8c38c2d6b00df17206ba9752a8e958da506595f2c65a53e767d0453da2e70dd14c3beefbcd32fac60fafb379b67ea1d69c0febdac6558bec1f7b190028eeddb618e0aa70f4c65169533eda0a5f3a2e35cddec4d11508685278ba688b2e914ff23997c4d4b4d36e15113fd7bcd644cf3b4995799206e0d2f87f2fe1566b7e7ae721c49b871a30d16ac0cbccdf1747333745a91807ae6dc9b272558fe1eceba01bf5b68dc54d73dafb5 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 0246c2035f46911b525e6c3421584bfdbc83d73ab936e76a26236a862e5c78db7dde1edc2e038e3dda69b5bafe9f4997d8589bdb09e9be2cd46ce5e8e6958ae79f51470d9d185b53456b5e16d592580fddd0f6677535510e0f602d5ba5b61c4410ad7facbeb5fbb38437f9d52266577699fef205a41a2af084adf648844dc9d65e643f66af97e482fd36a2888d3fb9901355397f37875a4494777c781ed4d479dd9a831fd4a51e5702df5a74b4bd91676ea649efa26d617d8dcd06bda80e14dce02fb29978ca5538ff2d4d316a35433dcc8ff7cccf438dc0b11c548b5cc08fa45bd086dce04ad2f25689d1fd57fae44cb1574c42e760cb43ec2ce4be178f3dbb2870592ba84403dec417f9869da0894f5e023b856f1d6437d6d74557f60a856e648cba07f5ea23f7dd7cc65656b4692fcf4278fd4905c4aeeaaacd3644ec705b504cfaba743dec2745ab07bd56f1768447a8ee0d676ec904698eebf30f369190d8c1dadaa5ca69d01ee8a68d4dff04298dc68ddc57bfb577d89cd9a585b249d89847cd3e96ca80e9f8868bf7f36579887f4ff913e64acf46cbcb4673f6cb8554e50c9975a13938c89a68cd0b6de5237fc9dfb7a6bb94e1cd85700db821636801e9ac84f35276065ee51d8bc1d755c1d4f8567aeca386fd050458dbd7d93567a4465453ab8656272a3c03b4a3c569f9271437724471d5d4926109c9792ba49e1e7813948107df7c33069eb3d4daa847db7aef3f35934ac28666ff7fb4408ff151f3c26c96cc3b6a40daee876e55970f35f81117dff0dddd71bdd9e497ef137ad8515ab239c33e2de638c436dd0c89cfe30b8f8e69f7f2c59fea394700debd637be0876c3c388cd0e15469b42b80bfeb8681dc7716cfb248ca6fee9fa9399b72d20f3f9517f29593bd9bd936a0f6abba09bc336778247db60d9cbd0e8b3d5754e01c8ca97eab822fa4cc399b5be3195cb1e3c9270d30b06dbbe3295c4de898c60f543599e42cf48dbc85d5ec9a9d93cb6dd4c9678c1cc0a18fc5632af5524f603ddcd1fc07c27e6f8d8afd9b4748e6b5e5e71c18a3f9737bd6d3420d4bccbd3a5625af686e64d62ce4696e16ec83ccf587fea618639e51e63bc6c64825eb50d4f88335bf9145bacc4aef8dd564b7a588f17fbcf30bedda44f3acbf8753aa67fd67eeab9198cecdf9bc722455bd267faf98424eba4031c3bbed8f98a9388cabc6b3beec7a7fcbec8158e1117a9d5514d7c9f6d99cea65ece641f69454b7adca9bf86a3dd472f8cda7703c6a5b25464c1bd91b39f58de673220857878434ea14cf50054fb2e63547e9be161d7beb7a78cd6cd0ccbe462a0347e72b51a15ccb5c333894aba511295b37c97c7f5cfeb6d97219559b40a67310f457119de5ac1b8e3bee5acf85689d4d58ec9adbb18b75626de1f38debde8ba70986b39d3368e1f978675a49fbe850a01f39a1c88f1df4adf0ac8b68a87e2b4d3373fb808a8be19247ec7e68b80854b0e433573919db954afb67999f9878a32415b78d3ff89eeaaeff3f98fd38abeb6abcf5a55bca388004e46375b7f9cc45926a7c3e3bc8b4e3afb196aabe575eb643cecb50f666a1bb6da5decce8c6344356a68eed44214453d03b5c7a2912329482f244226ae33507ba8fc8366736352380b346ca39a936190f09576c5188c5e82315e3532f34d41f1b50bccc42c1138802ccd5b50a7846ffa7bcadd91fe757ab7fe30e873ba233e13b21d25461030593433f4f66482d94b916aa8d1b4b8d6786926e9364cb579f52236218f199c3925142b53500291a3164516fabb941f98f0daaa1e2d619c9622d649a0408ac02d5ccb9b787c1f9b196da37020e362ecdbab03cccb63b659c6347104074b1f8254499c8452364726b1294669a3a24ac8b487752175b30cba68860184d5f78b845b107beba80f8750475d059dad57caf827878b926facbc00b54388f24b7b431347e334ffa046c45e234124c958cf66023dca620e1400cd5c08b89554a474d7d04086e5cbd0d051c03c4580d3442a575255c833026bc19dd301a70367fed300ef27779d2a49819a370519c7fc404acb3fa441a931c67a3033799519c883bea134242f35f92393dc134bce15713ddb33e252b991af10c7134a8acd09408c8cb2ada36bbc25224e8867a4138ed9b4daf403a477321614b3ee5c7bc2281441936b0b05513c1525421871d007346bcf52d6e09b756b4529bb5480aa3165e617cef41720167707f35a4415975a62114c7918ad83bbd8905a283d14d22b2400cb29fb1e102562cbee5a9c10929229f8c60a4b153c430a361812e75b244e4c3954a945459f735d45572e83b505030c13867c720567fd681c539d7094f5558dc5a86da79b38049b0a45a1259713af2c1640ee0279bb7191f0c0ec59c2f91184ca70a2e8b7576ce493e32f2c549c4bad6c925039c4c57114075281ac7631ff4d94ee0723c3400cb2d73c184489aa5b440ad470cde548f2f70903d08b9b4cb6db68a5d4fbb049a5a9727f50f9e6c59295c62bed7182ca96d6093578dd014f7eb0b121ac6faf917fa9b47f6650c6c7336d8848dedb92a0f70971e456e9ae625cfe266b1000c4ea6252de1ce20c014bc161fef405ff327cddda37be4919c2a0c097d6995b0eb743ff66a548307cee1080a13841ed12333e62eff081514a5915022c550c6021a27889bb0421df3a709ab2f9f3b0c0f6019fa8810ce3a9c37f53cd651acb4e5bc1d8b231f373b7a4ca6723a9710681016943f29697b09f6abfc1c60e8fc4c201a9ab05c260d2452c83b88423b904df74f425a9b4d116de0d059d96779d61017c2e984c2bccd6159c82dfa5ae7bc63e59304b1105ca054a71d753e7e583742e715bfecc80e51245ff53c16854ae0ab41c581402221cc8834a5f4556a84c19f6172c7c80c759299a42c71bd67040a29185a45c14b91b56a4af9178e0bbb0c4c197549b5c9765a8874686c63445dea7a85d43ac4d0b979b4ca13a80bf8db634a163fe3f4327210a7a128716b9805bc1920dd322b15c74fc722a126069abb8c95bd090f84497d832a1ab72358d4193b6542bfd627a139374404dc1998416f46054d1b4b538e778d6d0507fbf5571bd01ce56362164793e58355366495aec80eea35463c4044b202451b3604d6ab96acc3617acc1015379564d6a5ff1a6ae4d802712a94422a99d90988206776055545172b0282b5162b479d748a2e9d22356af11daf2629036665eed0642044b76775cfd9417ddacfdcb371aaef7abb3c2cfdca88891dbf808a90028d4f12c57e4985f7d4bf608793939ecba27dff5889d4d921c583999a57e20a48085ac549573e6abf393308641a9a4647f230201e1389624a296b55192a9819fcb19ab77c25f95445 +ciphertext = da88cdf0e629ad2c8000929d89554053e692132ed02ecf7f3947121c3da49e64e1fbf87f48d8a99818864eab9fe3b715165503b6adfd94b6587c65864d0ffa31a1e2bdedc66d2ba36ecc03ee41520af6302c4150a1ea1bc153edbf1a8736f3d57b22e309118019a6262138f311055e9b3750cdab2b9fe95b8be05934a61eca00f64aa6ecebe7ae12bcc6da07b91001fbc1d3161ef92592d0fa8a86d2a5241991174ba94a054f1c975b16bf36d4550ccced94a96f52433846252043839a01678167bea5a5f613eb41b4b33707999e4380d10097d089a44a721eb888528310188f6d9e642dd7677aa1e19fc710c94f645fcd2ce7514d69ef2e4650c6df9034475f6eada37bb02a268150af7b5181db8b5ab7242d601e4bb2ffd9d508d2988d4e13b5ab0e85094aaf296c8ea577d75de39a08e2bca7e3bbf132d886a2965b3476f04541e47e883e659a8bfe1f4c16881c70425528c5142a389d0a3f96cff2503c77a40d5ed881597fe8e5b9ee4d3db92cbf20e97aecc5a984f4d14445a33c31983353f9cfac3912150c7c6a48a8237f3ddccfc80fac8c8d73e4e527012170b3f485faaf8dbf3ce42f152b16bcdcc40418ec45e78beb00cfa936f31e16626278ba94e8fc0589abd8619aa057880672509a4344500c88f05210705220c0ffc327e73a9751a2e03606d0400d6f3c5bf4405ff0be6dcd9629acc2817b7bd28ffec361892bbcffd220fc3d9813e73aebf0929b814953b3d02a5d5000ac52e3a81cddc5f64e2666d4c86af23b1f45efc634f18f512ceddd5cd52fbcc04805306a794a61b0a502a6eac8e069e3aedf5039fb6ee62876795e874d6cc7cbaac232c73806644b49e10e5d69b5493e3ee647e7f92467cd255da303031270f8366c6e39a91143f92b9a803fbdc42e83251761eef40928e447d43e75abbcd57b97c207cc35a66a64c81e81a6ff33aa58e5e6dc047912171b53e34bb3ada16e57c2d7aae76c430f764b672f60e7691ba73fc1c6eaa57c2d06609ae2a6ed311c6479c9d3c8c12c4be9ae17ea146850f5676464a63d3c688c485e1caaafb515bb7ed4ed7f3d47455002eeb53c6282ff810ad5cb2bec2c5e52a6c6e5e8227c4ac72a882c45c9b2b90262111e58280f0cc6de4c86c667bbac46151d06966641e3cc67c86d06825c3c53bfb03a2505bc5731d0909d384ded3669197a2668c9d9c9baebcffe8a489dd5b6c42a3e2b65b236a9bf62db7342b0dbe07a04e2b8a53e7d4cbb520e1a56d25f427d2bf61a1cfbfe72e6c09a286bda114642237d6416053fc077f0824f439ace9a25433f57896157298f449cab005f4ce8395a904a3590f8940212a9c39c02ba42fc6dae73451e48605f2431d463c2c26f6050a3412c7d5b16a318286f8fd001285b28934f956138d7ebdaea7704451dea0641687eb19d87b96dec22f8a2ba755a62435a51f9246777923a9430310f529219ba8ba0d948c6c6dd13d2c0ea6f8c921ad9a3b4d2c9829aa9571279984c2bda818a338f3af9ab411c29b17fc4caba1ad3 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 34d9ef6ec981b193d501d8969f8847b2c6bd5d5c43e0ad44c43b551f7edd5675bb7e7c9e393b411e6957540ebf4ef4c7fd0b4b5affe3906af54eb5540aca856c47ddd28899541b72519ec23907c0449dad32a56385075f42a754577f5450ee77b74c7ed9a5d7e4d95def7c4a9f84c9687b9bc318a23eb452fb7635d63de165a47392efea7ca732fe9b3455c44ee4e54fc3a6518e5e402cd5a2d4a4f9b9c8815cd4b1a22c59ed368ed6c7a9df83b958cc83c4654c5ddd40245543432cdd2d9d913776e1cfecfeb928eb21c8417e3931aa3be142ded51cc8faca4bbbe6dabda3356bbf4962c3f883d0578580477ac56353ac85f4f3855de3cdd967b7bee0668112e5ecccce39fa73374eff685a3cc06838b15009fb65ce7772053de3bd5cc4e5e832b8a2b94f8436d99e1f2484b127ce0d96edc9beeab1cdd19e0b3439733b36a7a600f4638e9fdba66f4b445349a86465e2bf5de797f07deadb629cb472e4e5a42a8ba29eb76b68f9d4d987a3bdc2366fec188adbaddb603d755eb37396cdd57ff86f76ccca997c0dcd481587cb97f8841df1dcbb8479af67b744a5c0dd8b4adbfc1f7f6121996e55c6dd40f6975637831c49f845d6823d4b909225e149a9f794f4ab29e4e64a54f39f07c365a87ed9786af7a57ac0ccdd4a2de8007b6bf87d5a22bd82d2ed40a4f4c25f3f9ef9a8518966d44e7683af94728487a4f963d5d5ee5aad45c041fecf9c54fc51abfaa47a4dfc39d63243c21f8b83827e701b4b73516944efc4b61fb5bca63c3ed13ae23f55b832e6c312e8bc49fe45d62953f6adef764dd68f2c9ca05eca8fcb34295f936e4e4fdecfc04f65ec837d71f99c7c24c991f9c97e11ed51694c86789a9442d79092b6547d67af70d8c8b074cdbf854718a882daaca3b8eaad0cbec2d3e859d3fbd3c1af3b2915e8ef88ce1ccdffe71399f07eb380fceaec4c7c6bf3830c2be5f87e8d0e57ed10234393d94fbd43d5acdd9cdf17da0accd9d7497d2f9b939794b923eb3f28c4d904a53a062e6a536e32d9f3cc656d6b41ff643424f645d79481a8316e8cb0aa4fea4c63da0bde39ed5953168a4ac864c726874e1366ab0aaf49f35ece5b1a7f5cb6dad66375bfdbcfa3d7ad24ae364acd3327e4d9fda64581dbd0a696557945c58e96c1c889be648c4885958adea79ab31fa0bb15506bf5635e437ecee47b6013fb4273b8c978d6639c87031b6e23c7e996b4576636e2438eae4dada8fc18ee1d9e667967b25f76c4f736f4cb29bd0a865fd67a4dbf14acc8ad9871bc7adeaab37b298f12c6db647fb74178e627e4c8347cdd3449f716fce73b1b711b2cda1e1eddca486bd5167223658a5c55bcd0739dcff3ddfcf9bd8aa45b3dadb5aa0f43547767a1843e4c8792213e819e09f5990dc6db9bd270f9cb8f36f4ad04ea984e870b0630e1cbeb325768c79984d5e33283a991bb3c98b6bb8be0ebaac47c4310d5eeb565baba36be54f6a3152ae04a1ec38ef78e62fe654ef35b2c836c242ea52fac710d7bd3811444de5b8403569c8ded444e06e6dad54ae5649e68ab437d0da2c9ea9b18f59346d8b2a5c6582d763730bbc7f24a7ee8cf3608cd683a38f6fbb4bad4a58ff6e3bb322fbc8e892a62437ce84445f2e82b495c9730fab393dc6f3b36bb2a63759a79ae27b162250076a608522440ac1e04630ba766b4c256341c6ac967b36e6934dc58cda15621827b9558076361192e89708ed88a71826a20e8ec948b9c7915566c70a7c15a72c36ecc7a3cc644eae696022657c53500a0f13a8ae50fdfa432d8d2530999275e5b9c1d341fb34b8a5a7421b7d290cbc3218486b555c92572bac8f1085f058a87fd48796824844553261ca11f06978a03f3a8d68657c22064af83166280af52270e004731d20b18982283e51ca3db7a2679da6fb0aaba1e75a2d283add699a797e1be93502c6823007ba5b9760a338768615b671baedc6a6a6937b9e1c35575776a4a791fec7751079c6683ba29ea28bad199175b9629c44bbf219cd88a19f1089aa551946e58032a9c9dfd29bc4ca3b654f494990cc02bbb8e1280b54ba3920ef98903f171c27a5c0fb679c8e84774f22136e89915a534d973733410a96280a3207407235ca0d81a636a35b9dd628dee9a64a12918d0dc6d4c600989168a163730fab8c78e61a57970c16c813b791a0ee9f625c438ccd1a9429a93062c4ab38da5890188829ad116a6f1564a43a2e4f3bba3712207b65e701995c99b29d691c86bd9844af2471eb5cecd934f764629dc25839c809432e395fd8582cda980359246eef0637b9771fa5853099007f173c8598164da69c8e67a910a50b9940b213547815e0589326b02ff21b89bc4200219652dea6ccd59883e29127e2abe3787738b124d839a67e02195d64989520737e3aa99c6822f2c32249256c45455cbd931a5a1fb27cd56a21e22b51c03217aa387e151631cfa445b2b77ec90ae01828601961ada8a8e6192104f02ba5064c4efc27cf2dc3353fc98f34bb947b21ec5235fba6caffb6bc6b1c09a783ab8ef14c4921a28a3896bac07ae8ba98c117b3624e01ed0496a8c649a38a33fb679bb535a7d1960028ca6c8ba825178e74f0e50b5d74c2a9119b595b863d0375a3da173c63a03d8c60a8d613cc08064588890e3894a9bf4580704038841526ab84e27cabc8fa4cad6dbbde9b53017f100778478b86138fbd6be713a7e695358538bc4cb5a4fff531bff178bb16ace5a295ca0340985f34267a3a931998b29a36935d3b13af0631cd37777689ca0b43b9208afbab88ef886a8672b331224c66c6086b8b15a8eb86107fc0ae260bf08f970cdec98ece9a197751b6996258ffb6dce05306380770dc63498e9b5d65acac5a179d8946b27630525b39c3755c070a120c9f468ab3aa8b1a48848081b888baaa1156bd600733be887abf962c46107c432c34edca8e549977d9a6f7eb77eb9974bb353896e8261502820f599257cd9c2852328b0fbc5c2b98658d67e4a636575a46e074a1efda2cfa50a0594b0a421661d81d95a9ae0ca1c037532ba7eead089961c29765c443d428bf20767d1f08615e85d0c08b0fa5076e297143249283c13486f61a4d9d39780624055d6043120a510d4a686f9b490c74f2da782ab42157a00991be019e093a509c0c00b7c1e6ab611dfc4373c640a2f488e7632be1289666206cba2b096a479b2140c6aa301bc448b13b6839447c4675aa1be46eb6ecfcb4ddf2569b2d79abe93fceaff0f0ff88688c870d19759a41d3d361a0cec73cc908f52bad865f03add3941d22c80d50659f501f8cca1b448d84462ccb93d5f065889484bc0eac9d531a532770837a854b4f5531f6e0c8d6c10183b30d3435498c2dd142951 +ciphertext = 3a289f96c11468b574dc8fba9ebc8e41d2cf47c1e08dd6cc9fad7519975af392d0f0608ff43bed72346208e0de7a19b1b5c6de3ff343cd5647afdc94a8d079b12207802c5b35fe1152c55cb37d5457835251f7d101d540c7fdf80e220bcda0305d8ab89f1105436071ef5c588addb1753756710e7ce507768236bc4637ad18749522ff2d5c238980ce4ff37d820ca43330e680d8cbf149abe46c8c856642191c8393e2471e3078f2860e57bdd8fbd5cc1c696e145f57a179a5c85393e05604a76c70342c2f708ebbf150765d7f018101a0b13c808886974202ffa8fba17e7579ed9a7ff1a97f323d8b3e00a00e19803d2132fe804248b86a13f4615de551a0dc65e2f2704b24c9b43c7efccb42b5ad4159a4e5b74c87f7df156874cbe4fbd91c2048299b27181aae40bdabf64657427570badae13bed38aefbe8d7f130ab272562bc3724a1ee05c32004b3e446cdf04a31e7d1628a6fc3c0ca547d7addbf959ce5038f5f6ea655df4d4d2ff45e124c5395833041582498fbdac6fcd27624e015f652d16cf7d8938abec77ba550807c598dc507105e855ebc717c88082481b92f1687bdb9c7e486774693a9140549dee7b387f28227a83968cc61715f68122e5e46b847056586fdc5037645f44d9654fe0aec4b4132d15056a2afcae3b31f0a0deef2964a7d039f61bd1920fb47facd8718d6ccc429704b8dd2c830d3c168405e9dd90b7a7e1fedf9c5ea36126ace5621404c6806e5a95b1c6495a3885c6c6d62ba4c5122303ee901c69c14f9383e51f8b565b56c1a3d8b54f048dc01a0193ca5af367e4fb92c47a019551becffcd2568ddc7d57b66b3cd5449cf3841c66d901e2c9cd6a9e93831c7b9e78cc26673fe3a7a54c85d3323029e5e9a3bec39edf9d4c00e5e1d939219842255c35265066c534bff32f32887a3a277e96525880bd4bdfa97e26083b4342c4f6882a074a14acfc1985732f732f96072f20e95328d4f52be6f3ba7d3e3972d6bf5d584ff7c5385af1b749af453356cfd6984591269c5014f717fc992b6ce5ff945ebc98e6df117d4e237112dedc2d8f1c88adc466ee74f612564ee5d49e94cf33470f735c3dae296e8fc1642c08308e285f20729c39256cbd63b664a375eec8a04e6e9cbdae34d5f27350d3313727c7b2f2612657865db4364551d315d8849a96e8525ce6e100ba496f6782e11b5d42c6da5f91cc4bce2c77c65c029de1f67f6977217d9256b70f47c4712260a8102a110a94bb3b7e26dade7b0b9cd0c158bc95262f54087eaf92eca527ae4cc835d443ae7c58daa2eddf7680637e42da68564168840d87bdfd5797ba90967299dc367ed48cd1ab7f1a0f094bd2915a9508ff2db189ab6aa2f7d813a9e2eb219620c8a1487993417319254038037c080051a98da562a0176436990937e64d458be7f34ed366aa942d169e486b163cb8153924d750f1c152759f36672de638b3f3afc7e569ec52165887acf342123a9d88d6c795ebdf6f5cafafa6c2a6e03249c33a74e2d12eaa9a63a44 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = ab4545850434076342eae840a0ed590c34955e96d2683d5fca05c347bb3e53bc714f3e34a6e9b338674a9aabb0301fed1a09a190757f03d573c27687f7e35f2d87f94e1dcded83f218395b3455f3f1c7d4b27689ddcf86b5c98218ff39c159ae5d6554370dd617b5dc6dc6b7f50ee2e7f37a103e9bf6acc7b0e3345c9367b3afb8d9d644947ff0c0b8e7fbb38ceb3469cd55c662eec58d06807504443448c4e64fd4dc59c60b5e53494478ec4d56c9a85967b4febccf87afda51fdd6b84b285523e4ed80a56f7a68a168a4527eadf312be8d5e48ecfdd578bb89f4fe687d3aea56089d681528e171b7f7e4dbce1b678762a8b03c3afbff1635ca85332af9df14b880c5ec4e5389b7816ab885c44a8d83c5ef0c4c754c7b6e673d984938d3ca4eb0f5b83c9dbec37e72ac95e54fff7b926f3842ee88d77bd40f958c38c8a113cd5b551d3e56ae59de0954f2477e798a573339508b8cfac397fa6244f9777ba3189d60136cd83f2e98d2edaa01967c3acf7373aea36b9fbac3cbe3ee3c94b2fd391e37d2c60f53dd497f16f39bdcb9c68ccaab642fd84884b113f7df38555422767f4f6e3b2e87affd0e395fca37df1aeaef84f63d2dd1392732daeed47cc7c6fcaedae6136c33094526876a1145e4f39e890963fa75a6e7dcefc97f8fe7659d995dd8fb663655df65324b1996a52e50bf4eb2a1d9df04bfa6f14e74da2becc7fbb024c3c972b971440dc684cf8a90f48b02cf8608affc3fdf5601b6d9673481b365544b7c36a965def20c37006bde396af68f9dce1b5f71e25feb473d3b80cbcc82ef894d7569e83cff5d8c6996c766bd5d59776f8cadd84a3f468c68dfd9117c8254bbaa1ba584dc2661728a69e959949ed6c9f1c4ff01ec8e566e4aec7e68cfbb5e175d4eb9f585c7789c48e59c17b5975c444bd6f3fa6654bce298a605043bd367400c14b1d9eea593ad34544cd4a44c85711aa66d8d7fb07378fc5f5601ce9d9a4a9a8dafdba7ebdb1eaefa46ffb6d518b469f9e21d25cf40499196376d3e9f827e1b96ae255aff288037793c7ebd7e1d15533c17e62aacae3255c0cc368e2fba3fef09540a5f910ebcdfb2f3ae376aa666fc97a4fef2570ccf797c79ec575836edbe6f8d8b3dbeb72e8f41c3679bf26df0b6a63be65b95a2d9e47eb98c6553c71c65de386d3e6b73c877c94e7c6d3a22eca457ce409d5aa049673d0fae7c124be83579f253fcb589186baa498f3958ec3d0640a4d34931033b31ff6ebed6ca9c49ba70cfe9d6dc8461937284235a6417cc9c0ca0ad385b05cdec81d5a7b97a34987f50e3679ac55c3d76d83b1f7b99dcad39dc1791482f3b5d7ce1fdaed9dc16fa1e4b7c88d7e0c449320949bb4405b28fafc04d48c58aabb46edaa58e54ff3ab6c9810b6d702855f7ca91b07eb0e574bac114ddbe864ddaa7682787483a4e4cf44e8d180fc6f368a10714cb26ffd8c8a5779f639838ad7e348841a127e4f41399da175c49678307d3634d6b992198dfd43ccb8d7842e5f34ce44a4923e7ce6b77ec7a989aa748604d147ce7bcf5a1533e80ab321b7aacb8e5f3a3b6f98bfbdcfda435d787e49a3e73d18d8280bd7b7855769eba987696afdf68f31f46ed61101724795296a2499158c8e1b50e4c900d65c8ae65503932dca40e058e8192cec2a997cf12c8a1227567b12a1b21bb31d3198c85c4878c6ea1967668e3952d04b4123cbb9cd8c77f3a7397a9133d99654e6c56e7465d9b98bdbd624c12e36c62b60b6a32c9086a8eeb9b8919706f4573a33c393f74bb51d5609231f1707e152f23f36f6c6830ef28253c8cb81ec5c27adb02fbda5302212826f0b88aa4b4d72a509e29cb1bfc8177c019c60598e693bce999aabc4621123415235208e7869f62aa7b50a51724c13da2db59d5ba5302c772f2c1820fb0882ef32f73321c17f40d019cad39c3b12c57c3519ca0b38366ac4353b133c39262be6ee47ecf660286f6ca8eb7090418aba0d9833e22b46b761fa2872fb80972b551809c02775be07c796636a2c619fc748b90d28e1e702ffb0653e250c8c3759178c39e42411327a81c7e7887b21915a5cc032c37a11382c4d9186221b1c66afcae8184559910201c8baaacec62bab984e080433b9465e64a2d987028e9d9090cb2c41753742cd77f0998c672441e83d45f2d06c22899c2136362271b731f6ba3965b32e2517463e627aeca0ae5644bb8602f7fc599abc120aa111e2e549a276a18d2a92c39502f6f9519ce76c0bcb514e8084c7122a321479338f59ece08a0acd30f0ad68f2091855d5980219083398a6c0a63c70d3743678a1c0202a69dc526ddb77e30b779c36ac2575704ead94ddf1661a38b2624e733f2e2ae18467ce2c3083b75017411390314ab06abb4d0fb58bff99dc3949e92994703e85fb6b863ae1c29bdd6656cd75d9ba453aa115a32745f2dc1829881a9f4d5cc2cc053ab79b89d107e6054c69dc93f5aa9c8ca6cc1a7583f2e2739b102378d93990cb8280b21a5d5ba8415c48ec17288044623a9631577c16639922978258cee0b6c51bbcfe3f70be07cbafb7c58111cc7f2f922aa023d5ad01d2d31a57e0469ac428b6fb88a97d957ae22beb768c3cb7c9f02f583fa2513db7c580d2986984314e8b346a06501d8972e31ab8ef5b983e9a15e8ffc624d0041fd523570960e09e57d616a06297bb3f9d938f5655628b06c4f6c4fa5f8136f8cc05dfab7389237ea75aef46117bf1b67aa978ba622491260128e743f28f95f533b708f3c59230b23faba96ffb5c239b32b30a65b36fc5a0a76b76f04a60c9c7d5eb78ebe44b736eb56a0812f59d9b5812916246228f2523175242cd1f432f9fb054a8b52d824349dc0756091b2f7c21e2a899362157bf9f631287b90d6c80fb55b1469273f79892435d031b62982c49a1464e2274f815f56f3b6f8c949be11388df1151e7077f603ae592623e4259853a2b90159344b041aa29c8afc5074bee81959102e0c57a761f1b1aa65b1dcb66a18bbbbe12b2b2942a37d13c77c77b2bde758eb1901f74c7d57d373a47737d6e23998e35dcee70983359b4162c7135126e90a807604034d52add3530456b66f0da64453150afbb67d67d9b359137c2420250c279a1c537ab06952e4823f09372198c253d5b71a7e70a1c48b1dcac3a85feaac35a11e670b2840a57f2a7c77b6a00cc80a282f0a1c8160080c702d619a6b6d68c757306c93a5b21ba8185b1a46c79b03c35880a7b265a3e05b2db868482fcdba0367177bbbcad04f3a50adeb85ded90bd59dabb8a3b8cf4709204a2fdb19889b0022ea655dfd58ff27e17d530510e1eef457933fc3d8392cb53f36ed647364a04e37278a0e0a45b720f4a75c580c9920eba98d +ciphertext = 85c0bb95389f7e5801345480ef8cd5aee04a6bdaa435f7198c4478ae8a16110b5356cfa6c84c202c0d7ac5a13fa01a5b08611373ad41db6bab6783bd8cb03964d27ef42e9ca1d123ebec7f32f21bce5ee855a48617e85ba20ec6da894b582a88367ab489b68628ebd5195d7ce2e969e5c4141c9295b95d0cb8bf18ccc65b9f6b36ade0ddd93ceb7c0473d2f1abfcb788d4b92262b8a220ce9d99ac358ded7f108c2c0cfbc54fe75f53cad2f7c8b2e1d5be8e24bb0c554548421d821ee1e8c6187c9ba06ae2c7d0ac58062282a8082713dbfbc536ee7a032f018bc8d85b0d01c4ab2a94ff97eee42322ed7ddf060ddee5803bd30268c29202817f8b698e87e03f5ed608a194d7ba1e89d027b31a4a2b7e23df5553c9194bf5dfa9ae4c3428d31b4851adf635a5f772e7747da34ac8698eb78835258006e4dcd1e2b6aebafa19924864263bad9e52f70cbfcbe8fd31f993515852a431ca984f0460f9f987075a244b8df3a8c6fb8cc5e46c31874ab657a31f32be45511bc49dfec92511335eb15aa3bda5f637349b1cbb8c1a927da6b4eb2af8d603fd988744f677bb7355dc737fe1f161c2181d45fd6b2792501aa6ef68de0621511a7b0bea9132e7b99dda23c074e8f2ae80dc5438123a63152f6305c6dbb156dd572abae44d3530c35b4f1458326d2824e636ea5b8476d9287af2457e528803ae3c546c02a24f3dfe9aa872bbfab2437ee2352eed14a2d94efd9b064c2dc59d076e882177af81e3e7571b8f73c3caae2c5880474f705327c034b6044d899635f16c15b45dbce6f3be9c72b5a9e82ae6b2c2cbd994e88987447d2a1b4f1ba3dad60c0ad9c6544296127aa9fd858cf2015dd5d6cb297744bce70b462dbabb8fbbf124e7723836a84fc613fdc0bc6b07ce574379197598e902912844813939ca8bdcc88f861b97ebe58d8aa250d89ab513c68625358a783b4df50eb5728fdb4a4dfb00a4059c3012a3a67fb942eaa4adea1341b3cfda696d84ccf833826750c27b5d9cd84683e5c3a562c89e8e2e4043d469ea530abdc68641e2171dafb8718ecfe9451430561bbf7c349acde5f73eb3d296b5d1bc0f0a004c4ff8d84e335a9ee548a03e1bcc2903495744637aa2de638ed226b202d126d4b80c0d56cc14e2d23a71f57baa5a866a19b490caa860dd01db946356c0e162727ec75aa5321ea332898de7356bdbf110cf32dbc9cbd9c6bcb844e60f0e7b064bbf8220e443d7385c0967d7f32d6e0f7b68d75eeac8a8c6dc3d8c69caea30222a11d4413c294b2ece3c5c14f8e17e685e0753a393218ff4dad9e0d3be4bcfb6d21274bd2be7bcf4ea0f5147bcbd7117f137d106d1ac6ca8c6c772bf815bed18aef0b16b7a000ac610b1d289626b1a8127879e5312462f657439e220b13cd94b0ac3977b4143982aaa10f2e3caea6457fc8377fd766bcd2c96453f6d0c03450a78d10fc8108ec1a21bef17ce36ae5ca62a5e3e5093d2db9ff8dbf8d9034e450d7b98b17826545a3065ffef40d932d94661681676be4f07 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = d7e3338b3ca1d71e8b7485bf85ab9e8f6c36e158b67d2c3531bda544b8afaa0a86058ed9884f9d0d2beeaaba8f075ffe992c475dc4cf919d61efe673a3547575e8b00ba47d5a158c22e6b2c38db3162e65a6bdea43e8d1e96791b6d99c93cdb0602c94c1be3f278fe46b7d44e447fc5fa8843fa797479fb0f39faf9fc3b57a3d92c705421e6aa39b7b3eec76694f5555985a94879abf737949bc33cfd1f8563565b2f345b6b3389fe16e509ced46b4ad48a73599ad2d466f17d7e9b4604545ff955d7659ba428cc6994ee3375b07d09ad3be197fc1579fc73956f6d0ddebf5435d7a2fbf9199533b2fcc500df2a97c571dc3e1485b36e2a3344eb880c688e9afae8b0a9e9fbc57cbc11cb228f8c24f38a445d5e2245c3a5cbc65d30f69ee849bc268899a8eb9f334704499b60a99e139d9470a2ae47f3847085fc4eaec5b14e5e817fcca22e7bc1c585cd2189131a6da9f9f84ac7940b2949707ec7a680ffeb38d775e8e63394a3a9557bd4805dd27fe77ffe83030a3455efee96a763f8bfe56df73ce3cdd7ac70447573a79dd04a59e8b40e39c6fea736e15feb1b67b5cf556c3aebf9facfca4e6d8b759d37737863da2a7ac4a645a903dfad62ce7068385c224e5f8ee4146d896020b89cc73aad70e35d5a3b94889e84e086f1066a9f66d41b70f9d1f538fb6be8a7a84ee05efc158b69928aea7708bcc411988c0d3e5d1debc3b3eb0cd473fcd3abacb1bb3eb33f24379b5360d81efcb8c45584d3b845e260d420453718ad8319423d983a355b1388bf246b9fe84d0443c5262a8e2fd2ef5c49ddc408f4c0ff95bc25afe8c3d6d5f3f78fffc585843bbfddd6d2ec3482295717b6ee1aa7b647514d0841d6a0159ecfa9ee97eeb77dacdec2be476f07c59cbeb5c4d19a2000d61546a9cc149a149ba8e57dbdecc4ed5d957e5c8beba790d785edba95a7352583354b93cbef98c78bfa946a753e813ec36ac45488b27d85acd98b7c6813cbbfffc5e9814c3a9de4cf54ed7a144fb6d16be83cb48a9021972233382fc8c38861eadd6a868389def4bfaddf11d3b3a25f648bbcda68499352691be0c3e5218a7c22c8ce49790af1bcd4f77e7ebae8cb489b447df4f5def39c79a6e352e5e87bcb8461b5b509c895fdfff95ce7c3bcc5904d968c469b200d3322c4f3761e3749556476e9f5a915971a62a5a330acbd106ad77da78988e5cfb3ecd454edd459e5d772e64b627db2916b5427c694ff33410be6b746dde92833ecc35bb25db6e6537d1d85ab215b366a173604c2797c2a9c421ed69e7e4b3d22fddbd2ce96e1d5211134479df3cc54f8f8f66e82ff3a51c7b84f02ad8ba157e86b9374fb7c2e7eca3d4b65f4a73472e38c6f8cd6883c99c4ce934fabd4437df50ef36fc42d4862c9dc11f59f4087469211af5cf4cb29d139d85d9c9050d4cb246348d6d736e7d7b2babe11d9eacd3937d9e8934032746ab6df5bcec8bf637936448a0dd67a27ebfa74c6dbba82bcc87d73d4b9d33c427a85883613eda43829c7ca3c7a8f243646346e0d8199a5ed8d38d0b6686abbd4779fadaa4f82d4d799ed4bf8ecb65ee7c8b2047c41fbf55319ce39b89ce909831ff4df4bbdedb421dca35febd657b941f466659fcc971c1174aa4459551848e7a116b751e5e4022c8f2a4b3152a1b26a3096539c9b0bd6a435ea1e33413ac4d5f401f5de8570cc11cd4bb9fac473328d55501702743e2c8d1b97cedc8ad3d55b67d284158ea8bf1a4a8a17a9de6d5669e8b9571200b05300cb30bcec4a58b06f70830c2b32d28992b70427781854456129cbab53a7c72ff557193d3a221d06177d002095bc04e993b8606245416c3b998b01716af3b43a535f7a6bea71270b34ec808ca00e9453ae660b732963ba634f14378b1691a90e3708125cde31bae3d10451a5643f526cb790a8d6e091a725681fb539e9b05bda7b04c48a31b39da6e39e6be624663b6284de9f958c50149ce4090e6a486b68511ae90a0f093297bf090db3c81d34400a40cbe11d74271e23bbb7a49ea875ea7f7cc25516a899198362acc52c8a8ca14bee12bbcea9a6e3509b6887a3d1d4c3b2b4314c4c44f44c96f48b29a8e7b85339037acf131f2692b7e7a49282237c8f37267c835c24883d1a189d4dccb7c6bb1fe622fc31301a6d3612a448084e0a210449b7e15a4fd84a9a538b2d5844dc170c911fc1282bc513e8c18c469a01a548d1ce4853128a03a8b1d369b353c3003b0a29d210ab6af23acd010ae3671493c774efad8b3746180746401d0e5862a3265e7969f247c954955b4afc13fc420143c10263eb1c6dabbbf5a8857a7f3bee7658c8399503c21a9a38ba554132344e214cd2036c2b30d0770cc5dd87ed9b246e7f955ea926965748cb9e58351a938f7e4ac249ca5c970cfde48c0ade051ba873d36a581e0fc50d9583109a79549fc5b32ba432444046ac0a66f3c64ae1498f43b1b36d8082442b5aaa7bbcff2c4cda8c0c4d2c62cf9135a75709ceb5b82ba4ef5716c4986a36bd7b4ad5c3a505869fd34aec2d7caba492f4bc30d232382b2651d5923242bb50df87092ace5566bc5a18fb2925cab467b641df7b5b91142318d120456245f2f0887ff13516d23216637393c469ce1f776cf2426c6577844cb3d4e0a92aba85ffb59979a7c33eaf51ea2bac9862160bf8a85553a3d4edc05da102106f632c91b8d1df2a9b2734185283941ebcdfd788107b307738786d6c0a0e7d4957dfb17488c5d6cc11b83e3504ef2923034a06270563e18a18bb29f48c36a64c132aa626dcfc5a615e4416df76746673e500186a117a27c5007a4b04867213c33739e27058adb23c0de35ce6158c99e59b88b147e2ac05f09f7c0a414c3240abaf65c24cfdb6857eca66bfc58e52472861bab1e03ce70d2115480b443a9bf799379af9ac978d0072f75bc7923816a189da5974ed948b8a709a8191cc9be60ac2a383a7e27cc62543a2a0ca9ea6897d284ae79b595d0893514f75db35c9254b7ac47260785c1b86a98a5dd733d3dc2b947d148f698c5a117821847604151068412268169c86d50be92d77683386025704575177aac0b9d3d3196a610985e860e2f799f480b1331ba346db0c379cb1833223836d88fd4e11dbf2985825c78330658b9a189233bc76b172127bc7a98e6c644d28da7b0857f67157ae2c27659297c32a7eb653697a295097a32ac235a11887388265ecb3b46a75c865c239395300d0f8152cbcba77b4d655c9f1ea4b448fbe32c4996fc298d26cae25d276bcf6e66ba65e3e9779146fe6c37136273736ccb11df5b6d55debbc087de802404b72a003c5e8c809719d7e4b5d8021c486b9c3114d7cbbeb7cd49eba8a61bc2bcae1f1bef30a1daf76d +ciphertext = 175c3b39d3296365a6f8e1e6648985b0c1b353b852a83a7950bc3bcf8ccde62f52514f63823ea758d4e58bbda8b6e95a0483faf6e20612d042765dba9b60a3d370808c7554c79b1ef6454419e80924c202304ec41a6b4d1d12dbe20934727b94e3d60e0f76c37ea60f4c385c3158e882cec48b1433fc62135ea6f05594fd98f13fc6929be35492b354b58e26c8035fb07fe179929649c91a532831df262188aa0280e46f5ea5cccc7eed59586ce55d5aa088692b25cc3ab58c98ca228306b09c26fedd0a823b36d845d90f6e5496e3b6d70c07300df9fa5c90ac1798c4ca5ca25c16d8bc2738c475aa76b8e2dda6cd00279935ca1bc8868d6bacadc33c77656af0e53b10be68cc1679c54404c686837c4aa3f86c9b18c4d98e335f52a80ca28f61520929c8f6c044eda9b7802575051d89287d1af7b47519661d529065eec290dc145a7e496d6408a5a6f067a9e1db3f7d99fb0fc34ec167e747fccba45052586f12d7730a489da235d84d612777b0986c501c1e028232c9090fe6c8fc51a56088c1881c4e09ea9baffe50a6c2491f61c5dc0711d96c7396b8922551a70ade21f332f5236f13d9df8388cb6f0e461106d32ab61817305aa5bed1b9ebfb44f85413634bd424a95d913c9a2ca3b5c44ccb65e65be918dc2917cf9e5aedfae4d4b49dff4a613274f504b7f30b0e1f2c076d2ef31c8395219f9712ecab9df8c0d4b9b843a514d520166323dda4e9a35c212a8fbfe6d16e3b6892282bce66ff727a8472326705726e147761a2128752e2541c5f5331b8962265039b78bda79e326c3d7124294d29c2a60c9a01dd244d7edca5936560fd6323b9aaaec48fecb8e275930a882859a75cf7aa467bab38f54b34f3b35e8d29574dd2e301cb9b4ebe7043a350c14f46c308c5001bf680232def77f2b7c8f5fdcc8cc11d65b505ca393b97c0a6d2d2484401dabdded20fe2bcde15773a2b109952af594a4d943608b066cb78580d77403707d189c8a11c0ec5fccbf8a82967c151c955eed18b395350fc85506f42639a1f1e6382b269ff2611833286310ff91d97996e9c3896fb1c7994e877e98a89f9d0d1e69cc6ab6da66eef7b75cc147d1633450ac4d8baea19dc6bb88a4b93d2d7fe842a36d900d5b52e77165967a003ec5470282891e770369cf21d21d71a982aefd6e2d943c68b51ee312d537ba02a952baa7f6c0fbb6f93d554a4f13fbb8c48c04e2d9416cb9ebdae2ae2bad31d6ca5ed0f7cd01bd4db174bc79333c4d9292e07dbcd48e72cb7e63fb36dc54f0553ca0e43b48ef63ce225781f88a556c37cd2a1fd24130f41f1d778d8d9d0a0eed1a5cb75b924bff5dae57119cb38ceca4b9cbea6b6b7c5ac854a1f115945772b981634f402dd69e536d2bcf51466a20ae144fb853c475c04ae4c40c5828c230532982dc51e53810fc73809c1113ef54015290aeb9bcd736aa8ab1f747d5b90d188fdb45c8bbf14c06c41515f354746c7b08ccd2adfeec6bc02266a78380b972b7ff44e1d29cc4bb1933421cb5450 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = d338b8577cefd9168551a681f9c590095b6b8d8474f68ef26a4b68ef8ea83738bb964356edb663d925960388c928a6d29b3deec8fd46cde497e3384f613a444634aa3d4e656d6d31d523372034e6047efbed1d32afa7b3d51f42ce374c8c1e8cf72e9fb5e645002530781cb46614d3f98f87d115baaa07ce95496a733f86238fa653367fbbdaee347e55a3c8905e368c1974418e735f93b6965ffce1ce7b43d827e0d727a4c4b434003b9111ede3568b7bbfb341212543031c862fac505944b8639455488fd47b2a864a6675ed984583269362759cbb464e7e248a48c3554c8d54ed9342aedc8e221439f91f697b79ebd5c89b80ceeec716bff96c97dd73c45c0d980bc6b1f7aee7c33f93875e8058e97b276f6d981960267f4baf0c572a1d939aed35ace9a630cb6d7ca9cbc16ab560da5c01e37601ccddca7a3af99eb80418c0066e45c7ac8c1776d5411a39bfe843cafb4fa61463b20a504e984309ffb82cb7d81a97951d0961b2664e2d7b41e0adf572edfc20ef4ec0ea998619f48c05edf208ee96a983dcdf9bb37b9a7d559c720cdcaae894583a842fcac92eaedc7d78fddf7da4a8bf6e3259b291ae82392cbe36b68d2f4fe708e9c00d9cd6dcb5d43c1a461e76438b88d1e8faca17045b273be6999471f8fb42f53a432a5ef4c4bfb7f8ae3eee9be95b0e871909a70f4ea0cedb37f3f733ee259f41cecd12c79db09d788d78ceaaab9e1e2db7ff98d0a17ac28953a4e91bf57d099da195b6701a695195bc730389a84a499ab784762631935a5a974398c6988a5a9ffbc648fb9cdc6073fda6cf65c9e0ff309d1a433ad5fe6cbab472e788f76558d57986bac5c79cafef06f5d9db18c70ee88af044b528fff1e5b5e05a19610f059fc07dd9b995e90ad8e6416d7cc4fb69d499fb5d9ac12bbcf6765aad5c874fe318dbeff77961cb9e747a8e4b4acaf3f3b81e5ea4a755ae8fff994e8a722dcb5b8014c1ccdc6a79046664c3b75d0fb91e0b4c5c35db8eda5d67e9a0984a6052053d22266b2413b98d94ee8aa686f5edaeb8d5b2ed2c8bbdebd375ddad8cd47a0e6945f0ac352307ac0ecff4ecaf9bc09397f06be3098f8cd42b85c556bf0a938959fa7cde083d3e0e63c22bd16143e45bedc47ef73604999e76f9ad1953ff82e762bb8e74f8aaf3d09333f7e677f33bc15bf996ae6999ada8747cbdc4555efc2b75ed2b9d382937427ea555b3856d035dab1e3663b8d78f3d96cf9ec9db5b6de12a7e5df5db38096d76c4b351305a97199d3ac01f60a0bebc8a69e62f2e52f9edc6234eca5deb5260e7eae26fb7eb8f7a342584577bd0dc674a5cee49c7744d7ff43a5b04a3ebd38c110630ff656f30fd42ec6d3404de4f18fbe7cf675c996cf790e936cf8b60e758484ccd4314f5d106bf83478f9077aaaca72acb46d331ea1f7b17dcae5e639d2b33b9f3cca468f731bf0b332bb4ed196ab77b3c43681fd7883d369cf5914464dea08b5025a4c881ce53104da852e35f975e9c91eaa680e9dd25b4f56ffbe878b48e39143ce43378eb3335d4ed3f2a358783edb54ab56860148dc0fa5cfd149cf26a7260639a347aa72b977b6f38bf2aee472c26b4d708df4bc3e92eed6ec05a6aeb9b77f8c16dce72611902a8ccb81e8cd4c5a2fb1d8fc30ce226bb45779f41073ff3ec0362ba152102cf45d3a95874a551c14c8a621436e248ffbbc4ca3b4033d50efa392dbad9c339745803f845736c30bf309546229ef52788ab223758c03491f62913fb4ca4307dc6b4c7fd9503a701ad21671387cb2cbc728ecff4641e312779c7034ce720554a948a021751d4628890ca7367611d4b9f269c5ccb2381f1f6a01b0634d9c5c954fbb934e4144922ccfa2035892c4cc2a8457300946aba4ffe77868d34c7a90507be43748a366c49d0a927e66610a08cd0152a2c1bada92a05694b6e3d2610acd4579d5634fd2675f2101290e2ba1855252b57a438b50fcb854ea7b6a89b109ea9857c23aa38333428b94ca5a524977d72077b56978328c18980382ebc967dd37e6136360a958d5f00c3b9996de3b97b6468b9f98c3c50f37a9e73ac8e8364288347d9b018d437b3b065c120d26e9033078b5838dfc7ce68f244b32c5b4ac04def068f58fa733e99a418176575ec2ba0f78d4c402d67176db5717023b57f8d26c636a11f49b926d20b277d2613941c3e786b1a9a3c1135993bce22a1de16434a5902c0f101993b65777399828ba52330a2f356203521a3c59b6007c3aa41d198a8232d27c05f8e0280c9076d54d5aebdfbc95c7c06bce24507892641f90d2b774a2d98764c42bcf009799432b706da59bd84cde4892427c0586929c99850c7d769ad9a221c85a4062a62b2a1847454554224c4cc47898574fa66d147c4aedc59ff612f49285db54170508c89e6787a8ce6515cec673d4545970ca8ec486802933e319800fbe46d5cc14c8363656dac0600d895fe383fcbc3614fe334cac0a94c185b73db30cb5a56a8d04cb271b13859862f164f980625d78ac35ed120605cbd69e6410eb05168819440816eebf8cc9ad153cda5bc2efbb00a7563a55856711231cd12873a9a56996c174ae43b5c172a1445bb40cb3deef9051035b33214a61e26852ef3bcb3fb319e1b4d6bd832d6b9bb54b6021d180881d59d2458564acba148b0ac36cb501cc8242919064ee24343f26a87a0696000533a20943445c72b9260b4c8a46a1c921c582600d978c5370b400b2412f73541a13ba0349e66fa4025735cab6402aac51e08a019b48115c49c665f415244fa91c208c6b1f2bb02bc18c47a5aee366edbe3bae1e41a8b405ddeaa22a2fb254a6b70dc5a16c0217e4dfb933a127039b788e6c035df8993ff86923500ba466a81d34a0ada271da4262f33123a1b81a13621211845a167449d93370bd95a89725a56a8452b510a7fd2642af41a4a7856abd9688dd7c85433a868103679a8eb2bdfaa0cb52cc141267e91e2c1e57162c6b4897c9004a3d375c1c8bb87c5ae2cc80c2a107e0f904e5bf8065ac96c9152aeb07322fa181a83a9cba0224c9faa0f06cb67e2787eba832d3f53ac60b7b014d28945361759689c3ec65f8b885eda081443a2afd2a735b1c57c201aa4d273b1302267e5a63abefbcae8e1b2d3883439e2be2436382eb9bd62146de0e446b6e2baf8300575091db145a646c733bf352989938fdd8003218a607739c60da6758bf448bf18a22630b08ac40635382e3bf86d16625c45e12ebeef4308b229c948d425016d674119c0aadefeb21338ba6cedbf7df723a074ed1f76e97d68434ba4af2af0e549204222679e9e643580c35af3cdd247ceb2dca81e3f5f748d23c9d356a2209f6b2d60247b2e45c9808de497f64f124643 +ciphertext = a79775edf0315a85e2a48145e0ce0e7b2bb5d25d995a78c8b4905aabe811328d595575e87409438b07a0b772e9544246a296961385f20a180addf607531c8aa982b4a5ca6bfae414956a40e52de3c1427a087c74017b0b711696459fc50369e06023bc915cc0f37ce9b1a250bc5e3ffc1404df54edfb9935b7ae1a5d73811515e0c1fa539eb9b11b08d0329c1310d3e49c816249d1142240f605e39abba101adb143a143d7e4ca7abce799e13135033c98555fbfc900a319824691886026b395841387bdfaf4f2cb712e455e48880edf86c40563bece6cda265ed7eed3ed91e649cc086bdc81ccc5d9563567cbd45f032bf78235c2576a12d7fff82170b4e0d0d6dee1cdd075e55fde2e1b00a03edb1615c8f225674525d7a1c8f17e8f8dd6863dd41e990826b482a307ddc522e29d271ab97fa57f2e2020f50701c7151f445fc3a8ef1afb9443aea1919edba5a68d745e3863accd6e3ba32f016d405018890969148785d00ac8830c17a7610376a0450f037ee4f0510096cada7cdb7a38d9a765da618e8b5ba2fb0083cb761e96a753fa119425bd50e4b996c5cd4f58377de02ec10ffd8751e6b513c3b33e7b6e45027d25a910a380cc16cd6e85f079cfe1f985ec15be162efd333d594c2fc333f3389f3c6cba92ea1285d68112fa07ab65d18878c423ae22898d0c63057da644004de424d312d099d1c47ba88fc9e35d6f51691a95e0689ab180955afb49caf3891a329858f625bbc4c54871aa82692bd0b32d0ffa87662bbaa75920f8bb546bd0fa4c67c63aa72501f7e213f72a9d2b767eb5fc2c7b5f83f492bb9eeab10bfa746248d1ce4ea4d497ea4de28878f764a349e2f6c268b7b61fec881f3bdb7910a7fa2dffcf4dce41fa8ca4e3cf4f720f72bb29799c93e7affaac971734837e9e4358508b5570c4946938245c30b566292e7fced74793a089046cf396aa77f277ee2292d1ac516e09213b1a334dae4e4ed4c6bbecb9e6f12840a3a7e111ac10714dc73f2c74a137a7b662b515175b9ee56e76eb21d26b75bd5b4dfc7cee9fb6ff276c27c6d531b06e5fc26b740090cd6830c126a1f32e7ae449507eaff06332b792d82e68a285f5b7af77f030dd4535b8eeb713948ade1ea09559555fefb1a332ee3548d4a29f2a4cba841c7194c7d309bc6aaa4d8d299d99965300347aa16b35c90871c4c7577bd419b2076628adea586d73988828327220dcdb509807b7dc921d5f7771bd8a0de19667c965e3ab22d3198880e837716e506068a70de4b4d300a1f1a386ce65d8127bdf38b2bdbfead80d6b7b89600b880833d84a38b9dd9cce2646a5cf6849595f0ac740b5e65e6d7e1fffdbfad7d36ced685b4fd17911ff697a8ef8bbb37272a95139920727deb0bc7d5feb6fabc89b4d342421b29d71d0796c5312484711af245a0c53629148ebe4c1a61bfdda623775b75e263cee799334be799dc8d26791a7b8ff002ca4f92ea37660ce55199ea6b25134eb9c692b255d3f59c96133c6857ff5aceea9c32a3d90c3e1 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 9bfc3a71fa83a417ddb5064ada94e0a87d845f8e8c49c9ee0aaf51e29f5edc2f6ee8bbe53f94b2417560d88959113a6bbc854b0065748e6a7db90977aebdf16f3c41cf07df530fb306dcf2ff9ae38c46dd75b9cb1bba849c5bcc8c9b55e80647e513c9e4ee5f67ae44f013822eaf4266765e402ef5f435bda4c46ef57430eae331e1d54c91a6deeb363ca25387d0d441abb930e4a7c32929ec5ff7a87996a4b1aa741636e1e67b303e284c7098a65069356b55304c1eb8bba66c5829647493c09b06f2670e7977a988343d92efe98d9c13a2bce53f8fafc81b0d99b7d5c2b127d4971366a5565cc156e0df796c6057d0691ff6cb165e9acaa6ac5d7a923b4d472a4b6ca4f4e7f5a622f87f4f9ae083b4755067a93c285cc0748d241c7051a7e128cc5af4db5c1f8ce44f98b6bfa7d3f5338628daf2df4b84d113e2edda9df71442465af4491a626889f8c22455ddcf3eca964e924854362d790e8e3924cb58a1ce56aafbcf649d6ec5fa891936c7e16b5fafd98026d64ea31efbd75b6c5f376eeb74ae9b29cff714ec650b91a2b852c12e562ba33b66ebacf787be419edf22aa43f4174571c77710f775d27e9968a552388db61336ff94bc36b71eb63f56ddc7fdfcc588af9afe64312f76b0386e697469c569f8c0f6f439cf5af90577de0883cf4581936f905ee3dd9a1a7918c8ff9b5af8ca5b8dd1d9ad4326adc7ba69c087765cc6511668cc0be83d520f45f8834e890662e06774f389c0c623be331faae5accedc2dec43463b68889eaaafc21badacb63f9ff80a336f99e4fbd6d2e2b9ae452647777651ccc4bef70ac06423b66ec5982c96eada7f3dfbc834ca6a6433174c1d7ceab9569265a96ab5d48495e7f122763b3b7f75b297713f1a729bdc48329b64fff9c45955c6091375d4d77fbac540dadbe40666610ec7a160fe8bc84eaa6a4f5508d5cf682bafb6d3c9e0fdfd80349597f56fbebb7ec813efe71b6d6c065c4e6b5e5d17abf3c4e2dee8eefcc8b6b1935fb37b467a5cc6203e8aee2d67890d726509baa73bba254d30510d50d5bf3e4ae7e349dbd877566ad20dba77f8b409bc8f0ef8cfbcfa3cd1baa1935c9abca798ff6965ec7b53141b6709597bc4f9983766403ee8ddf4095d59ab482fab7fca53fef5e76affc77f74f4cda62fa0085a4918dd4168bddb09863850d6caa17fec2d473de0763b7e3e68b6147bdc0d9eb36d901fb8f013c8c0a3f6c39de3cc49a773d08b357ef932077b5bab86391239b3c366c4311dad15fafeb2ed52680f9e5ae8e39728a907b98761b65dd6dab895363159b48875fb6aa80882257ad4461bf97738d688745c5914c089b37bfc949a8f9864affcfe4ece3f61afd70eb561d09b530ecafccd66b87b0986adfae9334480676fee28bcfed9c57ede59f799c4d1cdba8377d593da0ceb0d233005ef587734fc3017d779d8bc5bb488dd3988004b5a8554861b66debaa5bfff7c89dfde93ea077f422cf16996c1446be65caef902cfe7315636a168c0216ac026fbbd4239858837b02dab5a3adebe6b17f469af64661c5e3404f480c66526377c9a0d92434bcb551a744227445d6ed8fcfc3cb55f6d0c8eedbd4539cfad5a08a78fbb7f3f9bd11c902a159f41cb5395be189b1b7e98cc23658dccc7bf9a843a77b2a6bfa27bc941b04f391950d998c607a59b49330811200b38b243060b55e381c078100da84975091f3a0acb06f22ae3fb1b7d756d36f54200a367c109b13cf40f3671231d5b0ce9e5908776768767209f4726c54277d0f8b0e05bb4cd50bb5547a01051c89abc4a352745316c8d85a3187d68382ef05dc96294446972f4c76c7b9b91a4babe06fc634e76ae4b778f939c308f22b8c816bc3fd6b48e168f5dfbc19fd8cb7e4686bf2325cb060638c723364b27c8e3123fe26cf9862f247cc31c844ae77754206b03b497bb3283cc7e38664b23771f709e1d308cfaf5086f25acbd04cbd9f1612acc2712d129c9c195bc024cb057b0766aae7b533e60f04d947947f920470bc37e5eb4ac4fa1c48066877b4456d4ea2a5ee089de38a7fc7573fae5480bea823727132651a85d873378cb97d6f7be1250a94621abf5eabf0114952665cd2a5005af338b36d19f6e4c8f77e2cfb6f24d3cb7a909315a026b5aad50a9cd4baf3308059a91323b1c226ffc76b3565cd9386592476b76057e3477c8b7cbb201ca91546a2354b59328d411a724cbd8b3689efa335d879996fb0d1d2244edb361be4b2489e84086f4a995f20ffa9404082c4e66061d3ef668fc155bce04916c92b8fa46b77a4a9fa82c8c0ca5a5a5245883d25fded230e74b22394169464bc33fd51fb7f2aa9214b1ed546dcfd00ad554aec80882ec170c6ec44794204170d738ef9341d6034920a7aec3b68fac00527b2812d88969c6207f9aa122464a4d76320ead6271d2836e574155310a756cd4249fa7474b301ca978a0653935b7740a16c50df1eb678c1bc3eb451cf6fa35beb903cd89cde0aa58a43bce9cf591286792fb3b5e658b5a32196ea24a4252b093d2ab40884c39a4abcbd19b108b81172e18a84a288aac2982d113454335423148168bb6b9d97494179bba1ec8760be59d06251b94b4baaf82a6481c4a8f33b0fc3164635452e6497f992308688352cbf44537c618000536f9c41a64361ee162236f9227219b8b84a3984c649ea82211207c974f6c7575027aeef57e496a58ce2719096a58e2e31e82844f4d674a4cd9cfcada79afb0c63e634d2514ba4d8604ccc42b2eeb64691aaf23727c93c4abe1423c27b3b7abf0b649334760056e591c32fe812a753723f7c93ef5524c8e0267db177e6e55620715688cd0ac70b2a90e133caec86945bc74d7ea1cb88479a37b45eae4993bb7048e5316bf66b9715591148c9a20a35412c2404bb62c512b3800b9ae104453d95acffe000d3ae85b96d8092532796a03039ba2154f84afa4a402acb673b8799441bc505e836c3b558e1fe2057fa79153e1630d72afd96aa4fe9c0ed4822ab33a559719b81d274ef0a2773e405761a036521278df5ab3617cbd89d7543cfc7c6ad373b2d0b781dc78dd3b2afa34b6565979231681fffb8c62843dcd11686ea59406e23cdf96aed95554e47027c5b6976f5515bc40b0e3a31c556219f89b73c0871e1ff552ca04c33daa4a363794cc7c0e05249b53d20460eaa8ad217787c8c9423a7eb71058b5a8081b82454dc91f77f8608d60caff30a7c42424542a1746f0f10feb3f0fa52eaad4f2d4c36e59ca0a5389566fad53898992a17bbe0a0f26659f74fc9ec372fe18be4ed6aa28b7cd84ad1c0f0115dad011a11d20fda9edaba5068af837be962f439f233593d193ce5e08f7d66efb3389885927b89d2523 +ciphertext = eb2ebc83c36b4b470e983a8f9befb67443567e2c532348990f62418cf62208d84c1e97c114fb76ac3d30491056f2f820178164276804a16267eab23b270f990de9307b5947680ac4d4c070a2c764ad520cdf3f4f0bedee9c2eece09f07df98209e214abf99c07e7f50e78e38cecc268f84ceabfdaa8010b1c8b0450f440923f23b22465770d19fec10e0917874dc78243c3483a38d49fe28526554b217b2a0eec4bb4b45fa8f92954dedca998ff1cb649237e0e056e72216660a10253ac5064dd0faf13d0675ddaa9a3142c399bfcd2efcc353c316e4e8d3bc9b6d27b9ff8bc7cc4f87dc4d4ef9f156b0e80ff45192dee9413e74b83dd98a6b5d3a0348202bf041efe408dceda6e1323c887e414f126ba35cf6d78da697a47ed66f8053d9cd0a096ddd6649e74138d69caad22d856297f4bcb2e4f7fd6930210e63325693adcf4c60a346b34b17fd2193cc3e6d484949106820fe308c874f93f9538365b9cadbe25230dd5b3d7f153bf54fcdfb1f2f668e039f3186d9e4f9f336614e88954ceccc791d584ca318d942917678f511ff1dec3f1534569bf0168dcdd1505fa98dcff66951fc28dda492f0afde670bc4fd0adf3b5303f3ded36d323a89d58c5b37b9df02a21174abc8f2d517bc15f2afadc22aad49a678392d3dc5c96c3969e4b55ffa30daef78b07a01563ed24b214d662648afcaec2ec91b5698b638889b701ae84fe06daf92974b545a007b73ed5a12602bd0fd6cbc5c62949ffbedc1337bd4d1c10ef41040e31168135c45c765245c00386ffb54a6d62eec1266a18daee9d4519214663d307d43e729954807c859c4a6834b1c9b7a47966c6bff8e8b4e062d1f9be53329e0961abf7872e42fa510cfe350c15030a0e12c66e8de05af485b9688112b5c4612973b81f50cee871d816839a2beeba30bba36981e483fe600e2993a60b3493e016596545243c7887f9ee9dc1ab6c875621c1d4b8c600e062d5d37a30421bfdb811b62fbc73c0910d305b71919d1c80169ad86c0205cbeb4bb0df6bf7bedf96c741870d66a78a62d8ee9cd7f7e7fa8ebe0adaa1389a4932245ba6f85b908366d1589db6c2715265e98d0f5e89ec8a0e35eaea4c9f50aaf213158e729e3766c50497e6c2b9f44668b4760e593fb509789ade992d9e7d047a50045093f2d935452648c7afaa320b52465d48b9e15acc640b9e89a2b0b893a6fbc8c257f386e4cc9a52bc5d2ae7590cc2161bcfddecd17e8daef627fa9dbfa92b76942e6fdc0a2f09692fd82391d69546986b364c5a22b2e91819d957e1ca654faa71b11a16b79c37130610c01f4f9c2da974da0940ab94febbd955578b28ce30ecd668c8ea876ec9b313ad41e5a29a04039e50fb24233716a726bb202e7662c37b90adbb942a6cf708eb77abafc6850af6d037024e6c781994c421b3fa916ae07cabe60dbd701f9dc7c29ca13dc810c89970559853066e00152d171823b237a0e189c1fe72d14186f420c1bdf6055270b3782d78a2d924be110794fd3eff58d8493bfd6 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 5e484946337e404e35d738b0862b69f8bf47a5cbd812d562024ddc53bb87b798b2b65eccea75a8801dfd7de7878fdd8e977afcb62b4aa559bc378e6e979d97406d8b2636e2f89b5bc784365e43e93ff9d13c05818e0a7151297ea53c95089388bf2d3072dd335535436c799f6d3aa3260a9c8c9c9e36f79f13135c3dab92924e37c33773660aa15557c32b8ad86a6aecfe1f5deb7de83ecba94ebfff0f4ae8de2e31bc89fc4013b7bf84a7840c976c63e17653c4f947839d8cb35538bb97899418688a9e16ffa0ce7d7755dd8536eaac0ebd9ee77e917966bd26bd3d3990aabc8561cbaddc6af2f8d8dd99453fa745db2b1ffe4ca48dea6c9c083d95447eeabfc7cda76aa03f5eacfefdcc74afeef3edff45a9daef5dca77b93f14e4bef44576134391f7b67659eecc787671385ff67a556ea8f562bd858b25ed4315cdf5ccb5be075d642a23460c3c65e0d6cb6833fc007e9204b7b7cbbd741817e00b8ef686b982f74fd95d7730dd9385a8af6c2384e475fefcd80cf69ef346b6ff87ec0eb0471d4ef94e5372b47da145ab0c6ce7756f6b5dea7d72db4c62fab14c03ca5138442079da7a9e94e8bad5bc9e4db21956bedc948299baee7f89c884ab9833c866a4f2ad05ee4e2ad466056eeca478f11ab55defce3453daddc889044a5601357ea6a5b097b54253bd46fa83c0212cf36953954c36840e49dd2707848c0b879acaf354faf00fca56cbb86c0d2f69a81c790b966893f782aae9a4bd2bd2fa85995a757ff2083fd26347c987e1e07560af77cb59c7cd64f7cdbc98dad26a7bd7fcb9b31d710e68ec49453a330dac08554a651d68e6879ba6665aeaff81fc14c8fbfcb0cbddd81c2ad6dc0e7d80048b334f48f699825a489d0726893f1d9128adae802cca29ac56f71e8d209a54cb94fc9a8c539e43b9681cb8690e8c95d872c63fa10a77bf52a796d43e87fb8aa3fd88dbd2c4b30fb7394dc64b10ed5b821f8764ae325ceddebb5ee248bec22b1e46fecaeb255c51f74999dd29a9463e51bd9869e3d548347b93c1b798ff9fa053b88c80d7afa5c561d31435d71f51253b9a4c3bdf4293dc81e990006dcebddb700234dee9ef76d4f3ec2d249b854e4f3997b9c4f5c0698cb2a24c48e46d5f6e7d4e5db734ebeefd62634dedc68ed7bef48273bad5ecac075e978b098ffdce48667671d4b59ea6095b0b363c31299e5cadf8309e4bebc66f639e338bb7600c93e0b83963336952ec33854ed7c979c7ef30188181ceebb673e4ca3f42ecb890123c9f2aaa786acbc7dbf560d0ce625d06c3828998ee5eb79d28c583bb3871a7d6d1d67b9ba5a556cb9ee1dc4ff2c53c33969f2f97bb93056729f65fd90aa2d81e3ee07eec521761be77efe37baada8afb4b1e4dd458a19966a2a439e4d61b47aef5abcc08f50c88af752b51bddda3789cfaa38aad8edddd835476c8386dd3a8628b36ef1d7bfb9f87e842c97da7bbc3d03696f615f4be6476440d44f6a8aa49dff901f750dc55c1ea88e3ec45e8b26b3fd0657ea6fcb6be94c026244a050e593664673faa680f866e184e43b0dcd86fdacc208ef6c3e941f19d332d8487d5e66061d5311c9b5c8edc39bdfc349494d0a9a3aff3a85a8683354b3c3f035586b50b88c4140f346a05ada7ce4beaaa5f096614cc767af89ffccb95124b00e8379efaf76ca381ae4886abed9240bda4710dac62a71017059b07921c770da1ca2d209338536c3a9b5238313bce565fb861bf8ad3a78f030b3f646b34347f1d215e8ec1789d602d92a971fa3c2e892a09cfa68968f96f206a7535766ed7533497fb051c8036b0aa81c2c802fb7333cc6744ec830e4be56ef1e4874371409486c477cc4ee90092d2919f585ba21f32bc973acaef42b4969746ab2618631b6536ec298b2828abf41e24776bf288ca6a4a8094d63c7ceac44854ba9e4837e44b3a7b269d6ccbb6d1712e9ffa937ec5194a3541e3fc9c685102f9a47faa077fecd688d607996e5b60c1715e617994b842b46574b87086a061488bb2445b357a38934b612c16168e662112756bfd764a4fcc5f7b1634f6f28094464d600046ee03b4540c1049bb3d18f783fba2ac5bd36ecde662d9e08e2a89cb754b090db7175277941e5973d010ae08a4b4c922aa99f47f657a49c3b81fcdb54c905a3010405ed544bdda9942bc857b6d979f796c859e0627a5212543477ed791c2adc95fdfac9d21d19750b8b5ddb95f02d721a9304099ba6b2cd0a40c1a2f9dc1649b2318acc93a5fbc52e3f4900bb44d20a7250142ae5f3b77c0720c77104b74c78eb821bd32e260051c499b5ccdd9d716521163557b5e4526acaf09a2beda04994188a5065b4a975b215171eb288024581cffa37d6289813773b29f1c0ef5587f9c98049f548d2a0c3a5c71c1693b5ec8c64ce0267fdf625485dcc4b5553c5736a0d0623cfe20596f984c014aac0380ba9b58257a993b1be3bd2cb9ac25912b36b2c085443074f093510a46cde5441ee3cc88dc2cd636a5ef77310f91cb21abb149db2541407726582b54b50306cab4b5356492c220c138c64b4ab293680e01c2aeb369bd611064fd8955b790222bd5997dd76bfbe50a2bd039c1f14f0469b623c53195a3b2ff068182d951dab05ffce9a6c8fab42886987b7999043c12870965bd463980aa6b35e13b5bf9c25b64920d7788a291a98ebc30d3785783c27e53ca9ae809004f23706e3cc0b9ac0bd571084100299c932db2933cd91566aaa367371b16069a706be664e86107b33b1cf05360248c808ea250fcacaf9096715478463932a1c632cc9a185eeb08583a9309259c567743995af013216b1086815b851655d0f14fcc43682720acdfc36f35806894177ea2144f6e28837cc887e560874ddcaaf60a3580fcc7a5f1733180b1f1202a08182345370cc5c46cd28a507ad846d1d9415af679d4b22ee560c6c1b2499d5b74aa2758da090e62713343b3a8b14c68e415a3f196c2573c5e828a16cea51443104f9cd899ad03c3b727774b48ae61db98feda4c1e029b57f89d1735381166b70450215af92120ca61a8a38e575abf2cfaa54c613031a9ba60275d23178ba553a3ed7179aac44fb3607e93c1c57c7bad6854533844bf3d6a9b95a966f891612239cf6cc41df1a859afea9c0cec6d2679cd7c71c2cf251dc9759666c871853a1012294022fabdeb2269b430397f337b3f416e528748903ccb8b24c8fa28197244c0ac3a0345e699b247c863e9a58d8caee564224faa36c70ecd281b67eb98908468420b38f3c24da9290ea98b242ca3d8ad2dab1dd8a2f4320658fe6eacabf70d907920593919119cf3745163360f4dff8e56f68440836a072412a30d851ace2c7c6f02d60e7a8420001a63e6c6 +ciphertext = 333ce97c3ce5fa6677ecc0eb829056e8732a4bffb16f97895f2893ef0f27f669208abef07f251184b011f5485050e7dc471ae61c651499318a2634feb720f81edee3a9153a82d840069601e13e8a05e35fa2c18b0fa66745e104319b785c36adcdc4a2dcf03b152bf488fbba844eda7eeb4d289dcc7e926dc0ecd84f651a3f6406929b26223509789a1465817de510542cfd42424b594587c1cea93790e88688a9492146076b87cd9b3d52e772a072657148cd22c6e3f1cb724795d4811330a0469f91b3df0cc389e3e7c6280a20f4a8086f66f1d8f37446060ce019d1781b7900251049389911c0ca210cc2c6741ae7b2ae5ac5bc5905434645116cedd2ec8147ce6021bb953b98d7e7576edb3c9ce8ffd31dfe2aa2bce390e82862def5de968971fc0463666f754317e0e5670d4a573fee33ace8196dc5767be6adc9976ccc07e9a11fb7fe8627cf6b09e07c22da8c829785a3cbe044f8622dd130498ca4aaf6a66e5980c7e4055b6e66666893309345f7e506426152a6ebe811f80e000634c09c356306bc9c4d6d535edf4f72b860d0f52f24acf910ec731743d0856075fe2e0f9432db321d509c122b2bd69b18b62f2d8925cfd35c273c2ff4c0fc184e6c060707d30de3014d8cfb9d291f2d6d31700805da5d41c1c6c3681fb7603ff518b3132fb42f95c23685b6b72652404b1e6dd61ec31d27ade50384541336230c6b2e435ec32fc783972bf5f48666690687642732dc5f7090d81460924e2a7e64c05d189b88d4276bf9c6b51632f197f3f76e5a97571467b83a2d8754ba7fa8e827bb2e7517c30e5ae5c0fe9735897a86ff3359634adf981201f6ea59adc80a63264c776a08b939cc9c5565281adea113cdf3bbb201f5c6754dc2874b9a67e4a68cd2853f2ff5becc9d3a7c43c8d3a917d7829078a76d097f7117f87b7d4054a439c22dd41183d0e74d5e496ec19d66d555b45348ada3ed9d3ae1b3d351921f68bbd1d9fb4c87185614bc7b0bd3a53dc81b9fab161794a9217ca0c5e716214621c2fdfe6ccf9682135a14d52800f7844096dab5c59b0a07623657d505701733e409c8c0ad70a143cbffdfcaab8e8f122942a8197fa3cb2b9e0d4b80d30fbe7a8fff8d49df0f59725db077839398f75961bc5b9ae4f1d03f6aaa4a42b3960b7212b535bfe34360d1809317b3cf268905e41c923752301b0a9660da97cfb14726245e55721637ea2a075c202753e33c97ae9f20aa5ec6ac03202af9bd5700e93b5f94d63a683cbbb8242052549c21b4380f13be398b8d2db55dfd9fb04c21387393183a7f5547dc7af9fdb6cf7fc8b0f1665e57f67d7bb59a06933a15fd7313c38823af5fde333572b15a5f13b2740886a6bce0e942f6dd5b82f4007c224c500b1675a25a5c0732b72391087f2bd04d8c9af2ff040ba18aef056fa13f088b3b564abe07536195fcb800800fe2ff41c79aa0cab8c561cddaf1bad9bb35792f0e61bcb242a3f2e3443f89391fdd0f1951c8b2b615b684abea2be35b1af327620e00a83c +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = de56f7135b3976b8ac08ddd59cbf8d09e98e3438f28c1786c2e8a1d70f9d93cb9eee2e7d0abd3e9a7561af7441e437ec7b6c8c862c5a93e955a05a87b01a63d9e8a335bf6e20cd34615ebf32dd78860a9afe939f4b9dc2a395b2b7dfd5485e64e37adc2a3dcd27ef642057db0d068e36a7ea979be7be984a418a3cc5c6b62bcddd6dca565707ef09cfe5edfb88a5b6751eaa525dea4b0be4e430388e0cfb445da3347eaa375b86858f19c81b73a4bf88c2f807638e8d8f78535b9fc6c6bc1ce403ee6f0b784f9b2fa30e5c6c1a3fc2063bc558a7b2636c76d6cdcb77e6c5518b3b31e9f0a24bfbfff3ab930bd4b3386f671bd7655989c5185d5d393631e9acef8dedad333379a63efbcc636cffb4fa05b84a375559079c5909651e58eda97bd1a87ebefc7bc407db7d9f94b819a468d443a7aa8c9b485ef66885f6870f336c2be160a4ce5e4ec57fc9e5335c87a72a73463e6373e9f1a7ddca0a6d6154199c4f06c244a7c568bc5d8244914909fbd345db51d3c474e77a3b1d53160570c886e32434aede9fc8961b955899e0102c62ae1a75489e75cdd666ab85478ebb6134afde9154441f1383b1fe471386e4dadc823f1848fa478b204ded3f745c648cf16c84edfd3b3195483f25fea5313cb458273ffeb55969add4cd534ec1369b0c68a87375ef7423d37118c6f98c538dab9c1ec649ff33d1a03a650dcdc138e79d1509d89a639737e840a7dc720b173bb329a34cf65418495e4eff805a59ea4c96b47d55f72595dca8eb3944399f9d24e57fa46b77fd891525461113766eddf5ee2cfe745e98c3ebf53a2b8a566cacb81b65a1c9473c6c6da9743d780685cf83cebb54ecdfdc9fbb2da9ce2943759c4d08c57a0e74bb0e1888e957f3169437afce9aec2afa46d8eae4645de32bb18f45f7f4dcb8222adf7be74f3f5a8cab16d9bf2e64668e9fb868f32c0d8a855c9e6b54439a67aaffd9701967bc47af74d1d6ac1d45cee7c54cf49669e89a44ffd7b73b3ae2327a85bf5938e6975b94acd3ef4aed824ccde033cb175a3356c8a998e4c69d94630a8966060cea79dcb5c27fa54efafe99d5ae331bc64e7d8fae45c515af544843ca59c3c122947bc376dda7357ac0e33f55485e79eb3118de4c42ec5c56653e0edea4e92d5fe67e823098ad8d9844a25b92248d63aa2d40c60dcc0ccfb25b493e4cf69de95c87b03b773a796d1304f114847727345888fbd6d935eaeeef4d04ef92cb55fa3a38a0a56ec8b4f9cd9f87b09ccdca98f6fe5027595c2479308e8865777a357dd4fe3b5b587452658f63aaf6881555f6d69eacadb74520f3627d7395ec7b71dc3c6e8414985d69ea05c88b6455870c48b12c576d7c3f8b88795296cd51cb6f93b0fb4dc61ab8ad34cfb114a4c7e44ab4667d4b1948c84cf8bab4f4b19370afe997d9bd8e448afeff376024f5ca54dc8ec0a7fb97fd57acf5a6b0e3f869fab3e1797ee267eb172da07618fc4ba6799c27b080bd73092a7a2f7aa110635cb959d0e487a6664b318f54956039c57cf5d9ede489faabac96dbe1f58c87708a8ed44d8a5277d1bfb8507d67415fe64e7e5ed81bdefc2103da2b0df910d6d4f02c4064e348b4f98f6be65d8775deb147b4694b12c461130f3126f8f71673e4643b2147ded2a7270ab360f6303dc05b03a314bb776c488318686069c3a4c91cc62435e829a6a8621ef5cf838311a4278d7f453ea5484d32f94c2e9628f5532ff93771dae106c8ac9cc80ad07d306b1da78463a08226657680e5acaba6819543cd96194aa5973d4f7b8682b13a07e7a5194c91ec95a2d671a2627710a4c78aa107b3707942d0c78f3eb2b3a58b7833fcb0fd7785e349a2f0027aff079b62a68e3f425122f7bc0a0b4c053a6696f90a67088f139b2a39f542d6439091e4c1a0824734d8b6e5e6483f48ca738c39a5bc2016c0746cfa9c1889297f5377d614acff2833ced20abed0aa6c7024221b73d53610575c6d91a262a5e834abb63cf74207437b31b1e989ecd7416b2c4e7bf807b5f8973006877e204a42774c93a1b394e885cf727b7fd286def2b4c8d5684460219c31b1b225aa08ac2ee1da3922e935e981b3b5e2c3d044a784bc965a580d3052ac48000ef6183b94b0a870e65207ba8029c0bd34a10443e5706792207fe2224da533d307c3e3077e6e1cbad064b0399abc6f445b651864f18b42e1a518fea187bdd08072e47588527c3b9a5eb244ae9e910f93c92b69faa7250bcf38e68e9c3a2b2b733b18032f37673907097a4cd65a9b396db4859312d59113e07b39746c52126ea697a69929b1b625b5ae1b809ce9a811d13cca70971ae8bd6ad223206691af6897f136cb451699e0a19739d52d60cc89dfd654a320a79b2c7cd55116843239d6847b8bdc1efa29cdc0a979f0e3a8f225a16fcb7996fc8ca3e79fab55b93dc2a395117426a17af4d404151814cec80e856b777eb35085f1ad14285078803c2d76ac1d25c3f8609aeeec4adbcb64136516a2077cff4c13748c5d1fe6386782688d944e0027a2f8c9af77b79352ea5523767cbde4577877af1f8017e4db244e833e99dabd0fc70824bc3c50a38275040446a5c74406873ba0b5bfc2570a406570b424727379e5c1c39ec194a29a8aa249844bea2a078c1c0f25a400d6bada80731a00b87bb5a19325b4e79b78af0bbb2c52c3db38ae552ca972c3927291145438115a952bf2a85e78f6141e1cae8516b056e614b7015017e71d54268ab9919b7eba09d196768d99651d60a334fc443c8ccd9064a420263a68531f0e86cdc48776a3d44b4726916273a0d3002de095526257bc5e6246dcc10814d1907885207a53241a184ab7e40d87148a336a33262a4bb0826b417abcdf957f68737adee682194115348ac58814661765bb321254a874c4a3c6745cf984528c2b9726ac35441015233219e169d0ea761425c06513720881b330185b48bc271b275dc024419d8761eb23801eb704f6326f162656713acc2915a1a6f877a583c8372cc391ebcf2cb22873c5bd22c58c80640cce759b2c09b368ab4ab504c613493479b7725a18811837213f9237734577af09c4be0b3fe07ab78b712b0683060be76920cc5fc56993e56c7b46a543ad675b2d13357c008911320e0d292268768b8370c66ce757af191bb703cb5732113acb8f02618eac98693224abccea04e7b3157c03b27a3cc4f0b880dc4877ac35077c1c2d5584b971261d2c4bb767c75907827ad7370f4074721445e155a3a1624cb4aca373de6947f148ca7e2b3c93605e706eddd992de62eff56f6b49a156d065d85eaf0aa21ca229a20fa4e1372a410ab1c4ab6e7eb28f7e7a15a005f92400ce33db073d49b53871594a88fc45e0f94207b5f0f2dc +ciphertext = cd3583987c6395ecdc3ef180fcfb4262be1bf772a99b337df5eb36eff544d69276d7b4608b69022bd044fce397bea7d55a0a37807b53455ac6fdea5f0435dc71e096568cb19afa1992770c96f34f9f2eb0ce27e5e3200a47bf36336a1104f9de0d11706098fd63bb97123e29bbc4661a4f6237378e23272315a95b587ca6c289dfe0391fe12a18a257e3aea5a362dc0e60875d65ba9524999a010c23d2cd094744cf538e461cf77ee3ad166e54c8f7d2a746998d08d25ee34d5c8127c1f2f13aedc7e1cf874c087e123d9595a4ca40a482fb0696871438f0d3b07058131e532aab8041e95a42cc35b3a5937c59bec36be6b7b7773f60af694ebab7104434c23cc78e122724a912d9921b4aa0b1a44755161264b6f9cec639d4a7059d0d08ad9d1e2c1cfa9f0689dce97c04f070712bc54e19e9c053710f9ab5777fbefca8dd81761f93883f861cf5ab169fd701a39b9ee3d3ae5d1f961ff5b07ba15022f51deb1897983f2bb94050e099b573c2268e788e406dcc1e666734e1c74305bffc3c9a6f6b4ee4726694d5ecf499dc6059a17482b672df791ab1495e3be6a1cf0d7cb6a0c88250c19937f5233cbe4c2680f31c6b440c253fcbaf8de742c2d8af3f3734b0e8c433a7db21b105bdcf8c5717c2dfc8db54512492b0eaf284b1a6b33726d055d5e222ded00da6f81bdc30b728226d0aa46b64da409e2f884c1972fd4d123ee016b9fcbd7abbe92fe028d8b36ed4e9321c8baf833c0dca79d4ba16172adb1225d3db8f597bfa40bf58854641743b40dc28e8de9676f815eb5244499cf8b4a15d83b9f864ac4e8b1c0fbb684c3c2056abad006ec44b0c18ab5366cccc3f4871ebc15cb94d61ab91751d8a559b8dacea2b66409095460b7b352625782ac17c976936d75995d74c6f89318176951474c07b19d31b9bcf63ca772af3f923528839abd1929ca63fc6cf5d67435c34675d4ee6caf474585c65654c3d79c4e6ea59a42e2825c229a364a29ee84eb78f63846a7ff08b21fe077eac0559b91c91452e15147ed5f7109c59b510856f11a63f355923562aa0434b2e16d6067dfcdd619dbb80a68be5790c195e0b9d3b9e9ee13273290fab34969bce02c5eef6867b0fee382a7159b4c927bf56d29fd0d849831212386a786c2a9bc086895db111c7a3797a40c9236f425454380fc5a1f96e2df779f05446d123cdffe072aeb9e64f87f3f7111470061d87ddd0b8e4dfbf1aab0604e90da29ea0659fefdf17748425b2730b8046af71f948af2ca5363eb63d2f0399a22f8d3c01414c1291a5dce3cd654206ade8758077275458c95003452c1078cc787c6a4eeef475b78bccb0419c0716938a1ba1545cc87dfab4b18c253d8b7408093e2305359359f80bea22a69709a89f4b1a70d62b529d14ebe929a64132a1b53c7b6cffe3214eadfd77d385113fe3ca4a743cda6af120b25009b5bdecde4d956beb970b8ec1e2c5b7647dd5bd099f3f843c0aafb2d00e26b1bb368a82afbad3819bb34ab810ab55222ede8f28486a7d +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 84e7d70ef8d107976bfd2bddb6cc33f3c981798e7d856db63edde2311638aa43b253b7d5bc994931bab38b6fc5d1dba793b8437be6d0a97f5d36aa898e353d6b955b80f8578f855bcfee94ce2c6e4d6e79adf8e76e345790bf4b6e6dc395b674a7a8a4c72550f84ad9d24582fa5ef56914f8a4e76972b77a53e852ff47e8a54db67d75f1ca699e5a8c434dc47a3813f129bb76bcb4c8110f8938fc94f184ea20bf6eca5f52e259b8f9176bbad8763cb63da7ff95b56dcde1479be8d6b9e3c49ab77845c21c8f3f88741759461e339f76376ab81b4f07e7bf0db861a4ac5b25ed9d4144ac900b43cfcd7f1edfcc4f7c976fbdbaa4d8637bcaa70946391109981e978ca023313c3dd093df6ccd8f3ebbaa85b8cae680636d0be656f01769556bd58af78260bddd10a38b0a3be27a773cac4d6c1d53e0a098f889759f20b44aecf68dd254e6d959ecb523a1b0bea1ed87b28e5589f40591336d3e229be85e4f6f4913eaf80af2b11cb0f37c4557f94b2f158341afef9519e128c5616f64e05d57f53f25dff345d81d33ef5c3d8a526b9507bd3e0b5c6a88394f0c9c6e7c2b475c85d8a3a8b1e0d571d1c364784cc8a7ca7ae7cfb24366a0d2865658e4fa8495b24a16c9a9d8b1ea77332b1d58dc39fec02c4723fa7204e93ef0cf4f10c4877425975cbb61430f6a2aa649fc6c77e8d7fdd3e5b0d9e9495b0fc252cefb7ac5ef6a9853c0de51a4873cac5ed2dc6f676496a8b38c8038e4c6d988880a7bf774875a5fe69693d9726af64a51d77a03f5f3bad8b2a6dbcea137a052de9e81059d07437e38db7891956c5b2c8abe38fb5b0fa5530c56a7b4b46daab256588b043443663e3a3ad94a2d7aca4bb7d72cc9f59e2676a5c86216bf4faa159bc18bce0555ec6adf699a056ed3f6a7f2bc76770eecb06cb72dc53d7ea6bafee89797b57445f3ae1136f544af882b863cdb455d5fad3eba56946dd6ed798a76bdbc4ca8ffa102d5e8225af0923eeec5df51cc0bd9aa2598065a79b8c6ea56f9f5031a579ac5bdeffea6e1be3820ee80dc0d8f19e775e14dd52b6f4b92de550fe536537de50ccaaf228acb8fe471d2c8b4b27bb57e6fae9ad9ce16adb72ed98b8b6e9cfdd3a17ada37cc455d7774dea337d88e9c33d438eb65dc9a27c68d27088b1f2a5fc586bb0993753f6fa67bc3886058f74bcf67a95b42aaac3e61cf69942ea7940eacd45db92899a2c0ccc4704bf4376da39c69d1e3b6bb146c588dd3431c4a5bead8aa2aed4f8fecdd047837527d7cc25ac359a5fabe7384f839b42d9c9982dc66a21c7fb5cb7316748424ef5005d389bcd56fc4a8d80f88cd75ec974ca9ce9f2ba995c5deca85cf0a7effcbdc492ccc6d076fa59f8cc0ff3355f184f4abb6c774a377b82ce2b9a8ff60777926cadb871ef3434cae909f6e902a5e644de9e3d6f088aebdde0fe96768baf91656d903c4f1ca88163b8dca14e823bb6ee525583816cdfafccbcfe63dcbedb93c46a14fc7f114194cd084c209afe925e7c55ed8d7ee7cda8ddb71c4ab3bd5836b80ae60009dabd1e5498e0d5718548325bd339ed7eac4a75c8105f3dfe9fb64e3676b33775859de068c3cc747bc004da30cecab9c64fffcf8f6c0c8122855031d7bb0ca735042bb43b8ec6ee13061046acab9b873b13519c22678ace2b59f92aa4e8269844b1de5e3426d66c0451a8d78cc07e719033a536c2bf4c7397c64c6478be5f42a06413b8b44111ad9742b8b020711446d63cdd64490c0917557b884eb429b05dbc0df7acec032adbba55d3e104f7bf391cba28b903a07712a8da3a1a92f5682cd650a628573844032a307704fe77af738696e974181a85c5ca1c14f7546f8713701115883480be2cc686625a37b62292367b5e1546f4189592639cda4cc20974c6a87c0377d15b8ec5c84b70233b64800b79c62e536553b43263532c6bc2b726970cc58bb20f0c0bd35b317d9b66b327bbeb5175d9611985ad799ebb19ad0587aeb856c288464d983256649827de9af0fc79afa1aa5817c06d3447a25ab3eb8248167ba60a4462ed47c007107b1eecb630ac4707b837f24d26da46bcda77c4b6ed5b4118b79294744788b9a9c21b168565d9398b41edb91517493f5fb48ae5cc04fb95bb13a8fcdb8615262408ae25c2985189ba8ab99643624b70557a984011474586c357f1c7551f0bb069336fe85bb903040f48c4a111113507055f2716d37ea6a6ffa48f40584914c4738397430d65756f298aad345671077da8a4173728364a493bdca944b1879b114166cc3b8293937221257c2e78f8f1c7794eccbf0368ce34921a2ebb01e32a92255a676e77c39564b575aa5d1f9c7d1388226d636f4f12c5636b2e2f712c59ca583a811bdfa56448c013cc820f21a36c3351aec3c2c6f01243ff47bf17181ecac752108c43a97729c6b9472270fcef5a7c08665f7aa9faa55b152163e8446c1bee5082192b5eceab269ec13e7879da3768bbedc0a104c5e9496c63e9507881a4c8e758211076653f369e58b59bd7cae5b9a64772c2a84329e43f492fecabbb56514cbe70970f361e6d3c6595065f6cc668c64bae7d587fa8bbad129136d5c9b6f757a51e653d2754aa0e35307845a55b80086d5a0e86302d306b9ee1550419b495d424f701a098220897fc47333d5a1e994c8584a00d79804e4989a1cf02dcf9a0ac2ac52be1090bb149778235ff6091075a5360ce095cb705c81e3be126984f51aa471f90ff98c21d3989fd936502a8a2b38c4a2320a618df751c7099d1063495a6a5936c744a094cc1ff1b04ba8b56b0464e852bbe06176034cbf5239cd2c687facc2cd37329adbec3a77b4842aec40be902e8af72fa5805345668408cc7b6073097391921e765e4d76025fd5c78e246da268a4db21446f2cc3273861d2081daacc2cc775631927b709dc1fa8993b1e92619590c08940342219682af351495b2e0aac74786c897fab196abb609e216997c2c7b283bfefca4b1f2b1b6e98991bb32424321ab7d61e4d13c44dc93295a75f6145bf2d4b8f1a03109bd7038ef4b16fc15f44ca6ea3411b68400eb20c46c11cbb98201d705a6cf4f4b792aaae80d97a6ab830576aa651142793fa7da0b8bedd877217d54897375ec285849a79268babace85176842c601ef8c740a21c2c5321436a21cb968ecb5410e811912cb0962f713322021516535907914b86e9411d27cf164b580528768ad37b57300dc201557bb0a142d9416ed7afef52d284175dec18f24979ef5ba8eddf7caa3880aec7b42a147e75f0dd62b3d066f161d27dc34e1a2f4b98b14a2b221d7eae26a593bfe432487d9994cb480656d8128601c28b1def8d393a0db283229f7c7383152a814e7cefe8ef9d9768c473 +ciphertext = a611a3c02dd6d3201596fc2e819f631c7c468d7437c5cb5e1dd20d69079b6397e4735b54ad9f14ce7764e1f7665ee1027423f129ce329d4f89d967b7e9a1f1851a86b9241695db93f77276c8c13e115603394fdce1e29768218f10b051481ba1477b0f50424462f08232899c6d0da4d1760e9baa2523a59ed4bbaa1d56ba1610174e99c81d56aeb8f9811a88cbca115e98b4f16fb0593ab5ac3b86f2c0c1b66d8be9d2774b66c0c2f0f9cc2df6ee453d97f0256ca73338643438b03e3c59ed591646afad1424bee637a50eca224adc62d447c64c3b18a55aa01b938d66ab90099a76a48f201cc66e067d4db6f5b4f58568eefbaa68fea67ad5eb8c253bf4a1c30ce0c1993bf097f9a9b5d04a92fbfe666e326b92ce22de4f11d3a87024c315e94e4c9aa404cd5e4d2ec1d2c7d95657ec50e15ecf10801329ab243f1dc95af92518fb4162656f1aaac8bc8bb8832a6755e29d7ff78fe1e4b93578fae62c4e6b2d896200f7523427f55d6305b3eeb5285a47db7c5e4f628d29d2ad39af473167625cd848efe6dc72e45d4b531b4a0af4dea4206a6087d7a494f7e7e27ea24b5650fe06aefd954da1cfb8691c10957ebfcff92a7683ea584b112bec9e0a67f831b305e72b7f3e58f790988e96ff9fdad1c6b2b5f5f03084fd7a7d6895f8e7bea32a344117dc9be191e89abcc8888b72f091c0a742af35be4af72a657e93df0b48bcd602e3a7141d962d692a3ee90b33a625b83945356b13ae531a5d43f30afa5901bf791f22650f3f2faba02817dbded8b9712b7641372d4af4ef2916b8cdc05bb5800c3289388e2fdbf07f2fdb95b154a2e1cc6998ece7a514bedbd489ee21cc1df314b4fbc452c1378bafafa083ef00842e2dd585668eef7b00e895f013edc2611ad882e76f9b85074be087bb9f8b45990d1a65053eb561a34c8cef2b61d017d50055ac478e82c6fc881e64cef53b0598b0e354c2042325d5a55fa7d592bf8bd8f01fdb18b391a069d3eacc373765859468700234138d0cbaa4cf64862ea30b66afc2ca9effebb733e007fdd6fdeb483d5d6e3523d32092fc0fbf94ffd7918529e192603a609ef632202c37f49e34ccacef9c1be4781dca2208097cdef7365025141ef427b789fa4da96a07d58c2a22e158de7b4394c38e17d98b1e363579560199088bf6bda0e799132ca391849ce59c0742282d20e2ad70df32d8484dccb5247322514f6ab1588723450f4245920c6551088f0a2d204b6806f054c185501b031b0d1885c33ca17ce9124edaca319c16aeb066295b66b86b70ea7762cf502a0b6d785f645a3283e2f9c97fcd54ec07ace7ca8ba0fefc013c201aa18a3c36ea8592984783e128b076d5b99a237cf99bd449d2b92eb66c1c2503ff190ec0eb172f6d6274008c5cef30b5b08a1b295d437b357fb2febc2bc7a480ce7b22fd7af4d2805d786f3502d743fec304d7ccd0c42d25a7062049cb778f4492ef4ad90a97ec1c2e14ad79248c325e297101e73d65960aa0085f688d41cfa95e31744e5e6483 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 483e8b2cc6a9d8bc6ebe8ce249ade7c14fe4325b61a2a8541fb783c448c3a32ced82ba7907bd9e361faf8e0dd0706a3d3a1f81f13e5044c9c4f93bdad72c60e18637577b942a54f589cbb466ac344438750b86cc86b97d16339a9ebd365e6696b193d41543b031d9f20f8fbfb8acf1a6bda0d41ee09568b1c01bfb878c9284375949c88395fe41acce88ef86d7cc8e51bae654a7b7bfd785b44bbbb5c5a68ca5f96bfe5abf179cb83a58aee528f02daee9c90d81beb38caf08f05eb5e812fe3be959ef432be27793f27bf9b69113e145d6a1452e3fb5fec89c38c00d8eabf075c4415586beff8b946380c948b94d8adc3a79310094f230663f4eda9174dc7214884e0f65fa51de6dfd0a5ddfa7920b0aa50437bfc735a546f5b0f4cbf2e174b061bc80e924f8547576b72d5490ca3934c9b15fcb69612ae6399744799ddb2cba3d5243a0e286fbe2f87035295f004eb56be37ddd7e915434c4af6472c1e5c51a5d6e6927d3c49c715c5db360a5c2fcdb79f59c7ade27380fa9d5eb7aa6f514fc6b3fbae657c699eb85a53395c13d3e87e8980023ef96969bf45b3f574a40ee8e32696d3a25fec31816d78159e4775350b89aefa8fed34c9cb155879668a5dad5a5d803abc0cc58bdfd4d8fc2ffbf7d4af972aa66b58844c058e50c0b8c89aca3be3f69474875c01da94d2b9ea3687ab9547ea59731b73a8849ac7b7c4b946e7db8b87c56b81b770255d3ba87485ba3655f6697715ede89fc84925b87c008c3cc13c7b9447d820cfa33aec64133d725b4f2b72e9d9bdb5ceffe7e131e32e76e5076edb26c07ef92ae59331da09517f14716a3406bf503ca5f29d4479914cd10b3457ab6fa6bc7ebd08736e25e9e6907dab8c8439b4441bbab5d0a1ebc6737ca742747ca69fe5ed734a8baeb7755da9e4e88e064f2be9f40e285865d63de718c6f1b8e6153dcf7414446bbb8e29a27e6171aa60bed86ad09951c2b9aa2744e0153cbd4ec9d1736908cd78e7cd75d0333434715c517633ee76d3f79a3d83724a596069f337dc071b6bab955844a18ea8a6d96f86d59b9738d819ca3b6588d5f578059df8d2d17e0b2cbfe307a5f9e18533713c41e27fa9a6e4a98dddac0a83a265f6c399cc9fa9b74cc4774830c8e764f31b14f74c90c526dea7fe4efd3699ee4e7b9dd3bddfae6aae39649b75468ebb578f5a215c3ba38fa27cd36e5d5785c07c62956b612fc37fb73a7c6ebb506b998d54979ff29781ddd9ccb64993299745b34b6d7f897c1ed5e1a6966e6757dbfef9af2eacbbb87d1dbc39294db584c7c3a795ee12258951d98e45cf73405ae7adb8cc4d11788225557a83b652fa5d53e95d7094bfa8c0dce77e7bbbe93f33ece88810ff8457fc05e646b90a5ffe92440d174d92a058d69c96869d8a83377a2db9fc2d668607dec3cbefc6242b49a9da97c1adfd6782fc8d309cb898593b08b5d8138bf30dec5918e614f764acb49fd7ffbf05a95f70d0ce22a9f9cf7b53d4113ec92944972b8bc9a9c494ab384996647e177a87b2dec45c747660aa4a48d88a5f7919ca46dad338576463a1c24f5a6c4409e2ba82188f7ae83bed4e6c80ac5f8a6bbc1ad58c868b995d907fd77e84173c9ca80b3b92647a1dbec6bb883a4b2160e4dcc84c89c6adbd955cc055933d3238e325fa826acef899a555873a5b9c189117844202c65e40eaba07d9fa94d421bafe8f3a5e3346b6b93cef8b75628e4418e2885660b1d3df32d1bd50cc50757c5227928b32e0c567872e66bcb58128b15c8696710a7b33bfda469128996f6979f896b93d22910383c90d0d877a56b4b7c77c53c99128719c2995497dd36877276a25fa8b74a4947e223215a314a075585da457daaf17c41711363950ef9013a8ad95f9e07635546485a3568aa502d608321061a6999057e705c46b6691183874fa9ea38bc392f718c99ddbba59a1865a135207a00058a408b6c61772ce777456c92b28a51ce823f7524a26639ac64aa49d6903cc2b2b5b60b59643bc950230362caba6abb5ba4f6964331b1f62099cf385be3f5b43c2b8402006bb3386f5a16354e45118f0b759c3363ab4069ec2c4c15cac4e07a24fab0c682548337d157e6ba213c7801dc5a0a7045a442b4939d611469746e9da665e2e910b51c56b77a035900b25490216c0bb53e04173b3bc454a7a17d77283ee278e7d30496301480c8c1af6b3e1dca213b174f968c8a45a3ba2044bddb1492bef2af610b4ed2481ae0823df53282ba7750fbc7a764db58e3789ccaea778083c27ed101e3c75be5486249f9818a08047f97447773c7dec3ba7c59aecb5778a09cb7f1182b2e0a01c182a1bd13ab7d72af97f96f564607a9a970b35a6adff275c35c22c2444ad6e997d821c065ea49080900e766c0079b7acae7bc7cb3b31301656fd39591e0bfec2c33f05a0dd633bba463781f1c519d902342bc12bd16c1ac8305ea9769e489073297784ee45f99b248670749c728385f601fc84c1ffb298bcc447537785226bb5de712b7bdd04a0ce39226919105f06ecf6bcddb0cb5ec3b5505b5a169b05480b2587ce4934d2b232a44a6683920a81a6038c59497c9b47faa62f4f2120b15c360616e6573bcc5a23a88887b50d1a7dbaa429bb00a9f87b63829b1b641922425016c979db571ba0f1a139267bb362c68f47689715cad6636402049c2b5c616c321cba6e43c1c1a48a0e141cf3a71c0099bd183a5c0e59bca9a2fb637c1b534cb6687493eac495acc7c5fcc4898a52e44094fb1b7014a15c88e11a9e7244ee53c2d5b16708c233ed37859268501630a296d63c094f563f0e559c59453abf05a93722aed5ac0c3cc6a0be7890f8c3191677c21f70c8153ced3e2bd96a4bfdce27f86b809d8ab04dfaa837fe030f420b845d23c78cc82a2d7c440897c91c3b726b4622445899de72bfa263b93c3cceaa8500b4b0c240046387b25bd98b5901aa670180a2a8b27de424f4d804a68dca2e044430d701b67e9b4af33c60fc54bb3a94a8b8604fa5882a401a5647b8dfbb20878e4b4094136bd4b5bc14288463c2e87f0cdf6d9497fdb5f42f26d2f9ca2e048a757a59b440c2c5642232e714d11fba959ab9ac52126bf689864ac98cbd1a633baa3ecf75c09c4c6878994cdcb3e882798ea02aeaf39915dcbcebfe2ba14e620f53b3d83ab58bbf99509033db99b0acbac29fb4674c95cb94982ac398c2771a8ab6da1ce9b0771e3d5c2e7655b4bb99ebbb57adbc7a540f228114639b811c5c1d3b614daf84266bc4c312fa43c4109dafde79000ab397537e68ccf14e8b7e57090d8f648529dc461ca3950288879e88116acaf57b4a2b6d75eac6c76ced1b0a025b40a55440712ad8424672e761e9bc400d63812006f +ciphertext = 06cbb7fcb9fd91bf6cbf7f1c8a47511fbe998d1e0c6c20ec92ba6c6d86e71a22e7233c44494ffaf7c9f1075222019d9a57dfd3f9754905a5ebdaae12d2e2b16b537eb00ab967016539ef46700d15ea21fccb92b17b7edc5c87e58ec518f167acb81ad4b96e4e4d51e605b3ae45fa0d6816c9c6f103bee9687ff098f1543fef241b80d1f6ba194fcb9f21ab1f5a90bf7053bafd8fef1104ec367de4525c6f60b01180b9166dfb66f192ded9707cf59c16761ec1970eac7b031821bab340f23758daeb9e36ee899ceed7cf2c42017f0f808743a6f7b97fa7bcdd5a35a72402da6eeb5d10e4a1ebc6eb5489c0bad8d529fcb47f4c6b4254ee64d31ebb149c975d5e14b7ef9ee3fc64bde6dc0019585e66f19a99ffd1db55bc58a3aa88ef7a575f2383f7e781f8b41d36bcea14d03fa9bb65a243dec37efb3fc19622340ab99a1183fd55eedd7c4d12762b7d5de711dc182b9281a5bb75cca2a5d179b2213fd7c940991a30b88297f0a9d307ad443363bf776599ea76bd25ffe9929cdf7a9e148f23e51ee1597e63493d54c4d9487cdb8f524b5004711af2276cfb8377cff0787c615d38536167b8431837492069b2667cc311d3c1be3381931e702822c04ae2041cd3a9e3a96527efc1f427d60aba9b4d0327537346bd853bc6e9486013ba744e922931490b841aa8bb1396f05a11bc1346c86164486add3be92c27b76f1e9edd2ca9150b1ebf682097341fdc85095dbaa32b7201af8b2672d7ac76c5d2eceb2b14eb911c48571a7fbdb6246300701122374e761a0ef1d6392498ff8bc3f82f77a555820e79d4d99e9954770f0259b54f01757bf9f19ea655b2baf3f4edde69613cfcc1cdc3c5997ffe893cb2c65fc70319579495c071ee08b18bffb1066b3202bf75313e45894f328a56a33299f3b9bdd413cf5d8e7c299ee920ea2b26d5e0d44f994f76ed0554ac767427d73ad1604236634a1d294b1f246c544a2aca45b0c35a7cf2f8b66390f1ceef3209f0562c39a5f340c85eb267ca91f2a8786d0bdad4968faf8165c10e2cd52f8455fb7d118dc1f75517a7ee655ef7069840b8ae9a03b788bee0ea758cbad93806896028dd050e6f1a7e62871e7f4b69e5beea271682dd667f01106dfe97a423a4ddbe0efa184985c25a20fafaa0cdecf4c940c43d4b53a10508e13cd703258ae06072a88a4ec02913b6f3bf7a66fd7f207dcb8ba2d988a547fc3d1d267746d0ff35c4975c3814e53041d2937a2a19ca7a639792c132a64b035bc6273223bbffa5cc5b65878f47ab6b56943a2a2ef39918b2874594f803dd5f4cb5228b41ac59ff34dd50890d0e99f24891d4fc04a6f30a4311f958fa8740010f74258e87727f855a4cc466f5d12aeae18a9073071e0c4be2fc0cd130431fd753630de8d347f6949b79c046c0b90e4e636656978f3e5852bbf6044d9964747de482b448dafd3f7b8e169cbd1a56eb7a803e1bf06dc11bf65a0adef9eb33eb2aef852ffbf03afb82459abd087a9f260d776de5f735a311318f41c5273481 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = cd28aa8c84e42a15d8c2534d5adc642858d6bb2c653bb9783adc640e9945c253af86f57c19c4fc6697ac86debfa46b5231559c11f5a0daabfbf43c40001d4e6d0db81237343e15a41eae90cf8940b74ea4b42b72d9cc8bac78e369ecd7d80aa62f135b0f956355a4a68e575f34393c42bccea68a7a64cf69a69fe557299ff63b9f026e36906d84132c8b56984f4d26f6d7436dae2596e2bf4a8666f375bd66d2483a1b354fff9766845480ff396f6bdd89b724b0f15a34c2288deb05a84199d9803cbfe2f3c63d4dd56f358fab798f4e385eb0e35ed0c38ade7382788af503eee7ad0bc6cc0a4746aaad23345f10074b21a7dc18eacc898472767bf31357fdd3348c82f69b7da6ecd35a8c61984e7dbfdae648ff04a977a72b532a1395707cbb7cd595e0ead202498058e59f23edc340c438851674e3bbee0d97ffda3baa7f87b67f449e6bb461befecd771475d5b59facd3d181599ddac8ce68ecfde584eb225fffde6efb39d9633aebf02af3941f3f3c9336f97cb58086d3f8308ffc4e5db94c4fe53f03dc92fd7a811a9d9e07b7667846806b6f717eae2a3f3156b668f93ea9f79ab7949cb363dcc8d25e349db4b5ed1f66e7f5af991d5c96cda4d47648aefbd1fcfee13948b407fcbe199bc2cdba40257745d765c6a0766013fe9df41a770e96cc95d3cbc70549f7f6e914a73dc81d62f2a3a377fcf6ded59e0cc85b11a74f43d3f37c7561cc7d46c0e660b5cbdba0634ff3cfe1438a9b9c9d6f242bd4b2439f29a3cf0ae9e28d683f0c3cf6ca15d978dce7997fb1664a751458c0731d6fe0ad7d981d5188278269bd481018782f46ed08555fe5799a0654398285b378f7a9f143ce20673184c75e8b76f085899813aeffb8b6d486afeb2f7b3feab95cb7aa327d8b9dbcf7c7257ae3137db731e33f8f555cf4f8b7a1e6aabb4c83d2938b7c2ebeb1c3b3cb3bc08bf52fc1f5715fa89ef9ffd5d85862f7afcf420592aa245690adb8dcbb90d0b654c7d8fc751eb6c4ffe9f46c352bad34c40adba4fc47dabcf04b45e4987f7b977e4359a66466f6c4cc2b83bf6b87785367c81e6489d6c5feb975e41c4bbb2a3d8fda92012ec5242f7a438374da6d32f62c41b184f2584ab5880475cdda8b7f4844e65fdc25d97236bdacf82de2adab59298bc8015faaf28d7e8015695eafe8484ebad318ba9bef7c307afe42d8d512534963c7db9d0b7f5af7d326c33e7d53f49e8c9ce386947c167c8f33c88957f44989c45b4858213f49fa6ae36744e53cd94f1ad467b5043f7ed77f58d34491deb5f9f3f3f4ffe4611e921b8a9f94f4e9bb85ad965443e7f4a73534457be43ee5f677a63a773886fb79a6d0fa0b9cd328ae4c05d8c1d9845eda77c30bb7c39c618afb402cd9b0170dda2cc6ee8cee3a199f5ca22fa1434d9b8dc637a374d93cd76926ae94aeeaf1c627d9255ba2de43d693b888a7cfc6f0c39fa5b4c7fcfbcc198b3254cdabc5ab5edfb438ed3a82b72b5f54a39d21c3787958dc4a648f182a94ea566c598ba4cf697141bfdfdf4cabbc64db80e8664216a6e98d553899964a8bf39e0dc68f8fd7076efcd2a58b9c49bc0acb90283b506dae96f7855ed69ab21f059a11fa3fc477dd03a20a0337040adab8bd449e0beaa93b07512485ba33f291af1a44540bd04af4a3dd2a09f6454d7304d0944674a580551061ba5f88217aa57c10640dc1a97396f138c1a32cf40b0bd9286f88c4087f9084a9012d248c63efec072d77ab0e736719a23a913b7b8b62aaa5bb40be97cbbc1c29edb283c776aeb9b032e2c2691aec9ce89617b84b09712b40e2b713e566c714e0baa75957d6ba5062ba76471357252b72ac66ba97e10921ca2313a232a6ba908dea13645b5617938381fbcd748a11f61cbcb615c458d056f0d55a449c4f544c6673322ef106010cf139d1c586aed5a5dc210fff7a60f3138c34a4244398b692c567ade5beb55c1edcfcbd93183e1ed0c2aff5bdab67b51e39a58bdb8388d67cc1ec0d7313b7ec8a56cf3c9b73214c4ada14592794749b6834e9b81a2ba47de929e9ac7856b56549f40f38f0784ba0cdfc195952d3155222bceaba0e3c233ff7e19a65822437217a42721f9c060ac2cbb9c4e6bfa9fc3014d8add7b4bdf78291423511f9874a07e06a82b6369fe349e08333c7f56b7b7b808a0b4e888a95799a2df4873944cc43eb958b1508c66e571268e79a69178793e7a4d430507e1259d01c86f999c16772cfb7b4b330114ff55a51ee5407bce95a6d27875a91773420c24f8734b3023e9db777819ca2163c431de46f22f38398d46ee352b815b6b07e1a242b01a4230b59ea8c7b0c3c3dbe2b7c77b4c860660daa04c452e391c710722c67bc0632c072fc1e5296a2e70932d4d38efbb96bd636bb41260a7bf27cf5e71ce3708e6884cf0b8584adc3cd3b5c5ee1003a13731704472a203c8f9b49534309bf2b60cc3e2448e02b5a46d889ffd78fbe722a709a2d5b5c8a7d805bcff44052c553cb990ad016079bd87db7573eb1d431d1e549edc8ab56a0bf52999f32555e8ef2b03182bd8d812cca638055a73b548c8b432a2a7d4a6a074aa212d50362d1382747ca8dbb95e03945d95b995d6346d7db47b24b86e4f774f3767db7996335b789733cb251f9b1edd04f8f8cb7af4c947af224dfe0af6a42c7b65120b9c18abe9161d88cc5c4780fd74403cd177f7160281884a11cf686f0f523f39cb7ad39b780f13a8ee83c0d646f9d85babeb306d53a7df53ab00b5a1aa8c215914a48222940fee10d1939ba5c93617690cae113a59de071c969436b3771fc50b2f4aa641a4c852922380a420fcdfccb81816f4b474a2ab293a4d97b2b280cef031148ea7e4c9c0db7e7cd0e50b203a6b7519c3cbc8062c9b60b8b81cd956463b8180c67f34be4868e3ba94b9f0226d9f010d9ec5ef0bb62c865c807184b96526d94170af9474bbc100530f7c77e46b98c2aa41f92a48d8027c855c7f84684389bcc8e7c67164a204bc5c0c90828faa439fba235b6f20785cc8ef4c090a708bfbbe26e1933886cc96ad9b4562a119d4c66589c85bf0e55606886206734142d432c1b032e0aa93ee3731f069a8cc069a03b95a8ab873b447a04ead3a32be3054af834882bcc581712be18539b805577e50ff5d982c98c0b0dfccc96a4c6429281068c8429997dc17a6600f0736b8453e3d77636faa8d0ca89f9193bb34819ca1117ea368ea23198ee11345c613993ec052992954099bb9a086057df0c5465326e1932aa50da74aa8435d9294fd6b7c05a153f3082f68b15681cca5c2852c18d6e88bcb102a059c1d21936582adb71790cc0a335273b38bddc18488024ec90e62a4110129a42a16d2a93c45439888e76008604c6 +ciphertext = 3a00a38b5cf0894322b8f5c5b35dd486f4e4cd14b18cb3a101345718ff843b13fab8ae89af0bdb731cfbe6c5bca36200e5ac90b9faf0c7296b6ce324513504bc1ab4ebb91e77e9736743722cec11ed929a2d536c25855e7c28d1a6ae521eb9b6391647073c55ed0fab85084ffbb47552721bb6827a0dbc65bff589165f25610ade382367ac20c48dc380bf89c459d98cd5bb01da5899431e29b938262c29e68898602dafbcb9465d0f166986e19d51c00c94131d3a5c0abd1ffbf793d6e9a52e5e11d72233565cade9c20a8810e55f4d2fa80072db2c1ddfd98681e693730b693c3ad8d01230e45aa8822d191a8bdf90cc62829dcd40e75f568b8f562aa61a6a9c6a7d1be451ad6bfa404216c102b4d6aeb4599951b0b96cd81e2a03d825380a96a831b321c6f14ea5af818d008d6d80f28b93f2e3bbe22195d4ab020abd3af6b545473250720bc992ee57ed9f328f0cc1988033728fc2a28dcbefebd698215b3a91a05ea5270cc8bf8b0a1ceca7e9bc13bfd8359892c795aa6360e1fe6d8a2965356cd5ea7f4f8740a2e9073126d0c41f07fad51c74cad707c9f83140a2370fcabe3e9f48673d9f1d007b41c647ac0d195f279696ff29ba14b6841213b7218d769be8f684803bb1d29aa6df3a0d6e52f29b19063a81f1446e54fd8f1a6887b0132da286053836c0cbe97bc36c8770198e203908d3496c43941b35257dd86fd1a9c5f5177b1f75a426b00ba9162e1630779c6aa4dd421b4abffdebf19472a3c3e27d270d30d17812c49dcf3c5b49109800625eb8454098e1f994bbb193c2f6260caa9ea62cc2eae8bf26255b7f3b1a2fa57231f00a7cd97387d5348d68737e167f7f22f6f4438b911a040e142fbf2d9228480d83a474d54018d92635bf2c14ebe728bf901689f35462801aad5545cb411fdac9dd55354e7896c92cb9eac3aa0b88fd6e2b82f8c93281d5fcd7a490a537efe83e9f3b8ddcc8f8a83a081354f0e9939f77f8368fd6f8aaa98c7019ac6c2b74a59067d4ec0b5c9bb1d7f0bc6b6e06b05d2332284eb5f24cc35e14af83d6633020df2e74c124bfefabc42338b4acec89031cbbe5c1ed3f2d464b77b4c479e37dc0f5d5d4497e1b97dd00aad4fcc47013791b2ba6f098bd751b66b51971fd886c03cd6a45addf8ba4af20679c498ef3b92f793d1f6a7a460a665c65b58796f57f1d8da4c127a2cba6af842125ee6f9c10a1cd9c9f06cdbe63ec6ed979b6be2048db2f83e4cd16a80e3ec5908f8090218e2e9f97b60707337dfa770d3ad27076d9c0b0c7aa1eb8e220392e3683cd19519660a17661d2eb92621f59a75a8c2e008119465793477e055c14765262b33347245b96dc1347792ed7271c5d20f73def4056f96100a80fcb89f69c451da786f045fb2556a2b3d84aabec88dcf99d2016c3697cffcb7f8f452c654375d1eb30bfd9a7941c6cfb1193f1d371ab335966aae0c14b68fbe23f6a12f5160d786577b2ffa3af2dbe46fea002bca529419faac0a3c9da0b2c161beaa83422fa6e875f63 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 8dc4a33d1ad13e2dfa7ed6a5303693679d33816bce0c8a83594695531999647a48f77d8c663fdbe4d9a6100e3201a36ee053796356b26e46e7126c3d0a354d2fbb82312a372ffa37b939a7bac8ad0f1f7f18eabc771462fc57b542a73bb7067fde6bcffe4982e6db3394264d34dab2233e8856ba8b6919c5a0a667867cdd2166b69bed4433cd44f289bfd7255542cc7946c8fc2db388c8b656f234a3b607c2f77eeacc3a5a12d8e11f5fe38abca9b8dba79a2ea17778fc2beee38b133636a5ef5aa77a52b7554943af52f7b53d0b84ecf44fd88de8f716fe564c5e587539957f4242d6b3a8f8a66d05e9f8ee3a0a6cec4b253dcf1fae197342f5e7fc296498bc9888ec347f528958aa689c8ddb81880e84cafff5509e8b746535482687040d790054e65216c8bc279ae93854382cf8cb438bce444b2258afc3a84cd409eee8373f877b30137c4ce4664e4d43dbf763b344489604e97f4cacf4ffd2f6d07c5824ccabe38cae22487ea2fade8aafdf304bb911c4d1f4573508a5e2ddbff98faea57f643cd85f4a3d6c9f056bf5eab6ffbdb3e8a7b8c8dc9c5cea953ad527dc055fa7bc04469987712d15f2257aeec52961571e75c32abe93dc5ed47f89b9d4cbd3966911fab85fe47b3c68692cf5a845286bae09e594ee5c6d23437bf7517ec5cf609c8628e8fff7cacb54d4a5ebdf5c85f59ab61e51f945d24788f459b598a2089a86ffc9bf66797e863a4dad732268a4e40c5700addc7d1ab1ff46b78e45ddc0ce9fcaf8f3bdcd40184af7182abde00a966b6d75e69cd11ab6fef09e3024ccc85b56d098facc9c4c81d17c577cddd9b8f9416e2f5d156c4e75b84691b9d948e3e884beb2ab3635dc357ae867b2496983cf9595423c541e4ce7957d42b4de41f08f5c9996f302ba911c67619434b3f9cc489e8c8abaf9faf1ec3045c895edc4ef745aa1f4dea625e47eabb494331f9a560857153ec4890c8fa5769563b8b1f9ba3c1b77b034f568038865c913d4a4f79f65f74c17fab9e6c5f236cb636ef5b68637ef955a9e889b7a1faea0118f8aea1a838eee72400e49cf27ff4899d161c34039e99b36185f068b5707fa476d75dbf149479b8c928fa3d89a4b941047b5b538e35685797e0b9e65f595da0e6a614393cfd630c7bfe7d1ad3091853f607bf38fee3c93cfb5daee9b2c57638cf8fa3d76763afee5838b8eeaa5a47b7b686fad5cc088abd48ae0ae593ae3aad7f55cb4c1347acaf7cf5a5ff182749e6aec39d62ccb886d94ba3cc0b97ec57a03a00ad67c5c1c6efa1ec6dc36b13cab713ceea6610caa46db4ebb86b7667fa0be6dadf163b325c89b506c33cc343c38afbca7cacabe9d494f044b550778678cfebee76e047ff705556b50acf04087b5c5e5936d0e53857691c3149521c8d0b76c431958970685f9a4a87d68e974ed67e78b7980effff7e425daf1234025757eaa3b645074f02d73feaea3943c4dcb11affbf569ab2c44867d5eebc834dd120e34d88e43d3d44b460d56be166b58afefe64a44f80968a1a4ed91a971e10c347aba36980fb1ed64f985ff8b6254bf61d94b6a0de6b0f3fb05e889761ff390efed87978eaad45bf5997654c4da9043e9ca74d95d9f97611ba36d3a65c0d17cb22b7f3a682b593595b1c682d521a16dd621a05a7d22c9b2d29c9bb75cc5a8567ed3a545bad39e2c85cec0f83f37c6aaf101bec273bca5d606a5e76fdc183175a233c93373e956580a522badd22d97d71199c1a7b4149e652686eda541e69187a2abb68f89ae9492443547cfde7b5d609b4835911d154c33e49248c4cbb244acbf03e93e52e71ed87a75cbc43c3f505422c1ac31c014e82009d4b13bf2cb7dab16896a320fe6c0476f37767ccccd80850dc94b410b983fbbcb484dd09b44a817fd95686106c710d983cd2bbc11dc4ae59091a401a6941bc704142c792c407f7524ede1a71a726e2f921b0626768307c31dab514a783febd67b50e93479d2c7d1787142f591607b7a5626a718d502b37a6f5b8766e8175c6ef276934a12ac1107aa3362840513d3f5c02042ae681181dcab30f6810389db07c3fa1790345e786031e3196bcc01c22bd064b2f9c439d7b7a7b7633232aaa4d88e0288cdb791049b8a8c64883637098def7c88fbcb974554af0f3c51c70a758176215871227869766452871602093d6949e1d078691537d9d7030b36926147aff8151cfba202c0364795122d1d748a18289cdb33982900b38ef9aaa5d10d146985c757ce5cf82ae0a2489e0c00c83550d455a03fc885dc7a5ebcd71529ecb0ca13ce1259186f9b0ceb4b90789aca0762c8bee063780801ce365540f440b0aa0128103ae0f5b4a5d9b98ff3aec5793e8fd046a7e15b517c5c4164105e87c593db19b85792b6c705e615c4d95c38bc4bab4f30737a20241a3189eb38865c6b60f6341dfb931626e729ce39313e122687862bced934ccf88411730fd066be831542abc5b15a1cb2d3f0aeace904cb419754d9a5cfa35d72e570c8d3b0bde5a5b18201f14cca3e3564c16769757a2daa89b03dd993ec8b7c9fcc63098478af1890346a8824a4b142f88759f382292ac404f436bd21282d6a3242417b36211c84b75f388151f087186cfc01e59383e8218039db15da50120aa1c5489743bc42335a774f8494a4244acb6677b22a46224df7bdd8a9292ae58e07f3068cd975abb51e44631172535e52c910b48748a190c50d877903a4c7b9f4b18993669d254ef566058528a157428111d43d360ab54343adebc2a3636720f1e0c8ccfcb0fc3b71b55353c2682946408cad171fb711cf0b3ab561ba6722647acee4b8daf0aee2c43352609dc617549841adac54adfd3319efc715dd917ab2b887dfeb49cbb6323acb566e43638a5c9b6f865da4157cc3f866066a551230a335510f55733ca4f3a6329aa0830894e06a05ee578c45b3117fd07d62718a9842ced5f49710f7b15741ba5b06298c550b96bc6fdb0561926240faf09012e2cb49c66868e27ea318aaac50bf882c5bb8e674381a96645b7a7dfa936201933c31955e24912e436528027b39f74a909aa5ef4653cc23c5e448be6f81088fd322fbb1779be52ad60005c2f57241932ea3b435c47a39e6e0477b989c00bd5ea71ba671d8a37dc64d36216ccebb14e6dc7420c362926b555598b92f6a78061423a4cc8961d57733982fb8c78573c35584185fed801ea674a7fda06008517b42d1a45fcc50416883d0963d3b744edb5e8548c3b3dc474f7843c49a8dbfc939c41af7f8ec6c8354aeb0c67e05eae0104fbf09445794c0ea0654f5caf70ee09d51c8386d4e1f467b10633c710ac2a4a3729672816f3eba84c9638a79676eeac0f22c8a48e0c5d50a26ff0844c66b99 +ciphertext = bc05257f294ebb1d9f523ee049a3a6730e4cc5b52e9760cc5d47e7401dd902179a830fc9261554103aed30dba87790961d9524952048d442623264dfeb2e4a4a1da9894a07d994b9054d664efba14181c35da270672e2a96b6c912eed8c5bb9487ee426399cbae893fe08ae6000a4ecddbeaba0187af28aa9f30f11e46e2e622de5f5fbf89e4c84a10c94724cf0810334fb4a9c609619295cdff0a7079a55d7231c05cd13b9fbc381d1b33a3f9170a4aef32889beffb76d91c3f9a3ecabe60430006aff1c59e6781c816fbb4a8338f4af1a1a9a719497b54bd7b753611ce0da6177850f0762d189312670c6028f3af43b6c8d9f9297c636c8e4e6cc926569c81f93e2c1b7844eb83420070b57b5df5357adbde5d794fc5d1c2c6c411b563450dc843a1139a405d16908c277db81f202cf53b2bf3a6231121e7d8445b6d45d7b258ef24483e34bbcda7c2670ff02e23b6a7a6fef8625fc83bdc56baaf2dd7987f37e565dea443b2c2e25363f74009a730f8f986d021af214692a702b38cb56d048a1a5ce2157cb932c9d8a4663c33b500485f7f3147eb9c50a49bc8c3d7eb5dad6cf206e275921ea4fb4e3e7b00abf9eda1c9c2b93f439e979a7b0331bb5cda584e59551564ca3bf065ae9097d0327220d265e6ace108258fc09ea5e0380e5c97114ed4fa4760220568209cf52a79f0aaa1efcab10e58b047d44c2cdd74921aa81ed53d6c98a341bbd0834b19628826691d6aeff3df36f123dbce39a84045011a7d9493911cdf171a63cbd7ef21a6fc206abaf9ea46d491d94e12e88220dc27891d1e4a728538f3c930807ddd5292ae905e22b395cdccaa6431ad6f3b44e299aeb2772db97de93963eacb47d24f09791380d98165ea0e38d579f1b5f6249686a0c1610dfe223ee389c09a7c4ecd67bfbde3348b4c27d7087cae132f88b1ac82d31e1c41c4418b6354b57e2c37cfe8e60218730beb2154437b66db7531b16bbe4b4b6a1c8cd1650c732f872c8cfc6761480da34dfdb6f538bc28f91962bc52447b2898815a8f79bdab2ff82ffee5073e3c90d90960d9b0b6c389969decb7a41686cdbf12005c0e96f3a096175425130b485c94424896ef25a9d7e00bfea40f0e2facfabe7355937901af2fb8da23b69eb2249de3e6bb98b84b3c11f65b2889a01073e75b20b7077df34c4a3da9461ad036c41a926f4c18db0989ae4963ad31c59aa2c14d177bf94a12f73d5b6d61c9a21702fad90a2f7f519f502585e3fec795463eade03bfdfab04f17f3b8dea98e713f91e21f3284a6521d3c051b2388c6c5683f5bbecbb1575db97be5f24418fba1e4d30a3b3ed014fdf028c3b8d80a91274995c21bba4cc272d31466d54fd6ef2a593c5aa5511fb95b02c3aa932aea4bc5341d90ffbed8f7fd8f94c2a511abddb4e2498caa887512d6662ac02fe6fc0a01df4377c05baf88a74cfeb50fd3bc6403a6dca1d794043ca59584bd6c5177731beacd58ffb2f0b6177d0ec260f2df873b594500bba6b7888c772a61326bd69a5574 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 38bbb649e7520a59ac57783e32b5d22489365713cce40e71ab46ab219b7e81369af44bab6f5badd06e3e963938a18f9acf6f5bd8594ed4cd981c5963f68874aa876855a9d41c5cf96b4cc181e57667d499b2f961f44773ca958193e97988e8e6d81fd78d0e47e41390f503921f139384d75efd9ecd08544536b4c9c09bcc2914a808ed90d98b5c08cea4a1ce6ff0eab557e5ccc197eba1a36ff67beace1e3facd6bd16053f22cc85634a3d56e564e30862aa24d9d48aaf92643b630d9f8f2d6c2c8bb7f357b9432a8474349c3e1679f2de54cfd4a373665a86c481b9d3e63308cf3a2af65a73e3d0068ba228eae5e5a1114995005c8fb574c4a7da80562953348a80bc23cd90c37a2d166ee4e895f2b4f9aff3c9eeeb869ec9982d367c5809396987a2efe93dfeafcf45e774cc3541bfe655a738daf9b7601fb5e83ac6f682465fdb273ab435355b84563047bc4d7fd4aed3e0d4c9ee8b849183ce6a586d5a6f5690d48d4d8857379f1eb324977f30b461955ae7cb16c4dd93761224a47f4c680373c51eef51cb69a2c737cbb1f76d7288d33ae86480c7776cc7ca02393f333b6cc01cf00ae58922756d3664a30d8bf6240f672c27a7496746f8f567987f6340c7344745f2fa98d819d76a004a480f48b74f7c6ee1998741d39fed1f75977db4e8057aedc67950c9f9e30d526ba5a27e0bbb6767dbaf2ddb77e5f5b07db7b6143a7419a35273c14b59fe1f4fc5b69e8a62f3c829b5dc1fd8715b13dcec454c90d7fe6509ab1936ae759dc6b62a6720a840ab7e4f7b7bd134335c75c44a421598b89d631e2ca498ef56be08910b69c01997bcd20591d1967ef5ec5c036bdc1f19a01cdde03de6cafda45db70950cf65eda254f741eb7233b36397def4c6365a83b66d9cc896ff448f54194fa15f67b8154895173075039143dcc5816fcbbb1946a917abb18478815f920d24f8c856bafb3461a463627ec743077ece75ccfadc95622fbf925a68fa15e487787389bdfe4dfd84801a37bc39136cc1a49cab7cb92487f606d48d3a4ebcce4ff1ec4e8b12a6342ab6c358ff73795339bbd7f0439aa9cd5a47822fb8b01769eecde3686c8e872a4e2c049a755a8f9556e4665c61d5d9aec7d67cddb779512a308ba3cffd5c4bc74fc0922f6667d4d958ce7b3d9fbea21fe43dec663c6e55464ac7a9559c533a647c6ae06c38972a26beab45c2f04c974c9bb860bca64615b6f088f305d8e862abc974df80088bac791876d327fd4e44df2655ff610d9a49989bed1d7b680b62cedef75109d89fdd7c28143a405a600a974231cfd71abd953da3c2da574ce2d3e786c77600646e25b3c305f6507eaed84a836367cf73d62c526e0630f9b483caf335d6bbb5bcf4adec4e43444ad7055349cfb690948487f7795b67ecfe4553de7a5c9564cc84cbcdad093f480aa844417446babd86a493b7aa163b76b5df35b7384cdd54147a8621674843d3d40ded6eaec68b6ce8a2c5c4f390c76351feddddb35c9f4c4a1dce48ba0860209fb2fc1fc90899f2c3463139239a62e878e4db61a45f9a8fa7905a8aeab0adf16dab5026469b27e4e22af5561bc9ed111a721a78587efaf59a4c7f6b743574398e31bee9db0a138c9442fd3a7580e68eec01077d31525465babef901806363a2d664ef8c1908a30491e336e27b0f8690ac71c30adb145805a15fc654ab8982565eaa96fecb93a2ec7ebb697652965fc5ab837f6b7a20e224e4361977b71c694a88e5252f608cac97e97dd7c80a5ad10d62681b57162269f7b8d812af039226ce2a7930e43007c0b3ec6a4cdb3897ee85796d051cb053881e1b9706a572ccc75d0ef32f92610c40db4553824f1a352fefd979a310124b9456a9106367ec6a50db6fe0b057fdbb00a46028c0d6a638bb7f2139ca6df68f014c4e1e0b79670869353912b5d67edd4b77c70c067aa76d174cced6c7a901c65737082276188cffe28bcfaa2604447e68d490c0f11cd22b8c351c2d63e7a01ee460bc408e174bc4a6cb023492c6eed42f5d85244ec883b1b49b8e3584f27835f21b6b2e6060e0671f289771d124168e196edacc1aba26cec9e09fe7367f46893c2ea3677caa3005e34e722608a3b64a3b987289952dd695a82de89b9034390355c5e33546eb833f602cb9324c095bb4cf66c05fa0ab98d69bbdcff155c3169f3df2a575901724b678fb080b67f32240ab8f0198cb43176f6ffc93fa602748d591f0b2acb9aa67a8d8b15c27140c320b0ee040e737077a8c9fd6a20dcb865ff51c41808757b0ca750c502a356b1c7d821f1bf804ae2b337819c5ea89542e079045c887ba6550e4f05693f5c7012424d37a17e2294669c0538ce69a1f1c1f121784e3c3537424bbc4d73cf1a685f03a24c4ba8fd603b328d2a07fa2b714dc1eed17693727732ec7be2b02c0614caf3d42b222061ddcd758a0674133e6cfc5362f855b717695acdb971aaf16320690606c1c42238856d757b5d610bd64427f04c97abe1bc6b0185116cbbb2dca28b5d7a9aee205dbd37e92bb36311c8936d958aa1744ca67332a600d8c719377273c7fb0029f27c75817746e1058dd196de71b0e4302682da21b4ec1beca3cbdf690509573959d816cf5fa034ce01d6a4ac477e3bfea75732678aea6c0a5401c623dc225c7a9a7ae6a572f738387181913cc71b9379a5a2bbdc45773c6a1167fe756e13731f47226bc678331312b99428b07b2122b2b9dc86b01c5f090ff632fa83b598863c0b42623549ca831f66bdbbbb1d4747d56a97dcef9c81766a3d90043c1a99ce5e81105e9113043342a539de446a7c5f9c4b46a8cadec388fbb8bca527d90a56c649200cb2a7f968611934014f9a7b6faf3015bf6494ef72fba0c7ba40c499357acc96562c65b9ca7c53231045e35771947172118eaa02cd95f7137c93e2159d9389607c3011a76363560a97df950b0329258b0126c7bc10e4081ce46b7c7b0af0752b038386e9afa2d0a7543d85ab909376b618c0a2d33875d264b76941430e81c48832f43270160176ed5938492a06cc08392237caa8487abd3c83019000bb6671784109c7bc4c2a0362a5b5122e620aba511c49ca42d75091b3b1abaad9b8162bc27f182ae310872e789cf05f6c949598c41c3b73a1a9cc0808e68f95c8ad8392f021f77c79618685db2fb1d04a9a8acb8441ccc764aa3b191736f5a24ae31c23428390c1c22c6a6052664db63b94960a433584036c05e031a07823a03ca153015fb2665c77d8fcc529f21afde0d4f32cbfa399f2973d812f516c86b0f353d6a29813d354471eb8b4c38df93939eb3b1db80ddd1cdd6558a9f2687a3e03ff73e02a217659f53d8c47556bf3d8c94040f630d63605e2d0f923579370c +ciphertext = ed678ef3105bcfc14050898f388a2daa0d61c5ab310fedc2107297881a1097f329c679ccd9d1cebbe957c137acacb33cb7ee31c9f5c148ac51e57caead59178132f69a7020a8419f4f833bfe4b8718691b26b771ac6e858551aabed2b9ea3c904a8c2723f5fb8b87d519f4a93dc43cba81c39063f732ba91116f359721ff3b6fcae87c5965bb728f4442f35dfb3f2078106078aff64f51cad6c62a5c8b056a5e6fe7e08046f097ebb1311603f7b719d93b53a1efbad985dd5bd5d2375d118f81347104593e6a05118836beb278a62d5479c7bd62e90b2aad04f7c6c0a4b5b410568b9033e72f1cd6c71c53717faaffc9fb72e27a3f00661f2b65a4e0845c2e7aaa391fc1ba253e6ac33abca8a2839eaa0be8e350101af3cfc7363424626ef571c6db515cb8a8ee209aded9f56a5bdc3dfbdb9d4f1a94b73698838550d4e348e5826a8f632d556385d3135ae872580986b43a5d77fe471db736328931dae7f9554604ffa969d5d2e7802130afd2bc5e05b3f3947483fc8ebc680176d792b0fce9f7d121ca199011efd51343a9f68cc40cf3c019338cb6e1b46f3ca920344d1207be283329945c1729704d3baf1953440474be9aadac1f705cb5ee8c41ca4f29645fe9b5044897952899d18ce25b841383ee086ba8ceaf712dc69d23e564e35a3cca5309cae57826907403065e943f255bbcccb64f39a54c18ab26a8164ef5d9d07f6522e7cbb50a2b80040bbadf0799ae1b55abfffd5d2a74c9c94b43eab75f55c2b438475bf4a4f0a123ce8e91e94b6ca6106b39ca34430efd34fa0a741cf93e0286642d45e78d8fb26af2ea594152a87d1737f54238c7a8cdaf174ce7e9e13aa207b627ebb4a92598d184bdc62a643934e114b356b4591ea5415fe42a9f47332d559b9f748752c46e4c8e1196a9d16df310ff2824afbe1abf520ee7c6a8ad7a833e01e1ac3fb0784cc85f3d731b40a12c667e6a0f3ad83505080aeed9309fd7492eccc9a81fc5f047c47c624941a0ba626563813f74eeb0a8a558fa968f809deda218f6a73b821f30700307b3aa52122c81ab3d48e4eab8e1bf8ce95f9d77014b5edbbfd21152305d427abc30c19ef3bd6e206eb128d245ef3f0132008957577081e1863ac3ca83232ec8e3a9d95546948c9fad4275e0a1863d5fa2a54fc42d0846dab4a0d74bd55fe5071c6c514b0f0fb69a8f27347013b87fb48d00a670b6fd28e8c844ebbd6cc93c527b5e0da483b3625e754b5f39257c9a167e5b381bd60f3cdfd5cf0d65fe96e02340922e10c488f35df7fa4ba9296f1e576aec3e425cbf92d648f6095726ac3ee8a6d812fe9ee629413f78978e200fe3eb1816fdd1eda1845382a1bec1ac57b23b79189ee7f67f9ab45731d2a2ee4f208025f0f0530294bc2e38868118bf2464fce482113463325223ef8395f945e0002d395c0e9695c9b8a0ca20fbd1f3b66327b69e6579a1ddb49f50daf499031b090dc2f8486e65d8e715dca3b5ee26a1cb3fba97d4df8e3f283c28a4e2abbfa3ae5ba78b6b5d8c +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = af46e3488d9758cfae0c4a60393c90222c394dfe36e965e75537f1ff136dcc234d657e5a1ab43d167d8187f89a693d791f0d62cd53f53ee486ac64e79e4fdfa6a8bac5ddc07c7e58a1eccfe52c48484d3849a8fd73288878dd4eaad37d392aa487597f81fe9af7444e5b8fcfbf5e609af5e5c1c3f0b6c75af0def1d6ef904b0e85654a418e5c7a379b41838ace149b45c5b4d40edf39ada846102a6bbd9eeebed4710b2393ecc4bb8d6f54dd8e5d2667831fa6f887a74eb883a5a874fe0c4f7451ede321246a8797b7bf2fe1eaf64b0d7d6eed0ae8ccafb0116f6112ab6b2b2b928df38ccbd9b639b9c6ad19de92da98b5c9914549beb6a9b5505579a56943d31d722bf590d64ceed56534a96552016ff6c34cc1ad3f572d2ac0823bce358d860975f5198d88e02f9536bac34a1c950843d9a0a7ef31d975de0598e5fdd9d24661b2a79dfae85343b94fb1cce71493ad77d767e18e48373486172d5652eb4f98838ce536691de8c3af0a4970fbdc370db4605841bdbd884e08bca3198b05bfafa6f575229c56462b95170f6d33dfce33a4b1add3b41147eea75e6765f457613ccb50f94ab9395f6fbc94395a6c9d1d4ce3b79171a83a4acffadd3a915086b804c3b4240ebc1f14630ef3f17f059aef485c019a4248b4a78b5e6d769e9eb3be5bb1e5a34cb6b470ca7a797ba1b5193cb4565497f98bff3da7588d44867897c43f687e9f5c8bbbd5d0c35693f557f64eb571d6ab7e4a752c9df67b13f9d7558fe4bbc54c96e2aa95c0408e641b1f9b17a3e60dba78c5fdf69e93610883f8a73c67c0044218af5c2e05b64a1b8ebec972606bc221bea456d8ba86a76ac4a3c06429cfb6035ea50549db887a606e70ea38fbcc295a2f0dd1f68ed38fa97b6bd98fe0399ece3755d4b55e1636ef7fab678c394c83676cbafd80bcd9e5c9bec67dc998d7097074249585f3ec5c3dbd035dabc67d531db43f547cfe05983a7c6fe91288d9987343d08fffc395f5b2ecaad2ca703679cbb86dd420f83960d7505bb7b7b59a8b6f0c876c7a53d893a10468a516fa7a6a08c04e3f59ae0d3db768559e173df07ad8794be0e6aea46145b6f0fbb230ca504424b4ea6e7cb305da993567b4cb94cb2cb3991ebc1eab31b5f5691f04e18e5a6eaaabe5dc2aa45fc4ad26b9ca007a7c2a78dacefa88f12790abec7e3eaec13a355c1c66911717da7e1976f6859922ef73f53632b4144b59eda74217e00d2cade0c8a04118e4d40a4234843a44978d0d5ae73bf5f43486d423235f5d7c8e1f56c8181487bba930cd9f72ace5f4eb6c9d71d753ff6fb0e9ba33a478b7e82b36d979d60765daca36e086ad872538eb02e531432b35398b7ed1355b827f776926bfe41880e09daf6a5ea58a8ec7097f4deba6b6c2bb8af2ddd09d7ea0b82ac0d14cb0910a8ec3988251dc9e94fe7e0686d8115c85bb6c47d34afa9359a35beb47c4ad4ab65537f59bc1ebacbed4b97855f753a954929b6449a4db7d2098cdfc14d08883d04bc535bd5c74dd59f47419601513c4e91f57323d7bc858845896a67d33902afa4b58c5dbe969b94795ebbd89ed66887cc6f9fe1aafb92ba6bcc38f5c4239ab2894b2467547ff3a63bef65e35a0c8ea287462d8cf8841cdc9016796500e61e89eff672e87c667f453c8ccd148b94c9a9a3765649ccc6e1c05e5350218d091783b6c7e4958a0807e73e9839992c8c36a87891b7ce5d7122e38b5cdd745feb1058fc2827b882df77cb564323746855392247b054527ee862abc91a557c431e55b81d23b1c1a94992ef540e07338fa944d24b17ed4e693eeb8224a0c5307202457c8033aa4651b2b30f85a9bd8070d1b11675fe240a1009dacfab21d50036426a6dc9c3dfc05cd1612ba91da51bd5a0f7ef9b235f1b3b2641747ab8a380b42c060357bf259548cb80788cb41da4c7d3c4b9401925588920df255167240f6b092c1329799f0039b74cbd549b2c053a71d4641071a3a95a460b2b3a8ada727193267de555e6ce87986ac06e647c4b7967cdbe5083c4b99a1b44b5df58959c48beaba0818608fd4046ea0c09a28416c6a97a1066c0650ca619d14a056252d38539f1c2676b69cc53502487389648fe596783baad0d7627cc6ab2da5b6788410b67285841a323e04d037f25e103b38b07672248186c969b04661ac6b2753c5429eeda389599b78e84608dea89556a9510627b29e13b1713a1442158561db8f435bbd6234a420618985dc4f71f0a5f15762fa16084f178e0e76bfc9ec5c35fb52e52301e6809cbb287d42b7591828afe605cfcc93c337bab78b55237b075a8bf08c48c15087e82600655234fa99f6987da7904ef50a1599867d56760ae1d70006925ade67157508289f137def9b9714f4cb72a017ee6a6325f9418f3a0ea3a8762c55987ab406dd9a6d248a33eaf264774aaff6f00607f37bc20041d3a170e07407792a43c5407fb3622ccb065b74bc1a54f86af9f7246d288fee725a6fd85e82477483f778d5388728c4565467a9ba3216d92089bc1c742a20b03bb526b73573cdc91aa8e085f1eccd1866280e791bd1e43d4843a440e050e2967daae26686cc2d32f512332cac82095ab0005133023e75c9c92b0388bc8b2822a82f93fc3520972e2e0a062a388931092bfa8758f251895c641186d1b40f6a332df3088bb24381da133ce40d3461a7d87a93e702472e49ad91cc013c936b02a96c4ce14c2b23ac79869c6d139c8d85b58da27c6eb4c4250bc3ddaa56dbbbbffaf452c09074e013a3c7599cd5b8a876076523c6b0aefc6a503bcee0fa76407b779db92453f7aaa4e58401cbc6f3718a3352013e1383b4222572118878c99289b91b02d929dba06c6deb6f4c2b0459f86d04fc8d287b6a676b17e45997027568bf7bcca05c3d394c1557873711174242ca50cfa30bb3d715d1400807cc5ff1049ce720be3c360febccb61dd7244f4352b655a517485ab13b413983cc089749ac7144312966b2c67ad50096bc176142858881f09e3a075f8fa6bf638a13af572ba026a172b23317a01a999c8c1ef478422cbfa9802f98f2856bd6a11f8584c532807771c19c411a2900c5a57c9b8e44b4c07b3be3477baa738ab2c407653a309d7a82cfc6b86a1b59ad1251e008598e453e04e3306c1877dc703869da25a9b91fec80aaf4f30b4d0a83e2daaac73990f05a9002d6ada0409450454291e37112a9ad97147cc89999dc89a30c809757933c5d0356f329bfa3823d34197b7d9e60e307bbabd9b3e8272a0ef1b3333269a7af6a5bb8740bfa12e89c47142418c26396ef0174c02f69dc00022d56494d31af935490edee63859f684fb055ece19459eb464e91e126a7a6e3ed11ccee0046da234d964c985110 +ciphertext = ac958722deca4336b0f60c62e7c9e13fcd4b006cb719e07b26fce400e3467d481cfffbf51699fa8dd5706cc65dc69d8ec2c04229c636a94d6a0dd59bc81e90b7538bc0622489f18d445cf2a7082c5062f4534e0a156b4b77095af6ee36d2599ed7a961b0288f40a52a769b5ff92a7bc835cebf20b0aa61a33379b669be2efa997942b71204a97391df9461b2ffa7f58c85f437effcc82220484b1d352f17ff76ab8516411558fa3e3386a79726ada7c29e8195fb41d480b2ead4d48faf6949aeb157ce17f6524f1c0468defe260f6b5f634b265428574e259b546cd48050f2e8144033f686bc08d202563d55833c217bb649d50e68ebbe5084a1752cf479a24332f6b87229ba8f38a3f75668f7478cfcfc4de61e65495b22e746ed7cc8ca5ef1af1b3aad68dc224d8c458eff394747e235c191780c8c405bbfd7ada024558b04e93afc1b09ce5e97474aca4053be829cbf7668c660fafe8296e7f0c625741e5cd0ece5c23aa4e5183559cc09616dadd9fe4a471158d27d54bdce7b95c6374d88353e8f09907b6d910d228598f77faf7d14eb4faf5cfb1aa6cba24062878f06d2c8bf4f57673547abbda6266f26d6893ea8d9f09c5adc8918eeced2aa88c93a6039d53adc5b5722c2bc4bccadfd2768acee766d400c200babf7330e17be15023522123bddebb445274caaf1bde7ea23e2918f9b520a3173d7e060791126668a997c29241af3e531ba30e1c26e7611b32a346f733de31d26c7971beeb6d8a9725c282b2b07947e4a6899de0d7cc703bca6cd09c2f6d24922ef78592106d1dd0fb8ed29173f6d79e82df387526ceb9f0292b8fec498757d1680a1784df0c22fc05f409a908816bb060b7fdd6cc95b180fc3dddd50405c4deb8af5c68e166c841710610ca126b2469f964c8d19b3b0e9d54aebd19553e9c791c0e50b90e9c676e8bbd1cf0571810d6ff0134bb77b451bca63b37325e4574e67b553d834b537c4dc371a69352822844fc8e68786f73826fd3e38b8735966b96caebff7a67b5053f7e18f3fc0133317c6f3f88c0bafee7b1ea9dfb9733c8834f401171cd8837d7466a9114f58dbe278b6882050730eb0a979919a267779cdb35eeb4c2e4d1187c0e0c96f63a067bec7c8a91db1342b95386e062af1e43e619a04c040fa30f40d2ea3123ca5ffcbc00b353e8df0486df38da624cee432284b18d22c6051da022255d16fd85736cdc5a1c635279f28f2348d5ea50c22f5ad445e3e025ea208dfd9be4c42953a578e238150253364530c51fbeb90b9e83d0c0bfc59ba37ade7f001272eaf84e88b82bfe939d43830fe7f6cab1309392352fe2a91d05ab5a93b3b530e1bac3dc3fdd3157dcef43983cbe0a5b4a6f0dae4912126bbe5d4c62fb9ca542a25c2bf463d519ee01642425b0c93893a9adb034ec67149d8d3e91dcd643758094449e1cb3675760cef095c91b52202748ad12bcdd4de0565cb0d214d0f2cf40cf9cdd21ad6eb0ccad52cd6eba41e72fb3ac7b401cadb08fc6a6de0b1ba1f02eba76c +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 31cb44a14c3ff94d758055bf2afabad14a723c048d4e2dc5908bb781844d574a96a18d7c59e5e92548a0089396a78b953ab5f677b9a111dbd12954b67467ec5d0c7c5e6488d4a8f90f7665f403febb8ff8aeefa7254e3798ec3261a9d1215663b3cf63617ef55817dbd16f61bbab86b4f96056a498bf37b1b94f38c5099ec9feaf435ec0862b861f334eee85af8d364a54f6bad0e44a24ad577933ca858f889a955086ea3a2c94b058cec20d64dcd7df976126854bdef3cd386a855caa3869f73198f5494861079ac84606ac0f28e0eb78a8398740be69cfa1777c61a5cc1d758ae29cd72e6d87c379a567648558ac8a1883734c64361db33cdd156fd47ea2abe534b26fc6e346e43b944dc33d9aad1d6525d6586793a2b45fd358185fc787c2cee3875e44f5be66f7c1d493144e3ee498b17e9cf95908b718b3c4a7ed3024d77f1ec37eaeb7462e09c683cb9b272431ef0abbd15ffae2569fc389d2ac9dbd2c236f4da66d794dea61765a77e43acf9ee02c735574ace463b55f11ef6727086d74ae800924c6b0eab6ed9d5d5c0eadc538c9eec7a25989b85f24b1f68b9a22637613e9acf609a67dcfdb38bab1a8e8ecbe2fa5ea8c7588ae3bf8eb8a37e5949084c26b4433741a31c60fa4c51f535fc6a1c61dd057c651040f7f7808eedfc4a8843c59f8563bebeae5da543be2146a3eb7b5228dd958cbfa5064923246e93da8ebd2ef920e0db1cfd5d4e32495dccee6c5bb7aa21b6cec5c9fc1beab7343d544e7af5cbeceb8ce59e45d9939dd332c05ebdd2456076e7dcec688f117bfeecf7dc5b8b4884446861b592c8fdb530bf4cf08513f66c3b51833e51b9a64ef97054a8c03f8baa257c64c2c8a265a8a9215fc41146bdb3a32ce0b7196aa335658d6dac33ac06af0179cfa0dbd4000d484f13f5c9d16956eadaf88f68bb72b7bc7cef2a486cc1fcdebd40f7aa316c6d8ceae7d8b9a747443c5e7f37989a93ed939d905832e76afaf4e72d507d689e54f7b5cbabb536e603e6b3d38911513b400ad83f8bfa3c72a6c09ea3b4f78e29fdf85fb99442ff6e237e6e757afad78b7790ee69748b79e42ebbbd6b9b0d803a3eb77477609ab2cea59211f8356c369878855127cf2f1ab66a3a4c20299fc8863b609f7926175cf1e3967ea93b7ade7a8e67796730f3dd5e8ebd4d9345af36a38ebe7e96b8d85b7c0beb586aefc9fd9ebc586fd71c1b9c350bff83b6d884a0cc5eb3ed887aa677d34e92db582f16ee7fa189c868a3cffe8b2fb584686eb3d009733e1d86c07d6a9893c7e951db4ca99a4a98db48053878a45340e0d56041d68a74ee3be4b51a74dd16875541e099935ea92b2668ae84c5a183cbbfee6e96a1d38973cc07c7fadb803cbe26986c827ac764f8cf183cd5fe7c9c719378448d58f57db62fa977dd658f219983f97b517cbeaee0ea479ae8dbb89ac1c9e6419a3b25f388c277ce90b866356ec84c34bf9032f86c08a34d26948c59341a789cfa168adc0c7a73db36a72ec6c2c688c06aa3eb1fbb25b7b828cc3719c8bf4747e9f4e2b5c4ab8a4fc27fa132439e0e3af23aebeae17ba4cf39a1569f5c62a4c9ca764364966479d6630b9349a335a495fc01c0e8f77eae5e4749bcd8577d50a102352b869402efde59f5fb54bbee919e7d4a8bb8cc40fb8c7240401113152ba727cecfc8e4b817c5d537df050902bd03df866317006a2aef59cac269813a47fd337a0c5b694f4b080f100089255614634a2b0bb1ecbcc3f1d84cdfb3054fa749736e531c2e673716079cf45c89b444b7d821d892c7ec39a74d39b815c2b9981ca47f5e56840341ff9d23fc877285f9b90fc78bea1b9c5c647ac52d066ad7b8ca2aa01e0729fa22c39d9c3c6cd833c6aac061aab1c1ee6819d2a245997b8580a9e1630112cc6b62c4952215a3281111675f25a10ca0c32bc68c7bc920bfbc7bcd82edfe130b0434afa29b2b9d90ac3f1143b5664e5e51984b52d976439794507d92cb256a1520078972b843ff3dbc6736602f68b289e0850ee845e49586c889ccdc104cbf13470f6f6c0e6766007e5c3a1348166933a45a1a62e0b749ee14a38e11a094bae60a38c84079d81aa655782138671a0fa186a727457d351a8a45b6fe05369f7b158de844e31117ddc47af9fe52075c6acd5f93a31c38ec7f608ff9096c8562e0271a35fa7265a56b24bf31c6a727376d1ab3f600573342e60884f41d355b2336e464b94554b7c108614c3394fbd561a2e74ba7045c0d74032877901e4f8a95c41ce9fc72013c51fa93b5c0b3c3b0a8c90ce0960f510a9f6a453b8b0012f7c2430350b8a4b6143ab5adc7aaa6f3533e230c3062b7caa33b1e9a3bfda7bbffef8341ad0a33ab272bada717a4790f4c99cf430bf114b62854810eab7af582a2ea327a599c490e25795cc5c42219771391b33df4c7fc01524c4c520eb4559c2ea8c38ab5cfe27035c756248662c1e969ef478a2d2419ed9da7125ec32b0557edb5b77e0dab221544e5f7a57a2941b89b803ed1c7d8de65f64a29d8e7bc2020b723d391987f83db0bc35e96aae7b2772b37159a3257ead277532119cf55959fbec482169c5391a9409877c79255cbd1c8d2b8352cba074bc4714deb09f9cd81624d2782de91efbc30882c45631e96e35c9b53f77cc0d268722ba5eb858a1de719a88ec240da229cd7766b9a237641c1277c006a6672bf61ab5dab4c223b7381fd3c16704cf7920b2f11210c969b6b46a152b72598de4aac1665d72a45bf51370de61559f83081dcb6aa49339e489968c80498550afc467c8aaf0c6c1b9085699b801c75eacc3142be38de6f6a64ad6708c426eacc13b09d8bea819bdc200258d31a8d1f308d0a7470dd35161379191576a03b81d70ec58565ca7c4a6bb333338d8113d70f5bef45b6835917e17c2945a06cbb7f2225675252f351593b06a6db504b6e67c6e88763fb06879187c5053029724b3477281cc5c5294b36b64f12a08084eea098489d5cad338a0cfa61231268bb866c2c524c71bd6a467c845ac7a4eac579049734970859a2ea753c6b93ef01532b130a103c6244a17870b75023e0014e6d8433ae5cd2b145bfe253a8bba300b6465fce277e2fabe36d6c8112887cb0a6daea4a54e258cf89071e407594de1bf1f4aa2beb50263dc5d5fc729b632957375b5ce6373d9b93211a66a29736a6ed616ef8538e95c45bf595b2eb743d79436d6385bab74c80d88c1a1f4022e6c3bb3d2294c474c2c554f3be4d7fae86455763b97ec8fdbe9640219b35fc36033966a3525d485f12fac52ca60594e514333ead02cb1bfa5cd1d9ecda4a0b25ccdfc47ad3f632a85f03a8abb0a5010f400ae5722a75bdf5a2f6d5b546b34d73857cb1bfc7e587aa7 +ciphertext = bef2266443f466793113b5d0fc7413bf46e39fdfb568b88550b25cbe578868d6074a6b2de2dc03b8ce8a7a390cbb67c46c500c7e6a044391db3af04e95c88f2acc12c63613b2a139a4551e9189b118ef4f04de5da17fdff8338483df67b9f683ef87a2ec36185a33bca3147fae6f6121cfe41ad623f9f15676bd40fd7a2802568e9609ca00bcdf1d59c6595ca1b67db3a3bdffdedc7dee22eb33bf9e444c9f115ef088a32fe4c800bd57fc854ba31c53979d48a8071f8f8b83049dff41f729ec4bdd5423fdc088592b7bf04206b920cfc96aa4721a55235520237e1c7cf15e7905d864e6a040f8625a55330a2dda784554891d35862811969c77ae7260f776f1a768606117fc922d936a058151850df0aa94a05a9ef0ba817533073f831b03097ba43b2a3433eaab922a1020cf60b5e02994ab56d8b1c746fcb7f699c42254f3161cd53388b50c9c089a73f30ce34c2ee1168e8acd73c3665c89205c7b1caccb8baf5d94ec9451a6ed00cdff4515fbb8b3cbc0fdfc0d2e249eea42ace1990e519198306dc8c040e6b8822af99755825d2ae48ea94dc5304e7646863a7af04d393a35305f15de1c38e4ab78c061d0006e85074af2e8a7cf53a3ad7f631de6d49c84124271b3a29e32e40ce001e2d21d26cadb65d825a126281a157551c87f712d32e754b5d8cc66f3c0d719ad0c0fa3afec198c8a89d2459d304d4b8fe164008a9432fc62e21199f7a3f648f1d990a55f1ad253995cc848f6e5e7e320c221e33a31e8517aa35a6001f75a75b1e3721aa912ac92e4a4d0c5c847ebdb834bd6ba30addb70c613d4ce7e83e3a17e5273441eccdfb05f9f205d697e0e3c4aba2070fff99e2496fa5e9548767f6b3920eb3f6825c194cb6d720caa133bf75d98bb858bab11d4e1dcf57e251aa4fb82bffc1629acffdf25010ab54a6226c88b2582ad8f6adafdb62723b0d173377e5f7bb894ad70b26a2c22fe0b940805f1b5160aea7a8396729e1428446308e3ca349207d6354e2197b6edb19496146cd71edd1564e07afb401888c22aff7ddc721d276819cd908915e0d7797b20bc7d8e2e63c9fc3d899158a0862df09e506e437bf194807544b3ed75813ae767538beb5f2bb1f25abb08e9b446d8ac4e965d759f033cb68980121660e2c9de083caa42f8543ae4da5dd31a1c1eb9d460b5175f5b913a0cdc99e81c696ea831cf6e87066f479950c852a240f716462773205e5ebbe5b769f844d36729ad0996a40f69ae558da55b9792c328403170f2b917b65a971d0ece55be01f857d67ed4a8ef59ad83f7ebcf3163770bab4f583b32e8213b000b65d5a7c2f276430c4b23cc33d9877a72bd2d755a131ecbbf88d489fa75b36159c17a9f1d61f109048a48507dcce311875a52920010712c6af5a181051de669c4bdfbd370590218f597e9e39afd39adeb31850733df8928d7daf5a6e2f3ce694854d340557647f4b8fc0f6cf633396f2ec7e03bb74b1f8f3615a78555dfd3a35d540151d4ed385967890818f997d8ac26a4c29f +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = de9a3f4dc6a54e98c850e3af0f7abc5cb5b363bc668f3ce0c7ee97927c89e67d88c4a6dc46b767e38ef9fe78c7cae38717e6a2a70ce7dcce582ac697e99e5c9038ea0a784c4b75345a23e61bc6a586166d4385b507748d3ba5e6b10550f05782126ce0f386eaea2c631afa83871cd03a5db891d96ae82e317b29ff21b5df2b2caf4908e27789dc2addf216759b005692ccab42829f7a46739ff7a9583e9a5eb9b6f314e4967f5bb375fb627e5a45b918c801b4b1dbcf4d56ce3aa7fc5cfd1d4647295650b5cadcbcfc74aaac28c8f233f64c1d0eab51fe6213154d041fc5aedf5af449cfddf494056dd0a01c449e1d84c886e63c83c1342eb1f6f87757ece86d4c30cf9e6240e538f196936ab9bb429d93fd593409f3a3098f7ada1dfe5b7fefb1387ac06b442a7dcda9d7f0ad9d49d0fec3088d6e9f09f1a0ddcc52b9517c685c36c45801875dbce490163c91c707755cc8701bfd4deb9aa0ce56df24d7fe5e9eec4edcf97abcc4c9ba304c75812196409c19be10c494a9be38a7fd5fb5558e7f2cbf6f1694e7e4e7f73781205b941eaa3ecd09ed71e998f9a8b6b734d0a048a77ce4ad17fbf65313303cc86150d477e42a39cb4b8c5a47f3d03550f4b76d5fb7b524fcf658d374a8c955b0fb3fe888d72eccd202bf328b737f9f19bca95eef35a8d890e7ee7bd9707d9e7545aa6a659c3c70877134bbb0a1e970e7035021168c4a493ce1c9950456a76cecd5fffe47fde6f5d2b4bc51b39f3b9bc73a35a06a7485306457544b88c168b22f8ecbe9cbd175afb526b6ba074e456a3cc941569124557d3bc652dd8f59ac66552ebdae06cbaedd19ec269cfc6f4bc7e948329778cf48c3b37f9a3ed714c5c9fdd99036514daad5273eb256fb7e7f7c91ea13e1b8db8721e5d01af9d9922eec5873499bcaf0aadd8a135abeaa544706dabf7338497c578085eebdcf9e55f884e7b2a3e3dd39505cd9dc46defc324b5d5b0defb2656d596d77257f5485465e33a6a64ebff0422cd38f0a625254ad127ac941fbf3362649d2049f8ae8c0584feaeeaa31e0e98fe3da74d53938f409d1b6a33f1305a383dce2b35894ad4982939579511edcf8aef174373968cf94bb89a9043ec828048e3fa862fadc95294df5e2f66dcb2de04be8b9f286c198b8c9f1ff4c79a454e8ecd742283cbba84b95b388d8f6912f4b74198aa52ab561ce59508ca6cc0935efa288dec0da59d9cefb17179321df3b822a3395466dac34384a364d0698f592734f72bbdd2de7e31196afd4da54fc68d1d869f8d06ebb267f74c98479ee1cff65fb985f6c669d948fac15315863d84a4eef0bd5eae72bb8c23ab5fed55e793a4e8489b423044a1c0e7273a4be35b3d5e19934b99b45dd2734ad4cb4c5b368c7b3f65003d7b7148c199a44bcc3a2984f9ccb7de5e916f04d8f7cff8c9dcd48bf1b638091f732dfdc570ce6618dfc839b4a4648b5fbb94dfe32098c26e9a51a6571cacf90015f65b6359f07598b10c7674f5356b0365ceacbb55b2ae8239eec92c44f0e4bbda5ae3364749c5384ca777dacce69bc48b6a0b1bfbae8ac5cc40aca6def4957167cc1ff4dd0caa3a12f8c13934fbcbdc205f53d713aa441f5b0ffcdefe26411e0cb6648d36c6236468793848aa4b7f4510377e0a24bdccb712bc98cb21ceabc08101328d3d032cfe9c82d21372924c69ab5a402e9b3d88c87e9bc5c90335e5ac231a1b87ea3c2527b82445d7c8596b10a609616e4da431c9593b91a1aa21a2e436a359a7a5901902a6b516d562363bf95890501af4c5946626ace3f276af8966709cbb9b666b9842102f3077978e4872307ac65ea11002cbe4dd0bb83677419b89c9e0c9847fa6441c86b8b601663e40357831d1b3c21b4a8985ed50e546c2917f332d4acb59bd64d9be88efb981362458b8d868da7ec516ea9c807a29c5d51385781302072c1f3295da2559003d4265cb330f43ac5b774562c182be83636fa034bdbc3cb25ab6c8c21c69b873329321533a788287a40c1659f457c5e6e15456da54a7fdb18c8ba246447606f2aa340a48b4fc667d7e67efec47910e05c3da4463b75359668821711530835357b6a8ec62a3e7817c508c79754063f7110362be73416a46533341cde577c17a75b3316ac59575eb1a1575ec0104ee77f70941e91786ad457832e1493466a3faaa55911e9bacef8ce49f579f1753b5138797ef827f0bb0821ea69bd9c43abf2181d0775fb64b8694c74f0323600fd3e5f1bc5cbdacdb2329928247e4759747c02cdd924cf1c93bae5c37be8c3b9c7e09b4660c3b9901ee33b62350a695d799b52743d5158c015cc609e891c87f9ba02616ed2d3a1c14aabef101b4b42ad5c47916481bef01b11b9496819ab76a428c0f5b8a69ebb24fb5b3407e1c22e2020341575c7098e63379406c9b60b6a1733c171682b1776719db5acbd2ac6ac4b97aa0a3c8c168a5ab389010a01b4dd01829ee4a402e54e633a229a94cf96e01f72ec4054c13335b89bd6e91e965bc324924c028b433074c9705ac4ca2682fb1b385f058d574515319397754cac9f68cb70022882a24242d1c3f1242cabdaa4d68a91ddc8a22c939bdf1539645a912a33c1d11a5849211d831abc2c86834be35bc3500cc44522bf9aca86988aaf580bf45a5ff7f8192e110e163356b8a52486f772204bbbbc19befc631433f081e8556579d288b3b27c1a8209ecfbaa30a82b34eb722fe2be60534e2f625c0ae477826a9e75b7c5aed2398525358bf0ad127c15915133a32a9add47a72270a98f942807fc59f2420e14365a758c534f289160a65cfb34619c7c9b2992083cc699f554bd64586dcf379605581711d607235c944820cc28416ac761498d8b54193a8cac8b815d7b19a21b02a6d5a737c4984f3a888c0b9e3f51b95ed9430327642a082787132e94d6c26b298b77554e7f2237ac286f419266580697fc9316ec1176c4d763b194c52d79b25604974c1bc899560b72094701709797c5183391a268853b9ff3aa277c707906be0b078fd6619050e14b48bc73f877bee69a3ebdabbb8b2198cf51b14b2cc9abe673caa803b419be1c34b6341c2e83d2013152b557a87ac4fb55c5c86ccbba995492cf960479b044b3d6233317677c78a453d4e247ecdab3fb200c3d2a0564c4100a995c4f70597e498cf0897b507ab35e4587e2b875030303dc2ca8ceb41ae2a9725085c12040c8d0cb20ace46f1936725bcabd60d0b880f7aabc887090195d95fb6ec060b5257ac37481faa2eccaef99c0da37285d53baeb0e25bdb93eb856043b822df9d60b55fccb537afa3cacca9ef50433bde1dd9831e534d192a59b3bd23b49a95bc1fad20070fec930b6060bd827d742b077092e422268e15d +ciphertext = ec483fe1e90af388eaccf12f71eee44a9868b9d22fc604716b42147fce466a3d9499f2ac1a601e1eb6a268ac14025edbbb5d02c0b2f8a60a4b1419cfd3682fb6f08d8d62d51f535753b05d4a3c3bf515dfb7f32ba2dbbf491739ae06850b4ff7bf94bbf18395a3f7ba4f504899f21e27f31c58b2389e5d018aa232cbb3287109d52655efc595e46faf0724426fd47db5eb9db222f9f325bcb97e7a273fa1c1bf3e5a22c2b5d3b915f7b27ce6d7fa9086cf92fafb7e0f1cd466e74add460ca84d518ee5be65c64f5cdd3eb13b1a5447b0e3cf1f5bbe40ced8a2f6dd6a76b175d017400611951e2711fad5a880412b1a29bbb3774b432020e93f90cb7643e0cc43b4425fdabfeef2586ee284e02968773fe186facf694782feadaa1d2c10a54d5eb7d274bf47c22c8e7545c5992204760f8f1fd65e26978da3bae8c85f0117e6837a87e2b4239363968d949ad3af50524733291c72585f21c8e91fbba2dac44e6968a3bed82723b9da8b6bf64eb4ed0b7188aca874835bd8591a14386ef6f6a968b8306a4a5e38ae04acb5533c3aff6e36ef7de90b6e9946ab7a1212714efb564e9464c47a1dc0173e6668c61f7fd24738f2ae66708abd047b582cbf5f8b794de988092c293a21ff273e1249ad499ebd36cc7ec6a7a5e28694bc820e8f9a5e4b17eef4dcf421f6a4a872fc3c5aff93e6f2c4753e84fa352178ee1c2defb18aca27c55a32cd3f09c24d0a5cd1eef3c33f8dcb52e0613b6c45f16d4cb2058f89491310027ec1fe23a61ccf5778053aab940d4091fe34b713205b074e1fdcc6f7f95235d46749879717d64d012facaaf35f4326670cd5d312adb6cdf493645056a13fde2b9e7be6e83e09056e6b54c51bee49551b333126d35987d7a75a494bfc8ce611b2dbbdf954adc160599e14930846ada2e76a457d473f8bd2a3d0e4b4db62ec8e4255369466bc9ad4df424ebe5d6727029e512517a68d7f426e5fd3f8c55d4b1ab1889369da30b38664e77e9b8e6458c70c9ba6d7ee3eecb61db33b71eafb21544ecf68a22b0499912ece6db40c6aa0283b76446ceb8388a7a6929c100b4f0f333ca49de2b1e68495336b70468a43877cfff03f30dd306a813961979ce3118ca0309b4c8be667393e9de346b2cbd730cacf59a2499330e3b0c7c8ddc284f9923ddced65f067bfc7474a4b673f6e1e0a39916be5cd05e71d96b797dc9c072bcc2a4f6690d6bae6594d9ca5333a7b8280150f0debb5e0d2d14a37540efd2ed2691d487d144c42676d96bc902168239667ff39a0d5d82b8ed9af5f79a972fb571dc1b47dca3cecef6f3dcbc045a730971b9e417ec682cedf562e4e129de4285e590006ff03158f4c5de616b0280524c0a50898f13d21adb49483f3dfe51388582e4ef2b3776ae8c2ab36726461a7bb404af15745a751d48c78c3f82475dbaa0e634d4fedcf2714000b16857d8b25e71acbb407bbfce4926cfa5d527e90798c58c820f7052a7dd3cbf506d63ec499e953a9c21cd8144b3da89b6f02a04b32e6998c +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = c65b5692b9737bd5bcef94376a685fe08cb59c2b94884b47bb6a4b292c4ef8dbcfd1d9392ba3c46454fcbe0879fad6dcb733496ffa71171eecaead7377eac75927fdb45c903563fa5a48c18f3343e7fb3a0a8aeda9c75f647648a92fbb8fcc59a3ed476fe958cdf968433b46ea296056a8460eecdb7d4430253bf27cc38c8dfa639b7f759de9325d3bbbdb1a5305e546591ef7b11332bb6662379f4ff2fe3105176b81a777ebc946bd4b962f8d50c008dce026a513f7c9c753d8f8336a9bc73bcabc8353bae0afb69aa60fb3b6e9a53ac67f8cd8784be4519ab3c6e8e47212bb59ec3958be54fbf226fdda987c612d30770555c0bc62b25ff367b95a91399642155cd1be7dbb848b642c765feaf400358040d4cd154a68db46f65bc5f5fd9d9890ddc04cfdb66ded52bc2e6d6183b444cc385bb8ae17388d5f9df4ab4e563653b5f72899cc16b37d74ff6ff7385f557c941571a1c73bda4f5fef3c343ed9b88cedfa9be5652736ae69949e43b5c9719c4b8f4fc9072ce0e3d454b3d9dd315c93579cb106a3b16bab7163983f5d5e4b8195e6bbb8d2b70be266679ee03c4c41ebcffc73f2dc6ea79899f7dd83b48c24bfe82a4fb2adef71efc39d5eefa65c43d57cd2c79849e7745bee15b70f4d593abd55c2a76fe21fee094b4672af90f5e7d8ecfdb1155b94fee9b34cd9858d3a8dd4ccf7f50cd728ffa80d6681c123f4ecb7463964db73af3083c3758dbf9ad40c979c4f679e1436fc56b3a8eee15147d15e3afaf9a8bef038b6905c8848ce6558cafbc6ea92ae9db0272f8695d664721ce5e77d8b0944d6486da745ea4a5587ba2123e2c82d3005f838a2d5b7bb09b8dc7aa39d4956d49447307ea268a9eca907aad08d48fc98c095798d0fad43c42c437f6762ed3678b6e7d1571de6f405cad77ee7c786b56b3a88fb5968c26869f74af228cef9554bf20f67cae75b5434bf9259553ab4375a0aa6766b2aa0ad58db6979f01fefecceada39f8b8f576ee2575d65d9df6dbc1a57426af9fe0a606bb8f6ffe45a69493b09cee712e88a2b5bd371db5c0fdde25e2659ed18f75d28f77bacdca51797d46cafe91951737868483a418427733fef637b4aa9496c30fecab67b0b7278a76da2eaf01874711e79f8b7b4de7859378c867b9bb8e529656200584ea9a5881b657b68a8def8dbf01338ac1b856c4ec5b0c48a80bcd6676c0ca625fd5296e59155d5587c3cf0c0aebef20d5bbe9840dc2d5d9658935a67614595bb3fe48e52877fc5ba639e0f3f54d534c58cb90a0a98bd2cfe9ea4dfdd7ee93d4753d17463d7eb8c9c6575e0f6845b6cda5bc69c60ade28e3d78960671394b75c5d7feaf0cef8ef4afdb395ffe4da2f6bc75fb9b79e1d8756705b711bdbac1dbb4ad4eff003e74569d739c08bb25cc9ec62caf1236e76c26eecf6faedec392a369eec2ac80e92571c24e7be7e8fb2faae990e5ddab78c1dee631304ab5ac67f74846a8fdc6547c2f4c73ed781b233ff8a6c876eca3a4ed60a00b560f76e042e85340c4a8257660c069fa429c7b81c5e37e5edb559f864e156dad39fdabf590350bdf02247e6c6847cfd86b6958c74209a8f399d41e5389ebf5b9b633b7fdcd8cfe14bafb262aa9a031e49084a6127b8410a5a46cbcabe6b18f607c97d4af6c6a598a089bb40c1998d16cd307895035b15df2c34bfc05f634813eec780c96b83fab557075cde3b64eae6ba98b65106e729b81d11c926404e99164bac5b546997d2a842f6aa9ce1f6bb7ab7551a06a3649e1caf7872ac675cb8981a124ca05a318bff9a234853821a3036a86404b0f056491a5b20ae09dedb123df8b4e9eb612a00207c6ccbc580373b0921fe2831f50610340865232c60660655184d8a0867a47811b88bcdc4e6dec5874839919188f63740588ba97405bb1ff2925c1553188c0137336948f7809dbb96d2f910a9c0aa95d49267e543057976e3dc7346cdc7560e68911b8829d37bd0eb20dd5e2b0eb1538a98a76a68798b5469f9dca82a08648a2da13bdc1a9b52a7b6f345626bb691aeccd14ec20f1c252b4fb2595474b2dea0edda47b87cb51f020072d489a2e79cfcf9a12b52bb4f626c35ba4c0888c7939f38e6126484a7932f5d6a029e1ca5cea27d729065d7137bb518c1885a299b58e1f6446fdd8449e58a21453cde7ab683bec6d84876cee590d1ad93852885db721b85d4061dca1327179acdbfc329416b23234572901b3f63a2cda36aa65b17035f449af2b404691957c30028f053989c501d8c2cf8a8cc0c04aa59f3b19a98777f814a18a0753a7180264e59f2be7c9f0266b8dc481cab4833be8b3b599818aa930571748d41657256015f68a8c887c23205a6655f30c51084925167bb75c98b8a25b7579bdf40a912365164814794bdb0b78824fe9066cc63473496ab9cea06248d883d1846fc8084d59f05277aa3eec0c3186d68bdceb6c240cd0128a6bc1361467b861ab025309c82183233c37b35e8af1b464331cbe7cc3974a48a8e015a491677567472f263e31188966eb556151819cf52772053936abb0d0a48e99357e558301dc8157a8a7853212828269786919a8f9032e17f9b692ba8efaebb602e83bd4b75160541500779d1907b1159170dea870e6f57f5229222e85b178dab32f897bf45510ead084887566942656357b7896570756ab1614994f982841a525c8ec63ccc8e4575df03be2f5cf96505ade252fa4e80fcff664f6fa8c337980251904a9135abcc509db15a49fe4c6d57b41bb6383b3483ca5f5ce11641f9eaa423c0c3254a508d4319dfe72168070cc8c771ed3e06ce74c93240947a8dab87d889f9ad894f37243b25259153324e103b73c708371400ebf007bb5459ee084be938a18d055af7cc7aa98fbb88a156849765936e7273bc385a1bca94a74368168cf26d8806c7901eee2359c8694b5439f1e82c0a6892e4a68c4858a9a00b1496e177d1efb57eb9c0ae382b56626595673230903cc19c79714364cc4b10891823535e21cbcd45c90d471e684af1fe243e925c848565a1989637f7614c900af1bea9049b78e07f00950ac800ef72860e209c192a4aa0b901090987bf15a2db6165516ad0238a40b0bb233a365bbf2bab2f60eeb8a54771a8d8e5279e2740298563aa2868e2df1be582897c7a9a0547acc2d8933aba9cbd5d937073455489a30e8cc3659c03d37240bff084d77f09dee76b60952221ed2c1aa73b772cbcea4d7a1fd64561e88bb90327b7c13c809696c0e4711ce152577517be0a2fb3d597fa5804e0c106a4c10306aed2a804a1c9bad4ab9e59f6126ad7c8633cdd0c2dd9d4c6f639d312ed47be99c0e7b82be89bc3c1eaee6680aa4efd394e40c2b3f30523c8117f7c26a8969 +ciphertext = 9e87e3da4198c29968ff7e7ffc34af342463c33e928f1269f1f9dd9da05f7e6ccdc1368ca53debeebe88475d7a820be6266995b186c27068361275e3b2ea5fcd04484f981e77e150612841c15f5d3eec0e42ddde5c8dff60c0357fef646c13656e83947706b402f0bf4e7529b5912d6ce1478f9afa10b33e0ad8e64fc0c511267fc3802c21e8b39904ca88e8336f6eeaf9c9588001868fec48c5417e131345431b56db9b6e4468a2d9990106051ba1393277e9a55666916059e75ef50b399a45bb8de993ca4423ba9eefc797f1b2f4e9b10c63a79912b697d36472c3a53666542bbc5614b1d7e598e04d6d7258ee3a870bf3c715f3fbd0af474edb638cf94d4b000d4aa1f84f938f21e2b64b4f5aaf8d4a64e66a39268eb54c3f283c6ab0163b7ccd7a8c830bdf7cb5e7ecef736dc3837f6db70e18e23221cef0d6d2a3a50bc789116bfd1d3e4c6fb4ead0f5cfdf66e2a8c1e5f769595aae06555f0473247a48edfc9b5952bf5b5aef540eef286955347f4e16423dd6401e34000ebd9e330f2d8c801365c62551250f02c30128422992e34ff615ae123fc30a203382f8e5d190ae6e5347e90086351e4adc328f01557addb597968791490bf99baac1b5a4c7c5fd0348f71f9f62d0e65932e621cddf5de6732b182a7549c7d945a8e03857eacd7578623d993e1b9fabc88bdc9ca1007e79cfd0ab258aa1eb8ccea56c28b6da4bddcd74012d4526a39cb7a6c19175717f65fb02b10ae0ff90189c9672fa53fdabe48469a2fbcbcc5272d26f6ebcecbb5db514a53b2fe5ea45a1498022353918e67e3d53373ccbc0616c3f72d87f13ca8660641ddbc8c6f345aaa4e8ea397a690009fb080b70c7bd7b442ab8c5f7caaabc284fa140484636598a725868235a78b91c748c6e5a5c5fecb7bd9504d35745b1f06fd7ce6f7823375080937f81e8d8c6d894e606fbdfa64c928ad9beaaae76cc5f4ae37bd9cbbba7ba34181442961aae39cc534d44cfae600e79cad2d198969c85b66760dd7aac5c4aac439af9c8c49182e8d1151c33803fdc45a7bc9b3fc7ba063dbabb7670b184ff4092bc2f9e50156f5a85fd75dabd385740eabcb5bd816372b869bc1b751bc8db94fabd51c9759ecbecbc0403b233467fc3f08d2c94f1d0e0a6ff92a6824bcd6088cec85771ed9f6c4006d36a92c0aee038f96cc1378821827cda9ab645391feafcce1df8a6e8dad89abd81e87337db2ec1981159bd6cd17f39fa6cb02759939722e53eb0f42cc4265f85ea042027a36a9d77fe2d9099a48ab1644102538c958b7a5ec3a55a4d6291e885086605c07abd1d21b05e3b54962b87a2db165e6e351d91ba33ef882d83cc3ad5dd01d248db82642df1a0ee9175d115f86b1df2e7a3f5d1b33b1f6a41ac0c9f1eb4311c8720687886a5b9abc0de282f5925bccc89f9b779970cfbedf951ab1c7a06e4a0c04d7d1692f0edfc61eed1eeea7e0e3a440daafc6abe72508bce43e8516bc2eb9f7e2eac1ca693863b4b07ad985fae99980ee736d32c69af71b1 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 52d431d74363ba07b7ec47c2a5b9815706e7b8c7b7d3e68ce4ffa31365bf4f2e747203c5edd758000a8c09d38a83457fb8cde5bebe87e94fb46cb9bfab29a917435431184219339df7cb81018a81b283814ff8b15e3a526ac35185bb45c7a865c45ab0ca1c7c5cac9e35f753d378556b6fc8aad9ff0ff59652ceabb789970b3fc69d153b14a687fc2a56baedc382ba4f908adbef79bddff781776abd052d44a1c84c4d8dab9ce9a76bfa6374e9cee16d81e376ea09cc327243e936cc85d7bf319cc787322730329ec3694fb61013c0a51d82b92d34a3eebfc8c47916859eda63d33d64f77425e0e95ff65ae36d531ae9e5d7365127bcab5b50642eabe2b69de823b660b4699f8859de768990a8e59d3eecfff5ec7198cf1025bf9ee69236d9e3b16aad84aa4c381a577b6c7a3403627c3f3f11ebc1f304747f47407db9a8c9e4b86618f598ff8b6fcf72ae2e40a43a52189bd6175dbffbee9761ba99cb7f4b7129eb6dc5b1655dcac51bf47415370d6bf0780eaaec4ae3cb477984fe80398d50175658ccb4714acb603b6b3aec44ddc7ce64fcc8e331fce94c48ffee0f4e0da6fb0576f7a6bd5a00b5511d78badaa489f8bb3f3c5b484face4517d8b8a8f8ef24b815eb43a6b9be27bfa49acacafc46434987bcaf509eb936e40bd56504fb4525fee921b63733ebf986ece33078caa455e8871cae2894a553cedf4fb83ea0ac44ab90e99395af385bc440515877cb69b74bdc847f4dadf2388486d8909dfdbf8eeb86fa8478147ed4cc5ffcf2cc30306c8d98c679d4cb41ebadea8b395c08cac6eff348474a9504592ecd34a93c3f62c9751e52e93719b617355c59a25679e9d9a5e756c8ebd3e3b174e1a063edc733b945db4f738618648baeaec5b76376d063f9be6f7d6e73fbd6139f755f361096cc4565573572d53b55dfc42c85b5299b1cdadb9cfec4605d63666ff4561d8c1dcfa896d1c6d8918a3e7ffa8d52f4ff985d3d1ebcc8d5395f0a64d145462399dbb7ac6b87b29333096535118cd243c52e49cbc0945385e38781b9bcb6c3fda66d96d426b9a1f4c4c4d0349ce2bc79083f247ec5d98e43bcd37cd94b652bfca7b989bd63cced2ea0772df0aaec75cf2836eb4fa7a49f3c3f9f2c7c6d04c859ca8e6d5cafaabb85e52dcae066b9af4d9951776d41cc783dc77fddf4f55905d473bb43bc1f93bc6ea7d33f46ac4999cd33698eeb6d3c7eaf65ae7e3e48691c9bd48b31e34c9998da29d60cfb6ae31cb5a3b7387f2257fe94bb3ea4c963e0e84a0cdf1741395f196f086fd31b7bd5a7834551a6c8f0e09e498af9e12db6d777bd5c80efd8b36dcf128c02e48a9f403a487ac3a6c0888c5299414aab1d7283252f62f465867a95ebe9b8fc9a7aaf5cfb7f7c73f727c765d4c496d466942147a8a7b65aec4ba84e5ef74577ebcb207654b087a26f93ac77c82cf34a7c2f86fe8f48ffaadb663d79bba7bfb8908b330ce45e4f65c6a8a379a99c9e69ae0c288e30a1969e0cb708d0ca6ff1669d8756d1d63dade15eaba4ad7903b5d801456325d57187758351588bfeff2785c9fe84adfb4c59245dcfa72c3d9767348eedb7c2097b457bbac8aa96a67d785803744e149b3f23ea85226aa8edabd5a4a5a7cf6633a394b756ab38bc652ebc1bdb728c74ec316d039ac982b118f1aaefec04e48448d45f72b319289691a93a20283c3cb1fec992364ca83226332107704d3390f71e1883b46bc2f31b4242744e0847e72d5645586ad0b8c0fe48ac04a003045ac2d2101b52c7c1d494673bea69766a5adcb38ce3a978209471b5d7095a720a4c1971d94970884f11fa90c5c8b7009e2e1769b382004c93a2d9187b23929d941468444cdde233db3791656c860705b714e3aaf076921458b8dddd61e09ac461e96a1b1e9af19ac6984129b6c8ca9d4e39d70277b5d9a6a4b605f5e0454ac05729c2691e87a8d79353289678490a822c41c52a2f56b91a35f89918aee8935ef2bbc48485bd747cc5c59066b7577739b669ad21a5561018f021663f5cf48e08f39881d221552c846ad789810030326c8530dbb369681c69cc00c2390fa857a37ad81623eed4262db69929353118a0886e6c1ca3d36c65898968eb7c187b7b866f18a8bb369aec780e0033ebf1b0df846cd60633a461c569683598c7744fbecc54282725e337cec503d12a87f9cf5ba6587baf31b852bd45a871abb81e88c8b8a56d324c87a777beaf543ba153a222418bbc57d7e1325fc2a075608988bdc44e276af10ca2d7e52b045514080597a0ff73732789d0f955f93ba77e8034900251416b43e291984cad36c53c947cc954a8320c11424be43283a6dc586a9fb39b2927867b79772dc1caa16234233adb5ac819f1a172da5194edb997f924a827a85fc7c7a8281c98f7a9cee443f68a2aea6001de7c7475b46b55ee8991dccc6527b5fa1393c9107c4d35a073ce29a7ea205a9279b62f5ce21f3aab0838b42e6679000cc4c182504a2a4e81757b7f6a183428786f09c76c69e2d7598f1e5049cb57738daab6972abf6d8bfd2ac7137493bd2b8b5f997519b2026ef38623294b91999a5419356bfe03e338194e471926fe5842e79740f416adae2a24f441ba4a0c08acc175f347ee3b614664496a5e51c01a55b1d2a3e8486cec4c3ba461970868502a0f9553d776514857bb8a872c7f736ccb432b1392e99568b51b9c9a56c441ac0ccbe785693722f90d63a0f78c8ee777236ea43de2583d0e093ec8bcab7c8c6ddd8254258b7a5732939d953e491a6bf310449083986b2a0f236c5b9a300db22299146b9a0943115845f3fe98045ca844bcb1132e0bc98cb54746937b1479dadac5a4f9320dc572ba81cb250f13869d132fa259604a76a5dd56a7543b96c3096d3046389a917dce53cbdd9ab04a65b31c6c5cfa23a2ad53faea3bff3985fdff9ca3e3965989c072f4659ee8914ddda0acf30a64a1a823b78561d5a9304950ea3056f50b82915c71ae0b6883ef319d061464d8050f37c24c62c7693f204dd4b4d74b66dd7526fdbd707a3490769764adbea61c09a2d7f464d7e932705212d6a9151b46c2ed93a7b99c1148f679d622419a4574310ac20941b3e51591ca5d53cff51a6ed2c081ee7b4bc23c8ba8b1aa2924406618715731b1cc404929a38911020fac6647c24306e349f1ecb4e2f530e8f200eb9c0a315606a3e130498f96ad5865ebb4cbb55265e69316a3bc96e51745b02f4a593b796b5951f48ddd5d61bcb3f79106fb3f881087b21e528bdc627a8a1fdbb3b1ff5d83954f79bb3963cc1c5cf2b2d1c6ca76226328ab765a79999ccc71fe98d5bf3b34f51b19c35d165453e5fcdc6f9df64526d9de698f2bd3e6bac6c7fdd86601b9ba5f4a5 +ciphertext = 7f5651959d131f3dec04f463341a622dbbb71494fb88a8df3c32ba4f398696feeee85b56a6870f77362e5bcce245c5e26e6ac9c8a995cf8b16591a3fb13ca611acb8b464556e1301b742b18b85e79bd8aac5e0c7c69faf37d3fd6c04b22a6a0936e8f3ea4acbabd6e6e1c5254f30061fec7939d165fc83196071a4950da73299adb4797665ab76167b024f7ad115a89f937eed5a9f9223250f54cb496e94509b1368f6ff28d1a5a5428c7f43158fd8b4b962db4e69f95841c82f9b9456999ac0902787c6b94b6327c13c40816afdb3d27f5a5153607d48f79d3dc3a40cee37ef2b255685435af03e82e4ede89cd639c7f66ad44a8a6cb2c6aba3d3362e075d6d11ac78485b6c69c77048db47d59c5662d4ba1462b40d1b7851592a9f442d6ed6e1db0614203a0667589e9736fed1621446b4d92c6dc550964d3436cee676aa72dbc7f47bc053434aa9fe04ee2ac3d37715fb6df7156a3bb5366fc2f50c2082556abda2695bd8b46de24624b11b3f275265c441e946c0b4e37981a4b2229db4b1b04f37fd716e2b54e345c12b231f201ac546386a72d0d2657f5ff3149e6d2981dd87c9bb1e2f067e79935ad015130ffb2186e93fab5be37f141a04ad649ced8f1bd1a5c745a28df4fbf9da9d7650c3cec51980f5bb0117c0c5835eac133f0fb570c86baada7b5d8b6c68fabf9f0c9b76580b512ee9b0d265cefd838bb7d6caa92d7487574d6d4d710e5a6edb453fb3d6227d8eb469539911bc8273524b48957eb32bac6898dc09e8538ea3a0508c860ff7e61580c5a8d146238ea6620be7b435d10093e184ae98228300f9b0ec5eb388953ffd45392dfbff64cff7ebd2f62ef5b4adff8a2dfe16d8d97481ef00ae4cded00e75c6dca982df4c06e703dd6c42ce47fa61cf576cdf11752496003331985b032de9cd03168559d483101a48f4e3febb92bff1ca9a07ffb6e0f9682b346316b567abfbad857e5ee520fa659536959d7082ebfdb86c92ca2189dd74ca92b9af4bba9b989a7cd218cfb3bd58f4cc9cdbf59f42ccfd9f86fb7f68e319753fcc1d2863e730f0f8e0f51ed12b991c8f734b440d7de3fde744d49d1c3e403dd5f5f2a845e157263b514ae72d16bf9ad5634b80f9ef434d9e35c3065057f23cac769f29e2ffbcad8ad08db5b0dd3baa828e035240a5498a87180be4f3afc748da484a877085ff2b2e74580cad830a9e3b98fa6b9db91e902ec2ddde406e1c8e3bacb333be8b6b5e83f81ef20e3bef0a8ffe7da5b0d127c67e64c0e0498f2e117f53e7dc1e052f181b9c8e2320063acf49d8db7645b5222b4a255c22c7ccd050a0c246c9c1512eb6830fe3d93fc820fb3edbc8a6482ee06989dc344489a54ed242cacf6dbe0ce21ec394ee7662dcdfde16c178a890e0f58d6466dd2244881beb22017d0a915a1df3ac4c78d8b67f50748b3937b939be6c36ece06c7908a8fbd9a444da6dc496f3b8acdadd2cfbce80a78e2f4bc1df3aed9eb195aeb01a01714a2c15b28b20460961303a44721b10cb8583f7f5 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 28caff24db8e2a6bf1092964f197ee98fedf2727c8b289e6a5068edd27670d26b91a93332157ac697fd5e246e6ec0f71b18eb51923c5996743cd1e4f3ae3e0cd6791afbd5f77a6d9925e3ec655533a2ea8d14cb2589399ecfe8f7ba89bb7d6cd2d7336edeeb7b63b98f26a49d356578cf7f75ee67678de482e1bb3d85b88325bae0b0dcfd1288c34078d73965442b7b1417d5f0fb76ee4dd92121fc400c7a4d1337d6a3a8cdff9af05c64c079c64dd143f1fd56c28096313f8fd51836a2eceb0f38afe00545f802b417aa4d6e564f0b4e7efbd3fe0d05a771cece64ae5d932ea40a886d51838f36153b4e27e5edb14530467f1e89a60adedd66227704b8ab991e8a0692ff26bc59944cd814c847a1865c19df4b7fa13ba3ef95543f7f4ef854ccb28bc1db49b76ceaca3649f848bc6f33ce39aa79197543c638f38adb755f4da6bd77e30772b4791bf8c9f1544a4e9860e875e69cecdd9dcdcf17451434c7c53f3a9be3984982db1b80a836ba4c531d49bad26d77fadf03daef0c33f39cea972455bd8a60ed912443ca75b913df98dbe29c3322e57e156311f67354e4e4aa14e833f8454aca5b3898b3572f8e9fb2c4cada43c9d5e91d6f7aed803e1cf77ccaf0c478686952f7ea8a8173d0d2f3b0456fb97cd4ea8cfe8a145e9b90cbe3be8c32b276f90d349acbb63637d6dcd54aad0497a058ab0138a8e57e5e4d5d431053e84bd2ad7b77c3299ba6c7205938eca840303eb1d6d5a942b73776aeac11c40d81988e6ace507a7e9aa769b606e8052e5f90d84714ca57418366c15b74da4e98df96abdd19884ec27d3f7978c4de7fb495f8789e7e48f16c23ef8bcd1f353cc4a76e8cf38afced3542430105f9acd46926884e90566e3312ea6a9283de0fdfedadb7de23a4d142bd787539b692edb498fa51f95403865becfad6e2d8aec1f534fa3366bc1ab387eb867477b92f01cdd0a6e5bfddee38137cedf4d98ad57894ff74982e7eba2eca6a005d3cdc9c89bc6a44bd84fd8c6fbb5d84332faa831efa7322599460f8d293da8aa866f93cf4e47de64c4f465889ec11f17d3d906a82546c7609ef85c24597bba4b1be3972f069d6b383d61cc32b9b66604b7cdc4bb39058c74ce87df04f758e71f4544ee3d2365a9169dff75f9d998cedb15e650aee33a291c870315e7b7cf9cf10670d2dc5c8889aab85e8b4dc86d87ef5c52acc4db175a5967e18f983c3a4443b348d3a326eab35dd4b7a789778c8414a8aa8d8e9468ebc28b68afe5333f7e666d44b5a961533281cdd21bd3b24e2aa51ba58f2f45767a67f2e918b1204656a2b44ce628a3a95ef5f918999a73e1cb3569431c7b0d6b58adab6a30f9473b3747e33c7a2a9baf87c7d9353a77743949287e47938f73f21fb5e628e67a67e5157b49ced69a25aff03a08730fdd7b7bae4bad136cfa969dfa68c28a04dc9763872fdeb05e4e61489bce1f473d4dcd67a96f58f6b664d2436d4866e66cd6d467887f9b9743a06d7d347ee4e47bfa2964c229ae8eb63fcc4c78e3dfb841e60c3baa59978234a06fc95aaaeabec11f3230ac33bdc48a455f40394fbd6158c669ff8f20bb5501984c5d3992594a9239ed3799de78702b86973350724abfcd15255f0a5efb7783d909031ed02c52a203de570873c7a7c556202d53a6c086899802bdc877bc6a813ab59b781bb95f4fca9ee76028aecb9142a992dd7180bc1c15dbebb66765c5abbcc5ebf764d5234d89a378d5925fbaf63a00e35d568804b973450a045e55c7c5f4907fee390fe6877963e386bc20cbe929c3d247611e346eae401acb972843dc204eeabb043644eea29ba2c1a160b98f0d28caf0677ab2aba362b7bfadaca4e1197f54f03ac8033814a71e1cf407972b3f1d9a986637a972b46d3ac46509c053efbcb9a475bc4055265961c79e1374c2159bd2409a84f22755a1b32e4b604783bcb2ac49a27a5b0b07ae346ac38f54a2943559f02270bbb19508e903888aca4bab72e332285837b9ebb466e5cba74d5ab6bb3b2a0fa26209a97f959c905bb4b058ba8abf30a5a6c190a018a9803ac29d84ba710b30da9a0844cc1a1478c289c32737144812355e0d7589b9ab765ca3b23353a350876f05081f3e4b14d8f66c998b81f458a394cc68c3b7bfd37366ec93113db928e5f9bf0e9aaaeafc619e332a7ef3898a66020dfc64f671879691c023409b53686770f8148a2b6f7b62b6aa42981ea0cea7753599585034b9ad99c9ac8b12872b1a47a088bd8afca2d42093928a4fb770198c4cc50b0214c4c94fc7b62b5e636423c6adb553b138591f6372ca6d53343ff7c70782a2ddc4801b262f220a539181c13f3c3e8e0a0d7191a43a54ab008d326df803fd8757f88ac9bdc8bc75cb83517ac71ff8613b3ba713377fdad2199bfa332b8c22c136350adb9553e3643d0c45413782f3bc9e941965dc051df98738cf50113ab422e4a22759ca016bea6fcba390ed64540112842f5b1373a2847107a43403b4aa5ccae154b9c54831e3911239b79f1fe997bae30a542560fe6647a2e7c4916097fd484c3d040456ea2bf8b63dbcdcc8577b7aed99c05fa28d468272876b614045095e918600f7c94bb0944f62235c169b58789ae8bc3e6f677ca8d238602399e307553e235d11836be120b3bac41b0a668e0841ab11f49e27aabdfc27afcaabbf542911b6a220cdd626d819c44c72556a3946df86c43d1b8693944d399a3b5b1309b9780e34330ca387cde8e4c9b2d0775a962f447828d6295873cc1629777fd93c062098b6149a3e7c383e2c33cc3fe7730537416fc1adb6c09f4caa736e4c796d2a97fa3807c9eab72993b4b876136b856c7bc75ad054288ef491effa872247a99aa39a9c2b7602027d65a169317cafcbb77c37d89ed32489e3c2557998a06689b06ab96615bb5752d439da446354cb0640686aa794444a806c31d721b8c6b820810a5afc00932a885107b5f968b5c8ec98207293d8851892a01dfae4a99832326e3863bcda75190c4a487b46e3914b702017b1b520ccc30a5c475fb2da94ea217f76556bfee825076533973bad3ac7305b5c764cd040d723617090af4a7811e9ab206c6a331a647d9385a5e7d8bad6c89b390b617018c4a0691d262429bba173598b37d7c245452853506437e756a399670ad8e292b0d820e3567047c82870e82236389d99d678cd9b49526aac30d1b830b12f4e62407a59c8f88b7b5d088a2d08b9f114c3f158650f32c682ea6a76cb62d3ad7357cc617d597a3dbbdf515f6852d71220768859d599bbaa6d029bb2121c788b5b6ead7226df664490dae362c4befb615717d81c656b32735fe6141a25f7ab9f875f79e0a82d6ea5cde5a017ab637d5fdb7c42646a1d71df +ciphertext = c1a71212d3e37d620f58b896a7d06bb05b206b6d84c0ed4b08a5c55d1579cebee866e8f58273b10eb698f9769ecf270ad900ee8871d8c89ae01c90228f57eb877f7f6ca888369ebbfe2efd2509ccef519f80b678d33c6f63cebe6e003e9f63d36dcee6e76663677ecf437d59b71e8fe106477a92bcea414662a647be78bcc02c65836f83e0111d4e2eab9b14f5de6b940663ae6edc3cae8bc090116b84ea78ec7e8bff76d91e735280eac3d40556d4389d2a7c39720118dafe3c8a8db614905e620b7b1abebc1a0b17590a25e30cf46abee0c4cf1c498a1c81a68e22165c76e857b9f6fdf4a2a4e3414ed47afc180351dc441c8b3d534703cf2f36f630b1416c12557115dbbf5f0ef3575b0115a9121749a061e2b674d0336e3ba496aa54f376bf594786d5d6de95e27e0615b67f6c318be228f1e89afc8ec7589627abe3e024224b85d9b11542411267ae956a6057ae955ec9ef8848c9a300ef227fc0569531d233713d83ab84afda6481a7ac32b4460ac0df8611384c6e9104048f7fa8f5d6c0bc9b55f52cc0e733ed6b21efa1067bc86311e929e991ed38e5ebd2acfe72964180e775e4abcde3106bdc514f8c47bdf872ae256346dfd90b9109e27f4eceef8ca436c868aa56a9ee277f8152e10658e8643326e3b619d0222f3fcc3ac878073f1ec5db29bac0da0c55e1ae7d818083f3fc071500ad6aad2e84dbf363664b4b54c88cb4598121e45d86367e215bc6a436d864e6431aff34b79c4e6617e9ce5599189494b9cfe0b87d34727c2839b6756434ac84e83e0281dbd8048d2b1b19f831faa198528245f77a102e1b0bdc93649219cace43d961cd86eca2fa1c77b65f2e5cdd785fc5ab7c237d8fd1181e598c4b8147dfc597df9dd6855eebb3685d21c82e9e80707c65c2f84cffb4f44abc15d563ac82e8fb46be179c01318d112c36608db929260c27c280b5e3ab11901de1e15f41dbcc578ffee9a1bed3f31ed3ac49527c442ff392044c98e6805a82fec28f69904e9dd99eda5a473590172478c1d637c12b949a7f6639a86fd8548e2c06fd9b1861c64cf9f9f3a0ad913a077cdd0305227e50f2e38bd7bb726ff7408907f71e68427976104de4d2df0e8e21f4cc601ea968f51a933383f28776d0abe02b5680562c15883b6ebd2fd5a6db063546e13c47036a657bd80b9dd917227a52f5b00b66091dde66f950617c9ebe73a0d464506bb3bf89d6801f8803e770e424a12500ddf6b8fbd45c533a99ef70c42788d4660eb5968cda54df25a994bd2c92aa5ecf72282bfee5c376a2391deab3090b292dd574e630859e7c2a866ec9c557558bad78b236460c05e0fae86b9b0e960974b340ed31ea35ca171308bf54d40000adc56d8b4ee6d10c238c5390dfdfa034e28609e95ae09d4f431c5b96232ae85c537742b3068a4059d3e8894c41dec04d87901fd25a78015c845c858ff75d15cb8c1de7ead6f1487d2fa582156a24d254b6633b7a027c61c2cab286ea16dd9d1799c606cf4102d6455740868fca9ef583 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 2f766ad79ad112b8cd4cff8dd0f589873553c01e4f1acf71a06ea32cbc85c71975ba2ef37bc6aa6acb32b613cac9dc80c85493faf63c3e337c274542ab57f9d02abc5ecd730913fc721f54062f575d663c8a7e4aa7a456420e44d8cfbc114ec03d5a56e08cc7e5663c0105ff5087f88bb8cbfcbfeb4a9ae9c055691e05c22f94c62c3cc2b6a9c156efa4eb2bb9d95b8c9d5a6395dd5af88bd38d3edd9fbaf66dfd7088b3cc7ab56ff3366fbd595b3c89db5497b34b94a72e8e53fa13b40be96b523e5ca5effbe48f8c3556843545c47c0f54266a802a44bee6e5a19a4464734ffc6aaa4cf58fe8ee3c99247564c65fc93ed589ea8bb2c637bcf7277d5c5d58de8d342815b2e8864b4c43d920b8fec76b4a7bb893e1de8278f47f84743223a67f2983ac8c5ae845b6e25977db02e6d53dae81ba5cebcdad5b7bffa27c59c1e4e38da723b787baff36d7ee3ced5039183bffea6ab3bc779efff73326b327e4f517b6c6ed8c7f96c6330d4c39e4dfa7b81a538693329abbbb5947b068c3cf7b45c174ceba9964c86ee9ed0bf64e20ace911dfe84353e1a51af128e5f75414815999ee00475654ab30b9693ad507b2e19acb7fe6b14f27c09c7bf570b861926683a295d1473ec2d7cb8c0d1da25d073d3c067ab819b9dc27971825ae21dcfe50d377e3396f0266a5ba598bbe9a868b0b6cad2ca3a8cb503778967bb930d9079571abf37238c1f94ed07c79d186949c600c6f587ac0d81c8334c57fe0c59db4ef815d63c26d7fdfdd7583636e644d99327a334ea5b4d572fdcda39ca717dfbb894a50bc4cc84d76f1b615d9dac77ecaa39b9779a3696749ce83933ec7dc1e85bb2dc3421ae9a0f04dac2d83a1fbce6c6dccb0aa16aff9a94bb7eef5665c3001b845e80fdf7d9da3db636951bd836cbdd8da33500fe47fd4b8edf1ef68c62974bbedfa6d4bf26709e8e2046df4ce883187683f13da29bef9912d83ce26730438b0dd0d42998c9472f5a7fdba371d74481dbcb9bc4cb281e7cc1dc4455823ae1ab8b233e83324544913ecf61c6f74464b656bcb645f87b0cf55e2af443959e67c47d679021cf905d45e21da586ef8f91085a8a53fac6afaac5a4d81ec298dc23e75779b8635fc8eae58982258759999a57c7d4a5b14d246df82a9b6c9cbca838399523f2669606d389ae4ff661f783ae65a0c25b7258674398839af2886677e329109a58e579c026549f0c7d41dbb6623665fbcaafedf4ec04366353269e2366ab1364b5a326fc4b9cfa1458daa6cfe65588b8d26ea96839ecabf66a4e277f2f87977dab7807a2c65a26a9cbd339bac1bf4e6b46e0b8d82be95bb7b4eb1b8b670ee4ed5eaf994a06a6414e9abe3aeb609cf9c94b846013adfcbd6959ee4e1d9ddc70b3f559c68c74d94b2aa7d7b9d9755e3c69ac40782e98aef904a32db8f4c7459b59b174a9fbb6b41947f47b3361d5558d93eb2b444818ffa4c17f4bfcf8b9c7ce451f4ca99885ce3f86cf4d3cc4741df567a54ab0583a175759fd8ee97f41dda3a7e7bfd9c768248518e5d791cd84dba795e85388dcb2e507bc669ff0b906b05e6f39cd4dc838d0d1357378be601887ae2bda0c459dd38a871910c695d6dd08e5a5a30e92dbf312758b73beb83625df3b8d5c47a7a334d4e140915ca1401d461d7052e9ff05f73a1598dc9622c324c1c8b5de9b0386ea3cd95b86d80085588ac69ae310be6b5b5379202f4f14878fbb5508907b99490e4191b1e13a6890a9209f0a12910a3e096747eba94a337af9e609da4e8a9f8003633ec099983b8e778ca3d72bca1c19b4fb4a0faa4459ea06782367580b7aa49ab74b60c4cef7ab3bb9ba081227a7e1ac2f5400f8f7395f96567403b2401a2abb0b70e92e6ca2102c597f496cc8881d7b688861c7988363112155b5b88271072a7a7d68b76036059ca5e402532ce8763c52ca237a334832832f2a49be3907d15852fced4675547796d3046535390d44580c24bcc3d67a50cfa2ad8936d46121a7f60179be7aad0746e8a2c8cae124d27181a374493da6a68d47387a44460b39a45b2619f1d29b08ba4495230470b87bb926279eb760b9041632317c4d7a19e7753458dac07eb73331d808ce318555e1a2828da2f1d101cdc9b8363990b85064f63226c36c71061444e17a28c3b56332bab4bec2602f5c31394c870dd21030997564de52602c2628c41cb7ac2388ef35371f870a21675ac522660268a1802a2e4ca4c7152a9776410910175fd08c5e0307f4c2a61c877abbd2185ce58738fda15335aba2c77a804f94077a777fb49854c7a78462263e435a1d7b4a5205ab879438a91eb60397704cd937e66c7310625a6276182d86894ef9750f1817d85709bc578092d3b65f5c84514361264909dc2147ae6f3a577097e64bbb2c679c845d827b1ac393497575e385bb39563e125c3a3925a21160201897072f03f45d6ba85db7eb1d5b8ec7111dd785ebde07056653507e967385945389493b95c0a95827583f01dcd473fd3138887d3472e18b24c1b7e2c837668fc6917175471f3caa1323a34432b72c7b68f658868a2ae87306109b1053ed2bcedcb7037ab72d8c2bf48d29a0822575cc91ca1e5698286c9b19a7471a5b652f6a900659df9183c76417f0fc89d743aa635791d588cae6f650f3d314d65a6ae81a935f38b964f290be7a1a75f256776f17383f9bb9f9203415622b60b2a152a7ce3420cb49c3592ab8aaec009a237a12c2c04abaa08a382622dc84a053c94881664a97381ab88ca41846e82c02e00c6033b4721db29b71fd29069297a2cc387f2aa5336816c66e75b594bcd144171c3f7ac6df8a9a10a71f35b39a3da7d53571cb33860315288c2f7843e855d27db6f27b38940f973b2b063eba12b3a8b73d46c6781ac87f44c91e982cb27e534161212b367ab74a318b0f41e7a060823f17814f9a6e4f5a9093a6379fb0291d99916b15abc596550f152bc79703f1b0393b720cb85a510d4c9557acf3e620cf994c0bf8c06c2606041e7c3ce6044879a7612c3a2fa587b1b7676b956291a7ba5a78527a163ae08696c7c881076189bc1623c8d360c8d85c287a9c0c6965d0fa315e2037eed604084416fe31b2f01c7678311ada765acd7f70de59a9a85a8249205c78cac786aac9a0a0a7352b18f9cf936165a9c39d99aac7c175a5025f1c66d04354480175fc3249930e66c9d06aa50e7adfefab6aa9c205c1507a8f40512a45cebfb2b39f3330a962ed717408e0934fde42a5e1cbf04c80f37d7dfc7eb53a785194c4a1232e61c37a564c819d9bf66855f6ae70627f04da8378547e5867e2eb9759fe0971efd601c4a11eafeca9e810796c34e8cfce9d59342884456007b01ddd12edce6d10ed87e4c +ciphertext = 8111151e8888872490f4154b113ec0c4ebf57a28a670a85c362c7db91f1024cf7b6ac8030cee1081be1531a8af52275a3b94cd0647a949a6211ed50b0b362a034bcb17829dd73864bfe5ca9b2364ae0fd13e9824f8fab68922e937d2103a74e170c6829446e2fab2b7149bf2bbacfa817a68803e6b70a17f7dc65401f6a6813410887e4e8a784bd2d1f492c0052152cebacb091795ca0ee732486c992be11867f70789385adf6c0d82fcaa8eaafeaf706fa6434df3896d859e07d94cc83ca41e691cbc8cdb5f49222d2e883e9c900362476632b102761aa641dbe498c090b39789e88808dbb3ebb7fb7ee3389401e754a812766f7b8525411af6575036714a2be871754442b958601c1b2318b2d381ea5c852b31e1fa7c8db120482048181aa13014c361baabff04cd155e23c16496aa62a65e0ab8eb1cfb2b594f1714ca530f7893e89a3192ed2db714568e04d64fc8358f0735bdbf58570e179492365c1e1316be77c0b2e2ba15f5481c16db022bb314e3ff0593a3159d28ffe314fde190ebbb779590e29ad69136f695750a7d5948132b4e1871ea2ebae888942ac10f3d3c7a6960bdca579b43f2c258254e6ca45211f37e6cc324c646a51cff077271b959c7d39334e1617afe1c6bc54d0da480a5ed7b175d4bca69d97aebf3b9e399b1c498f985f2224f00845a8d78ead7b81ba0c324c5479b430fd8c4ca9c63e2acce7252c1b3530456a572ac3be23291437f1d11abcbe67a8df9ebcd22019b2d54cc3a939c5c72dbfbec61780b3a47481677c069197529c0f436e5b94abb7a731e6bc0622739eb6a9f9e3716c1ae50850d9f104e1193a9d3b05c2fef5736a5078e45b233c4bf9f85521f4b8a663b7a1fd63faae4825a47c0bbc2ce5fec7d492019c7315ea6145e53a91057c0c7245cad154ba809d6d18660cd9195273a83170c9add780de366a4e6bcd3fa5cddb4f84ba8d638b2318649417dcbed7936397e1850ada27b7ae967e6fb1b7a62721e8e70bff0d0de1959ec2978943feae4efe55bcb5de33ab5b71d6cbbeeac12af32c353e34bf53fbc05e1a7cb431a808260153cedeaf20da4a087b69fef49b05a8eec70d85cde26b8313eefff1a458d8d155233a54d025f013aa6cd0cd3d54a714e19fc5fe22aec2557c465144eb9315e2f1b1534678196d98c2991487c29ab085d363bac01f32d77a8d9d1ec055fab8cbbd68c8351a7e62bc76b860fb7829ef3e19c123e60991046305afc39fca4fa79040c7a22be2599749a7fe847992a7a588f8df9407e3692a34a52a9348e3bc5ec05120d5f0541083893eea1f967dfc45ccf4951f613c87dbd9cb3758f4ed4a46af79a11d9167fc931f13bf9356249fc2e3342bbfe977938518d6f807a7c62807e87a4dd6df7d3b205fe5f31898105b7a536aad8ee82018be1c3c331c4dde0b26d8b5c5c55e872f46565576088eec6ebdf37c8b0c36c98f9034ba52b98f225a69e0784a1ee452c2e318a098e634b824ea59ff3d57aa5b9000759cad7bd2a4db030c53906b44af0 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 6c33b8ab2b4febac9ff7dc3e4a689f468a4f08d5c87ef8a142b4766e34d73df336efa5a0d60ce8b6cbfc615658eb04aa9035560ff7979e27c65a85ca6b1b9bfaaab23d89c6a825cdf7f3e2f91d66d516be7278de5a665830f74e371bc411ba86f017d4dcd3c40c9ce295d6b52aca51ae4e73213f535af95bf09d7127eab1eeb54899a36961793ec47b91da7f5643664082c4375f4843b013eb815c8dffcb7f25d441429e746d5aad14093bf3ddd5df655f6a9e7baa956721b4cb8b8b51531a4a6c0ca50f8ab21dfc7cd908ee740e57a59b971e4b4a0fba8ef49754a8cfbe0325c8bd6f3fd2a94a6cd4f26687f60ffcb64d85e67d63334e395df5ba4505495cbc8c3a3f4dab68796d6c646775339c29683a2109f2a7c6a79d39a95c876f783af7a636590848ed793b537d1a681cab559a8e7e050cccf88d3bf9b9dccd4d84743c96079e83b097d2979c9dca2b9d9ccf6e1de849976aa1466bf9eb36dffc64478c39945a9b40263de72cd7861c6adcc089a028d8f00208b3e4d7b3a91cc8c209c5e2efd1279bd1cab34126d7d1c0cf913d05d2f6d73d9424cf1176b8617cd4c10940ef9832957585ec45de986e50526faecb28884f659ea34ef5c48fcf24f383fabd9feee8aacba8edf21a6bcfcf6e2a67493c9e9fea16e70c18b79e6ad1e6e895177d7bcc7ca3547f78265e4aa0e5f5056d6013e53ba916bd1348e4c36b9800ff5f847b7383854f692450abdf8232ffbb4fd839d2b532077ee4da65be8cd5d73f9992e03836ca3a623d4de999a56fb00332d1ba8a26d599d0f5a97975814bf8efc9dbc537dec166ae31ca3c55d05ad5d7a53fff1299d396dcafd8bc6e3b97e72a595d294304bef9956edf74887fd1d7bb18da70bfc5bdd59cef6c1cb56f5994b80ff35dedab29e8cf3dc851f1aa5bf2caf5608fe5cd7ec5daa5e15d6a98a33e7224bc6de2bfc79353bc5c4cd46a8ad933a73419f7b117b88f3a53777143546ddf9015ee5e37c33770a8a9a11bc2f38777e51de32b9efa9859d8b4dfb87fc465b574d45e79453c0666e378fa895cf6965eafe35f86fcdb681cc5db260b4327b46c2d0699bedae03965b0a218902eb4680c1b8c3edbf011a396b0dca97d56aad34ee68fd9a7cf177b85b7729de4a4bf035482aa7758aca9e1f36bc9033ea34c6d00afd91e8b36fd3afc6c1d94a8338ad64dc8f53cab80d73e7dec397755f915c6e6d1fdbf9e94f663cc477cdb5dc94579d73ffd1b647ef4d358c5435d3d0799242b66818a683e8c5652bdb26ce4909f8656ff35cd7f0aed5998d74ffa32df093bcdb3faef3dd3825593b545b4429d787c4c8656d85cac293f6168e1ccb35eb14e3f45be722e1ae82f0948181fac68e3c9d41d85ea77946a54baa91c8ab8f8e4c5b9420617dc0b6d37bd0fa29218f018933a5ad3f14128da6dc760c2c9aceb4bea150546425da732664aa52bd2a82eb63759379a638bc0dd7ff9a7a84e17efdb8df00d6e894a8891dacc375d2fda36eda4f296a02845477ccd484fb5bc539c3b8bea3ed36eed481bedbe76c6417ffb68aea8e10db954057322dcd05f98f84e6f90a5e7f0e32b5f6cb6b992cce82d66a73c6de9572867640343f277e33b16d545d4b2be0aaff4d255d72c6e8424c2d5d23f0aa4c28094691ac4bf0f56a51ea4799810cfb024c151c35cc3c6cc90a41ab964370c2bc953a84a73c87a02813de34b933f233da28643a93388f944c033236372fa6e6aca085b598123f27122a40074a4af57684d46398e5d58b13a863b0b984e224a7ad52c1c4eb26909451dcf2a15dcb11ac4ca38d93ca350078138e0ae87f1390fc9045eea420260c913c6b54dd93495f31aac32350cd03500da308fd8ba0777c999cb4982c91e569a1c52396edc506ac7cc43264a05cc880191501860f1a32f7760ad3b17ff693508339fcfc05fae095c6a96c1e6864baf147186bc22dd882620e5a5f4516df92b8b715394c5677d0db913efb25459d6c636442a8ce22899f8943957bb2b281a8ed14bb5d0ce6de3086ea8b6165798619b2ecbfb22727cafc6409e23088c6c940c23e86a603788c07ba89d6badcef07d79174acf70c55b7b30c067bd8202a1a70998459c54384196f814515ec9c7f360061270090ef37ad32115242c2aadc0121e1a08623038b311982c669de3dbb1c7789530191b07a947c9637bfa241ed35aa1d03c81f0d70f8b95112a3b1b08b25c34dc7e1d577fd30a808ac574decbb51538c2a017287e62128f32afb0f7a73ec8831e6b975007592b5c652fa636c7315baa474f873a5da2e82fd146268dc951689ba83e046c0f4820447c3b3e6c78cd240bc4d21e0a4660eb1c69402b617b83057874122e203bd6313d7874a987f2987599cd4d7946e50665f7d9a80651cc8dbbbc4df605f48274fba0640f8609b6554a7760856259c32df00d3056aef65436a285583cfc9d9a644f66e382d4907c6d78aa461a2b6ba8887c238f81d31e796a675ee8b7a598afd5d79a0587965420a2e9f2782b71331737680a499aa759824d11acf1a001f9a5865b6568ed8a1f4f4cc38f74c24e231965e9830232924526baa377b2ee933a1fc4677ee74fd98a0881628315aa95085c7415a1a51a98406fa345a69802ba71cfc885816ea30fadea0232b13eafbc24b84347124bb41f8c663506665ce4c3801b09933c19675c1f9ce54c418207b69215c91b10451730de65a4aab6c97804ad33c50233f83599133510bb334d9c1f4b7970087700ef45500ccb31b7933fe74a346aea4c9bd409bc5a186f00bdca67cfa8d041dfeaa56547a71c35cef1b664629ac9d4f431cfccaf62a781a4bbb2adca7a7914627da380873977e6e1a11fec0938a3a886e9b328a8a539557f6c700285693266742f779bbe2e7a0603060673c7be9591be19a57a0cac91cd1c61860a86356b90715886acac2306190cff686883a61e56140f64ba76123c1b07614ff5c8a4b402cdba738ab68b749c1151da62c30dfaa3bf826d4848c4910c9ea20669735cca4df583e0c5412b610bce816fd17ab9c203a7ea42081901c8cd78940f090efb49718ac90ad6a101093580c13b5ffa0ac0d7b094d913a9ddfab03f835f79173e966746c69a0228d06a2c363e94522ec68312cd312eccdc688c4a88f6a5b7c3464cb7ec842fc1377359a162032c8c504105461936714f451481d8a4942d1715b6a65583999b96b0c47a914f2f721f5ec6315c91b009e714f6518bfdc75e828256f25740c91e7efd93a5d7db1850127df85b8f086dfc57f1f62a86d6ee7e45aff3f27bc1db315cafbaec2f8a0142f45affff65289e826c9244ab1cb03f9f65df3e3cbcf711136e2681df2ef881b51a092a9badbe72c9772c169808521c47149578621e28 +ciphertext = b13cbbc323f152b23a9715d1e210086445587a3a62a216ec00b74c0026982b21e6c2fd63d059d5f001deb171703127d47928a6cd9cb5093c3e6dab85d8c36af2815563817e53ea71610b8ffe9f6d969f0515550a62a7712341fa7e3a98b4823bcf0c3a98ba7976cd5ff343aaf0e01872718010bf60f6c28ec3955539b117fe8c0b5e59021462f4f32e5253514d41a31436190b9b4cf0fa55647d71742893a7b83aad7caf98d5bd0394c8ae4ba6dc192288b69e0406fff2b0c61dad7f474e7a3bac1cd2dd2c96ec38521e0a3a37d807d554316d7f2f998d91389aaedc370845813833f147ad4494f7aa59899a9b23be3daec4d79038c746728021e6b341ce04c2904b323224a8eb48e6bc6f81bcd2b3484c5921e2e6c243e1d2b66593144c350ec5ecd7a5939527bcffed92ae72d7e1c71aee263bcbdb50e5bf91b276b3fd2582a8533c4d2088d7d079d821b5f5b25775d60b6512b8fe64d677a67118656ac602b0033661f6fed92237c6a078f037c3ec19fc4a9d8f0a31b9ae80a3e060868b2af0011ee08afffcd0b62c17d91d96c5eb13edc7adb97b6a245d34585094541b138de269f38ad87a3edf3062a24d551d239fd5c409b038b45581fa8529f64859cd5091094e9639f18bfc422190356b6d8bb92368fde8c670d053aff96539ff179e7c8e1385e328b070e9b1e40174d7344e2f552eee4eec8ce9b6e81ba9f67782cbaf0d187caf801d0fd4cc66e88139698eef60638763f90c24f5d072f6895f1d04243b4ffa6fb106d6db627b5e0fddf2452b383f76020ac14be23977a17617666bdaef26bf60ea597407ece5668f334290edb4abf51baddab112fc9486ca90048bdef3bb79a18bc6ce4d7ad1abaae3e593115ffbbdfede454943370a7a5f58a47930f82fa7999a8016028fdd906be7bbf4a21bf4f4851278515d3d18ebac857326aef3273a82a7a78538f9c4a0365acbc61a0cecbaeffb5f66efad5d47b78a690a7aad41fc8c9787af7c09f4a5fb38def3eddee45eceeaff670315cdcbb174b4fa5f0a5bbd7e2d8d65f0b0862e141a9cf6350e6611cbc5ee2ac10d1ec3debafc912627aea0607c4510f9ae4d8ab076c84546a0e76309057fc66e4813bde218346a4fff9e026446dccb73225308605a2ba9b552db468f43f22d81b305bd255f59e4fc62a7e5e0c559b839e2be1a875826fc22dfb4f57eec3bc7cc45064d7438f2b11ddbd319c9405a5479ddaf567c0e6ac8e8361350ccae87e5b2219b6383bb16be9aaebec1df4f736ada17e663afd9f65d68aeadaa66d74b4f8828b14f33466d6ac3173d6c290608d449b493d6f45f9afb00fde8e10007b367596db43f5a931fc83c3e8f5cb3aa218c25b76ccbeeedc17bb1b08f0ee9ee08e380d663b482d39cfdf5167a2b862a65107471852df5f50591212b42fd3942940f5e8a8693d107306ac7b21e4562fa2413b08375c92b1d73476d6d67cca6ac3776de360d3da5d330f2e0ff9df91df9503162d5723fb1bbe2edb8e04a21dba70bd868d403a2c42bdc11 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 232dbfa6a447dc6de3ed68e1b45742b6e95c723a358525e8e05beb619c5607944c342aeaca5cdeb297bfe3a9dd514aba3df3d867d646cd76a1ed1e76f1e84ee617d4b1ed4367ef7ed003f2bb04f42205f9a05e67435b88095eb48df7e7e41aeb56387d470581580ebc2c8dc55f33b3c30f44e1ef7ffcf43c457a36751dda4404b4157cbefa05c5506dd21694d59939a3aa088dbcae3be66d47df55dafe33c8742abb0cf48e0b2cf4e97e9eecf4eec4b3f54836b4e45b4eebbb43d398a813bccc0d4fcc4e43705084dc892b657765b2529438973f5e3f4c45887452847aa315ba8c811b39254a5c3ee64f668f3fcf2a92e3198d2a9ef89f1fe530aa4cbe3edfab05e19449fe25e755d778a02dae45fff471668eeab9397a0f9b3def26bd0f5e43c23a815c85829775f1d63bc74d8b42ba5f80cdc77de45f862896ff44d475f49ac204c87d2647414a5ae36a094b7fc9f3bfd3496b187592f8eb8168bdffd952306dbc3715ffc579cb3f7a398dd677ba14a3fdbef48057a59a58531b8aef1773735a2761262db0322e390c06f5d479f7cec7c7d00ab13ecfba6455f36bc68642ec9659d7bba40aa692d4d794bc4bf6fe3fbc6e7e711a54be8f5329ac6a9bffa88a54a601cdcd6754b4a3accadb397cacffaf41463c016efd6e2d6d011baf6d833e4abb8dfbf736e08d36278a8125389c3b9994098e760bce50967464493f42de5f358a075271fb82d949af57f345e5dc46845a94a37893613a76b6e7b4d0ebdedebfe3302677fb73c493a349704333279bf01b6baa8315731a348ded37f83dbaa05e057c26c35d68b5f52f27e5338ae543895dfa4c395fa9d9b8cef83b55db7183d292d3fdcffca0532eb14849aa5f94888e2a3fd33cab3b48df8093742247ac281efe8d7a6b880f983dfba4370e677679568b8d51935e33fbf6550dd3e8e387c3e3176ec9c3cad6a739c6ba5b72fa58801ddca9fd6eeb0d3cd05970653bdf409fb8bd4aa1571bd2cbcfed2cdda9937a499943ce285b32706589c11cb66256e4456f9f5c755b4a09805dd5659127bdcf5466270a5cb73f8fdd0583e80eaa98d340965d6284b63a6f7b39d0c3efedc43e20e4bcb39b99d835e5e14e627fc540239dbe759ad6292fc26b85d46324ed9de8793b385f556a3a3f74bd8ac6ef6a3d4ac418fe09ffcd05e5beaeee7d2c87b9536ad84a7bd547389d08f548031beddb0e37d28dd39e18fc5583bc83695aff0898f8ee9e552d4582989556c9f4df35a00d5e8ab95cbb466b5ba0d8aef007a82a4f948719d2e84e52832365fdb79508b69e45484139b4342df8c391864b80f8d7b9dc8ddcd44640dea986986b81b6fd79aa95663d8ac157ef0add9a24ff4e4ee5522c1df6587d674d6e348fdb3bfdd539995bf0ff22b21026f961b56dba5382537edfa607372ebe317497b85307b61d99da62c9de4dd37246763dc6093af5f4cd0edfd081ba4ce2d6bbdc9695816d7022c590a1687005bd730a07ed6069dd1a7bfa5f5ec743dfcbbab8f6610d55f59ee288ad62da1696a238d8507aac327a9194c5c6d49c823567e00c158e60b845af953539a855d217c5a77599b1783f7488aa860ff3df73b837e4b8d20d6a8fd6b5b16d83690b34b6586039100e84215eddb39ad2d40ba9f80165623122a2c5faf3437ab0376894ce67397d32a67c3bfb9761850c1c68ad988348725c83a378143d504400f995157903b9d04ee43404ab2cc7c35b8e0e09cce4559945f5640450703f81c35ed332746162f7b8328f78bfc3359e7c1b4fcf06155fc745c70245ffec09eca957c8475c62b05bfff288a5e5a5c78206e48c3ef373658859c3d9636786980578c07b764641d6a87222224557d10436fc72b563883ecb0934e50b6ec89429d7792ec0bfcda416fc2ac323a58df3fbcdb6e023140478868055251b1c09fa023e240e109869c1d2967f598a529042d9859f97cca2e85a635418707b3aa1835b77df93ae4dc53f228083de6a04bdf58655c59bf57b107987b88cbc001e010b9c2458bdf138288190f955b62c7013dd5784c809a7b1a29f8c3c33f0311a555306327392ddd44ec8f72fd5893f56f58baf207f9ee98b7e31092f761c390763a8b57409c7c5c665a913e20c9b62a5e80646364aa8e3b95030fb2fb289991b8637ea57c7b324a25e0389ce979b5e816ff841456261bf042c85dad84f80d788076b7c69cabb8e389a72657d7d63949657b934a468516c36674194df1ac3f595a294c28d24c26e1b1b5af5b542e025a182868e1555442e0b0d064865ed5cc1665074e55aaad601779e591e1ed2ab07cc551437603d24ca743218fa846822b2857f871fa26834e0422746a6c7dad256bc0b4bfff21bd7309482d7669f8857543a0436140ec684c959d26f2f827a84b37534b7aa3bc0a08163689f01141b511e7d11a316d2aa7d73909e889dd000c20e38667da048278b5ee87188607b4210642f5c38866fac1549637c600c8be8c60c11aa394e8344b6c6536e687ef6dabac397abf1ca7486f6ae87d8a3dc8070b5687f7c6a73225b9233685c6b703d33677998c24e40a72894193cca1c5acbe4a133d85a6912587ad4ad522214974cbb1f877e16164683021ea9c335d41b000cf52a3ed45b2d95b7e2d061b5213db4c6bc36d76df5db9ee6984d31bcb1f6757de7e51871f1ae7f388c5134956d3286a49bba39967889c9a424772bf5dab014c94893a4c8b74ab099687919243c7633caf297b2b73ab15df419f6ec22d15a95553831be379ed0489749c495e3b6b8e190049a8065dba8933fb21ba3a751cff289a2e2772b06a4687338ca88c0eef1488b848afa1041f4f9607eb18bc0650055803041b728f2f1922cd984d228096ff29e71f097921423cb82254c40a615240a2482a3f5f095f5b399a8f9addeb6b726f43e3af64d09038cafea26686caa2ce2194cba660edbb083f92dc2a51142bbc922958c86c62ce7a4b3a4c95240d72244a912c3c193485208cddc4514495b35863cfc6cb41fa721a78080fd7ba72669ac6b29accd3b832d35ad70f7584e197d695b78c832000c1c337fc019f0aac04b2149a469420c15b2daf5281dba5dc3618e0135c043f139cc74b14e7451fc11328f06b73f124766403541131d94506628c30b7ba68564179faed9c9d2a20f3b61793a33a65e92b699a47fde974eecbace22690273a757da903a886778002d283a819cb1ea2d34b8462dcab57c85653e363629d9270738434ab1bb46bb71890031ffecaf8fc027d2dfa2a4ad271dd702f055836f40ca137e5d0ef9c8d853e65b5b118e28b7cb6f0d5d6f282e0ea20fd72f3690a6b232b20a8a55ec6ceb14f7662be0c42779459f69a145c0e2ce9f0bd9a0cd1bf32ed5694cc9ae32 +ciphertext = f4245573118edd0abc115298abb1c7c118cc0d6a4365febfec360b289f244e1971e472049c9cfcef5f27d6bb6ae106138e1b42573f8dcfe10e41c49857cf586c8e1fb88e14e4e96c51d7a3775b84c38dca2361c4cfb637caf53ccfe6789ff289c1771b68832d0b445b66453699e534d81bd7d9faf248fe49b5e1be19a5e49c837191aa8ab301cde1e69b49481a2788c1aa99eb974ae2dc0a8dfc94f14baf821ef4cecee893b1c296903412c48a4aee3b1eea76370961fde96f772fa1b20a3209299e2926f76605dbd256938a9069c2564ab418c5343cdfcec02ffb2bb5a422615fdbd12a661a067e38cd35b86af9e18537e3c1f041b601e1c305ab6712d6b42ee2248f985787701270a51b052e32a52a4d9db52f1f9a775b387b0c4dccf4b5efcaf4e25c522b515cca2ab912b2cf07b7c421747357109205530c9927a3c9b639c7c473a991459f7b3391c0392a63534b0f0e604a969b3da8c29969301d8be3ba068d9a2723a6277334bc651f906166d78366e632b686145a0afd0b940221a0057274fb16b7f74fe8674c2c59199ae2f296dbffff51082655c19928eaa3bddce0fb27e5d72af612c7484d715c61fe11bb9d8b17b741aeb3b14e501999764dffca386f683d07d1b1e72329c7da38b029a970cfb1a94ac74901e07d0ccd40225ded0a778870419a7c3b32ef6ef05b1419521006706916f7d7663f8603b62e7396e047e1fc78661d7d6346623ea28e80510ddddcf918e2b985180a1a1c58ee5d40bb0a287890c0344d3cde39fda5a8c64a4e4c906dbcca97b593918ebd9f70ab79412bdc4ecc3417eec3a26cd5854b479d623cceb9129c1ab490ec98418737e5501f1fe51299eddeb86655d702d85bed3c4ae44ce16395124706cd763c80af32464504fa0d267f6ee03990b57afa2fd3a8067cd5d34b92a753bf9f590b506e2e81862cd7bc617bba82027bb9f900b55c7fcdb11485904ee2df24ffd095fdd05c1eb5d2da47080a8d3ec103d5ea7d516e1fc59bfb4f76591e10ea9e047b082b9fbeda25fdff8a946acdab298ddab2df2cb3d9ee0a781685b3b47d97009324bec36e9ad95e615fedd28505b969004b5a49aa517eea6d20ad42af18a46361df1caf9d3663fe5bc9d043d407faba0515fed3b6a615b03ef11685e4657dfbc165f20df62644e62074b9d86606e736d362b855f31402f936a2cd8d5cb96e3c209b7862b2687f054306b106b3b92570ce066ae63de2b1523590c7fbc03fb516d17ce1e13ddcc692e15f2d262b87688b9334edc0b33bbe4113e608d16c7e34b23bd3e854ed1cea39cd2548edaf85e1ff413c2afbee72cbc9d6d91ea2e98e4a1afd06c44b419b5a6a75579d89917e828edbefef6aa33c26489d7cda35e9c781b7ef5e41601593c4536aacb5cda2d8b75655f5c807f1e555da5c1415076ab0dd8d925ccd8e9493ec4a8185670d335bc7e348d8e3af544b17beae9d910c3de0b9ad5111dac9e80caa2d9960f3808858cb7be6151b76530254e8966fdb2b27cef7b7b941ebf2716b +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 7934a9fabc835bf9a77bc8d7342f51dbbdd876e5500d2c59f07485ee0ebc9359e1a336acde65f7dd166476daed1aa558cd88cd7cde7ce189e958e851991867c15f5c957fa953c8b04a83de2e23fc6c26811cb86f3244f29f4caa2aeacd2e3c840e97b8f28d5b94d7317b08354bcab64887a4e6a98ffe9da7544562ceabbcce6489c6e8534119c9589c405d7a96df3f30094a459549b6f47d78f3ddefc918df049464b0a969eb84f419147c8b39b8065a769e5dda17cbf5df5ea699b69d54ba460d33ac6a69659178f9b7a578d1bf4bff786cef9963bfa6eadddfdf9a0cb1c159865a344a0e36879c67852d05dbca08a46f7fa4a71cd27def83de5bcb21a8d8f2635bd764d915c5485ac7d358dbd1798fb12acb4427cffb036d5874ffbd0da59a668d75136cbe164e8cca1ae1386aad43b5fe3c5ac97f36bc7f648809cf60643c325cf456e6166eeec74ee8476ad62c73d7d334ac279d84b66b6c8aac217a813dbb3dc70d7318ae65e7ae657e0f77c1e683beccc956d973c86f4e95a7f4ff9275c1bafbb5aca75159721b8c6d7b299c7acb4704c654335982e83ab3724ccab47d9d217dec2a943d5bfbb3d384a7e83a77949d5302be704cf49992077b1a0df14f3394717c9abaae73124dd4fe3f5edb797a30155d0d3aee4984644f245f5b495b56a98fdc487b29b4a5c6dc4e3047a8da2c9326fe705613705628458be5f5fb333087cb4b967a61a994cbefd5d4d19ceb8b6f898a03fcc454a57e264722897d5dd7ee33cf495ca857e2af34af6ec77083ba9b88d342d7cfdff8b7ed1f57b79cad028ee3a3238510c5683c3a8c396986ed49fb022fc16e34a7249691ea7a931c54d880ae731746c1f3855bc734e4fe3484d85b5e2586b6231b4bcf27831ea7b5717da815795f43f9db221fb235f5959faf53db86e92bdbe1d5ee6399e4dc5ecda15d98c3b4cdf89f07839f7738abb3f81d45aa0a9ca1d349a64e89f46c2c77712f7f1e1cc74db8ab7ea7b0e60a9dc0e45443c3dca656cd6a8897ac1d5bdb5eb02179936f04374554a52a9f710f2a70972479463af859736c2fe4359a474939ac3532bf90609dbc3896db5615abfb2ae3288e4c01048bb93c9725c7c3b0547921975766a97e29e5f9e4d8a090c36820ebdfec43f77cc679cd4a51f7dad5f204bff20acf63ec403ac7ccaba5ea8fce66c545abfce8734843f7507f4e77e68137967da765e5e4cf70ce79838839721bf3a14ca5f08517ed6b3a555cf6fd96e7736a583f4407f7aec9f1caa340d4bb788d63645dfbf6226f9dff9afc52df3bfee95caa7756f1884a0ddf63039c37f84e5e83d4908507c1b17a7308cb329e8f9c86953422b8b2f1786a4b86b98085e25533925867fa02bbf2ad845632f859ebdff3e1245ac3533d369f46316a3cc1ac58b4e638669f859557e71ded5dd7a76bf8e93901eb7f411e4175ac45e0b35109ac57be844c52e3ea7bb6da2403dff0e4558134fc03fdf0ec86af106836b3dba8071bb8e8574fe02d8100a8fe55f4b0dcb7f52154da2aea68c58bf03ade4b21a56274a7feccac7eee4ec4b26cbe2c973508fecdf4f6e80784d6ccd3c8c61e85451783526ff48583db1a1ca7972bd1766b914e835244bb530c48419abc7578b33d6db56c76179e9da3808ba4c8d7c227ba5c64afd5c87e01c1ad12a294758f45804719dc7369950e9e6398bfcb60a7819585a689462346aa5968dfa83bbb3b8a51bb59311c9d100a4a0c7586056201ffc3cbd92c3a42d6851ec064a89227b4d1551ca7af6b5b3e892b4e44571669412e4240a08c42551dcc50086389f9e0c0290956b5ac58844a84be308d0a5562b57b5cbc594ceae87910a13167f27ce63b822f201af5e9c33bca746ba7c5e8541fff17324228321c7a0ec976646a6b5615f80fb56351d319b31960aa8823426682a610652652994d4a78c25659b533f5b40e6236a6e704cd891502e9c2d1858ca64c94d3734ac0bbcab2db2f9e03450e721a38c82a4c26a487f006e1966fbf8063ab115e74f441837506559ba5b7266f62b17e4d959209b657193689a0354149880d08434fbc282713118d9daa89c52186ea918ce2c170d8380e45a32e9f710cd6f89daf91c9210b767d743f61655a9702051d7c8a46f17a681b136c0863cb62430d084d282099d1636c04d6b1ec212a74046d2d8108470123dd751db685a1a1fb3a3b2c216f51302fa13ad73b919a439d424a4ad9e12994d1963b3c0e0316739ce50a1a7c23d65acea61423a5792321a84ad2e1b3f5b595f11637eaca77fc753260e04cec9ccf55d70d4d567bb78749efd005c9525f6e921f0630c25cb9a129781b9b864b7556272d5b4164e340d9464bf192979a073384f6a5e52aa0b6b74d43faa5412c5914524974161afcd91660705659dca87ba482d67c8c1400b069e66a19905b331243701ac8261952c5b736b25290235669fbdcc254631294fa2e97c440d97a0211c35c2ff4b6009aa66e27cc09bc09307c7b3794a5d189892ea60b2b323e95057ff355114ab48613e2760e00baeb82b0a763067e216aab899e7ca06e195a5e92486ce8911bfd5c7d956318ac3b029436a9d88c56aae2a3dc7b382f2c5e7265a037a827761447fc59a40a3c8693bc996ca786fa7ac1bbcc6aa404a1bfdb3d227c6abe42cfc463c2f1542ae418cf4b38cc2c1595f9343d41b4a1967c7c94a7a0ae91cec8235705805af096cbefd0cad6dc0bb5130907d64e76e4be957a117d121d66071598112ea7d02b9648cf53e57af9e7cc3c9803aab327d87c53e41cb9bbc42368d332e0a963c3385c18936ad7483a5f4292b625c844c2282f25af0c86984ddc09371ab555d57de146664faab59dfa514f8bb8d397a987bbc8dbe147efc2a34daaa712baa1e36c9c5113a7f47ba8c4a83db2dc79ae93688af7c480dc8adf0b12d7f5453e669be2d805dd6961454ba8b40c6efa961e53da19eea2243c998b504c8ab9eaa2db11b2f9b591990040954a1567074e69154ad6e618d0830d3b554fe4c99f48b51cf6609952cc9693acab000c335b98126b4b45a9f317f80a6049558fe9d855a026aefdc649d295387c530e075ccb32aaa202171c6f6907a4a2202a9c5fcf252d98328f12f927e31c596047140af9b177e0352b120954d00529a07d6b2bce5026a6d7cba01231a85ba39b1692694788c9215b69fcd111fdc8934a1ba24cc7890eb479aef01ff29161b0a7ad921bb72a8b495ffa74c62c880bf03f0bc175eb865a17ecb56e0aea501bef8e12d3025185ba4cf8edd1b0f297471d58c26516f69bd52cb1d071f1cc7720f949d44f66f40c917eb30f3a4b0eb519ecad2d03dcfaeb2ef44d2f608621e831187ce79b2d2f4a20f1568bbe76b0d3d5af36111714 +ciphertext = 692da34419ae1d6ea887c5910ad9c1e027ca2717684d8cf8d73519be768bbe6844139f4e75a63b0251cc9842de4aef1473122681f288a19ce658cfb921114e619de23dabd7db3eb80befd83216eeee6639c589aae70ac2fb8f1b839e953a9070d287e498329e5748ac3cecdc3effdb7c75b860a64ef4a389262959b42070bdffeddbf1b41853cd7c5517a6dccbfcf74f392fa85ba62cce1dcf30a3ed8cf6608381a06051767b3f8b9e836c44c20bf54c4e174e1da9cdba988d049ae0f43f1eaf9ccfe4ad537de224db0d54efc313cdc8a16d356bbca595811f6991f80f94fbac41c45db49892ba56b20256c375b130d64a24fda9c9d796554923418dc18fb92f4e93df2ae2351c5a53566472f57e0e206d818e1d1128abf61f984ceea23df1697561fa48d0d6d5a0ff59f705297da6949955091dbb013c091d200f5856bdcb6166ecc42c36038588791f0b47dcf6dcc7a045487ba59b0075e3b53817bb8544e98a9b60a426ecdabc139792367d99e18611ac931680d59c876fe55954e3cb311c683f514520ce59cca491e3c4fc4b0f201d554f9b7667b19642639db4866c1242f0745d29383a2d009c844d2605e93e9c62d65e1d44b7030d3cc943bf0f291547f7a91f9edf37c3d0dbf1ef9d770e838f626e591e751ed64ce5b94e114cd443be38955a2ab79ce76f28800cea4cb662c1dfaef1985dbc955e09fe1156dd87d93701d05641e65127a96853ec478bd59ce855f28674db4f21188ee0572e3cf0840009c1029edad1dbc119ebb219a37f3407427c1dcb96b4f676979bd77ceebfdc0f89a8f0b759fd19787f3105c98d0797ac038d3989e1ded23fa49f3c9c580a5147d847a9f0048ee9d816176cdedc5c3bd97961687d59794dee37a2a9c7c4e6c8028b48976e944c8d45c7d7f637e50b25e4440263a67ef562e2baa5ec3c978ff8e6c390b57ff082c202272fa7e6bd4e482fb5fe7205dc56962d28d6f1ce85659299cd913938cd036268856b564a154af0e877fdad96ab0a185048cd1ea6b7dc8de79412378126be5d10ddfe4d5cdc027f183fbdd80cd9005250d72b5b2b8d824cb4512e1d15f85f68626ac262b4e169b8201ef197da7c208378a3c5d495de78bd780dbdf8e0f1b55811512fd78c1695f028f386d7bb591dd962b403da023977bb66c4145239e61730da1d91741237a65e686bd48fec1be0a6bda744a16db76f0c4622fca5d3dd2f87628deed85f8efd90f8778b2d9ff8a4150028b65aafc318571a8b954819c1c9bf0eaa2d1aeea6373213513696feb1eef11057106a76aaf501ad784326caf958c5c94bb473ad548b8db8dd508d44a667a420f7252d44e46148e76a9dbaaa766ab0578111ebc542aef2a85c0249893053ec5fc19c4fa0979227ca550e46367fd2e09d018cc894d9c24409b946f6464c54987a09b54a96bf5e672129b391b0aa95aab3903066324ade24b51dfaca8af884369f77dfdfb5e5923bb5a497e721f46a6332a6d6b822c25e581f4190080834b2e973263f22f8bd9708d7 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 46f47851efb9aa4a6d21aef5be5880610fc278b6f95da7a4ffe855525f9f17d83b359bf43f2a622f353eb6138cc648df8ad3340d7575e865a6cfd34bf473a3da8b9fca6ecd921452d09b320add41d77ef576c573b094f2725e60b99ea3380f68478d78f5464d7e5b84b3a3793f0c7cb3ada13df37b9763cfbf054c769bee66bdde8366b40635ef812c5d428853d1fddf7bd58a8e34827556ec1336c2ac6a39783a35d849aa9a847f3705dce0b95f617bc7aebf8c0506c16ea3ce89aaa28b9f52f1fff8d0fca732289d05d9395133a82d8cb76ecfd23934f73b39cb52b5a846f338b96c5b6f3acb41d7f65a0c5b13094232fd5943d58875ba7c2a6889f27ed7d325ad1c9eda0b3c9e8938e69d54d194bbb90f87e796856f9888e58a53feff84ffbfd5acaf59521e46ef449cdbebe8d5a1b4435d0761d0448d84fef01b5d6a0b0a498027fd05e88d7d87b42054680cda74a396d27aa4c3c5193fb1a893bfcf722d55ab9b94dd99cc81418e53b38334529f649eb99825bb4b1957326c4791a38ff952cdab6757ff494ec20c23926c3c331f24c360f8e978cf791f03e81c2c489b68c923b65d8ee6bd2e6ede6ae97fb87ebab50ebc1b4f935f38a0fd43ae2f9af4d8fc3f6e15c2c6bc800b73ccd8f9ec592452484b44e7bfa62498e0655f6182a5d349c78c7d68e80b1676b529eeb6065c50596232b9566e4b8f0635a7d729f7f8eb8572f6fd57996ddf66cfee2e47dc3451e96cd34d6b9145ccdd30d9e5d67becce3674073eff8bc4d75519ec9dbd306a59def5336e2108fd1b7b6ccc8980da28a3498e51130ddd5746feb163a36f0e6d610df1be1fb6796c9a88a8af4e833fc4585652e76f2ff77deed799757c7f65ed7ee6e6a300edecbbc840af66e747df79beaa71dea5318aa3cb3c4c63c4b9ee0fc6dd6dd6abf10bf5d2bd78dea4e3f2bdbfd99e6577c4cc9e1bdc3336f5a5fb705e94babced659f1ff23458652aae94012a6e9e7650c504c380436e1df83e5c5c9e22f79f394bc0f23adad01e4b918f9b442effde6e7089c8b9d97fb70e8df7d754d2b75d58347b56074ba33fc9e998e5a559d46622f5423808c82373e7767a32e487fae66ca472ec7828d682d045835ebc5e0089b0ff955dcfb9605214a3e5087f7ee57d5369abd0febe00c7bbc5b5b25a1ced8544f4123c98fb43d31853fd324bbc743d342224ba009e9849d65e1d08a77e07d07dfe6ce6f64fc71374eefb66bf9c742f5e8f2f3dc48008f752c8ec4ce7bf42593b990980da4d62f96a7178258f32efb90e96f41c04b7b54d57bf57d0a14db6c1bd8e4e8a6bf1dbeeef738f51ca9bebace9b95becc623704a7cf4560d9f48b4cdd0f4a5d8fd6320457670db92c7a437174359371dd22da4600c66f96d336a52e988898e8ca20f82d4767010a7abe08ebb686fd48b6be63da385d7c5cb145ed8edbd33996ddc171fa1bd563b22adbc7b94c9719a75bf3b3e02143bf04a7e3dabd070c4b449cb9595aea8bbf871e5a5e78bbcb611b466a8677905443ac0ae601a9664c5f54f36dcc1ddf35381f586b4aa4567ddfbe72de86df8493b3d479f4c72abfd49a6666e807be3fd77c3b73872209ef18b48984ef374baccd156f94e9eb92fff176a27197eb4ab0171211dc7fa954c652698c50105b5c2e9f7a2a887bfb40880f8624e1fc67b1b43a51139ac6025b9eeb60925d424bb82c58b4b617618c43c99b07fb14e5b86538d29700e1ccb4f53a52bda2ef566b20d8cce1d7616dc81398d14abd03964940c794e6100da994d5bc0bcf28b04a8971214e7ab9285515ef09a7b486ecae5c84655c9ee15255b715c3b784d9c243993171c604a3e29450728396e7572228610bb9ac04b06577b3636c137a24e2139b48db005553152c6b040cf0b2408248675eb90afb66d6105537a316c7c989746f43c3b284342e2cdb5f2183a16ce71ab39c67797112b0b907c00f6a47f17db08d924826d526cf88234a25676d82449f93b2859076978860e499a0de134a936e35f06a7802456008c23970818318aa2b55a1762a9394dda7a49ebb4b38469410f5945dba2801ac25ba39a2df819b0db194b53c4247fa5065ff99f73e71d51c22f51fc262dd2809ebcc6879b0d90004da5ba7cc9462f6c822ac8fac8ab95b769a465cd743ba2babb26958ab9c3494d329a0c736c28a9cf84f5c90c5a0594485a9b339212d01bf6910105d44109b09bd063b4f2f3b903c94dc650812ae5cc87527754d476ffa82f34f39b5462006029875712cfb1da648dabace5aa1590b5ccea82c20e74795c71bb70826ef4d0bba580a447693a42d8af3256c64ce327b370ce576b6343f2bf8fecc76e1434d5e448aa8a3b326584ddc56496704be54108f8572170c2bc39680598017641422bb81645959b8092e82a54c68aff60b78be78107e7bcacb241b09913461579b52aac5c6c8627cc033be2273580a523d4cb7979cb65d7056643856be187ddac112799559a87168aa96a18089a6c547e87da949c62b8ea876aa0192af409bfbc354f05dc08fed46904a2688fba59fb71b83031a19bc8a6350bba93552be0c01b73c89964563fe588a5b76971dacba69868b588bb2f9076532d6a8fb4316dda4c85c2945a2a29b6ead3900e50abef2b44375ac36bcb0e028a20cce58353c827f1d53a9a0510e3827cbd1383a6d18c0d22c374e2b6061c2197a6cb094ca9dcb42f0418c24a9cb893c45423447cd5eabb0b9b410c9144013543e5c3bad525377ce8073d4a5f4a22bb24874b7e21523cca731265572b487e3b42ae581a617437348c290f00ad09460aa0c7b6a1a53128e4e01b3c406a296cb35ca0bd0d1917dff42a4848ab3bc28a2a28044c719ccaac45c513ca007653bc854dbdb79181157aa17220153ca3563b21be77aceae06bcd02531ff5b7f5453db0119364dc4e97ac7a495287815b5eb512129643aac4f42b3af35afc1207db0a3194302fef097bae37bf382c154e78154b3407bbd90bb2143bc285af1ea0b1b4fbcd3ea373a077c6107ac2800c89f20544cb7a83baf26ef19367724b1c989c39bcb4337deabf7d531fe2b3327f4ab0f6457c5f3869590c49664923993cb2b0103b8e8a41cc5793acd192a047972978a2ea1b9e354cb135f2ad8928574b2c14fbc1a4c02715292c9052b69ab2a8329c02938bfa0994c209f816a24eb13f4365af2d20240ef66f9bf6b39d54ab5d350c7cb3cd6f645379815aa3028232bc89bb89bfa2c62e351a3c6401b7b384ec61a83f9056f3665e523a0c28d48e778b0314c1ec2a83ee9805d010e01965f9c196d2f5f90ce3ce8f552f8a0d76ba8f5345365392febc50560012a2985c1c4d203778597947d710dec806e36b0cd949fe460ef141213bfc525e5b +ciphertext = 6d7d3b4a4c4089566f5519cff32e125274f9706757ac5e10fd2e3b104025ff7aa64192ecfc2ffaa86e2f48c8afbfbc635b75ddc04d2867a39054d0c3489ebefb7297215a505e7f65d93115592d78a709195f9cdf6a3cd7a7cc1b9cef75aef9fb2bc05136c5c73714d6b078cd2ba88bbe9fb61302e1d0771520509b90163d1514bb510d2e2a0e4e4872e607f303ecd6b9d36bbd694c3ae905d7c9424b604be28ef2e985977a575d778e219dad4a16b0107cd68af5ade5fe9e3ca48910fd2b6545ab2a38fb9e7159ed97b1c8d3aa7b962e4eba2d75439a6846f9c7447685d8208934c6b9dc0a47103fc71ae6612b10d4c71beb667746e9ac680a2c750331d1d79a54b3e991aa7eea7ff896d98a63c7f499f646b349b695d74aa849a4268c450d72aa8f531784641282c7f58f207c085144a1bbb28b657e9dfeabc03ef0784fb4aca22a2fd0678ff1b365b987c170225c6785540ec2112a577c20151dbd47028e88bc2b45723c3b50edc0efc0bafc741c4b8208aeca01f2af5c223d5c6016676b09c8ffb64874616a2891031a3fcb2c4d21c073b5bf14b6e5e313bd252267ea4165b347793de3f4f93b9f269ea07a60548c9fb8560a49e544aff22017ceff150ef44b12dc013b6675c1b709d4f40808fa37a9352dff8d37acf1ac5f7e6a27673dc79e83cae6b1e69fe113155646cd1b6e87e2e9cf67c3f2d2576a2c47a6156caa33fc547f343c51a17932368e1290e0ba91e35482a70c7777eb45a482f261f77cd88dfc4ffdbab03e01740fac45457a6653059975519f2db38c9155a31bafd22c57c5212483bfc55ef9bec51be4860eb574bde711dda9825db976e39f535a7edfae6077e1e1644776fadff2f9e18e98eb238c7bdf35c9c1af1889f08d61f51227387c5b01d0434178b55aabbc1945c78cc4da30d4b799ca4da2228c410bd8d5d4a01a0a8b0530a61277c9db721946cc605d089fd944a8c8787aeaa9f3fc6026bff912cebb5b85923d25cce52e1372b5861957a39db748cf275c4530479b3f0d061ae44599fb392337b2e5f8cfe8a77c73dba4c9a77428e47abc6011cf37e86d8a748d2899bea405b2fe43172ac5361482b69c3b16afeac9f43016f3dd0191f627624e5faff4a92e1853b16f4635b41cc1b256f27f54930139c3b50d5b2126c86121ec72f7fd11d06f728412e309b9df172d2acd8f1f7c1a6c86629e3e0174023e3e73d01379327a59031829aa7d6acf01b22cd550b1fe31af06d91f43fa51cd5b6df75e6081c84875773b053c6e473b8cf1b13620633082a47f1610cd60e64da50902801f0077e65a0d4d2a5467e59d7e1b95b0eeb95db0642ff81c2cf6b76d42e6bdb58fbfc0730a55f81c2886160df921a8c04c6175008743796a4a67494cea3049b8ac89df062aabaab5c277bf1a81a61d4b42000b2fb55b027d9bb6d3e3e984ee595c6a76b66332b9554b38fdb0e93b77cfd9f891f25c7105fd2c1679a04ed526cfa6a26984e19d71b2b57ac3635f233dff02a799e9cdd565bedfca93d2ed66 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 8757f52c693a0d7cd6ab76d71b13517e1c45abb370d26aba3fc3e642ae70b365c5f6235d1fd688d81c72716a39225fdd228a7bd6aec48ff445c47489b91e6b7dae4d3ea78b20a7b5e579c5691e87a2aa8fca0d55761ed03fb9bead185ba9e7939f247bf1757ea66a4392095eaa0f39a3c67a8cb7d186047d9a7bd6b8887faf0eba8e55631abdd3934c88ddfbd5f9f3b4964a6545e8443f57383a2bcdafd96c794b399296615bcb9c59f8703595709724b6a4bcad07fee6f464fc443fd72e3c67140e5b1339512419b4daa8c87f5a8bff58e964a8ab8b2de94333df9527a10b6d4df6275e1ffe8fe54a57d7544402134ab788d2333897d4769ac33d93f9b951d735b5623452ca0f70a0896ed3b8ebf129ee451a4a67a4542556af79fe690a8f3610febfcff663878f7df93bcd894ac8c996be6e1af9df7dccd459b9de46acc9f8d43bc8fd01d4de5785845ff4b0ddc8e84afc5e52b7fe8a9d93669a9eb21da101bee5934ebdd416e2aabe955b1752810764e7b68d8a7d4a6154fadf78e08bbff9e406cd10b6527a39a6b56d68685b5e802cc25614492dbb6e06caf160e930733956e8bf9ab9a8ed4b477cd4eab880e56eb81eb278f540ad2d4a996b32fd06b8bfcb772976dcf61f5fe26f619906f95db6f8faf491ddefca3cff85902350d53cd649339f31ea3ab764b9080ebd657e94fb2738378ec1357db8d5ccb61dd74c5f666ffea7b0714c469c58d3117f35599c998349b5be7ab9e9dc6f01f9f85939392714e1ee2490f16c54ba77fee03b710978760ba6f319bab3c2fc67cdacfe9d5ce53a97e7826bc4c3d6c7445cd51b6ea06a2c87a22d7a20754e9d87f5ba1d77766871509ccc93f5a1fc2cf0690f630838d1f6c8ee903e9b932edf2ebfff0d9cf51ee4531c1f7c44b378da7add26f55de3285190cae3581efe436fecd1855252147d1abcb15834f2f65d91b5eaadea3e94d0adbe536343a38fc4a948c355984cd20a7ca454ba034ac7356bd2741ed7a71b39860ad2faa38d18ed7494fb510e65f6f79dbfb37f94fbb963a16d6e141ae82aaaf47029abdff6bd8e876eca3fd7312432cc37d0ec4c6a4b7d37c5c6e2efcfd99d54872a5884e28981d794c7855590f2fe464017c8724bc92e0b644df9fb5c8da573f641e4e65bd7fd396194d86d6a5a5076ff9cd6f41fc7f41d194b6d23ae6fa3c59ff6dc823d9ff7e39f9307fccb0696edc771a80cc5ffc74138ac9d01b95deff7f58bc555e4ef8cab6a73372337f0adb4aa0c7d13c3e2a83e3f8b63426c66774089d3822aa1acf4acf5ae30c4c68dd4dc47dd16eed0a4969e5ab630baa120adaa51133c6509c83f6d3425a385730aa0e08afbac0754358c812f483f5ca6bef41d5cce4cc3364fe16c6493f19880f693581e08999cef4db44b84970c8fa4f6784e5d614cdc9e626a31966acf823d9ea6a730ec5fd11663cf10b9da9fdeff40ee33a8edfcfb95cecc6b52cc08571cdd3e8315532b7c76c214db60f9d21a24734854b6a3d77cc0dd870164e0b84ffad5d9b04f75ef895ab5c0cf5f8cc9703bc67dc5eb5aedf4e683ae7feb1b4339335efaa44a64e8b4eb0bbe170bd1876ad6319cee68d4fe6ded946a59c6180da72779765c405485d51fb10cb0f150b9db466c53e070f5849049d225047bc47aa15f630a6d62c5b179906ee6c067fa3384a4c22748f984eb31ab4cd69083da31a5b45f586560371bc99113c44d05828fa7687aa649b261beb0eb4eebcb8548139bbd6a0a844ca1e4e59f3d7c4372ea8632b278a7e68b59032012c5518a8021bd5367557077c9c1b4a50944ea1a834bb61004b2cba7f6401a57839a3cb85b326449a25457851b4a2bba2e2187f040745fb608079c8b59d2b191813d51c5c3f329b1f5e40771e1b33f63ca400555ce5351cffca2ddd268d7855151618587c8b037e7ca290467e4a7c2c38290b84ab8dc4a839f57102dd559114092165b13b130b41bea2f857c84ae45c1734375a3ea91021014d29ac58f12bd5a44b91ce986e094a66089479dcac23a6275b864195df24f2d4a97f1b26b508c3a5bb89b9f0a913867c1294c252d5022d9fc60ffeb3ff3c29b2dd1aa97f22271c5c8e749cacea39f2c637ff4a235882747ceca1d95e093966462ad401510ec112026bf0fbc106270988b2c35cc7269da693a7d67052f9156d30c916ad6552eacaa3ac2396bc56668686ea8a1578e46658a71b4b7365ae56a263c783973c1b63100b1aff4c3feb64856a781334c6e83519e541511b4d581914c697ff31239dac56662a145316ac4d14e522480782c4ec52b1a2b8a85f657217ed11426a2a606c01c17171fd10824c07042b189225d40919aac5cbe05b031689b1ea61041f6091d961a8910a205e62ff21909c6b4095b270d87c9727a2b611118c84aac033ea9cab5f40efad6117f2160a56505fd775d3f415aae9271a9b2b1fd1964edfb772a9c4875f06826a49c26e93f0b1846e006468de71b98ac6fc0f81ab146236739c9a7b6c13952089d621936e8b265b50dd4016547a2abd52339daa0b459d265558a1d9b61c73e49346396b6155195c9c3a437614e68e23143f09fd28857aaea50aa808600f5c5ca33c5963cc00c4b1c1ce2609486ac4f1b2ddb7b06acb62398a32320f315dabcaf5d4a833e2a01a6e7c971ca15e40c459ef18db8452aabe1584412b4c4dc52e6004ca56b5f48555041cc828a7a6da77c435f05574e5c25efc3c6057443eb77993c987cac2363c3030d88e288f4d08966e624794078a39c53ecf273df178cb022a5fb025a2687409a785cd6c019f5761b0a3087ae91844a69c2a89c1a00b1caec7c1f7a67425b87be02d80b67ca6c7dc3b45bf425dfd33dc5a13e7531907ed6329593c333466d9628668b98422c985182f8c0952cbf5052225363398e516d23678b5320a9cca38e21c6be86822c4fcbb9094277bce80992858c5498c6bcc57db982c196b1a78c317975544ffdf33e57a30dd29a5ca4a22a918746fd9a84ee1008db920432e39b6ff182c930243cf350c6f486832a807a36c8a9242a5c39140eaa7a45bace0086a86fe36be28acec756b5e9a47225638659b250c52b564751ce8c42c39bd1046d2b6cda70b7951707b63073f0eb5ea3fc5229f816ebf4007ce97307c6607b4ca17ca30330570d4f39bf76998147060cc04b33d4b91294f85f4a717ef9c288e3741f70fa5823ab8329f56d9d0b05c996701a050a387362db09427d5587e7751131953146ea3591818f0dde74e33983c010419218b08822da9c3c62eae1f2284801b3e47c3991fa7983d0dd6e7157cfb152538466e9d5c3998a2b8ed862162b91ca851cce7683f8a03d3cf04e46970ff7d6a12494ae12558346dfc8fd9370bf944a0102 +ciphertext = d1a47ec5e9df73d00ea6c31f8189070b3cdbafbd59d3561ff50a2961820739bbd40cd0dc9183f9dedf28da0dc608b7c0da800fa9ee2b44331062d972cfaf9a08a943f60e4cd3dfb6eee587cb152308ec9c772c566452fcf0e16745d5ea6854a2fd14812c4c08e065464a0d494df56861e6fe82fabb22e955825d303dab2abe42d094f0abe8f10b788a24f90180dc9434b163db2aa4d461566111e6817a92434a2427c365a05232fc31ece1d49463cc3667a92760480857c893a180bbb4b4afa50ca382e9e4cfe5cd3e3a424d5b927fc75387fe72f7e38c267fe94a9cbc12b64141b574c45d6aeccc7cd28ad9ff4563d5ecdba1dc19baa079940d6c71f18819180481fad6025ddb5254e7cf39cca79bbb190cb526c427d15551a9af18c003f92f35c8f8db6bbd27af8e6108f9827332d836dfb5299cf9af20d6cedf3f3bdd3c29d0c46350dc4bfa046ebd38125f4a5480e6543090c4b3ecfb11ae6b31c501d38ae00b21d4889c10d697207ece62b5dc607ed66997bce2a2c2aeb2db1e8e9346456b9bff2f40668d0ffeb8fd3909ef59b7bf2e23c81938502a702c4c531024fbd6265980b2f16c70fbadde02abe62a9e530ac31b2bfae08581146a2c47691c755cc4e08e35bff1acd79cd12dad150e308f0d421dda9539b3d142fa544dccbf9bef3441fb8dd08c21756fac0d4efe441ab6b8c1c21a5e7604914a3181a52ebafdb7de84b0b634cac7cf9c616d851f8a7c3a1e6d1e7362642cfd00870fbe15dbe0fb122ec58ab300e93c65462f8e9fe59be9a05919aefb568edf13e4bde5ecd0b5912b29a044e3f33477a35f925f32d1f52adb91620e8f667d5a55d428737b3fffb76439db79b74e7da3ead61f3c43a13e030cad345415ee18d7415ff6296ab1cd0d306058d3a785fb1cb27a18d245dacee17fe8a0e3aea3299f6d3c211be3165dde7caf805efab878de257a8051fd2650473e6d3ac4eb9233e38ce9452ad85862d3684d864220902358d35027451962ea11492038fcaf2ef3faf3cfd8cf77295e30b7dffaba171f48062e6b9213efd6d2feeaa688191626dbb2fcc89a0175ab32351e7c72005ebae83c13d59bbaf0d4a5f1030168de6a7c76c83943456867435b63fe864550dd99bf934703debf2192d6a1cc1a363e8933f1b5e176941b3189ad53f038423d90b9a2ec584ede715b903f1a9917358bc7616a6d5bfd20c73f98104bf1509aaf19960fa2145caf47915db32af854b2c75abccd0763d06c5977efd369ef5a55df1c3e13ffaebd2a9cf99ea1f75e796c3a6bf38de65fc10aaaf024946d1df9f429115139fd5564682773e5513f2c0ff6838a5e31197fb199284402274c10dc157da502a06a2c610822a1f970adebf555e5832767f21714033581699b1c01e554099a7ac9b31e890ea981cdbc917e063fc162c877c51358431d00875c4270160d54d93841535c582804e1b68bfe87877fc265ef906fb62331e4b7bbceaf9f12f255df44976e4e34e3f5fe186a21b2b411410c45deb34a64911bf410de13 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = a33bd81d2579d7737a995ef6b05465963ac3d0fc3d471b94e31bf42699ae3ee7a306de87d947eaf3568d7bbabdc30ca69cee66abad7c67799dce7345b30f4ee41c5a6f35733deefefa29f56ddb744418f9c6c5faaa25b258bac8da5dccdeb4e0535bb3a44a46ebc44f587fcdad96596a8dc32a14916cf5c4a2fa853859ef7efaf70543abc4673450fd98edb4762f658b6b26431b9863cfa7546c1489a25bc9061b8ca016552834eb4cce73bf17b4e7873a519ed16a1c55e4cbee807eb849274d04ed5e866656c126485979ce976dafdf46f2e315ef77edf243e660a5a78c663880a7f9765df454119f6a86acc7962878b4037cf2a6db07fd72367b476fbf4b8c57924a9c699815bbeb0bb10b2a88b0c63f027ec759d59ceb9ec5c043a41b8e55e56f325893685f18c5459adac3e5bf2c696c8f07727c19de1d45d2d075a70665ec55bdda721df7c52cbd83fb9dbd7567adafb6ec8d9c00838e57cfd9e0c5aad2f6f35e3ce57d3659d906452f4a8c61bf6f838a51f6789e43ddd580e4595a6cda12b796cb54f40a57f4c298abff1332bb0970a3ec475a434ec4ecfa4ab9fc43fff035a4499c66827c98fb542a8fb22b6b6054984fdcbd6a637583145010d89a4654bf0ccda0c3b86788459b659a539833629c1b585a23e34d766c9f9dd3282683abce486a934edd3a75123e9a7a5fb5eb7c5947b69ab5d9d4b258ea7709c95bca352df45e8bb87775a9cb566581c3777e7b975c629c89063c8f0ea8fa24d344ee9af2222ad2c65381552e7c453ac0ecd4bb209fdbaab94d920765c4bce5972aa79ba974f3c5d55efa7fe5bcb454f7ae71eec0184ffa20c73ebf27805416d687c6301e13b52a5f459c56bc8d87950453d2fdaef3931e43ec2c73278939826682126b65c7d9bac044ae6cc7ca4009fd90ff8470f4ed51895adb53ae312e6b1aba552fdce4ab277a883df9f3dc8d56794d842ba0687d808f2cd97787973b1ae4280c5fbcc45c103cf3822ad7eea6c3abb4b52bfee6f4b38e4b5dcfb859e77766495473e97bca3197b53ab73be72c163003c9ab8a8feeff925f56b59373f5abd153db083e419b1fba8074e628d78d712bbb74579c0a18a4cb2aa6edd76fd86d5fc09fe4a00aa44e486810f3ac6e3634553ec23f247f262ee2cb8a6c76444b1b5f77b7c68afd2c49d4b8efc5069b9b0d4cdf0587a5ae93d243bc5f16357e2bef2817d6b5ce6f9d8b3b6a68e5a1597c49076589d5303a5c89ae4fdcf614ff308e9ce0fd4b850870e807b4f2b6bf99aa8f40de6e95b3bedf247cdbdab048586116db7a463dc360cbf410bf964fe4ea5128cee9fa6ad434b536345a49bc758d849260b78cd9f3b3e856ecbf9d6e94cfd9743cdabfcec1bba9baa05a8fd05637d26548f495e2f5477b94ddbd54f6674158b2f6fad48829eeb023a642be75cc689a303f6214793228138d6ead3bfe4466dca6ffd2a7c5720fcf3f96cf3a76e9d206e4ca063a35f4515c0473140b8ec3c53b1d99740226e6bdaf459bd3e502daafc96e990c1b97ea1ab5af0e8ead88ea68ad75cc59f4f9ea364bec33ed167638fda643c3a8119e4a49366af69b3cc25938e784f2832b7078c6be5635e3ee36487595e5e4cd4f7e395f02d56d41b5c5889bb6b2f149425a2ac8aa06ff23a82841887de199b56c91846392a026b50e87453f44588ee6ad4a443f54d25ecae39aaf286efb47a760da01b6c13fa178811c47a0dfb14110fc6482543e8a3a52abec3a8d7176aa2868b2d46cf68538c27514222a34371c25fe832184206e5abb699d61426027a942581d0bab075a367793c81b7fdc11e2f6772c8040d271be5d07d00b330a6c874b46d26f51db8f43f22dfcd72613f8c22d15c28a2b384051142c148b07f7362eea4771959b635a215b1351f650342d2a071acb16dd8ab50539096f295e44173bcac20f3cb271a8041e3008a742057ef2fb2d78f8a3a3c252f6d38d8e85bd57a75d45ab4dc21b8033992caa623866e8989f98560de33004d3409f233020899340b2591e1a4a0223a79e20b4b85c632ce7609c0c45a0246251468c1b6c20716315a54520c5718f4c5c7066331fc7e953ed91aa5f3b92e69617b29c256657124242ae8305780cc0caf00c92896929a1648be9b47f86f144a3b12d9dd51f347875e6da935f0bd043abbfdc7b85066a7836d442872c56fdd41d9a3a01d9ac6a12531079f74b273ca129f36a7ae463f6464436e50fa70cbc2756bd25234893b50a2898345e588b819c0955e9c50072517d58b0a3e4bfc9832b727c7f2fa924ac672d4d104a8f3ab81200a624c61eb6aa7b4553aeb2084360f1c03e443ab99acb63ac699443a638ba9b8013c7aca95acebc9ed6b12e8be5a6ccc74efea7cefc7a0f5ee18857250d08f03cd94cb4c455141d7aa2fbfcbe3eb896c2404bfa3580bc63b73265581d87618b206caa9468c65bb1863b18f560413d1b1d392259f37c00f7d89124c56913483513006feff89092f218fdcbb8b118b206b64f2de52be0b553665c32831bb4cba3762991716be65e6a222b30a0a5cb246207352732bc3c8ad7a2c3243c62424af222a922787f7fe44df05299da1105f9ebb0c5aa18b6c6c73f43390af9c2454442110aab4aa629c8f300dd38318c43a25d269885f970ddd8ac1e5918e59a3d53dc8a44873eea97c31f34108b893b634284d69153779230c28b2a1636b6b839a4d91b7e23f0414b111f2e7c1b3ed58613120fec37c78308587494233313950d82ce946778e044c3d245a19c29b09a80c3b55416a811af33032a0068c7a4767f05e9aac3e8b99b967f88d5281a38b072b8c4e194794c40bcd5366714525e846048e55c008cb48b5ea0c61655b8819b08fbb88337e20d63003f2453462598ca66181ace033c707c1ae9760ced165596b2b163e54934540c4f7097bdf14d29ea850b95be6fd42973436144270549a81b5f73192c2c6ac2474686a9a3ee556b6f26a9039866176026e25a60b5864e963850cdc8219d21859b5c5c3714434ea53bb16786dde8036f317c430b3bdb025e6b62c097340f1e961b90e0c5182183de05b293a05b58dcc251d8a2911c6e71a635f5179d06d93d33d8cb332c8b835c0e2973261bdaa43e414153118b66c641f834c949e77fcdbcb59dc27089138a2e07a5b40c7666794fd8e6b97685bc4a3c2a65912c35f50a278bbad765c8c775bacf28181d61530e54ae7fdcaa2681a01bf51c0d7a033d6b005893b98da86005381f1c6e600b1787bbbc13a01210c0764a4a2578d4bf90a24704178f06a4e4b110f58aacd8940ff6fc27f175342be74d48075f8ae9320cae20a41c879c27c1bf815d7f7054814869cf7625e45647bc1547aff288dbb90699b2ad84893f3b755d9722 +ciphertext = 9066923999bae264f53cf96f4712cc8655ec53d9a692221863ac713b2c6febc02e5b43163d008e1a5a81525dab273757a27c568ab980e5f15dc01ba4e370915d2f77cefe1a1e6fc2fd189e7717f135d9b5ef2cb4097715a825092e022bd750abcd7cb3d6ff8f73918443eafe6c2c06a00f0c65d45dec9cf12626e19c1ec4bbb01bac2a34e02d096be6836153d0802eb8e62c1f4e46a53ec661a304a223b0b3c7ae0799f8f0b162b962ab3c92dfb5fc8168632bacdce1bcbea60a0e88956288152d2a2403c3ec1cd483eb119eb62c5878694276a18d58b20c849bf41f42b1bd8abdbe68a9f0504fc106f47ed36c2b1fea208583737ff02c23470fd81597079bde3f56845a3a444870671c410f7010af93f253c1f14fca19737738923a90b78e097fe52a130df7f2fa622203a05a7099378cd22de5511db73715839a043b17adcc7d9ea75fab128482182efe6fcf9d87af3bd80fdc1afef0a635d387f39b27e73948540953976e66df8672115184bd7719248ece5afa6e85e59bac2415a9c242c7e28556d26ef5a298c2d7b4e80d05854e5d8148439695b645cc27e041095bceafa10e3f049f23f42c4a7bae8b58f031a1885ca2a18f1ced48148e52d16ebd12b63931dbb9f21e46209f6714a092535f454a8d3968fddd8022130c6bb989d0dd84dee9849ea3f75496425654634adee5462d6b425ba4e911fc8c47f98a67c3c116d12f372608d0bfa2d066bd5c3b961c64044a0f8186833213551415b2beafcb74d9b77f59f8b78568c9337bf73449f70c08ead3086c50ad0193082925cce5ec4df8df4b841ac1deda751873d1b0698e8037499fc3ee3434fb72b1710e6294909bdefe9e670cf80260066fcad5d7dacf233af61960c651164c40eed1d08e91f87ed638cd3879e2c933921108a4da065b4b2cd8f965a3365b130ddb2d1f0ff017f6d91e9aac01fee659403e00ca1008198eccc6572f0e49dbd0ffd8006a45fb6daeda45ad2a7ec4970406b44f6f0c5252bc2234b9db504810a15ba85ea28dd19ffc0476a38d0b74856836588a31792ac185f5208ce4ca0d1a5e2210d049a7a38c9b6953e8a4a154a34a15d4dcd1a758e5a03a746ae1fd576cd14c85f09d0bc8554ad570dd55e6ca80308a927515b215c1af914f9e409ae14cf99960e8355d6316297c6b18132dc89ee1a5bcd3ea1623a8c0b974e17048a18081ca47c2a22049c98f0c5c640d304a7fd80089bd1c0baf634b7bafe352e7d57c12771c8c4f944e4ee03b50fa3d4561f615f8f87fdd3f3181cc6d74e63b2393e5e38e71b1fd2a3aca442d45f1ffd7776184c5e2eb5637e31aeb60e547ddb12c7d276304f166c7be9c4569f34209875407fe3e273842b4cdb28408515e69313cbef447234f6dd7fb0606aa3bc42293dc31d1be2c18a221dc650644708dbadc53849c80fc2e91abaf51f869796d5e78c5b53d2ebeb3a2efe02dac17a177aefb0a583bc271cf7ab5d73686fc971db994575adf973fc84bb9ca50609c52a22fe421cc3b6f35735de793ce75 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = d1f46e67cc5aea63ca9ed4e3938661c208e66cc79e10a64174774545b597e91a8cadb58deb15b27f343074bd71873870bf858b5fa3ac3689698deb68c67d406a8ff10c2b990967ea12753449fdde6a1ce65b2de46a8f8e906da16b55478c8899d9a38c185ebf220a60a999b0d2b4f9b385e37db8bc9b85ad5fdcd73355ae641ed0f8fc68ebb8534135590dfffd0a0672ab54936c8665aaf476b60f93a42e35283777c375767b0454760ea53c7fa14d3c4de5fdd1d17bfb2b598a22d784a48eec39ebe83ad8fcf895b242954b41d7e3bf4644659e7d6c6d8d21b67b3519a6df26ead237359e36fb95c6be3a95f2b9248346785fd0ebd3cd083a2119ff4e9eaf157be2f4c9c77d1ecc0b68adbdc8e3bfcfe28974375808e4676e704d0c5caa4dfa074d40345de7d488e5b7c35363f5c730298670536c6adef2cd9ecdfd18783efc4c39c8c29dced23f1488a7469f1c0cee7ebb3d1ceaadba4bd7321dd0bd89c04339dabed896e655cb1f43a1c7335aef4dd44d9652e6d3b8e3a4f18f73d72d7d50a2984032c45735a3aaa51d8aed8b9a1ace3b9bbcf8cdcef3d9987c45c9ee89b7a949b5b4ad56abe4237f21dbbc53ab651bd4b703069f82133c54acc1ab4e5df9a6ea4785337535869fb758cd04b7999d7e36197ea428c66ab5e6f70f404e87341e154a0e09c8827f5cc00d761fd9645b658d98efef33059e4a898deb0c826e9d57ad4df663897d71567117fc4416c860776bd26f5ea52663711868777d64ff1224b277fcd05f2bbcfc0c84146591cb36cabb8f692c1edde229797cac57aeb64af446a8975f7bed9b3e55539c0f7ade9eca595399db96bdb282c3a4c46a44a97d5a54a8806cdcdd3c736a20d34aac1e881375ed860efa06958933d6967add457a58e7dc83b525ccc63e94c1bdbec869cb3a0bc46d47084482cf563754aa8f44682b97ded04996cb8886f43b91ac8767af1f856ce5b85f55c8802830ba1babf5797d0db7f3efcf4617ae95ad8d9371d93f8abe9c874c840ee9c39e7370ca66eb6f9e552cea47f2dd9c9cf633e7cabc9ef85f8aedea29d9cfcb8e43bb05c3015b3c6035afdc45ac7b08b5406566bf864657bb3a834ff7949d6463cd3c20969f77cfc8c8faf622a373c3f4d164a77055ebae05787965c6da862cd9658c32d4194dccd7ab1df8782669d891be785f0385b965b5ab3b870b0d88696a783b5c7a69a6fb86f789bd43588705315258c117c4313198af43efb7fe39894a96e89ffc4e8c6bac5e8adf03d86d18089a699997303d9a6debb36588ef64197166df59bda98c7bafda9e89dbddc587e8cd8040d649b9bd8fbbf36d1904970354410bd77b87889668566cdf4a94e1c65b04d33c269c5153bd49850857308ba1320f83a976a31db34722e97c97da85d14372e14a8a95bb45c63670bd87e2697fd0d55ecafe599ab0d3a184dfb0df7b8fbf0995042ba0ce78feba8b71dc7cd74436fc75b7638c5eb9c4a3ed4f7c842328486a799d070f7cd5cc75e5beb6817cfad66b86ed047ef988e84bd344c00aa1200432c6de42246b883b5b85ad5cc8f8fa994f4a790f3b6c201353f77aa9b7e9bb195375070f82b7da42ecd36295fa55f8b5ce94c8e2bd5febb5d6022ef207e7629736d614527619e33cb92600a1e39a20b25a5b16eb0ec1070e5d566b28449bfb38936f44721ed428ced5768ee647a771b7d76a30c7e5563b515f5aa89ffe994cffd9277b0695049c355267b3a07c61f3c5a2c0d4ab8df76129c19f44f762b51bc0374a43e6f6c1155901b2430b2b77afc9ba4e14d3658607387dbc2d12b99ec0c0b0c2721af298a6ebc92a7e6b97bc460674931e21f68377c8303b24cae8d5ab720c79c4399414a514254603b565397857a7078b36e24a262cf9070a92c034c76614d5ab455b60b3b3388500946677195cd587942342a6fc91bef144ea412ece186a422b85a213c43fd0c361aa00698458f5c5370c6c553a9c238201754e2b2e2785bb03053e0b414e472087a0276bf2d805cf477378ca34d8f01c21b433f33b49a8b9bcf762451460558fb9c3cd071e654c250df04b6541baa278c1669bb49ca3ab4c78cc92d0137a2864bae0c904e23aa28395edcb435d9c1cf742562d603bc61c521145ca16f69192b137ee372f04402527bc557b754e187355a388410751267561a6b1f59e04190ebc604ff64a2b08b244b57abe84f18938c5a9ecdc972191bba33915c653a84b1a970aac7343ac98bdb7bb877a3170e8b1e8693fa5089f421281b5763865c584cfda6aad7482d00a0520d947fddb173947865fe178f9800570d4b2b9529a42a514a8691c8531a271c18e5f84380c20cd9a992051d29b5be76b2235b511514904e3b284e8854556334515162db1b09894b18a3127982269509bbc5e8758015a5b810569e544bef9398f7d195a50a958dd78bda187cea0b7b2bca04e2cd90db634a3d52b734e224c4c60ba3c8240d7b2755ae5892a09a0e7ea1b2424402c45a0ad59563ab97ed906a1a15b8c4412219203ce6826b91dd00ad602089ebc5163b416c0d02009a7a5440350a00a7b49309ce39ba26df79ece038f23f4b4300c01287a51f5fc619eba04ab1b78e6396bb23c1cb86a0f3bb11f7d31a161a480b8f33734cc63ea7219d76bab759b1ab3405ca61b535b893b1bf2b678849751a6a4f18923ef44470e543924d0c462d8a078782b80241334f547d2aa474d95b8709747162b228993ba15a0c4fbd8bd662a1a2f01cfa859ca723a011949823fbb55947b9c27c2bad547b0e6d29665071b30f3c8c536651e6437c0d4a314ab38a8f707928c0c2b864a3a67397a936dbfb98fab2c0935441b83157d05072891a43573882be97686534c8bc7015ac267b75f0a79c6991cb6c96c735a4bea90acc9bb6ba1b12388f0821a074018909f76944d9295b5eff73e70ac1b0e1644e3a40685305f8a0626b2f05969fbb4cae07c61f6213159b3471654a88ab58ec3a648f2944625820f6592c67126bc085dce216fa708089d4947ab911ac14c00e53782a01580fd967594e0b2b2a3272d590aa70c7a3f419accd33c1b1294d21242c739a3e8e577316c23ebd4b4c4d0577b2bbb12cca71841b54c0b76729320bce26dbfe5bbc017c92491762a6c938d4bb0099aaea190813a3a78e5685d83975050d719d6b6a80ac313d3018d25b9054b5013f832c1353401e6cba3fe527b8d2906871b79836cb35284725e733d8fb60e6a8410e5f61428a3cf9c25fd45802d5699f33205a71d6404704483bd2c82e92ba9457926a45bfa0985149e0b6b49fe8adba1217c2c57c83f2b8c5f1d92f319e502b184a65869214f75d82c2f1bf2e6aebde5660fa73356982e12999d8fdafbb3cb186341d0386dead0 +ciphertext = 99d62a49c06c371bd6d26ec8c497e9383a842e6374424085f3922951dd554e866a4593f4651c64c1ec8123ace1cc6f54674e685018b756d6d7a5d6ea146ce22f25743c06aaa95093177f25ca0be23e6e76f5f71a5b741a29fef9c82137aeef17392972687f24184bc0c90344d3c51759546dcf761aad332c7d31ec3e08bb6021e07efe3b8fde04f6d1f718eca765e27fec6592b94315e116cae292d94e72004bae5b6d5a99d03801bcd0420a459605498f299cee4b3ce6cbbf0178894b9e20a421b885914e436b7356294e69f1d419a9633a712771931cbdee3b1c02539e4a080ce2be2dffc33f15fff7d3368dffb2fdb4ad6ebccb71b5746ff2bb19c809129dba5cef8d17ae011b64472b38107416b88585645cb3c80a794febed9e0e16c169ed0dea7ef52c079ffd05e2cd3cf2c6b3cb31813ad0780be61ff258b53f04735c2a3e8ed23dde9d44b5e7e182d0bcf1e19fc9d7fe5084f06e311aa4cffe8e2dd79457024b94a2b0a56f2f6f3caadc4ca3c6dbcfb538ad58862306e63b50472194578d708e5456aafb34d4a31dac16c6e596367b636dbb07a5a932b863d86d3b9b9a20514c6aac42b135b98b747b6bf1e0ee53cc9d9ca1b6ba97cd4b029ecf0ba3fbcbbe01392e43593195e34442100017655486b8bfa442f65256ce79a8e1c4c0429030d4d37cedee7d1fd6749de72d187a8b4554756842f035e7e873f06794a315ac8f1b26a6357447813b60fc9d6c4757b696df2290529765e2276418a8df9d22408cb9b8b1b34da3778cb981e9d08c69e003e251d98651050676d4238698a0879209e772fd5db2e552c38e38a822a1d6ca1c0f2fbf8399501991606ece8480f8b5f84a965a0e1e3da39459b7e6adfcd4d4bfe27119a608b0edcb134ed12d5798796cccae06970e1f283aa2ec5c5d736fb7afdda1dbfce7f89015eb195c56ec23ba0c10ef7937ea39ed252a47a812e599ec99048c50456631214fe7e76d11d7f1e2a5ea7b52c93c9b810a18f71309b0ff7aeec8c9243bd8695ed9b8311f18022533f6f294e281a9ecc525e99774627628f8b8bf9da0308e1910f255494d9a349211d4172a2fcb7a135ad940c4bf579667685833b21b7232b818ce2a40d4a14b28eabd8feed6016181c591de5a569e3b663338b9c710649bc7fcc5451785cbf6c2888fc5e7cf992ec049c46bbfbc20f7b4da3df1cfb59f48d8e24eee95597c77a18243544a693010cd2a0b2209a260d6d7d5ecf8d86a57b54fd16a5aab3908fa9f4c4da42a0c4f686dc08dadd5ca536a80213cda1fb230ba45b45f3d6d590b17f6844f54132e6e8c422be287117d35c12ad0707c6daa0cbb0fa039ba168621c78f91b65f48bf23af0c84493c77edc132e1a335e2e15fc3830b90df5d1029c08afb86703d46b1b4e018b9234a54cb76eb906f2b50a414e68b59d44a59d6b1cecde5163684933361055e51337372e239c0f94940ac4a44cbb780594d3419df9a896e271bd2e2306415317278e1bf7ab91ada048ed232065b9df3379ff9cde44a16 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 0aedd09aa9878c697e2eac9cec9675a967d660346547d7aa8d4548e3aa917e238cbcdedc389445d167e4b237566cb44132d6983ca6e0e779570b74482d5ba2743aebb51c68143ce680c8d0f1938795367b6d8a56c33add78affc791e664363daad0ecfb279ff4bd6bbdf6e5a3335b397487db9bee75a043719ea58d0dba627d7c8511468b34442879cc227e6b39e084dbb68be71cb988776e14b8db198aee8edad821764df032966688c99feaba06d1ada1f8dedeaacbcffacff2948a209ac8ee505c860ed444b5c70d077e00b63cbd6d98f9aab73cb06c97f03ee7badce1897d7ddc5c07d495b27957b379d55650abd5d9b9f7586e771afddd0b574a594ec3bbc9f6f1ab017ace18c7a83b2934e950b3dc83fc84264c66fdbddf78975fcab5feaba4e6af97131696a0ceaeccaefc40a266fbe6667c1abb362fd631043e1a89fb95cd5f5ff97fbf3f394ffb48b30b334cb0fbb32b9d1e3478f8125d5da066de6a5cabb4f5df84cf7565ca48b16bb2855a797b7fdfd57615e6ee7b24374c2e3d6473a34962ea8107790d268ac6b68e3c593cb9e96f1f8c68fd2f8d82c59ec95c5ac74c86dd38bda4fadcb66aa576a05e0bebda31235bdc9f8e07f1859addf674fd7fc6669a3465556fa0f69cd3db0a8f53563378ee016a7abcb5460d5371c0e754bd7373c33e4e2b4fd98636112f3cbe0638e513b38d495dafd7aed3d48530828efebd88b75f532e464e966edbc592885fd2ceb3108c33f7472595d617c5f6ad5ffc8cedce9b1adade25d57c90ab087cf6cb014bff92988903bafefa3c4c96ccbcffe78f988a40d339db334f57de69a12aef5c52a414746db1274808299446ee768690e70457acef198e4559996fa96b418275e041e99e0d578e86c94648ec369ab839b1a75e9d6845c98aeca34f53b4bdf00ec7e92cc6f6b4da4d9bd4900ca3e78cc7a5d5e886e19d1a908bf0a08947e3b524f1c606b055451ab6eda2bbcf93f510c3d75e2dbdecd493b722dff4ec69565f96651a3a2c3b738c2d55805798254ed55dc95d8b998f2e78d378523dd22e494b61df5b0ccbc69667013c4ce4a24dc2e9ba928e4ed7fc5f37da8c5ac13e0f06dd7b3bdc6737bc17a747c5a3cef3d1e66bc3bdad7aaab1d97de54694c1daf93675f86c4eaa35d34bd6ea7aacfad4872cf57cf63641264aaa0db4f65337274356f72edf310a57e45df3ec6c4e85bc5cb45a65d3b69faf313821643f060264a6e53702d766d0f5adf1407dc75b780688591cd4e4283a59ad2f84d665354d72cfaaa2cf78ab6c8bbadf284bf86f82761906c9b2796595bf5ac01455ed2b436082d7a30c949b0beba5d5d659143c98247f79003ca820b4b5963b0883ad88ded9c99f4a6368971a7d6885237bce28580e2ec483fb3d5ff0cdbca173a89cc41727a55d5ef9a8d5edb3fe851b3d58b58d3e920759adb5f9da26fcce486e8b207e6f3658d71f5455365c67b04748b47ea5a96b75f44fcc5cd31c713c04d2b6cdfcdcc92b7596bf4a2a0d9e538adc8174b3456489d2dc7dd3bff995c4830256ef0ea5eee92ecb22947d0973386984adc669ecd5eaa34d5dcd0fd77fd20b6d4e78696d564f647def0e02c8dc526f630f7e465accbc55170fe0945513748c0ecc9098a02e9d51e44acc267272633645ad562816d479466b54d2150afb682b4f32265f1f4bced21caf7c7980105b08056cc4192bfe0da9aa5e00864b0a34712204cf6ae82dbad360a7c840b4804826c39a59ae029056c1b2542b6a589eb47c14a70acd1731bb0a4d657656915b91d696b2f92afd82245945c7b77958a5b6a3b6cbb179ab83a0f32591b757e8b68368d6a5ee63490604aae70ea7fb4619c91a455429a6b195214bd28bc717385d3cb8235991c05088c7939bf852125dafc3bc368479165438092b530bb2b869246988b8f85425a2a523ed108c6d2f54358580944d64d801078a4b621f58012f9d8a17a92ab8ad43821e24e2f87bfa844abd0c6b08650ab76d5397f2cb0060b31af689fc8612249d46374848f496b360e733fc991809da804dcbab14030a4bd18cfe37b41cad91a66a263437b7ddc2484ed55acb16ab95a1a8c9345a898e89c37248f9768524c616babd17a8dc7924f37345dcc32de04273c5a0ac038a133ba01ce2481ffb57ba153826a7cc4123570293c82082b6a75fa05031cc7fdbb9031e10ca94aa283aa26eb3546f894b646b9a85afc5df3b513db522efb340287c64492aaaac5fc25547129b56b9541eb0912222c2e60a11b9304692a749bb174cb47679cc294253b0f768a7872f698c23493fd908c9ff95f9275551b947bfe84780f86c1e0bc105f6cb7c9430369b58bbb07b3b0c87d8541618c76a43d52c98a08166e052b4487177ad222e6a002f7fa3f3601cf1ef0b4c02ab550d76447eaa695561118a46301b544b493c368b5b77ab17c5af4543fa6a8c682a46af39ca48046b1529684a53d0e492e1b8596f55334ade15591dbc4b411537c88a5113458f187a6d77278675b0c85bb017416b6e9543fa1b924b631ac1ddc5556127548fa8ce0c90125139bdf13428e2c7805607a44251a5f289be4e3a2c3c95c5b5cbf7c87b4a7d87a39a44b672bbe9af8343dcb062ea3a039e949a7f151c8900484368f1cfa385bd13cf55685bfa4b959f8634ed7c437fc9c044b401683cc7482722c98583de24ead414c1833858be987672c557db87aefe4ce2db8a676d14083462db35862dc0cae95f88ec1f59426fa2e24e9cfc54813be07c98f78a87b9703276b455e15474d7a283d5738d4b639369077e7790dead3336e1467c871a571080004a91162fcc31d2912646a9406902248fbbf28dac4343b081c327743335b9efa4b7fd13d5177064a5b6e8065b64d8c6580b47e6472c8f5139268145ba7a23a02f59acf680692b20ec2dcc087a99be036bf7e9c8c0df15f168c508ae28e33d951740a9b0f0321e35cc01328b7ba860592b566cb369b21f51b7ae583d26652da729f07f5b8d59caec65aae42c7c9cbe73c68504f26670bedc542fbdc67a95c9f2da1a08e559797170ee63147a4688c8e101e5aab48a4d1862506cfcd297c7ea61a9ed4a54fd3a28380292fc1570fa2ae43920b0e940675b60534425c69f35bba714c88b3a6c323090b4c56b7f89963059f8ccb0994373fc1344412f694175c2eabea110e035bee6abf546396d79472eeda164bf49350f54c2e75754f502de4a42721b37974a8266c49b57c6837b38a28ca489f02fa05307d7163b35ba6a4c5024b70ba27db0de8d64bb8b55c83bfdd2429b1bff7f12eda28dfedfbf0ac16e27008c9fdc62c35e53b28a312bdc91c40bf8b2809fd40008be70a6b184981101724bc3d5ec5e1956b510b82fd5ad0668a5a +ciphertext = 39afaab7974b00311d124330c72214db54b573bcd9fc3efbe3cdc82b4b680c4699ff19c1af2b0ba0fd7a2ca1016de5fc566a098d40dabe6c09cced8fc3466bddf7fd4166bf9f69dc4f8dd8baedddafa1c07371f85cee047165b030a99897eed64b7bf34f427ef1fb5ffa56fc4150dfcaa480385b86e215c116de9636b59cfb5c1485c1364bd6ee0c12d471d219701d78d470ca7b6d16d9bba3fd0610611fb7e0d13acff438b6ab4644a1d97814f2563d7159f7b11f632c3f5cdea5dcd4047a9084515441b5e16f22098b6d943cbcb71f705ea675544193fcf2c8b0f0457735840bbebaba9d6dcdacab820de3ea579e8ccad0d59ca19fc1f70578730254ba58fd00235e77dd346c92f4916d7bacdf6597232d18beabe0f7b4f8f916d661094066060b9a0383170758e3f5b2fe0adefa80a2c7b553f03f83d465a1cf090ea5f5d04410f620e509f9b7c81dd0dde465e4c52afcce12f5ffe58506162e888afa1ed8700741ec4d424fc46e1c7baa9d7da6a450019be4522f23088a239ef39d0ce1e3e46a8d7d6dee09450b06dbdd701cf9ca5b920bca236d0ff8d2932acc4b590b16fd314c8fc466809c06c7066dbe7e4716d32cc40d48dbd3a74820ee85b0e8f200b375ae5729b8a708ea902780ad6ade4ab87f8dcde5e9552dafd56599ebedda9e43a220b209932227210b744b7676098cc1a9fca1a325f28c6537d56e6ea922c6a9ccc48ec1fab814631b8eb8d5dc466f6b2d7f5a48a5dd3cc42880751cdf7b6649cb662bb973b0e0b88c95d8de90571989ed9e2ed115bf7f7bfc4caccf262247e90a7f63febc66218525f255329c75e957a6cd8650583560605faaa84676225cd42580e1a24fe7f3cbca951812762adbd5fc514bf094ddf9fefa94c72e22ace942ed493ef021a87d5a794f4c27ba5cf6c06408f79cddc81b21d416eeb01982120e77ea036b11eb2aa6f16ef380a90051a543e45d3aae0b313be0a9332b71db12dfafeb0128623553d69a30b967ee7894e54bc39131c376e73d2b947f0d06d3b5d35bbca914c8896a683ca39947247747def3ade0ee5a4049fbcc26989f792309fe1793becff2235de7434a83c6cb7e5519f8a7c67970d5acc472d3303dbef8fe7491c949cb8155614b692f17cc0ee844f7f0c3b2b538a70d9f3b8e9c698a77753616721c4a26ca766df1af04c8011472166ec8acde6ae95f002005dcbb5ff0f2d6db1eb3b49c258a23c9dc052e8d44a6fe08515537bf5175b7618882703160c285207b64d55c1f9563f50cdb151f4dcc5918f6d34c345160fc405931dd97f7e3403f5117a84a16c17077f6e13119bb5fed5cf8f128c50b46e81105879408ea5a90a128e2bcfd54c3c091633dfd9cc48be1e492d2615b8c3766730b7a9484ede6d646d3c45a09b52e3180c8b281595a97ed66c0ec03b66aa3a364926ebacb166b7699f7dc56f3606538db5128bb8b408c8fea3cf2ab0903fdfcdf5416c8623cc5a700995be6f0bec2ab7283df510d95f6ba323bac70fc058567daed0a06f1cc81 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 96d9c6699e5385cf847b7991e5f557949c99a3d46a2fc9ae7448a229a89ef704d6c3aee7770bef2f44721be8cc326a80e524486a16a0845f7e22e5ee4e06f5b036f5fd6a857bfafc069da3a4e39f0e14eb7284bcc61ef0194f345ed5ceb097a5a5f730ee63e76f8acbfaed3c6dc4a06a7e8dd64c47e2de7324df9acc73ddb2da99238d4802cc76818df4548dcec677ff6a5a9d14f4d12cbe3caf8c320b4fded64bd591087a0c5a76ea29b57d5c997fdb372e9a57e3f4827a2441cc485718b4f1d3c45bd14f6a87589362f5f9549ffcf785802b2c6aa54eadaef93dc655eac68a9867c9b9703abedcaa540146ba6dd8acf7dc317b8fa4c139626713ffccb53bea3d6e20e4713c8f842e03b7fa984e5827c442ef93353bfe2b5e566eaca8d9d4f0610d655f86e72a1fdf7ff9b230d6c4b986bc9465e175a8acc8efa2c174c500666d3d0df2a9c4df1a46544739ef920865ad26f40309b5c838a2ddc5beb8bae1bf987aa9d7c082e8c55c63ab02dd664e545e505b4aaf5d606136b6b01499a5cae0174852224ac6bd34fd5e2e758c4342fabdfa3d46a9a855e12adccbb73488cff3d55cac398c0f45c467b94eb342e1845969e7d511bc7100f886308cbf22ce3840cce7626ac93dfcc4ec2fba1806fc15c5f153a9d1166598f25555c32587637a341017885bfea6d194eaa1c747d928f53e1c873c2ccf292bad468d5d8946b00edf3cbead3878f66358de75d68aeb744cee5428ce9076e0681ee875bd62e9ac8a107f6b55b76627c53338549c3f36d5841ae1d66d6ace1d4bfadcb51253af7188358276f8235878d626df15033844d76ae946ae6c34d054cfad6c3a3d72f7f1d9565a6c79b5694dcc5a878c6b4d33bb9c88dc43b130348082f4ec269cc0d4bd5ffe356b5695bb01c95f8aa9c30f5dcf320ee51aee3acffc7192b75949ed6a68458db80a8f71573b6eece513aa5b060cb77c1fc6286ebc198e59a49c95190f49b3e35c320d63511f637cb9cf17ca9936787aac954bcfc655aec8b4215861a87d9f2846a1c14889d0384591753e3f19cad2236dfcb7b225abc430a7b61f7de8ac4de46e6da6564bff980acf66186fef7da45885dcc62c433e75ef447ccef8a773bb2731a866832ae535f0e8fe605371f6b35fd60ce288b5f080d6d9bdd8748d4feca47e90322bf86c849d362f4bb61d7d84ef827ffdc63869e3395f630b237247aa8c100678e446e8299f39ef19c99aa6b91577d4653f85bec89f0b1cf1f4ad91e2063e5e4df9f52c33af97529f8de298d3961f59fe6b83ed4f2d64d034533f56e1fefb64f1899ef563ad71b5fe21be99f0e8dc557cc8cedba3cd1746d3a6ac2e697638fd8a43d681ece3769c8980c77af6adcc585fcee94d28ab163aba5563a5c7985720248662bbc2158dd22e04e20b33b6b8b744a80ab36d0a9b0a7988a0c98c6a597f8cdc76791c467b0cb53b1fd928f7a55a8eb5210e7bc06b36d11af1433797c26ef4e099fa8133dbd6bb4774d46f73b874602588d3f8966479e9414ebdee87ac54059459be9724949e7998ae8018755d59ebffda76a70a64ef09d3a438e734a7484037c739b7bf71b658b779cf647d420e2d73fc9fdbea2bedf29c3b12c54ed3b1cdafcac7f6d08082da095a7658b3a45f7bf717d4b80a3a050a04cb23e01103ffb1731b2c35a9dc23c4341976b188f5226459a02d348bc9d2064d574040147b41612914cfc2954e4190905446e5ab8632ec96145b917dfb4a9dac62b18cb0120679e739901d9bca662024335a083911aa53828d6d79c948425422c32ec471c2fa843b54f6731fc401475612a135aae4b146fa829871c0654c075dce41190483c3ef60b7336200a4a39cfb6787ac09ac85f4cb3dbb494727a20acc8a1cc9cc765862b0d402147a08a5e4aa6e679d482786910399bac7a36efa477236b1a01baf452badb3f184d7d6ac6ef64cdfb89d1ce66a059a4659d8137dfb3c95cbc9e8d86e064cbfdfa50c68130a8d82258407bb7b926f7a802b53209f3ab78784102e88fb91e6311d496251f7b574aee5797e881ba1db16af40281586267d826c0f33a0518c26e6533e19ea0ebf29474a131d882a189ac03b835c16c34c9ae7a1c4d9f5159f85b8542284e0409dfb0876fa6488e6519867b5c53896867772210e95399a1733d2e78532b7651ca9704ac063df086cae4aaf65150093f27054f34e2849449c7680ef1ca1a0ac399a01a9b74484a967592ce85086230582518414c247bb7680abfc2a04a35a20a851b73548a8e4cfc2b84cb5ec24108396c28498a6614790d56bf8d1b9f9e40bf574c497218eebc06217c9bd361baa5d0715e666c2d3d299346a79be0bbe4b7ccd49f948a60438514129c126aa1f3875718922c5124728f09fe5437ae83194ddeb81f0d744fd2b9b59fc223e2792501b4932924facc16c1e5444dbd6a823016b3afcb46ef59ceeb49728ac541bbb6bb64b7e196c59910628c8ca22b1138d884842c387b594b544e5d99784b06acc3b5d80ba81cd34739a20af11f7735d645d9ff25c07f8af9b5902524a1953ca2a58d6b796e3695a006ad6c703dd161c12c01b9bc995773c5d2ce59470c765c3f5401cc07885c77bfb3c15d7f766f0ec7cb3f601dbfc210d599093a21c87d82002212b06898a5a878d4ee913eb451dce14a1bc424838d4797ed14d9eea2473b304d6624f1725c820751a9d313cbdc79ac9a26548587fb41371c5f48a4da04d37ab7189685aaa054853f0491a0388ae4b7af4259969e29eaaa2b2eb9503518c7c53ba0e6bd20ea8355a63f1c481eb5e662a0b792014ae4c0981274d902759af794338072a839b05d9d42c1ebb1a3da33b54066d1a63024a3b1d1437b37a83bbe816075cf416275a6f58336905937105e63a1a017f87911cf0b41daa41a5dae3856a606e2a9333176628198b49d2517f54a9182e4ba877760517dc94a079538822251204b4c4a2382cc7889bf84923c09072f86bd1c5879ecc3a37678e6d031568c24012578dde5ca01005b2df71a4a0b0455a03afbe7c366bf1b086973038fb5debd793a303b4c867b611772733f66574cb0d7c303563c389b2f1b46e98945a94b142b2b0d647521f4b58f12326fd86286a448909191bc600bc7578b0169a45c071c77f280c583788f9c2aa1200a73431ad56d23b20471bb67a627a594ba9922b1ffb75d2d030432a954c71235a9278857c3010a8a8906c070b77060fb831842140770acb92e856c8a95e163d5181caad6a478ac9ae82ee27f7256f4d4cacddd43f45cfa4de4dd067cdcab990059e901097d00e0ebaf40c5d5dab009c66798489d357e760478ce884cce5c95fa08ed106ce84660e8a4c90bd2b22634e40769aa0090a101c5dddad45edc5 +ciphertext = 6a97fb0d3fc17256c88c551781f6f142a05547fb8d0d96cdb0242069d0aac67f102232efd259c853d4a5222e4d8b9e5cfd7028afa9de9c3777669fa77bef10515be69536e6dba285206b1a924690cc8882178f04702dbbd541a38dd036ff8e6d81253e7e902c6de5151c04eb29236b261b30cce838b8748c3da04e524f3c71f8344235adaf16b54bfdca539be81daee0c2640a03e69f55f974e8573af1f42813fc32f99f31bd1d462324dcbefa61641e6eb2277a143ba321f3524307976d26ee122a758c330c80c91fcf5c7a7a5709401607f723c3386cf8314cef0c14a69b6868f117811a7c3caddf1935fa2dd230381eb62d1564072f6d3e68d4ad87e4fd2915d2fb80ab2f6f3b18e853dbf0d06a057f930aa61898f1b04148f5387ed19d6c2c36669ec31cce3974dc0717a188f1d2e37cc31de7b15b7d0712d33ff646b11b724b12509ba41735a771c6ccebbea8da3e651cf795c2131f910689f11a2b6a241ddd4b71605d794ac24778e2ce1d47566f8f68d22251b265fb0dd9ba211acd4652b509a6b412536f4348a0cc95a7c8bf736ab2b2a9870bb7e75af32e6b6ca5d318c5ab752234ee9e09f3deef5e0bc52fd7c8dab5c2e965b41397413b063829f194e9fc8d9a92f0dec9619d6d6aa8bb368a5a80167a4511225fd88145be368f210e1dec5cf94f28e1399a53612fd7d4003eef30a0106975c1d198a97055e9e44aaea6f9d21056ed983b54524eb706b89d7cdb6372dec8adb8217a214bc29f02e236530f56daf7966b31997ec4201be6d776880a5b0cd7a8784eba3517c2e7613c53c1ae23e5b1fe3d2f95ad0ef951e06e5a249d8225d48e70dbb406731ae18e404d4bdc2d7e10c43e62b7b18b7308b4effac86680f6a84bcfed751ab5d3d68f093800c1bc243a28ff898c66d3636820db810bb7b5b92087221b2afe6bd8e953694f87c38ea2c59c151929ac831b120c66de1fb05cc39a9b57ab491a7762dfb8ccebbe3194a993b4867c4d336a04351b30ec4d2f0370440acb6bdadad12e4d3db51e701aa49c455296e15b9d13cfa68340915d2f694b8b67b0f34d275867c3a53b6215dcb0c3654e6c77663524301d1e828a0ceaf7d2cc226da11d1cd78b072ac7f3ee14d2b06f8cbb9560c6d7e60dd95ea5d402b5de9e7b96b64c4accb8eece2a4bde33e8d27859d6fa6ff7b609ab159d1201df7734d4c73ad0a4eed2d80f24b8638273e9c0e53ec0b8272ed6fb82a6ec30ae431972f929759d000e4e5b801189473cc3ea318f07dc495b7b9eb7afda03f7e470345c9095bbfc00bd0321eb5498991c75d29731df41db55e24890e4beb84d5bd6666347a53f2dedc5c6480a93b19df229b8d7ee732e02c62db28623fb11c24b2de9d2ab0707e4c174acdc7b1ee8e287b62d1d797a3accf53decd3ec40fb57e571d129f1a7a70da324d094e51cdfe1a648650670736e0da6aaed753822e5bde4a2b69cd0c05a875b5f75148a6a65ff26c670d17a0fb598bff1643ba62d03c2bf9d1ac3d33c044a0348b762f95dcd +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = b2def7d258d8fb2b992243f83223ec4fd67fe9aea070ac8d182ddbf906fa1e0adcc91e4d98f65c8f4abac3bbe7b434edeccc37688b881bcb68503b54379838bcded0b5bab3073f7e7965b694644c470a5148666c7fa89872d39a006ebc533c83f38dabfccf6f073331f04db694bbf5feea5b2f65e96798b7078ecaa21537dfb5746c76e29775852e5850f58cfdb2e8a0e90530a57b387b1c42920ed04096c3e0bb6e9bfe9f84beb0b74c47bac678b10ff79798573fbca5d8e687966be3e495827adba63da8a17564a3e78d37b3a4991993401c1c6b149895ffccd3761ce35a5d35a723e40eb7a42ff6adfe6bb371c9af5a686ef858a8fb7a63fa137492b53305685206bd8d44a3ac8f8948f2b7bed9cace27ab62668ffd8f2950e0c9ade053a4c4ca8e408da907a39e33db78e6065fe9ecd50a5a730595ae5eb3fe38d5e2edb79dcf345f1dacf38a1732c65fab8ebfcccdeee822a7f896c3f3cc43aa0363361708ff89d63d4b2dd3cf9c5ce3379b1d53a63eac57adbc915113e6acdc30fd74a1a2e6c23584ad1dbf844409f4177ed79b19e3e20b3278d8a2e9be8556f336cb85d694066b6d8fc5d267a903c6f4cd54dd8e187d9e438d178c83957d6f016b835e25f2ab79d4f80cc24358b7dd3bb271039acc1741651fee8b6fffac473054d5b4cb3bc64cced7c6b637cd6360e41fa85a4bee3d2b64436a87e92de6acb763a23ca9b7463023148b0c4888c0be8d954e84207f3b9436b77b09c79fd7e4385a3ae97b5bde1afa0c64edcd2b668c696281389ec37dbc6d088fc435d6cec85bcb4b61144faf0b6eb1b9d75e0df43be293cee6fbd413363716ebbc48ec6c361a48b9d871bd5742ffffab296d94a92b508cb794f2f69a8fee5c2d748d8fca8cd228471a8e5e75b3b0df86f98e58f80bf530e09a34d166cd5379777d57ff0994ba8e66f9ea7691fb973f45869635c6eb277c375606b911bae22837ec86bd47942a52187bb2325efb50f5be423476730f40e62b9d3cfc5b7af5ce9fb38e0334906384eade945e995afd659fa92c1f508813e8b9b9ce845ba29bd3733228ae960663050888bb98a0fedfed6fb34cfb6ceaf6d9b98ed6ae455cd9b89b60685defb31ae7dd43ea845c713715b5bd5ad87bcce4cbbc9d2ea83d0fabdd56d939d01b7d590b3083df405b2d724e2c44b61f3bc24d7b11da3de5889ac52b7b792ec4af23d3d3959eef3888b8847f3e0695b5b844e8e3c2227e8a25057e707a50e0159af456fbb2eed3b9057ff7fbc1740bae1afa44138aa2b7f3f70c08db6ac745d08de040c97253133ea195648f9f9e6c6394940b6ecfbe8845fec862da6597a46f65edcb5d38d3eaba4a092eda011a32462e85a74f5d9d44b4346389336951495759305e9c23dfb06bdc762d5e9d5cb84e9a68456ad6daeae85ac6453de2bcc103f3fdd509309fecd8e3b3698a193d83e6fdf757e9703bb5f8cc5db7b88b812edd74d6949e0d469b94dff7fabdd5cdcec2ad97a71e7c28046b06c8fc8ef8f04296428ac7d3840acf7f3333d84f726c1e4d339fb3155bfc4095b6d465657fcd780c488a0d6d443727e09363c45787f71965e35f6db46104bc18bac09a18690b37c8079af2645532112b1dd09313b9a25b7094700639775f89b8d0314eef0186adf7ceabac36cc9292c270717f27caea51b1afe1cfe6b6a1cb1a7da53c6715c9c9b2694bd5a581b733ad4841b229fb7a17bc213b969935c672d0993a94ec170bdc8b7c800e66bc6514f84fbc81c7d1c9417b79a82e5b3980acc792a19c46d13a2e75a3af791beb401f7555793d94c0ee1b9e98a5b6c52777e537bfb287268ca9524a4438ad87a0e85279e474c5be7740b7867d8b04781a2436a8d343f62274e236c736dc3c59d5b326563b9c86798ab14a6c9a0e67b36db89a82af690da7016418ba2d6c435e39095bb81a0e49c01a73a31ec9159844d1a3eb233d16b932919421e6a342473a71de629477183e8f34b2b7c8abb7a3b6e516107cb5229d780b93417f9bc94c38bcaa58f34dd88835308c742875cccf4928122199cd932148f48a94c5c2252295890bb4645761d3c2c0f33ab3e1021aa56b573e9c6fdac37c83f678b97148ce573a244b0487f3cf771bc7b6a13fe53a6ba58854b87a67a6a17d6a301c85f7c061071b4ddb27b3f404dc402ebacb8254a0568d48b2d299bd831188886a65aea5cd8d987f6017a2f4392f455c2b4f9b63e6cc1a27ea38f2588b0f8086d7a5c5e4b05b76d2b8918820cb8851704ca6d730861b512fefb0a76b61401e23b01ea710c5e3b73fa716dfa6408a635423c61372592dbf174d6d811eef7c4d885bca5fe669233a141e43810ad10235cb59f824728bd7acf17765bcd354a493aa60438f07d266d728b640cb07d50275bc2605fa6c964614b2c8143b37b184f3c30668662149bc18c6038706c12f0d31b896b69a7d588d0004497e4808d8c12253987f000168ea758a5b32c195f03f23a07c5a546a6607084cf79e073bc6cc1cb372e385ca827c490a42d900035bf735c6242031b8332bc57765ecce4792706f1cba0c7cc390e7bd3595ab876c4e397c58fc325c9607b0ee39692c31730eb4744e967e7ff8139fd1a545622ec870516b2925628ba782cac845b2429c3cc0ebf7747f414e8d35cd4a91c959d2276404a5df4790f4363104e6a0d1d60a48b65bbd92b417b51a5338cebe36c0f218bf27968c05d99947e9b44b4b5b2934c538f85cd7c8b9e3c31637e14c5c0279cdd6386e20ca89a53671fb2f04249565491ac2f900ad380d1a68b67693b185f26a232aa1b43503398002085713ca4b2f94cbcf6e837b020404b7f519a2b520f93b901943c918393f26061346a0193ce9ba8a48b5c4b01b0efa231eba0528c5b38cd32cd5d22586494734fa746b411759303a51a12ec58b03fc99a1edfb1cb01375032054878a6ec9dc4425945aae387e7fc6cd399c90049854cf51b3db690eb78a0a2db04d05102dacaa9834620aba427b5733bf1d1693643c88bd265af0280ecc66344b81129c491b3998c6c70ccf03257c2d06115b72aec35b4c8774cc7936c578b29fb3b0a5c66709363b73f41b08db919cbe57ad817cbb5df62b7836af6ff4ab8cbb07c9fcb7e3d601b2117e6a7242abb24ea96ca867b597e9e9b45c01aba9b54d2d323df8b38d3d37b72c2790e1041037355f274cceac2714a92955b31c55d4903a85bca55b2bc22c536aab22557d912fe2234423e7bc0894bb5f846a2dbc4a0dbb11c51840059ec11bf6cefa3ab473e1cb0f0bd17ee0bc3c59175eb63c3144108548720ce7ee0f43a9ff3f52a9924efe9f2f59318bb93c86b5e15274a8e2bc08fe818b117ba28c5dfae74d54fcdf6f20052f79be333edc8dde +ciphertext = 1bd710a00c224ca78beb7e27c43a7541a1618fa3dc2615317cc4aa233e6169785f2b722e6e1c73d77d8ed134a6d56e3cebde5fd64b5a7b6030bdfa7a9c95960ff5d2c0cde027a437f272311bf4e79c00be9b0700aedc165d911ce9e3b7c75d9b4c6230e734c9d1d6b9a835da5d666cdc8c129f4cfa5b640bea9c1da52aecd5272e65d80f1e53d261cf0913ba405eb4019e0f9a54e99239fd8e247ab5db67d062cb3cad1d6e2ec8c0c8f13bf2db8a1596e16966e68454c10b9fa416441d15113da81165f2813a727b7a6b3f598311405b7051532dec40035ad088a5c598e104ef624a06a98f58f28f7fd22ad53d6b54d26449fb289d0fb6c42e6f5039eaab0fd650b627c62a57228119920435aa41190d51418896932e338c9dde3b0e532fdeffd03551d0e039940134695412f2e81a99c73094fbbf9b03335155ab2ed25f0a96d73fdc08b04fbc32a2e5486110997f25a7308d33aa8c051d3e6aa887b7fc5294ce8c4a91812c41fa6160e37f928d9e6e10ad719f3dd7ae18f6444b9645991a1ae8e2d7f284a96e652a7f40d7f132e681f6da4f4041ed9ce41de22f879ed09fb765bccd340345095642a07bbfb8d8d1854c1107200e0288da6790603dff76906b44365c16a3d05e5de2a22c3414ae3e2033218e918edd9b1c3275927df7e771d7b5b1c5e07953f3a30da668b3ed6d408b709791fd5ede9328561ec40123606673a22d496e6ddf6e5ee838a47528f44efbeb9718e4872fc6c63d8c9860ba2c1689958b77cbe94057b6779021b039e4c18de0b75702b2d9c7123a2e281b979b22d1e476e6941b82786355ebb6a76f8ead17349c1e5d779b494d0b7e0153e56e967cd4f5cc5b0f136cbfa965d323998ebfb73ab2563a62bd222f9d4113c16accce74ea94468e0d721fa7f5019c1f9d31439560a5bd93a071f696dec1d0f52f4d671767cf4e25cfc46f4eb5f6d67fa40951ba31ee8aff31eca1a7787c90a4ac7667bcdd66a220e2c69df7b7ec49f7d6d8558da91c4a05dfea6da06d774a420ada78866c2d5cdcf526dcd2738a27fbf2df61322fa7e8964da5b634c7bf19985dfe77a1e0683844b101242b641e7d0913b37bbf9d3f2bf3519c8ce95e917126a7f72a8c49daf48d4bbe37e9cccc9ee4fec24f47bb2bcf661e6c0dc9b2b1753d929430cf923117990e0f22b43a74854a2b3fa62d3618faee0b877061317128ec4553f74bef2633d847141ae3b0b2dae44605b97fd159532cfec972103342b21e6edbfa9f03f483a67c45cfa31d338a668870a26b34023004ddb2246dcecaebdb2305aa4b178c4ed57fb0e1b33fbe37f3246be553b68c240ae8e54b7d36fa4bdd0a0f7602745e2885c7a85832320815eecd846a08c0974a2a35542373092dcc4f7fbeaf61092c43b25616a876ff66d9a2f458955056972c5a7460a4ba22fbf65680ada0d1c9664e5747740c4fe921e2c5671d9c6e30374217578c769c3a8f089c5ccc9f3d19eea5389db458ca87f03087006cefa7f3669753fe6fb712073d267d18bffe82 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = eeeb8867be7cdb1fa45fcc6f9d05afd103835147647a83d1ee17e366398473d8e03ab3b064e340f4f986629daceefdf473fb49635bc38debcff0f34c5175ae0fddf5abfe9cccd46d659cfa6bb6fb51de452b09c21b53dee9a3ce05d36a8e1aab2c0de95f35664b4999cc9cddf049c01056af6aacb0267d8c184534f127fb28fcc94abcffb81efe20443f11f43478e7b1dd8a5c7d9b5a8818c0d2259c808edf520d3778bd60f8db5fe06c3520d35e97f6b5793bdac43d4349387b637686cbcea6e55e49183d41fd7c3cfff5a398ba832dcad4de7e79d0768122b7d1f5edbfa58e49ff24de2978a723fb985b939459bd81e1068ee62dfe5f64d365e6accbb8c28db84126cfee8d0462251fc2f075cb580e9eb828616cbaf45a9bd99b0ebd86268cf59e823e54de984335af59924fbced43263af725895d7e7e827532d35c7da9bce420b46aef13c9f33a427bb5a1bc646f7b54a2186d527e3d3badbfa21aa39c5577bcd504e7f126741fba9c2cf9401fdfda14e9a7bc9f7cc8135bbb0c3180696093289f4b19539c58655b8698a6de339c9490be8cd4ad43e1fe5ff045b5d27c2d3407cb575556fc21ac51f523389f8d3f31feffaacdaa7b5aefdd85c66989af558cba916c9a037ac7de1a3f7f1b5bd42d8fb7ff8661696ad0db88d10a3b224a5bb5c99ccc96820e153e478ac579c65bec5a3d4b85aff1c4af5ccff2e7aaaf9f9e49b0eeeea5e869919e3d2b543913a4fd148639da8e5d4a99d8362a84bfb6ad20b8acf9596df4187009e7b77317d4511ed7458eff9e7a9b8ea6f4e4efb1d624da9e4789775abcbd2657aa4877413e4ea1e446db6cd9746accafef9784bf3ec0bf55ba5c97070ef64703c676fad9801762e9fa45d858732af7f18b47e07b47d8eacad5d3cd35fd447ceba46ee446aa324bc184e7b929f7513c16bfde5c5e56cd5e6c5d41553ce7de2f3af273cbbf65a44b4b6dabe5eb341464a9993effd671481592c5a655d116b963975007be3503baae3843f248f586577fd098f42f97b8e3dfc7b4df98de5e783af5d833b99d79484d40ac05a6a7ec5e9fcebdb38f443c7365155e4f1cb7455958608b6f503428464d89c66c2d9c417445416a54aa76f34b1a5bf2cdc3f7064b6d0a7244ee70b6acb01c033c5b1670a3ba68020f4c04bf4cc1786025fbc56cfd4f3b34ee4bf7d1c9764938695bea53e6adb6abacfb44f214ed2c29bb867379375bf11ea9df194b872a7b684b3efdc179a4add943aacbee6beb93f5dbe00fe342d088eaa80989406571d1b79d08f3eae15b81741af2e01ff710afdebfaa3c9d74392cd64e71f363e03fe134e9be32b6b855fb76e15b5c91cc6c3f85daeee7e072ad803987ca7f35882ad3e413b6d01b7df3c1ae839627f2b6ebba16f5577d95bea2c5ab446ac8e57acc9638ea07599a8d335c2d1f388cbdcb9f8633ce2f51c8a7563b396073ddcf6e7b8e3b0fea2e5731352fe4c317d8e128914d1f4973e759d53fef1735386b8749063fdc41fc731b2fb9c665cef0cc5353b79939a9d5f0acb54afe3c6fa56fae39d7d0353ff2054accec40311afc4c6faac3f392b014ba88fc90eb868693eac83516336baa60207dd518fc820bc8b0e76c66dbf001bfa28b07e21adc142c75111b9785aa2109a795ab792de4cb7b6298a504200f8850d32cc44e54182761a1c9c9ba591a9fa6873a61025515b068099bb1e63751c5b887d283077f86b733e4344d13310ce12d22322f254a0e92779a87067d19c53c70dbb927e14e1f2892b5273949428eb4c70c49da8aa7fb87048961db4892a6f89f18f0bb69347b9575025a964047ac7bd2c7472838383a6072f8338b23aa07d6b7b221e18d4e3c62641916106694315a2fc5bb88c6d664667680df556c3c046398a88328421f32ecb758bc64cf246815a25922021dcb67c995fc72cc6b46bf5ca9ef3998535ac5cfab70aa54318f9532dcd138a4c03e2ff5024c52bb486ba7665b27610b822975c412331ed6c98e66721daa1897936371113a4f17d96ea735a5cdc019809c3907c03fa950c00eba9dffc69a902151a39163f2931e1c0271d491562e0a87fdf7b7846c31151017ef08727dfb68f22a8585295659ea358cc1b85c9ab4d107413225b8259804b31850eb347e1fd37f5435617a7a07b15321cc204b1a6b7c30d67e91c088a458bef5cb704e6b662189a9c0079e224a94e21502c0f1a4dff6028ef6645cba38c0c86eaf673e9b2613620bc216914a9781645fc48e33cb9ea06182637439f1d1a19fa50cfd3b5e2cb8310229b74ecbaead4b079d535521b8587a2995fa9b8c6694be6e432343c97c16ca23bf53883e23cc38f10c38e54f5639b9fc0943a4f41cd0acc8db40cb12e644cb74b9d4b858f7d6767830b92381a42368476cf2602adb9ed08b35ff5c4d1ea93c94aa75e218779825401d859902d19822e9820d86c7e57562795b89cda97eba773070bbc502884a6f437d7ea7a459c0764cd943e0b6a5b61b8358530459685e2842ae9ab867fa712172207e692a7affa872323779087547c3d8b89f368ce078acecd55aafd5305371a5bef24fb255211b2169f4543927c845a3049f7a88513a682303960c2d12bc277656f15738c4368deb70cff2a32a1d179f4fdca57812cedb21b356e0aa63270788b510e58b4bf613473fe931dc80a9cb8bafe63aaac3913936c8a939c413cca10a1277409250b5da321ee5c24ad3d093c1c7095fba34b81380e5da561bc039e3a8c15ff3982a7938bc16446a3ab2679a50c2e5c1d1a08127db4cea30340b5589b2327988c97b78f003d1315dacb301520a11f9f0b4fb33ce7c0203ff11c6a66136c0aab83928c145f4b968783b131281f2153925dc13ad133fcc5247b595cef0f03ff0da0a429c0de9a54f66c03f1a616c7210b7ed3624fdd27e99f38472867a9283c6b294b0d7014cf9eb62f0d7b051b190f093450453c056081370b45f5ebc4c03808fbb5c6d8b659bd22612c2872de9034b11c6aa6d356b2baccea0f909da0c775969c12fd5bb0c8a9bed5172a9358e01c29d308636b5d668f5b2c9def1380ba23b5c84259d887d3dc4882702b41d99c72c800dd5b19935d7722610741a105c1d227c38c5665cd5a6daaa991a9868499830c1697fa430bf4f95b03004126fac283a167281e4b847eba8487b0032914edb0b67b1e320c25bab50499378115cb07a9000e0156c9c93c1d90693b9c22623a3eb15618fa1c470481c4cf292b7462410d057c2e5851e08e31fd88af2f84b0cf79a88de834c1f17c7a5fa17d329caa09bc32a138a2fb5b6072464172abe0fd97e9eabf357c3fa5391d94a415b53abd381c38c2cb5cfafac81b96a810ab749b61806b6d54c9f8cf4bf1be0192423288f +ciphertext = 56faf8ba810d4962b71cf915ffbb0c4dc4fadbcedfb4d7778d70d364c15a803aa91866c8b086db348f84680b08f13c45d0b154b68e5b355b43e277a6457b3d304f01b5dad75324aeac512ab2aa2864129a10fb287e12fba81843ee33def6c12dd9e4b29c170592a907d3350850a55addcbe92affc8515287f73e4fca3199e536d0c2e2b74dd92ce862c3f302621689d666b8dee9fcf90b4721818cefc3776f9b1195cefebc7a45d6088b3b588ce4275d32685d1c06f0065079c8a73dd8d8e7120907a141f189ffd63b2b7568975a21c90b0cc69f2120bc94e5ed04b8c3628aa1fc7d494a2b8119f939afab0e5e99ad377661b04e85ba80a62e7468ac3e90e4dbd11c196fa678d3246d69928a20e4b9d6bb0c3fda5d33b4ee8b8e8e7c651bde38a9918f9131f60f4ec5b5c340ae3e64b39a1c507b77ced606ef9b93246a204dcc5363ab0302726bc94daad4214807f33103c7a7c57b460f432b8556b54953e6beab1a116b6b73d38bf54758e65a236ba13f10c8abb4345f336660b215d9e43209f8b85363342a930d8d9f229765258bea0d520d6d9710149b26cbbb1929fee006a63de21194cfb90c32deb5c402743c4d6643548e82071ecfe64e6d0a5f333bbfc7eec513a7e4bb5f16f563de4f45df83d220b8df76ef10c750b90f48e18a9fb7727dd64093dfe9fb6c381f7e19189200a53efd6e1d4d534bd3ceebbd3021e9410485465adae7340cb599a987f6792d9c8d675a12debdc06bff40572eab9ba1d405204b6fb7f87c5fedd49603bc743082cb3752e8893ae720668481487e86160d590422f6bdd3ac742081e3ae4fa0c145c795281f0f61cefc18e79fdaaa2d0d6cbb06cc0e4b9e7b3c0c3b02d2d6a9efc4b61f0156d510ff5effdd8fb74b32acc81d31dc38abf0211ae1ae1669f2d7753d209e00d9774434291a105695c9e618800cd518591b1facd18ccd4939b51a410c1b3c0e3503a0d5edaaf37b0b4d55e33aab5ff93ba38fc1ae300d42f1983cf3367b0a300817cb79fedbbda6132e2fe9f815f5f88442ab6d01d0eecb7d8185762d30fdd94978865dcba58a6601f407e1b3ee3c3fddd40439a47ae414aa37410faf9e10d6b661d452b38a1091781f3cb0c7236be1ee528f174c58397fec391f7c02a0627879e943e317a8cc075213218354c81e73bfb9f7c8f95e2953872d42603c844304ff42cbe05da1bcb1880a3d2d5858f79390ca5f60bac06968c5c0b9e159d5c49677f0c8313701579cd2fa921e4e4fed73622a7e783a9542653e000e530144a60622d79a804ff48cb933f84599b5183e6cb93e257de282e386f6b211f093e37c3c2a43247c1e6d97686a5c46d02a5e8c9fbf611f4a0a308f15106e9561e8c5a2b1c78c45ab0d4440972dc28a6d92b5786d5652190bd8f5460ea8d0dea988162fabfe7597a5deaa75e3ad2de1d2172d3147d3332f3160361b41ee990d5a89b4b2d27e97b2d21fcbb3fe26e04672366bb03c34cf5ac6975219297d3d299ce5852c6e63a7dbf632cb14078f31621ee4 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = b27ca8d41aecf8aac1a62553ff64eef56b4b4e45fe39cdae8c2cb2241cfd2525adc53be954aec239e3add71b5f76a3e96875babf8b31edd5f8f3c3f0e6569997639f1c9b5279c38d5ddb3b692bd228ac4480d45077db55bbcf4285c5820c49be2573fc4aaaa23ed84e11bef56d9cca9b584d423a9fd47f76cbfc5953d9f84b4d97c07e706069ac413ab857c64ebd179eb75496170778afd74180d877c9d69e1956450c1f899493f3f75ff7961adb24b442e78c551c5b35e89b34b018b80cdd94f7594365195f45cd5baccbfe0a976a86559bd7bf3d220b5c900375c7be88fb353c3b064ced669bee6751d6eff659eb89900a92b7ba84eab58b7e95cb84a5e91dad491ef75a3abb9469a7939796c2f9ce5ca32f83235852b0a96daed4d3c6cd57b5ac91d09cb16f0ebb0d078171edce9596b913e953c5aa67bd9afff21cd261ca814f334244886daa0694378f93fd858e15ef3d13e66ac89a58867574804786c4c48d30ddd3337cd02a7776217acfe7084588455a0a85b8ab5ec33e99b1cdb75541855578aeedb00475e05fe68e8af1efe574033d3dfe37ab5c0ed300395551ae639eafaa8e358748ec38946bbd3d0cf8dfbd8f500e7abe33a2df3b9b96cac0e9cf61e487cf003fa1484ca5e14d36797cb4fc87ae6cd7ff9fcd835befb160c4f5acfa8b75236d9297de4d43bfa7ea5c998f7f95db6dd53dd06875de3d98e2df8f7c3f76dcf8049933daa52793ac10f57ad9ffa74469f7cb7df2d5a485fa4f4663ae75b2a6349b248aaf4853bf7d9d432f8c3ce3b13a9d794b9698869842b81649cbd9482c2435886441ed9a7927384372edf005b5e4717abec398bd183b321134a4de85a1fc9b72f7268ccafbae28ace5dcfce8bc26b81ec43c6b8a391a6f51666e7d60c33f1e7bd4cd5492415ae5bbca5ce94f84557c9cb58ea951fa5df2e444e3dfd969f38284f6dff16bdee717e1598dbc6d3834230c7d22c7cd6a2f9d1eea957f58b2d48be1ca97c92617dcf2ce934ef83f5a36f41c7c73959c8a060ec2c1d7d671987243635fea56ce6fef92b1d6aa26c4cddfbae7526fdfc42e8e7f2dc13c7aedf4835c7d7cdba469f3cfbfab40fa7fe383fe47ab652309cdf38d91d8d86308b73f90d869963fdacdd9c544c95fcd24a77e7c90f3fe5e52aab596feeb1bcd799a3ca95e06447724f0aedc777b9d48fa89ce9488dc8f2b903548bd47afc22e453b68736f5cca6c35ebb028cdc7035678f7f69a9dbdffbb5bf3746759670f51f6757be3bae767e7f80aa75b60a7a0cc99ff70f67cda886cfcabb451a36023c688d7ab5e0a3b5bc895e4ced3597a594d0e28c7aa25859e57bea0cef692cd47a8a73740ee695ae742027a8f573dcb2776721815742c66a4ba0c7e7e8b8281144b80288cc7296bfc96f5a2cb995b548d48294b2fbca97d375b922d3392dcf7fe835f62db97b14739f6c8b1880a53ddd388e2636f8674e6818ae10258a098d9af4458a64c68654ea7d99746b9baef3adab5653a7dc00719b54e5afd219fcd7be6fada3e7357e35224184a4e24b4a69de4f666b33e1530375d70b73aa6da53fd05ff588f34ac1cb3b3f7fb4ab30db459966fafc689cd4dadad1cf6108859a2943e2df84a0272c13da5a495942ba848ac92d302a98a3e55937b8b1b49fe588be32a540ec90b5cebbd90d1b80dd24d32eb85fc041a7ca307e522b8c5fa9c85bc258c8abb9f2678d29569f313a1e660a2454730261a6766945ce42c140e5181c68461eaf12d1f185c358233b9bb4902fc5089f851bac83ce3f07bd7b185ef08626d7029129703334084375bc5ba27ba023ca6722319a916baad529715661e3a413c8137cbbb206e313906df1ca77cba73e5499f54fc53047741af2341d5623278f76131ab47af10bb4dea8f493b6c0e4829ecf4c425a46d21755e93e5a80d0a927739848695be93444a98a45d02d1131e493da5a0a1117b41d4ab3db35a7a2e95c6055ba70ef159e7aa0dd5452598f91477087bef1396acd48e747b962205af92eb99faa809b4bc47eb93bfd3860102d4adcbfc39be80024550656c42785a6788c7a851b107823a02a3daa4caf25097f1f9afb29416dbb360c4a824e3ca2a30e19f94b805de181d0a028e685c378dcc225112899a6b79869109ca4b094909b21042c179c6cdeb22564cfb6f89135022fca3028caf7abab19a4045dd5a60721c6bb47ac53e40cd932511f2e5473d3b4ceeb44be1a00e090a886d345b13a58620c49ca0893f23058412054ae5069c1014361cfb0379c2215f330abc647114a3c597765fd014c64c8c1b1b45b3bd02be9d5a55b0cacfce297581fb48fe0256f4c0cfc84aae1c542f36730e5f10795c72157c653210686801210418b549a7398ca8b7c70ed007cb153d2a55178ae23a5b095ee2d116b9f3a1a9f19faec40d75256cdf76ab8e393210d3afae375a7bc384799a6efc5b76f287499c6701368b8ddc219a9f2295e6e01d22c4a50bd08179a08044b702ffd786faa088f867b63b951a92751cb0f839cd554a83745444c3bb88d3609a9a4bc2e0bc73108a71cc7534217872539bd6e942cd36a09aa0374a3894d279a1f7c38a56e7c0298948c330b8c3a5b6aec3bbdbb87384677ada78017564a7fe40c2983a9ed3acbce5e29e3a78502952a9540a44975572a1512b1d4284d9bb528e538f43a15216f4b4f2a5208e06c43896a19c416c99c3b677564975948468792edb6532f9b0567f407fc6d6c302766c6d1373bf78a18896188cf20ccec39632269f6a193de5ec5dca85cad6bc79023c691d5682643b6f314827e0b24539e2aa91123b3fe42308f041dfb6c876d079d60a3ef5735ab8a36abae34f4a12729be4a00f753c7e4699572375e6c7b037948684206c08a27ec12b26f7349cdacc3559ac29d5cbc35c310870597e391ac4e4c02991096f37492083bc1c43304bc3d5925843622494c735942dac8904cf195387eccdcfcc8a999b6d1b744a542359e6b167f91022be1660bbd218a6a6861aa17c57152552172f38b43d5281956caa77daf9b94cf60cbf08cd9d9b4c1edb6c4a17bae3b36800891910c280c3e7cbf4aa11f33a7c70e3b419c2b2b9a64709c31878f913fb934d77b4c36e329ba98b44f394631e0a289042061f527d67446d6ab55ce7b43ee1080fbae67085a2a03b36cc9ad9b5b546156c3c5a79b092a67912a19575f6b5546397c15ae334b451c3d919422f28b70727c75fb631a2ab012bd5971b5b2b75f80e14bec0494baeae3c7ae947bd69827e1fb86388052c3bf3f8b4cd25a5687ef43a72ef04766f1e899d25c9a005009c788b5faf985123cfb3fb97975de26dc06c5bef7b6508409daf847a64c8d30d0974fd3ba7476dc76c46b458a036d884 +ciphertext = 4894d82e0c293e45df99ede632043a85e6054b1611e5559a4cef6e13de2f1a4900f0765b01da4ccbcb823fd715242eaef76bfca91fe70349bc1c24b265a0d3c8294e1dbc274fdf5e0e14194c418f5ebcaa17e602986608b1a7456713cca5e121389169a056d1ff870c6f23d44c96c2afa779fefc28a9439a6f17a28c76c80b83f54916db504d15c3d871e9c31da20d957a71fd5553c7b2478859124f74a5bb62891586d6641cad19be57b806e59ef42790ab89a0ece8ddcaa718e965c7cb91f7b2e7e8bda3db23a4f7281d0ec15a6455775705d00a6cd2a6a900e4cf6f584163990c211a49da061c2174444d3794e76fe271e7dd01e580a2dc34c5feefb118fec7bbe3d28505d39713b985a5d8391589ca29f68834db1f5acb42bdc6ddc7fef72b0528c6aef837ba5ddbfa47638cef78adbfedbb93104a8a8ca1d121038bcc3cd29128b8cd93a69872d21b00f64e0c6f64e970d0d5454f08785af96a7f3df920852456b51d1c6559be74ae8b902f499e4f47bf65916cebc9b092939b3fac9097fc29e33d9c60e511763c7d48d05e30db42845c102ecf542b2296fd448b4adb8cf6f3a2b1ecf59477357feea532f41013f6f8494cef0ffeba1c7e88dc31f3a80e110060f9363638aa577f97d56554a9cb48ccefcbdf211665ef0d19c0e5667d4970e46b3a122fd9feb6369ea20dd39bae8ebed4f2ebe7bb388b2c38abff8010403ce5c63a9ce090b2ac371587353fa892cb221a6f104c58c0f24d5071a1a3f2fe15e0936de0853230b8a8ca393182276641286fc393264b4032ca117ccac3b8ab44660213cb645b0a91ef6f40227f13ed27c79cce843569a5e6fe0ac49d1aea0508902f33e3b4a4ea6a54c6e0baf40315291a367950b6bd7efa92d1051c135de04f5e2f041273db77ccc0b6d99886a88acf4848f5c235534ee1503afb3152dbff0fbf85d36aa8854c84c9b4403bab1cec6de2bf0682dead6a5aa800338aca87b7d2627d26bd842ee17effdbdfe3fa6df0db28ef11f01b0a93fda3edb75fcaa9921068a4c1e7d96d99864ddce1eea3f4707abb56bc7a8ea6519462209ace4535f2e119d37e24746e9fd3b56c078f01492b3f800ae10dc633d0f64f106dac5c60d928cd3e15097b92c99a5163ba27d5b0961cfdfb49aad6acb76e8d3c09ae9c3b093e887d1ff0f79ebf6cc2f1377bddb95a2269d18781a4e046fc5a9d13b366906edbd308b546d7584c9533615857680a22dd7865644d8c62d27f5585c1f8699762f86fa3f64662e77157793a33f4babdcc657af6de6267ee3afa991c510be7af8a0aa0b154d78646f0e5df267c9a7b0e46dbcbb02fee8f3c53b2f5388f01674c21dee845450f659bc7fe4776d515a99f248df58bc24819857d672dd2e83d84ef05476ea6cba94b0587d85ddf6214873fcb332b98c087666bccbc8df96687649700471eab9ae063bd544349c5d39e1d43363802d8fe6286401b2ccdea2408280bc53e0087f9905f13c3847ec2687897375c8ddf9de7aeb115b712fc8a7ae189b661 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 2735bc067af4897f6c8953fe5655facb24a2a64d7522988c083fce083ef8c8e5e47d4f988f94a8516c77873858395afbef65b8784ec5b979eb6db84e3b2bfb2f95eb1305832f5fe0e6dd5710a5bb7195b8bfedcba9b5ba21ba57ba6fa280565aaceec9015635cf1a7121a85820ada78bbf6fc82838b6b4d5c6fa5d46469136cccc34a3d66434d915ba5c86e67ed9e73f4c1f3233d9fd73ccd5419dd5dcd6cfd62635c40f6c990753c55ca8dd385a2abec79fdb97c0b4cc8f26b28ba573b5194d6bdcd65f5b97e08df009c43a65eccf452447b0aef00ef68f18cac25e5c71e62a39fd8af6c6b64b48ef9d1f4d84801599aba838a48d8ed83454b506965507cc6d0b34bb139301eed14168a79d67d7c74bbc7ba8d461249fc31734dc384c9dac4ea6eb47025df0857e9593c6faae53c8d567e9945975d0df5b003fc88674dfec37cab3a4f676c840a453c6751caf16a4743495bcde75f8aa4fa47e8cfd6499b2a97fa76f9f8ef5bdaabccfe604f33231235a7cb47c96d9c977afaad533a06a34d24bdd925007984d99aba3aa8168a8ac92f662348686f756bdc2af3f8537545d13ae9f657cab9de788c9368864a0604daf22e33e117d5742fd6ef577cade6ccbf2ede065565a5b23f8479dbf621d93e45684d6c69fc0f548af95f248db6a6e86a2a907c95dfdd53fd942a93bd24ede8803474b03f73fc12f912257454d0d8d137c5e8404379ebf71968eaf181d8a03f58dea58892a1fc5fac7d1d28ca845068761f6bab69bbb75584f7d289dda2eab30379248d9e106a784739be7d00d44418bb9ce34bcd913bb27dd4ca0489610aaf55a39beba2afb5859d8634d9e473ca623933ac14c90f64cc74af396c318691716eb5c9cf8f3e8b694535fc2c73af9843032ce9167dfc8a3a76a2aba45eca36321ba367bd5b176b5c7b8d7b7192c95cf38d3e2c3ca5d585c4ea63009c7b851fd875acf78f20f7c59499526a8b2e4a4f03197a9315df2fa0c4e47a3a6fbd8bc59a7c1312a6d19e3d63f8d78b2aebff964af4825ee4cd3cd87f49bbcfdeafa3a5bf46a7f9bc97de739f85af35a6b9e68683658ee37ba6d9499cbaa8cb44c93bfbf87ef7cc7b1eb6491154c140cf127ab49316b70b8237a556d90c9687cc70cbfb93fd8a706f063aac1a429615694d7344ad50c1d48967c5334f354297df49ff9c2fac8639ef8c126ddb9fd537fca93c1006a77499658c0286267c9e0c11be2a6136152bcbc03e782c42befe95ad00cd974a3a9ade3a3b8b4bb8ed8c4d3683ab4ea3b84b84c482506f099e7feacd8943385f3c6b6af765bcc99393213938d67be8b2b168d6c73c2eacc42ae3ff55cd3ac6d85f0021ec0a6076f0209d7b1c96213f8d310b8752b1b619f7f366faadba4283520333ebf8693f93a7fd6c3560058a8d16cb50b585b3e5e9e4263b050259a9a0a8823e3caddddb81c1ca5392d323a9539133c68b0a6cac1fc834c8d8d9375431fa6efe3233c49fc9e88faeed1ad68a37eb503cda0377ae309f86013b4947bb671c2bd48c19d5c8dee6d8035c7c05b9cb8755c7d7b6db39d7dacc5a91c6eb666837f219d75e8ac5b86444b49ac878fabfe18e4fe0f89eab7cb7c973ca8e0437f158889fed53d194419c06b92e51498ac2601869a1024eb0370ca3a420c48a765a5b99bab88a759251cb83259a628603c54a831ac0147f3a97b8329474258b7bd6067476605a2b2b8311252fe54565c865e2dd96ea9e43b23121c27ab02c348310acc38d9d583b0d8105dc87896c238069c689027910f9bcb5d29aeebf57c2b9c78f76866768c0699c6bf743c0b43108c128a5277f39b32c351926369fb8754cd0197eb9ab602f391c4ba564be2c3423005266229a10b21d31a7cc3d40c2e7192cb6628afa692d3e75aace66e7bb1169893c8ee45bda5560e7f79c711d32d52c0c783eb40bf8977c3063cb114b6368a8d1486a86cb108d146a648e080751440f4d8087116701987c328d8547d0573f8c03d321ac07138a60954297cd832dfb989fd99aba8b213e7501cb3d25b384c023f66776efa3ad4981037a54400729634a782adfc24404bbb4f2405a27a8500cd79e8521daee48848e485f53a28de91089d849ebfb54d97d0cfb3cba46a27438f426eea1a0122f2180630864ae46cc5f3a828725cae89331d540b5b3633eebc0228000d75908f21277104d7816f56854c3289ad1a5c72c1655830089cfb9c90b1306724cb2828be679b989a3565758b058ae983c1ea9b71f10553795537d454eed50f50a40274592ae165c846d85527e479e3fa8d8865047bf68d200287c0a5b8a6a78c4769bb3a795979b774713a522dbb723f3628f2f4126b639e3b4c5c4b076d321a208a123d82852aa0db6ff8457e745b6b710b396c8106e635a379e22c59f17df7b7070eaab38d5448e4ab67e6b21078d5b9f9979c6d7365cd1423cef6b4c2b186ac6b792ef9351b6040f423ca22e7a1455a0473273e3b53b92a132d7c44556477907fb41f981a06cac9beeb9655fe90c4fe93cc33337d78294f7c128ffee82b0d4211e550342c599c9932a201f3cb8bb253a0559fd667a3d2cb46a4936f5cf9c4d0d105880a446066ae06841e12f259e4e6220d932633f77f9a6b463e180778d53c37e0bf423717f4d476ecab6bfbda7e461ac3cc9806ff4b38fb80c0ac9b0dcef56e9b27881d1aa0892657b12a913a8ab84037a6c78399f53816d79c6a1fb40f1ce200334a7e74760999f8a0294c3029bb23ee0cb81700b95ba20140cc5de537aca62c9808240e74d508a93263eb14b7d202a31ddc2147747192ba1f38932538241ad1db35caa40097393038957b64e716d4cb3675aa9ea46257bf55a6d1fbc2c356b020073e16ebcbddb3692515be92dba54cb62c702165c74864c3a7ce67d8af92eb78496c4e8eb78b55db7963b016a252a85e655c95936d6006bc07ba6250e458a387bd7bb43a3f5a16cd8733b66565377c1a74d5488c1a0dbfd7a6dfb474eaf29fa80aadc83267d0b98eb7a8ad3aeaba977a0a5e55b8937ab68e385f94db13fbc6c26bc23b0b8ba331a578b99b493d875f206c278a3b4f63e156fd386fc13104d6dc96ae9bb3055481b846183de71eca09273e58c466ea225b1824246c799ab8b045fb844572882299bd6f1b2787e1094bca102fb20e0a274257062385dac60f37a15b0496ed23c465a3ba46bcc0ba9b5b78c93b45cac0151687859b155ad62a8539cc6b872aeed63847ca64797460ff5f477504df1b1894fee3e6bbf8218590936e0102dce8adf459d590355576e12c0db43f39b672b2cd912f907cf76a0f6fda925eb2d205546431be0b37b204114f797c007e4061f95c7d56cfc7ee5c49e849dde3fea8f25e7876df2a18515c34 +ciphertext = 2f2b7e105dc744c34852481001d4d1eb1d0bcdef8c5845d58258f6bf6310b2edbb26de7891a00b6e217fa62ff257dcae69b6651ee5e074ddd61c8a17946d1ac239e629bc2c99a3076e97cec64c5a626cde2cd58e30192aceea1d0c743ade2914df45089b6fd8dfcce48bfd740d0bbfe76572e2619fb648c2c9abbe128d3c4154c2e95dc29e3f5a362f6e7a54c5a1c903963c5759533b9a6824eecfa1aa486c5008c3039fe220739e8fa5b135d0e68482623d46f4486e9ec5161c070a6ad330027316b5b7fa0a7d6f46c4a18460259a0185f63505442053a356cd3866e2d8652e892e9d4ac7a87e1b0beefebb3ff94751d7d82247264c6701daae5fff0860e72d7cd26596e7d6cf4e01c0e5deff512ad211e516db0a91a0104d0f693fd924702ad578d535a024a06220e24110517c0909c71bc8d1f53dddb4d1d00d87e529b02081ce5ddf7db06613e6af9fe774e81040f37b00e7408c9a6583c273bf7a742d71f14bcc5b84aab2ae54217891f9692c57494e0a13c64d1434f9c47de6677947de61b092ffab34d05488e0277b5e8c29ea908c92ae68ca9873057cf0ad0c1e7ec0f4becf830b8edf3f6a9f3f06850a3c94ee0b62a39efba961f067b2c09d6b0eb774869896924620687037d052ed339853446fe3312c676d28e5bd54f22dc080961f546767a9c683e4267d8e0b412fca766268aeb72aa35111a5eae473ee808fc143113adc424fbf120029493bd311bc6c0f5084b371f20c73dfcaf52c77cbbd39fccfa4c1b0ca5ca1e4002a891b4ca6b0197c34b3e23b001d6367208edaf9085173c81ba7d25a139c4bea5798f4d2fecbcb46261474b1fde3dea181d8b0158f18297eb0eb3eb493dbb5de70543db4e193ec0eb79aa0097729bc8cd5d93303cbfbec0b892ac9f9de71c349f651c75bd327eb8e1c1e3b9c2b6e2244693d000af2a37510adce9e542c4b455aceec3909b1d3d0775466d14e185135b7cfd3f2b5c7d6c33d4def0e55299ac30a129c79e3d66ec9edb0ad0001fb4e18327aa3428659ec4b2ea509921eeab807459c72e214977e4209b294b9c105aa88e432ad017dc2698291ab51304fa00402a6d0085626ae7462ac4e953c6d9f590c7d2593c25a90b9b212b71e4882a4dc449bacdc0a5b338c5712c3d6865ac00e9f4e059d0fb87851c77822f17875563484e3aa7310039fcee3b6e6fe6560a925a1efb23852bdecbc7bdafffafc1c769cf7f1be11185cb0a426f49bd4ebf60e52f6196ab216ccc5fa5ca40b3ac8626626de041e4e14270aab1339c562dcc40adc1de8c3e184ef9868def9f469b035c082a44764352fe03db55beba995197d04f1ffecc5cfd47b31be972de5db28137a6fd1d80a958d80b35d20c6094f36c6584646a644b9357b36cf4d307165dc8849be47363c1c1d7244d1d4bb13f143fe8978ef5089b38966ad6961f2bedb2f51d368798b0b3859a8f165edc5a02adecb9eae1ec60624d523aacd6da4f2ada45004f096a6911227d62e2b9d6ff277e34beb6d2ce6ce428311b500 +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = a78d63522ec694ac4672d8d9bb3b913e8ca2f659c756ebed7cbf36a04eab4ac9b3f524e216f3c998cdddcde37352d46463f371ffce4b26aab239498d44975f7885d4815552e727329dd78428f5568caefc76b572ad9b3d335a9f5cddf83c76aef8e8e36aadceb55f3bdc4bb0608cf9d9998962f76b217774d74a3453b6eff104e089b5e3663eff3aad7e9148f4bf36b6dbf6c8945de4dd97e6e998a983cef4aed8b082c3a29997d8bc1c4733773b74edbe326fd3e9ef64a13f79738dca0bcdf3a9e8efbf0565f59e837dfd31e229d84b74dee98ed58aed5e180e870bdb7bf1bdbb53aadb3bcdd28457e10288c1d7d83f89578413a46b0b04406657b4e7e5a6d04bbb91055becc8ab907ca9647c4b8b144045b6cabcb974a47a35309af3e9d9f81d6ec556fce48c9a663ad9518cea36aaec71b69951100cd2cb66b75f1f847838dfce3ea3417ae2e29ce5bb6e757483d437da8bdfb86b58d88c789c4f9e23adcee53b170c6a0c9dd33ae5fcfe2ae55faea568f5b2ef77ab74878e0cf4fa1f7c3c8467e3d28ed5ab2c91b83836e11b9858a66998cffe8a67682588ca78e6b6d746f98ee34b100bce62edad921a9f020a703245edaed655d35b3659a96b32db9e68d882fc986da904408a98c469a84cd29cc99abfb071f84c921c585b9b3233c5bee08f637ccef53a5bf9b36b42b54751dd6f9a215656aa1890c0c56e0cc6fa3d1ff52b87ed72375a60374bf8d8455218de0d456579a3db3f3afa3b89e3c14ee12fabacaef75bb2da5202d7671369f82cb4707c5f740d9ca06ac7d34b48a2934d4d26b6cfd08c8b0db6e550044069f4cf27488c039dd1f3cf929294db60c3f1de5cbdef1ca216838091d3e72fdf6d141c957dd93bb6a59d9e883640d87a2a85605a9730dd53338448d5374b58747c7262d5a65ef442d6843deb83ec953f69b4a9bf00f39b4a3847841cebf4b9907fd7b9a66c5da724cec477e02f18dd4d0bc51addb2505ad5f82d7edce7398e0d9348f64268fdeb0fdfd7780791942565afbd61bf03719e7d6f87953c4757a75b1f6ead15c6c9447c02938c3b75a58bbf5ce65a5cab2e898fb8d50319880223899f5546e1df53df7950691b86f8f3e15438c3b80cc2e7b6e78a96a0f39adcc47394be36c9b18fe580d646a89b93283edd417f8f4bc4adbd9be30eecccf528a5a09595f33cdf64f6d2f6898b8a4c82d79a8ed31c4172a7812c295c9394e929b782b334490eeaa38c17cb4e77664306bc7c0e726ec656e253e1c52bd524d7ff0745665d53d73604c59ec88df6fc9ee3ffa0486d79bcfb735e66ff58efb0e1987a032dc98f0b4cdebc70f93ca709c5c2fad7d98a7b86676faccefd9c85974d7c88ce9a0bd2f58f76ef4fdd70c7c0e15950fc0775e23e73b60555a57d302d1ad04736de5cf85ea2f3c326968d3d3d8c15eb400b13bcaaa65ebfa4eef5aad69cadbd3e0d841c7ef45753d3ba9cfbc909e0107865883ce8eba462f7bd9eafed5796e43a8647c59c64b7a8db9c0a5ef9938daf728b872d3d3755b682a3fce0c5876f040543bcbdf8e97dc02a53e2aee9cf2cde302d08dcd0facbd0765a778a7fa2d3a4c9675965d6799fc7bd4e28a4e2a5394889d23406fca0e473a9d639b1299251b46d07c79c0df1ceb995a968b5b707b760d8bcb120f6226ef5b742f34548902a7c73338a8cbf8d6b02a83470874b1ec5845dcfd3a4067c420f8485fae1286a23adb7373b9217c6dc173748870bfd164a16d62a3a6608f5e2b7fe78b92364a4b821967db45ae29aa1b11c0cd67cb4299b32d263aad7a26eeb3a69ba56790fd806abe3935d82487aec3205a856b4981e7f53b8f82a30d13c1b725b1418607b6619b0e8a8870bba6070e33545730182fb5f6f9938ab2ca68c50719fdb472a88384ef210b0c22785367dedfc840979ab758479506064b7971426d70af9a95e7d585dc8b67d4ffc2082bc45a4fa9b4fb9541493c3dfb88fca757eccb50f1a9cced9c046f37062e3879e13958bcf063041e858810b057680276d2ca12a307f511217fd626561587617674319382a4a00ce5e3bcfc5ecb5b3816133910650a469ac663f7a4a742ddb87c4e5be636213880c246370b1cbb8adaab6bb7e1185e1f95c945bb001a0210cf56f326b35051b8dbe85245f9bc6d973b39afb3a3b961501862b4caabd0d55693c201390f48fb7511990571985764be7373a7fc4bbd5e82b31f52494b15b6c2c8b5b593182028bd7ac7a40fb446ea756463c396de29d0fdba2569b9001e169f7c824c8a42d313a15b682bd52004867837344324e2f91a06a4c9f7ca447d6291635257cb0934e015c1937f732c1bba2c13591ccf4add16960b2303476000d984a8fc8036772c3b7c5721261387ae535129a7921a1711c98103161a95ebe16c0e0a28555dc3598cac2d701a98ca249801a4bb10379a5c29a1932acb6f6c3d040639fa98fa7297c6d453e35587488576db9bb2f9d1c37f8260cba3ba90e4b779867ad97db03ff005ecfe3470d2c25d54105ca287a9e0c039c2a2b71a1cbc6260d59a268d60c05d61202ec336cb8285b41a043bf58949df50def5937bee1af32d174e8fb463d03449ba747e92a79a1eac8ded247aa0a50821a16ad4c9f533a0fa24684d452a71df461aee15cddc2185551112682b4867c6cc27c43bf835432cca184840b85886a5d970e9f515f7f97151410c401e9baadf41ce2b8642313c295d28587a327c41c24da18967a6426663642dcf389c50892d6847718365cbbbb80723c1397b90447b197842c96a141bf6cd317bf12bb64c664fd237e886a9f793313aab15f668c91c71149c4b90b35b147f7c34b8ab6948799897855b22283050b113d64a60aac739948844a9f99c448d21c414425d77560670c298f493d891128ab1665d8141d2b1c8e67950a68255b7f9376332b1cd7c6630ac05ae7c127fa7acc35e640e94285e78661b15b21685a36c889a8cc890ce53c36ef23c2f17cbd8c31351beba827949f8707a05324abf05aa71857bcbe690405ab0030e648fcd3bfc0f2ae2c627e04f490bc3ba237059ab93085de218029f056b0f57abd342170f5b16db069073a3c16bb1c0bda5136952919b22ac477ac2489237bb0869656614e4ac248b003799c761b2ba5f2711b24a01419c88937dc4ce745acc16c796e0123a4228ec623a2a4e059b80b72beb1329c9204b6555b0a62c14df0b19b4a157bca985090b428dba8587b53ca2714b2ec2a04d306b3cd5d09045252960a068412f1bd67b83a217049d0685ec3d63d691559a327b2aae8e61b905723fa092fb95b839f6de3670c39ce0498c27b87d20c24e7f64e22e32d432b4f9f751bde0496c580a181ffed762aa35454a02d3f1f47ee0394c89c +ciphertext = de60b879b315048087f7a044acf1495002d4d8c1fe775d9f05319b141573f998398a2ec9e0a4783497271e5b3ebc33db67f59b721586c2d09e45cdbb77e59dea5f83c2e4a9e7fad83769ed0b29c89a117ff7ef7172a63dbbaeee3c1f6c6ffa92d69cd86a3e44639f718c0b3e713c17449b0ecbf674c8d84d1a33d7a96b4527c270c206c00aba5bb834930469d7dbaa5019dced9408b12774c4a36361a1d9bef01b95af6532ac982345cd45f6926017bb2189031aa64af89b83ac99db3fb349191de25ea482c88f3232d6cdbf02e445f76bc0aa19f35d178684c4715284d52ca3063e2129dbc757ddf36c3fbf08051bef13c498feddcc27591b69ba34be65231e6e4825e28e6cc626902e1ece7a4e08cf7e6f029fedab272f79c928ddc22f78113b9cb94455afbcaa7b7c9a50c1238ad2eb31adcc8a88a4c02a8fa3d90ff586f8a45251b485014a4e8f154181f5ec04f6ee3de1d7c5a0088d4ddb1e9563dbcf0f9c0f2576d87017cbc89a491317f388f06757bd8cb8a34d7125e2c66d7c00602c785104912bb52e9ef681e54425fb384cd443837338cf3f093ee407f3b5989c2d8b7477d2765c1cd97a66d46f1dad4a837389a1e09d0d4a6b56762efd058eecaa8aae088606b8543dddc23dda1bc5a4fa76c94755a7f5ee314ebd22832cdd17b05117919c07dae55aa8419ddbc9ecf4747e38a9780c2cec7e956a58687b082d7d873f5ef4258392b8713b1728a6e295eedc87cd848c3f8fe88340e2a32629a5d373512be9a46b2f6b286edfd3b9bed40c55dafae968340f711d48ebc28aeb93fbcb039714eb11d698a5c73eb3058a015a4d0e01678742a312b8b9fd2a6cf7eb26078cd4c17dcc903d4f51bba698167882912c7f7b6417d30ca0f074c628a6d5b16356c813f592e568fbfff725900a8313fc528bdf6beb60cc5b445ebba573ec49721bc9aeb6025b1295eb536f4287c88d3dbce90d5dca6b9c27a6a879f0032e01fceacd348c92832003bcac4e766888f849ea6e7636687b766ff8bc93a94a7ce3d2d2c8236ee3409404c3394e807c108c3f6e17d69fc3dd5861f95e959049545a4422957b11c65ce6cb926c3df73104d19f67589fdf09b44ff4d4cd0c7056125df52ac7952f8b6800652ca91452ceb11de8ebd09b52dc4bfe9b60559ba1547fbed198001637a4c8abb24b78964f461f910ced77c71d114fa44e7dcca920522100c8470e5699ee58338e715ea09e257f74df146e9b2083b394bab377e472b918a8e94274595ffad4f27e7660f5e29f2c292f3364b2bc758f741f11e215ed45427c5f512b7216270513524814b931f50b1b59a89752318a23b927d432b2876bdc663dc04cd30de442ab832d3e20f77ebbe261d64bf4124f64f6aec0100216f453420cf66a65d4620bdd74322fd270fa502c7f4c100c39c79edb4c6d09d065036d7cdbe0e8da3298f65408f6b010e19e3e9990f46793e32a52713991a9b88a3814a80ae52bfeca0f60388eadf5c51bdddd5853a591d56f9008e491e11710f2b722ca +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = d08f93b02a9a6f579f51066bd6f5eabd37d104634cfd58f8242dff2b63b18a8bb4f45a5af4e8f02523cc1779b450df83860bd0053d7c399ca5d8eacade156af824a988f5ac6bc5deafb6e77a95b9752c922bd6a7c4265a6a88b11d14d3e58ef7b1f8d78784f669e763929483393cad6e09f018143e9d2b7cd4fdf8c6f56b91768113259bcac9f6a18fa2a6185a1cfe8656448a638f58e21a3c6cdaf3449b4f9483ae9e0ebdd4bc674e0656640dad2b2e5809e547e36f6f8d9437bab7f7f4fd5c31e85e4d34643148981bb6a82c3c75099a33a0e7528d45303da8f23e1a4ef6536170f53a0d7ed04beb75fa34b8aee5e56e4a538269775818f83dbdba538f607e5d661d2a626fbcf737c98cf43d50353bb83e2ce137fec26fe48d81973eb974ab1ba4b97c95c0dfed65523430cc06620debba3dc9f888497658bc5c64b98be65ab2a0738f086dd22b95a66c583354a63865c5f37ff7d98d279c53f731f3fcae8689754194a7b898e99b897620dd9ff75677b2d5d0d7359905e763571638358ef65aff6d0d8c9b4729f404975cfb89969a77615d1a3fb404baaa545120feb3b09ce577fbf74f5b3b0c8f5434e87f61de8fa83e41fa1f701a99a7c123d500078922aae44a0899685596aa646f13573eba0b54de4fd5de2c60c3dae614066474b89f2377994cde4ee0a77e1d5cdaf77748c1f6f3cb8947a98636694c4efbfdce2bf779c66a317989a336bdd7150583157ec8d845a5fa4b3e43de95084f44f70578124c4c7894ab84584daec8c13a6598525cd23ca99f4c0499a68aca3e78f7799be0ef9a463a6d5e2fe8656606438274ac8ed8c87beda16ba3b8e5857a7f25831d8b85bd8ed5828575320c6baba75489455154c3ee50074a313ba9ae1db747f39405544f44949dde165070d8f71f1ba80e57bb5cde320c9aef8fb47354079532bba5138fae31a7d26e18c46ae6b2ab9940eaba9f1ef4f1592770c9a9604263a4917c825c084c353438202fc05769fdd97940aebea439e5e28cf795cedf5640fa922a3fda1ce4a6624cc9967ed5475f46334c77ffcb9907159461dbe416637d8df34ab4c4d1414cf7b6d5a1d23331f98f73222653adf9685b6e4bec9840356bea24adc4cf6db0b678afffefd0bcb383bfcf580c99e27b2870746ce5570ba1cec89f5dccc47bf5e7bc1fdc57959e434ce1e01d810d5b37aa8ab3392b33587932470eefce2386477f4beb859c861463c42b5030d9a1fdba3e1d49ef9ca5a99df58a7948c670afb50864b73b4db52dc7cff13eb3a4cfe009268cd5dbd0a89b44c156333c9dfad04bff0707e07d2ed57ce78705ab6ee43681b0fd87413d80751fa7743399cae832f6f3b65df56ab1c3dd6967379f1db4ef53b9efb5632a23b942f832a70af3cde494b0c7393e5eac807a38b01e9d526a5a3caed68f1d7812269ec864e0aa739c289cf0446b68880343f3fef157094dd424a34ade523e76c0acb9c29d2fb6346386b62fb0466bc8a85b97431aedf80850510c4825ec4f2aab987c5ad7f11693e7bbb4662a4890a3c54eccdcbbd75ca468428e48f76f8ec43e8ea8d0e3bdbebac9aeb89fc9d7870bb88c5c16a137d4efee75640774c4b536bb1d7bbce797844d960c98359f5719b20dca6d1e2916f2829e73f79b55b468170b64f2f8b0c788796801c8ec244e1973c7e033b768414c55d43079b2711bda630e678b184a70dd161c4dabbcb91c07fb634620d1450664a444e82d22a0a4f54ac6c7c02d74120b2ce205fe49a139b9c8194341f4295ef126b37f3b22e35792a8853b60eb3f7ed01314491c4451470870a5ea5b1d23442019bc1def547fb8935ecbeba0833228b8d7bf2a4aca52436a3f993f6164666ebb3c38317bf5b48cc7182c00d58d4a095d0fd4c60e4229e77803c4f38f22464c7a4259e45ac71e8ccde6e5738dcc798777317f9847f8357dce21b24ae462d0465f1d58203f3b8590d88deb9c6df4722a1420a9ea0813ec3777a6cb11ca0271292b6c662a870c292291164004299c82442a8dd5404e74cfbcb45175237ae5649f7136cb47b9c6c053203f265bab420eee2c95a5960f8a87c3333785e1b89ff841a6aa5aa964f3a853e512acabb60e29c3a4810df33830134c0e49bc5e1ba41b07b671e1ba6bfda82576406e6da854920a46914c8ea986b1d6a0328d4a450fc0ce698b9d16954aaa0c52b6f2b5ff7b5347e84c3af403e9b31ec180238cd5af96f5c6f0d3644ab51717f7255ad6551f44378294778937cc56b610680704bfb37e3ccc07c5276777e37f36623dec8225388c3a5a2c7026eb902c63260ce27ffe657bce34a47db43667b9293e04ab9677b6fdb0b0a429a4435a9f5624628a2c07bbfa8afed562be4233019524e67cae6f955226437433bc59835561c462071ac38058c145787c242d4b6dc055170675190882792ea49726dc8b2cb638763784d3c23e1791c93a55383a8c4b59643626f8948d228b670312893ab3ce5b123401b1b24432545889d4d124d2b846070c1663b87a3475c01adc4f4df286fc91c76b018c05b5a26a696df86c4b1fbb2ed3050cc9b54ca2786839f854b9461655972fe21c3c98007a693a4d0b8aafa3ab73f1c411dd283cce59528477b6e089847ce6518f29b523602f80ac573618070bca649efb84fc3947d43b229e05682914c153809521ec9b7978a6bd667f59b18f1d986222dc9ab345ad2c7c7cc5799c15297c22c3734df18a218c5bacb364c9136b8e055053567a1856c21b96a1a2723913c98cc364bbd1fc4edef37e1853c523727a6c677ca4c82ac4d49238e1b60c1531d1dc9835c4a96124a0011c09350353aac4568a84293e8666f6016e56c38371489eddbb3df3e53e6767bd01e231eb122f13f59a83a35101844ab389954e8068f6d7128c738ac1774edc6465eae8ccbabcbb41271467c407d36928d9e3174c99665e3a9af0fc1b2733925b254a3aba050ec3925dabc511427c0b2930bca63ba7629366c1ba620cc0d7090752157b5d70c098745e37db7316056c7bb37c024226425107da8ba0e9c30e2606752f31a017e50a0e10c05332677ec851eae14f594a55d07392c23a962248ccee1221feb2c8f801860892b33ef2247b801e5ff55ba97675a71037fd133133840050b8b7914125e9d30165847319eb1e483005ca0bb8338b75eed618c47408d0260ddfb1527640a148f29e64f65fcafc59a8715a8126830024767009bad41a3385c0173be51a35f3825843b59fe06b5fc03dc21f6d925b9f6d92fff175c9dd625bfaf502b4e287096185885264e085f67e48f00a7a7f82963e8c67176bff839a54fa1008328c0612f98d83d35aeda108ea4d6c6bc0fb958286850422bc357ca67b83c986048e0d0087fa11ec +ciphertext = 9ce63bafe883f7e6b5932e071982bc35f643185589ff435bf663b9fe433014e07285e8be328729d3d01079bef62ee178fbf8e7d9ed1c2529fd9912958b8f120dee444881a4634d0e96973b8c47c004b373d513ecffc97911b53cf0686fe2cb8fd33eb7c0f50fd38592e9b7f73d119eb8b7288e7259894812acf13f81191f5f383279dc7c05f290e580f6e0a2e488a002071abbcbf2cefc4bcb73eaa86ffc1314e120b8a96edd6c0ee4faabe7037dbcc63d8dab849a55a35f39e75502c961f1051008ce4c9b0fe062cbfcb6bbd6d99ac1cb24e979d72d39e057233212af4afa92a3284b1b272509d0aea213d5f18e5ecee943d90cf8bbdf9061b7da7329cf363e54237ebc2f07de66ad90cc12744a74c6e5d577c8517e140d64bcd40018995143383f5ddad2f7828163d25f9c3af254119541fbd304b96f70a8cc9822087cc2ba3fdcedd9529cfb7137991dc8842c5cd1ea2cfa9b831f507c04ee4db010780fd3703e54fe7748597f1574683f88c3a0e8a5bb36695b7c5b1d6f566f318263f3777db8f433019b287ca1b8406e7755426e593134880c908ff7cab24f2c8a446dfe1bb1b51a546ef9ec43ded91f7ec7f1f97df2ee83d8f52ac9e174639fe9591deb37b9d9f9dbc9d1be6b2ffa2e8c4b5eac3332ec069e9cec31bc7d21c5253bb20ee61ee701985a8a73cafb73b479cc19ea62b998eb85cabb5b4ff462088255ce5cfead669cf5e17871733361a9e25392a8baf8958bcf08da7bfb12b3b174acbdbb8c9cc1a87b2f6e48568f19b1ccde0e9f59ef624dd525168ce64dcf1e63b0c118a077cbd7b48144234001910dda0094e21d0abaf3741aedffbff4dd92d291180c67e3a253799118eddccb6033e3f450ecd84637b563dfa9010a2c07e9b4d4d55fb71c7cba9485b612561ab34566c40575c4c41eb9ec7d0c08b100421b7e07af4c864b7d8997fe4458867ff0cfc02b001250eece27b8e8b71a1a04983193520762f4b7c4d2fd289af45f1316f89108f19caff5703960efb9ba42823a6b9d9aed333e37e5989c8720341ed60f4b47223bd313b56e6160fae8a3bb56f97ab1092a7e36e2811226f9bc14d63bd3f48db4fa2abfdc2b7b8215d4c5afa301783940d3c9f8f0b48ef9c35b02e272a7725c77af66a4c3f43f7da5852569115857f7036f7fae04db993d6a016913c8c24912eb8c6c68159059fc3c3a4dc6c47da86cbab270506651e2f3a2fd268f81aabf83239d885c886fe85df698f72d019aacae6d59eae99e2e1b10e77207d047659b00bd0cefe7d675d7b4b50669056e536539a0c29d35633c6a059dc09abeb473b99a85b067d665374209a5e2b729642d03bbb9a41df15d8a2f12f65d32c965c0f883c6acce98ec4692cf48c55c7cd4e5ccca0e93048600b3a37fc6b2cc617f03926d033c2b6a4255968cf927c665c601a9a23c58db533f67f65e6b501d42ac65365e14c0180349580ed85e9c5c1f4f0592644460027830ec2470287d6ccb55ca108d34bf1d373f27e46b64b848834c85fd585a239d +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = a428a13444f9ce9c3dadbb62145ede2654f6d1cb5c69c68e7f377bcbc454aaf867781f58fab6f2b6367fc5cc46ea6d682a3984a23f30b3d7c25a69ce4ab9af0234a109878e0cd4fa9b858dc559ad3ff8fc416d539c08828d5eb337b7c0ea768ba646a2f059d0a235a4042b88e8934d3c6f821a13b67baeff162aa80953cb71c396d91b91521b666516f552eda6ce453c233460799e38cb16ac6e598f670c70d73f5804cc494466710d984e3ea551f5ec60c513ee955fe91906fd311e81831b7fb4fc61da443fe12784cf84b5edff40daecc87e8eeaae1d808ba6f33d345ba81bd469797dc03583214355e8e9a356e367a593a6898355ae1f9a8546a0d04bf27a1fe88adee8db3583da79ea9ad544086540bc2e78b31f5f00c94ae763d38486b6cefecf7e6af20239db4e5ac807fbd4bea95678c5fff76c4757c68d2ec9f83b8766f1a39e06c999016bef1d5c3164338aeb53fd54b338c46eb9a7258981555fc2563e585a6ff60886c32343e0045746f5dfe79ada9bcbb6281abe3474ba51fef67c3f76a23f7a901f8e2b5ab0786e8c5aadfc35488553f745d3adc942c8ec0aab7afd0c869b9b9c67ce847257cb23cde8b82bf5c468a9bc35a181bd90f4bb90c4fcd35d0d78b7a9d46833cd90f7bc2678cab9b75b95a6b457dca8fcb84938dde47aadb7b6da9643da507a2b8b1bef53748f518a7f9bda8b35fcea315b3b359705cd5b486582379093e64f4323d9f0389ff899beb4c3ca9689b413bfe0eb654f183362ab8398b1e3696df7432be662cbf6f66657ef2c056504a5c1ca2de7a73f6acc83d6534d58fd0937ddeab973cdd73406de066aeba8655dbb3d93d26eb99e698fc778b2fe88ffa8ec7c62e4f2e18bf4fe1d7b87a8338ae7af6994c70d959cbfc3720c3e74b9658f5d43713cd47325eb92643dd73f384f04e6831435524b686f2cd377c18363f8e554dbe6af09f93c30ffa1f4a8715957fe7d7a4db9243a1c6a636ae5d735b870f1297b6d6b5304ef552a54aa5a9e340ab4d301dafd6bd9a765c7ffbeeec3c44a7649ea350f0dcde5a6f8e06acad29888c9b73cf0aa65d44b60f086c21c6abcbd5442963e7b55ea9ab21e7989ab7b7304304e66e2119396727943678c31cf3be779c946b834f0a557a8d74f6263d33c807e591c7857e90a7fa15e58e315ae1aeed46249b3012bf2291cae316ded1423674824b852c34c97258aba7faf6d5e95ffb2db6dfd5ba0498a529756f173349bec8c180869293c5967454d01cb3c8edc7a3a776dba54c37513727a69caacfbaad8ec4a52aae872daf5cb4a99c39bf25e379ace27485d8b91fef9ceb98cd4322b59f533745d23720ae457fb1eb3a0b831de777d07f88ed187efa1d89db9acbc7bac471be4f3acac482b0bfade13881aeaaae2f340c1e747a73b9071cc551ea59b03646b65ccfe6e04875754a77025985b0f6adce3f1574ab45cda47134b560219338fc93b0a398d7f95e69b4b32c2ec3a075f9f8e3a57fd353328bd3f87d5cb60c67074146fb56d476d9f619dacf3ba7a371fd9425cfc6486a9f95a1d9cfa2cea75ab9ebb4f35af63c6f8648ae7855a4eab5c9d49f3386996181980b17bd2a63d60e5a64a8cf3ced087bbb49b9264faafe731c0dee965ac981965a28ff907ceabac477e2c9b6dc95aaeb0531cbcb65d8b3f6251be17ecaa89a5b57c1198ea66af1f4461b91c360e4531c4d49269896107f10ed1f1070e68cddb2a4e06c387f3126087a71a366a250b450be1567dc957bbd034b66ab65fd4eab2d89b8481ec2427a4af3c1b861c799263f492779053a0128508c86ebd6201c876bbe8ab8053b790314047a1901c9f327207b2130be5bce8504bb03817a380975cd81fe0c0416986a7b74a16a21146636abe4d2b2c5c1223d39265a6845804d49e5f160abfe3ca21a345b5d044afa5636c37b976f2894869bf4500c62ae9941b9b3c3e6064fec351268243fd75bf287cae8aaa9aaefc1cfba1032ad2623a6239a7f834a4826f86132b59ab24efc9c57cba929a64ba90271b987bc08a913298911650399429e9bfc40742df735f7cb935eda73a41f96caacbb34324b29e64348c6063aeb0bcee9066028b3340aa147b09c42752cfd6d491ffa497e17ab6c0726aefe59c2577764a1a996fd879e58c23f1c0ac9e9372b3f0be42c829b7b09acb722e3189a2b3e72124895ccab565dae583c6c76c34c2c0075568379639869325f6e92e0b91a2d4100b2f4aa6486b756cd521e1b781a964a21b8b0c72637a2e4299fe15c1ac275fb077cf42f36453e7603c91a648e09cbf128ed188639b7247584b333003a2175bc587925111654f24680c540b32643b035ff38bb4598785524504ebcb26163d513867d74744c8b562bd48989b3a328374a125ca05fa962ac08b0d22277e578206a165a9e3d31a084b4492c664448aa62986b55fe8c8420816a5a9c035644f592969fd0951b6e9aa57303d1f9927ff6b3de99263e2e11cd8317cfc899a45706746e9850922b9a4f9cde515623f3c48b86379c969969934ccbec4bea3e9796889cbcc56285e9a85f0b3471bf9692f3c72ffd945089b9a262ac1a8844c38c807f7274708aa0587f94a107089a99694fc627291c30fd6b0430eca692db54a96019eaf89635cf54f579a63048070b7f32dd2c32a18e2b7e8400344412e9dc5943bf3af11b4aa6c328499da7c220670958a22bffc89b8f0091c8665b6605571d8a1b5c934ce4686c7c047ae416bc6e39b7ccc92cb076de94001374217e9b8820354351cb377b4f06b7fbb69f64c7b48f781ded2cfee998718d875eb94866e7c5135358ea4ec92849978438c77cec1ba1803bf9933c8856657c953125eb76014bacca8ec9be6290936130d166b187e1463e55cae3ad85e96e81bc574220ab0cd374aa1f657abea849259b4431f1a00ee59b35486beb09302bf71b4c2e840963333b4a3be37f8048d42a0f67c886de9b47611555495248ad4c587577d45775f52135518793ea14582bf153c74210c36b9251609a4b28559ade5a93203725a475971b92beb88a69357bf83f384577cc1dfb62c70fc65401073c67a66af878fd961bacf46c633e7cac0e5092458cbba0c3b69494c4c0c0da6025cd6516c1ab89b3216bb9ba123040051563610251974a0b11be7190504522a128ca3107938f5b18e4441b52f7944b0e54cd3946c57e7ae3475bec06791a9f5a83eacbb12f40ac971cb475610a0e6c546998dafe5c2ed852d7715b3dba61b94849dea30e28720bbcb90c7af7feb0af619a0cf57d173405c828dab879de09b58d0fc7ade140393ffb5343abbddabdc118fad519b14436a964ce63f8ffda3565c2424c89b20974b748a65a5aba75133fcb3156dfb6626a83bab +ciphertext = 4106b63bd9cec4d8be3ac33234128e2bc1346ae6388357a3258c03ad9689e68cece1992893dd26409f62211674a84155d1af8ba9750add112f33c812c04adb0a1a59685ca91bca59979af97c948d5443c38894543a225f05317c22e6a8afa332f4cb4dcd6638df6b3a0efaeb8f065c576c06f8cfe3cc0b3c823d0dc638e2203b886efbd82e6cf5216a055e364de238948c55187ba2d5503a3fbfbb684cfe76da66ab53f97ffaff0322a1c0224941e8f64e3705a2e4e9d58d022d31e6403329b220546268abc3220bd49db91521cfd149fa186474001c2a86c407ea8ff96ce07cc335b3cb692998ee7929e27e80cede8eda4406494d289f479f15c51d3ea30873cbc9e5ca00ae20df9ee94901542c02ef705e068f589a4056a9521b6e003a345afb85cf66319506ca2f5a75d15baf62c6c5db502afdcdc010f93cbe1d1fe4212d6796f7876c3f1417508480678fe36aeb0715cd76fcb15f4154a7006a073e55ab89fe90b708e05279a9d51bb83d268e729e47a832c2a93642ab79023b6aa81063cc2c82030012cbb2374e005b9f0ded74e82aa174496744434220d74afb7c018b93555d9ceb8a23c5fbe22744d8dc9381d43ebd2c8088db2c699c320f7a45fcbb2003573157a848459f587b22d571b37b94a76575f1f2341085e08e31ec55f330b66ba4f5040b199dc847262f6d87e8ffd3196367beeb904241f7e0c09e9e2b0094a26ef78ab7ed8e7400bab8094b6eb75601427af06fb9a3ceaadf3eabe93a4e3aed4b8e1a72fa616f010bf0642ddfc84dd435e9ed98cae09a805ec5fdbfc740d6d218cc7ba34790debb2141990a3402145d48ad84548d5d2a1c3455379f1c1fda6e6b03cda2c6286f9285e9f4b77aa6c82e7254ad5cab2c9028a0e47084f1494978d58e2f8bc0ee2c7f2cbb38f7c50e7f60049feb80073493b1cca02a700f0d51901869432fae4687e11639144785a8c53b285ab1f9cb7bffdf5c5bcd322684fc871759e6d43bd61bd450cd69ee905724111e11f3723eb87949bdfdfbf769b76e5239814eeef6d5ad7fd65c8e0c32015868b9756f7f96afafef2861506e882043d1f947e7a21572575a475b0ab0d11566428cf7714f1497ea85de68282038563fe43e72ce17ab525e93265df6d62d0254f9c69ceebbc0fd6a30e37d2ad218119ea8d4aa85e302e4e70e25e2428032c00250b14f6c434f2b02557c4d8367792692fb31e79259c76902bcb37c4c00a1beb4ecc502b7c66412358f93382ae592a25505ccc42fc8f02e43ee8e8ed6a3d93c2d9505de290ea8fca4519237b7c76a6ca6fecbaa47e7f519f68f118ac54443a5e7ea238a61a1348ab16fe8bf1a1e39462babacf98e39fad4af8033a0dac02c806ef6715d6d9978e9b91d28cbb6b894898de9cbca5ef3b49ce91e19e23be8b75b187bfdb14fe943f30e11f253065df04b1863566e456c0f4af829d3ce3c88f728bf08e4b38efa11758a308fe6a2a45d0deca930b9929a51e72b7f8da6a45596378e071f7bfca861117f534573b35e994e +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = fa198bb15b42795d9dc34fd02c75a8bcfe853c474c8248b50638f1e4d77fd598d97aaff017de7377f76a89ab9478bed24c9780fc7f8f6d03fa5666828143c52ff8e7b9688c70eba293df716ab497094dabc56d3f597b5fcdfbd1458e360234f626ad67ea48b426738dad0ab986369aa63f6dd199c7231fc59bcfdc8f63429683721a2c682c5aa853b86542698732ab86fe39c340ebfd462f86fdd599336b9923599b67ce44c0c7848d2da6989e33fb7b5efa47f6a4f44389cb93d6a9c1b7f3d0cb95f699cf36ad0db2855861c88bad063af5423362c7774c1626834ee5988086f508fb51909f6a3f475d01aa8e5c8c4140537091d494af66b0ea4f635913fa2264af67e63542cf408b1853f87c68c28c8c144e7f94d77f6ac3315f23405c233e14f7762c25f609ac34842553de175a70eec08b44baaade5cf09a604abd5b6907eef43fe7180eae92dd50778a6754e374888e69182afe1336677889318cb54218bcd5559eb918ccf5540f316725ec98c3de144d403e0c59b335ff4d0c85ebbce877798c41aa43c5c7b738b7ce1174f8c049370ba6665be646b41f5aeb947b1f4bfec5357c7566c13ebbe48c453d6c2f74a9295a06d8f2e0aff2cc3df6f1a6d3b67dfd08d46d4d7e384e776af2a4418958f6e4559f5975c586e47bc0236b4897622ae439626d334cc97acb2de8068e4ae44786d1e445147a4728275c32554b9cde48aea6d5e10c5a6b556705fec17297a32ec3e1f1f9fee6fe60e96ffe06554b93b5c796e44086e75d236ca88ecc533c3b34819e891e35639bd6cbdb3a40882db6e3b3f8c4268454169267a5c53497d3c51fc58846c193eda1630e4600dbb3524f4fa9dd599775bd2d95edb5bd7438f655aad6402628563db3a435f75d440636cd74d41eee62d178c92359d83afe90f106be012dab63e7b3ec7e8a4fb59e01057c416c330dcf6e485a6d9d7fb707eadb298cda25247d26e4df044844c2db883a5bbfc3bd6f1bfbccc7eedb65c9bdbfc8d6d8ad4cd71774de6dbc424cedfa897a061f365cd54a90ba6ac519f98bf645536358384392538eaa406cf9201e695cda995a9ac5f84f35166db38f97f0d673f7b4dcc4762674434e679247cbe42695b8e8ec37d7e8cad53d1c3e8fa0add757267c43b982f26639912df8f8f636c45d91f1ca90a1f3f9d5dbd69b9e8f46ad78f33ab4e0df483916f7926aaddff47ecffe718b3bd48304cd40f7ffb097fb6207856b6ebd774d34e82bb426747406eeae5b93c63dcefc7cfd9e48ef7118df6accded2b043616f6db7153e6dfc17306a77800ee87e03e4b74759794ee6943ecf74afcea08197a841e68f269fd2b21f4803064f6f3f95de5ead18949a5a383a81363bb11ee8a8569a39de38bf8835362c723e999402d3cf729bde11f647ce2b93916e5b9f5d487e23cee6f9cefc5aece5e83d28d642e4ce6934b43931158ccef3832a457a5e833f3189e88598d7ab084f687a394c257abcd8435ce7e7d1e6b79e78a37bc7ea2377f9839b89aa9d5b5d935afecfc1e6d7ec597898c6a69765cad5e9784b7849c685ab5b6de3358d6f99d8a4b075045d6fee5b63a6d1aa95603a67378157b54889c3021453e383f08ddd6c0deb77bc962535672a8d77c9eaf9726cc1a8b8d87d61b1461f33b7f7f5a003a8657297cd100324fea561ba879ffa75287d9a838275734593abc2b842d9353906334d3f9324c7d00eed794c78310421db45cab6900817348d67490bf1485e85a3dfa255694915d286ab5243b62d3a91f8493f0b19626fb89c0b9109c6e1084bd8c848c06b3472a65a2646dd89be2d922a0d2c5e816652c826854ab36f44809ee56c9f7e26a1dc30823535997a05255756704aa1029b86601e2853c2d34a192a9b2b76b31c69c1a048a76a6a58e48bc8e512b1c767347ae28ae046076c20179d0977d2d54a3f78add2ec6bc06071d9447f0461846fb1a5e91a760112424082c2994a98d07aab29e818fd15134de437c7fbc59469ce8ba80545a4a5bf337fe142b72e602d8a1b3009cc95975759ad38274e234aef0552b8aa65cdfcac975495a84c124f8426a9c87d8db03ce48b0382642cb9e31ce210b774724912b09b16d88ae007ac4542c092f9bbed9c262d823d9d5719b357821d4c245f384fc923cd334b9dff579e324a0bcfbcba61fb7ae9f69b3ab88693e005ee32bd1a6a3ca950a22421125391a060276b07242a795085d0098906969c421cbc469128fb5393b72590fd391dcdfa3cf87b9f7a4c6cc3a1791ae1717478a5280a3b7580bbedf88f0dd7c1c09aa67d6b284334049398ba983bcbacb8c56237bc3efb3fbfdcb358a006457832df7a01efd937e68b3299580cbe1c9f69e165d22683b3721e4189adaaa91846b7717d41baf8d9a1dc76c387f0b55c2552533326597466ecf06aca624fbf73226e471d835b0ee4a24a8f1c5fbe359c61d974a4d57c2f7c49822286ca27116839b784d6782c13b606b87804ba0969c7c47c7a29ce16cecff5514028c3d84944ec8cab4b4acb5b681723511087e25b8ae84f3741a2de6cc21e7a370b35c255c34555f29645d4b420494c4d993ba3f092ee240f1d3691753420891acfc9421c361ca2186b563ed63456096227eaa738a33ab56029976c1125dca790114aeb83aebcf271ed59bbc2e8377301b53d697cfabb4c6b40bae19b6cecd421a1109f9cac7b71c749e60a2005a30179c393d5033cb4f8795de4c98d91538fb9a8cb1654b1e6a82918471470461f54cc71fba50deb3e1221c55aa616ad5262e352adb7a89ca04557a2090fb05704b9521809b8cabfa325892ab46765cee83850586918422212c812373a1c6217ba890b4c5310f7b0d5d8275b884aa9e4914c85023ab53bea88ad4281a7f501a87534ac1d806b0f8691e9f1bc7171001043015b391cfac09b5fa88f840c63194632bd5a012b34b50441ba08c879c44654f136cccbb7114f7b4099016e0193cbbae63522927df4b740b3ca5b32b741ea15a47370b98926a1f90618f5235357e8087443c93444803dd22bbdd5340c876d41f3ac1db59e9ef17db71369a315600fc6801a54483fb015ad3766284a97cbc241ad73461f4b2a0f6645ef428805762a6e57474d29288404ad98fab63ae95e25436626bc66ee10c01e55103597288ac521b463886f863833948455319d3455110b68bf7bc495d1a922191a1a230a5f036c3c4ac05ee2609d09891ce368c01f037d818805a566193a433e924b30f4e86dc76ae2b345932a0e7025f8ce6101884469e31aeacaf4d77e3f1201bc75919a696301240cd6129f66be58e19d99b0d827d9932785cd9ea3d92f7ba54463fda268813efab5204efa60f78bf81d320d01ac09ac06244f7afbd2d80fd356d9 +ciphertext = b1ddab92816e9b3d6c9414ca303b6d420087f1f154d8fb5ea6dc1d5508e37f6edeb9e00b1fcb7d14066fc3585c6b61452303e8f76c034cc94efef7c29b703f2c5f997b2e3e73ced4e264bb8d940cb26ee5e048c7baedace34c3404752746593b40806baf5a7d13d1d4f43e7d178a85d3edfc37e840f7d7aebe4748a4a6f862073e18e916f795fb9305fe250574f2e7de19aad589e2a2640167d49da76c63e0dd54065e83345c9672367cf0e64596ef1357c0bc580ec438aae9b9293eea6bb2dc43eb39069e6d409ec1c61633c436959cab8f564858a835fc468815fa445c647fa6b4ff9b32a5fe4bce0ace00e15511108feb69fd12ec24900fdc7ccbb3ace5677279b33be301ef70247b625315439c805eb3f1d68ab316635cd5f5eb8e9ac9439b5278bf7df4e58da1353508c6601af0db94691f15de3d2fa21b5e2ca7052330f55218f207fd956b2aa774e0920dd6ba34041c0c801b69f4c3feeb1b6d64d78fb8d3d8b4d13792ca75894c28c1f172272a99799fcde0c9e10eb3671eec271855eea93d50e8a341ef680056eab4da00cc43c38207aec9d678c0d00b64f695aaa6ae2ba75d11f275d2985ae217514407c952084b123219c2a119d2257c1ca1b635d770cd1a01819d03a2d6880d6b0ce1b8bc59da04ade0ae64b543fcc6e96495bf5fb5d88807d5582c36088883dc14bd616971f1d98ee6083dd74a2bfbe96dd08d2711798643a84f07aecdb2f30797cc98939f61fd5d5ab12ae0dada77ed40c8187ce5e505ca5e8da98c7f5705c252b0a6ea56d8e347912b854f414c606d36bbb60aa9dbf30fbb1152afba2d335d82eb865a38baf10a01ef2cf5f16f06bc826b1f980ef49ce6e7e411a15750adb337b3d3e7503b3b50a3db53ae8a7bf59f26fded1abea8fecd430cbc72f4c6b357bd30d01d4d03d70f07c2644282c133b0408ede5a61f797b01d288d9a8326ba620f071f4823e73328fd2c18e6a3376fe5b41a54f63632338b70ae5e85b7bae061621c35c609a6c2754229a57f65d8be1b0889a148fbd19d58c002bf5d6e4651a3feef2fe29dd8732211e9dc7a68f8e2341c33a573e815e67026bd559c398121ccd61305961194f69ca1c21debc8caf921f54a2ae0de9285966a9d0a8720cebbe6d18363b724be75e402da9d56aa1a13ff4bbcdcff699adf148998f5e47f6ff9a43355687c8c7baddca273b8bd337464a42fd11dd33feaf6f3c218be2b3a3817019a4e4eb9cc88529285274d5c5e5c2329a42392cc28aea4ae431dc29e6d33a8542fb79593d93fc4d7702791d16ed6934e6d1473dfb21305657d2e57b5032388b1164165e3f6446c024bde67994c7d1e9fb32ce1a9ed53094744f08a5e9fcd34c390313555ab80a08b45f91e2137bc555da994a3951711eb699f2c0ee681e2abeed06f017798b5fccb3e0a8ec4eb880deab51ce1b21507d47c3065766325f03032b8b747c63b0feed45cbf1af5eff06681096f49b2f54de23430f165ad9cda134bfc9d1554eea7336094381a91b75e861d39416d +expected_result = fail +expected_shared_secret = + +comment = Private key not reduced +private_key = 55873ec8c5bac259501f0f5faee3f7b9b659b19ede7d43b8bf8af5a9cea5116fcfbc9bbeab28f7471967989e3398ebec1cb4ec1cc3a8845dda29797ab4cbb553076c214e67abeff08365f7a05d4dd9a476985362898b4e4248f1cc2642c335c3c953c86655eceded3098d5a2ae366ddbeea06e05547e2cdc0667cc98494bfa778eebc5cbaccc3038f93b82e57f814799cb7a9220be4042aac83a1b4897bc6a15c87fca4e44828966c49b6cb8f842a3157b60d6b3271c36625f9d8a93c7daf7b4de1396309cdcbbfc9f9856e7cbb5b1825c88bdbc4c74c58ef3d54d08a6e3a6a431e3a59ad05fd1fbb6828ecdd61f1bc514dcbfe83df3d09ed2e9834d5d6bba8a354fe04c6008b37f9b07857ceae238f5a563ff88f42e7ffd2aebf9bfa0fcf3af041dc84bd6cd806cf46c5af27c9bcf973d93a9755cba968e7c06cc4f987b526e71461b69e023d76cb652c3adb10f2bdfc9d6b583b9f9fa49d5ba4b6b42fe9d862c82b6fe70277530a278773fa740eca749c00a61735aa1a287e9cfb75eb07689577e8239f4323aef5a316339db665eb9784ab69ee37e1fdb9927829575f2b824b3ea4cb540a4b12ad7c512046712bd463f779e1279bcd2c7f3868dc72d06e3095d376db48978dc717dde424d0b5e743eb76d0ac0b024c6283c8418e5b1a8af97aa483e5d2a65f228eedf3fc69cc4b9a8c4c0b90bb17fcd6337efe00766aeda3e876ce45435b5662dd8a5b9f545292c870a16925546ae0cecacfb7376485d4ea2af9d14edbc2d16dbf758d34515ee9379cfb009d2b9b4f66428d2e66ffff9be9944adf6b123cf9b68f700af475689e2c46c88cffdb41da5f6d227a7236fc0e3c3e57dc4898e07caebd8d3824fb5172a799b8a6db0f770383dc98e1957fffe3d5d8bfa52945eff5c4337b6cc5004bacbc4e9ba73568aa357f61c70383447c70e5a5896b9c1cda2f2c7a76da4d278d736d6b685f4fb3cc49fcaac1830b439468b6bc73585b4205751e66ed30999863097d2a47758871ea99068dd88657024fa6d3715501424d5a834d10a8f4788675d2546afad54628ea3f81abccae4eac11e3ddaa5d4da9e54dd9f2a40dec3ec2688a3266c9e16c6d461087da37ea1973374c99693c92eef9d458f92ac3208268079be77c828d38305ab421b6d82a7d6316ebb37fe318ccfe08163a723a4bfc4cfa25f958f29bfb807ae5e441db8863ed3843c8ac26c7773084f209fe51d6fd83e69772a0491240f7917fd39fd08713ba8d39f3b84cc83a8f89bfc19f48a958a443339a5a2158dfd8ad8d11983602ae892a8c1152c602eebe592c3ae556bfee54c5dc71fdc0b956270cd6d85d78120bce35fd369de6b6aaa0fbb015a7bc3cae3a749e960c533d3fea6278494e78b6a3c5b91a3beaa2a0752e6cda30e33cc86dcba2f3f32c98b9aaf1bbdf9f8f5b15a6dc3a741d43a53ec1dad18e93542fff4ec5a952d673984a9daf0e8e578debc84bd9856794d127d7faac63a1e49a79a2f4b51464916ccd7f0a69f07ff6696f5806f9fca4aead50cda48a9d9d635a9c68acc753b8ee115c35488758a68256a32f4964c53ed51cda8c5053d1b5ee26aa5f270b3d9f69931c42e94fe3debc48d9db548a000558528441cc07c18856568c4fc0eddc04175f564bda148788608b71756367551a5709127668efbd60b389877001b948f2c50ce62c7ed63122daa7c1889400a4175ab959d09ab124bea2c9d3659b8b4861e482eded950dbf57a47c87f79fbc143d20420f4162f711963c47dcf7b8ea7faa329d6a70f601d3a1b15a7890804917c84477d95f916a3761e3d94a0b0d69d9b7c39692b7f4acb9091f87583810ccf67bdf86c4be8f08762f2c3428646a3d33df4b67eb87a2662353a208403bf59334bd9758a9439f8d8bdd45195f2255282a73456d168a2b249e8d180d5b310ba828685b3a1daba2fb88783bb5062c13b79c2b0c3a10085664377eadbb477329567d1158882085850b95697248c6271f44988218777d33823ad70791bd40e29825ed124b963e05d06547c740a5ab7a1488e38c464b53b6f016ba1b7648a14aaa111907846c5df162f61cc62747386915724a3b054e868bc04c934d64b7f2ff461aae980fa806cca7a9c4d7255564b420887946f7a72e4d1384d8222c70330b09c08d9a70aa176529f0685d087b8f9eb464a776f93606b05d0729fd2afa7969eec2662ebb7c7fc821d6b5393707acf25c0c2c81702cb195f8cf730e8a46442e91e18fc7577f4aafd6933450491ee24763bf6786d794d889c3005a323cef2a8863c7ae00998d2e3ccc1f5a6c8a933d5d615ce82af312990969c6288b6893c42142ad87ab483362461b87c641f646410ef5b393283230220a34730397188920b6873f16478331cb22a5a2c73273d865985533a1f8e109dbde719c10c8ed87a831ab65562751ebbb15d3d5b6e01f78db26a54e47943d6b31f916a552ed01a39f96dff820765d6ae52265010545162d509f6ac3f9b7c0fd0ecad4008732d6a9df9449b2017b389522f11870704127bc6d018e0a420dd441ebf636c31b3b63da9c00dc15be0b3188371bbc855254217b99294815d78194fdabcd1970e31e38d37b4b1cc69bf428514f50ac9bcca9125e6473028571be535fca274651752dac691ff8a28c555036378b260acb060faba9573b0b65cbc76b892425294d65658f4a1b3309b424c6865bf1ab307b88022087f97f6882d4360ecd91f3d2513059a784bb256e47670afd5c1ad5c177142a2955b082fd0b546577ca5286e0f1c85af8b0bd5650038609e8ec8344e6ccb6df93a056644cb89294fa19266948e9a561bfa66517a900b67f6be5efb853c703ccb4a296a493c24607a6ac4a749361d8f738080a80ca62aaf658b6a972894e6ca402af3c09d2a6e9c181005e0c4d193361859011173bc8b97755fd1085b52808373b29733a7d0488c5f890364abb9716920c074645ae023679bc9c2b3ad29b9051a94a124a43688a1027c35b90f9303664aa37aa92284f97dbcc7ad0f12b5b6ba38ce0a07130110518c74ea36ca6d6a44399a3983101458f926e0bb3357bac5a294446463814806ad1623185f295d27f2c913c9608314174b2bb8bc03a92db6cc6f044d964a7e3e289ea8f064d9b5c0d0eb43357495d09c0fbc4069903bcdc683763bc4c6acc2517b7c94e3e0265029bff55773421bc6143a38f57410bfb50bf21bafec948548a87667d95439bb78cca2c9da670beb4c816478683b5487a4ce6401ec27a1605f879e2d9c53bf27e165246401cad7840a077934b8cb6d7232426bdbdfdacd373c9190722e7bf342825f7d829185dcc9120588fc76ae77e0f9f21eabd8c0c6eea7767f4e10fde5c2d79b8400bf96b19014b457ec21 +ciphertext = 968bdb85e8be748513a831e247218d164bda5f1f8f433ac105e0798820c1300777ab82383d265ac6c7464c42f2f1b82734ce4208cbd57abb0a0eed81beea32d430ad955c6535d8576a4258a148d8ea33449ccf1e63b4bedfe1752a6006afabda3f7a6f6bd81bd49065357cc1a2b4252faa112997cb4d8ce361dd76c9dc1015368e8919fbb67709ab3dcb2cac18ad6e8c06e05d1586db41ab3555a43e5b0631022d04f5e784874e3a68b8a2f3ae31f49279fcb83c4fc1600870b1d25e433c68339aa9a5bcd1985da955149fe2fccf0e1c912b435beb46a083fcee0c924acdb192f87504b27018c27a2db9c71d4d870676631b4b94fb023df02f6fd2b97f84741d8ebbb055cb786d0734b83cb2bbb2f094a80b204a5a257c770053e94373d9e9dd13dd345fc4963fc05243ae659ab7be475519f85956d2640068e28bdcf7dad6b44372d1d032de309e4e228cb932bf12f7da347acce0e24bfdd89ff7710afeaa973f735d7d69574dede21e4099181d0c885be477d176b19e79dad497f8d46b8843456a5b338c37aeece04596e6ee4b74dfe3976449627deb97e2fd6ce4e903ba2b0adb9396846cfb0996ea32143c4188abcaa15b3a0f38a44625a52c62fdf3bb9cf81e1e6e0cbc102e251a91eaefe8a3e0c903414397ea25321672985bd8d91e07e297b7472e04fc481ac17ef4a61a4e618d2fb3aa728c80206f367d5c44c29ab4704a405cdff7c6aaa34db06cefccd64ef24370ba1c0d2204069c1a48f0556c7664cdd5b80600c466da748e4c774a4784e15234c20f7258cfd998d764eaf8359e69c3fab08b148b634257ddab72777698e63b55f817e370b804851c40b642df365fc97f73a0161140b127ebd3affa31da4a2f59918b095ffd877739e3d1d7af7455e99a5162c301a66536d198d18e2db6876e7ad5f95422a3e363dc637ce45dc663a975dc0d27b9e92008df453364256c3c12acc52e7e4d228c931dd5fc4465151a4d7b453775ea131dcd06dbd05f8e8a9001dcca04a23b2d4d18abf23fb50484a382e1c07e33f9a2fe69ab38ccbe51510a9389c2d522deb000a66d406b2b09c29fe4dec4cde29f358e813b72b38ca32afbb5990cc37f06cf18386e39a06cae8529400fd479152387f0c60d301344666765405ef92b98a7379e983ee89a5104cb3306a296b53eb2242e6fae55f04cb29d0c875bff6b1856439375ad697c88673e49b8753d4180db24a28ea0c77051d28752ac9cf6c571b129fd91c3b0c79b19a6b1afc1b72d1d986658740dc01a7aa7ac69144e99af53089e072be0f2d0e173f579f91acd0047d28b1259147fedc28d0e66589bea1207479f2c13ba9e4896d45a715e0aa9a401f5b5a35e29bf1f791d45ecb581063d6a82fbe7f623ffa5ebcd804932c81904a4756ab940eda4c4c7a4b69ea22701597cdeecc857b4231fded57126cbd5fd91da14548f5b82cf33605abadab82565ec80bdc6f63b8366f08a2bb9b252f33de69f13ae4dad178897f8ab66565b2e0ebc143427d35215ac75f4264e +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = 2c2248ae4f3164c9838735fcbf25fc5e4eb308 +ciphertext = 21b025a34632b66c0b44eecb9c03cb7f59a7ab0c69921735159e9f61a93e835872d753fcf9c63092c52603d1cfe925fc743b0733ea1ad6b5eb612e8c4a5fcda21d9591cc850df2ff062a0c597196f003974a2bc2ebf17bdfd2e83deb5a9ae17f97b6218401618d8e46a6d4c8dc9664a455aa8a70afba1d4a233f6428d89ca8d42afcc441664d717fa8bfd11ba3a70be3187bfa4143b17c3b67b7c351e8978261a7f2d2cdfb1c402f2409994f0c14ed786c7cfbefbc13a72a2ac14da5d3f20dc4aa4a31baa7d0d0161374c030aa3c9211145c846859c5bec34247a06aacb48e4d3fcdbf5edf69eb46062150403de20a0f2dd98023dcd1a555c946284d6abaf785ee7eaeec63b457aab6abe1c7b2eb56de16d66693189eade5e97630e32d785daa3b91aad9eb51d464ed8b8a9ae5e8ac9382087e5f9303417dbe3254afb4229a1851ca451287229919783066072a8528f15cef27a9d61711e9704340d93fa608b4a5fc73120615b308ede1a7e7210ef4f32bbf32f4dc5a30049991550eb8a5c2b9189936f0f7bc5caf0e3b66ca5665e0a390a912ab0128a92c5977f697c88dbc39219a410fb89db2405319ce1bd5dbbf3b2cb15858f1e7465490eec4687bee43f5c3a65a232ba4cd5f38a126c7c268f9af5fd4b37c1653703ce89d5d574c9adeba9b729659ab6992e8c1adc8745b64270d39fa93e9ff66235af80c9047d2f37dd6dea72c507a7122dec0a16d7146e63eddb2df5ebd1e5ab592259b82a1d2e21707bf5c32641d8a947b81a2fe841529e2c76a795428dbf2ce21c321ac9f37b493cb31297844b16db0c81eb8329a21c60c6762d331975c935f21809b65ea29d318f5e8856f69f80a63118026e821c4a9731227d4b8949e6c3caed5a2f2b2c39698ea6b34bbc5a4779d3a6b850f2a92a3990505e4ab4c139e53a8792036ba32f5b6d77303cbd14c0f2cafd09675176468672ce9d798c9f8c27189314a219eed4d3d9208421cd7ee3584d5ab850870f7a8aa7e828382a6107d624855a58adbf10213039cd4f471e888c6aa5d3300b875e4bce31f4e4bdeca0320000cac4240bfe0dd427408d108a5ae0aeb81b69ceca597a143efaad463872bd7f16c387ff8b445c831e9732792b9a3636543eb53aa309a91b3a6546828458d7aa1ae52f1ec81ecd7b1f18b23239323b500f35ad7110aeb61d9d9e34ba92e1e742835f5e835e797fc82f672168a6eb9bff147e6420177a772f0e24193ba0c945d15ab469717a9fd8ec3c3eea417e657c4c59872cbd5c51140a9877a88dc9617a041f8226b165733d26a6f5915eab25cd1f86bfb47b7388370d72057bd6a3d1e2818dc61256f92857a35085841d1797b5e10bed08b4b3aa3a9addcdc312c7c5a1262b01276a6cdb7125cdfb18598ae1e1d7cfe0d32b5c45b01f59d828ca855d832a6f1793e30756f4baa0c33edc020f83bd21b079d67474c249abc29f6d85eb81f6570b9af5952c1b3621ca811944e958ff2001bdaa200b9de8b359cf7c697dff273a8d46f7cb18a4f60 +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = 3d5fa297f8d78b222ca23f9587f8a38141699fa5f254e24755e9611f0db532abb855d04aa4bcc7a0f1a860c297180c0226e3f2a4a70397bb319f0d226a6d424a6c22c2c3092038079eb6b19d0b8c5caf718ebfab20e5795504f927212377bab18475b62729216f20020dd5a80664572151a42ebd0095f1b8be255b6599e789b632b58e83bc49b11696f435aa9441df2284bd03054ed353bf4c05d6e94c8e3cacc5e5400f1b8857b12f335412df647252a66b97c451f29387afa58ae17b1a22bc939c1b96182aa706047246a4070c0142ec3119cf75ccffa214b6f4091824bc5aa169fbab3993b05a5c9c81cf6522b2c156d6ecb8a22a20fc6c81ff35c0f19723042710eef807c42b1c6629317e8a944c44453dc416d3650d2f6397f4fab9c4d476aab7cefe238fc4389059fc42a9e2cce7f02e584456606a1cfcca9ababa178d330a39130ed5657b60245aee91863f4451cfa2c3837010bf31cb7675a291d5649d39877a878c183a9555e7746ac575e9ca65dc17ccb3055e26e74cffb6a71d4179a1c90e6e7646f650b264b4a11475284e8199086024c294caa177237e596f40a1ab93976a7761b61ecc28f2a33a0ee0 +ciphertext = d3530b8125ed3854a1d8e51840c36b2aa92023cbd414d5c2bce81475772d24c026e46c3690368a9b648879f6b16fca9c0d630f080d89216f82dcbf8be821d840057a9a181221de67dff1679f3d217848ec990d92b32c42e71704c0d00c2177501564d3f901e643b6067caff86ad78e7107e6d0550cc7fa08ce33174b1f3dff43dff1cda1822e387ac8c764ed9ff3e3681ca57d96ecc15655a2f798ecedc56514af10d89de6b7adcc0869c33e36b18db22e8c3026765096d06329d75140d1c89ef1055374a85d04569e3faba2b3a8ad61eef170224e26137d05c21f0401e7816e741c457eb93d362670ace091cf2eb51b11486e3ff32bc81d75370c3da42b40de4291238d26d809cb80b8534fc01437ba75c76c39352f9aceffc307684a6ec085c615cbb653016de4b16d51781a57cade3c00060f09beba44a9d1cbcd8c18e3b0c611437e1ed5b723bfd9bf3a96cba62b08d3138ef712fb560b2e1dda1a3dca48da30ab1985b67ab418d3944f3249dd2d83e0494fdd4eec01a70b910bd88de68cd65e76aceba76f60edcca6ab974b4d3bf008e64698837ef14414e83ccd35c0d0977699313edae259d67c0e263232b592ebc8b0b76838c28b2b2a61af160de716a3d906bd05b5fc204cdd964fc1d9bdf4ed7f6d214f0b4929d0ea315fd7432409e2d1708352bd299d77f66bb33caf4ba7009b92275a9a9acd9d32c4a47caa286ef5b40cea600bc1de35b63c1535f2de19a745572f2a3bd33245fdd514c157c1086ce588d85056f8f5f8a81003bf08fa80c8b9706e6ad1d8ef668ab3cc26e6b5c2ccad41c6ff1cc6d1166290a1e31cfdf47270ce8cee1b8cb54a9d1d2fe8a67cea0f438f19651bc823513f3ee6e16b87efaf5d9a02058344acbba45e747e18af3a4bc3a195b51d7464299c5b107e72b1a9dcc9b8cb7fd981af7158cda6ade0ee77c41452f0ce91cad83a7c9484c46e779648bcb072929753e6ca135d4554c90da8db3b26fbc431c5503528863c88feb9dc4a15104f8c06c7942e3654782f62fbf7ca38b82483eb4fdd0826bb94422b326b259014f43ca92170098136be9e44c69f93136e9a4646fc5c6d1d27965d979457ab0ec066dfb1dec4a5357bbeefc040bcb038380d768d43a0fea9d38a317520fc4c7929bf5dd150eba0c43d9ce699040f13484c15f6b3e141849ec1a84a88e5179cc618b04b8ef3c3c9e22057a377e715a017802b098f81de10b40b1c8c1fc6a69ae504ceade512871a2cfeaab0a9bdeddca67337b2405d605351840ad4fec22e0bd698201fca5752f79fdd3d1d75842d2fe2c83d96522a4b0bb093103e187e96d5eefc4c866f0431e1f1673dd835e55f44ff677505122040160098f60225e6afde694e02ff334dd36872ccd337a3e34c712f41dca19a126a50d9eeb22395ae66e5a57af6f3724a92af8184a27d0877bdbe0b7ecc40d353638a665ab57def5166ad72fdc1bb403dc908994cb5f4239d30d617ba578dee7ae76b8bd11c1db27583cb27b9e719fb5cf140980df8dd71f665 +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = 5a5614c1fce9a15ef542b2014409c54a67a46b2a8ecb94fa3b64de40d539094da2441a0e94b40221f07c708e931eda1462aa3b3f422f952239d76efd1703ebd6705052273dc329 +ciphertext = 459df0c90aab5487ec4867659ac8a4f4f267aa5070fecb108b92736dfd3150c1136294006d7bdcd7333c9c2711f9cfed3a2b45830b88370673158075f2b48f10791da3e44443dc03b2aae46f8df2eb3a49e15706ba868984a9cef65366e3555ab85b8d6b74fe1283fb7ac91ac0878fce2490a6dc7d27ee2cd502d52e5c912784f11bc97d05fbde370c3717ce238a983d95090f72159abc25adf7a3e82e43480f9f3eab0c3a9f3affce662116f4652933581f8eaf42dc2db3e3fc83ae28f173db0873149f0ab20f4cac1a49951e7aef93cc4797c0b75ac8dd5886d1b29260f84fa4caaf1c4ce63fa85b7f3f84662d3ffe7d9719fd7851e8147e756428b5c18521b6efb7a03179fa579db331358ec903db86e44d57e90cfcf3a606d48d9c0c9e1e4150b9ae472b613b553963064f1d1750e9fd66272a99df6080b98b1743d7f7e4ab167a4f91d4a2faeadbdffba622457df3d3d4a1a7838ac44095e0c4f0bf87b2c6d3bdde2530ac8a7470cfa6fa2735ebdff1af7820d96b22ce8714d4aa50b204764b1b957e207ef672828d8a1dd3cf37083afc0e94433b0df63343997bcfd049e43394a522a9046108bb4f3cbce31fa8a8b8c985a443f1d3c4eae6035e571ebcdfd7cb127683967a408ef07c97357fa3fee17fe3a35bf2ceea157afbfedb0396bc1b7c1eef44b9273a081e6acaa38aac8a3ec41d7a1a5c3b4f3a0fc355fb1a1ed260afe9f2b6b55c17934739cb13d1a46159575b8c3b98a8355243431d989f3db11d77ed9cc7c9e436a2122abb9ea259cc30841a36a5944ca1fadddad23b3f59987d65d3323679d80759ac0c014592648167e3840d60e5e0a60ee27b25fcb9154423888934b928e791293f79fc80bb44dc4b96284f499f1f7cd6c77c3ab4963fbdb7b2fbe002e8494eb5fc510e831121fded7309de23ecbee75e914931d9fe90fa46483f49554a11cae6a0a6b9ac5d469d11864b773549f43feb11aeeb0e792a28ec2d1452e75c94647992fc519063b9bc7faa8cd8c86a2a5f591af19d6bcda9ad724ccaf274460c337c72d2cb201c6cae935b2cb0f2f5a90b4f19ee06cd2f41a0fcc076516598373a20f364607b979fd696f6a7a4cfa30e2d7fc99ee2a636695432f49e9443c0c9c5e78bbade9cbb899cf3ce2f55fcd716544ede6dfba53134ed7c2152eddedb8dc79a30fa10ab9b8d2eb8891ac8caf5dae32c60bacf495e8e8e15eb21bb45f8a2019cf3c3e1055fe20eb1f94c4c51664fb4056d6cf8e0439d1a6fd5f88338727feef7099bf4470ece96a6eb45d0d4c2961df8193da89301b5fca33eded610a7258aecc184a4c9edb05612f6141ebe66ad9996096fa1c26481b787b45dcc84195cec8e2abb8cfd1218da91a55444ad5bb3b27414e8f46a459fcd43e30e9b1b39e2537529717e1bd80bc5c75a499fe49c5990b601e2f37292ba067281984b1941277856dec0664a3bd02d3be8c8f7b4f0ca783c6d059b463ed4ad1bb3deecdd8eea3e77b72bfb84919946887c7e40c3183a9f5a6832a5e1f44b +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = f581cb84b960b66fc7c75d890a2cfa47863102a265dc47f48039d0b32d4df65bad915ab76a6a11160b71a1ad104a920109890c851b2c56b5d0717df60810e067ad3c672ab3f50e6f60634c1c2e86e6b628765ecc71629afb04d2f628db3c60bc3085a4b472965c77f44c7346db9e3c554404cb852bd6804f63a71da3cef22775011bc22d94176c986c5d361a458c7fbe99c2fd895bc46a9f05ca97dd1a49e60816dfd22fa0a2cbe2e0c276c2b0558b4f90bcc596a62346d9266dcaa125293305a072afe960d745c1ecac422593315264be95a062fd67206791bf44233250f59be9d31c19b41524d02ea5f57b0095361ae50029f20166d362ae621327c566d9d4ba5bc703b4f785ef8abfa8554fde57acfb507255a60bd22680e641084e6c6ebec28b4acb0575a7474cb84cffb56b6f87c07e9268a08571df8c3c01fcbb3b46af10f06574d848efe09b2e84b9b8f1825e441166f2164dd4ad1ec482f7646c40b0afa7610a22a8b3e05b85441a632ef43d15f6180a55cc36811860299aa2a5bb5e80575c51b701961bb8a2b6373285b03c30dfd4ba7db418093b93cebb5f4c7450b01579e7d8ce4e6c11b9e40b120580722c621873794c47c966187435f5459565cee8615c919b9581a857771842452154db760453aa0cf927c5ab92bc9f990499360f03fa5bc6a1b7603baaddb797f5a6be7afaa43194693ab7abb0d36fd25b1910d77028c2475dfaad0af708eeb166c6d09d04255594312356b7a9e0db3bc8c14605f86f1281071f34c591987ef13ca087e2071c15aaaadabe9d969b4a014e76c04d58783df3d258b999ad5dd06e55c7120caacecaf3a0da2c35afd68f90d4cf5fa30340c7938cf36467705408104bd47a685aeb8f11c851d2f38704888b83443e9651039c1c2d4f7b4b50080ca766b2d737c861a4b83ce4674221a574f8c4c510620313c8e8694f74d708a7ea9df2554b472b667f214d76661b11ec81852a9dee446db80649f4e5a4ca4c43a77778d242cfa8fc71fa397ff5073c0cc10b39abb0e106516665bee016493b52ccc078608d58c17e147540e17e559657c774af6c7201a869cf28e6c457e9a294f344ecc10817e5530b229d85e24b6a8b2cad776ba79ccae5a95048c1405cf12ac3162681da826590476e3068a760ab67c3befd3b8c2b5085527630cd415d2389a60540725fbb8f9c3160a2fa69201538f1bc09dad3bd2336103d1893a5d966263abbad926f3f9a5dc1a8c544b6868947b845c57648fb1fd1897dce87c251f998fa294fff5c6b971418e3eaa1b67345971b2338745d5f39790962bca98c07069b202ce5b73421ce3893357f8248609c4697da62ea0c5802cc48decb21fb33a724c492cea60af9c604ef9c8a19a2ac3660c0708acd218bc8f297632d50523be4c028ba1e4ee7bea014c818a14ad43b6855f97fcee148ef577ad67806ce123e37a544ce1349b986a974e1162a41ab33cc10647a778c9abda3c0bff943938aa00b6e3b1a37ba3d42616e2bc85caf2c941042b74bb53698456cf4088f04c44eb1736e64ca63686791829b641b69b178c506682b42437b9598b21d6d832f3e463a862623c26c841ed03749e31757e73f49ac935406509d00c458e18686ecae4ecbac9218a7fb4a704a00693c61c713cc8994e64b0d +ciphertext = a77212bb2249f2a642189278609707cb3b70f032ce9aa1a2dc74b8eeb711a5402a3d2fc08761bffee933148e9e545d5d5ebdd293701e94db1a4d389cf41212cd998a440838b71a4dfd742c7ceaf23802871ddcf478c3e2d4ffa50c50bff74af6119fd35529230864e83298f25642ee00b5347f858800bade118488ac1862e8ec59ffb77287e316ee0a3c371e5428d09598b3630a61a7e818ebbda4a6c04f449c633a81d6899ed1991fe24bc977edac926fcfdd86d712af9745e55e09204a76bba32b2813c24cb34b0e860fbd8a46e18fd3e441d4cbd3beb29af4a9ec0600a71a060c6321527daac169eed064a3bee0d4537e667d23b67a736188f71ddd23ed3f352e25f641f66a2d0917753f3052481dece5a57b0651c3724fb1b4054d00f8ffc46a7072931b19b4f94bd8bc8eee986b4c6031a2346dba99282b091ec65f3126f6e16fe2b9289f5900d13036fa0d5ce4a7c02ca53818d4b4ee9dc6c392bffc965473c2df85191935eec8ea9fb0aa8fae62af870a083264004734d82fcd2fce2a0acacb5e1d97496602613e19ff12d2861d2ed8bacddd10677660b445abd5b1605af96272ae18652c8c17e569c52181873ce3159e31171d72debb20f90d21e6126865c172960f97b216c20b413e5cc9e35bf33e62ef5ccec7cec1df84d73aae0869f586ce07b7afb734be6cb10cdccd471311876e989521a73781dab43268adac6ade1f33408971a8ab32e5d465cbaadb31080971b96f22bc75789d9a8c911e932455bb3759a345f46231d0a364afa81fd2e8c3825b27f0363bfdb1c6dadebb83536a3c6b28433213b191d1063f090b0fc0f4f47ded5191a90d3f00b3d19db2c22d1b6ddf5c9b95f9d90fe9c755bc950655a8732177cac21d4de19efa7454bae19bdd24cf669454e2b0c7eaf5e9129c66d30ea7ae8e3edc876a9eeb5cb7b951a4937cc1286d0b2fe4a076f76a152fce417d298e98db9856aa73595759c113b9014e1bb17f8d6261981e59d35bd2597f989eba89184c3dbab7d92af30502e334b2046745f008c2505b2d2f63a3c5bb804161ebe8b619f65b196fc4e7f07807fc4fa6b86fcce3127381e06eec63b8876360a233594089b1071cb2552e97be179c36f34ca7a341fa7af14122fbfb7aa347751eb5d835a6f4a0dd64c9a73431214324e31f139bbf07160178953899979c6de8bf7ce4c762c7ba144e25655b8c40d06745c612f4bccb10e6060f3367d8bd5d2a4d1768ffc804d9c45a9aa9169bb9b0802f364119acc926110167fefbf905fdd2139cf4039c08e25d1511d59719904e972b653961babef96992ad5a0b934c11d1a2ca982c0126e0615e43a874df67b56b0fb0c526fce9692d344728481341ac81f1d4fa46b81de8c624c9119f9689ba7704c259d3de3199c596d25ee367a3f2731cc78179ba757ebfedcdbfc6b62d331b30a731d02961e066eef629271e2228f31829a77022b1ed4efcdaaad9114b35579ed61a252af1e41a0e1467ed754ab3946866ea9b572c2992c4dac16ec9d0bc2f +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = 082c79c723ab483c71493a2cf5287e5cfc0872a8876c3a363b7c00c7157266352e9ad54562d6a5c957c0d2c47b315851a4e9a3ed4b99d0c6bfca65c97a34677c671e493a8765202cd00c2afa39422ad18ac14c15b2f014d0d5c9366a87d8e9b0e8b081a924058a111cff812ccbd394d055ae46aa6d13540628f690d026cd3194974a0558f07641bd597c6028bca894914ee90b9ea38f04cba934553a576317fd88b88fa41c98e17327e0c4fc1a04faea2e4fa45493197c14a35b2b37af1c8637e3c8323d1a5d01203cdf845642c7684cbbad0f1424bc8751edb251df1c2a707419ad2c7503607817e4864e215774a6a6754a34a0c1804c95bd573747ca9b5b5f6169221bb552022a4979bf87c917cf569ffea8964cb4250813ab9da0200d82c5e1a58ebbebacdbd5474eb15aac4986ca490a73164b331c71789c2afd8a55ce91778b8368189127c1647abbc8259f95455536b5a3a933da169cb83a5d59b97592063501cc9b9cd31ed75a7f0e213b4e8c1478bb4d6da54cefc4c1e79c8d07fc5bdcaa9b92d78365e28444d38108ebce06626715f0abc5d52f93ba02abbcb6d4984e08b84881f7693ba873e0c1a35fc00a75743546594eba089abf48c30d49b4179599873b428fab9a8a3b182f8c318b9014f6ab77bc4a0d00319874183f3d276f4e54b943aa59b26abc67002b3f365949b922bb3b9ee8ca25f5797b0c9849c4b2c7ff5783afecb57a5a6ffaa9504e300ed72a9dd3835ba79b3d87754e056c199fc6c98f089edbcb0e13463aec7437b6f695f2839550048c2202a4acdb6d9383b6755b066fbb6ad6e524b68411c12616c63a4fa9a544dfd2576e6287d47689a3197216d289c7f5179e126966827af7963ca5ec0232cc62de0512d409937ae0371b7b910b4133f3067131824943d82612f637ee0101832a90eef9b12ed81b5c47076448b916163caf65b43e22c42053284dd2cfcc146e3d42620a0090cd1183031abaf0c402bddac272c30d166c7becd48dcb037f65f91bf7770b09b03a13238a19a1346c1b1b42361632c22c27600a11f1c74619a9d4f051ffb8c7bde61575e0c4145549ff977300e27f72f8342157395e719707867887b009d9cc6c4c89cd8265b372490dafca137b568cc66667f2693ec3f4c79b303fdd5098d011a169c6091174787fc98594d28643d2240dd4662ee0694e09c4b2db2fbf1937571c1ddfa78f6e72790522247105c6370762b6a88001bbad994847d0566b533787a1f802327b23ca7b519502b598952c404a95643a23d04a61b1b000a376a0f602c0fee10dd73c1fa8d93abadb2fbad0427ea531da9b0513f8cf9b339d24b8b39648b0125830d8db0dcba782752770c89983262bcd576b88af9b5e4e23cf17a0a3070a9646776b3c11274151846ff9a4b9220c96622e7db52ab85972405426ca071902e28c3801d085e33af1f522c46a974a3078362abc5539424e564f074402f5c748a5e871a96484910aaa865126d26cbde85abfe0b58483b73014a59d74a037a1a566a0d49387104f8f6cc4c9bb4287a80aa665bcdf59bde93271c6cbb215e7cdc6a740d8e99051c89154b1c6f35ca2cd3cc4dba0a738090beb92c74d024f2450141721b07722ae31c1966b73136e664e5fa6b7397bcce66816f8ccc5e0f2c11c843e64e42d8c242cc3d02325917b0fd96ccaa389142250750c317ee53d7359988a57ccef3020730c5d453b7a08690d1120bf72 +ciphertext = 4e495e7a574391de97c5bfc3277ed8a4ecf4d2b2179de0314c8dc4441dd9f5a2c635443d8d5f4d28f72bfa54538535c459b67382ee9e85e06b8e360286b8af099e788c6891c19b963cad77d709184ac20f8e798d7e8d8caa95d05485734b7d50442a36067cd563009c50f39f83da223740eceee76117637e27820946af5fbc2b87d9fd1cd21599da63c345e248e2142584077ad9f91b85862a870b9cf743b1b885429890f07cb9e0dc01d0f9d17bd38085bf5e7795be9ea295611659200e00b1cf5f84e241f661e849bf0f83de14b0c69abc7e71918f9108f7e46b9ba392780692801afd00ac66395b8770052d0938bda94dd6fbd9b0a387df57af385669b011bd91aed5de9e1568e90b8b003c33d65f98f92e954369379caa199fe9afcb35b8e82fb1c55a40a8934322362b4e3898c278b9cad1a117c7da119b90aee59569cc836d5257910b967b870ffe9bf14383320a4fa81e354bb6db33815dc7418d9e77579871b0799d6183ae0139b46a4df8f9bd1f097f50a4cc6784efd578096d7d2a53c451f97072e3f9b3d63d34eb0f1c99ded463a5e9c707903794bec889b37bff39dc2baa4662d66633db83c09331681930de6754c2d40e57d8f190494c6181b8b0f53d218fdcad220468690ee951cc8a8feeeb648c8d36c9eece0870ffb81e03d63f8a3d2ef4fbd44bf4944eb9d1bf260b2fe085b769021584b3a455162f97b35c711172acf0fb0b66f4c3e3361e989a864f16456014e2e333d5121d8157ce825c3951b1053ea9f494542789d84c9ed6f001a1c3b83554270d3587cc2e7a5b8f8ae4d07802f469ced0400f48c12fa4bf4911f70a4dddd2da4ec3e88c77140f000f7c19fe6385b28b9070367031f0d078cdb312b6b37fd0cc0d85ac16326aaa07b82d98f1ee8552c526ff31d46bbbf669789d1c7458af8dd8a55744854449a9311f88bc56167641b229a7c662c14eea0a29812590e9cdd34e7791d32a3d834fb2e57ba6af7615a3fc764c64f9d6d4f2912f756d621e8060e7226059c35927c4ccf9cae6d0255f741dc54d85a02e5e4c3c73b8246431703d8f27571548fb8c144742dae02f84c6c799e781454cbc4d6d4cb35a3c4bb80f142a5bae6a5d2e6ca7fbc6287c33245966a4040e5fbfc71c027bbe82e622da577fa7405b8fce77783668a1cd5653dd5ca5bc91a4595a6e5a5b59fc07479b20a7cb2b00ea84dcce520a34a55221239f8bd0755b3ac5e73297f0125826e3a55692da4084fa08b03e744ec00a27511409cfcc22ddb3f12e8b620c39793b4340eebaf276324dbf7dee3b6edebdb9ff096d294801a78520592eefeef9df130b5255f375f05bd625089ae9b90872130f1b852f57914cd535c24c0bca42f46f3d75ba28132f10b934a4bd9948df1d721a71f613f738c0032b36179c85767643b7727eda3f31414d7aff0c50a34ae212a87549a5b85d9c1d47fcc2374c2403651230ebf3f6d51189c82e33b372818b3859a8194193ee2f581dc4d42f8f4b06e22a779be09d6fbbcbabd4be52eba0 +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = 65b4f0219ce98a017a5029716a580598e1bb7b2b97adc1563173c0a9dbfc036f1598f5246db48bc10552a7a6f6918c8c7f4fa6040d83825b270db5224173e234a74609014c92521b0a4bb212afaa0f514816f5511002998b4f0b1e9b4255db6097ea907f2c474a2f6a4a2b077b1fb685569848328b907018559bfc2a3d1c4e56c947ed10bad8784f548578d274c41ed7411d37c7a0ca4f40da7d98084550b73bf4255b4be3bb576a40d54b15b8ea59deb2c73ab179a5cbb77d40a7e929be4b346fbd8340ddbabe358ca731413ea1aa46dd79a5af051ce57a0e8953b4aa269b09b004cd81ca69a9 +ciphertext = 7fff312026417a838b7e1e6dad4d1e2c8a7f61b22df9576f1ab55b44ad09dbeba6c3d15db62f0c2672b26e2bc642816c0336a5ec17241b6b4a6f3fb673d953ca49538920a599300193d6a63577f663fa77be28b8cdd21419502841733c61409196272a64659269bb90df42b23d47c326ecc276eb134434bcd6134050238f629079f7b524936273f88941e39565cd98092c5dab03be58c3f24e3987c18c8583551d7c1096e91a7ce4e8f9d1f283c1b59fc746bd14de4217b3be7df0e7654410f5025bf98d21cd6d3df266f6f498d70f148212d69aa5f9c5e65eb26a832dac323382c0f1b60993822581583afeddadbbc67689f7bd5d00f1212a1f4bbfce5eacb5ac56f7f95f3aeedac0bcdcc85d3eec5245a48fa0f0a53bda4727611582a604b2bae7590c0625bf0a06f4699b047647664fb25bba2b9a4523d9e8564dd1a1904c87af8a0470db6fdc09642136a71bdc0058643660c06f02195f5d425e4bd0460ceaec9b7474f3bfcd2e991b2ff812ba41c427bec2abc052c3faf478b3545a551a12577348b1d98732ab5f43d8b931258b87f3d1995fd14c94801593d39e8c633adcaf5c8c366903e7e58225bec0e8af377e46453f598dcbffbb94a60407fd90a3839ec8a89e2aa82d0f6a42d43d60e9ca98a9c68515b2b198d7608e3c13b0343433bc5ba6b594fa19c516707f0c3e2618372eba8562cea74e90de4cf7c218daba5eea4421ec3d7e7dab23d1d5362b1a61437d38e5a0090988921c6c04a0329e4bce300c08a845dc09b34e9d59ebe13ae7fda164594935a25a16481f73503aba2e9154688748239904064430db3ff60d95326057dd262f04e039cfb0028766aac8584ffc7158cb98696f1b2cff8a3be79f8713ef174f30efcff20520aaab76564c43789f8b1c465cb5e404a2bc2b64ffd2615f931a598a4ac3340fda6b955484327a3801e810d4338653995c8ad439e52291307aa99f0e57932dab514d5ec1a66c30c2c0e62cfa4eaa4fa8a1c77d183f45e01572f33e207d4a9476d0105d6b09e68acad1c776c1f7e2fdae12093912db7c59af61405aaa992cba2400b0b23592d62edf61ec6a49b077e8c9cdc036dfe3366186e04f199b5950719fdd6c4fdd50fede2f657aa1ec95fe02fabb946276292c231551ebfcd505cd8b179a30c03af9f57a5a8816a743642eca5cd4df76efdf454634f4ebf7f8c86bcb86a87623e560c145535e94ef15b6ba747f1d076a5df0f391175cf1ff666c9a518d304b68a5b21dafa87cdfbc71fbde0728273aef0475f1cb193991c179668c795d3c67d11278ee56aeefb267b51f369e489da7dd0859b67dadade73d69582240e409e48d5dcaafe6d430c2561cd64893031e8acec993bfae4ee548ad62bc08c2ab822bdf461dc803b64d35ea7826f59f96769ca22d406ade33006eaf3e733ff8c2552065751d394a845b1039d05cd6a5595cfee9cbf1469464a84c642834d29d2135cd75106f861b3bb439d07479f354f115b7c33f00d8293eeb1ecb3ff8a6d6548854f5e6523a +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = 7852c0a87e5afa8ac5a7aa4d5c6a6ba3ae58b2999de89a3dd61fe9b97f3fbc334ea469f9338bcc1076dd00d06f7459d0b5a5a6b396f78413fd763a44b790eaf721ec306af83c13875a79cd5648fa303e3fb17899659e33d48f79d254e2a89a1ba59ad24c4ed829a2576774a42243435b4ce9b7a03d3cbb7b877bd0d0597d358e4b42a9b8a11ddc84b17ea57374bc54028019e9e487a3b94c6e4bb0f0f347f23ccf48d875a5c0177aec548f2a7b5298ce8b3185b608a47cc32000e83b20bc39981a8cc9d46685a0bac47bc56c91cd064a2aaea95814b43f641434cba0be83f00b1acc02d04640225213898a3e3fe224a18b8bcb9c05c6c49dbce12172192949306e2782ac4eca87c86c7953d2003ce767f5eaca70cc36e691037fb53f6a0798a99828c21b6fe5b076a892aeca718f326a4d5100519468716ba801d4c64ff13a8f77a6233dc7a31db83707a48435ec48599bc45ef90be3f482c9c09b50d3ba60ac4e46052149103ea888983bc35445d96e000336461284ea9b4119478a61220ca80c729c1126a4d64999368efb339d08d2381cf77aaca29d8234bf4c5169aa51767006aa82320ab45c6a99a959f80996d82214b1606713919566faa955644384a63e2274099778343f914af2fa97776657b786787c951cfe3482c9628dc048991428bf75a95874444c44219ed726212db4790c611c871b4959546925261e93b358a13aaed1a8b5fc34bfa2f59b9855c8967baccc7269359819a33560f0d6c032907168d47a599202bc9c50c08b1d13aaa959c40ba16a7a80361703ac2c5154a77cf869b2d6a9b946ccb31416ffab696077ac423b61ae198631d638eca4a43caa205dd6a624691f462bc7ce9ba80bda270e652716238285d12de2dc8a51d81e55e9253611859b3c0eb4a015d9884e4313cad7a50c7fca68a4d17fd0e864f24395d79543bba46ef4c6945fa466abb70cdd54c542a1a54dfbce31577e7ed20adf12c6a20b2e86a19e67b1053eb450b5c355740712e7c277429405b0788e3fd626a9cc4f34400b9ae8a8e54823e6d7aba72cc7f1c7abe0fc059f8403fc9a74fedc2662315f16c4b33a6157376721b1183ed1479f53e06fe48c4113ea11a083a575c021dbf506a2241b2a555971998787079b3dcb31e379652a172799662dc0a55fbbac3e149b3fd69383aed33ec6d6c7a1685252b23857f09004eb26939a4d436822bea07cbe6a07b9817e00566aa8e45197f1cccfdc1b1f036527f29c7e62cab6b9acd92647321b4e2e6aca778532798a1fff24cde9443c8fb2b828d098f557b0bf9bcaaf8a91778912bcc7bd4ed53bd3896f10fb5de09204c71bbfd425500a8158a2f20007c28afbf5a60e1c9d3ec815d31bc910d95fe5eabe6bd6a01df4cc357baab1da245f41ba187a8225c94706085fc92b493307569da317e88c5afa1b4c90e6a1d3e48d5c944d883c790ba0b670001eda258379eb2194e1b10c839ca97ac492139d78021da7e20c1348117cdc22c2f3796d40cf6d007ca81c76f659c58b973a1311699da4b257159ef2367578732838b221e5972073741f16877abf321a5e249a7015651fa72c08a0a138d19a3bb8730e84a2988510ecd36737b985055a316eb39f86a804bac7b02ce34ee8521b5a761fc0231580259b373299db2a568bc184a311550fdbca2828a4f3378cf69a23c652591a559f2972335ae4ba07549f6185509f03b0c77a92dbb5cc4e70b56c908b77a980b968823cbc77e5d124dae20a77633112542fd50930af23b1a53a679637c981c34667cb5c98c84f38b07e9937b10e55b115c376f897416da531e6163b5310670e8c553e515c07b099b960a5e0a70c95d56584bb9d21627972eab2ab050e6f329c15c76587909714a5cbccf2768dfa7fbe838132711abad63d538948dc738ae8173a04d3bccbf65d6c6791e789029fdc532e48c107d805814b0a770cbc96e6914e88af0eb0267a4c07b30a826612a23be74d714365ea07595ac72c18a65e257335b218623099bcf832813d908f4a80cde6d960731248a8d65925891347d174f5b48690045b0bc231ab02114afa50f0f74cd3e575167508324c24b05c +ciphertext = 594aad63010a90ccf8b896c4d69694c855fca489d510ebab935620366b5be7f00eec6f43091f9ed2cc06b208923f0c3c681c22c8a28d7b71c995281992937a7e9e15c3fd705e20457a33e8392eb76fcf4e78df2f1e5c11a07bd5fa86459fd9ed0c0b2560ae171faf3eafbfe35f30409e5c3c7a05615f1b530f37a79a0151798da7821f34dacbcd5238248df2b5abac8f34edaf739d15754e89eeb9f1e21b02a4f491c32fdb81dcca20156f0c758bfd3f8af48c59c4444b725451146e3a25db82662bcac6dc63550a5451356fc2a49b721882eabecc739427246a8001af640c39cc3725705656f85eb5cd2fd6ae1b56795bad29beda60a74b0804fbe244de7b2c653588364e6c02a817ae535d492b6ba59959fc6366e695e0937635148b837fcb84c4b506f4760f5cbaaedec167f56ff8a14b0316ab0798f8316c2fd4bebd31f290e7b48e4d46da6cba8e54735887dc869af8557a69f6e4699aa9aa6681b3cab1081e099be9fe3881673f2ba7d850e0dc5b07e5276aa49c73de697526c05204594f78baa8f42a4bb7e15053677bed8fede2964e14ae45a0846016f39a76205875e87511937b975bba9669c91e621db64700695f61bd141a68a3521b29d4629d38d4d8e5d1dd3cf5b9282d9d678c8634cb736aeb23a393a10e59d4675b8be9e861e9b8f46bbb93d484147c91fbd6119a36e29fb191e7d0957d59d8c58835a03f7fb2f7cea07d710c4fe11d86e3bc8ec3cf940afe43ed1f7b81f4c97770be404f50677c103dd4313f77115484f15e6bc76c7a5e16a67f5221f3162af37572cc11c2d0f040b43b433ceab117b833e4a96c476cb89b279708a2c59362c80166b7731bab8bc0b9bc03586c275397739622500dcc3365b2de315c5e5572603de6dd3f999abe6729e5e524788aa2ca65f5364ae247697538907760a05aa30f9515ee917af12d57df023e39a52abea1cb8fe688394c6c1ef94e0143b3e2fa264d109ce194fd07505aaabbc02b970cc5eb41d40dccb0e71a9f21a843b95bfb36e5b37e78d5b3dbfa1fc273c58060a9675aabd13d6be941f1b5995ed80675bdf99ed1241f9b3bc898598031e02ebbe88b403f771984901595b874efcd8ecd1909969297649cb6ea939cf563118631bdee6eff24589041ad3d16113d383c98282a97cbd15dd37690ab5d4158723785da11694a9aa65b0f0338e045e48a7acc1219156cb657e96b0373ec8406814d0d7e01f9e5c488133a0d4826b38193f3218c01cc060631333c36d9b448908f530f0115e2c3d15924711eae106a72c816654fbb505bd56a12ce1fd7022532932e6232d5281a44dbd2779ba27d903de5942f5c9ed46fc45ae50d18ea774281e15540f2c44287ad096048ab1561950ce3c3d5cd6f5e47399043259981abd67fe0b06b4678b2e18c1415c7273ac5a24189078c5d3b46464d1f700a264d44137e68b8500d420626f9404f5e31cb7960fceb61a6ee01281d48a58bbee436ca57a22c3a6d8169024a2f5686fc491f3d1a0f80b7aea57a06f161b18b +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = a884916f3192a7f4fc71ada327c6999bb5751f79eac7b5554a8b201a8de390a8590f244a1816ec403231b90f69ccea9caf62049582d4ba0158ba274259a14309ea6ba98fa6608e2b70bb4cc1ce680ecdf17151b8c198f2842cb75d3be7cd846c825fec2704c457475b4a29b6b1e683cb82cc6b94dc1b5a1525158ab69a8653e752c65b43a4e389414998c66bc10d4a3bc5b6a528451bb8540002e28197aff60b8c3509fd0275e5b9764020c5c7c538eba23e75f18fda6c81426856703b392dc27b72194feb8c9df0e7605b97b6cc820f9e29cfd8c41e8e6a6fcdb7a25cc124fd7b734b6546e7716aa0049acd23abda96c6d115061397b907433e91375a9a0b1859149633eb572ac02df21c3ea4d1a75d312560c9197c77bd5373426e5b458561b82376c828257dd8e80fd2e10da9d0662161292c92aa7d509fbf8b72a571c3501121c17952e7350d1559c3df4c2314e73ddcb22fa6b424ed38a76b6b4ece1a441e791e32449adf959d1bda9fda98a9f02b903d440e4675568e6a6def667854b2c3e00935d0a95d087573d58464685757ea87ced38ba53bb23121f4bf125393a832769976326ed593596b52baa2039c263f9ec75b7403379947a2139b883abbcd2994ccdf8b006ec34af8cc92f4b71eca166736a98e43431461052270c10853eb84b8acca315260f9b3a97721188bc28c74c453b0ea515adb772e06870f395ea45a2b25b2c77b29cdb8a74ec53255b2e0257ddb5cd45b9807a724cf7553f7c87a40d77b5a8697f1f750115255efc41d56a5ba16f71942f69fa36554fd9904fcf5489800b4546abe8170317ddbc5d80bd0b2ab622c389824e295704686f67bc9afab481d2b0057d147f2b87f9294b98fd119f1a032cb000e14f41b8d1685ee8564bf7027bcd06b1b3c908da70b96cb72397505aa564362861b47972496f9851d22841d942b4d7c5af7f616ace345ebdcc2d46c1e612a7d38439b8f374f07e476a2187b4f19be1c096c7766ad20c6441e313497610733856aa5c5007fc45298758e2f34ce85f86633537aad275704a4818bf24784674dea00001e788f6706bc4a9cc562919fecb82c6151795137089ad70452c79be1b13227875c712267ae9a96ce18669918586a0122ef379d9ed48c1e0153b1f2b571c5267cc53d2954ad9b0b3cf8aa489590697742b158047360e59177cb272839af3f3c248467358f31caf57039525b395dc909a19c1716fb96adfca0f3c11a41c089f008279a067fc3a92a710145ed25063b01435c29b0c6a8637e24cafc3cb15325b91a748451c9594c79bddf80836fcbabb8e40052591a4106ae594bced7b4646e176505a7106423528c04d0698584fea210da0b721868871f187bedeb1265ac4b9a3a62f6b5c8030868fb1b37857454d9731873db11f1ec510e261bbfd735810b3456342a1b80115a53b60ac9a5e6b777e05636016c0f0728a92086c6146710e9f172074cc66d647521a95b4804a3d2245c4035935456b76d90c3177485e60c530fe61e6bb0c88a01b8cf16984c654ab2b42d6a0468865b2eb115be76cc2327e82e98717c4791b9559575d8a8357d2b7f08ec3ecd33b7e24542c4ca1ae4c06fe86101bcc30d3d79cdeb83c54c8917e58254ea991e7f85c56bd87ed01460e8422183d17543577fddac69adba533d336693aac5bb9a2080d18235f24bfc7899279638e3d8595e9c3a8ce053fdfc2a49f05cb89244bf6555964305bb57958e647b5808b549eaa78ecc2172363903610b1f7b452649991ffaa2bc67144b46319e41b72e23c5e8260b26b364eb4b219cc9c79ff1940b5a1c89eaa5e3cc880e75ce6173c9e993149e538f972764640679fcc539403cb0ed08945fbaaf62510c34ac9ab789441e01b8e667ba6efb4fdd0b4f1a8b5691eb6fcf1054404c8bb487a2c7d975d936b76765cea7f467e096ae9938c565878e8f86b4bfcaaa3be30d5a25c31f62a1c11478fe122f3a542471476cbc9102f0165e504279e8f10a615c6e0378760a08711bc4c6c0aab607b49ed38c3b99a714a1830d9dda50ac1356eac497ee648e25256588146370f6473d5a10fddc83a903cc2b44b373743c534a928dc43e3e4050ef09b8394916c9b742af2c98625961b3457b2df15d4e8b5adf900a50666837e73c2fe64e7d5abcff919b139902f41c3ac3d71551184f8d235b030a2cd3a9bf0a50887d79019e6742f3f49971bb840f888cb5333ad7248b7efa0ee4311fa05254cd2887d7757810a7596ac488fb7a56264b1ad92944d4438e8299a1e86a272fc2a9020a61bfb1939ae089041ab8ded7454ef6c1667c5db8cb6a0a6037f6393480236eb4a50189688541b24c8060b6dbf90b74c421c66a26a59bb8436c586c2222aef6a73d967278d386de5a11fbd214c19326b0e3c84c062cd0848a770082bf427932024a7119cd1b7890a9c979e82b8913775cb69131a8f7a332467e5b960e7d24caf487c209b00cb698703153332df2030e6b8e8d90cb79a2bea6641fd73bb678fcb6207a031601bedc25a1a38570d3427e05740a0559252c57ce95bc9cb6dc06841986cd6c2b87dc2127f0c79c3c87dc42ca5955c1afeaa51e88b1eb3949 +ciphertext = 145a3f597cec2eb6a94bb08cebb4198672ebfff7333a46efeae68bed9c95f9c5e92438bff519f8edb309ba9232772b19fd23fb23bf7b28ee59554f734809c8a5564af5ba710a66bf49d83e1d1a22380a536dd5c00261c724cedb33f5533dad0896d50220ffe4c26c438e443d2953212aafa08d26f7bdc71cd1806601d8afe68082398949f0aece599f671703267b026d5834eec3bfc0996cc4f2a42e4732b4c0b72a95e6015466e40409f90ca0a700f31bba486a5aad6bbb6c56755a193899634a5ed84cb479885994fb91443cd71472bb84e2a3195391c357a646c5e1dcb6a10c57bb471fb193dda8bd54d250176d8bf060d747c1687e1030c99b898f0d14808dbd8e4ac5294a2883e261ba72deea8bd07e71a5c34204051898468ebc51026cdb2e1aaf33e4eafca3f9546b1ed4f1b8fccd82c85f1f670a66fe82423f8be804c2a24777a8f4c1f42593ef2724780cc26aa06f848fc1730a07ba82dd45af80b54a08b34e3c078d65de8adbefd3453fb900c5cbe4cfc7dd34b193faec99a38ce6708aae8a59b74b19b76f9644d6b5912db74dc4b65585839d9a1ba9ed1d3cec11819ca8a8ae0b78661dd24651801348a8ffd9b4bc575bdd0ef8d47faeae376c8cce96c2b1b6dbab80dfb9ab6998c4c7dcdf438fd3c4a41cd4ba00110237e76a0d7ec65672555dc850cae8bf8203c8ffc8b4397d01be433e9fe0d8e1bfeacc4dcd9c521853b1ed51c17d97da751959b76f5497d0a0176ea2e26a13ba4f307a4fa642aeb68a9d7f0145c1501e0f5c05808866d8341f1434f1c3336d5642217a8ea9ea68fb53f96d19e77ae662f8db2a6add57783a28d766ca605fe5443a5ad1b56cb4ca3fc8b11f6d21e5cd5d434d7149b50e6a3c7b436be3f716e3cc9072d21576021ae54aa5721bd85300f82bd63dd9b88cb654c116f42c63d54e6bbef1d42bdb734e57028ce7032e8512d14539188b5f73e6ddce614a759f4079a241ab254718d7395c5f49f58510f06f1c87bbe4bfd3b15e178f04dc5f8b9f362692c2f695d2d794487ec8f7b59771464b14172d9bfbc1397eb17c913c926a4a3eb465af3fc5fb88b52c79a864f62349bdfd307f21a0df0539fc25b66802b4e61c7d9991ebc5dd73b3800ee55ef363607ac0a39aeef50d5186bc57673fb67d5d791f30ee3f73e51da25842b7266bad00ee33463b376818ca0d02ec08fd80c090947529da6fb74d8bebe2ac8ff2425ee95f49c7db4223222f10b8881fac940f944d3a0e47de5c94d29a45e5f46fda57e340b0ecf5d2b06ac443bf7d4ffdcd07e0305b9ff5befd3e49a7b99d8ceda81079188cc2e5a36c27c68f88681bb3fa0653dd26798721c5b68fedad318e567fc8e54a71d7cf790916f43cddac06b02abd4875a55eefa8997eaed57ccb9a794ea1e21f63b25e7e2e34f33e44b577b372ec4a6a071f03914c004b344c0608a6d3e52b65fca9843bcab2bbaf6b1efdf3b7897fe202ea0b9bef184f25d4a642cc0025a5f3b083a3905bfa579170b512dc36f84beaaa3a4a55f6 +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = 09ac82d89314abfb6019ecbcb7d74fa2e3624ac16c19f3c713bab82d342b7670c589245d1515cbe0bbc7a9f13bf2276d3813ae503ab442186d5ce291d86581bf1bbe3821aab5fa8fa03a46593abc5f13c78669bad8787303179cf9ecabdf0648a809424012520f480d17da22c3984247651539 +ciphertext = 26c79949c58ca86bb58723456486121d6a485fab41a3c6c1d137d1f3e2b13adc03d8a1ca2d56332e47266bdd990bac11d2a2679185c0ff5ad0884c1a6f2f1ec31f949bc1df40d8da44b777d651c38be813543069c7bd40fc3044f2cb3d254e4d32108cc419545dd1d9a5bb51f1179bac5f1a9f9dae901a1853d877dcce8e7713a70441e8ad2a9a6a6cf3b4773ff96423b92093eae559d7e8440e6b545bd0508c010192c2425b581a8c4f9badf29269cf851b958689cd421bc65b8b3e3d33879a2e0c53383b479e4d12cb7516e194c809694a54d742fdcd0026573ab772853bab9fa8b19f411022394fefe84773c662e91f37d06b42640f39785205ba87d104c34179074a391e16330bf2eaa7507c4bc60fa1513428d762e776256362ce208329cf2e68a18fa772eea125e83b89aacf5be3faf02a7b55d855ac20e6d811b1b8ebda8537dd542436dee4acddfea06bfa7265f20e13a9c88c158252d5d9bf0651a62435d543c5b5aa45f32d84a55bfaffd2b9fb4029ebd3d9e79e69be774afdbb9371ac3bfdb50b13e7032878173a46900a9280e252003067c0820980ab99c445eb804756b5e48ee9ef2627efbbf2f09d02bd27d971c193612da50dc5ef0c45d7d2e00c28364c7200ac598ed8721f0d0af1bab3392f5004bcd815c8c94f66cf514fd18fbf3849e2f85e90adc547c913b734bb39b653f9c349737047ac3bc41d6fe1704caf9776c172e3c60c740546ca09a28fdce99efadbcda12116c263588346602dcacea32928aca1362de134de5293b804a4e8659339c73a06d1734517d835a3ddbee540b5dbd09b7948e585d016be68dea55c880a45624c3e9f1a0ea8d414b4a90f5684d39aa98b498e4c70235801cf382b6e3d681608f4c94c51d3dd6781ea3ee1ea1f9ec88ddfe82ea3e8671316a8dcb6e5176d4d83cbae94cebc9b038d8169de232424a07b10785d5c27d512f9d804f2801049f9a9a2995fa07f446e0d6a10a7d8c54800dfa996925f5f1963aef87a8c21519641f93303ef6abb66fd5a022fb706156b13f854f4095a6fce495597abc3c9b63affafa38603873ded0e4c673324d11e17e9da1698295f19bf3e614c11a3fe6f5de63561967d21589be16d4582668cc30235912e3fc8c467f6d12642691d6ffec9984a3b508fcf3afbbc7c5de8179aa4ffda5e1080ee4a7e5f7fc127b975e9c05a82d229b21efaefaada519e82fd0084be118c73a32f40624aee7558a89ac7aa6938b8af8946133e884c38f6bfe17922032fec3f2d9b4804fedcbe786b82ecc1b9f18bf8496f860f64052344b80f3f7f7dafc568a9f386268ad9810c93fa5041aa2630b1ad4f3084fda4195ac170ac17b7e66f004083a5e141bf7c547e2a924fc64360b31d604570ec652dcf8e3b9081f09ab70191c40e516f520b262a6cb7d6cbd8f1f7e0d26d7d723a7ad88551dc541834efc19ef493cde07d690060054223f5455b479f2008d4db007dd7f033e38a6d45bc91a12abb1a07412f5c085ce714d0420f377777c7b432252e46 +expected_result = fail +expected_shared_secret = + +comment = Private key too short +private_key = a8952b960a3c65e912b5b7480a243c62a6ab236b6bcd159c1b1b23cba6674f1ae621d818a22bac78f6b04dcec1a13c7ac4ff521c43c9a59ccb2d30573a77c80d9f244955d88414b479053c1f3fa69f74f221af0ab35b8978ba966502714ae94b2cab0867e25c2743b8757127884755b6e255939f113e0f89c2cbc56b1c021bc90c46579158c9ac8347069af5e81e1828961f99424c6934fd0ccd69ac892cc76799407010ab4f7fb64874778940683b53a9ca97b69a9e1a7b5908ab5d273a1a673859423ca951042c3bb2b0a1cd216aa7927c125d276a772959274aaed9684e2a0202cf503d1536ab21e730743ac658e7518f74b3b2aa3f1f629010875b4cd0182c6276b3803ad6300d48f9535961648b9c8aaa4a31d31906d3830078a58ae0175d062203e2711bd36b9234e8aee6c932769b2a7216059e59b8a8c37783b0b7bfd02959723bd8769d32224c4bca3f7ed68e47b234d22705c1f72bae2b2d57c904ebe4c0d1d3c4ff753424f95541fa8f0f588c3844618f4c9e8171235496230110ccef30870bb23b3c01820f9c9f915a8dc32acc812a6ea9811d3e9997863794f8f3851baa0e53e66121ab36c1840671699744b24a64788b17059bced231f04491b217749236367b86b34811113bd77ad6b3337478abe15acd5b74963c51ac09f27974a416e9c18ea112b463c391a23965e7549af0627043e006f160cbbcecad0b364c273c24a08c635d1b67abc48c2bf2777789cab798729e0a0d00cc76e9772bb76b53784038b9da3dfef331afc39b99880d378413f3d362f62486fe65a12b75923345c3b631afd9d01f805311ef69551367917a945df1d10c1d8c8a823c9ca5f036b6932814154f6f379e790250ffac4cf6a5c3bfd910e01637366cbccac57d67877a84819d5aab3c9b169ce7701e0bc48dfadabcfc657a1bb32f37fb233ca717e1174e5878b3f83902c9d8af2be9b3e8cbc5fae5a255e0caef4892385baf5688c33237681efcc92577931493c92bf6bd150005040452be47aaa90981273a01a640015c922102c51a61e42d679c4db77a04b998bbfe998b4bd9224ca805aa4a48f7226a91dc68da121fb3926d510604e87a2cc339a9d8accc40e79fdea64f7d82405b49a378c4746db4a7a777824d48ae69a8978202759a3610558598e083568d4b12c9b118b0f781f5c9b334795105d000aed31ee4d379430a8206b2356ce91404a5c370e679819007ca69942a55084ce837c6534b266562576486c25289b7f4690b295e03218a5ac38d5ab789b55a0222c015d700ce2726af3ad10a +ciphertext = c0266d91ebcadbc8aa09478711eb234aed58eb979047530e6e56b8e0fda779ae52cd9f1607810c90022fca9da350e86e0d52412e289ccf0e57a5a4567587256b39be77d243dba78d340ac504d7efaac5a263de4d264fb7d4627ebdcabaeb9f72fe4bb73ae7557a0d0ac1b0d3fe9a3623fd7a95e0bfd095835b5296080a5bf47b8eb5c08918f5a706fdd28cacf031f97e22d7fbbe375d3298f3c418b07bc24ad1d822822498e3a7de297b325456081eb505343151fe139ece0987a2c03197f21572ab9cb6cf331bcccd0b43b0c2f96c0319f79960a7475be47e81148fe33c252405596bc14e585a319ce6b78fb67d0caa0e6f6ba32f80d6e453b5f85cb770ada3b4848c159b0e6b733675ef6a2a53db85f2cf6f1645ee2feb4479b6592bed8222e6f10b12568fd44ba2b4cad3bdc1b8feaac7e54aedab7ed422ce9a61b7f411b287f09984e0e800c9b459bc40950f26707a79ae21b4237be2bed08d7ea8f4b51c6a87aabb16ae9fb3231baff800d2e95a8290c1ce4a66a2c435304dc155f961e14083247381c20e168d18912162ff7616cab1576f57a0ee89ce9107d9468cc18af75b5051bff84d554ffdfdf153278b52870d8df14c90069cf30ed00f5ee4ef6bc3dc8874ea5f8dc92a2a115055911cd7d805a5ddf938c940d773094925e23393c272dacdbcb25f2c4ab6473075bba4576f7503e435f5a0ac592c28fd8b96b93c006dbf654e7e1ffe5e9a81a95b2637c98b02a1bba845dc18c72b5fbe21b2d5d194632ed3723f5bef2ceb38d70bc2d78fdefc20950e456217f5cf9fe5a06b308b4a3b68ff26ef904b127be2cf0b5ebf7c10cc799d5821789924fc9b4f2eb1beb1406293a06bd25a4504fee8bf1f4725aa0e06b9614529389e8e9a9530a2eab640eda16c63493a977c356794695247cd3bab61e2e66eb0adcfae47f2b5279e7bcb0b1928ed9376452459dba1cb9fa275136ac0318bad75f3a0768f8db51ab5f59f7875fdc4fdffec198065f11d6662239b9f64aa604c56081cc874eaeb3ebda8e97b24ba5612750afff5219ecd924efd50a658c0e65839e9880c43f651c7a000d30d72586ff3e8fd623279f6bd62b54b111f90a9372aed19df9a5d0b1e79f0176e2b3b187c1769c44839c6c920019b816b01fb2e04f5a24ac3e9d76b144df778c2415dc34f8b9e8de9ca4cdffac8089818c1b44cf1ea741f1515a53e965d542362ec82e08addba4b635a53d26b273df246a915993d3b74b2854774ece40fe454ecbc67b179eaa08bd12ba1af4b43c1d29f0c920e9e04371d56846fb536a06cf5bbd0b21b107211b37c4650fb2f0e7b9307c704f18b139bd4ff94bee3e4cd08455d92bc220d765d217e45709f9ffdd0b6239147df1279b04c561332cf689b2c59d557f6663b7b74f95a0ec601a75bd7f5a0a7edd626c22869a0248a49a3b3338aac2698c48522828a1f94089b9e1b4b72ab62861fe19e3015de7ea59c5e72e9e42920d604c4b80f3fb95cf52c33b73bc5066126261ddc9257ca9803ef82e25cc4df +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = ebb2722d9399e9e3556d2ca77e773c2beb7beab8371a50c312da3f71e59205f46d09f4513ecab7454876752b5d7e9918a487305ea52718288170926d1026b03f604a645180721c35ade44ef0882aba250b3af274608b96f77a78c8c84ad0c61cdff09ec8756e06bc237a06945c931c8fd3b6e625159161115bbab663cbb072f117250995df412f0387c59be26548cbce54d7cf3b7a1917d0679a1818e49324d73c4b09e521794ace3962176ad5c4b47896c389cdb39b3b34c8ca788bb6b712baa5f4b9c5923b4f10abcd6670dca40ebf90a1a9ca6963f8bd04c872cf14228ba188e81979961a1442484801382e22f2b656946d72d0b7cea86d0d22b5d946639c2c053e2b23f99b501a6aa31b84a0d3080eba32bbc4178ce52b1e905767ff21a971eb69a04a78a636308b91ac001c5bfb6a784a5c7d82a3be9f960ee56bafc592c285f2b03a037ce886479f236e00b522755308a449ac19c78235eb7fc5c8b05aa87c5c52ad0dfa257b62aea7b7a1f1959d6f488620cb0189c50526a4be12c6833a4672c158cd08e8584503ccd0e92dce081ffafa8986787ec513a3cbb0493329473d05240d3768fea867e8d17f7f756007c16b77f26eca15199ad70b21a2cffeb3728f057e4cc35cb9f6c653c1c534ab5838882eaee80def0b3235a41cf103bd44cc90e6639e5d34bf3e479b44e4942b95c8c692b4aa985e996cae00d55825b00658abb407d13413237385402f15c057f471c56a35b399c870fa60c2dc276095113a12d6144a938b5c26a08ad001c8ea14b6994f58f42eeaf959734a6ca91b2b4af25ada8721bdb905b9ba652d844e8fb5c44b1a627b35204ab4b642f744300221668106af831edea552d948aba19448988bbb12e1b5a3f8a58f115735764eca0c3ecb1c5b37527e80fc1f481475b4176376f300b626968b9689822c131983a727a3cdd2493f245c0edac9965806604c3aa0cc2940f11152b46052aa15c3913c5f06cb9544accb235878dd0217602b652f7ac2e5aa43029acc7a6c1903d19a18982b06021c3367294f693936746294223a6ef54f3a19055675014d512cb9e6530c654a2bb8388b007063ba97817ca5cf56270e430a6a12c322b1b623f3aea320c4bc827840717da75c4b0f2ca860a53ad46cbde1e788554649bed41230ca3a1fa440e0fb7e356a95c5500fdf3510331c49b17b5943fa6c8ca223d4dc77d30895a7e96b7120a2e8723106aa29348c86f3994eebbbbe80f2bfb0406f8fd18ccbd045523659d218324edb5475139b06434e9c61a65b358febe8cc681c5bc069626c432224cc546f50769bb78c905059b064b636669cf491ac7e39c480c18d73b0270724bb6cca7175551eeda85166317b393081368b73678858bfd5a276d124561518e8b17017d072d94a1660176d9e8221fee774075c0a86c03aba902836f306f756857bc991854a2aeb1963a9f5a4b5e2b3c3aba0f28a4b997a66e5dc71b0566382799007084b311b4e55991c22e25ef6a39e3099bb89001ae7e29cbdc6b46e08106f694b189306a5b83cb6b11c7f47694e583b81d854f6a468c61cb69ca390b491a22f392439148a55b78f925a5e67214408d5b3f4751dbe6bbdbf62b3b3d794d3e6b0d444136176a539ac8cc848c272fc21c72c2785807c2c4a5392979287635a9822c760a9ba41a8034c344e35720a88aa104ab43614d47aae21b3644a519724a2c4192a4a73cb7cdb948b1c01b99c2c1ae093b45c79a6e29a3f0bc539c54b77420616e28d1ffb5f5e5768b6dbc9e112507280c306bc4892e61669017fcd640e68351b74299cc5143071e171ac7a933e3c13dafaba3c8c7cb7305c6a1aa846107be82093cecb66835a4c137c868e2b6f866796be2495cd20a772149b7720b6aeb9bd281c26bf4310f40ba9d9fcb6451396f291034af57d09b535cc712a4656087e120d6f08125fa80b74289955ca086792a6fd1040e8bb04633ccc109151c8b120c9825d02891b9330cb8019618f30ce29c5a7425390271551a8726c0a2872c179436c5c98de40ae37a15d734bc03295601da2cc153c57bc149f45e2138cb164136baf3e09bf64ec7c0ad9ac546c7f7cf2845b2c4c855ba3770ab35837143ca1b7f0c949e2085fda12c71992bec53626865637b359c576a08d39a6341dd864cc870f5282ac191a84f01a8a2ac92bc1fb8906547a28c7ce20643d8e328cbb403bb232567b724a13975e29337317780a60041d916b3165b0901af12a453582e84002bfa40b127100cb49063684adf77960d621803b58baeeb113cd175962513d8843a33d53c779f66f697c6d764a31c4b1230cf29554d6b0ec89bd7dc9a20ef6b8bf98b98fc71aac5559230b707bb352c5f38d3e7044e732b9c6e73cc1bb55b2f6294f1579b2272b31db59c4582194d67b2bf7b6486c94a0ecb8adba65e1498c87204c92b852e8027f0d8a2d1c6cc5a089bb611866bb284016f1773f2267bada4cfd26765a96a61ce398009c7ad5144ba0390a349440dafa11b2caa5ad025dbf28c3278133241602679a854ce13f904b618a7537223b6a57bc9b02b50376f2779f348ca61750645979aa9531ddcc99d1c0a34bf2b19ca53f73776c1edcb1bbf07d88e58bf1c50987c368edaa1450e0b3bff1c5cc5a6f0a814e47f21ff2a3658454c71dab744f7c8c028a4b1f423a9e428a9aa47dcc723f5bc62aa6136f877286cd76250d3a15f81a0d49bb9d617975bd3824e86601b6d883beb4038810a495533a8250267a619b3aab4dbdac0cbc6b3e0edbab4006a30121202a5cc4664a4822e93e0e45745ac4ce154cb2191815e709bf7db274b9f95785cc29ce34a9940670983045a434c83654231787447c05bd7b1029f3462365463915e1cb35183800a69b56e1ce9e8b561abc35c7d921eb9274d56b2f7464306ae86243339c8cf2b1c8762f5be66247d350a9212e7e31a07661c80de16a10f80ced926ccc17503c630fc84211a5380aedc88fdb3591019791653ccc41c38e7f50cae0f5b4b6f8cff7d470e1412663fb21c3e2a59b5545e042a6d4f8a71a7961d010339910ab93b783369a59779c824f6026c38932721a5cc88638f7e75b24c266e7fa6e844397edba755f1ac1d7a07825745a04db7f012717bfc547dcf858a7f912c51b9746469a9d830b81ba93507069244528e18305772745ab042d9ba206c3fc58ddf824b7f3a7e4d7b4028c3bf1985fca76369a3a675911ccf1163bb8f2a642554f367382cccc12e5bcdfcc17a9c0bcf576c1347851a8908034c7826003244c80befbd19559e01c59e9928c65172d48d9c47ed71c9005b9f8b24708129737459b6a21409e4b20a80ee946e8d9f731facde93115d1e27e2319004a45802c2bf328744eced7dc1493 +ciphertext = 0c4b16b07ef600f626a7fcde367516d5ddef3d0df463b18b8b8476d39ba07b476e20322d0526bb32be11efcac4190444dc0938b5aa77536c85a2e188d83cda7c188a86fee6318a33c209a3a8fa7b0df9d3959d5e7406616b37d15ab7124c9b9333add7e62a697c48144a181b105df046667c1c43d2d771c1aba0e536b959904cf878d4f50dcc1efa6b60eda0fe8f6dee31ea44d455a7b33004e602b45299f37502fba7dd4a23cb036051086e1ce67643066e0b306d26cf1c7bed88f7e911dc94b8f3c6192545b64a9a0f1726a70b963191b9b8e1cc71896a59d001b40c18c9b91ebda5adebd9a304c41c8d92 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = 46c38949d6113f9094bc222806e2580fc3c938046971c7087462b48a11a358fa0ae1060905cb77b0815269fb631a6a012d2ac281d892c88aa7aaf96000c674ab182ed8a9a1961c073fcc830dc1067a83c37230674fb84c03588a3a980fd5dc61f802c0a728a03754b044e82221921c8c75b94ac0807188599190a0cf567eac0c5cb352b662e0518e98b6b5225f2bc4836560beaaf5218ed33df12b739b21ac4f1abba420bc7ae2aab82acc0df76f6d45a871a84a1a55054359825781bb57bb3c8d44ba50d66f42a221f4515235458b2612b91f0833b510242aab27e7e39e137a86ca8769abd62effbaaca6d6626c8b98610b2980875603f955bf7c5739f00ed07a9ae72938e65469d65b5df09964c72a93fd849b51a2c5f2a91eccbc298dac495da7cf12d0b5826c8419360588145a66aa9237385b30ccb276d07ba68706bc9aa6e6b2a87166045b142be457ab87b653eeea9163f0cee81c12006479d3c00e0f5878077527490109d7393935a361c8714dd508d0e3987addfc5528e06507833db9f086a5329c62f4512e6b0c60919f356538ce175473b1ba59136bbdccc7ced85a45101e5ee897b34b84260c21fc656d7d935c1983a2bbf4945a615c25587d9d1504311041bf350cfb263df1d2c65dcb95053255e64310f9344a2e81c4ace5904d2a58187a4af61336139b1353b77582a99c1e7957f08a635ea83855d148fe5a43dd6368787c6b8460340ec9676163135c09043041c9d06b440e2b962b731cb42ac93b148cb0910f74e48097f149914581f6079014070b63f8bde91a524982bacef6a86c530d2277beb0f03ea39577c8523ae9211d28e62283e22a66b7029ff2721fab83ffbc32d4aa2ef49237c143a4e5b621b9c24bd8e46412dc54fad077bb67cdab7c1d3c775b4cfc25c7553de68693932c84876caa7a16aac3454a3e7c5b27ac4b2ef6acd79c7c601888f84b1558fb17573b23fcb21765f8c919294c3ac7984f5b6270589dfb011bd3259e62d85b042208d9c24a8d045cc12a50f20b4d6e4b9f3d32a0527482b12c3ba5e94ca1873d223a38111839a1632d4d703594b6baea31796a478b50220154a8aabe91cbd8ecbef9abcd750ac3cd2365a8c6b22614b4b30ab25048780b567f542a332286a6bb36307e294207858f6d8c6c4296c53ad2713ec9500dea71b2890fd1b067750649a623bb6246a292829d97467a915c59d4a61200b5b261a1a1c9745f20955b058394fb858401633c69a18770a545599b9b05388480651cba8c8a79661de5179e1b31332f5cca5e8c083b019577819510e90e0c9aa2b21b1cd5f81394580009a03c1eac6e797083cc660408e7ab8635494d4ca1e7c94846714a33414f63b22992f49f3d2c3fc13b20761370c7131133301ac3457c5d560d5c14b47771232b954083201a2db052140aca5149a4eeea2bd1377826fa2b9bb339d337755a1caeadbb40a4d87b65d54e2c731858a470d5d53e17354d7a2106c1725928c53d7078ce9ba37bb2d13290ca850d475cd3d556ddd1be8ed08373f24a7bb37c9bd6a0b3d0ccc0e34efe28862beb71403c005fd67a3ef02aeb6440181332d0045810c33bd246136e9abd439b461b8794ea629a7d94131df909a8186bad61279f7c9870286f8430656f93cdf768a92bccc7a5c2c625eb5fce09198f48c4826866bab769022c66372402de89471e5340e8c36f929cbf3151b5f385316cc932676140b22aa69648b9f57054517cc4d8d7b012fcb6bac1105e356ef168294ce605f0626585b19d35814d14a70e9c911c17b33a1b5991a4c49f1939a0eb59951bc12f0631cfc35053df6a7f2ce2a0ad709c70f85c6b067122255882a0c8c849a9e5b3a4fe558a301890dea6529343992d01a86e744853f2adefea08a5f9354be119dec79ae1942ea9eba8f1401c9a67cc9c9b121b229d07904a860b8354f452ccf27250027004939d1a870142545c943019bc4402cf457f377495f2b4913bc8b1dbe448992229c3152449c16067402e3879813ed04124ec5ca42091e9b9a719c43a8db0076f3817d88aaab6075b0d658ed8250cbadbc4cc4b11d0d27e3901ad3ef295f5dc963865906742440d315e27a6b426fa8744a53f67ec4f45b05d6c69bf44ab21d8437f838011aaf920684a318988b1e23491a4f993b5192799e50dcfe6636112bcf7e6b09b9c33bf1222ef90b479187547f175ea7b1c82a28277025fb5e9156fe0618de6aeaf6196ad7204c381491ff99ab2aacd56e2cf6a1a00d3d6476c851274220328719988b235003575a939c4fa5a0385c68841f2cd0bb75823683c9b89350e061cb647819df2b8ae561f4e3678800b9ed9d846fe0c9aa14564301295c8ab6a89d917eb9ca1af72a64354b367cabb14e709f670be0bf8860ef421f563cf594936faca8ca17a2d2bfc956e7a2d6587ab1ca58a1f4a2ab410268e08b28b090da9e9251d1542625157102316ffb8c3847597fa6c885379c5cb2076d4003bd2c79f71238fb2f74382e976c49a127932aeb90497ca492ca0205fccf54c32278d274b80ff3a00dac59750d8347d45c6ae8356db8980d70883e3a6c9e03acdd9f662d4d18cf1051303b0116e5b3a57b57df2911a43aa901f534e3362769b66b7819917d51900d5974f28ca22eca471ddb538579bb53c20060a079bc29c9b7e696d654c4c5e31c221bb947872c9176064a0cc92620c7f607796ac0945a6591b836a22aa44b30f1a9bb16c98dfe123c3f2b7f3392c0d9468f0569eac27b29da4383cd879e25b590a86711e432f0f62816e647091238ddff90d0410cb920b9f2c628cae270a37712cb6872c37753a79517b3dfa87a655c40cf408700b781fe9693eb6bcd84a8efb103807a95c313a3d937b35148b06521271b672bbe8cc00779b76ea296cad716828936f4453898d884d2c71393af7069b18a62d7661d2458e8b767775783aaf374efe3c6952074f771065243c8c571a8d56eac30ab40ce8c11894257cd938259b5b6430370d2e2021c8716096905ff5c01aeac08f6779351ad18beb915bdec72b0dc6418dfa58dd37ca78b58bb00813aaeb1771ea2e13d98dc137908866990a8104caf70cfa7094fbf4812c8b408542461862acd2641c00bb695f61399f8a55454443cc328fed1bcac7ba8c8f822b2b0320bc72b3aaf96c331051728c78ef86039ab04b93340054439635c3331698782a16cd4f0a2cb958ae4063b6dd79297ca85b55fa2fb85c8b87f011649c632d44962eb1dedc2a727e6fa5abb5e6c7c334e858e94f2e501bcc495ed60c2ffad86a5ea0f0dd637b59a272b0b7f435628f1c9f0347fe9d831eae00bd96b4605da145b058842d32c0c463d56bf65dfe67e63a8e4983b33f880379ae53764dc1cfe0de4c +ciphertext = 0bbe90db +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = 29d39ab1a8a69c9893a743374c1310d5721c1e80b33264c46f9995b0370fb4814114db6034092cb6107b1b0a13323ac6c3cb2d194c22b9ba5518f243052a56ea16758cd0bfbba991cc687abf35b5b659ca602a972d6654e8e46211b40e04f77aa68bc6c431c04d6a6cc1fb1c3be51d49366cbd250412108ce375050b75055ce32681127a1a70a33adba318e46211e71088ab9a16cb9497848ffd3bcf76b45d5223b65331038f14233b81a11d2c982aa16d73869c6e37c2a5d86dac515f83d023d72b21fae8a6b045bbb73b5695ca32ae6c4eeb38b0d7cb9c05c31d0e763857a18c94bcc2f4eb37ed14889f12cfb77b2f7724aa0f871ec9986604365147d120ada3cf2447352e3980a1e27401e6b85cf16ade72b78aa16ec1b5c8ee3b82c0c416018b344094594f936be0b504b9b11ef1e64b3cfcc686293f60f7016289a827200e319184eb8ab3187566c0d91eb75694f6f1ab21027c8e757d16203fd34aa25bfa1bd8ac0c32d63e52c82403e14e58507ef9b09f61070e21c19b325aa821f0965620cec7c32e17888bbf197855925d322890987bb49d5968a6683b1a1484c660214b254c27452415b78820a758d6cb805bc4770b9a6000f61d3a8b845aec01dcc4845ab82f6a880e75634b96789a53d0371e562736e36e83e820b0136d6977a296f5b8f40c0aaa91bf16084ce8e4092f0298378c1509a690aed64be11c3ef3909850f65a8a45258091346e67cca7e09d14613b84f42483252e026781803c39b47b2b2a6b7a5f80806a56294946a1f2d0c0db7c08e56a4e2229b81935ad5b31a396d59a4bf91f0cb6c3efa6b2a762a12335021f78579444367dd0457ae53e5215519f8454a9491adb07a97016b0d87cc7e167a35ba0181cbb298859c11d4a8b43bcbc793695f2030873251e72c75c435c1bb207c0c1fbb9b4aa0507221c7acbcac25cc4c71735da4781a72277ca416fe2b7c86f992104c825b37245067b8f9f095c1fa87b54e45456ea97da79b39a38262db81219ebab4b229b57cabf78769e0842017df68bd7fa3b88a1c54d9174f3ac5565872ea0e753d2a87265b60a3cb05b5bc4bb5308766974591f0692a58359006559555b929fe2ae3ca43dd6562ae71c3fa8355e1d69cce1fb420428c49981023409236615291ee27891755b7eeaa2d48710a9b86d02e2042cd20f284a5325e95c13c28f0bc8c2ea78c535f60df9761aa5e6a452c96e3f150f730a9333676e7f66363be3bd9756cb6f0c75cd509419dc0e095205b08ab356a43d936ca8daeab26bc32f67321abb551007a27ac5b63cb7f1b4c4608c7d87455ec020ad8425160c5ac2dac19157728762686ad08b4aa5544018c6296b845adcb39c7b1db32c3f633c55fc2981e1e9687f1433ad55b6ecb53bd45a8f6a262d0b8c6e0c0c10f821275d0b330fea22fd6400813658176259c8a93d0ee72bddd48f35b1a8cd7a221c995c43b5353996990da2c515a005247a7e7f670c027c73ba820108365651a9afa5f7a6af8c6b757055bd704126fa8d4571b041b39e642c95b6897e6f611db75168b077a5e532a299117342e7bd58458097d09f1a3a465af9c8e5a8c64ab0cf6c976b6a03c5f20743b2d0679d3ac559d6bd21582cd2ca9ee3709ec577415301af41a993cccb8a738c149ed5674ba60270948ac8360156b3abc633050369b2d568c0d218ad9c56a80da1ad485b8580409b17d4a0be13264c96aefaa9a2d3dc74a0336f956182ce72cf2e70bdc320b906632d85b45698e346ea436270722666d0ab2492978b389d19f11eb470c66a160c64187a23c8bd80c6ba96f8bc705c6f6628537c6676f1954b36092ae794311341455d401fde2a1153a64d26a65ce4394c90b5631aa37a90a2386f632fa91773fa3240f9e51ef83885c4c221472954b7772a2cbb14004107ba82533a888c306631990a9973366c4495a708b047a3e6572dfc3a44fc0bfd2535b0a08555710ead6a6b5567506d2a0a0c867452271d50ac1cbe61114564c5432a6683350b40aaa9afdb2100bd5641db6c24f474f63966fb97bd7f9c96eec52d5894792ff85f8eb98849387624493d3855b9ecf00a28b759da9a6ba69b0b825882fb275423a178b7972ef46a0f7c370608f6722bf87c5a051ce9d06b550ab0de0a79bc3a94d6c423f88c34820c64eea26b000208efbc467bf0084c107ed4149242a890362199e67327311253a0f1b1019a0eb81504bcc056570a9fb640191fc250729309ec51616c6015e3b10ca84ba18a2087c8468a0cb47bce9a0406a9778e776ab1206a174357897814a8c7b4289a71c2155041a95754c283b04b0d98d607547809f1068e2a2280c3a68a9840167ed74a93e85cd5c03911a374b1c826932696bbb27e95b9be7246660d649e1335a6f86cb8d0050ce2aba27d0a6e609177a431c9b773b9dbdcbc7c10c06d5c2f25149b4fc92d7e168b468a9c01d3b3f92344daa155c95c6d8d6837518736d027ce5dfb833bb8ce3ab991fe644575859e54980f9749412bf5ac5afc909017c9ff58970329a9374091d77a3f38d37c528210e3d7709821cf9925135bbc1184038b9e4bba36e73018e05880ccb2ba8b225a5211bc874af1975c4a92c17b420e8b6b06abb97f364a96aa0332870c097bd927e38c5d13c3bcc170528b892938510334596389cb90f7fba9ca09746aabbd24ec6fde933a11b706c61bc83d2a37d38811c3e4237dd4ce5c27593b256b745892859302b8803a3a6a0b2c24ced5f256cdfb01747816b3891301e07c73b3b845693b51015e48448966f58483a375bc3a402fbc0fc670af97dbc351124f933878310890ea81c24b541c05f041f9aa423c363a61d4abf7313ec09367a0e6c968706ecf3a7f49f46e151729afbb3c904a6d463478bd54cda44b633fbc2baec272fb463f9fb706d3d56d48789c8bf09d7fdc24e8b0a7cd4a0a549b7a9ee1353c1c62f8ac5df15cc2ad026203809f18e62c7d2129af991d01918b6ee76290c2200a37b400ac23efb7864eb3798434b4d4659ab914a601d2ad1f6371dd2ba75ea79bfcd9043ba5b2b3255bf87015fbea464251ccaffc61c3c19b69f5ac59d89e9aa97881cb19c4a65be4028ab6c2a2e8f339978265a12a3568e14e1fc26186314fa9928fea9a12aa825f22060bf3dc3ca16644e7755be0842a4d8464e1017d29a461498939eaa4b62bac0f61024c06f3a78ad81d07b5cd6c100c1ed63c4936c840d92d7c8b43c8a126e20b73b7e0b8dd0100cc6c3fd19e68e4bd15cc3e49a945a6fa25e859f131186a218081d3c32cd7367b64b156542a318df76069930fc9b98b00075502ee5308c2ff56fab8631b3fba8965ec0422b6a8bfc77cff0f4dade8d6881ae14b752dff539a255438a15f078df6 +ciphertext = ca830982817a5205f52345de9cf999a3f25ed3c9ee0615e85c5aedb235bf3364d529142dfd5278d9d93c6bfed13cc936c1a1257a3877c0ac20d01b865ca402bffc9cd91ac09972a59c47e1e1cbc3f5aeb0d3f1f7b81ace0e95d95af1b94bdaddc53f754d96075e8f40d2fc33876719a8a54da9482a36fe4ab5eb4f43a77db5a3e1b70f0f4c916def94a3eafb294ad3dc1aa4cc813efd9d902819235717025d22a4e8555329c3c29f870e510152ffa55d2c270053cef0ffe1a6a61921247c0c42b35068a270d7eed767e764504a9a5a76af986001ae11953369ca6ff5fcf89ead899daee3f3e3aed338c0af4dc452039ea1e547ab4835d54bdd13425d7cb858e9edb742cff399a71a24ad68adb39629bea78707ec7cd49968085253e5c18f4172398be96b2ef73524390e135a +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = c38a68b7c471e0bcba04068c9932b582cb13f19aa3c0132e608a7ef4a049bb33a4463ca5eac07906e64d503a13106b8d14d03500059f9db10554f26c1e63aaa5d011b9dc6d783c2a46a3aa146a08b0d40e477a1978da24dd331c8b4840921c8668b4b051d2a3d2525a67999c0270a4c2f6c6505c5c520499ef0a46b66b7fc3f585b1768d1a5238e00b96ae3466c511013caba627b099739c2f151c811c2a71af698141e709c5774c797a68a146180192a5f0a4c2a5033f9412c8dfb5789cfab9e6f916824696c130b18233ad8f4812a9daaed4fa53fe90463104af1ad7a6305300d4e91492f840afd8b7c2d93a1947ccfb2bba9c66c533d538343261cf7721abf803811c7d99e548e871a3a4f6b12dec0af25787f64585fc59acb465832d58b0c1027c5ad0ad34165e9698312862b5860042bed6955b8b025efb731455a87bc96af6db8a963a6da14b5fc456102ee1128ab2829da2aae361962f123af0f63ee5848e1024bbfe575d62980881b77fed127ec977023f4a08fb1042e832739f1cb28a9b161507368e595904b03d5ec904a9f39c55a91441169023011dc4755dc576c9aa73a751653161956ef2a368c6db5854594edfcb0abb726a4cd26440198e93566dfe6315448caddaac75e5fa9c4f29296b58b0cc0bbe66310589e9687a383434ab046612afbf4cb797db7aeb4a1ea7237e1c71a97941be6e9a34fa8a5f614034c41b7bfce6733d373744ec7e1bd0956c5bbe3fa28db16b5fa612992a27058f0a6af8283add9a46e6e52955cb6e150c89e471cfaef2ca9bf3aa2c77b8e43ab610b79b8362a1868539027b6d5bc9c34606a69c5a281d32506724cd9ea24141530d400a6f66193f35108784f0090ebb36cb24671f411f8f0068519761054ca8a0068686f497ccdbbd4096c087d6b436b79b2199a5bca3c36bb1ab9406bc945bb7f60411d1835a582c05c153409b899f99d4b10979711aa9b24f21b32c1082e8378c132b8511d373c6ebcc09056643dca47ca33d607575e5588a5c21a0267655e5764c7a6c92d911562c57018c774719a09f348ba8d8663474586e26b6a3c7a187ed342151c32053340ac6cb6166c28549624ac0e995a27b8a2779163fd213a02825d3d68e996b8a2dfc1db0e56d15c5bab426b5071a14ed5423013c9be8a2a8460a934afb8a5cf31f240758a808b2bec54b9aaa0518e24b61f35dac14c6a1623213593a65506fc7c3572800888cba27d7412b9b6715f4b0821fa3bf995a95f8e57938b9c78ec71fbef112c0ca5cd355107830722227b65eeb82d52a088c360102161e459a63515344eb0975c0854fbb282e7cd77cbc54b90fcc7c270769ead6380aa49021a25e53c54917326a80400d356494335b3c1d94af9ed3730b3973027b9e573b29dba18000dd8b03ec34e8f092026b5564d45d59a793709c48b988c9163c81e49707536497e473b0e35429b0e7239cd6793c26ac090c91cfe25961b43dd12923c5245f1532731a0bbc10fccd65d4368ee2a81ed50350a06de92a880933bc2ce74fe3520e0e864cc9fc54a40318c21774d75674bc98249b7b7d968ca85869adb2a2ccbbd1714c25870cdb05acc95048a6abda43a30eb003fba1c1f49788028cbb5854058eb335f6b08e3cd358600a846baa010d685e01fb3ba8939dc74753658953bfdc40c333b45beb8a2d65cef9ea4e47d0b75cac7fe0924a9fd4086e06b20da75d62174cce098699dc796bdb5621fc7e2b6751c07bc4ba2b3912ec902146a0f1f392cb470ea68ca2b391602e34c1d0c157d926b7af580ee207986a96661b296f15813016ab47e3435b1b11cabff5212c97214051b399f3384deb3c76125d5fd4a807229d57bca317cc2678042f7bc99d3fb107c8a81f9d076b35fb0e521249ee422c5a281d13e5856e582df24a6dd246b4ec26633d0a222b5051bf76bed0d09cdfeb8598e24f450c264ce67d50480aa9fb5ae771bf73974d17592153d5bff8523d2f98154a1b4d515c193e312ba9575c606c5b65260d22199601d03577d91400c70686961192357129db8ee4f015ec3446053a2d3d1acf1279784867308a43a0700c9017d60d9663ae3c5c9820e19a7bdb58f397121246162a9638a213600cc7a1817c42ae930220cbc160b3b2a504221629498a082090f778bd55c84e49142f8215f592254ad3762ebabbbd90313d43298f99b6f1ab7ed98a0eb4ac30ab9792a911049f9bb9f205776d879906782307c9ca594bc5490552847ba15ab1340d67b35ff94a7b61399fd7165651cb6c460fda0250c14ac79cc3c3e9484482c43a2d3083bde65e835909ceb47d587552ba481b1a03bcaabb46b3b652fe294bd6950c430a885ee495d02a6173664f2569be4b7c26ce4b815686af09fc2478c06e9c220828c78fa4337096055337e144335b3e92876c71965ceedcb31f2c0f72a2423475351bb15a3ff4a7bc54a670da3135816aa42b4c293a2a3290b49e16c6cca40d5b71c3128c3f4563b47940cde1c5501573329cda2d0d95c572004db0816408c04f12143ad806cb89370214eab8da9884d679a3332a2684f451a405176aa580e2f6336f8c45a25061383c323e2136baab2bf17a8bce002b639180bdb5522db7a36bb33d09c38e58345073f2a6640045b2f3133203a0dda48f625200710350c79132544c2670e9a095209ca309a799bc274b371eff582415f6c6201236fd7b0147b52ea0c11d68d77120b7af50b14b28c5788fd5a30d31c128038bd8607e7d427870c126bd816a4f53026f4274a077c10c6c3b9ab066738ac254143fba8712a2fab21cd62435ba4e70b8507560b75886cc35959bf1bbbe23ba03c2788c9f5284ce2449d5901ad9d125ffab841ce0437a41206927109d2c22e964a300e14e76500614e9bc8fccab46547bcfa855f18567a18a6027b5740346b0f96bbc0bb97432950f12903379eb8a51a2a9acf6afca00ccd5bc6fe218410772a19142599b7b4f74b36eae8a648b2812fa0ca9f4b57e4de16d4d07b0dac3b2c96844331044c876b61c4b95a3bb45fc08b6ebe17b63456046e79bf4871238b1124da74a73e30a53eb91e417176224c08218b0a86103dd811c9dd152fc90671a1c43294163b237b48517042da50c32fc703cc067f3e0bdd4ccb558f7667fc6baeec73e9b423c54cc70ff6319b1e6ce7f8b6dc347345b9abc3b3c948efa6e02e60c459851dccb5bf7d20d7ff3787ae55fe3455cf0172ce4685936cb0e50b64305794d7b454b3fb1a476666fc368613e5a01119188c18cf6a4065f7c62c5ccff60a432203a00ca4b5b44149266a373894346e963ada1ee0537ba2e499ff422d22a656c1abaf85b0a6b2672d3944f48d7ba79bdfe223a0df0303581c94dde083450c85ecf4d50 +ciphertext = 2d8ee9c8c9183e29ed6a7f09bcaba8d6229e31f667953f +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = 00898870d270ff2a15992c7a9dc06110073492cc8be92b678032a790d2571aaa47f562cef776619dd0ba14105028c99824839505b81c72979948cb66a7218efaab7ddcb0102cd6848131b8ab589624ea2f6f5655dbfc0b9db5ccd49c081cd294f467055b770f2d1c41a1918d094a5c2020831dc48290b4a38af050392b441a58b5c4877a3fe847d9a521f4605b38a4471168afa8b544971361a990931fe1a7b066596a290362299cb12a9a7111195250287795274fb55166840a29a30199b06082767eda376c7db9b6ee868f9e7a7f87dca231f160b1f64a3a573fd1e70acb04438f22561de341f9a31408706b6c723dbaa9a2a0ec8e6aaba2f95036b6843f9a9b0256091ee1e43631396b2c3891f424631b93cd47c7533ae3a317fc2e71310cba26322db21dcb2788709bb58a1bbecd703d5f55ca80ea3565c925817551e2433bb174a2873015b2e62b51c0bded35b2678574f4d0719a571bfd8a1738429152d19f2bb3354083ae503344d5257f7b7276f6b33bafd918efd12c51e6aff19cba860cbc87d1857062c925fb8d7fb30ca6c718386c2b747b6e58062f641c8d2870193dd1c7b0236e6a291c5afb485970c8237368bc7ccc834675f1c051ecd6617cd24b5d405607cb38e94132c6087e87d85194760b259711eca333b3f094f0857fb97bbea6c3c29b10caff2439e2b0cd54675569744bc8c90a957275d6e664e83727be50afa2f69a42722e3f25bb3e6ca0cdf88668795071b6ad69d46339623b85b3468976794fdc33aaaa238c9700c9eb1f533a243c472cbc3c0b1591782a382d0925852e63289137b316378dd8620803f2bb21a88fbfe1bc2b85392be885a1a0b7dd1a42bcfb93a0c75be7499c64a08f6d0c9d72f350df424309697aeb76777eb33cf1e81b8dab5662308ec5412a465b5393d49777b688827c7c86018c37f0c617da35aa973864d02074b914d45262f7d7c51e286ee122360b430cc079c8a141bc24d13ffdd34797b3b175c6407307464ff388540078fcd5692f8a5a207929c47baa40207183da214eb16e7b245bc265148ce71f9f87c56fc8096966c6d4f4af51423ac95ca14d4426070ab38f6c10d8d5cf64e611ea67006249a4bc918e008a55c9e70ecb478e515a33f385099e07a89eab000635b1f6e93f905338cf048fcfe00a940395d4924c95e3a1ec214d26db2c363036b7033c0bf5a505c3c9a6c3836540a39369ba942473e3e32567484ac561b37904ce8f3929f1e468a830070545a817941254b94e28cc8d47143bada20889a562f8c355de718aab0061b4e8b1e616a595e990d8dca12e823bd7794516d0ce94733c71974ab98b1831b581ead05694806ce447931bfa2c1769b15a6a00c9fa0bf6144715a22135c403126b2b8566b6a9378ae605c378d72ee7c97eeb268173261ba0c50f5d565051597ec89646fd979f79211f465b3087b5834bc83b7ecb9d38c399f0fc3aadaab5e1140af1501844e55b9d14bb6f61630a0673a70b4408e051231a73417753b998222e284539f452724010407233e45bac21148989e78fbefbb2258a5926e23f3d2a439bb55c13c9a87cd93e3850b43f58c41de101d5d83c6ab7b765f22ed78775421a3df9f4a8bd35af693b5814e54a52b305794c8e64507742f9823926889881514ae9b6d2986a167326cce5ae6a3736b203a472b8bcee509d3a76c30a8518a2a4240c2981b597584469a5cbd7b5e3f81ef2233056971ba53c941f94a7717a7f3f57a0d4a8b500135595843612fa479a799e62a51379eacfe193b59f5a9f7b754a7c279f77156f7ed7ad122b0ed1a277601b4f1bf9a015c83a5c089a42c75de57ac0d7a5648f0657968220ac569d24799c33c297f4e8cec5019c71c75b79313d87b43d20b9a2898a36217c2fde3956357736321013fa375d6a985aa110c47d69850fa362a1f02f82a5cbf0b3c7ba16ac5b53a0fe2761db31c063e32f476676ecc02b05f38bce8c1552b29f8bbc3b73b54c6d0ca4327c383f4b3012c3a59e8b4c26b58622c749a55c2ff84022e101b4d6d5b3c4d475cfa863e3979a326c4116813dbef80f15e40c70833ccae6bc6e059343e9cbf721b641f73715d50f284a427b16bf84481b2b32c790910f40e54ad23115346671311aa9aa399282e6243325070fd43a985c77abf52121858e739577dbbc58ad93151f736aee9507f05a426c22b474b1aa55036da93007d275168d0c2e66aabe37b52ce778146134bfdb249d289b41eb6047a0aa852d231aaf233ea7a6ac020684e37a42dbb00ae965ae398c58238ba41cf59215e15e9cc0ad1a7b3713d03217d2bfdc8607c7e94dc52a9515f2253679c5a14119857451c5342c6743a2a7ac9e1c534c42b56085702b5fc57592d425ebc3215786ccf357077a7ab7e95237ceb5930924acb67645f7398282440781684ab400a8435bbb7da50ab0495637a96a55320e99515601da00c353260c9c11f623602f8a132fc9c83a1659887a474bf98f26628e0221b6e636966749a51da5b983bb6109d99bb28c9df5e916c41762eff7a3101c7e0bb22eba1b80606cc5029a4cb720b19495b94688742a6879cc85b676316f5f88609557c868bc50eb26c1b76b3fc0e491127a9989739ac281ba26ac3a09d4ab115744151307d17c281ffa02a67b17c329a8444cac9ac8b1b1505c80ebcae04239b3526cb00246a4827c31e150b96658b81b8ea8c27db041664b0481be775fa678a08eeb93be0291f9e776951479a48ba2210623f0fa12ad456f0713346bd12177053c33d471986425c9027ebd6a392296a1e66503b1f841f8c568d9655f3c4980cae92cf38a9412359b12f773af16c1ee97ce83557f7178478029bc3956c0d78728d4818a622574f4e1201040791a415d70d4b960a74793b77fc6094328b6319f461a0979a925c64d237126bee5502bc21359069e9fc22ee4d73ea9ec26a1b65f5ec18f52279b2f06555634b7f905c37e499003ea9124f8ba892c65bfea9905379076b84eeeb68ee9837c92a600e94a2f9c999bf4c38e4f04cfbfe17a4b5c75a4690b85733e37ab25a3796e82d6bbc810b59d34595a0c54912716b3e28ffe62483f3c05aff35fb67249e0c1a433b285f04294e3b7ad1497114bf8a949f0b62f17659655490ed9bc5b434df9214bdeb6b2a87211785c0fc3b93ae0b1967b6a9ed4cb6ed7412c01f6ae41c47427f4033ac98c9558514c76bc56815741d2cc808ac652ea1db769680fc0309c145f60160773d9e295c66afad698ae4bf31c4501c132413be24e021c8ac037df668838c20caec776de8e1b086bfd881713432939d9b3e11ca24d9b41e489334966878af72f822efb5625bef5639463dceb90e569861dd289eb7497e22f561e93502ad61e0d +ciphertext = 7740ebe479fb814c785d4af508ce60b038d92185cc0a31147a1bde6a145c4ac5958f33857e14c34c3aca6b891067b8bacddc7513a9261d1ed31b9414ce41d19329a7f6a470294603788c3824ce2bdb3d7630fbb0cac6cf691b8613f715976a698b828878aa916f32963362d819a1d11a37fa9955026b3f96dac7ee293a6809b381a4d68004548da64c59119317b3cd07fec52e1fec724161796f603a29481eb0177769a499162685e37c28fedf250b6c33d590fb84ee75d1cfb18b21f747330d1b60fa36df5510a2a7535050c2ff533fa9400c0604e0b4a39800677375c53840b864c5df4a87fc945da7aedac43124c1e4c096a561f6bf3ef2c42db57a3700b7 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = 3c5c0d53c500edcb0d9619849dfc8a93e32bd13365387353eb3b423ad58200dc61d0d3783758cb289336275687d71687b4e451fcb88494f9bc61316d73718192bc95e2578b1118c58ce14fc14195721042fef22fe41862484b47a35c724be764bee25f884540b12854227b9c0c5ca5375c0c3a84244f09ca639cbe15e59ed3d69d35856d4e2b01ed82cea25979f7848570aa594912457cc8a594742bbf5a0ea0013ca3d589f26637031881108181b71645a2f7726226967ff395c877a706a55dfa5ccbb84519ffd618ebd8484112bd8f3366bd84accf4c734aa8325e135faa562e1e7a9ceab673f4c77232c481a98a3751e93b361c01cc0656a32a960aa5699a94c374b71417f28cb8b9b04ac343d5b444defc91f129b3ad55744624bd3349a21d63524d59c4fe8cafd8b9511961771aa4648139a68d1910a01b56ecf7c71f973d29bb0a3901974c112a5f766f3aeccf5cfcb228c6927093872fb027514baf6ee47428822155cccee6b0aa758b8b5eba3a192806a8bb55a4c603399c13e9f100c59bb75a3001e1443062f8c630c7a8524037352c72fbc86d8ab0b0d3b670f68770106a8c6b2a70c1bc31bc1254487421b637bdaee605a065bcbbe44cde262dfc3643bb124535f7bdd7c41745d7728142c889718c72c07beb85a1c73c0546411dfebc9d49b899ef35bd69d5bf98284e74817ab347376f6972ea5440745386179b4de60bb40f2ac320647c473255eaac7dab60a8a7ea3f9c1523ccd519209892301b9e88803804da05e7aababcf576425a72936579df36bcb9c83fac2c95e9a990bd171a2a0cae3cb86fdee357a24408a5099cf3d723b55c5faa1b1337d26d6029bf0c021517e54bed6bcab9db3c23e7b657216000e2775a2455fb1089597437388b86a89863ada2598d1597ee830271f57dee1253afaab16e50c54a88b1576ca12b83321894515f0bcb7ce5ba2648ace1b44ec0d80df29c1d0949727fd447e8601b7a064e7e5cab55ac7900e18b1b1787ba6b00681968e3f15d1112451fb34112e09bfdd7124d88ac181a545752a0f94b5f98971e47492f9a5914f1052867c4763ab90183652900d53f4e278624ac1e625a421f8c399ecb8a1a26011de3a7a47aac319a86cffa8646053c3382afb7a7ae0a7692f92b045adb6e82e769e6053a3d03928c58c0c92c63a1a802b7d89c1a2530b2d118722b698bf2b63fa9026a95a998c6c8b549c4c17437b0e9c4e1ac65e1f443eb77c3cc646d251c538502b98d3c36808bbad2008f5e4016f4abb4817c9a523b9e6cd7167c3cb9e16a7bbe3b75522b4bd89272e9f33fa1462015215f3b592e2468176da0345b5a00bdb5bd93c50a6eba4e9de37d1637bad53b9600b54ac4dc2c08902c59a8a640a2c47233bedb307ce6f386d0c81fd6b7141e9b1b81db41e318c7f819a35d89445d532baf2c97ccc5690febb62fd77bb4fa55b6a4cfaf0a577873c4a655980a39bbbbe57e8ed480c1702854d8bbe97b15abe3948746ba74b62af9671553cb4a3dc9408c52cf7d960698fc9540831deb67a8429cc6300bc51ef7b8357ca7d80a03729a49b41c465612935c739f57e577a90115ee83719d902036d5b48c4b824d3939c1ca90b0f699b1471faf802870ec3ea53523bff916cb86c506460fcb0ab29d7738ef7a04dba0b51ec5c0a53bb5b08572fdc91e5aa336e9a54303286496b90877f6c30591840cd8780d216a8a27c4aaa04064d7551f2c2b00572a10d5c40e8b145b06213411cdce7c137c812c7e092dec3890b4ec288e07807a632158c7acee2c05d349a4ab4229d3bc4d9f3715074532eec4c8150866f6c9277c021431f0aaa42b338a48c269a47943e2afcf349f220093fcc2147ee02cdee62531523759c86aa6c12ace0bb58228a90aac7b3c356b9e841d3e5a86110062e5204f05d5a4f37a918874aa42166258a8ad7770577052b0db5143637c81e702a0b80b627071cbfc2c6e76560def065fb9222e0f225bf82787b84727ebab58850c3576201af8e56716572beb3601d5f3933dc66179675b396b6e62386c76a67753c891d6d54eb97c780d74633de87b51c3975dc0064d7081e08647afb78c882619b74017cf5958be5a579fea4919f18e4afbbbd9c9cb89862505b7b15693896be8067f99275212b149c343f448c3ab04adff7a7d23f039e773007a4b875252557d1a558ab46c81792fe8e9738750c4743a5b98a45f813759d283491a276c31ac24fdcc469c1a9d97a4bf0cc6360bfa7cb99020ce2954a21408d1231c3032100e782c9da54cc48a21015490b5ca7dbf36acea0581a466ce833080465638e067b1d7b004f0108634f04ec70a4c8d068d08314c74cb26e4a35910ac8739c2a6348b7d53e581f0c99f74d4cd2391237b6a9a35097d18260b9ad6a0e8f431d8f67a04435b11386feb9472159cbca5b30c3e3708bf6541c6a881c46046249b2d97040ca9faabc31544ccb0137b08a7b34888aed9ac7a046c4ca4acc7eb349d6b0fd3f41e8bf9a1c2d0cb7f5064edebbc478ca6fc334a11f35fc6e83b5da631f9fa6ab55abee5cc876e2cc1988c264f2a95241c6ab12a672ca8b32b1139fa883c54c60a85c8963d5615f081b5b93a0be6f1928087178d3497d8709d10d9081016bd3e31492347585d8973308873f72c624e55358a6a59855070bb2bb388c39174ca3316d55a422869dc02633efc6be851005e3a8c3951a6c19a5e9bbb6e6c0c5e47786de86976fd261757c8a38d5a27a80518eb990df8b2600d1966469281c3e941c5e32b2e8923726498513b0f29b7a796660d47f20653b9a7b775c46d8428bba6277995cfeda931e2bc25b062aa6e579069388053e607ed49a7a547219f324cdc0c743bca0a68cc388580afb97444a6b802bb7abdb29433896b63ccb92445c4489afc2b5cd7b2b6c34e2b2539500598db359f1aa9b0e025abae722a9908a039663646f077bc55cdb49a25aa2a4a02b77affa7196e5c036d2473a0113744f0a5fdda0419f17303c7b3684239d5744e36c6a2e9697583e723644a3cc0f8cf324487cc3c4cfb6c545dd7bb267087200b76a0704c28a2496ba22f9a02684f226d0d2a7c1caa75c6468c8358333b71300a810b26aa4da633974281aa5c97925eb19b844974f6c68bf31a5100863d45e50131d801667a0911671bb9220c138b0223b84181aa6e892a1954f5261ceca06604123b5a960e123468ac6c8fc55c6e813e88e64d4df269e176011bca3ea336099620969280dc13ef94e3997898ad7c1104d5263fc40bb74f033d76ef2f00d27b8a8a955b3d3b69b0f9eb43907ff1b3d28967eb20fc7887eed16ed0f3bb57249121453422a0309cd19aebd84e1ff4989a0392b5052fc6490b251f2c5987fb4023b33e98 +ciphertext = 5fa025b1aaf7491df0f54fc7ebc30b4aa0ad58d447ad03a6b8cdc8d2367606516f72ff74f97f9a59a092dfecdf78c5dcc49a386a0a727e88023c1dfbe2e3e6f98339abf22cb8ffe1fc47de7ad9faec111eea17cef0817b7fbdfbf15aaa56eb97180cdab46452af9c45af +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = 6b652faddc68f13cc7efa2c6b3e640aea46088801f2c95177a1b6cd5199b23c337422b113607cd0a57c479e58bbf241b200a9cba92c35e753eb6773b55300397718249e25eb817c8b12b5fd252b143dbbc4167bfd83a998f9244c48a7b436c5ed0c5b59d2789b07c6873c23682497f4ec8004b792c46f619fbb0a783fa14c477a6cc32916ada5192021141fa36e4c5439ba9389a3543c12c3a9d679c1d6c14887754256147ccfc9d198cc3283b3112d8af12e81e1521987de534d1d95fab18aaeb30036c08a0d2808acaf1672ce1131a94474143b6a64c8a28850cf866a3c5dc9634929052e96e1745b04145881d253548ac1e1df0292cea326769bb5e990ef1c5419e4845f793435a6c450362c5c5e1754310a386446442d4148ea7530ec52153c4c38874a913892903dc0289b3b559ca092f8908abe556bf96ca5d058776ccbae45bab7820b820d6a9f346622e13820918af3422c3e273002e27810fab162a481c5cb241e225a7d84cc788256a602b935cc7bc18da63a9189a43d03d192748e3a69d9efa2c03c628b758c25dc19c94411dd883728979c9c26c880aeba9c1a2b7ac068bf7561c8052b58c2477b0b5348806566392c28322cf38460e29e31ea65791d9a0cc7f9759f3112682e19fee942fe7688e5937cf75513ad05a1ba0468ee8c17e7f3a9ec0531a3643c97d337e2952b6ebbc0134e2c280ab2c8f21b4269b5019a466ba1434ca855624527161f903ca71527ba4cf83e73702833d59642bc0d7962e0a0ad348883baccbd6642346f91b7966ba9db25760d72bcf890dd6735dfe4a85a3571dce891034cccbd9427e9c7226a1b211b12536b92b30d19cce9c521273fa30412903f2aa62bae39a795743d5852436f843082791e2e86f096a15f9d542adc7258baa5054264d417b28d67423ba5816052219107a1b44f361bdbc8121774a520ca57d54bd9116a56f28a5076c78cca66eb2f00090fc17857b60bf6379157227e28ab4de40670089429d8177ba263ce963ae68ac595a986b48c6787800b78c06c1c2021c79c693d57009986923a26c17f77bab3b6260351634b4fc5e6859475b931ab4048e9d83301f3cb1671080ac84aa4318bfbf9174dde2b7fc80928748007b647c95637f2e1ca998b8b31f720dbdd8821f07736a087a80a3ce8ba8cb28da901e200939b095177c09016b8f06463a57b06aaa6959530144d770b5bedb09b9516c4653b35f546dec9ab68bb74449ba3e76356ecf48c0a9734ffc09791019637c97491a2b7fdf7aa00d465a2c94cdddd8450b6b139fb2671d3c2abf16c16a9c4455826c5998806d19983e7b13acb328d751240235520bbabb4fd78d2de29044999bbed17fa816575834b1928a20872014ab9b9b44477da7058fe700430481726ba354fef1471a86122ed46cc7365df0e7b61614c833962b16b84480d06221d6a131b59ee689117f05b6f0da57fe1c024c32b18a67060b459d685210033a5e0f5b8db752661099621733caca4c0fd6015287174c51d9c79ba3790282c99361beef8a28b6b84c4bda5c7254c81b98af0a53a27ae40bfd94010b81651b991894533877ea78b9e4a8c61a69a8c14eb3a8763f1207c6e6293bd69c1f70385c67844d5450baa975f5e376255b4bf38426a1390be6d047696a357089c0c2c3c3a968ae279689cc58cfe6e0bad474206a1889d125a695787720fba7debab84afba6e7b45ddf8405df9c8c88cc87db2247e3c16342ac53939c6983590de0aba7acfba21063a642fa7b40dc090f9a718800829d369372c4462c32ad9266c314c3a9d3ba8820363d19a0b21130103f44496ee5ab359b91c2eab4200481990698a39bc2dae05ab0e169a9065378cb952d845534c73220524699cc94b701c862e2cbf9b6ceac6b4e3c003da37a963137655bd99fa55a88fc5140c29465788532ca92a314d55a4a7b84f9f7729296a984700b50d45a5c051ca4f3ac37f85795a74319520acddac8f4cb22ac3149cbd67f00e6a90dd01e9013c1ff8b654cf38b17253a0b165af5b31048fb0aa5b18645d47441a84ff33121985456aa66363aa61053b11354f2b426aa285077086f099ddab0898e052762ca4dbe1ca341f95ef89b53cbb74de9e5573c8c2e49dcc8e1dc0b0ae15a66b7a8578242cddb4d2419b743c1bd889a1c8df61ca196b6c1cc63c8e5a36a513feb4672f18c358192013e946aa79023fe65a62cc3acfeea6cff90384c31b909347fbdd87ee0e98984e4a4eb56be1b13b008d9b9ce30a6e2e34771db4eda636cf285c0e1397d57608fbd28b09881b54ea153f8c67335515d803a33a64526c86c02e3ac2f6e236fdf9105beea7ae046ada825340a0a50c35a3f1e2a5548746e24419793fa4695a75429534c5aca1676e4b1545747c1513f50f2a1c25c0bbcc1c25a3566a8f6431a2668fdb0aa66f2a021a582f5aa099651b4e1028381ab75fbd7745342164ee6a772806828198315fb0f78ca4cf9e43fa9e8c37018672c5808037375f3d295141b4ecaa088ba05af1298b14b135869f12258b61349e7c55d65585c00ae95570e67ca332fd984cdbcae02781868230531f04654f445d5135cc29359bd905b33f418e20b4410acc856f641a825b44d6a74c18416f55a4b270690f44b9f96d332fc220629739a3be83afe669d2aca1e64e738e0253c5323609a513dcf169cfdca145e3801d8671398d66aa66b76201c26ab542a6ee52d9ac86c72bc6d48a6528dc2136e6169d2e145aea9ca77e4c66968444ea28444927c0c7547fa68052ce435f377ac9b421c04c4a0b679964913773f91af21c8a3ef589ad03382ef20c80fca33334106f8031f043c6e28c3783387c14365c1d4e724fdc2579ba350232a4654122421588bc70628a7d74196cb228cac2ba563646fe28a5c664f6bbc519acb0277134364e9af4917cf6d044fcae443fe7995c3d6c75be1be68f9535f742ae0631da926c1125a217d085499983344a56eeee814167c6bbf206e3e1b50ebe056cc68ba5f555d4b1512ed6226ede5503fa192a913a15c6616d7967091419a9f174752797bb50ccf063116edb389b30cab1bf423abcca4843b8cbf37ad4893b6c0003b2e81757d283d59d75f92f8960585b16e06b6009688c6462511994b626377dc5742261b24f069944036b33b5231fd0133bbaa97d4588cc481a96ed47de5664d9abb708c613795e056e095b4bc39a693c120dea4489d8c5eaf10a686b82ab1e5cf348507a6579f8cfaa193f16609f692e32dbb7a1a3c7b7fb6ebad772a8f9a8ed39e13e5dfbe99266a5ac4c24930b6a5e666c42a90b159a95bd257b37b9d5059b9a6c9fce2c1ff8d283fbb1448f52782f1038cd22aca84778ebb5d9c3b10b1b597d3ea3bee7c36e51b67 +ciphertext = 842007561121c3499621d5848c5947b32dc90aedf6e48207d5843e60140c82f8a1c74d5ad2c5326473167976f8b57e0da871901a00f166d0d089098d534ce887238c2aa1db86c45c3eaf035d5c47cece1140988ac508917bfaaf81e0f4a0004d30d720e8ca70b9a87d0446df45dd3973e2f30eb62089f9ce30eb10b7b2c2829ddbc9ecc06e378f421c380508e96bb684161c49610695d2fa5a3c7a1e34aa80a73d283881df82ba2749cdbb85b39c252aa60e517866958c9e7a507f19fb409e19d16a08d0fe5fc23eec20bfb73624494c1ec8258eb180daf9552547ae2fccf5c0a0c3ac1d96a51208f842b5c67c3b3a8952ad1d722815b8f4eb5d97c735231bdaaf62a9bb3e21913bab5cb6787cf4b7fcfa436fa08ef7314dff2c96df80b27bdad2db2d5ae244cbf7633f389ad2eb5011b5755c1f48b246e1ccad02750b1470191ba9d19dd900932a13e62342bf7a22db107679ac5c0f8a1d60614eb64a6a4b7eeddac2be87cbddf44a226c160d +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = 008890c48166e3930f3e91186e065655f19f713c1993eb7bf14919792ac68e37b3af6334dc4862b5a96243841650e9b9711684ada66cb423986f79818e522b2ec17236934ce99070f9f48ce70681153572d5f01f7f9a824523bbcb9766db6b792a711b14d69c441132c94aa96a368c63a65109c89b53742ca34177d4564c28352ea60a6cd69905a5c7375cdc227cd434db2652aaea96c143afbcb075f88086ccb8c318f165b236aebda0c9a1d415b20c3f833b754ca863e9b018d8e2cd584366d33698fc76013d8c265bf3cb3382225dc1b92af39c91f21731cc3801fa89cceac0e5a319a8042b902bae4b774f53987a39116a72b99387a3520e563411a0185f36b663a3bcda336fb5b30e9f5480f57572febcaeca6c172c49c9b7e1ab0b32935089cf870061daf11367e19aad67986a258e56812fd48a7ffbb409d2817ee275926825c272e9b2fb9ac342fb67137772f199440dca7be46774dd9cbd2a3804dce2ba1d364c00b59740f95aaa0003fbd5b1d3791f0d4c1e9119ca1037b611538416513f12b671d57b9e7372a98ddc71eb103399d38f1ce5329f91381cf9c02d965080b639173a079b751f45ec8b326a2cea676ad3594eb93492d292a48ab486fe3361c1891f15f618f591ad251c7a086c1876f7601a10b04952c4adf440abe6077f49903964088a000003eb6a84b254bdd3315bca1cfb454eadc4a375582f670cc9e63b77dd505a02f7577c6003e80aa4a3f81358970f94c0a5b4fca74e811d58a3955d18be95922f53ac9e6a506a3358ae110a89352c9b08826e5bf462585b103efb943ac1372e305253ab3672e92ad793456c53cfeed643545455d5f907f5407c91b811f6cb4ff2296b3ada7d43023272675d1ff20e5db71ec8307bf82973ad6c15c67b8268f9aee7564f7c84633df3a9414a47fa4611f8458047785226e0191784703d020f47b9898480b985e77e01c59eb59a601aa182e5cc1d71e88a0a298fcaa495fb739a35322b5e3908d03c0f3a701479c50cc60b62e59390445c5d9d4b902a385a25a11a80a343ea7996ff258362292d71991a90990d3b860fb6f5ba930ab09f13af95e507bf278a480956caf183e1ccc1be4628665c036acc3b56e742a21c5e1f394190290249d5363359b88cf8468f90ad47aaca89a561fc9313260aa75c5802cb3ca89ef98913729ec52708ab837a1b97c5f2e3a26e290439cc7977173080aac81d58517b952068d39176c96d6e174e869546a504748a24c6acba501cc21e0266893c1223e09a87d94bc707e041c96cc5ecd0b8e6d22e79951c7be25511a91be3c460643c113cf4b0bf989c93570cb8040c8e7384cca5785317666f1b5def71300f5994ded95b72b6bb9d2767d5a30804a30dd555c2a284bef3e8b872a709951c1cccc99aa15887494013b26c2290c93e451697ecb300117b54dce213d5cb3f3a0a61fc0bc9cd9891a348c086718a8b1ca3f1ab8fb28a75e3b3909303c6cd4a7413cc13b3c503258cc1deb667af92c6a4507217568dc1c9abb1572e703320b0278f4df046554cac0295b7fc78863c67b886f00c23468ad08266c4d07615cc69742775e31a392a8473b34368d422a9932c1dfe23887e2a712df4a28510c17086cc5f89cacf65a3f9a310529bca97d93a70117e10e438f63b3fc653aa9c42b9080bc71e456fc9c5405a949d3eb20bbab8528ebca3eb6ac25a4b13f15934ca9b42f7c24ff8d3cf7d4bb4e2f2afca7558df338ca8267235a21141870465671e1daa1175cbc590838abe6a83b9e62b99a852b936b45d0561d00a160a3b416fd9105354529a8384a682a5dda35b7a99029932056324b07dda26b2a57f1acc4c5691c93ff8918db92012277d9b1636f2f4ccec8c6e6358a88062468efb5e997265cb12863d01735e367a51d49e0f0ab59836909de619d144cfc83a2c367319d3d389fe8c1aa50a4451713fa969301e01059357b4595baccd84137d886c27b483549b012da0bbe337be770364ef4c32e62c6425a1bcd256a70c0cb7fe690ba5f973a5851cd98690fab101e10c9545dab0fa966fd369c301973ae48a84320ba52af428d354aa6459cc1164ca37d88c59d49ee9124d6eb284f2c5c70b9c4eee44652fd82981e5ca515478ee43b6b742ad6d1519c6a73baf3831d447169ccb23c1c85d77b7709c311de0930829e16e7a16b82c21013f69334bd99e2a893ccac92b031307052bcac496c0f4405ef9bc2399ac3045700d3fca503450736db99e1e21ca00465f81712471a889dfc990644474d3e63f2e36881da07355d52ff7b924a9b45b5a3667076650bcaccd54b383e3e75953b75bdcf81fcc47c248a6a161f157ef495d51674dcf85cb1cd6688796804995b5c547abe326c46c76822b81a0f29594e8c1bdf41cbbdaf53f4450ac0d3740a538982b61bdc0419dce473a3dc906ad194a6b82adb1a1c172f1c50e4c1b4ed4222e1c6ea227c007cc793bdc8d1b78432d0632f7e38986b3137076c6a9737e701975f299b37066c587b87e1e0825d77231931b1ebe764d7ce80874d9a116b21495aa944c416b0fb022ca9758240997db6b05e3bbb0d10ab98231c18f00c750c4bead0766e150b951cc618711c917f2c06d24162bd99c4ad170bd4c7a709079079b68193bc426548094a4a5197a910d921c2050bf6cac59a5d9b8fdd66dcee032612a198a677011698a70797f8584c9cdfc23fc01214766ac1ecb95f5f0cc8b0a167bf1165e569f0d802b412390e768b2260b351d3752fe617c1df3c5fef947e334cce5c272f148386f1609e18152929547f5b091e7789425e04cbed63dd2c26ed0fb9d5e5786ead995a1ea6600e6162344ad2c1bc1038254d04c4ff2e7521d959088cba103eb68d7892c5105423fd422ae3919b6aa285c44056e8362122545f194a11da74921acc276e1cf6ae7432f88098318132ee8bd4704cf612945d974635f847628f19174d80c06a9322f81344c13a5ae16504668566265c8e0d4cfce7039b3709cddeb7e57f9635fa714ae807c2641a819e323670ca44b1015fd6c79e3db9caaecb71afb8b27c36044b25737841593d614c15b7006fa47b869a651f9553a35490e56cfe5924d2c168acbe7463c478e75d39f9bf19bd1b71864b5add80b376e4285991b27f9d781057a275884421682c38cc1becad068f72b949b5b3c70e33107bccc11462369036505f09b15a7435983ccdc645c68034fcce2a1f9eb7db9c0c9c072b8d161363c422bb0f100a19b83f60f9438e993cf8e23bf91d0dcda24623b37f0ce57a46ee0251cb5991a685161462e8b317d0969d59f5abfdb082b13a55d660f5cb081d6ffe425f77127ee4a479f469d52cc407eb065df1cc3210922ea6a569861b8def505a209959925 +ciphertext = a87da5e7c155f4d0f092294d0eda148c1ea2c6f9c06ba6247ea595f7ba52588e486e5178162bb322ec8486c2ba4cdfa62291c5f6156ab8fbc0b1b8a96c5e54b1307d9af026195a4d38f16fda525d003b2d4fef1fb3b19ac7c5140ca69ad2260ee4719baa046836bc89bfda553d80e00debc7f259524e62e6e259bf812e292fd9021ba640356f7b1e86b8dd96091c22cd6de38b820860cb17815310eeb9dc3cdb449a3f7541dc29a9ee10b6380aebebae19346789633f965f94faa99cc438a2efc069e0b7ec1f690e1d9f0b35857bc22d79de2be72633ea72142a201898ee5a5e7ceb47f03c2229212fc2ead29a2e6fcf8f47b2762d2eefaf47003d14e1c76ab5dc3ca426dd784c8e +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = a4c1a11879c134e51307c0c100e638d792a4241b75f71c07ffec41081a1787dca821d20c39cb3a28e0259fe4bb67227b038343c1d69e2c554d29996c1be914ad2ca0326c6ab5b946cd932e05c175cb497a7cf81d9c285b55d6368dd62e837ba38a8c1ffd5b6138bb03e79b88bd06bd6b1b761f5748fd430dbf0a1198bbc277c1378fc45fed6ac022264a3a71c2468c944c56c6ded71f05fb9a2ae4ad44f87a0f808081b53188bc3f339cbff9379c4422846ee28a357502a6e1558b977713ebbf889736285107b478161e91c82b9a7792c6870640a103f0c855e5281048ab17a26d6f145f319838aaaa31b392b402dc4847755059405aff0bb6a2ea2a93910dd968c43b4089a0aa972c7a061b32b2169b93e1e858945355fa167e0d271f9c4b5fd70cb791976f1601b8136c3519634359e49ecae6a6ed2b2988609502f16a78c97f206843bd817893d177ed8681d6279991a9a93e90300d59291200a6e9a251e43b468a8c419d54422aa42879e9cc44ac4598740a43bc83c2f4ab82c48cea7ca8fe354530560ae37757c8365ff6b4c7fdc8579dc554b723833e757bfc976acd5094aea0ce5198c933f10959f0acb05c77f793c37278ca00c7a6101298a5949f79b12ea2857cd18898043456f5f858cd63527a8a96459c5f7fab7a245688598655b1ca6939a01f53d262037b96e1079c5cf1c85fca830be17c2c215a4b30cd6d38b5642b3a957938bab702b5f382c5d56a94818cc9d4a4cdf2c94d43a6f8da9b33993be6fa08f6b9cfd4484c47168a50cb7b89d410f2aa8a2a141de0594ceb2ace2d3b0764da3183612400ec3215746ec2011248102441b357334603537662f0314cff0795398233e303208b539b8b4b07793023a9c9b6aec534ef828804b378c056c524e02165a055233c3f5131c77c800aa0da7fc950527efb3437f268305502e3e91ebeb3bc20bb20ae57a54caca94ba57a50510cd56861864a2ed4fbbd21b540940816ad559a82430863e57597f0304f099b7658947fb642846c5a61869bf60108dd0ab501611403b7b886470ebf37c1a750901babc7b9335b6ab90c0d7a45b6d86589391a59e6cab7774b30589a28266cb6e468c920c3f6d2b7e6aacb7ad410bb36cdf1c64de5697c4cc73baf20b353d18ce74751f242198acb8dfa922ba7629f02768476720c4f606a3a9170f2a03666680ce5b802a6561bd4f69dd9750dd38387c739b273283b6be4a51b686326e95a766a2bbfca3016206f0431052bf7a57f69cc5a001302c2920c1669235203468b7563677b723ac57812838d977201e58ac721b6bb9825698acc6a92a484c00a34bcbf550502e7c008fa50b1ec00275607727c753859f58b7663c7cbb90ea92606fb2678912aa92bd47264da59e5c580e52664f20038fcc9a1a59b3c96ea3981880c32677d209b0fd7873ca937744fc025f1395d1b4cbc6ba526bd26836177252d7c56c91067ae1770e86b82fb152a5d9ca52af550fffb8b9779142d9c4c9e3852f8869e9e72cf2524c624628cc0b76a1e10b344a1608fe2b82e2674804492c267c3cf0a6512750191982d1c9b3ef78acc6c181a082c63078b2b750550790a381733854bc22768cb24e4e9765e95c2fd770d77d2ad3d636fc40c4a3125af30d977102a3e85399201f717986c3be63797b0b50c0f9078b6f09b57c861c0c52df0c60b1ef16db95c96d7a6351f651c35f0ceb5aa43589067af8b9bb2e5b64c24b311e3af4ef4aa1e80aa42636ecd7870b9c5c9b8931362a6317544ac4cb6557c3599f1c4c9d7c24146f3aa720b42ea276354e603844ab3b70b235ae2872e2274c8fa8a920a525474bec30414c7cbb1743c0882f474fc5c5ec2b03fd3a909f539588d5b6aa9a224be59256cbb1fb9928f20c62ce2f58036dc275a745b2b8a6073138730bbc83fc09edf0a0903b3be53f9567251057f311783474c789c2ee696b3c8f83aae05b41b466146d6c6dce7b782443ebbd2bbd8d96c838c741a44883407cdfe8649bfc20160da9681ea11c2f439eaccaa0c65778a95c610b55185717bd48310d34c226b84c2cdb8c16540cbbfa22fe706082ad9c6722011e8198b25ba10d52c9502ca76d998b3b7d469db403934f0509fb847022a4efd386895685de7a3abd01172e40152f7c22d485160e54a31df76ac0b3bcc55cb7b50c10724085cf2749d779194768b305dd2bfb89b19357ac32948a10765a6ac37a1748590bbacb02e570df87bb2f6ac6bf139ad5697ad06f94dd2675e6e0b5a8b43a8cba5a1ea341f650846c96382a54b3a4d896a26a16d6ca428213726bd6c6a0b5bb10ae345a660c87fac7f3c973550d8cc404b2c4a4337c2d8c287f3bfbc7a01ccfa8630517308822d7ad5337477a3d825725ce610f0948a9eaa9fafa79cb247b32389290db697f85a12efe489340a21d9411864610933124ffde72b144a04f7e02af5310b24cc62a2fa53e4fc1b8d9b27c8664c8cacc20f760601c11a1d7774d34a2089e66030055c5d9c32d58a151337378a353fdc3620e2e11ed21408eb3cce2a23a5392577ec7110b135285e2655bb6540a7d933e367bae2b9706244642de5aced835aab198e27d2b098534a73c0bae73002d2f4c11783287855430d4c0ad9297c54e386d55a2bd3fc77bc508bb0179ec8c5c7f0aa5204e1174d14003415caef4a1b77640da70a83fd6263bcf13c20636d6f8c28c9d300a0f7807fb37a94ca70feb3562ff8c0ff89a8db43af408ac283b75213fb6e814941a393051cd7b84dc3b84b7a9d0c9aa8db125276f5156b452ddb14cd1f385dedac8a5a680afe7acf19ebc722b663bafca725999f7a28593b3c578ac9598ec46936f17556730a4d6793cd8a3c3aa91949a31357558a0875b51e9b87dcc5104991367ab4aff460829698b8ca936a7aba46df8146216a9581fa5b169495972676d41534bb98a0a46950475273f809bb8c4998169156cc2326c9605a3089a960c2508510690855ac98a66dd47488effacf9ca347ade4054499c30d98022deb49dad826bf5b112d6b59e3f9cc10804c0403a936dc1f46a2c0999999fa9649ca8c3752782d02f08410a88649941377cb2fd0b630598c2526c21c556222e8f94b363b3653888713126a6a9a3ccbe55cee413c630a995258c998cc83c0718d05a9689293395502b0dbf5af507005b38b884cb9cbbd186edd383119aca6da795f83821db2e2388be77d0fc60690396a0f00cf1a4669599c22e7dc7ed44ac83dcb42a1600cb295352b140064485b32b5d0c0f7e746def389cf07d13023cb7a5ae44922498869dbcaaba3623ac955d0deb456b3288eeab781d66028dcdbdde11ed711d44ecc0715e998611f3af8f7e5238f6383033842d4edf747fed8f24c13171413 +ciphertext = 01c0cb8d94c94c86f90b320df9f42613e29cacf5efb10ab8d6bd8ca00f724d475c8ec82dd93f9c4dc6b5e3b2015a5dab9762967503afad1a223d154b3a4d17e962e06adcb359e32b663a51920a483eb7592d89916f35a1c9f7bec2164f427cdcefcf61f206f20b7f +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too short +private_key = 6c8961b3d15df993337dc82eb852b2c7ea2e2572a4c6308f80488b55f4778dfa6646daaab261735d1a4a856cb0b845489341892d30c8d0274180c01d7b730e539118fce1739663c951322780079e7c0273b717697e275d33737d004690ccf0afe9b01f51b953bd721df421770d5035a2207e8e66645f9960a8213fbfa11cf7b7b2eb77b640977d9cd9bd9bbb37f7f7005eb42466a9817f8050a4bbab612546eba8b4e83cc6e600a4941b0352e724b6c84bafd3b036f7696c48a95241b93776802df05ee2d287b690a0d5b0569a750d15866a3ed8b1c045308e102687ba7288e735a87134865b6d421480adf52dbd220557a239d2d8bd77108b01f1c327ac3e1e8087d8625bac19c70d401d3624a318468626a1422b4663f7dc159dd062a4f1b9b654258589478d75453492a780e91235a4b502d096722427f05217d9534bdbe1a607873a8ca6c340640e9209514bca81830337c0f99d8efa4b8c194eef2934b20b2d596741be9a8429862720e872a61b007a3a767de71e2880189186c8e5d246deba6d3ddc679405b336fcc35ff32743a97a1a8ccf3ba40a0bbc16173a7ae0d5b2a29aa94df2508138a2bc31180f578c3ba62ebd35b676003643e0b6b827104f46789b30674b25305aa9442e067c1f83549ff03837306760b9bd79f947e3d38825f724bd15ab6ea85d2bbca9abfaae5724802a9926ae3a236d911c826561141431a9757b7f0b29b1218b364c32aca63cf1e663a18cb84ae3432719654a10509bdacb2c55c053436d25b0ab16e43d7d361d33f429ec027de1895638d7b486a91d14cb73d2e5c97a629e81843995864e70666e3f6a7a3743487a6523548a6e291ba6c190212a892b9b9a422cd5ca8067a92f79034866c67bb8ad76ba2aefd61ef5005f1bcab82108aabb6cb0f4a99e7b84497f03c3016843dec128e207afe27baf9824bae7608461a23a43f291b020b91503c5fc93235237b10fa65e64754b89c66af2489a2ee81785888f5ba0131d6b764a33352ba2895b8545cd3724cea3c82624937ab5c08e41b41b09c787c7062a90a838ebc2dc444adb76b371d790728a9de2b76bb7354b1efb0d8699586521b12d4c1220b36e0e63430ca1c2ad6baade0b89efac0f13f277f2dc4254ac21be64591c3ca69c67a3d0a36a8357b4709b810e3b3d8690bf95d248efb653465794f863b2e2cc51e90186c9e055bf60aa9bfb614df593065168c1e44e9c14b66424b1f6accfbd5237ada954c9016de6411337c025c8d47af9f19a7f695dbf65608c9313434c2de0ca23fab59a366516fc1743fd82239c754ae795caeaf633662a6f4c892a48312c38392d1a21c9da02bac2533fc4526d46066c0b10b6976ca5eb86018481396cfa97ee9aaa97760f23ba9a79b45712a8cfcf53494a25622ef89c2477a443b537b45659b5f6ce1d74ae8becb89db3c904fa36861ca7ed42915b515e3a9050dda71a2e140fe9c95bbc17bc868c9944eaa9eb7bc743596a31fc942444bdcf6c19cd1084fd99b109ab4708b7ad748608af304dce9a5b27538b9406c02db97546035e86c855ff7786139a9ec5bb2027ec3629477f17c55eb239acf73a5b641955cf0351932a4b080b827f5a4d4319c38a81171a965e7c5a939404b4ef8bc6e6a512e994688d09af38c786345316d518cb9f5c2b0a6a5baf8c01a499558943a811684af30601e72ac7271237892589953b35c657a58d7242d1d3671a535c20d70b4ca89b05605d9de2174f279ce6d75864bca2cde0411869c1c24151b386c69c22473ae175f1c90edbdc7b7476a91f3c01476b796ad19c30a98dd3256dc2e19f317557a751a2fb7063f875a9972011757c2cd8961bfe46a7b8e26a3c319543961211453ff3e0a915e99e6dc1521336934d876278302eb6646570414ab0b6ae92d36e6080a741874425e894dbc822d3a068a7e51c8737403c165f0aa93cd6a316665a309bf06231f25832908108b34f96949a1e172eaa26161bf918bf8a6c37519c9d9893909163e3820507026b39b939e2f46884d0a18c1ca4fa060a935c918ddca3bb85008ef64c6f0742f9c676c1e981105b5d7238764a399459935886047f2dd0cbf182390b4131e9e5661b242534919ac5cc62b195b77d3c4206739443461ecb433d1e25076562105db525b844a980ba4ce6d27a0bb80fe43ba768d5ac2eec0c2f6a815cf4b3ed2320b7467a29f0a6cff474e938cfc2f8c386756ff4a96e89bb2cae4b5353d5a5411b0927567d5bd71b5b67563028773acb0297c06e701923503a5f6b69c615a501d9501b8ce785a5e3b4416294c411265e3a9738e32424282df1e580cc2932d3439cb9aac082eabc3381554ac91fa0c218ee1887aa077470905854341e9b058f52762f4a9372fa4bcf38c326c7ba41ff021ff831c9040a7766097544267585e71571f2bed6a36a59b34b439c94a3a3b72fc401b6509c3741844187b717457e642b6dfc5187a4271c75a48c9d9bbd0d7a175051115af48949626d9e9665bb7280df9c16f06345035ca37c29c13ea32abfa007db106db0938df2708e1a0a9f1a00013c58503d36901ce084e18510d7a05a0eb03c254a15e546840938229c46695715545845ad1db3860e84714579b41098cdb0694eb4057e8035b10db6123549079d5708e176a33ec5bef6d50b7aca1d7eb2389469356e3727bc820f4fd3af2b8355e3c857e13c789ee5c9e5e648b9e8851c0193601cc992d753726a363bf20f34739b7a7b45916985acb2a62bf5008a4bcb91e718300010bc2139955779aadb17dd85814cda5d89e88c5b86280a54b3d2c02134544c2df8bcae055ca5ea9d459278ffe698c7399787aa4497463a292004c4f4509793c98384a71b75a0fff5a7b99217265c1f6f0b2e696ab66cf9673b0c4611477cd9137ee0f37fc4e71b4ca80963d6c3800167b8cac3d46c1a55e51b0b7478265053d36086b77a06984270a841641860941537a37aca955fb0c75d4c70bf499afe2759e3a8243e3843f8e088dec58984ba2985010e605462def2cc50963172d3ccefd66d184c95e41346b8d0cba2f4482adbb455217a13366eebe79549d68ff3eb18fa0a0ce3a1a778ab88892769b4fa21b80354b6305fee3001867a52aa24b5eee7c9cab8b1abca556b2c00d9f85e0e4421e951795afc5317010e7cf0cc0af287b4a28c3b11855100a81f703909e49259bb9841f38ad05a11fca7bb4e3aa3af09c5e274845391222b38538af39e07e71d6a6351fae69bcf17a4b8900b391b9715ba3dd16d2e86797addddd417f44d6a1c6d0dd250e8d3accfda5920108f35e4765a780f91b22eed4f99f7b800c4d4b481d7197a450105316a4893db60d390c59ab679dbd10e3cdbe4268d649f40d432cd35d8c2 +ciphertext = 0236dfb957411dd7d293fbf29a088cfd93f505a0c4fb082673363135067a2b7df72d75c5b00420150d1e6526987af00a6cf4e1c6a7e8d268dd7555402cdfd2cefef6c394d97f1a58f76967856d5cbabc542229f18de6952e2fdb33491b546e77a2075ee67b60533dd1a0d220bd668a3c96d2bca97269f050300a0d213f1d6bbf03e8a2f441c27bd996c9e2d5067b83a1b574c859da32a821f9d3ef42aef9ced4fb51c942dc75eef68501cc289606d66c5bcdd720ad4a2b48f481089508c333ea0a0d15d8ebed679a3d13f0a20fe326f4aebcc000914387a793f896fb63ced84a832808c0d8020984cea7be4840ffabe49521a4cfd6f9d3243c7d7d90672c87f849c07ab7163ec70f7de5472585c19321bc6b32d91c5206b5228f1c12dee5209a1ade5a0fcea43efc85f0145082565cf6d4b35fb7d7e491668a606763ff030026a6806a27c38a36cff34200dec0704b7ac29685d1e6ad8eac527d6bb180bcc73614e6ebaeedbab580f37d2e8cb05e666f50d21693694717d209af44d4ff71aeafbf8daf8bd415a9a8045fc7547f3fde1700cc3858c2d679dea3a49fe6ed24f45df886f3bfa37ec612f5736a4c7dae594418fc1e732816d3c2211e633547aaac71aebc6ef0820f8521d74eb7a7550e068385e325b513ef55c2525ffc9f4a0f67ba7411d7425e6cf0a80e35492258623efb71ccdf24a7cf9dd389bc3e8d3571a89e5da0ba987a8e699bf2de0b6b115624fd975c9ffe19633d1dddef01240979d319b3dac822f44b306bac5cf0f8646823a66864adeff437df593f3a246167a9c04948ca9b5dad000b0e8251eafd9b27abea11823e86d8d4555f9e373e5a041b305200eab82d6119794c5ed70f1346471809beb2113793db0e3749449fced9586b765d209d7acd8e7502240e57c9f2227fd19431533bc2e864df7346b848f14dd1e3f5ebfe5a08ed9d9ede04e1c3b3c7ac81109a7f5143bc31ea415602896d6a +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = cf139b4decb597299c80c063552ace17daa0e9300722b07f10a6af12911564223fd35c88dec05e0c82648983bccad28ede6150728699adac62020692d97c80dd270a0c103abe0430318a42d7c531a5b1afb37c19f747cee25429ddebb05a5836b6c42d3f7516d8763eaacc9137132fb7cc11b8610af84b76ca2967a8da46b9aa429953b8074650f0f873f3699c6ef606f4f4aea57538a9639208bc5d9b644770b83d39507a6c889e397980c88ccc739c286bf840ab343fe25b09c5431ad72a1cb23b54152b62b97422efd20bf03582fb36738fe517b3c899e532b596225f4fb074ed0308d2a3c01b930e22d5439d5399cbd70700a877bf374a732b07db0ba101c84bf6e43e0095aeb607b08b0c275a696c249000b072bf44058378a7c53622711e67ae41d871d0249090c5185f5371d00c36e1d81d6de57c7a092f9614550f9641a17867bd613d673789deeb50f1a97035b4a7b44780d24625de3016bd2cbaadacc4acaa7d56fb2f5d32968b1267fb978cbf5498ccc98be8e095db80950cf9a74630bc2be14b501ca1ced5a0e0a7bf13599b7efc5465ea938091bfd53283dfd62276d373e0778a1bd88820a99a2534c0a7451077a9861503c2c76ab46b9713970cc76152990efab35b54575c6553d938924616143e56080b7466c7771eba57904a178d7794766dec348145573670b0c8cc6f29f02a3b57800cd0c79950119327a88f4a2def59a7e89a7d1f9b76998094f3c3cb94cc44a4a76ee662cda1d40a51007ebc1bba763645a8108e8e081e8b200a36e2981ee735d8633150839e4d9698de93bd13c854aae07281f969485781f8d962eda965450bab29068f96c21b83b5701f4c65737033015abcfc5c91cbd4529d66430cbb39b64466473798018759a9db6fe4b27072da298c6676c61323f9f853fd145cf0e89085d5c302c21151e30e17273de90a7793c56f5fc0ab985b5dc2334f3f8bb3d8d42ac2fc7a3cacc584c1c3115059ea0a5cde8961eca536f9b5a196a4473bd737f42b482fecafd241903a976ae5e179f6eca12094ad2665b0a0eb34fe94bc27f881df6a68efd00e8a53752c988557d14d939c34967076af749766d730b068c51717c634e0a429d841ead7295ea42420941f15c23852b68ddcbac1218212f29576f17c9d9450bcffe82a94606ed5733660b8c598285044062155c65f4f388b08d126fee53c27f98db8400bcaf27f3b655d12f58bf533750242bf0433c988224e40634005304e3fba177114ac26632ea0a441c1d70517a872e23a8c58355a4761a05c183aeb91acc759bfb2b9847fe914f1b6766cd889c24bba56093b4eea025b941ab67c27b94c4d0f264221a361e1403f89bc8a2e46b887ea6f99ba9966aa21a25a89d61551d4c10e47b11daaa17e614a4f0bba729e8954ba200aceb009e9b59266044b9acc11df3497105651a1a00f196101ba4b76f50c6e0794c2ee0612afa227b960537268b76a027f6bd6675d649631e6b58a3735f536ad8a088cb029968c070223bcc92fd188151273f75815e81bb0f6c0892a00734002b08f8c38f5645c8ecc3d0efa261e5780316ca9ee07c1b324cb5c5abccd0b1072f96101cc36c38b8b17f56bb6250439e14f62bc0ea81b4788f6a3936a535963752c045a906380fb090746b91375849496f479ad855ee4cc8cd358b9a506bfec097f78ac219ed0b438088c6ddaca83b950bc24c71d23bacde96dfc9a625775a060268c99f32aac471f0c9ab06e44b66210b85708c5bfd26cb3b59ed14b299d8b323482185e861c29f71753f313dc313e4325076c6b1f1a3793eb975835652c5cdc8690f695b9b7bb0310cf119b960df22ba83574ad6229f02a524c094ca318b150a9032a390964b5cc53e2b213d24a30739ff3d5b319602358c7ae48507343b99603ea08bf84be4c63c02569ad2dd6a758a68d16443bd105191119334de6134038ba71d29de3740f94cbc639c2300b799402832e11595ca8b69d808046acd9076304b9d01b37a9442915c068a87a32f8d3b7f5147ea0437413f33db9f69e594582ca83028b9417eb0b7344c617671252d7ec9cadd06278a1bc8f28154d8c411ec961818c078af634a40c08be0b818b5a2169ab1796f59880c1bbcb1a4e8b73a8a060c038d6a4dcab4b76f10af23412b0f262ae6aa85688781916c61a55a1cdb27bd588062faa33c6e202b13ccf67b092a19c69d5d3080c7871299575b2731cd89219c863b34d60b32aab227ee189bb2986751bb37ef413353bbcb4156b2352b725593a8da18a0c560f430805ddfac06a245236833699c0581445c2e958404a9436562b3e30a18d4aaba268420cda30195c116165e2ce83dcab60440c216800296bc961b01026477d3e618edb809749c8bd84d98153816b177c93ab9675e5420a29db11f194cb048a59e01983da5284b725400ea9762cd22759fc5a2c83422820175733530136c3aac353365bb417b6020774298c32715f11bace60334401472872552d5694da008d305364ddc59e28049cd1570b213ba0e546cad8027725fac43b307132c1994f68162004349089385c3379f56b60ea82195f71a096dba636d6130df24369619e5363cfc46bb43f15a3e5063693a983ea12cffbf727178c3405f2badf8b7956113b30cb928f510c045c0ab0bb2aeecc213f168e72ebae599914dc4072ed2108eae6252759c7dc851bffeca8267ab0041b34ec46511566a00635645ef2522c0c9fc3a571e127140138bf3bd6a456c08a25da5c874ab0857208b05604ccb8180f31ba8be71d302bbba194c96a4504e21a35e1395c6e0c6273ba4de4f03069f853485b527ed189515702206896963564a8075f7d126005300740d68a2a6046cfc900fc47253a0b97a3842641c926ce4125122b0e8e7a523fc17524ab435c2bac3c8a5d20db243e82389438ad70291b29c4518c0b85bb64acc2e430a0f8235675251de081b07c56c98abeb0186dd9881e8f276777e23a014136c177176db6613b5238dc8c98b6a68d3c5a1150b60dd6e6ca954c6634a33784c787a17310c48b78aad9a11e621e512b0b09f9399d0b18843592fee4661b36ab2adcb061909521d64b64863343c47aaa47ad96449781801c8cc48f8da24721b7465d6755f8ba82c26359256460cc832964d9152fa6a397908518d9654401b495f6be1e093dddfcba6a096041e8b660679477ea79ecbc6f6502c330f2b6c2a355da258726917791c757d9c56441da3b5fdb6a96889766bda123ce305d82d7808b59937fe104b42b7bec2ebc2d3d42202f9af657acbc77bad492b1c3576643b41ac344b3f35eda04f3ccf74d75bb2585f1280c1252c94d7df0510a1fa29fc1f84ee51f36c2b9ef4c4b9922c0f2fa048e4a0e799cb5ae7111bbc2466b6f0289e2 +ciphertext = c7d4fe09f990dc2d63f0e8e026114f7f916b56fbf6044f63266c2f07a4483ae52fa9db3daa5d097e5ad21f4853c0e1293801dac07cc2fb27ae16ea4a06bf2c82a4f13d8b01c42d4b480d0c3f07d5d13bf1eaf0e615a5f960a4332f2a7683c2fd189a557afa1170002c305ea32c7d5ed4528ea03451c8540cece1a4c5942e6538bf64f282784fd97bb5b605de4cfcfd5acf172747b53b4ce4b46b8bede87092926fe5ae4e8fc1cc8a37c12ed06b1fa3ca6f91daec1bf3eab138b1b482c94f521c85dcb3831b503bc8d4a634e26789fb8c949532e4e86a7fe040c115a463a97c4afd3ec9a15d39e76c4cc8b7f67fc165274b3ca584faced544e27cd2a5c3b2c7b10e437509827e3281ee471ad580b61351c961e2be6f21da1e5753b4f536a7c1c49f81529c0494f7e1afa4647a1f7269748b5f2cd5a331e2648ae45077cb96966b78613f6296697249012f8abfd98b3e1316269d6f05a5710e4120d230d045a3f33c2664b69f5f26f6d759317023713956d614727d93b1fcff3fb172e213c61bb9388c6d7501ce9d61ff859fc642c6744e0142fefbfdb942c054e721bd415da07ba20de207f9eb487646f122a2a2e4be35cc0a6bf434f8c309c90825facc6a142a6578aafbdc8b661cd9f47cca20bf5a78017499325b77dacdbff4f1cec7ac2b712eeb5696e7494563f12f42ccf483f80d90f230dce5a2d8a44237db16bf54517ab8cdfd09a5e550cfc08c3f2a10414c9ac4ebb2d909b2ea7f539769571f58bda3eb7f0f8ec9cadaa4291d7dcd0f8a15105795947b6f431e0aace476c4d22f1ed4d621992bd61a1a05ea5f1e89794f0f464380619d6ee472759c26568f9991f06ff3b248e3760f6f2c716e818fa284fb468fa8d139cc6dd606c0f4f5dc515c200036aa3e7402bdce6fc666f3c2ba1ceb83b2a8ffa29b18221ea31d7db46a5d48966501aa47c95b3db7e6eb9fd599741da93efb73cc663290d7417f96e496454bf559303c8eac0cba0fc75b5d298dcc7d483aa96864f25e442978cbf7fd3f1c5ce9769841dfc9c766e3b70bc854dbc86fba0930b23a6db16d00329c41f951d54edef04b03e259b38ddcdf8548f8e6c67dbc9af1fa16f6ed306652c393e01ae5083e3399e124c314c61b54b1e2bd1e53b43e4dfbb2a7706d9b04848e5905e9fa09bc3ec63ea6bc1883102160af24e1b58d0c5686e337ff191581ec38e0142cd71be50af9985233d762366226dca69d2c3cc776ac145f0d60af6bcd2564cffdb5d1a26835b0f57598214a557cfec207626d7cb83950d5b1f25d7d679359613fb70dfaae1be07508299b398e0fe3e00b4859f4bbb4b66b206d035eee057c129392555fae232827ba6a942b16a35037b675b51caca638f871f0d5aeba68fd4870e04f99d548689b06e903acdf51de650147e48029c01ff8b1260af706572fdb44ea8ff7e6c72d3085f438858a0e3201b5d61b8a31f69938ed9a53a3723320d6369a4bf16a9c7260be8d54917a65b22508affd8e8993d0e37c61e17847ed4d61a7b5f2b1 +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = 0c62cb684b9d6de85e74226ad6672c0a3339fa974b648856f8479d9954411bf56b59341f19f16cf1086a5b50794b8512866a33b4f0191c15b0d253907c72624d83960d385f1a69c868832eac567099927f0d2181929164fb84cb1c9149291737ae5959fdf623bf14402651ccd468be138104e8a42d7db581629b7756259ec05171e5b12db7c4bd5e8540903c8e49b9a797e8b360f209e1d2579d5bacbf914d5c92cc2a9a18b8b2b8622584bc220aa8208a547cb2cf59bc60a384195808f429ce0ea449e7b10828fa6ce278259d051bf3b036b2d4bab1728372d29e6282a6cac494a7e3448913c847700d3afb6db3b455946a747670483bd06fcbd74eb76704a6100e2e5a9340578540e9176d905957d890e6821868c01da4a47e5aa65d665904d8a5bf68db5508298a3fe659947284f18c1882235fc194b3eb88c6f5c878cf79ad58d1be039839f74a288792464c7a9d80656518b1af8475cca91c7e3e6328e9281dd2fa341b5c7e68d84729fc24c8fbae336560b6c9c56402507a1c313e15ca5fdb9dec9056b34092eb5c6f08446aaae7b8c5a04fffe0b2cae01c6244987d84a4e2e78ad6c3a44997329494c058b752a0a83a2ca99d391447765c5f1fdacccb9c1753c45d53c42d4ad31b3cc6ac6468269c9a6cad95a9795033067b8e1d9807eda8b31dd37843414f402a6d1c347d000a6d222188b5d97d13a4a09c6c5e23bb0b61750f17f2cc6b9b8e371c30f3b20c5f41157c410297c6a7518a29b981ca4b44a5463205cec7a34a1c7ef32269909864d8f2839ec25b801c107813995b4bc990771018ba2755b4ab140699ccb035bc0c8b601b96627c71f87c16b1227512c75914c30c00a6569623c0ad73b87baaa2343c5061993f86c750c98a986ef75c6e600d032cce801a74e8e62cd91c863b8a422bab50a85558a76b034f8c477d5629d8480507722da1630f55e441e9405891e414b1abb69d5a10e5d85d9dc36327bb7ae27b99acf96995d303d474301524cb2094a7d7ac2d921a276e983bbe0a2caa4606b0364e8bc67444a939c394664f3286e766b013d651ec655a8798ba89537f3005a74786a8edf3827ef12ea831b0f6448d1e17aad46608f6098e46e87c18a7a9c4953d36f51b29f9a51d0b0c14d35846b881b674337c2bc526c100fcf02c4605cd8ea8cb0d09a2bbf90a009db12e12025fe694aaec0943243177c50a87d2a456c81c3c89ce25787d9f737cf7aa9366d98985721127d26a2a94c15fba112900678d87976e56a55d0a63e4290cf0ac86124776e2b53fbc466c2cf13890c01d11f72ff1a269e27694720433a1e9543fb67dc125325b30a3d23a705152277986025b4a2bbe8688482a3ce165254554079c4242171522d5f8a352421740ba7c4158ac11085f52b677b7ca2e76319c75225f9f89c9a9506c31617a128c6867268b69f171b55559cd63ac6d3056a56264971048828675096abe8ca8a959a230e900bf7259899f4025db182bf7c5968f084c8b63b199e460a7d0c3bf316306b86573410048083cbcc19ddd3a890ffbc8db97519f7bac4450858a322deca2312fc9546dc731f0853cdcd151283a06e133a88f0710dbe78970920cd85700e69548f4e6c4f669a4aa77421c3c1a9552cfe9fa6427eaa846f7cc47b3c77a9a547bb66efd0b90fa2c33e6c9928f46cf98058013121476b431798c00be0aac5e00a9b0945fc939b86410c20d11540e5a204097b8c1baa9665676c5d9a8a5da272b43ae05b9142ae3b74ca37faf1ccd6cc14cdc1539925c284d41cd89387dc468b0929739238b9644898c1864abe196c4eac53d3641119c380b69956615825e14a7b90d43b118f79d20e6459104554168433bc36c1b9a52b3902e9e0a5448ecc9ec41240730488f567762bb9783c5a88ab708ef573f10996288d01a979cb6f3b7b3b65abd09b481c4f26e8eb0241fa4c445678ea29ac7a8e14ff7425f9e93c79f175c7605cb8e10abc3309997a37415677ca68aaccb471dc3b72515e4af81c825d1a7768cd70984da193ca2c542b756f8ac0958966deef8258863bab258b34e98174018128546c192bb2f6655536a535bad046d009d374f969d44b00165d649f018c3286107a0a16d101345bc625ac253748b23be9fcb61521c708f421126cab64c9a2813a639a0fc033e4295f999013a3329cf59077e12669922313a75018d712bb6a2a4b809331359c9f05b5e0e759293a93b016abb5d3659d19c1e8abba214694240f4263fea28590b9c0721c1d2a12874d91f3d8a58053b59415b0a0c1941a0bc12c5c47acfca37d986ad0c3891a62338a5396777f642a12b9822a04decb56508955d4e1b5114f100f6807d8ac9081967058fe2bab969a3078208bce654def6839fc5012ce389fba55c0a5c5959749ee405a52be77c2c8ca6170689acc9b99fb85900101810e55c116b3842e7cc18b4cc195488a298821ee54f3911a1ecd53b8d98b8bafa416b01be5150562661a59a662ca4c28515e07d73eba971309c402856bf24835df501099abdf09a4b3e439101c20f6945467213a5b532952c784f7d4bad36e792e9262c3288bff6b50493d86b698c85d6c02c1e072ff11618f0416081229557b3c954a636d713ca75555bd0358c84165e113109c3e9a959c92b365c1bc5da49e92a6938b30583743594f05a9b37482a1c7fed12cf6c568b6c73c7d1ac2b4b279a03f8b88d4408410085a74468fe466bc55b4f2ac57ee55016afdbc242793b02e8ca5eaa58b45c0c7e621012f1b80d12b2dff2185aa25405c6cf81c224430034ba62c949b3ab0bc25f79e3bb291c2d4dbc8ea0cc70afb860cff8214e5656b5ba614bccb96d73153c67b6a5f117a25b76c9f429af7113264c8722611f781c6b8f658bb1b35b960c1791dc08d183bb1ba87b8cd7948fe84a7fe977696091ce84300c4912aeb6b72067c6378b946408ab5411bde5968befba312351930d31355a3a636f9130901c852da327d126605f0b95f294780ee1a6e7da97d4970cb88bbe3223b2bfd45139dc6bd650817e32ac2cdbc375f17a44920eda107cb39b6026a109ed0c52a79b76ab5a9e0f531d386a6b8aeb3d5f064c07a12236a83fecf59a57d2889e479cd4544ecb5ab750b2ad4cf381f976bc1b3ca40bcbb52f1b87067057296801b15b3ab6d99544d31e05504110f104639b91813b677fc076353826cd9671eae0a4688c5433d96e71407da3d6a2c64b83d9c445d3602ecfe58c01a3068e6c8822c4ca6a78b8f5af1e9dd49618be9c8c827116763e88e640ed5ae3f564e8c77b83a45227c5cd9166c5f762c426f60d885864db4046e6306dcda4f6164ba82ebf8a46b73f256d19beabc074728e12fb1fdf0973e31cee5b79b48855c1951cd3813999801753b8fbd824565da62b7d81165eea69fbbdaa31f88c +ciphertext = d672f30344960faa4f84b988a5ab4b3aae0b96086ca9e6108ec0552a9f3a46f69841825579ec101d25c2d980f9be9b70843a876c2e9e7e69304b66f2cfabd9373981ad9baf3f490e390af6247807762e523d20e63893ffcd27a02d767a5854e11221a91547efa1294aa2f4da295950bb31d479adf0b18637cb4d503118ba62dada06a0e48526fd77e829a3baef75cb6dd17a0c3d59ab0f7edae5612b56e5820c41d325a5c54ab6a5f62c5dcc449c4f48ab8bf60168e3d75046fd2a315685ac01fa78cb4594203c7a759a4511cf8ff2e09c11c5e3cadc81061ab6ff0e3ac9c0f7501d2733b60a79a505534aad396eb9a466eb594046c68a9492e1277e144ae0db203541f51b07b0fc453387984da279acb588e5946606a142ca311188e00ffca3378a3a0c7d61fa871090c87a148872b5ffc6873436a364f660fa5625a69a11111314e4153c036c970b883bfc9c23db232fe7757a82b7a0d654fb03c8afb77425a5688fc9299fb091f4a4ffe275671d8b7116d79e4eb0a26f4e3c6c2e1963822034243c45c53ae769228683e658dff839418422633937a33150e9e5bb126529f11a2a47837f510186e4381bb28374eda594267e2f6660bac83dfe59e288ced5bcff2f0cc02c6a4cf9ccab08be144b0721148d8db99708ec7f6d2bb3574a0235caaa4b3ba1ec9b66610707de8fe07fbc60f5b2b2b70c260b030e581966086d564a52c44990db1e811a5c18beb4cde03ade88d81042e34b78e91d021ec29a62f903e0f83f244d98fa8d82b6bcd6a68241cda27caff4de9e1cede0bb61ce23843699c586c0e9c07b449f3d438dd629979cfb144a4ce5fb09d0ff9ea5baa3058abbf3a9543450fe28556898f1e15fbd52fafca575016e9e287bc149420f37ea0c43d95c03b2eca4c7d2c636b8fc5cb5cb4ae8bb373fc3f253daf56e80c451235cb3ae52b8d70f4f6ab619df1e595c5d5ba3d5b1d1c63e49a745037942ac1972aea11a9e5200b62d1d1f4eaf81c9832e71774abae489a63e928e2ccfee554c96ad2eddd57ab836b7f3af4d31e9c1fe63d0342484d12f9e75b8a7d152985c019de90a24ac8c778d1d9972e60eb03b15ebb9c2af7665d492925091901c7ba1d3d0b5e9d4e67e90cd3cbbc403e6b60f014e1a0840fc2e573963de4ac33aee796bf16aaebfde049ddbff999c5783ee35e398f1e76b9028194a5f11c536f374416f6ab6d59c2bef472eb88a9272c780a3ea562601da28b2f433722c2fccf7de977803bb9e313138b36b3eaffa5dff4a70e81e48b97fadaba8a2e4071f858ebb5408cd658931ae6fc9541e2d2675443ab6462cf172085cf4476cfa5fbe4fa1646745087e6ad9a2b420b85039861e99b3b74820c37627e3fdd240577c533a66d4ef1d65e13586a1e85e48b13bd97ae20a24652779d75bb34630fec1935857cb5858fe56ea22fa5ed0822bd18ce58b6054f0a1a13a9da1e2ce01efc4b6950af3077bd859463a771952c2be35a62d83bc2d79380d77b61f30794e2470c5f8be06c6a6ce10b01224 +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = f44565b21b7400ab817b6193dc5c2b9ec10f2d37834c2b6124a95befc2b7e204a15cb7862ad57885fb982f14a1d1f14f5875ae4ffb824b652652847396529972472ca292b6685473c5d57c7a636310159a616b1f180a1e5576361473af46f9a28f08952f5301c933c86d036a665cb2a4db3da8e80197d0cc9b9a37c0266cd39034f7b1a6b7d64bf0e7b5f3a36087e749bf948d06e93277198670b0bfc831bccfa0ad9afb5d1bd94051d3c3eee17f43329d91db330165a21f506d8daccba47942e9cc729a22229c6ca7a10c809d19b45cb1b77f40c838078d34a14cfefc1b9a3b55b8f577b6d38bdfb792c1b96be6d12adcbac76337730e1c8c85f8796283b66bf99ccaf2817057a9a3e9c004772861b190bf607b250c9e6fea0d173b70eedaad3efb4982b722255555e68bc76b662d7fe84e66b39d5cabbb7c38010c158d80a10435d438de42a958761f48603713f775c82736d71605b9f9456d93682c228bb5b1166a9aa0d16b7d6b06b72b314ed9156637657ad0b7a1155b8ea27265454abe47c1a3607c228332009dd7941f086ce9d08a2f132a55e2acc590c75e34222e2740bbf53bbd9bb002fa47518cb5eca0c997f99d0f798bd66646bc412519197d029479bb86bb670a61b245cd45135a9572c71104890d72ba1bf7694e82a6c428cd8298b9c5284fda5ca8d40650596b5438225cec4b72a38c8648e998a3d63ce7f78e4a922ebc2776ddc7581188c3277967b55773b4d2c26ef40db4719f5653bcd5714d4c7626e523a49c21708a45b64dfc48a5a54bd2b641934895263c96ed0c072bf5575a3317c107185e59741fc19a83ccb1358c06d26a6ec295350bccca21b6346f524c43244e0984517be5134654c5c612236e6c8a6379a910e9b10a10b268753916e856542c07330504230b212c7a006ce53736cc62533a71e793bb79d1191103c803f77001653f08da2697f2cdc2147dd576092cac809ca8a7b5061b1bf63921402201295376c29493128d1d747322c9732a9317e4eb8d33486b7cd13634a125f4073a90d420435b2e4ae118adbb0c6da67011c8c8cde16ec095cb082561c804327ad5c88d363649130eca9923ef0177635aa94cc87a371b530b5738f9aa4b9da975f4e9a215541252390c384739bfb57093891ea8848536f43d1d175469a551a3621d4b6976b1cc1e4a305c4062beaae63fb6925ec5b75a99c4b8b94c7e6f02644d25ba7d54c4d3ec3a96f62db144091d23bc40727692e229c4dc52faf17f551a4d645bce2b30656f407fdcb69064225593983339d10d35a5b87b358f1ce685018607864a1c34a25c9a31c5c8c845b4686ee9c4086b9302c5231029e2c92a2316f0fca683712eadb9cde11c99daa16162abca69802b2a712014e4436cd982dfd0c6b965218092024f67079742aea677573e517fb5cc3403b1a7c90439f0f61639fbcdcc213a02b975656501744458610531bb41c3b373cc0b06306fb95a7d7a08f32799e37b83f1957f0c8371677bcec0d03e59160aed34b2f5f10cd9f44e508180baa5baf6015731f5cc3114cc2261818bd644a856a6e9ba316d7b4cde571b2a23a7f6dcb13dc49d6b59c3c3b698c4a814ef371f49fb98a74b7923857541c96e7ec1157647a274c19dcfa817476666b64407082c884107762a126a8bf3519ba53ac2fc9229c221b466185b719e35b851a04719dc948c7f4484a7f3becf24b2ff39c2161773bb97c5db7137a7a35a8e96044df03c086b0501612782392cba2759460a8a14d84571d47ef9d47387e36bb6982b687bb852957ebf27ca8704bbdf5c7bdcb952f1b3799079918478afd7b4ae1d629e163a68f2c027b229a3c109508d335fde543fcd52c80b55af0f03c32e66a8f45360697bb2c2134532e6724fe2cff998be809514c3a20dfb1909ba3b3b87d2761d3c91b883771fe15ae175bf26c7c8088276bdbc80ed16c31155b217f05d40eca21cf439b9f8478b441a247a481bb1889c6417f956223f451652799c27029353d503860c4900f584825b378d199116e46a0f15c3a428cde1353caf518e2a7a1f90f40b5c6acfdbcc1dee031275249f27d4a0e5980f09b77c1a21cb81037eddb95368a614761a3223f23d2364c6d3411e471c2c7c405b85683b9670364cf5063d7a49d161391d7cc46a6512910b6ff55b2e7c9394471a77a690cc2670258cb78366b58f4a158c2060c329205c3c4157972219baa619753a1ab392c7f1e7ba6818c527c25dd943892248637b6c6bff045d46eaa9b8e8ad3f37703896c0849023b278503f63b87ce5b7ececc0b4bc04aa5c42c92a0bbbd605b2b10f921985fed16fcd7549add085559a543dc6c45bf39356c96a7e876e28b75bbbf273b5f4408721080f6777dea088f904043d785465b7b9475857f5e963e0a44e73d40f05d2bd91d06e0ea359cfb3607980b6a7bb5b2b07cc5915605d5bbc03d7ae2a172ede182667e4bffba848812414d9d72dfd311ff6681a47a3c3cf5684d6323bf4e83c6e523356c4baec579743e7036016cdc395b0dc576d081418b1284f4029125e9a39565c9729f5317d12799ae627bdf3bd895a90138799e2097e9de596085c1240f11e91030cca2bc4edb44be5079c52c192b19336330b77599563c3339430d5c6e87249a1aca244323f4af9b325a57bcde77be243ae63f4b81e2c7a05015e4446a5d0cc5d324632d18c4d8a740ba9f2ad87768775cc7442961381b65c8a48acc17024ab2c519bc00ed158a5b90944bb89bfd7bc759c4395e0fcc0ea038c33282058eb1bed930b91d4a2f5573003011132004a5b0b6177f179e727bf6e68c93fe3b520e1a971361bc2b4201b6b5f5e860abbac5d2015a9e164733e33bb6e0c19eea4aa18fa3adbac4725c9283a1572d3253c2a00471ae12f1172289357ace43842d2d2942c80ad646bcd0e787cc2665939d8463235021ff92bb6c042239972f6522722f4a8a23453cd6b4c7c077cd25227fe9628484a05644828310bcbdd61007c63ced14921473b7eba4360c439bbe87a9086d95543f55cdfca5044815da9a1b4f11211fb637aa49576311c5a7a4c248b5b1867b97c33062e6c5ba883e0c1f427498e951d880869568cbda7cb477a1569df244d12da59f31137191b0cb8fac7de607151c422ebb84dcb3837f908ce5cd895df772c41eca48b6131e1a709b3668650f70e2570866d8208b35826491a4af0695e52c91a2421b34a051e76ca820405ac55598b05f22446653a44a12ec38bb9ca03a3514fb1a1b04167ffce3f4cb0916dbbaa0f5a33b74ad397246e5f7368cdc4e8ce12ed1d4a9b24081ad12d9bbb0a12952546b4b9d8d4379e0e235d96ffd939addb0ad3fae21e07e1ae91c5d95908e2a778806fc69ed8f7b6c07db39d8a24a476e37ed0f2d201ebb66ba71a27772a19a3783fbb16e346a4d4 +ciphertext = 74a9f53517658b9ad6f54e9a2eddabf32a35d98c95b9967e7aba33aeecf124c7b8df997328ae070e9186564e8a0590ddd9aa62b677303d9c5c3764934c8f7bb49f2d14825fa882ff4364293159fd94353070d6d1888eb217e866877b88071861f17efcfda8abff54e696dc3d8b9833960a26806bc3fe159f7df7a60cd4c80773447e256a4ad796f72cb78078306ef0bec16e70181fd0ce889f3d24eb2253d2853aed7c5003138ee3767770d8bc776074e39c41d3e26d4b0176c89163cce7a2aadc0b0591f99f83d00071bb94e1f452d7f4b3f39cc1203f781cfe7a3aea711c82b859012aa2cfa6fa6e4779774f7d5f273259944f856ecd998dbb1080d1cca03a8ab343e5238fce587c623544d95118d8cad281a5c92eeb16383206b23a13a750f90eac2d8385aaf19b312ed68af21f35b9a047e4d07ebecc7a7e9e124b4dce71b58fa01ee98f9f4ea82f20fba33f001bc1746e240c4f850b7641a289d97b9f68548e849c8de79f7a6f9345e553d263ec80266e96efff17b3bbcba1d2c507b82e836daf27f812a177a6cbea159c8b61690d678bb377e32b7cc62d49c71d9ea7a5443da80fecd660109f4a61c0d96cb724213c1001db478e936e88346816686fca42ba68075958cd5fdf99e28b1c00bd233f9b533a43abc927b64e880a6a47cd34aac705d67cbf25f5b49fdadc57537d7a0bab8407d8064841f0df8123baca32474784e87474ca6e334ae7ad8df1f627005e892dd526e0baa33a0d9fdad7e21005fd36ae3d1082e1e92e57226f8a7e83e4f2e5ce1b6106dbfabe2e5b4e1c5adb64625e4481749f25c263ae6e12ea4b841131afdba7e0e33c0fb382d62e3e43c9def735e62ce8be67480418d6da183ea4d8a7308f507ebba959a62011aa73fdb8afa940a5a7ab30e51603df03b277fa5fbf16feac6139c08c92da5301a9d6d33772f9fe36cfc3a8e0169098faf0f01289463f0208070484fc7b163aad6208b9e70e92d1f72f06a23941f3eaebd63c8ac65d87ac8378ee7df9beac025cd5e1c32eec87a6d5b04347c3d148067c176f5b989704a455bb01a030d8efa6d70c94a07166da52de6003c267b707adba598dba7cd6350ad0cdf1837f107c5e5bec0ccd066ff7d4fcda9f97093ebfab7dd13c2181f63d1169e44f8d6f59149cec68ee76febcdc91d5f50f3bd7eae5db8cdddf5b23a68d4d574c06a2bbb0e562f0d6665c80955977692183dd1d981dabccc857728e652a1a2065ad5ced557ec2474178abcf5e282892241416425950deb5c849645c560bcfd5591f3a09f59daf3dac74aef01928e516fb5ed138091bade0ac0edb98986e6033639910366d70532d5be00e19783e9ea1d0df664dfde3c47e9e29f05040f02b83de69df487e7d7dc8fd8e69c4fbe2a916bed084a66e960e71ea365192fc3644700d14d836b78cf4872fe6287164728274dbe981a82f3b05c3399738399740f9e71aec983bc8c1124416b0ba0e7f9d447b69a919aa3a7c10e8c416bc455b5f16e271724446aaa7df397678d2c63b +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = fed5acac8b7b5d309d37175fff16435e7808e5f61113e77eb8ba903758b91f365ebb4641dd416f18132460b7b9e4c91926e9cf03e87903c496d8118d3f5b3ab990a0d6674f7007287f6b49f3f991d6e6038a6b4ed3225cd01c198ad17e94f7222a690dcf56a5b0b272fdf6825725bad5c9c02df1112f32ae400a6087b521d1b7851edb359ab498c8db3576a361e7a18d2841cfca2c73d7f871fe28703c6a7f4ff18315a56f06ac6b7cf9b36882ba72cc37710817193c776fd1a0cee00b0b6ab60fec193fc64f5ae3895a521036067fd6a12c78b15d359575ef6cc1e507aefca3592400b11cea84855979a8f20cda4175b1b9c7a483aa3ad88858f4685ff6202f2c060d4693e7c201ace6a594849230685e6c569a42d42f8c47be8dda225daac937e03f7bcb8121055484c3a91b1a0143d4c593d35ec5923f4d4cc45a677c51f43af8d16997422a26a8172eb032ca9896ac7bc778a7cc96c1260093c28598ad7209621840c6d35b18b2a7c3515599f485567544af1cb7a0cf877092936e98876254e50c4f5866c6200b74da63e6a4cf27608f64d713e3ea226375bd555aba93a0a9c07a7742850c7432affa906e68519879a7150948a14ec9679af14e579651f9173c3b9443d4902bf38a6f67e97d2be8bdb2b396b311b62cacbf7da470d4b242f325990ea07258dc09aa764d92198076a28f0489a57aa4c072a37dad8576dd1111b91b28ab14702d05070885a4ff0527bd6ab608682f4285637232656304222c218a0ba769bce25f268a7b243a1e8743a23b645b4d02a96db34845d8a6c014bf13fa0c53851712875bb946939cd44058d26b9a79ca8d679a55e961e37161fa5abf9de90fbbca876865bfd4f3ccc7ebc5c0a628b9951510cbbf1ac81574b67b2ad91402040ea7d3704839bc5ff2ada5c38d7684cf9dc64b6f45c4c3661edfe24f2d9491c22241a652c64b5159ebdbca7ac02a09526835b8b258044cfd45782aca47e59a1e2f53aaa1652bdaa5af42d18fc50a8252f97f48f4995ae31c9dd34a4777ac182c5aaec71c8f319ae97b87c0052d70c905fbc32e04142136a817ba3281510923271069a048b9db6b9c76b378794b79b09938672843d9b1ab8afac512a51edbf084dc548a92da7b57e06698305446e3a3d4b13fa8681616c0508ad90c2c4815fd34b11bc00421fac998c12ff354bcabbc74364b9ecd50cc57b17921c829aa1b0baba69f5e64c0809a3d09792e379a2e6aa00ca1273d39dca6d5484ae6dc2822217eacd68627a5c03ca040a80ad02c8959f5f767059bb94d1c8595ca4545b04a28b5195735174eab199fd976ff85838930cada2931ddc41919821fc5996749c9bd28e51fd967b338ab2db6912380f51a106930cc992a802310eef497ee94a19dd95bd009319c52542fbc1a6e614d471a2a6a156ee8349e722026e9b6271a0356a9a29e07f28874137ab2d6b8c4894dfa431c0f795d725b2c3233667c35be1fa03528d3bfe4f942456898c4a371f7a350ac560787b85ff4ebc185a22e468ac97f6c817243c0acab2564160689d2aff670af47cb9b77ec7d2a159a9bf7054176182d70c006f5093dc2aca4105942ecc51ef3abc2794c01caa007b015fa29637cfb0357e41199949581a1a48d048a26f0a1af82c22b72b2596956eaac632c9c6346f04b6779cdd2f4840e03374af79401645d66521d4d29190c65427a2040b6f5c0a8cb5679532ab8c43855a6761cf5826d6140a1986b55259332ea835601bbce575683a84ab4f29997681ce8d91256bb4f4300a634c59806941f32e592dd6c3b491a4c6bf57ea78a699641cc8f4462043674b7f3aefc987a8020a5ad075ceba826fb075de49413acf9038e385b2c648972112c2974c8c67536df33a7ac8565df2a9fbff09d1b3b9edb566603753bbdf1224e991053b63cdfe6ac6c46afe8fb62b9a638e41883a40c71c4f72e0b24b9614766bbb5878712366ad6cf148007fba703f5b443327a200c6683fdb45aa918532ba2a2e948243d870ba120b6d6c57b5a77cd5489598b444fb7133f06f514ce90c386840a87d317336a774ea458f9e325c9042008f59cc9e72df1f526c7d22fe934b018a033ca586e27c1afe3717b9eb01f34c53a4fe32930cc6c91f088afd95332561629494185589cf753bd277b229c6bbd54161f5280cc1722aacc801fb6777f965b5b82476d55b80e75ac67208bbbdf970afd1c55e55c2280076202e572a324881477a2b892a0c06b64dd6780b8aaad082587f5a7416c583f56fb7c5ae86edc4513dc041c2ee4b854b24cbca0b7e70915be317fe7e1ad3a230c27d4bc80432c7b16948f32637b7873a736a22223284c18162e8373d365bb6ea5be020c7c7377cbba95a7d0f74e5bd9c9824562d3548e121847fe8b1994b8c03abb80e02421eb2259423ac3592013045387cb804ac16b0afc6c7f6674939f085533d6cc019c66dd0a7d4ec4a8cb663d0748b6641434196c5f7226b80d171b43ebc23afb2f1b8c61f4e7afa3fa73621b030c16ba4de830fa064018eca149b4cb3e599ebc8a8c0c83716cc6bb4df572245ab7d2f6a0e7bc96b50a9b583aa3d7b977d1579422ecb1a48baa535cca348b9d90f67b5b1b88ce44ab10882d8310934d84c70e401ba07292755ba38c4a75810406184ca9fe595c4dd1a84db12f8f0620b883c40402734b6c49ec49c7993150a9c29658b9c07b1abc6b71c8194356d1bb68257a71e7d39fa06a6966dabda978a7abebbe4ac3a09e7261e52319e747738c485f36f917b2f62cf577a60fb6bb990bb35756ae9239784d8426d5e8495a9608d0da4d7ff9344f02b4cd65b2470046fb1431be507097e549df658190d19c3f5772bd662cb4496b34d93dc4a99c3f54313de5028d78327d578227f71bf1fb37a9252b92813f94e20dfb719ff9869fdd74abeba9c2576a8aa3b0a9db0158ed6276a0000c782a1493f66c960ac4d4f4b553666cc51c84286255bf041afd03a1cfeab3f2464c048c7ed02b65e18b89bfb7043891cf59a3538007117180489388503c542ca10a0ea3899ca5227af255702182128d987dbc11c80dfa849459bf351a12c468c1b9d44df0e0bf09a5ceecf47fd926397ebcc9cf46508cf413992ca429fb6034443c14f2567e3348c60920c216b54ce1879732899702b7cf13944ac6c649062793c02b27e63ba2083975573c03d66640ac8b962871bb309beb4543b7316234a0c3877ac5f128b53b3669c60ac88b469fceaa3f26b57680f7634bdf975c4be56e94683cf5510318329a45cc2313b30bacdde7ba464457f0d347822f709963c2870a3d7b72c6a7607c1d4414303690f2517cc476cbf835f0e64d787a09c4e5cdcfd910d016b2f3717a98e7bbab9e4483eac9f365b9921888544812339d3a203c6ac4 +ciphertext = 32b732d3f57c8a79f7b170366847c412215aec6d873046b2e7eba8baab765010a89e8feb8dc64435ac4d7eaeeba51f1046a158c28dc79a01f7106eba3ef70ddd2adfe9119565bb1e9af958271af6403cb5f8e7b6571d84eddcbad51f0af6d1219151fa7c6ea84ef780ada6c8726bd4c3a1ce59ee2680d124ad304f595d036873f703457c2ffb8ba2a3bf96f2767c01259c61760102b414569f5727a1acec0531b031f5b01ed5186734c36cbda45e6f584cb59bbebf4ab2ed097ca16635a929c3e66d3d4db54cf202c58bcdf28ae12f73642a86cd30eb8a9856f857104c85e45a6404c1b48582a2d6a679ca6a49eebfb90810461a7c0e3f62ef1500298418409b24748db0eed922d6b6e4c9e77ba054fe5c33357310f56be74c127535e74d96c58ab9128511422eed18a1069eb68321bb409706797023f0f8988eaf5852c825f7a3d2d9165d72b8c6ecdfd8b5ab8f1bc9193a340a5189618c668ff959309ea68da7c08b59ea4eaffd7f408d66816f3ade57abdabfa745ce9517489a13f63fbc68b86562be68434a239c3f319cccb5651202e6826245e09c06901aaabc44a4a8e9416850d4ab8f966f15a1aba9baf2cd5fce746a6ae807ac622bc0e13d1dd7c8defecda954559780fbdf1df19d4989ed0727b40bd41322171d508527c0db7dc562a3f55ab4869b78798c0cf4564de2ecacaf5a98714edf2c89e4b82808349b5adc9553e3cd0908a94ab71f8ab9137ccc7d778339bf9139381ee268f158a49ce0e5d2fc60c0583cfaeaba11bb9a9085a2a246c0421b05bde8961e8ad6126688be67e9166430645ee41855e71bf0a3a8af722d74348c2cfb747169ed4c448e2c72b79411ac88d842c385d85c83f89d757c281588b3009b70b4594101a528f4aa78cae24ebebe2520aa7c403bd32e5081b76cc424592babe96673f776b474720b02c57f685e2c351320efaebb0c178875dd6c3ce46b2ab0174102f5c5d863f1e9a77e0a8377a1901e7a746b4fcf5680afdf67cb510e961d76dc9067c40d0b7df9c5189754401bed93d5a3bbc2773129572bdb1e687c941ed7d3f0b0e2a7fda2c1088f76abc842091fbb96957862c94bf81c024a6f3fea008c1ce6aeedb4d2cbe868783a0c2623158d0c0a61669d4f29280611a84b9459234f571f9234d86faa2e32892bc40e1c5e3d32aaf2b6b7199b3f34452e76beece92014c61fc17fc4ea12b6c8df47cd90e88b0c1aac26114cdafeae4bee001cbb122db8d344eb85c11200f3f360d545201792dbee70748079de0c81c15eb7fc43fd90a5647ca34d831eb36f70b4c1f96d48c1c874ee0b60a1dbd25b5f7ecf53c40273de43d60f7cfea62f392be7c92773d18b667f18c3f5ee0631e08c0a7ed94b96582eba17fb33f110612fefc9a3109f0b1dd3b409d6f0935d6f0d31192c3a1092f8ffcd13924d56a8558c2af2766738c1cbbf732d440ccf0008ab1ba34e220efa91a830adeba46196ebb794f3da3916d95faa59310bd4378efd1740a46074bf0073785aa6f4479806adeb83 +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = 25f25b72a97f24f2a96d1c966188a5487a230c8c2b590884783236e7976d4428c881b65057852663a51b7e731a5b94ada6742ea6e405b113346781ce7c7c119e5177ffd466f07988943a26157480f970b3eaec8bfa61315205cf19315d0c0b393e05c8ae943e1bd569fa99632d644d16074a27f4cab7173b165900084a3f8901178d2154a7c1341c023882e85b86ec91fee6a2c54662c305c3169c69cd22bd8584166820a31740640c95a143a0288ef1896f5090bc163a3c716def0014c4cc8cf222c1aa884d6bc495bc718cf386a806c825bda10de9535b615167dd373d1caa062d0977368b67b5b8126ab2bd6246866c45451e89c0ec2c30116007f5b17806105a47821de02c606821bede27231383a62c65b82c5c9996bb8b749676536c2194a40e1e1c81f02904a4e1b8ed344980e851b3eb9b383a596707291951102fb07effe6bfc0db4f5a1a71cb90917e522cbe5710daca045d97ae48499ccda81a4cab310be80e7371b5e76b5325579feb8228ef5ca162c553a1d5a4a7894c77834d03d023cdb695d1b09214e3c00d9296a3928012622df8dacf17e89763048b5317c2d3f09f838699504c3ee1d82aa8342d99e46cc63c1daba453be71b4c6d46388d0333aaa9c6f8699fcabbc4241c819991f5490cc9a873c65ea1459597530352bf58ab3a5a99a2f60228f67041bc96e34f774a6f5a905e7c378d5511a4b248adcb6d3800319e536b61826b7d36820835e10076267f28d41d2843d98c403761266d7b248958f97009833d17f12dbc991d16a40698afa0b598148b3a11a1e0a6a9b72c145d8f18330e644b1301e995b2bf8b53cd536160fa273974a45ac2600cffb8fcf591dd5f2892b6457856b22c9c03032e241a2073fd9b1b32fc8196ba8a5143708bdcc2b3b22775ac6234b2c1c9dcc1b7b4075787b3bf4140e63f22a2ba77864d7622a589538ca71744b9235d9a0b539824e204f3a7bbcb12022a226c61ef06e84803909c29875f6304b0a51d63a1e4d303cd3ca72b40031d41993ce076e2754bad197280a536ab2bc57b6e71a2f4898d4707987e32055e87d98d23810b464d7c1261616bbfe131b8015b23b6207a6db8a484633c0c861419806b41a75a0fa6e537110d26aa0442061aa1154c0c199459c546c548ab8a731d0d6a9c53812c68a9123380ae9e7433df31becd48133686ad4f9b72e374568023a9e691bc8261feda4c7d54400fa51c7e051160bf16b6832b842135be534a4a2929df9251a5099331ac1a9b70869c324bc6033cb1180cfe6c6770afc05007895d0d88a06aa734dc8b06d0ca91f17371e83b36db86ef772a302e59e8aa297f15c9636356f8b175830d396f502317db73f9ae989291795e4a10602f900f197a1baa0722326514754ab8db35b78f85f0fb74002726b7c7181154c8c44688916c1abb85800a265206f5227c0e6a847075e52b2b5d4c941c516846fc3520fec7a0b0372bea25a3446b0df22ae99614840b07a28fb722efc3f29b2bf9afa577e69181cb98698d308086a16a72300fac62f5ee0a106814e171aca405886d0ea60b3461c6151a5d32baa55d3bdf0a4c0efb356755b6ffeb3b7f0da4113f5bd2fbcc2c44a65fcc27fb17193f6760eb9826d825161b940671141b99c74742269252f6605ea72109dd831dd335b4f3c0419d7598a8828482470eefc6adcd51c6dc7a8b8007ec6ea33445c85f1771043840f25d58d12199088403de9455f3f1224de0869347c842aac95821570d803307836390f939885178d59bb7b16ec14cf32872fa232213910a646642d178b4a8772ce015154d00b70ab3f5c436802224b1f283eeb4671668743bbd240f30584b899183c113da34718f557c5b74860ff895d97628e4952ce5c6655c8e6a26bc5678d404a2c9321deaa2ce7790f5ed759fee6c8ef21ccf211517059934ea77b2314407f3b88ab2600d710237051cfd8055bcdc4356ee52e04f606ecf14d45aa9f9545978eb78651ecbe5d4b8007474bb7a33e9b0947775c15c4726dc8931e2a112d79d7292b32895cd654992aa4dc78af8bb4a8bfb3b66aca2a7ea90e6e9382efe807f09b27ddf10144c3c68c308dc2d808aa93a4bf1b51948829e0432a40a7a047cc7376d2267efb2c6de375eb3a442442b81208a59e327c3f765855fcc7a4a8b7199a304bb388bf072096815bb0a3863a942b6e6c952b3099732c8ae1cb445de60582bcae824b5c20d6764520bbe6ca3aed0368576763401b75ad80a9bf3029e268094734275d275276fb26cfeb88c7c605206096c5531a2ecb1d8a4406bbd636c15a0fb0b74eacb4135430586429928b8546449a9c760366dee339aa95c175ea8252046c9ad13a82babb617c8a443aa476b256e4b8b17fb427b887c2d70bc3f108b0b6c0121b75ab3ceb33c999a7b3a6234bc2b9941461d1887c92f131fe11a01ce399dc368706d50d5f7a09f94cb8212a1e41923495a14094079a6a86915428a6d8b4913a3a49b6774d3ae10c5f73c0c1a282a2bc8f6e76202e2571b19bb8f5b8ccc4e8cba0888cd7e60550871337ac862a0913a0d7ab38c399c486a731797cd02bbaeb42a8ae9860375b1ceb1a043f068f2ff7c10e241eb12287e2d08c31179716c93325c887ebd439eec6be6abc7e6447770cfc05cd4b9b5c4990baec89cef0517e94c293da2ffca46ecb050925572ebc4311fd383dfa04b477c0c5a319359150bc2020a796ba7dd391cb65825e7b6c34dcf097866c1e2aca4e29999383727a59620138db1d71866f1e2b01989b253bd97828e302fbb1bfce536bca64336d5b6555a5aad0e1b81b2b81bc72b68d573de982732a207deaf73e102b8ddbcc69e40388d6f632ed8c8cc9487861f5143ff4a6f0633edc810551b92fb80b8e3f788521acce269072da514a6cb314409c601409a1b343bb98734360263367b379c047949092c1cfd7004c770d9b9319d915a6e70a0a0106996c312d54d70ed46698b2b86c370420caf9a25f57cf7873c13ddc9f54e13e6bfb3ca90a699c8bcc26d021404763c260a0763a626d25882596c1c3072923e9bb53d8774b690d189662c52231ad3948b79924ac31255ce319303637cad8c60ed82f7a1bc33362632384ac93aa7845880d12e901cb70a567f2c99be88a951c94982870eadbc0ccd19ce239744c290e810b39bc3cb186001203b118f599a5952aa00c5915b6f0631ba8bfbc9950aa1abfd9a777e33c968941493f7134864382756124ed3acb83b0109732bd48a6863fd9ca85e739beaa22198dbb042744a529ae71d1bfe1181fe021112d39b9728afb37d96a51c5bf5bed1c8c64337886dd49401479b4e4790366941c8173bab7c63436961be7bf3fbdf22ce5dfc9ca24334fc79219bf6096805aa24ca71197e8134055fb611a79e489cec3a6 +ciphertext = dfad5c8d269799ff7ef2ac889956b32df137b59637c72e489e11d2b99cb926b8b0c54519dab7a6ea4f4f9a835a3a7a13452f3ffb3a46d35cada4ce15ac24807375e5fe1dd4983601cb528e19645dff10b4c5c418660e5b9fb7bb157c05f79773952eac21123d3a14671d04740a2fe00695af4bf7bac924ed8ed5a4e9ad8629f9f6b30c635ee82481ea85e1cece4895b8e9a071434f3e3d09a8b5480b1dfbd79860795ffe5f57acdbb6f1d649f22cfa9e5ae7e847bcc5e06dd8a0b693c7297a5fc2e1d10484a7eee8ca4ed26d5e4a9b31d50298b484e4ad7d5489e6088ec3a00810f5e612801e0000d82a15dcfaf07ed81cc11a05e592a95201bc8d8b635ffc86a6cb92edacbf36762a0f11942509885461ff515f3213561c0afca40ba0d463ceea8ee2db4507243f7339811292f49947359725d8bd92f3d5bdd774de00147c86be378924fa8a9f1e0ce13f83b4ae395c75d4f29732be51fe3bb9898b440ef200a6187e36b5d25632ee1b4722a0423e9d83eb81eb3a46434137106159f7a6ac4234ff2d779039803b2f6e9696281fbbec952c913d04301e1281083dd0031818ebe6abdfb6037b696a515a66e3c0f7f6f5d5cc247785c9b760b0560d6c257c96c5a99c536932c07320077586d2a578897bdd50f1c8012b7c327765bbdc9688530afc1b2b0ceb93f76cdd6133d36d70463d97488e4dabf47088b6285c36ee8a81a5f76a87399a3600793c184f9562be043ffd6655880ee4917a721746c973f2ebd1defc2eeea0159b759aceffbfd9353440396dff1488904d5a99199cece8a9efb10c8196146318f3862fa2c061979fac26dde4bbf1144322b57593105335095acf01219d501b054cc8edd2155899bd6285158aae4aa8e62efb4b2480e34b54e7fd9fc15c35378cbdeae749393d646e57701d06eada6e7c1b08020ea47e6aff5a5891be538055b80e2105607c83cf0e192b19defd93e6b86fecadaabd799485fc0aba454be3734ce9c692aad1cf59a8c542e326631cced5a5fe72a9c1cef2aefb10cfe9c4a1af9f62e778cc5d8ab7297bca165c2854beddd279bc5afc4fd77a4da4ac1bb0eb0ca623185e5793385a79214ac68c2017049642a3517cc70f0ba8bcf4393397355bc2fbee726afcc4d245b9325071c84e76b0b9353f56b18e2ed9a3f46745251fa59ea4a7fad3092f8421bb9a6f00820ea9096b373f7ebe937259c3f29dc29b5a0c7ecbc0549ac98471ea665ab6ef33aa04acbea326c92058ec108167be62e12df6470beab5f6a97d1bd409778d548acf880d994aaf559c1de66ad04858789aa159bf97b2d79cef3e33106aca85d9eadf56f5d0803de834e0f6b09d8b147d2286778480826c72bc077b32543eac4e01a607ba6c0c3bd30a31765892a2ffeafdef9464978e2d20510ec1099e858888504067c0197e3456009448027cba063a1da47f15c84637cb27c21079a9a5a1aab293f5a95aaac3f5dc0b08349648ea54c38580b5af8db6e568936ef6a4e84c41a4564ec7875e018822910772ed0d +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = c4c920adb44d07a485c9c486fea90c3397251cf86a0fa36190a00ab2b3cb7f4c3b1c30003a7a481923cd6526c1b49b658dea2519fb80b0c0376268c7d687791c247bb6e3058e0c79bc36c231cbbfdca70e7bf6ae2ff5554fc6662a3c23422686f1c07498d629fa92009e69353367608b84066991c695228228c260d16289b2a2670a39b65727b20deb8582ea6aa6585ffa808268f554b47546f962c64f857799a59e65e69be66bc81577af60e9268324466230cde9786633f830246888057b23e2c96ecab07691b4a8ab8757ae4a1ce9b767da3c520c826d457514ee0605b3dccc33906e43c07e920510c27c1ebbc75124ab96afe9705d0131580a9edc3636d7937b1f00365b0c82c7caa6c4c0cbcbe01d8bec5eaf4647a4fb2218951eb68109aaa08f69e2862aa186651427effcc10a42ca8971353673ad25949cf2ba60bbec218033abefca7ea35a85758863d06b47845108076ca09834be3b8081e525666b0a8707cb8e67421896c73436ac8112412e8bf335cb8188d3d9cc612559b021338f758b09a672cb387f13419675715e61559752a428f02096c469142b6c1b74c51709a515b9f7a278c0c96507b6ce615dfa647f085105734cb31e801c56da2ad0553807c698eba02587b51769a298c806b8d3ac274ca98a88f4a48e022ea065aacd5c8b3a37227f55c9d7288c67f5cc5e05a56e573fcefb0eb90164acb9363ef75fda42cc4db7b131bbb9d8459ae095631e563ff22817dfc38622899cfbac0d03b6a9b91a8fea9775e3b835ac99792c2ba2c66cca9b2768b07a9fbd471b1ec78bdec406437241983951d2435aaf30930e667d3d5c42a113a4e151a546c012f1b84ade126ad3c89e5c60552dc657b11a067182303e450a2629bc7b624174179b38e28a1e717030429c394389668455a4fa432d400978d5259e3316f8a895539b2730384c17760870f9a794b653715aa612fab2d2f896214a4151476f3fab01bbb50b4a392b45764db90095361a13b19b9415364cd3f392d20a4e182942186167ceeccfb0a7ae9c0830c9f48479270829d1776bd555b1715891365e7e6a1ba726272d16ae3f0b8a843170f0b9bdc304b051f2271b3bc424d1b997bb4ed757a20e2b57535a96b786b1f859592c870c24d23151584ba9958078458d2e6ab4eb629962ba6ba80a4ebe2a00273a1eb6110a09236129a0a6fd15c6ac5063a547a8408ca72c5a4762c4234029927c7992f1066039181b11fb9add5c7b24f443fd6abe55186c1a70c9ab0605ba4612ac6381e8d07642c24a6d63a2f2c7957b505424dbbc9e220ee70063f44975a9250c6116ab9a15c3b15847356b7e947339b044177ee9a98e6a00f8d98da605537ac70c677c2616d4c73ee72380dbc247e00bf07c3adc9452d721701a4b938a10b384340d4cbbb0a42219bcdb6609b4ad96e298c949aa00338baa9c34a3a152b956a8ccb90dfcca88f9bb7903d6c210f86d8316958ef93570ba100ec5753e1ab331ba6554873680fb9f03e3aa7d243281224f93ea333848231d024737a80696fb0755e967078a261b424f1d5304ffa934ade978a6181d5754cfdf4b1001d3012e220338f60bcda6a0f1b857889c2c1dc31fc0688ed5d78bc2206e2215b867428d361549719a0f32437f32a4a72a652a5acbb41842b42dc9b59ee04ad950adaec019df6a2a0ab392fefb59336b576337a612509a70a543f902be91e5331148bde43a23c894c00b67c7f9c02e9a21a304b46c92711dbe6b023b054ce9131f048923175c120ec0c381465897dbab68fbccd0494eda12ad17e7208ca74564065cde29b404bb0ef7c265457a49f40bba27c436c1923250f741e821cffd690ce9d8069a106d0b446474b72aa23a6bc5ea40ceecb96cf522c9c3bfe4ec39e6a64d3166b9d381aa173954fa3bc12c015fe560c9d509a938d09658115415c14cdd212a427c13ffc618fb457767358ddd21cf131aa5e18ab5d997026d3cb4e9c595d405b8320c98d7711297817e6fa85f8a6cbe4e7cbe31a95b7430470e95365ba22d8406c1dc1195d6d1b0db9360366129e8c23516f1157c6163f59227e763c63c709fcec5917e653376f91e8d081299b312efc036d1498c59bb43f466948c3307a47a1701b292bdd5c180925f8c65b36780b50c2695221b7fb9ca209e0b8fc1eb02caeb63b1348a463c195273079e84ca4249bcd6c84d27f309210aa0fd8855354058d09b265d0b34dad44a1bd72ee1b101bf4aa33e2bb5f04375113834b2eb942430be993c25d2d54ed41a38f52713e3723306255131c41637a333129ca8e8392e5005b0f6940f560555fa500e349b342f7a0d27998b1aa70d1518b80dd2a0de6770cddaaef1dc865ae7123b0612c5f0c19a8ab8df4006162447ad693c9d93383b0931f67c84d92b25e3398cdf4a3daa2aadb0b74e99a276316b358f5537a0f37203622262f791eb803479376e30375180a227ae894bb24496546715a530b936f99d008365d9db1fb5d2a89b2a63e19acbe90b8e7f615f79f2cbaa9c9c175056471c0112860449e6783a69a462916fd71275015c128bd41fede8164a410bcbf1392fc47975d017b1cb188d3889aeb449743bc16505698ac25c0e02c92db2393d562e9d3197ab94cb70b110e80959bf48861190774ec9005757784273c8396210e3032adf4663dd6054f76b9d9af118d067241cf6499c052258561b31b8096ed608ec83385aea6d24dccb3000a4701cc343658353192f764b7c000902018a744cf2c4c5d57ced96880538c2b1fb466d5995e3f7230b99076722baff267f2c625e3109b904c09b1585ce4ec18322691c9b083ac65bc27d731127360a6329182c2756b8e98765cc32d728263aa36c8c68a11652b8aad1879c437ea3fa6b81723c56fa880672c89f982dde0a6e192350d761452c62b3bc49ae0a6900b7267f6145ce9cf1bf2bb128a2c6c6d84182e4e8488016cf3fe773e2b0b8daa078f16a032b2bb59e933e0d1a5b0af7c1e131289f79700720044e5b4a23033459472d9bd451d4acc2539011ee79a76c4005997c119093282e09a4c7ca9794481abc8725f14265f2e9746a106673f87756834a694738e839beda599f51e6170c9a5afa2120f3532654e3abbacb58139371db15a66243a58d51309b33acddb42e7ae59ed7f72af354c7cb728160636bb971ca050a8f6b41a13f584aa1a1bc2a43b00caa1fb20bb594064e2ff2091e62aaf7b4bee4203d082c6ba6e66bc776549e9419dedc37899b4d5c44d38654cc635d620b8a1a98881abc5f26457f4015979b879f2acee70cfb1128d242ec8c0dace45d172b95f83bf4c993d1ed571ce7ddd0a8676f60fbd61c1d49688213a953a73ff332475f2e44df9c77f572e9cead0cb7d1317a66 +ciphertext = e74954216a08f66ab9612f05ac2551f16201e226753d4e719692c3ff2be1099d1ce54d0f78aafcb9a8d9113f8789830560ef2f0a0620f13a6605c786fc9d7836709b4e333c6374c206ffd63e88897f495d45f59e3c48f7114780a809e8048a987aaea0b4d2c1c565424012f3465800d609e77728aabc2343a26b64b9ba9e4ab6413800ba3b7e250ce222e04364753dccd2ed1d4987fa163ee75f5e28eef35c532050e3c3e66f68e2e8e85f8674db0080054c9c3aa68bea140e140dcc482091fb7a2b75dd452fbc50e1a9e46637f0820856d6357c3c219f389eee8b60d8ad970b17e2372ceb0871fe73dcc0b2884ecfad7913784bfbbdb3815bbcacaeb9a88e9d44b6c1bbe614c5c2ba170a8b5c3ca2f4fb23950c28f3f4c9cbd04bf293e9f5274d123a706fada70ca228fea20f2234d298e1b56249424618b7bb8e67b1b2de85c0ccf12253cdd97ddd2689119491e720d4744a6ad220a51fb0e522d85e2b8d85d2dfb23d3e457a19da89027d3eb15a11a618b5bf8630ad533f7bdd5ec141008441f623f6687f345aead9f7010dbcd251af350b4aaf49868c77bc0e15447bf42e9fac667895b69aad5dfddc5ddc4b522d1ba8af17968ab6dd9ba2e41c94668f87cb00516150497e807a90988d1e70b95e05246b9dcc35ef3c2cc15ad45ede2fb2d0e07a47ac6c02bb9eede8259193f893ecc0e2682040b19a20625b7493693bc26625a4c5a136594d8e1ce4de13eb196e019914f229cada7d5c48dc2c3d6a1524bb383e7e3580396119af69cf817c8debc0afb67a0bb39bccdd48002fdfd5020931766ab681d39b1bfaeacc5149aa8a7d44b6e0574eeb427900b825836ca0659ee8ccb0192f8c86d1233abec6f63e8c0f601cd56d1ef95d96d640106258c73165dd2d98d0025d34cbc4e5eecec7c2aec3280924877b5b105bdaab4b3d18b9b33d6fe8be22c097a10b992d1ef2178e9570acb665ca1d0f63a61a21c3c7bdda23bc25f1ffc40ccccb73e67b22f3361f20844e677fee23111207ccc0d2bc8f8877a0d70e8faa9e2dc0c59e5005cf90ad3708d22e2e26bfb14c51105904c9bb7cf7d33a45ac030532f8f91395f4d8e3174c63b96cf12df1839e9a2fb506ac9736c6a1bd9b6fa1926fe0db8e012022f795c8e70fd35c1123eb5eb47c244831f0e616e7a34681b1d4a67a57ac1a7561fe925fbbf3a2d1f9d84e198fb9c0f175cd46a322aed3c9c24b08a5ea7095cb10bb1189c4b2f1fa4c1ffb586f4a2f73dbb29c2d232350890dece63f1730ea9f7baf4257ca7f7f0bfa2537b10626502b9ed4b4faeaccace898d2bd56999a7d0b18e34d553a8f86d908a23b8b90c9b76074000cf9f1ce78d0db7e29ce7407ed97fbfc0ea879be1083de5b14960ea3ed06f23ba7944f17c06c594b25c5b314b482ed90c0799833b2e7bebc619e386173ebc50257be64868532d301b5db07995514286eef451ab4ff3a8574daebbb97fc225cdedaf34517582568b0c2e1c59ceb0f97509f32856a63b27e42cdf01bd47f902cbf39b5c3 +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = 285caab0ac5386daa20ba59fbfa2b83da79a106aaeaf9b741a347c66d65dc1b83edbbb920c479740d703cd54054c6981197a17f29808ac595f1b0c514d2bc55b6743de913324b18f7787b7878324cd434fa63885e9c221f8e72436f764e0c88ee8214c2a623be971a80800b84701a44fd5c1995b5b39a7c213433de2ab48a7f52cd6b28a2048bde0385addb9bf194a6934396361ba98714b7a8dc56d0041290f857dce0aac01d2928e875c94c22984f041691b5125148590277c7d434a32c30fe5e05074393b86b43e61542c3554648fd09b3044381a8c5d914935dae972913a42f47715e44b8b00c81012675467236e6824a8bbf7a8279597d5eca1b721203e6b2e20f9ba4930247598b150a24dfc3119a2d74561115df0541ab959ae14302ca91ac0c7292073052b86fcbdc6b3c1935aa2086b488352b813fc617b76b2ac06774b6618203a4e08833078c41b3a33a0798a4fc0fb1b6733b8c4ccb82d60a06da84a4551b44a70030fb56411da6bc5758c70b90cb0024bb651ca6b25850968b7bad0b74d773ce611b204f0c5e1cbbf78426e74d42eb85c01e5a7a497103973908b1e9a4654c61c37309167e4b82328363eb91704ca68823203829c8c5b0461bc0a024902391ec6370e8990eca8b67b11460a30cf520cbf158818f5536790d869be3546008547bb1b28f60aa905937d6818088c70325808c5c74354f0b65989709bc76a05d2929856a43867089ee805b0dcaa38cafcbdb370a0893708abb12aec9c8256c9ba6959106698440ab73a0686956376611290b98b38b58f53bc1d9b9d3d8790f1ac773f9a0befb95199343c1f321f15ecbbcba97fcd358dc832c97e0872976211867228c3f327409b7ff2078019e1b88612cfab807b9873a74c4633572ab50407ce3360a65a8a5e431c1244749fb50a2d64d45afe2a27c36216389155ab2b126e521b4d323e568a3602354732531c70d9a348403fb63144e10c34da216c15f673e3ba7e2e1760e49b74f17668ff103c9c3c7d22e8b925267dfe0b125436443a194eae6042ccd67ba7e93b4d81cad21c90fa0a25eb5390bd788f35dc10d1448be135b51794465bfb3eb10cb1841ba7fd83574177a4264b3b9c1700433c906b1c38b93ca4fb377c7f1180d823a9d9735b7c7707501b3cbc50a493f87a541c3cb3573a9fa94f02e0a5eb80b5b4b2c84c345ccc41b7688077197bb993ec588538738a9113610146e6db47104bbe8fb775aa8a204d6121bda0754d753303a5473ca251ba45655e449b2957c718cb48eed2634744c11a02a674d304830a2cb5ac378b073e539a638eb0687aa6a3706194fcbc68c7e80c6be09ced00b5ad08457294974c9419b10978bd3a9a0c97ce3b76a0928c34f0a2be80b24d36c97c46928ca823bbe751b26e1abbac67469dc1cb3547755e7057ea3a56b8041666d84fca9aa4565798c77694be45cc91581e85eb5fd60c71d78094aad995fe27a796d27ceef8118eb31e4279b2e67bb7c12b65cfd2551076130831859cd7605e223a32e586d4737be543b87bd2494a4c92c51c0172a1b554b3651f70aebbf89294ab1fac564ec8c218c3d9239e40a1e0b9799a07935e8133d26b71637a091d780fbaf299d56291d5395d17c00e998353b89419c6b607a97c99d058843a59428d400e41a32a664a9c2759aa271a586457baddaac3777cc19cd762bc48948d799245c99423bb4fa1eb829b04b01a6b9fec724f5893a859f427c93213051c7ecb6743c9fa4ed93ac98ea0a50e1a5b52fa87ae137bc947ca2b03a8eef6927c0297c99b9010010d541a6a3775b89f82b33f9c1d6bd8be6db780ac0194c3947e55ac232b301bf831722a671860cc35d51ab441b846c3b261ccaa60d2b25792dca529b6be20fa3c13b81ab75062ff22613d3882a6c1719c2c0374c84db00a1b50677c7a2b40c2721a86ca4d548b50e4c764e2d004838cb1dd0cb88407b3b49033d2f37d15089ce2ba0b24dc5744b7cd07074e7b2bbed5c1582d019dda7196da202e7adba5a115591dba791562a8cb57a803fc99c9e57237fb0ef56996a40a1ced86813e4b5a675a85d2e26dc09b2bb158510eeb473af23c9b549e298b1a2ef02383a5103e137b43105d7ff40093a688c26789383c55f3a064b8a41d51e057ac993f15d475acb6786ffa3f261949e8658437466663f543c0d4597a39204029691bf741c1f14fe57a5f45967db3256d3eccacdfc025627a33896465eec4767f6390bd661596f965bdf25f74ec901ad907cfbb8c96a17c2dc8a0212b00f8a2b9a46c26f02c0c647b7cd8e3328ac1849b9024f402bb294a0a6e24c5386182752c49970962b2d2b47da3991444c082a2cd10c3a764d808aa94c601ca89ee5ab8791038690b6290b91b9aa1cf79a9363dda4fe4b876c379337c5423843427e4fca39d238d152459a1c5a4f2e7559ef4ad5e8701fc496ccbd63bbd2046fa151ea1ab2ceef1aa44aa34a63b43a0e4859e831a4dc98dc1b007bee26ff5336ff5bc87bc446ba9e16dc74917bd494945579dac34cdf91b10476bc2a8a88af5027d95310bdda047820798f2a806693021e7907dda61b613ecbae5b1a0e57117af380f053ccdabc86362334105fa6dc45445c4da56d55c1ffa0b1f7a69691b673b68a1b1f82a4ee708a7ff3b3b10ab4204d72de353bcd05c0c9f2745e307b679e165f02cb7616b838639cd746a0134b3a1f7422665f69503c4177a691b9b965e3ce8c303d02c5e6caa095194ec12592b51ab17f56fb380305d364582159fe8399f3eebae9b11a19dc29e58869415f9aa590925b7c185c93774ac91589ec860113b11fd1c5bf8a74351e25ad5cb89a965238d056ba1993646e37dee30cfc0161302c379c4268c49f2489b057abfa406bcaa8cd53904dae8c3c2a3a3660ca2dd073e47f54f7f85ac9196b61c55b6e4660a8418a384075d31eb4653fa271a662f5c1a6fef68349579be243a5d9cb6c3a2eca682b56b0d753a44fb2feb2a83732a83cccb7626ac2720921c4913339a5421ebfa25af7028a20016849484bfb9439feb837f355d783012a922204086267461bfaa3026f397332ae358f2a55f3051c8fb1a026a385f185ab7927b307291ba7c504ff3d95ede5b1ad3e471472a0e1777aae797107eec70532b6b8a1a90e0cc6cb8ac8980fa4e21c7ca8643b77859216059935284567c61a0b5555db9cb17823024cefc7edd18410892a623d07e855c608a098b36b7748fa9b764520878fb8d6f4571e4e74a6ad348ab45bb9cff5177229794d2a59603e9cd50f147e36225724a946774db2dda42ee0bff8ae5fda93089d76dace76385618f46d74d1da70d198ab3cdc38ec3bddb27231c454ca335d9a4df69a925660c5bb6cb34eab79fabbaab +ciphertext = 4b72363dc9be952d09f3a3b7df969c76f6b6345f1bd386e7f5d4fc372ec86f1bb3ef16e1fc32773dd274586a69c8946d3a965f6733a9bfbdfacc986825c1fcedcac4a8880a3e0b9768c81dcf429f6e092d853354af4c4a532a14ff0a2142133f43920241de89c87aabbbe6fa20c10172b84cef53277f97cda9bc24b77f4e88c2bca0b53ead2b8548cb963dea82242280e1852f0d1902b1a662112bb29dfd50a0ad3012a511e69029e7f6931a6d50c8fe603e7db1d73edb92bc3f1c0c834ad87a259b6620b080c996838417f3357198ef7c3b42f4ab7c270a04d5fdc208dcece81a03eb1e66b41dde74dd22c355cc2be0fd8a41524348d934c8ba2886d1258e3ad1da4e137538d474e0415752b970fa62afc09695f0f178642c599c0154a16cbbe2c2843b4fec25c6583ca73f54fcea017e4c69ba71c7b26dd3420d4d61549956d2553337b74975ddf9ca19b7630176879e0e0e4b43dd1a5a892305a00984645135c575f6f4d7b3e6ada77558f50cb9ada4caed92f6b0ae7dc4f6353e09efdfb1b85808a433849849742f025a37a15010d32fd132dbd1d05a0e7fda0976dfa27361d2b75c41b23745e5e026fe97f08b1479b4e41a355160c2ba149aef4f929638d80e81c401931bf17735971dd92537384bcbf12a6ae5207aa6b6afdb7dca3f5f4c0f826b2dcdc785f11cd38792c1debbb75375323f3ea1847ba9d9c5fb8fecef13a48981283161ae70de4afcf681e4e5cff3b3dce017639e14a2cfdcc977a1c772403c13d22386e9ca4061e5c905234da915d30cd82535e29ff8cb7aef918d14d1fcdf280ee584cfc00f0d815e13045b466bfd191276a2c7bb33a0015599b090249aeaa711d822f0deed44da03f231f43cd61515ad8d1a885c648f9771df0cbc77d12d9ae5f2481f2e24897a18e4eb0db9df4765e4487fdf3b369d03e70078392cf06a916b2054ad08d98a1c05ce9e6b3c0f38c4fa631205fe0754e1375b1e373127b68d9a773fd4cbce22f28faa4e1b740db390ce5c346e2d8802670208744f5c8a573d130485b1f7313f219263053a46dd5dc2972411cab5a62600be21f616a987316b411ae685e34c61807772e274e98f9a525cfcf56ffb0a68be8e9115a3bc0e02f793067efb3220d3c89655550f78b8b11fa95b3505651bb747d0b86b55ae7023633fddcfd2508d87456ddaf788fdd11ed73b46c27fa24bde79cb26cf77285253bc2da18cf0126e92a7ab7658289a7d306c0c6d60816152ac9d66cba8dc8c603c9cf39096d1285e8c277a7ee5272ffa789eb1d70a1ab88419f5a48e17805a8ceed0999724e8a93d763f514693fac9a525243f9864eaa4c1351d37f9bcf9c4ff1de7e617e4c575f47945ed3711650fc6371eb09d0edef0e822b46446c12bf410bf3abbeabd272fc8b6d3d9ed57164820d33599652fa1671768ee76b95d6e1bdb9a121aabfb234bedcc50134eb8406f415044e904064a8e06ee6c7cc44fbfed3f68f79a75cdf38b4d9d06ff9198e7b06e4659d9e435011a4a40d50d223f05 +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = a21459d961914fab4d882c9172971dd030ca9fa2b8c8c24aa3571595ac02a0ca41b50069bdd6708bfc8e291baae23310d440177837c4c0b43e2d640d900c2edad5c439b99187b190a9a4ad73086e9be2cf22682d16342bbb5b3794e68cfb12baf01b788f21295aa4b4418ac13439b2b224aea21b98fdf6c96a6aa33643aaaab016f277c9a4f6424e9b54007533a2f3b2483745ae160697eab14fb8aba44563c5259c6d8465bf49a7be9a69ee85b93d71271307647b68a61ac8541784ce22ea8d33f57df3d4569fb68ada6692d40104a2e221770137e2273bb25b337946bd4ad258e73a64789614bd28bb0e247cd3d112cad0c8fc393687cbb1e3657f71fb34543b8d83050f2cd9c11525bcf730ad3eb77c2c722e04577ca0c09805a3af6c68c2c73254ee0a100be92318e011cf51a3a3eb003763ce7847690ce1349774c620402c8232cb98d751d22631d2bb4e99562aa47ca461f39f3f371e853ba25c78462d48053175a4b8aa87e9524ab3f24057f19a7823aa5ad6a91f7409b6698826b1ba85f387120c4d1312974c82a8ff50554da032d013860ba1567afc1f8ee63dc8347d5f617c1097a5fe085e01a5a0dab65733eb1860346bc6441438b0c0e2e78d362987da746a985b36394064f4fb645ae31c8a2404dba9a1831011c6a8b299c1abf4fa2e394c6c8c5b7b77c43859975320d5825e7650aca90777b95e8d4a72082a4136fb9f54f4ac20733096221ecd970d669469118973e682999f80a871067e93e1a5f2911001a41aed86ca65884ea7a8b89a009b01eb8b62250591741cdb99c8e361411ff947c726bfa419b1b527c487e15489f5895e7206c4dc5f6b9b76bdda20b2965f02f1300be0c4d9327619286a7ff86d254b4a28b0085b19b2a113abae5cc7073a8a01e92d77b8680aa78055e88a246355045acc45327970034ee28a2d997941ffd54c13a95e16cb1a8c1917418291c7248959c0c361161c45e9b9ab5124c5c0315b86c4ca5b6f1a4c0c15e91f5327a2ad7c90a0c3cfb62832b20ccaa519037c61008a862c34eb1a8fb5208f817103d0431ae17729863a0f9b61ce2648a2a91083c58ea3d35a7a438ba4ba6dc187b4b8829aaa8530a3c2a89e29217762affcd69ab312be7adb28ef7290ff851564c93210f793c2c80c76f6958266640bb48f24a30951447c106748f7d64f0ad157ca2a0acf572794b1adbb4b4658d2a504e0a7cd3230f8977f46ac9a3dd16655e953f8e48c06391d07c2363a2c280b693fc232be7aa073f84580bf1c5918577ec3034c66753d535b1d40f78372956272440f532230b6175256c71ea3bbc1f9b88208a37d3312ccf6534e005355e4fc1d9d658d4b457c9e37893cdb3c649a9157c99bb074496697121f97512bc83c536a81120c071b6a95a6c9420eb777fa00981c7569b3752509c461d8b48055c1285593570f0586cef488158288d962206db02e38c97584e28a790b28033b784ba4ca9b8073b9f1000c596195288a996c1f96d416c0bb53c1755e8afa7499e88577c3513e4375a6c10cfa3ba60bd6486d29ce25bbbd0dd26153d9b8565ba1cf912f9f0c4413b76f8d5203ff67cbc774a16cfbab0453a0410a5a951bb45fa30b3961c4b73b278e481c49e89c3581a5000d83d654851cfb0a65293d13e31ca71756164c5672cbb7991ac2173229ba26948cf834e65a99950bb87ddc050edc0f77c98ac2714bc7e6b64aba4a1f0a4463b22a810a2986fb37b667cf230482f51b3a96188357e01bf9e8b03518a577c759649827ef1c3aeb677413fb61ca620dd65262ab6b60460c9bc543b051483d26ac90b4374ee0a157d7797aad86c21c534610d93692b84b26a82b0abc9bf105a44ab1c9c332871ae55d0ce62c20f7a290053500e3b827150cdbc00b9c314e685ca936c26d6196c6f5bbc05fa1122df62e9d484ed572a94096c86d49655ef26d9c47582452a1f334bf0889cd9880a79ee4aba2022d7e46b308ca96568a7ec9472192d175d2cbc05257897039bea039cc3c82532a0b8454739b0ce0137d1bcc892704fe01b766354e13777e46282c4ac144b2c8c08a8c6855d4971029304771cc4f6744407670e0a489048cbc92e05f5c1667b4a71ed628c01c34891208b7a1e24d6abcbba0ba8e3aa5b8ea0a3d79fb0ea9119c2c84c9bb5b06ae5430e73a0c31e15656b7bf3a1b40d1c88704b85839f66fcddc322047601da7b04a8950715953851932cc5ba5a9cc62a75a5a84bc389218161f91774682643a01539fe319fd0a7b97855b92d1ce42e0aa28048aa8a00cc161ce42273a77d74efd60a646775bf1c746ba5c7e2421a5d2ac62700066ab283d5d299c9e752760e13c05b315b5f8903de78bd29324e9386cf792669a4cb8623c465d0915d33314216a9ada34a9a9341280592d3336938a0926da099f9b01c9f855855302662c1bceaef673a6bc1344451b1c8453915cbd1e33060cc865d773074d5c72ca36039eb949fb9490f76c634fc160b1445f7f27b64f4413387811a10c26fe6c54adc2827d691fa18b1159814110000d55f78f80d152b25b47193bbc7d51b92d8010c438bb6318086d5c5070a75ed21451d7cc4a63d42f24986e476b485d36b04a47c9d754bd841ba39c987f8d87035a10482e16a8b1a24a5e5cc28bc0a28d42320c89149fe52e95305690ca00c3d13eb94530fcfca2cb5091310a44afb60f013c1419f43cfc733c5f218bc78a528052065ce85f80cacc8fb4a4a1a30082a47d40e84d0b9ca44418a9a49c46e5baa002376687f81c95b2cb9a1369020968d3e9c6120444c5d126aa03485d2a0c038a7cbdec24aa3865ad0073454089a31b302ddb040798ce4289c00cdb1285e85414f4342bd63978c723bde75b91c708b4c318e626cd5598a9c3390ea154ac4d91bae2b07935815b76f566640001098882e0ac2a81a641a2227572c8b7df7705a0e24283a6acf5536b07da327a73af1ad32bbd80892cc4113a012332326eca32a16e04a9b897323ca3c817b65272fcb3c8c5570d16323d94334594c6fc55c372a325f3a42ded47411c8527d6baa4828368eae4b5471687698b89961b6cd7c91d8e11427f3abfd6c5c67169629de4872c253e45d610bf610a8152791fcaac86b4cbf2fb485f8538b851bcc42b13ace6ad99937549338f4cba87d84a1321fa8527f097aa4044838178f6bcad1c718d389729b803726314ba6ccc3e7f3191d9a4ae1da6a814401357428a4c6a7c63116c05f1530a9c2d36117a43207ab469d47dc42d652fa9206d61d50f75aa6b26e9230a35c52187c560b6857ebde38cb2ffa991ff8a1d5110a8f4aef41705484f7f0e139d1aa3e77dffdb00f32bb6035910e85cf52db3160dd064812d3af252d98287ae1d3bf4a70b8289466a970ed23f2e57767c221b84e2aa0eafe409ad00f8c9b0 +ciphertext = a32c668884e0a4f2ea91c2c0f18fc7c6158532697c4ed52182b9a5e781163cc6388077178fc41cd77909e1929cccf1b14585a8b17131be20e9fb4b1a63963f77ce6cd35d3e8755ba8556b4cf83ca39cf370695bc960b436fe94085cee21b132e039bfc7f7d1d7c6ac287422e775e16f244490d3b9f8b4c42803af1edb6f88fab0625fb4f8b81a13810db43666a4853d6c32010cc6b89fb5c46a8d55a9703a2edf2ac16a70479a95756b2d0c52602912b0237b3e8dac2ed54cdb1efe9afa59133435e408ef4b3100d4b13ec36025d7dc1678c4a02c74a1003f00db41389adc61db85a066de8791adb0386f99893731be04a2bfca725bebf6f95fd247587e6f29b879712c8d96d826faee91b868187b253175325d6774794e12acfde38a729c32a9532eb2c606347e16c9bf057326da26cec7958a5783093b2d8d0c4d3a3a7eb56247c8d94d7692f9800d2eb1a67aefa98265c29ba67aa536334bc4a970ca42baea00dfeb2a1e06f73b88a3eba0565d1568c1a8065fea82a156ec7afd52d3ef094a8ea5566006b081dd0bcfbde612168ef50e2d48c1ab8c607642eda4643d85678d9717ffbcfdee9b6071c1a2f98f38a313e91036c2d8a99895ca3cbf2c8404e9ad5a8d5bfc2cbd873e79d8053e6723f6cf37e1894d0ecaeb09ac0e7f473a401f240870cc7d277729e206d0c10c9621b45298118a8c268e46503ba707fffab13d9a16ee7c0b864c0d2fc388223e0fd0bb9d8b05ae69773cdc944b58d95dc4cdc8dd09dce9eddd6a3acabbac3e7d2b75581441312de3ffcfb62b21cf8e9bf7bd6c638df0c4a340b809174de18c056474bb543eff6748bf4752e0d054b7d31c4ba00b66eb628eff2774179e02b2ec6eb9cdb9b5b54cea3ba49f55acf9f8da5718afaec914abc01805f76042cda00fe52eaf7cbed30a066d38330a27a15560beae021b4f78f24ca665e3efef69ba3e01592bb12fa65dfec707311345b9908ae04d18eda9d0abfd69b93758583b76e8e79e0ad9701594d64d75eacaf562f4eb1287b69cf4f91297b60c677a624f221561c440bc15b16975b5a98d3e10b3ed06bdec4bfa50764896f9f9261115b9f3fad309322c734a26c745f9026762490571acfa3fb2a2c9769906353667e850640797323c373e9d9758467c9b57f423fb70ef18e41116b72f4d1df55fdf99427bae4bf68c336a60fe861cbfaafec271b7268eef450762ad7757a4ab0e78fd23831652bd21051a53c0dab1bc1f573eae61cdad2dce9514ef53e111076be3ca502aadddb2a7def10ff1c96ac0aab76bf82a8330eb20837f806b40bbfe864d90dea74c9692521f2b73ac77d422429b81e363570a8463f8ff8bcffc46510fd6cf631380ba764c7abf3b0282046aa13244443f1568d036d850942240544fef6b9a486a8ec81199ad7895e22da8be8ee01cae87c4b84cc5d2105f4eab737554321eedc077540310a7972e0258a66c25343d7abfb4c81f84455ed0a27172b45bc7d6fc0771db1ac8d1a088293635ea42e25b0dd81201fa2f2 +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = a3f43bcc938fce127bab21ad82a304a1a4290c8b2ad82245c1606d6ab3b313d853c6155cdda10f1307b9926a404c777a6470a9321459eb5669274954ebb6748a67b716083dda13bf873abe76d91b3115093e8144f575513aa80f715b349c734c711cca52b62dde9865407871709156a49006ad2978f1a7654ab61866536b9ac5ae095a9239e795301aadae4b55dca5bc5dfa379db805bf9327383324f44b0719ab34130b1fdb639a93338bc10b12b673727674192e84ca48456194c7375ab055f56a64fff5bd2408092f6803783b7168224045a989bd19c615a7825f9cbf8250c6738c94ba835bc2252037f38b9884234052afc4643133e835f5b27e4d2252afe319bd616bfc993bf4bc9eef327f8226a2fa8aa0f418495ef96564a3a80cf4774d06813db54f7f7457199711c63c0e0fe90c4aa9197cb11a75b8783cfa09b2ea57f8bb70b08044c658c64ce82ea57701e121add0ec8cf67561abb6961226091d2370f12b5693f750be704696a6a2b1c08f3b5a29fd883fcbcb58a2010b159c48e99bb351c5b08d3c078d2b34cbb7333ea72b89c1a002d01a66c064507b5f91469ed7eb09f1120f22b32ed308b48a75690c4a43afb7a44b4c7054e797a6d43e6a63c227e56dec43afa73619b5300001e5366145162472046e7401f05b3f63c9a2ed72032cf33e90db6740c52ca1d17861945181061b55a18d0fbc3b67c74d0a789327f576f9431006e5a4ee5a06c183329ab2160c327244586500e4cf90739011e1689d916d4a7807abd6495dfba715323464ecc66e69470f733c43e856fd594f32b06a69c4bb70793263c76605dbcfffc1beb4c4702df1a9956c2857d581b7f122f4169dd6c00a81169dac8cc43c79320ed685973a79a76548669b4a7c14af7a71a802d852acf5982df6518ce87b086727cd9677163552a6259547884ee1120fb1a210b802013b956816ab31e747080a67cc5f013c9e424d081027d10185280331671c1c78a90f6e40450786895ee46786c90c22f744f75b1150d97175e4a48493bb62e6927d340da37a324d02cc9f911eef4cc0bdb645c3c09f5d511272ec71d3dc348ca5bf52567f84e09d7a0073caba497377bb16a9425e6ca0bd9458f8da37e3d2185b2036056882973a332f0b705cb258d579bbc6fc4908575c4bd306ed0103f6a09d05d410c690b8d12a08a2d53757b1ae5aa965c0c5c7af93669f0b17b4183b834b291e119ebc8713eb0a09380c54d96a6568751a2083ba0fb3a45e4bb91b77613cf9962351a48086133d1155881802df7cbd5c4cb31b71504631c417bb7c82f883fec7c246a97563d3c4d0d8a80cec9e261453ec870e7933177799a3d0fa0d313794d1191de81664c74b45435089400287c4ca63e8676ac9a2acbca426dd2064cd808cdebc571ea193eb72c96e17a0f5c3b4a93b2062b4381d054af0c5b60ac27698746755c1943f2a460f67a601067148e83923490690b5c3e45862a36646d7593760e9cff0ec36e38786f995a08719b84f3795c5da4539dc93ec480e7400a0e369a0e5514c6f370ae0b9c70636161d7ac03234cf09d537903ba66321627576a76841ad7f69ced0e478f5b4998ccc92deba5540a462bd2807d0d3bad1ea22a45b6eba4cceeba4342ff7ce3c20150e75339c0c60130a1a60304843aca576993f467ab4ea9ab8178506fee531f4b154aef995d8f3cb4621239fb763f3b91d29688cb1886539265c7a364490aa2400a41816daadc6342ac4880bd91a02b04b2dc44619111513d9194774d6b5baa82967e162cdf239c19887efe416b46258deec8ec6a2b6fa5c5570f1372250c9e0e7be3480cf4c42a180300e106445531cbabd735cbe11a0cd52b4ab8511389bb985a0a82f227ec90022c38b27d8494de21696dc71cda717a8318bc5f7068d7b70840ee390dc523a23d41cd37955a99c253427bc4dca4506fccd75eb5acd38081096b6f1e447fda10123c8971e06ab28330b0116454ec28926eb448bc0021e3a9ae8827561ca87caf8cf48fac84053a34231294e8bcd53a9cda27b57512c1a4375a3ca8c124ad403ba458a831aaff28b67fca09efc8cab6ae4a829249389f929af70a9c029910b21ba5e18650fc37da37a288ae1083b7b6ebe80a302b43bd2a08215ca49954271be98904d465552027d644a0f5ab2910329a3ac65902f9858c8e94342a8bb72f481d91b860bb3af81c0acd8657f91e82315c385b759636b315152b81e9649088b79439c641577d3b8e9e3c86f7cb95d6bb98850cfd06bb5ac1371f733b8c63071a5a91043d92a116272ec049551a9aadb2155aa861819986bf42b9574303aaa766ae8389b6dd1703eb8b3f2687c83540ebcfb0c5b04bcef3c795bb03365e127ba4506f902b9d0fccab1078d40ac193d0c957cec5899f0aa57c179d1402295857db51a271ef584eac42d0fd011550aa239c62854562dff30746a9670b7bc993fa92bbd772f533b90ef2480f80225606515c003beaf2a99be196cac962e0b4159fe9b3e821bc0b992afa3e1b0226a26f08989752731a1d9810348ba2c267d2a4a289ba339481089afb582e144ab8fcb19e9f4850ac64974574918e403ff8177411275201980822a3afbfca266fbb1f1992fa031b38d1ac737bb729fb751d31a47c1eb0785518889eb3fcd3bb620b85ea8f95ee74c17bd2a9882c90df92989d597350b660aebb314822026788458a2d8656c69b36d979b3e64c36422aa94e236ce1043a47257031cb54c61548b2c56730746b50924eff75205087361084cd9c91bad3520e1c3c60e616999818e1e2b0a44d448ad772b0f03a2c2f72890fc6506e037baf9857e23063ada62fe793d92615e6843796b067019005a9466661b7bbd151b971b27b9c3c231f7a11df04c5123730f3d254841720cfd5a3ff937442ddc15dae3a9267743ce6c5f3b0356d7e12ed755adfe85c72a842fd81b138d33ba9ff9ad41f62290d29236a7bf21a37485a43d7c29babe431cc78bbcafb0395fb5ce987a1a812122d3673cf33549cca9bc8724cc21d278ce6a77f337a2a442556d0994e8dc05a42378a6d78ca817cee6b10febe9374eb00a7381750f002dd814124faa54feb663fcf0c9aae202b5ab0842ba3d85054c65dabcf7c3155b97cbc7c334ddf60c18f8c5741342aa1753e333bf77198f7a53b8ca9253f699c8bba269215491f1294489c00bfeb31fde11aeac592b0b8991807772c2a83256793ecf73395ce45f2767062ca1962b361dff5da57a13d80a7b706f916150682c2cc499658f1bd4e080463414954164e6d6407ad0c5f87405aac595a51ac4db0856971b78625a371b667f0e4567a8070ebf8445a483cd24dc70350db4db912d0df7c6bbc43455d3f063b4868fcf92540362e976931e3168daaa165fda43dbba4076f5 +ciphertext = 3628a9f418432027d732bb8b4d468b6726db296a8739887d9aa988349fca7616f53670b15cd913dae04607d5c361e1414316d1d72291b790882b90aaf74213e1a45f333cf6efd36962589877c52a5c27a4f2f011639951e8d7e65c81b9099445e923493cdc6eaa3aae43daf6a58995bbfc49945f6e1a68f74dce4c4d42d4ff43578d296dfd016a5c35ca0f57ebb9af15903f705933a9bc7e75aaa61e12085cb7d9761673be3b63c03378146ec67c0b7a49fb4f93f14b932b64136e4fd2a45eedf72f87f698cacbc6bc38b4cf599b4772a732431d1e4ce7a90e0bb1a319dc1e6ab35489ad4ed850fadf98fe9ebd9a136e49dad728b5bd2f1384363767a107dc5919d81c15dc691e69556387d85b48bbd56fc945f710aa31ab839b3582e2c193088c34bfda2f0516b3a925ee66ce5bec2c55833820596ba72dab0140b7dde0428dd9339c38a3df34f24e45152356af9c5ddcb0bbc2cebcca208cc0c439a97ca84541e80ce51fc3ba1693e2114dc287d62198c555ef1d35fae5536e9c5ed4b8f68ca3192b4ac9c9f0cf8852a17ebb7471ba1d58c0655872d0b7decfc097a386480ef7e050772555c38a7081c4128c12674e4a3513e30d56d1d79c89a86c3a72de13373789f76d8c2c44ff6a30afc9ededd3aee2f37618259f591a6f4db413be3cc87953252e9bc0976017ed54a84122b041c286da18070398d240e54d5dad24add149cd1b127354522359408a614e601c746460039edaf9d6c306c1dbbe2e672855fbe1271833933897003603b87e49e9032248ddac4c20b2d9fadde7e932cc26a2a683d8fe76b7d5fbf8d00011a752ae64a03694083d36be19a931cce9fecc5ef766f2c6253dbad389a87d017d744494971a0fe137d97f8776458d3a51d763e073535a1ac4b20d00d5f5735e701386c4d639ea58cf1f8d89738ad59acf6020b27f0c5a1ecde46f2936d29aeea6b5c4cd66f6ec045f211c76eca4f8ddc47315d93e6fd5f3f295fe22fafff13a44dab06d50c2b6ae8e23e84224ec3500f29692be8b890142f00b1baebbd751760eb4b818f6b5c203637c3b41c40b5d88bff5b3705f2a063d5704e8beeeebe00c5258338b99f05fe136e2708a262ef9ee7449185ccec34de11a525bb6c63d75ba1204b43600951af4bbd193156edfaa5490cdcbf96432d4d67608bc86a2b0cca0806d931173ca92bcfaf3788131d465b0d669f57db5e1cd868d367d2bfce4f40b59c3972cb32382e793eaca89716355d749260c34c9c9b28ee77d21660c4fce35f64a0dd263ea2b8acfcf9f76f7835a74fd0458be86d988c9d594ad5874969192643711fd98efe336e80d0bd32a4bc8ffe7788e6f8b97dc720a7d1ead4a089c2e6ad5fd4661483a8eeacbd6214a9aedf7bc46d14a7fe6655b0da37b60f83b839b5ec42eb58d5ba37beb0db88a2067383109c75092d76b491c1ae4d1961d7820cd0d96b1c674d6b077eb3e42ff1cf511f189520fd4715f891a9236de9ef2b211e23c4c948f7adeaa662cc88c2932b1e08896a2ecc83b +expected_result = fail +expected_shared_secret = + +comment = Private key too long +private_key = 86096e25d9692c020313165513219b1314887346b1eaf46a8089aaa7c44f5ebc549c5babbdbcbaf18a6b6dd10b6a0bcd6043bbc046b271dc8304a1372487725e722ab8703af4930e6c134cd0c488d3130a7f629d9a82ccedc74dc6f21b1ecb497c40c59efaccad261220039c5512c86992cdf283abf1880526d678139582776ab48e943fda96731f0aca9ac924a62776b236440d465b8f15cdbef4298b42c502b2cc34e6afb4628b97ec976c5c7276446216b7b1508771ec8c88a8f79fdd979cc9346a049720118026ddd5339169a76107a9e0dccbfc83b49445100369cb25a26ef6898b9cd19e36dc3d8724563dcc6974623c4b9849a09a09c9a6c28593434cf602623c84cce3327b18ca5fd1bd1555219b33afee973da198b8d71256e8c6949a915e92b080a0a08774e20fb6a71c24f3c145d7467167b7c300b8eb698485b6761c9506b91625d537a900da41106c05141453e9793928300b4fdb770ec8cf292a98f2b25aaa269d9d9c576f377de0f56ff344569eb82866b25985ab49643bb8b6ea19014650efc1092d9c37f733c679a439a9314a290ba8a407aa88a34e015c08bffc8021622c261b50e1842003377f5ab2bd0f14b46c165a5c1a5d4d54b27f9a4a66a7076451671a5604e70a535c992d8326549cdb2437763387fa1c041095aa2939f6593a17f652066b55059c79d4484c0ab54f23c573bafa8107dba86008363013af3024bed4a9242c9c2c3323b01cf974b9a50279ab311aec4562dc54d1c29f812864fbea75c1d11e87b5319a64aa67252660ac608e1cac86f822e90524aa73b44ba94f6916b3db740bfd7072db938b62b21cc34bc0d367156b669134cc7e50b534d636c0a2c200849b06ab796de777669c2c97064a6abce004c48663f472485eb693989337ff15774668cc5b0b0cf318b80c73bb07576b71f88688cbc1e010b41ebb28a58a21937a54d379698bbb71b5b96a29a5a5762392d2f4266bd65bfef8cf889601f76b29c2e8abb24abdd8877e83132dd60778545c548f8a72bd13c01cf340f4d70175b275c45a583b39515fa9a0eb3b4e3560265ddc86ec127b615599009a40daa32e5879b975dbc8f9cc21f6ea907f5495fcc8bb5e4a8850d0a92ee36eed083297d4868e457ff91362ffb654e59bc5ea4868a9852fedc515d1526a4fb5c8f2aa4eb72527bb8587f828897bb7b889d328c5046ad9f0c8ae00c246580b75c874088b964a6b143dbb196a55b21a076cbc85c204753e0b495fe2a614cbeb4e6ef114feaa8356800f54f287967b1f8eb9467ae0018664ced22c12b9282f991a88e5497cad366b6686478f2c3b4ee80949706b80a428cf971248d02f41d18121a94c60b38c294358ca001cdd85757712b3535bbf77e950b186c0ae81c7205c9b02424924cc104e473cc9f3a7dae26256306f4cb2285d653ca247a750a25dcb537b589c58cafc49c5a931e2d87312c2c72cc4111ae198322a5f76588c2f2c35a7973059878e193c405a94c6f622b38790a5b0572546c3348373bb806ca1a51c3f0714640eb61a35b8b4dcca751710b68208beaef51f4248587b3a0386c0b088f838375a322534745e436262d25e5d7a1b65d88f101736df176f2fb41fbd1c273093a8004bc75544618ea1926afb6f9352154457163f4343bda3a8ca708014954d9744c9cd246e18ea0a8483a8f8e28b74ec1a243693b63260a1977dbc2bbaa7d60977832840d24d7e7750d65388290266428a8042790fc417afb101b29dc25c1490bde7d555219a8fdb9576f1d656088a962099afa02a6fa3745dd7e07e732b8bdce20e95148f110cb3374a09f4a14e730b00b313c6c723345c8420c8223953bc0b523a2c63c779b5375b8241970000ab2dd5afce0118b2269ed89a018e547d5c4182a0ab42606245d589ada6a03715f9aaff4539735b3509bb87f145258741508421ae22392ccef3c9cd62bd3068a7affb066cf8169a802b15ca19953c57c37328a4a671f7a9cadc0b7dfbc523b857be6069c51460054e23470246c902b62f049c0d0a7c60ed981bc2d1c0694c6b2ce0b60cac7745b76f6a72384ef354d9763afa75baf4f23cbfc590af7a00aef4207f98a3c6ba60ed076b2fa0584a913c82d393a7f09724fb468be664985c5f5e3aaffb950c25b8210dc1ad6d7cb04d2a7de16492d15b318c684963d19df4ca4bfc364ceb054ebf79a1c7e89c17d29b933a0fa7f10f23e2510834030dd212a755c5fbd39bc0ab9c6809b9f408574ae8965f974b6615820bc37f1a0a5c761681275a7659b688327982c1bcb604a5b89a275eee78a3544a2b58772ab351526a4a213ea6915a7c0c772aa4cf2b67f530858c139bbd66a27331686c2aae47e9872d7341cf0c5a8adb5f46023c013b82b3287cf858757c92a604c7bc9e8026b4c93eb09164471b290d5a826b25b359413e816435d29059d817221b8779aee80a8c9419e4d0756a71c819e7a58a6337eb537be7a873db0104c533ced767a9a907b4c56350b20bc676369f21135b72265b4b044311cb3ae475a8300bd08fd64bc13a6a177c4c7b936fdf0a2536498e12e01bac986d5eeaca268bcbe1d6311018479e461f998aba1642789be186b21c802b1b704e2238fc11af798a2df4f4969d8a17ad2a75c5cbcdb5f645906034b9659aa1f0b2f60a7ec5bc628a569b7bf4238ac070d5d0b78f5cc6dd1753556b70e871138b0a235fd70eb4d47a7eb941855946f7d11b0ab6176fa0b3999020a4aa8b72987167b229a0b56d76a4ad161c2e9e6a14876304da430dc7c46f1cb47345a91462a26662543e918093c4c1c1bcfaa41362b6b6d0b619a09ca3f07d20e8610bbc5a9b04c258676f4c48c5c7fc56678a7cea5914d94c294a61bde6f1584815a13cc53d874518d9d4ad90f7659ba882d87c0e2a43b71576a3401a39ae833208c309cd5ccb32d60e460211b959b8dde284ff9030e57c931db669818b6fc9c5942374bf4cd477611bab19191665bc10796603dce4b5f14038c560b6daa418002c3b233cccec62a50ef304c7a02d862743f2e3c2e2988e8ec56bf18a236540b3332837b97213449b6fbf6a9a2662ae55451d13243462da702efa934d573fae71a58d03200e477029228c25562ac61b2e348a1cb58bc3b38891134642295021f1eb85759413ea026eeaf00bbc1324b8035ce9a398f8a02ea749aac4c90849c63c02e51f7a230f41abb46f709278ea084d068379e0adc33b2ba34cca209ca282573d23d2292690e2fd19587ac7a38c8329a1f86dfa7ed01d57d200ad56efbea2e2d8352ae9d8ffb4fffcaa5d83d17180f754b921f6d45242d6d18cf367ad7cf7934dc331c91e3312a1bdd23d81647b94f09ceaf385e212241ec964c6f0890be494df30fad68bb02efd167ab7468daa8a3f2761016ce4e51ff8121050a1c1f1 +ciphertext = e23d5f4bd853f60e1a92d7333702ddcfe6b121036794cc0d534fb4029938764b26c0a32420835560d363461a7adb502f879caa79d7187f00cb59309f4dbe35a689d3d44733efc1e1c966b376da3b91b8b3a4459e25c2bd1b11eb4abbb430f3e1dcfc9958d6deb422647098babe70d6eb54d866d2a33ed0048e4f87de72cb380ce6413d912addd3808860357dc609a0884b0a60a0ea7d26886da4fcab51f0da434c11a1fefb3f4095f74a90bab962e0493e79fb231e12a7b1195cdabe204faf8f69ca6087272c9ef66cf9483df8776c6a2ebab9f21231ebe5d0e9e10e3cd38bdeb34572e2783ba08d505f55838ed636ad6f72110d71c5c4d8f4fe881cc5c23081b8e08e218db2fb30219f1b30e99f97ff147e461b9fb865e879c2a4f56cb9d9acf3b9eecaa7682f2e0c3bf04c7107396e13bddfdc8b1249201853e2e5cae07b2aa1686538ad8c1cfddab275dc3b438b737f5a57a4813cee8c58b73a178a161ea50fd10043a643d2da7f30fcf528e008d554e3d65cfab349a3d49c698ddd8ef2e68832a68848ee8de896b3d4f3431764b03181426a0f467ec56e419bccd098ac6307af5638794f89ff2a907b625dddd1151780d94331174b55d0a1780e4a50b8706b3890133aaa11a846619ae7a43134f8d7f1227a82ede5ddb0b0b40d5b2ba8363bc7c2d909062c39b65d03ac302ff04db52942e7a899eb59b4b41ecaf31847c417ab036353fa0ce8a687c009ab7730675d11f50dc4f766cb7340b714eabfa0eca8872bea8fae0ddcb268a59bbfc8d85859e23d858e151e2f46d71be11dd0c5e4f0e2732efd3b91dedc1bebca69f32b39f837ba35a2b1128742b360754e046e839869600203c8d18ab7396818b50fd8a35a27bdb40683cd1cefc3ceea7382ca98a99cbb1ef56d920a22af5cdfe0e67304ce5987af3c5ee9b16df65a87f47944ea6c801f13bf4dbea5b88d37f059fe25016478c378be62e028169a247588bd1bdb41eeac60bcce09937c2f76cd8ce2683bdfcd52c5c857a1f22d854a9fcda27df92cc52c159165a72f93929137a469a9e070b708aab8cd921c0bac6a3fd12b5d55cf728710c310c2e10870fb5c67c424ca2474fd5c6d3e0c1faab1b6505aa87a25b42b44a15780c7a06d01382a2304527771069c83261d868692a2d862a3e6c51cf77492dc0a337c9e3f1f318acb6ff3bc8af3095c8b21d9868950cf8ac811fa9e20ef2c72e2a9f82bb3b4c35abe58bf066c302c6bdcd2a207d8dd3812a7db64d8077341e7b89d994b24312754ea7a8f551e87e5f1f845e575812f783b69a8b2bc69885f2c928fb9cfa648cbaad500fcf1d5f0ecf8fef36a4dcda6a230536a612cd4dccb115120da76f441ca66ba874389250fb016d8ae7852fc8b773bda6da633919195263eea56608e32d2a46b71869b7d9a0f9be3c150095dd95538fc4fa7e6d37d813b840f72129412eab822fe40b6f2b1fb461a190bd778bbd6c7f3a25102f1caac54e8079bce316f727db9c30651715d4ab7b6e97bed9a00e3885c0847e6 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 768c4924f92e767a93da1303a3b590c536c3d9102aa65a2344db4f560946285ab82ec90ec65bc29f678aca883f5510451d6184f684159639b17f695e258170ce8b9555a794c77b77ed4b05f905285465918dfa029aabb6f438724de8774de1b5f2d339ba9527c07aa23c578d696657e889c4dafa58b68393e7e23b2934c103d4b9ed5c27c4408a099aafb2c89ba977926986134be894536885dd4a9f322359ab5a33b637483fe63462a38c730073cc730c4ed4b07fb5956eca35a5ba18b2e52af23206ea72605276540aa9559e597847cb039b7c4b5b0294581890f7f5c3df4ab92b778a02b286fca959b0720a5ad3022a2a6178d65cda5b78a1c556eed1a3a1c10d7a4bc76c862426012425fb760e1a49cf0657d8d1bd857a1fc6662ad09c51d0c47e600741e94057a9b74ae7a2b62931c5b504cfe8e4789ae68613944a6110a34ad61cb91144dc22849acb12a61091f4abb4665b3f2b947037329a0411766a39bccec82f8b941dc34bc246ba5a91273a0c346d6c5b8284e07d45d18d22f02c3c44baac404103925bc34b5b2bd22a2e762acf33919485bc5159cf0ed322920372e6c7cfc9fabe8c58bc1a8cb8d834bceacb01668705dfa963270c429416b79379affebbb60e9b3d9fc39586e52da1c6aa2a14211e74b479fbca5dc3725d7a4032d74530ca74e530a59811644a45558ff8a1b401090966acd8f69a8bcc3099b569513bafe6505f1cc014c34b78ba4a7cf8934bee69c6d1e55dd43a1700d876b3075bf0e201b3d9b932818f8292ae7f213a1a180c5490bf3b030773d55f7cfa7861d19d18a4c155f59d0ab26c17d58c5818a54b45635727bef548538bcc37734a31eaca3ada37a69ec854bc3a9ab204068ee45207143b7981ac7502c513b5c4645768ae7129552a94858c9485e3411a2125e4dcc284f1a005d2b9dc086f8226b3a43c4d38812d001944e79a664a851f8de83d54b18e9c228f98e24982743e65562a804b82dd847996427fd69060c6e0907ee3c0cf687b0f5b7c5b518fa3a30742e359ef04a710387f7374a47093c60b6c5d6592b5bca66b5e0137991c132dc1642f4abbd77669c555c1b24c70ea8256df74907de71109b9ae0590cde9fb13af869915d39e9813a3f48a900619a40010a779db8ed606100c4a05696c9ba0b14ca7a5a1595092f8238a59a944e7f85c4a138c9ec67fb9cb9ac7835ee6c0884e480e57e68b2706a48e3923ce0112724a3c04a74d67342642e79a6cd4c4110bc97e387877806cf2f71af1554851f54b01db27957602c3e1b39ac56178c2a8ace100d358a58532a1e5ea5d35b6bcf0da123f515e8bb93bf47938b40869f819c6f88a53b596b2ed0b4814b4baac5303862144df747d93c8bbd34b0be5c6ac4ac7b45fdaaff4462fc12378ea146285c27ad86b7cdfa05c883866c7e86a3396a65029809d743666154219c92525283187db6b55e58b573aca67c218206884a68433f8dc276983662602a989943cfdb03125492bbaac1d58bc6b8436a890c32da97b4cd7ea26d6a79e99917491e9b0d6fac5885cbffc1b8edfb43459ec6ec2f2a57c21bc93903c3ad668abea57462892c40715417b5c7e1bcc8bf398d47715da056ed7365f62f804281c19605ba1951195135820dd52c9b8c55ba8faca1b6b778c053f153a6e848b9e7fc5a3ac1a09ed741f5a3b258e6ccbf15c4722c13e9ad9cc67645c0c44a00c75baf6547c3bf436dc7028fb199afb43bc893268a1fcb62aa19844a33bdf58b7bef9bb33db5623827c4c02c71f428d966777fb4a3ba6e72a14c96fc4704ffb4695572ac376f36eba1721fc13c4575cccff179eddec9bc068869997a884400e75eb5911b4510edc4ecba07b75e6088416c2fa43713b7966727c5413bb5c1e0a131e517a36d93c0ec4727a0a74b2483be7214091c643d7e210af2aa8d3c9269c5bb37d29c58fec5d04050f18a75a0cdaca1427a1f0f157147060260407edaa103fb77742187fdd024e9a8526024066a9f59d829420b9809792b052e53044cc7088c25c4e868b409aa67532705daea3202b5cad41e604ce8730ce6144c16ac4b079b34a49c50ea51693506111e5cb585c889543c0f830519010bdcb8c2761ba03bc176dd816762d6a782f616d60fc071de6b6ae89b86c66313be2cb043c51edfaa6c2a698d68456614986b80527fb8a554781276a4b20d1214ec44ac651ea9a7340530b7a5208abaeab00657936c6bd522fdc497adde9b5fab93e2b887f445c6ecf67372a163a4c5c96a9ec81e2a2bda6987a12e6168578940d1253b90b6ee1669a42e85c30f860bef78d21eb8ec6393681f8bd60a559a57596a9053687500e66d14bc7470b32070f7945b6fcdba9b4040ae97640ded9162a9c096535b632c2872b299e2c0babad7710b2f4a072b1464fa3b1f59ca809b01030dc039ae80179115b45bbc839a7510ff5404356a3cfb89a67095067da82772c5e3c4ab5e9a883d31b159a02a2e739474075a15afa7230abb36264c5c3b7832399314e495ff9898736c95aed65c334f76297b093c1b96bd7e5accea83e1606bd1050946bfb91528ac0164c1b78e19aa0472b6857c00a9a163ad3c63c5851816c007c5b742b266f5b2488c860551da3c99b09327638a4c3724530c8094392a59a138221c041379cbed7bac2ac2241fe01c9483128eb4265c82657258a94bbb1147ff16f8aa25cd171107bdb2a9e1a2d2e7567b7c0c24ee67d45f1366d6b373b076ba980850706b64bb42cc7c12625a7333a42cceab621d8806b5bca125f32a67db917bc20285b15496a5291b2566ea36903183ccdc38053062957fd14c6b1db5e4e709d7e7214adda4c7da7101dbc63989bc8f547342d8286200288e3c9cf3ca6a045925d677b2e3c2a9e95767c60a92ec5332dfee53b675a3e81e2377538896544348ba27fdd5cb6fa66b9afe1422f09a398ca951275199b6b7c65002986e6032da91b55aa88a3cc31893cbfe6195abdec0fd7da413f5c340353026f9b250cd336f78cc03f15b7ea03b4ffea275fd941e0e75a9e0943d124545c6203baaa1f72326b3826be721c5fe41a682b78b24a1a4e7b2c9c1ca124fcda61a3baba97e8562c9cb55016587c1923d02143a03aaaa3d8856f9a46504777836304620b88dd726275cc32c7f571ec755b5867c421ba170bdc03f5da0be6461e4e42ba63916062011446e39fc1e35cfa7aae484acdfa0717e5d2963de42ccc97671aa4a529512b1736b79879a36c79c6b090d211a5429e4fb626c955757ee6d963d8dba9d277b72b2492252726592fa690f37ee172d3ee815fa516532544c0e32a10cdd5adaf2eacb890edb889fa11715c296d1e75806175b305dad7b7f53b991b17935881975ebdc118e5e3ed +ciphertext = d26412b70b8fa2ec65c5406ede06355f3a8fc6e0e40f2c763c7af6b8e6d4ec4fc0ec7a58ccc572f87ea8af6060e2510e714084a349ff5e1ca14d895c3f7eb2dc09180a8bbe905f9dae8c1e2fb071c511563a799d351f020bc8861da4ad8928a14db9262085cf41c13ca4a6a088f134521f1884ff5125c4c2af49208a0e785ba2a3f87ac1baf2da2e6342c719e8784e5c5543734ee3861f84e51c07e6840a4ecd02ee245a707f7091d9d7eeef38196fada17f0f08c05e7b496ff899a2444444da62b7c7ed9a98fe31cb1e89d2a31387bd7d47c8ea089b74f101d5654ebb9aa2ffc83d5871d638a59ff22c89e71f0d56eacf829c404a3d399788a46c135ef7a4a2d9e774cba3b970703a0177f4c9b60575c092fa12a4be354b1207c2ce6d2791a7438299df89704194ebec3a425100465d4c40a620079d43549f121e3bafb2eafbe2e6f40158856a925768b4f0a79bcdddd7e4462cb9451aa91fa59e1f83adb96cdeef3e79716723a7c8278f82df44234278c34eb05b79ba557bb071802db569da19cf66396b8ec39ad64c9a929f40df83e0e4dcd8ade68ed88f91463f874d345f8f91974ec4f71f72c6884d0d52dfeacc00f8dadc8463adee09f308b727a8d2d4b1b64a39316b960757b3472540bbdbb1e1d0b463db3e2a61c9850c02b8c0e1ddf4e67c7e5ce7cbe27b80148d52ed2ae5a6d3c19a397a599c5eb1c87fdb05284a2c1e9c40425a185b15aa84a26a8ac8eaea8ec70b9e4234b164f42176f98f120a7c6fa17634f17259ccfc0abac41625e672b7afe05359f90382ad8484cc5a8131ab37a249fbe349f5f40d671c12a226e8a47e7f9c2c0ca24e3980a276253cf21f4e8c36f858ba12e5b412dd1b9d1d202267aae13d1a9ae8bfcc67397e561088d42217a1400fd9bc76caca68116070947052ce3c14c9f40a5e32fd7f1500288d9b7d1e68c6fe92a0010ae57eb293d59bd7ab2e7c442a6b54afe20ad5348338b9d45648dcc832539bbd3519f3556c617fb0025c4db073999a63bd91d5862aeb70d88696a909074c7b1c49068b0c9bf775b48425e737561a2f86a522aabec1faee0d9ffbd6e32110f26d7f4b39f55c9e97828ac45664cb952a21c8e58eb09d9f4d473244cde0594afe104a3e29b0da2c989bff96c9b7873c7fafcfca6651d3d6e88bfaa37a9dcb58eae5a6046466edb3ddad66c6c13f0303f444685c4b3cbea14cf9c2c6fc938ec19cbaf22db7aadffe45c843709c58eb468fc53ab2dc2db8532b10ed920add3b1e06ba646bfceed0bc1ae1003d18c34b1a52900ee212c0a1d373568a0fbe153babca71b5a155565fe62c89ac1cfbbf26eba0a696e5ea5ce1a1666ef2fdf347b5b400d832e3b21ba3bd39f1cf3cbb307323f0a267a760bf3d2f6c772772acb3a84c068707a9cba3942bc58ba894003d0c627535bf0ff67f2d0fb857ccc723f1d71b649171969a207b2798c25d8e967cc4bb9cf9b416b293b53a6c6472f32bd53210c1a2e15e24261f1242d0ddf10d73195afce2a0c8cf0dc6b7830d09 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 0da53a32261366053f86d8cc77574b09d8ce400160f38c0465aa2bda61b362bc91dacbaacf8014913076bbc84e53eb3743e81586b3afefe66425172911cb371fe49660444ab3b750013a3af19818c7cc2f02c07c03f713e6d6c646981377d6376c4643859c95bc895fb28878b6c4712eb2299ea7543db278899458a4b6968487339dcc5d59c37c4271018504cd43c48ae26a3ea77aa23380cfe69037d64168c3356d0ec48780d3146df3b9de2019e0f1c796088c450c5129946f96795a1992988a410a2394265a95331692511df6cd2a9064ec527e1cc73e0cf78041bc267310381f66613b30141d6420b0c48207b893fe44bca3f3342cc232805971bb39822cec278d26638457550e47921b191a2b64914373c7db595aa381b9952c3476055c85c010c8fc87ee3bbaae77055e9232ff59c61f63ae2d7053c2f531c6a96395c1b7bd53b1c6e217746aafd80c2a5bb55f163cb23089111585c5cff4cd0a4abe52ca1ca1f9c759142053f97e0e396528d06427f95609f95859e3a0b5b092a1aa0c09ab2c755700d0205821dc22ff695b2b851b18f8a69ba842580a1e811239c40bc3ed50cb0be4c277d35e876402a36a35e6d21252209cee5cbd7fd5465e3a78bf686c3ecc784d8b2452c331e2d56afea4b581f97141c9a019a34698518f9d0c238193035e258a9b941d8da2b7f17a8be077745cab3a06361908320b2295acab767cdee951f628b825108380f3b0ce671fe0e697395b6f608a4c22601293a8237fcc6d043216a33a76086a5f1b37c6f57152ccbc0c61541b8dd85745a57450a7772403a245b41d9dba837559210016b2c8712f6b675411223aad634ddb5c4026d73a7f0bb330979624da6431580f08f098b00b8150173da96a2e4b189051466065d6be5ba83f60f90cba95c24eaa16191b7590920501fc39b180499a1c54d0b785bd541b60217bae6b8c7a1409eb4a10b8f5593374591947a1351a6ae30102594819d81939ecb704b8eb1f439752e9612727a78945776b335777dc2632419528873739fb9233c8e481dfe74c260b612784b35a79c929d8a1c126cb5fd1bc56fb34d21542bb01b9beac23710b8da821283b6a5d97130f7c855a34346f474466352ba30ca1050b839b637b0ac06564a9258ef45597e235247218c71d3c1ebd17158e1c16830453312563ac381a518712d7c94b3af8c363025346d4a6c0e3bd8a7c0ad25945b49c4d52a95b75f93964a20b802b876e948dd2d2b489109fdd510b4cb60b39943e2da49b94339a8848243205bde7e9b289416b2327940a483d1d80bafe56776b9394cc0bbea8acb57b07cc775712cc7949a3017f2061c4d4a58eb3b575c706d0d6fc932ca782355bc4b678744ca4b034c79b20c0743e2681ece12f11c28a67208de89071eb70322d6073e00c8dfe17898217cc833410e9e54d0f3614cd3871f0b2142c888f6274618cb4402668925c9c671e599d7061372a119f936743515a490bba1ad3b8cfa8f68c281c33933c91d9427426a8875a695cc3b8905d41b4336380c7c60c6eeba4586c2d7ca099d2c03c9dd18074861e58d1bf9858940cbb3a54113003e84868386c474472857b14e13cce9d0a0350d38c76d395b6ec7410a58af7066be1f59d096352d9b42aa5817a70c7685f90522b487458f48140854809531a4d137bd48a349f970346d34e5bf99ff8b681896baf9a52769b3362d2b8b5b5b3a7040683f8abaf49e20f14d6520ab739b785750467a48984a83895716bc9cba3035d1f92792d4bb8d0974e2dc35080f75fe0d4b388377063839452b450c28607bca64bcd465e3f81a9db87ceb48c0a113979965327b7e47d7f58a396997d8f860d061b34abc945df65a3cdb516a420b110e05c88550a8fb835d824c3487450cd87ab34c645b9e86814090ca71780296a6a75853448892fe11921f7873299e30c4026264cac7381b363c2fccbfa880eef16a9a617131ab8c5d9684adf123eabeaae6480a3f6f15f9ca146055607daa8aeb22c6e371484acd8c4e097b87ba0c391470f37e34782784f0d03a276c8aab23b20cbbb08d976491937a18001a2c02b5aba15920d810024e40bc74861fce8a8abe5202cfc7e50ba54bac3508984585043beca169e389632a08b6e13ec102f351df808b45a2abb13c8c03547b031814b2ff227e4d1b9b2547d33d63f30a5c19ac69b91d6947c7a941f5c005dd5a00e6cb8e3c82eacf19364aa8c82428c9f945d727b77b790a2742805b28855eccc04c88868b6482f3df00376f7b1764779dbc125d1e33d90e55e7ad96d6d8aa929204ccc5cae1654a8adfb3775bcb3dfc69ef65c490f3ba39007cf9d54cd9471bcce64b3ea82a049777adf80a55736bacaa3bf7f9447d14318dad705bf3314cd5bcb4cd219436b6844a00132e768d4b9a1bf62a04e638d6474cc38b1a5b3f5a0455171c6d2b040cabb77d4bb917cc252452d754a16d67baa98a1c7e061c99ddb9c5b02a05cf0609863ce493aa193e1a889f91a686309bb5497c837aaf1b70a94d2bc72034a8ce551ff79844c195ab1993218e1a8cdfb94b37ba31783b4459269ce428481548cdec3aab87490a966ce5cda8f29c4aeed19243811672b6561ab2a468da474b5b3798dcb27fbf1935e13644c13c9d7d74092bc2f8831c17270ab1d65c07887bda31798762183be47b9b8723b61d2a10e102befa95b8ffc4e2617705c3cb142941f7c9a056c6c083567b63b6491973767578c290851ce7f5097deba06f8b0cb3bcb64bb58c06ee44d004da22e1cbaa2bab52fa2a074e946f7b33e51a77efe61a59618b751557adc272cbc1745a28b52764769147b0b0ed98e3f9168a4f1808d982d882833a86b2d3b547fbb1257b821967be90ff8575c540a0d0c05017e0253c39778717395f4930400e4a77cf79bb29b8b8e757b51db691e3c18e1ec6944a2b9c8c215fa18c1a8e63a5f7baa91b33e50668a82cc5761442a931c88eb27342fe7883f25bd65872749a8a446822cfbb9486cd7207e6346a38988f5b4919416b340b68bd769569d457d179b415b1c0d783c5924d7ac8a348948986de7db0b704753c863b444d427704b71dc9279ecc777c688231d156b08a4789ff955c9274d1e85b62e8720cee5168ef4b240e96e23849435fb54683a46399a9b135599d538aa3a2574c5f16ee52ba8370770a842af768015ac6721572225969708837b25bf8b5beca314768b3c27f5941d085273117e8eb33d6a724e0091120efbb792125f69e5b9d049fca6706fbf51c21e1a07648362c3449256fb6166525f618b1fe2947f68fedf2263d5190e690e3713de4e6872423118f7e1fe7b900d9fc1fb827dace101ea2d0942f26e76e7d157d298cb773b82180423c86a3216f3cb1a08 +ciphertext = c3d01d72b9136931f0e433c82135eeceea1390aae3754f0eaa9d2cd01b964f249455c35b68352ba8a8917130d4ea7950ccdab52d8dcb1abe85227ab2a38a0e92a727c3404f564d186b98c306cc49a55ed879d1a7c276b5f2314d773ed4ada7cc6cc0d4c69a634a7098bb3a25bf6d1fe7d24766d3f4495ecd4e8b1f1a33bc71763a1669ef19642b9da176090c308b1007b54d1d772ce662ea465dc1da2ce3a912dc4f3ce7f2758163558b8f641e2974dbc9da4ac4d7eba4c4385c79aec715257921350765b15888c543bfcbf64f0756edd8d3a1b92644619a2967e3b66a052026571a2bb8cdaaffc11acf00db84772e546f0a41e3730fbd96952927daee58925a60a918adf9fd3572d5b7bbd3a6f45b8e733115a98de544d70752ac8404a4dcb3e872d92ba37f26f679ffe555e8120e3af2f510b5659de059f9ad2fdbcda1628ec875b64cbf3345c2299b3cbd5fd245b7665d1f79100396d34bd8c0e8658a7e62e9f050a3fd37ff025db20b57c86a80d754e21b4727c586456eba0bc9f1caf139488ed622e2051b91f6f4334c24420b3120e2dbcdc1ffc2a0acb26bca43b857e84b2e3336887b0e4e741776adfafbb39a68a799e826568f2af97bed6d1cbc6772e2f05b8722f8a1e75e551779e362496356a50a278b71c537be253f04daa125c0070fe6d8a4f169e83552d5fb665e202239b2b8286647cd7083a8f9ee17dacad5dadc5359082e709d2bf9bc5a7518d75be8fe82b9135f55ea8374ce61b0474665988a864efda286468d8e9091b27862777655905a4a63b9c0dec4a97ce337a46012f21fd717f311a641b2a396efd69516bc726b775f9960616e72223997bc6003605f19b286b2e58e19776991c259f059dee1750410f8fcab13202d75759c5b6ea83844f97fdea11a33c2c6ed72b725f1f5211ba36d90c83c70567120e3877c830946129ca3d9393fdf3ca180aee76edafe15d9e8317bf1d7842d987dc5817e8019ebccd4553c3fc46af6f9f3fba01d3868359a5bf7d0f324a9f3b3c0a31a4e64e2df07ad82787bcb3a4d5d4c0b7f756cb15baf2b5e85b9419f03f7fdbcb5aaae196b02b2afa30c1a19b26a7ffc6516b64200ae123f0dc49eec9443e91b152fec3b14fcdf99ed5a7e7ca44e4e1df33ca413bf1c3d32866544b4bd50b616f004d6aee6473df2243170cd0534b378f90861807d88c2bf4e76634ac0ef2fc8a85f36e5a41504d45919e61c130f26c843045474a1311120f35153788fd148162b8f7fdc0f61bfdf9cedfb7e04a58cbcfbe6553b753056cc69816d28cab64fa80d94c42fbc696735be179a093d31a0f2e3774e3d6f22eb684da502c7f4c6632d2926871a4279ded7645c9375a5544fd22438af7a240003bac51bd077492ffc60e1f4ca921fde3ca24f660ee62b20289a5bd08b7c11e22e315f050c796aecd944300375ab4025596891a394f4ec417648f7dad95f7dfdd1c3903b54ac1a5a3c05cb2429bc258ff202d08e332ae37232cafbea27492588923f3ca955484b19333a91fc0b6fa252d161c03e82 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 396062657c2f614485798a999461a087318815dc39e4c28600764485a7a613f16e02630e565783bb1b0e5cf42aabd96e670cced6cc8faeda04c4290987caa237819b0f61583a576e621b81acd649bf7a27427726cda8b1b6416336ba69fefc7ff1020f2a30248a6718263a56cc9a82fcc8c415e94132387761b3373fc8c98d55a1b9870214766ebba3ccba36513c277b327a95af84115f7a34ff286c75d33fbcec9e3b4a2ee99ca4e1f168ea538b99700cb008ca16b331b73334fcaaa391e092f69133e18a6931129012937e9dc85fa398758f515ceed04520e6bf5a437c545694f6a059dd5c347584c448f09bfba9939504007d697d3a10667dd1834c4ab23800c36d4769e98198cbd8368df14edd62c98ca73ad1d8682810bb5ef48811310c0fa901b1b186cb073dc3b71794f21d4cda0153827f47eac68846a5a90b8eafd9069a4113f73c06426132b6628518310e2f676a72187d36d3c4d4ca7cc9c24b5caa3bdb5198c2f330c4e799b271918ae7a950c996934a224725236c1905b5f8acc6fbce87078d5cbc1b98c4c2b7c7b958d85c58bc1e11b9322b1807f149c39a88ae49430687a8a83510b029f6c741301d7be03d4c7249c9413b0f3745b712449e121ed0e530e591c66c0734f2cca732f1c6e7fc41b4b9a2109924b69a21de2a46dd5bba19f704da213a0aa4979b7c1ba5dcbcff1104384cc94284a05abc544742b9190326f4911359441e153c0e0de87e086746d2abae6e673de3ab30ba931501f969c185cf87934ddd3729384cb3bc656badb6a38b1c933fa77bc1123097316a6c6867d9b79e042522fd46704a90a0355297a5d3114f85bec2f129e5010107192132e6a19124c04f9c924a38970d12c86c75abddf4184dc85a4491ca6a93932354084b3a7ffba64d89f02e5d875f868bcb6665c6e3098615b775ef8406ab411503e1041811152a157729e79295654e03a6011b0a430c9a78cb1930c3e13d6f2782a8fbc4aa8a3872a02d23ac0237d44536084b6e6683a36a242cb5093c649d7accb8de524aeb36a3807b2ba4f10ce3e768bb1b09488507d6640da4b9a9c2538bcf901309a284691b4b6c530afe246a2ca1577fb73c06b000061540a427a11fb181cd87c922638a3de121432825b64b3a82535b728509d389894862174b7a640054359764bdc6417e005a41d5578485178b29f14114d088fcc821aa5370761341e27c4b5bc69f678bc89ad3981e703142fcb362e390b431c56b212025c63e30eb9ea3298014fc05cc989f6d19bd5ba84404e74ecf298787089c33e5af6f7c0fe1ba67fe036166a46df1a6b96c707b302b6a1f0231093142cf413601524064e93dc9f8792358b8ff8cba4535acfca461c57a0c503633e205cf9183bee9c24318647b35054bec2995f14cce0e972893fb60e5b670c3025679bb0113daa3670482ff067227f875dd7b43c33111fd2655f16373e821a28926877c13a71c447ff8b1bf532815f5aa9e1500a1915112ef782561311b213c0674a8cb26604b0ab823ef8c0652b1451a76bb31017557eb74110b08a5953c1d5572a6a29e5cb364670c8d50a2bc681c1d93310036e91fc485bbe9d3171cf325942680b2b988adfa9889f42aae452ccc0cbd5da6ce1c9512470a9246d29b4dc17a0f54620618b69468b4f8207373e7b3962907f4d363d093cb00047ec45ba2738142ea941ce28c4b5aec248b03a4513a384cacceea78856c0424f9226fc823b474e7ca2c1b5238dbc8bab072edea1eccc35171129632e61744bc827110b59d5929edd24bcca70531b8008296385e61c397f80ec7571206fc331bf41432560e91a85a30ea9ae719c63727608d090716b75e8e061d5df7bcc79b85ae23069182425b850443b77630f7736fc580b638a28e77489ac9326b2817887202069b62a4b33971639c022437cd574c33449ce483440fa175b4b0398e3852883c2321f8b72a794870665af9001a65fcc85a6a62ba681a7e908c9e23788b127268ab30a8622cb1b957d00b3def16b998b5939e60b89da931a6331c3c4344d3726ae96a1fbd3948b2683842ec4b2fa86cd3e881a76093e6e26dd6701b05469ce6f6998dc9b7cd44a2b550086102128b824a58ca185e8a7b20ba280d492d705ab2a3b51447766d4d096a7b958d9850091aa6b8ba7c658ad8925e5031f3534d1cc33da511283c611474a4c537d98fa64532ed83ce95da5df3e667b6b49ef2656fa633ab7d702523a3abc176b380801c02e6811279ab16816e3d3333e209be2f69cf09aaab7f4287797c658bf19f33663bc70c51f4c0b97ef342103300d74082b41417a1a589c1d52598c2c6a4565ce8c1549578c062cb4c36b2858da247ec54943f7aa78e06bbb2b8157d36bb594278f59ba0fe4c37a94632e875443b52265007067611736e5224c8bc05b5380e0ea563bf58093dabbccc6a2c5f7949e19584f4ab69d944ac04ecb8dbd2763b06cd3ba6bab8443a9700367f879e57d3945bb96de53b3493594ef241304bea46914228608962a3a7550c9b6c204153811b4212413b92f2b457b923b8e97913e2195e9144de0acf18675e26d0bb9af67f0daa6a35c0a1ec4b61b5a96c2bab2f6e766e65f459f1dacfa7c3623c68afd192c8183b1847e24523947ce0b2700dca4c64b8692c5c1918db148c4cc2eb982548c47a57c609e03792a21b943f59856b5266e7a56953d4c8fc12c8102491497696206b03df38c46001cc51e65fcf607541e866d823010e6b88310cba6f73c8f1a77b06b426da30c9c54c044c516383e8064d01735736a05af479133786f0e18fa811c2f110048b42048ab0639db1ad0251a2f43acb85ac969df35b81849303acc73650c79d6a1e38a15c82b3621f94abdcc9427c0bb68ec7346e32b555f00666342e0a40ba6f92334e47be4b0374fbb291eba2ab1d3563eca69e861911180c129c09a33f52426b66c0fee28a89042131178bec9129dfd3c501c9666f07cde930a824814df0f2bbd1e20680c3a200dd3af95c7a7bf0b5efe2782aa7c52f52b6c2e8694ca75bbed49fb862af3da545a2d11236b174ef9c0c60e43e66f2a63b89246e3ac77df3197a8c18ef0518bd5c68debbcb3f60ac7b0355e34398e7bb8a937878928b54efd87572446d6436c1062a28e8d63eeba97ff3db397caa04e14bbf29711416a653b47b36e93ba0141a16d067b47095a563f43195fc76762281d4aa69842638d29360468b6166b39ec8a6950b2a40afdc4ab6a0c7f204726ce9485b6d414d3ec7fc6398a3bc69b8e7f4b09172c4034422e3afdf5300b056881a95863c380295ca52272524855dac027a7b41305ea5495c893be29fc8b9408bc1bb2d8621eefd59024e39ef59d8f2205cae5dccf97278a5554d20ec +ciphertext = a279c395dfcb8d910e951a91a9dfdff472cd34be78ad4ab0101308ffa2a753453c367c2ed4845a559f250134d2c766550e8bfa21c34dd0964a42b6e4935f8067b6d64fe210ec68a4d8941ba1a3f233e6bd0cf351442087a5e8e941690002929b3910285a3e151b1f6a86e24f8227137161559fe4e6bfa0a3ed5cdd10ae029a36ad58536d6727226a87d9a031d5cafde5873d05385a630eca3004feb186af512867ad5499a8a91056f8dfeacc5adf2b9ee6efe6f9b451295055c425c6ef26bb32104c94ec8cf23155b5638070beec7591952ffafc4c9cc788a4552fb778eee575bceaf75039427cd6474e236a545c9a154ec0f6ead33f549323d6ba8d8bba3aca50e43891278aef2d5deeb045db59f7aa059b1c59fe865f9835b5e384881b3dac5ff85549697b2bab82fc4526608c9e10a830c8d1cb69ceac7ae73f59875014776082923707477d8a4efc386537acf95e9848d0aa70d5277cfb7da5352d842dae00763435b3b68efbca62280f58ff0a382f8e7ae620b28601af1b8187c2494f2c499f74801f8c96b98b276dfec3d1d6b575b84569e5181cf3a1c2d566c743b9ba2f9521ce75a81a8e2acd6fd02aeda8a3b4ede85905756feb56f9d25db711b9b3102885d702ce570dfd80d5f295d8d0811930d7d39a670a02b9dc5f294484d3c036500674c9c851785e82ae7a37942e0f03942ae295c0df3dd2614acee412206bfdabb7689e92a73d938189975501f12608c231aeb33ee32d945c4c3563ee52df75a9e4b9806ff5737812ca218e815a01f3eb4a9be59f8afe9ca3f9629f0d63e0507092a3b9aaa719c082b3d774cbaf3994b9b280a53208763f46ac49a848a5845a3b94eed21dcf9b9273915d575d3c448c43e442453c3be0cc863b81e650f0cd22e43aeb3646032f8578d1725e1565a8fce269bd6167f1e8a68678ffe990006e9c7f1cf4fa262c50418dd1cb2bbcdc9c2a40181ee45ab3b26a59beedf9db19123c002eac8386a60e8da44c1acecba15e3b471d54725a5f54b1ea27b82fd1865b47ecbf096e281e4789044e591285f90d364a70bb2ef07713b97968b23c7ac3a47c1ec35e99cbbb22dc5336fedf157f9d4b1286b21db7921ec98dd6326e52abf06991a99bf1fa0c3346d89118af306df503d78e139197058b0fed0f039c5215ffbc1b908c2629634934a6e25241ee86eac100b9575291d8d4e99052d580d6158bc2c5bb0bbdb2110be20a79dab008768f2e005b60f55432fee57407e219a303d9b93e08f3f5c4354a889e8c611cc578325d8fbb0d5e1c6e0fc4050373f1534f41e4cd4d1b881ef6c2d46ba5ee9b0c85905e1ed79b81ebf6c5e7498fa09eeccfdd87fb769a315d5d4a2d135875213ff93b23bb013a81bab2056129501f46b52716fe715a4e3f374392365c0bc958f59490c59e3cb93600a959368244d929408267e0702020302d69646754ff16ba20d6c292f6db8b76b76b0ec246812ffe14a0c2c0c1ba6343a5f7e7b40e3c448923326ef3e2a0e57fb1ba452b1de7cee0def7579b3b427b35b8f0803399fe1bc78a5349114f5f181bb9c5b82ae0d5c8 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 5b8b4eef29cf4ae937401c2bc054569ca35d7fe3affc4511b15a44cd30b1153054716abc66d93c483c540001ced3527cf9376dafe5cded598343d356df06461c2a2292ec54d046b68b844d4bdc2378b90aa8e2266683534c69b0287ccd24f687829c68d85b733bb343d0998b6da074fd523c9751700731aefe164f592849f4f74716221f7c364db8a3b7dd17c25e5a316bec26387ba15de11accfa75e4415dad701193242f71e69b67437a9d908a67c2652018b929684ad724cff8d8a066b1c5b8ac1164a5cf03e1ad91d87f5b053e3c413d9d55382270103df65c7e6c706daa8e05381fe16c9f48044ec5ba8bfb883c4e790692bccbc4554d55fc6d0bf15710b12cc60791be7cc132e2bc49100070668a6b2721ba018ba82174718a0a1459cc39db3a5034881f1ba2e226a87d333308e7a8d9a3290ce9978271b8821a34aa392d392553ad9c08fc4023e5cb78fc6018662419edccb51ca6c8b4b35090b9cc49bac28948ae3dfc6a656a525eba2656f386c9ca62bab9bada82b09b3521ba57a519832ebac38bb7d430e0a00dda460f3f7529f6d4b0caa01c322552f5fa142eaa97fad6a14d817fe149590334ae27f33e7cb267458bba08c84e58c37f145c1ee3ea37d09621963bc9ebfc7a8f6a4968342e7cb98be6346c75594fd154cdc7133f9d5a993099924dfc6a69e621353939c029a2548023e4454b44f3831b32174148a81b6777fd475c8a42529efa2797a18b45425f4f7bb8e96a163af164970bd0cce692deb719a0f41b5ce92bbe0571f439c95ef92f159b7a41b273ced49a3807b9e6072f07a76020070980016d6c2119cdb90203103c09018e937239ce4208fa054137b163c08b3b3882bc440185299c55f5878a3b727f8dea1fddf65e6fc978739b873f32552cbb41e0dc1297345ff3d691767b4af46675b6241d53d1aa4060c843d5c900c02eec1b81bbf21dc2925d85155ca46771eda16ec30464f3739da7d6580b27720b53b8a1495416c5cf3b96a223c3c1eb464ace401a1f6649f1d3b93f76c58040071d301d80b264fba64f09b49bb5da656111aebe99629e95104ac81454e5ce526c2130c842e231748ff277945a43c8a195364813f192547976b761a00d46db4ae453beafea64c2d44c946322d868abc1a11875421b7032c355a44f78d9090e86ca2f89465641a3ca23b8b1d5a0e209b20ab6152cf328497172405b8be302ac1e8a707329a0a62561568660991b84da6b330c5043992cbb19f85bacf28e3434bbd27029f48c18253711fe818caf43b1b5e202e3c54a4c5461f8ec4934fb86499453842387d9c52fe0506c95d36c62d0b9c059acee627087335a5688a775249581f523978c0ff6f567e3496df5609beb838f841439428ccd00621f3c099579c109188a972ef9715fe173929a3cb0db243a105b80861dae2c81057c183c6aa14ed20fe2315b88424fec8c47cc2155ca4ba6d57929f7c91ee55203e5355380baa4ceb20967627a3ad11448660a00040c402068bd6099bf057068621db145c6012793cc97af462568169bb96f6c21ac6b774f910591287d61d93029e4b446437d7e7579e8f0b7932ace43f8a1a3cb50af571d8e89a8c5790451e0b3ec5b0c17bbc3c1463b96a112a3f66846692be36c91656a7229962348e55b36a75d2b408583a291a7356907dbc332a6ccb18a0e5ac53b57caaa09357da4a82da7e88f3af5786de8543c889d86051f8517a6116a09a87bc1c8cccc25c1cbd6ac220cb026797c6c4845754d37c2c8f847b1728846b56357fb8abc179dc49019b8c5ba3703240196c344f3832a293341053d966958b987776705caabbbb2a7ac9445844a22450b8fa1295436b6a035081ab8019e05176037c7eca5a0d6b6382f678716578c0200009b82b988ba861d506419a5b790e69a63d6c4bcfc7e41d25593559475fb9050402aed9c67cd272963c31810e3a360801e98e2a20443171e1b4949b835bd572cad6763a501c7c7868d9da5a4e976bb3db872cc9142b1c800a6893c8514611db63b31db80f86bb6f062cf142195f2d6b4d77ba4d7e1b7d9273761e6b8f21a08ee65a4ac46c15725a778a85b8f1012603c470d86bf1baac93d5a0546f8b5a922c0d3a96592367c3b909aed10cfaefb1fa17bc4f336751bfb736da43cbdb70e83545cef6455f779757b3c6ebaf009bb8873496bc66e8b02b22687debba355826868e408b40ab075b11a7cf7b575652093405fc31263b4471c83f1b1c2881b5d7857d18285df0102f5b8bef0ca5870ba031f30c3cb0cb45671b5dd99416e64011bb8b86fd63ad8b2b33a4848ff7a13c8e83e5546af0ac543a1c72a71289ea214a7669227e777c44069293f77133ee2bb0086b4a042786ab6908b6c3b5f9b88087293e39a7dd3640d4307bf7b74b61b6b29a7411ab7c085c88570b826b4a4d16379727cccc93e0e340e888235a4881479f8c075aa61e5c029e57915946433c1500576d165625c7367d0bfb7515538b233b13c7fdb46501ff816f64cb8f60717b748c74da5b49d899c263c7e1ce66cbfb3bb503cc504f3968cc4ccfa11893a3855a784a3dfe4b8b2ebba7a2c90b5e256b6f68d63015da94a41f155c9891c5573cb156406b16cf5abdb89c3a2ec6c73a13bbbcc513f02952a122138d94fa71685e48a2364022238508643b940d194978b09cf803913252845d6347e3a41aa9a09787e2a63ab03bdbc5baafe395785e73cd02807c27072b040c9f98353cfd25a9f7017be5550980a851dd48a8df43558d128d63bc4c857b8a87b4af5418710dc97f8156cac845abb5848abb0c97721c3864769bf15407779526687659e51236bc6754dc47c65fb1a074110c27495422739460b37f032905a4a7b5150bfe763c90e6c45b6e676dcea1e4f967544ca8304561317b3a56f981f4e96ceac10a3cef7ba776b3b304603285b51ad99a8d19bc010ecc7a1e7023d3ab457a89613e67530e4283b99569a8c65b9e10bc658658d16a3761643da15355eb5275000bb194c5e8b7b56d590a07604b1154155b9c7cf91b02ebcf98a140548e5f30b0e6459722c92bdf6aac69b4e1d79b28459cdaf28c4f32c08abf65375022aa9785f0d2001f3f41bcef92fa53703c1d336afa6a4e08c6c5e4040e5b259ea2b2042931f21816c2f94c63eb56eb305997eaa9a64489f31469515245885da45c4e59be59b9595da1923a07c50fa5646498c3e83bc33f947b215284e379f0635aa9f6593d736ca6a5b557d1fb9ed5c92354592c5d8c7b79f79628f71cca5878fe85f8019af297ce20b8b5189f94d77870cb993b83ca06f086bca451cbb10522a6a408dcdcce1d58309b516020d14307fdbfe089e2b4a70e29c575cbea1f8b097a37c2e7773b9d26bec16 +ciphertext = 70aa7de3a6af636fc8d75f06e558513d2432ffff1cd3b36bd5f145d19a505298a1264ac50023f26e3b0e5abcbde666ff72bda7ce2d228d6d6a37b7288d908840e12fe9d031a50a6c8a4c599225e8d297e9b80a391d5d8291f27a5e0dfcb1ede346defcad2d1029a464e19cdc90df6457d2d3bdf89fe0cb9d3a98f2b7f538c3f5b109cb1f389c6762a5f269ba512cafef19205a57a7b49d8d9733de9bb6be7df1c60a85fc44fcdda04ff090172cf8a669195b166d79d53e525123f37d97242fbb6e2b4febd83932631380a346e9dab98d0623da9898d7ba40d246b3bdb06d094f2a57ba96788c056a2ff05389aafd6433b683f5783c514d69ecbe90f54ef028f74f71ef8e1ecf7603d83b07d09af48134ffcb7f49ab65fb361b8b76ca47104074f169cd411d4bc5085f4cc2337a4066c1e5444e25149ca0c69bc7665edd96d261ba007f888828407463424988a3e5b078987686c3300f5190e1163994ce6d46118756cf6b25d9a0affc4db48b6ec7691fcb5bc57fa9f15a027440e4a3522e1f84960f12289a093700f67d3264dfd044ef4cd6e2dd490514a93c8dbe6f1d31f2c27dd4dc00e3285918d2a9fc330b041137fcb7097f68e53138b81201632b635d605aa3392c5cd25911193fffcb82cf4903c836082ca296bf7b2ccdc23c0c07514f4e348f221703de44f67e05e9de412b649ee77ed7c276f4458789b445016b14cca29574f69ec80b0e096caaf30f0e6cd0c51863abc9a32cbf2c42f83d9e6aa0f853f67d152003bca937114390042e01e07c5bb03085de193eb8b0d0c3b1730affbeb1cd562f42cff225713bcdc51bb9aee3c32cb99f16afdb4f0037748c26c0db49ea3c21c6f45d076d3e26ec12d56677d07957d4af1b5f7fc0d274e654e1d049106e6b7d396cd8a925ab11f80540f6c3b2d9bd17a95d05efc0658ea1a4a8267f7995b5dcf20d198a26f4b5cc513ca973cea135737639f0fb2cb0f08e7639306db843123f2d49d85a149301d2eda9cfbaf7dbc3b6bb49ff9c4f0c4dcd773d51da6997a58fc4c10877c171b26a37868e70fcf106a8cdbc6a9bede34b5f9e55db945090bcd111ac7e970fca318ee6411e5d3e8d78912f5cbc36fd010859da78441446a971b68f05e2b902dbf25c31593e4b31dcbd6c4071b6b6ed08f6872e072fd87ce10dc64bbe8fdf3d6663407693c59d9139e1d0996cf6f6121a9f5d6c0bffa4c463cb0701128bb8bbd21796ff4a40398c95d4102a5581f69286c13465a428b7759e98e6659d81652b4e6e2cbb12bbca08405efc0d1d4dd489fe233f7579716af2a5b757ceb5920ae1cbf4fd87b8b68cfc2115e95d9a271ddb76fe4beb5b024f9652ff3cd93ec1964dcb76f419076bed0cd707f926ac62826993fe094253b2b23619a4ba8cb8fbbe2a0f84ad573ee966f676fdbe2884585e86563d39de333e4a6dc1729f67bfb3fa91374a5f76aaa8f47c44b27dee8cf7e79ed670a1ac75ce89540e59ccc000a5baf284aa99218faebd740f21635aa8b51e25b8962eb06b34ee5cb533f7169afd07e690f2 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 18e1cd995314a5754ff31a266144451a733126f38d439aae50db4cfce28099b37ac8e6be91e355965482b7b134d9215912d22327f4b28ee649cefb4e9dcbb1f53c5a57f8a49e8c430574bbc9b71cce63baff401c93541263dba3c3a3a30d72bc869253e751b829b0b02d02ac2eea87e9f62185024eac7515e43c4170f1410e90a1b7d36871cbabb7f0c7a67a20ffb5a7dc44bfa9289a00031ec16790b9e5596f7352b3c98592495715d03426ab6e4da38ba0d018590a1d97048a29304e28d2230b1924e1f05f85c62e50f20b5439a03ecb2e39528cc2270145433c768c84b6d132f3e91bb4a82994339279519fa24a82cc6267a95454e4452fe464c82b025ce4f2106205bd248572c8e35bf89bcdbb84154743b669d996b2362d80949b63a507829c81dcc3600a0c9fcd6b5f7d865577bc2203472f31fba96b143e63fb966f396aab7970f80852b57578c0e1ceaf4ca608466c72662ea1f6c9a9757db3e83fbf11cdc31245998a8056c0b4b1e8748bbb9171c54665b5803a1a837d468b6846b779638d56696525559d46189868011f3fe875bde64432bbc27357247912338ec305bca034c039a8d5965b6173a464d9c373e50378193ab2e95e15d43ca559557c5123da91413bf99fa6d15c20ba4ac16297b250970eea15ff75cf12178d7eb848fa77acdc610ee0c390d881b859cba9f08c648b34a50fb396bb32680cf347f136baba03a3643c9588faa254f4ae1064a46dd5bf7ae1b3482649e6603f35f0b4a00b6e02d91f41a56fd7db7ae03b14ae8341ada2903ae2cd65560d53874aba635e35c83a35e48ddf6730f6b576f6b36bc73aa92a65350f06722181a5cd49ca79307188b8c649a0bd786320beb372b027726cbcb7e1b1bc28e520ce9bbb2829b765781f0519b234bc538d867cf7f7574538b3f9d6234419316637baed3920e5719c0e3471c405246db9ad6c13133eec34c7c2a6e8802f3da43f5ada73c91830d29baec491c31eb12a57c02061d4850b0c4b0ca62f50864b480b10b89345725a803fb34ab285a564e4abe6366c656a63419792652296ac6644afd5001ee98d6b2498b04c8a67f73d816441eb2a1f0e89bd4e0bbaaaf6075fd69d43f7ba74a6a9c89a96f924be0f41733b6a718c632b1574bbf90a50fce6c308a969f5d394bdac6c2a6a0c194583034b01a3c520d6b3583feb97a5fbb1955c9c164067a2e7599f0456307bc4e51567247676878ab11e41204b3988482b46166ca482089c58a31063c99c69e63298691045086296742fc2975c0c4972dfc88dff26623fd3abfe255ab8e17f85ec738384a633197d409bb327c1826771b08356c5c00ab2aa727783453bec9b3d49180ae3c89ad4833c26a65ddba077c07a4e5a11473cc078de81208863cb0ab89af1105d1a270547a48233156143c68e7172508bf74fbe1c745c785872a24742b3099c890b72e070ab6423c96257dffaca56d20a0da43fc0255dcef4b14b4878c937578b5250a6c15dbe9b54d8416c0bf023993b375c6050405818544b1b88fb8ee0c3bde2d472e3fc5a75f945317b0659d02e3a4a45f93984f4059bb75aa448a92511034e50336621634fcfb420fd4605b99324aa864039da87bda7c2952c0388f3162576673b765c40a9727b41ba985663f0c5a4d0d50c2c617ed30baeb89c82fde091763bae601b00c1b9070969c62c591857a3841245ccd7e3a4944446c3fa38e5b7c62ec42df13a0604f00802d74375354162a583d31147273786f72507c201a648815ba87aafebeca1865ccc01e75b8da614b086586027bfb8731a96a27d39d668a9b4418041ae017b451faa521746aa5eb73b68464ba281b0ea2236e6725391fb573f068d68f12d0aa3a254f299ed2ac521f73a37cc880ec9509cd50ef7230057a389b6ea948ea977df7b6023497fe727227fcba1f30c7337b3039860a00459c57457a8bb9a1ff52191921a8621abcc152806e7530ce561356b957f39c88164e81b1784ad5b567c7437cba72272d2387563e106a1113ce8c98bd8f2a2fb4a87489c5782357dc1ba54f972c06ca81e2bab3d5147ba66e8c09fc4912566991b281c897443620a85f5569bbfa877d0180bc006c155e752224576fafc66e946712de7ab61c5ce637290218074b44ab8cfc84e74ea01ea4a683f2c7054b65b14ab80bb16c702e91571e4b80853adb901b9bdf595080356a3591df3521257dc240f3b8d38521d9e242cb0fba192c5cd8649695d680c009cb97766b421998a32fca16aa2002dea3531723d73e7ba24e8ad445a82fb53a9ac64ba692160551a76ce194591134693099747c3ce3907072a470c4d802d6c6527d7700e193188c0a9631889161d621e3f1750e7bca59b3445a999b5c84092ef264f41f121fcb894a7d6611386034b7a2246e7a388b20f0d57a7a2b5219d28a8ded4353a6a74e106cbbe88b11eb931d44a08d97721ce20b11ba758440bc73534cf97777cdcc02cfea7b823b6cfc7418b2ac500b872af001b22aa0014d1978c7ba3b86311607dc214d29a83716707bc4698b7f3bd5be1a98fd67a41daa810938699428a00b3563cfcc547f76de8918f5e9ac941a9915f715a3afb19a562904703b6c9036e4aea85316905fcd437e684278af9b93505ccdcf8ab231773e941570b9bbc97d525aa47a06ec26015f7783862410495a3052400c3105abae5270bd418384a141d52b34fa151dd071b7eb44cb394a228cab20fc545d2404701ca33a0ba05683c14b6301afa30b363570178630594f184993aa1ae3ca60734106800643e16410e8a5a525a2e2f4a937352513668adfc19b84d4bb94ff1919e105a329cc115eb7702bc4fc6d724de246c6a78a5b581cce9d196e1f18c4d82b1083c6ba29421ca003df15a995be09b86387774473bbc544009a17884d4c55012bb6fb70c774326ddeb93385753aa5a5f3042062a4558ef85385b24568830b9061612e341520093c53a9417df2b3930619671a38b4bf8ad0ecb7b98e436b266434ec9b76790054f576e67fb41047c1d36a0bc24745dfec53bfda02656f04683c041bae3b3f6065f16440577890eee3c6ccd38a0d705c27021312c0303d22b5a66e6bde0c45c1bbb0e22f1637e635dc812287d191ec9e68313b70af7a8765075205391001e7c26cfdbcc03e96dd9701f0915c46efb7cd3e80c6be24ea1962b2b544b72892f4ab5226690bdd059ce108563718a93bd1541aa496d9c617d078cc94db47236b568b27bc12cdb7018ce762743af52505060c7c414dbf1d96a9af3d23673068beb35ac32b0d6034b10a35eed8dfd8740de00e9e54d22c76f4bef3d64f7bf4ab036165288b4bd2b1d29b2dbbefc68c462c4184e3096ed25774d236960ca5796f62e5e59599b972dbf +ciphertext = 3c324c5e73d136b7d0bcd8e05af06310fbe58a99274f219ef9a7c2324a710975656d48e5dd5d4dcf9b3d5bb9e66c1e7dddc5f330d6e2322dc1703d8a7fcb39adee5c6f3334a7aba266d7a607184e9a4d59335cb067c27b20ee84fbcadac6d1afb98723192481e37bf27a20353773411b57caaf090910d57b92969cee9a71c9ac72d61f5d74b0cd572b896411512dd2d45456745a78c6a84f51ffcaf90f59fb53f94c457c71e2d7c01c98366fcbf37ac1006ca840707a4fa3aca958424c0f0114dc8a592d0ae37a1c3f6bb381ea19fd8e1642d329fab9ac9b64c1595238c7f3f70d14342cdc269052e6dc473a71e73f2dd863e6c94240e23a2816b81062b0dfae7efdd3629a84543ba6b7134887144e51ad0e73aacad51137d4c0dceb84d105728fe278574124d0a29ba9577a0b27a2fd1301781db8273733bfd239ab0795791aed0018719bc7305c359d207892d05b4f3b21b3419800076ba1d024dfe5128800b4847df25971f9e2257fcd9c52f843b5830bcaf6d25212ed238cde65d751451a6fb33ddc15019ff58437a72078330c57bbc081d1c0caa7d8d342f585ca5bd7e7c5e2037d9d32979c946d2a88a2bbb7b59522ae6e7a9f33773bdf39b8e6411dda81ab1811e8a6ed013cb01d7aee546c10a97da343cbb7e4e6b7e6117f4af3c2dc0e41f167296c81ccfed8e2c535cd2b63ac2d7040550a2b435a326c2b634566182961db625cab675bc7ecb5c428b610b6eed46bfb724f251e6accd57a967245eff0ce56ab2f8ed7e5f1b21e2e441661a1756a9a5b932313765c4d24039e1c63dc44f50619fb825d96beb7d74b434c3675f8e8b44c112e5c65070d51a5568e3fea44dc2980b56a6f8360c0377f0d1683a5d63b8f2a0179e385c13278256e665ebfb761d72c2b45ecda698f03c525a50c3284925ed57f89f0c34f3ebda831ec75272e6da7d32fbb1d41a24f84ba34be8707647ccecb2899de8c405ad92f01403fc213ae416d521146192b8c6a5aaa56dfb50818d0d9c198c0b01e6e398f3481e3238a657d2cbd44b22390957680cd4a7e434293f2b4a92a61e91b700cbbc5025c77c77ddb82e4ffbdbd807de96cf41e857d89ae7f561c88f9ac7823900e82924d871a87e546c807406a0f5d5ee5345f3fd886bb704f8ca0aee54f264c6c7ca70bfd11619db302736f5646f7f53e12c1d8c6e88920230d2d3496b7151ded737d7c06978c771308e2605011d9716ed1364c05cd9ecaac5d82e84c97c61f9c4c595fb3dc1b473758c1ab0c0b5c43a2b4922f66520a28370313b236915694c3d6318a271b8594c64ab33b015087d175a79e0e4b51a283bafe65959a98daf05a25e26d6a2525a0ef12c870d3b2592db478194b2a86647fd93cc6c8d4cd3552c7bd00cc78d626cbe41e9f43a78b232c4ed02e7a350047f53a2c05fd247c4bed1204e7438e76965f13376e29c5b6f5bf08cdaac20d62c4abd05b9a07edd533d481daa9248dca06126ef6ccfd265b11d7dff6caebdf72d9d3f5cb34cec1c150f7d6df270afeac9b6ae1c177c1e39ee963d8f2d76963e9cce1 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 74ea33c4e6367672b97262aecdbb9046d8cc0ed71ca2139b070679932b2c6fb12608bcb6c3d82b82e58fa5d9a9aada2cd50c69e69045f83771ea452dfa651967b18ce35b6ff4c238620ba1d1a3922e5c102aa30f18f0b920a42208d64db69310094a74e8ac610515734aa29eb4c4761338594c046fc1755d12e5c2bc482165d4b02be14e8495ce57b652fc5c90ee227e18391b3c4c05d58c98ce2b396a5a9ac0634a1386031cabceb8bb1dc3fc4204355375b6ace48a728f563e51b5a10666b61d925f5a65072dab05481808d355ac64d6b4591acde0ea2b10b54832c56e87202c3f460309c49edfab9085f1a03c6458bff13913dcc3f604b38f248313a69d9997176de08cf58983b669586cd400d21c9de8e284d4a8482373c5ad413f4f0015cba9ad058071b550a0175823f065a497f5097768272d695f04fbcff1825fd842bc429c4a846492785b81bc828310a52fcd806b68184b924c53612c19dc88200c5b483ac551eb045efa5a9c295889f84529920b7b47533957126345ba9e7c885962c4a4cf4845d1500642403327472462894a0c591b7516a5f76a4ed1124ce1ea4af1556996db98a70719465955203c7cfab3b6deb90c9d6982ad54391280cdbb7632a1a48e17b946e842738018970f781500f69322225ff263c8d708cd8b510954b889a5436a94336c195c9df839446a1b15c50bc9f2d26d4c73381e056941d0b30e40a084967a2dfaa5cd501c440066178b264280203304adac9a82f7818991a7b5db311146623908ab1a8f754b06936049f7378227820443915e3857395978687ca54d4143a43a883f05bfba28085607681b70b4cc2c5b78d203af868a17ea8602290436f21ffe7aa34c825dd1db380c319d26280e6d6393587b503d702dcd949b91b3531806877e0bccde452c55f95b9e975b2b70b2cec5ade4e29ea3f69f19accfef0b34ecc4c436f47c0ce45860d67397199165bbc2c305a8a9dbaf27617387673ca3eb1ca8f20f5afb92a2d106a2001697b147e53361bfb449a0440d7c9533d54014c740253fd484496566c95bb72cc8c43adb930f9c2a5b9c27bff459d9d618a4b26c40815fc97921c218cfdc73c61d648083525c5d17427484cad6819a32372688e1370e9201bf573b64fc9e0afc78738a35907439c5e50b8a8c744bc987199233edc0b81a5b138d5b6606702b97b21009009d1ccc1a073a823bc5c5fa590bacc753f7612ab87a722f8ba0ee2a3576baa0e00a07ac3bc2a2d20dde6ca370631c64da89664b204ab0ae13a23a84da2982db74dc68120d5771403c243f2808b9311ce020b413c67581366931a0cb582a15855162639b1d01fa287d884af25ab38a8b9abc7141a92489342bb178865f74a93d6f16bbe3d840174805fa839b98b9c72ea42d306c8ee63bb5c2776aeab13049d63ba7c99fabeccff247b4a5d7a02846654a801b5a5a763c53628aa2a2114647128aa7866b3ade5366cb8264780273f039a6ced7be8c8411afb12881426c06492d935639ae9a668883a2b9916658cc78cfa064c9b08ed79795bdc4be94933dd441c2f3d627445b33daf12873ac08893020724a3b8f4000ace40b5135582cb091ea0212bdbc4637bb9c8130c226538da47a4109f2c44ffb1a3d02803279c9022c2f9b1304f7c6424e10381afb1285d49e4a35c1da96a874dbac80924bfe213eccd929f7d9c087053d5a326137e65e07c30eecc3b0be16a12a746b1802429dab1f8fea3fea27bb4fa355f679cc485920ca348e04f92656360823284710179b9ce60825902045a49b1c62713a5c2669616a34a005acc598264c687ac27443f627832c8a123b8087091257927e6ae9993b2b0072f8282f083eb836764f727b8a9714e623a74adc16243bae40633c50a344ac6592e9c5b7be840980db774cd6a90ad878b9929d6e5220fbb32fd6d989ff4395eef9bd9de525e3b386f03189ebf654467b78cc9b4161ecbc8ab87ab662353e5015d89a95d622a056a50d1b618560276341e1adac02c0e5685962f14cea500b9e12b9f36cbe9e26af99592e4ec214ee9c390b13aa492aaa78d475c3f547976bcdc4571dd36b1a3c493aea1008211b87587828b055a5ba2356f3ba5137400dc99314ee1c46b3317520807708138b142862af659d55b6c4d5c026f711864d267992cc8c1cf00fcdcb981b3bb4eb4cba23eb770ad30834601f84d553dce2348bb7cdab6a73b150c1919c6b5d3707fdf2460ffc9076d066310c131c28084211073fa77d9a786c19a2bff1d116bc2b9dad398ff7056d1af447cf9a7f38a940534a819057268889bc718c89d00723c3ba617ddb08a6d807fc08a7506549343121f6421f39b681134b2d0680b249376769152bafda63010a7a8143487b04514693770252b3ee126140a5b5fe62bd9e260ab1800c89b1ad9d711a749270e30a110debada325603b50a2cd7b2676b096635366a57b42129a6e58aa58340364a1486cb1f35742f880095996b7628b78c1b80b95533c348a65201dcf6b7a8668ca25c4268910cfed611ecf25a77798028c640e33926faff63a1202744fc32a1af700a6c0828d3a849b040067762953d30603662db10b016ad24755c8bc8d8c840371acf8f955c30c862e85a3f65079f9a9c26f62ace19015cbdcc337f9b1d4ea0708c8231b4435debb5745a693a5161a56325fedb7510c90591f40743a9620a35752d3755fc674910b46399cd71f79c7807e173a20abba598919585067a93c6a33601d934c9939a00ab2742ad4fba952a71f09747eb93885185ca185a00731f9c3072631c7924a38fa907bd034ff002976877bde5cca0a04a78995510c5912853cc0351c90f8727ce3f7796a15c58b37b6d471aa1a9c8b023086c6fbcc5d6c1375e14dfd636b64dbc4703368cbc791c552c7094a835ca750f5299af3e31486412046e74fbab27cae701acaf744b013a1d68c3ba5cb3bd14b3929ec3b7feabd9847965edb9244da54eaf12503a47adff31b568b176ed7635e5a792451615c0cbf9b57aa3a8355b1db3aab41938383beb7d946fa63ceb164ae1220a83182c1aed7799174792e7631ab0b273f7a8e5124a5764824326cc82b920ac2c034bcdb8f9c8960a8869aa1b6337c3455fe01804d50af44092708d72cd058c797c1a22ba6cd7553c8ef104561812c79633887a54f5dc23c53c691ff4a881f7187e872499ea5afbea8ac0216a520ab80bca7828cfccf677bccc5bb5d0ba0860f51909a8162b3a4125c4c6f3d4d6640c4e98855c29f3e2336cf86563894e05ce742bd54af34191aa4c4f0c9c22e12fe68ec1816bc0a7b8026ea3112c7c72e0798edf990bb0ed4ee31557a90c5e4c8f652a9ecc2cd5993781fdb5f8439018af1b5424f910093cd2144 +ciphertext = eb13457aa0f1eb3bd2cde06212a5f02d29a01276aa6b76a34a326777ed3e12ee8850f8bfbdac297419dccdfcda70b1d3b5dab4ff6a650a62eeacd523e35a0952738c335b2068fa1cdb22e9ba32d7a5ede495da24c7ba970e11d53f75456d5b781361e7636104b1b9c11b566f87156828e12d940eaaea9d535ac70115c498008b2472a58cc4f7f33ff0dedbb1d9a06571af4323756478a3b5b6b782b8f1986c8d11df1efdc82477f220ea4e38be779103ded5e44bc44666e8254adb10498a4edc171bdb83c9eb46a9bad652eb6e8191748cb79f6a0c609ae052545bb8cf1c5b3a9ba40ab4fa7319472cd9136437306b15481e81f3e6dcb3bcf2c8007abe81ba30316ec3fea3709dcf8af148a2051e0f7fe4595ea2e666e8e8f0d9312a1aec39b63dd41b12e8fc1d970e6939ab0f924ea3e445b9b472f5678e3a8c03239d3fdf4c7d4ed819d0d9adce73952c17f491c6ccc9ce35a6e8b48eae36a9f2f6f7f8ce5a61f751124c7c0979c7c94c455f66075356e55635a592233249be949a65cd3d9ed990926ed69b06c118a97a2ff9131f9112b9bef34e10d356c25df34f77b90129a5b7205b5f9c5714a791883888bb08bed71384e59a103188ecbffab852f859345f242f160ad5f30385d6a2e85d895e8d3976445a00f681b8d3ed8421736464a047dca824a8c4cc4a23e48e63a8009b22a1379aa3214b8d74561999f4e8ea676099c8edaed3b9404b20582e574b09c55344c5d5e1d1e5e7a9971b78bae1dde0db572ae2d865428840d8d284b0377d3653b86c0b5f4ec09ddb0082a7adba134fb5e34a27a4a5207cceaa70a21570233b846bf38045ec0e1601d9975f8bfcb853c88cf1a4b4b3e5fb254900108217869ae5c41ed91d394a336683b0932e239713f53c65bd5f4517a2e2bef696554ecdc2ab357b69ffdae377e7f19ab9f471ea1651889543cfe69d887f88601fd2c17b59de80f574c23c6c6dfd87049c2b71f769b529bb6f45ad3b403a4afec0b746526bbcf3692df3d5a98c6a0afa6141dd6c9ad97e3bcad3a3142418d509e247c26e6a07bd6f9b5dd6acd0aeeb129ec58b8482444f063c4342387afe9fceb19868a75eb7b2ab9f8ded8a355e50ff232e02d93f98a31719d5fd7b4492c3f7464b361b7fedd9472ad8625e8c8caa14fc959f92f2fd0a9bf321601b911865bf1794f7a7469c35138d6248561bd6b37f8945a08efd91caf9d036a35081b8d90e8448b49a93e6642279aa12d7465c163a9de66c81f4771ad44f0e1bdfea583dc92b57d0e334bde27a6c3831574e9e239648f466195c3e475b827f6fc53cb2f605e273f62cc5b0b14e12039c8ddb3ccae8d7395cdc898a720966c0e631e73e17eeb834f0d18c824baea12b13161a24aecc78c61ebc99fc6863d2c44094e13650c3571a500767a1ca82f22c9397b093dc1dad2005e72f003fe2df5a47850001b6a70d3b27f7e26e79094a61092941b7fd006d157b912a850939424dae51952ae4893fc5261b6160a046e01358798f1c0c653274b97159458ec10a914a45d06fa3c1eb +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = b606c8fbd4177cb8bdcc4543ff8837a267540d53bf90e33e15064f6c635261505a6d17b490278301289e99f78ddc73077bf00b4fe66be2b582747552675202b9e9ccf47b2c52a363cf51153ec1cf7cda2b4a34a393cccd75d1ccbcb3189b691d84358bd0a4556b94b67891a628e50d221ca58b227f83ea4bd3d368e13c3e4b498905e62f71d07698f972e3279055e0afd84a5006f76ef3bc50d5c12b14fab2f7e5433759cbcc738fd411150ee93072694d73d652f660584864a09bc1cd50832222cb09a1269bfcb3b26f46a9f4f190ea512225c0a0b14cb8c8977d0048b2dd565ad682849895a2aeb54d3b2c444ab045e4b156087b2e4ac9b6116932aa460776ec97d7d963ce24b3d0fcb3f2987ba3fbbb80f41dc6d036ac11a65f6c0d09d17c0d4059aadaad80e38f68608b0c101b1977168db57748c91bf900ab29157a45211296240f2f75c4e72a2458b9355582c597e96cc328af943510aa05857f411732b924b7c370c620c6589aacb82450d477629879267c518afc1c7bd85bc4a2f6583fda10086798abe984cf775b16a568b66c4e4c48b86d33a5ea87cdbc2571bfb0a4eae5880d986b84a10349524eef5c2b60f6ad02d1130305c50f3a3e14f385e784712233a3b7b1274e4992519a45a7bbb29c4606e7b6c10a471a3b9795c49355d47036d8238053091c713139fee86d54d2b5f296ac546767aaa68a28f59e83b04da58775241a5300cbc4d5219b91a95f1f574222991fe302149831189657b88d96cd2ee29c1451185dc5be5eb9c607c3b64828500c90a6cc5b87e8a829327b12023c107647055217933ebc79eee0309ef886bf7bae78a7abb8a6b435c07e5f8b3479b124efaba06387493597b3501a743d5c055eaca878a82a2a9a4d4816361f1b8244ccc583f50985b5942f71aafeec46b9c451ab66a2cd3073ea80964c8c757693879d030d5c838109b0341a3a2ae4b9951ba65751057a84b5269d9829f9c82746a16cd9957b07cc6accda2910f19a779c64bdcc1712f146ffb98c91379023901852fb5277251e82e5077bf046488aa3a3d6bd859512b41891b569b8209aa42182445b7c9cf7a5185a49159376c48a8519a663bf5fc6a2123c23b6250cc41578a726b76972bf82e8564182c90f8cb3b6b283d51a1aa91a3fa5aa16b55320f4d008026057a316b4a0ec0b73e700f6baacf7a24c95f869cc847a366a6a8fd74b5b37b28ca9c56a5537d2193f9cb9a882d56b43eabd6c3aab1d32ba01f11c95c7abd11a91f9812d46d806433a9cb95b141bd5b31682aef8f53ab3444b568c6bfde9be9cc6c86b339cf7482e1a97b44939b80ca5a829457f100c0984f5aa71ab4959e4c45c392e86549faeb59860a30dc6960a1ccb5dd8c88a60776154349b12b9afea762178a4b78b9c00ba674592047fdb0447307cb30ec20df518461fd208e2f3bcbd459d0d155ebccc20104bba3dba842421657fe5b9d8401e07455a11783619397838c775f9a973152c93da95ca2f9c1c96cb0094361e5881ce7658805f73a1a95965ac771196d37298ebc9ee0980d5eb24741015f0844e4429c65f07be382c11dff584386576c15bcd27ab7be9056f07336555db41e63084ac280692543237901ec6d2336490cecab04dec92239ae85a40a49d36243dda4483dd40411b94683b629441367b8e647141b72ed4a90b72c2c89514a3c18aa0d29c8fb0c670cf205c00c26571a631d37571e5874446bc77fe520f20d4b9bfe5a8d94098688890e591ab83946ba49226058b9a2a1cb6d0a51ca5ac1337416be2f814d491b7984260368136cee7aa9e280cd2945c1ef21bf86869ab94471078c11140244e5b94306333b5478f51a151992a9c1b2524681a26a6ac6e3a2007aac2b39e2538c6176cf9958ad5d2cd67c8c71cf73e1873c3faa788a4095038f53f14295655e81eeb332eca786ee3b404d1515324409c73534610da67ebdaa57d67187f963caa13ce6b509ccac4054ef526f2a7b2fcca4b98e0c2993b928c5cb2561956767b8e51286994506aaeeb6c34f496777143a4a682c5f745bab3ce8e825f92c9aaa54047e8f8bfb1b37cbd2b21094a271fd64f173c7d859825ec436fe31abc9fe258b416468f848b8c359c03d94247a441a7dc43c4f2a7a4ca89aeeabcfd414b978012a8f498e75a3a8d01260db028aa326edcec365fc888b2d48f3622ce5b81b692559601500a30e6b56c37885a778294856696e37f20316851bc41efe67bc79b1294e3ce9fa50683f9b74646ba42b4364fc648e75a027352b3bef46811476f61ea115a68163b4494333400cc727f7d523d262ba7b1c60f2a12af31d36852e995cdd595d51c56bd64199ac6b2a4d38528f4a81b523c6468b5578784a8985ca7989b95d9c138624f78a108d71380090353d9fa32b437c290e0b49eac235d8231da76a4f66aaac2e080f5b123c3837b6aa93046e83907829c07924cc2ac4fc4a3ab6d2587f14286b88b46adeb7528163e9f783df3a0b6f3e02edd5c70a5159983970b3cca35ff42ca9d874e1c05af6e411e74b1c144434cc93c485f83cb3ae786b8377b0ac9a4ac2231b70187892a04e35ab3b3c6728a685af9541af3168842058c662bc6a94b9bd9514cff0ad03eca4ebfab1837180f1c55777ff30aaba38ea1581d955c346053b5948b47eaf0454088654804519196b402fa495c821847146d2e44821e862ddafb0ad5bcbdc0a1b2ad0ca722d019a376280950b8aed2489ca0c084eb437fec2f42276a1493be1d1268cc7700016037c613b4b1db09470952e84140e1129de8a904ef1ac263b3200815cc79852d2e8c0f5af1741ae5692cc304e98b5b6921b493b85cd82a20e0373141d24f8bcb181939672a5abfae59b175eac43d003c989828820a88c5300bf60b2871449c91503234cc47aebb5d6894ce37477d81c29631f6c0376c5045c1c30699895c3740ae190d02719cbbea50f42c12c324574bb53a61c336fdd1092c033d24b95ad5a4786cd1295f14a91ce7228fb3517caba9ead38320fc630f79c4b49b233984a6ff7a382bf5cbf8d7393cf923af32b0bffc427901062d417b7349550104a66689affca6c9647b176dba838c0b5c50c0b7be89832628a4f085ba282178b849b6fd2ccefba686d5a8b645c9c57504620b23c5aaf645c5066ce45212314b547a335f9c29b9fd3a6a9b31836d89ad758368be853aa74209deb37a7c4023beb2bd34b7c909f9066f0063cec52c10b82b07f07ab6491ef871b621115538468d46668545efbed73b23e6f078bff5b9a66860ab10881f9438aec48dbf59d116e117e2882b8cd9bffd3f79232a1b2bc10a2353cd7e1bd1e3204bbfe19adcae426ccbc269bcb58c92acb6544c1fbf17ede65abd4716ac135c +ciphertext = 83cbf67e7ac70adebf2fd93e80143ca3eb88ee1026faf41cfed158d6255d910ebe75b280c6cbb1dd06d8af4c26916d3a02dc9b38a0e9bf1dc6f91e164e39c7da0ae42c63046607c7e03fa111186be6de5eb957b4ab2fb2c839647a49dddd25aa6b4ace9ea6f59b676c5df513b97d80644725ab5e134cfbdb4be199d3f53f57aa8f5f56530444a8ed3a71349b80f5a83096cb05442b9cf640671c4d76e5ecc5ba0b7b79ac49f860322d887b680b84b7447eeef703ca6b9d3505b3c6e2fc74c0aaa780e2c1509f9070b9e6d672efbe17de683369b78479c6594beb04a7bc9a87a6a26c420cf0cf01d57f82790906c9068df999b935cdf0a337541127412ac3a125ad92344d79950b513bfd941ec52fde4cf2b0091082fca4248d691a3f76b218e04bc9ac05906c5a4f4274b5797c5ca3dfafe66f9393bca2859b8886b2548a05e31676410a602f0df6bf79bc7018dc0a9f13ca9d1e01bcb39dd9a80900a88c7e515a88f9fa66a1f107f38a3618a6af4e77b2f96b601abb85de2c0eae24ac9628c8dc3dcf6e130062584991d26bee22d783bedab4a5081a2afd0aa08e48d73d80a59ea8f6fa247484bac85f97a1f840b5294e2983b947592b4e69a55cafc2017f3d94e95b3b6ae31fa4d29301c305954c1e887abc6fb8dd22791739fbfb6f0bc25fc0e9666c4f530a95dd0361c453e6e63fe880e7d0dc4f0b18f7c451f93d4e0c198ea97611a2b4b578319205e8fedfa45ce300872201425885a4394daf806e6c539bda9ffc110718af24e1c66a64d3b38b505cfda44ef01645235312ef15c0f39edf7315f06517254369bf653047a4a4f608e5d8b22ec939eb634bf7a640e92e7d871f100208877d6b671b574d5b7b7ba99d6fbc0eec86342e20f0a1318a3787ba34c7e5b33d65a129ed9db5f6deb501bada2c126ba62d26cfefb86b2cbde1a5523c9e50c227046061e0881b68d72cc56c07a2d911ff6158871ef3782b9248e90b666811f37a082f93f4b30fba6bb2b381b64266b331b8abb796372ccec48bad87765ec5a6eeb6e6e2afdef304709c0468313eca33cc1db1e6d10358dad4c5398cc0c8c20cb70a946c97479f78b6ba776eb5ba0148afa81bba05c1604b797dc6b789333e0d5debb808d7119eb8bf66de36891287569842e9c73b9582c59e8b992d3e09dea9ab70f16c90b662412e2f2eb41961c1cd5b2a922066fdfba2142aceeb84151c3fae734969ca3d953b77b2a6f37f265dab5aff240960797820850f15d5cd23b3ff79ecc7519b95396b769d21943829677c96834fba21a979eb9621839f7d0b6d6010d41407629d0907b74299efa9983dd798e310b235aef69491ec034ac56a088dafb27c4710d8e18911443988be8911221266a50c3e4104f6c180f3d35fe2e890fac4d17dead7215e859b0c80da973fd1ef0c7e5a0dd45bc74f55067ff7a89146de7f3390bd1313982f2e0f0f818bc6043afedd4976ab60149a0d70a5d3f938675eac11c49573ce21714c5dc118357723efbdeec2a62c952e5ae71a1f498a +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 538cb63584899f135cf0464c1ce43a30809ca85a893430a03ec4bb510c913fdbb87c77621bd1816e626523229f5aa1776c1c56788c8885332787593687fc2c6ef4bf8a98139aeb75078b2257618615b030d7d77ef637aa62930ea0994a470744437468f084b5c505bb66602663f7b9b9a8098c2406f7527775804b1cec3cc29553aa3368aad332c065bd0ea1841cf553e3ab349b4a5f0e334255d9bb12b9abe975471fe04b8586398a68c986b43499584409a98b1be1c271d6180ccb69c7f98f001b63d0700d1908461082677e540b0322831af36713835b636088735555ea3a826be2b9b2388f3cd017f9066998f4492982b5917071513436d898247fc72f80d97469a7ae206743c6e6c35fd6cea9a50679a31a21242fb5656316e5cdb4c26f5ba39b6b79725be53eded4422aa4c7a3a3b2ab3ca89fd8474c11221c483474824b4a596428d8b647a692b6a0b08a212b97b4c0260ac53925bd198a8d2c7152db40af0f876476a111e1e9449da78fc246b91c372845ea198b4667e59b644012770213b16c2b319c544ccf9481fa69a8f5749fdb9aa472d2af44c49d14c3aee4765d2c257385a691b70098773793a6073bd2ba1d6360ccee01092e42532b664657703d43e05d73370619136cac23707f835cf76656ccdb509ef61dc1e87f8fa31cdf22c16dcbc58e892ebf2ab0faf75662b195078b96b3e1468f2b1bc317bd495a4f4cd2967a54cffa792c764310b8310a9ea6c1c827c913fb08a6f7413c5164e932b77a15a808637d4a9c59c91ba9ea5812fef244df638fbe88311a3c87da138a6c429c04d55bceda4c0ab02a12bc9cbb4a6b1af0672851034a398a41d26327442ea9db58e60bc44d0c4811947742da2926799a7a6433aa814851399f836856fc8ac743525dcff5b99be6b41a99a6828a54c3b92f9b088475e74bac897971a98fe1c70be1630f8eb389e0091e7d3148aa3531683b24e64b9c3146b5773461dc89298f31ce43a55a39531f9077331270c0ded842fb36a5075c889ad258e2725f0ac11757343dd6b13d6c0c8c039a4a9e42a417a63dd36c228be3c1945451d7ba996fd0c6708092305053d9da71fa0044d065195cbc23ceb12b3cf6abb3037231c450ba244510c83f03c98ce0644ad024a106e40bc5c06ade0106bdab1317e11fcea0c3e7dbc186350bdf9c73aea46bc7cb3c3e35499149c06a253bf473c039c2410c49382f08b21703b356ccc551415fe91c914b02ccb78701bc2c3e211428268abf678c6b0baaaf987767d2f60c60c176ef1b188d76b79c37585d6589e25629f1b994b7f684d5aa3ea4528ff4b56c332b46e7b96d254ccc4a56b1ba731082676aa76bb56c095b7001a79ed1130ed58358a18ff49438276b25a3da7d7622654f5005c44070db34809b79971396b74b0092b163495b246b52b7b329f3557d792c6035c868363ebf445948a756139127b1759e52fac5f953c2ad249fc7c48d0670383e055b65c55775092185907efe5baecf6c98ebf7524dd23fca8585ecd62088da0f0ee3c3b266710ea43334a8960b28ac3ab55178ac23a4c59bffa365ba08c3c9d1c8ddb026926c972671a656fa27c7775a172b3339b0709ce6548c4c5d11b08a40c348f926272326c81d36417a787d9b1728adbc77db24b131a1978a6412c3057b238a58706c4c3801b1587abd627a4c16e31fc5dc40a3634a531855e1a23b29f69791354148c16bcb09c7a67236ff677b186816ff3b184e438bb9a8442b755e9e48c4ed1cc97c15b8fa990eb4413c19d78a9253a498b38d6db8b3530944e86c7152772ea3dba9a9113319d0398774c4e7f9842714655edb7e8e37cee16a5e5da434ca6b3d87a2c8a255b24d5ccae0092962084e0b486157431f94a1124ae8a02f4796fb19ae06f91c17b50d905994f4912dfb7c435822cc94802817ab31d8c7ae25a81edc0bb131d5b8ecc108372cb953249e01e903a78ab628b7bd5290185a8b2dc06c7e91802fe353a3b70b3edc176238b678f723055852ad78146e83d65c38c33d7a52b667118249fcc855aa2c4f60087f8680fe9c237448741dc61f648ba57ce933ff568546c195c87b947ab155f9ec9105ccb48e69606682bf71334a5f09664e8b5161e09c2a75ca3378a361aac8fedc315e26996c57713f5264ec9cba309ab7b677c4c2b6546cf11cb471ae0435684a9005b6820b6f618af7831cb9396a1898abbc2616d2fc976b3129ab1053b0b01fb03282b75a6cfe80b404018c04070cbafa28f1acac8f7c1cf0f54234511a6a1b0e62fb19f2ba5303e14763e4cfede460058ca574a4200b5765d37cc79f2b51f9a2cfff3816f31bafeadb57a6f0c03b938968c095de9c7113c079e5aa096ee0afd3d72089818ff258c8a9d2b59708643f9b8bd1fb66fb68a21b323594f8cf62417b581cb1e8909da60a5900128e807468a9010205280774a3431056c68e11736420b7adc041e8f83f78c2a8f1c21225c4c00f819ef1279d26f13f21157495516d25835f09ac2811272c0cd53f3a0a0f4c077393c5a21956ae8e1a6804712063d56f7d0077bfe569102066766715cbe9949877c54892608ab3c334dc6bb2b7a55e0453cc91615111c45f495f44306588c403dffb9306d6c4c54cc45aa0bf6a486068879b43c406544400e6550602ca1d4c54c3e1089d42e3651c9c61998847898738eca237a7b887f293028a41aa9e18416f95a2ac3016e6b83bafd0c345d450a0b47b1b02917ef840c532c3cb6987024cacbb6110701681d12b2d1611033a622df0402752f6988ff8429e1077d811c6fc092daec013746c6d21b8a4c3b25989898c32a3088d50598ae464a149656e72c9e3c1c4acc0c8da0284a586a520b27bca913c7018afd8a27bcfac1b2c9791454994a7d05350d3caba345e58244883fab4b8ab45d95872b7e21f46d923e656b6d563b17557559a4cb3f924874ae92d99fa6cc6827a27463259e9578559b360b354ccb5a65ab9391aa5ca5307c1fcc029e1a5095f1ac57920a9798b27cce6adc9f2b71e8577d2048d36e60a63a913eee3803d175485a170df0641ab11a949678893717cba814e5041c1d928a3cc489c56a374a557bb333b2e850b9b27a5b1d896839532c70c835854b7196e33b6c77cbb3448ca937997c339cb6367c7b4487ff914473dc11b6285321c3bc5bda304cf241b53c28e85b679d1791ee6ec6f0c750972323d2417b49d793e0f06c514f81d367aa20cb20bf3520621417a764926e17599723cbb43304019d03738feae9ebfcdeb46411976221801b01cd1ff30523d044959fdbff8bb67b3733482b8a04d9cf5f4d3b396acfe69a7859af894fa20d50d8e05b66a0a51979553243a2a5f911385d3748f8628d1917d283eb0750829 +ciphertext = d290544404da20b5d8a192793a7d4c407eb2d16bc42af0baecf90bd3dcf95f5ef1d3349d7201b494d3267e77798e4301220fedec9805af34ccffb742d278be3dc694885022cf95bc7691b7d90a2a979bbe491e72087ef0b75300e5c67a55edad19d13bb897c7b6d737166026aa1399436f9b6d8a0dd9df5a4bb485be8245c8b4f67e70bac9bc11b12d3621277677f12038e6561f3f8eabb65b55469fe5ea49fe222f189b53d60a2fbd7c4a6dd1adbfc55f12c2c98b9ab623caf1ef3bd74caa95e308c8bfaedafe2215dccedd1a995c4fdd284786c4f53f30cfa95dd97492341d2265508f2caef42f48d6c5b5015804520a26e1182f78fc2dc1742c9e8bf7e037be0415aac88e68e46cfe681cb95f5b5386963615cd427d742f599499d535ffa977222f9ff581dd6385df0a24579fed78f9b0866046c27ef65f77ac97ea37e13d6df59cd16bae704601f966861cd8bf704ec06680d01e00b0d3673dff72ea412c25f3db82a3802f621902b966e5a5e437d29ac069cc4cabebc338ed57815c826c19402ab54226db1b99ac3b138304c89144d17cf7ea6bbbe9904667cf5dc64938bf6b0982bb93ea413c02edce8a301c6c033e3bda9ab9b638777f7cd4e9c1d362349439b8841bf0880971aee1f2f8472d8dc79c7ac669f4150e5d4661cf4d864f0547d65925e4514038740e812969dd0af48568840642964febe1a66bc077d99dfc41d27b558c6dfddb600dd59e05137d63d6f925f32270ff9bb0ecddbe592f48737808a12d6508b35db514dda246515ac4b6edab59f730564d5ef80f97bc90aa84c70d1b1bb9ee832a6c7a770e741d5e56ba0055896f4f4ba72a3e6b62bb9abbd10d3c9acca1870fc25ab657b69db7c1da303b8f646d7898161ace87a5f23c66b114d8c74513eccd9f32f7c0f61934051b2cb9f16f0fabfa9cf4f8693f7cedd3aeb3aa2ec8f7adbfe4b0a1bc489f2aea500ebe757a0a4ab6d181b42005c3096f3266e5267d1afe1637247fbda48b85e5faeaf2f55a30fb30013eede21fd1d1e1a71775815d7975a1192d4ec4dbb3426bfee55ac8cd54c2a926af0b34cbd8d0ac7dd1e91ae4186d418bcfad56632de33cc9fe445f515dbae1e76009883a5bb6ca76b9c0828b0a36e04b97d166b2349e7d9bb9f7a8588740e4c77fe88ccd769497d1132b11333851baaa8d23860a0a4d5496fcdaa20fd2b84517510f5056fb72e20441acd843b0ebb5b1944c2cd091df4b276a98a73420d61fe322f5e7b96c8fcf7c8acf344787a01efb0cbde83b9ac7243809b45bda3a1c2e1399c406122366d94ddfe3110e3607ca92d9a02a316128f9f978f42325a0f8c7baca3d2c21e1a25d29293d868aa522597d427a1aaf9c7d95ed20f13407c2bf924db068fd026025499e73d078876b5f15bf59cf3390e4ae886dd07a8f0cb1ed1a6e999d3cb160d33c6908a433e754c88de49945d0741ac6469ec6b4a17c0081e59ec479a25b31138bf6a73ff72d08a9aeee31b6313b46caf9f0be920ad95a376c3cf481bc37cc7e821e985d731ab93436fb2c13d9f46546fdb40b05 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 083b84c35752f8307e0ecba842295b45cb800f7a324495973beb8bd1ab046c46492b59cbe06bbfce33b74972c23db9556ea7956189a33b337c522920b0772f88b4152e413d841c4d641c07821a352b65234c1b40b9771488d13592a2992b205d723476e00cc1c4e0354a72600f45b83525ceb15b97491c4f4e98443f6c31354c02ca92a924269ee7f38b70219d9a7b59b8c1af7e198f0da784abcabe06022cf018654e62a3a3099ee503b276aa3e44c4254b9152da0a4d411b6cc21313464273e0eb6939489e28164ee7da1edf0b4ee6d5b804c49b3f4b9ac1260ba4e937bdb77176c7bf9df36fe4919298827d02413ce4a330b8dc074cd8c95839335053718ababea3d40f34778ce31831d9bc056694a022a4aa3eb8288ef196653045f70418972524a1167282dc74298a0cac5cbdfe348e87fa1ccec6bc73a84cf4642766c59d1531731dc0491cc86bb9babddf5769b69b453de31323353703b99964b88aa1ba049ac60cc237c2c8361ec4c4b5b95ca5a96a9969870de1f7affa84ba01b801500c58949618e8f1b37b151d2b649877bb217726299d1b611b112c234c3f4d7a608ec70aabf4b7cf3b4b34e8b22beb53dfb764a3805cb260ca31a494a3aa637450190ed725a5d913c1592fe0c3c8eda49c99a57599a65ac92b96dbd2c42f9a8b2fac212910121e78bcb77243967a6e4c382b1b24252540cd275b55e9a57833438787372415cb76e0ebcdbe1493897243e9eb9f47a83add419bc08c54905865d5b7375b21a89c3922ee948e0fd9cb057a1bfc55a5d07cb4f84733f8678fd7c29363e736919410515a6de201c7e6e3c8c9b3933b169428f1433cd50e149507eab4712814cce06879d6271284578b9adc9213c021e3f03b4f57806640356cf23d1bc2c13d044f3b3273f4f849306736e017aeace3057292018797b777d48992a43577056edd55bd9370ad7f082cbdbb3a02f2a8fb88106f963996c36c118511c2648123d09eff7028eff6023b2016b0f8a0ab975922551cdaa41638e38bc0254e47bb0b21f3a44d6749e1923563c6927a027d16abab8f42bd6e447321a0aaf317205cb343ca3185bdabb38ec53e40d540dba1b7d6a74e17b94d45546a83b519ec225548d9cd080227fdc6aecf2ccb5c0c5572a59cd25b6426f4b0c35761f66b491cdb9e187977d5b36ac2207d4238983371327d2c630af04dfa671bb1e72630862bf13572f92c3606552378208d967752a32290068896ef769c0a65a2ec1a1967a3b458f85725e6cfaf08b4d01a02f8dc80dd7357f6b83fac00c0472456eac98a8f83b052c01cd4c69fb140be53849b2a36c92ddc90dd0ab215ca3a39987c6733781d65807963b9b1720ea0591117ebae9d915f30d7abf7f487bb19cd1f6cba9d741240ca77d9bb5306838e7938320e14ad745a3580b5717dc54634a23fef3b05dffa83fadc65a041467d4a90da672f27d069b7c608491ab86d5cb5a02b9732217aef7abd1671cfc8275f24324ec7c28bd769a033ac910f5a4d25506c10b05f83cc4f98945e02fa41fb1539d37c944df15b41d781cf27368126992184c4eec5973fb9457b30396b7a9d8a29bbf5095befc32937026504ebb662bc5d5f32460af9cd60b8234d5c74654415253c6f1455146738384657b9ae58a8a1ba05c388419b648c2031bb315bb7ba99c7131a52b57314a6801c99d5221750a3a68641d604c0c21c4a889c6304348733141e6b0b13b068cb2146886f127de7bbc8260366cea995b109a065208539a81114471290980eafdaa680bbc8334c0617237f9ab5bf6205ac77e68d3866aec8c866f4f3207d91a5880c9c355873e25855d82b4a95986eebc31da0581859b758d887bd034204ced0064013131294376a9b8be76ba8b362525154283e574af7964e40330739009321f45277882e1ae6721cf6522e8561e7a8664fdba5f9e01ee1d183549c668332c7b3d6781cbb8d57eb04c6ca58a5024cb15a126b2cc1708299ab326de982333de728c1ba9c08524f1a877e0ac13e447c7f1eb02e01c296a105bca110b0a15313804ca5aacc7a7a0376e6d78da94b232936c9bb2a9c1cab5ebb932edde39b69b6b361c155235c6b5fd7938b4b4fd9b484440c7ecd6c05b71166210cbbbdd70bb98926dbe157c4f482362ca88f47c776888db3c8c0fd2206b65055c624a85d578690ba7f0e93b3b6e088f4997e1ee5b134d25330b128589c4389d6c2f8c0c243a31dd2a60c4be1af33f1837048aa7cda0df1f8264e6881db236eb0d44418b864a27ac96a65ae85d280f0141e6d782ac355a8965683345bb33591c567561f39b50cefe6ccbaf1a1c9aa35d6c3cc5679a1e74c2972d09356fa7ad3485b7c903bab511bb11454f4743ac98b7d82e87dddb3cf2274cebfb4c0388c2e4bd823183ac92fd345fe724fa064c6cca902382aa970accecf566d062821362031e7b1b2603435f916acf4b467de3923fc547595ea35ad4b3e8bbb778ca64009a7adfca04267733283337972b97904dc8616798a5a92a53229a944e5101da566a7f37a50c98ba5705144801fbb9c9c982549af3578a1e1021628b902604f233691c3c5b16c9acbf9d7a73956c89d763fe8ec2dd1c520564c1cded29d02188c6732423ae339b700b70d8ca22ee54d7639c027884b9729447ae29822a1c1deab6d62f579f50a89ec91afe6cb39c5120fe8aa0cfe820dbaea50c72121f97791caf59e41b350c75c352514285e9960c2bcb8a37a0f7da7400abbb719d6849f20401d074f6e0b4c9c26aa3104c10363bf2b854b4590b2d82a3f15942b7cfa44db26b4c3075ea51027048c3ab4d388b9f93a85134a0b061125bc29d4631fa5cc5fec1163ed29b59dd0c02a240d3d52278cfc5cc561456cb572663038b702132566b173b1588e972e47dc5eb66258af751d2a7acbacb395eb23c41bb1802a22b505959012e07afd2aa3bea26eb5b77cd7c058834ba3a40cad20052ddf02167a8c0756a1bba428159255bd7a4775d5d0973c0b25da4069ee026c066073ca4b2278012fd402328127c490d4cb41cb65642aa18cbb385039cc01829e824cca808c2e65563d9d9c0592997915ec895e663568f242e4aa07f2f3cf11c5256371444807be476593357c5c0271a24b80c813dc1b22d671dda07b647a4bffa0200b97961cb30d63aac034ac093a705899c65ec2322dbb69c5a6aa189dd35a42308193e797a5f9138afa5f220ab42fe03cc0d68b245a9c528470bfb0a3beec9c5bc07d3d16982b742681ff7ecc959f4d3007ec9f047ea474269c11338746d67e03df6cd2cacece0cea4aea4c4bedd2a9b7ed8df51920e00f9e845e0fc1cad13a599f1691dcecd088a3c3a380d1627e179ce48a82dbf7b8caa767167fba3d4b08 +ciphertext = e58cdf97fd001d328c4a68fc204f5c01d1467481bab092ad19b4ef4d98fe704117656e56867ea60c7c0623072b01678be7b974e3c78e6c8453a1517cda0590c7bf2b5a1dbe95fb39b40eb4332c93026d25cd5580582ad5878a82ffe9fa349e2d1950acc89f1d4d8f42438433f601b368a0c3042d254742043030cc0c855651a2c57fc106fea3ae43d44d9353e3b9563eba3020d9a7e81d196e18fab854c9e5c52264927938f726d921d6f5460dc86a7d872731b02411c73c28cf867e089a7f1bfdf2bcf48f4b651eb7ac4529656547ab3d3300adf1fdf62ff118eaa08c14c786b98809ffce7657dc4987fbc0d9cea870679bf94c34d4ff5b1470a446333ccacbfa0a0d6ac08c7de8fcbf2801e0877bf13631eb4ada206b37a86954c66f3ca260c28d65f93cbcf394b00b72b4efb46e3d9a549a0f68866533320486f46908e44c6e384d6ab70fdb6de5b7764fac8d3a417afc29ecfff5c57e6651245b862464277eeca5c616f5fece16d93153e642a17cd912266c426a32b524e9d4ce0ec32d7a7c8d2ac7cc0c03a4f45133b5ed35ffc2593cf5c2f1edc6f91c910b7502c1f489cb500568aef3fb4c1d53ef6ef3ca54a3a32b9f14c851d5470e0991564e1de56b0f03efba20653a3fb5afe7be49b3c9eb91c609acdcbc0b53961627b2d07828e7310286803491d498dd8e01c0b73f9d4ecc76c9fc8cddf1414486204bd3209b09e21bc24370b2981b7b328462af0d5d0647d7306f8fb08b646e138b2f3a96f316fe8214b9369822419c664ea5b9f6eebee89c057e0b32063c4d53d5ef72dfb119a0e1f6b0b4cd01d703b950750e003581f09ffbade550ca9ddcd9102be542363bb2040f6a2774b7143b491baf401d3a87036802b40b4d2040f9ac9aa310d1fc05b2adfb61edc5ef4cc35be9f7a5e14c62e8f48f371e515659cdd40fc532629bceadae922afff868344ab5a637a6205e9e9cc989746e93604c2632e99de53094063e88d817916dca5743308479a458f8cce6f9a7abbefb52518e354e1b6cc7bfcc181ee36b0925a60238775e213e15da9eab79c978f464bfb62487d9431bb02248b0b74dc730723337389d0e9902f0ee08cbb2c2c028e6a1f7a02981a3effcab960ec9ba59294862601b21c042305d9d437e46e05eddf3069d4633ded296ee33088a722e86bedf5e2ccc46870375b6f7948aa87a144573d314c2c0675403cb0ea5daca81fb68ecc6e5fe82f4e8583f56180bd1493a760caf072e963d7ce78f3dcc962ee164a94fa42ef07038c16d387c898c2d0366245059b926588587e67f9b28ba95ac4f2984867358c9d0ce5a365787039d262372560d832dc0a25dd60c055b06a7cc6775fbb99aa1b7b40a91a4517e43a24f96b1b3b9cffd7d9b626deaebddcfb9edd71cb6d801ed83cf4d1f59ef21f4757a55d60c4f0f3e42f3e7a1a63bb3e830c7affe20d0d481e232bc031e20d0af96df0d1646ed016e592a347c0510824ece687227ab603c7d262e79c4b9ec8746d03c85d52ba36972c1524073fbd87b75bbcf051d5ab1da6cd341d8693119 +expected_result = fail +expected_shared_secret = + +comment = Ciphertext too long +private_key = 908860dd317e8f758ba5b856c09a14d588c3dc105545e74cb4a3cafca5c95d706fcecb0b456004b8142de9b0194d6b811d0bcb238acbb562a9e4409c7058c0bac82fc563cefbb00523295128295e14f8024dc72db09993c6ab6fd5361801cb9d1bf73b3e563c872999379a29d6a50bf163992a65199288cb678b31bdd9c49e204506593e17826bd6c2a79f04148a35671dda52ca23c9312a6cbcd0a18bc66c9e905f4a2275560b25a8ca99acd791fa531889c16925644e00d281f4ba6d1936379ec04b6d00ac86ea334467627ab50e612a051c3c3d53f9531f5750e7f0774fa378a827220ae91889f0c21f4a4a7d6573adb1287b028ffbf7349b2792881c089608aa602ab0ba081e6736cc419159ad94b6e3497cc527c884a12e4e973d58bb2644d9bcd0eb95ec63acfeb5c61bcb398804492972c21a9b576078897228bf671926188784b0a5110bb0010ce742fba2cef94aa12f230f75c6cf943cbd8a428d1d233370cc34abd3725bb7ae37422c45f4ced6d1983b8590021c35e37697e3cb62d9016486226a2fd268bef894ffc15fe8dabdc2ea431f227d17daa98cc2b1b7786ecb1bb53dc60f2a8b3e692938a1e48688d79220d7be17882264e48513fab14eab66d66637eb4aa96d623373bb5579d086ac70c3e4469a15c513c08073edda7704f811d2c72f08da9b41d51f09aa838bf6a53d7baed31bb152d7131e475e83920f5643c66210919fa88a18ca6a7c118e04416233f39d5a09b38497cf1d1b6757b85f8e4545b1a36d1336cb49309d416c5803eb206d70aed42749b6f9c66896cabf1b49c0771840c525fd08c92882c95d2890b80154ae782e0bcb3bbd0b3f9f2993be1294f5965df9d2527303ab9bbb7643c4b56c564fbcf08d79f4713eb5a61e816e665610f9c2c3b6d2856241627808b35c950614d25c9b58991399617068cd83ca46e041ca592498e7e36c56430770b6bd5890375cb69b93e5c11caa8e443b459e962058c72fbd710004613e1b888b1b78306928cce0c33134f72ca080672b69100a2ac9c793cf0f967d834262c2979919fcbf369cb22b8766bf28bc15247652f5787d48a51d021ed199a1b83b5ffca73c8286bcd0d09594159736c0106cc09566d018edd2151b756db2f2cb2cf039f597ab62e62b452513f75a2bbba64262c7a972f1b5cad84f77363c651a8f16820e3ed4b5c1523f8751c6d13b32bccbaef7124ca2db9ee4e746103640076a201073015ae13c13d9c41783a5dd3b4b98f45a137a27fad2cecd80831d426313a24ebb0826ea323658b88b5c942cc447238ef4625ccb609ad35c77dc465438a5ca670151d06e8f5593aac7ae07e24cfb581603c155bf974c57a8aff13a9544b4234a27a46f4b9c0f5a53ce623f549184bba037eb58c30cb34294c1b1940a0868f52c1c7cac60588c3449c8f820af542a4b33f6b2f8f522ece22782070caffa91951b1b758739272704af25a1f0561782cac8f737439454314758831a228e00b35d6b7b13515871a131a250a1480f597053db72d51766873947f4c6c5ef136a792c80938a79124932051b57efdb61efd2b5fee266fa500be19248014582711040ec066350c02306b218f6cc267dcc1ed370249c43ab5291515ce12f17729bd70233ac64b121993220b369f1852d9af71526a78bde57815eb497e23a96714c2c19906b347746ec117f18f59386a971e4b1c093ab4f17127873d41314c1aa473c17876c3073a282bd9b8e51f5a45e831ee9c442c5c883cdb5504975ab0616842d237f54cba4e04cbf8212abe7779fd23b852d7a15442084df45433928630b65b059f7980c461089773ceb637cfb93af9a2c7331654fdb0c901130a00ec27813458352719b8a73676d0b42d2ac571531cd9307b6fc6625a933af61897e5ceb7ea1c63d7da32326aa32e8416f9ef62c2d49691b1babc8d280d4db2f7118ac0a348f3645a3a626247f6838fdc23f53f99c13db0afd729cadf91d1288687fd2a52e57c6e420cad4b12990513091997d7da87cb1303caeb7406a69a7c0981e0f47546eb4cec2d1a28d6451ba964682423ea7f4472b812e986003182919aff13dec07a253293ae1ea94294b0deacc69e353773ff06bd034cf182c61b8f1af0583954f51c69ed13c1401355a2b5189aa972964c7d6c4887483ad6ef984dc1c0e8bf27ecc24b2ee6c0f21929a04f5245f22743ea13e5af86a5ce60fca0a24932184a6c8016d4a2507c065ea56bff7d7a8c598320828627bd3a7e745bae8821391b3223f0132aa0a20fe847e1751619c3054ae7c75832726465aa8a2ba0b1b048ec1246b54bc0f9f72a7fbf86145163f8397b01bf03b4530c29338168e1a82afa25ec7b24e7aa12d8059819b3095af3b0df7c0757033070b4c0383531ed6c911fb492d16e5542586089bca396a149debeb8a11ac9e9ef0ae478b96b32479c244267b535b14a92b59019576fabe3f928bc4d6cc00249dc5e126c1fb51bc59b76f04a97ea07dcf64c7ae6c32eb73722c284313337ff38b61a7f3784af68e1f352574033a6c4519edf8475deb9ac297be9dfc175244a52f0b8044e5012e4c77935a64abea643607a5a6b7c7fc2564ef5bab29f661223b71174346a0140eaeac62e3dac091770d9adb6c36f08623741e928098bc13c3d5863cc4b128dc53ba8d76a7663a08d227311da2333e31b948130a220017697c78d8c9cd3107a4d6b844821c65d31404e9192b7fa651b4f686c30044e02bad0b574664b8bfaf01218931b2980b995dac7d2f9c2629dc5e52b40711629d41406f95211017c649339b9264351c4a6667e3260842052816120c7b446f53287d52390b196a57ad649610f850789c5967441b6725929fbc24cbc1a558cc925e57ba3c371c2f672e312524e91805fe3b565e62c87d3058f4d65638431e9cfc5602d3879c51794dd8059370a5ca099b67b1b3eed840ff7c76f9b469132c458760c64288833ab09af5a7a9fd943621b88addd51d9fd4961fd124df4826308a3ba826b97ef5a43bfa641c4a9d680ba088036d93633ab612b1b3d258fb8492e98013265c659ee9aaa77b4696565cd23522bfc09dff375ee63a2ab63958432219dbb0604544955f33788b86cba1f2cf2d17538d06b2801ba4a0e34ddb934f730a6c9e043086e354f4a80cb85a55615921e1c247806c567f7019c7e2428be9c17103b70948bc536b1122038a383b06f56a57e201a5ddb8bd11413c51a32a08a3c275d32b1eb8a450006e5a7b71da834ef87e2f31301e3eae5311cac4c0fc468e00ba5d109d89b1f66fd6b56d92166658ea26037fa634a19fc6209891a31cb79e8d748529f9f07ce7bc62a9fd694370642121598dc9fe98734e034ab9baff8c41a46491d5397b70296d12 +ciphertext = 80242d29b922100f3c04da9f211331627fc431749b103b911a79f11ccb80acd8a03fb336877d2ed125e19c8620168aa5a81fc52ec81562aeeeb62c2f972a3797e3cd96a5a65ba7b228df44d4c2f7d31ae967e4bccbb53a19af66bdf44bb2ffbe64ae4331f4c49d3088695503af456036f896f7591c99894d36b32cc1debe91f4737e23fda321165d5e5fc205db826bda8f40352288a174c283bf1c817c94620625c4283167dd3fa5100fa605bd598959f559714eafe222da58758d0d436a40c455f18a5df742dffa2562dcb31146751fbe1a67c587da94284fe20a668045e302f6d17564033bf0114c65283112ef7822afab4bc2aefa7859075c66debe6ad441fbff3c150dc62b87b83add674394bee61c15630b8117dc5c069766fe0946709f51db964a80ba7fcabb28a1a516914a87f97e24a0446f8374513de9859a7e9ff113b474870ce1011282b11f828272a36d054fce938ffe0c581d99fb10c2b8fb2378148a840da0dedb73211bc3620771ca3270e80f8b3a989930938c831695d5f5579f6570f7c5a4eec855b93d0a8920647b0940e1c4ba14aafd8b00b640ca192af69c7afcbb83cce9de5b61877831857e9621f1728195e490fe846d2c139c8c439bb7e9b801dd5cee859f75ca2058e0c56edfc8895a6c64b31edadd829e36020b0b0f7b807c22d9d3e92e643868f774d38429e77d2461e36002158e7737ace17a2e82a35585035ca51e73d59715cd5bfd72c347a11016e400eff5fdb4c19f3cdd2d2c044d56a6d64768c012fb4a45002ff5274005f647d9691a75f23b5e9b1d0a702225c824bfc5e02b4f3da9c05e99059ebae5f02111202f22e255e347b3ab1d8133193a0d3354b362682781c6e007904acf76587534e8937ee5e7f896b83aa6fa84c4962a6648cf56650653a39114206c3f2a82c182d8195de7dfbf3d5125158b6f204b4fc7bb12e0e97a52dfd2abbc293796ffa918ada84ef3a2fe5b119fcd030aa98ee04c3dd01d9620d9cc461a513be55d711a5aed657200214ce2fb5e7b00bd2ece61996ec32b88a676b92f30f789e07129d87e17e914f2d709e861e316bd20aaada70e6943d5895476d4bc0ce0ebcf1f5aa79a9bb2fa8b433a3e2778f466fe1f960d4c56f2c928483d3ee26e3a93c133aa0da0a3e7920f8e14492c8fe00d4a4b7777d82e66a105aa92cbc8f956a90f2dce80142d30020248e5bf908c50ed16c0aa7f0675ebb0aee9c87d85a1b323692c81d1b66444aeda770ab086672871273fb36d438c25262524e27f4948197e2e8b0d00c9f3740d76cc4f556731cf810af4ae5697cd0ae07f76913780f6afed660a1a514e0a0e783562a350484dd5bb664f4be8233aa680963862db422a24bff26c13a657797e71ff49e93e946a45c7588e48c2df1d91993ed35d5933b75f65d6438e7e18909c3c7c89cc7f3bde077b000291f6179e8322b2d0a7fcf3f0ce88a6ff757822cf7e74a261e7d7c794e764e01ce8010e00b926825f20d3dec373aba1d6034200b5f8e80d62027312d54fd8a0b391cd220714157b657f487e51e659ce62c40e426bd1b347b5 +expected_result = fail +expected_shared_secret = + +comment = Zero secret and error +private_key = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a60e1a95e846cdcac4c779702db2e7d39055c815cffa89c71595bf461924ef21fd867d2b0695ede50dbb4994a8ca35e185f176bf1f28b3854d6e5f2dca7c8cd11536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2 +ciphertext = 7d3db5cd14b6db21e23580dcef17133205df090d24fb80487306aa6d894143dcd9bf9c47f9ae2634d4c2bef2400f839d42fa417a2b53baca917ac3e8e6c62083d8d1e849603ad45a6522f8e1058b328e38f66aec79c96065470ab0d15947dc61aa1ee1bd4a178c957bf81b8247c68425c4bc3f2e243b8ccc50fa0018ecbc215f3487b4f54a0fb18333ea2da8e2200a608a83554ac5649445a53da1177a3a11f69fe12c6ce093ac3cadb9be5ce9e6fb895345dea2a4cf386ff6ed2d477719af3bcaf2dd34f2f6746d039f82063fc589e5322b02dda783f524bf59fe9ea30b101ffd83be9d1965ed3eb16c52df822425f9029209e303df1725842e94fd806476e684f6f53fa74ae4960f498088b5eecf024b24eca054cff625feba4d133e6263b07617a467e0d9c0bdc0aa8e1f12620ade63643fdb573a798ebd81e1b0cda60a08ade91c92c3ff8c5877593ef0a90e6c20fd9bbcc3797d3dcc7a5bab85ec1e08471c73c3a19dac7d7690eafe2ecf5d19f3d0d3de2b700a622d1ef40631dae81f725849a2fc8a0225598b5941d74da237376e3c4cb72749e3bd76a81701d79f1423b2787a5b4276ca277e5279a820aa9abf164d921ec41a5a3598f13665c19311d0a75a0968926ef664869b8b2e6628db1887ebb2a7ec06432662b9c1494eb399142b2f05b6ec71d37ab33392f755f2a9c772f60a802648e3e54494c6006067f95946c09c6db484c526a4bdca4a663b329c45d7888cf8cf6cb20192b57b21f06800d711d1a79301d05eed76bfe406f85c2bc32e8680bbf7742719686f59564e39ad7f77e1d6226efa41e5918c4e4fefd8f24e7d3bc885af5a3e4965dbcac0b0ca594df119af883309ff10183b2f6d26a43f0cb9df9284c04e5780ea2bb2c160bcfe25a764fc0789bf40da40f7001c5d92e03ab1907e9287c7879c3fd3d30a1fbb3f4b5684d73b8cb0e7e0b8cf455ccceea2c5e92e8f90e0a1f99ab2d2353c391d20d9d9fcca8d449ea1b2d7b2e161bc198f34aac1a9221f5e6178be1f15dd26fb5973ef7b56a9214ffba6683071370e619ad805f6fc3aca3dcbea742c975f72d3c1c8b6f7a0fb86e9b4dd4fb76c5531d8d5a48be510e3c3454c2ae8196efd398bf117c2dc8c9891c8ac7db5317d4c98b5b300d6422ff8ad7c0b748d8dadedbea0a0742afc0383f6082c8428c97f49f1225a40e9f10ff3cd42d701d7a8d4d24fed319fd3b601601a9e9eea1552c1d169b4b7073b3212bd86ba3efe733b549950ec4b71078b3f7c09880a810492463d8152b11ef165a1ac29b81a17b844ef04bfde87f9c090a1453299c231c7453376f3a676f75e4836ac80ac294d69da31f60f1e470888808008088888000008000088088880880000088008808080880808008888888800088008088000088088800800808888880008008800000880080808880880888880088008080808008088800000008000880800800880800088088800008880080008080000088888088880800800080880880000880808888080080888 +expected_result = pass +expected_shared_secret = b30f8bbff487ef7613d1676569986a72ed98afa9f37842013a2467a9ba6d013f + +comment = Zero error +private_key = 76da327e31334a81297ac41a07b9c1d4e04ef3fb8b06e9bc13071c98f6a80523801d0c6e5e7848d143a5dc011eab319ce6308bde406c4ca459fd3c20c5c76dab11c3eff0a060f52d6c677242b6019ea40c0709d071f587c06557d0cc36f7c428383834b69b877308c55e8c816d8195f614336e50357da66fb3f03de7c3742fb23c2398c7868690648122afe321a0b2b55abb99306265b8e9c4be1771b7727775a25adb2108a8d62bf5c18571267e6c1b5dfc547019c331532a40550579e79426304b52c88cb722da72d63a8da549731d5625a6e28db6ec22f3d1733df7775d5771857382bbca11dd271fc35b4854f58b6ffb25fd42286823790b1bbccb40c105e38092f5a744e19d7b758ce2a5379fcb1f401aa4db967fee4bcfd73811b214516a098d1cc726ba418118e14970aaab00293bdd9b18de001075e2a1d25183bca677db703b010a7f3166b7a4bc374b913394c504463a42cbac84ea799d70db4ac0db6dc3da8c78149bae1cc5e4b65f701bca315866d6a67e9bebbea36ca91fa694929cba572c60a1d1006c95941a640d472bc2b30cbb635087170381a4328cbd462964c80692f224ca17575fd7cce32425d6fb19a363cd114524d8c4106cb628253bca70377aa242751b626447fc43de18333dc21c841c236eb0b2073a2a8f9a268c931669daa4c9036228394fc8a0a2cf809a1a2929a5ccc98f924a9b7282f922c5ecd96cd1436b5b21692610a44747a2435807c50581dad25268d737fee3834a54967e76c3e7f537023b57f6a7b58c191427a12282e06421289448c97f7cb042ca66927a417e6747b3dd501d119cbd4dc43d18174aac099ef85839c7d9425d87a17cd77ccd568bbf4bb0fa8ca4e5005f9ae815a307471219a9aaf60bea631e07162a1818c3c5da6c29385fbeaa76ff4804beca79d1f842c46b9fb29c81fc4875afa0b178564d26b26cb21aaad891822ecb471b76a869b83838388b9f5839e0c344a7eab55c392c99019a0841b20dd14f36875853c6150fa46c2572828f51b9636b00bad5940912923252be3c49190577c928d5bcd6983bccf00875db487287ada1849d3339069195380c1a3ea34703792251e5c7877523c1b6278f9e40cfb1614a04c01d966c41bea36a10492edba56a90e370c1995de2203aff43002446a30f3771af65924b8354e0dc2fb4aab0295925a23576e4e9770740845ba541eb23610125c782c6c82af506d9a25d148373f5f48537d7b0df7c9e72f10938f9cd66aa6b2dea9322412eb01cb04de39797f78efa29186af03d90588d8488914f94033b644663269435e2c26b47297af4a324526301f2cea3446c2507717e83c29c8a53f277cb739851bfc94db3db6c6d2a35df897ad06420452281d1659e7aa89e3062abd2a1a7113cb373e6856b7acc402abd86418c554858eecbc2b38b8b9920cc0fa091b891c8a4248cbec13d52984c6512a025ca69b34477dda65e12b7839128427c42832a1c5f31e5c3ec09497667ca7e0059c5f43889460344fb6985441afee726b58172e2ba2312aa10639737325cb82e2947299b94aa8bb021857232878b45b03f9f0ba5b0ab75c1773c471ab51e666231c3c37f1bc4630628a9b1272fb9af1c398b2065bb3d95582d63859ec7006f9c80b1d0c26c22666dec1784f76b4096b4fc5892a49c925ad388a3e31ab2bab228c91985b295b730861ae72cd0f733a0ecb85d26844ddc8d28766dfaec97486105a4281663c67585864367b7521e968357940bb31ac0658ba60e23baf9d5cf4b2600ed8b19f6a7c974fca655b0b2e5bc019c8398bfda6bd6442e51d365c3839e6e4cc124cb5529782692bc68a58617517a9d6a316ad9e93695e48791897a0ee3010c43809d0a6f5127ad9f43578d5842ed91902ae068ce3ac8cfa419e0dc8c90b0cac51a47a2a16162c515d0b98099a02c7bd82cce9532590c2588955c8c37c5d957736c25cdc7329f3951653747b7b8f9b1da32027121a53d62b949e9b15a7a29d07716a74486ca28bf6ce3b8bed381cc391890f2259e60a12dcacd293908c97c503606a78a4c035a10a966415788033cf870234986820ac71db9e322392652547a6f5836c138b869dc409c16d67f1deb186454ba33e6c45cb24e969734d4da25946a427346915d598a0cb45986fc73dbd63c387421bf95c11f6a0956a76697d6216485352da8932f697e8a02c293bb76688c550c63ca633a18f1e07bdc07951a996cec3644755c4a0f55230c48844ff6a82511976e4a0a17a499e768207df0c309b814e30a099a6511d6f3a499994a821c9dd41872860a977e7406cc2b3b69768b7ea720b2f5858df28f97b77f05d2361c62b100271db35c660493b12b66938845c1c799b5231251980a99ccab6356a0b445e86098108126812121176f13979e59a1029cb040bf36aef192aa622523866ab99459a01dd94535477e1755101478b53ec165c3197d0110a7b4b4892a3bb82831b300e55807c44df5f6c1571ca125b74bc33863603501abf51120acb848eb1daa2a7f50e640fedb74e01307f68798e98acee0e91bffd8150f2bc9780956b4a2697a825da419aab3d3946797762aab8cca9a5a65dc2edf507e8a9474d803c8fb637e05c94cabd721eef5716ca4410e69220c4a22deb89c82526a5b506bdde8789e2359352c07cbb90f3faa867c538d1926051e3c318939302dd31c34e894e3917e4ddc60f3ca9d3775242003ae7642035267757438a5deeb96c46489670abb8918c3c4b42ec7c7c3f2bc74f1269989080782c8941a2838439c3425d88f0d5537282a677ae1102ed695dc447668113481f89e60659f1e017dcd3336ed47710a8721cc421b024595a86125af941203392fb0f9cfb2fb7af950772319070ac60f97c2932ffa71bba6a94d47c695bca3922835d86a94cfc360ba637939034a7850579c7c5e6ef90cd7ccc983d28f357ac379a6b7d6f328bb0283d79356d6b28041aa0151d16605798fb65652ff270114f29241b8774f94553351536526aec996be9396282c66c77b63399310019ad8474912bff5bb1503d481bb4aab4fa23824c68ae5058230ac2ba43a4805ca8cf6b07b810ba6d415c4bad388d17373b4535af6234e42187d33ba51dc75a8cdd3c80870cbbbba89277c1b79e631f959c8f45689fdb7a6e72a97257aa188f8548da934533076937a140ac62c598a40adcb0bc0e0af7af639efa4128d10b8dc0197a12ba1e3c9c68b461dc3a7ab2975482c62810a60e1a95e846cdcac4c779702db2e7d39055c815cffa89c71595bf461924ef2d1eb791335eb534d3f66b1e40c2a9eb888bd36454b2a069805f787b8530ad7c511536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2 +ciphertext = 8d0f4960c3b07ce8148731d6f2424e614145f9bc98adf02c0c9faf944c708502d96b8142b0823b6283faa03ab500500684ab8646951f90a09ddb241f5afefcb2a75c3bbe742961ee3dde84518933dd19dddc08fe0c2157743a5d464738f430fcb0940e3b12d8a2458234cf3d2dc475fbc589d90f5918dc8c1be0bae511d6bfa0c26598529a3646453019008df6bd4d2689ec76d5b0bf1efcad50bcdc1945bc670b24db9e0fdf1880aa9d90687bb1f4d4186ab444d2cd1c91b7a7c57324aec0e96240f9d817929f6b91d136447e46cfcfe0d6e11ab16d47dd095252e13d61ba2ba1f5ea4fedcdc0cc16b2780edc9b4e4941e8b2dddf791da9f8aa6b67906c52fd368e1808035377af67def8840fc44bd11896e594deca14d4cb942b28df99583081a3e9c0f5c8a989d781a062765214ca381cd65683faff599eb6db4752fc667014a8dbd7d2fbd64016fa33c7c8d39a36265f300501d52ad4c532abd18f43662e9a0110b5c54797f1148615e52ebfd60b07f9dd61c5f22f563620735a5c55dd3173366b0ec207722afa4e7791453f522a898b9fe97759e6112e096185e40b7447c112d508ef6f8afd64b0c2bf1f75cdaa42c9db11f0d997c38dc5417fe39d2f99f00abb50b66cf1f9ba5472b05605d492b8d483b7708568753bf415938a3c26ccb361873d0a1d1d42820cf5ec6986cce388b0356b40ba6d572f19be691a654356dc7e90b31bd04e8ba9e27fdf179037c0c8e2d4440eca4d849bc85d61f2df423bd09d90ba00766e5e6ba946e53a66c119611d5b017032c5a39c9a533097dcae083d3832821668b1633ba1aeab81f556d61dc96d3052b6497f7cc349b548f90fde55604c33ce018095d72e8c1a2468da1c6c5f679234636352e5ac1b08c7508a887b1fed6fe466520f88cb5951b86a4aa6c94398db200f4ad7e51b3321af70124f7f34823c4af599ccf925c3002d297760bf4baf7fd1465e95cc824853562623540c544c8d46a4c4e006837983f976d47cbce04b703dae965111948159ef0c95093df21d80555016265c582b19b0dc8403e4e297c980129485311ee1ab7ee9e4f37f627ab239f5c6158a7434b8c6a654dc305e338b2e7c9da053d6932bf4640c2215f68e2020658ec82ace46300fab43412d12b2cfd7e09954acc0e7b928b2fb791f68f7fb455230292eab955b4818031e65a54bfea008ee5605205fe4d68b26de0e60e99ee5acd069a23e5d83ba43745985bb0cf05da32028e66bba8516889e6dba565a006624433c6cb23147008dbd238163739adca132ee73b4eb0415a3b754fbdece10f926f7979c6f85d0a6e9ee0e881f13f50c657cbfc345185f55167c215d35dd0a0f88c3736119d1c5891fe5555dc3350c86e2df0383aa876ed91f03207811e0d6d752669b8832de3836481c33d416f63ac05234a996d7330b00837c3f267f09c74f0b4b85a2bf0b0ffbcc23ec403fb621f7f94ff5b14db6bc699545f15e448223e677906f8d4eef5a162e0b2d4b95e205b57ec7fb50a03c7ce1f53d7b +expected_result = pass +expected_shared_secret = 6f68f7fde8fdc93b27a91e7989842c6132d60007d2bb9d99fbb91d4e1c79fcd9 + +comment = Zero secret +private_key = 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076da327e31334a81297ac41a07b9c1d4e04ef3fb8b06e9bc13071c98f6a80523801d0c6e5e7848d143a5dc011eab319ce6308bde406c4ca459fd3c20c5c76dab11c3eff0a060f52d6c677242b6019ea40c0709d071f587c06557d0cc36f7c428383834b69b877308c55e8c816d8195f614336e50357da66fb3f03de7c3742fb23c2398c7868690648122afe321a0b2b55abb99306265b8e9c4be1771b7727775a25adb2108a8d62bf5c18571267e6c1b5dfc547019c331532a40550579e79426304b52c88cb722da72d63a8da549731d5625a6e28db6ec22f3d1733df7775d5771857382bbca11dd271fc35b4854f58b6ffb25fd42286823790b1bbccb40c105e38092f5a744e19d7b758ce2a5379fcb1f401aa4db967fee4bcfd73811b214516a098d1cc726ba418118e14970aaab00293bdd9b18de001075e2a1d25183bca677db703b010a7f3166b7a4bc374b913394c504463a42cbac84ea799d70db4ac0db6dc3da8c78149bae1cc5e4b65f701bca315866d6a67e9bebbea36ca91fa694929cba572c60a1d1006c95941a640d472bc2b30cbb635087170381a4328cbd462964c80692f224ca17575fd7cce32425d6fb19a363cd114524d8c4106cb628253bca70377aa242751b626447fc43de18333dc21c841c236eb0b2073a2a8f9a268c931669daa4c9036228394fc8a0a2cf809a1a2929a5ccc98f924a9b7282f922c5ecd96cd1436b5b21692610a44747a2435807c50581dad25268d737fee3834a54967e76c3e7f537023b57f6a7b58c191427a12282e06421289448c97f7cb042ca66927a417e6747b3dd501d119cbd4dc43d18174aac099ef85839c7d9425d87a17cd77ccd568bbf4bb0fa8ca4e5005f9ae815a307471219a9aaf60bea631e07162a1818c3c5da6c29385fbeaa76ff4804beca79d1f842c46b9fb29c81fc4875afa0b178564d26b26cb21aaad891822ecb471b76a869b83838388b9f5839e0c344a7eab55c392c99019a0841b20dd14f36875853c6150fa46c2572828f51b9636b00bad5940912923252be3c49190577c928d5bcd6983bccf00875db487287ada1849d3339069195380c1a3ea34703792251e5c7877523c1b6278f9e40cfb1614a04c01d966c41bea36a10492edba56a90e370c1995de2203aff43002446a30f3771af65924b8354e0dc2fb4aab0295925a23576e4e9770740845ba541eb23610125c782c6c82af506d9a25d148373f5f48537d7b0df7c9e72f10938f9cd66aa6b2dea9322412eb01cb04de39797f78efa29186af03d90588d8488914f94033b644663269435e2c26b47297af4a324526301f2cea3446c2507717e83c29c8a53f277cb739851bfc94db3db6c6d2a35df897ad06420452281d1659e7aa89e3062abd2a1a7113cb373e6856b7acc402abd86418c554858eecbc2b38b8b9920cc0fa091b891c8a4248cbec13d52984c6512a025ca69b34477dda65e12b7839128427c42832a1c5f31e5c3ec09497667ca7e0059c5f43889460344fb6985441afee726b58172e2ba2312aa10639737325cb82e2947299b94aa8bb021857232878b45b03f9f0ba5b0ab75c1773c471ab51e666231c3c37f1bc4630628a9b1272fb9af0a60e1a95e846cdcac4c779702db2e7d39055c815cffa89c71595bf461924ef2e866bee46434ba9cf83567a32eadf682184ad0feb178fc612796d9b870e80fdf11536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2 +ciphertext = 591416ed43f689aa76a117f623b7647c6ebade29bec5e089f06a7ba3048178df0aa0c26680f99d0186432f9fc3987e0a511f2bd3d075603d315956b2319b4a61c250c09a5f8a49445050e6c2260daa43a6e12e7f25bde3a94fba40f990c950bd30f9229d5c65b6bb4e13fb8ea50baa866cdda065636656941dcf58907f6bc45c778dbb8e1e8a9bc1eaacbd3ed5c034136afd74228e70c4cf735a82c696ba386a451cecf4b43a71340012ff8676c7d5b4b80e0e59f1c548a40e7c4d25b8526bc4fc14aa9fa7935c9860efd43095538dc081982ae2c81a96f9634685f506bf7cfb1fa7fde39594c5252fdf753818be40ec6191fac29f9512ab94e8c03ffaa7990e3b788ec43d749d78da8f729803eaa864efdba24dc3db1a65d1110922f612ac60c3cc731d65f8a1ee946ab348d5ca8f4d749d5b07d0ec91c0f74923533f86640cbb30b470650d2b710c690651c99c03caf4792d923e5a094ce709678efad3b474e803a87b7d390ef05ce6fb2b84eee8c31f9cd325479f78ed7dcc82d06d390c616019ad6bf8d7c18cc5f719afb06ca331034d620b108da68656c2c5bcf206046cf954ff9aab6f76833312f55b0ae36330035afea8e4b9c3fb522599d7158f3584d7d0d70e4557568b7838e437f04bb41d4f8e8d41969fc8dd2d35fdef69b85d331fffbc5d47e1fdcd60e8a10979f35722a430c55e9564126182a8d9140e8cff41386b6e81a1033a9b40d75ca6aec60beb7e3080223dbde023eb59decb9054663fe1170f2da33c352c86b10c4cba4cd79878a7c4e83745764355b3c1a8b4a61384e1e9db00bcef2068ac7d4a4e67a1aea96c52ae35f998eceaef3db46b43b85dfcab0a2994dc700868125e3460e2f9c11a0402432e34a0193ac2cde8fbda0f1a81371b43f271f737d7af2af211f5287389989f71cff7c107fadf8010bb837d3cf2ac884653ad9854caf494d5196d4fbe49585525e50b009332eb86303ba5cf5ca11cd19b687b5f3ab06c2e36327c89e0ce03efb32a813190a1849382e82cf554d86caa9cc2c9385bc3b203d20415d0282543ed33ccec14b2275014a13121aa206a98ed60261e22acf4a8eac9c853e96f99d09ad7c0c46fc8e93db918818ebf249f871dda0c5220c4a46475266d2dca6b609167e120930861bce88859a822f18d044befb231ea1e6c7459bdeb14b6e988a85c50b4969215451d96a653ca2990c8db43f44df0809dd894b072037e647251aba319267f7448b408aa959825d79e011a5792ce8dccfad35553e4fc662867811081836a839927a4060bc9be4ddc69391e0824bb16d6376f03077919e3525a6865410c71a5fc8e86b9cbe9043a294c90650888808008088888000008000088088880880000088008808080880808008888888800088008088000088088800800808888880008008800000880080808880880888880088008080808008088800000008000880800800880800088088800008880080008080000088888088880800800080880880000880808888080080888 +expected_result = pass +expected_shared_secret = 1ef65648be69ac3ca3ade1382a2b4a4ba1c0c7a04eecbcdd9e34af67665bbff2 + +comment = Random ciphertext +private_key = 3e52918647ce7b53adc5493a377943e758a00697bd0b831ccce27f0148c3dcf18878705db008cd1e637929d3ce7499592d0190662131843c155ca52ecd145c69d21e42b6a07b0830af558a32cb23b37c20b6d25d91464828f84425289459696ef84401ed0561f6a38b9f58554fc072ba9b78e9769620aa43a6d6200ac1769daa6432f89aff793388f1179b3a36e2c397d98a9ae1778ae5c41d5a88cb299bab1bd5aacad4a9f0a68aaa8c7cc227c4c99a7a08c9cc0ccab4a0cb66ee8432fda46ee16aa6ee051b11021c04e870cc80c6a7dbb2c33260e98c007d80bfcfe93ef8344c14d49c6ff872fd8b828b7ba1eca73628b6260ecc4af1e440ec073c340c0140c4bc07f05376a25fd40171ed621d1e2137a3b8c995e1921b14331bc269f835b3f5a81d4c25cc1a47c0d2225f3cfa8cf082855176634e22bbd04a9c05924c01d6bc223200c2b8ce85fa4fc3381966c14840680d0137adae5340e5221358b235d162a3b65a3a27529af9815ca6502c2779b09606a8926602893b6fe2dc34254911a5e46b0aa8069ef122934cbdc3f4b03150854c362f0f6c4ec3451c53c57a93d39b1d18c5a80bb7b7840ad951adc7962911836b65e4717d824d7c66a6d6c27575f83e50b91a25864ecf7133293bbfa3e5cf635c1babe7b70e0048c23a6a93e4a75e162e86649b0b1b0fff680d34d4cbe191b200c766cf0b936ef59ba9328dbe445a2838c2d3c68e4d32b74e5754f5b785412cabf1e1c121cabbe23925289a155d858e026916e80019415c69f36c0ad5fc914fc4bf26079113da984c664f7f379fcae92cfe7903d66695607c016eec95fe28aae5f72d483a464399bbb39a2a8ec3cf6a4a449c179759b126c352bb503709017777f7cabac4ac6d15eba9411c5cafe202f85379556b70c368878079a5dae88ce10228418902dc4b43759b650af7165dd69a2b440ff789741b7cc6ecdc2740b497a88502daa7a661316bc0fba5e90bb90bc9cebd0bc4d7a3653696040cbc1bdf3c46a5c9046cd512fa5694085b2a874cb613a97d1f654441564a5f8382b6751fb457793f429ac09a30c3a6bc89007c65d6a189a77ca0a820f6b773f51093ff94bcbd4cadbf79a487d76b62f81316484b5c005bdc84133eac7cd12a418500545a95505f912dd0082921670a134326cf2b69fb68aedd45602fb77cce8b177326239b60bb94f741a232b52cb219e7822016e70ad3bc102b86b95e0c51c8424346a85e66fc6f200573c73ac4ab287de53027e0a544dc127705492d42974b0080c551f37d1efb0cdc076b0d0b9a55dc33ceb4b798988e7544c44fb98bb23aa25bfa6783e55ad7304b9e222c997576d5f27872e00ba9097ba1a99750f00ab791b638c32028e655f9167bbeccb72eda40b0b648c5981ab2479cf3c6cdbd7034f2f0cc78a86e05c2c1b2baae9d102dc8c57ed11a8efa884028647c380c8eca1a45ceac7365db470b8a8375b7274bd727bafcced80a8ffad1745ef76cf9b898e9690b2fd477a7100673937f09325312598ccfdb5073e8768203a61790c0e0476dc7ac6131271776538839d62fa3b8b081278277bb23ab6a3e1eca841a6830bd48b77e324618ba6eae2544ac245cd1c5ab3ddc0e34835c8c2113f498b32d960bf8fc7170c60f8be7473e26942d57b4980291b9b6ad71533bee777e6de254dc8c129f97b1aa13c980f8495a857ab9747e42451125c4807eea3806740a3b341bb2fb63ae735001f7755ca21eca4980f64a167b1833eb76af3734b5e3a046d5a638b8b8313e5199c1e064616a09041141f6318286a203a0693a6b38817c7c70467c1098ac9750e2bdce8b0d905a9dd7b9ce561c1634c878f3fa48f881109c4a1f72772ec8c3b6f12226e780341b7570f0f64efb7b9efb69bdfd1493a19bba96fa62eb927152dc77525c17c977694e67a53328634c39bbc20212b9f08152215c91b1ceae891d75d6462cdc3934650dad29018b8b0a5f0929e4e586286ba2acd53b659aa1997c2adcd0a35861328e57bd7ce042d63acf61367548f31bcc31c32b7b70ac467ea4e34980727479cb6329ea2fdcf74c22bc4f65e16924b2a3216b448b920c737a58cbe510818c0820d520fb06252255459eb8ce7624aa90e06c7b361d9647221248061c5a789a127ee6b126f5939f3e712966e61991875ceb83ad9c71bb013240816a048ee21320ccb28f4ba5973563ecb2346a5a941ea374025784844b48701441ba603cfbf5cd7ee59e479a53d08b7c9b854ac374a0fc50294774b20d47127fc8214cec866673b70caa3d9ed2c34b11cc55162a6c9b2fa25645cba59e9a3126df5a4f1aac1b9bdc0afd772c55f00954a8aad0c7370993551beb2262a51773b5bde6acade0574cd2662fdc434c23da5845a8b7d3344430a215725003aa5337ef583c3f4c55bbfb4796d947a91454287389b729462f85727de20c6005456cf366a5c956c5fccf921a691b40c8a3ab858c248f2dc771e5751e8848c20bf03725043ece7286ba1b2ff86b8bc8f04fc4d65217149c1b579dbc8090274aadb36790a7d15e52e875e8c6973508039f06a3d2f13a9268bff901ce677262377b94cb71b33428c89e27896db887d525493ea4403c6b2f94866d9635a59f706a26036fb6c471529c45674c30dd42cd6c5b21b09bc554239c55c573dcd9b23ff05c8111aa9c05301ca45c424a77e3247d6fb5602a05cd2aa5cb9f1b2e28c27d7e91c21c026f7c08bb55047a14c02d09873ec76062f6fc2052e6bf9cf79bff15abb4ec86721044f71577b1e8c9b77b3f2804a4f8b7898a79a670963b69f65aafb1a56dd3545beb94838a704c82c111b194d68ac59c8a60faa6661c847265b86b82736437aca6ba3c109d6b778a84cefe1bb9e612c5d371ce86607f3c07864e87281832a8037270fb9662cd7a24d326948b0c2a260b05bea9ce8355be1d539768748fadf57e23c9b1f547bd08078937253c45b34411561bdbb0997308c99cc738a6550d2931997a0573f7d8650f26933d82a417480601977f998b4a147825670bc0d8f4b0c2213650f8841d3a2f11006915b6b84fdb7e29d16387fb01cc0580124cbf1aa2492c631816e7897c0c9821792f96017e5ea716134506c4f7aaf8b902147c3be046b48a85b7e2161577386fc4004542851f7c452e6f568b7323b4963753bbdcc840a99f30a22bbe4ac1bfc07dc76826af992ed955815dc7491553743c4a6a7699233fc35885e917c3454c988c4bb96c13e3e703f198b5d88acb6be68e169082c5ae2c39845bf15231d98cef36f30a113f0e781e0f8ce874313159eb9992dc0a3d1bcddc5435cb7e863065d04c789fb951565d6f1674047e7e7a1649482e1d9b0de92455cd14d0049bdcb7cea4b867ace5c8922b +ciphertext = 542acf1e3c7dd990f1879ef5b5aebd32055618c4e5b958995f0b22a78f9e2bdd8dd0cda23893c56f48a20d4df878e1cdbd39f50310f2ac0cd502e761329da00d49e7b8721f53af649ef7edfe74f259ffefd492f13b1ac396eb65916e02b3348560ca426e9b93beccad58bcf0c5804f0a10532635fcb74e45c1f8eaa83d56e78d8a7ee5aadcb7e06eddef900b484632bf1bdb0e1a4ef8b6fe34789934d9baa887ec5a39dbc6416f66008751aa193a9c313ef8a57a515bfe046953fa6a1329a770e9e1bfdc33f3a68dbd5cec1c2a55a0e41093583230ac35386645e6dcd166f25706efc779fec0cc4299e8e7501b93a857378713475782cb0b31ab645940f4c875548345ca0138372719c3cf9022034f17c28bb90f6090d4b8be957ec63c297a0ba95dc02f8761c18e7a948c1c20158230e2f9ff809cfd01b9d020b7164f8a3c54a143594d7d35b8e1ad6cb25d96c11c1b7f47f62a8d90c0e2b3d1460b86a463579e7b44ff74b6a29f30521588a26887797c60d86235e0bf4c2bc7166bbeb275996e1f50cfc36641710a52fe08fb5dda30f6129d3a304e336ff0d8698515b2cc450cffb45cceea7ef51a989d036c71367a4d26cd6025479d2f7ae58e700928e176c59b3040b054a09312d9fe529ce784a71513b44c1cd4073209a93a4df73b7097da88cea0b31c3e77e70abcb4b2ba5edd8db8f47ce844750158ddc5609dde43eac393eb5909d9415ee4698d923d8ebc28612f8b0676565010360b9406091ddc881fb6a992b70645b6898d13a8e3e449be589cf17bf9312e5cc58b03d3c181f7f176b67bea210337d6c52913f8cfe145da9426434c1fad0da7911bdb35e68b86b5bc6717dccee9222c4842c28fb13115278f1249b213498791082bab15d32f59481b29b9512945602eeba8af490af99fbb841bd1aead2b4f6f57f19dc970e83bd3928ea2d33ca3c3e50cd5d68e6ef516371cbaecb6b73f57fd5ae5b38a74f20759dcf217066081fee51f0fe8a93aabeab4717f05395e304e86bedbe11d462c1cb9d4e32e75b35fb707e7b509e43b450d6025b2d3e84e00f3d92b717578e820a33788013b2bda42f2701a9c6044ac2082e0387e141bc97a60bac45e0c1f4787bb5b892cb190e4b6776f5139082850494bc5ac56a6f759a0505ed4757009c35a4d36bad276185f1fc75399043168b22cc668a4b1202e03407b9fbb6a0799ba6a396ea78e137f7c68996f18f1636037179c4b920ef68526fc9008aecbfc0a2b02432e2b15832b35a61f438e06ce977c4d447612c13eebd0549edf316f64f5e7f3ccb0b46d19b79d103c1ab8f1551b6b3d22ab75a85660af2a9eab9c734875fef1d526da819829b66d65c8459a1aa404ec83842aa97a595e0271630644ade4df047f06778fe1bd1466bd413279940f15b9b848fae294bf4964286629682abed221e1ede635f315273854d57f68872bd9cb503545ef7b949b36df853eb7a4f47805406555d361aeeec6b77a0b6030b5a124f34cc121a927740aeaa6a381083f4e645b0d +expected_result = pass +expected_shared_secret = 0483742b451a5b2364318ed5cc233ce07dbb3fd4ec9386050cb8cf0adc8d41e9 + +comment = Random ciphertext +private_key = d1a0a90b4bc18a2a117ac39c6edb2de4c40d0cb2204a2a1740579b5ce7b69b1bbc20f332c99c2bb18cc241f1c2d349a0d5003cc0025f77b0beb648c94c6bb3ae6477c314218728293777115805aed692576edc99ce835433e8ac175b735c32c5c0fa6e11403be1a63472378c68695c0bab6a40c2a10f7218df2a2dbfac5078a99ffb4811764308525797e100329b8a3c2be7b2b0f73acd553991a5c808f0864a486a4e97069d38b095f1516da985dd172425d46123ca5dc8cc64190986d073ca62d5808d0653a748338600475c862fdd192f61659cc39c856475270af5691e579481ba108a5cc991fb6a48862feb8cbef42c6afbb072a195910ba32ea24b8fda6bc8efc21985f778a703b5db332e6442a387a91e6bc046a8d951df585e839cb6d00cafdb53bb4ed62476c66bc3e90c6ee47522747852aa05ba9bb2a1d3b3d9d8c9fd21bbe7bbcafb5769bab6c5f6a224d600bb27462f2184ce81318d283214b31758120b630c54c1de338407a378cf8aa33cd0ceb99a3f0ab635f7a4b32677cdaeebccae83a45283b263e3cf853c7938f13b6917681e28006b6646ff627740744a4f836d79bc9490c803c586236c8121861c3133f312059707b6a95711533e2d2b34e827638c31710c8706881aa3f041225e7234784599d2c3cb83c6881a63ccc194c566405038e5267f72cbbd51b8f48477a1703cfb6c18db3683d814cf16929f8172941a539ded701971e8178074ab2ba08a98214d39974a74ac3641c33996d218095b76fd795733602531ba6689e50bdbb25894f0c1e3b079a246070b991bbce65a24e629006a9b588ca5a3146bfef264e56b446b9a8654815f395218b8bc926b965bafd11bf1e4966be9b457e25b5cc2a45e519739090c9edb805f44699cb17aa487bfe256268dd6a2a0aa99e763a8e2b4496f35c0e604611341953cf7c326fb7a1421761b21ad153466c255020a324d718a4ced46b5405b74942535cd6801bb57533603b6d3904102fa9edab0541e5c90b0772210e51cbdc87e3681c4850114b3997af96a93889897542b9096f34750b09f16599d95466f0943c068ca588d923a35c7846aeb3e5764a29d7851f1aa554a901d4097004b980d6f60c079102b98726cf295603ff3b73a716feeec2fcee981ab126f33875f7f091b9af95232d8a9177144a8905e246547ebb8b50680a57e6c45539060ce091e77a214308b0414c313fed13846bb71c1c5a7b56638c800c1cbc086cfa41107c5b3c82528dcfac959e4a654c13993c639bca81128498f6e073e7182abfb33a17a4c024ae15893561a6e9702e83c2ee49c7a3ca2869fc48ae453586fe498cabb66766159f7001762372687b76a91aa0dfa418e1500a66fa296c99c711a971323b3442ab42fcf5688e263bb9ea977a16c65035b3f77985eb0736fc1aa8de9d427061884762c88d0a49456930f555726d3a387ff44cb653070a6f0032eb291f07209c66a1cd17410e2a6b639239f95873c003b6f5341bc66672e7c1c0f87687fb1d451d3625f43694928126a8dc328c2d6b30b616063167d0fe7464e855ad7e6ab4ed44fade0769b23b2e425ae5eb049560c5e1256c3e5f1b498241a938399fa260fd61313390649863ac639780ae5843a82c1c9c712b9605648f673927dcc81d4da647e4b379e7a9131398bab2a4aacc8b0f54b4db5c21e69a03bc6e7be8af7184cb5615429a1d2e60ba4d24777da8000a30934a4bd99283e445971b894c87239b9a8f2608a397cbd184c8bd4aa2dcac52ee15b1a87abc2bb7a07bb33c0ecac97a71fdbcc4aa267404fc64f528b988b0ca0fcb483f335b204fa4940324019ebb5d3a77ec5d553459346e7152e0614a6afdc323b078036f6397785547651acd0a0c03e11953520b7d307bbdceab228e48686c0c19c48539ea4c49fd77fe1386f8f6937905a9aee024966387017919a38048609f9be9d7a281c7a02f0458fd87cb36a6223db34cd7ed0cbd2ab35a1785d8afa98f9a64c4d2a48def73abeb985c5d79785671f1207cab5d30fb3e109c7ab8ea4466d48f602788a40d2970ec5f05853773700b4a2e836bb4b2c6e9d44ba7cc83ffdc25faa048bd72245a4366dbf48300ceb19efa132377697543b60edc04b08508b62dc62dc8c61b609b621d508d5f0162a639e4f1b8ddfb8206fc48f06d2513ec8567e12cb877b572bf99bd0cc1905bb7c42c62011a469b440aa9ed029cec13febf605a09c7ac2d33b3a812aa0a380fb297f48f65b6c26612e042eb26bb89a254b4665a78841c14cab28a556c056e01d0f283f0aa6236066225333209309584810585a2878d5eccf0d23746c4348474852a370ac82b38cd9546a4f414d127ab14b517def8386f07b48682ba321eac3395418da2475c2543e652a2262e56ddcb240a4b80670857aa40058e7d66b6c802d15191bb52bca8cb0a449bc50eb6c73f67c13ca3a0f33769890b4b797502e8911737d9744c584229935afa1716e6730add8a73306bb7d7742ae0a05a6f739cf52b7437968be39010fe842a590b0c770e428be79564c11587d46c613f418bf65b6881166cd417dde5ab98f0465b9c8b30c030caf8a8ac69ac65cb53919468dcaf5b6d7e88a1a949604073d6b0386dd373ee85017c777575bcab597b0ccb836265ca0ccbc595e51699788ea9d4c96264b8b1df65c3ea3a56328988d4a3b124f2375638427350b3db109514e472becdba0194bc95fe89582911e34b2c739d771224ac4d6ac41d1b6272d6296ffb424d9c6c322424e37038bbf1c47a5c7ad3d5178a522a52054adf0fcaba41caada77a15467cff9ca3377c8c240d4c902a5a8e6925f74baa146d0b49c7c386b1a45b31697d73620b6c36d4f5cc89a495f191883ad673200d282e22b60d5f03fdb901d7fa115fd23984b106d677203b9bb29c99a19ca0523d59c15d99c9952466b5de359c741c7a6b6957fb2322465721ce45f070397067b84a0f06744b2c2d207cc7db03cce9c1c3550c667003edfa2341fc359fb4640a9c0560ae7bd8fc6b4bfb033b0251e37f06d5754a2b336b47850b9dbd5ccc6b50580da245644beb0d0089072810e1b30cc180f55e75ee2e65bc353839ed3c697479bb1383b24b31bb76c0b9458c780121d9e694aebea6c8bf32c804518e99916431c8bd7d03b1dbc563c9940d843271ec555b037cbad5ab1a4003db6aa60cd515f1f047891677c4fe80f76239a5a7c7433eb7ab7370386dc1c66eaba111b0a0f52809370c741539c91a529c1defc0b6bd4482e6e5e4739a0b71b8001a0c201ad3847a6ca7ae267fe21a482ab12789f3613438f6547dcc642832e742810a7c778871d8010f90440ded913ef40fa68b4079833a9e34b24965c61d3a0ebf9866c9ff613a2af4a +ciphertext = 2036904d3d5f2c54ffb9debd5e80a77fda6ac9d3bdbe6ad673b9442507f68cc10d98116d37e8dbcc11d42b7787436801e52ac957040fce6ced2daae1d7b254b82e5aa8ab17e519956f40613d4bcad0171ee7850ae5adffcd61d10ba83486e8bda501e9a8e004b7b478b885b0fce034c9ce1673dabca43d12def5d81fd52ab8316aef232d51f751c574b05ba66dbd93a4012f9ab31e571148e7c649b4a437596250c5e8c91bc675b42c0c480723071fcf1a6e9612b684d78c25b8f645c127de0b9ff04ad51362b612869ef64507425b89eddcb4d3d69f693b0e0e0c4042f74545e4ab11fafe4aeb97f1c3b02d4f20c8e0be11c3d9b6ae778cc90ce2b029d2790348442c52562e73442f4e558019fe9a59c15d552801130a32d4cb6e4cf8ffeada36799490d3d33f29347a4518ea89bc127bc80da6d883a8db9700edbf62a8815a7542ba20a58724a50eb33cf25af24a974a0e85436a259c1ee27cfd8435e7588533c3e7f2b7ab02b6561bef18048dfe4217f6bc9767d481a7053e96539147854ee48b93ced985af30685d7ff3a0c1e7cf0a45b893d7d8badfe9e9e97ad772b8dd6d60f75ffb9b9c3b0661cc1c5b2296ca101528a32075bdaec375f20feadb56e1d8fa011f588795379748aa34ea25a8bb7564ee250a2f648085d04a9c8cdd0ccccb7d8bdbeb03318588da507c614598bf0c7640f9c6a15771b8edce1acbeeb4b1c5ec60769391e0b5ed616e8a49f054bed4e39ab9c0922f95f9f93319251721b6ac5ac90b61ec4d6cf25a55e36a7b2eae23bbf287a98de7adf1102b9cd45e3805fa8590cc39fe1b23db203c6e789dc9d78751a2da38509875cc3f755135bf4a27a0bcb7a0d1706a2c197b6883702f68c80b8634dabf75ac987623ef38d4cd7ef648e57a4df13dac839bed8959b558ad338636c3e04e67859cd28edd68d8cd47f8381b5ec5e92ddc6b07f7ff6d02f2edd8a1c4aa01a22821a90a9b11913f0a549efdb82df28370bd2186e798c47834cd23d1a6662e3f4eeded40f6ced0844c4b797d67095d3669aeef795ead942599a99b4d84164f42c312b215a4663c98c316ebb0b599f016d90931adbd41ad7cf5375a891e2f86da9da068ea44b9d4f2dae558622add24abf0ab1f95ec797082aa3c92d1d727f96b31bb2d0bb6764610a7459d30c90526db4e636207a26256cb3df10362bcbbba133d66587200aad59e1beba2fbe5df63d4434324bfc7daea0951384ed4bfb07e668ad2876ff781e133acaee564f701a721a6033a3928d8edd599cbf26bb0209b76bb5dfdf421dae28818a8925d3395c60ee3fa6e1b2ba1975b2d995f1ddcd8ba2e8cf2e14ba099b5ab34adbb63cd4f75bba2bc3a0a1bc147f0a1f3aee817f6d4b5a24e88792a9b64dd967e0514ecbf536116724356b38ff7b67933f777be2ad9baa93ceb7b101a27e6017ec571d5666078617a07b0f5b2c61325ad5fa9cb05b5342c8d38f7c76eaed5531801376486a1a2a507ba48af291a771aaa8fbf75f3b15f438010a3c5cb2195262395 +expected_result = pass +expected_shared_secret = 83979b9c20391249e9a0630a7220c29414dfbb2528b8faf2bd3802abf0d97453 + +comment = Random ciphertext +private_key = 33b26c26cb2bdb93ba803048568c3296eca696f62524d77f44a9603b53930cd22c8deaa61113a3080a626223b8f6165d871a6483e77cf8e8a68d3363519a0bb67858ef426fe5199a75a83ca9c5a6b54836b7e25eb1c2862e619a2c69114e82013a38a8310b4a82c813256b783b6613957384e46359e32c65a0639bcf415f1188438ca532720502613a3225404ee9349707e662df85868f210932db789c1849d5c6255a0284edc84a7ce88142fb2ee1ebb58ef4bc3730464df408ea94b0a0b5358f09283f6758ca031f9a64c356b03d9fe58aea082222841a974a192b649efad0b037e8275750c62dbaad739a47d1271f8af47405465d7078b749dba574a42b21baa28a751bdab46042d35acb57b1abf265f3d91fc58c54c7241761da5569f490dfa2b02e7916a8bb95b44ca74e356cc7040ad40087be3c1e34e6cd76b8cae9e814503aa74d93cd71b99dfa45c0764cb7b681a6bff29eb246868c00112b4c1bc9ab4eee0cb9fb57cb959aa8c44054c4576c462b60c17a5e9ed02207d757b843ad375c74247a47b4336f44d11b74265de54ca11ac07fc7e755332089bd2503b0e985a18b2146c699b29141145b3512c8ab1ce2cc23c5947227157299523a363388c34b63a9080e115e7e888d043c21ac9483c638125745aecec22b1aa60c52ac21d2cb2d527ba3f9e99c71bc47419b5f9500615ea9a1c5f75fcd910a1e4ca6506a5aba550bae09bd4564c7f4bbc87b616c7a1ac7d46002bb678c36b151fe8b76ec3476f25aaadcc45aa571c38a55af0f1c4987552e8ecb90ca14a0a18824681a038c70a1bb75aae0892a01fc2833b9320423598f0a5c0cd843ff2335c347ca6b8c9873c332681258c1c179207232b4229e4c137d6b399f01ea8111074a38638878052e70636ca7eb0d4788a5c1158e4bd79c85897b39329d499827f05b21d0e5236c2c7175557262cac923168fc9571f1c627150187628087f87b0a74215ac49c6cf09e8a008678b22d901ff90a34b011c190cb025361cab392623606a197cb7f2907e8e3aa0f7649dec9a26db12ac4dd572992085076c5ea93a1a6cc3458953c7faa28a4d3b16844170d928530ed72ad41c142a66c49fb7b344b122558b3df473c9f3d75490047c3dec11313352a2e4ac80f59aafba9cbec43c739746c8db2cf8577d69e0cc0a1bc20f3184af5c022500378d5771db2b3197516bc29841c42260eaa7c5747a324508ba270b2391d96bb92acc71ea9557309c23246c4b8c58965b541edc08c94096449c89c7328c25aab6ad3b3c8bf94a3d141e74b22a57b47c2646bbfa792a60a69601a375a481459ef855fe7a027b105896d8665cb6a0d43b7b1503216961cc20b38b53d154d16c0455835a81759c59618ebd82b70edb543c5b8c7427166d4c65ad961f898bcdc8f6c7813b7c780c437b22a738732adb9739ad35084fc538364c792baa2af97926dfb9c52c4813b6905c53731692875545d81f5035837d5362ba8c425ed602271a53ac75245f850b89d7190d31a3b404365c6a602927b9d29424c62c6b18d84879d14c1893a62f54458f34a612b80dba5835230c7374e2c6c40a71d7d9cee9b733f0000b851693f0210cc5e502d5a03a36a0c090da9d26f3a8443374c6457fb5a9a2a622aadad9a2b3a131a13c8ebb82b02d562ac526b7a5ba61c2c0427cb09cdd0c5a55a8397bfa02d690856d3a4e861acb16652261b05158b7ae1070910633b3bac026138188191730a1598e488a0cbf547907477772514f27e11524a2588b7ca4faac499b692e389955e3d25fd38ac62e8a2cee42081ba84f1b768b34134ecde68c22e4132036440215b84a2a290e4269e86278223290ef58cfb6e307f1904a33e71ab7397934a32ff46724bd45af42908ada6574a63632545168ef69ba6e4641d3309b3f1a1de960950812373b184330b08607c0bf9bd6049b86b7704115821b5ff9f55511767c3cd7b5b8a1700e26ccb19b7b91414c48f9a8670a6a5879273eeb0442c60697680c4ab13c5b302285a214e47a54fdd12f2dd57b4734bdb986cae3495ed1722c1cb03a2ca148846b437bb14ea3175d947181ccf2b9f3ca6d39c4147eab074f5901bb67b745867b0bf478928687fac6593d0029c4d461223c77927106da39aec2f102d1b3714174600cc97db096187f507fcd429eb87b8d0733c907d3768887cdaa7cc20a40b1ffc77fae431d2670a981fc28287a5716e016a039a9c15ccbb7ab2e2a933aa8c45068aa3c5cba75ccf1b63a033b6f5b74da5c105b78b9731b045cf397ab6702bb79274e333a7cfc03d9982fb3247fac19814b5c1319c2b042fb9a4e4896cd42777869c2c1a83b078597fb74128a590e3f00561ca89c1af6a2e5abb0ad799c21120e2af4cd87a843fbb0265b2485af591148679c2eb2c7c32ca5bf8c07401a8ec9c3b8e59b3417373b05633d3ab7af27bc7627279f310c61a963572d23a3383573d656c3b6c814725208fe560f72032a797567f568ad918b6448b7ac62342248440ab676b588f4876a086321ebb31963a0a5a147ce032800c8c04786256415a099e4c08076800293b28f09ce4ef92505608208549b028a96fb553bde76485cc853b14058e4fb65b53c7a5c69ba6f5786c22765ff552de60b7f06a2485996cb2f76138eb40ecefa27da98c6d5fa9d55ccc225bb06f3c409a39a278f6c05bb742b5a0c2ddb832207a6be60e8371b4cc916528945f1283f37c41cd5af9965403326a3a2babc5cc8c1863b7cc7318f07a47b95b98caffc72e514ca2f506ec485bc7bf44b0b6ba1cd097fd441c6813c16a4789b0b5c9ee85640c0d7099ea7c10a4192ac59a9534161262756abcba134e59e5124b4f325137a26ae961a99203a9a6dfb026dd3290b14bb52e90200bab1b95b269127103bdb4d49eb5a783680497885a43010ff598f0bfb9108f7a19fc22dcc085e37ca28a29a0f5729595102aff8623e0d6a4ccd32975b9cc30f5262917014548a0dad577c1e5515dbec32b5380cc3fa9e8196a54d4051615723893c062264014c0a3e12fac72db7415e87ce0651aa7d247e80a97194fc888e945ee750750d3cc330e85bbc98baea086c0bf384b1e821a569880f49bbeec8c5eb8871955c816930c51135a496c91793fb5f32e45d1e4a9a3d0ab69b5483bc0b451ba005411a14e234581d367180451657bc6034939ae43b5cadb5bfdca90c6057a9b03a3d8f227c14a3a12f7827aca8b0c9c11e062042b14959ad2b83ecff2aab22866ea02ddcf1684170f38c3e381eb061e44ee1c3aad6fee55aa0e2b598e1ab8cfc9fdee2d87dc57d019b2c4e4934ee1ee36b0ab27021f81c345650cb150ce09f04a2b867682356e033b1811c2ed0dee885674ce196bb5ff3aff6ae +ciphertext = 78c3ec20811d7388fee659f579cb5b4aacd7d217aead43fa1cdbd063d9deaa331cf6222dc834fa8a6ce74c36659206eb558c1a7d533ddc4bc9d6d363a07597f6a6c9102be7209e5cad6b613e70967ba861c5dd8cd419ca9e532aeda76c8ea1c7d9da58c0320a52378d01a48f4141d0fab529d494f86b80b2f1d5b36afb4ad90f25f4290c6854d2d2e44d2d7506101f4a18de268d388789e5f2f89132afbe6ff855e24185ee01d028d4d9ea6b3220764fa7d5b2d9a24433e848c91dd8f1e5496cb88820644359c20ae0be33a0e749700f30f0a484fb18d695883b493255acfbc8a285bf477f8f102212b8613e8cb72b59e6456aab7a6c767a26aa8e8a6c9443b5dade8101e6afec8d7d4eb3bf9f068c68f206277b40bdc7519f719bdcef914e481303bfce7ed672bd84c32080cc83db38ae032c5e4c47d0f9883e511a540b90d254ca6e26efaaa6dde4cb53074dfd568f73d38122959ca47f9a2ee58bf593835c9df43f145f5c9bfce2c44d2047b8fe39bb9aee898d757cdb1a11136f8a558fc15968f181c9f496952bdbc60638c05cc2f159842ec9879d6130a4fe867e49c8c294f4d97130365293fba41d79dcdc6e8d20568294c56cd28a2ce4887b2d7a2ea273b61912be611fe8b9f0029c304d62d2a8b4de6adafd62d50bcc5d497e542e9065dfe03a4e57fde3dafc007446567576bc34b6ebf844ea8ee7e88d5cd79d1c5b76a631d22778818dc15ceedaedccf88ea551705f52444d4a8f4c1cfb3859ae5c4707341fd7723786d9ec4024c7d7b48efa44cac071b40c61b45d0bc707ced0565ecaac81e4bb567684f0974ad727db1b218396e1c2e733acb8ac1fc09cada03dfae5b995b8ffe8b866c8019796d3eba80268b3f1341e2ddd9162a1bde8566d58d39cb7cef1c7b32d28e5da23dcfe39d24ba929eecc8e35620d26acfb625200b1f2cd102eea2f4036256a31a91bc8b237f82b17c7109f87520e709a849b694343ef60358456e69ee3831a8386d3889e963f9a9a39b796b12c0443eb11c53990cb0e113f677a2f97a2305f007c07b682526d7dfffb92c51efc7404c44eef5ef33c7131695a67184e876f4fceb90029a17a543c8dd24618fc0530a32eccf727907b00e7b5e9d86ab96427702c99cdd1fe59f7d7b4c38eda17226646528192077299a71607a823242937015828ddf1006061344d65b2a6b4bef4fe42814ee5b97bbb7044694f2f7c0540b2aafebb13a48249ddb91a0603783c45947de5beba31e6b10d26e231e6a9f50b8307577874bd39d7ff4c3e3c2ce647ec90463a5920f934a6b7c7cca4faf96e54f3f9b9814444ee9dd031704edc5c6e7dced1bca24971dedf55ac2ff16c12037d10bb4f31ea649d134965caf76b13479d4acca397e629e15727eaff7b6a81f06271d94a6c2cfe59227bbd9063faecc9d611f6d8140a55236fbc1eac5dad404bbe7a5f02acc1dd4fdc7dc1a93e0bb6a6548096744e39e3810d7e19245ec38d9cd779842eaea9d676d65522748299029f92f0d5df94d823bfc7 +expected_result = pass +expected_shared_secret = 560ee82de0d28ffdc1644150918fe6261095c4d8a1b15894faeff7f2d46575d6 + +comment = Random ciphertext +private_key = d423525d09327815b433291ada52b7c7721c7d30b7aa1b43d99517729a6d5334a808d1be0ec493086633b6222f39e17a6bf43f88f19d84fa7d0e12639cd421303077c606351ee3c8723ab4d4421399484c34e047fae79c6a4cbf37526d82c4a79b28badf46a1f9e60e79167e902871e70c360b35a525f938ebe7ae77555701b14446f67ec9434786b57ce4e5b2582a917c087031f7c49719aed88c741047ae43dc69a3a1655f66b9928a5e6b8c3dde069ce7706d9c4c1716e72443ac9d9b235321416da5703c6c39bc3733c9a6a1384291a1bf837bbcd67379d6282c43ccc6379444b43c7cd3b11ac4325f940016419077f963a4645952889fd7e565085040ebdb40fc718b6b671e7b9b5fe107b4dfa84e06842ef1fbba4d7c4709dcbe843338b6275edee1042dc06ffac01a69bc5b0b18b10b77bca6da30e7ba020f13749435802643c8ca092b19ea1767b930c482337b451e09875fd3d7704f23548a261940261f8a5cbf059a0076a40b40abc97fca2f2b1a73316784592c57e95aa462dc67d7255d63cc5858d41616507e0c33a276e2343bd5287e4c5317ac9b401bb8b0542b594383ef933f07c6336a962a8e9980d7766bba37358d1cce6b22572c567e41d5bc6b64207bfc7bb3dc18a419a4dc6c0a43aca1a3d4508c1a3df26328d730c19e923c28394e843a7bc549b22b9b6bb4ca49d18115528024d7d5a9444492b20b359a24273b2c9ccbfaad1f451b4b6a5df93331ada69af7c52eed440cce68261ee17ee5e97947d6a87dc2b7eb5b1c7518c68bd6130c2b72d58170c2d213b4e9193fe053d6192e0cf2aded77379ae9191aa6ae5439ba1d54883ca2a7d39747cfd26c652aa2861332518a1cd486048ca43955a38a80f93f92e03e2f30355b7a36a0c046a3709b872b73a9291491a1a401e6423b7b557104ce69f57e0d852f387475baf1637cd85d86467491595da99a098ca9772f5745d32671d6187c459c55d636baf78818ce421e5fa6b9750407e25036f886119831cd4a6b2cb83a8ff7e4bb65611bffcaad49587f766b492c67c9ff1862293b499df747ec03a1cf4c43ba55209929ab0b61321ff77fe6a74e03c764b5553ee9fb6286474a235739ddca24a4767669944e530b05a7646e113c89d2f6c103aaa979067c4b804ffe82394f15aa3b5a73e8f7309d6ca111a34511958693db9c16f049036605c0d9b41ae41375d9b339e37dac215860726376456453c0005e32bc07dc791dcc4e576b0df31695b0728cf34c5ba7738acde0c446ec2bf4b06bd4c420430b28bfe8aea87617187335ae984b3524703f05cb568046bd4cab6af145823922a0a821e1a7b42cd0c7e6a429b634723b23c84e650007e9bbc782374f63454ed6a74ea3c4191361992326f0bb2e74066b808091eb316749aacd1c45678eaa640d88a78f099cf6a22d92c415a96195bbf6a51337647df98b6423bedbc842c4d1b4a0bbc18521acc106896fe655d158660d4ba9e0e696d03c9ac9850d0df17db127604c3774f2db5691f9184e6b8bfe692f59153013b1701f119d4b173e6723800db65e3c113b9a750bc6082fe8c16a44e9c1d7bac64c397f275ca7d2b528cd669aaab5b66ee3b6e3fca91e3c6bbb551030752fbdc14f4c589d99f26b3fe99c015b88fed1017f7605fe58590d8a70ca2527dbfb854ba06581785a5912cac930c568927d696c3c993168b96631707562e2d83d4609792f0414dd9085f47c84d4386bacd1c73c980559363c0db1cb2d5b14853207dc15b3d2923ba21353e6e198d521ac5b4b57404b41dc625536d405a0926c4feac4bf9c3cb0b335dce8851f516c0a96268b049a780202ad031d0c83b813da1ae648ba58a483a1b609e0baba74524a4ff52428bab0204ba849848d1e5c1d0465454b72878df990dad2bbd14a18d4b689203cbeaf47c8e59a33bb22ced17ba91d5ca6be17938b2448a470712ffab18bdb6f29f98eed3bbce3c0a032717847844388da84b0e6c95f4222d6e970d14cc5f8546939e47c91f9bddd430fd2e0c1763aa472c710d0f14d7d40774df815dd83cd7df45daf79912d607414802dafa34bf117889b925db7bb553274bb64dab76f0523b020808fc79b37f5a7d25925e84bc54a922347000ca48965f79b762a4c440339720d1b00014ab8eeb2353f9b7c305405ba535da6dc719ac0813ac84839176f6e30623c652f4912244cda1e13f3b74f0c45b2dc6ecfea2d6194027d1a3869ea4bb9d24b8c1b5e57bb6b2306c95cd6431c880ac0d1bdd4c6818f87b34d046ed002283cb876fc509604651e7e5a119aab4c4466a807361a0824237b58a9c1c889c509620f7ba6dad16ff93412b0c04159015166176746465fb28c0df94312eea5888626c4e0a2560c25baadb05a5af3089e546bd5c72f4d26984beb6f1f75c1199189fe5a254dc4c935b57d2d63173b774c7b09007e21cd36a64c6215a43a5c2fd08c65c63683d5b74a1707c0dbe5a357b90376d192209791f649191f924eced60aecb5a625f1208a432fdcf9228929b532abbe63d741ed8542c288a9d85382d676440ca1a4cefa4d003cc8436a0cacf706db7a8a0a137dd0d9353faa7ceb197c6d2257a089bf8c18b9b0246c78bccfe4059087e4aa2a8031737a93062a852a036ce1a356b17b8e869868723c731ddc6a7489890f8b07c6fa4502871c1b3a8292a154d50796e97290b1d028526827021457a7ca73bc09731efa734f9028f1892bab703aab52923b6a53214177a4529b7c0b77d8e42a7ec095082aa89c66b2327aa8c0cc4f87c8196d747d05aa9ef3a609a11c09dc08bbdcf17beca49a2fe48dbadc7f1cd311067920051405a9f00f54d64ffd8252777a687b7baab64136ee88258c20c0ee385807817e33827884ec15cffb7668865ae676bc2f6bb24bd4486905502fc096812c03138ac5e7b906e53b2d47317b0db569713939b97b2ad46b12537715617748da3948e45c92e8b9b45f903973524c019987a2c9a64c88a658b89c2938359f139b52a394b2d4b51aeaa3f5e36a6af90d81a15263d36e2cd62a7cec9d5dd55e9eaca4e1868466610b2b5c52da4788769c94824aaf43a9afc5e2bd357a86a1138d56fb3377e8321b67af3c65920e2151997b752d3c8c128ab54c75934eeb8faf83c9f2684186e84c6a96187929395386842207537c7b01d9b434b10084fe7a842470b0080cb402bc838724385c025bb3d97616474158e5287bf2863ff88e77d25593a03a3742a2d92c72ef8a936677855850845b52b4778b9ff057ed22666468e72b6c430b65c52d214b2cf775b280c6aa96a6985ab359bcdb4429ed4d1fac6c3d1add76f5ef0e3fa0d00163bd9cbbc3bc5fbd9afc31e665d6d4950e89dd8e6a9cbc778255c69f +ciphertext = d1c30ae263bc893b6c0475e3ab25a8d4649cf2bbba7a721745636562b6794a997219d65563534e62f170a093dc52396f85d57f29d2486774fb5cd3bbdb79e09587736aec48ce664c13fc71eb4a0b0d45a94354da57f89ee8294301e6f1e42971347e99c12329a24b73cfbd07ddc629ed87dbb8ae1dd82a696a526e63721cbf3010d5e327a6b4854327e9dcb8528585320a4135bec448901a14b7037da06a7699dbacf03919f776990a847ec127890f2423ae7e86863e90732a40928711f5dcbc38eba531e5b12234fbbcebc6f5181e23463807fc8f7d8677f514aeac12afaf988c68d8afd5917bdb15bfe9303acb804f0d1c126e848aef4351000619bfdc31bf74441116bc9d1ae5771debce8131058aae07ba87c503a07f85e21ca25910d10fc9872b56f8c7d68aaf2c8e525dfbc9c50570c0747af243741d3dab4765587d8c25d393acb2417675d1faf59851bf853d6e6c3a6f789ffff296bcd2001331e8e79143db36b0fd1e4fdcc6d98593e19a69c3caeb71358ed8466ff2294acc9a85df4b81dca83ab0bf508eb6321d294001f95afad4bab0e9bb2c51220864b5f2b5b17db45257a0f89d890703a84f9f4284fb1ad50bbb7b933aeee30d8f872c200dd003d9f48a8ca490501241f964d3c70a544a71dd8871ce438104b80bb3dd3da8e3f0663caeaca97f15c89627da17ffb69a3a16282cb9d99166625a52cd6ad4ad911c81f5086a445b8574daad901d7db029b9efffcf93bbab71fb9a1ec072f67e7628dec0d21102c05e24fa8b9b97a3f64175e55329cdc64cce560e442c836a7e627038a5fa81888919d42f4c4f5ed7132552a21361759274eb2dc866f8de9c325bf4cc4a6fb3c9a4d1ada4a0d1fcc3828f93ea8d54e4dabdfb6b57bfc926466d51ff7471835a474866dc9da441568e8d22bb55c36c494d9ee6c34b908ac4f513623f4ca74e29c9343ea47f73bc5a937621b61f409915219cf3f21e4eb3b437d0e9d7d0e6416a1a2c0828bdbe8a3794f20348c4d72b20a8e3d13044a0500cfe1181a7b5a7ef144906d18a273b7655a13eb822b2063dca8324e7594761a3dbf2555603d25c6686dbdcb0af2747088721e70e18272dbeddfb02384c3326b30c074a78729954378b6b49202f29f6edcbe45e9eb26a8b3295d791423a933ebc310d29e3a8cbbdb0f09cd3dd1e985f798556f4e9d599e6f54c78f54ce8c3d84a0ccbb8ec8ba11c01a8f1569804ed3d009179e1cadba10266465e2c156dac73b8c4170a58505fa484d3470f0ea752829c59fd489d6e0306b1bb1f87f372918f399cbcce15f4ca31f07d2638547be292a1716cc32d2c786277fe6cd859ae46752002e4bd318fe9884387b8a8453f6f54dfab9041e776f9c6cfb4fd71865bdf735cabdc2e474a1188a3bacadfabb4a3f01342679f937de7c7e7438d54ff0dea35a7899a672cc0bbd92f9098fc28804236c0eb9ef98e88263bc4b7bdd2377e9df62667b424c0b791871325885e9d588da86ceff1492fb4a4829a171f2473e2d14b5a861fdb34 +expected_result = pass +expected_shared_secret = a9d1121a137441b98f2d6abc730eec6cf3ac8231bee94c5462ef3cbbc34aafbc + +comment = Random ciphertext +private_key = 5563263a166cf2404024339ca688871432987386208dcb4d3b058e004dbae9817324b9ca2bf4cc2aea824f70a557852346988695c71d4d860bc53ab1a0007a21ca02ae32b12c096bf675943d141b0556b7f51c86f2a770c23108e9799a3e04be57f97ff393c1cf314fd5866ea258bca9aa64fc640d57e235804b53f5bc8e99c5a4524a3d4b1b7cae4c63fa23a09af3c4eb72a3b0a557556bba881713c500c29ea4bcf7c50a285763ff684377d7262f29aaf3445bcfb496517b09e4b4a2c1d7808cfc4ecfe79c9737114253a96d2ab40ef3c8eea627b96303f95b6f0b54807d326b6426ce22011e5fe16b12263038432576686027d81dc32894437b797c88b5fb723a8c9a0e57370600220b2ffbaf09acabee5582bd32604711b44cbc920d150b54e291d23c68dea799f2329df22a94416797b0427c8515207565408621cb5d342435335116532e623343424b087f84c61ef8c1b3eacae5593938c8aaee58a3029b899ec4c845903716325830616ea0c9ca8b489342eb363630923ca482ae172a3219197c61caa9e15be4077c48f349042917d2f94dac53c995bb235e5cc092d547fddac38469b0d11157d59150803ccb38c1c6379a1226f6581c52505a3c5f8731b8a198705cb6685ab8620f8bb068a5893366c786f63ac385583906881ad668ba893d5d2acb356a6b77bb908ab8320be110c1e3867df71fac250e36687f0a902e9f3224d24311693923ab84c7e93a7d0607c0b0bc140bc40c771185a0e06e116c8dea55cec0e0ac9c72313ff31e331ab0a93b25050c2c57769d5d74456c00374f8098c8f5478c8a64d595a7304446b52aa0f40505e7b5923df54411834706320015e6c9b4470abcb4ba667470eab0b9c457960f7a034e34810f23a9ff54bf81e35e5191122f696335574ebfd436f4968b0e07a2de13441c486bd4c220e9851e165781e38b65f0b0a85e157c719199da281e174a74dd3c1e553b401db476069579222bc1a240431305a87ee6b314d094d234a71f93c8d1609351773c1314b6c9d3351531bc8273901d3197abc85a71c57fd7b956d9e960792489fc766cf4a9848ce2a74071206c576e63082b9ab0802668882d824e8293989bf522bc9b91909cb0bd072010a0300073123ef08c132a098bc0b736d6a1bd466473007bd523954be8167de829d271a3f5f4c788bbb8b609637a381d8ce289cad04098cb307bca6e653b99680ab38f0ca087e175730017da9108b44325372ccc641829a29215e5d54cba5b88ea13ae22fb79f9b4cf43843d75202762a89540c65a6fa96440f891a7d1a259d46856375e793a98c1232bda7a3335891101916931357ffe46261d058201f625e0d5398a963a3d524ee6cc8400e398e2f92194678171e856e9a8ae77fcae53d9ba54374f9e000dc32c2141f0ac901c27875a39e30ba97a043a59bb4b37f094b4bca9afe33748bb1e88a343f9273ac209503471413659bcebb59f0f6c8e1a36baad183654eaa131694217c94c47098f6975653120ba5aa015d84127299bc22318410098a1c4a405dc4c5ef54c695bb4594f0a8c924b381343bf40e2a8b33985cb750c1cea2d1c2a80009605dc98809e71496e193e11c2007b6a93ff747a15c52711072988767718f917eb6c5edbe97a8e30a90e9b5e7935146a9000490789cb0ccbd198cd2d70bfb2936e4e6b13384120194c2e41c6bb982803023204da3641c93b316330cc0f6cc1890b69c9cb1ac41797d3aa0fd4da23f2a403cb077a0cf3b0bad55bcd0ca1899475dd7c391f61bb03458af1454b4c34c655c9bbd1d54336461889150577c9336192b43716ba4515897b105f53f8b278f291fc9c9608806d6b8863b09b272b9408b096700901204eaa19aed8b051512cf58c7aa92c3b462a0dae90c5cfe222afcb455a7c58917a2f61d788fcbb6e0bccb426ecb7dea379ab974c3953579598a3bb9c0497341f9b34c82af370986c860476ab81b9a6a01571483b43f9ac35d8072190876636a5b55d3256f3bc8f7f36c7cea737a4281274f0c0bb115653155d67c5b4bb38c0ec7967acc288cbe82654f521adb31d2fba7546eaccc853878ae5425b8a389d1a92acfbadec133145f2c8874aab1a756c5c81191227045b8663729a0ca4e6c2148c0236a973ffe9bcfa81169d1c00d4e7483b75a600a76f3f2549b8962909ba6fe43885edd4ab4996cc7443bc3c073523e26000b4395174ba92415ff8a16657a16c564a0e41b26ce2208a463a4dccd69db676500da330fd283371a7bf8148547554353a3360cc825471d3959d33aefffca8b84579055aaedd47626b9a0f237a0fa2baa4b036b9960cb6d9b1a2b4934fd069b6025307fe4bb708e4bdd85508e07b47cb1a023242a25e40ca87921623c1ccbff1974ac9cc71d55bf574b545d3362c001d10868bae06487443704c2c3816d147280b935a4a163902aeb656ab504a54a22ca904c31b181a63cd55363b108d3118a51134abfe051ee3b6175d023fa1b292db134b081095d6d56cd998cfb6ca0e3e5617b1412cf5eb5bb3d8b149143a284081de600faac52b234431d8385c326b2b3a4736e767abaf62cac98a826c01c4b1a644f489809478a9ab360ced063662689809e2a89dd466dc6ac9ccc9c5b0873134bb0055a371cc8a0596921e90440fa0a40e51cc61abd74e73879c7a8132425ab0581102b5488e6b85280eab70710607f9281054abc9cc1c4d7740469e2066de2cbc3221779aa6096e9a618d935b3e9b88af1926cf7ac1b419bb1ca824e237a7dbe05df73536b69523ae90c580f9541e0bc836869325298ee4f8ade4a022f20795869cb77ab32b6895853df150d8117c72247386da591d098bd739bae1332aa098c827983debe99d86bab33bc63c7e925983f416e4f0c371d08799d85f45378f0cb44553498ccc82ca8a1b758c3a81fb75ce2cc26bf5da1f1c24468755602347353e791fb05609a3d4aefcf3ac9842a660f42634b73fa47b78e97c7c93f4bb721c58ca584fece4890b049e05e507fa07725dcc4010d66ff6d9b081ba68a7143a9eb91818b5b5564b86cff09f8bf0907980209e890966fa499103a1771c15ba417bb3dc7a37d261ff5cb62fe312603ba9c4db33d2718e0b8807325cbadc121dacfc965ae1053640c26d5335fd391d80d2b381274a21030df9135558f886525a32e4fa589d0bbeb26376c74962628c1748f00ed0b229180926a940be0a509e52547b1d7c07f91cac2c93bbd3923eee545d8f591b889be661767c2d198da889b00e7802d93add43a6e3e9591e1d1522f8f030c772290fcd107c8a1f9006f4aff8a6aeb4439fb0410e7169ff4e847f885b501b032b69edb4159adfc163e9e34e9eed04221f62dcad381aa78eab653f6a9afc +ciphertext = 88d74278dbc5a94b5d37fb5a172029902f48b84ed6eea29d26e2094d5553790afb59d992cefae6532d5f224c96dae06a9e39641260fe6d9682a74ba9ac11ea1721eb79f7345adda7d1f2f5b12b69a0db708bfdfeaee55613a7dfe67ff8099d9677bb633a9ddff300dae09fd8b9f722c2fdbcccdd163b549ac2e52bb8569935cb030d0e032a7a2b59e9d518892bda8e9f4b569f8892d02a32a547311ac32c5ce16467e11b1cdd25ae274c734dfd84836146e7755dd0de590daf446213ed7da37358f1a49964fbb65d5b512b9bcd2be2fd24e4ff9263971962776c3eaa8b7a5af83a5291a7e19d8ca0fb7516f4e5bae5b064678f839e29f8f85ffc3e16245d8f7a117f7b32b20825f8efc5778232cc1be8702d56ce61d5e3a54f7aac7f25fdebf5fe7c953e03f103c6fc9563a5414b321e0fe4f739d7bb9c51177766dc89ab66215e1526b35eda38b91da4ee26b2d6d2935d912267df162176028dfa448a748b66299393f5bcee9ecbaff19bd40f8e2bd07c8de938d8d1f1ffbedab2a4bf8f9cadef421ee7ae07d0c60d89ea81f18e1c8c36a6adc473b1b9684f325832a2b5e067a9f275d2881a3d569a8c9ff5a41ba2109f03174a8e28f0c4396647b69fd3547d345e3dff677a56f7e9fc1facfa393f0138133f9b173d571cc43ba3174ae4f7ab52a3437ae127be2a352e99a6a176fff9d60ee2683b5e7be29d4043da6d139d879ca57e903d0ebb59e2fccc1059a10e583a2c3e2d549aa940c8f586b7b4b33f575e133f5d01941bb138ebcd8e5bb1772804818ab602b7bfe50ec5439ec3249ea21636f6b3db85dd17879f8102fa072537a8913bed1e11655dbdc88a49cc95454b7792fd3b51aa2fc361ab6efe6b3f146cdd476300cfc0dd44deed24d89464b6fe3ecd3beb341aa45ffe1612034b2907ba2865ed681251e87bd14e46ddfbf59e822dae952de16da4812c083c14ca6998fe7d46827d73bdde6e79fcaafc83bb0f3f168bb36559e6ac3ea6c8ea1381c180805b6ec6658f822518b380c7c8eb7ba961f35ee8cc7133eceb952d6d48e0c58f7be6e5ec78297865f09653ab1a2af694334ac2a9da3a1131a6bab197d72b3e1acd1c7082d61e643696ff56dbca20c3dfacdcded9d0dca5535188080b85135fd2d4ceabeab2e3d81413949ac4385eee258f54e12a5691532b8f860070952a7df55cf5d84fe7baf9f13a488bd32fa8754f7851cffe67252f89bd164c38aa6cb5c48a68bcb3b350a01f29dd8d3d7429bb774cc42868c6b835f1cd09fb9fb5719180b662adcb9d44ca2c2032338e38228de0c429c1d92ffd745b0cb1502a3af031ce1793b76125a2c97fd14857dc4bb6f214e99e2ad9b6c505e2c120af5ae41f3490698dd3b6a454033e121821331045c92059ccb2beffb0c8f48c9c7909431488d20e6dd83275e7dd05a65ee2e651c119bc16b2d29394f12ce4b65ffbc94a8dfa2f3868fdfeb6a88cc9c6ba68ab40ea58dec5c94bf6d57f15dd7bb79d39f62d969a3313ae5adc4a4510ed56bf9b58a229dd77 +expected_result = pass +expected_shared_secret = ddcbf4a8e934a4eb0941d6e3032d16c60a551a285e9a4782dd34daa156837f2c + +comment = Random ciphertext +private_key = 1fea5fb8b10feca39a9dc800a252a99308961a566433a34f8461427a81a5776a22e228ac574627ba135198c3bdac99befb7322cfa84194000fce9942c7948b8957c43d877574736ed2e27c3125b02b3104c45725426581741baed9777de39875ab347f1ec92229279524ab361c1a161e93395c6346bb19a87c458b653434a0b4160632a077060fe9d1cdff9773d5ba180ffa980a4829e5a8727799c9339198b00ac14b559399a437de074344033aa5d8caa2a840158209fdeba99c048fac95af17633f01313b1c70389e2900aaf636aaf051f2792c93a40c0fa55ce44b970bf96c4fa5b357a6ac4342275361c0e0d978709b22b4f83b76e7983426c86c360017225db6e0484818289d462749f69aa283c8b7fa3edd90afbbe053790b60da7b5b958403bde76def2aceca690b07925aa843547c0c6b8acb97bde3af4128ae48183c8fa75d819c8a54736ecdf44f6de2cb753190c82118c8542671758099667117e3413e0a0eeb7a4ec246879e321e170bce7067c4bdf7708ed3119d5b057e975b612367bfd8508b2c55e952282bb0ca1c6178f2c59ba655316cc00b80e0522067bd971b787e2a1f796285274742a7091b17734e3c21a63d4c0a7bb171fa49618d115a2739a244b3cc6fa610b7ec6e712c3ebe37235e29ac15424846331827824da669ccf94a9884226a774010746a072d7913de32619536970c5c2092da5130660f45f36bab11aec8535ae2547a9c318f02204c70787bc0ac4e5b2a4d5e0c25ce7730fd079304d004c7451b24e0556bcc91f1960ef4761d485551e8c5a099e5add29a3d90922a5e59bf882bc00a6b8928468d0f8cc54a183b928078f604ae9706c54d71c4010558bdcb4330bb7c0a054f19aa9cd59c1271c6a78c80cf4df5200a880a8b266187d8821e7874cf367408b4948c8cc2448814eb913f29c5cb8d201f608467cc49b1ebf4cf210430d78698e044724e4c6b083b1ebfea7f8d992b958b8f901b1b62d42d40127217a09be895c158d64be733244d650091db8e8db739a2706f28ea8b072b0583303d2fa1afacd44fb9464620bb55deb337b86905b386b80611b29491b6a5291b4472669506b865318830db4b17e0044b25ba6590041ca9c25c3111eceb05175b385d2862d1478e5168491015b84f730081a8a7995002f58537310b5f4df729f915cb3bc297116ccecfbb27412461bcbcad58bbca05534890f5256ca8bb12363b0116511771ceda10a4b0d0a3f9a0571f5a2d8ba479d68407285349bee9978a684dcdcb3c3e86653564c986165d21168d4fe94bcf66be6e926168923063d7214582a3f817b97f61a93205cc2c122518ea6567d23c25d9bc14a61bbc1338af1c05ac879bb371c39a984aa9b8bf0f0a7c24444e48ea05346b28a7075a6929cdf1a23560cc3a3dc80c9d8c41d82a2b052b131f03b9cd42c56810a6b17c0d49d4a27913c2fc83883c874c5b743f32d188535310c632273c96763ed65dc484c7c24480928462dc847489b00237371dd96310b354add3b2b361ea4e50c03f7327466b4472ce3ccb2a14540402351cd647f3618dc562c91d162b6febce168788dd6b7259c46cc901bd690c79e3c9010e2c460c0742e95ac6f718ae8c831bc69bb869b8326465592bcc5ad49052dcb78f83268d200aacf0a00e1c8ccfee84a0b48c2bb4889ed99230d78778e940816ec620a0a971e882c44036ba44f55874ea3bd5f391de34c62e084378745f1a3501c53675cfc79aefd77f90f64dd4068bc69436a0e93a91c02abb48a31a9c8469c49c8af3034464bc3c7926d1418609dc3367b1a41841070d60b5b451755036cd3b6a2dc72896ef8402e83024838a063723516ad6301b15cd4a271adf9c4442e9166585509e4694d2eb3cccf36fad407ce1abbaed7846d12b5b542b151475861d3cbbb7d5804986529f0430f24c4cfcc826d9c57e2fc6caee6216c8105a8b40877660cb201c07cd3725ab3719029a2fd7400c6c6c91870238acf8770cb8982e650c454000780c748ccabd765843fa033b1b17b1fa672ca36874cec79203367e8f8169c211989654cc76c28537d823bd715e07f119a1a94f915c69b6a97c559c7744b950d254411b85be575a9e97589cc1f94d6c3bbfb29b35296a9dabc6c2bfe53d31277a76e72e99d4cdfc6536289a8b16a7b88faa600dc644993266a428cc07d22e8b253f2403bb86793862574f4a756b2e1b0b58f6b11973c7a87915d2a09745a0441c5c583d8a518b311e38e69d74a495761c5e976993d7498c142913eb6784ca12735fdb2585b1501a044b56c3cb25901df8972dc879119610146cec02224b523540a9f3515d79245e9a99a035a7605977c3bfc41e5650b7caa490ec5bab98c33b630161772ca58c90185a634ea515187bc6850d766a94c8ceaec32f6fa688455802118132bc0c957ef4b07db33f34aa22d644165532c92e3208ae86042d267a5308a2a9ec22c660894acc48101636b85092f4633e91285c0cf7be206bcb7788b6e12a5a71c9428017c93ec3af0794779492c5a6f096d37185baabb1c77c3a6d314d1eaba8215b12ca4a31761cc4a48cceeafa1a098a2ee16b8ff5248b69aa9eb569369b59555032571b515cc8c2af35640649e2c89d59be34b384745c094a8b5e8a851efe2579044014293b2545658c5c96a75c8047f801a71a486c5b651879d3aa4888576d5295ce5a6928b41a03d462dd0167f6f4ca2109acbf390be67a73ff951262a8c115970503411f78bb8744e484f26721e90bcc305b9c7a219e4f279f425239b890a4ada1c13dab99ac293d7f1104299a7bbc37547d3871321ab222dca70e0772360321b46b6b52d328ed877ddf1c67a10b6c12154acf7ab05d52ac79a18e47c3955aec53cd4bb338da670056cb594509d0588bb03506040a7b57a8984e3629ea5265f015b5b0d0af508a0fa96757c7bc2176d2988f21154a067eb1765ed9da12ced898e93573a3081191c721b88a3e692202798ba1899a34990c628b9531c43b29d1c8c82d759c3b2801659ba812217febd26a932c3cbf90a2806c6aefa088c16b4138c1ceded9bc52841ffbe1a6ce2b2c9df57fc22449a3bbc4888171ce873f6ad0c2a136c5ff354fd16a089fb7300e9056a57297ba411706515c4ef337f41ba6683ccf3c486063785a3f24c52e3242df8a190b3662d54ca45c4129309333df5914fccc2ad3c782e8fbcdd1750f199a6e4b37a24510101083a7a288493b0b10e7737e9b9914a96290c238bcb91856729ba633020e8f4f2742230cb64f4b7bd3c39aba4ebba70f72ac26c9f41d3fa9fa0d351e055132508e714d4e38a781538a92ab90e8b40373ed97a2d5c30d0b2df6abcec95bb27e2336fdfceaea5522bf1cc5804ea06903 +ciphertext = a3332a7d121e4fe145c2788bd6199c27c4ade8d0705795a0a0d8c7fb392940599d936addba522349f4e07a451075d88362211cc692ab4e7af11294ebe881ceb263667bb291b5d3d419424daccc5d275bd2d10c7a2f8f22ef0c117cd12741fb3dfc8449d877def1f9988d486d21a084c60faf2402ea80f2e03c85e58ea23b0f0b700b8f3ecb3e43373b6e307391a0af9bb81b2e351d1dbc3715931f094d00b64bc1683501cfbef95de190023f0150c543e91184597b57c1a228418eb7a185558719ef1527d9b8bfef2684037f18fa987ba982ef99f135b827971639b4ce4cf0c5f2bf031a687590a29201fa3382668be4ccd3b807fbffe54e01176faf7d92163d1cf058d56e84e8890a6b9d1bb7ea5be4428a84bb41f5f481cdfe533046f04d6e83f5b9fe9b0a383e9dbafd34aa8acf1b6e66edc6d062a0cf0de5dc16dd5597e87d8fe84cfe182a1218a554acb449d3aebefe41c7d7827402b5e66a6572735bf21b1cb3d1c01f51c2b07dac5fc024e6ea9c690ecb66eca01e65ad4947b69155f7bb297058363c5f6cd093564a240500bf5f7d2579a3c7f4d9c97325fd10e2842056a4e246a30cc2d5f0c5b95904550eb81d9ea56dad663a766a79685a7cb64e4b784bc37bd123ef66ba43ed61a9456a0a4177c0e1e4112181caf2903d6b57575c34f5df89232204edf02268168b44f0c2acd435f7ba45cf2113c3fbc0303541b1c7554f1b68a01436becab80e86e88493f658755ef88e0db8c2d7379ead05de98aa787af70614b95b660ae28f53ebd12f582d1ae367d7570fa9777bf3d05aba1b7b75abf863ea0a5ca91d42bb4d282b213666c87630ff4a9615b35388d7a6f507cb4f1fa8a30d98eeb08843d7628864da17ac38e42eb9adb9045a2061173cdb246a5a55f019dd1bd5ec8c4357ed2e45dad105b6afa74580d5bbcb9151153ce50d7ecd0bfd88d22a57c373e6246dd665d7d8a917730970308fe7d8cae9a63e03ccec6696d59fed80e2ba99dfe417fef7fe2261caae76c5db20392fe3add53102787a06ea9a851f595be131654d08bd011726070074058f2e04b282a85f006f935576c9b1b6c1609bba178269bc8c6d4caeb45df28e827ec75f3dfd09348e3b92141c2f6384336c16497bea7e8694170e57b0ed67a0dae1b869f9361ca50b946eefd4e5503bb93d5c4eefe0e911f7fe19f8a68ac2efa942a1712609dff5bdd04d202ce423214d61f75dec6d3d86372c0b4ea1572b8225b5eb16ac070254b94dc6108f52bbae81a239a521587a9f15ba38c5207dee5ec0ec28666b0578dc514bd57d50534ce43b92814c4025b9f6105a05da50385f20b0f313990edf80ff3fb4cd97c1d5da137851fba5cd1d846ba384a7b36efee3f95d195761deb8f43b4715d99e37e88efa1c4f1b75f1d3ad2bd508809eb2dfe127e977fd378b83c90a2182764cff83be78263bcecd78ea3cbba374855339d917db298cd747452ed3394367e255f53a4cf4e9c4c2838a1483b980bd613f3c0687c01db555ce991cb14cc42af550 +expected_result = pass +expected_shared_secret = 54893c7f77cf00610344e4abdd8300f1598ae8efd2c55d8b038ccd8116b61962 + +comment = Random ciphertext +private_key = 62648f7bac2e9ec9a682d09a992ccc1eb2720942006a0502c4e1a33b641da8225aadc39a86c13e76c7b2b0fc31842340cfe231ade71f887c6af3055461eb85094894b69092e9d8ae04293809451887c61d8bbb629e14c41da75092eb0c8145a0940a3a400a4aa2d9440796210f04cd6c613065b62ed0a1b77ee354f8f449f3b027f83522cf64678a162aab1ca728e25abe817de214bed3d4a6b863c1250a1a23d2830a34b8456052caa36e0251340c1b7efe7683746362d4f7bad9679ef1284f0ca655a4dc094b5047b26912d3a8b0ddb13791e8c83589c1bdab3051e533764578fb517415576dd6acb144f1760b075221120f1cf638ccab8b63ac21fbcc419103628a84365c61319d326cc3411e00f296d9802806c2994b57acf5f7c9a642a0759269780763038324e3e3bd1a22c248b386dd880eb54247d435c989623bfd73647fa621d21c6cddc041060a4c6586409b644750b88ddb136b2cf40b05d27de603bd4715b8ed053805803706241eb4f7a32c2c56d190229f380a718a0b47a484a00c3efd6127c486771245312c7837ff2602a84b998df0bcebf433d95649cc6cb786f182c9e169a02abbc6282684169777e3ac1ec55d0ba23ebd8ccb94634b3949858a853dd5a7a1e3e1548d6baeee439784792f37a8cc820a0750d3450f776b58f35ed55439c865b0d4c5016fdb2eed5215eaf5972cd4a97da23f080c796fab11ef0b3419d766ea687b3e30ad0ae6a347fb04b61827d285706cf373879c0831b32268373591d75638e68b729c9ecc5a17565b325b42791c8823c62b39c4a4cd626b2e411253ed091192501db674194b1645378cae4460b2f4d5917a5478aa3a6ec8b51546914dda5754b81746dd6877e000bb006bc6a861cc7a4badf6303ff2c406156bb4b9f7a324b5b4b70129b2b63c53d35e1b30c0e07bcaa83a94c3f24bfc093c074c263285446c129def9c9e7ef8abea755360368d321c3b6a93c2bd676a4d583afd0704ad5880b45b7face065c0ec1c20930c720252c76ac785622c05d629918b89889445831465ecd16f523ccc6c840e6683053f481ec25b9f79d930d62a86bee62b92a6affc0ba0676707d6c4674cd0cadb6b5f9ac4a573c6256b81a047a5500153864e3b6d7b125109d44adfc4cc1cb15c42c8b582d23c00da8de4f994064c56ec8b778037c0a022b577774484e47316e38f9e998f58c19b2cd49336b2a2d3b84fbe0593b948421eb036c04860462a17b5f47e8b340ead20a26e63bc942ca4a8d255e916ac0ae4ab67d1a2ba9ba000e4b941dc9955475c0eaa295f7103a5254499c52dc1d35aa569911d420d1750caf8c89b0ad6329557963e2568ecc6a9560c480fb343ab3a158229cb9ffa7a0ca85147961c2e1b94dd0b3b597b4123da772103a724d6c3758603cdf314e285a2a24144bca792fed08bfa9956e936c90348064e8b962759c47e51320e095118e2360490809d055b695ba25c2694a895b1486030d4f71c06395bc6c56880d0671510bbc7246dbce4b6cfbca2ff23ca807a120be22c4599a2626014964b6fa1c9aa0307c7a3982d12182796642e44039f23686796d0ba0eb58b8ebc4a3a68b516004a95a779bdd43d73e5bd43876c117c31ed734e436456deaa91115241d850161edb4c351a93fbb0cd9eb4a82e41cd7ea0396500cc0d7a95b895ca5731469231804ed727db3866ff3173d6d16de44a083ba02826bccd06f28a5b40551ac33735bb44f5c1ceabe63ac43b4195654f22f651e9a2043a062f066340ab319c879817a0760c0032743ff65390c3a0aa1903cb06b4569a234ca4243f6826fd574f94284bb8d19f4f10aa56545b14d6a02c4178603ca2235378f0a05ca4d999b627c8fb9209903b4cc19696fe0b0327771c1dc91df2028572118259409347f160d9fa2cf2c366c759207bbc2296a7b3119c82122acf4aac1910b3c2e91b29fbc376bfe38956974b41d3a35222866136c0df6a75d9c715eb9535a022b25fb931880a6fca3787ac81731ef35060b38ed56ca7715461e8f381d7aa762c02939017c41b60c2d2a85a7e129ef3c550cfc41b2cd04b66ecb3c2fab9c3fca5407c51a1b212eacac6cd3c9ab7bc96eac45410803c14b9ce4180a1798302f9a55e0cb95c581abfdebb5ca5d8ccd9c55f33881cb9791f41a210f716a6d7dbbe83907bda1825e09b32e5d96661d961fc838ec9260961da4c7adb9ffe7488adf25cd6e95eae9666dcf200597446aa1204838aa71351c5370a4282e60443f59ffd69b396e14b5a863f07307b86c65459127bc6326b368c90cb3ba98d235fcb9b577c027b3be03baa35587e4b8c05d76571266a222076beb68fac111bcb2a7802c48a123c0f8382104c79b59ee5c44d7b6157301cc78a60fdf57729470c80a08ffba469e0606ff083cfef44034ad7bdc06139011c0da6b6aeba7681efa56553045f5787b170fab6fec81e5fdb839eb42b8d3b8c5ba3852a32ba332245478c8e35b9767294b118376b28124b94068697f41af5e90773c6c420003eb9813126c74b20c0a7dac02998c99d6e371eeef35591c63ed6c0b5a8434c948bbde53105d6ac98827204d69b7088b9624f18468c549064363607d2b5c5193939901ab257cbe7bb0b329a01601a337e38a9c33ccc53fc7f43250e11623cba670bdbc79146a05fba23cede150d7527970d633b9600cc6415ccf4756d50114ba92740be9116418334e5a463c6cbb79902bc7bbbc8560441d6e81dce820818b0067628554c1581d1f4c57cf3612f630d2c946b1ce963d66358ec0443a7f860b9b871eedc636bbc90edfa6e09532523c268a3337862549439001c89180b5800c5aae56ae725042d48ca8877ab3de16a2698b1b800109f6ccf7e6a18e0856c90071229b63f97519f8fd19576fb3965fc54776318ea279d7892a8db98790ea8908a708a56333917a29d679092f06169184c87f548914a168dcf5676b310a4c909aa7c348443c142aaf489d9ba3dc204984fccc1a6963ff8ab0728d4b51459655f152ef03c7490fa4ce43407c2b45d96b0051da8b797476582aac9bdca94621a3bf75178161c96f88cbca0356af47422e4606a6abcb0b4e9a8e17557c10b58566924644c0cddd8096f8481b65c11bb2748bcbca48ac2674aa81f8aa3cfd97998acd7c0e8e8057a1601c03cc7f473beeceb35cd5b8e5820b54b0b6660c84ac5bbcd0f596f494a176f93a505053ff2718268ea882245a5947ca9adb0bab95cbca280c14cb074f09030b6a09a5910b7b3442af83136461c1f0a5da885702d1fbcba7b21859e4c2f1a2beab03c306a4273ad3a20baaee30e9b33f67c47474427d10369983f60f939b11ddcd2dacf4d7863869d9625f7cb6b5ae2b782a988a0245044b29b +ciphertext = 8f3c3c0bd7ab261fe7816a9e37c7132fe93864a447226c84d69d8f5e6823f60679d2beaaf8db5c9b4564882a4b696441c5abfb3e9c84c177363e203dfa1d9bdad52748d97813c5e4ef7e62619b005a5934962210d88009b0678f1b8662ad7dfcb10400a93406cc809ea06810c21d58f0282ccd099b616f846bf7c093972e84403c90868fa13ada9f7fec375e464367ac59f7ee6bd971f6eda3aa1a8780aa22364acc453e9a0c60f22640d7db10119f87c4a20e04697b6681196e9475134224d6ebf7cccf87f72c721acaab099c66f4c0ab6669f1d1c74e31f6e5ce13ecfe006684a7b670fe9dea8eab1016252a96f50a20540895c6d0d1c869466b62c35ed4b6e5659dfcbd0da8db530518bd89ba1eec19b01073e7f51ca548b888a586e7100cbc6a8e436aa94a6dabaed9d889093c56b7c89d80233eedc8127facbd91e3b517a8c8dc1cc20bfe23773ade950a79b053df9e1e25765b06cff75ac4562748d55161c5425ac5c8ff824d4b6331cb729bad065f30d9be54fb69e8b01fe712f041d156946accb855a01af8465247240b102d1e50540f744a266bb35245ff6ca3f72183f4df551efb148cd717b1446b01ab774eeed39ae847b8d61c04538f452f54de89138bed8f553eb781630ceb5f80338b9af3d1919f5742907062caf83ea89973262b41825b0fce41b6ad6cbebcc17839a6ed1cd671502072524d409aaf6d149c71ceea7980fe65a568163dcabf38a9facb26abaf2e712429bd463c7d4d25410ec4a59213db4017e9c19ffe993cf08f797d20ccfb1d9351c1ec24b06277e3055f89fe5c5044f16a046222d3484e34a03410542ec15a0eb73a86fa25b9d36a239d0fb03e8646aa60a435cad13f806f7c806094da905acf7c2150da4d462429a11e2f4cbd63994614ff7d292936e74ff3a1d936aef30b133969dbbb9430918361ac3ccc52347d4b6a5c963011134b6985d2a542df1aa59c789beed11c036a1df3e94ceb4417f521689e339ee341d79945b20a4e3dda4d34dad8608ed4cb5fff2e33cccb698a18b743cc29d8300a93a709b0b88abdcfe335f92de475c0e477e2f4fb3e75407d8922790bca55e517550861a7e63bdffa31f96157836019cfaead37d9675a71c742a32951526fa01ae9ffdeeda1537faeca534bf9ad0d3f2968d1d4a017addddc7ae547ee7d9b2d9d05980ceb1171fe3bc5c26895e4c5805743e05f52710798de8a7e9846139dd0d56d3762029e9b8fb2b4dd3e9b8a33b77118b79ad5a2c2d665e10dce38c2de2695fb54cb84027c2178881bffc1a12eae5506baf6ace611764fbe9647c752a8653fae47fe31d36870754921c66d2bc2f8f919ba727be30bd2ceedb541d412fd211b926bad736d0640f9f8a8c111a1ceb26976d5cf92fce56242834a1a999498f1f17cf96736d21dbefe9528951dda9631566b5696a846c0fa9757992072aa401cefa7127d189303519a10218f62d62e79099a9e4efcf032e496b41f2e6031a011a68c9720ee1b6b3edfef1d5567afcfb65e7b9c6649 +expected_result = pass +expected_shared_secret = b794ab6a6b7844d506eb46737dc78c260b475d8a18cb8156ccf5c883eed5dc9f + +comment = Random ciphertext +private_key = 0b9a5c6ec924f1f27a38b89ee508c58463cab26889afc49ece74225fe1c41a3145bae0be2f25619e276f441400f3d13f4c51a7e8d909f5736a04a366b265cb8574a6e92c51e76099f4f646e688893a36a199da2cdcd1a7e35a5f6b8c053b0cd066585f3f328af3934a165b20d5287f441a9d82db734a23b5ba9a35c59ac948c9b0240aab95597c26c4c8da8a339eaca1d8d8b4ea646160e17e1151b6a56a33b2824d7e44b267368f0b4914851a494349abc2b8061ca35b606039c76aa7f2c39257225ac0fbadda057665b068fada12f662161de1acec016cec59b841d8ba85b5015ad9896227b832d80eb7e71dcb18aafeb65063949f3d270d6a70396fd954bb247b9d8c034d438e64576bd738ba141aaeaa44ba0f345ef29385799cc71f48956d4c7edb2b5c7808b1ac9326533568a632b8fe39ca4d953b7ef8c162e53d1ce8aaecc7c9d8a5565b5195e0c8c4701181c1d171920c3f8bf71e2f394bd2905999c3bb3ee756673360a5694e342c83a9e09e47c68b44e3c4ee576e86184ec853aaffda13e44602c715b88a2449a1302bd7343319c9ca56e45ff5827640a30b35a992d3d37cea803bf220a7d3f30556da3e7a03251f44981317b6eec773015a062e4b1c886023b8e37662c7c5d90a9801442259611f17e25072659beaa30f499bab956b56ec0c9e060c31c58b297d561c681a7af7b8565ea2413488093f414b97c1183f8566af2a3c08f7303f9a422fd8cc64b4a4ba8ac757d366a3bbc1a1c100ae79687e49a5118b6304d970106b9f4fea45f1cc4e85916d76d48a9c54cbb6c446e4b40bf3490289f6a27c2297bc0270138ab55b522fe0f6ab01f66956dc5719b4315f22038b17363f9843ab116f104122d5a4a492843039d6bc56126e691652a12b8581511c74801513677970d71a1154a31db66c846835bf7639c13ab05964483fe99cd674a1b8e32fde773c8a210602b635da960ad4e7b6477947b3015b77f879bb034878895504caa5b11a2825e101657c0ac7f8708b59c760e02d4be2637f7a007f202af17223d99094e0090e3db2a27b48373c79cb72f7b91aa85352a28b5b4b91e41acb8f491cddd0a19ca803be573b4fda6cecd54818378955f50a61209c3c251e0807b9f6688f64eb6aa5619529fb55165c791aab1442699ca9d8aea7cb1836448d2a8aaab79299e496441b37547279acb918b03ff164b5da9f21898b1e76351aec8013705d965a9eea6b883bb7977f1c5a70681c623bc12818a468d3329d85cb80b66605a01bfe633525a4aac136877f5294756182b5bc496a7c543151397ee07dbdd3c8086a42b30b7f38f22da36b59d5e18c1c78c3175300e8f293d3d6c23d03108872bb56450031489ba41a4967f45307c49ec68197c70b2208b9c487e84a006920c5c9bf91b55ed6fa8da011c8e3c827f8b55c750ccee1e7cd84b1575923596f950c91fa891c45b1cc0494fa616802980dc314a94dba3cc5b15ded9b0a94fa2156796c1a325304ba8dfef2471cab7c202515bf056afc7496702b95e4d04880a6b86429c32b1994c41b84270047ecbc77e831a7f893181bba4a07fa44a3b455da846d099884f7a740cb8acc8bb480475619db17c8ef920dd6153e46e43ad5c6334eabc5ac515e6280793955359ef8a751836d89f51680c240df25b36c845c53c42638b686780a2b6cbac8afa3573679bbc2387a0ae494d6114242e60f17601775464c5201cf9fb3836081455b00b19497864e5c006347aa36f419c4705319c78b84b9700307b482f291835203f8f372cab666bc0265dfe052ac32cf7e57a3066640cd52c3b00c0d6ada830fb3c6ff0869665538cdebb9ae2068bd32029a292302c20ad3d40276e0be65d7c3f5e5141b0c3b34ba60160b193a57a6ab042ba1f1430037c605108afa042fd4c0af4c1596513a745d226279564a35c7b77ba75e83554991a0a88ae00f0baaa87d91717f0998261b78ac8b5e6fb4bb32146c59ea22d42466824889480582f0b33dd7b093f0549bee030abf13a656e24bc7c105a5007b0da7365967a867598e88340d65f551b229804f09b8c6e29ffc3bb52953909d0215124086f4c3a09cb27486c2b2cb90a0bcb1be84d854af86b7867b8fe0081a7e94c6ae98afd4349811910ca0268a058aac16c4a24bb5102783206a125a48e041d5f23f7c24b73af7943571088fac1bfe87401996454b5c84e10b89c871c8c550210f495f88e1c903044d904a09b8b04fa7aaaf2f70391d53896f16c5686b8a24119020db60051a24796384ed6543de913645754bd52a314a47880cc002eb1491ec8b625e4c30aea0402c992fb6d2aa51e336d933bb74772d59d9948e778c1d60180901aa13e4154a320a37fc0c465415138b35ec9b0917ac563c791f645011c76a8b4df076bec584d0a847f9a76bb4e849eb5826a9679e28f30d542a0819fa3775db3a09168c182a8ac03ccd9c31b8f50931eaf37ed476c5d211968c38410fa59d5f00b41838a748308fa87999ecda8397e690012968f1004df39543d9353936dba221d84d2b40a4b0d434350954e8192fd2419046d6069b831e6269cf91a355eb7aafe75b88728251a1bb44e0a0234d78aa7700c88e192e960a624bc583d371c87f208e527bb6fe9b6820c0122a8cb500272fdfca2049c86a1fc71fc029c096c758b28a6390113213c2607ce193b5c7ce48a12bd6c842f1f92b0f559cf6cb53a6d5086e80ba276ace365685231aab9c852a6ed049e1731a52c2b15328a59900c74c52492583c755c74dc2e315d73709aad112e8c97c2c901701aa9d4be74dc87a5d5e12ace4a8455e140b7431c4d3b103f936018d2c8f81d110dfd13a62bc535f70a4ba5252c5d495ff56b67d7ab14ad29b7c26683f92442ff914ddd2b5c9c944ec103d4a99ba70f99da040ce0efa55179b9640723071ec6eca07be24fc7b4208b74231409f75bbd84303a28750f5d92755d937713827577712008612f9983bc355b7224a918dd3b19e1b9b48937414772a5cdc0c9f83a71f45a92b35367f1826748b88df7ab0ae422054d3bc7037be1d731da6388512ab878463a61e28c3df39433d365b27f5a1bb068986f99ebc33bfa99541125452d8547c3a5c5281b75fb3c8192ed4a31ea360188c0838158169964a8bb389f4a83f9f651592658525e67115476cafc18aa1338c43095debc5519fcb17d225954ad42e2c7c163519bb1eb1a695c85e8924a2ca7658ecfa0a4e23807c40699ccbab7e70917632ffc33bce0b408abade2902e37fe12346b47789233d0355b3b2bae02a9fe88d18dc0f28cbf2105bda0af4576360cfbe1b3ffd00e604003a4fa719caa4645acf7576162664a1deafd5b003bd9f09614e07c0bd0d96da003a8fea91c4ee0bd3 +ciphertext = b34f9ec31bcb31d121a4845322e2fb19a9fec82ddc4f3fc9b027698042f5da9cdc623b95fe1098a2f7ab61313f76e0e8d119b5ee1bc5aadbc4a70582f40d5bae56ae8515f712d4bbdacbd4e01e9406f577b0336f76345e67a866f4cdbfd8a8c341341b4d5f169900379e90a68cb5d3f80f4f2d9c563473d4891f0cf7f181ccf44855a295420b8c9d93a2b2b759066f5fa4f14572fe31febb882a950b295345a25ac68ead21c497c924490e604d6643c790ad356fd907c948aad261b2a206618543a2d05471e7c63352c90c29d3fa19e52c04b1f147e7319e796c997e2c6de273a6a417c1942defae5f361215ffc1953795579fb37028acf68a4acc6cde46a99bd81d6d54ca9781c903e772c339fa75286334fbd3f0a2e5640a3508ea00353cca5660f01bde3d1f8739b14f5eca89d2a99d3296c94db7a4782dfb2aa33e676e6e0e1de0e758f3804b39fc79089b47bf0ff7f4357fa86ef6c5c5de0a3a7f67d16ccb0c1e26ae4de28ef3ef8be7e57b4d1df58787780c750e7e114e71cc57f23037e999510f727c9eaeb50024728d332e4f393d05337c3e997c5bd3b2c6575a0339dd80818bf6e65920bab775212475eeeb02edfc1f307ff092fad3671f37d95de70c354f02c88a0ff2b14debc6ecd8ff8a3cf9a9f3d96aec075d706da2e9eea5e93bf02dbf9bc385b1c7b5c4f20015540b06ff086e4e91eb9a45d43b0a73f45605991f22a7cfe34fbbb6302d31a43d07cbfba9588ac6d93dc5058fe152e50895d8cbb3741bc79c77ff13c0b26d331503b4fbd491a5633a9d3c95b482ac86342075670bad0fdb6b5463e038b4f100f9acd8f9fcd651e1e514bd9c4b7e5f1f152526ae0f0f7aeb8c195abfc4030f66b5920800b4d4d04fc9f4e8178013d1d0f915bd9b92923699570baf512c66a79b5897380ad4938b4802ebd30a005afc57af45327de2866c73dff619efae173687ef44bb8df3ebc08ab29f1cc22f4831f75ee70b681ebd159164fd1834513c382bf47d15025dc6e85ea69a2cbc4b74d753d4c014714495540ff3c1c598cf593aacf905a2dab3a034ff81affd95344d64dca032b1f95612e5d7be6cbde26bbbb092d7024b3efccc7e3a9efbf5493a1bf2c26b824f37b2817a39e7728b687ee73d0b329e5106cda9e0eb986027d75a9607e9516cb86ab0753fbf675e157b8893bdc565174600c54ff7e81310579d1b849e215669437b4811fd0950e5482c70d29b22ac55b175562534b1300639a2079c295e66f4471fac9eb54ea6b83ec3cb06ae560545737d184be403fc13a8f1c31ed374f1b7ebb878d084341a5c62fbb834f6d7a03374b832af4c762c8959c15ba620922e9f5e2de7e03adc1e22fa9ec3c76f9f2ac4ee5628b017e3efb526cff693aaaee13fa36c5098998bcb62f5827927afb363bab182ebc987aa70588b56fc6951e60354b95705d634744684a453666609752d8c8ae29764ec02b4bdef9cc702549ca7890640af7292b7eab518cabf8cd231b83e119b79ee6cf12ce7fb51acb6f7da7163dc +expected_result = pass +expected_shared_secret = 822255fdf2b40392a52e30ea1010f61b8d9e13d0843a859136e53c6a87803cfb + +comment = Random ciphertext +private_key = 31586f3cb882cac18accea629f8535b5cab166fcc252258fcdf97cff8c6b89f0c4b725a225f17ce14a54c8e984c2604cd538aeb73941404913aae4c4e76468653275beeb13fbd00e941979fb48af62c35a4b01991b6c8d7a25b78e0084457ac179928bb6f13780ba5daff3062cb8b610c1cdb36001ecacb58ad804e445a3b37c3f96a4121d50b35c2bb96104ab174233378b2fc2d86149ccc4c423aa51da2c45b3a0f5962e670785d5b5c85a1730cabcc9e1aacefadb2c8cb32ee8561e7719c716f885c60cabac054cc16060afb21279977c98a2141a8823769634f3d1547ab23f9eab7e738b057e104e305272e04b06feaa3cae7c89713746ef4c5982f1ab683b69e4c3bc5cfb6167a39dffc6bf9a138670485eed8cc29898a93e60998a9a3d9ac77a298288a734ae2b40cefab7a99df04ec1346b82b51956a03e6cc5a7d2e23148c5344bdb7dcec81358d06f45bc4a67a1c871d989e718267af18d12a38297f918bbf22993f60401773690e2afb7b740dbc3a7d1e122402981ddf74484b30aa56281e19c2447c544d75632b85c29ca4117103062c46252343c203040b1f6f0abeca550d401941b7794a15932aeec6aa0519a81998026855ff9aaafcad98c096327758c90d308242c413e977906db1327ca984dc97b2cd63800a8d9643230808b53545cd7203c213957247a811ccbebfa43772cc1dcb1bc921577273413de8471a81775bbe3c090f76aa6b6ce80cb98609697b9b78473f2878d67218bf6b47200868e8a6017566d3c40a1b6626dc850a9b2b8a72c81297df525d1930bfc9c541305665296b534b675bbf8c175eaa76245041c838df1b16b83ccaabe81040e13b2d0197471282b15d44b00621c98a696f52491d86612344203a8ab794e0c710943cddf4a2823094ff4bb427e54a34ba84bc1848d38305e481b5bfb7cb73788b37b3837cd705ee99252f8a0a6e51723031b82fb350769775c19599ce311559416b5dc69c3dce7502b31aed531a4ab97ba93590736a88ddc47c06a707c9daba7ae10157ac56ced392644aba644e174c5926657d438695ab3bea6106f62b07463a12b0a00b0c35e5fabcbabda3880a3840d2733f7c2566c75bfc7f12f133314c1b710d5ab9d6581675eec485771bd9168b72d065815d0bbf42096d296be646408ff31ad25411f82a0750139942900765520bba86004721ba71c16a38b2cc9ba8878ef1ab55f321b7aac4ac08420143b75bc17c8a93091471cc7bc20a4adb84181547d30fa8d6cb81b8dac214ef06574e62ab1d61ccac34d66f71ee9e2861595cba14a4a1a531a5b96ad5d1b79cd403599121e9dd17e2d604765e40af9166f024526a8f4a00f787467c22c0b887fd90c77e61a8fd973ab121a3daf8a0ee9a54985a1004a22a1847b7c2a70a1c7e053f626b2d767428aaa0770c3166f506558aa05191677c161939817866fa9c6853ac957a9cf75d80b82544d473834d1d54d09c0721ebb02dcb54e1e123fab1764fba4b285c41a61650f65901ba5da7168778e18382b9ee8be4e72caee8798410180ff0bb23c086cdfe7711697c89f97b9c67a53ffe67bde3117ce77640f2a9af4f7c1ca48118c7376d346114d0c2b47538767496cc9467aa8ba28afa33c78cc784cf59122c2cb32ea15a6f3a44f452c83b409737529f790c2e1f239319125452a9c470c403200cfb2262c7eb2a5b053244e3553c1013f598a3506176c05e6a790b5186163bb83372aa2a63fc1315b5b4193db3cb8a632a904fc19a79847c652295ea099846aa4acc2a142105f3cb13a8ec73faca1a06baa2e79701c72f75a66d2b0368880e5acad01814fd884c0561776866005671c0f4c8a5d6f211706554e64736cf9a4c54505957f947f3db8b88ac696960891be643c30ebb27f919927647d0805203dca1e9a26c9d6b0a2b3281503e611ffd58c0696604c566655d18ba439bb97f3877bfc45abb599f90408187aa8be2695087884d580493fea0ae947c4823b918257cf676168edebccc7b447d69867889296cd246fbefb3bd921cc858295e9666fbfeb11b1510d01f171ce829769b150f194984fa290ee3b35a9c6b881d39007f18e5b142fd95525c1407a93f505a92394ce29528d538c9449a369808263004e4e2b47b2b034e5facff5ec0848a38a5cc9690009a302125e1a60335ee48875d6a0ebb51d1c452d4b8565fba210c28a407012b1e6383948380fea88353a7899e719702467be3989a9996154f6f05bbc82c7fe1b7f07d74225f21d4ef09aa2b5ace0211371402f70327a0f1585255640ec02071f62389d66b4242564d7b98a418c0456d2b920396100c2aebb53abd5372ea118859ee9ad6ce62517e65426154b7bc826eecb0a3fa10c5c351d0db2c6129899bf04c1dbe51f0fb91b22d97c17ab0987708c2695184527743af78d1b633b484aa1a607c49d3b9d98f23b6a9c4061a9b75ceb35d20103de99bb10930668098d3fdc491d129ee8fb7df49a576954cfd95cca21a75fd24187655c47c4817debc46979b1a78f237c52503a0503bbbe4c942d1c8217c71fba346d327c9c80122dfc2030cd397851d261e19999395a829d9b3696f2cbc6e1c12a9c53c35814bba28670c55444b1917fb625e61c549b9ba0586611d6c846e4f030c4f03986bcbabd7cc06198a99ae33e7ab17e76a159bc87280e9028d1a591ae89b228494c5c6695b496a2d757692f6b7a93c45b934a59a7890433d409d4f57602697edb127071a02a3740cccfd0b312c5086e63951bc8cb784251f3d90fadfb418b28a848e11bdd778ff7cb7893276bde39069f818488424498415a7d2451e9f66f30a56087510c8934b804934f9e9196f1eb2b55a924c121b8c68700b75675bfc99d68ea13c89247fefc16fcc0ae6b603decf35f78da49e809af332c573be82b52eb65679540aec76acf045e9b4788963b6838d93d60c07ef615677a4068fbf143fb69cfb066225f828789cb5c7d19c0da984049f25da441b0b20c01f7022e4b46a4677baf3af61fb3c98698eb8d578661b9606b0e643eea480dfa0658f4f0bdffec7fe81aabb2895ed71c1ecaf297c3d301e7672587500f34b015850c3232a29e9d5119fe7118e2d9897373347595512755ab3cc4c7a4c12d866036e4116e4140a2300434d0e841b972aee75b910e12c97a218339a2a8f8654dc8e93664d37a59e3109669267d31a533bac8b042652f5a3a6f7c116630b336ecb16982390b893da8901ef0286a069b7bd9681669b1af93155535d676b2ba24595965ff802a9554c920b99b9bcc842e459709d99e687d49ddb05064fd5e206bb000e60007765b3201d7e313fc0fe7ec241436778320b4a906531aa225f830c1467a823974226337d0d27700a6f0fae0cf +ciphertext = 3f65a74eacdd023bcff1a27d6c23a8e2a3a186874bec8fa4d351a2ab31dc56dba5742784beb47b640a74656f10175a0215e82c9ec86a6b1c32ebf9c1d5153e8f26fa8fa2e9c4c9e54f66d025eee9c8dcf6dae71afb6b9c40f951b810ac4c8873fa60ecbd800efa86b6a528504defb434ff3dc02e03a3926f1bf88af42445b00e023ed5d08d1f2ef3531b16713f93a0a82666fe83605cff715a0eaa4652352bb5c6875449066567e313434d58348facc180fd516c121e500e475f9cdd20308c358c5b6504da818d80126c2b203290ac355f1ae10372c27a04a5b24cb092dda152abc052b927fb332630dd712b74f96707b4626858c93edd5d08328e6fb9c8397a339f4b1f34f715af75265930002a8aeae099808d1da69ecb6dd4eddcad7c1962be136fffdf03be5a0b689252638285b2b6f30d5da86bb24cd4c182141d3acae716766577663c2cdcea6d27bd59a1c3161894cdd0fbe91e35220a597196e37ba7b9b48d4b6fca7eccc9b9c6f1c7d26436f2ec2028dc0a541fc180f263cddcb26d9c8ef80b732ee66a806ff317c81d51242f81a48b91662a78c6b430160a3c358d9be74b671af5b2f5d1088ca951780d9b528a7c014b67f11b711732008ec8e30e2d70548afc2792eb52460c37cdc8caa77efcffa0b8412d0730b79ef953a9b90b112aa871dc65192d988abc8b3aa8377eaa76ed5376f850712b2dbe0cf67ae6bb215adfeee94eb2eccaef0a6b57cce7a721daf0f9f22e26f71d52900bfb2eaa0a2edc96c81af6d03a93da2ee83582ad542c9c81f7c5c6a37b484082d426b36e6a26ab4fda7fdd82f692fc186de8148efffdbbfedc7565192e74ed37d5494daf224632850adf2df1e11d9b64f8bb8fdcb4d1ca8b662271332b2f87ccabfc7da0243b84a7726cf2681c07be79d1b0e2de3322cc4f5f221d10b030d51c410ec6ae2dcbde994fb86ef7ff8565f51d4e0fee2a0a10d93862fd275a11e46b34182db8d12e01cf5992f23145a0ade46fa3ac1ef566827b3537373ea431f779f267ac781e519025d84e7e8552852d42b3420cb5316e0e68610a5c7ad4decc5760f75dfb20fa67945be93e95a025c4476b7f7a9257820e26ffc88109de705022d0990d1c210070ea338ccce7143059919907bd70b0db618ff3defcbf7c9ff885ff03ce8e92965b0f6d3ac3a48ac6297136077530bbcb06445d953f118b648dd172a5290902700ee9fc8ed8ecf4cad560262c2539ded77ff6beadf90080e5cba8fd39554733d2acb6a401b1b3e458b6a10afa2dfd346fe7f978163c8f280d6973630604864fa6519608c148bc86b6d24ef4c7dda82cfbdfd6a0abf4a17076b817ff87d972c6d69d4300f17f2bcfb48afe82f0c433eac03055d0d4a09341ece6f706a3976aa928d95a70a9995601cab1c2f12c2a75fa87a0c23407d95249f18b2aceac24470297dd0aab16b2a1f50722c55f50a024341784daa2e23787c12191247f4acf2cd806fd76053699aca7b44d322679dc763cb7419c54375f9a46ed63f74c36e03e46 +expected_result = pass +expected_shared_secret = e4863d639f68345af3cdbed85e317ec8b87208a25ebaec91633fecdc0b97433f + +comment = Random ciphertext +private_key = 3a2ba549277afe7646dcf6923a61875a55033415b8f88085e1d514a268a37ca28c4a904c4c037e67664235c27ac1038f19999c2407c266dca369eb8f859312c8512e7f8466c87a6edf9b947bb76bfbc3b28071baf8fc5aa2fa3e5b4080d82a70c0fbba7fcb4e37fa68f0b0486b5944bd822146479940e70c7ad74a46e3cbd82a56d747158b7c37dc3c1d4349a9a39543893597ae957069dc976cbb21a18bbdb988cbda32cc3d5569458166ad7498b603248902b82f2079dea70c710a45f3f8cbd7f9ccd72a528c1c10a4c4b86ffc81323cab8b5aa2bf57a061752badd9798ef19281f89acca800d46573a5f9c484ac246dd4be2e0b758138a967f65ddac38422a34b2f65560ec4c6f493aba92b3dba681e64678fdd249b8bec6b2d685717bacbb953cc3f7321c2ba9fd82b388cd95d57a5770c7335e7b5aed5aca187408e95081d879054d332c2c5340273157b5703198b2997ed0944b57c91b016cba636273125176eb77c11c00402da8ad482b9ade35639b57d1491ba45496d61682a47744fa483b2d6e5a5e33cc9f00bae7d51c1b667316ddcb0accb468e65129cd49acb6596a498b43c7b56b4a08d2225076151408fc78c86c73c086038761c82163909af865e3de836b80ac9c68a3930460399091e242124889643f0238864b550173224a107a574e7b63368a11ce54935753a97617ed0473919602a5deb94e54b703e1abcc0dabf6dca679af22e091876f0787370a4188db13ac5607f3c273d9ed3090136b75d00178df50e1d5747edb80b87799546283ea5653e9523b78cd6614b113225922696a1b55c938d80b96e3218b68bfa5afd8363f87a0d4f58410c8299eff8907e46026b339d22007e4074761ae420999726b8365808786d7be38cb56493a4001e04b80df36cbc8f9a9ac311afac20c694d9cb87ca59b7f76810913133f8908d229e10dc9c00ec8327a053763a8560328c2c572c7fbc7dfa0acc50a623b4d68a4994ac05565eac5a90fe8451f8276bade020890b66faa6a86b975e675460255971ff8b96cf227e755cca5b562971610b526093fae965e11b77c67b47d60ca5829126df4059024bacc92c4763b1391b9ab59f2c788706c79c427cb7fb920ca19f292a41bd4942fd193eae80cb4bac2eb51672c9d08ab2d8812d8a9e0f5b5f80750f98e1677c18c068ea58f03c5fb393c4bd32bc931175529666e01134d2e4193ef0850a41c1f2148122846bfd529817927b93b49a7a348ca1007fcde814f5f88edcb82ef7751cf423c9bd8a0703f1101087932bf857adccb1b5a9946b3562d079ae8a818cdba4a525a44ba7792ffd11618d1ab0ed344cea884918824c4e19ab37f48fd74894f9d08b91dba53639c9e8ec5aa021abffc476f396720a193ff10b1ab9e62f566a3f51925433c95cce784e9cdbafc0a23d13c38f0a086920082584569b889403e0e2cb67d66dc848a551b53086431ef5846d9a1555fe0247eb10173abb328a97c654d741c06b5b1dbb61443a8fd0a08b9b2923d44c5876dc0e26d83ec89b0b91e29e9497c1a83b5e315bb026e837975c535ec6903cf385955b89df613ddc0999d69abb2d596b07ac939782494036b9839377d8a028ebc01dd2f75bf1e2cbf6f23e3085651c8271d57676986c44a5f048b22c592985528152331151534b06971c835487d315fd340522ea493d51ca1885bc5019cf30a4c169d64180232a4e647609c9493a4650cc5c8a5aa879f21151d0c1b5cec96c09c2637ba20ba0478fa1662fc0ba28ac2438b860b28c1a819b42885a8560fe838bb1ebb5c2135bc29a5ed24290b4f73fbaf498da2868c0c44c490c3bc38805e5e63e93e23ef50293cc84242e85780ed715343444b60b5a50142d86836b8098189fa3bf5c381d72789cc2d1666a188a318c76d8d3a712189018953a029aab1195157deacac1f1bb7605c037fc839fd548b22344a881095a479e9d530c594c6a9e7aab10e53e41ec53e20113e32b34a82649935acc94b44dd428c30a02c9a730c75de223956315b6520bb4685faa26a7b2ab747038935ab48939860a53712a4b9873338caf2a7c5f53d87af6dcb061c8affbb99cbe069e3c38af4c292f4106cc9c973e5b327d78970623b0332b8332583003a0f9693406a636882aeb091ceb6111bda11be1b434d3e4af93237f40819e765bacd7ca0cbe32407468004e73ce5789c25691a4beeb733a4b146b985ba4b29e425bc448bcc6558c6f7b75a2204a4386d73066cb646fba30c7b6466bc2bcc7818b891a160ac0549de5008349ae7fabbd9c2060dba34349a31da9624cd38238ed711a5555cd86f22081e4b21683ae7342353f60554501a66af424b4885b8f0c23402b58b6528c185834f7dccd3989952c63b8ea90a696b473b795120839232d9c1aa2a90decd8902a8ba423966628f2c1d4b078a0612abf982de6a305f2ab1983404a9ab3783ab9bac14a5ca2903cd0345fe7a133dea511d3f4947ad903782a5f7792970439baddd328a23380d2d0148e7c8c296a26977b4000a67e6483bfc45518eba33adec9c5c67c42b5dc60846a0125e5c5d523039a1c579a0147caf090f2a9ad4d37b04a29aed3c67c130304a3ea7a8e524d638c31c20832d0a41b7b89901b7c5745f3662ceb46b14a77d357650f85a323d847ab7863573b3d8aa0223f56ce4a3a18b279607e736dc4f3a8a1b5b70e8baaf4530b2f7cb54f826440a61b27d33b492054077777f1b15ea9b5af969174b667cbe994a475b71729f64ccf7bc305acc67bc87802575b3874762e85bc7b81406d5105dc3c3e7f5c452bec77edb4c7f07b3e12607e1a00b07f6b82e27a9e5dd8be20838dd68a9f8e61c1409b2b123a6b71c3250599c1708a661a6917239857b363c1fad00632b08ec2c01be7e0c314c07b3e9b667c1c125ed64a4248a43cc39d3fc5c23fc0948a0591acf2bd8ac2cca25c5f79c95b7f99ae5116535354c79e370f118a114fd66edc817e2c09c210117397a8282f803d8b492d1602983161695e444d9d090f3478982e3b702ec28615d981bb76c130e4b818150d5f7b411ce3907ea8a1dc90358b9b9ce9a2981b7191cf84aae8e4926472945d02bcfc848b04c1870c303c163713e6c1c15febcbf01432e6812c702867dd14cecff43e20248b6d1abe9ab940482bc773d92a679955f326867945bc736a362ec67972b78546e941f58a5d496b9a98ebbd7a5c586d3733baf2141c1053180c3c4cf12200720f27b32b7f972bd2eb966aba012b5f2e9830940fa8c3971f12c682617b427433074393551e335d8a5adce9ec67eea42b28edf33a7c68a6993fcbce0bcecb172c0183d278ffdad695dbc072134d67f2d4c55d939741894ba538a0b7643bbe840a92170207d225aa +ciphertext = 6a09b4a4f5c7f9d08d4dcb12c46960bbc4ace0f99696b181be447dba0f84c8340fceafe4c1f4843672b0ea8f952f81d25a8874ae726405d340ee9c00297b85117f30ac4de4b68cfa913310641f54c700c9379eef6b0417f17f1186f7fdbe88d439f5d2bdba170c4e744a9c4c3d6f9112018fe0feb67392b0539f3c72738779fd986d33c1697516b60729cf3539b26c0dc8c7fb923d9a482e6ddeefb4ccbcd644f3f35b71e247a1d784e904c13b0408aba79016f095b1568067c0bb7f8dc77c2cce87128e7df71fd5c645c0d5be57a0d5f8d4e4da7240ba10110e45db4931691dd43054a69aee7889575ac21514ad05e0cf59235ee25e9a696ac78008ab7421f8672cbeb123b7e43f44397f9c12a52066e9dc752e4e415dc14866701859e89e3383d58e87d97320b0a8d7e55532da19a7c7610f788af5b969aba829bf968fa892611f5debee9c5ed7c000bba5141289148308c1d0f3318adc27e9b73c0ccd38c86996b39ebe4733e1b3fe74dc384f75e7f2c0f5a6f497065109c43f3cbe5438f38a049f410505dbfed98bc0011fa3e5c6b0da063058fc7942599910f29cdbd826a34a078c22ab52f43cde7cf85e987dbbb9c39ff2116755e3d571a355cdc3a1b120940a2ea3d70690927382a7e22d1bfec3b8423a71db3f8875f0275c3ad01d5409811425b224583429672e5a80d0f7ad1ef4bb2b8e97c878e9bdf820292528dffd99d5cf4f2d4bd08076abd00429987812d35cf4dcf8c1d0c2af6b6f7eefe42e533b702382aa064107c979667d2a501c5129235524cb7a79cccbb28ab725376f246b262b23dde0ac20e29ec6677278ad62668abf356667667255d5c08dd2f7f9eb89f8ae4af57976b2499762fbd07f35b5137e21b6c298d82276e31607d86480eb449b6f6ba268d739ba6e656a189c010e593ae058dc2fe2e4f94d864fda7a2b0cd863be16b20266d1485ed997c4a9791f8ff4cdee24616d1f853bbdfdcd835a0591a099e26b47601eb379c5eb032cf72b2d0369855354254f595998800af5bc0f09434edf252cca91ab921738b816d6b3b08d168bc3b0523f10f7ca0d6762777a2ef34b049a8cbb6140eef689145a86ecddad542783247c2b439be003820bb7d4922c26207133bde6b89c79bb2f26cb324abf011dfc9b19450336feae29acc7d9df4f39204429b0b4e2e4bb4a1bbf6fea04418eeb9ffe10a34f09f86b2d2f2aecc46ca43aaf08ea52374a69319e3c332d286c3f2fb2482239fd0b550f73673511386a9c052ab47f60adb1a8683160f140a196dffdf8430dc97e5e21e9ecc82792db9de624233b7a621851813af23ed418c6c2c155a822de0f7cf1ca76403078a00c76ae2ad4a992cbc9a5e17e91896899988eed8157ee391a4397b36f899574794568cb62bcf45e4a5178d9d7e5c6ecdaaf8b5bf714ee1da2dd902c14aa2243a16cdf1cd9bc6889ae6ffb04be1213338183fc5208ab36a2708cea71042412f98181ba0500b76c17c375762bb07812ddbcf693185aa385252cd810793b331a8b +expected_result = pass +expected_shared_secret = 12511f92b1c44bf6e2c5330640b54b83d09bd9560f7ceae43fa6a8f5a2386911 + +comment = Bit flipped ciphertext +private_key = 8f74492c941f826964d11008db0904218859e243853194392c8c06102bcef6c8321424ac726c74b091583a645d3c08a0a18b856bd37433697dfc80593e506bf8f896e9b87c06a90708761970036c5d36cba2ba792b39bf49517321ac6963b90ab0e39a6da0c9ffd18445b0919831798101926dec3c195997c1250beb3436cf78cf17e62f91b916c366a0f66155d65b9a9ab7258248cc40e21418ca8e7a4b07260606c393bca17494256263833a1cef3700286aa849139575543c23f4cccb60598f411b1d09bdab65ba6712b3fd2198406b1d09a38e604930ba658fe0ba245a0c972534befc357577677ccea52ade8791a3f5b754e8ca4749bea240956ca19ba87cb94e01b32b245fa158603c0609aac788132b28714351d4b9c93d425171d02c64943ee0148369920aac399d87673884b877970a9a5fc86b0b74a613f582f40b86eb197b5eb7536a1343c9e296e975a26e680e97cc15fe2b6b35d62ff8b9c305f187c7776f591a5348f21aa4f17e716b67a1878e62b03e237c15a3c0987e27413915293637169fb1aaeb8489284b9e801a327d885e09ec647245892757957d64c02866bfb4a8a3095c14418a6261d9c496bbb99fb403af88cf4057bcc6e716c8a0afd0184d4b263633964863011578c40131f6b2bef4c5f73a85b730954c8121be0b14b9656e972b4db79ab4f2936796802920f8418acb64c2200f96b81503ec2bf8ea58f79c700fa815d5ca96cbb7856749a059d6c145280ad837986c7957f5544afe8b51d234189e21392413354848a135758e4cc975a5416dc1560ecb4691bd8071c8d45322767016414aed929c86c727d44724253293cdf167b08c51f0a1819b27746743a8eba38ead61125c278b27f68410527c12869955b460984b73b6ac009a61841cf9912c79185a3a4cdfb5ab71566a2d6285ca68c771e650615059af96b3abf891e3c7aae0939d6b12c1d4e585fbe2b379e49fd30938aeac7e31a6c30ecac70ce521a748ab3f81451a0119bd90a3986445b63731c960bb9fdb4e5f0296a4c4b88c22cca6a5002f20690f5056d417ca8c541b0a9637075bc03c3327e52c678a6c87511b79ee108e266a8dc366217ea33b0b499474657b277418de73a9288b913fea17ff44695c39916a0bc8f1bab87d18c7a42295e9115838b71d271542c73a34f6790b1402c806021c04f4bd2c7890d13076f479be5dd8731196477c157f169abe0ffccc2c46a138003a38dbad72ec38ed529d03d6705ecab8b299b8e32b314e2744d77aa5c47870a1509a78614ae37bcfc07c20e6d9401780b6cfb93a91023e6eac75eaa687294b1bdd685587604ce8398cea664d63cb70de0b02b1315d53a0299927739ab7102ab8942f418b84a72039257b7c9b5879cb6f81c61dfec7b05625a57d6228edb04054398bc205702b714a040c710fb34f5be2bd58895dde50c034101ca54394ed2a27cc3ab6ab1b2060194b6d32cf5e6a09896b40b0115b84e56fe3341cddccc1916b23ce55b0419993adb189185a21c47562c3779231c534282340b3c98c2e086a13436ff35a138077592ca26223e4bca53a457c7856a76823be0c178d556998f7ad68d44f98e2462bf1031750718d940d1ff510a7e1918767c13836ab70a40bede72dded902dec35566c26e9869bc4d31b187f5997d942c04b7403652bc125ab6f37071a46b904120b096b023d68765081acb0fa177f0387fb2c36404c21ae14a12ed96b8e580c04ec72623c88ef11b9ff85544d6c36675848aa0bb7af0d719e29a13d5a55bcf30be295980fa1b8101385699b17e8049704715b04c13c159184c9dc6780f446a98255b4421649dc55052f3a4d1f82984b8819d527bbfd94955ca929f983ce44b9ad8b05c5d4c551f355199197916359bb5bc60954641650690d89487206692159aa485a3bb62180d967a73434c728552724a3914e7b398c54cca02f67d21c55382730222851f67b249b2a2a84bec5cf3a8c63ed17c05281b38d279a0ec37a3b7278cb8808fd79a2cf04844039b6254c9dd64bd19b85e80590db1125994126f7c846dab13b73eb5c1e05521e1205f1a493254a3937c87850368cc8509bf504413a855c7e5ba770eec08e7504949090fd6647f898913c2fc5f5d671310c73387a4b2a515208675786d9899d1f3c92d1ba4c09700fb405295f2416a417615b68cd2408cd409ce11929f1c34681fe06746f7c997c5ac729c19ea24b85b40b1dc93b896792d9e3c48c5b148dc6674af7142aaf4c0feeb1fd1a9ca2d2858fba7c047e2524ff488fe26b005fc5dca18326dbca9d798c14263ad0a4c36c5e0c36c5a612fbc49beea0a42991520661122f324fbc1120a132a9034a6407bc2f35485ac0ab65ff00566b0af3ca09d382106b8076c603817da72a35fdb71e1e9cb307257fe79a1436398a6e3cfbb2221e0d4cc7d252efed45520b3465407346e34884d6587f06526aea200c4f3cf69cb7e6ca48c7b337ae6c00c387b6a5035bbc4480ef4d2764c8b752eb36e2bf89eeec82510b62a3fe95f7d705d0474539f6c2a17d3905c6105ecf493d93bb3d55c33c974967555b29afab17691482b56491628c00478a361955550b9c18f8601075820cdd4cc41555625b727888521575265a69931f9182189988e782ab4323b409837acc70b7ea96a5af43c5a1f04a24c37c354b6102ec5cd6da895b7cc5fbb90251bc4615d47bd080852ea18397a47064df46cbf199ad8f93ebdc012c9335e0ad80e930c7896342334db427c3a3a5e823dda412d9cabb2d633ce4fe1cf3f2b209ae64fb516931540b0753860068c631403aed6a5744b07a80c31b3cc1c67f1aaa7197a3c06056c1023bb06231a6558109a504ac1b8a7b9fa14c0e13ecf74b0b4b34b1dc2b2add316c91699c57a7fa239c230d2535b68667ad3a1b7f7cdb5b68ab68842d9a5826b723cd7fc4ba8a121afa1029278c6d219046e492acdba3d0403595dfb5248e03508d620a3581e6fb1099282841e997739d864e03678b0527868fa1fff674ee1b57c00227622d60e83e38177eb44424071152b51cef555ec4bb08ca7ac5ba549535b3587c332401327f9212c4f375987db232718a9265598430395d1b27f90332711d4bed94583582b931505a73555b18c130f2bac351f10a4e0a644a69194ca3621537145aa329f8bb28304881b7c29b3168bc56e48a8730950a80c38b2f67787673fae8c7287c375a8c7acd6425e973a024e6812f635711df2139402738338ca002245c54c4f81a401704c8618f5cdc2dcb9a0db36c603f3b164867607a380743865d6070b24de7e081681668d4e405c3cce4bda8b8b19b80fff29bec291376ac7486036995c3088f66641357cbb4b78df57965db17ba4a4c561da976b +ciphertext = 0ea9150e4a805ae98b71141dbde77fe6e5436b685dad98fb2cecdf3a8483c0c0f4626ffaa1893a7f046b66be119b1138a1c39b0a47ac69f3cfbf8111aeb6946995504f746374e4dd298ffb74a7a1c615c7446d834fe59850cd572c9477d1e07c2c8b0958e3149931630e4725ecbe7b54934f9450c50fe4342dee3c1658db38c3a167db72e8fe6338505b043c1943fbd341b9ddaaf9bb65082bdc3ffc288104ec2caca86144a5937a5953fdce7a23f83ea69c6e16e5449289b0e1687c0fb0d810d24e3f3cd3df6c6033fdb99e56cda860dfb0ce5401b1b41d56ac7bb279574c4adc583444c83bde866d721d1ba9db52272c4d10826566ee98505251b563c0de2655b446c5a1c94231b0b8074ba1fc9847086c3980f13a1c79f3ce43c5a5d3d88ad1ea22d821dccfe0416092275403d644573c393e7121fe3947e64e21886cdf4eb06f6fe1e5d94f591564633bdcaf2761e248fc1924fea2b2d7be9ebe70706a3beb8ff8e8ebf69ff09295dc7c65e0f6442ac82241a945d5c2d3772d1f32c83cad36479438bd3191fb86a32644377be9df661e0466580a725e7d4f6e851c6d7bc26d1b3d96e748cdbcc4aa6cd71f5c2acca2a9fb10c6ed2f4f1b6caa9e9c5690fda98714c70c58ae87e449f5370040ba66a6455ecb9cc2d03b28d438cf1592d07b1b3123673531da943579b844e97bc3a2a2260f8675630c8f8e14e70d8ae13faba0ba56f120fa74906104fbf0ac609a2d383983cd0c60fb36d0cf50b373105e2892f71e563684479b7b7f2f98feba866e6b15f06e893509d08d7f094adbd3318b6ce6ac6e8345ed7e8ddbeab8599fd91119773198129194d69cee252ec6ab2942b7629c3e692c861caad3c0cf4fef4fcfe94e3cab2679574e6eea0799030bc9e2ba1946275b8697dabdcf28337ab6ec2e62ece2fc8155bd5f5a6ff6a67761b7127726a5b6c87187fcdf3e49a2899bdcf92b942e0b566e2a5b025ab00db6994c75bc84dd4edad52078539ebbd7ed784b66311971cf3d142f6e402c88ade14e767ca2568419ad222a0955f1ec8658522c1d62c470918561ae086268e3387701c7140f30416c184a8efd00767f5f34a37b139ff0a2eba8302d7a1d7a5793c7e9a15c7ad65ba4c8f614e6c5146290e1cf07e07b168e3a6018de5de0e2a9c6c8d657055301c488220119db5cd1f2c27dae930a06962d1b63d4f88cf292aa8eaa2a5a96e13c7d0ea5c4e98d86828b6c83416d5c6899d3bcd4a08181135678e6abebc4ed2cf557f9b358fd9e88068dd186e338c20841f21a8692f9d4d7d944b569ca34d52901a31dacb6fa5a6427c6dc1e28ee854a402d100569eeebad9209fc63b7f0490a47025805be7cce21095d4dfcab88c5069886e8494cb722526662b30c3e36c975fd8feb1798010b5170bdc9141b4fed2649f140a98981bec7cf8bcf7b14b0a9237e40eadea2b6ca8f78ebe7c6b7c3468f08ad5d3d3a8c58a1777146c251981c0c71e4150e406175b98a17a4910d56598e8c9fdaf53971bb1b317cb5f3b395cc +expected_result = pass +expected_shared_secret = 0fff63ddfb838b54d94a870a3054e06ad99add93bc1368eaa7b106abfb11554f + +comment = Bit flipped ciphertext +private_key = 86c588fe37038418cf19bc45cdb1c987fb57f2301929694fb52cb042da2889bcb8a43a1e5982884c139a9129003ac5b092009d6a837422b199d8505fb9022295f74818a9cbb6e57b4667c3b1962441b41f9dd02b5eec39e9561a8103ad5dcbb47ad427351b89126b18773bbbe355379cf222d8a9a2fcabb5e8d575f4659759570b2bf9193f606c4d45ae7bac23d2455add3a4eb8c87f36eb1d65189565c9354d395be1884e7ca8caa7e27f3c9b68873c4b1b2a2d39094d173a604798b015201cdd2970bda85253f6c7419b107de4ae83878f3c97a9b741c4328227170a5170d30d8ba38c54616da95a3156dcae5fc95a21397a62dacb0273afa3fc9a51537c23978b4e51529fa124177b92c8199fba5c0d6a9529f3364580333059c39dc2d93ec9cac2d11052eda371da798e7c486b5efca3432ca02955a7fe857622511f3240b36375a86e3a2ac039c67cc71eeee33e527ca879c8c68283319b9815ce27b12dc0869d37a688850a66c79100cdbdecf6b5a09405b0c2220344410a20c38547c0b224cf4b624a173894d0f53107547b22326c36b7ce28c56d9f180046a07c41e868ddcb15e0e20e3957bf985b9f2a990bd9f91025469163d9c61f1795cf398434c9708c5c17c999bba9f8196950c484e8544a3b9db5b6009cbc5728343b87c3859e323d1409a2fee61e7cf72b9cc1ba40d546820486914631de2a50ff424c7f5acb60aa2e76fa3c57f19045a910a72b544ae01d340729464551dde806292ba1d63baf290a251825a74a6a482e0277601c3373a4b969c54324a1b2b6e71201f11d20e3bd838acb5d6c5710745917b1b7aab28405012f5bb722c41c2916c98ec73928c211bb26102329a62b969912f4a5a4617c3c6718906d190f1351ce1ca73e7495886b243cbf6c55957689111b008392b59d03b830cc1dc9e0acf6816abca2425f68b452f37fd557570bfaaddcb7b397e7490a860820a3aeb8d17feb123af1ba8b2ad8ce43bb37446c1e3e3b46cb905a35a52be9b7855faab02f1aa0dc0c34049a86d3f02c4da03bb0a8763085cbe71057223a5132a422931379fe5c570e892b058c7e3cf46f01c2224ab75d6e907a491078fdd5cd9e4c1f14b46b4dcb29c29a7ac11096243830a1a45613aa909c895d575c69424a77dd515358cacd4c1829715570764003f5e74030e42e5d645059309750ba7478aa54fb496ab733a8b446987198530b5871180337c7208506a1776a08b1ed5028bbdc07eca201b101c7e3e7c788646f467a812e851db8cca2e039cb5cb3ae4bb1a006375f85f7587b3c9267294a6af0b48c056adbf10ff2f7987af22d9fc28c88cc6adfa18e71ebb1ef08a59a9474b08aad8cd360c8ec62ce103b63a4a6684966a3c4bc01f3afb31467edc40b8560c906eabc8f4361efa6c78fc0245e308d7461a26d490969a00d2631c40eb292f83436cd1339331612cc02ca14fc3ea8a90e5ab33a98c1a1422b53e1220ba7a50817408d0fdb2cbb06804317ba76275f4fb70fc2c702133a797ab04e8e7462d1734aa6bcc267703f3b27b1c3ac0a7b233206c561378370ff10b49300ceb8c8b8f7b5a5dbe6034d3bae79f5cfd6c7a934189bb7098d061a9b44c408cba534ea1481aa7605ad58a235ea2204716e3ffc6f663b894ba151f9c343c4a498e7f65354a22a0f8517c7d1c5f16518d40a84d61a90e6192fad2635b0c472497caaf5dc82e4f0602e48cc859761fa09095d903631e736e5f7b0b536a2d1e453863257e9f5cb846a136fe8a02542bd4c374ad686a09866c77c48c2f3c78bed0cac6cab6a473c30f71aa75575779f199c50dc628ad7a110b98758e72e8e71b3133444f0368a1fc22090c53227c3043b8a7326a263344657a209b9d08b31f4381b6dba7f9b277115c43d55cc465c00b64f679d0531bbf58c6397d659e9859d6f7205eb74169f231801f08145515463a2cf3c89457a21bce358a2f6f762f6acbe8014547e37742b994728d99ca3e0aab004364a86afad01b7277085e27ab8fb4c8b29e1ab18a43a3d96b574e517491a64a2d63b1d44caedb2ca30b9947a2788880b869957879eb9125adc7896328e9443a218e97ab87b8bb4f96741dc5ca30485fdf207313aa4ad141134701c9bd17189c2bc0fa30d9fc0c1b406a03afb4bbe8c96834a80bba8bdc2c851a64907d4ac9593763d245b9b62b9b79817551e7c3de357b8bfa734b53a4e2a947557b6678506a5049b77c983b7c9f32cc2663556151a0e453eebf1bb86121fc8eb97ebf448b1783636e00dd6159b80703be1993cf0b346b960a67d158d5ff04ed0966a6d63c72f629f3f33bc15896145212b106348635732ea166ee351acbadc71af578c23c8c292321dfbfa1129e41947577654a67a1cbab1f7b0289f9040a213205274637fe6945c2886ece79d1d146603c9cd67082d8d9c6f82e29188dc5cb9b29c6ff9709bf76722f78c86aaa1c9959dfe455170ac89e677049f82c056459913e3c98015552df63349c26761f9cdfa21566f19a7826b4a7c693d4a7410b2e579d8e59703436c76183ec1e84f06f572ae7195cb6a9f02b5239b2a8d90660c9665b362b8a9bf3a8faf436fae4231b0e125aa136ee51304c923b26d9a22b4e660439a9a9970b6cce714f45ab6e17c4abb216b55f57a7b68364657c59ff60eaa629b906b8cf7352091b256f57ac3b8c31e58b1bb2711a232bab7924521b8b0863b4a2c45666ea0b4ae2a1b03063a765ab5aa683988492518da4b623fb8968c967b589288542a1f70bb599cb87226f306b8911a8fb79f5beb18319781c4f840df735b11b40d49489bab043b6681cf44a110c4bb4a5642b71c313947749bc84b387d030abce367356a77c2990bc885ced82897a7e489b678a694d07edb105580d638cfd235c8c42b6f200c374c1e4d676453239cff003fc211aad00a91daf65af05139db3095f065811efb3df0c96ea2e1c480424c43104855e98056ec50014353f1917aca6111cd00b9c9e9ad159734a8dc4ef404a9eef0acd6cb02feda24eef886c1c1224ae00dfd23349e40071394be3e27b5c72643519646112541d41abc1d53691c0ca1f7a0bfb5ac405551b821523c8092487515096a3aad26c521fe91bb74d2b1407b4b102692014137c7403b68a61104393980509b74c1a7b374a093403511a56ff21a38c5928b6b8a4ef9c0655da07c85eb5d8ad7c2ab9b8d006bb04e5a1f881abbe3f409f1269e20173a30037936ecb8d2e93f858630342b242ce1ff688760eb8766e0cb3cd5bcd931967ba5759ae7ea8bc14464ca37a4f599054d319529004fccc129bfcd9636f4fb1b13034d3c64b79f3c109e863470a68ad68f34aa279c731c2bed5bace26b636ced453492fd80cb48e34792f12f +ciphertext = 28af6e6b0c015b2c64be668f8a1ab68880abc86f56cb089adb8159819b72a5ba0661f2a35d05662dcb97293e306f734826d7bf440374364204e7a214be1e4e8ddd99302b773c75d95280290c8afe88b9f8be3dc3caf29f64bc78c5a021f8d48f108cff4c86a695136b32bf1b3661e9d8eb7516450d8f595a9f76c5d4add204b1725ad6eef221649690e6437118a2cf27d366b84b2bbfd06924f829f04d0a77c07af58ba8b88421abcf785aad4d19ef0952079bf0c8ad8b8fed68b7bdf05b71acf84bd246b985cb0062f3090e83c9cefe8d0f3a5eb296f8593936b9978ec8e1ab3c3d7d452f3c1e787e1cfc263a243c6247b4f190ade0d966bc4be86ca5bfd7df7fd9e0e110c1c417849439b5b9dbff055a6896187af6aed7f64d4dc0372fc8a556383c80dc87e9a5a9470ce05d3fc13319f14aa8948cf10fc9aa8f10835454f8075614b8266eec2adc1fdd1ed4d88c97b6844f43d9626222aae94de805e0764405e7a3b5ecdd64a770bc1d9d6a75f1aef220d6a76a1f0c3226e2362fa280553268eb85c5de4b1a71de9e927491847365d1f8eb119c333feebc8725c05af24994c01ad12b27b1a2b32dbb6cc736258772b00620158b6f46fcead32c97fbfe0b5dd4ba15ccdee56c5c96ca25cbeda43025308ad1949b3ecb888afa36346da3c5e4ea68a99a7c4ee55af2275729dba99ae5f8d70b70f5da00807eda9b365e1a73bee0c4c31a96854441b6d36a4bf6776775d8cda1b06a30891f81dbecb3717966a7a0af3e2bd08fde1deb0108d75f7fa01a26876e6c5af282458464f9530025f6166284c57ea7fe97af282737899d0d0520eb9ff0f1562ebf21f649d26bc4975fda4e94ed04121d6039f5c78040a236a8e3009789205f9b9d003041e38462da35f202fa6af667310bd46bed1e05fe293d8af3a991d6469f8e8412e2bfaa7a4271d77e789717b5075327d6a9cf74fd48e1f2d835cfd7115a0b1fd3723f9edeca01a5e29e97211cfbccb1dc08ff84e7f0a429a82b5f23f2a56058b26da049957965b9f0a4658bcc759bf260214641267086294023ddf7ddbbd7089eed2a536b2720efc2290f6bceefa4223423a51ca8c6542cd95af98dde6d0159260128153d384daf377d58056367d15d032a56ae5e5f8ef253acbc87587c71200df8fb9bfa21561f988b3d24b0ccadda9865fcb7f97723b270f79ad7421340c438e40a7aa8a0539a79faf5ba6d5407ea30feeaa660f9be5ef45a6c879df42108822ee322392498d28f86d353739e8a9c3abfd24e832dd7d08859a20aba7c69a6603aa37806738e05723ea846261aea5172e367361f241c0e369307f00e636907c99883ff47201946e832666f2618387877d73f181a7f0d51804692447b5f18f118be80e55f2f0ebd22fca32f114b54fe4072e194714766b4c11a26021bea320a132397f928b7bf292be99d876f608ac8ebef0bce6d0d903ab82157df549c931a1edcf0a7a02a6d8e8d6c693d19af38237651def030cc9793fc9474bc93833a028d8024807e69a6d1 +expected_result = pass +expected_shared_secret = e507bfd87b7f20255179d2bbe1a271362e744434a51ada43390e7769c55668a7 + +comment = Bit flipped ciphertext +private_key = 92a15e70405a120190425c0a62984e7360649cfcc5d38c7c5a4a1cf7968ab46c1650a063fdeb46bb2c87870c3aed9a05ed60250ce18ba3220caf7c4037303687faa35fcb5611b3869b18368c160c540b4d81612be4a72c08068fde75735f85a2a69c0ccc12695cdc0e1826902488866d71b22797483ea2ac65429ac8fc5da8980305814e43d8775e55c748b2355b565d0ac54460d346590225d9e6701afc8979070d03354da95ba38a82a465236acc6ac6b58a1ecaba4662aa8bec6c1c2b461b7f012665e448209c0d2a9ba3a00259556b8dcde74e35d7747f132341263041937a20f684abd3c090d8c7f06c1abf07b00549ac6514834d369d2d7a45b7b18794f80c7ff57d35c808d1b4c4d35b4699c62e7973ccbad30c472205659bb96b4c10023a63b968a68e0242f3a9971803b4b792a35d89c049b685aee0207a714752655bb83ca5e0e77f78fa150dda7f58c1b1380a51cdd95a37034e4ac1aecde2ad03877ea82cbc5df48f155580c578b1bdfc5b206a00dc0bc917b2bd58baa96ca35e651085c786bb8b98cd6b202d8bec5d426a242b925fbcbaa61962bb37381327679b5fb82c23b7377577354be80b42da3f8966acca3ab2386aa3d545631d0ac0c1bbae942a0062b0b83b404b2f3050ec4a4ebd831e58a0111ad43d9f35c7916843fd3380e827333977021b8b3a7e233b50c03b1d7417c2451ed9c25bd3914c9d836f6da983b3e87aa0225263db6818091c37281958f46d6237b8bba52219f4a025e924700b1653244f4cd30dbff757f5eaacdc39743e4480a919a1c58c7de95825bd70b96c6624f2315c91bc7be0271502cb5ac4d8010d3a913faa3cb742b3c9180ca5aa02e7a180bccacf37d6b39da79975878b0ff2a6174226e01740446468ed5a861a6364430a764a471a9051b2ea11b5f194a739996e15a37ae7092f795162e5144cd802c7847925f0909133b761bffa5049038c26f51625107ac7c228565874512c0ba8e7b042ab9560a52e5e579f6ce79ef4e29e644005e7927fff6118e329475221398d955561999ae7da860ae756cfd00e34263ff8c863b03253a14989b2b92cb1710537cb0e99f737f5f02e98ec578310ca45775783c900eca25b53a6bdcd5a1c1017708227c6339b9d2c3a8373b4c424b395a59c5136e4120d6a0f3a05b0d064c7ea0c0cbd1210ca07cc61405c7505b7b640093d171061774ed51b2daaa24fe9473cf8595c51473762d45309a83d6d296a9625041afc26fdf5af3423bf5ef15e929cbc9ce4857cf45fe8f97164fac200bb843ab399efb8802024888e7c467a42939a4723f381c052f6340fd03dfdf8697749b8618481075b0afe585d3e644abb301dc1dc9d14a30ca64973c8c06811fa6732d3bd69404c862269b9566973e41394fbad0d3b578442cc096a4856106fb38b00a61163221187a7133cb8aab14797c3a4433ddcec1a4f69c5657c1cd947b12bb1190250827ab03dc3f1044b701da68a6509bc861ab09fac996fb39165800c88a803264e4a6bf777614efc543fb2c900e61e82d426b57217fc73371ef34344215feff04e21dcb04a67280674a3ae7626864b847fca6c9d6c86c57116910067b85912e69781e36849fd70b1f855265e73c5c8ab71bc4bb88619bf94fca93e6b62f452cc77d4531b04c7949b0103fc15c392cb9e4869b31b04384458b0834a5b70050a7ca4b0f769576250090800f6912f76e15bdc165e3272c99afc07f4e532e7836aee331440d245c64a65acd991abb966495571ee0a240ca83cc05572ea525843545c37ba90763489bdc47f48e330207501c610a95170856bda9447bb572006473dc904c2679bc9d03daea42a2d0581680a0b642a61f80296b3133046f39e5c9068bf1431d4707de631bf3ce35f7576797a48856723764be80d1615bdf67a10174657ebc608c3ca77a42711793007415299f3733b99b61fb32355676829a36c383b620175a19d00475bdbca9d6516287afb692a017b83e468f3f52f80942be3cc540b242b3a851ffc95281082004b28b8c7b14f2723871a2ac72af0a315ba651ba1197c13a41df152e201cd64f051da9987da823efdc7036a6a26a96227c3888a66e77eeb847dc350af785acc3b38497e633a64084eafc0c8e4638baee568263393b61c1902483adbc89d32f8b8c103783aa095a9f2ac1402aef5a5063fb432e1bc4122763326e022e6a93ad6005b094b2f2cea8af170a9c76009302906ac9628863095d982a353e8aafad9cb3db41a20c898f8294269ea0f8df4ce59a525eac511e67a235e134f350539175278158a26cbf21bc64b3e8ec2c10cd3c8064c01e1d5c8ab38401d2140ef845e677972fc64901c86862967459628893ea75c3bd7b2a8db919828490f788ffd115281a33856129b65b5829b715f10d43083a31cd186ab3f35592563a85f35995894091ba930cb0137bb4a292942789a7bc098f8208b82aa92a38d32727e74d245a3b223d59bb70032b73e9abde3345879aa14157b40268a32c48002a089ca5fd008e033bde8156c651727e6dc0319500804ac8f0274a245313ad0e36a5c546e80113986f427bad601a17a334a41131364bd8296125624b0a3c7aa31da91a9cc15297b209f83b836216aeeeb3706e62830aa854dc0a91188bec54100b7ea0f5a30c24311a6dd09af9acb10ac235821d82bbac0b26403911b8853d50c2e9361a21b92be63c3468058b4307268b6342f09811a62e3bde45b007728a1e70c0b55f772080470bac382559886a0d4c1cd175f868442a1a355238a651b013a0de47f669ca995a07e6d59097c744c559b75db349b8f4598baf5062a7a2ab3c917ebdb14397374a86a4295b791b4b5329e826be65b69e341c1c54759df05c3f807ce25fc6d1e53ab2f3993224a7aabf6a61442bbfb44a068083f6d47cc003acd84511962e227e129a81a5a13c158889b359d4a352c0a928807f710bae5b3a7b2904aec69318b68586b48db49413ab6115fa6592b9a20e36bbc1ea3723b3890db323ec286a29864188a424929094246f428e71614d4a530981621d2330089b22c2660a5a740437da7707f156618691633b79b3a19bb12b4c2ed8c1118e19207b9ca9be91a1ae05ef690875c1a3ddcf39a5e80bd18e0c60477c7a44bc79286bef511b4199c5aa0b42a40676d78e14532dc8bd3a42a926b25243c3a6e5b7296a4960157a27c02b9e50973500a6745daaa463473d409b7365b59ca279a8dbab56d19030a213afeec0a8300570c09e6431b7ee5d693d4e53f3a16fdee1e4c127001d4cb198e0bf40261d7dc707943e015b1d9b0634c3522f8dfc9f568a50aa078e2e7cc46c17383326c786f3f8d1ab73e72a4cd1a0cc37f59299e9cce622f072ad25cac91c699 +ciphertext = 7367bbb3e6646f54dfbd661a55047f1798a7f0f2ba56d81598f4c96a5f740efac9b428a0385cfc76ccb5c45a0a8be25a0587c46259c9aad26e8cd1b7466dc2c347bd4fe4784a77b55b187440f49ef6d091963e59e8b58ae0411deba0d6911af14ce9a411a6e5b9347fc6d69ac8a86b4b1fd3b7dce4f8e4552a642eb04ef88737fe22eeab7eaa9f349869e6807a89c2c3f5bc97cf3eb4c4c6beb79b0dd72496231a1d4a6257648399d83e011ff93751dc3dcf990524ed22530d8524c91e453e9f974ac14c48fc0583f3c1a0c2ee939a86ba510503018be7a6a647b007eef2d36c6acf14724c1a60568a9ddec8d1c86096ca19ce8cb50a3fd4d69dfd56ab9697a1b4320c4d7d2c9097c1f0af269a2a40282a132c37c4a06cf3e8451e2767d1d521c12a2e684348770ad7194fc4d66d2cd42a7ccc3044fe6abed8f65ef5666d03c544a2e613e74b10d03cc8a0e43185b3179eb78b10ad0576d389326743d4cacf0e4a6df2399c335817d4c1b126958cda7a602e18dc5bb0b0ff4ebaa6eaeca9ab663bcccd92d255d444afae88d65a3a231bc98a81688e79f20009b398effbb1d7f3acd102b81d36542b2cc10ebb683834092afe806d98b64f5305ee86cbcdd19a95d027efb2e660e60d1c3cca42850a7b37899f288066c48c85539715e17ce840994e986d7859dd5e9a4947f7345090bf31f6417de9899a82e920c6f73f01dcbf0f018c7d9a175390ceebdd218bc6156a7fdb929c0a8eaa0963ca9731836d2b95c52f5f333280f17702fb3b5d3d4134deaad3baba38fab2c36fd8700be2452fd971c14d84876a15e5af610c66d37f931383b5fca4927fe6602f10dcc52d8410530eaa9cd1ed8a5ad889750c5b9d4af517421e47239d2ba808ffd8d307f56c5ef4bfac89ed822c1a1467bdd0d40a484cf05ce46602142a0ae0deaf1d9e2d0fc572b340e72d2da42710f0208ad7d99b478b0602a45ac582253b7ef411102da14fb21ccf4443af461e93bca4daade119e326a34da2628c191e7fd69ac032f86d61a36e9e0417d09ec6302f5eb713e8746e6cf27976234a24c8c70569fbec8674bb83ea21137a4ca16701a91456c940f949297ccdc4c758c1f8f17b3931b8b6c761ffbde75baa869645ab8373463a8c28c9d0996041935a71303828b5b9f03c5664704a3a9f14d36028794c23075bf99ca05805a7dc7164daf3511d0165f1c6bc087cf4e5993330b8937e2bce66db0c4cba2c8b00350c291bc4f828c759d02cf3e1789fc0861d3fa4b5a3a084464bbaf7e08e7f19e2ab818904497c5849830a4b6ff810bc71feb4e71bbcd39d3e9dc7edc5cf2ec2bf768b91f63f2b46970dd61d8949df3e86b0a53f84a7d562b69e400cd72f3715b6c837b19fba455975fcce16c74ca6a466f0d011011d7a8c1cbd1b7a9dbf49509efd18de6475aa816739c6d72ab02a9f32de270eaf09ba467da4fbfa4a134384f5f818877096a56a9e1e1fa3630f8b1d0508e653f1f4e308774e85b28b1a50be1f70de2499344d667dfad214ed8063 +expected_result = pass +expected_shared_secret = 65578d0dc97fdae0bd65291154b83c0639dd4fc80514eee7a62acf510934003a + +comment = Bit flipped ciphertext +private_key = 78084efc5099493305f98089fee9820d74a915f88d63b2585e6c495ebc11ebd491d0c83cfe2aa412360fe89637d2683f316c388588a17eb4ac653a8970d9114549286822abd1495a6c091392356ded00bb447302a7d182f6bbadd985047a51422ce79c24d2b611cba9eb490b3e88976b19bb34bb64ceb7a8af0887e52c7265d60534628ad021313fca9e51f603a53434c520cdc625a45b57aa16224983c63f2b075d066962db9cc9ae16649c8735399c4fd0e07617f14d329ca4e0751af1da8c551a0fe661b2c2a5b99d96b3533c4dc62a3222d25a97729b3e283d4b582b4cd7a3ff5991a54bce8934736b21305723ce1c249beef9021e410e8e505769b87988b945e0990fe7e44ae798720fe4b7f8a24735c21b6404391b11acb9f64f06c17573746d14529f946705e613cb74a0b679d60e441754fab568ccb2143565bbae6c2488332eeda48ce90367d84515824c6cd4012621d830c36b469a69468df93dfcd16926c04fc0a5b2af4aaf7330463e916d807acd2993c587602593598e880c2c3bac4b91dcc4adcc48e76909cc678741d965ca39b31ad8c061fb6ec171c8a219a55d29ccec278cfb2c97f77c0ee49a83e8434d6ad0ae65ec6caebbc2193a8e669b5f53326957b71e65371af40ac77931cdba4b1bba46c95de311869a354b957d4a0807557a35da47884a735110930998bc3f8e9b353895885728a5900c175f1261e92374d7e0667e984b51a566e8838cca8924c6f1808f768db4998e141822fe44a69b99140343bc56b3c6adf05ce41aae8038325c42ba21eb3f070355d38385750579630003fb21c778659194f697c4a687b36517eb4c9616394e82eac0ac12bfbefca613d48678d5085270a2899c455df77d21872284d2b155296c9d0001cca15b55056c4c9a0b7d048de2823d6ccb56ee321f4c8576b088c1762c0fc90702f9ac073ceba76fc0628e11b4a7079bdfe03080fc27fbe3171c18b86d16bc5ce33c239224a2177a19d1ab4a20995815486b68cf5b006c289372599057c8f7b89409c62f06095ad95c4155c20f4c888962a4a9a4bb276baf3f4c6cb97c8cfc280c0b02bc22139c2c8b8d9250b01b1673ee8a4b7bdc34b8f318ca88a160306c03260de147312841c28adc9f864b0275b03faeb163658bafdb321cdf1ac826e73f58c7765d522c05a06d3a0a18b995629b159637fa50b8f4cee572a5e6f506486a6dacc86d94baca00376825221879ac8215b2658b71493574459b2265ec191839f14f3f0302b9f775f7421405b79a69d1c727607565456b05d92f5a7432441c5ca8126b7973c0f78684762b45cfe824cb824ca13b9e63fa58789694a325cdd8985dc3e51dff7b506eb21d26528d02c2cfe1797e08a3c1924060138b2dbe89512f661db77c373e44ceaa213147c25680ac14f01bb474275ac3a03214994668d5bf5febc8870b8f5e50260a9141cca2ba4874544e692fe939a00503041f0b78cf7c368eac1038b5852e14600fd212a2199f6da26d60f105c1a32b9a338fc7b93a266b0c11868e8323b2b21c4036a76442ea44ac88029cbbb26707ce6c44c2f5909c0eacbe51668edab408eb3b10c15154e2f4879704c19ea5c9a6b45fda2ca096870979dab901827f3bab7800976315461188d7c7e2ba248dd49a219bbe23e108ee35131d64b270c0754aa1b5ce0820b8db05af1aa9de3a9fa7c22756c08eeed28320585e76c921d1ca912c6c868d86a30a9153661582dbd010ccd88465151668ec35c45772eed41ac9756a1bd78a52bc7eb4bb8c7ee9b22ef066c41956b5986e7f9a2735a51e92d87059c81cb1a5427d94197de091b5a047670124410a87f7627fd96cbafed54282cb910e1758bd62a23f13c2493642fc2c4a8e280a13ab2202c66038da9e37639971cb112620b902a0ba4da4656487a2d0020d75f12932420f277387bd8137bc9a1a8d54943f675b835b64f0d90ed76545e50746bdec2a53480cf221a6e22293b40b763cb46e33862f7c4228337a97fed52755ec2a3de4c931512677b283b853a334380c21f09b57ba2a0a669dc8d59594a6bf96971c8d48b3d02049e35910f0d403feb00852868414c067d3b6c375e09e247207402c435e92b90e0ac8c1993dfb8a2ba1b52680104b83237beedaa1dda384d4c0b405f23bcd125d81f15a425561c91861e52826a2b2bd89c7359a3898b790bc67b152e7b95a6051b0d3b9a689627d76d822e8828f14d6ce1530305d9061f0d740ef88aabb159a22c20406fa9b536285c3a44264f3a050181659371a934b1558da909db670d2a90a318c588c4bb25ba6af02a204d3315c021344c3752b7b754e9359cace657bcc430e2d61cb341102331796763924cc2b9936cab4499b1f54149466d0a3e003756eea046e077ade9b6242fbb4936003c67028da43bf4332293fa7905902c4a36c171e933ac9820fefb589cd2b1108ebbf0349309df87b71f25dadc607f5529c76c48441d1879c51512b909c2dc75b912337cbdab117a688d1a98ef596630b0278e84776949a0975c33b1959ad2232a93e4304fc0373dd3b5e77d57ef8bb709720356ec6092298b3e6f1415fb2052149c0a5e912bdac4251581f3f13947508475c395fa2b18b3a28b43f2a51394bb9bb7a92df24cfc7cca3247b9428877a651660ad696e6e8a07f312464656263b85c9f57012b4909bc3f058a2b16a939a59825634f41497c91c5f911942c1156b86782ff6931ce75856ce76204ac8a22bcb5c109c2248206d1f51190543a78cea0df995300661aedf768ec964cf799510f1539203d13018f74b75140ab9fb45ccdbbb1b040cf3e094e8b43715197d3873bfb984003df149a722c788454741aa0f700b6f98f50cd3a77cb205577acc372b208f37c10809d34fb2314d38bc2a89756e08c39be1fa918c0b9403b7cc0bdaaefd24b6a4e06a11646e07362f49b0818e62696f0c6efb04c6170b70dfd96ba48b66f8703cb51930c7b3453c6743ff3a9ad6e21e8b5b10d1670351a46509367f58d7549af82a12a259f8750f19746e1ee111bbe391fa976ca1c273a3564f1d4a699d4c55347042206b9f28aab8cc174df67a1c62447f879174ebca736f6042dde2617818c1a22695fe0bb5ca10c6c73a287b1868fd8644a7e49964d8c401c1496cf50bc9a596b183baa31acc3270c8acb2070847168ef04d5d88b46b233692e5973f0904de899b92616c4d536e527bad75182b5a563bfe47a63530cdfdd4626c6c3bd80478f9964e839fde877006aa9fa2a59f5af4e3e0ffbb8f77698bff559e172cad41270dd5a20fcac84bbe8dd3b0a543b686787bf8140edd4b69472e7f6a50a5f9405bb88ae4110a6b14fbfc53537c5c826a8531b465a13abde01e6be7290384656604 +ciphertext = 4f6ae8a736fdb9f76d6e51e712d2cafc508c87d510101411181a2fb4d1f96747d14370bd05633d3dc4f8faedf0390e4ba532760fd6878a9edbb394d068be06b400f2ca3cb0078ce97756153069d63b7fc17a7ff539e0423eac0c733f4ca5f7b6f07aed98dc3cf74fa888719f08dae73e455e53230c16bd33e18e2732ddad6227d0fd82e329e2d832ab1cd52ed709d2f276da9947a671d03525b016a2a30737cc072f154a07453089829cbc3b8ad3345dc90e49a17703e7c3e30dd047690786b4547c299c819b8f31fabfcb131c3e5fdf0a7467b85ae3523ed34ccfc6d0df280efe0822cba36ed0da6985dd1ca6af2a82f733f5881b84c4ac56778ae36321acddfd0a5977ba89cf7b3f3d06fab82d917ca48965381e410f40e588e96d5ea80d0215932e394b61d10b31bd6e4cdc7c5494b6d0edfd9ed1ad2fe4998f730d9849beff0fcd8d8826dd831c4e384808af9bede76dd5a5073a3f72c241e4ad45d384dc42d8c446126b2e2a438deb3f94a25f18b45caefbc252403f8c47711008ff9ae4f00a3c4a8d87cc37905df2abaef0b2503358eadabc53d927eced04a5497b33d22cac5ec88b2ecee7727711602b8093ce66843c193881950f0d897cf2629eeb92089ff491d742e0287a42321ddcecb41ea510553ce92f124dfc0a06fd470c0be6f640d847d65618f1805a943e34c06aa8777d4bde320fc2460d3aed8a663d0e4fa407d14e1716b2f4e8b75e8a35cc40b72e5b501473ad154a5995db4b81b1be8a4cc76a37208d486d0c7877748db9cf206f704e7e5bbc956410974bb9b2f6d7351e1b765c9d4e0c397f02ccfff2a03c85146886a8716b3287ec0a87014a3eb0c78cf26b44ac976c1fc199c7a3f6ae1e011dc402a3a896db3fb6b917dd1156fbc4aba2b774e0e5f85006dffbee5cd7f7e02972ac8f26c5cdceb1467be5f5bf2e0e8aaf70b4acec9f300b1faffa67b5a1872d640f5a8019e4a4ed0a65f4835cf7875d869b8926b64b22453587a33ab671c3f82a5683a17777201bbafd41fee14a31b7c4fba8a2a744231f9860c0d133ea13c9b0cae2e685db1d1461760d851700f8edee62e3e8550d7c1a7a720bfaef799ec3b91d53a042340975eb4d1ffe230eae9fb2e5eea9350950ef7f4836c2a0279ba2eea06114daeb6215feb9c6f1689fc8d147be828dda1fa757bbf1eb5df008f022d50313b2124884ae99bd70298beb83a18deb2f1cdbed89f910d016fdb1ee54da020ba79f3d452fc9d07fb388a708c3cdbdfe3ec77acdd8a2c5b8564a5b64d05c537d755782f8aea44f7de527c6edbd44a89471d62b01e46732410750ec89ae88429d3cb35a3184fe86a376a8eec0886525f86c3292bfc4ab8661822245411d7cb93ca0eb23ab3b0273866b3a44a2d04ef1939b6a25e85318fbd26e856d0efbec50605cd7f2342e3c45a05afd4b5b1168ea02e690719fc6502190a9d17befc93b47e271ba56f68527c57caf024b20df11ee817fce29e2eacbee1d358feaeab4040c66b57b72dac2912e2962254945b3 +expected_result = pass +expected_shared_secret = ec51edeac7809c8324569a6c0f6ee7784af37e82fd6d364e601900143adf63f8 + +comment = Bit flipped ciphertext +private_key = 350c93c7888ebb8aac526a21beba78b9640b242077121800812679f2174de2172260c6088cd85a44a56c6d54549929030914a15c857d7bc183aa703ef0e574259ac6df4165f70216746599674009ca8ac17dc8b6fd642cd45218c3ba6953b1869f0223fb673cbd30809673c9afa83be3f08a98fb4ff353a189e22f1f212a8f642103e8199220958a3b8c2961407e478ffa809205e9a3f9cb92896021510944fbb514560247cda072c5b94474cc799fd4cb7b4800a5042069ec06b2e55617c82589933f5f08ba8f538e68292bafcc77be8a7427b59a4b161bef09b8c5a1c50da97a2b0228954bbb367c5cd745171b2bc31ddac119500d67c55d64c817e1095a088aa1a733adbaa30223249e25253b5f0b72fdcb05358c3256a02abba12e95054ce5f552d4b1808bf89b9a34486d349c77697975cbb7a30966c3b69dcd2c85e867529518148f46b2abca3309493de6198e126769b35a7a049143ca862d4ff1cbf47420163c0eb8a3924e616de48b01322c716010696fc31158a7690a7a72e79b411eaa34dbb09f2c17581ad5a882d490b6a009755aceda0a82faf39f4fa6c8d6837d9ef32f74c92d7940b0e0ab9d3a667a07a3c4e3b2507c4914d1db693e787f5e97560b258248a7bcb2d32f2b84ab3c688857510761ac691fc77ee07b47cadc1b8adb8d7b3489fb92109ea3350e217de6449edf58023fb881c8858acb3a1cc117ada0e7268c925081563508812972bb6fe433cba52b55219596babc26d26c67b63c85a77898093ab6bd6038b04c1df0860ee46541b6f094421a71149377064605a8caceaf0cace4ca7cad353f733a712ae0892eb35196a3981e67aaa6aa8f796ccc68551cd0f9b10d372a4e554eb841a32794bc48b59c904b5e0e799a7147b81495c5b015359fbc9be61b6ab6471e5f44afd51429958c5ede30bff5f38e9ff783b8b893a29c7df95953daa817e3108a913a05cf4a6c4af8c481109362388cdada776948431706126ee17fbe56423060484fa80c053641ffc548dc605febb4a0827c1165f69e96a613e672acfdc86cf0962408481b4011c5bfa0b380f7ba125219541a25cc9a2d7553947cfbcc85a29b7300c7e6c3c4ea0597d58c7d5275a765dc1c66e1aa80749c64432b80b4885ddc86260c816771624895cf2903648c94ad1ba3a4b2e88d17b0bf0b046aad8189555134ef453d08e40715c714231b92d817495ecc99d9400fd842a8bcfc2ead949bd349660343bade61808af57bbd3ab8b535a5c583769f0ba0f3101979309308807b80106999766861b4033901a8570701b96c6dd99ac547a4266640c3b276a2e05a870c8501dc8a37fe167f14a8773a06344db78fd8e7cbcf7161e6c904ac2bb8b653b1923a5fcc6947627535534b90d8364701d397fb42beccc977ae7055db28408e5991ef6c7024b66fc1030d9efb6476509bc605cf775106b17a9fdd46ca1ea41d4767accf058f271a305426c9425901c4538aceb28db1798d70bb8f62a33dbce0867c749e09db9299d13eff871843a658a89b5a51c4ba1a60496edab6760a9955f351fe317972a63df9142c4de77c81934927994540b49b52542d6dda6d260a9e5fb5bbf9878bff6a8b2078ab00270684cc43008d7428239d57e988a11c3ce94015cc4b4ae85170aaaca7162002feb9501f2176cad02bb906c864010bbccaaecae0807395256e2ba720f72f02687c86036ce7d89e4258c55b3b052fa1c3a58778e5e15fbb370d98d936adb67668f4b3e23c8d71048ac7e37a240b6b4edb218f968208072237176decb25e53a57c42c497438338386c241ea94cae25b42c101f93823821431585a2a435e63717b7564dea8297ac4597731dc9c7b0c44286fa19b4178718092a8b07f50512470a8d5a7a3cf04e44091b2ca3b0b7912c60d694cf28183c7104841045d1613aec395704750478b416dff33344e59363c937ac4834f2240715ac503357ba819675a20c6503347e1251c5b473779e651d6e33a0620536521baffb92a70ae6cd7de601222583ab6187bd96a9094c7437730b32e5a5e4ba41dc80bcc7aa004301608f7b9960115c511b5871a976a3d51f482608878c1440561ed4a1900530b5c98557a84344de33020d3c0273c5376f7b5161a8b445b78431c273a8b1207ab63438a6c894cc6a6c52322dca482a981f9bd9aa4a6227297433b0ca995eb4678799284dd79f51cca160c8b061a258da998aa4ea645dc397b9353b6221ba43f030a7ec2324562028cab47c357ef21b1c2bd942aa0706b6d8109aeb8ffdb2b1b1684b49fb1138007bef1814acc828079291e751868ada997c21b7c3b73ca2fb4c50f52135075fa98cc7be3263599803f87c89ce748c9874819fd199cd6a690a1b277fd812412017c49a92a300bcace149b757a5e3a02c35e4b3f1d813351063a77b2c63427c1ed185f6a3836b1acd060061207cab12435c50f29342d99539770f36e09da581aff663b4f4911c5fbaa310c4a6700cc70cf53485082106ec10f9e767d4436709885c519080cd18bacda342823a32b729804e96c4623b9fa717665902443bd96bc9ab09c39055dba8815dd63d2666a29b38050e0994bf346e1b6c74e8dc53e733c5050ca76fb07bbf217bdfc3c9aa00006a11ac6723a3d69c7169375735ea79a9631a69ec241a3529009b6d41e41b87fb3048b35bb7b858d25a7c5a5069496b54f82889adc02174307d81990ebe019b4f87c5c792b0162b5ec3a12ad624984a94a4b11135b01bba7f001ae11b2eae1c634e7a2111a371949c45142c10b9b00455895f8b83386cf5101157842182c2f96ba5923cba7e52602b6ab62ce190e1b4ab9aaca6a8d24bdb3336b18221b12b01157b3cc01758b2366fc9f2413f8181d2a3528d49c36eaa0c4f5a0182f0b115a40d6b178738b99ee4bc6adbdcc4ddc0869a2aa34a60affd195f5dd228f7c9cac3d346af9361dfe9b7bb8c8300d63b7eba831aa9a73127a2b0ec2d728954076abda92465069c12c70a73dee83b01d3ae7c7224312ac31ab31a6c186e665c88fd4c31afa5614e244e361bc9d58b25c17781ee2b87cf79ba719780bcac6551a1b32f727d7dd92c58a3c440671695954dc23544e7016b940a2472a5bff6d1cf1ccb931a1082b64892c6759ce3ba720ef4c9be3b2a1f63c177eccff69b199aaccd5f8359827520270acda31b1ccd85bcb9585657946b01ab9bc4f662af4873418621f1095a044682a56342470c6d69f5ba837174a6f8151354ec743afdf5d23457805cefadf9221471a94611cdaae2495f0d1a90c781e18ee73fd5ef6a0bb5a766360a5abee350405bd87b11bac17d53092f97a58e86d6e8481086ad358ce7a53e20788500ad424163952272968204ae63125ca906449b +ciphertext = 1af89f09702793c7e58342a5bba2497ed23e5c0d64d5d664dd2cb1b6ed305fc5cd15f7f94bfa3021fd3c0411deff867155beaa293c68508faaf68957713ee3adfb38808553a55b6b98d2d514e21e6a9036c4b28baf7baf6cb00a88a666b1eaf3737eaeedc920336b0d31b9028fa676c4cecb3c0668df34c51cce7b9bd5b1be31927f17d668a390d7fe3b33897f4ff599b99e27a4578385960423f6c3846106bb601a9e1d2fa0092985d96383e358037740b07a1a617e1723d2ef1e9b3c767953bf7654765a62fff99b71b9bad600e70de3be11e67a89099bcaa097c9f13492a0ee0966c86e0b5b07be026d8a8654c8f8cf89158e9bf8cd07f4d444e5918bac6038467e2d84cb2011d79d890002e9dd7cab07d9ccf2741d5125d8e254980a498b4bf3640eccc759a4b9b2773814625099eedf0eb9dbcd6afc98557e400ff900b121707669ba0fc03988c2f8d575426a30181c0278b66766aa6456970a867c4518bce6e58a190ea688224368817206428c57df39671bbf8b9583ece5c5f484d01342b26edd8035a2fa7aefe8338fb051858c619d3c817052cb18862e34e312b8e6e9fd554497ed75e57dc97deb92164f8c649e234551a8fec5fd1a9509722ec764fca41a1475f1cca481daa96190c981e15c3c4043a19e01df2b82459bebc8534d17d49cbcdc7edb0b2d83367695cd5e89d3f5340054c29b48c17bed5c35458f6149bd9beadf3bc9d98cea66bbe685d986cfa0da184a1f953a11ff1d1428461573d0df651819a60ab234148007c2862bb4ea39945e3ede70b882400d55865a5afe4e1635820637c760471ee070448c09ab33a679fced06050815c9f00d4d15ec6ca69eaf4a9b14a1741e804346c8028ef1cea954d3107e50eed83708c231ed32f1a350ca1b64ab3b772b72a74c734401f6693d34b359c65515885ff2af3cb9cd2afc877882590e5339a5ab277bc3603f437edfe995eeef7224ae9e1c18edb722d2d20011510d2dcfcc15c3be444b50ccaef1acd4ebc243f9c0e87d988157fc061bbbb303b6ee5c2dbed55d779acec0d64fe7c9b5442eb99ff34b61acf1545ab48a91fd5781a4115374513aae182e79e9d64c01edc340d7e154a98ad60c8bb0fc5048b65d79e658b95af25aa7a67e15c620279eae112459cbdaf185da7d228bb2dfb865737884c3675a83c0657b106fb0e2c78a4098e44c900e3be0c0d90cac8b9511ae22f59e92de8c6e269bdcded9d5f9cd94f3e7392833203b105682774eaf5c33e29a86c1580de80e2c86772bd965e94ae0131e241e83f0dfb8e9a73938d5a941bcc8d76137264776751c6913c4b7691623b21712ff21c496dafade642755f72f463f2e5d16c24a2ec28df9bea616b8cc6672a0bfa404dbe9135f9a76a5023053efe4d30e7a334099f540e3cfd847679f37c62898a7f32fb0187b016e2104fb9e827d8120472d4e9fba4219380ba8f27c58297efc6584e73e4bfceb92898adce3e81c2de451d043e9b7a05f0115a5c16aaef48f3e219bf4b99c9873b4c8a900 +expected_result = pass +expected_shared_secret = 6ad815b04ad6733802832d53606b39ba1a125e2331ebb2b6f3278dc1ea7dffb6 + +comment = Bit flipped ciphertext +private_key = e96008714c9e6a8a1d2e53815be607437c3b944a4f77e836f165785258b4a196b648f154597b49b09225ccd604e52ccab9f80fdb5b27e72c3b4733abdb27c15c5bcdc4d38b8d4caf222cc792c0c2b7252b3fb82671000215f04888b3955f1a666d432dfaa023bcb34a9c284b0757bb7d9412e132656de708a289ad9592c75225c892e9b5a15bb1cca682c5409bf9bbb0c51478641780cd981f69960ddd8a287a08145af3bbd9303d39a70a5b1188aca89ec659cbc589ba4b30c047889a2549a9a3b26e5240864cea925c37a9c5ea64c8139c7c336e7eb7896221440e050ce6800b56c82acc826672f04ae11bcee0f82ab7a43f49e7357dc73aa66c3493ba540a1628472a70d25bc513447ffa9c5ef2d006cfc04af5ea796ef07d89a57954c6be031c8b0e3c3ed6691d405a6ec13821e0927ff01c425c19b2fc8a8ab78651b75b573a0984d7ec20abcb7b6f5739cc2c7f544677ad02667bca30ad15c24deb0249cb4100ecac187129ea7481c5d14ec572a646d594bd40a5bfc10486d3b3e296366afa6c9cd719cdec9258847dfe9103a7955ff007cad088681342c12758112f143e0c5c0976505cf7680ae8ba5a33235c8b3a07b278a31888bf33d00dfe163e30c288fea25a4ad7807112936d9157d2a46a1973a8c2e48ea5465c12fa374245160dd4057f22c0988c68b399049ec8ae29a3be1f107046ca0d3e0284a329889e5a70d50c46cc368becf729ef1c4157f8032f4ccc71e9a1f631b4ca0c763c8b82af9a1d28fb5679f79460b7b829a1a0118aacc5f0a8be832539329e8ac53df17399449797c523352c16710bb327ce237a2c86560fe9b9fff774645437a6939884e19fd749641ff44bf2a318a39b9ada9122aae998e00646202206d41a536059aae088bd08977ee5158eb66b535f9758fb505c35aab26e40b78bacafb2c51d3afa0e71717394f8179a93a4fbf68e860175df264f3611ce099540fe849d7ca0a241ec51e8c8835e4713e3ecbb644807dc64505dda66d03cb72fa0508291ccbc28588790b623c94da307725c83714ad340d7090bb5c25a5245c2285747f3185327282c287b7313261f35a794497b0fef870031b4601585828ce4226fba4595d7ccd8d27deea9724c0802dc02a5b3b58cfcf58fae582e729baddc470047c1c00ae913eca185ea33b1dfe98c60d475bb7111a99871a7b7082e7b02e505c004716cfbd98f2ed8c85016a9ca428b937130f1479b8f9cc822e11855a6c83ed9601bfc422c6288f3db851ba3a57054bb55bc49133576d173a013d09be4dbceaa0c232bf941fc22960da3ceadf45ff508108fd161c9ec31d52c46b4002d9bb6a77ab38eed2704e53a77cf124f1c762eb87715f0d254506c6645a956e3723bd2a65c1a27283777af64a21b6442c291a2096e8b72d6dc76e7cc4cfaeb0e9ada324b8a030262a8849053de64bbf05505e7730b92a3a37e07399126ce228a40b3fbb1c0f88f39e25235b35be0d71e94d3a59e51976ecca583313a91ccaad9ca0f916331d281aab31a469e54b871a470cda3612689404df59f4c2a58b1a0027bb27ae9e64fead12f164b2f7cfb5ac7eb0c8e195ffcec05e6a4a45f403454820e39e68aaa6c266fb8905088204c4c44f1f42c4acbb7470498bee9c3ebfc86d3201b35291ea8ec2e7c39c81cf0a94eb5cfe3c59651779ee9567c1b7b77425a351be835f28590837b8612a736bf6000650540b31c7669d6ac26511e5094c8e0d299b2e0436078773b75462a2281bc31afbc12277f7ca61a79627bca647e91c8d5362b33007319026ac2c5978b24c2ff82172bb1c42365cbf34468fe51867df1326d0ac432127901003cf5696088939ddee1709e2274b8e56b0e657989bc110bf79cdf7c766d6b8f4843915535267132b57d35a8afb7c124093db61b6e8023b870121f5e003b57763c39299ebfd35a7a03afe04187aa87a947221f8bc9657b0405b05a633b2188b99167cf931d6ecb4f14bbc91b9927a010c47d087bb3400ab5690d3b585ded2482a75606f035268698829eca28092334f732a7c99c6c581844bfe085ecf765b7a22f34735482611dad0b4a23491d3334a980cb93334a035994057536c387386dbffa9b174c36108188a02669be0cb6347c277048afb68964493b3b3dd659b0f04a4ee57780c62a4b316837f13e462994b91a20046543c5427551c42ec432a01125c4849c4d1a4a2fad25144d2516fc6c9d0ac4265e565f10497a80f5bfd1924c4b1561186a0b3c123323970f1e86af31a06ad6d31ee3764718e13b30d50e41416000039ef9cb5e1144357cc17b9b26a69667b6be9b7dd3d55532655d7b9c94e4d91a75697ad04118ac9852ad4c9bafe72c16acc557a22617b82d710695adb4bf176c5d75c5c97d1225a8dc838beca6c0a7bb6c3822bcf985076bbcbd014b8aacaa5c36042d9a73b290bae7aa0580460c8aa435ddb7c894d706fd2b657de2146802572055069049931af40ebbc562ca5b137cb44d812726a93ba4fd96763bc865abf85b0c5702ab287d0fab695d017c35269a8b178de3267f9d4c58e228cbbe9b68b2534b84156ed969b43fe311de437314278909705458bb57a2bc35584364ea33c2d2cb8d52593d08523d0b7915ce158400bb8b36fca452b08c45309fe18bb3045279456b309018a8a0c0884cbb6d46d3ac56390fca6c0ad5717d8b94a15a818a314119e6426839d7632ca2057e95b3eb878446597012353f21ec3e8d376e8f281c0eda90657b0858528f3481275f340064e625956311d7604e10f516f89c7911f35236f169c9c89aec679576c5a44fc935c7582d5da36c136717f2808f1584af0edc7810446fc5b156bc6c13efd968847415a840855af79d0379642c7855ef3149a0f8965371c774ab35501a23aa43c51bfa1b435029419acd8cb435cfac522b33448ba20f3f1875c2d8863a105fde34887cb7c3c11b7c2490a8e3458579b87b3c2a3a437115dac56bb2dc7b2355cf485b8d7f36219d102e3a111a818447f1725cc499412701a78f1a0c0dd2063a1c53f0e87c3b9bb60aa2ba352b29714bc7bd417994074b0dda3fb22a4237f30ead94b1ab85949cf18432b17c75a6cd80a05007d12bde5ab2cd6a3a37674047ebaca2a52e96f07b1168bfe85a10a2b25971d13d6511c61ed325ab928337b424714223fe779363180886d7ae25a35df4b98623023366f14b9f23244480017d5a0edb7412202283fb448e37cabc555ba6839c4b966c7f21154f8087c640abf185903a94f837a922482e3fa8d60bf4bab7b397802278d1a4eb15b82fdfe47ea995ab1932b77bab79e20c9311ead592a7c90f3d59686898d5a6249a8d980a807e8d7a9325a5cecb74d55069f213bb4dbd95297795ce9daf +ciphertext = 233386cd08f6db00eb0ae4a97d129d5d94222ce09f1fa26540cc0574829a80841b94b9254e2a054b176c9af689a9d3e481f648749094e496fd0405ade4b58e5aa5026e9306070672cd8e3d54b78461bfe727d80242f3adf538c57f2b8e7a69b109b68cd971c446a2df0b7f1d6dd6ba07312cdb4ebd137398dddf0de744348b7f2ef4471f9a8e0caa6eb5101275498b9106691b849232fed735dc7fac97760f70c389a9312e8f3a423cf3c8a0f13ff0ca395ed55b95c725f2f578a29dd890b590be9925722f85892c0ca19faa2366a9636ee8dffd1a2ef147bcb4846280cc54049a114a78ac1a923633fdd3017f72cdc755132ba7b13b1c0a49d48182e51336cfbe5ffde7def0b62bbc6d47a53160420b94103e5bc32052851d61a9dc60fa4d7f00d4017bdfcc024c9e4646c86333f716fbd50cd30c9e411899ce336c5d336daf138c1986edad25bfdd8e039715869f773b6fa81945d007e413bf796882e7491458dd0b92effbfca0cf780da91b1e5369095838e40426e3d26b4b0536aedace2f51c2ac3a3c811c46d8b297804e711bab78b63be6d466bb20d9ff2a1892d31a2d5f6ceb2c1e865af1a1718552cd4ebfa9914c1a4175b8ac8e86b4ef453cd73e7f6f2467e3307cbf95bdbf01cf3fb35323070510891d52fe6c2e23463c2f9a6abd43a1a0acf0f0a0a543ae3777296ca25554ba42f5bc065af5930c98b336861d41f3cdf39325e3254932c92bb7fe10126e49f58916d19a2a64a9f16aabeb9cecdbc85bea9027a5b8eb1c7de0ed13118b4213dd44e74885186f51d4921e52772a0bd82f13d38f91b9b424f720a4b973ae3a47821209d3a6ea65e4e3e69afdf90480557630553a314178d1d54c3ba24a3cd34f36b0443c6f9bb3924c530694ad3ed40c71b63f33fa430b496a82ed178d906a39f6907b62eb40cdc9943b316db08e0d904476691695ad117b1428d40f12f645c5cbf753077ddee237ef23deaffe728d94bb9e971a980995b5a7a36f390293814ae807851056ffbb7c75403bad54f75d8a01e90bbc4e8b9515d7e1716dcf5c7e21261cd74c7671a9944ae119983c2aee8100a1350700939e3df4e9f9c571ef88c98aee9d0fe51b54d55982883cdbc491a0b746ba3e4a2fc8437cec0ca6462dfcd12e1d62ed1895b8b8066655f77c110fec000a1699442383dbd05ac085dd92e6127b1da3cfd06f41929ad50a6890f467d56f685bb2701debb993f382984d3ab43ed4e019042766644cdbf251acc4ff0bc73aef48cdac235aee5aac41091a1bf706cffe4f30a9eab327e3735fd45ccb2f2cc6bdab4f3f95fe36630de1f8371c292ffa31a52ab114c9216005aae16fd8f9aba657734de2322f3a7572884432c0ff163c8d969deccfa83c820aff65568ddd2e873168ebbaa1c74b85f2c28213f81be23d2763bdde5c5b86f4212d5fc227eedf5c1c6562904c46a48420974423bb2948e58117931027374583b10882f23c3d32d61cba8782855e93eab003825800487d39c76adae5bc766faf533776d3ae22 +expected_result = pass +expected_shared_secret = bef44b6f28d370feef3bae40b137b9eed09773bd5e91295be769fd77b3267d4c + +comment = Bit flipped ciphertext +private_key = c8e95172ca36c7fa65fc7765b248ae30d86beb6bad97fc8f6ab243ffdaacc977ac612978eae0bfb91043ae87732740cd25f5983d24cfa9d465bc5bb6c7844f6a08558291759e236ab4e384fb1b146cab3fff93381bc2804769cd24961825ca450f4c1d9bca148c1a94b223a74533cc227ba736625e8822404a046eaf05686f95c44ee5876b11be7e859b294a3e2a3aac56f42b512c98ffdc2bbd73b5ca35af8c3882932494711636a1373241f78786ba2745735bd816a9b77b5ac8f91cbbe88b4cc3b6fc934454d7c917646b8b3c80a8559afc3c4bf71991318c5c05cc2ae4b5669a33c2d5d8bd4ca0188b389708675722e898798a59119676c0d5ceb94ab984a3b78468c686e9b5f7f4828536904cd845b1063f921278ab28861f01a138644b01447dd247476f66b47bba30b387a77126074c5b7ff7e26db8db429301416fa544daa73a27021fd9d7582797a9a1d06e7c502e114364a726acb45a5dccc44aa7a4adfbe258ffb10b69ec1ed5089529a52ab3675843422ccb5b7e0eea08f48c9a6f24cab0c214e5c90587f07204831f964b266579ba0b0848909c96a93450b6822f3f1128d33726adf4bb1cca22c9472d066200fff6633d05ab5380c802549cd6466b9251cb4b1755410353d4a0ba4969bfa46c698bd198cf4ca9d6a4146aa190a272572d87502dd929e3f86433facc1a161f0b8a0b3f27ae3362b0c5e75e1fca0bdc76080f060578312eb2357fef9ac5feb28bd93439e6d84912b3b0c14a326e5b2c48e2b22cd639e052b3563a8fe0310775b15456449abee4b0c66485a741b9d3b35311b4ac9253b371901d8c1c9af817b7dbfb851a221b8bf914d5f268b324a363490e8d5260f2b129ad7042b7c99acac8bd92a6432e353fa14243c49757b149784b31a3632422aad795f6e14855372a422b76dfc420a611311d55122e68b63aa12dae8432bba235e7d81e6a194b2f26936de2984e4c5be7e7896640426258cde5744d686cb0e43459af2196a3c48f404409c5e092371c0bdef80e5d5161cd6882a97c3a97acbf930960837a9cf05c9d0930c5cc69a0b01831ee521d04cc102de24d24b713280bae93b2637f2b0e5063aa5dc173f3b2bb94140ca7d155fde026af1b9c6fa67f8c7b84b84782ca71c3866837ade8bbbb9c9db7e003d99608c1563136d384984418471c05a56b1b4ef61e99d1514b21595fd6730d9109ebc5a5e6b02da1733270bc3c9cf83b606b37505788b7d514310286c911583dd51278870f1f2b88aa7224a65069f60307cc500648804a1e4baf9155c05c6a1399757a07c31f2b1cb38a176d58c43015866b903cb6ff207a016236f4378bd8c9606251cbb4635215f3358a86cc8213c5e4d94700002182040ba5c09c2a942874d9bfd2f83bda816de6c8209f87a94c125b23686b8b3138b6115325a88b69560be4d9aaa90c7ae43527d3377d66cab2b2e6c04d55c1a8473fa8bc9b76ab826bca6b9f083fc0666ba9aa0865625460475e4b25c7f3b48487c857eb651b887830acf4b4ace69bf9427cf5844472a4b3219958ea6487c7322f8beb2952f74fe4c7417e46ca44674c4c898b760a3dcf0078ce6c77385caad2b52ed3bb9d50731d285a0c73c3135002ab9e2032b572a88f288f52453b65078e0ef38e9cd5c492396123130d8e214119dc75b1f72f508bc87df661409cb12d0b93e06274410b39abaa812b8b00ceac270c969f092713b4c8c1a921092783036e42bb541a534ea83562a59bfe247dfb78cc4f2211af44b0f097a6ef90b23da5231e644dffa5b1b808c728bb9b4738476dcc5fd29b1237c54283b69cc394678144a150f6b177495d939cc6c2cc52850b72d1b5489018c457fc55c261a540f671311b044307b590579a8c762006d5094e47553931495c12668625b41fc04074541139d85f075a69a4a60707c31254472c8c3256443827414320d54983b310c3411b855dd3c06811865ed22690394bf7c268e748a678d382567593750477ae65079332aa72a9c964751feb99530e7b8c52c6aa44ac77d5622ecd45976a742a3fb9414338b9a1e4345db0ac6fdb766d84cb7c708d2c8cc6890154445c8357673d5418603746028d2726e162af9a45b381dcb25a088e3d4272e8b24bde7795c637ae835580bfb9820298609bc75ba7431714122ce8988d9189815c181e819c55883cac1c69094f7a77f43b3c0ac5196b26326b788f86b35d2d68657b31a960977c9f3a4ce431941e396cc06a623dfb1bd5548e909a7ec27bab32c958ffa3366926c29b80747ce6577ed3426ed449492cc2ee9a4906b9605235af7ac72253493ad96654b9a261feb731c57b0bf5db92d8d72d9e039c0e4b2e9926346ffb4ee087c5b5173763f3af449c02f2fa1d9c023fa22194dc9b36bcf8a6c69cc10a932e121160a6090009d02036e965e4301c8e2b2eee24ce19da9bda33960b2c3b33e180ec96bd43aa6a1534a652444e4efbb8fb9388fb31c72994145d3b6acb45485aa1b2ff4315423b70ffb046ec1510a0547feb673fb4441707d631f5c25e15170eb7bb67714c5fe15878997cbd038a05d91189dda72e19494ca77258bde9414d494a431495ef8832e677651ea89bad764465e87362e14d1f7a92ee03a8444202b5bb5d29611f667267cc624e11952866c5a8b4b59203b9c7d926a3c9a25c62d6aa404c9787630176015cdca4baae57bfb8e135da0832a38b197302ae8631c712d6c434a88477d6aa76b77a5cca2a84e01d710855946325da5761a869070a5c0534c382a4509ed187681fa09fdb028d99f8151bd44b20218dfee9bbc2d9ad2a997b956316e89c28afb262e309b2813b33dac4225e8a6781e2c9f12616582160aa21745d3c00c1e37ffb0b159c1b8778da93e4c20d1ec1647da9b7bd6b2c1777662e920f706a6b4b11bf4852b3ed9ac468a1332df07d2409c1c80a4d1a0ca343e71c83793f53182013cb0a17a78879f5ad35057032935fd34874bf2bcf9cc576dc14ab80200b15d45dd31549410ba9dc594f0cec8557e09dbda86bb573c7a5d2839183c900d13ec6808547f9b299b00544c325312a60b7bab34b757e9a862fed90c3f801c4dd80284b654035ccb463252ec6c90081da9b9dea0cd5e55e87d08c946c30e6c30f50f5b8f41b75fd1912948164b5f1c60964b5f687583c474b65522dab8687616740b521c67540cfeb14bb8125a8b9f2bb8b27abc3e27fb40a1d2c1b403c834b55f6b0b019a2e965b2ab186f881a726398de06800facbb48f2064040f9b98e57dce112acd2a6ef543f610377163b3dda8047125538b655d947d4c7e3d9f467d5a62cdc586799edb9afa1a2d7b513ffb998834f7a69485ab536f1aa85afd7246d1c350ee5b293c6bddf9d9d6199ce49 +ciphertext = 8cae9b7a7be03873f71f97d39940840028031d15d7b434102146d71d4a6a0472ecd440af3b7e3a32ba47a05d8c29ecd29eee8b5ee7ba1d36d1241f63750dd5f0b912b823c1c3a7ef98105262caf6ea9386173c6750a01093d2e8ebd27d26987e2174f2a57bb98501b1b9fb47f293a3974e33a44a1940a7a015b062a873afb48b3b719a213e1eda837b1d83b91b74a0f964f72714a1fc58a97fb6d2a9aba313476ca234a41bcfeefb534b55ff968dd01bbb9e0940a960cde0d06dd4a8ccc149377082f27fbe16cf8047de159a1e8e3d374d544ba818ebe12ad8a9981d132999dbe05720ac5c732a864d43576da12fb85ad0832c6ef51d33792eb9278ee8b23d57e3962d7fdbbd77f1475fb7d3532e141ad249eeec6c089e03bedb09c7f2e1b80f90e43cb56400a0833972730e1a7fcce7b7052a057a59a8cd67053abdb1054e40ce044ff379579f2c8c0379a70de1ea7af8326554989f8e55acdf3c0f680b9b3c666abad6461c29f7ac2ee2d0b71d56a580029a6bcf1778eb82ba33ff74d82ff9f69b0bbc1478b08e95b4b4b974ed32a279e430210e001f345917f1aadec46d346a9588aa03e32b8383bad3a60618d0cf9fdfb2ca43b437127ed8066966371f943d6f985553b46fc189855d4b514128134dee749ce0a671448cbb6e28bca4fd8333fbc61706f00ac1025850d51e4cf7ac22ca6d2f7e85fd5466f57899ae958c6ac38dff5ac078cdd135fa8f15963f56e88d3e0c9eb5127194e9cb2b4014fa5ea002c79ce43173cb93fd7870a8528c4a5f23efbab60c28e515e39587ad13536ada47f3e36e730209061620255f150a194c33d97d6a5e046e627c292315ae000cf87ec0fcc5ffc6df3e4febc7cececaf05d0ac96299fb57a71d6d3dea8d58a662d5bc91ede06da36620ffad7416cbf8cf4e7370fde479a09e50300be811897e38ad0e825ed8409f7b6fa3a39994e6b19b44c1c4b1c6c5a22c8f6424d7ec4c57f646c92fa1f6b66dfb72686dfe957eff308388ba9638b3d70d3a27b8a7e09a9baab79ded822ba94118028bd8b3f943ae80a9ecadac91c0524550e1729e0ee2b3f1883475c1d6e6e262454941267bda6e818cb4e21be8a06bf73c5d1346ed23e85da2485cac8980b06662018eb6011f19fa8176900ad4797e180ce376b0ddff1f1fa7abf8496778a0870322683db0de46a5d99cefdd5c7ced55ac4fc622ba30fda5d114c1edeabde104166b9c5badd59ed1bd34fd1412750d89fb1697ea741fe52ebaa2f72ec13e4f72e0d5abc4f02cefad4f9e9ceb97d7a80eb098f564c6b61e08c95b431fdc06ceb4aea61a8d1f0d2d73d6cb352e09367d5b8ee901c00e0496f90043da4b71b2549571ef1a708ac6c6f83a8fcea684db863d146b5fb8a52fc51bc2fcf58fc9bcaccbc36e4af0cdee88f9a0db316f425f48abdeb34830d495a5b640659f5cda38fe2e423f4b7d6340f0de1c965288686d34ffd89867435526ad1e841f5a39bcc0acb14bb4ff5a255f0d4388bad336cba29830309eac31c89ef687de +expected_result = pass +expected_shared_secret = c2e8d6b2952dad6e674de082b9daeca5ecf8fdda7e4c83fdcc46d5eb70fe52a4 + +comment = Bit flipped ciphertext +private_key = bbd94203643645578eeca072c3eb177db98f639b9f6eab675750c837207ac691036dd34e9e46b986ec2880637e552370e7a7a161287e07c1a7f84491ecab2b7ad01ce1a4b58aca62b09c88f3224a6b13c6a33444b6a636a3f9260f8b1a5b46b5259a21299a3ee7d79e3595473bc8237fec2b9216455838b9280ca0d3395ba3fb03e7b727f7e660d6143d5ea49257cb3d8bb102009342043168b57632f4a1be5c57a4e5f77393ebaab911b628ac41e74735a3db2f7c857a5b442a45f82bd338537e3245c6a66989f33cbad92350eb7d22e005cad42d922ba8ccf1299d05a433201b6165ada41034464562bf8a485aa088d4b15cbed80161c74f4976aa2088307fc61a2cd9457040aea51b4505265b7405247671271362b828b84131007c8b07ce6f40772e4786115c63ca3b0a1b7c86b1d677023aab6fd09cee027d36f493a5598db7db6ff4d96349e928555563b7bb961f70a56287363566a9dd08463cb2ba3b758726c0bf0184ca7b460ba2e5aa54b5453b1ab89f0243edbc1429950a18570bd776765190a26bd59dfcec4a2248310d0c65d8153ad6b3c6afb5a642632aa6f373447a7698d804f9070150762ccd94aa5bb847c02b9498986a9806accd8529dc4a16aa221ca01b8c1c1041a273b1141a6b2974701d0bcb5338a3638799a621bf3c0210cfbc11843c666481b0fb062ec511b8b092a7e323b381c52dc524461fccafa7d8b51bcc1dc5d73a48331b17100c57887ed2f04afc4229e237365107d00002695edb0ed594abbb83acfe9871a1c1bbd3db07c77792602b67f7820771b85e8ac95583d12da8e36689825cce715845a90f03aa1e674643397c3c6a2358f0e7870337b8368a112ae6761616433830a220a4151522470d097aaa3cc6feb8770a62772162b80f3c438fa3469d556188cab96b070a4bdb9354fac4afa7c92ac37222d741cefa568c460b756810d2fc83a5d4032d00569aba0a2867c092a0bcec2c24f44459f85bc78b472c5925801cd03bbda889e521ade8d39d3245682026cd27bb4d6f1209f793b63a988800fb00d68b19ef4077613c9dd3e6b4404374ebe5497a48b14ffc42fda27692cb54a3a13e3d2769141225c340c62b4c6c14da3b9b29be18822a7c050cb97765dba230b5d263c1317dd4a99d8ac96276810ba943a594d4a3ed1a51100676c1dc1754a92274db2f0f734dcbaa668cf3c25ad72935fc79a392850c9308bd03cc5ca33eac009b4a702c871369b165ccbcb3782817272a090e34e263ec96bec9006d19e899c325a6e18b62b38464100266d0f714fafc9f5c4a2b8d4872bda509d6dba0344045dff1adc3171ee6274c1239a510835a1ce9905f07bff859b8698840feb9c6ef091d2d1cbccabcbeb51b71ae320c868b3022c089a0e1c21502cf22c369300b45bad483c7209122e9c9f363411eccc938b92e6ae8b910f24046f203db48b934b5244bec7ca75b3a754621ea239a29e327150733fbab55b93244e7704409da995fa2b9af31ca4d350fe26a3e705cc9cf4c042c9c9d74b77b6afa48de837aff624bcc37a2e9317faa377cccd05777a6abc1c3157154bb80c59019202af55b3195285fd7612e75d3bd45a9ceb1d13c47a27d7867afecd803d448877560422e849e8c3641eb999ba2ba10d9754e70675442ec665671a16bf40af280cf6023b704f4bb2a7428ca4a7be90970e549bf2910867184a664bc85fca0b70518cc9eb98b15b340710a589335a081aa4815e362d4124bb81c17256621e284bc564480dce164d8c94862d9416b7496e1c62724c14373609b3dcb30adca581822795c0ab6020b3a25bb2dc596026507508d076041e0ae3b5581e1c39a1bb7c893ca9005633e2cac168447b1b93c5c38c53d2472b8c39a112ee40c23b8a6b0e97eb5eb294549c7bab57ea5cc22e0cbb515792484782a5a83a1202cc81bdc6886da1ffbcc54454999a1db6b8717ba32c3578265759ae153651b04a7540f3c85b790eb77cd438fb01891a6d0495ab34e01d87bc76cc6d1f48116eb30faa40bfb23b16d82c506fa3daf4bc3e0f12884e25bab378b3d6541a2cc934276ae5d59a19b865f55b19b5922180acb3c97d78b5c134261bc336e028430904f7b4bb1a31b2b47b1836cb600cbfc407b103b29f86b7143380af85916774f10c4355256021e991bec6048fbe54e7e62ce8343a2e0b8cd348941db13a7572b1ecc1824c3d00dde7c6bf2a98dbae64e3602470bba151e6ab748f7c2b1fb95f2e77c2af34b8d444b5952c67eb440e7ba9518c53b29237697f4191ea7ccc4804ff2f12fcc46a7ffdc140813c92d41cd2480250c48ab4e979a78d751acba980d30a550338056f6aa57e5057c6c37705a2b90caacec80b1e0e9caa966bee8e411f943794a1c148212032bf463f5c673a2d9a6c8f405bcf71822911b2265bd961a2ab4b335236574d5054a54743d8ea0379ca13995202906f1856a454a26fa363a8b9e9e3630825957d19312c0718146e03a50632d967012f5d26562c2bdee9b77ff5a78fe4613ba88be7fb58f1119cf5870a83e210ff2dac2c186746a630c2d556393db1f23319fdd15a33c64012d0a0bb69c226b25c29ad898b211adb8056276b56e2c3c70dbc35b6726900c26414581a16bc364e803a3d6f83f4b98c827288840e96481f27bebf134b6e60e81833b927c9e085929d2495231e1263c7a740c7a0ef6379e38b20a15aa867b437bd0c4808692b76755c5351639b224c086b79a15c46f0ed2397cd20917d20df98600e3532deda4b95561bd60b037f0a27b65000872815efee37bd83511add120d8d0965d6035bd548fb9505ab3b703e9ba117f192f740261785158cf5895a46080d1a72598793e995a1a673c4345c62f528b084788c5a5e186f24556ab418787a498c3cca4541a03866bb696288196ab627c8a4c046967188ca1c4f347f537317787cd0208bafef92aaf7b4e7ce03a4fb213f9581b5ccbc1058b620e58c460020c17b565f02ccb33f9961cbb31a8f119aec66a821012f2d84bba5a4b0ed17a4f204f5f083f0ad0ba53d86f61c72e7130ab1ecc1a68a5a922b3609e018f74a2ba6a137c62c86187021524a8afa4d29ca3f81f0ce096aedcb2d29a0f0ec73d91445b4c4cc3d349c8ba1b7160727fba8b12e1fb75e3bc5a6bdab4ae697df72bbc86852cbe142d008d2a8ba97d1f7458a88697c6806354d484fb1557b9f710d5738d24c61344dc6a1d20c9d9399e005c50442068a8d3372cd20640942ffce99ad78e8f318fd23901dd3309bc14af9489c8b786eb37d9de1d5bacae9d0695d1d6f67c770e4896b33e6c27db507c87226db2f309eb3bd06e861e1a41cdbb2d50a62d85e38482b01af69a14890e73789cc93bbfdfb192eca7b1f8d5 +ciphertext = 71b3f7b1854b718ba36ec5ce644707a4a57fdfd5317d511777d2089ee664a5fa7f9a2bca7cdc48673389275b75037557f43aedebd0ee05c23b683a00cd31a250ac7dc8c5c0c7cfe81118b605c61c2310b04d8ae56268f34d1dc3b1bcf4792322b15df2e651fc3d41137e2cb3fe163a21a7bcd79674f4e622abb6bf9a31f3b2d94b723ba2f5364080920833059292335459466f16c991c067e879f97fb9a0c7c68be505edd288fa73faaf57d8a97ce7d1d91dbd97ad3580b170e7080e62fbb3ba715209959f5780d89e6fa5718b9e4c66c9d996fe87d8890153090dc9b8f4654f67f074b90636d320d759c0c9d1663ac38baf9aabf835dcb4fd1f6d69814ef4c41e14c9a59876bb290d339d9cd3963278040869ba1f959b8fb6f114cd884075135f3c00e96cc6b11bfe9f44ce1e4e1d8fa39cc87bcd149beb49d363fea1ef0b4367afdfa073fda2060dbe15298684c9f2aeb0343855c5f4fa587e280ca74f933179a9031cffd3a36cb058fcaedb76f7ea1da36f0c03898fd249e496357da2455d946015a087b68fd96a700b4021adbcf5248746b48b0cb8be202224e89e450f4ac9bac943718210412eb36f701393cc8e3c81c4e99862f2f95e7b02a5b9abbc76ec04ae1614b900179d38bd3a2ae332add17d1d410f8e6e204ebeedd263260e7167675f8af00605cacc33d02f80e7e7561beeca0e5375c2b45fa681a73b835c92fbb68124ac6c9961c88c94108aa65aa39173d132f9d25795a0df44bbabde521f99a8bcc01f870cbeb1cf3a7ff767fa5db326c09d7d140310027a7b0c0ec0e041a9ea76643b0713c91dddd6f1aa3b5b36b1f908845dc07b2bafadcf5a9e116a79248691dc6f289f405ea49d11fa4fde79402241c008fad1e1f18b0e06a745d4fb364e2187e6ec951f745e889c110e19b0adddb72eaa07b3675af5c6323ec6e751db7dc0d798b02547a831993398eba9e1210b640eac019df302b8f674115deb3290f7e2059dc1b468be5c8129e721de81ddfbcbb5b10e31e5866848db502d7b1a5be7b57094d0071b8dfee745ef2c62e14959e8c4b3863000a2603734b125d45b26b20ce187352f469d2a2030f92cdf92e8f27e2cdb87eac8be1c1fc89a9a9e025b720b8d693eaf924f40fa1cf130b4992871fc9bb0b6df5246d972f3f52903ab95b15119df7ce7f4290e392b75664db035f9c5964f24eb38653143f60f311d6d2ec1ef3da9adf623ab99ded8628282458d921db6f2e83f49e6b26bb9af23f1ea6f1b3c385246ec225044c69a59358c7443c4ded4384621d463c64465c0aa8a5cb6752146d5d00258e63ef40978c29b229f326673123008bab2fa809b69e69c4ccd120fefa2b0baf7d0b1d5058cd9f6b544ef1facf31a77d412c244ea015e3d97a9d9bc8639109fa243cbf4f90260887b5e9d1ba0806fc8c19637dcad48b21412dd76493b9f0c6fd06361b5a15c800607163c590fd71a6e6e2212d9948ad98aedab07340643413d7a93e402e72a450bd7c77aac8139913858def99d51b24821c6 +expected_result = pass +expected_shared_secret = 4ef35572f3c80100a1b6b7fc163787abb0dfb77208c7163d459009374e6f5780 + +comment = Bit flipped ciphertext +private_key = 75a71d4bc3a1b082c6babb87fc872d7bf4197d47a4b1229f9840200d7c6977da77f9172df98b139a0c40d0824bb0d6687570600ed898ae6a847b92368d55ae3bb9010f8575f638cef777b26765724275cb1e84418a76bf2066088e2690bcc2ce2dc2617e85b047ba36cf2c1007761407cc9f77982f5822aaa36809da46616302252a830e895a1e66c6cc1028a0058568134b0df954cc199ba5216b462f741f8d7b291c482776893ab2068e9be65f740002b8dbcfad0873e83c4654f5cd1f3c2f974c591b33983a759bec44ce8e204bb2b87a1b70396c7082d8a2562e673c88b6990096be0df955c869bb4d6c1dd7c83408ca1b9abc165f96502d9c1c273a82184cbf058bb855f4bf5b4cba5fdc6f4d4a3903348703166d6c7860b227b74113ab54c12c7850b1f1402f2d696f99c85e222b84945c8f515cc86b81c3a7e018b7c6297182beb2fc28fe6652c5bcc8c5942dedc8c61e04795665242dc034d71438be0c0425712821e72fda3c3a0edc39a6e51133347fbfa0a14c8ca6dc401a7ae2acd0000e39ba8a701c3554067edfa6118414411a0c04e55b88dccc140e275d39eac3f593c2c6ab3baa9065d41a091cd21d5b86cb4882c5cc4063d84935b541ad0b86bcdad10a8d1b3d33ea831eb2cfc58835cd2446199022576ca26c194d4b700b75b240e1d840a5546968fa74c6512121535158a21840d795fa13019f494ba9763a69f38197a5c20fb1b29454102f424b6567caacbab0abe8320dfc200eb76b8941429793731f709d1408b15f5ba91fec4ef70183c6399a9a47bac3bcc46790555078afe9227a5c02a8a985cee661b4850754b79440b0407db1e78fc065ae8bf539e3d189ba19c8d2416a829b376b449d444991e8bc149c56a0afcc67b6488e9e860a56ac2ef3b052efe1860f211b24166d83d36838268e90309950482af8dbcbd3d6bae494c377170521e5bc91433558519507c35958c723d40c42e97b594e23635f7463b3bc72f982b5eb94003b62a3f081c47e2096695098a9a746d5b525783cb9784c2315db254f82c8cc7676a66396923507e04b5449cb41e988063d7a487475544877314efa149763602ae523591c711de3c3d4315aa896b84b578fa8616e4392a928a4014edc09365073e0679885eb9ed5d6412d35a016b69d7e09cb954402285ccfcb06922111a8ab731854f4afe3e5780d789d0ce53b3cd46c74d534dd21b469488359311ab0587af11cc6004914ce986b743cb8ca5517129b42d8d10dd981665a272f2d22b4a8f1889a166aea1b3675145dc9c8c0d8426be48178bbdc8fefba817e83439c42be7a1058bc06c78b835aea135b12e5673d5b4f7685b43c1669544b0975b72c22e61a52eaba46f12409ac1fc454a54360a7f4506a5515c9006383e30aac0e266b2a56b955bcc2fa0286f601538938a349f08256c9488eb333e82169e37c68928c2fc7e013d828746776461080c83b63a29e474ba68153b9316d9c549e4b12bb382075b0bb8c0e04584a5c2ece9467ce296b24028cecd33b8b03438957715c3c19b799a65e572fc38b50c5c80073d03dd3cc52b02b71a49c154b82a0b6ca55ed570a051019a132a1fceb85872418651b8e6d7762a31019177c39ba3c61e5e0373b65115fc24d4739053481319c489352485366fc0b99cb630f448d065854a3f094d2445fc22a2750da7b6a7977636b81dfb7b5e1c7073efc4a971a543138c08545b0e9bc3075200d2aa45ff4c400cf2312ce915127d85ed89cb608f557ad000530bab5c1153b8e32562e1303635782ae480e49fb3f14b72357d61ce184966631b8e9f73c3b43cbce163ebfd88feb6b087b637dbae0be186074299362604805ace90296357f4b297f2dc55da1517d2b1495b74b4cadf8655db24e512c89104a139a4318a9cca294a18a3cd7ac971a535c783d7f235ebc821deaf50ae99a78d832903f573e5a0233c0f78e116c4b2e360c6ef93ac9f121af6a90bd331f37e3ad81367a691a2eaeca43664845a2ab871cb6c3e92051e659c8b0b5c73a60457c616aa33717809239d89211bbc288ddbb634f1387f3635483d5c67ebcc1e12592c3648409437818458995b9bd44e0abe99501ae261a030013491663e62a657ebc77dc71739b238c2f4a907c6c7246ab7e138874f38aabbfc72f9370cf4d6c9bb84b3ce6aa68fde31d9cf83224dc90bc0c08f4854682e578cb530183c21fd1c7516e424eb1e645110c8a5a4cbe39719e8fc90eceb03f94246ab713b2cdc371ea375af66362240b7f46fc5f9d0c8728fb6d1af05e04ba62a5e9b317e88b489963d19150c0f1256f423ddc1350fd8c5e55b8567220babe93346914665d55b2e9e77cbe87bf82f66b5d45c214b7805969884ee49556b73310e98974168567b504183b11e6131a89109ee6168695c29bef5360b9fa08cd6ac1d8353cf69a5a77f6cfc7dc2ba06ba15ddcafb80931f2fcbe230804b505941fe71ae88029280a21e5d8af68771ff4a7158da0c31801039056034df5a8c0a1b93e15cd7769141381026dcab830e4891c78324b09ca40c6024ad77b6dda69d6741f2ba844e50c747b621282717805d55e21e6900e426dbf8b20206c786232246b5b91c1f67fe9a4126074174a85ad2824762ce892896b749d6890fe941408e50894a3913b1a6509d023565c261cda7069626c7a95c85964b3373a69c3e9322d3882ad0c21ab6236b842a5e129021c3b2509cca4b20ca15b6bbb909526d953c272e44fbd76767b47b41d4a5701ec39d9420f2ab298ed492d278592076320a0e0c6c10c716bc5af21a69b981498fdc1c312b5c68fc098d962428c77c014f91251775fce74643d11033c871ac3c579e6835efdf8b3f601af313448f113c8a5eb6bde7750fc65355c0269e800bbe817089bd2747366bfcbf11539193c5eb8a6b9c21da611a0ee169dcf9a8dd8795a581a4455388823c7961b46a98edc4eb2b56732fb56e12b902d3935a9508e5f101a5cb893911b3f717b0505261c65d86e059485d46b90bae48100070aaa9612d1068f28d8a5537b4269c65251648466757275734ceeec4245fa5d6f99131c4a9de9e3525a77bcde109dc8d400df593f4d978e217a5ea7f4179160af6764258f7ac0ec8c00ef16749a966136b75498146c7dac6f4a718299e9455af065974610f3b80e1c5855ff4346416661dbc06289289a373533012a3b02f7b59ec7481ab18f91321b09531bc273a6ef77347a7aa045333a1749b1a165090adcdca57e65533f679bf3b34d969d935358163ef477137af717498437836721000cd814b1d77bba699d660079c3f7313d049c85c7efc902e3758499e80d421846d5653b79317045e807ffbba9ffcead4faf3288e5eddf041415e7a6590fe691 +ciphertext = 5f3e8c65b679b36f488455e5a0f488fb4efe643c7912ed07de11ac03ba29042e144a7ce6b7907a9090650ab673bdd56b2b3eb493dcdedace52dfc6b8d06d76e1751d95e212aa9870b6fcea1bb34312c7d4cecc61d01bd564cb907867af50e9f0d132be5ed6ed9b8450727231f7776ddfc78a7160da5ab2115db25fdb598d7494411f0e939486e6cd6c6206d926e8a495bc0a98bbfac26f7a3f9d6bae01bc2fcd74a505a3aa9cf34d7d51f5287260e7dfafffcf81d95bbe32105ebe041b57305873debd5815d511c33d3d31b1dea59b0d06f5512309ca92e7d0d9796cb53355ac9e83524b0e2d1b111138a426eb8d9c786405ecd9cb7adef4f222188e16a360c7bfa8860e1b3038d615f0a980a33ee10aa0c259c6902032239b19a73945a9e794912c745f9b02f4e816f59f8a9523b0e30befa6f6d3cbf47107ce4e8a39f30b104b29fdabc378da84a0107f7af75e41d5b61e309fc4a67e98bfdab101eba2e243e8c5a83bf3c80d2afaec8f47c9b88d71403fb0788e654c558422220e2cccd27c6b4e63d67761a737fe49275d2cbf7ec2b4b6752972d77045dc34c7a46ca09ecdcade64b9fb06b5b08e33d6ac3d0ee5ca40a5c8a44050c1d89ea06fa53ca3dec63336cb66cad9a59b192299b3c93b8b6d268966cc7f1cfcc90b78418405f3058547dcf6206f72c7812980e2ffe30655c7eb60c945d5d289b1fc04378be480e8a0e68027b92fa543cbc6fadfb8a7054fd650eaa23e67b75d2ddf6b6011ee2452b41daa6be1ce2f1a24e856bf3cb8cd0e75fc927f74bc62f4136d8aaaa4c888965bc61d80f295fe57f7a1246648d8472d561358fa403d8df15baea09cc446efeebda2eb42ae37c3eaecbefa04db9316a80441f80f4528d5d8f5a36276131e4b6e21ee4dfb9f31338e009c631da600d9d47349a56722794f34c9118984f4528e4941bc28cd23acaf6aa1adae9593d20c0a08d1ef2e25519f6de660c683f36375025a6bb54857cb65ac10988ef93a51226e564e734a4af0364db5cd7002091869ff3f83c7832f8531df9705336802c4b414dfd7ce6970f3934e3e780c1005d3c8eac3db3aade8c1d0edae80ea0530b90d5fedface48b0e05f00e8a78ecabadddd54456fe749189dea741e191951067c6d9f6c976b085bee055512f2c17fcc8b4c8af47037a58364091fcd9a15cc55a1c2d097c0a5c81cca16120900e62a6dfea04907abeadb3e05a8354fa33398c9b75dfb41712bf87830ac4bf1002d2d9a6b1796ae4f17441d8f7eb138aaf49d29cf8c52e8edd7d191dc9c5474dcf99ce8cbfa3273ce92fd983556454c86ac80e1c342257dc917f55635462f91c96640e6b95b23a177987ed87f0ec48ed930e9db49631dc594adb310890f82ba341c6b87f04a527cde94d965e5692f2e184c2460d5fb22be5072c79f092c5f1ef71dbac16d0828b746892f4ae309766b4c1f3c9c44e6478acbb5d3602da96301f78f563d815fb33594c19ba97772976bb08cf8cbc2195f587c2a5fc0ee0f0359551adfc4fe552fd6 +expected_result = pass +expected_shared_secret = 7eb8c5ac7c5ac2eb2e227791b4dab72f5b63603d7d973bedaadf66780d0750f9 + +comment = Bit flipped ciphertext +private_key = 7b6acae743be39e1bec705984fd68f029aa580067dcfd00eb2b6246cec916942ba6b6c675859823af080d5e1cc4a8650828218d57ca6ea2772eec62a00903c1d2b58ea247f97c469e7c4b615681ca56361a69c3d93b11bd600603a16c75b0c205b564c595aa3c4758f4cd696fa55a7769011844b3a98982127f31d5405232fc9cd0358735a458349452d447c35701a28a8b57b782a103ce292501519f7513f29cb6de8d8bba5bbab78f262f33153b119c6d7456c772582ced621aa2336f8108bd1017e96b620e4f36445f0545bb77fe8b74509a53cbff2bec7b2cca3067ac9301269189d4631b1e23748e1743887c0b1b87a4f2fd8ccfe29603273cd74d0c661f22383d23eb5b5c6004d489b468a03a635ccc93678485af0b0a58c488f4df3a4efac5923797ac4b789db22c48704669be322d61b766f2b8f3c0c71a9c64d8d1808e4fa2988f53235f967a488c272035640a8c1bd4b156aaab33806434cbb46cf670da96cc705b39c73184248241e3edb9a8e34ccc6f27757db16a9650e76f8217b697d063b33c7a745aefcb2b24c217ab64110f05dca5810cb4bcecab17bff94ced13432a015cbd0384a31124821f5c2ff8765f02c7b02a4776892359800c2e048b4379180899cb17b66aa0417a5f1c3709342a1359614398a1f89e9be1dda0de7f34703e192bbdc355265b977db3f4345bedb7a40e0705cbba18517ec74ba7c55672797403cba2a1921448255b4f041ddda737e2750ba027c3ea2549ea1a1ea8a94fe58c4eac7547cbc9c7ae99177caa984bb12cf999543e88897f1a67cc2a7c1949c5bfc657cbc35c5ba1b5ec073c19032ad354774f777f0c1ab66f390aa48bb1821942bbb45b76114ea4a27a57122f8fa756de72b64572aac324f4d4784c8c383483487cac873e6200d963ca8641aa484a76379db21b2b9449acc6784536f6eda239b2815d0f51d3755b45c85565a781447b01a65ab536b94ab1e2a2da10bc2914c60afd91b36e8429ef378db161835033eeecc17267815c78b08bc66bb94ea6d3640024930a951b9c2dd7300661c02fd911e0cb85365a1455f3b60a627cda7656ccf5c7dd5123a885b978380671e4c8235fb6e0c7781661414534c8643451cd4216a95611e6b73562f2b108a308dbc229473d4bf2eac8969171aca8c78615582155373e2e9132c7b6380962b734ba8b820ad66d33c8344bbd121af58d3044f916d599c08b22c6350a18ce1c00f68c3873d221a087234b807832b17bc146045b82c7c5074790131be40a322c10354a2c7acd4525315667767e4cac5d13c2a8092aed188faa94536f9746e907cc49a60751cb606a10ab49336729090426a4d7d4119d34a7f01aa93ec22714d879da4243f08376828a43c45b31a4a26c7b3f517e43242b1349b29da4cbbda8b7e1a82f0da690566841cd69b588c6b25750a2c406c53a2aba7eb83f2e626a37618cd3a3e7efa8ae0d70566db7ff228b5e025ae7a38544fe09c3544685057a7279c7882411df9cab505c574e916cc83b81dcf016a9da13832b0b32251a959b62e835b6b5b2a90df6c1b2d2c5c6068396c9b0d59239f5d452b3715372fe670ced8081100573ca220093828b5458637ac4982a23cf0e783e2f2a9dce7a51fac82c3cc0e6e8912e1450c1c078578591429cc641521395ae658f7c536c4fb22011b6e5164953adb807f458e917a3a9e6549c42a9cfa30381c888514521243e7045bd691212747cbc86521007ad5c7bccf791b48c3cc4d72601c2b5b8a215aba360e45d892def749dcf2aff6f9b47a0907131b14921a1c81dc3c65fb7c91e25495a2b8a5d847fc90c3ad41a6f3fc567873324988adb04677aadca84b4c489168a44c801dffacb57b754fde8568d513569404743eb88afa60b27da5124aa10c97268423b586b178b89e5b755c6845a7581e90f381766c3497a4617f7a1c601a87fdbc26eb01733bd0bf71b180c6c2217ae8641e358dd3f305ffa36fa381776729a666118141882574480fcb9974ff488d135a5f62aa1c81e36f5328781ac3510b8132eed9b4928024091a23ab802e4f150f49b0599ed2261dc82c2cb43ea2258fe1167308e83f4aba160ccb4c6715a300e1aeff3367bd0a77d25622d064763b91cd90588727f2407931611b08a22960574e23c3ec35742e369e790cad37a8630fb91c1302845c8a3673079039111b93d494672a1b19e74f04c13aea7486f5e4ab2047cbf64820d99c890b74969bb235d7b436c4d48351452598a64b35f58ab0db968d297d649b39cbb578e3586fdf55b37d2512093a269ac9770cf044583863a3e1121123761bbb6c739b480f8920856885965053dd21bce7574cb26676952a16bd89bd8d618810cc87e496a0629283dd0222fe2a4903f2b08ce898308aa9e0458305818ed61ab61fd360454652ab67bfadb8197ec4c0c1abc6caa2996f455fb2a51e9ebccf6b832465a80d93c91ff3002ac5f4c85bf3b8417086a3a551aa226e774390f8594dcae1a1211725695979f368c4e69863b0a6c6719c4ce3bb65982b8ba1026cbdd42028c9a36d7119d3fc6e871a47e25c61aa759d254a33a24a37133b130af28a87e598e0375222e18e394b64d1db9a951c197af7578d556711b9408d588cc1f3a67078c508f653d5c22a70b35ecd0842d2b8233c7b5c086c80e6007fa7ea493dc84ba948b6c1390470000258ac319399b15634b248553cd4e9b61a20b8b1bbb967bc52cbc75d0ed759a94817db5146a5e0c1a9949246163d32bc42cd538be8316dbfe3661a00a61598aa7fd80bc39115f884a1540221f4c619c5813952678c74c58715f07d8352cffdccb341eb82a3b8ad6871208d096a6ed1678a1b586f38abf3363dcb3135da1a3e794a3bd8b43ea3538b39ea720a2a8fea381a99ca064666011a366765a95588041cbdd8bcf401a014f0b728b65620b362bfd9b24505918735a5759c29f5fb67a11b7547825b03c957bef56518902ac8eb74633a63277721c72bce4e536d18e585f5dc611a326fdfca9a7c8580a8d0b46c56c55b7a74359a0ef98c16af3577d255abfc5c33b6341fcc0032226590b1d6cb5ff7850e7ac4f2f002c51060683010631aa10a042b9f5904d9c776f3272c85c63ca4b670a6228c0fc043e9d5a396631ca4367e34b00d98f1c4f7b9810b656af7782c4b13274d7c03a87404121a23a2cc17a032c1ca8cc3eb89390be7017da162db52899063989bbca823704feaa18bcecab41ba091c31136d46b30079d18b26639e64a1ee7247938567be89c3fbeec99037d6516f99621bcf8e055c149cc88135a2f6225039a5f9371ce44faf9956d17fdee66e25ad2ca1100e4912eee10aa277a5bc25505fcbcaf9a017c9aa66bedf10ecc5907154ba75d +ciphertext = 242c22e2d09da430d54c79aa5d8076a53aabe94abefb8705795d69e38bd6cd1739a144cc219959287a11396284040a19d55f67e7e9e99a762713fe35f60ce45653563f89438a779e9711951dc9e75a3bb1112921a4ce2339b2bf5ba8c632c8ecbc7de7725aa86feb94ed14b4252ade07b4d96c78b3b522c93b19903219d655b1312f6f5dabf8a1d520a77c1b1d02585e02bd42794a9cca57f3bbd76fa3f2f3ec8105ed9afb05b53c9ff6f4568daaf646218c45b9bd307c32a4b54b6d898091dcc9bcabe5e95ffd3de8c7fb31708a5365fa907c7ef3ce20edb4d246af4c63142341d5e5ff02548debd621b14e7268d3706cf4c0ce99aae8b8c59fa6cf8e6143b357aadadfc9ea6c546b1b7d7378e029564e1ea40d07b0bbb5ef6e7def3204520fe5cf8a40baad86e441228701101a8081f93df930d02593cd87b4bd61d563209532801b900956a495531de2d695970cebac5e7b9d69e0b1a57084605481f30cecc87c254e493c37b27620179dc7a9a93a2d51be73017dad2af8ce7455378120e78d4f89db22d07417da03bddf983daea03622898ba17e855519c7d6a8de1e914b5f284e847c1cade5397135a1564fd7ae275d4e55a5517f91c1f87ffe185df58eb5e5cd52ad9df9352d45c64b8566a264d1ee640b9dd4266dd761e5fd25d942f240bc2aab7d590fe5cf027e2c9ba1ce54c057f8c1f1b217bb72ccdb7579a3ef24b686f7229d0a70d40f7a06d07eb431c717a7c5e99fb295246be3dda6b9a7cfb7b5dcc1217c6a855d4bf4957f8bc860c2cd87bbfb9ca887fbefc51e2e782af7af4b2c5dcbeb44846e5d26da7630568109c2f7a73815b198f9487087911c49fefed8c82c3e2d020278b46e787203dac107fade8efc568c2b2ee54a54effa056144e4fd3c0dd88fa80441033db8cec6f92dd168901d1bf1a9540624b6b73b9b1903821eb9df8e3b66829cf379bd1f81fff3e2410b8378ced54132f5e94646c6b7e92112608d732beac24e008498e1e711fbd32a2ff2bdcfbe27e4dca687e394e6dc0bebfb04d1c5b5e53e9125a4864a33315858ef1d5cdef9be47be877e45c81dc87e0dd6e47182eb08320efebb8702223b4c1855ccfbefc621201f2f3429945b30e30a31a1fc46b6c6e0c8caa0abb0b42e2c5847043d7a3bb0755c960e416a53b450fcee1496fa552b4c9f66f7e0f6ff73dc927289c97669e653e95aac16b42cca23884069b8cf2f8cfde31076fac5ea8e30b4d0acde34afe6e2f82dabebc1afa6f44e83a8c159f4d28d322f140aa06a322d83e6215e61045862284a93f71608bc775e8578187dffe0fa362c15351db4023a7e50809cae6e9bd898cb0931e6ef692b782075b578b3987cc34d89eda1d881b121cb3109fd903bbef7e0bfbb3ada02cb70222cddd01a0aab7321fcc268c877f3f8f64596e005d861d4f72a3981f5c240a7d6f0af47e5efca07adb754e0484c84335cf596b0ed0cc050cf06f74b984057890c2b96211afc0d79a3880770ac64f63fbc2eb6f399a958c10e722780e752 +expected_result = pass +expected_shared_secret = 14d0e7b2969494c5c0ec85597130dd28fdfd5bf6d7970206276425ba9221f9bb + +comment = message all 0xff +private_key = ff3a74a3d765a93bc5e713beaa747473d4383e4853c2d96bd3fc814336816782aed2e40434960d52dc365758924564b4ba97b682463bbf1c8129265b3fac96d572845bac8eba3a94103967a5765c5e97004bbb2e7a097f28ccc4bfb06157d36c4cb76d8e042907982f76837467e00ab9b67ecba6b0b9bcb26cc53130a09eafc94fa7fc45eb27a16fe05fe868a1bd3c38784a8d0fa433d3b769471a6a317288198014250023b131c590e2cf2714aae0328394389b3fd18888f3187ba6580368378c3689cc3b48d690a2a227c742996cdf6296f86c12e0921a7051801af5421026cca1d4815e8cbd585b9b50d1caa2d2473c788ac9808d5e308833133551591f09b9221cb930fe1a029e6176e3b266e098026e0c5d4ad47a9d5c447f4c777d74098c6c408b30302a44762d406b41e73d3b16483ec3690d4b87af691db32bb9eeb8b2e8b85a865757207c85b2c33ccd5b3c88b0712766bc94229d3925befab5a4780ccbdad42ba5b336de7cae6c1a9901041201b1c3b4b115c6d22abc735018b571bb382d2bf60c0fd7cb6ab69b97d1c135fc0d24ba1093161aa599c06de209493b1be5703d9170c01565a148eca44c1c6722276548a686351c349737704b906d1f353ec64c2dd0e212b887012a227c0c38a6bd15953c640eb5dbaab6b1acc561bb3e6a4a635345f911b9f3441749b386ee098380ca6c81685a6ed7c00c749818f71a8b0865128504c97a15e866259b15b6dfb724345241ba52ca08b2a500d36811780cf12ab55de2bd3140b1f0c399fa1a1dd863cc8a479cb6eb9396c59b393195d8b0a54b0c133412704ef7391bc085d68b08b84cb2dfb4b373e7accd74cd8c084db36a9f3eb02e665948101687157b20a3a5b2321b1007b702b0f30e8a324f57c9a5d9f65270e69d4c8a6c27719773469da8f21d5748b7b35c592488cf2950c7759a1ef5c65b8fc8c6b9076e8ccab62c9704c4a9b4f6f4a97991ccb9806f5286749e115c5064784dc1479759966bea17ee75337178cd28d4c5a15450247383bda6b5fae875009ab5c41922edc21484a57405bc18801361eab80cf88a368dc88197c061433b540a923a167c4c613217696455ed935c13ba7686566aeb91c96a0a4b23294391775a100640cd62bc711b99a7c010b4d3c62d68c4e7046b7c074870ca585352bb761324e4d96e2da8b73b455252ca09e0d791777310e63748f9db65636c6897239e27f04c9ab7a2ecb7553c0492a942a21b18169f732759e8a2e6f193f0e167941c7173443aceec8af52054a9725f4a4758ec7b1a6db0a1cc56a5bdccb8c2cbc58d38cc37274f07f2c3b2051b9423820ad8cbf7331ede66c69fc4a0ca796cc5c16b03462f01bb048bdc7bcd90bbaa8579ed0bc0f317b527f16cd55a72ec596dc7c903dd7794d3a3ab11932f8780ab623ac000196c5356a858ab9aa6f7a596a19d8a470e475a4b08d39d9cf370db74004123acc7c8900373649fe74547e6bab62bca6c82590765104a339707d08990733c0a689077db122ea56ac39475ba83870c41ac5daa1dcb1ca52c52984aa41aed879eb404851c60503613205ce8a7eec9cbc982cb0846455b187159384570256744c47c628b5ab6aa3a5d8caf8b143593ec05f0fb23c23c7f52abaee39c283960036cc60af6a4b26518c6cd1921e26869bfe59a15184f8d5c357187ced9eaa7078c3327f2cc72e3ba444367dc1643f4760f3d648f1302050c978fdff774f939170b4a20f2f24e43015067267b1a3c23a6766dd947cc8ce09e747b8fdda838f8f745e9f88b5ff61f6cdaccf2f598e3052d47bac47a085e1bbb1fa4315757f9cb1f909511a76b90c64f4036cd7477196a60be14996a0aa68e0a13cdfde34905208695607932eb8e16ab811dbc38e8f9337805a16499741bc282625c0baa0bb3b2fc5df5c6833b92c1fe2a29de38a671d9a65a916bd7f157505219ad1793452c2baabba5f70b28a0a90fbcd67ef558364dc73cef18cfa7e98641e3afce97880dc25d3938c719d40980a65840f0c2a9a4142d41231a398124848e1f780af87864a310210904a02ac326bbdc1b804c89d813af649c111d7c46512a1c06a146f2fa7ae1c96a714b4a7e473340f20c420501f214a1bb253efb73a0b1b665c0a874ff7664808c32ddd24a7db131ded7bfd5bb48ebe1cf3cdb9e5c650b8371c680f8ace1b47623d38d8c29039014ad6b73637f915ea06ca61892a063545924c1764f15470d1769d25b5cda9966c37227aad82c46baa70e915b613a4993589c58e07872c39a6dabb8f0bc19b18249f7f94322899848c1028f275004b371f2b06f820c7c15b64c4dac329eb616c99c3adba45ebc8901d3537cae59b191013a2758af35459dea8098fdf8701159941585c6f55ca1d333b0c537ce91a894edb07d2ec33febe586389688c4b122f12baa4ecc20a3b5029121c791b9477c945d196c504652b4c0672f10f7b0ffb5868300020ad347a34610afcc04de318df018aa2ae69b48e71746147e8320238f125391521a4d5331d3b7adf02788c1b3cffce3981f5a49c6ec21e017a895a801499155f0fca39ab5716ba558cd81a88b559805645762a8827d88beaca6144096a59b3118941416e9fbb8af754717ec061739b6b5f155ff877cbdea8ddef2afd8baa91f328cabe07d4ba513a4f21311f07423850ffc133c47b819e0a7b0e43ccbdc66be5c869e0f9babe4516b7ab2312df5a809d9b42437738f66926971b3ea9711c821758edb2e7de8bfd82aacea29b169f04deee69c267a8af2b88bc45315e42a4346bc9eb06bb476057f72c8b71596a0163162cbb1977382ce9fe80aeda9cd3b9a68cf0730dac652499c05f38571be097be44bc5cefc4663f11008f44cf2c2283d70578c154515a8565f07868818b6c1c41b191c74389993228483bb650d00d57274a9882b96277d21553476cfe7404ce2c866cf831f730bc8c3e22603ea9afad891d5e51d47389a41b7841de4534e26b70efa3fb1a4512e234704c89251a1cf0d193222429f01951cfad38f1b5367bb51257ae0b86426a2b6ba2bfcd87f45967eebf26047826d67b03337140f42e5b035d22c566b196907096158779feb59271b3eea80bf7ab4802161ca283c6a6d74b22431bf1790b835d23664946bb16022ea76235a001592791a7c492d0e31a601e18aafbc71b04176c6dbaa9cf1c861c0c8d0533a842492a90912efe48bd659c3aff3834905c204e3776251a8bbc4ba71c76160938146cfa4124dba3bc8f09464841d3afb6b7078a0876707e61250f7a83fbfb8ac54f0fe3c5b0b84e8f65ff70414c84957239e3c4cf1873bc2216b38e26ab1bf8eccc4f9f4b5e160e78c9fe8d6d03f9697b1706bb5c347148e96b3b172f94cc6a8db +ciphertext = 1d375fb71934de8e937ecb9f3b939296081909cadb550137d49a91651b982cf839746e1b46809a058201d699eabb726734acfb06c4417fb1505d2b5b77782b7e6e4914fbf6779bfeedb0cb281ece21f3c0257cc1a3ffa57231a04d33c81292a3f42acc637745921237b7ea0d2951e8a572ad048469a509628e79e40fd307e5c9a0e0ef3d737c34245704a7e4a5eada2a6112b61287afb6bb3e556e0d6fd5b41fef9c5e8a966745bda853df46299f13cb316bd2a4402aeb92304f6de1ee2cf714a58d31c2fa33b547a93d2fc7b87bc8ec99bafa34f9b127b2e32cd4be824fa628ee17689d618144fa7bd782f47dc63e12cc109674d27554c1b2ae405dba2f38153983baac80cec9f9f59e13b62f5014c64353cd6e16d047d662a079de67286fbd5eb047d8d80e8e155b89663d0b10997fcc54306c96f87c6bfbc38c61d5332a9b754f89793f244ca3c63cc3c4c856f20370694196ace2b5ce97d34658d5c6b365001b1b590c25260e3caee0a5fd9a9c840d69301023b885b7727ea780e50d73944d0ac277cfda42a6210d57925df5913a1369a17b21b6aae23f69c3926361d91155eb89bfe9b39a229cacf2c4e4fe8307640d30f1d17174c6e76ae1e22740524752965cba981e686f4a300438011e318c079af455e87d4a6e5c9da01be68f24e9626852495f38cf03d8f93ac491b00041aef546dca2e1a38b645d2f4f00146473e61d1150fc3bf48951da3b97ddffc38e5658842073f60eec1e12148a8cd60d2314c5b7c7d98268b24bd41498ba61d7ace3f596500e61ed27e2099b3d687622eaeecc1a7aaa862cf2604d15a6b04bf1336f39d1b5676d6e3eb67d653f734955957f18b6972f87ebf1dc14f277880f1c274bd029249183818b1321f130da50b85f5e2c89363dab1184ded2feed5d2dc29c9bed46ec7e46d5d508eddae181225bf686cf2892b2b1b359692402e0bdc224868313849fcf7b15d6c7475f8191f42c7f6cb3acb4d5b9858c5fd79133395be6c28b6172b7d5513b366ac293655489dee6e4f78d58f21c6b8afd3d4746f67e02993e76f48f7fc9dce1541e7d78688cb2b6b1badf2af7036441adb3741992c597365b06ff49ee206e29f380a98ec834e82fb11306b7113d5df273caf4ee1094716414fe47643c7c818ab17bcdef79ab8485e58ffb5bbdb98ac1da3e54503ad0e867f9fd4befc753f73aaf442028295be1a1a146da3de9b74aa1d13d5f1949b3af8fafd0e3ff5a4786a70501be1be7449d41cc25ba844389da42f27ab149b4d931f6b360373307c53782c292150667efffb953396f3c62c5c36a3557d207791cde06c5547ae66b1c49d445260a48113a7906e0cd7e8a1e0543c08b91e755cbd8416c04235768b226405daf93821cdf4126969be472405c245124b3ae45bd4d714bd38253fb71fd848d3725329e7361b43dabe7ce3430193788a84b86b40d78bfd835f6767566305b80e55e0d93574b1c2887b755e13a6b77a1a779d9f84bb7c507ffea68790f697f45a9c7daf225597ea353 +expected_result = pass +expected_shared_secret = 737ac6ead974f733d47ed88b8873c56bbb898b0314db75c0b5eedb0961afce30 + +comment = ciphertext secret and error zero +private_key = ff3a74a3d765a93bc5e713beaa747473d4383e4853c2d96bd3fc814336816782aed2e40434960d52dc365758924564b4ba97b682463bbf1c8129265b3fac96d572845bac8eba3a94103967a5765c5e97004bbb2e7a097f28ccc4bfb06157d36c4cb76d8e042907982f76837467e00ab9b67ecba6b0b9bcb26cc53130a09eafc94fa7fc45eb27a16fe05fe868a1bd3c38784a8d0fa433d3b769471a6a317288198014250023b131c590e2cf2714aae0328394389b3fd18888f3187ba6580368378c3689cc3b48d690a2a227c742996cdf6296f86c12e0921a7051801af5421026cca1d4815e8cbd585b9b50d1caa2d2473c788ac9808d5e308833133551591f09b9221cb930fe1a029e6176e3b266e098026e0c5d4ad47a9d5c447f4c777d74098c6c408b30302a44762d406b41e73d3b16483ec3690d4b87af691db32bb9eeb8b2e8b85a865757207c85b2c33ccd5b3c88b0712766bc94229d3925befab5a4780ccbdad42ba5b336de7cae6c1a9901041201b1c3b4b115c6d22abc735018b571bb382d2bf60c0fd7cb6ab69b97d1c135fc0d24ba1093161aa599c06de209493b1be5703d9170c01565a148eca44c1c6722276548a686351c349737704b906d1f353ec64c2dd0e212b887012a227c0c38a6bd15953c640eb5dbaab6b1acc561bb3e6a4a635345f911b9f3441749b386ee098380ca6c81685a6ed7c00c749818f71a8b0865128504c97a15e866259b15b6dfb724345241ba52ca08b2a500d36811780cf12ab55de2bd3140b1f0c399fa1a1dd863cc8a479cb6eb9396c59b393195d8b0a54b0c133412704ef7391bc085d68b08b84cb2dfb4b373e7accd74cd8c084db36a9f3eb02e665948101687157b20a3a5b2321b1007b702b0f30e8a324f57c9a5d9f65270e69d4c8a6c27719773469da8f21d5748b7b35c592488cf2950c7759a1ef5c65b8fc8c6b9076e8ccab62c9704c4a9b4f6f4a97991ccb9806f5286749e115c5064784dc1479759966bea17ee75337178cd28d4c5a15450247383bda6b5fae875009ab5c41922edc21484a57405bc18801361eab80cf88a368dc88197c061433b540a923a167c4c613217696455ed935c13ba7686566aeb91c96a0a4b23294391775a100640cd62bc711b99a7c010b4d3c62d68c4e7046b7c074870ca585352bb761324e4d96e2da8b73b455252ca09e0d791777310e63748f9db65636c6897239e27f04c9ab7a2ecb7553c0492a942a21b18169f732759e8a2e6f193f0e167941c7173443aceec8af52054a9725f4a4758ec7b1a6db0a1cc56a5bdccb8c2cbc58d38cc37274f07f2c3b2051b9423820ad8cbf7331ede66c69fc4a0ca796cc5c16b03462f01bb048bdc7bcd90bbaa8579ed0bc0f317b527f16cd55a72ec596dc7c903dd7794d3a3ab11932f8780ab623ac000196c5356a858ab9aa6f7a596a19d8a470e475a4b08d39d9cf370db74004123acc7c8900373649fe74547e6bab62bca6c82590765104a339707d08990733c0a689077db122ea56ac39475ba83870c41ac5daa1dcb1ca52c52984aa41aed879eb404851c60503613205ce8a7eec9cbc982cb0846455b187159384570256744c47c628b5ab6aa3a5d8caf8b143593ec05f0fb23c23c7f52abaee39c283960036cc60af6a4b26518c6cd1921e26869bfe59a15184f8d5c357187ced9eaa7078c3327f2cc72e3ba444367dc1643f4760f3d648f1302050c978fdff774f939170b4a20f2f24e43015067267b1a3c23a6766dd947cc8ce09e747b8fdda838f8f745e9f88b5ff61f6cdaccf2f598e3052d47bac47a085e1bbb1fa4315757f9cb1f909511a76b90c64f4036cd7477196a60be14996a0aa68e0a13cdfde34905208695607932eb8e16ab811dbc38e8f9337805a16499741bc282625c0baa0bb3b2fc5df5c6833b92c1fe2a29de38a671d9a65a916bd7f157505219ad1793452c2baabba5f70b28a0a90fbcd67ef558364dc73cef18cfa7e98641e3afce97880dc25d3938c719d40980a65840f0c2a9a4142d41231a398124848e1f780af87864a310210904a02ac326bbdc1b804c89d813af649c111d7c46512a1c06a146f2fa7ae1c96a714b4a7e473340f20c420501f214a1bb253efb73a0b1b665c0a874ff7664808c32ddd24a7db131ded7bfd5bb48ebe1cf3cdb9e5c650b8371c680f8ace1b47623d38d8c29039014ad6b73637f915ea06ca61892a063545924c1764f15470d1769d25b5cda9966c37227aad82c46baa70e915b613a4993589c58e07872c39a6dabb8f0bc19b18249f7f94322899848c1028f275004b371f2b06f820c7c15b64c4dac329eb616c99c3adba45ebc8901d3537cae59b191013a2758af35459dea8098fdf8701159941585c6f55ca1d333b0c537ce91a894edb07d2ec33febe586389688c4b122f12baa4ecc20a3b5029121c791b9477c945d196c504652b4c0672f10f7b0ffb5868300020ad347a34610afcc04de318df018aa2ae69b48e71746147e8320238f125391521a4d5331d3b7adf02788c1b3cffce3981f5a49c6ec21e017a895a801499155f0fca39ab5716ba558cd81a88b559805645762a8827d88beaca6144096a59b3118941416e9fbb8af754717ec061739b6b5f155ff877cbdea8ddef2afd8baa91f328cabe07d4ba513a4f21311f07423850ffc133c47b819e0a7b0e43ccbdc66be5c869e0f9babe4516b7ab2312df5a809d9b42437738f66926971b3ea9711c821758edb2e7de8bfd82aacea29b169f04deee69c267a8af2b88bc45315e42a4346bc9eb06bb476057f72c8b71596a0163162cbb1977382ce9fe80aeda9cd3b9a68cf0730dac652499c05f38571be097be44bc5cefc4663f11008f44cf2c2283d70578c154515a8565f07868818b6c1c41b191c74389993228483bb650d00d57274a9882b96277d21553476cfe7404ce2c866cf831f730bc8c3e22603ea9afad891d5e51d47389a41b7841de4534e26b70efa3fb1a4512e234704c89251a1cf0d193222429f01951cfad38f1b5367bb51257ae0b86426a2b6ba2bfcd87f45967eebf26047826d67b03337140f42e5b035d22c566b196907096158779feb59271b3eea80bf7ab4802161ca283c6a6d74b22431bf1790b835d23664946bb16022ea76235a001592791a7c492d0e31a601e18aafbc71b04176c6dbaa9cf1c861c0c8d0533a842492a90912efe48bd659c3aff3834905c204e3776251a8bbc4ba71c76160938146cfa4124dba3bc8f09464841d3afb6b7078a0876707e61250f7a83fbfb8ac54f0fe3c5b0b84e8f65ff70414c84957239e3c4cf1873bc2216b38e26ab1bf8eccc4f9f4b5e160e78c9fe8d6d03f9697b1706bb5c347148e96b3b172f94cc6a8db +ciphertext = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008088808880888000808808808000088000000888000808888808808880008800088088800808808800000080808080088888880888000888080800000088000800008088880088808080008800888080088808808088008800888080880800080000808888808808808080088000880088888880008008888000080088088080 +expected_result = pass +expected_shared_secret = 309d56795b2a044fb483648e7f54d27bd98d02b2f8e5d6a51f49f2130c244218 + +comment = Rho leads to frequent rejection on matrix expansion +private_key = 00208080e8b3938b09aab715a0b7a09314c3d2aa03e900528a209c655886bf0180a0775a1ee133e543c17d7c24407131f0b813a9287c5c9939d43ba2c1f064015c1babc910d1024bfb46a3fbb1ae13dc5d8bb4576787a592495786a53d4c172cbd3b2cac6a2f5ab68fcfeb2a67a997d809800615c043e4bcc0985de9d671e6e0c8b071a20264c457c13b1f4734f234142e86c23170821d068210b29358694d8ff27e89c59264a315b6591d97d90ede633b68fbc36ca96b823a4bc66144b541cc118b0d60a66c89124d9080ae30f44b9f4793cfac65ab8b8cd65ac81cd95de566ca2c19906a955a04047052a699e8a132e2e48aab916278c49ccd1ca0076b5254784a23f7a8c164229bdb9b46e1c7bd4c74639053cad5226c598918687fbc50323f086238366c4ad9172346626b54ce142053de67ce8867cf599587d0a47aff0a7fc113140c18c40bb31e2340822cac294aeb3a02652b424ac9f1008a592ccf70170246e689edeab03dc0249ba59fcc6477fb668038443bf9a743255310df11b4c90a97bd212a74d5142bc6461a135ce7376995372a1bf919e3db20f22c683f488395a95e31ab13aa707c59f22e85d892830bb550395633f6c87df28401865106b5cffb75729391767522ac236072250c6f4dda196a90bbdfa183113c5fe2e31ba1187b4f682399f3c6c0288977904ab445c0c1b9caca030aa639b35029657c1608e3a654cbc39f8f096414d278059a6f56c8c838b1879b00ceff668190213eb15184a57706bd8c9111667f52a656d161bcb5e7cb8ef5beb6756371ba4297397eb6d0c850aac1e01025001b71a874a25e3ac16450228dc33691b3112de319f69ac29f2a1cdf02a0cd77319931003910331a6268f42669f4a90e79bb820e5c98aa252dcbd056318a050ab71f5d60028fc41594688cea4a95b32529c39c582ae828016644faf4b7b1fa6fd9c305807c43dbba54d44273669bcf956c197ea3462a30be3aabb1a6654dc4a72bbae53982ebb986e249d9438d66b65fa15b723267ce1fc1200bc26656d7c4e1839e02927a96304460a34a9c0a22ccf15c7390afed4a612ef236f9d00c22d04cc1dc362c08afd0a16536985f69f6a15d6585c410ac7a39599c683b9e67a33ee299a5000c7e4acde611bd6c817b1aeb1373835a245b916620be6ce8093f88635cfb619a963c99785cc5c354e5d025f954071e380876408fc5ac7fbbeb4c532b1f1be67ebfacac4cf907be9485c6da8da380809ee102af0c98beebb088c13d29830e7fca4dab8c1e8cc87a3b4198c50686c82626c41414d50878f403c10ac905f39a901405b93366a575338ed7d66c0a27c9dbc4af2d217688dc3909db8878000af307a989234174363f3cc35c25a42d7361ccadeca25a484a01967be2a65bf4998d57943759528d54e498ab18514a5665b87c98339c3fc01baaa2953abc1aba78778b26d54bdb2ab69dd705d6953dea404adf8c82d29b932e144f48a2661dc2129e6a2a1bc5242552374a504e0d135e6cfc9fb91a492e443c608c6e5342361aa8205ac744ecf974b667a6528938b6085492298e97ea827d5a4274ca359a1811c71a574dc986f4262b2e29256c4b52c9a22c3f168988ccca1c63473a75acda757b3ac6ad26221ef4f671e01461ab865f59c26f22c61de17800336b18365a190e7a123a34193f375e9f9643ae99889eda085d5317d5887e6b2c8999c133e20c49b3294aa0e064dec63c7a00acc1c08fabfacc28203e616b5a06f02e66e87fe1789725e8538b405323b9233fa61771980626b98b014ccbb9573d57d85dff1b000b38502af474add3a32f1ac7c1ab8adf93350ef1939ea376226a37c9675fa33503fcb753a1c86ca8c10e10ac74658944af239b48b97ca2b85ca4034ca7d662c91237c63c6b35137fd0429562b5856fc11662d0777c111ad9c6c34bebbd61eb6b538378b0123033c11ae1f0715553ae62cb27f15ab26b46ce4e540d39679ad9613fc91a35ca1073497cba5c57cc2c77bc75e7281e518f7640ad48451ecc32bb26bb2512fb76c9f6c46dfb6dad9c7be4762cba596184f37259143983e906002b34acac2be801c837c53771b048dbbca14b6c33e9ea7886c3be529a488aaa4deb590fdc96aa62a68f67abb4073b2f0f13a874fa7065e3c16a8b549987c5f2733ac4bca74be87f2e14cdf7d8916d47b69652244552a7d74b846961333a5755ec1179eba27b598333a07aad70626429153b7609a131e63c6bc94c32e345b9b293345598ae20a6f6cb25ff143f68e28013793183b5c9bc8a9d289967ccf613ad510a63c94c2b6b32214a9248fa89f85949ee3cbe0ba3a778ac7b754498dc3a79a95519606171608840587040a70aa1331899bb1082802c2aeef31ca2a773ef27382c2a84eb04ca518a83af9b44028c56427013b7036e441c20acf86ae09a82b8fb6ab2a234853a7b3ea386558a0bdfcb4487455a95c30cbcd54a6df965c2830f37c41bfef65013671411db77b8d69f6d386fd254ad7e175ceed98cc1e16190965b97e7375ce1105a491875007030c01cefc43e7a45615b665e073b0ba41a8309fc7cd70a271e71a36530c80ea227a9b57645899003c60e97609aa0761e60e8aa1f414518006cf1c62ea53826d53981f2264bc6c24ae072a2699886b75912ecc880ad6939b6a40d539232fa155b0d101aa7791cf74a1fa459ab8c8cafbe2911289312ca990fba952cb0253b71a792a5d9c6bfb31219e898c7125197f7b7a90aac7d527f62bb5fa7e00e106961d1babcc582590989262f1a1463e44d839221717b49b28980ea8b81f5f2cc44252c771b47d5550e3d68a8f5599aec848347ca728eb6c93b717fd6dcb7d8e338a6543d3a434245a44c2191a550794783212f44a94e46a64117f0b98157015fb0c6fb7564847703674945ca3b272e14aaa3a02cb8eb7fe3445e45940315b4408c5b4400812b0b48925862cd5c27abd9a2a0c3656290b11f6a342ec589720135a47b555aba0b098b37539cd0a05e729165d82b82ca1988dbb5bae64c7cb44a3bb190fd701b7927257a0c564fd2762f0c999341600bf86ecac593f7320e4f77bf720a42399c3b36642885b5b53a527a7b9606de8703805a72a777b1bf3674de08419e3ab4e424678e42ac87c15ed6c49afff1c246fb6b80d1182f57b6360203bb6640291a0b9d067aad6b8e3465a84275b923ea4853f799a7d31766bc84b5a0230aa43b9a3153f509b0ad9c63b00b4f68c75e29a6cf40d7000000000000000000000000000000000000000000000000000000b80a908a7f6edcb4bb86f2a0ec5da99c374870127a29b670702bea6a13ae462811536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2 +ciphertext = 515463ea5284839dc84869288f9c03f0e384e56fe04c60cd7af8bdf53057698a984c2ac336de2932d3d4ba3d2073b481a125bd6cfae82da6ded2b0e8fbf7f579dfe5d590a6c03a95b53df59baaf4f0dad94a7b821cbf9c1c809b5d089d38be1c30d455ef44fef503be587c4be0929e2cbd931d10f1a8027ef2d14e15a931f3881a2bd914adf3fc93f97ceeaa8a521762540307ce5a670313d828d5ac71680d4f46bb1ba551ed7fb47e4b82e6c6b4713228038d5011df91b07ea0fb98790924b4cb859bfaeb309ffea5c2cbbf3f12fac5a063e1fe7bbdb0de70683837b180a13e0cad655b6fcd1f5b635d3342dc84298269c1de8ce6b39452297fa6bffca90ca6045cf304c4691cd052148dfb0812162e7e000dc5c18c21209df9d9f0fe7dd8d0962cd0ac01402a7f8170265af8804747857d31aa7aea612900e9067ba8970e1a60ae3ab1105b1eff223c755c045b81de79659d001b7c45ce64dfd2dc16853276b50053988337ef88e4c70ef5861dbcb8a7d6d1b2a5fc5f044160be5694e12201fc57f0c8e3ed5e48c83c2815d78fc68a118918615b2ea0898eb7a33d446c449aa92c82131fb80267666d9e11425c9bb8e10f745828b72570194465c7b2eca785228244e08c06e0d8f20222221f5dec81fcb478945564e2e53ddb68dbae7c6b1540ca7f4087d2833a752d97a69cba3f604483a6eda26e8f5ec27f3ca84730237cf1bb30d70aee528eab3e4493c7f5787f5757ca6a3ab5c278c631584bdbcebfba318db0fcdaee34cfac4422b448f00006c97abf3175c379fcb16f5b150e398355212d8c60ecbfcb3503824565bf841743bce55fbb2606dce0b45a5e2c1fc9fa20c1847e9173de2d8dbbdba840b42b002cf5c0c1d34e709816806e525ca217e37cb2d23e3c268fc4b31608f89ceda1c78c7d3c6b23863f2c6b80747dea4fd11ddbbb8421728c4dbd97fecb9bb652150278a3a3dd388789d2edf85baeff8f6153317a9cc9b72af8f69f260ca96cf602e2831cdfbc14958bf62968e7c019d7c71f6ad55fb51cfd9adf82894e56c05f6b19304cc04d2906b935639f2e96b56768abe27199b5af84268ee89c97f42925bd3350aaf8832d1f7b2225515759ef64d2d75ab29039b549774a3ed7209e1e0e50656794b315ce2bfe35e20a33bf180ac724b9a47cb9198ce2174f6b9cff075f94ede24074f169f15a8eadb54d5cd8241efe8bdac98ce02706ab86c10089ea23470e048c0f9bab797c240b5c499f75ffef8ee6da533642301c897f66770fe1860a01e82449c4259f54be74a46d96ff5c78f0c07d43f66ab578a795a5f3fca06a1d3cfa16449a278da74a5eb6f0494ebee89d4ce6dff6c008e10953b9df95f0e2e7310d33239206598cf4a729e1466f3718534d914617d260298b45a5314d045516a15701c269ec948b681a4b3dba464878a193731e174ea8902873b7132eeebacfec09ccbce7f50835116ce5b0a9e10fbc7c76559ce0044ddc494a9224bc197c494510f2c44e43b037798c1613416f2240394f +expected_result = pass +expected_shared_secret = b177b87b89197809b36026136b06fc1d749dee4cd4881b4ecf113f28df2bd4ac + +comment = Rho leads to frequent rejection on matrix expansion +private_key = c5f6c739c640b093956cfb9d54272b3c704d3b364ff1c68510b875c8c29f30051b5f60b53f6341082252746b8d4eb52b3f77c818d42ac776ad393072d458a28b186da2b61cf64bc6d8b424afb49a3b2528d4863c876aac69b7c7fa95314dd36ab5f021ba8c575ca458c469409b71b31f3a8e371937405067951c084b6a832ab321642c82f33395b0701e5a677c3c783a47d7a6e474af454c1b31b174ce5285e90608e1932493e44bf48b921d6a58b1b86ec2a38b8ba2a1fe884c0fd608af3986270391d1a42843637d75194722d31bc81b2b507ccc0fdb309e59549a874d09239bec5a41c4e9bb48d6968152ac9d431cc3b290371296b8056ed56898b272b948e556926478291cb0eb1bac50b6718e98b74a1777e685b7b6d7cd6b22bb5846c69149b4e7b292a4153763b768cd5a67b65c3d059464ccc123ac086f9f41c3395a56ff3152fe149d76ac2fee2079653326bdd82dd6f66b6687a7fbe00d9832b09135756c5819b1f66dc44c7b32c2496f63cf077ab51b8626d0918030134b8384c565f0715167b21fab697e84c6838a71176748f12334078c27dda3133bd44abd69bf631badb5f2664f2857c033102ce8284e4b2beb9095cbb40587bbbf457054f4d11bf938af207c1cdc5217b0e9797bf9ac88f3943873c8b66883d2ba5ec7e6696d50a69ba55457853bc526819f1a6fe09973fbd19832312b554653b8441e5eb01884e94a355732e3da645eb849f520bb2bb4327d560612852152f8cba2f77db8d21922da08e60bb9e3b39b9b85bbeb9b1715982d292b8f1017cd3e60447278cc0257898575a0eab1408122bb3fba17b62a31902a567a0821d42086aa6417c259a1dbc93b25003fcdec9f6a5507b4b732a43c444c5825a05119cd089fb2e569f70b4d5e6919faf15d6eea641f5a2875763f42b3991f7c89fe473cc057c148ac58b6c88dce537da8632c10ac851f8916fb7b6ce89ba5053b8d95d29ea5d36c91981042c4aa1330aa098a6ab256ade08592a05c95021606adea0ab637824214009c2b915be450a1f7434ea2c7f562a4fe21139c2652ca8785af3208f4927abae698dd435e90e7474556af9b907f6d73c4ee64897dc74c6a876eba1b598e784b8094232dc62bf1119ef764bd1a3bb2d4fc7de069273a223abe5269a1403873087906db164b58435ef41d7d78b36087062419123c8b1d54da918f34920d3302ddaa300797b32c1c81b82798e421ab2589964334714a75cc84548031d5810fd87890a1932c98bad37c860bb15663cc0e91880af1947b8a26be9183b648b714f763b81652786682c210301852776aa673a1fde470afb56eb0b0114895638c609d8d55585d68c165f7aad64c1406a165788c3364667f0a3c65aa300fc4585e959abbc5e1b316aa108a1cbf703965a74475147a2d323b7295d185571000e43b9120b76fb0105ee7a385965026e8f8309d4badef88b433a59090f88bc4eb4ee2f6c1f0d880057b477e628bc35b023a4c9ab682822556afeb32b6c9088e35c107e2a43506c43a986a0420f5164167519c4029b47bc81e93c1ec149e6083b13589bd2a9c64fc6247ec323b8cb73cb9f9ccfb8bcf25617a87a3c2d8b5158ac8661dfc789e92cc2597a577981e1c300ed316423494735483aed71b9f85903dfca56970907910317d72a309adc2cfb0f062d4cb215a1caf67f4543f499001ec9db4db066d9989b600223d3830bf1818809881efb057a7626ed7948f2dcbb9a1582d6f421e08571655916d3a99b14ca30145e3330b31086d5a039a89ade149c9f362cd03c1919b4abe4178713a8400c0d0a21f866cdeb55b1a4202c79a5a26874004eb8a2681742f5bb97ae578faa58e856a8d186a07826a54c1495503d9180073275f139bc1a3749daccec551a809981520aab0c19c3bb59571e9cc0942799f71b502475397e9508d673b14652b65644565a436bba2aa8fbc4802663608e97a2da50249f6187217e01d5f4812f889b958d2ae4af89b255836795049b87bc45ff47549532c00499964e046191c26bdcc8eff1553ff488124d709dae90df510204f234923dacebdb46e5efa933c693c00b4823e276b5d78af2b336309919168fa38a224415ee61a6f729958f5605d57b748a09993f8c809212393b381f1e7c139844dccc37273488562a28fa232b51b6b22de4c0b4c909a03231078f2cb05581cce12432d44a66ea24ddee28ccb2a20a31130822cc74112686599ced4320878826ca51a9e892a5be735260be64c11697fafea1cfe152eae96a4d3acbf21594af1b5507c417679e6bd85e169319931922631e8042c093a6269205b4e8121fad69ea1f4037282852afcb3ec477cf7d25343c59e94e74eea681502c6939c297367dc3502e21724a77f2535a70d383a24d29e872aca63d9cbebd9b737fb2d565968bfd2a27d44061aa88cee5869e3fc96e337033de554ba4229d9ac62743c509ff3cba9c25e7ce3913e9812a5b9ae281c1374e86f653b7d78216af6f233e47a5b9830c5e3c3b932d2604c45c7777898d9078bcea38138a170fba8b41012648983b6c6e1cdfea72ff838922fd55cf1e62688798b6d425d20f2ab12c75714e8b3ec0028441259ff5aa175184731d98d2e7215c87970141580e91cc6cc2561de55387e63346acb04a6f017c9d7cf7ee39b26dcb012fb59eda233efc411aaecb51a6037ed4ab3dc227a4a977100ed804aeab9f7f585c7f5b76f441ef3b2b5b96434a647012fa13c1fabc08d1b46cd8a05753b7f7bc345847151c4a40ffb19238c122e7ca6220ed8acee34129075aae84b3732bb23257b33892c80309b89a0f33b1d7a4102d55f81b1996c90c5258a880e2aa0e80700803b9a80952316e654cb6c2349a0c88117b5f60138a571250ab0cadf7294457646215ca866487e6b8590fa926c2b5c367d1a234714a733671fe6f8b966b9b96b4296692981bd19b519a4a951eabb0d40751d916f03b3223ae4b12851b0d1e7486543272e71097bbaafce2a82642252d650c82f38a4a40b9360d789e00a3a903b71b6b91bb4bc17a67b864312c4c030127de12552f97dd814ce03ec14ce737ce3539a8f71b369c8947a759d18dc2b76aa0edf820d512615e8a7a8dbeb4d7aa92e8faca354f7192f7a42257b92fdfc017de9016a969efea146d1516316e31ad40b5829c06fac16b2c6d425b0b5aa17623af5a26ee4e0587f6c67dbac006c236f0ca216eeebc201c107b2879a247a60b1a7be7094ac8ea62841cd0933ae00000000000000000000000000000000000000000000000000000041186490472ac37b8929cbe8238e5f6f3994006c05bf47d88f1a5b571caac8082e8541047591efe1847559704339d0ddba611d0ff8017cdc84e61184715c93e2 +ciphertext = d8e28962213efbabc8a9e3efde9de2573855032cecc3be756c87151a368e15e8c734155213614c931c083fa04313898680f70839229ee7f34eefcf639bbd35f3c375e49aaecfcd3b0b506a1708f4d8c26a69a46483c5db50201db95c0de02f67fff0811b43d58cfa1f2a61838835ba909e87e58708b07ed43c69b1cf67655baac003b6dd004434d22bed1aa21796d3c9c1085a2c04ce5c03797023545a1cd0d6dcdec111b896a7b34b36c24be3bc890a65d3b1f9fb96fc56928d456b845ed5b526865d9d588df3a977cf7ad0277c5e02ffb8ab67360d0009279eae50e8b038d43390000c2805875e9978879288c827fc3fd49305d3ccfa9c7fdb63833b5765b21f70d52ccf2802644332f961029dbec5c0ab56ff9fc72dc3df3b97311ba4058eee91b0634459a59213df74385ecedd341fd0b7235b9d7e061746149ec12cb1c6fa8b28bf995672f1c7cd1c01b80d2be48493988f0a43bba9ba45b6098fa8ab08ff8941aa8ffb2b7fcc82b07afa401f02f562d6b4656eb0fe8a3f8c2e97e45372c35a8b97041e4d2bc92302bd4fab1bd989e16e5ba7c315a8a2441c0607368c116159b005fc18504f12c96d557857e35726f9a4bf2c0012453663cea4481f3b4efbbde568664c54c1be3e346a499ee98e06ce2534b5d9bbcfecb804b8f4ce6b876e1ee00c12ca97b90940334d6cc0fd4cd010e3d83c7c4ae91761d8f73d699d2086e7fd635a028b1ed094e50b633d153f71161094b9aa230cf1bc005a9b2591c4ed06ed9b1695479bc67c41b0f7f3e25cfab21f06c4dfc68fdef64ea5b86ba05fad5b8a5316593c9ff8a9f3636167cb3148e97af82869e42e1bb3f110ffd711478427796256d82a665ef33745ea2b949a4aa55ab56e86d2f5feee5f0b203ff6354399a0ebe00c36d09060e467b434db070e77e9a125ea82362dc76cde94202acc71b47777e6821dc477a466caf6ac724761a1ba63020393ff2c33b6c0e14edca3527e897e184509e48424526534c4f2ef34a91a28711c53675eb4cd3c0419c747e2e67ac03ca3015e651dae27bb559993b2f0d20f0179300e5e69580323534d1289117ad6ee3ba03e3cb5f6bae436b9ef634a8c7be8e8c5567c5576657d1820f83c6578385d7911de91585a28d1d4c681ec03cd69081b40bd5143387fd020a9dc5cbd5fce0e8baed3d16ad548435db9adbe14566052c2d8d93d0b24bcadae084ba69ec63735cf19a6d46d534efa4c65bca47ef83f94d9fedd42578f794549bd5331b9aa1a2fce0c6d83a6e392cd4695e13245f8c91f3e76b187c55ccfc0c0a6344a6c89fa6544a86f762df3c59da21964ba4aed245647c56817a600ea3ad3fcc3c104197e2bc7e09fb81d9f8fb7ef559514da710f8093989f51c5c6dfe18cd821917aac8c7e9bdd9c61296ea839b8a54e466e49454e212314f39d50dc762e6c4c5623a88ddd423536aa51007bf6c56e3697c3879fcc6f2a55f0246a032dbbb073a1048f91d0264845c405c5063852cb507e4c9f3646db75c99abfadb6cd50f7a1 +expected_result = pass +expected_shared_secret = 8a746f85a41b6c46e0ef358c9407c702c86fb907e85f86de98d6f7bf7d6e9866 + +comment = Rho leads to frequent rejection on matrix expansion +private_key = ea53a046a53b7e3298d588b38c403e67b5620c5c73a438ab7357660362ab3822b5e774a9dae973c83a96db79b550dc176f9b0182d37f12118bc96a4982249a352219a110704e4a0ddbe545e4f55cfc2c50d54cac33ecb6fcbb3ac2a7bd4e41282476797a3c24f4ac4f60c33da281cb1313035c9c804d755267894d867469dbfac7be52a34f55c0dc642354e52967b043a0e0167c806581b51519e04af675147578c79f492da3ac0748352c6e5c7ff462008cb42e9817155444b214c3b93ff3ae7d44b5c2b659627a833cc18ccfab4fe6d6513dfa67cec499cd7a0d052a5f9ba378bff75033e69ad053c04b74c8cd756c7cc0bd494129e069cfb4358324066415bc2a4d1cb8401867c9954aa8a33f929ca279696cd515bff0abcb6c8692aa9cc076861e2bf27ec360983f775e9f166964d0c43c380366f19d3f868a7e038752d30e389c0c057b6d93a9ae64746d5b3a146d31269b94c7a753412be68d09d820be6890e5db1ec3eab1acb14cee8a317ee7ba0eb6027f13a540b07c12cb1164bc7d295c16eef4c8d9773bd2d32ead764f58fa48abc2a5491bbe00e07965017ebf40c973343704112bc90849d219c70b028ff3769e720c4599098d172674358bcaa8947ba6b874e3d94e623122ffb3984a0b571632be1c540cc5da45ed1c57da1054abbc4456678249a2589544c3dfdb6330ab35416ca49c8046c9446150660b45e05b720722bf390e307445dd8a3e23253cbf633c8ccb098976a68e481ee86b86a32865d9caaf385842cdd071b0974e807710e2b44c598a4a36bb2af048b0fd30bb6c64a539513ed2a5a9c6cb16129cb88d6bc62389b4846a2a0afc532eeb0f055aa85ce7b43f8099cbf194e664c59e683e535ca809d40f72d4a3d5e287b5ca3880d4af1f1523b60c8f811a17b2881602ec0393d54988d63a1620a48ab25a5336b25ca25d5b21425ee54673062020f065693665c68399691748ed8c2b6ea47b89391e7dbcbb3e4bb8bc0972916aa0ee5b90292b23618c5e9a68bff8476fec1c7e382b1cddd45069263a507c44b97663a9c8b4bc690c89d25893c4caca0caa7633bc66f449bc06603fb747843b0a8ce11d46ca100b3243a8617904a2ae48db08ba24bacd5b946cc96b834491a246850c44a0f049bb3e099b3353b28c3889bd4520ce75749b745e65e6442d970e917362cafcc9cd1a6194d9ba41f29feab98320e10234c1b0fa367f7c3a420052a9ace9a0787bbc420832db814e8f86804fb74090146f899a624ee9739ed55c40b3716724b8a8164b8b976130d89e15dc24e2078f24a953b2781b7d36a12334356a6998870a0128ab5152a89ddc84aca3475f8cf849bd762ea7b23bd2d743a9d3a9a2c2ae4723b5c1a3b5349a2d4bd2907d89ab8fe80624838130697bb1d45f873a3416164f862630e96075fbc5192be26755eaa1f33026a1f201a05b6b57ccc83fe9c191b13016a921532c4558b44ff0a26c864c3102ca921c299b38199f7162938387c3598362e5f616756bb5aad68c68e0a34ce96684597712341f391ca6696538582ab0dbd532c7757b5b24b0413145395123f0c4668cd538782b0f65ecc30b687efa78183de47f53b73831210c513c54febca5d4aa88217021609b2499381632883e6c690d720297f130a546b8c101487a31579bfa132c9b06aaf8b6583e633487752aa9fa26551650afe52d67d182bb035848e30696d1be1e56c687eb6387043e28e6a381b4536eb18dbfaaac8f6123ae066ed7568fc1fb580facb933875eea026d182329214cc62f75383d68bccc63788d228f88d17d3aab08f91c19ded4b19a876bc19984075a529dd267b823b7c83bade5e6a782013f8de263e992031e8a32252035e6d292f6d98e022c632d115ef2c60d53e47345e470aadc7816cb6c43f0ae1ee2bec3786b6b159b8d2a958ae567f364c70e4987f237a5d7dcada9066df63018ec4b21f0000f4674a4ca155e761c41c6a54490b3c64c42b2777cbdcc5cce8543a5f9a605e7aac50012c7c2088721d69910f9b3fe26013f45c68b7b04069b9d41555b5d7339c371389c95ca419b77d2c5c1a5b068846972ddab9cafd26308f790ee0a8e7d73ad4c12c4256b237a9659a6ca866197a2ccf39c005c47b4102ebd47607181795cc66a2b677ee68b02a5fa4be222c5f2a5b44436be13aa589044b574997c5f085ca099bfe8b2554ff981d2872a78d6a08840caf9a9051609c586409923a989ab4bc1521b8d23ba04f30a3df77378ce88abf81309de61646ae15e7bb62c8f300b5a7952c5d4881bcc2a81e64a6c612f7c6a9eb8007a2742b4bdc8bc0b5a0218479506c746396867b1a869038943147ccab4a9c735fb318a7b84efd56ed70b05e8a9cd05a650e2fb7ef5c48be6d39222082080b74aa7f4ab869b4e189710770cbbc5a70193597a0282a02445c5f5772750e505b968bf5c665ef2eb79c01a8e12948ddeb641fae4c4e8d7a88d13433611553292910e831d786b0dbf5cc13f77a881f82c98263a86174223184fa96a2c53f1b77c0c12c11c54cbc37776b568b4574b458494ee6b8e0c356a4195bacdf2b11876bfd3a84804a3001a37967b40855326c261d778cb544d346127eb7091821a5bf5eb3c6215b3c7933e05205754635cb4b15a89f827289c20844a6f7e4a817bb140057991858a6091157fde0717bd2428b50711443195f4a9b462eccb9c2325a092439452aaea85521556a17102223a65452c5b152c8b476db176cf76a6575188222215d32b5c08a80e80bb84e7007a350776165c1ba259a2eb06c5a3b36d27ba4b7530a104d2a18cd896dcbabc020a6de3f09bcf24a1e5e5772cec886f5102c71930dc00a07dc71f56fa905cf8acce66a717279ef7718fd9d40864474338c0729f4cae12d2b0bfa579f742c5de322225b0c633359108d8644c47b539d3b6f99cb8bcd42d39208fa5dbb87e600ac3cb1179a63936881748eb99a7bb8631d65dce2078edcc4abf0608575977ff4a805cd81b5679899d36227d1479d25a52072c07e7ac65148559ed558ccb164b9822b5f80575dceb5166121f4ef56c32950ba46217f0dcccd3f4ab8b42b4b0213adc08a5136a404f4532449915cdbcb3fba8ba3aaa7f32a63371f5c09ea1cf1094b205b2681b476375c481a5f336f38251d4bcb652c2a849daa65c827d5163359292b8e4b98a6e6c38fa592fd068197661282d457df84367f5f46815905203d635e9540811b66b990045e4e42532862012ae783c1d000000000000000000000000000000000000000000000000000000666980dcae61cd9d2602a64f618f15dea5431543375dbe5fc600d68e360d30d35ea63afb095b03165e6f3b9488778fdd771036713df7b893ab8777554eb05f64 +ciphertext = 1ea478e56a462e1f366f167cd818372a44d1d0311631d74a6e2ba29a86357bd7e066489d32f4eedb2398e2baf12dc4e90188b81cbd961047889a81c4a2f1c040a4527fef9518029458d524cbdd897409255258a9da92edb0d9bbaac73705614171db771c68532750750a70af8acfdcba1ebd423858b01ce3ecc821f9359c043b37dafb9574c5f4abda2cea0d09c0fedd0cbf40041a613e4de883ec725de57a89a2d0a9ced380acd54bea2eeef2abf769f81d92b302911b4ce0d865b5636372543e218e52c5a1ef0872607e4422a6c10aa77022120ce4875e9b11273281044b5d200a61e3c29a69f177a6fe530399fbfdc4edd2f0aae57102e66a4c48e549afb78e503c90517b7d741abbc2dfea9681ab74bbbe5bab1f25bf4be19964548fe3048cc27be264ad196e837e2e0fdd8475e6909d0d464cfc8df600c1a71523582378d1d70224330c852aa2f70b9536f1768736e95ef8ba0b5f595b683ff8a0a2e691522784a38c44171250719ce54cda4216052df02d164034acd650cd47d465be69399b9a148a5fff2974b7b42beca2039ad52358626e2b8d808b6a52d8b7eae2fd92a7d5b019b018f473b712c2df01295ce33cdb56cead9402adb1f245682d29af706c270d16f63edef39a49e9346a2a647aa8e481e5f72ac87aa5348af2c655c074ecaa0394bf531d9ba5851ec692f577e09918e4013ba53d529dbddc98dc041cb5e11598474f34e5356877c4adcfeda2bc44872ab538b908521088e06a166b58424a462dcbf88ba92362f691ad015083d83aa686147e635842fd2dcf58faf92d94a104719dbf7e5ea19522d395eb4e1092bffabc6aa314de0549381b8ce4b416e102c3fac0adddb2094fd1eea9451d6c14295446606f9e65ddac902a1fcbe65fdda0c1cb5322af2805dbd33633e5d5ed3289bc133983920491728c9b851b46e04c7dbc6a2bd24bfd63d3f5236ca8b2fabd0ae30506c885deb0696317929f3c8aa27b6320ee241d434ec50f2d2423d7c958c6fbfd04b059b3e98214faceb96ed5e3b8fcccf169c7873fb87c1c236539cd1297cbc9f8c3e66408666a678d80ad6e29b85df490fa0e83686aa3261cfa5e123f3fc7dab946691524bef770da4952ce4702d1d854996d9c2e30f8bd88accb0ef4917f3d5f9aa7cc51e566b9f94a3fdddc7640a6bfa0c7b6bdbce57c7fd76102dac7de2761aa971c949020cf11981d55d5a283a1b9943b2692b3a280b6312e32ed52d4f50a38f366b91cec8167f6fe4769f1403ab0750671257194b62b856ee5459d095298001e381d36df7e2c1a5c10241ed4c278d3d477bcbc1973728d7934f9ecdb0ead0d26ee993ec91199bccca33fac5881ff093880b727e2226658ad44c4edfc74b0c3893cd281923724482e1897215d3cad17f1b27dcaba869971f7e24adde068943faa11b45f88cca96997291126523d7ae9f956908a0003e93b39d1b88dabe66ddc777629b8a6202bc0adb7e97f754b0546d5bfdd2a13ad7b316d199b10694de28503e77d6a514e376bea64 +expected_result = pass +expected_shared_secret = 144bfb50c676e6c8efda24b8f5c94e9305dd281e3a6493d877f3face684df1bf + +comment = Rho leads to frequent rejection on matrix expansion +private_key = a7d40e120206cecb9458a1464b96c447db086780708c7435e40bafe1ab8cf26caced91b888711b8b95414e080c2be24d7a622c2e0410fb9c795a25a50554abe8b9049f9890e29531cca88e4284a5bcec559f939061b003510c8a23991cf474ba6676b0599c86dcc0976f3b61cb624954d3914bf28e109193ef1b9efdacace8574dceda34905485e1a79d51c8ba06722150d8a243d69f671c18b1c2a77c990699b72ef5b1c4aaa121a8e5a6cc971178127024166f2593893bf3b9e0db273040b0821051cab28af5196b8937538a680b39251b08051502c2a3d5504f78b767dce91e2116280c3532e9426b93d8cae3e9abc5aa4832c6bfb02a71559bb689f82c22835fb314a5e6d44bc4085eb39ab41555103033a0f4b6aabfc5246c93c07840254989301f88776c06c9f808369e18445058b4d940783d57b7d7901b0d63a6e6512b31a63ce0704028d936462c18eb4bb78accc3dc56884d9837d8632a258c4e998cc536248aacc62f7b9b65191a28a27a1cf44a0d512875ad5112e034c0adbcc67edb84eb000bf3621e7c1c5cad1cbd06f848c5d8c3601b07463b5c0e33cd260a2ec99a972c47cda74229f6292221391f37d20903aa76eb6966195acac6373a41db78b8f7515a473ba04397c2e94a26a6acd8f2cccdc572d4b60e56880fd0295152e18bc79699feb1a0b6f6c7ee19545f4124eeda5755a85d79fc2dddd2848216576e9ab4d07b7ecf77a74937cc1605602c62003dd5abaf601b55ab0cdb37bb3110290f829a742c5607ab24a50000f3191f435427b5345ef884b91811bc44fc4c6de32bdb0a73edf80c8783a5a6b6a2d06657b16104cd62ad847206ec1b87729260e91b2afde6b0f13a87025c10bafa88e1fb1a66b98a5308a2c4f10874324179a2729df786627271ac5a945072beadf878035169c543c0b07acc49241b7feb406f524b71c787ed757a3d48c233bb75d97c42e03b9973cc680169520e400b00879cf2bc9119325586719f22e1b2de163184b2c43735b2c1a8654c92138b90c458421f681136e0d6c417b20a5f8c126d3672a4073942855b127a87ce96c7e34861923b3ea9bc9f0aa277746927f0777814862b0845c3bdc12309241f387cc6f4ba4a9688b947ec8b5603ce88ccac5c35756d0031ab4a5e32f6ca97184df2acb38f724fee64a6a688c69f6b913576af98ea2487db097d7c81dbc2a29a381b2345495160c348e8207e313929dc08412304f6a01c90f6889e23b7974bbd6f081f52dba8baa716b53769e6f71b962156cd44a3f50563efb3b65741aa26e42a3720ce737c7a7ad5c875663bfe36bde03b106647ba1ef098569bc10a0940cd300d58571dd354ca5ef714733bafa4308b3c4b7528862664a8656d16c9c3837355e39072db20af20025306390ef32931e793e33333cfd893c6227215027ab7ba9cc0212ebc749abbc62be483b3e2406a5ca10d7fc534166646473c27979053928aa5445c4c1c26cde40777aca39f5a64161c322135fa176d44b694341a0d3a05de662ef0e1aced53c4ea2762c1333da3f987fac65ea63a17b55c3f681c568d648966eccd095928f2e32af2fcb0674ba3a50350e282c99af149ab1b3f52d3b9f838b1aa8cc52a278678a38ca0034edc7b238f66c60b9ac1f309147c4cc7c78c393ec196c5b04c7906cc476b6931c494d0e4b11187948019cb75b0abdba480d61b6a58f4b8d9158486a7b94c05521fd7a1d0e8ba9c5a9612a8351f1b82c6db939ec326f34c13ba5497d7632e076c363157b156a289486a0b8a1b01a7154059149093a59cbe69ab6d8a67673b808fd217fada63f92402261327f84cc85ab50cb93517f4f3697e7b7c684064bc474ee617363f11711e4a7d5a422f68834abdfc685385877444cfab3b42a5e7649e0893d953b0db408bad47a6d8d061b884551e8031d4d2c207c93ff984b71a46c8c6b8174f22604c4a6d2d1c125117a281d37c2e001bdd6c42c3e3b90ea3c4386a7add997018a7330b0c2745f075ec10441870a890722d003d252923ca79ec870291329795072ed804a8045a34651191e824810b4c70b8a00e2c1504ea929364bef4027597f12a5c392889295fd6526f3d36572470a6b48188602093aebb3feb5b54db342bcd70c7ac881da4874f1d058dc3db26fd736acf9377ac64803a4b37743c6ea55969e13579872a6237d374adc29b5eb11a1d9b3aabc0377f550555d367cc7bc0c1b960a877a80a391aada5486c620f58182090436a8e26ac140292e547031ffb16f33c2a3cd2277a50903ebc67a22997d599a0037bbbe73057ef3296c7d3271cb17b13cc844b2aca8cbb1329b4886472747c026f63a1c4131c97dd8253c2a05e9a414b78c3c4fa2a6003712512310ab9b19090d7cf127b29aaf59923db8f33150fe2c34b0ddb8d3989513fd7b4a10495c9d86927b2cb505863b7bb3640912a39d0903db082ee47c0e8a01ab22b256682bbf6bb69b4b2394fe7aeaa939f4b624906b0c1b67665e6560f82c55b6b188aa7762ddd224e9648cc7c2c2e08589f948cc3f2f0b09150879a47a0e8bc1782c5befd0734120069e83814e34c663f115802b220f5277798076863e54ad0496aaf55baf21b5dcf60aa6ca42ef46c3c30052d7b78acd9e40a7079aa437908495c2506549750704577695f70725ef3eb8e98d88683501b3ac08ca8e5b4364c8c68eb5c7e4c690db96ee7194e5cfab7db691a67914c3fc3c219c56e52081f9ccc592de13ee5e266df71a350a63f1a63aa4984b2f4319e3399b058b4b56528bd14191e0657a76476392e9a5d84d83e87a3009b800004f60f4b4ba8d0bb2beac7362e762b417824e1539a2c39be5db8013060c76cd6453e313bbfe87a350982dc04ad7da459dbfab6c3f52b5a779c33047ab4f9ca16238d0049200d394cf44b92caec54659221e2e6b6078ccebb35b6bc045aaa331c8f29b55f3654e51b0ab20c16eb331843d2ae43749f5632056e101cf2ba7bc2921647aa0875f099cb7ac083ea662ecb0be57c383554464ea40f1248802fb9a48ddb4ba409b6db621b5395720b215efe32c47bdac84c5aaaf05c61c4dc2781a87b00710202fabbb077cc93602df8868756334362d3564baaba98c6c80fa15da5b2c924b8c85c918fa0d18bea758fea9b750da0c37751370b4300a1b6a3d7da6566375155793a97269cf4f87172832aee156ac1f18fc1179003637b3aab85db0b7b4b152b4fba7f990964d56c2dbae99d070419690a7b4293c6f3450000000000000000000000000000000000000000000000000000000817dc205a979273e6bc58838c286506eeaa89ba33d4e1971291f3a4da3a37988bac5e523fc2f73973b46b1727891a6077329e10e94acd027c9dfa38ef4e21e4 +ciphertext = e60755df5f91c38cab8e8769ae6c40bac77397480afce10cb1bccb30c8b8729b1bcb2d6be360089e8edbaa14ecaf528c488704870a6b9b299fcdfd910431cfb7da36eb755ad9fecaa91754a28ef2461886a0fea6c757f8e5298e047d5b61ded088a8c04787d32650a9124ade453b9b233832d699e5a71403ac186aec624d25ae3f8154c9b7c1a3723847c9b6e9f97870e81a6fac4888629e3b81e7df3d8a56f911d1559ff6f5fc15eeedbab77b70231d9e4a640ba4e1fef23fbcd073ae4c1793ad824b5c30287f24c52522e6d315e2d90c7fdf692c795b7634c3d935c98012075e0d263e917aa5c9f05ea049e1a8e8009b65c26d53017cfe5d2ca2212a78a5039e12e2b0490c2238dd693978f1d75551539834a954dac8f745a1fa48218eff905a592d0548bd927a5104185934f16c8c46dfe581f6c6ceeec019c73d0a0c041dce578ec5919b9ccc7f5df84822c4f5e82c0e020c6a9c326fdd74626da86fffc3a1067d3081d3c8ab58b3613a9d0f3013eccf6b3e5bc34bef9da1672bfd11d9b51222d109e5d3c66244d9723a4d4e1be1520a15d58f966349fdeaeb587790e2a0d87647f2445b8673be9045940b01647964e3e611433fb126e5619f8cc96a7f2f6bcfaed300592389ff60d40315ab87fd91215249b911166e648708b3c71f412c2b06fdb3fec91d287dcabe7c33b96318381fcde852017cd911bfb0e9bd09fb481af1494ab51c9057d77cdec4d615207d7637c007d2f2515bf532b7402a496d0687a82cf6a603348501585fe9fa987b47e06393f377832f16a6e3bd2022e45a81174a12de22b2a5af4ec78a55c2ca1488c564af9becdbcf2f7b635d88dfa14caf10fbe1ae4fd89c4d57eb04b35b810529b3fe3aa10d202b14e0c2417b1c2cb2adc02474fb4bc74d813dfec562e17c43fcfc1a35df1008c6bcf73a71e67525c78da2b0c5480edac41f839f8f67bddcc14b92d5a04412327a9e1cd34d5c3f5ef6cd1a59af4526d05996fc049a39db14dafd81d96a8f1b80d77a4f330747dc0bcec5214992dbe7fda726e4d0413ddac4ad0f583018a378c844c56d9ea0329904945cfb4f55cd0e0f4ff2358eed74675791d74cb7ab3ece8eefc771106dc4bccc7525e3118b8fb13956125402b310596c5ad0eea3ac8ef75f8b63bbe11ccdf7aad66d05ec052ed9b54becc2fc7ae185c9c752209d29c76bc02d1d05b693e12e660f18a326cc42a4ef4b6dbde69f4c4676c4bfbfd1bf3dd75c262e2f5ae9b4db247d3e824d1d87151c40a7ab56ad5fe9deb8ab40137860e87fcc972e12f6eca84c284eda1b925a2dd4b36eeedac18f1052f280ba55ce11f55b0f45443b4943fb0fa7354068259667defec383e380768276f97af4a0bb7dd2ef1669e69345d08155a0ea23846dbb9397cbdd023d5dbfc4a544572e82f21ad601f31cb01def894978cdb210b3617e65493f898bd6492adf5acdfcde3474f6aff97a86497b9fb6bfdc51882d3d5a3a35c4c80ca1c21fa3031a3985c7a2e34eadaf1ab6182c1a471721ce2d +expected_result = pass +expected_shared_secret = e3f0f3e54c7a50d4047b6fafea1311637c76e6a426940afc55a432bb7a23956d + +comment = Rho leads to frequent rejection on matrix expansion +private_key = 610c36a286cca4815c657bc2f28b854aa8602890bd6ec2700d64b495b50d049c5963b8294752942d11c1d0182ba6704e54c003b828bc58b6ca3ee0823607c3c00bd0471b4df571c51db3003e4cbe6166c0caeb747f79573f5b8b80d12ca78bc1d3e01a318bac91fc863198afb70cb9256a330faa06639caa7ffcc1248b367bb6b0bd905ab0098b79b85ac5dc083ed43ed8b248dbb72e5ad962b3201c92b132b2961d9867b48208896c11afdd929be2792839674b18e4c1e99a7df714ab7ecb58570281ca80a92f148bc492797564682b560f1bfa42b2f7734047cfd6375d3dc05846da1d3511cb3c8221d38226f29ca52b07471a41764f86ac3418a96aab70fc8454d6823f8b7c6211d216d08c67eec474a3cbad8f3587e22670ae5a9938651f3b48011341b6140ba393621accdc3f606b080579197c48967f1c8d11026d8f90b0697869ea49cb9db086ef687227b2549ac689b564326a2280d8384698185afb25941ba0365b0c1939148ed6e1bf0ef5c764832178d47a01c3573aa268e168b740194a9b36ac2580a7bbe1625900befef3adc6fcb356100ddeac4393d388fe647c3d623d1e6a56a96073bec59f5fa39581245e31aa33cfb865bbc28e9f2498bad34a5bc65c517bb8cae19b6d1864fd7a0c48aabc78d0373a84c168f33ff13a9586aa349a185e3528003e804c8cacbccf0073da46567f7c3ee6a55eba856851234b4f3725e1bb3609e50cd4c9c96ff947c4b048dd7c64b3498d23c234e9bc45230b8b0c797946d0980dfc7bbc5773620b8330262ab6247fca5684c9fb8c2e692c3f654099a7a93d0aae62d24eb594544a81431f295bbca7b15dab7bcf728e3dc61f6354a459a120c371030f3b622569a78762b1cb08248a455e0f0847e1531d194acb0507bb53e9c0e13c8b2f45ab06362be3d9bb58ab6d90825a15211f81f4987000cf74355a28ba08443b3fd9d26b70039955773f9f840207f696d0e7a4989c4b38cb23df626e53b7ccf7c1bd96bc3f68c20ba180a482799d2cf975e0a39d5fe863df954665509b3eb63c257b8c9e39050bc4a739468e716cc289a79053453a28906d003535536439d418736a95763ae222c8870b66f1b5a9978c29d238658a3e773063dab55125e851983706c3ec68d7fb1d595b55292885f758a8df752fd3d97a8dfc33a228c896a44bc039ce1a2069810b1304d44522b1a5e43756cb843b5ef515d89c310f442f585259e5d460dcd578cc51ab49e63a7cdc2566d77e6959a7d24150cf0b413d335efa65385ae13b482b9b4db4ad2518b71704098d7481d2233e2ab201dcb4a1b3604149710de3cb247f29ce8ccb2ec062b014708f397482dae5936bec37663c849c9baa9d3cc88146b88cf970e574694af03fb78205e205435221b32e5513989047e62775f1ba5aa89a10c9d35cb566328eaa5748e9c5057446f96cc691d80208940cfea984df8817d4507aff0a0a96b8c6729329775c8d75935d7624cc0a06ab7a950f2b73ce4d90239706403c0651dda56544ea59bb06a99f00bd698a8c3f127fb4a3759317a05ac244a07342f9a47257e5649dec2c7050188ea669a97c137f707f4e5b4c57945f82c1b0b2040476d73acb54724cba00bb3c06376046b4f295572947b7fc5597b38596655f25f6603255aa19ea7f9fdc5c9efbc5b1343b9d214923121da4fab101076d9144b2881ab988092fa858a407db97248516981a9d4c336df1395c8920496f487c60d46a97368103bb9af9b62162ecca0c023b7bcb71086c1b1ba92efa1b0521b472539b0a87030b7477bdc4d980be20ba45c0aece03c49de971a6f9c8f7522c1a4a6df1225e836640966348a777bb325c4f4b972d484a74c1c743ba88b7d9a3305755992eb5723cc8280aea6ed64b827a0518e7b4cd2cf56bcd97023195a7aca9486ce2b50e35a967da1f8c39c9fcb895cd9895e116b6f58555ae82609fb703732452dd60274ed87adfe293b5a2be5554ba0c455836c98267e77ba6f5b5dd90134e126c703cc1648cc827754c9c2928073493332b6394511e1499c0818866fa0951f8c1400fc51cb9eb6cf37b4a3eb3959ed2af6995c480844291766a66d81713aa6351555068324f84262c9460cbe041598f519c8b387b442a6d6c873508ecccf6b2ae4e89bbd1306f962915a2d759e2e8184df59620d8bd60fb2464ba40188666aad85279423cea249db21b34525b55191375c2f19dfc811d3b77ae56b9366262834c2b1dd500ac17828bcd44c024e90e06e9a7a9607aeaac2c93d48236d114d352859d9a559b9b6e003cbb9a07c65d0a9f264288083609434ba7ab3a826a821bf2db0306a84f386252f7c56011b96fab3b3fe2ea43536a3cd39c2f11d1bc62e03365211e82e4b5287740aac771cd772575c17f0c712c6e1485e8f4cb8e11a89fc4a0296b567e835b6f18946cd3887b56bc4bca9327c52239ab34925c2440ac7cfe6644c9c8058f840143d782ec82793a234e9ce9a2d2f7c96085c6899436cb9c97ba4bc3187b2ed5e622c212ab557bb828e196e0336474e1231ae72f16233ac7f844abf5434d457aef124963c85c25b7414df98bbff69008c27b9f25ab2d9990faba0bd9c00f7d27944f718fbbc1446b3a0e98611af4c22e4ae958ee993f8abc59e3c41252b160de5407a498a0d4f90505da3e90a4b2f8697e99ac7e7c769250a5bc489a74b44cae15a59be7f5922705ad8deaa41d4cbbcde7919c3360e2892914640d19765edaf3203ec950035550072a53b379982b3a3d1d18763f9b1601854679965ba34b1b073809ba675e09997a8519510780b593638dea00cba3598855125ac71c91ad671bca1499037b7791f32fb82134319b1ec041475a238bb5c4ccf3524d613c8aaa096217b5afcd2c4803720b549c8916bcbfac990ada5509c9362488d66f80b2556964a856c06b746a6a27877c0a213bd501b939796ef0cac630705d44e66a1d3c2517f940bbfc711ea1c5dba3a491b61fe4649428c6007052517004416b0201f2440d467733d923277d54bafd729d84e2440270a259c14d88a4564fc9941152b591aa644fc93abf08371ac162b9e180c0fcb2783653e5137a9faa04ba137113697b11e419dbd708f18b2fb5f20409448f31906c2a557da57621ad4242524a8f9f754e199a2b62e87132a33af47166dc614dc7034935c4b21b7c102d71762239c03084bf0e381524a94b6c22a7e499baf0ab6c9bbc8573909c8e99ab09a44e6d3b017dec2cba8b60c13400000000000000000000000000000000000000000000000000000037d9447735ae18442d1b8db2c77e3cd72ae226b0fdbe34ce9a0b82d721e8517de42ed33e0da5856106580e02aacd0aa1546d3df0571d17452d22f186d011981a +ciphertext = d388adf22faa385735ac4630979b0d692aab8fc502ac7f8a0e3561400f8d04a4447cc9ad1003d530ad2f7b5da076b02bf291aa837ba4212d43bfc514ee60a422c07471572340d7fd5fd127dd82283a4e0d145e294841124d0dfef27579119d8a9eda24bec0aedce586026d1107568831363fee0187f8a0bfaeb384bc9ec4282d03acc461e26c4b2826b15943d95d96ed7cb72c53665e19ef8b4641f6eef759a1d7fe860cf72c342b3d3e2fc784269460e0a1ba6c394a9c24db5a4c5f6ac523a155491d149806d73550b2b9f8f00074dd06ba24188a3bbb5f3370f398011899758365850054928429a7565ca5b9935f5e1b2600a779152dac16e78486a716a393cbb917f060c83a5a0cd56f1ce4de12bf088cd5e80e540ae97a2ce2b8ea35b3a7011116c7131aef928c23809b3ab4a464497d4be034543d5ff1112c6ea13242c4b60503607b9f4de544cb49c4580518e15ba51c12518312cd44dfcf39a4c544c71a84cfce3f70b789e4814ffb36c1e0767f15ffdc82ae5f0800bd8e2a973b8f30f34ffc792c9f7db5a91c2e0e02461ecaeaf2ae5d33e879f01475e102f85609acd1a8f0b1fc57739c331c25bf0caccba793b659d90483c220bd9cbf0691c5a4f11fa0c87fd630243a9f6e9d6082017dfc84b6ef1cb1fc793d14aad856fbbe051c724557eac7c8f123fd50c0c8368d48f153ab93da02b09fcbe5a91eaf3ffc9a7837b1e68170cd544057afff19163d3ff479b1d2be4f834a5b8ea082e2e37d9932936e5b3ead4ac83201a504ef4bbb6621349fb473aa38bd0370ee39105c5b635c1b149e263f5513867abab92c00c4019e6206600829f1b3ac1c849139cd4e04247801b2d126bfe94c6c019916247ea2fec03598aedc84197dcf7db900653fbb5236c52b640f1b489d79ccb4e4d062e77b6f9772218f64b02b3c29044c62279f11755791d8600758850cad537800e77d7727a63802e3a256031c94f3cd3f7cd20e10a781a29c2f699a3b4425ba4198d3e9fb3e5fcc726d99bc735ff16e2d1eaed171fe4ed00b0fccd81a8d08dd5d4a6c72bb8909ab98c35e0efaea3e9a4ed31ab0c6ddab06444150d36637077275796802b792354567f2af4dfe79bbc095f2bf801db578ce720e8e4fc9ff772d016bf400e5d330560aa5d91760f3dbfe7c0a175f7d0e730665ac079b4aa29f9b51a20784bee6020be8cd3862b3d992863d25a8215e1169f5eb4cfda064cbba34e1344009b461334490f7261c9a6a4457fcfe7b8536c59a8ee36703e8b439feafa9b4536119b863a91805706dbeb6e79a9aaa8d3c959acd75ed03cf0137546141fce29dc5723db5356661b62a5e2addc6cf479cbb4b6214e44b0674381fcf8d23bff22ab413701d8613cb03e140e85e6c00f75204a6fb1ed29ce15ec90cceaed7e216876b5e5b21b7e99da01f6c2c6318591e57e188548dc9a98e14a61c472d9726cbb09635bf99b32fbad21e4777804565d749b380924d7d5de3ec6be5b4b2cd2b784abc179b478c9237e111ce04f99706bd85c7 +expected_result = pass +expected_shared_secret = a8006ea55b49d054de26ec8780ee0928650ba04f33699616396fbd980d9bbd72 + +comment = Rho leads to frequent rejection on matrix expansion +private_key = cc389888219463a7a5f6c2ca3014accb3bc26f2318f593876de6a49822b6c1e694b7e5aa9140a0765b6334ec762c8bb018d28a99004081256159c836f4f800d0c9aa4a7136fcd89ba7cc1d6a32b23ed181b3fc118ecc60096a4ce8261ea2c0a6ca49baa28b75d1b40215367e6a33a1c177937bf43a70c3889f6aa239e20e499bc7a836694a0bc2912cc7cf211ba20c12d5ec312da2815ef20c8565712b22a927451271040cf4daa44d79705b97993584424e7b3224a5583e5b8eaf640e85015676517113f53a415220fde3638b9c0a38115e668545305ab298b9923bc16de5b9137b30a39a2c8b5fb75e4d1168593a8eb0e067bb9343f1a030e5228bf0b3a49169393cd14f73c2b8221b1267627d80b97d30544b02a4c7bf06099194b2d646596aa439d82a214e6cb9c5ea1ded727c8143755cf881415b6357661a90d5ae759475baa6076eb478a5826f86f9868afc47ac3a02a0e84579a25466a63d933b071213c886790c320416d9422d280745758779635ba6f848440b2489144866e8e018200cb8305b3060926d7e7213089a06d044176b053f3bfbcecac7840dd7844ec29eb17bb2caf321a5b17848c16a678552727a3d70c34f024164b3c4856b0a4ecbc78d345187c6e09f055273bb775078b43ecc534a40e66592b607b56b5f9304aeb048375ac71c30464e979a656f1728a7b700e3b33e5026bf40198b94455d2be37cd65867522b20bddb5ecb7a010191254b8a403f37c4577a613ea30678daab55508b16d6020f074504f928dddac1e8367faf6199715048c96a8fd6bb225715accdcb012cc856a76057b6b72b09a4aeff5b8ba278c54a750596e82bda45be19014e8ff52df181435ed9ac8c402147b539ffd984c291535b7bc8b26c5036352520730195fbaf40033fac450843e808b9ccbf03b40a9ed657f6ac4af8b65b4e389280633d79799e0226b28b356fc2e39f10a80452dc934caac7c3c521f0c5544e7821a403688f08378c3086d3ab8f7e4036ad516778da606204aed3ca1ae8c42e11038a64ec78a5fc5dcd0475429124b5d665e4acbeccca3a296a8e878b917b886ec7f029491c661bba684ac4229cd71373c829055b602db0518a481230345a34a709010a03e4b197273510a0a24465288c327c10c75434d9473208a7964db7792ea81c5fe0c4bd967c3f0c98765ba7d3faa4e6097f09e9bf10638fb900a764e4a0bdba2f19165bd69832681310a7a2585bf06322a3238dd26a4807af44faad999397d4aa14e76c2cad5326ce573d7ca04c03db769dd01a65583ecbbb991e7a31b59238f8741845f1adb5992607184dfa19a9e8840ed9e1622ab93031e2b448860d411a3d239277052cc8ea71046a0b1ada191a020c322d776c6655ae71964d86314a86a47b6a367b8ac5a4aec75677226de0c1864492c88fb70a53187cb76835d5477346646a9da97301156a3ffcc231f9a0da760dac142674e5cea882364dd74fab66901dbb7eaf037008c52073054cc2f94ec845444054058402515bd206d496bfa02c442c746ff3e662b899c34c40900902c4f8ca146458522c6a7af772b2df483f9d840fe07464b0c66fe1036c070c6f70278e9506342663b07529247b16971c5c222e297e1951c5424665e24b2f8c0a98fe5988a202b02db7021b8caf6f390469cb3a3a44b1bba8028572290ad3987c84380706046d3147f2a098f6c11912d204ca7830b49946da095d77e4b55fbc763df31a6731b9bfe871f8f383d3645a44b18e8b59bf1841c48da75a66a1322a70c186d7751853949a83af71494384221876695a35eb526b3431b4c02a00503d962c1e35898cfe9666b5b71aa88309266ac0cb7c50121707c06086e4d7aaa918ba75f2ac0502a43d985eaec44c081b7aac733c065b2af38807477501dfd6a84436bf9609b5ee21c78e2c5ea1e2053853b0ebb570fec357fbd227123683292c58d082b4990c7b8a9b8a15b1a72017844b572eded48d2f902621280cc4d0174e0a04c712b558184ab893bb70b39f7e92b5c3ac61c4e0a4070a78a6b0bed6170a0e07606fd15f0dbc553c64672ca3b8c30821d6973a5176aa2a0343fa15a75d26953b965d64d94b6e3c5873fc2ecd13199f9caee6672847a87dc7d31534870502c3a0b9493aaaa5441099b29a2c0078854e13f15e1da411cd086a12f587ccd03038c049e8ba7532db25d4a855a1f7696a0737c1fb5e2130a4f3ca0ae1a45429a44ee55604e31858db353241d620818a5b9698556833398878825f22a2f0b739d39c07242aa2d349002979929af37c74457683f940e503ab5e475035921abc92b5850b39f6d2052f811a869c11aac93fb6e063e7b495a958670e276e6e64bb63268bcd01064a782ba3443c4e0255e3db3e55ba7082438bc303c94146bc67270a12265eec0637761c47ef5c19fdd22d4685c335146998a4ab70e6b3a9f63c7f95257cb7a7ac216c480568056a825ba6b6a25b084a604349bc4fd668a0c6bccf84db88fbd504aad20b68b67ca7d7c9881b948af06ba3f172456b250850aa03580de5312bd85b9ff9e746fb26c8e3da128e2ca463bb010a6872bfe975947b9b00bbbae5e53cace8380d1c3b34e71b35517764635f1c29be58b9aeb4704b2bd58f81a7a20ed1a0a505a994b0a8e71a72431991541c9b39d4b7de179df2ba5dbc12af93f057358301d701c3fbf119d1f450ba9900c483546e3cb55716ab5f193dcbc6c175697d9403816b263bbb71930f55081d8c945db976ff8b130ef1164d6bc8d0d1b2244a08b5903587932bbdbb7d60a29ec8016c9cd30ec7b81b1bd527b59c063c134340d35495d89f3d46728159874b8cb8edeab232885d635c1e46f4653c70c95aeb0370da4529d319a812c9b9d210f8655222ab13dae5c0f9bc3b6b55a23edc15b132c937c0833beb8058529a1f2a880d7b198c947c65db8a0423848720248d7cc937346bf0e01996032106192c58131335fc52b6817c97250d71f613a0217fec98b713a08998b8932ce850097361f077683147740a8a18cb16367fc1cc8771bb50fa550c667fa28822ca407399634eb42a79250483663708819c55fae2c4cca04ebfbb7582bc84ce27c2796955d334af342589ab196b3d03ba7b58bb209017c69a95672138b526245137265948239476496a6100d9ec7092d931f8009bfff9a7dc22908074c3e41a8e6ffcc199fca488753321467850514ff99606b7a8b975c03b05e3c031a99da72bc953db617dc41d664cad9913000000000000000000000000000000000000000000000000000000dfcd8e31042a2b903abc95630619551d24aaa4eb3a69f40224dfb4ae4538a303c975767ff083234b2979bb109a24a27bca17d170abd8d9e6ad3c3ba19e306bce +ciphertext = 852e70f6d10dcba613c39fef87c4147fbe2af99288ad6c18b6e266dad0746ee662ad0926f4c0ebd669b27b893777a545d12744de0ee34da7b38568eb1809245f9a03547704e353ba537f35d5784c37ca5cbf3696975aee1ead6b376960131f6e73250307390b74a10645cb38c7c16a7bff98324f994e6e3a8d7a0c0ceac903e8be98892bab7d7691ca83233d61a31c2295a134682176787a40a263f9d8a97c9b262ad343f3823739bac811f95014f6403c0bd8a7fea4064454333e8eb63dfff6b3a9afe291217b0b0178c075cf04ee3a0895606c422e24b634237c1ee72784e14af8bfcc232ebdbcd2b493efd28c9a849bf47737e20948ae7a399907b0f2a5ac9ded63aee710a30f76327f3e1ad042dc12776fef148daa0acafed5598650eaf46dd53998e6c38ed318ce56bd35ed18f99a34fcb4f427b3de31f4fd0ce2bdce0f80248ff2370e08cc2eec3e6a71783aba779abf38a8bcdac9abb75d80625bb4420e2bca3cf4d8867bab62d6b884ae9e6f98099458158947e1169685b1a6f7d6f554bffab3dad8488e0a159232f3777cf85d9dd4399a89f1610943bb7279514e0fc3737ef8ef9ba12a4db6d11933db6f57c48b54db03470b0deb7dadbff48d75ccdf374f8bab3b7d3752c8dc4b513070fcd884d94e435e63b4b40c15abf109ccc5d9ab51c4d069685550baeacf37a6736daebad595f96e2f82c5c458a27e129af4dde2eac2a5768f5e4a4970a0bc68bc4d0d32fbc275d1aa988ea425838297722b826852735c4931b97e145be9c6b399bbf4e970c83e98bd5c1be7942c6419b0819e600015ea82ca0d55894b0ace32f24b2652424b85b0f86755f1f8db64138a704cb6ec6f3e2a4a5e708713398101e0cf8d6029ffccdddd03d8a8074792232622e00384ee5b9db3535d7ebb14713a32806861877ed3ad5b293980b68f0408eedbbeee9bf449698f0ecee6635f0a8905d378d083f80a482334d30443c139cf5a1e2ea7048cc4a1829ff36f9e0f674ca22d794c2d7e9dd3cea60318788e56b3e6670215b82acdd4c9534fcf5545eac516261dbe4bb2e7fc38face7c59668487507ac122d295ca90af4035760c9b89ec44f432e8977583ea2da6a21249f667fbbb5c4307bd3f2e47ddfc8aeacb54bc33d1365ca3b6f75c0b50917e2c84849f1898a3e1c76ea67b21143f39d4002026b0e2686908bb9fa502a88c7b5c747f57c13b9704452c1ceb14a5342e40cad9987bfb32c769f110d3d39cd41178e248d51fe7d7f1c55a5f64764814495cf92a4155640a4d3411a74597f4c8571dd0662ac2ccf0ec3a82750c0ba5c3745247b7f09b62dd9c6484a1e0a0199555078d3a750784c96be465053f3e024189cfa2875b3763971b48b5c8ecd155f879f494d9be7f4e27417a6fbb8843200eefceb4334341f8a5a0e98769cc977979b405fb0efccbf442008f7cfa18b28b48ab56682a91d8362b6b5df54db3dcdfa25d4740a13ad8dbe014b210ec14af156b34511896e64d08f37b2cf2a383466351270118846b6fe505 +expected_result = pass +expected_shared_secret = 8da6007bf6e536286b9f65fec6f014680d193306a55d37978cb56b245e256eb9 + +comment = Rho leads to frequent rejection on matrix expansion +private_key = 078bc69561af0cc77acc291fcb063e1d7c82bdd7cc31d5b44d1aa746e261f2a592d4aa9165c2c3755aa457b886cdd55840767f4fa0b19e45410872cb1db3b8b5829c4ce9b2a8969330cb5bba2397119310fa072b7053b35fb135d04977b9ab4766c4c1ecd9695957473f10c679d71d2f6b57db2ab0726022bfeb10b61807d35447a141255bf5b3d0e3bbf5cc3ae74932d87268e172978d78b99daabcb16b44bd578f6dac130c2528fbc89ffa94b48e6785293023e2605a8533a5ac17c15f34b1e30501729a78d3b8ac6e4a329e1006e0c0735c737283856d7cc7663cdaa1610b1045b7423ca8ccb59ca6b1c482dc02ba117c17588809ef8506f09a7162720142e397c6ac0f8fdb02e4c1c557050af941ae8165ae01d9228f767ef1ac3d72f27cf9a2282a6c379a669d01cc0a6c560b21169557b88771008dad62641f435e0780234e86c1ead05f14c0ad68b6b1041492a166bc4a278b0d352129556d55f37ef8969b596c5e41f8597878c8c6c83de675019c022314215eac667a7b559146478a4a5634ff193f6b83673072643efa59c27650fec168ff17109577083bfa8493f38301528f27681405693345e523ea4398055606d4ccad9df967fe59428ca7502f046506756a6b9a78182383db4baf05014fbb20afaf148456126fa393abfc480edc92465d93aaa158c2a8493882b24c564b607cccb2c8f6cbb43abd722c74c2c63230946acc091c48b865cdb33edb712c670648b07c06691687685218ba48648fa3054ae7a6a663aca6aa4e66506516100c8f2caf9c0645f2554c10c480e798b9c96756e42cc8a7f626c2759d21555342548e0490420df3a8124b0566b1804933b68225359cf66caa599c55573b70d488d16185496216cc09090de382d570795efa569aa5bfa8f4a60665cd30d63bb36cc5ac050310ba9bbe4b3af2f9400296bd344cb72bb623c757366ef1369c968578eba52a092dfef34aadf552a63b1495a5b78168cf6e58b218a3ae64310d16734d5e72b2036bcc001ca07533085548809bf114a092225aec9cce6950a953773ee37ad3467bd5ea0b4cc4c6b0695a774781ce17004cd48e36116776db19565367c92a94488ccbf4ca3c3960524d1b13d6f77399ac625de5a2d09954cf867011f79bb4c3682cd40f133a9d67778a24d7cf1a5b71b7b81dfe335d0fc392a8b12b234950ab79cac94776ad1b713e99b0f394aedce739a15334f19042f4861e739c839ce07da145808260b159625b5a742258779440953c743c591659b9d982aa7da028c7eac4390b47b243ba23e8ae4fd9c98042a0c2d25a6688c9ec774cd7e95899fb7f081035b0c4217c2903688ca7e4466e66ac4e3ca938fd58b4d6bb732a36aa8e097fd75976d1200d61a5c988c12702698b1cfcbd93157d3d1c6e76d316b00b4e462588bbf3c480d8374df3cf66a16f9dd2ab721954e02a9f8eea4380c381da230f10c2c7dec02b057177e157cbd5304ab1d8160a323fd5892fe1649c2e270dbd3777035912dc0802f4d18a56356b52946f30c516838028f7f39cc22466ed277a5adb6864972e1063b1af0709dfd60136b16a3d6c863a68895677c488eb1d879a69a5341a695212066ab848609cbe33170cc2bf4fcc4e0ec002da4250cd5320095843f29795b36b634ac922e3796ae428c894b1703332b83d9759027588f1ab2539180b75da984246a745ab595c46ce9852029995997ab27fa2b94e165025e7e7061f2cb35a907eb6ebb0e1d2a29e139f179078dbe13abf1787c3282fe45a1578e5752b6950e7428ff2693c6e6c4ad9b960f024a7e1f41783f7112489112af688b762819b222e1d6246717b730aa9b224ea64a1a45ace60257522505e69bd1b2235f8d71f8ba5b5ed425ffcdba742379a7e1c28af1c8b35994324051d7b46a6047b77762c158fd5977e57bd4f398d4f1a70175897de6c8a3ff6ae90373065233d7c4a0e5dcb8b0731914b37cbdd29148be2649f055df6bb82fb398a630a6c556c3fc442ad78e24bd1406a35d82c5f582610bbae17d118b3f0347bd84f7b8a6deaeba8c698c456502eff6203594966c1f7413a056064d09bdd273b0ce56e506c0cce2267df24a13d7a0cb5513273f37438b568c569681314c3b6db28e05478e075abfdd53cd9291614c2650dd58b40f66b10e3a5cd11ae650aac35821d5ff612d1662a3714962b3411e5996e3ca3b839a58898848ebfb869e9b214635109129c333e931b22d34c63c96a74c3745be124c153512c060ccc6a36d244139f106bcd78808db7cd0dbc3e5b452ec753a643107a5f946b8f319a0fd28bf86c08bd16cb0324c44a0ca5165174f4681b6fe85b21791bbe1b11874270069839213b5829aca7861ac642e4757437742898416e2988c3277f9ce35f82218e9eb72afec300b9e59bd1b10349994bcb34c9fd2b31ff7482ac4c75b693af46a581dd85cf33d21e600bbc2921ba49053cd5d28595799fe23541a7d6b4e4e6b59f761e0339157d5a272406be1a776b3eb2c3d33055626712b304c4e651996f26866dd8a99c607f0a044a4ed4c04eac8122114eb6f567e1133a7d385b4edc71d19655668a86cd64503f0bb1cfdc06d9d387e55296c4a76a71b78e64daa58440264a8a6e73d2bb8c028ec970c3fd7535bcd65110967cff563ee9c5777a465003fa7ad97230c2c76bfc41b5c9d26d9a7c3605905fcd99b36ad5c6ff585513f633b26617f144a3dc4c70cbb40b7c3b8d0331014fbbb7f3c59179d226dcd4758ccc3cab8679085103e8949ea10c796204ae993750104a2123ebb902aa8902b6241be505a9e3a6734191734bba77c969e92a9c0894367dec1f0d50ce5046ad6f3aabdb138f5746a737082bcf6b8d0777b4bce1a9a35b2e0d794ef713736b4966d1322594eb8e90a5af2b42c2d7874296401f4e6a66c088a73580362031c9b0119d22dc9e6b649ff220919d42167f5ab863603d474051e3c424a0f8516ec0652545c6bf0831cd8aaa992c120d2477f791ba1ff56ed2bbc2e39266cf618580b7b19aa94755869d7834a7d4a87e234c25c0e595cea31a8715bd76d3bf5e6badfc4a758d7bcb88b5a018228c234836a0c77bed231a64249a064402d5f0b66276113022b3bca4486efa97103560751b108a5a10579c73c1e06b0eb117ba5a635b459e2f3887734b83dceab3ce9a7dc758265471b795221958359ff3ea282bd2c099436fe3d3c5b2000cf0db36a63123e9c897249130d1d27bba527eea241d8c930ff80d000000000000000000000000000000000000000000000000000000535a9913e52f1282c372204cb9bacfdb259c053eea92cc8e75bdc797a5b16148d48790195fff2c19f221b7cd8637576cec18c29a4a51cd07c82eed4974c36e8c +ciphertext = b931ab298f4492e30329ab86e3d92e6241f72c568f8a2744d493c2b02b8d5d41470f0d73ffc08deb1812a6f4143f97afee2682f6d4809a0ef3e97ac2ae4468a5d436c5549f751b440167f86cf238270eb8c2e3d3d9ac004fb9ef5245d32b4740fe79543c073b41c8a1773f11b41c04ea5eaa467758660c17a6b38cf19b151e9b6c68fc35708be261a9e7cc45d771853132a5d7059e3b6b9bc94755f451452f444377be5821aafcddb7e708fb80f31bf1a89e1691009e1e36b09d754870e24fdc640afb41ac6c4260b68dece256aa9467dfbd29a25ab901bd1dbaf2efc055263f06780a73fea14bafb12f14ea2b6516c97b1a9f56713554b218613510ed7637940272b502ef32c3f99718efa3fac323207da815c6c5d04823dd28f99049ec50fbc590f519d843e0cece45713e42ceffd48dc1b7a739124c698acffd4fcf1390351af06ac1212be3abc5f8a51369c57b0108fc593c5d7185686c6a27363416e53f1d578e7066456e6164c030328ac53c2ea6fbb6ff508be8c2f973d3a43476831c94a7e85de88b71fa77be26168f82ca3620d1024e2bf998340271a4e2df0654ef1b6c9d5a8d95ace50a5f5ca3d321a9286210a21ab97d64066390e287d85345d22f6b42d597c5ca8888c1f871e34a4d1d7e89380abc284afe3f1f7784d47f75c674354825791191b2cbf5607ad26931bc0bd05ad2113d5c93c9e0e71a8b6c69ae4df3383baf71877bd3274de23d68ae57d54e3679b40950c73fcd38c1b8ed7c58f887e5cbc74bd388f77b72875828667b143571f6d0b69cebdf828b49d6f4a6d9dbbdb2188e1b0b30eea6a5b9970962f00f8b8440dda64629988de710a3e086e6a220d27358272b680a91195115741c77ff04c0bed30a2c47422664669aee91d263a196ad48dc24bd386dd9df5724965f2af73bb7a406bf9d17f3485f140b52fdbb06b9153bd96cf0be8ed4c0024571f859c8492ed4d970e700e11360d4cd51b3cb29decc38944a895978824ee94ee6ccb6988337755c07491f43526db47e557636740b393d460b3434fa70833c490ff59aa62e0fdff9a0e664dea7425ee586c29c7648a3ce8ebe5b441f647596af140a87d9525643bd97707cd910e17cec76ed33f4dec0c5222ca182654c8b5ca12d5801ea4c26bc7ab9877d9f838d8455b59c5590f4c602887e219a12077f9639be7a6f5d227d64540f3636c46cbc1461e665f677b0183c5ce13f77d923b368d05030b04c16ceda5d511fd0db061ef3b626e50767cce8a5cc108486e941b7912d944a7a0e0acdf050eab2f600c242c250bcfdb93ab9218a4b495457dddb959e0a8f976bbe147674d5ee92ba71491812ed10fb7de3e607d6ae67344e0a611a6e82a1b66e0528598b30daf398c98d5370e6a1630b7d10d98b12a1470fff4c04a1859415595362e29c3245164a2f1124189c3c0e7b0c875c658fab040c5e0ab690193e3eb1951f24ef0f39bf51fdacd68b65b445266b758dea04de3b3d3137c9445351e9fb80f394b76f24383c49c747e9b15814 +expected_result = pass +expected_shared_secret = 46f591e3c6491c7e12d58a7d06ea5354bbb77337572b70d94e4badf7ce394e08 + +comment = Rho leads to frequent rejection on matrix expansion +private_key = cc4a14e75a6b1bf87f11a240424645dee23657db9819ac274780c2d7d8ac64f2cb82530b40a078791a2ae70aba868253bdc3045b6254c4e29024894cd13723edc7461a37403609b48f79b8e8b1018981bca9f68031dcaf87528a6b065d8cb83c142ba20d68a728a3866ca88e6836cab209ab49bb234312916e432fa51152c763a62cc53da61480691b07a073be74aa6c2b88468bca8302a23d1d6405ddf4aec2f88ab055b18e2b1873862af6539ca83b1c270b6a563cbc7a220cdc8106e6e5595d63a26c0cb86ff11b48066721634b43b361b57a5b4ddb2967d232d34cb750026b362cbd20188260c6a856e9493ae09c462bc4c8663c7903112488b06b2a996dc6668e382e9cdc93e52a1a368b07d8388c9531afff0cc4c07ab423bac717dcc888e213e3a75d69a633f49745bab10f62592f59d53ef19b6a62f0b24216aaed9c91203b7ee65b9d097cc1e2676deeeb576ceb4fa4a867ab7310076a912a41292c658e8f75a98603612558352a5b7beb404fd2bb6de18c7ac838464b6399182536509624e1e25a7821b71edc57c35541cd115ec52c13a739c3de231ada741274272383cc78bc9869d37282f5980209543c92b76ddf99c3d45cb7409b5e44599b75412d8bd122460905c250a94dd4052c0b0a91c9a906aa3652180fba9212046b4f7ad14f7c304780d553f19487b8b7413de732ba1296b41a2d94983d4be93e540a4a4137a030629e97fa640c21ba5b7b5537a03a2a958ec3a888590a5c14a904dd74c83631264644cc6689a245f833530124f7d10e2596a8be227f270941faa75300bd731c145f781cce52247418595ef67c94a170676cda269e51c7ddbc63b6765b010aa061cc576696c84345c35c491d3e4626efc8b73dfcb481c11bbf8c79c6a3aa4e54c43a44141f5c35932486320567ce37adaf5241bfd8c44ec140d30823b58223b02742f3e2bf5864756d528ea36348c1c2293d8ca050b6307d71a20a036e0060697b58a0ada53eee5a6990a9cfe283436cd36a02dcb1a2b7200a267c3f133ea6423bc001baeca953515214e2766f066cae531212dd3551e22bbb1c705f21753ab60a70f364bf1949901d9a0415a36567614c1aba2dacf2c5435b4ee66193c5e461596719790aa792d5a09ac474343509ee36ca048751bd4b0c644b2b039b1320b2294df814b419c3ac55541be5cf4b93593aa4c099142de9e13699a40709d70070aba9227b6c14f216d434c9bc16112b8b4237f838340a5c317a618a91170709bae6a7c13cf96851f72a8761736c452df27758afa4b02fd55b3493b1bbf96dfc45ac743718978b7de8a017eca45dea633dbc417f856781c856c87516429127c6a3d335f162ace0982235ac79ba0ba68edbc1eafb9ed7a3597ca7a612a9bf3ef2b0d1d7c238e98714a434b8b08b35e3885e007501f9bc06e841921521d47999db3ac3937468a54b95b57a2bbe34aeb48ba57f0744021bc684456a8ed413b9192057eb77a5502dbc89c5964c0383b4c9034396da209279199ab5830abe9386b2e811c222a6ccb0cb23732a95676fd5c0376505943ef8bd67a95defe0af7cac395a743bdc3119b1a74771343bad21c53ec80cafd7548ae310293027d62960f8569c9dd09912b200bcb155e7f388139675afca87b0aab4e4e2535207b4d1123062772bc8aaa028597d15f02f1240b3a4aa96c1b344b0b892bd52b3856ccf6ae94028574f13c09418eb998f741c1607461bdb8cf4094c795acada2c015bc2b5f4da99bc85b6715b6bd57aba2d016220ba2db3a9ccf6524474e0c3cf0003376b2aec2b031cc4a224b66e139397e338a8a1ca0ad7c8a8356b09078588955157fee40e4ea1177f7c13261427eb047d14a826fbdba1cf607547a93a61c8a5ba200abcb676deba97fab023f5234b46c99cbbb38f27fb68b0a2b89937be4f61b3bad5446b74542b52048ec9310b1a2c30c25c569a2fba55be118472f6147dd65b171c654e8c3acc53637a2f409dd14b99ab1a772d755bf34a43fa745f7d2a55600a8873a5cf852b1f6356bcbc2a70d134471c7720918528b63270e729472d1093ef72629c521e49508a3e584f81250717f73909e36e231b0883d9c474ea0dd64400d26317fb8569106983b4bc3d0818987adb741d547fb15235811819493c1a92f665352a92495acb6981aa5fe83fbcf620045275017bb652ccce8b748eb9354bc374c131a74854f9a2bba3173b1c4004607a2c975e3ca635737a7f5bd35c8798174f6bc30473c5e700b42a96054de8237b1927f999351f370f1e241d89083ab9cb09a9e908fa82a0a3ec9f37375f30eac10e20ae566b4ebf811513825baa99c7a9265f73b2833808a52a755bb106afce71721e71c693f29b402b8e483000e1a6375ba0848881c817b47d3cf8a2d64a757eb80e02109a8e0a873eda7333e7847902a4f4c44e533a8a8039516549aa7f172579e063d73999eaf47c13d73749796dd022cfcc9522738127a1c984d9d3755c29bfc6b52c08297662e24ab77790c056101bb2916385bf418222d752408ad1843cf6bd80353a2068ca714c082ef86503064274f94065926fc59c107ec5594b365606b20bc010946f60c7516c4e59c33a527ca3229b2cc35459bcdabb9dd8170b1b319571b535d514f37b3de62a906a05bb90320b88b989d3204511a2151bf39425a1572c192d8be2b695f18dff4a7ba7206d4409c9e51c54f5797ff9055837d2459dc85233d3c95a597f7596580a83ca3cd6ced5278c24142f90b653280b54fba3159147cb08095422d4765112030f5a696a628d8a67b90d27762665274c338540d7a32894523bc53dbfa760146b32edb938461c14792216a4b94615615afb151604f31b518c37ccd502709325a2013aaf22ac49a67350067f405809addb023e9a13d6734ce5e71f802a147c191536eccde7a67295bc86322a7fb83308f40a5517b61a790a8fccc469dfd752a45416f352b6eab11f0623551b49a5ec2754a674c1847bcfce66c9f80946eb65a419c06747c2a037a492d11947afac79db877af9750a85652f6b06447216bd69418a86169614e27b3579a8b3b669f8eb8b84c252574c856d91b081043710d0abca178b215854f867c5b0da0266977fa1e75d29d560015755f64b867f011369ab7189a916207c99deeab286e635b4aa6521da156c310cf4a592926b33f49062c94129a9547ae24a7e0bfb6d4f67bfefaa68cce739f46815afe593e8ab3a63a90797c01aab7a5f0e73a2d589000000000000000000000000000000000000000000000000000000b7fed2a7dc9aff1d845fd0f7f86e39a5d5e66f376a9d68ffeff6cb718eac8503a9e4a0d3487b6714e18bcc9d1daeb3127164328a19d5cf60822f3fd37a24bbed +ciphertext = 87147134ba6c085c2b878dd751b77273438b4e9efb50696b22e725bca466abff4ba40a150b68401f043b73127177e579be1d727ad37ebb79b2f5d3ba038d4a8a6b74633f31bffb103290c0694beb9c4cefcf47fb2f33ffb3d8b6126665cee64c6eaf385a816167d149a328df0efd29c4bf324e4f3769f8d7dc784da38bedcd8a653a42b0738661d3799db5c9a8c65b88849d07b27c5c88032a3b090026fa2d818a4e26672fc81a97769e432b217df4c551243354131100947f91df1cb442200a08eded975c39b74da9c22dca588f8fe63cbbb6470e3b029eebfb5ecef2825e834fdcfa2337f55571506498dbf2c97fc02baecd0d14ddbbbb4bf48eae0de95d42cc8b364d6703574a0faf12f72df2482b78b005d800e31bf1492f4250254a0a48990505300d90baf577191d8cb6161a4b39d18c84515f26216af074d110bed4b2af846ae9b13fc485e55f9a72f7347efb147045f27c914a415fffa32ab9f8251a03fc7efef160da5dc25e5b5ff12fd5e999fb7e55c9014a9866e2018d09a4e5b3a3c1c833985e3bfe3cf484a6910248794e636822c40f6a7ba6cc35baafd7557e1000da487574bc7f252c9b82b19febc1455de0b9b79ad1f69931180b47367c8f621b46fc09d8a6d43d91078121956eb44ee1f1548f8d3513a300c626aabe660ae38fc0625ad42afbb5786694b747c65fa38292cd5127f20d8ef0039daeb8963d8639a17a64012357d1612910591faf05e842e23f14faa4b01cb657bb4a4cec7a11d35cc2dacd5556ae116a1dc53a82d1f9ce151a41dd05c953407669f86730f9ffb68478179306d56009f2e937e77995937ff72df576c552672893f1f4021d1be8511ed04d02278c9628b0ecd3182a32ffcd9e37ab0795cb161b50ecd0f97aaa90a9b4af816dcc21ec5f1f54e7170a4167dd2017325888732138e854aaf7e2eeaa964d974cfd3fb810386937e92ad92cb4fd0b730004918aa6eba5b64d1df55f9c2d0d4c2db8188918b7812a71592d4a0924fa67b62e3feeb78106e491cbb7ac9d456c3bcd747db26ebd3b822944bbacb1e742578b35b4d6d9f49efca4c929276ca6015739a0b4a369a7961babe2ac95b3df89214630218182aaff57be9268367282e4a040accded4cb93170cfd765535e26d2ffcc4e6eb6832ebe880497dbe5edc3c724b659727d5aa9b067719b6a9f02616504cd3eddf0d56e33766856b4542132560619866958f8aa54d434d302f9280208fcd3ff42bccfeb450d6ad4f0dad91208d357b2174fa67df22ea7b4b3176843bdd5e581654fef45c16017fee95b92e5a1f33cc6e3eb1db250e7c6485d368f8fe9e53f5c863edb436d7ea007af06570d3725f07213f24989a637d9481ee38e26a4713450d122849990892bb2f95abb6c402053a9d41bc8b9cc9281bc6a45e295997a1523942f125c3f899f9722397dd1678d3d30e43c20fb0f57ba95e6d825adb66ad7cd23c7a921709b921bf1bdf0c22838ccadc9866c61880de260f32aae94d6fb6e5310e72ef8d881c3d5aa08 +expected_result = pass +expected_shared_secret = 05c30333e58ef628d111f6aea0cd8eaefb393f4e1b9ea8ce21c16decc506a407 + +comment = Rho leads to frequent rejection on matrix expansion +private_key = cca22002e0b84e0c0fa98c902c2a30f0d9303a411db91a26576834d4f1645c181bba750c42ab6bcf401739f83fe2a4a3aa1a3f5917418003aed863875fc044dbc99c70b27758389fdd3cce51d5a13b21afe1219f0bab5dc3b15952591e6f80068b30870ed644de082476e7b32d3a531ff8631914c7a5c106a5acbf8672ab4a304afb71b1672cb281438f0fdb1db0f52948e8b0a1422ba10ac5e0a480e87bb844072e7a134dcce36f27274775fc6a8bc611b2a33cf85a4820e18b47b24188030fcaaba998d84a68424c07f4503abb553ec33b4be2af3557aae2797649da014dd0264d00ce74431e46f8969276b24b359c6750c5bc15a6318c2d06898ec5f473380a68302a91eb562fe4f10596012e5efa83f4c55a19912978a6583e4a884e36af1b9367e69ab0566c3cd8c34eaea615f49c094bcbc63d52a21d74c02462cb0bb7c77cbaa03df988b60cba880771a7c179315a9f6ebc6e9b8c90bbf17f737508b1691ef1952363e9499b5007a9c84838c2a149478e4be76c0368a8220b9a3ac68ef6560dba6b3f68257b6719551d83c38f73654fb392af0c1c2517851fc160c343cf826aca2c5614726c774c758e1abaa9ac04ae0742799060970909cbc2f78ca739c71bf6528f0695ea6175a4ac13555c3bcb9920bca3a37d363ba622666e54a4e779cad5059612792d610257a689975fd664dc5081d5ac4586c60e99b9a2a17ac612e5a794ca4dc097a71f72bce02b4907d69d801a22fd7b88f9e4ab284076037a0f6ac803bd7b243b835e51873919d3b77de041bbdb9c2917338f0c42a54ba6f5539d60e827387a9e7c156155d693b85701b53278139b29858785cb59788ed981d77556d27390285bc3f9408cbdc717895815d31641d0c31f2d911515f36743c40f4f3517432c620892149b518fecc80cd2d14c99730e0c940dec155930dcb5ef861b7c80b55c2223f7066b625c9fe5f0cb04f0bcb880119de142ce511affc01d483ac8db8b73e504b242315533d9c02cb64d15445fe32bb0c8e19383f82854981a9ea465b05c77cfd66d97a2b262bb37398cb4654a0fc8146c00b7608f061a216b9becec17f686b93d88309a7ac04c2447030b41ebc6a95fc52466d36dfd461bb046172f3b83fd10bf79c281202a60aed8467748a986100b97742c8d70c8de523c1d700489c391096c1b92654064cb7e35d7b25f29818ff39fa523c88bd69b8cf41689a414288c492f2a83f7b34a4d95770e6144b7731057c73a077a471e7b378fa48464c426ce5a6566e7c862131ebd5a1b3df013641a878fd702d167ae3f369361666514d98f325679c22aaddb56406e148e744960ee1395866acbe095542a6836571959a80238d037260fa053a52cbbc2cbc035e78fa9c306ebcb61ce33422584009271835ac3845524794f18bd7e1b4c034832fe68ba24a162815404f65c0af0944c9789b1d92767268c801a0444fff50399b3a192131e965523bbc2c75c286c96450c3f0733458bad7831205b1b4841a617626b4bee232cd1f220edf53b59bc213a055d956591fc3518a1974582f79a66dc8892ba71ccf7a5fae1c01841428525c32dd2b433445118559cb5447e3c851a0cb498cf99c2d359999fa3964af3214683995edbbcb52acd7830454cf669b608c3cda86752d97e95c16c99b258ae01735c94a7bcfb585f451d58a0673103b203e32f64dc94b301363cf1542202074458b6d6e8cd0076327718531ba40f2543a1a91b0fbbc76a93ba4c6685bba5560a9d6c6c42897fff8594ec665e311ab39edbc99580c35b35796b0c3b0d89b8658a1b140979ecd28e87f135b5b781374a766cc18f1fc03a7a3ac7f5fc0c639a2ffb43bbfe74c709b303abb1432614bb3388baf38980f18a141d502797674d76bc8159a8062c79146f24973d090bd70390961ba5ef62a5575abad1219e5bd2c3a063acca14702ee58a32a593c5236bbd4ba938a339108c8cabf2a08516408444584ecc4124991cba6219c7f031ece14288097ae7ca9fd370a52ed7835388403816bb1bac26d56809e9ea77a788c8d6bb215b0caeda1717884913754c42190cbf10387e56f92bf46209fe448312d930cd735770b6ba940cacd71a04d1692044a1930b0c11b701c851a26c2462b0451930180415de6a1addc504724042bb832faae8576f2316fd718657d7ba8c975f6584cc91c9cef5609a433b6cb1f08476363687944bc58c888a00925cdb862df89cf96b5a9e7948c53a51d02001e0a97bcf4735d99554bc86106f0970869a4470794e20051723f40ec64625ade826bbb9bdf962a0190c708c0946d96263ae580e0968b01d03c31d494bc002737d990bd0252662bc34337b1093b97d084baa73eab8636615a832b7df2a9c6196495ca7422ebc208d6048e16c2390c1c91325a30f9ba64b06911fe41b5ce35f62c1567029018d34775b6a0c8f70081e5c12d0c73dd6693b34e29c6c669fc485c6b5004fa06a7fc2d2c995bc15b477a1f7463d12016613b24332e4729f8784f9024c2b4c2e91a9055cda9347f7cc02f532c3e80620fbb124f0b8da57abc6e421606b2422dc450c5b97ba040d781a0ab4ba5cb7998aa5ab8a0681339dd4b8c1eb77ff830a4e865f36897899d003bab7395f5b580b78b0046014181c640341aa0a5920b1609245f140bc7a31fa942157569096495affa32248c4a67ff5456fd8189b5593412539173c6fc898118b2b98535401ccccc1fa7945eac36bd248cd081925c941937213263c81274bec5773abb1c4607373029c6fa59723b893fde7b77124929361467aeaa1a86278e6b3c47a68cbc28781ad199c68bc09f3538f2933aa011b800f9609f6887ca4fb3857f869c1ac3147a842359065b6a59d999465ebd4228735a5c7f984cc93928d4c7c44ec4d90d55d66709ef68827df87abcdf433f79342ad4152e405ae69f56689747ecbbc0b23d55c5f86b5a699a06df3573d8715c6e667bab949da615dc1f9620dd28d2eb1ae6674506ddb212b315b7c89b050e48fb76a4946b7572e6a187dcb4130c80f38328037e2ae7477bcfaa71efc3531b2438800744116b96a0f48a1e549a33d19b0a05c206baa07345ac3427578650a97ea1150ab66cacbe848d39c0c744612b4d0738075251f7bb508113126a6b0e93b67bef50e07843c271614a4dc8799bcbd633a1879195f570907c05310fc91ae2e6a7ef474c6cc1112653589b32393d1bb6d741c19d616b6a93c2adcea5762d35aa285702882463b1d5cb9de000000000000000000000000000000000000000000000000000000f81db56542740a79d6677b9acfa5a3841151471bedddc4d62cea3558b2ef18fc53f53a49ff45b0ae588d417a63a599670cd391c5e9885c972593d09350bd7523 +ciphertext = 738318f855b7a4cf13603f7cb528da3e04dbf38e61b3947e9c98d96d4733e6a2096a06afd90b4ce3eebdad11c4635d9e1ae8e058908df28e936cd049100ce5b69a29f80ab7e827c3be492bd854d20f9b0788fd3c933f3827add6ddfceb81a95f116d48adbdd6f543bc312fd5fea9f1fff44f97ac89b1695ca27f6afdd4a01eb80182830f4e1fe457f1dd7ea64c496f49b4904e47be3919a0d90da460ce60c8a6d66bc8d3ff55a8a580899eed0597981b9118c7deebbb746d015c8e117814f9abd649d6616bc075239cd7301413c4815eb880f7162666f296e06e4df2349272058d8f13e7255707830e98acc340195c0f0b61080fa8aeee33f1ef7a02e3faad19f1ced92c3941751980f5dd3c33b933423ec450f16543f480b6c3773764cd09a469db5d4fda16c64a0b80105f796adcefea0cf17fb41887e29d56b86d35574aa8a04992160408b6c30bb6370ad3b2eb0b8d772ef1680f1160e4fd3a6431ae5eef86ba8a4550b9344e2155e7606f211e85160642e83a923c76989d5f131986ba424c2d007b22d3efb868fcbdcf0b78a41b59d34c9fb24d3d65b9fa3bb87e36601ce99ecce01cc44bc120e983aa0142e6a56a3a6a19ca75c73185d48bb6179f8dece198e59ab821dbb83c429336e81f90b562f3da63c3fc910a13b8bb04a8e53ec067377fc1f1db752e9b2caf3827870e01f5f632734658a2c69da353959e5f00574d595bcddc551bb728bc13267acb7cade43b21b244a54716ba3b765ae331fca979948ded2c7fcb9a773d6bbd4509536d29b730712dec068353fdcb9d267b5ef0f905f34823a21a1be3df2657a078e678f6eeb6e0ab1c65c034b329421bcbc8f505a58a78d250e1a003d13d928cd6d305842dd127cfc805b02280d6f6146446b551ccbbbac16a4f1316359e5c2b801a31f674ec5a48287d7818f7e8e56f53c77a0004d8cabb530f95a54477fe5ed63dd47bdbc3d3d26194d9a488a909fbd4a3ec97163c7b8fd0467c6bc20d1cfd03046200baf232f6f5a6798300b70c197f1f616d12cdd17691406636fb1094a2e3e4343beb84f9a67146921397ae9be4160c1c81886db504591122ae7c90f1131572e54152ee1a203f521405bb928af9441a63fcb5445c5e9b2afce13800750babfeb6fa88994a8330d8d51061642698f02380d853bf2a57a8eace6b1d52361820342d00bfffc2dbfbbc3c0a8699c5f80fae249dc1bac232383b6eeb243d9e960809fafa5bea564fd610ca7c399c4dbf5000e4386f4700a561450d02d92d8b5ccf428306a9e57eaff931b31a4ca17e4d6a179db2abe53452560649f5b8f1858c0f66bf64fcd440b6384dff5e62f8983d46d924d85a4b449543ef8d5e0c023353aefc8f552e186b84378a1c34375cc28d83a62b04addcd057f4d83b42926f811b2f9e0bdf9d59cc1f65dbed5835b60404c048b386a3d09e0e7700735fdcb124c4238e1874f99703a685645cbd5cc3506799984d0ead93cfdcb6507d0cd757d2c0f1e350b17a1258e65965c2c6c092b6d4663aa3 +expected_result = pass +expected_shared_secret = 10198ed9166d13a1ca423fe3b36244be9b94fe16deb306ad742f505ace69e1d3 + +comment = Rho leads to frequent rejection on matrix expansion +private_key = 16997ff80976d1506b23c012e387ac6ca0a792f7481ac3c9775317ee3ca5267bc7180ca884d28bad6b5a05b045f33a9b975c6c98908d670550b874ca70a77424e48bf097256434b9d9b96c8b8149f02ba5bde9b813eb2b60f20da4440b4cfb05716bbfd86255a1e82941d2816caa7253e7368a4bbf4bf546f40b1bafc65bb994c34f7337e82818021797a431cfc664699bc22b92561fe3d1cd6306b89a36380920abbb466477549d1bf14364221c10f51fc3f7240de4c99b3bb3eeb9ac1fe12bb7c97888e8386da4a341a0be8f78a7b7c49f2184376c3c3784289a6bd9b6a03a110c228f72939b86c7a87dab3e093c0ade693a0e5331c48b761b070476f55cc45ba1dda14dfde01a011776143a4d29d48b47b0c6cd2111bf18360a7438f384a28d772177f648773b961a86637c946d7981a6b9f571a4c29aad07220fe081f1f18700f3c99ef28e76819f8d7c4c43d754cea21180c43357f3430bcbce1fe8952c691cfe9a7483026386a479eee4025a838df5c563b9f5a1882a2d7209a68d231ee82260a7eb4fc157936deab52618cba32772fa1440fb675220f4610d749a5b3b142f31b404d94d2bd816cc4773ec83aa1445a37b361e52b10960827e94171dce3c12cec80a1ec65aa6f117fe937673a78cd7767dadd3cebe0217f13c903ca25d6a681116b206acb46949b18f671a63fd2581a6c0978738460cc51df3711dc1215dcf75525d30559ab6bc52e16fa513753454888189348f045aee8a32e98cb2dfd708e7d42818115e5c61711a0c43e85a13657aadc24b5b30a04a43cb97bafa433204c18536337758c0db6154d4fac670fa3af148b52f24aa731c31f98464ca9bc975e97fd665710ee2c56b024fb8d7c7f4a20cc9d510f8eac38f96129c97b17c890417a21465d05abca02754ac3614e964f1a24393d05ccf5cb9500852cc9231656ca899f3538df30984475209f84ae8b99983e844b06ba4cd8a9640a513cee439ae13ad57d3846aea4fa165b68c6c03c05c835bcc5a63d45cc5568aef94ae7798bf29aa7f38e275c902236e63872a274e4776cf1928c492036166d04eed9ca64aa16ebb4b11fc3ba802c6b249e4b53f90112b587d36c6bfb0733a2ee3003419026a10a4c54c2be294b2031a48fe895c2c9920b3772f127338a865a82c3262dabac113c235d433b90d401f5557bb1bc68359020f75742c2008c2bc8862416910f53772a55376ef05a5eca853eb1ba5ef841f243b8d98b11e94483ad7e72fd7360a3641159e481ca50971a6e8aee73a0d4f24b25430ccc0997c631308fe2aaefcf79af5d2045932043d95933919b21ef87865b8550742a513d67af756c5958465f582983a777e9032ac43164e552358861a0ebc458e55865fc3545fd01b0e7565877ed3229f8267369c319abbb017a87ca662c635519ff418682af39ba387aa38ec37396b4d6ab505219314f4448d0f572f4330cf33fa1369872649c922bcd228c294b3213a216e59752072b8e026700ea63061855be3d6037c0cabe0c21f5be948ee4b18dd935ad358a5885a0331db2e496995bd47c3ff2b679e0abafc02804b6117271a2b00e33bc06250fb30ae2036716d30a50aa07e45f244e1f0100d7493cab527e162b7b5b390723c83ffc170e3e153b16285676101d66999fab321e9577d9f284fc3531e50715e790a2714e404232640de9bb0a4649e344ba2c33977f20c4488463a0dc58c1f71055b353a749a54db7b9dd1321d1f2812ce8a90a503a1e0e36ce0ab91309424b896bca7d39575bb6129e0460282c76b3937313839ad8672d4a13ef0f9c738c3c473f38be4a84de989c745576ad6f3bf7933879f69b8d72b93aff64c3d29292a794db4a140029519b99abd78017e5d84c578369a71089ac7b93c97a114e74a62c98b0b7ad707e60b0332b82af5d346f8373c11c83bfe543d8fb10cb9f128f1509ac3e02ceef44e52070305853fab0831bb05bc4ab8b311a2867a051b2e43a8254c787fd437838160ff13b752255e52a466b8543865dc61a40681b1e74eb7504442e943f99b7a4a695119628dd8603f9ce29bb9ab9202cbc52b78bea806d0d2305b442943c3d812e2d2cf07f2c2df778c6d6794114189162c537a9540a0bb75660548ffc56b1a5598aadc5055067f87d545f87b5bb232ad6497bf5f68110d16530bf80380410b67a47b081587fa78acc0621e70624605456aefd9ae2849c715a89a00332779216a6a8b3418196e23e76f919c6d4476b4ca606fa212258bd520e9d9162b066ac4e12568b532d584cd091606eb9a2f91882daaa2815230bc21ac33e8a8408be21b13c1cf90ab1e6f753843f6b5fd3446f93a2072cb3a94d5090e870ff2d788a94c912837899c2b04598c0085409acd1767214c822cf3579637c8beb94ff9b6327ff47ef5618e70a5bdcc76c287551ee2ac24229507b0d87b779cc59be8cc4d30ae0e161ab62a05c7eaa9a209152f37c798a2b1c76b2265dbcf930b131ad88c65224c4a5a2d1712c2a631c2982bca5afa6029e52824920c3c7b3093988d998001bfa23d9b01c91b111cc0fb7accb88d34f34bb7829192d21923d15faa81267e284b7aa18df181a02932a56dc4662f19148d055a91f8a3d97407ab9257108b7447e24a24c12a65fb1331dc2d06f60561d7bac9c993797255340c6770025f776270742c88ee4a899609304d75b55dd2c303b97cff2871cca3bb9cc8400b930087571dbb4c73ea1460bfd34595650098f38548906c2a8154b4017626a6b8a1db4b2a221c010937fcc8c06d6c7132688e1f2bccc869ca8f881303a52bc6313149b6450de00728808143f438be904c8de5923d8a02482a3a201b050d4b1735867eb8e7bf11d5023668c37c867d156ccadb2c383e113dace4a090aa9c1cc530cd17a94fba6c6ef062eb357e3293b343b169c6e169209b0faf0bbd5e42c3b6c077b1728ebb2a1e44d431f7c34835d9b0021871aac86d0782448d08236d94c0f69a46090b6c5916339baa15222a0496600dbf012c20faab5c7b7613c85a5c759d178c6a9b1596d291ce6b975363e47331b16735db2fee1027ffd018d8f338d712b2a79729fd20392c837fe40b3bb0ec9f11fa566e426637149d9041088419575db0734d854d0a0c769550a8dfb80da3cb9f4a7ba9b4c84e45b3457007ba2f380d19098d4f915023ab00e0872dd6485e1b365802d0326bda7c75e7346b001cfdb5710d1746bfccb0946151abeb7122baa4b79c4f6cc10828771cc9160000000000000000000000000000000000000000000000000000000982bf7a037500daa285465a7b1fc2d22ac15a00c1fbbb2c84d7da1bcb2b7bc9e366c059f5f26e6dfba8db203c5b27beca8fedd3de2664f6bd5c3e2ac9fb3891 +ciphertext = 37abc2d961d3bba2efa196b62a4f9acbcd14137a7253a9b30fadd1455c22014f3542558291c55a8a00cb44aabb2d0726210b887933dd24955282fb51d17d1838b6804186de8130529c251621677d8464131c99dc5de3879df80b5130df5409f0d75526357ceecb0be3bc1709ffd3df917e38680bc53017f934179ba3467674d8231f6513c64f4f06507a2e3d10a4f2e145d759a23897dcede141e5b13b235b274074eb976f84edda05d507b23f248dfc3ee139f4309ba099fcb250d7c4d0eb61ba359fec9ba74186c5956f118c90417931aefd5adbc179f58282a1885679f21d2ca69a30dadccd896b2e84b4497c347a17a9e3bfb9bd8804c3b3c7b689e1ca00d3d32e1efa17edd4c9c8a9c8f1ff06d991142c193489e1de0e4bce1e989491a0e1eb2447fdf301b5f72a31601a119315af7bb534a088707920f8ec8a951f22929f90e601e231b7e5b46e930d19298afc429fbc0a68a6227757b14fe547caeb56826e008786e5cb4d01feb8ffa890612127c17474a50671890c5ea51460973b3944b66295b917f0bbd0c188e37e6d85d3a2aaa1f8e0045a2d954fd6d22a36ea5f6283652feb40a694e5e46d1953de2e17a090d60fc16dfae7b0d0ab5bccb33ff90d13860be15cd4f1e4c12233a009537920f4b4738ef1e5d40c67e9aa6b07f921ed1100a1e6138c779062ffce429167c4f204fef3b6912f3b35eb44c9efbe164ce5c939027d8e9bf77ae311a6df1fdedb4b5fde5aff35dc94bf023048507371ecc567a1a7ffd9aec53e2301e2c8f9660890c61693fa638cb62d94fb436709c7e619248a8ddd71104d4b45f15c1878a847aeca848f7826e319856c09c4418b9ca0893b983734daac815a97985e4529cbc455855122f8754ced61b89d43df961bd6ffb1c6a7a74ca4a88bf7c2bbe9ff412b8f2a41294503425a3c39a64627a41d70499ae7cdee4fbc33f042e7cf4fa04d7f60452d6ed80076dac04c7fc2c8c9d79d7f7ac8f125b3b7b12dc36b6a50f9316ef24843594ff5d0f42e6bea4fd893d7f59d5d219f119cd682438a917c28166ceb2e96cb5d7e096889543fa145ca760827f9734171ca2c46f49f195e38784bdc6890d953b6edc4d04c4cc635b34847563edb6371e1cf168b47a506b324e66783890f5e21780a94f3d0a9d3021bd426a6e8c5c748661cb11ab4e4101db18f077bb973207634a674c7940863cb87481884a173aab7d5929b5a77127299868c4dc275669a1827a16788a0adaa52e85f52a349ebf4bd8f864d052e1b6978605a6d368dac7cdbdfb13f90ea6d2039e375928d8b9fdda278d896d847faa28a9a1723b16af26110922c76bad4154ce7807e5a8f7720b7b28ff4e097bcbc70bb8f7bf25a565d8a81b81f7569ab3e3d868abb474845bc2e6850ae4c3caa887524cb34950f8434baad75e7ce00808f1381d93d6f6f6d8d85c86b55678e5bb819dd1283485f4e1dab73819d8882e5149fec4e34357f881bdbd0345a6868e520c6c51bd9b355765cb129248cec784e7658e33f8929e0d4 +expected_result = pass +expected_shared_secret = 2bb1532ce907d285b2d2860eb9bb5070a41ae73585743b26b948cccd1731ce66 + +comment = Rho leads to matrix containing zeroes +private_key = 00208080e8b3938b09aab715a0b7a09314c3d2aa03e900528a209c655886bf0180a0775a1ee133e543c17d7c24407131f0b813a9287c5c9939d43ba2c1f064015c1babc910d1024bfb46a3fbb1ae13dc5d8bb4576787a592495786a53d4c172cbd3b2cac6a2f5ab68fcfeb2a67a997d809800615c043e4bcc0985de9d671e6e0c8b071a20264c457c13b1f4734f234142e86c23170821d068210b29358694d8ff27e89c59264a315b6591d97d90ede633b68fbc36ca96b823a4bc66144b541cc118b0d60a66c89124d9080ae30f44b9f4793cfac65ab8b8cd65ac81cd95de566ca2c19906a955a04047052a699e8a132e2e48aab916278c49ccd1ca0076b5254784a23f7a8c164229bdb9b46e1c7bd4c74639053cad5226c598918687fbc50323f086238366c4ad9172346626b54ce142053de67ce8867cf599587d0a47aff0a7fc113140c18c40bb31e2340822cac294aeb3a02652b424ac9f1008a592ccf70170246e689edeab03dc0249ba59fcc6477fb668038443bf9a743255310df11b4c90a97bd212a74d5142bc6461a135ce7376995372a1bf919e3db20f22c683f488395a95e31ab13aa707c59f22e85d892830bb550395633f6c87df28401865106b5cffb75729391767522ac236072250c6f4dda196a90bbdfa183113c5fe2e31ba1187b4f682399f3c6c0288977904ab445c0c1b9caca030aa639b35029657c1608e3a654cbc39f8f096414d278059a6f56c8c838b1879b00ceff668190213eb15184a57706bd8c9111667f52a656d161bcb5e7cb8ef5beb6756371ba4297397eb6d0c850aac1e01025001b71a874a25e3ac16450228dc33691b3112de319f69ac29f2a1cdf02a0cd77319931003910331a6268f42669f4a90e79bb820e5c98aa252dcbd056318a050ab71f5d60028fc41594688cea4a95b32529c39c582ae828016644faf4b7b1fa6fd9c305807c43dbba54d44273669bcf956c197ea3462a30be3aabb1a6654dc4a72bbae53982ebb986e249d9438d66b65fa15b723267ce1fc1200bc26656d7c4e1839e02927a96304460a34a9c0a22ccf15c7390afed4a612ef236f9d00c22d04cc1dc362c08afd0a16536985f69f6a15d6585c410ac7a39599c683b9e67a33ee299a5000c7e4acde611bd6c817b1aeb1373835a245b916620be6ce8093f88635cfb619a963c99785cc5c354e5d025f954071e380876408fc5ac7fbbeb4c532b1f1be67ebfacac4cf907be9485c6da8da380809ee102af0c98beebb088c13d29830e7fca4dab8c1e8cc87a3b4198c50686c82626c41414d50878f403c10ac905f39a901405b93366a575338ed7d66c0a27c9dbc4af2d217688dc3909db8878000af307a989234174363f3cc35c25a42d7361ccadeca25a484a01967be2a65bf4998d57943759528d54e498ab18514a5665b87c98339c3fc01baaa2953abc1aba78778b26d54bdb2ab69dd705d6953dea404adf8c82d29b932e144f48a2661dc2129e6a2a1bc5242552374a504e0d135e6cfc9fb91a492e443c608c6e5342361aa8205ac744ecf974b667a6528938b6085492298e97ea827d5a4274ca359a1811c71a574dc986f4262b2e29256c4b52c9a22c3f168988ccca0d849d09133648875d99c8a2d199343e2069be06914b183e36f76206920fbb9294e3f17787c4595ab553ffe18287896cf6452e149cad67b901767a6e37740624d12b4657072571b9ce524780e2374d1b381e211159eaa9e8f5ab21315e3ae48041f50eb75430018199290325406bb65eca0088fc5e0b72ae2522a1e65962afea8cdc2c1ecd1a8efdf38d12ca5d4bdb8ba4d50d5de96f25034707aca01a296e63033a58200f32079cb8cab973026934180857d054dd75371700ad89102434f2438a823048900ff4fbaca832065ad99fecd12a742c286c067a93ca6de6e85304572a4bc2729ee2b421a41316c0bd766087eb2a88d50cb182559da4492a0324afcfc519e0c1c83336913881cdc9504ead243878caa6783557eb26599fc56fa26c6209f31222b7bda6db9b50341f5741b6f029a00440bb1af6b4e07a46ba9626d2a3475fac7bfb2047a9b3139c225c36bccb085a3b60c51a6227230df260d8f47ae6598ae065395e5abb6d5478ee97a9eb1a369ad367b075642997513159a1bd426c19542c86da7de7d626c7828dff7c9a6b53006ce03cd54c4f709c231f70829593358ab2515bba53da61c71c9b5b1df2029fe3404a6a1b7bab3be1299577c86997e48d38a17242e75847a23a8ad5a7511bc87a0261a8ab0e07889a53323ccec92e497c930dd57e43f39fd495b5cc2268cadc2918cb8ca24aa28c110b84c5b2b075c2effb3d44b6351cec34503c94e8aa016ac837f504aff5f68def8c8e0324754736950f28bc4d38bb6115584fb681b1b05f8f8ca69f924d25ca3f7715c72fcc1706f83f8538ac14b79581e103cf385dd8962d012309ce7774c687ace4d8372d1ca7acb1cf8f27545c07b6204140737316cf8971b3448127434156c9a4d35352dec27dfa82bd5e72522517bed633a3686ccb64759396db9ba279a5e967c5284814058a2ad44b8b1e9a7786ec1cd7f63a7ef72bc1f5c35ceba1a0fb934a2a547c86a6e00a51e9f89ff8eb68e3a48e7ba03418072cf0fbcde0bb15a6ec0ae648c012203bd6d83e3dc917b7914ca31505e5aa62875aa96c4b4c5cbc5b368b18f68264cab71332a38680826895d339ca656d358a0d40db12ec43733e60a287ba3998e7aab76972ffdb3139b30abc0ab3a089a6223a04c92a9880b89daa915130fb21ef6127fbe74721677d129793fd035d6fa2a1f1719a710a5030abbb917bc659b57f166304a0474daed828e8145423a87abfb36822d8211d9508a6d53994eaa9053c1a69d03dfda68593b1b9ad2b3cc4591067658f8d62347e022205823942c0981ce6846bf02fa16a8b20f39e1a53caa21a8f8ab4667b00c040228b262724d7a95e1718af48ab870675a4ae537d364378560b4dfba04146381f4977647a333df3e718ced96d66051c3f5c2fadc67f29596c3687948f455c3b7b13e2789b518866968788758c2a172b0de0fb370722571be5259c76b06c101250a49b542375a97907d393328afba0dc21948d96861b5cc8059b5feaab36aed39a1180a2bb11ad797752edb36a5cc98ca13c4e90e48f91404212e9ccd4a76569d661735bc9709b0aaf7b068a09b598c96557ec2695755c53a7a70509d0294a55a1707e040b2a8564a623c5ab9094000000000000000000000000000000000000000000000000000000d4a83033492ea7388d0d03b115ff3bad6b0a7c4970d30342a3e5c3bf11253ab611536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2 +ciphertext = 37fa90752936a8099c78fb7599926bdca1d3ee985af00c51add7e3ff7b282d26b1690f34cd3a8997ead23c2ccdceb07ec9df81ed6a8967b848c406340dfbfb9bfb223b6dc849ca5b1969f7aa519a011e33cf10e641fec3c0411d22508a18bfb316946ff41be61a16a75bff04d87c44f33bb3ff9faba915ef3e94ea4bdf1a6a296bfdaeb3dc50aea22c4ddf77b1b53b753f3c228876c6aaeeafbd5c59d748b5e596535995e075d5e47370e5b0b570408b1f8ca0bc0c6d60099c6a465c5e6600deeca2dffe0eec616d97d9eb534671251956505e1c546975c8f125ef2a50192d5106be103fa8b475a407a1a0452310e8b1d78c1147640e3873ecc21811678c276185f24e5c6742423a8778f5a2d74a3fb7ce6862c5481a079f7574864e23886658b2108891480a481b64fa372d5d628948c202a4232bc0f8bf80ce2eb4f90fa47b6ff1dd55a6c02a41f6a7c68ee7f83a2fa094789ea8bdfc70126de68a61b5f8ff5b92601f97ebf53b3e196fbd595dad44490722147737f54d9e69835a98d42ec10cf1524dff2a267156028a60bef51cda83abb1f5df8a5672aa336c02d6591aeee7a4313b4e6dc2e06404158a0714bef56df074cd290fa8a16daa8a1fc8f49ec7067be5bb5856f23afc6b2ff72a2a64c967c374a7917c3552ad54124633285b5f0cedb49795a20116b692b8ed2b49b0d421eef3c51cb99f7aba701b0387059f34f71b12d8517e7495eb0433b69340bce1c755449f1d08789ef7cf9d0bd528c262178af413d4f40cef52392b87d805a4d88677b1b8275640b066e46fdf1ff25264fb5f4eba7e9e1fc2965a27108bc32dfc4ce565b98577f0d1bfe37471d11c3afeece6a411b33ccee3692f32c22f077401135713e33f5f868ac1852120c170336581521834e762070b403f49e08e52ed0458866fa7df50d8d3b5fa8e33e931313aaeca6bafee1cbfb2743762314ce70fd9fca8fc34b402ee5a2ca330f60725d5b81a6d35e1c41f6d8c88939859e3f48c654dd8b9cbb4e9e0afb8aa3344f6abf18b6f5d011d8905e12f4be7e7d4081573649d157d4cce8b7b2c5e13875e0d2c7dc4bff5e9d436ae112338390acd59c7b7e5a086cd3b00817a1a377681a73531d4f1efc7ebaaf6d528e984d9609c81714efb89b3f0bab8505bcbcdc5535dcea227d3507d38cf72133c252f5b425cb800ab6198ef3b33391bd5043ec17293fa73eb8f3f972e64c5dddc851f50f5c48175117e533c87903f2d215a27c01f6050795109d200f5e39793554b35b2a339695bfc55d1d32a06336749c09f0ece1e197dadb485e2d544823e013cb84a11cf44ac7fb4f74dee147e4fb805059fe67fb1eb7daea7be1c5e7a050236ea8079a6cd1578715d8510a53c03a94ffde8a21507086d007145080e07aad2e7398cd98305536e6f3a0a67f83b16698232591337d0cb465bb13c3570df161e97f6e1deb3b6548aa7ff4a30d145f64f2571bd7f748f3044afc5a8d3e2f01113430ce83dd59b0a627ca759551a635a68838246af6c304ba843 +expected_result = pass +expected_shared_secret = 359de9eb5f1a17bf7215b7c1ab7cc320d7801f826f917755a79f413876973ef6 + +comment = Rho leads to matrix containing zeroes +private_key = c5f6c739c640b093956cfb9d54272b3c704d3b364ff1c68510b875c8c29f30051b5f60b53f6341082252746b8d4eb52b3f77c818d42ac776ad393072d458a28b186da2b61cf64bc6d8b424afb49a3b2528d4863c876aac69b7c7fa95314dd36ab5f021ba8c575ca458c469409b71b31f3a8e371937405067951c084b6a832ab321642c82f33395b0701e5a677c3c783a47d7a6e474af454c1b31b174ce5285e90608e1932493e44bf48b921d6a58b1b86ec2a38b8ba2a1fe884c0fd608af3986270391d1a42843637d75194722d31bc81b2b507ccc0fdb309e59549a874d09239bec5a41c4e9bb48d6968152ac9d431cc3b290371296b8056ed56898b272b948e556926478291cb0eb1bac50b6718e98b74a1777e685b7b6d7cd6b22bb5846c69149b4e7b292a4153763b768cd5a67b65c3d059464ccc123ac086f9f41c3395a56ff3152fe149d76ac2fee2079653326bdd82dd6f66b6687a7fbe00d9832b09135756c5819b1f66dc44c7b32c2496f63cf077ab51b8626d0918030134b8384c565f0715167b21fab697e84c6838a71176748f12334078c27dda3133bd44abd69bf631badb5f2664f2857c033102ce8284e4b2beb9095cbb40587bbbf457054f4d11bf938af207c1cdc5217b0e9797bf9ac88f3943873c8b66883d2ba5ec7e6696d50a69ba55457853bc526819f1a6fe09973fbd19832312b554653b8441e5eb01884e94a355732e3da645eb849f520bb2bb4327d560612852152f8cba2f77db8d21922da08e60bb9e3b39b9b85bbeb9b1715982d292b8f1017cd3e60447278cc0257898575a0eab1408122bb3fba17b62a31902a567a0821d42086aa6417c259a1dbc93b25003fcdec9f6a5507b4b732a43c444c5825a05119cd089fb2e569f70b4d5e6919faf15d6eea641f5a2875763f42b3991f7c89fe473cc057c148ac58b6c88dce537da8632c10ac851f8916fb7b6ce89ba5053b8d95d29ea5d36c91981042c4aa1330aa098a6ab256ade08592a05c95021606adea0ab637824214009c2b915be450a1f7434ea2c7f562a4fe21139c2652ca8785af3208f4927abae698dd435e90e7474556af9b907f6d73c4ee64897dc74c6a876eba1b598e784b8094232dc62bf1119ef764bd1a3bb2d4fc7de069273a223abe5269a1403873087906db164b58435ef41d7d78b36087062419123c8b1d54da918f34920d3302ddaa300797b32c1c81b82798e421ab2589964334714a75cc84548031d5810fd87890a1932c98bad37c860bb15663cc0e91880af1947b8a26be9183b648b714f763b81652786682c210301852776aa673a1fde470afb56eb0b0114895638c609d8d55585d68c165f7aad64c1406a165788c3364667f0a3c65aa300fc4585e959abbc5e1b316aa108a1cbf703965a74475147a2d323b7295d185571000e43b9120b76fb0105ee7a385965026e8f8309d4badef88b433a59090f88bc4eb4ee2f6c1f0d880057b477e628bc35b023a4c9ab682822556afeb32b6c9088e35c107e2a43506c43a986a0420f5164167519c4029b47bc81e93c1ec149e6083b13589bd2a9c64fc6247ec323b8cb73cb9f9ccfb8bcf25617a87a3c2d8b5158ac8661dfc789e92cc40da241478b798a39e11830b402803ee9c4decdca918a7276f2168cce60092c29bba4cb8f532bb209367748599501572dceb9560ca00bc841e442a41e15b590cd63fa7921b344018f1a223e9e44ec933877c330d2b72531729ac91746e26c61381c80d98003265c306040c85fb95be547a46e3c01671401a42237da688795dc8c9acc86208c36911295ad22b05a2717d810076b63b632eb254491a414128377de53f941cc7ea1018bd83cf7e6a76d85211af63cf2ec856e636a9210b04a24abab1355478d132805802725345c43a981c2cc3fb0318db62531a045d2ef57680b547bfdb9d5d356464592f47c2360cd249e73a0f59fb470f4491a9e55d6fa9a982b97ee235adbbd8039beb9f07ac35ee5cc6243897f5c81bd9db5591c7225e90587279b35c5a1c075ca5b7106510559eec9ba2d2e7143c01afee598283403a6d7597a38b01bf1c02582035ba743e1aa20c49983779ca8279bbb53d5115534916184c5edc70ce4372bb25c48a2355c22a5b15e7563554e9a0e6f5afdb3aa3a1cc5b32b67ffc13756d65309dc95d561c91d45a1fe57a83f9c4ae8716bcd8708efceb851e4c3cb3acb4ebc7993d1056a485bacdb50694a81d12dc098d39a1f407468e215f6e055498d215f6f4bb8471121eacb2a324635a07864199a0199b0b6276a8a4e5b9ff0ab9ad13474ea6b2ca46b2c41027644a416771cafa07a1ac28519bbc0888f3878262c871b138aa109966040447484b3a999b7b4a75ad185475ac46ed92a373070e03a90f8e1ba97a91b5ace881377a51c24bb1fa85451cc94c72517f3d72024e7b421666cd3814066ccc5d70595efa756bc3760688123e9c3aceeb270a30a23261ab23e30c7f0785a360e8a0bbf5401450114f80580b03ae0b503419a25861331d58c11ec1c21d47ca9dcab60a56a5baee20417172a4535bb6de18b151bcb4159aab3fe69a31d5adf64c530726677db07dceda5d94a7427c189344027fe819c50f10ae70e550e154bc7e5a698c324096e9cd1e78053c6a05c7c11e9b2b532d19a87dc08dde0c73f0d3357f732c441462c8476e5dc5881d55465893438e60350175178213c0b1d8b503782d786b63c1e66cd3837bbc4c891a364b42130c1864c675097f65b6acab701de01124ded8aef4f70479eb996c5558cff287ce1826ec962bbf554abb282442a1bbcdc210ca389c50105eb253ae05c1477ff0523c85a294e084504616d7f75ce624925dc0c00b9c3f2f1363d2b05cbcf165f365390376b9d1817cd24560604c1512720b09d25a82f7179b74399fe46db356253a8320b393b068f064db6a353ada951411390171b47dc29bc4f05a2bf99aad4087ad54be6602bc7db23ae34b27d594b83e798f22fca1fdb56333374f892487e7289cfb01be4b8b03f0d9c2a589ab101494517264b6ba494cb0490a1871d301483a4c647e5c88be907c7c92abd813865606728bb95aa9058bba6cb3953b012cbc2af7a4770eacb6f2a7b9e8e94833e0592717be06517e9d33389b993a53833f9ca20699cc3dff64995ef914c05bbfe154951b7221fbc779740b86cf59ceb353233288911b1242c579c508149ed71052aba9bb79903e23c75258a445611c9deb185efb25524bd60000000000000000000000000000000000000000000000000000009c1b1fb64c47e73550adb98b72060f295b67b70d01eb99fe6c7c4922ee2362412e8541047591efe1847559704339d0ddba611d0ff8017cdc84e61184715c93e2 +ciphertext = 06f9463d5e9d8718bd3f56e92a41b4147298b758e670e938ccf1b048a6facc0709e58ded8fe9a88a11ff81007e066c6038388b7fe0e5496c02edd8c28509f584b9d58604c7a01f3196f99d3bb5fe1e9a6d2ebb47b2d2e0da69071b0f4af22dcc830745229081c266780c1c5dec5af5b74b9a2355274ee0d0b0243ab75a5f59f09dfcc2bf305f5df0ba6fb24c01c9bfbc38749681dcd401ef1f38d2bfc29ae990835c48a80f56b0869e84f7524f7d469ad2c63aee4137130575cacc87dc8fada26c4b2195644b54db3ebfee1e4fc3f13ab744dabfa044ed7cd099ac836b8faa41e510d3995c129429e2f4c8b188b612ef32eed540915294be069d64c662bd301381a430123a6ac2dfcf2c6ea4eac8dc5b066d7cca6af8f399add96abb2154b9167f57fba21a145288ee90a4e47595738d7c32be27cb1b0e5e16cebbfcf5323bd0b719a641ca98bec4b148128e3fa11963070eecc2329efbe9bdfed16df4fed34cfd03e65a59e20bd3c7b8f012e88b8262473c7a36d00a381bf37c15ee6d709f9f4f0042080d4f67cb6f4777f92a2f0a4b07bff9e925a7d7ab581ce46f055f35c1963d283e4a210a59dad5dfc7a679cd828ad96382046816848b1789ffc84babaa60991082418286bd281947c7b664543af16b8ade454d3d8ae5b416f82cadcd7eefc5b135bd6ed577e8d85848419ea73c3e0ad7276b3ce8773e9881384b9d48ddb6eee9d9aba7dd2a3e0ac8972e301d9cdb0f25893c90e68f2d1ff8ff892c6b59bae088dfbdea3135e74501236e416a01c770bb3c77c3a634a29ee6d99a0f954171078c1eb44d76612d25d7e51fe3756df2c87482a709384825f52dce92884f8a3ea3ebbe219e0bb36327660b1b7c44583bdd924bb4ffd6baa933034e92a5feaa13b3bb8e8e4c0a54ce58f4a48ce0c8baa273e963d74538c55d2414891bcea9789764247e64897c25a8b154d2ef8d1356a77b8a5909c9a53d45d2e4d7362e96edbddf27bda011a439bfefcb09bd46bde933b5375bdcbabda95933f859c0c43cd60f21186439701b7ab4f19c8bcd63ab3adee01ff5c2c47867297297ff823c814bbba614e87898bd0bad020c6f51440037a687bbb96c558ddc0f2a250b836bbb36d88009a2575728eabbd15e3dd14b47c00586f371e8e7d964d2cb7c7acf1bdb0077ef2f79ad0c20e6134b54a8add35540cecb4a1db7bd8bec65467745c2dd4763d7c67d9a53826c42f67176354d472bca647540b404c0e84ab05e4d474dac551f0624ab099d24fefa1066f495e0bda8439291e4c18718ba9ee97c16c385309c0d9505e51ab5651470148223603cba76d767ac5131a13f097a537eeba099a18144692b718cfba31b748a72b69f03d8226bf5f8ed7b5ca93b40f7e64e5a56e6edf2829b61e96283518594414603e7acb8e5cbeee0a8e9026196afd72dd3448ede9819a89a580992060b1852af4e2d3451ff7518f18c75c4e4c453f2d7dba5cdd60f5f4686b5e2ef272ea958867501a3e29a9746bfb41f42d08ab860d862b6c0f4c0 +expected_result = pass +expected_shared_secret = 9cf796413560833a3c2e39edb3f4f4bbe551109a4c0b9a25c42777d7d89361c7 + +comment = Rho leads to matrix containing zeroes +private_key = ea53a046a53b7e3298d588b38c403e67b5620c5c73a438ab7357660362ab3822b5e774a9dae973c83a96db79b550dc176f9b0182d37f12118bc96a4982249a352219a110704e4a0ddbe545e4f55cfc2c50d54cac33ecb6fcbb3ac2a7bd4e41282476797a3c24f4ac4f60c33da281cb1313035c9c804d755267894d867469dbfac7be52a34f55c0dc642354e52967b043a0e0167c806581b51519e04af675147578c79f492da3ac0748352c6e5c7ff462008cb42e9817155444b214c3b93ff3ae7d44b5c2b659627a833cc18ccfab4fe6d6513dfa67cec499cd7a0d052a5f9ba378bff75033e69ad053c04b74c8cd756c7cc0bd494129e069cfb4358324066415bc2a4d1cb8401867c9954aa8a33f929ca279696cd515bff0abcb6c8692aa9cc076861e2bf27ec360983f775e9f166964d0c43c380366f19d3f868a7e038752d30e389c0c057b6d93a9ae64746d5b3a146d31269b94c7a753412be68d09d820be6890e5db1ec3eab1acb14cee8a317ee7ba0eb6027f13a540b07c12cb1164bc7d295c16eef4c8d9773bd2d32ead764f58fa48abc2a5491bbe00e07965017ebf40c973343704112bc90849d219c70b028ff3769e720c4599098d172674358bcaa8947ba6b874e3d94e623122ffb3984a0b571632be1c540cc5da45ed1c57da1054abbc4456678249a2589544c3dfdb6330ab35416ca49c8046c9446150660b45e05b720722bf390e307445dd8a3e23253cbf633c8ccb098976a68e481ee86b86a32865d9caaf385842cdd071b0974e807710e2b44c598a4a36bb2af048b0fd30bb6c64a539513ed2a5a9c6cb16129cb88d6bc62389b4846a2a0afc532eeb0f055aa85ce7b43f8099cbf194e664c59e683e535ca809d40f72d4a3d5e287b5ca3880d4af1f1523b60c8f811a17b2881602ec0393d54988d63a1620a48ab25a5336b25ca25d5b21425ee54673062020f065693665c68399691748ed8c2b6ea47b89391e7dbcbb3e4bb8bc0972916aa0ee5b90292b23618c5e9a68bff8476fec1c7e382b1cddd45069263a507c44b97663a9c8b4bc690c89d25893c4caca0caa7633bc66f449bc06603fb747843b0a8ce11d46ca100b3243a8617904a2ae48db08ba24bacd5b946cc96b834491a246850c44a0f049bb3e099b3353b28c3889bd4520ce75749b745e65e6442d970e917362cafcc9cd1a6194d9ba41f29feab98320e10234c1b0fa367f7c3a420052a9ace9a0787bbc420832db814e8f86804fb74090146f899a624ee9739ed55c40b3716724b8a8164b8b976130d89e15dc24e2078f24a953b2781b7d36a12334356a6998870a0128ab5152a89ddc84aca3475f8cf849bd762ea7b23bd2d743a9d3a9a2c2ae4723b5c1a3b5349a2d4bd2907d89ab8fe80624838130697bb1d45f873a3416164f862630e96075fbc5192be26755eaa1f33026a1f201a05b6b57ccc83fe9c191b13016a921532c4558b44ff0a26c864c3102ca921c299b38199f7162938387c3598362e5f616756bb5aad68c68e0a34ce96684597712341f391ca6696538582ab0dbd532c7757b5b24b0413145395123f0c4668cd538782b0f65ecc30b687efa78183de47f53b73831210c513c54febca513c4781290679e16c822f2246004c38ee6ab27fcc694e665ec690515542eee6350d4a13740b417d1b91883537b2bba248a61108a818d80c5c67b1c3265c124f9e56be2a13129121e030aced4585189d58978cc3750815688763bdb44a0ee46c678999081d42ca342b414cc00539b6d19645ed18ace96a46c2453af3af9b73ad649febba71e40802e3871cb3661c2c7c1480b9e15625fb61c322f0141268583f4c9b19950018c70a55ed500625cb207e9219d2c9cea134c6f32a606393e94923e3fa5729ad2264fc8667d140d232a3b68a93caa9098fe242f99305a0fcb3413ec8b22472e66754edbec064e89245301bbf48a8994d36b4093401943a427cb5388132d3543944e656ae51c72118821102322a8f7246368b5d9e4756fd45d5886477e476e641b10d0f196cb6638f6c30ac2e6ce57230d4036cb23d14e8ba30d66e92656090199f1652003af17393b1fa912df25b6fba7bb3fbb5037915e46c8217cc88142e14622f028fadba21455b00ca96b2d039663f0aa6d48b0b5b3672203b76330ca4a14434b877cf83a818e71b97b77a4eb99858542b316c809f1630f9bba7e00a265ef2b6b2aaa45611726e1ea7d96a50f5cab524b138288f74b8575256fd7504740a256e1bf34318733f6b7a53aa30536bf0e5079e5b0395189262027cbd497c350b1ad89f4aaf88b219de48801c7bf97486824a7b7bf723f516293f2f786a6989a35c192eb8b009fd37f950cc6e08592a1350c680952e92887b5759249cc70bf477277cc18a9e95da3579bc4bc42761c505504372eac4cee71b4d82c787356983380666b3718b288948372c11fc855b3950e633a70762490ca13c11c6b824478a293f5161c782c4ffa5fd0a64b5522c23979b2434ab52b783a37098ba2da100da063dd3191c29c12bab3927ca721263cb518924483091070981a902518df41ac1280bfc7ba2f2703cfe2f8cde65427818215fe57b68669ca97c977af38845433295e770c4bd4cc308cb203d823c84639cc9496d31424ea778b0f215430437deae7b8c6906bd4fcb589d251b637030f9607e9bba487fa0fbeb9545eaa8353c738a9f02b78e19774b84ab8144f20e39c62a16032d924658262c75b91e5a471ffb95ca40b5c1d388be8b55e09f4980a274ef5a5cdf5137c1afc0325913bb1ac608a210ae92220f4a47d8ec6806dc6b5efc67ccd677d5be615bed15cd76625ee4300f1e8aa9330952d49aed6b14c8550204d2c3c61828cbf36322fca4faa3190a6635e2f0809f45b5064929c14e0762d62a3c8839663fb8b9a135b715440d81836bf40a6cae8333d4496e4703b4ad50482e8ba9f5163838271bfb66d1fb462d51418e2792cc7370f7806d0ce7b7b4a66af2af770f5a253c46001bf82988a4c0c008b8bebe64bcbca680d3136e48bac4f030cb495095af7cc418b3acaf95bd6b636a4f92dec211c4b2b4e8bb90969681c61ac380c16ce7dd0aa3236957415b29144737c5b9124575872950a23c5315bd3b0ccf2a608e6a0d3659cd1053938cc1e68c131095cca20c4b2b358c65192b3d812cf73e820f89ab1c5b4c4c2270e7b465e2253c179d312bdf77f22252d3332cf685abeac1c4026f95e9b9b79c5a3842a49b4ac59000000000000000000000000000000000000000000000000000000fc068f82a15745766e3ec7df374ddf20df18b64e7ff18bd526fe226dfdb92d545ea63afb095b03165e6f3b9488778fdd771036713df7b893ab8777554eb05f64 +ciphertext = b812896d14f191fba331fe20ae245f968a421c46ae8e3360f380a9f0a00d50da4247b232f5181ea946b494e9d99f82e7fff27d8ccbeb6fa8dd5e12f12d2afb02004f2bf046f23115aa3f7e9e5bab06803c4df1d6a0bd935c882721d09a3b5c41050afe0ae3706fc83f87c49fcc22ca331fedf7787ab7ab0ac9f04fe405f21d3384b1f377332feebd65e11d7989f56cf7430ae8441072a4a8e9c8be24a4a1fcf380dbc0a8543d2159de861281493516d3fe7f0819da15d259aa2159c37d325c884217a03c83d8f4d5c1b9f2af4e734aca05ed1d3951d3bd5c021a4e81069678a210ee5f5c9404b52ffa495ebe6b05cd02cd84ab3f3795793e03d26e83a647921c2c970170c0ecdaca8d2e5c469b1a3309e46dcc9122623b6f41771131db303eadbd7b7df5c86bbd6ab0060df29c95a0c014da4939271a98c12ed92a91d8b3a37e2236ba269e7df73f7df2fe447a20bfc56e6b9249485cd71a9fc83af54946537872649949b49f3d98425453fce02defb6d09790322afe334c53ca802510a87f543264e5bbce4665564d23695a08161e28db4c90bb6bee38c00c5d3cc2e403e225afe39ed45ca3c23a35e64769486e4e38b122e3d1bd2bc8d1a38f689e5ccf26db07c8b7c14b19431686ef783382d02080b9221d2a15b41db02a63db7b5396e4b516d241ea0ba533c6f1c90b67d0e6bb2bee066015dd7c42f0226809fbd81a8a56630b93aecd63bec94c168142bc64f0086e02ddeafe7615192575e74e174cf7e2c4df95b55ae810d5cd5cc706605800a0417bbfbe3097890621721939e01e51f46dff10e0777bb93e0b87e8fb88c5100b47ea0c1f356fe669ab2ede1f6eab8a52b45815f9698e86baf38c35ee99f5d3613be4fde9febaa6c33f3a493a37eae52530b8ff0282671a01a13ab74b547c4bd7ae87666c20f857bc4fdd2eeb15a09722cf158083d7a31cc13dbc53e0fd2b2957f5032761e777474f17188835bd79090087ffc0ebc01af02e4d0e0be1d532eefee9ff92afff8cca34286cd6e9c03b2c41b2080484c725afc5aa3c76d4c807e8c5beadf261061c4df268b4d4e6e24ea68f2fa085153d37be084e9d69d2bc48c819f898ab482c0b80659ff473e8b186cd5304c62b4b3f3b714c628478b8a29cfc5be37773cdcc4558986d29578b5dd087ce0d989a70616d380c3c5f68410b3a7a0fd247b7a3d9c9dec0e8f13fb1fa1e6cc579e31a202afb994d6fb4e40e6377dd2ba3247e5150db44d4515d31296f00bd2ff2838d5070821396ffcfb424bdba4ba3e9bcd2e02fe85f5feaeb0106fd8270a47aca634101102c08dae778d40d070d1ff0542414d71a7dcacb25536b4462014e5093710ead409aa1ba2c21c1716cfc4f1091aa39b41c28ac9cd3293c00c853a267cab452473fac0c84bbfafb4e2754a1c1ba244fe1ba8fa356e78f89a94501e068126acf20ba176586adfc0c03535eb6fdb1ddd41c6272d0e8c49f039dfccd737c284351ce14b2f7e0d01639d502d519fa9cfab9e41632b79353ff861303508f +expected_result = pass +expected_shared_secret = ce303d3ea30cdad19af0a9f428943317278b22f4c7c229aaca25d0709b23e6e5 + +comment = Rho leads to matrix containing zeroes +private_key = a7d40e120206cecb9458a1464b96c447db086780708c7435e40bafe1ab8cf26caced91b888711b8b95414e080c2be24d7a622c2e0410fb9c795a25a50554abe8b9049f9890e29531cca88e4284a5bcec559f939061b003510c8a23991cf474ba6676b0599c86dcc0976f3b61cb624954d3914bf28e109193ef1b9efdacace8574dceda34905485e1a79d51c8ba06722150d8a243d69f671c18b1c2a77c990699b72ef5b1c4aaa121a8e5a6cc971178127024166f2593893bf3b9e0db273040b0821051cab28af5196b8937538a680b39251b08051502c2a3d5504f78b767dce91e2116280c3532e9426b93d8cae3e9abc5aa4832c6bfb02a71559bb689f82c22835fb314a5e6d44bc4085eb39ab41555103033a0f4b6aabfc5246c93c07840254989301f88776c06c9f808369e18445058b4d940783d57b7d7901b0d63a6e6512b31a63ce0704028d936462c18eb4bb78accc3dc56884d9837d8632a258c4e998cc536248aacc62f7b9b65191a28a27a1cf44a0d512875ad5112e034c0adbcc67edb84eb000bf3621e7c1c5cad1cbd06f848c5d8c3601b07463b5c0e33cd260a2ec99a972c47cda74229f6292221391f37d20903aa76eb6966195acac6373a41db78b8f7515a473ba04397c2e94a26a6acd8f2cccdc572d4b60e56880fd0295152e18bc79699feb1a0b6f6c7ee19545f4124eeda5755a85d79fc2dddd2848216576e9ab4d07b7ecf77a74937cc1605602c62003dd5abaf601b55ab0cdb37bb3110290f829a742c5607ab24a50000f3191f435427b5345ef884b91811bc44fc4c6de32bdb0a73edf80c8783a5a6b6a2d06657b16104cd62ad847206ec1b87729260e91b2afde6b0f13a87025c10bafa88e1fb1a66b98a5308a2c4f10874324179a2729df786627271ac5a945072beadf878035169c543c0b07acc49241b7feb406f524b71c787ed757a3d48c233bb75d97c42e03b9973cc680169520e400b00879cf2bc9119325586719f22e1b2de163184b2c43735b2c1a8654c92138b90c458421f681136e0d6c417b20a5f8c126d3672a4073942855b127a87ce96c7e34861923b3ea9bc9f0aa277746927f0777814862b0845c3bdc12309241f387cc6f4ba4a9688b947ec8b5603ce88ccac5c35756d0031ab4a5e32f6ca97184df2acb38f724fee64a6a688c69f6b913576af98ea2487db097d7c81dbc2a29a381b2345495160c348e8207e313929dc08412304f6a01c90f6889e23b7974bbd6f081f52dba8baa716b53769e6f71b962156cd44a3f50563efb3b65741aa26e42a3720ce737c7a7ad5c875663bfe36bde03b106647ba1ef098569bc10a0940cd300d58571dd354ca5ef714733bafa4308b3c4b7528862664a8656d16c9c3837355e39072db20af20025306390ef32931e793e33333cfd893c6227215027ab7ba9cc0212ebc749abbc62be483b3e2406a5ca10d7fc534166646473c27979053928aa5445c4c1c26cde40777aca39f5a64161c322135fa176d44b694341a0d3a05de662ef0e1aced53c4ea2762c1333da3f987fac65ea63a17b55c3f681c568d648966eccd095928f2e32af2fcb0674ba3a50350e282c99af149ab1b3f52d3b9f838b1aa8cc5b08c45bbdb5d4053b675fc7ffba8cab1f105c8095a0a209c4f16447198cda9d73c62bb98dbb3c86e8761978bb77a5c7a28f03f10d8558cab3c71d498429786280383f944b75c7139e533bcf7019fbf953dcc00c884446e8bc3ccf75b3dee9190526662b33527600296aab664ef58c5890111c4d1c04262ac22985181c80f3906cf11f38af489a75cf5596757a8ec56cb3d3a7c2594441113c427f7b43a019ce1bb1756a9223b8b15c3cb649e93497fb34ed17b7c4d185ea1e9a5a6dba569f1414aec8bacd1adb784c714a7b2b89989bab281eff81ed093373d5c6d3f36ac3952aec99ccacdb0634928668264bc70303fad4a746592778568570ff75585422bf3cb6a6960946432928a0b39e5bb017840c7c4d99b8b25a0c76349766b0d39f7076a839abf883252743731b53c3f650a32b0297e806addd02999d61086362322c840d8dbcd820ca008e5ac150b7932f081491415c1c3300e0976e7f9c14fc045be34983ca26b71690d216989a01b03b6930fff0964fdd98b2ac6bbc408d0731a501ec87a93e19096fa3161870bf7964ab5d6a5ba764ed8206815d83045b24db9a9483bb776dbc3ad85435d7cd449248c4058e3568bda4e41061ee5f0bfb0e29867491bf796140e8a2194572c23f75922c4ab0014c9ee5a98663ca78741a4b15335d14a3fc92a24b05b5233a43914b274ad531e94656309249f79fc93c13652933529e72690e1b8b7c6a21c756614307229135977fab1727a497617c695b9299d81358354c9962d231183d8512adc5f10e56a053610cb042cc4fc2e485099b973b320c090a4459f8dc279beb9568f840932c77d28ebafa40ca22bc60adc785449800c8fb71e80ba9a67c4383049b36fc89f0248a688298453e480ec525dd45803dac94ac380c468ac2c85015560965b7c7838e59a8f90cab718246dd4a0578fd41438e09716d3530a3272618b191c521887ca38aa8c994c93820f78673f5cc95ca93e3eb976946b8785ec3f12641d41f60db3085931aa365970190b93c37625332fe92e4532519d8825c46200e8b576592ca557794e370144d378a62e5c54cf6820f1671934db0b6c47ca8d302bf18a8b82152926853df7d255da51cc7a19657ed77377fa4eb8b2a929b46ff18910d1832b71842cffc3849a66107702ac7a86630769889fd90d8ea22788805876321ca2158ec7bc878c568822c0bfa03c10c9f5b5a8076357c6b934b75617a20606712b0e8cce40f4ced0d17defa628bab4751e56b3ad040be6e3264e6011fde7c4cebabee0701c6023c218d07b47ba4ec811b286ec3031f5254302be6b776666897b3062649252c5f7c1bb0dfab6b4f13155c91f318963109421a4a33306eb0b66da38fdbb541bbb3e2037c1a0d4493e0878aba23e7138bee255b3423009ecc8920a3a4b86932167b1affab27a8821598851bee698665a2130816b66b7e81842819ea1560a0c5292be2cc7d5428aaf3b7ef5002d5145aee9a82c9d44bdd0842adf54b38d9213e904052905adf3255828147fb64960c9167b17126d61b05007c759c938cd2086695e0636b25b69312a70235b6e201c23e2f9a9ad696716f53333d004fc663d5c0b0776f875ad988aa6c6230218cf6806353409000000000000000000000000000000000000000000000000000000c624c0376c3309778d9aafbd0bb50366caebf7b7b46b4e9aed69b929a277342e8bac5e523fc2f73973b46b1727891a6077329e10e94acd027c9dfa38ef4e21e4 +ciphertext = 87099f26e8493f157e405f8cbaf679f5fb0aff16ff9e2c2fa8c263c6819287da7484cf93e0a6cca4d0a94d0f710081c0bfab292981dec83558b651abca873980d077e9febdfa82398896e88560e805948d84ea38cc77554e9421dba3a85ba24f3328ffeb4de0bfd1da900412a71903908e3b8cacf00ea86f21e4eb124167b3ec769a8a22498ec6cf26cd4b1470e95c37b3716462929ddd9e247d3f23b98b3efed529066532b8f6042ee8eb6ad00233329e0b634e300ec2932fd6631b1bf14d7e992f54b985b51cf1b05f5ce7d9f7458bb3b530fa3feb7ca1a72dbb8c4b01c0f03d8b45e550514fa4fba32705c95316960bf50d64e3f07c48bcdc31265f0fadb5f348799fe0364c93765e2bb4688704f3027e69689861dbbd65bba05f158fd329c5474386f9ad7afb65b297004664ebf3cb7ac1e8a34e33ba15ac0c92e7abedbfa96fe4c68ff6d7a4d1dadcf56824285883d74370e2840cefb887b7b934fec461c50781dfcae2bdcc9983e0b34c3be81a0dca5ff0ac834f5bf71b4e6135c79c27a525bda87c2c1c05e5e2addbca7c43e49ad11ea240cb09bd77d22e7e9d0ccc4d638feff6fe9bc04300202313197a9a53b99e67e96aa72ebe3200758c1f17b05c0b793dba17278f3e79563a532161190eb3a0724524b210f26038ccf08d55c0bf29b95917c0bf97df6872438b25d6d90091ada34b46ff2df784370c8bd3a523687902dd9a1d70f9aa9b1a06dcf4a1fdb740ac3a0c25c3840bba2e5c6cd1dbef9aca23d5f29ffc00cec2fd9dbcc187cd2d3c690f436e6265f8cc6857b3ddc1cc1415877d83d80337fc4c4e38808b9e05b14173497330077fe4c38699523491d4a3248e5dc4c401a3a29054c924c744f7514b7a84e91ca6cd2cdd5cb51c4ab4f2dd4aa0027b294b299896b558754264ab10b0c0306465ddd4e88f2e42b580801746452467558d3238d21a74ddefcbdcff5d79886b101c57c0d4d1bd4af284aef20f558928ae0768a07f397c5f9f7f334a446755a22549cd7fb1efb14bab48513e52c454e57c381518ff6d3d02278abc01bd0d54d53e77d361bef85c33efbbfb295bbe3aad332d5131e8cb5cd90a960bf2d429524b45abd686ef95882ffe6751da4f750a367fcdf0e807fc204834d6957ba8fbcc0e9e3d4922c45085aad54b08934e0d909b334d3952cd479931c75c5f4aa1ec286099bedbe5ec17123384e83dab7230ccf5fca4f085ff348197d837b752c2bab7f0fed29e6347624c51059a48dce7f4eebe03b5bf9b15b13ec85e8acdef861fbf93f17e377e950dbe9d6cc96ae83e94a3c5848dbc2ccf6090882f048a174bc42107cf9bb0df711551e2d550e74d2d416453be7fbdae5a24ceddc7dbec4329b4a67d187461ebcbd9845c5ba04967ee59da4bf822460053383935cf1bb1766a7ea5568f16ccf8400d9a73fc86a7570742d76d4f52d20ec80b8ce2a937d53fe88f60bd3deefe27642fc7cd7d79cbc59fbadef2ed189edb3239a948aae68bb2bccbd42c872dabd7a261625af4fd0b92c1 +expected_result = pass +expected_shared_secret = 53865f61850687872fbe708ccf896f7f24ea01283510faf76481abdb0cc17e89 + +comment = Rho leads to matrix containing zeroes +private_key = 610c36a286cca4815c657bc2f28b854aa8602890bd6ec2700d64b495b50d049c5963b8294752942d11c1d0182ba6704e54c003b828bc58b6ca3ee0823607c3c00bd0471b4df571c51db3003e4cbe6166c0caeb747f79573f5b8b80d12ca78bc1d3e01a318bac91fc863198afb70cb9256a330faa06639caa7ffcc1248b367bb6b0bd905ab0098b79b85ac5dc083ed43ed8b248dbb72e5ad962b3201c92b132b2961d9867b48208896c11afdd929be2792839674b18e4c1e99a7df714ab7ecb58570281ca80a92f148bc492797564682b560f1bfa42b2f7734047cfd6375d3dc05846da1d3511cb3c8221d38226f29ca52b07471a41764f86ac3418a96aab70fc8454d6823f8b7c6211d216d08c67eec474a3cbad8f3587e22670ae5a9938651f3b48011341b6140ba393621accdc3f606b080579197c48967f1c8d11026d8f90b0697869ea49cb9db086ef687227b2549ac689b564326a2280d8384698185afb25941ba0365b0c1939148ed6e1bf0ef5c764832178d47a01c3573aa268e168b740194a9b36ac2580a7bbe1625900befef3adc6fcb356100ddeac4393d388fe647c3d623d1e6a56a96073bec59f5fa39581245e31aa33cfb865bbc28e9f2498bad34a5bc65c517bb8cae19b6d1864fd7a0c48aabc78d0373a84c168f33ff13a9586aa349a185e3528003e804c8cacbccf0073da46567f7c3ee6a55eba856851234b4f3725e1bb3609e50cd4c9c96ff947c4b048dd7c64b3498d23c234e9bc45230b8b0c797946d0980dfc7bbc5773620b8330262ab6247fca5684c9fb8c2e692c3f654099a7a93d0aae62d24eb594544a81431f295bbca7b15dab7bcf728e3dc61f6354a459a120c371030f3b622569a78762b1cb08248a455e0f0847e1531d194acb0507bb53e9c0e13c8b2f45ab06362be3d9bb58ab6d90825a15211f81f4987000cf74355a28ba08443b3fd9d26b70039955773f9f840207f696d0e7a4989c4b38cb23df626e53b7ccf7c1bd96bc3f68c20ba180a482799d2cf975e0a39d5fe863df954665509b3eb63c257b8c9e39050bc4a739468e716cc289a79053453a28906d003535536439d418736a95763ae222c8870b66f1b5a9978c29d238658a3e773063dab55125e851983706c3ec68d7fb1d595b55292885f758a8df752fd3d97a8dfc33a228c896a44bc039ce1a2069810b1304d44522b1a5e43756cb843b5ef515d89c310f442f585259e5d460dcd578cc51ab49e63a7cdc2566d77e6959a7d24150cf0b413d335efa65385ae13b482b9b4db4ad2518b71704098d7481d2233e2ab201dcb4a1b3604149710de3cb247f29ce8ccb2ec062b014708f397482dae5936bec37663c849c9baa9d3cc88146b88cf970e574694af03fb78205e205435221b32e5513989047e62775f1ba5aa89a10c9d35cb566328eaa5748e9c5057446f96cc691d80208940cfea984df8817d4507aff0a0a96b8c6729329775c8d75935d7624cc0a06ab7a950f2b73ce4d90239706403c0651dda56544ea59bb06a99f00bd698a8c3f127fb4a3759317a05ac244a07342f9a47257e5649dec2c7050188ea669a97c137f707f4e5b4c57945f82c1b0b2040476d73acb54724cba000674c3adf498654b7d8078c405881705953d58fb08954a73cbeb43d564894eb48e104763d35563358693f2f2442ba8a01c38af0d94be822a1bfb7560e75abff623401fa043d4f10f8cf688b20c56cd18867712688c992f18617331631527cb4c7b0a526aa488b5122553e332280ca64deb0c0ad36db2267b633b3f8bb8a83551000e1ac17f7b426813caed005892a7077c4bc02f703befabc0f6b324b1422ec290ca42f630bd441d1f119f1c633b2031cc759322a4d762265c5e642462c0b38ae5339747a62062e07aacf8aaae3725424c4f30f38e1c727f40e53788c68bbfbcccd8db7364388a46a366b53bae89f09d64c7c1955357e256586dd5cf508967cfc97b0b481267566b7eaa00dff67158f81cfd8a406dd8c0095c2c6e4c9e03a466ec79232885145ab0a321149879a25c77378dd1e231be71519122b4f1394e1998081f271840a245e1774012d508bcc0830c5901cfb7cbc178875fab73b4aca397d13da45b9e93342d4f5aa813048d46e0b56c8a9ad7194fcb6046da9b9d16d56da6399315c924f18c527437c9fb03ac3774ccb272614b0cc55968ad346187a5f1716a944fb3946783a6511a6997cd482ead064356f843bd6b6379f6c662c9c655705c6265c8702729c3bbc022a8828312bbc7c7b90c373448a59cb67ca2da3771882130043488eedb9c91b39917a1629918580381972c34a0e7abaf372527e1902088e1354c5353c900a0a16536435124a9e51369bb46d226170a064e91e85dd6d987956820b1446a6181535d3ac8a994341ca43b0cf06a83825a85a5ad192582554864561c5bb2915287a502c39b8b54abafce465abbe7092a83384fd35d91d5604c7a4c14395cd57713baac0d7f906ac9274a8bbb34074b3f96fa8fa23831ece3975f3011a815bc7a4c1a96849d386511e61a9ac187024eb50135aaaa0ae2347a804e55e4b3d3e3c678da9e5997419c836948370d1af0a1c1c15d70f4711e825244b1521345304af589877b64afc28ac625a237a3226e1873101345e9ebc060a255fe0862de4800097a89fbe07aac5c1cb983049c369c8f0924c8320df70ac9da023cba2b1e40757a3323833d12229ce607a63275f305c3b8bb830dcc9f63bb479969cc0cdc30afc75a8308cff8e59d5b2a20d46b200dbb7d80e011bb726e33c968e3ba8809771269a096e85260828c1fb0a719fc638442b2935ae4cf82a2c27bf471e48264ccf912d4f09910ac12c19077a8f52bf3b2c8fb4ac7ace2ace1250347c3beb2d89299673a6328c8483805be327079f8552af16117d12550042b7eb635cb0a8c0d370ab508a7789235fb81bd60b882c8909140eb487c5acb092c024a9c6c8556b832c36bd0dba31565b70c35c2ea4cbf7a1b42d2d7184d37b3bb180b9e1078a793b7fcb2bbc97bcd8bd7cb3c0758f398a482565d185abfa4310c3a84b77b9280e7a6222098aa627497fd13abc2130ae6d34ea6c626fec532f1eb4ca97266eb95a728434ea1987e7e666ad09c0f08c6c581dc733f962fd04780a7565355083b12a56a7c4ca774b3cbf4cb762949631d8bbccf7b48e2ea459343a6beb3a2c38b64990a01971579014b41a3a90c06eb3bf83c502388a5bfbb0c9be9beee4f3c26cc000000000000000000000000000000000000000000000000000000c4ee36b1f287cf80a73521ada9ad4a1b7879d18d9264224ffb630b088865f8b6e42ed33e0da5856106580e02aacd0aa1546d3df0571d17452d22f186d011981a +ciphertext = f557aae24c7a8527f8a1ee03310c78172826128ca814882e33e4af6612c938d174209b287ae8a53adeb6fa0aa25fe6d19f027367239cfb89bf0dde0f99497ef7d7477bd332264ba237ec0e1035440029fbb5064ddcf9bfbd136e92f1b35a0a2cba8405ba42b8ce36cd2a686bde2fe338a013c230b1f1a99113c01babef6881f471081c9b9fe25f28c0fbf828c243284e6be4c0feb138729ac4a6d6b2869493abdb39a08563b2bbabcdabc3b349f74708b714f7e11243d90a69f68585b21de1cf742ed7637fdb5248cb5fee5a3245136e85dd5042163f2417e58a634224db95d004a4e9665ce10dd120b80df855c5ca5e464875752a70857511a705be5f3edda976ce536a5a83d5173c194d0a9ecc24f83a6b6c12bf06521f9494dc56d3a85df270518bf930474d9fbc3c77b61a1799db7146d5865d3d71e84a64e52deda9e16cb73ca1babc487a5b653664278f6256954397300b150b9159e5ef19c71e45fdc1919fb99508606e180305f7bf11f9c772e49e7a0890cb5b0264749035c3725e3f6dc99710889f8501b71872ed3674557e5fbbed85f819fdd9f6d83f1c40a04afeb67452dc3a44c77a90bbe770ec918557923e61fa704b3c08012873a0c672e511241612de52cfcb8c8e129f3b81f3ee76d99bb42398eaad6a1028b0c618b6c0c2afc7713ccc226d4c853227cc6864dec677e39dea238d79066f427c2cf7e9597b8b5a0c59536ea78485511b3c804be288c57d894322dcc2ebaf11d2da207c71381dc654a7458cd22c34703e0b720163ced269283a7a3a50f5e31868ed996227f49d8f0e02e6eca130356cb125f948eeaa0aaa8c324401f5931298fb20fb0ca6cba46bb98b02575e7abd822838467ccbf1d80868ee866bdbed1f7d84eb1604abe5f88a39041a18d301967260f8589cadb4e35c39cd50fbbd6a3922234732f25231ddc0df32fd80289fa8ceaebb0d19ee014200b3bc9f896e1e2585a0f6ece96a9983cdebd5738fa4b10a90536d820ba5f91b3fccc8e77a8bd01a56721608d402e4171cd91a56ffdf9236fb75e7041903a327bb2f8c487fdac2e369a4895b5affd68bb2967c2bf4f46144e6bfa796731ffa338eb9acc96374f2db1429b5568e79cf9cc077e74b3e048894c3b0686f4f071203c2ac7dd94e029ad9b9d8ff680d8bd5de38491c43ae7917c18b4cc50cb9793dc7da034cae15b8740b519d8c673d276488b8bc9c3c6fd127a7e9bced8385f39538ae500d76283779a4de8c360a976bb237822abb96dbde0408f9f9ecaa639af81c941460ea2c19541ede082e0635fba083de29c5d460079d6ba038e961745a0837edf37f7b0548c65fc6f8eae8706e54056b6b2819b79231139da08c6f66a4455be50ad702f1469770e30ba9b108b84d77d30e0fd4a220a4f4bdb7d07878ec837553f4210385c760fb7f180c943a965df8b3118e3423e28f6172a2c9f9c268342e1a0cc63e158c51abfdd23efc929b8dc17274063ac8c3e4a9f1b3ac373f7f279257fdbdf044e14861f4ceb75bac6710 +expected_result = pass +expected_shared_secret = bf9eb969821d6b129da2e353e7ee8619859fa2e1480599b3546f305e56c7be7e + +comment = Rho leads to matrix containing zeroes +private_key = cc389888219463a7a5f6c2ca3014accb3bc26f2318f593876de6a49822b6c1e694b7e5aa9140a0765b6334ec762c8bb018d28a99004081256159c836f4f800d0c9aa4a7136fcd89ba7cc1d6a32b23ed181b3fc118ecc60096a4ce8261ea2c0a6ca49baa28b75d1b40215367e6a33a1c177937bf43a70c3889f6aa239e20e499bc7a836694a0bc2912cc7cf211ba20c12d5ec312da2815ef20c8565712b22a927451271040cf4daa44d79705b97993584424e7b3224a5583e5b8eaf640e85015676517113f53a415220fde3638b9c0a38115e668545305ab298b9923bc16de5b9137b30a39a2c8b5fb75e4d1168593a8eb0e067bb9343f1a030e5228bf0b3a49169393cd14f73c2b8221b1267627d80b97d30544b02a4c7bf06099194b2d646596aa439d82a214e6cb9c5ea1ded727c8143755cf881415b6357661a90d5ae759475baa6076eb478a5826f86f9868afc47ac3a02a0e84579a25466a63d933b071213c886790c320416d9422d280745758779635ba6f848440b2489144866e8e018200cb8305b3060926d7e7213089a06d044176b053f3bfbcecac7840dd7844ec29eb17bb2caf321a5b17848c16a678552727a3d70c34f024164b3c4856b0a4ecbc78d345187c6e09f055273bb775078b43ecc534a40e66592b607b56b5f9304aeb048375ac71c30464e979a656f1728a7b700e3b33e5026bf40198b94455d2be37cd65867522b20bddb5ecb7a010191254b8a403f37c4577a613ea30678daab55508b16d6020f074504f928dddac1e8367faf6199715048c96a8fd6bb225715accdcb012cc856a76057b6b72b09a4aeff5b8ba278c54a750596e82bda45be19014e8ff52df181435ed9ac8c402147b539ffd984c291535b7bc8b26c5036352520730195fbaf40033fac450843e808b9ccbf03b40a9ed657f6ac4af8b65b4e389280633d79799e0226b28b356fc2e39f10a80452dc934caac7c3c521f0c5544e7821a403688f08378c3086d3ab8f7e4036ad516778da606204aed3ca1ae8c42e11038a64ec78a5fc5dcd0475429124b5d665e4acbeccca3a296a8e878b917b886ec7f029491c661bba684ac4229cd71373c829055b602db0518a481230345a34a709010a03e4b197273510a0a24465288c327c10c75434d9473208a7964db7792ea81c5fe0c4bd967c3f0c98765ba7d3faa4e6097f09e9bf10638fb900a764e4a0bdba2f19165bd69832681310a7a2585bf06322a3238dd26a4807af44faad999397d4aa14e76c2cad5326ce573d7ca04c03db769dd01a65583ecbbb991e7a31b59238f8741845f1adb5992607184dfa19a9e8840ed9e1622ab93031e2b448860d411a3d239277052cc8ea71046a0b1ada191a020c322d776c6655ae71964d86314a86a47b6a367b8ac5a4aec75677226de0c1864492c88fb70a53187cb76835d5477346646a9da97301156a3ffcc231f9a0da760dac142674e5cea882364dd74fab66901dbb7eaf037008c52073054cc2f94ec845444054058402515bd206d496bfa02c442c746ff3e662b899c34c40900902c4f8ca146458522c6a7af772b2df483f9d840fe07464b0c66fe1036c070c6f70278e9506342663b07529247b169780002535317ab0223bcad8c9d0c6876dd03beb06403e50606a33937515359663546cc0bdb16a4a9d6ccfa0315882739380c591e4b3302d807f76256f441b99acca228f17c904f88143840648971cf03735ae9ab070b6c4057c6865c88964748d8e1c5fe919037f3853abc58a3950cd307c39f8db6b9c6794d6d921da4b5ea23391d916b7f2bc8b50061eed220e901495c9744da194790cabb66a3b34eb020af87532a7967a5ab190f1898cd402c093e4c0a7967460d5b0ca0bad973ca86e533435536366370388178d28349aab06090ee40291263c16d26551a03fac734b0f17c2ecc693bae40475f7cf5edc778060186e5811a3dbac9d34b9f478c2b7e1c7654938cf8031e433ce38c47dd5e9aedabb6eac802123a82c6aeabaabd76a254c451460639fa646d87576ba154fe0b024eb114af1d2b17e245c442ac9a82bc948db520ce2c887d57f0621270b819aeea5422129372142ac87c1762e6b891af95a47912029d09118f97c5a67628dd2997c669523c542393b97f74c4974395a857bb9b47b39d22b00d5e946365a2dda868934e514b35954ead55a76d812cf619113719b322b72d6d94187ca4d3a26847437b2195a1a034b530ec0b8c7e1401be0308237094abc79fc9c92d79675f590347d7b706361556f2c00277289ba296aad73c9f3f654d1893062735869255c68357a97558f0af74a44879ccdf7122ba5bfc5d21d805430432abee64c7f271a930db3aaf5f78d8889b59e654c18ecc915db8df2eb7930426bf64b62088406c4b5948b984d29f149ee897c1bb8664a8617183a3c477994aee870d1089cc77079369200eb944a79f5aa8c5315da8a7571a6ced0850b2a71a9ba6221cf14be48935e12c8a4cb7630b1661c3504885a065ab5e3c1f78327c779122d772cf64c4b3a63aeb7b7b2c11cbb8ba98e5c340b8634bf743731f0942b8c333261a8b9e5d60c91a707d3e4035e30bef3bb6089e5017d154279b89303a2a10709bc8a44ae248827c477c7568013db462b34e8a8d7731340f7658486c3e83631e21938c4c560e00b521e76695d09844a0a35a6b758e711687debafc31532d2d6a41e512e3ca5bc88770fe49a794292c0437017082c5d11b8a6fb36401fc92aa5ca7cab8b550fab6a74119b5ffa8a14069f58f81231f2a646eab240fb56e0bab328c4637d3559c9b7351f4c7f68eac27618a874790f0ce75e7c32333bf534d0512fdc837d7fdcb49762cb3c8529b8538fa725476e0939394c9eedbb73ccaa0a8879b2c029b9dc350e911278720240ee262830c41440b89e18446f195c7fa50c8a94b02ceb5c93d2eb27f406b80e758da7f99eb320cb28b2aa6465b50c6c42b9a77390b521f3e2830f789a3882298c649722748edfa9c8ff2b7abbe61aeac3171cf16ec0997952323d11bc29fc1a76e022cf2a07300e3a87fbd47047c1504e8516c4e2358113b8ab8078d6466ca802ba3141287181777ac12618081892529a0d5879f4ccc979286ddd4c3112145dec7a711548214d62b92c238e82b4cf1cd6b78cd94d6490ccf69005d9ea13efb1cff0028f6c1543c501255495118d76137fa4c12331800c5250a71a4a8ec01a30bbbcda5a038c682f2b85b6885714f6ec2e27fd00000000000000000000000000000000000000000000000000000049f9b6cfa4b1a8cf67a3b1f225a621065805a3939f4ae4a6d1111906e9c6b7e8c975767ff083234b2979bb109a24a27bca17d170abd8d9e6ad3c3ba19e306bce +ciphertext = 7a47d5eee9259bcb9ff2d28b7ecb9b5cf70cc36298f0578b0b8fa211f51453fccfbefa32711bf6e83b796bb7927185afd4776069ced5de3731a1b4783db069092607bdceda88782b7c7bce5f77bce5bc70aa9edec73634c6d55b6c7e66a80a1628cc5a0ac5a83141bd060c5e790c6d1e2d604b948df39289825258a575d559e1c06090ca398332b5df350870abdbf17a5aff739c49c50bdc1f92df4555f4ac757f5e98e43b287873a6ee4f35970785b7e43213d5d49078504d0f2d376d590440eebce8e86cd12a5f1669ccf0be6e8eafa396ec1407be8a02198a287649865cd0b6c149403f6d4866bf117e2f9b5f3353ef662b64381acb92bff6208dea2c65f49868404a02b5286dfaff50472d24300497d8b673098a8ffa09a3633d91853491be3e925b18a6f81d757da0585c948afd41081c654853f3c7d6befd41ebafa1a2393bb1415e312d0930da60f010775d4f86076c19f2957da96a0ce4903b9ca5f7ef18d33c681a4252e58e2eac4a1d292ab9952b0339313cf5ede08f000b3bac1344fbd5a23ce63f810c993285816e42a2c13b35ee685863d691bc1dcf61ecc4b2ae54a2732873c065170609aa0654279cbf77f790056f337f45d9ef3be9b278565decd4f86574322da9d37e4e6afa7165cd2b5d1d96fd6a27570e1797ca8ec1b64db363ee5bda8d756ae024ae1061826d90ffb68440aef1aff662c801255906fb040cec10e4b34353193e3476612ca6467a19a2635ed3497cb565b8d765642a8cccbdfb2fabea1e2a64fdeff5ad9b8cebd9505872132286731bf566bb8caf5016ff4eeda1fc612593cf812d69b12dcdfe5ab34d03a8804feb9f79683f3ea44da7293ae812f68d6a21cb0b66bb610cedb2976531e6b174d8a1cb46dab41d87c3ccf4e23c5f0860f0cf118fa50cf8429d239d80d81311e090a2533f88c707a64ea25cbaadecf72eb202c647fc1bf3bb76cad5c05a305fa2e67b4ff8fefc82d9b1868aea7dd7aec33d60a4039c08f0f10aec4826d3e1b8e0b845082fbb95fbae30293a92d5ac73856a72ff52040b5f5844b61af07de922d65319b943cbfdbcaff62390f3b162e64956320aaea0e2abbbbfb9678e15ec9dde1509edb4643d997b25db8ffe372ac7845dbf2a0d703340cba5bdfd9225526f249561a16e21fb899a71293750b122fa22e23424aed5a72bbce45995050f6940a51e495931fcdbb289bcab11607eb21a18f35ba5fccf786f04d536c165d4d3f5055b661a31f43deb64575aff3c2b61556c20ed98939517179e86902083ffec6d42c6f744487cc4fda790e87a73829b8849990a4c3c0b5ab5c0ea8f0567729bab9f2ffb6f032403ecca6e4bacf608851dacc924ba6b8051bf48aeeec8c5ca87b56e3cf440521e72f569ec80e07a8683fe06f4a584e7faaeb2ce6c8031755648755c75475a2d83941d96b269dfe365cabdcbbf207e79e00075dc4259f96cc9fdb3429418072c93ab4f9322246b3db1f436e579d1f541306ce036a8effa25efe0fd0b2a208d340cfd70cb1506 +expected_result = pass +expected_shared_secret = 43e175ccf07fb358c9b4a6117c15c327b88d4d8b95a645fcf1ed096f0eaa17d2 + +comment = Rho leads to matrix containing zeroes +private_key = 078bc69561af0cc77acc291fcb063e1d7c82bdd7cc31d5b44d1aa746e261f2a592d4aa9165c2c3755aa457b886cdd55840767f4fa0b19e45410872cb1db3b8b5829c4ce9b2a8969330cb5bba2397119310fa072b7053b35fb135d04977b9ab4766c4c1ecd9695957473f10c679d71d2f6b57db2ab0726022bfeb10b61807d35447a141255bf5b3d0e3bbf5cc3ae74932d87268e172978d78b99daabcb16b44bd578f6dac130c2528fbc89ffa94b48e6785293023e2605a8533a5ac17c15f34b1e30501729a78d3b8ac6e4a329e1006e0c0735c737283856d7cc7663cdaa1610b1045b7423ca8ccb59ca6b1c482dc02ba117c17588809ef8506f09a7162720142e397c6ac0f8fdb02e4c1c557050af941ae8165ae01d9228f767ef1ac3d72f27cf9a2282a6c379a669d01cc0a6c560b21169557b88771008dad62641f435e0780234e86c1ead05f14c0ad68b6b1041492a166bc4a278b0d352129556d55f37ef8969b596c5e41f8597878c8c6c83de675019c022314215eac667a7b559146478a4a5634ff193f6b83673072643efa59c27650fec168ff17109577083bfa8493f38301528f27681405693345e523ea4398055606d4ccad9df967fe59428ca7502f046506756a6b9a78182383db4baf05014fbb20afaf148456126fa393abfc480edc92465d93aaa158c2a8493882b24c564b607cccb2c8f6cbb43abd722c74c2c63230946acc091c48b865cdb33edb712c670648b07c06691687685218ba48648fa3054ae7a6a663aca6aa4e66506516100c8f2caf9c0645f2554c10c480e798b9c96756e42cc8a7f626c2759d21555342548e0490420df3a8124b0566b1804933b68225359cf66caa599c55573b70d488d16185496216cc09090de382d570795efa569aa5bfa8f4a60665cd30d63bb36cc5ac050310ba9bbe4b3af2f9400296bd344cb72bb623c757366ef1369c968578eba52a092dfef34aadf552a63b1495a5b78168cf6e58b218a3ae64310d16734d5e72b2036bcc001ca07533085548809bf114a092225aec9cce6950a953773ee37ad3467bd5ea0b4cc4c6b0695a774781ce17004cd48e36116776db19565367c92a94488ccbf4ca3c3960524d1b13d6f77399ac625de5a2d09954cf867011f79bb4c3682cd40f133a9d67778a24d7cf1a5b71b7b81dfe335d0fc392a8b12b234950ab79cac94776ad1b713e99b0f394aedce739a15334f19042f4861e739c839ce07da145808260b159625b5a742258779440953c743c591659b9d982aa7da028c7eac4390b47b243ba23e8ae4fd9c98042a0c2d25a6688c9ec774cd7e95899fb7f081035b0c4217c2903688ca7e4466e66ac4e3ca938fd58b4d6bb732a36aa8e097fd75976d1200d61a5c988c12702698b1cfcbd93157d3d1c6e76d316b00b4e462588bbf3c480d8374df3cf66a16f9dd2ab721954e02a9f8eea4380c381da230f10c2c7dec02b057177e157cbd5304ab1d8160a323fd5892fe1649c2e270dbd3777035912dc0802f4d18a56356b52946f30c516838028f7f39cc22466ed277a5adb6864972e1063b1af0709dfd60136b16a3d6c863a68895677c488eb1d879a69a5341a695212066ab848609cbe33176cebbc9157cd2d0228c6385f0d9aa0f99335c9cb777e96b597551a0a644a34d3a419b3ad5351876d93490598a90f31a3a2a227119b7cb397988c8971a0459b2c811ebc8a19a094457c118f6db50b7b1ba6de5aa85e316f71866d759cab439c71d90691f1d27da41779f2c3380c600196133f15938125583ac7650eedb0b069004073205b49943a4fc00ab5ec5e68ea5299b95b303b1cb08b687c0b533ef3a98a7b0c3b6419a6cb825874c4ca5688dc5cc5ba5c49448b479b84baba1344a29493fa3828e953b3ba64b087ac9f5b9a3f12cc6cf9942612606998207a852b35f42ab80f1ac8bada3f107b37cc6c1b8df40391b1afafe848a92853c9b32b9ecb758b88c8f76a9b5e866e8c359f3fa29019f439eb0c9b5d4b2a516877de0295fe7409dc79caa4da5f6a87a26f9265581cb6d141c3d0e597f385bc77f966ae1c01cf29cf0bc536ddb0a8d75c8c5db79e967c899b46bdedb9528f596de02c120fa2702f73b3756aac59a750ef97ae2a7213ee95797f2149af542b992405c9d79e085521d2e303c14146180904f41937cf4180edc666d70238030b4b6572af377693677a5762ea7775c34b9314c10489518525cdea77cfe8b24233dcb477e9cf48acce10911dc9517587b409742b06e3142ca7a54f36d6ba225bb933632ff06802779563fc43a231a11b42b91feba135d7229f1d29781eeb65d93537c58525c4e48b85083b3226937acb2c7bb3941f95664c254c18bb9f91f54f69263a1d590c64f51f0d8789cb60cc9682082bb399fd87279fe4039c9bc69202a309faa488e26a4e3a5d64ea4161b9a8bef9997346ba46da3414965c4ac84ebad1c2f067a3ec5a0866e4a5a26a7403bbbc447c3b13e9c282ea36307c83a91b25b8b565155146fb5a5146e01c21f4aaa3dc7082e93a2dd95e7364b6a97cad2b0bc27d0aa3f393195250118f9c635f41ce82cb1c8ac2158b3101e3f44132a271a545240938bb56d11520e2474678391d4abf7200b775b27dbe81970ccc517542222a67b693d151ecf5485c198838a2cea0060da6285c6f0321472710d62a78c42c9edf07518704157cc5669c3ac775635e09356304819d718abeb0603886c67d8c0c523691a22b987af137a18d20ba3af239de79cb85672d8ed6beb818c5b09baea6c456ae3a4a7481343aa890a94a15a6502399a0101da2448f55666aca18d0259d95838135097273ab117a60cecae8108dab28d6945cd0a30099645892737c3238974588bc9b4384615917e8ec0c10076b2249a42f1841252533376830f1c2bd85456f4e8577f7ec1bfc7a92165ca5a83b85ed4c0dd0652b0ccc9bf5fc6946f710b0bcc42c9529de51bd99166eb4030bd1c394cce0835dcc311cfb6e3c951643f5736045baf1c3a7f11603cc168b6a47ca7eb909c6d9806543380c603a09d435f7695e6b117b75538d92fb03fbd92d05c7461b113eb5dca813c43efd7835525a228005076b969e9446be37c707ae0025e54863fcd72462b6aed873850cbb92cdbb209246945df26c6412cc16214155e57bac92562c5c14e1da60f9e036172cbec09caee2d14242d16b1b1b9659a7705a59b23fd93e6eb23442825473c820df8342bc33177f39451149340964c3ccd20000000000000000000000000000000000000000000000000000002201b62fed0c7f34d9f72842d1c5e796bd86e451f91f03e9cc73d31f8d7cdb16d48790195fff2c19f221b7cd8637576cec18c29a4a51cd07c82eed4974c36e8c +ciphertext = e4cc5f39086d1886cc8362e6210515fec1d8474263af5d7eb7b5ac9c1bfc65109de928c818728fc17548bee754bf8df9f972fc2f5943291e24d0911a1963bc3e4999b6de2add2e5c15b3100a83be4647f3fadba3d61022970ce43a6d0cf5a84b387b5d05847185cc862eb6b71b5a8ef9747a12e399866b3839e73f3a73e38877a1faf8b88c3283f22f6fc2dce6fe43118ff68ca6cb9e88471dcad4ab28c657e30462f64a34a108bec7e3b6eb988c6bdbdf4a300d476c170879ecd62ceed6b530575bcae1f23da95ae486b3322470523429052a3059eb75b699a9941a028da267b970eb0a8d444296e421abeaac7106f0a45dfcb30a69d5336ea98d999e65bfa6a2cf43bd302512f086f8441d92c11937b2773b1cf33b82076a64b8327bf2f94f7ec3e83037dc543bcc8bfed37e3a2ef05e009745cf504f2e261fe194c256292d86d935c7c971dc4c32653fe88fa2dd822fc37b644a3d5dfbe5a710551adc671f954beb44da64c06b9f5a0fb78c1d1b3f94dd2c0a41829fdef6395da7493d18423b52bac69b26b2773d0c4242d5172722780843911f864959c14c4bfbd83ae4c19602460428f9f111e43fdd3c64f9eed410da10348444e6af25f0f83970fb23f0f5515c68041ad694cb9ce9621dc504b564a4757dc4d8ead6db23a889fea5a7982fdf403e609f51758ad7bb78dc6b69a53e32b808fcfa44b547d7b23fdce81ae90070e8cad630ea8000d8f840af81c6feb308b8a5135db80c2963203e9a13d2c5b4926e68b8893113c309c3bb4cb48f06fb87313d414b9fac19fdaade98e1b396d789381b057a293de05fd96454f4394b122de31d72bde9b39a3c171c4e1a036d7d94b8e59506dd16aa28596513c3a0e6d2618fe8d39671c28f33630745b3e671c872a01035da1624c6516b57226aced46e63c0a5c6f791f188ddc8b0c4637695b1b711a92ee422225f5509d9a53e894c959438fdd81f692b930ffb29bbd9b7418c97ce03263877390f86bdf59b617622d181061e9f146c6c355c7d8c16924f99d9b135174935fbb63b09d06734e41eacdb7c55f561da81126487732cc6ae18a1d8df377f865fde5db3289f0a77359550ff31b7778724449db57483c59a94bdcfb7680476a9a5a38cdac1c1033be8c1f4e6689bc7551a7d01912bc00e804b6e9e6b4e84e096b9ba4f07f0d67a3baea5e2fda3224387e298a144c06d78f26948ee7c88c11c121b4ce69ff2912c93ee7cd96ce4faf7ed6412b3ac238c05c9378dff1051e3a48c16a3daa8597ee0ee83fc0b95e2346f5195a2d8af8df16c9608fee9c1fed1d5ba11f31513431d304a3382f18c9ffce39a7c637caddd67153c18ebec8138b7cfe9e08c9a7844e879424531f47444b1cb48bf2cb4c92756a1c03f1d37d1f6a2a22967e5a719aae38732dd5e37f795591ac91faec146131b354ec31fc0e0f80d02c79cb6f40f42f3ef1d0ec6ad1cb208fd6e56ace109c1e5a82079eb7b6a32d358963ea06f7234221e84b67c716d7e523b502de542fd468b130b9ce5ee +expected_result = pass +expected_shared_secret = eb7106b4bbabe9796e68f15931ea311dd171561dd000bba4a80cbb13c17e9709 + +comment = Rho leads to matrix containing zeroes +private_key = cc4a14e75a6b1bf87f11a240424645dee23657db9819ac274780c2d7d8ac64f2cb82530b40a078791a2ae70aba868253bdc3045b6254c4e29024894cd13723edc7461a37403609b48f79b8e8b1018981bca9f68031dcaf87528a6b065d8cb83c142ba20d68a728a3866ca88e6836cab209ab49bb234312916e432fa51152c763a62cc53da61480691b07a073be74aa6c2b88468bca8302a23d1d6405ddf4aec2f88ab055b18e2b1873862af6539ca83b1c270b6a563cbc7a220cdc8106e6e5595d63a26c0cb86ff11b48066721634b43b361b57a5b4ddb2967d232d34cb750026b362cbd20188260c6a856e9493ae09c462bc4c8663c7903112488b06b2a996dc6668e382e9cdc93e52a1a368b07d8388c9531afff0cc4c07ab423bac717dcc888e213e3a75d69a633f49745bab10f62592f59d53ef19b6a62f0b24216aaed9c91203b7ee65b9d097cc1e2676deeeb576ceb4fa4a867ab7310076a912a41292c658e8f75a98603612558352a5b7beb404fd2bb6de18c7ac838464b6399182536509624e1e25a7821b71edc57c35541cd115ec52c13a739c3de231ada741274272383cc78bc9869d37282f5980209543c92b76ddf99c3d45cb7409b5e44599b75412d8bd122460905c250a94dd4052c0b0a91c9a906aa3652180fba9212046b4f7ad14f7c304780d553f19487b8b7413de732ba1296b41a2d94983d4be93e540a4a4137a030629e97fa640c21ba5b7b5537a03a2a958ec3a888590a5c14a904dd74c83631264644cc6689a245f833530124f7d10e2596a8be227f270941faa75300bd731c145f781cce52247418595ef67c94a170676cda269e51c7ddbc63b6765b010aa061cc576696c84345c35c491d3e4626efc8b73dfcb481c11bbf8c79c6a3aa4e54c43a44141f5c35932486320567ce37adaf5241bfd8c44ec140d30823b58223b02742f3e2bf5864756d528ea36348c1c2293d8ca050b6307d71a20a036e0060697b58a0ada53eee5a6990a9cfe283436cd36a02dcb1a2b7200a267c3f133ea6423bc001baeca953515214e2766f066cae531212dd3551e22bbb1c705f21753ab60a70f364bf1949901d9a0415a36567614c1aba2dacf2c5435b4ee66193c5e461596719790aa792d5a09ac474343509ee36ca048751bd4b0c644b2b039b1320b2294df814b419c3ac55541be5cf4b93593aa4c099142de9e13699a40709d70070aba9227b6c14f216d434c9bc16112b8b4237f838340a5c317a618a91170709bae6a7c13cf96851f72a8761736c452df27758afa4b02fd55b3493b1bbf96dfc45ac743718978b7de8a017eca45dea633dbc417f856781c856c87516429127c6a3d335f162ace0982235ac79ba0ba68edbc1eafb9ed7a3597ca7a612a9bf3ef2b0d1d7c238e98714a434b8b08b35e3885e007501f9bc06e841921521d47999db3ac3937468a54b95b57a2bbe34aeb48ba57f0744021bc684456a8ed413b9192057eb77a5502dbc89c5964c0383b4c9034396da209279199ab5830abe9386b2e811c222a6ccb0cb23732a95676fd5c0376505943ef8bd67a95defe0af7cac395a743bdc3119b1a74771343bad21c53ec80cafd7548ae310293027d6296030fcbc7549ba7ccb22607740c4a4ae9c72a7c9d75f27120e6551a24baa69b07859abfc0a3f81ae50b410cb4b13f4d3174acc7a36b3cac768430678b86030a92506bc3a37bd721320f658bbd2798bf78135c8a29c5c3b7eabd292aa278a0f58620a89c8b502b3cf9b0ed7d3606f612651f28f5d39646b5b6a16cc57b4574b42fbc5dc6b15b92723ede862ee02cddfa891a7b243b4b8ccab0969ad050a35ba05a8d650c2b19a77f8c97b9c15386233cb543063645dcf1c976d79999b5b16e095724e872c9a799246e9c68388573db17fb137a936aa3629e68398851bab14cba8d1c0be8c213453863a470b6e4a640adab4c97375d72422c1e55d6c892fd117999c9b0a000b7a51064505b237055882c3733020fb6375e48d1a07454cc6b2a7c40bba61c10062a9c1957037310aa66a1d560a61d2e2362d912ca5953e8c3a33967b6121b9a888ba87c388bf1b80064b8b75fbd6afc7dbac45d45cb3d9410aa9c56ab369cb4b3ecbc43942d344a3a6785049b78329610a297512bc9a2920bca6aa08e44467572c2d93b513fa83c97b1a29c161c00bac6484659c67e74ead90095d19481fa476bce539459321aa258da0e2579b06cd91e88bdd297447db2f5b836d2c3613d25a8cd00331948a93cfb6bcf5e374f9f623f571b330ca63ce6210c7d229d27256ffa9a32911aeb77024ccaa5145ab493eb29a2e2a134f7bae4c39ab6a162bbac174ac12b1df51bfd02c159eab2dad955ad3a978f85449a9f7b253a74b4c81adbdfc3efd90ca2d7c8b63e574a09bbda6599f98761ff0c1b14ad429512a46e3c1392a800594f95cf3603a760cbcd6c7ba86ec1c9c74c232f31a56f8a3cfd29f05914ad5220bb4dc23900b55ae5607e00022fc0002dc363ed67c5aa49abeed31994e3440253b82dc937ec718273e25293c01305f4c2c47ba47a5558c17fa2f9640034eea6e2f2955189677eca2af91aabe48fc93ad497ed05208d8401d921a5aac231964fc169673289b270ceb9c745ba2b07dd402d3961c2653c27a697087a58a184a9d8b4a34e355063da16bacabaab34c0f6a35ca4500b7e7ec51af92480f726b034b6246295ea017ac5d7586d2b17d074c7ddb3cb5e9597c35692e405a900a535958fa713d0ab6c9466baab305e83597d167783e22b7099bb913d932672954724631225b6b7c1b717388746ed51050d26f4ab89c56e12697a9ae925c5d91194097da004b7925a90cbb849a2e8e250532fabf1c9bcbdb15a5f17395cb93c7e374461c254ca69c3567c01468aa02d3e445a1dcb194303cdc3c580ebabe6d95aae182621dc52e18055050274f024ac6a5180a49dc0fa5033f07295d00b70a5a93be6ac1a412c4217fd177a8c433f4b26cfb14303d42a705984a27c305e1f08da46213da399eb658c14eb03209e601e38887f2c5cb2aa4384a1790ed16a19032cfa3f368a9c1218abba6b0b606baf73d58b4c771baab5481ae971188a4a323352a2b0f0c3e45e808e88b2ab20942c14496abacb28c313f246b807ce73d7b09a612382ad295c74bda7ae1249dcfb534143acd4ac6a68f7573bf256a946395cfe4463e76bf8b0263559b9618a859f46bc3aba5ae34f903038a1df1e02603801be7c53f12a500000000000000000000000000000000000000000000000000000019d4dbdd018404448fd2208e2433d1344c4488d6553afc581dc2cbaa10459f8ba9e4a0d3487b6714e18bcc9d1daeb3127164328a19d5cf60822f3fd37a24bbed +ciphertext = f28a06a7b862171162d64f9df3702b7336c47af5e15b1ced699164ae57797974e7fb78276e883360e2b51016d72d69164becd785570d9906641b0650c34bd1c556013688dfd9f2858c1a2151465e5ab51aa40c595ef4909b9c0de1eb7d4ae92467721131e5ce21f7365788798d18682a8035e14d2e769ca10589531ec5243e077a60abfae9bd0c03d8ecd7c4717c90137515c764ae0540a99fb2bb4057342eadca362c1b540d97d59408b2131df36a950d0a257eea95796f9230d649961d1cee9bbd30d1b88bb3680075a4c5976efeb95211e184db3665c7e184a912bcbcd3ccaa249c722b89c35d7374256b5490bfce5a449c2ec93793f0426c4655ec82f5b4492d44cef93e55802eb64d3fefe0d3b450c9b72df7bd85997c6c6b94033102091d4829ba10ec59dd5ca88feb328c39748d26bf44c5b5310d814c4cd9a1291a041169b0ad0af9dad279dd80a5f465bdc74c5060c2b226dcc04f8d8c03cc38a4eb1437c8500c9707170bea771fa27343b0efeb485c0c2b0b5fdd2d0e9c450a05b9d7f554031125e336484d235643f429c015dadfe10d050734e2dec4b915c3350277ab2bfc38479dd3f773f6d54a397eb7825a398e415664ec884dcd6d958c5794d53ed9f8bc8d1de0e48a12ba149626bb1bda6710b48e1803347412298db17c224f8279dbcd311a4e67711fa0a8de2f7d4234ec25952a415c96f4d3a92e8b9dd6d37d726375145d0dc68afaa08701ad5af5a9a029cff366e01f6bfc1d63069d8c2b00f9db8f1794d714b36e6e783b6a2fcbed61d16eda97803602bb0211cbf5b8895c2a451407fa4937369f0deb8807759b16d81f215b69a257e207396df441eee6f8069a9637cac41aaf6155dfb45a7402596370faeb1ef9bf633aa5eb96a207cd3ade1765a597d4f277b6f7c33b36e816d2368a19af20df4bcddc15381f2d8f04e4650157ec4cc0943ee080d24bd771bb35c0f8269be961249ff8a5a315c1ec1ed4ffe5a4210b5455f6d367c2df5f0da09d20eba91c6dcf63b215b39dca326fbc4649d7862b56927b41db2217459c23a9a9b9e83d79fd6f34295f3853eee312bfd30ee31d02fe026eb56adb6135fd51a8c9da35c171dcf5c999b1ccd78de1b9574b029cc0a845b196330a3e32309d61294468cd40ac3d51011eec5e1af1e397c0f6d2355e4a5bf69391e7e90825c524d76c688bb8cf495d2dd70d316996d3b0fcc8d1008427413f0498e63d5001e4ec571bc0e68c37947782e48d71feaccadbd1d99888bb6c4f22e9eee0800c09ce8ddee3af45272b4d9a3ff372ff1a7fc3f5fff8fc2eb3cc909fe273eabe09983223dcbe0cdb6641b5c905be7bab920a21ae6f43beacac025fe07ebd3d5065d49dbd0ba5d603f2c534b6533049c62628bbf3002c0da4da81f1e0f4e957565d79c4b1896b6de04393629fb453512f1e1d39b1462ce7f693ab482224dd376b0602dd2fe0ac592d7d0fb92ec5657af2317255ae3f757b01aff57e112c61f53b850d41a0d2964121a33d15db32dab2ac7583136e +expected_result = pass +expected_shared_secret = a39c5a7a5e9f4aa4a81e5463048c7028d0a2df5491fa678d38161dbd3a08825b + +comment = Rho leads to matrix containing zeroes +private_key = cca22002e0b84e0c0fa98c902c2a30f0d9303a411db91a26576834d4f1645c181bba750c42ab6bcf401739f83fe2a4a3aa1a3f5917418003aed863875fc044dbc99c70b27758389fdd3cce51d5a13b21afe1219f0bab5dc3b15952591e6f80068b30870ed644de082476e7b32d3a531ff8631914c7a5c106a5acbf8672ab4a304afb71b1672cb281438f0fdb1db0f52948e8b0a1422ba10ac5e0a480e87bb844072e7a134dcce36f27274775fc6a8bc611b2a33cf85a4820e18b47b24188030fcaaba998d84a68424c07f4503abb553ec33b4be2af3557aae2797649da014dd0264d00ce74431e46f8969276b24b359c6750c5bc15a6318c2d06898ec5f473380a68302a91eb562fe4f10596012e5efa83f4c55a19912978a6583e4a884e36af1b9367e69ab0566c3cd8c34eaea615f49c094bcbc63d52a21d74c02462cb0bb7c77cbaa03df988b60cba880771a7c179315a9f6ebc6e9b8c90bbf17f737508b1691ef1952363e9499b5007a9c84838c2a149478e4be76c0368a8220b9a3ac68ef6560dba6b3f68257b6719551d83c38f73654fb392af0c1c2517851fc160c343cf826aca2c5614726c774c758e1abaa9ac04ae0742799060970909cbc2f78ca739c71bf6528f0695ea6175a4ac13555c3bcb9920bca3a37d363ba622666e54a4e779cad5059612792d610257a689975fd664dc5081d5ac4586c60e99b9a2a17ac612e5a794ca4dc097a71f72bce02b4907d69d801a22fd7b88f9e4ab284076037a0f6ac803bd7b243b835e51873919d3b77de041bbdb9c2917338f0c42a54ba6f5539d60e827387a9e7c156155d693b85701b53278139b29858785cb59788ed981d77556d27390285bc3f9408cbdc717895815d31641d0c31f2d911515f36743c40f4f3517432c620892149b518fecc80cd2d14c99730e0c940dec155930dcb5ef861b7c80b55c2223f7066b625c9fe5f0cb04f0bcb880119de142ce511affc01d483ac8db8b73e504b242315533d9c02cb64d15445fe32bb0c8e19383f82854981a9ea465b05c77cfd66d97a2b262bb37398cb4654a0fc8146c00b7608f061a216b9becec17f686b93d88309a7ac04c2447030b41ebc6a95fc52466d36dfd461bb046172f3b83fd10bf79c281202a60aed8467748a986100b97742c8d70c8de523c1d700489c391096c1b92654064cb7e35d7b25f29818ff39fa523c88bd69b8cf41689a414288c492f2a83f7b34a4d95770e6144b7731057c73a077a471e7b378fa48464c426ce5a6566e7c862131ebd5a1b3df013641a878fd702d167ae3f369361666514d98f325679c22aaddb56406e148e744960ee1395866acbe095542a6836571959a80238d037260fa053a52cbbc2cbc035e78fa9c306ebcb61ce33422584009271835ac3845524794f18bd7e1b4c034832fe68ba24a162815404f65c0af0944c9789b1d92767268c801a0444fff50399b3a192131e965523bbc2c75c286c96450c3f0733458bad7831205b1b4841a617626b4bee232cd1f220edf53b59bc213a055d956591fc3518a1974582f79a66dc8892ba71ccf7a5fae1c01841428525c32dd2b433445118559cb5447e3c851a0cb498cf99c2d359999fa39692a59b6806bf4af964b370a7a5c3b2681cac9561bc4f59c0f32151e25ac4b1c80452e7cf2544824ebbc8d33ba3ade7ab1a585a98a51cf8632a02295284f2acb78373b0078081a291477510e7f6569751cde2106f8a064a24ec6a921103b8e5b820410f15e51ec7a49de77799b16c58d0c350f83a5aa63a286220c9ae97c2455780d917b2a7d6738735be61964574805f848c1d0a689060e591d60c7f057c92896a71e5109c07c0aaddd3622b672109664fadc3304118afc71644c2b7844802529f38b9a2212301dc2d2e589e7577ca2454a7fb78bab8165ce4f94cf8f121eec4531afa5fa02251090caa9425aac327af64601fdbf19feba983b0f55a22616048c646cbf08091b315dea5637fc8aed7b4418e09a70dd90ae1004d8162b5d58c24eaf7cfb47b26ffd98c48870c583aa2a5a6b5385b51e5f46236081cf9317c662498cce911b1c736e02503650761fb528d33d6708a4bab573456c2f01a52a024996a80ae0311dd56aa532709be25ac0e9b7862205e300253bd31210974b44477c3d0c62ab02b1f7d8bc910e5ac0ff29af6c66f05c48edd4601edb547ece62f8c4944af201221886da1f36cfd937e98d6a8bb606507c5099a76bc91a38812b822da60afa0d1606cac59b267ad4f47782a882a8415b9cef663ca89240c474ea265adc9f71eab97cd8215c10a32cc45287ed53180e0982fc6aa3db2b0cef48640992a33365454761ac072f765e84a46504304d775929222a6fe7a3c790b48bcc255ff189b5391add20c4581e4c59d09744a56a1941734fd24a81a968322b33da31234cea9387d31a9e9374cc4203a608285de5996b62143aa9a4dfa5a2cb0066d2bc4be6885587a4408bb3103a24b2561729021458b77951c8b8564ef0a08add70c3b7a1afcd3b4d5d3be685ba1439aa66a2393531b86a707576da189ec3885f5756c851abe689024bdc2671d926ca511b7c3b41e03c79c2b3caba27bb31f5a3184e16055c8127ba7b0d87216f81318a0d88f1665996a6b47bc7808daeb799935ac67653c59e23178da6a7cf40f9ca22246ac56db9417e5062d487c1b9ae3664109a9329567bd8c577d8cc0ed65cf1b6887ec3836fd16bff20a7671cc37b0921129b410a5e22b01d3477da0230ee5018a571f7519610c4badf145c5c4f5a29357a17f245f24e3bec0d22937457c38955f0aaabfb4d80bccf57909892e120546868b9b556289cc5594c7cc083e808f66e20d9c855d4cc936db566a4ada6e46b680df8b91898a002d9494a30127855c4cb843a8080205fee96f101b9c06104191d0bf92273fb0cc6f089a202984c0ea1c46d1f3b037b7c9b557af96e89784d990a66a1634888dabe6058d03c8b857605621a0b031a52cf26385a55f72d36555b87c5f2a36fdd4a72820ae20e90025a077e82c20cc7a8ce4f64c12940976d34e49b1200bd2b11b94bc5fd379f88779133a2f6453797f5c34a7b916f4f3bdc8c10de83b08312ab49f34cbca4917311401c7581a3cc02cbfca9b1da3cccba54c1ef7992335b25e282ec7677698c8ce94a1846443b1ea9261ff688f467212977493b27a43aebb681450ad64f31e158a5cb98a9ed43554c807090c22a1f343605bdac089362c0e2bf23a830000000000000000000000000000000000000000000000000000009aca1ba802d896abf9daa0d84b46b63742699b4ebe792d40deb9e4eea6e5755453f53a49ff45b0ae588d417a63a599670cd391c5e9885c972593d09350bd7523 +ciphertext = cbfe4560b3b067abd9cc82c2c40676f02b730c5280fb13645666b719e7d9d5527e029f3d75a3024502b338be060364a41981db3c7f52c59426b43fa835fc2fccd92a26c903adb74de93c2dbdf590996ebf1a9e2003e77cc896e2afce50d15bedf3fbcb65675f125745fcb1804e25ef99b6f792578520e82e599c5e83a500428b191bd93798b73645ffd10c9beb3abf33535bf149a3471f85f55789e3f73b55425185449c60bdf62c01a8fb1936f50db5d436066824b378902a81c5edc3b74b3bac3c58eaf3a993b3b4c1f2a0027cd7156b7127412294214fc7aae635edf26f6e5f8034464abc05f4059de6cabc5e4a8fb83a8c25bc88e7e9bee1a8cf312434410ead60d1b482399422621006ab52127df15f7385d62480bb0fe494843775aba4049ef94cceb78e9dcd3318608d3fff2e75e29769cfd8df0e12a77ba6db5f54d69be74a2b03d62db822a8cad7f20ad4655bfd73c62064d23fe521d37daafcf143f693eab811d28da6d0929be3cdf61a56e487289c02151f11342756bd419553186ce79bb17d5d5754752bcb72349b65cd64b8fc6066656a9cedda0aa9a09f567cccc23e547cc9ad86f636233be7815dea220e29863d830d0ef9b0a13a62a56237e2c6f443e61410253957ce3b0f95dd422012e1b84d32ec17f534f56641e7fe92ed181d830b4d0f3245df6ad891c26bfa116d40460c497d8fbcb6def0ee530ff4422d132726751d724cd84f8dd19e286e0a4d891af0e4a913352b9afecfbaf0210077c5be9ee7f5546700754f7f0dd2c2600f113c747d2a706009a8838a7b2b958324842f8fe3933b8e522d63d772a3bd0d5186342a20ff3a5e7a5728fcbb3ec18d0c90e5fd2430359affbd9648d1ca2400a55a99586807bf18041fe7af6f51120ec366c99fd4994f20e540e31caa71d5f95e60a921cc62db1fe6f9219a7705edc1a7015e7ec126a22f7ff0c9bb4aa3a1126d83ce4987ebbda148fa5b3cc07bd7c78f26699486a3dc690920fd21d75fedc4b631841b634641594fbd98ce2d8376b179da29f925a31589e04c74c4fea00db64289e30ac9e58043955ccabd9515e0c2a88e6b50dabdec8b6f574a6c44f4a0ba4d00478396852263376574706e5f92220492782df64becc8149b24feaf808c85723b7911961051468d38bb94421a18364e2c158035172e9368810d2f68f64499b6b407bf775223a3f345223ea3c1c5f456f48983d994fe4da62d0eca318b130bc8ade488a900b7746633187bf12a598f6f144c55738d4831f0ff3802a6a8f742d7a9f64f95f2401194ffade9def6f73fdc67b386115c9d905719808f41e2035947cde0bbbb44d92e51258822bb4e4493a7a4b0ce64f8620b3c54078985a3dfd4cc2b3b5ec3fd870cd6ae095c39049ad69234966c5f1f70140f88c75f11f03fa25c3d673e5ddc14f79f567bdb29a2fff88e11660327559bd0d2511d21a8ff1957c0beaeb1a26f280b3f1146be891b39ce13010c77b775d11552e59dbfabbb64409553d3da222902d0ac1e78b21677ef +expected_result = pass +expected_shared_secret = aa50a536b37f28e5f80904269d0555a6172d717433bf9a680e75e98af3209a91 + +comment = Rho leads to matrix containing zeroes +private_key = 16997ff80976d1506b23c012e387ac6ca0a792f7481ac3c9775317ee3ca5267bc7180ca884d28bad6b5a05b045f33a9b975c6c98908d670550b874ca70a77424e48bf097256434b9d9b96c8b8149f02ba5bde9b813eb2b60f20da4440b4cfb05716bbfd86255a1e82941d2816caa7253e7368a4bbf4bf546f40b1bafc65bb994c34f7337e82818021797a431cfc664699bc22b92561fe3d1cd6306b89a36380920abbb466477549d1bf14364221c10f51fc3f7240de4c99b3bb3eeb9ac1fe12bb7c97888e8386da4a341a0be8f78a7b7c49f2184376c3c3784289a6bd9b6a03a110c228f72939b86c7a87dab3e093c0ade693a0e5331c48b761b070476f55cc45ba1dda14dfde01a011776143a4d29d48b47b0c6cd2111bf18360a7438f384a28d772177f648773b961a86637c946d7981a6b9f571a4c29aad07220fe081f1f18700f3c99ef28e76819f8d7c4c43d754cea21180c43357f3430bcbce1fe8952c691cfe9a7483026386a479eee4025a838df5c563b9f5a1882a2d7209a68d231ee82260a7eb4fc157936deab52618cba32772fa1440fb675220f4610d749a5b3b142f31b404d94d2bd816cc4773ec83aa1445a37b361e52b10960827e94171dce3c12cec80a1ec65aa6f117fe937673a78cd7767dadd3cebe0217f13c903ca25d6a681116b206acb46949b18f671a63fd2581a6c0978738460cc51df3711dc1215dcf75525d30559ab6bc52e16fa513753454888189348f045aee8a32e98cb2dfd708e7d42818115e5c61711a0c43e85a13657aadc24b5b30a04a43cb97bafa433204c18536337758c0db6154d4fac670fa3af148b52f24aa731c31f98464ca9bc975e97fd665710ee2c56b024fb8d7c7f4a20cc9d510f8eac38f96129c97b17c890417a21465d05abca02754ac3614e964f1a24393d05ccf5cb9500852cc9231656ca899f3538df30984475209f84ae8b99983e844b06ba4cd8a9640a513cee439ae13ad57d3846aea4fa165b68c6c03c05c835bcc5a63d45cc5568aef94ae7798bf29aa7f38e275c902236e63872a274e4776cf1928c492036166d04eed9ca64aa16ebb4b11fc3ba802c6b249e4b53f90112b587d36c6bfb0733a2ee3003419026a10a4c54c2be294b2031a48fe895c2c9920b3772f127338a865a82c3262dabac113c235d433b90d401f5557bb1bc68359020f75742c2008c2bc8862416910f53772a55376ef05a5eca853eb1ba5ef841f243b8d98b11e94483ad7e72fd7360a3641159e481ca50971a6e8aee73a0d4f24b25430ccc0997c631308fe2aaefcf79af5d2045932043d95933919b21ef87865b8550742a513d67af756c5958465f582983a777e9032ac43164e552358861a0ebc458e55865fc3545fd01b0e7565877ed3229f8267369c319abbb017a87ca662c635519ff418682af39ba387aa38ec37396b4d6ab505219314f4448d0f572f4330cf33fa1369872649c922bcd228c294b3213a216e59752072b8e026700ea63061855be3d6037c0cabe0c21f5be948ee4b18dd935ad358a5885a0331db2e496995bd47c3ff2b679e0abafc02804b6117271a2b00e33bc06250fb30ae2036716d30a50aa07e45f244e1f0100d749389f5b871bb5473b52efb4ba5b2a8317c7255790b7e96937f9c95466431a268b0bbb12aa639d418775a56d3595231262c6602be765498dfc0b5cd404a630cbf46e06cb235ca7064a8b7e2471fe34ec3db94c8ea14abf797d5259ea7236391c3b7ddd3c3aa1745cc6857dac8a42693274507985c32bf65535d6644463753c00e18ba859b86b654916c9b14be78a5d11a2fbcf9ba9225566b600b0edb3637a18319027aa494a9631c6958221703579d75b9cb09d21c34409a3d2b342c05bfa4b82b19444612395bafd8ce0bd772b303bdc37c1e57a26c6efca874fb244ce314f63b6635c7af1be1a3205498204505a80138bffa0e79b60f58675965578719813e31b352390ab04376b45344bd8efa65fea466e8c78d45680be0e1381ca5af4cb666749676b2eb1e02d003dee20f4298b720aa6895a80a17f242a983c97a43981122043d444a5af3066816c7a07c7c880b2b2b8958323711e5551c91268b1ecbaa3342418b322766334d5d4691e0111d56e48637c012bd04a9b06524c30752fb7834a2506db7ac7ead1b72cde45dc793cf875085f67a055f6cc0f7b703e29c578d0329dd2a01ff05ce9b1a5a8b993621611fc51356b5d4a55c4a6ca3b5046d7b9e305494c93177c2e78ed1bca1110c7221ccb07ef99b3aec74a8f083ee5a897d55515a5117b1c244c0898738636e577ca59d16cd1c44299d41c311a8728ff38bc476b1027426bea27795396e2bc24e0ca43e17cc8e63bab9463b42bb6812e7b840a9943ff11210aaf11568c85978816bae1457ff364923c846548b5908b2737514c625c8c11a0898924ba682b3c8c30437e8b23477d06d89d39f590c8e2561c698362e99224450217cd0a393ccf870a84159273083008345b2973e98d78089317f7993c299b7c64ed3309b5b6594a236bb8c1c67cac692a2a1746987ed6ca84d5a5a4003b1b1347a9846656a36034d7a148cc8157afa6c915a05a81b1d88568fc3f62b9996062bb99e43447bb22a5b29473a728c929d57b6ff774f5364c9f4145944b979bc549c1d5b0e9e676b2d493f799875762360ab9bb4b322484bb78fa399bcb889c08c94638d95518bb8742bb2a801233adab5bb95903f355126629aa87477b19d3135af8695f3da81df3559d510a7da3cc364939c8b507c99096630601d60999278b731824642c6a018c22c82a60bc9e0203e0b8139dff977c2a903b812a0a6c79c9bf21618b4ca7a836e20346f64483c277750d38b0a204baa8b258db85b3222a5cbbeb599af8ccb19c649ae048d97153b5a7c974738a08c1c653292496287682670cf30197142dcce7fac5694f58bb9e23c9b496f0a939636d6522129038e99179c8cc37697c83e908aee62a1fd266a613853fa12180407a222682b49bb41c9c23c55c63cc7d115da6cb53bc688fa178f632b0b9042631999b6de6165322a817ee3037bd33e6d6024174439119993e1776ccf6862e104019cf739ebe62e0dd10628dab37946c0f1e762ab4bb94fc993cffa89ba245d7e48055c43a8819c4701bcbf44044210c451fd4c5a82231676ac2941278ffd12c686bb21547a1e832a48cf991bca13433d4a55fb485f04546c8a3201dec55d1889942d1928250867ddbf1a9138000000000000000000000000000000000000000000000000000000d5caa2fdfd51a2788de89e6d3e77f6abb8f38693cb010deed4069f451284de44e366c059f5f26e6dfba8db203c5b27beca8fedd3de2664f6bd5c3e2ac9fb3891 +ciphertext = 0802659cbd143028c3d5f499c51d88e361522a2a6c353f8bad088b1f0a6eb02f94458508a80aa98ec29952e405f754a77ea9cbc07ccc41ff66fff5c4664910a6363da480ea8f0de3e7bda007593199494e6be43c713178b791119adcd4fa712e077eb46b39d1bb073ba7f39b56885906fed63a0d6a1be4bfc2d512a17ae327fea8f1f8ddacc103fd8a1131908ac348dfd01372968ce3ed40ae90f747be9294f8e3c356f425dcc5002e9363189969f3316774acfe7982361e6f057a322d667032c5e1b235cb44a7e7be4cf46d3f6b59154ba303abd608e75e55214ac4993683dcfb5f4cf3d99b31b43a054325cb6fc3614b76ba18c6f40ca3a289c6ed338a5ede7677f6a57cc4d1c0ba121feb6cd170419a7c9b85c63233ede2db86d8a52018e2f00ca1ac31157154dbb539cb65090b2eb3a5ddf6195dcd25a2c3c8ada060d2a9fcf43bb1e67ac25dcbe67709f00abc94b9ffcf754fe742addb0b928df78122f0b86a2a3b7db85db4a9596f53048cb0bd2e849b97f99f1dc4deb86d4333a891f1e5e205637a31956cdf6442632618e97b8e2f71f0d97a88908925fd1f19956d34b67b258c49058c9a162626066731ac4c8272682c6816e7a513178ab4468772185d461ea5db42ceeff258be448ae8337f1c8ce44771bb79d6e7736949db9b68307388c7a28781a0b0180bece5e0f21d99309621d6ede5031cd791d591b7296f8fda67af0563598b463e19aed4576c369dac22c7e74ef6c1be036a74e9483bdf534cbfa78455a84568a7a2ec9a43b0be67ea16758cd60c999cd72a8b14dbe544bc142eae6ebe838091602535a127f7c1d6ddc92c07f5852158da2ccc90551edac0f043a951e5c47259001c8fe9ef8a9af5d4e40422dd8b0244468a5a9f0fc62e300f0b80069993cb0b5fd6555c5feb71a9e07fa121c82dca7d9df561b967436dadf5752e9cad9bf587a3e6c18d6fcdb00aa21e6698617ba0166b52f4406b7b184abf053a713e55e4b6d5148651fb29ce1297554a254df7ed1c97c2e30e6afb19289f1e8c94831211af2fcf6e3cdd67a04a65c19ceccf08e80f649b5120f6f6efa2af36c53884ab9a5fb5ce24971b9c907a130605bd996e6a7e4b8fa852d421c5cc46d05148957288a98ede63b556c96b6056496736b1f1832463e5ce4ca602eb3c2e86712cf4d8e44942554d930ebfa9eabaefe29358f23939948616c5ff831f162826732c25c319155808eeca9d7cc5e3325b01bffbecb7520a72b3b71e4c50d959f45b6a79789dce902ad29e3a66373bc1b40a821c6f0e6057c9427f30f3a7cad672542aba0142ac6b371fc3da667a5aaddfecd70986571b49bec52c59eaceac305dde821d248da99058e3a23df496fe51cdcb45501b02cf5338df7fe762990c2a6dcefb23dc1e5a257c14962501ab1e479881ffe5868e00074cb8fafe6477b16530854da6223153680571865a6ebc058e64c11f09236886c736592e73a41de2c093e88348631cf31de6440ae21bcbd045166d3af8539d77f2aa1b202056d23b +expected_result = pass +expected_shared_secret = 9f4a910d1fcff86f96149e88e28cddd95526ee64c491291e72a2719f97b2beb9 + +comment = Rho leads to non invertable matrix +private_key = 00208080e8b3938b09aab715a0b7a09314c3d2aa03e900528a209c655886bf0180a0775a1ee133e543c17d7c24407131f0b813a9287c5c9939d43ba2c1f064015c1babc910d1024bfb46a3fbb1ae13dc5d8bb4576787a592495786a53d4c172cbd3b2cac6a2f5ab68fcfeb2a67a997d809800615c043e4bcc0985de9d671e6e0c8b071a20264c457c13b1f4734f234142e86c23170821d068210b29358694d8ff27e89c59264a315b6591d97d90ede633b68fbc36ca96b823a4bc66144b541cc118b0d60a66c89124d9080ae30f44b9f4793cfac65ab8b8cd65ac81cd95de566ca2c19906a955a04047052a699e8a132e2e48aab916278c49ccd1ca0076b5254784a23f7a8c164229bdb9b46e1c7bd4c74639053cad5226c598918687fbc50323f086238366c4ad9172346626b54ce142053de67ce8867cf599587d0a47aff0a7fc113140c18c40bb31e2340822cac294aeb3a02652b424ac9f1008a592ccf70170246e689edeab03dc0249ba59fcc6477fb668038443bf9a743255310df11b4c90a97bd212a74d5142bc6461a135ce7376995372a1bf919e3db20f22c683f488395a95e31ab13aa707c59f22e85d892830bb550395633f6c87df28401865106b5cffb75729391767522ac236072250c6f4dda196a90bbdfa183113c5fe2e31ba1187b4f682399f3c6c0288977904ab445c0c1b9caca030aa639b35029657c1608e3a654cbc39f8f096414d278059a6f56c8c838b1879b00ceff668190213eb15184a57706bd8c9111667f52a656d161bcb5e7cb8ef5beb6756371ba4297397eb6d0c850aac1e01025001b71a874a25e3ac16450228dc33691b3112de319f69ac29f2a1cdf02a0cd77319931003910331a6268f42669f4a90e79bb820e5c98aa252dcbd056318a050ab71f5d60028fc41594688cea4a95b32529c39c582ae828016644faf4b7b1fa6fd9c305807c43dbba54d44273669bcf956c197ea3462a30be3aabb1a6654dc4a72bbae53982ebb986e249d9438d66b65fa15b723267ce1fc1200bc26656d7c4e1839e02927a96304460a34a9c0a22ccf15c7390afed4a612ef236f9d00c22d04cc1dc362c08afd0a16536985f69f6a15d6585c410ac7a39599c683b9e67a33ee299a5000c7e4acde611bd6c817b1aeb1373835a245b916620be6ce8093f88635cfb619a963c99785cc5c354e5d025f954071e380876408fc5ac7fbbeb4c532b1f1be67ebfacac4cf907be9485c6da8da380809ee102af0c98beebb088c13d29830e7fca4dab8c1e8cc87a3b4198c50686c82626c41414d50878f403c10ac905f39a901405b93366a575338ed7d66c0a27c9dbc4af2d217688dc3909db8878000af307a989234174363f3cc35c25a42d7361ccadeca25a484a01967be2a65bf4998d57943759528d54e498ab18514a5665b87c98339c3fc01baaa2953abc1aba78778b26d54bdb2ab69dd705d6953dea404adf8c82d29b932e144f48a2661dc2129e6a2a1bc5242552374a504e0d135e6cfc9fb91a492e443c608c6e5342361aa8205ac744ecf974b667a6528938b6085492298e97ea827d5a4274ca359a1811c71a574dc986f4262b2e29256c4b52c9a22c3f168988ccca947895240c96489219f575bdf7b6305fe7ba4db674f8b57be7d17947b73ba481a51737962bd0ce801254d54bc9d6d5bb184609d844501eb81ad43007fd3513e7e6aabde15bfec8b74ef67be8e4b61b4358d4828914033d65f89915e6c27e5676c98423f0d2508c343e049cb8044a4a77666a3475a52a4c73f38acd49519486e511ee7b8797b35fa8301ba8fb793f6906304842604b5608fba93f3505a765ba5c329289fb4a69347501c686b5d126ddbc58f5b8c5bbf044a1a58926d77ee9a7bb0ffb69f1986cf10719b2379130872b8c6640ab856622eaa08b298adf98115e68615d9627f339c4f08ac67fa464ab5b4824ca3765e33a16f7706ab7c1deb31b262a3e14870ee4bc30a746171f3c998fc73663320ea3475564c25e9fd869f1e3b94ec15ea8f355e6944b874c469e96050b0ca62985912a4b87c4aa5434e4929430b06f220737cabcb771b6714497cb07b319e57165449bc7904201012fac808013836dde3555ff6462a77125a6a0c6f4aa0822006ba5357ffc494602d87866854ec8b646ef5a545430bbf155cb4e9c36ce2c42b6e48fc26296b2c1415cdc8d06c38ec4c37f9e16afd6fa232fa396832a26c7562fd55b80bea977fdb5b7a5f95e221401a932687e535b0213056297391d36b0cb320cb3358e1ff19a2d239a8f5a75cf40a5b4130ac2972c1a5b9e4fe799394c23196805459336deb36367b6b2c81cbbdc56840ee0058ed799c5c735df07a99043201c2427a4699f5ccacd3c86299e458f3783628258677126556c485406d0678d030afb082b88676745189800fd9d6267b557a3936e262baed80ce471997b0147b3556a8f74760e85391300ae4f84c494a09da042422f196dc0ac3a65687d33ba4219788037a14fc4087b585842290593dc853c68d70c410b98117249654c3332685de518a3beebb5469c4d2a624855124025544afad7a26f5234bba21b8e772c0a58572608857336a9ad070b6b01990fa4bf797902d0765c83604ee4767e11e4bf45ab7dbc9ab7efc180789070380badd67b96f0c90cb95a4152144956309cc0ea6771655ef11579dd703caa09c1e314493b758e8a12a8e7dc8336c29a2a9198873b2065caa6c8ec545c03827b39b210544668e9884353791348bc74032d4a7a00396744813baa1a83b0d1139ceb18c75f6cab6b13cb8722647a730f67219096b50375a105a5dbc960142648fca49aba468ad77a031334ae650ba879a859e80901a70fc2d80083c2b0786a589f1b65e0f83527b60d298b8b93a177901b78c61bc6ba296a342a412f1c48250340a0bb5e2b227b42451aead12b196540c9f001907a40bc68821b040607f918d9199693395d4f828de0502c8c601b2a787d15dabdbc764ad9022cbcc87fbc4a84c22840a39cc610905423a5c4211abe722b69ae78803fbc56b5f3671491495ea9a7b067541954650582a1a6358af04419c4d2acd16910a03a2c04a1ac3ac6138f162d61e6258c863427a8937b65c183734b533c4bf0e52c3c06cb5422c2bdd063e405d08bd7a82dc731c2e526a5d19156b19b68db05421c5d099334bba29da2d953164c6cb5c6860de4adbd60525dc96e1d261786d79f09819d680598a900c42c3042e336828a1700000000000000000000000000000000000000000000000000000001a391043e522eb6682ef71d7ce5fe4a7b6be5a0d5507ad3083378ef190a50a611536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2 +ciphertext = 2a7190d8db048ee0963d59eeb251bed93d3223db4415e438d40fa06cfb65c5dbc9cdc219a8e007434870fa10c8d64f0aa3e5016c67378b670852af5615e23b612f08d0f83d26d4f48e108b6e6a639649d618245055270d7e6f47c48152ce42effa918f74118dfabf87a497a412a0cc464e99d2460e0dcf6a16b99e8f35224894defa85a02ac162e122a4389a7c85668781c6d682422bdff1edcb442a73982c4512111c54545fc8cb65d1fa2ee1ab685cd047aed9085af1144014810959fa49e7c08ef15bb7c97e8306e7a28404c9c26e21b053e9fb6ce86a76b13fc28df94f3719bd55dd281ad1b8289f8c53175838fc406a7d705c4a91a2a0053507fd7176c1efe28bbcac57f555504f5b2ad0a7e8e9d941fc80080f6615130284e428fa18740af5fdfbf848b4c772e38347ea7cad57a72cf02e41b114de1380238a6fdd35d20e1847e92c64a84039fc3564a7ff85ee6c4a7f5b05fc90f95cafe52747b34e3a9ae91b28c659f4941f2c9ad595700c31b0dedb53d6a2d4fead5d754637e89c4aa7175f17882aaf775d850287460e4971dc112c498000f4da174aa4f4f3f3202ea9e119cee357caf9c1fa9623fd1033df981c09a010dc44a71a7d43d55c328eaf205586b225ca998c066623993046eaf93d827a891f1e997fba4008db106e430ec7528286b2b2032d299acf11fd3f8fb57aa2cbb2642412546e09fe139b377ce8f6e1890be4a23f50de04b5c93b701a8679ea102f90f4766d603a164aeb7270ca85faba085f15eabbe1c89ff2edd4b50227503cb31c34f645323fd38c7bffec6a825621579b565339624b434abc090ccc4c1227bc63d4bc1a6e2535cb5b299ef03061f9bff77052fd23984d7d6f63d986cf310474feaf338791b158c542a361c9c222f4012d4981247f4cfcdc3a2cdbbeebf9aecfb97e29f9c328be170d5da3539b277d3f4295c6ed3712627b5176b7ad1d2aed1445ef2e47e46d251b74b906f6dc3c3d9f54968245845f2fcb33522659508bf54e6358dd3cc43c2e097b880371c6cae243b11f36f8c34ade6ff113da5ea0868c4f8a5d0eafa3fd5ac8f5bfe776f5f72791d654fd845d0ee6c9d28fd835dba5c367af22ef2232526bbef604c163417542bf6fb768ce2c29000ec626cd56acd6f3dbd18b5485b710e4456f2a01c25bc0af5aa330a5f9d45bdfe985710351c167556acbe0fd0b7bddbd3a86dcc7d7ad63130f33b651afc897a7fb2a724c205867c4dbc86d53e68b1679626c750fe5335853a3489821e52402d0b1ed47c69992179c663ecd914e77b0c94e870ba17929d53e567d444e592e580b23c160933fe3024a49fa8656236d3917192c44b0c5a30d79a121ff12411dd6b3d443a5490276dd379fa9e3227b1756981b1cc0ce44fbb939de802d16ef81bbb98ad6add920c42d908c72b7abfd6e946dc16598272be95c72a05658070a211801b6ba7b04248898272e6a348b26e93207185c2d57600493a313ad162561da704b75b52388d84b240993fb3a4900a2951bd380589fcb +expected_result = pass +expected_shared_secret = eb34705a8743c042134c4f17ed6fe334ee260a7e77223af5bf77788ddbe5cac6 + +comment = Rho leads to non invertable matrix +private_key = c5f6c739c640b093956cfb9d54272b3c704d3b364ff1c68510b875c8c29f30051b5f60b53f6341082252746b8d4eb52b3f77c818d42ac776ad393072d458a28b186da2b61cf64bc6d8b424afb49a3b2528d4863c876aac69b7c7fa95314dd36ab5f021ba8c575ca458c469409b71b31f3a8e371937405067951c084b6a832ab321642c82f33395b0701e5a677c3c783a47d7a6e474af454c1b31b174ce5285e90608e1932493e44bf48b921d6a58b1b86ec2a38b8ba2a1fe884c0fd608af3986270391d1a42843637d75194722d31bc81b2b507ccc0fdb309e59549a874d09239bec5a41c4e9bb48d6968152ac9d431cc3b290371296b8056ed56898b272b948e556926478291cb0eb1bac50b6718e98b74a1777e685b7b6d7cd6b22bb5846c69149b4e7b292a4153763b768cd5a67b65c3d059464ccc123ac086f9f41c3395a56ff3152fe149d76ac2fee2079653326bdd82dd6f66b6687a7fbe00d9832b09135756c5819b1f66dc44c7b32c2496f63cf077ab51b8626d0918030134b8384c565f0715167b21fab697e84c6838a71176748f12334078c27dda3133bd44abd69bf631badb5f2664f2857c033102ce8284e4b2beb9095cbb40587bbbf457054f4d11bf938af207c1cdc5217b0e9797bf9ac88f3943873c8b66883d2ba5ec7e6696d50a69ba55457853bc526819f1a6fe09973fbd19832312b554653b8441e5eb01884e94a355732e3da645eb849f520bb2bb4327d560612852152f8cba2f77db8d21922da08e60bb9e3b39b9b85bbeb9b1715982d292b8f1017cd3e60447278cc0257898575a0eab1408122bb3fba17b62a31902a567a0821d42086aa6417c259a1dbc93b25003fcdec9f6a5507b4b732a43c444c5825a05119cd089fb2e569f70b4d5e6919faf15d6eea641f5a2875763f42b3991f7c89fe473cc057c148ac58b6c88dce537da8632c10ac851f8916fb7b6ce89ba5053b8d95d29ea5d36c91981042c4aa1330aa098a6ab256ade08592a05c95021606adea0ab637824214009c2b915be450a1f7434ea2c7f562a4fe21139c2652ca8785af3208f4927abae698dd435e90e7474556af9b907f6d73c4ee64897dc74c6a876eba1b598e784b8094232dc62bf1119ef764bd1a3bb2d4fc7de069273a223abe5269a1403873087906db164b58435ef41d7d78b36087062419123c8b1d54da918f34920d3302ddaa300797b32c1c81b82798e421ab2589964334714a75cc84548031d5810fd87890a1932c98bad37c860bb15663cc0e91880af1947b8a26be9183b648b714f763b81652786682c210301852776aa673a1fde470afb56eb0b0114895638c609d8d55585d68c165f7aad64c1406a165788c3364667f0a3c65aa300fc4585e959abbc5e1b316aa108a1cbf703965a74475147a2d323b7295d185571000e43b9120b76fb0105ee7a385965026e8f8309d4badef88b433a59090f88bc4eb4ee2f6c1f0d880057b477e628bc35b023a4c9ab682822556afeb32b6c9088e35c107e2a43506c43a986a0420f5164167519c4029b47bc81e93c1ec149e6083b13589bd2a9c64fc6247ec323b8cb73cb9f9ccfb8bcf25617a87a3c2d8b5158ac8661dfc789e92cc33e5bf55f1b014715eeb1340e17172a3414c573732bed83d3318b40e32a5f4fb064a8988dba93c5f1aa8249b1d0d0393ec765cae519961c109f607306b8322125b0eb6bc000a061b2222b58faa86fa706e27803b02b79aa4e9b26e37130cf14b903a70bf042f4d72c091297179f3a1567b1cd98bcc4be1c38a75139df8c422769289fa73562a8429e88dc60571e933b22d8a9471cb7bc11a6b74e0b62643574f91413e9913229584dc8936016cc5f5560a044488183a53822c77f5b26ff9f2c289e7c88795301e095efab2b84f90350524549c855dd9928dd735a0da461450a31ee2e3b285698b5049000b58344e393a33ec7b114acbb6c69ee40b62b986a7a70a6bda64ac03423517360df820cc2f5a0e279b30fc77a41b220d6ee3ccdd4802ca3447d5065dbcbccc0b3a79e932c1225acc8c02c906c49586037e6a16c5b6c64e6e6c338937ca94c77d9cdab427a258804768e739ba637725b7f98ec064b645e23710d50e1a563719b190d8127e8d8557165a7e61770008621b211c1ad9f004a97556d41511d2a8a290490a0f6b289d3c35cb8830f5f6c4d60b9cbda14b50677c210b6539229d44c7376159c4d4f4b7e1557e1a25a51f6456bbb983177599f7f1ced0b15c751b1046a1015b4acaf53c8e43c7ae7a14202a54a7e3037027fc5e8736a4d7d9145a56cf65b862f03b3a9848c8c2704295f328a6cc83cb17774cf20f9db1162fe604c77100ece175ac3a9f3f297c72b7a3efda073fb6397e0aa8fe60c9e5d26281699c911632d055434ef4792a87c96d17228611828c0282ac82abc3041fc902c09a1c918fe20a0506788a31cd01583847373db827b87b7c29c519ae2071185910b4f586be80488ee85a31c63857fe02a11bb270337b6b92a32103197f260b0929e289f9c9308056a7539394c0071df82591428bb8a2b734db430074f9749da3bcfc46163c3b5f31430e4556b91efc1f62aa912361209746909eca91b40ccc815c1274762b9c697cb7659dd200a29a641db2404b954a1c17994d5b3a49af157f7d645df88863f145734d7262cbf8a640d2b31e601124717c6f456db325b1b4b344bf3a922f624df598756f8a2c2acb0c4e62140ffa4cacf4c6e03828ec903acdecada6d0074b2364057584b3f0530bb587666a88d2e354ba68bee404227d7a963d8bab4c7545b95a984d117ab3f576fb1ba4e912b468889762009eeb83949d39613ae7054d9c76ea556ee4a8286bb489e4da9e4bda4db0714104da37fe1777adb632c57020164331bc29abeb356344081e3907c467657ea53a1111d45ee2f416f945396e6c63df328575808640ac5b1d5a711a5523cb7a18263224ae615840f9c448274409369b2d66b135e57648f07333fa326045681dd20cd9bac300c834ff582c1be9223f427bfb13731b27175c1028f55736ea50a7adbc819c742c22328363632f1917cf5c89441b841c3532693c3718a1fb693b28c103ca3ab9690502965f907b82cfdb4e0fa2884ba7ce8b0768ad36a32ff60b4db45edf64a5d02018836a8230c6a2f8a037b72261f4436b987066bbc90f65f2c940635cdbf1b4c5a853a1113c86010bb7b558f9a773cab0434399874e01afe167908045c34d3f452196000000000000000000000000000000000000000000000000000000794a6406d252e3b08bcb62b3bce496a88019d6769334ea4c56acad3af1c5da402e8541047591efe1847559704339d0ddba611d0ff8017cdc84e61184715c93e2 +ciphertext = 0b52af120747b8cc02ce11b70f30e159c9f3028f0b44757f23deb9b62ec75c61d64dcc774729b5ed59c23cc809a88d075021e7799b50024bd9ebdd3ccf710f17dfa89423d20542a44a97ab3bda0bc0825f76f8f481a52e66c344c024d0350e4d28b49bed05dfa166d8a5ec175e43a2a535abc6dc4decc1cb9afd9f05634d5054fd7b4c17dac997a70798c5c712b276e56e2af4543f9b9e5ce362d2f5f7c2f5af150c9782af88ea561161a6e5892c6a7d22a367dd461971cd801e9c5f2e2fdfa70f39550d06157e66e0806143fa56d5a9667e038d0c818b2be48de10408c67c948ec5cd1c543fc92d76fe299af65f94edd82f0be2ab3cca31272592549699555dc08e1de7097e20b83fe3eced16446d90f79ab46ab702804cb3a0358c927b7d126799f52c47e613a2730680713e8056135a26bafdd8a9e38d8c30e628a090878037da0afd82b9fe89a601d3641b6514b0450e3792fbc60d3e78c7316301b2e3dad4422c85b4afb1d1af20de6938a1d8aa2625b637ebcec8754ab5b66aed8b13b669c81f986d158cdd9bc82db0eaff8c80895d9289e30f0595131bb9aa1e77fbba451c1988117e2ce8b4e3cfa6f0b5c00d894753a9c93d269d477b1c86fbfaafb1dc083c7ecf3c688b36b4107a2c800f17d14acaaf795fe9ff913f702d188a204a26a3c301e44a84c5e32e9c8efb7236943849dc442bba5552fb34dd7e7c486959fdc8df5d380b199a9d637c1d11091406b3e3d2ab587794eafef76f6302c1356813109acf1dbc7380f6eb082a2e5cd4e53f93dc277372230997a0858229f9ffec2691d39f748dcf1c911f8d49d281bb9299582e1dabcac1119a7bed289a1d5ca9b471542be7e5bae58d275061eed3ab92dca9e444061d641f3e128d9d44757b350bcf673de1165abf6e10f87d101562eb6585baea22583fd8193da19f15bd88ee614523305e2d996b04db09aa3ddb422c7b9dfe93237e3c85043469916763bd58132835795d4c6d01682fbd877d132589ff21de3e4882a927971ddab6e2b31a01f3c32ea60f506bab44f8ae74cbd33e551cd7d52791155f390b409f169f2fb2166719265c6d4fab72abdfaf530842ca86e6f2d6a04ff0c96335ea20564f6328f4a10caa1b9ae6a2873a966e2d2ad2819f3e398a493d878bfea76b4372d2b24b93edc9f1e2438ac6f3fcc1944ab99c3729c3526bf1069b866f7b630c5b6ba7e10696326bc0096aca3a6e526e484b8161716b7377f9c5ac7401a850374c3adc7057d0f783eed9c98a3004ccd529a5f0846bb6cecf98c55470a7b55d3c1be06cbe3a3fba17f118dfd68aecd0ba783cc7489b7ea3bb8fac98e70c1e8f047deefc3760dbcf6571305eb1cc3f88ae3fba08359217ba391c1990d33b89174a5e896d655aa36909a4fb65495651ce122870b5e870edbc4b0dc9d72dfdb873cb219d1d7b5143993c01ab6929baf37ae6de2d920eeb333eb55a0a32a1a9ed2d4f29f9dca34969b268a9f26aa6c0d8378aadb5f206beb4f607f308ab64a9b1669c87fb74a55f +expected_result = pass +expected_shared_secret = 4ef9b4bb13acabdc211c3e0860f1b2dbb4ad467478f8fee194ac57a869a4a8cd + +comment = Rho leads to non invertable matrix +private_key = ea53a046a53b7e3298d588b38c403e67b5620c5c73a438ab7357660362ab3822b5e774a9dae973c83a96db79b550dc176f9b0182d37f12118bc96a4982249a352219a110704e4a0ddbe545e4f55cfc2c50d54cac33ecb6fcbb3ac2a7bd4e41282476797a3c24f4ac4f60c33da281cb1313035c9c804d755267894d867469dbfac7be52a34f55c0dc642354e52967b043a0e0167c806581b51519e04af675147578c79f492da3ac0748352c6e5c7ff462008cb42e9817155444b214c3b93ff3ae7d44b5c2b659627a833cc18ccfab4fe6d6513dfa67cec499cd7a0d052a5f9ba378bff75033e69ad053c04b74c8cd756c7cc0bd494129e069cfb4358324066415bc2a4d1cb8401867c9954aa8a33f929ca279696cd515bff0abcb6c8692aa9cc076861e2bf27ec360983f775e9f166964d0c43c380366f19d3f868a7e038752d30e389c0c057b6d93a9ae64746d5b3a146d31269b94c7a753412be68d09d820be6890e5db1ec3eab1acb14cee8a317ee7ba0eb6027f13a540b07c12cb1164bc7d295c16eef4c8d9773bd2d32ead764f58fa48abc2a5491bbe00e07965017ebf40c973343704112bc90849d219c70b028ff3769e720c4599098d172674358bcaa8947ba6b874e3d94e623122ffb3984a0b571632be1c540cc5da45ed1c57da1054abbc4456678249a2589544c3dfdb6330ab35416ca49c8046c9446150660b45e05b720722bf390e307445dd8a3e23253cbf633c8ccb098976a68e481ee86b86a32865d9caaf385842cdd071b0974e807710e2b44c598a4a36bb2af048b0fd30bb6c64a539513ed2a5a9c6cb16129cb88d6bc62389b4846a2a0afc532eeb0f055aa85ce7b43f8099cbf194e664c59e683e535ca809d40f72d4a3d5e287b5ca3880d4af1f1523b60c8f811a17b2881602ec0393d54988d63a1620a48ab25a5336b25ca25d5b21425ee54673062020f065693665c68399691748ed8c2b6ea47b89391e7dbcbb3e4bb8bc0972916aa0ee5b90292b23618c5e9a68bff8476fec1c7e382b1cddd45069263a507c44b97663a9c8b4bc690c89d25893c4caca0caa7633bc66f449bc06603fb747843b0a8ce11d46ca100b3243a8617904a2ae48db08ba24bacd5b946cc96b834491a246850c44a0f049bb3e099b3353b28c3889bd4520ce75749b745e65e6442d970e917362cafcc9cd1a6194d9ba41f29feab98320e10234c1b0fa367f7c3a420052a9ace9a0787bbc420832db814e8f86804fb74090146f899a624ee9739ed55c40b3716724b8a8164b8b976130d89e15dc24e2078f24a953b2781b7d36a12334356a6998870a0128ab5152a89ddc84aca3475f8cf849bd762ea7b23bd2d743a9d3a9a2c2ae4723b5c1a3b5349a2d4bd2907d89ab8fe80624838130697bb1d45f873a3416164f862630e96075fbc5192be26755eaa1f33026a1f201a05b6b57ccc83fe9c191b13016a921532c4558b44ff0a26c864c3102ca921c299b38199f7162938387c3598362e5f616756bb5aad68c68e0a34ce96684597712341f391ca6696538582ab0dbd532c7757b5b24b0413145395123f0c4668cd538782b0f65ecc30b687efa78183de47f53b73831210c513c54febca5e1b4c439d04b5c35913283bdfad965fd4749a9eacd65d1182e83b448bc3d8f25b525d57db01394cd2b99fcbb6b3140c46c9685916cb4d572a78f59af75342188156fe6b991a7780ad5366104630700d585a6b93ef15a8025b8a32c57681ffa88c1850fca4b65928970549aa668477547b30afea83bd3cb6efa038e451688d6932d342336fa074565775680790404770a520b0845a7a09caa5ab20326c8db671541305ef9264e0074505804ca2b7bce041b69c20d0c67a50bb46e57cc920d4405e4960ed1b20a14fc8fde1626f7607a77cbb9e7835f1407b83ef53c66e3145d764cd297badba3c290957180f650844c31feba01ed2631cad26057fb610f302636500e3337b073e33b50fa647eda24425021c5c1c8eec6163ddbb6419aa3be57bffe37cca885b8456652f7c00ea65c78d2db431a28883577679485611a9cb77f95339436787f1369110203ecb1859fe49662bbae39b6bf736266e1670940780db319c969570c719499ef871e87ab61cf435114551295ea4fba96ca5939ace7a9b712635c09667a2ca87a241380edf030abb8290d1856b520aa75e52fcd3316ecc31a8c71136480c41e7c6074207be522155d66a70d73c913a62fc4f77202203c3fb58171706d55455adcf115314b71ae00745764877d44321df625916a5eb5a39bc915a7adb5c16835817ba9438d8772273038abfc29104909da051dc542719d19007a786189e2cc9ed9268486068a1a531c108659ba37383a9585440dff07116f4b5fe9b1a2dd73320b2051216009a498c2c64b59aa539244e487464475918075ee807ee8bc9bd413af46f80717f31365653b1173693f1c5992b45770c515323c74296a0ef3e8b52be344f1000f22971ac19233f25a4c0df631a2d2b14fb5cb85d6ba9c55a5dcf42be1f18f9be91134a64c57a723f02a13d2e4029d6baa6d0aac1dd5cd6d483c3b7bcfe7f69202d321d4423962a304dafb930cca0671eb6ce7a0754866827a94af22b26985e264af1278cf481193390a2e870b413884c3da9928caa8ea5595a4c4aa2d4a6f3a9956e87c87ce699f04640d2d699a4ff314abf653674b351c69367a7c6041b87aaf8a47ce07857244b71c16112db463dc3239c3908bbf715b86a2b7edec09080c1840a2687c4b57854238a2555d9d2469e798cfdbc6ca06470bbe3659e1949df3f8a6ae42822c8702271029689b4ae1573b66f5541177ac5e05118d4364f43c79d5d2cde2567811617b06965cae7491aff33d5fb4bc24fb8a69f4c0c651cd53084938a56e792c29d941abfd448a38830f9b482b26fc0f5f8a25a2c570c51a62e605cac0a0b19d3b3d5478bc879896a3e01d5e6a97a8cc876bc96ff3040a81c87afea285a35b3375d5b8f95665c1bc6896e46b09d4a5b13a48eda54cfb168a74349887a93ed9e5a1f40a5e37e2a97823a2aa7c5cb028a3e30b19d4b94857090a3e8276ffd45eac0240dde5a80f46ae14f184fbc29804726ca50462ee2583cb92953b22839a27aaac963013b13c1d1847130c96371202b8027f3df427b03119e5e57284f4751ee76cffe81f315932174560dcb211dfa13ee9d242dff22934550227ac0f59698bb700b97bcc95fec45cc65b12e25663059565330c000000000000000000000000000000000000000000000000000000b2024fa7dc204dc572e389002c78d0f96de9fd70568e31343cc05c95ff1aeb8a5ea63afb095b03165e6f3b9488778fdd771036713df7b893ab8777554eb05f64 +ciphertext = d421883017a28b1b0fb5cbd2e19168a0405633601a3ca939f5660877863828dcd366e6602ebc6b7410fdbdbb148fd9d9b5f803467e0bf26a4b3c84f2f90aed4f64d60ba2862eeecd9bda7f4ddd0c031c231f5727a9681845774573711afe23605c2aa64a89753f8aa0c4b51209c3117f111b82e70aa6c55826e12be53216d299b1ff18d2fc2c8c207131e462d614a92171bfd0855a2319ed6a4812d6385a3786a39b489405fded21cf7a9e5d581900c3f04a75be593d4ef5955fd7419813f65c3d672a8be0cf12b42f19d3775a489090cd8cbd07f2f5ea5d4895e15c53737f43dc934d2252873554ba8f50bbbc4a6964c746c34541eff210290c3b128129b2f8d7e033ea6c945d666c4baf45883fc724da572265bea46d6036f029a7d25b9adcb0e88f290c553378a940bd0425caf60374cfbc4dfc54879b95f7ae4331a8789c2086dc4ade9c580bb8eb2fd07f3170cc5306136d715600e05499fe6940aac16f82759065a153bdaf51335affd893c296bdfad1ba11fe4b10b49c2b2bb54444b613d6b5c4fcf458ccec4ae711f840c5bf7c75e4f808e5da7d112b735345d7b7cda8f6aa8489fda2790d096dcb9f8733c7f589ed047e9a56e4dc0c5adea121966be8a1215eda38db95efe2ffd6356209fabedcdf2ea4cad4b0b180ea2522d98cae0f09f793f037dbedd5f03d12db9016bfd79e07726cb575981da69f88a8aa5d104e90ea53ab57fe27b291bedc7acd5aa4449053a7ac8012fcf9899bfc423c0018e539321a986d4011f9beea70ca0e984026277290bd9373da79389341c90f1ea64de20a5415dfa16b7857df261e68d515c497dae0a6fb5b21224f0b2a3125dc3fee9395316d4f269154f528f5bf3ade728f8cb9d27147751304ad1239b955c911ef2f61f0c193365ed6305d4c0bd97c9b2f70e3f5f60fb9cda8128bd7cd6e6aeb1e7909881a6a35d34df4224b0db7631df1a497a0dd699a086aa8efaeef0e3cb582a71deabab97bfb77fcfc2067652311604d56ef3999c34b72793323607c59febf9b41816d03a4db06afd9c19444abf09e1126a5cb19842c9316718d3cfc48e52a0181521008cb90607a18548c6521520d887935c0d789942ed48e68c28905b267c9493e33004056ca159b823aa7e42d9b5104ccf165b0a8e8dc19a3db59b415049b1d82aab62bc6f2adfec2ae128c8b79c0c9d750ebd0517b6ed61f8345aea60c04968896da13f84224fd92d9c56862adb73c0d5c3ee8fff1c05a4586446f0a74ebf39898adec7f07a7ba97c138530403f2523d85931e406d476c8569e0877f73aa37cf41f0448dd2ebc89556e79bc9a081e7f34586cd7cf2f960ce8156a3e500e63fc9d652f9af37bcc36117449b06f67caccd7b9f94782d84791990497761d503d07fbb50e1891dad302f20b16bad86e1e31f7c03a9172a6f079e244314551ca5772d43ae75b4c3e44aa362f9a950c7007a7e3d9758f8ba2664add4e37cfbede8066068b449a100db9e35386da603f7abad9fc85d32090ddbff01052c1601 +expected_result = pass +expected_shared_secret = 96b7761b785b1423456e7b84f37464eac941840ce73cb0e5903dda9c4c43a296 + +comment = Rho leads to non invertable matrix +private_key = a7d40e120206cecb9458a1464b96c447db086780708c7435e40bafe1ab8cf26caced91b888711b8b95414e080c2be24d7a622c2e0410fb9c795a25a50554abe8b9049f9890e29531cca88e4284a5bcec559f939061b003510c8a23991cf474ba6676b0599c86dcc0976f3b61cb624954d3914bf28e109193ef1b9efdacace8574dceda34905485e1a79d51c8ba06722150d8a243d69f671c18b1c2a77c990699b72ef5b1c4aaa121a8e5a6cc971178127024166f2593893bf3b9e0db273040b0821051cab28af5196b8937538a680b39251b08051502c2a3d5504f78b767dce91e2116280c3532e9426b93d8cae3e9abc5aa4832c6bfb02a71559bb689f82c22835fb314a5e6d44bc4085eb39ab41555103033a0f4b6aabfc5246c93c07840254989301f88776c06c9f808369e18445058b4d940783d57b7d7901b0d63a6e6512b31a63ce0704028d936462c18eb4bb78accc3dc56884d9837d8632a258c4e998cc536248aacc62f7b9b65191a28a27a1cf44a0d512875ad5112e034c0adbcc67edb84eb000bf3621e7c1c5cad1cbd06f848c5d8c3601b07463b5c0e33cd260a2ec99a972c47cda74229f6292221391f37d20903aa76eb6966195acac6373a41db78b8f7515a473ba04397c2e94a26a6acd8f2cccdc572d4b60e56880fd0295152e18bc79699feb1a0b6f6c7ee19545f4124eeda5755a85d79fc2dddd2848216576e9ab4d07b7ecf77a74937cc1605602c62003dd5abaf601b55ab0cdb37bb3110290f829a742c5607ab24a50000f3191f435427b5345ef884b91811bc44fc4c6de32bdb0a73edf80c8783a5a6b6a2d06657b16104cd62ad847206ec1b87729260e91b2afde6b0f13a87025c10bafa88e1fb1a66b98a5308a2c4f10874324179a2729df786627271ac5a945072beadf878035169c543c0b07acc49241b7feb406f524b71c787ed757a3d48c233bb75d97c42e03b9973cc680169520e400b00879cf2bc9119325586719f22e1b2de163184b2c43735b2c1a8654c92138b90c458421f681136e0d6c417b20a5f8c126d3672a4073942855b127a87ce96c7e34861923b3ea9bc9f0aa277746927f0777814862b0845c3bdc12309241f387cc6f4ba4a9688b947ec8b5603ce88ccac5c35756d0031ab4a5e32f6ca97184df2acb38f724fee64a6a688c69f6b913576af98ea2487db097d7c81dbc2a29a381b2345495160c348e8207e313929dc08412304f6a01c90f6889e23b7974bbd6f081f52dba8baa716b53769e6f71b962156cd44a3f50563efb3b65741aa26e42a3720ce737c7a7ad5c875663bfe36bde03b106647ba1ef098569bc10a0940cd300d58571dd354ca5ef714733bafa4308b3c4b7528862664a8656d16c9c3837355e39072db20af20025306390ef32931e793e33333cfd893c6227215027ab7ba9cc0212ebc749abbc62be483b3e2406a5ca10d7fc534166646473c27979053928aa5445c4c1c26cde40777aca39f5a64161c322135fa176d44b694341a0d3a05de662ef0e1aced53c4ea2762c1333da3f987fac65ea63a17b55c3f681c568d648966eccd095928f2e32af2fcb0674ba3a50350e282c99af149ab1b3f52d3b9f838b1aa8cc5a58974c8174cf998b681737830ab9132c2b925ba0a9dd7573197a72997cfc9fcb9b7fb8f7f7b881b280e43b1719fca705a209516981c2e88a617625beba7acc5a2335aa57daebb02869339b907cdcd2c4aae01a57a58702fd0883732c9b334bdc6a9bd8340bd83d5b0cef4ab2da156ba283005111360695be97576dc880d2e2a32a9e666070666e4f46b14f2a52d7006c94803ddd872b02bb31ca08901c42834d95a79fab04d8c08bb2bbb0348261f8426cc16720fa188458a4224b92dbfa067c3b518cd74a639119555844df56c0cf9023259d97fb326c45067c18adab10a881fbd4354f348139613b8f5e911b969aad197cfbbf4c1e24616b8f0b87e4206e2c46201b99da006a3c8a704ffe6ae36e3a7c07373dca58e1aab2bb6cb62a3ea5a248450df074dee89511e837b66b409061abdca119d00047252668cab621d0ab82518c66d41d951af924cb6b0189f9654a4a7b58359bde2e5ad4ef729e3d35ce95a589b237f03d10604002debb248e80a93957830c2a06d483c9f062c59b7313cfff647a80834809a3f6198658f792ecf9cb679a53ed41519b5b91015005cebe8b343d16928b9480daa3b025c68c8e9cdb7276bd588c8af8296eaba9a6ff44ff257a4542077e70a73a959738a48c007544d7fab9e87d25b04a01d27a8473ce83a6f91b3c8c9cd0493c35aa01fb38613f5d1932ee81e8622ae09f30cf5394e6ecc849fa881a555a1c4a7931e91100b7b26797b643a3a5773648609b5013f565ec161b657c653de89266a34aa6d80b35450bcafda7fbf1c0aacd8647508bba9e9b2ae6675149a9e042b6378c76335857f0bdc2b2a93c2e23b6f89d743415b71371c9e61f4590254508da401b0d8789b66c6abf2bc31a8560f988586301f54d6123dd8a4e7a41e9246ce3cabb721db810ec54ce806be4b203b8ff6574b397f8e933d930c23f6a128f1c17f017c2c2b22bbf52b4741a8c2198b6a2aac6836c09a3dd1115074249e26180c850567c33fa55b9a23fa365cb8c425eb5523dab4243b3cfe3a7fa7e75aad3b206a32a11282774745bc96c566b05562a6696efc789fe8989a6fc218011c4cbf15b960401b4e4937c752aeda715ee0e39225494db1a0acd61c704a62bf903cb6219951fb568934f2bab9595895390eb5dc3ae6e32390a942875826b453b42bd32045c5cd917a01e283812ec0274de627c1061a8208c7ea0a4b5d71004c77419fd080e662051eb2692d7676c5f319f728169db707e4b9c538f9c7f3d823a53199fc9a9f27f8a183d62247529ad152cffae14bb2d33e15dc669df777ec06600723a7da656f7d4463f0694e46649fdfa1446306377541aaa7e3948b83b7b39522e0eccf544859f1459375db295a879f97755b40e514f6a22d90f20f22674cd071a5454275af02c461152f79b8a247f69a56aabd6a4275c9757ef708ba492892473ca461730bc069a5ed103eeeb21ab5d5b96e868f5b64bb5f18174710bed8108742c25f6fa5b598a81c8a509454d8b6b3744a0e85a64ed9c5855c3014853d4836565419adc67b6566968c2d82bc4bdc424737894f48c19f60079df447b82573c2d28ac4bb29c9272580776b43d21474e52e09ac2255b95e3b3c7ff02442dc47000000000000000000000000000000000000000000000000000000a3db11a0e8a06e78944c960e175fd62f4b32871e83ffe837b7f34ff75f9ebe588bac5e523fc2f73973b46b1727891a6077329e10e94acd027c9dfa38ef4e21e4 +ciphertext = 2363ea527c82054080a7e6dbfd16d3e96e07463bc44815397c970be5db84d68b72bce2772578c82f916b29fa0ad068e9c383bde469fefce18c63557db19ce93f1c302a9fa6d1d39faf7b4b5774b045f825ef9139cf113b531a12ce15c7c24393092eb886df18e295acfbcad1ad8edb5d20be0a412afa1857e722a20c2740d1a3ba0b101e7ce331933057f0b1cc19161344c87340f2b78510dd754395e6368e222bfd9413df061a3be812022ce2da08bc4de3bf6e657a3a80200e51f82fb098ba9770178dfded93c3772c4aa610648e7b5b330ea921c1547cae8d2a0621afbaeea92f43435bb40020776f529a7754e7f318f9968bb74057f371eb11013daee9cf8128046e492517b16ec8722d993b345fb0d0c7eb615d1e558acbb39f74e08572bd8ea2503a319767899889196a0a42f26e7434e359594a87f0fdd68149028bbe8bd26e3b912e95776884e83dcb3da50659c54c7f49832996faa3de449cb61715b81f75887529c7e8e98f39eaf3af683b5fbb150f7dea6da5867e0aa9b2ab42ba7ba42fcfdcb076690255d5ea8260c7b106738a63e887fc6993ad0bc93d1e6e9ef893981ae0540200ca393ecb5f7b90394dbf15bd33afdfa499199eb2c3ccd93a0e54fc2211b705640e87475c24e5524bfd5a80fa0ce6cf9db8d263cc203e52e6bc5891755331cff855b04c98fae0b416c61a8e38f669619a44b455752ddcc94fe1bb5608ace3029ffdf881e09c49cd7a1e397efd9f47c2c598c624cab914ead90bc50bbfc5c1aaf42362c48d4c2feb42f95057502f30a1a9d9baf49199d05c89db7cff332c24c7cdac1c3317bb884c4ab041580d3c50a68d3444ea0046850473ebc5bccbbac4f94de8dcd7453ee15e001242214cd26548bbbbb0681e4169223a7e0fead1299152476e9eb86f2a84c08d5308c61b9af960374f407e0d49af22d871a7fa048aa386fa83bdcda6bf1fd27996d597802595cb0d85360ad1717b9900b3f6d68ec680693de41eea73607de43668e55491b9e2670deac0ea38fc3218fb4797ec037b5c5075f7a65bb958a8eb551de7c0886f8d5056c1711cdf2c705be5d879d4dd45aeb3d514b09864333b6c8393fb37c4585018c8ed0d952df661c4808baf4ee3b2a93248e0ce1ba65b04d2ba5e520eb2520039f76c637749751e504acc792dde698b04a4b0b9e2f90c98ba8beda3c1a26c6941e509bed0d4b44809e27c982d1373f89a6a5cc60c3e4042f6182fe28d2d1a034f21ba4a007fad040aa2e0762adb6bbb92a218d3d18919714acc77ee1c281de78743337fe9a0d788d9993b91808f7aae1e88193f6fe8422c0876d225d724bbe5b3967f0fb2c2e4e2aa98fff8a8d82be444b840294f51fbe7972dc8b4cdb701b733b465002c1e49fbdede6f4137a2d4d12235f3f9e7726ca176e4229ebf382de8210a68280ad795199ff82740c5ace14acd100cd39c29a28bdc49a8ae8393c832416f52dcae1f3c24c5a9afa613f8d2df09eccfa1194f39d69cebaa778572f42b1d8537c9364cd165f05f +expected_result = pass +expected_shared_secret = e02c8542d46fcd5031c0efe0464fab43d07337181fbc4ab3d58bb7bda0cfd7bc + +comment = Rho leads to non invertable matrix +private_key = 610c36a286cca4815c657bc2f28b854aa8602890bd6ec2700d64b495b50d049c5963b8294752942d11c1d0182ba6704e54c003b828bc58b6ca3ee0823607c3c00bd0471b4df571c51db3003e4cbe6166c0caeb747f79573f5b8b80d12ca78bc1d3e01a318bac91fc863198afb70cb9256a330faa06639caa7ffcc1248b367bb6b0bd905ab0098b79b85ac5dc083ed43ed8b248dbb72e5ad962b3201c92b132b2961d9867b48208896c11afdd929be2792839674b18e4c1e99a7df714ab7ecb58570281ca80a92f148bc492797564682b560f1bfa42b2f7734047cfd6375d3dc05846da1d3511cb3c8221d38226f29ca52b07471a41764f86ac3418a96aab70fc8454d6823f8b7c6211d216d08c67eec474a3cbad8f3587e22670ae5a9938651f3b48011341b6140ba393621accdc3f606b080579197c48967f1c8d11026d8f90b0697869ea49cb9db086ef687227b2549ac689b564326a2280d8384698185afb25941ba0365b0c1939148ed6e1bf0ef5c764832178d47a01c3573aa268e168b740194a9b36ac2580a7bbe1625900befef3adc6fcb356100ddeac4393d388fe647c3d623d1e6a56a96073bec59f5fa39581245e31aa33cfb865bbc28e9f2498bad34a5bc65c517bb8cae19b6d1864fd7a0c48aabc78d0373a84c168f33ff13a9586aa349a185e3528003e804c8cacbccf0073da46567f7c3ee6a55eba856851234b4f3725e1bb3609e50cd4c9c96ff947c4b048dd7c64b3498d23c234e9bc45230b8b0c797946d0980dfc7bbc5773620b8330262ab6247fca5684c9fb8c2e692c3f654099a7a93d0aae62d24eb594544a81431f295bbca7b15dab7bcf728e3dc61f6354a459a120c371030f3b622569a78762b1cb08248a455e0f0847e1531d194acb0507bb53e9c0e13c8b2f45ab06362be3d9bb58ab6d90825a15211f81f4987000cf74355a28ba08443b3fd9d26b70039955773f9f840207f696d0e7a4989c4b38cb23df626e53b7ccf7c1bd96bc3f68c20ba180a482799d2cf975e0a39d5fe863df954665509b3eb63c257b8c9e39050bc4a739468e716cc289a79053453a28906d003535536439d418736a95763ae222c8870b66f1b5a9978c29d238658a3e773063dab55125e851983706c3ec68d7fb1d595b55292885f758a8df752fd3d97a8dfc33a228c896a44bc039ce1a2069810b1304d44522b1a5e43756cb843b5ef515d89c310f442f585259e5d460dcd578cc51ab49e63a7cdc2566d77e6959a7d24150cf0b413d335efa65385ae13b482b9b4db4ad2518b71704098d7481d2233e2ab201dcb4a1b3604149710de3cb247f29ce8ccb2ec062b014708f397482dae5936bec37663c849c9baa9d3cc88146b88cf970e574694af03fb78205e205435221b32e5513989047e62775f1ba5aa89a10c9d35cb566328eaa5748e9c5057446f96cc691d80208940cfea984df8817d4507aff0a0a96b8c6729329775c8d75935d7624cc0a06ab7a950f2b73ce4d90239706403c0651dda56544ea59bb06a99f00bd698a8c3f127fb4a3759317a05ac244a07342f9a47257e5649dec2c7050188ea669a97c137f707f4e5b4c57945f82c1b0b2040476d73acb54724cba0082600ec863a0a0831fc05c3ce85c3ee9417f6c993412227e7be59aacf03cd9231c2e0aa9020c2d17510574e2a1e89a9905722a13b23d3e8561fe37b034916f0bf61aafa00bdfb1321f798a8b0c61062b9835f389c33b18169a156c11917d8949e9f1c8ca2bc0e3803674436f62798295982b6b3933b09378cb837c5ad440cda657c68c76806b96dfa865e0352bd5290b91a42fc74b1e47033942b07632093b5e717b9b90120ef389b8b2c4c7bb324807251b26c779327f4b776644a55e17e4a67c1a3ac2457636a057cb29329dd0b5d0f3295d128394259649e5b735ab80b3738495a170dc9880be07ad06c2a60cb7a5791295e9c03f4ab96fd287097df52942352cc31c9ff50683ade3c0a4015216b28b0b695b2cb62010aa19dfaac2ad2231dce54aeaf75197db12c291568d5a9a8147280cd956d9d67f7bac1296025801f36eeae79a2f71065f01759f68b30d521333baa96a998dd1946f90380174450692fcbc0e56a31fa238cce178a8b50477831f0b203da58943af694caed2cd3b2a6f58ab3ada92cc5a1860e0f9845f5639a1f555a7d1045d5a07b428b5f2db893dd3a80936759b73642aca1ec7b1535eaa36dd695707b89a9062ca107178673ab34d31cca4944642babd3e79045d4bce48c8b7d46c522291a6e81330f1071258219b4245cd5e381686cab8a9e10120e625516c1299c184066a3bf60a1dc8535398c43a8deb7546000ece3a429003982940bef6870be1585c58423f419a042c30289c80b6f5624458ca8da2713c564282aaba77670c73be5c7bf0e58d1948beea9a97750a06bfe472d721bfa1e54b23a35cd5672b4e84677179579a29723d5003e7a44a8e691cdb015f4ad123d13a8da615a3f52763d334a6a07258ff127e15ab23b0f29e3b4061914b8349056d45f06886051d6ed5a6974bc4d38a7282b837f18082759530c20689f838831a937b7ee74d4ec64b57693c72a778dbf73ebaac041c4b846f78585a81971289bd51a3359035ab12222a3af7bbed6a64a856601af10efd0b23e3d06df7d243b04ca8c07a0e2d0b883c997d74fac67957469189a1ac592b83669f2f638e0976c373fa354045799824bfcf9c45cd408343239ed168b8e25b831d2c200be6303e93103a14549ca30d9f8a0e4b976870801d6bb50d2ef8914371414bfaa56e724582d14879634bea15ac530983a996a31fc9578d88cb242b63057802e7bab2cf2981fc2a9aea2cb173b873e1569a73356cef7476b9fc3a0b18cd978011dcd8b6e0b3c0769069dd94a6f39c940f6a5764d8671208271820c444d1c2ade4043677b1a9d7cc04871981838284c85850d416b7d2825ae95f79bb95f6262bea8a37e240bb02d6ca8fb03ef2d221ee818454222c4d4b998cf586d3434024b304b6ca68b478c773955f2933921e882f15c3ae726547f9a019de89b8335ca3e7f74fadb8ade6c061106c335e85311dd3208724381e28cf3636ba7f784da2718e857467e70a6682e5891473002e176adb848a96b26641e89463b488c616ba0cd4206583804ef8ad9ce3668129157077922bf00999b711af0973ae169ce7f81157d298fe033a7d547cd5b617cfb908a8db40cce2022578006549c05c594a8b13ec66bf000000000000000000000000000000000000000000000000000000ee201edabcebc02a69a6e0bfa467e1541791f802226c10be95df3819959f493ae42ed33e0da5856106580e02aacd0aa1546d3df0571d17452d22f186d011981a +ciphertext = 4cbe8e1ceb4f29a5a28a605625ff03b2ab4a82f81154af1731b0b930c6bb04af7bff3d7c2058c5788b389cd258851b6d3a17b9667d12a8fa61ba7c98b573dbc9cedc3e03a8f53b96214a4e1dd1d38f321d7e3851531246fcc1a2a1f937a101eace805aff3877438dee254bb7bb8b7ef71f2a202d36f532f2bb37f236021662f7eb0473be940f1b63f74276ac8c8fc8e92f805119e240b1df416dbb599a1a6055eef456d7ddc920fdf2277c6b72ed23e3b4b77d604974e7c10290214ed8aa9d592c2f0acee64a5a06ae2d95cca227c23e48abec08b22d9ee7ad35b0fa799b4b5f4cc0effada3f23fbf30a50ebef37ef6f30f6aeba700c6b8d10bf3141dc87e8c118d13bf23c9fcc8aa7473d2748d7dcd88fe5c2311d69ea29c6f5beac3b0d47fb5563b3c57277ec69e6fc2b91342e79b70d976c4359c00e0d08733701690dedd6f93a2fc751fcb020407d9d53ac454fcc8e0204da5e9e5e5f48cd7f3d787a95cb37e01f9bf9ee87e174e4367a0ce9f4aaae125a631d55e13e3cef3e6913f3203b9239a9ab31f297b6aeb5e0044d05fe3f620d3494a95b19bac5c782321651443716ee815ddb9bde2fd4cd0f274feb208dcf50e3a8f68971b69e847e21b948394bae8be37dfd645006a27aae0c4301a0801adf533e5229c6af3d9f9196e38869f68f71ecf720e837062e13ff754c72d101ee202b023c105765db30e5c51c06679b8cd504b83525a3e4a277eae5b2e6d59156cbe11df8792c3563c74076f93357917a1855943db2d68d89dfd53041143014142361d1617aedb76b1d536ba5b3ec8bd008e8d6e709565e02fb4eaca108623468071c9efd3de94d0a380f7b84788c7d17a5ff7b158531cd2fdd72181dd98f2c03aa872cb429e6f2f5474f27f6533d0a24f8a78178f280d9232e3215d89978ed0e0e00cb9b90ae09132bf14d9e0bb23e3f6c1a2d3139d912fe0b2dad2adf2a4a06f392db783167a332db072790324f9fffeafb3efa8547186ff8c198fd47fe91f0c2d513a91cbf36dff2ee65234b9ec53412f44c32d3bd856478507d293761cf61b9f9ab82a1c54d9952124069865b94258d29a2752a3c518f2c8407e022e66577281aa704fe6628282896ce6b7e8d642c7193f6cba50e8ac0b2ef48992649dc8180632a4f9b393b6ec5c0ff2ef5e33d5550c445ae9e60ffdf7adaf9375d3111c9d896d8a4673cb25ec0d05d2c8564137998e43f7dd51f7b7a438d1c09e02e6caf1aeeec2819ee801992b3326d45739263b66d5d7e483c6fc00bcf69b969421844a0042038907be2e853d965f26f3f5d543230cbcfcd7a5f3ddcaea581869cbac5828be28c4bf58c45f539e6681091f9a5699c9cab2f17f0862cf65454513977854339a81aad65fa1a631a4ac1d9275bbf46b11d8b62c9417bb2f5c30502665ebae8784f281cddb3dc0ce1e76d61f8420aee5419242dd5e09949d18d3fa1a81307b51b6b8a30473076e8041f46847b91278ce78bba4e7bdb2b1aecc7d3e3bf6c01e61ff59d9e1e9eb7ff7393d9005dd6 +expected_result = pass +expected_shared_secret = e572300d1bb28e65f38527a8007b312961b7c6cb204572fa0c7f53531c6c98f6 + +comment = Rho leads to non invertable matrix +private_key = cc389888219463a7a5f6c2ca3014accb3bc26f2318f593876de6a49822b6c1e694b7e5aa9140a0765b6334ec762c8bb018d28a99004081256159c836f4f800d0c9aa4a7136fcd89ba7cc1d6a32b23ed181b3fc118ecc60096a4ce8261ea2c0a6ca49baa28b75d1b40215367e6a33a1c177937bf43a70c3889f6aa239e20e499bc7a836694a0bc2912cc7cf211ba20c12d5ec312da2815ef20c8565712b22a927451271040cf4daa44d79705b97993584424e7b3224a5583e5b8eaf640e85015676517113f53a415220fde3638b9c0a38115e668545305ab298b9923bc16de5b9137b30a39a2c8b5fb75e4d1168593a8eb0e067bb9343f1a030e5228bf0b3a49169393cd14f73c2b8221b1267627d80b97d30544b02a4c7bf06099194b2d646596aa439d82a214e6cb9c5ea1ded727c8143755cf881415b6357661a90d5ae759475baa6076eb478a5826f86f9868afc47ac3a02a0e84579a25466a63d933b071213c886790c320416d9422d280745758779635ba6f848440b2489144866e8e018200cb8305b3060926d7e7213089a06d044176b053f3bfbcecac7840dd7844ec29eb17bb2caf321a5b17848c16a678552727a3d70c34f024164b3c4856b0a4ecbc78d345187c6e09f055273bb775078b43ecc534a40e66592b607b56b5f9304aeb048375ac71c30464e979a656f1728a7b700e3b33e5026bf40198b94455d2be37cd65867522b20bddb5ecb7a010191254b8a403f37c4577a613ea30678daab55508b16d6020f074504f928dddac1e8367faf6199715048c96a8fd6bb225715accdcb012cc856a76057b6b72b09a4aeff5b8ba278c54a750596e82bda45be19014e8ff52df181435ed9ac8c402147b539ffd984c291535b7bc8b26c5036352520730195fbaf40033fac450843e808b9ccbf03b40a9ed657f6ac4af8b65b4e389280633d79799e0226b28b356fc2e39f10a80452dc934caac7c3c521f0c5544e7821a403688f08378c3086d3ab8f7e4036ad516778da606204aed3ca1ae8c42e11038a64ec78a5fc5dcd0475429124b5d665e4acbeccca3a296a8e878b917b886ec7f029491c661bba684ac4229cd71373c829055b602db0518a481230345a34a709010a03e4b197273510a0a24465288c327c10c75434d9473208a7964db7792ea81c5fe0c4bd967c3f0c98765ba7d3faa4e6097f09e9bf10638fb900a764e4a0bdba2f19165bd69832681310a7a2585bf06322a3238dd26a4807af44faad999397d4aa14e76c2cad5326ce573d7ca04c03db769dd01a65583ecbbb991e7a31b59238f8741845f1adb5992607184dfa19a9e8840ed9e1622ab93031e2b448860d411a3d239277052cc8ea71046a0b1ada191a020c322d776c6655ae71964d86314a86a47b6a367b8ac5a4aec75677226de0c1864492c88fb70a53187cb76835d5477346646a9da97301156a3ffcc231f9a0da760dac142674e5cea882364dd74fab66901dbb7eaf037008c52073054cc2f94ec845444054058402515bd206d496bfa02c442c746ff3e662b899c34c40900902c4f8ca146458522c6a7af772b2df483f9d840fe07464b0c66fe1036c070c6f70278e9506342663b07529247b1697f8111cd446cb2c44753cf29cacd39a7c9cc96af28545c40a6cc64f5974810ae45a97380302375de7c95b44318815776f80397c4608cbc22086e9fc06fed87c6c780ead85a8d5a82f0fc2ac28366f229566cfdcbd0c65ab3c112b70a908a85660547719e8304d513912a215acd011918cba5423e9094ccca3ef073832c3b81863242c864a90f1bd9e6359d9c72dbed85e76a926f6a84cc4a4839e5266aa9020f445ae1062b3751a438fec3dd862a8d7831db1c84fdb9102872b2c55b28e6f00623e2a971eb4982842392c10bc3e786a5ef5be5a69903728196c028a0ae20fa5921773f35c296770c8cc63a48844022a32e6d928ef042e0537876d3b276ad42ee7585b8dd38cfb58492e28488b0488330b935ee8701bf05372abbf4bdb1ab7da67367ccd8df4469c13355992a036d0a0eef51045a9b40ddc04c492c784a945e99c2a8ca52b99734e3116caaf2330ff4195bc2776ff8644d4d510f1d7cea4682b1533b4c567a1f0d052ce387237b92fd14246adf34ab4455f97f579d3e746bd97313ce10e4a331bdc8a1974481289000b39baacf9c757dcc357b2ab4756309849881289d66f7692a084dbc9b92b671ef115b979b26a8873480977ee621faf6b6a506b2fc2570ec44a9d5eda9d46f2437749367eda6af411ab661162ce8809e2c6999cf26ba5a37fcfc009f60b7dd857bfec86a3fe095df844388c31ab44c26b090c4afe58052a80bb39e614eca3c07e7871811b19b45224e7db6cd077aa4dd366b6755623453fd29b42af2732db855e0e829a9b51714f362b083bacc9e68eaa8507b0127b40227b9de014dcbb93b8db567343c1c1807d5f81b64031c364210531008976aa1daa866579aab9a6e1baa049624487cabf044c0e576902373ab2c0ce00f22a0bb61b38f98f4bbb5bb4018f6ff8a815d4338447bd133a610ebb10365276b2d0a473281c64e8c3677741a1a0c360a8797a3a4dfa06ca5bf50658600de1175822e27f187b6cf7198b8427750246b8db6653e448a16b21ab2e343ed4d55287341155a7b1b9d92cfadc26e138c3e784c03bcb6e36a1acd0e0ae04d78cef528b9636ab4fbbbdec0b7ec5e3c94c808f90646b7f833867b654fd9415d4b971e67920432103d00928f0f3af9274bbac2c5a7bd7cb27d2b1318b840b899257065026a576931735600698e2d49b136c641e080e034544325780fd683ded1caa11052fd89b5d18869f8a8024d4657e4870ced241974d2c8f6194886b509bacd5ad2ecb8cb2850bf55200d2226602a640e8812eb26a4cc0a960979ccdadc5b31d98cc59283df09a6c2d5b7f6ab703a6305709d10cd968826c6a019a264210c699030804db419c5ba4460b25510cb43e16e36eba7b74449612eb73662c79ba481816598045f601be5da995f02229d5d130f6688a57585c959c69cab00e462512e6129afc9bbc5845c9714a3cf14a1061b46139c79e02849b6114b80a75828cc946a5f00096a4a43d065ddd5897f3756d0bd208b4f8685d2a165442c132a74f78da6370422d0b01b812c009da680ae91ca0fc56bdfa36a32a6308c8eb32ccd23ed3eac3c9a029186a73c8d63e8fc92a5dd42905198405c76a2ad92f9a21a2b62b11e8831b4062425c62000000000000000000000000000000000000000000000000000000c7251fbc2a67f5f93c6cc8351988b94fa564f61234b66064e5b41eaada415781c975767ff083234b2979bb109a24a27bca17d170abd8d9e6ad3c3ba19e306bce +ciphertext = fa75f5533fef3b994435bcbd3d2080030cf8b04d5773762f1ca6fbce54d86af4ec2f36fac7b3f249f4bc11cb376b23e70a7ebd39da39d9377ee63a7c02105ff9538d6752482378b4140266f13faf8c7ee695dad10b590b40ed5627ac417e8399dd398cd7413587f7d5c530801c6c3d7a33838cd42ab4d4d47d263f4e1366c539319faa0bbe179e069a4880f928f7f5107298b1bc2bf75e6f9d135cd9c96e8fd1483e3f9211bb73fbb5623b9ce1154cbe01797b4d69b9940c20d4fc5b1d1e103a9fde78aa11310e9ec3cf57bc2f41e3296c42991e03b19938e2c57efe6579c192b66077b4da4a7bffb383d23d7315ee81794f2c4f74c4349904190a73eeb1eebe03ea314f708f9f103b2862f8a4a05aa8aaef91818e6deba42b60a9957e5261e01f7c68efca04eb61fa7ff86996b69a2d7e293a6407004bebe90bb481daf560e446338ed6ba259e1d0910ceed2afc7dbb520629e8cd92f1759803bf0a598ae25254f054c4551009f9f331d24c9e443b3942ce662b28c5dd5a6f082ed5aa2725ac7a9e3abc6e57d9d8603052015944ee9d6d55198a5fa9d9fd953ab5afb63eed2e0e6d01983a8e2dc19708c404ce6a7092f2761b8dfad19e0d4dc657827756a99932c88643c6e3adb0d272b9cd877079754fcc2e60c5f222d7c751914621873edd16289370e246bf6e63ca7442b54f7d6198c99deb20e635367fb3c187063713d4a6059ce5623fd8203a73b62c2476605107a64efa177e435b5c7bf6b7c36627e1192a00d6d376612bef6560acfc270257ea0b561af6c2e4738207d60197dc1126c89ad7416e45af6022b227f9e1c4beedd248c8fff802675e21b15f06c3aec36400515c4bb9f4ad2e878ba4eba2658c66f4f38cdb2c73e71de1796290133857e90965bd334628eb83ac769cf63fa9a59298d089302cec86c2d10aa03c6d620a1e735176665435479ccae37a168a0827d7f4d8070d98065ad0bcde435c9e9e9d75e71ad0e40d061a2dbb2a3262e18704649a14310e545e8ce93be3b33fc442d437acaa3b5bda4f770f5eb60f56b0fbd0e9a4820f3c464cb900be522928d9a3a29573b07884e19da158b317fcdf047a2307d0066f16a3a4e389f0166650937ff1df8c4e637e24e2d50f4d2b731e7befab3b0c33ab81b4b031174a61be15d992315464f99d292696bb1536ddab0195a140beb68e72eddca6220d01d4fbc77ef3d743ac1dbe06450614d9255f13e60417624dde40a25515f19b52750c1fabcd7f128b472d80337c469cb8ff95bbd2875ed03efe8df9aeb677146002c138edb668a22c1e1b671cdf636a725de9bfa9c0e12035939c8136b8da4792eda4e82f29d33bf3f67954863eb993e51344ffc4d144d651219de292bef3f3763e2aa061264b11016b6bd4586f46215eee237b8b616a260071004e253c7e1424d01c4b71bf53e085f93c6917a028e6f5134e2c04bc8d9a371083180c3d95a709bf56f79dae2be4b1df4db2fa14b075ca14d0cc7875fee90f8ad2ef73fd4bbfa3422475bd9a7b8195 +expected_result = pass +expected_shared_secret = 0749d8808bf77c517e622f26abcf23f7c40144b37bab16c6605ef1c97636689c + +comment = Rho leads to non invertable matrix +private_key = 078bc69561af0cc77acc291fcb063e1d7c82bdd7cc31d5b44d1aa746e261f2a592d4aa9165c2c3755aa457b886cdd55840767f4fa0b19e45410872cb1db3b8b5829c4ce9b2a8969330cb5bba2397119310fa072b7053b35fb135d04977b9ab4766c4c1ecd9695957473f10c679d71d2f6b57db2ab0726022bfeb10b61807d35447a141255bf5b3d0e3bbf5cc3ae74932d87268e172978d78b99daabcb16b44bd578f6dac130c2528fbc89ffa94b48e6785293023e2605a8533a5ac17c15f34b1e30501729a78d3b8ac6e4a329e1006e0c0735c737283856d7cc7663cdaa1610b1045b7423ca8ccb59ca6b1c482dc02ba117c17588809ef8506f09a7162720142e397c6ac0f8fdb02e4c1c557050af941ae8165ae01d9228f767ef1ac3d72f27cf9a2282a6c379a669d01cc0a6c560b21169557b88771008dad62641f435e0780234e86c1ead05f14c0ad68b6b1041492a166bc4a278b0d352129556d55f37ef8969b596c5e41f8597878c8c6c83de675019c022314215eac667a7b559146478a4a5634ff193f6b83673072643efa59c27650fec168ff17109577083bfa8493f38301528f27681405693345e523ea4398055606d4ccad9df967fe59428ca7502f046506756a6b9a78182383db4baf05014fbb20afaf148456126fa393abfc480edc92465d93aaa158c2a8493882b24c564b607cccb2c8f6cbb43abd722c74c2c63230946acc091c48b865cdb33edb712c670648b07c06691687685218ba48648fa3054ae7a6a663aca6aa4e66506516100c8f2caf9c0645f2554c10c480e798b9c96756e42cc8a7f626c2759d21555342548e0490420df3a8124b0566b1804933b68225359cf66caa599c55573b70d488d16185496216cc09090de382d570795efa569aa5bfa8f4a60665cd30d63bb36cc5ac050310ba9bbe4b3af2f9400296bd344cb72bb623c757366ef1369c968578eba52a092dfef34aadf552a63b1495a5b78168cf6e58b218a3ae64310d16734d5e72b2036bcc001ca07533085548809bf114a092225aec9cce6950a953773ee37ad3467bd5ea0b4cc4c6b0695a774781ce17004cd48e36116776db19565367c92a94488ccbf4ca3c3960524d1b13d6f77399ac625de5a2d09954cf867011f79bb4c3682cd40f133a9d67778a24d7cf1a5b71b7b81dfe335d0fc392a8b12b234950ab79cac94776ad1b713e99b0f394aedce739a15334f19042f4861e739c839ce07da145808260b159625b5a742258779440953c743c591659b9d982aa7da028c7eac4390b47b243ba23e8ae4fd9c98042a0c2d25a6688c9ec774cd7e95899fb7f081035b0c4217c2903688ca7e4466e66ac4e3ca938fd58b4d6bb732a36aa8e097fd75976d1200d61a5c988c12702698b1cfcbd93157d3d1c6e76d316b00b4e462588bbf3c480d8374df3cf66a16f9dd2ab721954e02a9f8eea4380c381da230f10c2c7dec02b057177e157cbd5304ab1d8160a323fd5892fe1649c2e270dbd3777035912dc0802f4d18a56356b52946f30c516838028f7f39cc22466ed277a5adb6864972e1063b1af0709dfd60136b16a3d6c863a68895677c488eb1d879a69a5341a695212066ab848609cbe3317a86b5b613c6c4c869dd552a711040a0a205a6a9b7ee5c7607825a76206b3db25aa6a0960da259ec279960a5a947106b51a299792707447856085a12397e60cbf91713a6c4bc56b03531081b0b38b0866718c53bea1220f3e5c3a59c74f10c765148c595becb9aaf0ccf2e429575889b462bd59678f860a5e501aa758674d22842cf65a3f8dbbaa7da061c54073a92cbed742163df301e3675c5ad96b26b12651fc9507b7361a8bc0cdc47e7f38c1ad80456ac3443bab147e86924ec112adfc9f1c1b81b478740b752d030537c817a727451668d9ba1fe092d5e116c20262b722b6f895b78e3622c00596ac8b5d4ec11b0413635e85637ecb9a87516cb8c46ef2aaa6fdab62860160c4b29e23f921ed3a381711540cfa5df115a700d40c38b99efb870c6ed14f2261b17ac21900a427528cbff423b0ecf29c2a901baa9c7ae3d438c145385c73b0961c4e9dd5cb48c2ba247a30b9691dd8fac963a5c46ea44de03274896c8f36e57f84dba494c473af0a64d97533b223a32f8078d933bc6db125c2e7a779e0676e09648cf6b85c2968b71146763b7082ca2fec33884d6704afa71f5723617f83737cebae33b95be2393cf1f104c093b4caf26548704490b4aff5d6175ee4c7a3c0718436bf996003039aaaeeb18e92e341938b7a71609082b18995aa042e628f18e8c6f67b67770597772259e0e7b1025c29ea809beb994483a6863d038f6b9bb814a5215d299ad0b0b577d70e7c946be6c93ee257c68b1653ded84761b3a6104814a265988bea5a6ae96951f1bef6f53f50aa78c1f655dec149706ccc561a846d9cac61a339c3c279a290829f972a1931ab5ddc4893f71127d1a96796a24152a5d56016bb5c9d483b9b4346a8550784a828a3b53573e61104b6392d0bb246b8116d8f78021bd012c322c8b0d8392677afb40b36e49c0211449a2bd841e44b72b25b11cd099bf4ca292af2722dd9ca2ad3c36f4377ee54986b737a6a0b87817384ae9964244b140689b2d2db0deaccbe9f63b182164b89c932bdb22e6127303044b91eb76572e19785747e6da01c20318bc8092a7dea7ecfcb638e0584a6e00ccf243e06c577b784704c3b448e22a2b2c9c1dc0224c7ca798567b1c5f3a7ba660af4028387f2c573a52a28a3449c26342f214923e3932f3bbac2819329b83a2e89b78d93afc3c134be3c5fb8c67617666c22c71c4cb99063898f65b41117893785f376d2330b3b5a2fa946374f8a1a2eca1645d255c2a28fc8d7734fa10c67979e5950a1b5e085e2d52763326f3dea8b783297d509333947b9a47a9ce9caa0fff56637a54ffa6a00ed942e0d382ac6c834a7e40859f58d3ae991a9e359e91530bdb75c5568330236149e71040dd9219f5c24cf35c4e6a670e0719b2e738969f509cc55bfb6ca08c68c28165bbc43598ebd9744a18820b5947f0b41a311846588187c0aa669843bc6f4620cd1c62f1aaa90f93b7537828b42f59c153b9ebcc9ae1168b2ee7b2f10c062bdd49259024f4fd51c8994acd60478cd3a00593c403a3279877801d3c88f65b7bd83b76fb54c49bdc8af3cb4b2717741bce1bad123cd062211e74782f4620e9130a9950423afdc98cf0519a643a265e4c6ba4142557d000000000000000000000000000000000000000000000000000000d79f3c29a80eb53b13433a57b98af3c8beae20850d72d14a2e8fc6758d059111d48790195fff2c19f221b7cd8637576cec18c29a4a51cd07c82eed4974c36e8c +ciphertext = 0d6a627804b6e54c49e39e098b20c978cfdda91acd2d5d883111b0fe855460e981f041682f419dee54cf5b7f923c2017b1012f0b3233d507ed065e96ba51f92f70a38aff0ce071110bb0513b22262aac6ffc1287c63c07f312ca2310293a56e85e429bcf3b8662426c086f388312513825888762fb3aa87a40653de37f48870ae16c19ec088bba8911e944b41a8cd595e2fbb680971981b5352a9032b28fd3bdd63ea4a72b5d999d6fad88e19aa84e5d60f173283f7597b682f4616bcf532ae1cd5e9e5e231c6bcb1c9d5fd0e50d54c53ec8a4f1162696aa72c02a6fc97e80686886b84899a7ad7a1ff6468031dc403dfabdcd793bc31a3036d5937f5af337f806001f4ee79dd889e72f5585636205a3a906c01588150d73571ffaffb9775970af6c98a17f1a6a6a0161de795ee20fdfae34fe40e4423012dcb1cb918144225716dc32c6d9d453a148f3a5999b6df6748a97429ab5b8c6007f2595b47fb52030ffaf99735f22657fa8e93f31238941436b76088a72dc6a133f96f0461eab8ad3361f59d4539090c2dd4b05ef665786de899af3582a8a41400b0421c6c646050171f6c2c8231e7fd295f855d2236f6b17f36cd998b47542ad2a73c1751883175a71ad2695b7b372b71ac8cbc2729ab1f4b76eeb8187777404ff81e46aa3a246cb0c9dd3b7fcc443f6a89df493b64e770aa8507253aebc041587b3b9e365688138518d2e84b635c045c9f7e50e62fedc9a42344bece5e21e05c52baee9da1e5fd50ed674aa83845343894439da9188a149b04d7110900fd3a6bd950be022cdf91e6bc896125a10e64ca3e55785aa5ee668e42f338abf50690c61cf19481b1162cfac86b4f8b8800e3c65e82e94e987e37986a3669e401f199021a98294018a602801c07b51faa641a34183ae5a101189887189f072943a712f74b3710a98ec0a992ae4ad1d4d56a508ea3d0762d1b004f399261f2fd836b97740f4d96e3a939ec8854b711ee358425943d218f92a7e07799215ea2e4e097448f7d75e79850560fff7695c4b3f1266f60c430b602db4cd75983e3e252c541f5d39cd15253441f76534cfa94017f1801797503b9d1518fe4857a27e79c842cd3909eca55ec46d9652ff448ae113134c7d24a506987875e9aa17841c9453ff951aee63372957333e8af8ad72ca7e8bff5e0372209fd0bf11881475d0900c643b42b911ed8da750f4d0afa53d13c749bedd5c69a006dfe44a736a44232de96075b6db454644ed3403bde16116a670d7e6c60e03e25a72711ba7b17e5b65bb8af376eb71df16f7d48af1a903bb6eeb599d8acd74d7990053b39d4c81887411927689e20b51006a582fa0c0416299c850e75a81fea3f4dd3d3985087fa7b5f163827c89c2737a86bbdfebc4240c166acd4fefdda881f76be78a079295033b10b5e2bbd9590e3354d86c2532e43b9d1ad7c66766d2faf2877eb0ad087fe52fa1ea1a0d5661872735badad7ee15754168059d5f527c6b188e6dcee930e09718f6551da8475df376ece9e890 +expected_result = pass +expected_shared_secret = 951e3d8eecad130865f9f89c27c36ea8d091b6f3c00e35969f92bfc4f91d657f + +comment = Rho leads to non invertable matrix +private_key = cc4a14e75a6b1bf87f11a240424645dee23657db9819ac274780c2d7d8ac64f2cb82530b40a078791a2ae70aba868253bdc3045b6254c4e29024894cd13723edc7461a37403609b48f79b8e8b1018981bca9f68031dcaf87528a6b065d8cb83c142ba20d68a728a3866ca88e6836cab209ab49bb234312916e432fa51152c763a62cc53da61480691b07a073be74aa6c2b88468bca8302a23d1d6405ddf4aec2f88ab055b18e2b1873862af6539ca83b1c270b6a563cbc7a220cdc8106e6e5595d63a26c0cb86ff11b48066721634b43b361b57a5b4ddb2967d232d34cb750026b362cbd20188260c6a856e9493ae09c462bc4c8663c7903112488b06b2a996dc6668e382e9cdc93e52a1a368b07d8388c9531afff0cc4c07ab423bac717dcc888e213e3a75d69a633f49745bab10f62592f59d53ef19b6a62f0b24216aaed9c91203b7ee65b9d097cc1e2676deeeb576ceb4fa4a867ab7310076a912a41292c658e8f75a98603612558352a5b7beb404fd2bb6de18c7ac838464b6399182536509624e1e25a7821b71edc57c35541cd115ec52c13a739c3de231ada741274272383cc78bc9869d37282f5980209543c92b76ddf99c3d45cb7409b5e44599b75412d8bd122460905c250a94dd4052c0b0a91c9a906aa3652180fba9212046b4f7ad14f7c304780d553f19487b8b7413de732ba1296b41a2d94983d4be93e540a4a4137a030629e97fa640c21ba5b7b5537a03a2a958ec3a888590a5c14a904dd74c83631264644cc6689a245f833530124f7d10e2596a8be227f270941faa75300bd731c145f781cce52247418595ef67c94a170676cda269e51c7ddbc63b6765b010aa061cc576696c84345c35c491d3e4626efc8b73dfcb481c11bbf8c79c6a3aa4e54c43a44141f5c35932486320567ce37adaf5241bfd8c44ec140d30823b58223b02742f3e2bf5864756d528ea36348c1c2293d8ca050b6307d71a20a036e0060697b58a0ada53eee5a6990a9cfe283436cd36a02dcb1a2b7200a267c3f133ea6423bc001baeca953515214e2766f066cae531212dd3551e22bbb1c705f21753ab60a70f364bf1949901d9a0415a36567614c1aba2dacf2c5435b4ee66193c5e461596719790aa792d5a09ac474343509ee36ca048751bd4b0c644b2b039b1320b2294df814b419c3ac55541be5cf4b93593aa4c099142de9e13699a40709d70070aba9227b6c14f216d434c9bc16112b8b4237f838340a5c317a618a91170709bae6a7c13cf96851f72a8761736c452df27758afa4b02fd55b3493b1bbf96dfc45ac743718978b7de8a017eca45dea633dbc417f856781c856c87516429127c6a3d335f162ace0982235ac79ba0ba68edbc1eafb9ed7a3597ca7a612a9bf3ef2b0d1d7c238e98714a434b8b08b35e3885e007501f9bc06e841921521d47999db3ac3937468a54b95b57a2bbe34aeb48ba57f0744021bc684456a8ed413b9192057eb77a5502dbc89c5964c0383b4c9034396da209279199ab5830abe9386b2e811c222a6ccb0cb23732a95676fd5c0376505943ef8bd67a95defe0af7cac395a743bdc3119b1a74771343bad21c53ec80cafd7548ae310293027d62960f486c7d6766d95f2b7296a07c8c7b767c1057548a18263a4366040c003c50084bddd31af425b261083ccaac26948ba1882739732bcc1e73685b52287148526bdfc47d8822d1d5853c9447b21f200592937b9229b471646beca2cca630502e167b7c861d03cbe302600c6e1806f6040cbe518e15c0eec4395ec1a47c44c8456830709a3be9d05cc5cb3266f616f9f8a7adf9b2a04bb623f801da0c8c0cb4b45c16282c412c24ab90c7471b554057b6c0623481a46a0aa53dc167c15ea8a723c81d9d56691b060bf00554548c34f1c603b17b705a72b2c3091ac134d192806635385a5ec9cd28a3bb56b83cd2b153e00b66eb58d8580a47e696aba9abd36b19b3cd47a0dc4ca2d6b7ef106a3b94b349c665b295433f4ab8711a01e2de8295d58b20eb2ca49c23d595c96c874a2749087dafc044c0b8bd5b340ffd12fec07640099753d4c993fc69d986210dbeb95bab40f6ca0096ea866ef216c6b2657600813052886452c130e7c925940564918a5266531af820d0e69c10471ab3b74585f2cbaa1b27274589fea64b2172b4020b4619b6953a9d56d022c7bf937650ee5608b15988b3377bbb617c4016c1ea3a7afcb9665d995eebc2b0ce76c38a0b6bdf9436ad78bb97852ffe8a618f3c82dc4afd81c99a9512777094b12564ce1a469cb49045a90aa3d2c20fdabbc5bb4940d30360f17a66d58b7a3ba7920c102ccf8b30f03621ef722776b2fba0164b3426d514104a6689286649862b7cbd84011008ba69c6148201b576a7b4b58a53035946a0af9646251b8c1cc7bc4c058ed8bbc53c91ef74cc06e1c32a211ac42570b7a7181f23552c762118a9c0f4862687a502c232b9d43224f5fab525f6186332969b246082c44cae7236e38865e4dbbcba87c12e90b2b970097c0e307dda00d7cb98574915a03d25384d4584611c837e19ca906a80868b382940d909091527b0bf261be5ac0a9ea151b8979ae46f2453b420d5b6b1fe02605fb8bba1e065bb9506e1be7c471a9b8083734a110aa6aeb8340338b14aa71189cca4ff01777e7a251b7a0cd1cba9a9a7b9ff3953fd9c87f5b043f719f692a9f4c7352a0756393e50f0592cac59bc21e198729f23b4500d0e620bd02222a88c5688ac02809315cce210db4169fdd1312c0dc85baa25f3d48ceab80754987553fcc7806827441b590cf9a8d5c590b2e00bdbc9b4ac3d2883f6cbf9e047407858b99ab6577a66b498b0f18628d16a389a5f5a20e1b0ffc228eef287a36968ed913b8fd74a34de23ede7743da2311fd10c46eeb84c38986bca7536ae8a3a42acbe5dcb3fe9432bdab1f3d1226a99148d01219f3e68f68d7a689e39d7502b6e13b665cf0235af1489bf4ce8619624eb4509c7639ec411fa223793b4cbbc990256b390fe23a2624977477428ec39835809343023c1dfefba3aef98e7aa15ae694861ad54e0c74a6d8122ab181c9d23397902c99b0dbaf78a463682294a2eacc1cd36c8fc1ad2e282a72fba0bc179520ba2b410acc977b9f2cdba3213175204568dc249571c20fee0874fec364eaf210ad31b6018c2d841269bdc95ce753cf6a765af4bb9deba17253985277f71d2563a585a7573d31c87b80913c0a38d3905a41de6fdc4700000000000000000000000000000000000000000000000000000097e7e324c2d12c3d0bdbda0ba8582b04e2ebf47f5ecee9b9173053949f6ede27a9e4a0d3487b6714e18bcc9d1daeb3127164328a19d5cf60822f3fd37a24bbed +ciphertext = 068bcf0833a0a08f1a1c9128e6575a62ed3f2e075c4444f2b4584b18e4af26b4e84f16b697141c2b000847dc2916b8718608465198935e67d873335d065b994e2946244d3d739b1d31ee6b8d54c5bb04fc9d7d6d22496a869e5331d5e293a712408207fabc35004b13d3ee3aca54200182249642c5e9de88bf5a489cdfe6330170c0b2cbae18f65043ee306db39d333344c37fa76ab05675568a5dc576290abac1d6f28f6ee1d800a3c638b91cd40cb02e531c88c0a3328a176f872386082f07b4a782f79d0b2cb2df14a62e3db5a30fc753f25db235588652c51b251685ffc1090ffff37671384482d4ad055f0d51a5f00c1c14e67824a29ff8910d9e9295f633b6e8dccaebb2da47cb628a246c6a443b87981453e4ec64e7d0df499f026977b039f73d5edb354bdb536896f35a5431ffed50861551f5e6114da8782d3e1530858e516fb623dc3c0bea0c8981bd3091af72555ea18ba409bfe2419a60d769999d82f7bf588be754496143ef980a3995daa51e370984e212f41681fcf6f1235871389fd3b52e76537b84af594f5405fdfab1d90c79a302c142f88affab1f4d524a139ca894cad46f270270f2d8024d06582492fd1502a65e7b70ba0941dd957808206ce00c6be60d8fedeaaa0149f17ff0b3b775fe59317e769024c91ec83a191cd72481e3d90361a4dbf59968a33a56ecde8aa618a8046e0c021c6954f983b489bba80d15decb9955e118899d98c1df865355f5b9ffd97c52c097474704088cd2dcc01f303ec675d87938d21cacba1fed2483e144bd6bdfaf5a9a233238313489e1aadb82a060390adbbedc55050ff86f967b4b7aefa563117556c4ca5ce9ec3db571b5d2c9f5fef63e731c86b0ef3d84239641fb082063ee3c3756006b306754124f9b964dfffe718c72b93999255fdb3c4eea7907a8bfb5936801e799d499269226df5d9d3232b5bd5dba5c2ad9b03826b961535044dba6640b7da63a9f639a834f7311e7d9ec4a1591d041de4f080416acce59b2f1fa4f4a7654368761bf1025a2de5f02cfbc2150685f3e457aea26ba25ad3b828f9dc07d33a55450a0f0c6fc3898dfdd7a43488ff012cca26828e5a1dc5a0d605c59afcca1cb0c76b3c20524eecca2ba2afc939204bf06adf3a5c0a809641cd83bc1c5991c9d16696a4e4e6462ede7953d2694ec9ce865523b1faa9ec4b8d5f737ab31bd929c45ad6292a6926e1c62c7d48cbdc6c6e30f289a539feeaf84cdaf23330c37c97de3ba6dae06b737e2a51faaf0363a961cec9aadb8c74779e242572fece99801eeacb7e972931da610b75a3ab2f7803b8f3b9460f1ad39385e9bd1fde1b46b676132f5590c6cefad5450de5c52087f7f5dc79ae1ea8491dfb8b2d205361eecd231f3af8d95a12da4ece84d6985325f4d948eccfd42fca19014e7af568175879101da556d615b3f4d81e0a4878bb32ae24eb4fa91334b214b379f6deeeeca45a89ac0d16d533707ea5e4b5e0c06be84656e5475c4257eeaa3353d4444cb88e499ce7f5a2cb2 +expected_result = pass +expected_shared_secret = 5a7f85e2ae8e79a1b178cfb5f38cdf9e240b9997584fe9c432fd63607139f08e + +comment = Rho leads to non invertable matrix +private_key = cca22002e0b84e0c0fa98c902c2a30f0d9303a411db91a26576834d4f1645c181bba750c42ab6bcf401739f83fe2a4a3aa1a3f5917418003aed863875fc044dbc99c70b27758389fdd3cce51d5a13b21afe1219f0bab5dc3b15952591e6f80068b30870ed644de082476e7b32d3a531ff8631914c7a5c106a5acbf8672ab4a304afb71b1672cb281438f0fdb1db0f52948e8b0a1422ba10ac5e0a480e87bb844072e7a134dcce36f27274775fc6a8bc611b2a33cf85a4820e18b47b24188030fcaaba998d84a68424c07f4503abb553ec33b4be2af3557aae2797649da014dd0264d00ce74431e46f8969276b24b359c6750c5bc15a6318c2d06898ec5f473380a68302a91eb562fe4f10596012e5efa83f4c55a19912978a6583e4a884e36af1b9367e69ab0566c3cd8c34eaea615f49c094bcbc63d52a21d74c02462cb0bb7c77cbaa03df988b60cba880771a7c179315a9f6ebc6e9b8c90bbf17f737508b1691ef1952363e9499b5007a9c84838c2a149478e4be76c0368a8220b9a3ac68ef6560dba6b3f68257b6719551d83c38f73654fb392af0c1c2517851fc160c343cf826aca2c5614726c774c758e1abaa9ac04ae0742799060970909cbc2f78ca739c71bf6528f0695ea6175a4ac13555c3bcb9920bca3a37d363ba622666e54a4e779cad5059612792d610257a689975fd664dc5081d5ac4586c60e99b9a2a17ac612e5a794ca4dc097a71f72bce02b4907d69d801a22fd7b88f9e4ab284076037a0f6ac803bd7b243b835e51873919d3b77de041bbdb9c2917338f0c42a54ba6f5539d60e827387a9e7c156155d693b85701b53278139b29858785cb59788ed981d77556d27390285bc3f9408cbdc717895815d31641d0c31f2d911515f36743c40f4f3517432c620892149b518fecc80cd2d14c99730e0c940dec155930dcb5ef861b7c80b55c2223f7066b625c9fe5f0cb04f0bcb880119de142ce511affc01d483ac8db8b73e504b242315533d9c02cb64d15445fe32bb0c8e19383f82854981a9ea465b05c77cfd66d97a2b262bb37398cb4654a0fc8146c00b7608f061a216b9becec17f686b93d88309a7ac04c2447030b41ebc6a95fc52466d36dfd461bb046172f3b83fd10bf79c281202a60aed8467748a986100b97742c8d70c8de523c1d700489c391096c1b92654064cb7e35d7b25f29818ff39fa523c88bd69b8cf41689a414288c492f2a83f7b34a4d95770e6144b7731057c73a077a471e7b378fa48464c426ce5a6566e7c862131ebd5a1b3df013641a878fd702d167ae3f369361666514d98f325679c22aaddb56406e148e744960ee1395866acbe095542a6836571959a80238d037260fa053a52cbbc2cbc035e78fa9c306ebcb61ce33422584009271835ac3845524794f18bd7e1b4c034832fe68ba24a162815404f65c0af0944c9789b1d92767268c801a0444fff50399b3a192131e965523bbc2c75c286c96450c3f0733458bad7831205b1b4841a617626b4bee232cd1f220edf53b59bc213a055d956591fc3518a1974582f79a66dc8892ba71ccf7a5fae1c01841428525c32dd2b433445118559cb5447e3c851a0cb498cf99c2d359999fa396029b98bddb329742ad26390f48a7c0f624c336e5b71727a4cc29c06e1a2968d864e131b79e5365dce048453ca51bd8718427a35c63ab784ac5476627ced945b656adc438a5294800b6b62f62320adf193b198998a845954a2488e0ca4154a442b0012d44b7b24fa5a6f03a8efb739ccac77b8b54cd235ac65773223f3709d0cb8195671f9ed7b324a11d920332d41c9ae0c0c30279721c80c3a2423cddac9311cbb39f7512d8859074558942504d9c087d9524bb21f5cad2826688e5bb86b91c1f120da1808a654348fd3ba11f3b20bc7612950c392dc27cf6a4aea8f47b841645d4860cba4b3a865c46c0f259af1a60c43141f548308088353617bf95427fa094389a3a6d2df6ccafc7384efa1cb0ba2ae5a2a8d89335d1eca833ea026f9a08c9e2586239aff1845fc5fb6472d0056770a0cae059d81812b8c679c502b3527ab21c9b142f89bc4092cca0a6c20bd1a22c29b773b2aca72ab0a9922d85a8bd676267e9d6452235c270698c5a7a13a1640e5d20c1abc844493ca3634c1ca0813e7f73532388c1e059c414c24bfef16654850f9673afecf630fff9c3aa0a56fab46eb5cb436f4ba94f046e5d57a2d1897680631128c42dca353861a7aceb79267a48b429539f51475414c66bc66a1e8155435df18ccc2993d5e93642354921e9b2205a6270e34b4622c9c69915ba80c9ff994263a11c46a95b8f5c43de1c5221b0745fd2ac0ad5696e5323935a688c906aa2050f89881d3d21605c9564997b66c6452e333cc33ca839db53c17192796e9213b0d7a2ed796e7b2842d9aac2398c3ad11abb5cd342eaa2c6468b70130a5b8b2aadfdf08a2c39732708842ec03d62f60c59b28b81f726f078a06df43faeac927d8c52d14664bde5200bb55cfb06478ffa9b62db67f07565a5673393a388ddca18b7d7978f338d93f37d24a38ef8786e3ed14109421e5884c18da611cb7b62d745323611ade1527fd841a4f3e7122bec4c81609be78b1e1aa274b06193a9291bfcd88ad0fcb90c69c2d4b4073f89a733729d3adc79ad93138b8116fc05b07d7ac6d1645e3a7ca15569b1fe923115133892279f2da7be3f96a3a4417d3b929fb4d842ac017368bb461dd4673da34583f71dd89963718a487db15dba89b26f57b5843804f4f77467936157a504bf106fffe93b82a5be0396161be988c415666b1a26823755274310b8c07d2db27b4e0a7f62747b37527b4b3c87c758603adc3b240a359639634480834de99a6efb12cee23625d563cf969adafba20feb785ba71a5278cbe18a112c673e3332575fe982c6fc853ba675a610357dd2275aa0c6ebf3b5a66a38d253b13b8a21170647c28a7397498d9473c463b7b4762939af5a8dac0066e9f14b8e7534c21342d4c7cf4b539d766a350d882b70c29bcde61f854aa75d427a84780220278716eb8ee1698fd5825cf206a0797552e2f18d3ad062d283719dd61d160681d685ac3004c0c9802d78ba41e8404436d8563de6174e911ebb16a4ffe945034932f335467b250bd95b1d80966aceba882f2858e2011f9be167e6e3c70b234da466a28f8140c9581a9755b5216882f0d43bb70751ffa702eebc7dbf12450cfa3b542777c35b96077cc1cc2c5fa7ab00000000000000000000000000000000000000000000000000000054a21826b02592023db2703799411b54bb21a140a3cb4772b53669afbee98aba53f53a49ff45b0ae588d417a63a599670cd391c5e9885c972593d09350bd7523 +ciphertext = 9d12c628e857d6fd5a1932a879dcd28bff777cd6132e14fa17480771b09c7f325a9127f610aae2bacacf515132f848a943bd40e75b894d37b55018284ddc5899431636325a5e86a79222196fee72545b368cc998059b0d88587ccef6e6eb833d05e08123f9b18c13ce6d456f4995340e17a26a9c3eb97930dd207d5155fca9a160e5e8c3f8b7259637721391d9f0787a34af39b136f306400b4805befbbeac25eeb533678b6994fe71ff8691c85bb2cfaea77efbd0299415a4adbf6cff3f4e63cced78154525b5b3d21cc838a5c89f42a1f7c2e2847c8cdca0351c47c1a6fd3e0b20d2d24989b931e1bf6f9e3d015a1fd3deb195a959a44f87b168976b71ec5096a92c0708d96ce00930abd77f4dd101c64106671656f668a07934c89353ce8b27e76007c7d7aa159939210295ad05377625b6dff8744332b834382df6ea2254d523f415928831a46077488f925dea5bbbe4ce007852ea26353de810a78d79be4da1fa41546739b74ae5153d692b14693ede93e2e5248a9244a35a7b64acf95290d1547d6e4e1d63c653a0e52c83264d7349d209147c97c9971957336f036c7195aab3e80afb7189542c45194024e349ab7f62c9cb2983e238a8c76f4c5ad6dd07516d29fec6f38579abcabd1c04005c4106b22c45d27b7786575b15ba00be22d752d6dc7e689aeb21ba9980c63476e742b1f780e6f9e220ab09a5952126ab01a59277a52ba8159d3f25dac39df888ba0e920cea9cf8d40525f79f74766f62bfa2478afaee5240f30a106fde661789d15780bdfe17e15cc033e179735f1de3aa82089dbfcc9df71253bcbc99cec3c5cf163abdba2b8a37e8321666ebf0639e9b240a3fd1cdffd249b8e0f04228ba21b777b8cc76c1942656ae9ff36410564a9d776b82f1e61728e71fd88c1077fa74d08bc2d5cf59b82163e122bceb5b05f6bc493ee02b111af667fa67bd0f7464d8738d6e1b47b282e83f3d83b1ed5c32e1534407c6976e280fafca2dc950597dea6efc162139cfd2bdb5379ddaf6c2d2ce876801bf5dc8ace9bb766be0452105861e99534f84512ecb98ddaa2bd2938e371385deb1623a13900eb624f734cad7047790251bffe4af673e7caa5595138b8dcf15bbea0acfb745cf84e98053ed593fc1103e80fc4ccbdea7cd3049c43dc46a21d68bf194a101767570d6ecf7ce087dd34a526673b6b959a9dd83e809ffe8984d5d86fa9c23c0a47ef11359283ebae3a1c5e6cd9f61a73a2a875d0d8fa1a801d31826ffbe79179c9b32f1ecae0097350b44918242aadc9ecab9bbd1e889a113d9cf1454163317684e0a99318d66f6435e373eec3ad87789afb0f7dae49d2b03610b5db9788e2b3e0c96474baee4bfc166d3f5580c7654ed4b19c325503898b38eb24aa30e4496eceea05954780dd389939b87a4eaefaf86ce855d1d1708660add4c70d30f7d14262aec22a294987b2b850390b799c67ed354bedbb86bb8c1a69e38313d4d52ed2619b3c482f2e16153263b3e6b7863d8cff75fbe549ec30da553 +expected_result = pass +expected_shared_secret = 5e36034b55f986e8e39485c2de5de7f5bc816322c6f36ce00b8ef8d7513edecc + +comment = Rho leads to non invertable matrix +private_key = 16997ff80976d1506b23c012e387ac6ca0a792f7481ac3c9775317ee3ca5267bc7180ca884d28bad6b5a05b045f33a9b975c6c98908d670550b874ca70a77424e48bf097256434b9d9b96c8b8149f02ba5bde9b813eb2b60f20da4440b4cfb05716bbfd86255a1e82941d2816caa7253e7368a4bbf4bf546f40b1bafc65bb994c34f7337e82818021797a431cfc664699bc22b92561fe3d1cd6306b89a36380920abbb466477549d1bf14364221c10f51fc3f7240de4c99b3bb3eeb9ac1fe12bb7c97888e8386da4a341a0be8f78a7b7c49f2184376c3c3784289a6bd9b6a03a110c228f72939b86c7a87dab3e093c0ade693a0e5331c48b761b070476f55cc45ba1dda14dfde01a011776143a4d29d48b47b0c6cd2111bf18360a7438f384a28d772177f648773b961a86637c946d7981a6b9f571a4c29aad07220fe081f1f18700f3c99ef28e76819f8d7c4c43d754cea21180c43357f3430bcbce1fe8952c691cfe9a7483026386a479eee4025a838df5c563b9f5a1882a2d7209a68d231ee82260a7eb4fc157936deab52618cba32772fa1440fb675220f4610d749a5b3b142f31b404d94d2bd816cc4773ec83aa1445a37b361e52b10960827e94171dce3c12cec80a1ec65aa6f117fe937673a78cd7767dadd3cebe0217f13c903ca25d6a681116b206acb46949b18f671a63fd2581a6c0978738460cc51df3711dc1215dcf75525d30559ab6bc52e16fa513753454888189348f045aee8a32e98cb2dfd708e7d42818115e5c61711a0c43e85a13657aadc24b5b30a04a43cb97bafa433204c18536337758c0db6154d4fac670fa3af148b52f24aa731c31f98464ca9bc975e97fd665710ee2c56b024fb8d7c7f4a20cc9d510f8eac38f96129c97b17c890417a21465d05abca02754ac3614e964f1a24393d05ccf5cb9500852cc9231656ca899f3538df30984475209f84ae8b99983e844b06ba4cd8a9640a513cee439ae13ad57d3846aea4fa165b68c6c03c05c835bcc5a63d45cc5568aef94ae7798bf29aa7f38e275c902236e63872a274e4776cf1928c492036166d04eed9ca64aa16ebb4b11fc3ba802c6b249e4b53f90112b587d36c6bfb0733a2ee3003419026a10a4c54c2be294b2031a48fe895c2c9920b3772f127338a865a82c3262dabac113c235d433b90d401f5557bb1bc68359020f75742c2008c2bc8862416910f53772a55376ef05a5eca853eb1ba5ef841f243b8d98b11e94483ad7e72fd7360a3641159e481ca50971a6e8aee73a0d4f24b25430ccc0997c631308fe2aaefcf79af5d2045932043d95933919b21ef87865b8550742a513d67af756c5958465f582983a777e9032ac43164e552358861a0ebc458e55865fc3545fd01b0e7565877ed3229f8267369c319abbb017a87ca662c635519ff418682af39ba387aa38ec37396b4d6ab505219314f4448d0f572f4330cf33fa1369872649c922bcd228c294b3213a216e59752072b8e026700ea63061855be3d6037c0cabe0c21f5be948ee4b18dd935ad358a5885a0331db2e496995bd47c3ff2b679e0abafc02804b6117271a2b00e33bc06250fb30ae2036716d30a50aa07e45f244e1f0100d7493c30b1c077bcd1dd852cdb9736289bb441013f7132a86664c31990bf601cffb845d39a9a95f4b44e285c537cca542335e77b8ca7ac4037c56822d524f74b76f2a113693a63400334967f9a29008ad53f01921499e54e8c315b47788aacdaae2269957010f4652c48a19cea9b2a32406b4ab4128e150beb10e0811b2aed3c95c89639a0ba3ecb689a911acc463708b733d3b724c63b100f62c1863c2771cf7c6aa215e5848687546446c75a1b3d56d8f07b3a8f8bf79dcc360010fc833056d04a80132816a63122c591cae5a4c26ec119a7cccf7f74db33c8a83c379f8f3cc75e85a8016529157aeaeab503e7b9734c8801c309ac580b792433f46451c8bcc0fab6a9ce7b0a2110a933d62cc55f953a036b3bcd3a9078c01b16bb6f78c9f14aac2949617bd6c0a99f003ed2bca0a3690ad444d314a1c44f1638db6c31a3884823a92a28aa3eb498452895733d97aba3c3c7d26139843adea69b3730451fe75aa74f6a1dc87988012318cb172b37843bf1385bb400018416344a4c61ed9436e142d9a512d63693c46f47e2581a97349bbe6f463e5ec806f2bbe56025932eaae009591ec6260c83202b4574f6274414e998d2999371d39855d7b52544558a0da3456191950f96f0995313bd06ac4371207f606781870244b3994ac91a0030b9b26072e121322c7b3a7723527340606c9657007b70700739b278da9a14759024537aabff70bbad9bc513e5809677bb170d8886b2176b9999fcfd5c5e260475d315445d9a6a53b8c7e5919fbb6209d2112074243c16c783fdc571dc842eae4379378827721030cf601b92a5f06aa877b8070e0b3a44762786645cca13c8e5c84a5010290459a3637d7c240cb8b1cf0c58a649c1b33cbd0c62636707d321cc93960a42807a8a4fa9f7c889a4c6ba672b14206926849257bead619167c8cc7c466186821bbb8c67618c6c0d9064e71519902280534623bac0af20259304a46b0352f0b62707d7645b1ba5817e41079893b1ac00fb14480bce6bc19b337a05cc79e96ca15dc7686b33e2e85146224b96266c8164b4f17ba6c3070960ce26630fc454cb25b51e935c507afed34b029838822a0a77a24bf45e9b9047627dfec040e648738e05a62fbc972e4c1b4218300221ce3dbb3db904e82bab6f207743422b453f728084501ae7b96c26534913568edb18446c409613b3ee4f52af5b466c9ea7af349bdc5eccfe9a510f6fc24226687a9e19f6a925b8653209fe4a932588cd52bc41e48404e369394385d87a5b28b80b971836e3c8929547a6e002d5f26dc4417f0850c44ca3905708aa40556b426b6700d4e9126b8ac7081d291fd7569f0b08f789b8556864483ab668fb781db2837e73c20891928e1eb3d29f7a9a294641696a1fac1c4bd526e1fc73c78c01ceacc4a5b707262307f8aa28f61642d71d4aefd205a5bd414150188fd679636ba5fdb21740fe3738c5bca69ba72d1f0871244b0fd430605253499d351fc102280987956e287bfe40daa05a6d6179ddc75aebe5076f18a676ee71658283752ba79a2457fbb107c1f7b7540513df0119b40fa2342b64b2aeaa21c94905a5c68f222c84ea63e9c0b0afc55bc605a46a8179edcf8882ac203302879a33b000000000000000000000000000000000000000000000000000000b35abc5ac256d7f72e6a83cdf27e19e97e40639a6832eb08f3e534e831c385cbe366c059f5f26e6dfba8db203c5b27beca8fedd3de2664f6bd5c3e2ac9fb3891 +ciphertext = bb7e0dca6eca3ef57e945d921c2f80875556f7786d6bcca1312f86b3bea6d0f0a73f7d6036a7c38c62d4e356961ec6a28d8026a2d915d9721ef815147fc09ca65a3394aa5dc14c08d41cbe932337b9a531ddf68df20b6aea297194ac398f15919830e3ee6c20145c0aae7a2cd276ccad7b5c414212f0c0ae7106333868938a6a00da19377d996c7796d400606007dff30fe554a5fef86944d43ba047a00da5c2c2a1aad053aeafcc75a1e826a417b4c320e60a68e63dd7b54827f5b8b0063a00043f29ce8975d95bd418eb2ed29db0d9263c67fdcc153ba9b5a33279becb7ab193c2f257bd660fd7012712be3fdc2e52490ade145e8e030ba1ee5368791e6f3efe00deb34cb454cbf7fdae3a507261d9fce66ab58998ca19380187e3455d425977a8396cee3442935e24347aed45fba9b323a289f1b98691e35017ecfd7a423cd8d0149432a2063e0786c2f912e1134ebed188511c905a1a9890cd55d496e8441ccf637b4d660d93c7a46c3e17219167c3b4740878ae35766470b5eff3c6b1fc8c30e5c9645a94ebd48d2d40fbd4baf9d822deb26c089da84043340a564e6c311bca18c7a2c868831fbb866d89652556b53297b9c0040e98a692fa536af4c9a7aa09321ca27068ca66c665b1121ee4529cb3e6d899964de759ab915b0d2c571c5aa76cd64df4a4e55d9de59eca7b4379b30f8559db41e804a18b8771f594b9bee3de9ae98a003430aac58c141e6f0b7b1e5e08e27d1127b682882be055ba31e280dbace7878ae60426626ea4c5bc034a9206e27f578edd17fa6c33180b649bc7bd437b2c86ef4e0f4583071f99090b95db1e415d21ddd88a910b1fd10e3a04e391d947558a6619683ae070be04cab88300614839503f088e2f04cc4a7d091af9833a4f957cfdc574b1c994673ea14dce6ad89adebf5130d266c1440b3f544eea380ba245e21651f1f2aeb2b3d578000a87683dec69ccac18b0702d3d030077981076766e7e5f3ae1174eaf21bf03662c6bda5fd209da19ff6792c0bbc5d210851061dcdd2e4794d2c3c0c531e92a2c4a23556878d3e890b65289a6a02530bbd40ed66db3bb220aeb71fcc3c0b5d5b3afc71377746b22ce636dba028bc052c219783d468fac1d4eed555c1b4676705c8d27aa8a09c6fd8640a6f7b6790ff173ac39b5f3c709281df4274cccdc1e3b690ac0a77f7ece34cdf3216d2b6058baf5f649ff5036360dff99334ff06a366785c0404c584f623801190082fe5cdf88f9cf41032681e8fd6b84d127add01d4b2286af648b83fe69aa8d109c9320bd40621cf75adff8603e3da00be36f03ed7925f19b2e913d756e952a9402cd4fbffc0428cd7eebdd7fc7d3b4cde181b16b26811cd53d9f5d85d37c1670b957d4b3d04fd06567ac68d3f9dbdd45d182619180cf9292e86f42bcc213e94900e0c759e051bc0e30ffbdb91a2493913dc8b81ba4c3e8ba0e7277dc38dc91eb2b27823dac71b6f1c47e2a04136e2c0474fe070e2e4bf8e6fc98e73143ead3c5f778ce8a4efde4 +expected_result = pass +expected_shared_secret = 5b357f714a293b6724c0dc2e2c5509676782a9dddb050d88e6efa0a6d09d20b7 + +comment = Rho leads to a matrix with unusally large entries +private_key = 00208080e8b3938b09aab715a0b7a09314c3d2aa03e900528a209c655886bf0180a0775a1ee133e543c17d7c24407131f0b813a9287c5c9939d43ba2c1f064015c1babc910d1024bfb46a3fbb1ae13dc5d8bb4576787a592495786a53d4c172cbd3b2cac6a2f5ab68fcfeb2a67a997d809800615c043e4bcc0985de9d671e6e0c8b071a20264c457c13b1f4734f234142e86c23170821d068210b29358694d8ff27e89c59264a315b6591d97d90ede633b68fbc36ca96b823a4bc66144b541cc118b0d60a66c89124d9080ae30f44b9f4793cfac65ab8b8cd65ac81cd95de566ca2c19906a955a04047052a699e8a132e2e48aab916278c49ccd1ca0076b5254784a23f7a8c164229bdb9b46e1c7bd4c74639053cad5226c598918687fbc50323f086238366c4ad9172346626b54ce142053de67ce8867cf599587d0a47aff0a7fc113140c18c40bb31e2340822cac294aeb3a02652b424ac9f1008a592ccf70170246e689edeab03dc0249ba59fcc6477fb668038443bf9a743255310df11b4c90a97bd212a74d5142bc6461a135ce7376995372a1bf919e3db20f22c683f488395a95e31ab13aa707c59f22e85d892830bb550395633f6c87df28401865106b5cffb75729391767522ac236072250c6f4dda196a90bbdfa183113c5fe2e31ba1187b4f682399f3c6c0288977904ab445c0c1b9caca030aa639b35029657c1608e3a654cbc39f8f096414d278059a6f56c8c838b1879b00ceff668190213eb15184a57706bd8c9111667f52a656d161bcb5e7cb8ef5beb6756371ba4297397eb6d0c850aac1e01025001b71a874a25e3ac16450228dc33691b3112de319f69ac29f2a1cdf02a0cd77319931003910331a6268f42669f4a90e79bb820e5c98aa252dcbd056318a050ab71f5d60028fc41594688cea4a95b32529c39c582ae828016644faf4b7b1fa6fd9c305807c43dbba54d44273669bcf956c197ea3462a30be3aabb1a6654dc4a72bbae53982ebb986e249d9438d66b65fa15b723267ce1fc1200bc26656d7c4e1839e02927a96304460a34a9c0a22ccf15c7390afed4a612ef236f9d00c22d04cc1dc362c08afd0a16536985f69f6a15d6585c410ac7a39599c683b9e67a33ee299a5000c7e4acde611bd6c817b1aeb1373835a245b916620be6ce8093f88635cfb619a963c99785cc5c354e5d025f954071e380876408fc5ac7fbbeb4c532b1f1be67ebfacac4cf907be9485c6da8da380809ee102af0c98beebb088c13d29830e7fca4dab8c1e8cc87a3b4198c50686c82626c41414d50878f403c10ac905f39a901405b93366a575338ed7d66c0a27c9dbc4af2d217688dc3909db8878000af307a989234174363f3cc35c25a42d7361ccadeca25a484a01967be2a65bf4998d57943759528d54e498ab18514a5665b87c98339c3fc01baaa2953abc1aba78778b26d54bdb2ab69dd705d6953dea404adf8c82d29b932e144f48a2661dc2129e6a2a1bc5242552374a504e0d135e6cfc9fb91a492e443c608c6e5342361aa8205ac744ecf974b667a6528938b6085492298e97ea827d5a4274ca359a1811c71a574dc986f4262b2e29256c4b52c9a22c3f168988cccad7dab73b47cd1ca43c7e036d41c94f8f31a0de404fa38a1da0992933d752acc0407234883488a581e340bf5a8dd7112099259ebfdb0cb094c8d592485f25729e1844870a3d57d63fe9c1295fc2c4a374508f359a7e9b062348c6c807322f1a2dc887a20ff1b8e951b103698492504dd86babc01339f5b0c9bdb01b65514c8df3a61abb7941da84b8005648fa0e5b094e54e56a56e8c840371349820dc3f48ef0fa488f180f57b5c0ad663512467836d6765f6517ebd0172d886430357baec25c709b3abb9c01dda27e2ac7c17cac7511726a39050fe92399e14780e3288ae775612b2c4baaa032af561d0356c43175c6263c5d9cbc62f57194c9f76fb5293e86d9a95a641325013dee98067d513525eb5d2f7cb5783915d0917faee635bcdab95a61592fdb1de202c439dba37a235e3888134249044519732701111385b9c91c2fc96b039d6483c6d1bba2223cb0f612c3f7c6dc62bf64a04b349a0fab73290acbb15ce1cfaa15c68d896493e67dd9a518782b35fe141a4d70bf33e97a616c51193b711b04a40c9634bb62726f748572155667146d311016880c670067c653e9a8dc0bc32865adbf41ba99f19b2dd9ac7998bfc8679c689a05a5038042885742a68ef84c429984588995a6cee077c3a099caa7a5d3761cb4411d1dab8fe7258c75903ef515b6b0629ff659436ff687e6625d2080671e0cbe0cb624bf8b367e780452ea3713804e083aa6e0c7adc15618cf223b3587a364320d56c58be8f037f89cae0be209ded78cbae29ed73767ede6793f0051cd5692f63661a257ccd9d859a92ac08784070bfa7ede4577e7ab1ff6c7b159089b8dbcc5ba56357b2659a7a04c8748a86991b2b775c2015a4c12341ebb419e1244396c233c161495366104b8e29979e571c9614fe10c868db56cd934c5b2d04986a70be8dc25d61cb6f0054d5e4000ef72557b712658d962b1e673a07222d59bcbc4e8339bb5b37cc1c2bbd38780f8233843ad420782b4951c3321888fc3b488897c8bab046f79cc456bba9f666ba261284a1285bf1a9a9d274d9b87788c225c0ffa20388183f35817e5825d450a1eee881f94a5a129e688ce6664021356580190a3ec5ed220b8a5878068ec5cd485816f8c1ee05c3c23ec0d0aab7f73aac249142d8992678b38410d41be710a285d3b593a8245e514a870c3c348fa45f99aacc464b399ecc0cb3c306c273e5f4c671b806864120a88c07caa53a550d52c5641203a7927b40631e21344a9337da2d128dbbb5f97b68b8e57cfbb1a67ca7741c60c2533e49ece409b0492a2e81523e6b6ad655a6dd1870b5de3690de3369c898b557886c4877ad1d67a1583bc70502b32a44afb9b60f88838eae005e2703ca26355ddc479bdf1a93756af16b7789a3221fed9a4e468b710035060752e884c56034b768d0a7106a4bebde7622bb46b6649195301192c498bb555c653c42f6d84883be82e8fa56ea303caac534014b6bbf38a9f73283e5a40b36e36c9d8b1a9856aa7d9913b22c40cb103b74853c53c3ab4ce895388aca8584449fae927b16534f48b3aaf350030a8460c8572bcc527f1f62bf1c5a9bb8ccf3ee66f66dc19286782911a6765c72db77ac0e976a2bc114a1b110000000000000000000000000000000000000000000000000000006bb77bbab15f219641914e23e02624045beeb4d7f4608d5e52063d1ecdd8ac5f11536217ef54eccc82ada15ed86ba2003e177f270bb5aeee52f9436e31a379d2 +ciphertext = 1a2dd390e05984bfc0f55ef96da5050fd9bb03891d4d2ddea46c463aab28fdfaf63d4b2e0c9af992e4f1421efc26ae86c2b296f6851bbe2e898b8bdf4057e875d4a98469b7d2646edb86a5eb5259341e0d14986a8ccf93563bc6ac067f8ff6997c2e7bbd897f02e844f180769fec5af9d6fa017022cb0af622b6e4f7a69d73ab01d3d09067b118d51805e1b6413b7a9e0ef292a6fca18a8828912a2db675f0244cd63d9340aa3ca00dc5d70c915b0061664b1e1d64d3d4dced3ef739302f1063442569efed0dfbe8c019c27823a3aabd865a47600ff9e24f748302bfca1bb60faf4105889a548be9ecaf266d8f02d3aa4997202477a70ee71b6e79dd1609acb4dabab72a38448758d8debf55369c5d3e0870ca193018e0ae6d0ffa33b93e962598b43e89d5978a9d55a608b98ceae5e897363f8a9e253acf8af560c57e07c4c4bde807620b6deb76d581bf92b7f514509446f5c4e4d09430b1855e62854988302c931b9e624644a636ab8acaec56d7673b26852c692e8325fa1b6215f24ebfb388ad1022fedc0bef272c87e10dca97df1e63f1a0e9582daae0f49e30c6acd119f7c4eef59d47443f491df846431cfbd23900341086a304589f52de1d862c26af32095e922b92650c68facfc13892430d428f626fba00cf9501e1e4646e55f5304c806b5acafe100084d7635702139725561522632e7e3871effe883298a7264a411484cdef78f9e721c0e5f3937f2fb7d40bb91620e473f9b97adddea69b3ac682e8aea2513b985fbae268176c1bff90e401a31e729fe8b76d13b5c8c85ed833d9b076b5e11acecbf0e96edcf8ff562255124edbeb5b9117cf486f30d7883aa353b9e433a77ac6912cc8e5093c12385ad926be1d0893afc7e64fb9ec55d3285e01a3ca63f3c07b95399bb4411c3f820f53d8350d1979ee9cc6bbf2d7c92d0cb2fd0a1de910d92589cf1aac29992489bc179676c31ae768869398fda50ff14860a1b4dd3bb2e4ba8b2c87aef7ee00d375956a62dc1e5d548a59f209448e62c4b1221631d4776dd5192154d637217d31feea1c4cb3ef1903b8987f4c184cf3d6b5355ad53c7bd3e0ae5373d9971115698214a93e12b98489cdd75028cf22c1da41096daca95854b35d8bbf7d0d4ca2727aa511eeb6cec5352ed487bd3b00b261cbabcfa9f082ba7300610c6f92725d532a86e00b2ed1929a8be7a342c079835a2285569dca92a808049f170fba39d990884ef39ca511aaf9a713b8d78973b4f4a2fde7ca8b6adbdc5a70241fe3ea7d005b33e48cc9fe6ce5bc2bae0746827e548332adf83f8aa707e703fd688c494136d8dfa50961a9e5b69b542ed6ae0e70ae159df95dd9d4789e284a675fe048585214047f7f6819f7f011141d265de9fd4c04f4ed5dead63fa4c8938b2f42108d263d5394d164b3254294402cbeb48663cf1ab2c296d6ada107e8aa5b505da49af96e1cebc6b302faa148216d38b9e8130cc654974ce299172cb875742e62c32c063ffe7535db2726f65fc8f600d4dbb1a20f +expected_result = pass +expected_shared_secret = 54c35602dafe572b99aedb7069a59c4f7818c860b27a947347657ac1954d6454 + +comment = Rho leads to a matrix with unusally large entries +private_key = c5f6c739c640b093956cfb9d54272b3c704d3b364ff1c68510b875c8c29f30051b5f60b53f6341082252746b8d4eb52b3f77c818d42ac776ad393072d458a28b186da2b61cf64bc6d8b424afb49a3b2528d4863c876aac69b7c7fa95314dd36ab5f021ba8c575ca458c469409b71b31f3a8e371937405067951c084b6a832ab321642c82f33395b0701e5a677c3c783a47d7a6e474af454c1b31b174ce5285e90608e1932493e44bf48b921d6a58b1b86ec2a38b8ba2a1fe884c0fd608af3986270391d1a42843637d75194722d31bc81b2b507ccc0fdb309e59549a874d09239bec5a41c4e9bb48d6968152ac9d431cc3b290371296b8056ed56898b272b948e556926478291cb0eb1bac50b6718e98b74a1777e685b7b6d7cd6b22bb5846c69149b4e7b292a4153763b768cd5a67b65c3d059464ccc123ac086f9f41c3395a56ff3152fe149d76ac2fee2079653326bdd82dd6f66b6687a7fbe00d9832b09135756c5819b1f66dc44c7b32c2496f63cf077ab51b8626d0918030134b8384c565f0715167b21fab697e84c6838a71176748f12334078c27dda3133bd44abd69bf631badb5f2664f2857c033102ce8284e4b2beb9095cbb40587bbbf457054f4d11bf938af207c1cdc5217b0e9797bf9ac88f3943873c8b66883d2ba5ec7e6696d50a69ba55457853bc526819f1a6fe09973fbd19832312b554653b8441e5eb01884e94a355732e3da645eb849f520bb2bb4327d560612852152f8cba2f77db8d21922da08e60bb9e3b39b9b85bbeb9b1715982d292b8f1017cd3e60447278cc0257898575a0eab1408122bb3fba17b62a31902a567a0821d42086aa6417c259a1dbc93b25003fcdec9f6a5507b4b732a43c444c5825a05119cd089fb2e569f70b4d5e6919faf15d6eea641f5a2875763f42b3991f7c89fe473cc057c148ac58b6c88dce537da8632c10ac851f8916fb7b6ce89ba5053b8d95d29ea5d36c91981042c4aa1330aa098a6ab256ade08592a05c95021606adea0ab637824214009c2b915be450a1f7434ea2c7f562a4fe21139c2652ca8785af3208f4927abae698dd435e90e7474556af9b907f6d73c4ee64897dc74c6a876eba1b598e784b8094232dc62bf1119ef764bd1a3bb2d4fc7de069273a223abe5269a1403873087906db164b58435ef41d7d78b36087062419123c8b1d54da918f34920d3302ddaa300797b32c1c81b82798e421ab2589964334714a75cc84548031d5810fd87890a1932c98bad37c860bb15663cc0e91880af1947b8a26be9183b648b714f763b81652786682c210301852776aa673a1fde470afb56eb0b0114895638c609d8d55585d68c165f7aad64c1406a165788c3364667f0a3c65aa300fc4585e959abbc5e1b316aa108a1cbf703965a74475147a2d323b7295d185571000e43b9120b76fb0105ee7a385965026e8f8309d4badef88b433a59090f88bc4eb4ee2f6c1f0d880057b477e628bc35b023a4c9ab682822556afeb32b6c9088e35c107e2a43506c43a986a0420f5164167519c4029b47bc81e93c1ec149e6083b13589bd2a9c64fc6247ec323b8cb73cb9f9ccfb8bcf25617a87a3c2d8b5158ac8661dfc789e92cc47340db6d04313d3a689b357566b9743cace5d5b906a39249f1c2bcdf335f37aac2565932631ac318bbb7ca75db36ac198ac6b15a02173049721d10f7521a52f358f35f3719269a695a4b0fa03b32d8a209aa12a5d786d8dea4ba05498ba222eadd647dd5a397e655ed309883d76326231a6764a7ba4226567022d70fa20cc53a045cc5a1fc54abe0189a4a2b6bf8a969d61706944bc59c6add2992b6e562e9732973d32b97956203dbc523803ca0a462ae118633483cab85c645ee3ad51682c0596378dea5e93bc7ab652648cf1954745172a75c2bf6a3177a7841b089b6ee911149871a9d987c6d499b6e0c4d15c9b74685401b680d3e112d6d70bdad6a3f9954b0057335ca36823328ac4e124d55b9932d548f58b85a32844e9f0260d8a4339285ab46152bbc05a967c5f16072f16178687b0bc06b621f5a4a14ef86b9cf1bade0185c5c52b3f2c407479467e5516ab9a1128260317605d4db250e8f4b59bf28a6ac2606d280af28664b75092fdea1fe9374976722dff579728e121fc1944891c586625a880a7bd154aace3e919b841b1f5f8c0fb841d1eac1fb18002ece216d42cb401dc1681836c1198653456c9392944054200a3b95b986a396d443a306b66018b525fbbb042e662ec108f6b872749d3287440c12bd07d1061a524a01ad7342d74f8a4b76222c5a439eef4235d51c9494602f6624dee256ea7fc09ceba9877f9332bf195c43502ee43c75e78720c306c2fa47f4ef6b7d69038dbcb8272b334c98cb665b306c04252fad3559eda4b96c14bf50b78d4a9a37081a2d61cad33b3b9418bba25409fbf4a5bb3c775a43b39520b37b5b82191b4983398858bbb0c6c8031b9736a5f76cab0e647443cb6d983a5e0a6c27756cbf471baa17870015566db8c8a51aba969e976a1c6cb2be166f20680893950ddf09cf8e3827a2a884a7a65d61c7c70a522d17ac0939625fe63958741255b012712e76fa8da809a8cb447d730d4097bd3e86471019dc8897bfc82c3804a76a38919f7cb50ce79bc13ec4bdda215bda9789503aa822c71ad8107a35818a7cb055b303338e465933565b94950c11836e8e33ae8093b0aa0c5d5d555cbec5eb4190eecaa1525014e8a341e9400180937afeb126c278a5bc4713fe9c417c50c1e47c8756fbb6a6b265bdffb4c1456c5b7d7a895b6932dd9a55623341354549283ccfb36abb3068b2db7348bdb1172318357bac12422ab93a32b453bcc0faa4e8e595b05a145e614aded6bb77278bd78907b828b18a22aabea48bdd69cab061522a618cf39406f6c78cb983354384415d8b857cb451e01b24f489a3133070d775307fb61a0f6d56d1255c4d4e18c62e57d8422080cebc919b81e67c4304cdb560ab16d929413af650a53f870e8017e90096452ca3ea648ca644010d34bb79c5898b775b197189a55840f43371dd9cccb7b4a28a66309a515658f06acdddc47042acee250a37632b42af51adf1c0666902fe0acbfc8f59127753a40161de4ca07a5c8bec0d8ad3141487da4a842147b9de945e4962699033375548d680b88ae8354d6114efe284517778eb9b7957eecaf5b4165424a5f82f100d02b7d39968b98f69c2cea1a0b39394f49265b492ea8f4000000000000000000000000000000000000000000000000000000050f496e61849154f498d752102402b70d58f7e61615f724973e5ffa9065b18a2e8541047591efe1847559704339d0ddba611d0ff8017cdc84e61184715c93e2 +ciphertext = bc07d2caff561b4645e3878d1de0730a88c05f46348526829a396f05a0a00603f0e2fc79e13beaacbe903827c20d9d687f3fb4eb2a8e9335459fb21380b8bf3734518778d8cfae9524ead1427c6a2dc379ddd2e985e2977bb63e932ed59c83a8b9a593e2adba0cc5f106620fc8c6c4cba5106bfdb4105def0c1d7b6800327cacb964e1d4ebbddfaa15b279115a1d05754c0c8a715fc2fe5aa09af7b96d5a93e758458aa5af8cba03b942f4d3c0fbbc2a45d3f7af5818d67219a72f4f538883ee2d3e507e2dbf4f7748446443bb71bfbb4eff0f57d8154d29f5cb26cfb52c51b676e9b1ac08786d5f475cbbfb49697a748b7902a83da49d285a48c7e9cae74b66a30b02a353a287b40a66a0663e7a71adab7d03272f2ec32d47097d4c303396db3e7b7a947f467a70646777cda227d72310806107b5dc16cfb36918e88784524e3a46c30242a40811593aa8f72c742f885a9623534753b2bac5e29110a1a854646abe1c0337251e85987aa612f3a095409a5a632af14acd19491577223c278b18a9c3ffa7f72ae49b89df6dc45ebb2803ece96cfa94ef9ef5b24fbe686ff90d130d3ae953a4f9ee6581a346b0612f84cb6ccad4fe94a53602817d67c61a9604d288319f5933f4a97dcc6ffc36cf14db593fe27f873be712186a6695d949d4552dab37e36e2e0ced229ea9dccd6d3bae22f9fb888ef400b594ec08a15972e8d2478e50f11947b52bf384c731b0e50dcd4ba116abab8af3b880c54badb11d83b4266d3e5fc25c2c8dbbba12fee2fa5c2017987f31277a67ac702b8dbe110894a8c81011c7c662ce9ab96a2e25cf5056a3e202dbf6bd5bef2347537f7811637e932d13ce02283d48d032c284b6cfb84fd813b6c3421017a7527eafcd3fbc5d4324b5351b30abcf1b366f424a8a0b5edf6bc1f3e8702b03eff875687c6caebd7bc15f1118696cc63859e3aab75aa9acc58484da7f2bc9a120844e4830429c0eee2b2324890bde302bc93f661edd9c04e1183528482f9950654e8c267234245aa9482d94e90e00e929b65431f986e7bb34524cc41f4b4443646713c7abe6c4131a2d67f3bf42f0a7f2eddf82b5c08a94d99a0a7d14c1b0b375fc158b7d4276eab22efb438f0d0a9b30e9dc127026181e42643af8da0b24bd10a532069392724948ad722b25477b481006fc1fd030aa62b217e6695dd4c7ad34dbfb75aff1df5774b061a4ea8526e9bcdf9679405c0d2e40dca00c9e80840e832fd663596dc55f602d094253893405a02d4414f119d23c4544cf832888db5ae8494dd2e8ee357753515d929b8a37b5b45446ffac20fb204b5c937f6344c453ffa449fe839b4afe1da61301057338fe29df93aa962a7374a2ec181ffff9252c8af5c3f75ebee02fba58a76066df4c6acfd5d1c18390652eb2f469d35dd708e63a498c08c5241b2717333904ba0e6e0845dca8c9608f28bd1046805cf7b220498145b23cb18184a259458dd2fbaeb1c383005a0d289562b0a9daf7d1e320aa302fd3d9a02c65fa901d46d4 +expected_result = pass +expected_shared_secret = 7e1b4195e9cb70e6884d3d00f0b3f0a66b4d8c00ce112e1e79a1dd236ab62b26 + +comment = Rho leads to a matrix with unusally large entries +private_key = ea53a046a53b7e3298d588b38c403e67b5620c5c73a438ab7357660362ab3822b5e774a9dae973c83a96db79b550dc176f9b0182d37f12118bc96a4982249a352219a110704e4a0ddbe545e4f55cfc2c50d54cac33ecb6fcbb3ac2a7bd4e41282476797a3c24f4ac4f60c33da281cb1313035c9c804d755267894d867469dbfac7be52a34f55c0dc642354e52967b043a0e0167c806581b51519e04af675147578c79f492da3ac0748352c6e5c7ff462008cb42e9817155444b214c3b93ff3ae7d44b5c2b659627a833cc18ccfab4fe6d6513dfa67cec499cd7a0d052a5f9ba378bff75033e69ad053c04b74c8cd756c7cc0bd494129e069cfb4358324066415bc2a4d1cb8401867c9954aa8a33f929ca279696cd515bff0abcb6c8692aa9cc076861e2bf27ec360983f775e9f166964d0c43c380366f19d3f868a7e038752d30e389c0c057b6d93a9ae64746d5b3a146d31269b94c7a753412be68d09d820be6890e5db1ec3eab1acb14cee8a317ee7ba0eb6027f13a540b07c12cb1164bc7d295c16eef4c8d9773bd2d32ead764f58fa48abc2a5491bbe00e07965017ebf40c973343704112bc90849d219c70b028ff3769e720c4599098d172674358bcaa8947ba6b874e3d94e623122ffb3984a0b571632be1c540cc5da45ed1c57da1054abbc4456678249a2589544c3dfdb6330ab35416ca49c8046c9446150660b45e05b720722bf390e307445dd8a3e23253cbf633c8ccb098976a68e481ee86b86a32865d9caaf385842cdd071b0974e807710e2b44c598a4a36bb2af048b0fd30bb6c64a539513ed2a5a9c6cb16129cb88d6bc62389b4846a2a0afc532eeb0f055aa85ce7b43f8099cbf194e664c59e683e535ca809d40f72d4a3d5e287b5ca3880d4af1f1523b60c8f811a17b2881602ec0393d54988d63a1620a48ab25a5336b25ca25d5b21425ee54673062020f065693665c68399691748ed8c2b6ea47b89391e7dbcbb3e4bb8bc0972916aa0ee5b90292b23618c5e9a68bff8476fec1c7e382b1cddd45069263a507c44b97663a9c8b4bc690c89d25893c4caca0caa7633bc66f449bc06603fb747843b0a8ce11d46ca100b3243a8617904a2ae48db08ba24bacd5b946cc96b834491a246850c44a0f049bb3e099b3353b28c3889bd4520ce75749b745e65e6442d970e917362cafcc9cd1a6194d9ba41f29feab98320e10234c1b0fa367f7c3a420052a9ace9a0787bbc420832db814e8f86804fb74090146f899a624ee9739ed55c40b3716724b8a8164b8b976130d89e15dc24e2078f24a953b2781b7d36a12334356a6998870a0128ab5152a89ddc84aca3475f8cf849bd762ea7b23bd2d743a9d3a9a2c2ae4723b5c1a3b5349a2d4bd2907d89ab8fe80624838130697bb1d45f873a3416164f862630e96075fbc5192be26755eaa1f33026a1f201a05b6b57ccc83fe9c191b13016a921532c4558b44ff0a26c864c3102ca921c299b38199f7162938387c3598362e5f616756bb5aad68c68e0a34ce96684597712341f391ca6696538582ab0dbd532c7757b5b24b0413145395123f0c4668cd538782b0f65ecc30b687efa78183de47f53b73831210c513c54febca5ddabceea01649d9c6588d68c05e93cb6959fbe348468cb6e7f482d2b0507a097625325a7ff5740086bc203410414845a177c578698b313842dd2737d79806fdc8aa4ad8b91b514b6aab60885a49be68ba60d05891dd1cb47c1850b0105ec15a95c93136f22a170e346d2256a0cea672941335423cde35492967759b4317981c34fb0d759a2b08aeb411c362b2630c4b8ef342cf844206d7a5a3934bdfda95ba9fac912fb1844a0bb62041868ba0e3660a5551951b39880eac2959b5028eaa765492416ecf7a05102450eb20eb2a28be460972066b41ac87abcc28b38a7c92d91779e0c7cc8b42f107b48269521edf0c558a1b767536d295c3a7e60b9de6a8f299563be7c4d33d33940234af8c7764b181fb7b5af1dc88e4e830725533656520af7344e4ab40f6df34a90a898c672b854021d0631c1b1e9999d8176b22a5ce829a240642e19472e635a83c5086f87872f72a62e5fa038481a6861141227666f9203675db45a444c6310518d86a9221c9b6bedd753bb7914f7995e39031963ea056536a96c9b14598c95652091dba9210168467d7388b73770aa905052645eaa877c6f8a45acbb775d080521479314e214a5217835667dc2cc67dac17b0103b1049a03585b30631c6dac53b6d4056e5877786b295fe94c8804b57a027609bee938a8812666d12345e04c92469463443fad1c2188c951cfc6a06c3b8c3ad8856ef26a67b7841428a1f5b69a3fb82cad843a55645b78219d6de824701b0b1f192d4f816f45032b1cd5b465d33b3a9cb2fb04cb271a3cc74a8bf7ab6ac7a00e8ce6a0486c660680219c6ace0917b31595584f4756c9c5273ee36c37d25d5da146e57613edd34795b9cf61bbb7ebc441d575631215a87c4070159136348854c297cf3ca44fb2814448e30eb2c555aa2393bee966ceec0221a278f048aaa6d09b1d801aa0fb369ae4480f051329390af222712c61a59f98a31a03ba90c1a6c34c1c98c0be7bf59fd717ad9894786acb1cd081405c66a2e79a1fd77cad853761461c99218aca3cf4920703654fb9529c106f41a78b259294709bbc91679d0442bb383c28d64683ebdc7b94f4592c8ba2c1126c9dba9377040d3a124176fa33a3905cbb96764bc89a69480b74e38f558b422ef22e390bbc76e048c01129c97c26125bb2f86c4bcd274816265d8c41167223b0a22406d2a193ad3b1083b0cb75f9542e55b9aac02845f59618b5aa580b5b2bb44c192a906ce61b8c368278618d8ca8409fc02bb9b097acb208e3c2a9b651a316b70cafe6b9bdb32ad794b4f018b66ce55639e5558f5a3990475794bcaa06f17093d490fa583e6fd9596b40958359a30f813b940b1e1e4223d3857cfea691eeca944de845c2fb502e35a5f1a3750454593fe1c41662a3b3da407aa269c43167acc98f5f3c662d6177d3594d0cb800087c6a525c586d86c12e941b046625d90c8ec6dc8a5c546abb19a0b585aef39379db926691124265103bbb49cfc4e9100c803b4ef68a904273a6c899e48609bca003bcea9cf82203d52b5f9b65c409ba9503b3b16c7077465aae45d2cd4ada79ca43a9e99a124b7c9fa24a323f6c6bc18b81d9a6161191561f3776740b539479582a46bd913ad73e0900000000000000000000000000000000000000000000000000000009ff3bbc6c725ac014b798e2d5146532f55ca1f580b27b436aafd30679eb4bf35ea63afb095b03165e6f3b9488778fdd771036713df7b893ab8777554eb05f64 +ciphertext = 79efa2d537baa2b87a787317162d3dbcb40cb3c25f540ddb91aea6cea9870bbc5a5f86f8900b913fd4154bcfc7c8a463b9b66118c502ddad539186fcb079664f44a5363cc8d80d6a4c09f28cf8952157526cfef7bad2fc2cb69ff03ac39e37d47faab64cf54f63919303badeaab9e59df7040511ae335c5230e46e00a666b994d647d11cb032e7ee235b5e18b1894621ae93ee129823334580381b857cf0360196cb75180410f9fe7558d0e189502a5dbac5b4f0597cb3d1d201f89de26f7b4ec0d200a418a26cfb82cd4496c3ee22f6eb60f3ad2e1af981c238da13063d1746d65f77ce0ef30894468b687b31443c7acacfc3b3878fc9ec56878e7bd1a9f72ecb1706a4e5face0a83282cbc2bd15c89afbe3c97dfaf395a96ffbe1a3f75af03311afc69dbc01b11ffed2aeb8906505e910105806febc6e1298fbb5c0bf501232b888b7e8b285953d250b866a20cfdc7833a732966b3a03485ae2852d0a3fbeec6dfd0ec8015db5de69e55f091e956ab4392834c5128417105541b1145b27175fe35efbf3102277b35e42bd83aac25e25da6c55c28a03b9e2a8135871b4cc49fbfd5598c9eaa2482f249c0b6332a6999306be55921a3016499bc63a072a6e9eac894a3ec209177d07208d0d271c47f8065d0facd2e975011944f7884088768fdc053cf86f31f6d348222c06467fcf8ce0d404a2558e8cc422521a4e249549037d3e8a29e03a9a9bb511d9ffef4c5185a380d874732c9e862a6e8fa3fb72b213dab2ad0d91b047440b1d334660067566e6d2e14765d8fd0a45b9b8e8566419a6d7138e5a106c31b1278d50027d152bc8658d7045cb2297bb8382585b38be2d5fafaa7e8c867c74be013793874f181a9798193dee26fd5812eb469d1b842a969cda65d3440c67b00e6d1c3ae8630165499c1b4cf3153fb5731916ab779a2562ec62637d747d61342d832aed330e5cd794de900fa507d4b5fbdbc5f3ec1aa69d0319b3644d46d9502d435c1b5a329c0d3524611a145e3024595e91c2afd577a422d59d4d54a430f439534003be467b6f018736c4bebceaf7c83c799c2b7745ce7498dc84b9e455b96410dba1a0a5720fe703b7c0d859a42445eee7ca3353f294438a7d463fc3e98f4403f93b5fc4add88cc22db7bba150a2988639ba96cba8e2a0c980c9bf8cebdb5beb262d79e86cceb774750cd9a192ae93d85e60722ec6590beb7df8e4d036837c97dc05c7964dab00034683a576da5b51aa8a0622edc27975978c7daf1b942285572b09c170dd332a99bbf703d84becc6a96373fd1c0b355f063e4c2c6e59f5437802676000a819b9b99418df893b98a8e6ca22d95da2c151fb24a3a0e5944ac4ca6376e6c281b275589a3907c0473282967a121f1792d09a15e9d71e71e73f9f627ef0dd478061cf053af434b0663624c3bbafe0f37d7a32504e9c686f41bf48e287aaa8fadb73fece907f26a9576611ab2176a58e5c1f3e98ec0248a15774434c2a81c7a8f57f9950b83c0d3770d17c4e57582387d6f19bd +expected_result = pass +expected_shared_secret = 2522e72d308dc9d7d701e0b024af9e15627572f13573b27c406fa750df9636fd + +comment = Rho leads to a matrix with unusally large entries +private_key = a7d40e120206cecb9458a1464b96c447db086780708c7435e40bafe1ab8cf26caced91b888711b8b95414e080c2be24d7a622c2e0410fb9c795a25a50554abe8b9049f9890e29531cca88e4284a5bcec559f939061b003510c8a23991cf474ba6676b0599c86dcc0976f3b61cb624954d3914bf28e109193ef1b9efdacace8574dceda34905485e1a79d51c8ba06722150d8a243d69f671c18b1c2a77c990699b72ef5b1c4aaa121a8e5a6cc971178127024166f2593893bf3b9e0db273040b0821051cab28af5196b8937538a680b39251b08051502c2a3d5504f78b767dce91e2116280c3532e9426b93d8cae3e9abc5aa4832c6bfb02a71559bb689f82c22835fb314a5e6d44bc4085eb39ab41555103033a0f4b6aabfc5246c93c07840254989301f88776c06c9f808369e18445058b4d940783d57b7d7901b0d63a6e6512b31a63ce0704028d936462c18eb4bb78accc3dc56884d9837d8632a258c4e998cc536248aacc62f7b9b65191a28a27a1cf44a0d512875ad5112e034c0adbcc67edb84eb000bf3621e7c1c5cad1cbd06f848c5d8c3601b07463b5c0e33cd260a2ec99a972c47cda74229f6292221391f37d20903aa76eb6966195acac6373a41db78b8f7515a473ba04397c2e94a26a6acd8f2cccdc572d4b60e56880fd0295152e18bc79699feb1a0b6f6c7ee19545f4124eeda5755a85d79fc2dddd2848216576e9ab4d07b7ecf77a74937cc1605602c62003dd5abaf601b55ab0cdb37bb3110290f829a742c5607ab24a50000f3191f435427b5345ef884b91811bc44fc4c6de32bdb0a73edf80c8783a5a6b6a2d06657b16104cd62ad847206ec1b87729260e91b2afde6b0f13a87025c10bafa88e1fb1a66b98a5308a2c4f10874324179a2729df786627271ac5a945072beadf878035169c543c0b07acc49241b7feb406f524b71c787ed757a3d48c233bb75d97c42e03b9973cc680169520e400b00879cf2bc9119325586719f22e1b2de163184b2c43735b2c1a8654c92138b90c458421f681136e0d6c417b20a5f8c126d3672a4073942855b127a87ce96c7e34861923b3ea9bc9f0aa277746927f0777814862b0845c3bdc12309241f387cc6f4ba4a9688b947ec8b5603ce88ccac5c35756d0031ab4a5e32f6ca97184df2acb38f724fee64a6a688c69f6b913576af98ea2487db097d7c81dbc2a29a381b2345495160c348e8207e313929dc08412304f6a01c90f6889e23b7974bbd6f081f52dba8baa716b53769e6f71b962156cd44a3f50563efb3b65741aa26e42a3720ce737c7a7ad5c875663bfe36bde03b106647ba1ef098569bc10a0940cd300d58571dd354ca5ef714733bafa4308b3c4b7528862664a8656d16c9c3837355e39072db20af20025306390ef32931e793e33333cfd893c6227215027ab7ba9cc0212ebc749abbc62be483b3e2406a5ca10d7fc534166646473c27979053928aa5445c4c1c26cde40777aca39f5a64161c322135fa176d44b694341a0d3a05de662ef0e1aced53c4ea2762c1333da3f987fac65ea63a17b55c3f681c568d648966eccd095928f2e32af2fcb0674ba3a50350e282c99af149ab1b3f52d3b9f838b1aa8cc5e2c1184862562b91806efa62f1b72a8ec43e70663de1f66a59687ae0cc1d9de1ce69244fccb0841b4b1de2e964e29408094a1ac0a9b4daa836e94454ebb942c6e9ac66f39abae73f61a99834292ada3c824bb53c8e67912a07377da92e63087f8d947f59d94a842b7aa8832b2c3c1aa957577f55027e76c106f86946f036804671b0e0416cf62e70eb8194d88030e2b38585181c4ab1fd8165a821bd68dc8fb3b403016ba5fd129bb9d23182029c4a292433087632816c009a237a608e65cbae17d688a326bd6c1ab4634576fdab2322b983f29c3e63b31303cc386bc90641c84965572c49a91f4e8258764834f38ca7f869cddbb10674d4296e5205ad805ac48462d3b31a9e6067fc0a27470aa593b896c3c319357b9bdf0632bf0786fadb0ac242609462a06f82460ea75762a678fcb07c350649d13c24c9e33200c9ca0e9bb87dd2c8578c7c4e27b1b75681a0b6aec6a55e767c4e14820f2ea609a16b862d5695556b0937f53e0ae370086c8f771295b1a09f0003a07bf512c4272f7241752a6603f8f51ea9a088e5263a59eb0b13b87a1d2929c2c29557681f180261f46c294de4aeaf380ca5f79efa2c64ed3131272ba489494ddbea14c69c46fd6346a7ec9f72d89559435e139a67bc3240bca29b3774127dd85d53c20bef719724612c462bc598c54738c87a00a9cb8c4b44e4e7ad4573afd9324fcab820cbf2091fd83fea52adc1b82b3f6c86369aa358498197631a20d40c790c2ddc66b0871c1ef882305bd978055bb934467d3ffc0359c2b31748cb19f615a63262fdf695f555be1ac432126b08e4a97acc18b8606ab6adc5cbe4589389e1121d737ba2b3a84d02bfbaa669f3a06b1be13fafd42a1773c830749cad35456e956c0ee64a5fcc46f1763c3b0c0d3de5c296a28f61194ae72979add8c7ce710d4ee846af81cba3e18d5e459addea9fb565b010e9ceed5798155227dcab155984635d7539d68c9f0d30537ce8b573b6bef1170540d0c10528737d6a5b219b2d96e5709a721b40536ee3c416fcec0bdba013b0fc0e786c9765d312692a80a5c9a3d65a6662788d194722d63b4bdcaa700e4c3daeb911e4d45674c3720be35269a21c0717a4c3aa2f3e1ab4f20a885cac44228138ebb70bb4548dedf8678d2163c339c1a9c719c2f1a51748571358c1451b0ced7b90109c98591126fbe57e1c913b5a935eff14450a22c4a108108b99b6efcc9bfd8438b5024677144885f1886ba068a6191ae17b9ffac1087bc94badf510095baa7167a7fe245a89a2a627d2631706a15d5aa081d037a4101b217c1c45fa0d83dc790447121cd9a533592cf8ac424de8770b45307f0aab484467c4acaa82a5669f7621e8ca42ec0b9222766b52775173b288ff5b01d70a60a853aa44917b8cd09a4b666138e91a3206c97877c96d690957b58553018f55f168c1c51bd9a48ae762a65dc73f366c79e77c42e793750924bcc1472cd5e552e20868a42047593842619c2e0fd40a3c7bba9557bb5c71185430a0158b9b95d04fefa266005141ffb4ba5160a5eee1499c09b11c549bc88cc501dc94a0a5828ee8a776a2a4aba3bafd410cc8354216cc3a93a457e9847af39b898b04b60a0c661a72a2df2b000000000000000000000000000000000000000000000000000000da8d41b69d2601355a1e57206c862dee967af0224b3c5ccbbbb89be1bf12fc688bac5e523fc2f73973b46b1727891a6077329e10e94acd027c9dfa38ef4e21e4 +ciphertext = b0e578cabf9deab616e52934955f42eec74bde5ea98acb022c427e08232142dd08f9120eefe5f455c8f120e672cb68f3a146c3aa457b637d0901fe2b4cd45e8b208e06823b8aae09778cd00fff5bed5232d219a2c33645f2dc30593e591f697118a8472eadbce05c9fbbc5d4b717b880065173cc0854182555376dbbe39194e4204067358808c890e5fe96028921fca344e3500b615f2201a1c4e4d13dcc889cc9b1ac72429074c21a52f4c78ea2c467d65cd2c9ed682f21f31b27af4eb5cad33dd633185bf32e726fe6e57b03168803f693bd85f5a9f2c3ec6944e9ded2b8f3270a89139ce50ba6ded6bc6b0be8893f44aa5856acda60dc1c4c0834d45574ecb6183d6e59a183c0125ff45c718be2cf85b5ce6daae6e37336ea63856561f1bd4404df725d5ed9263038d1c623b2e1aeb35924b79de474407168834891af783fe5d83a631eb14d7cfa949d698ffa45e7d8c46ed4abf75cc666b78526c9b95ebb2920c77c56227eae6c893b57f9f463ff2ebc9acddb2f7ad543c5b2259047a4cc87ad05c08bbf02e8bb267bc490c4b67106fb598d42135c927fef3397f4c3f6838776787f23a9759dd3214075e79eb3929932becde84e82c257e4638a19e1e3312cfe09d4ac681d653d749c8fa6efa6dac35ad59399f1e233540fa354681ca55db90007039b7e504e2e4082aa3e4d672019741aa02a281454d4e1c73a1c7d0b5449c2e143ceaa3b18cb9a74a89f1ba74963dc5dd4155a356211277af3a267947700a2cfd84a605ab02d37bd6faa8a26b50f7b3d9bdc79913272c31dcc0f0183d05933a9f233504ddee2dd851529667ec5174a3d23bfca197538ebacda36bc29ca675384c0b3f45e4f67fb66d8dd4aa57b7da50ead391e6b663af173e7f4d46139f5d0f4cea84dd32e4e718967c6b93617271224f2fb3a1ca5febff5f26c4edc60e9acdd9e464ebb4571dced645814e1038a50515a7e06501adb2de19fec4119dec7548c41097964c3151226153ccac24abd1415579ba1c37c805a5827332d97ba90713829fb30b7b09b275d75bc10d4a26b33980a0ccd4b00844d9f379551bd0170ee895286526ea9625a72b6cb8decd9cf18e57262f8102a025025e8168465a65a7c7e4d5fc8742781acdc16171085d51dd5ec9f4f71f58cfaf4557a55d07e7c164ccf7eb427145c7f9a800e9bd9192ec0f74d19fc17d3881b1d55e8600aa55abf78fd1e226d9dd6e8da2bea15712f5f43325d4b9c083d6e37d35c043f2bc8c796ade072555263331bee7fffa54e2099135ea363575847abb770322376cbfd3f1b7980a1857c55fc82aa80bdcd701c7b7d66221f08492efb5438a04d041b485bcb61f6fd306e96cfe758d99ca1cee70b200eedee86145fe37ab7aafcfbb2df694361fe9923e754187c3277cc895c4a53732ee118c7b6156b55b30847a6e828b7069a5d4be623abff66ba87bff49294dd9b1f698ba445d610973d052a80691c9968e3179aa3eea5b0bccb3cf674c5cfe7d2c14d7b6daa7a4813abcd56ef930099 +expected_result = pass +expected_shared_secret = 1cffb3d6d9dd9cf90d79fb2c5c974818c5bd6f32ea4d44c302337c4cbea44334 + +comment = Rho leads to a matrix with unusally large entries +private_key = 610c36a286cca4815c657bc2f28b854aa8602890bd6ec2700d64b495b50d049c5963b8294752942d11c1d0182ba6704e54c003b828bc58b6ca3ee0823607c3c00bd0471b4df571c51db3003e4cbe6166c0caeb747f79573f5b8b80d12ca78bc1d3e01a318bac91fc863198afb70cb9256a330faa06639caa7ffcc1248b367bb6b0bd905ab0098b79b85ac5dc083ed43ed8b248dbb72e5ad962b3201c92b132b2961d9867b48208896c11afdd929be2792839674b18e4c1e99a7df714ab7ecb58570281ca80a92f148bc492797564682b560f1bfa42b2f7734047cfd6375d3dc05846da1d3511cb3c8221d38226f29ca52b07471a41764f86ac3418a96aab70fc8454d6823f8b7c6211d216d08c67eec474a3cbad8f3587e22670ae5a9938651f3b48011341b6140ba393621accdc3f606b080579197c48967f1c8d11026d8f90b0697869ea49cb9db086ef687227b2549ac689b564326a2280d8384698185afb25941ba0365b0c1939148ed6e1bf0ef5c764832178d47a01c3573aa268e168b740194a9b36ac2580a7bbe1625900befef3adc6fcb356100ddeac4393d388fe647c3d623d1e6a56a96073bec59f5fa39581245e31aa33cfb865bbc28e9f2498bad34a5bc65c517bb8cae19b6d1864fd7a0c48aabc78d0373a84c168f33ff13a9586aa349a185e3528003e804c8cacbccf0073da46567f7c3ee6a55eba856851234b4f3725e1bb3609e50cd4c9c96ff947c4b048dd7c64b3498d23c234e9bc45230b8b0c797946d0980dfc7bbc5773620b8330262ab6247fca5684c9fb8c2e692c3f654099a7a93d0aae62d24eb594544a81431f295bbca7b15dab7bcf728e3dc61f6354a459a120c371030f3b622569a78762b1cb08248a455e0f0847e1531d194acb0507bb53e9c0e13c8b2f45ab06362be3d9bb58ab6d90825a15211f81f4987000cf74355a28ba08443b3fd9d26b70039955773f9f840207f696d0e7a4989c4b38cb23df626e53b7ccf7c1bd96bc3f68c20ba180a482799d2cf975e0a39d5fe863df954665509b3eb63c257b8c9e39050bc4a739468e716cc289a79053453a28906d003535536439d418736a95763ae222c8870b66f1b5a9978c29d238658a3e773063dab55125e851983706c3ec68d7fb1d595b55292885f758a8df752fd3d97a8dfc33a228c896a44bc039ce1a2069810b1304d44522b1a5e43756cb843b5ef515d89c310f442f585259e5d460dcd578cc51ab49e63a7cdc2566d77e6959a7d24150cf0b413d335efa65385ae13b482b9b4db4ad2518b71704098d7481d2233e2ab201dcb4a1b3604149710de3cb247f29ce8ccb2ec062b014708f397482dae5936bec37663c849c9baa9d3cc88146b88cf970e574694af03fb78205e205435221b32e5513989047e62775f1ba5aa89a10c9d35cb566328eaa5748e9c5057446f96cc691d80208940cfea984df8817d4507aff0a0a96b8c6729329775c8d75935d7624cc0a06ab7a950f2b73ce4d90239706403c0651dda56544ea59bb06a99f00bd698a8c3f127fb4a3759317a05ac244a07342f9a47257e5649dec2c7050188ea669a97c137f707f4e5b4c57945f82c1b0b2040476d73acb54724cba00e8014b4f4687bb6670b1c2a29ba577100943d5b926cb396423663f710328a8b536403530eee05006e7a7cd679ea44c29146494f1775cddd3b43ce6a903283f7890979ee98842d5a76f93777297abffccc0b8faace8f362c081aa435c32a5c31773bc046e61921f1a5707579fe36067588a0f32e2cbf91aa3ca6b38a0e12ffdf8685874869028775fcb7d7fd7a1e37c611316515638a510a13e950960e6f39395e436821165e734837ed575ad510d4fba6c3ad67e039b71a9b6c2a7ac240ccb3742d65b4b1c50a6a1a496995da77921ce33624fc48135e88c59caa47b299605ac1c79009dabb2062e375547ec907590b9bec52c86a6b9e394ba5f02401e4545c462c5f320939075b516c4a5dd0aa5d879456449a115125369584a609a83df8685ed2ab45f038559dc6b0ea170b09680e7e747cc7246b6c182d9199941847d9c1168a84400da2a98215a9e96f6bc869035a8822b27d459cb52147d966e0c354b70ecbe46daa9034074019acdac30055d8a1a02741ed8e602e2cb3185ea44c9e61fab637188554c8b12cc5abb9073b35108f59f6832112ff23b00acb0936594c00c0534a8c4c11cae4787092bf497b60b4a44116156e8368c0c950f3677f6424690803ee92373ed5c13d84c355bf041edcc872965816d6723b344244d0a54f8ecb0f1703ac251293503baac445996a1c9bd6ab851eb52f042692a2b10e4b9b44dc9625973af03fba67a3a93ff849dbea64739f643bfb803ea8653c2b9ab9639614000994bf48a8024c4e61c8a07a5c79b19540084bc7664ad44122e46ca1fbd517c8e68aeb3d835e53846848742a9fc2a4058047969bc11a773e623462c7bac66a34c62db861ef64dedf23c0b7441f6b75b4e60b86fe309b1b7746d558987f6a92cb8513792360ef76cb6548f0813ae8dbac418c25a1d95b06c530d79c6751e7569a2027f8a5354de3a70752764fabc632f3a1bf2473e8aa2a5cf815b3856a89afc122d98ba3f74185a3b2c09049601e23ee226329f024ac2692adccb2018b22a592a450b4a5819b2a498738d29f7145e534e527c859f05ad96cb963314c58a5a6b050ac6ead9adc4782859e3383170cabe4871cfc17a30ea4ac55cb998e77e1a26662a255f99f4ac7b98723341b2c7134adcdcab12a473bfe001127bcb01f84df31384af06171776263085bed1aa3374da7136648608b569a88663d2122e84b4b946b35c1f24a836e924202b7c7828c15507b17f906bc0e4b28c230134d90655696edde11a32c7a70303aaae3363e2a6947b4bccefe9ce62953f92521029959096a8910e71c51b69a0615ac790341c0ac3a574a79d34c11b4a974ffd7cccb05995d4089f8186b545b80a166982cb53123ef644e82897c77889ef91bd8c5a4ed1a4a414389d77307d53487940fa32782061e8458e0c601c884321d121b48ec04bca78c60d39b0c4bc9291945ae18224ec73ab7a451b9cb511bae34a20e326a497cb6ce46b5848c289da630f497ea3975eda79489f18a405e91bde288379f291f538c1a1426cf1634bc033098bbc9958f7af6e408354314e7221c37c1610bf904cf9e7807ad327f0f316761939674867ec7223f06a245711b0d47832b1a699badc8e1217798c0d0000000000000000000000000000000000000000000000000000007420233153145d018d37197db4a72facb39b5779cfde51a1ffe665b09f338119e42ed33e0da5856106580e02aacd0aa1546d3df0571d17452d22f186d011981a +ciphertext = 3159aa52482f4262cee553f9eb6d853d091a507831f5ed1af37b9c55f217eb1e87e8b0dfb653932c27e9e9f2c4d45cf89e9cfe9ba0d5175be56b7fe3751a4255649cfabdf0cbd5a8704d58511acf6e0580eed572561fab262b24d39c3a430a4e54fca969394037df12fd8cd71b7b6ec3d8f7345b05d4c16c5871b686690cee9804012a3379bbcf720f405c3c83f59aa391cefd8b00a73b41147d42c8b7820b0e779c44e032209067349fa4cd35e83850ae37ee73f96fc6bc5b71ff9b0462604b4e07be60cc76903175b045b908c9b8e7e94c6bc7c48ffd49698873913f9132025e51614317d27a874e319d802923804d1ce1626420d5794bbbe5e077cbd7fa3d958fb2d9608a3d41f605908d21fc7f942e3152337115a28b661f76405620b056692bfcc066f370449628f8e31b7453e5b7b10702f7c195dfb779fb3253f86acbaf4444ba9ce01c9b043133a233030247f8fc44d5b8c9b024ee83c186a62ba9fa5a3e45389217884a478f238d6a9b8eaf3d87b7b4b4375d4d5226dfb80255faab42380365b5511567978be9726d21178eced7294463a348b1e976d800b1114fb8230115b28e51f628a31aa8cf2e3253a7dccaa37f975fa2b8d32a6b6147033cfcbde33ab8857e3a6af95e4cd0db62fc020f55c2d6c9204a05835e2cf878c66502f572016d95b30c45c2ef6048471ad0cb7fe14250dddcb4014c392c22fb1dce1adc8e02f416d3e9b417f41c1b4065b975de472d0e9fd5b3a012ee9bf6311345b4968f6f18262bfc2a38d56d911f9efb981813f77a8a8d6af0618e015b8b005e7ea957f89f140192c7442a645ea7012b5ea2ba9f8cd2fea2ad3e41c6a57582237d53444fceaa933d61eac36d03a2865bfb7f12fd8cf451edb5050a35a75c95dd328296dc32daf61622ce0cc457c5968414b634b3e12a0ce45bbd733e3982c087a037d89cc86d546007bd92eef33949d19dbd4daa18e59c7ea3572bf3155a9a46af527347f4f4dcc2be3cc285d65f2f86c681a137850431ce8d2f76e295e74bd0b3c88f1b68885522dadb99fe1c8e40d938c9610e466770d62c34e9393241907d9cd7bfa470cb8fc149306d9450a7a1887d03cddad3fcdeda1ea54d3f126bb29a1ac3d7c5a60ead90d74ccbf1a75b4289a74a49e0a7c4006ab76a83915ebd4a95a471525444dd2c3e748b1bd347774e2cf01f90f05a1672c58f4f563e4da083e95e0fadd4ba57acebcb45611a3923da1d0d73f5c9a55489fb0097e123694e413460252892a0c6317dcb56efa834f7a51db4a413976afcb30ab4dafbe737f43da11c1b08a2472cdff3995dd7d23382b866873624fedee76823d37ec230dee2107258993d5b802fadeb89c9469a33c66c91567ea92581e0c2c1eaa2e2a4696b024c7c6009687d07769438a8b2ba75a7bfb32841dab8acfb8cbd4d1e26c5eb68bc49bb394b178e6f89dde843f4e2c5353b04390c245a0bddd1aeaefb87528b719fe42b35ad2a89ef34826d9e23f95b1bd3c3b24f785985e10dcaf0eb33f5f71f5cbe55 +expected_result = pass +expected_shared_secret = fd9e333ac811ae8be12c052c65131e3a7a32ce82e39055012ea564e10acaa85e + +comment = Rho leads to a matrix with unusally large entries +private_key = cc389888219463a7a5f6c2ca3014accb3bc26f2318f593876de6a49822b6c1e694b7e5aa9140a0765b6334ec762c8bb018d28a99004081256159c836f4f800d0c9aa4a7136fcd89ba7cc1d6a32b23ed181b3fc118ecc60096a4ce8261ea2c0a6ca49baa28b75d1b40215367e6a33a1c177937bf43a70c3889f6aa239e20e499bc7a836694a0bc2912cc7cf211ba20c12d5ec312da2815ef20c8565712b22a927451271040cf4daa44d79705b97993584424e7b3224a5583e5b8eaf640e85015676517113f53a415220fde3638b9c0a38115e668545305ab298b9923bc16de5b9137b30a39a2c8b5fb75e4d1168593a8eb0e067bb9343f1a030e5228bf0b3a49169393cd14f73c2b8221b1267627d80b97d30544b02a4c7bf06099194b2d646596aa439d82a214e6cb9c5ea1ded727c8143755cf881415b6357661a90d5ae759475baa6076eb478a5826f86f9868afc47ac3a02a0e84579a25466a63d933b071213c886790c320416d9422d280745758779635ba6f848440b2489144866e8e018200cb8305b3060926d7e7213089a06d044176b053f3bfbcecac7840dd7844ec29eb17bb2caf321a5b17848c16a678552727a3d70c34f024164b3c4856b0a4ecbc78d345187c6e09f055273bb775078b43ecc534a40e66592b607b56b5f9304aeb048375ac71c30464e979a656f1728a7b700e3b33e5026bf40198b94455d2be37cd65867522b20bddb5ecb7a010191254b8a403f37c4577a613ea30678daab55508b16d6020f074504f928dddac1e8367faf6199715048c96a8fd6bb225715accdcb012cc856a76057b6b72b09a4aeff5b8ba278c54a750596e82bda45be19014e8ff52df181435ed9ac8c402147b539ffd984c291535b7bc8b26c5036352520730195fbaf40033fac450843e808b9ccbf03b40a9ed657f6ac4af8b65b4e389280633d79799e0226b28b356fc2e39f10a80452dc934caac7c3c521f0c5544e7821a403688f08378c3086d3ab8f7e4036ad516778da606204aed3ca1ae8c42e11038a64ec78a5fc5dcd0475429124b5d665e4acbeccca3a296a8e878b917b886ec7f029491c661bba684ac4229cd71373c829055b602db0518a481230345a34a709010a03e4b197273510a0a24465288c327c10c75434d9473208a7964db7792ea81c5fe0c4bd967c3f0c98765ba7d3faa4e6097f09e9bf10638fb900a764e4a0bdba2f19165bd69832681310a7a2585bf06322a3238dd26a4807af44faad999397d4aa14e76c2cad5326ce573d7ca04c03db769dd01a65583ecbbb991e7a31b59238f8741845f1adb5992607184dfa19a9e8840ed9e1622ab93031e2b448860d411a3d239277052cc8ea71046a0b1ada191a020c322d776c6655ae71964d86314a86a47b6a367b8ac5a4aec75677226de0c1864492c88fb70a53187cb76835d5477346646a9da97301156a3ffcc231f9a0da760dac142674e5cea882364dd74fab66901dbb7eaf037008c52073054cc2f94ec845444054058402515bd206d496bfa02c442c746ff3e662b899c34c40900902c4f8ca146458522c6a7af772b2df483f9d840fe07464b0c66fe1036c070c6f70278e9506342663b07529247b1697f6513e1ec8234bc145eba3446eec18b3826b2ae709792648e071a7c4627e4ac7716db5b1d6040ba7b8ac39b347ef721a99c879453846e1aa591b8495e19003df973580d4192cabb72ae2b1f498bae9b3cfffc8bbce09122cd1910a406574106810dc556894777f35316c992f3b902186dba411ca3462b927688c81f7269b7c2770de5aaf90c81f752a3ec77942729a68fcb38a62946c601c945249bf0e280b66764ba71a44134ba84df1400bebccc61456fdf3bf50aa85e8e60f491ac1c1317d831ba5db6601133883fda81115c67fe4691d9df01fd3732b336bbc3899cf067b9e3905294902ca5686480cc94eb4e98260408b4dd060cf4b5344380c89d564b31158ce098ce1e06b91446c4189c6a4d89aa7e81befa900b250a7060406e25725e09399963c5e3e04219d390e6c28983e335646485023312c4d5bcad9aa7ee683b935d71af1908703fa2c9d66c8b6c55049b3319d39c047b5824d04975a9034e8ca1a9e1a5b0bcb222c5b5c848818d14503c31270d4f8446d013d4ecbc250b72dc25934726b426afc85631ca1065ca6e957ba00f1176a6a45b68a5e93274423e642451129ce83b7de439963c0c4e5d8b25f3b74fc053151610b4263725fe51423e886bed19c534165b4cc90fbd67256839b9371290af9853c948251c768e157041ac91fe6649bd1b1855dc417624b8ca0d798b1947c720b3414db56f01500fba30207322ede05612bb6505818a9a68538c9eb98f2b0a83dd38b765891f0d01f1db768d2355fc6b7a47414527c92ba104637072a72a6c0ce74772664e68660c9c0c28347315b17273a6846a79904a04b90a60c5b15973630209d9460365529bb72524404b3d9cacc013b0a7355a7eb2172d317cd356a07e5a341bab7c33db5a48fca4b1600443df6bf441983cc05125f6aa94f114a8c3ccea3f9c498c1126c072f27e97555456114f6bb3244c4698c3f6091864274a16bd82aaf0711eb8c4fd86a11b35b3b8b0528cefc253d7906b6b05382e37428253ebda5b48b6a068354381b24348dec73c279010bd32e41431d139a021a398f0e5c7fc1a98863f069b9d42a96b029455670caa89e0b867781f73fb7549392124485cb032a008d63812f832cab899a8d5d24b403e76d17d6ccb56c729e15abb2e04e32928c9b8971be6a4c70b15bee620eef375489347df7c622d9a803a86c2a9ec5a7a0554ff763912bcb7f57eb8b8633cf6ef39556162eadf8c285b61a53f4837c8c9ef48c3a58b3b6c31b8227c98df0b9057d452df2c258da8a1de1b99449c0054c48a0bc61a2336323367077cee252d366661904b12ea6215b3ba55aab06f60a517704a4046312731325df563cbed805e2c7b2a5848fa1cb97e17a2f926664c2947a2fdb56ed1b3c5e084a680073669b2b9e888ee010410acba461910795958e7c0c98294865cc700315e86a5c54912dc2affc2469244912d8180eab244332a00b7536c4cab62345872dc31ca3c0d2078d07beda4431f278aeaf2482cde53afc56352a894dfe3948fc14956917a4dc836f54369eacd4af052b4aa6b60af5e86bc868be275abd1118a83e5acfdcd4c92a3c2e2b13cce7101a9d303339f0b2dd4a282499579b803ede0b26c75eb8af340000000000000000000000000000000000000000000000000000005781f74024912ac52aead1be2a87e042830737220659467bd06128a096343d5fc975767ff083234b2979bb109a24a27bca17d170abd8d9e6ad3c3ba19e306bce +ciphertext = 5ab063c95a541d1be3fa0744e0db7e0ece17b6b47cca0fa41d08e7969fe87de63f319f80b9a31ff01e203de6e518e62e6133edd108e5a3e08d3f8ae0556cfd36b399dc1ebf3b229bc5013d06d7550512280bad2b27657d3ca0679d9fc62f0bf875dd0b326008a89b4f29e97211ee7ec75108a9e4a320a34daed15fd7ad394a1747e4e35bbe4f1118703c330aea81bef3e3883fd41c3efc3423ab46b553c7587894ad64db57bb0fe4d289d54c8ba78d40683bdf6330ccecbacd3f7f41541f1f2b1a7626d3969df6586b4214c02f921451f6adc04f5e8de1e3beda82e4aebc5e06abb33f4cd8a3b3b5741617b6a385739133cf5b77dd5607a5c8721d5b51c6c0b6df551a5b440082093f49f31910a04e4226b9ae6f41383672e0694bc4075207034e39c40668aa3174cfc8a75fb1a474485e9aff01f3572a5c7e4914e7519344c8ce7b81377d8c2af66bebc558359601b21beb984c1f00564d46585b4bf02c958c6b348642be25119b12f34a6e5755588f649837ba53c0efaa4c6c95d109a4ce1f761c1dcecb84cce8376cb1c4e34ff932408ccd2d06f20c5397f6277bf9c3234b20cedd45afecb7e87793d85af15909546c6ee41987f36d85865c8c1e281e13d9575abb9a9f215c08d89420535f73643dc584707deb7d5275252e862393fb6493f9e126c651b7981f26af8daf978153fa4476d615183bf147629fe36de7cceaa670dab930ba8a684b0bee24b55961ea556123b34e29491704d2122e46bed0f6fd50601e13a5d46c907b915f3b8e695e0bbf474aab6e082d156e79e59572731b48338892f2268dcbb8fc21cfd537979278ceb210fe3efd052365fa249c97e8e596ae6225839e5b8b296770f3b42240b8727a0a730534d0f42f8c6ef148fc04e4285e1aecf060c3666fc17a1ff794f584b26b0b1c41f0fcca249935cd411a151932b09402016a99832850b3f56c4846145738f709f5e11e28a90d9137e4e43f03dd1ddb6565c67c2a138aca59e8aebcfa61984bc7ac13a60ddd2c1f0fa84fcf9264ad5049c888b9f555e024f0fa685474e083025da168e3b9c4ad91f074e7e711f84bb808604114e09d1ceb83b697cc0f045b5089b0bf7381ff2efc08e7316ddb7eb7be47a1d82cf533ea898e668f0da124d2e87fef2b558f877b50b13a08641c74e2726b19fa7c0f33ab213f403c328ea60d08c07155ca0c19bb75f7f6716de89e34c20f9d15ba8aebcb98e9b6461477f56f9c65ea7e8744a4d7306e216f806ea8f9f1dc45781c1adba44319031fb9e81c6d33bb317d959bc53a677270f13d96da19833965aea9a18172f6f975bc4d03036b1239e7c315ecacec35cc0f788be1220c0497844fe7c989fff5ef7fcdf89c261a0fed3915cbfae94b1fba22827daaaaa0f968f1ac71e9772aed587d607d5d3f57c1500b6e08760e0b971c1999d01553bf87f55fbad96ce61d0750d75180623543f40e5b0cee74bb429edbed1b4c2a3e1aab86c8dc7381afb0b9e7d4151a3f76b7dec4199b97304d7b3845788e19126e +expected_result = pass +expected_shared_secret = b4b4634ad37852e19175ccfb5eca50093291da8f76b86be7511379188bc20d92 + +comment = Rho leads to a matrix with unusally large entries +private_key = 078bc69561af0cc77acc291fcb063e1d7c82bdd7cc31d5b44d1aa746e261f2a592d4aa9165c2c3755aa457b886cdd55840767f4fa0b19e45410872cb1db3b8b5829c4ce9b2a8969330cb5bba2397119310fa072b7053b35fb135d04977b9ab4766c4c1ecd9695957473f10c679d71d2f6b57db2ab0726022bfeb10b61807d35447a141255bf5b3d0e3bbf5cc3ae74932d87268e172978d78b99daabcb16b44bd578f6dac130c2528fbc89ffa94b48e6785293023e2605a8533a5ac17c15f34b1e30501729a78d3b8ac6e4a329e1006e0c0735c737283856d7cc7663cdaa1610b1045b7423ca8ccb59ca6b1c482dc02ba117c17588809ef8506f09a7162720142e397c6ac0f8fdb02e4c1c557050af941ae8165ae01d9228f767ef1ac3d72f27cf9a2282a6c379a669d01cc0a6c560b21169557b88771008dad62641f435e0780234e86c1ead05f14c0ad68b6b1041492a166bc4a278b0d352129556d55f37ef8969b596c5e41f8597878c8c6c83de675019c022314215eac667a7b559146478a4a5634ff193f6b83673072643efa59c27650fec168ff17109577083bfa8493f38301528f27681405693345e523ea4398055606d4ccad9df967fe59428ca7502f046506756a6b9a78182383db4baf05014fbb20afaf148456126fa393abfc480edc92465d93aaa158c2a8493882b24c564b607cccb2c8f6cbb43abd722c74c2c63230946acc091c48b865cdb33edb712c670648b07c06691687685218ba48648fa3054ae7a6a663aca6aa4e66506516100c8f2caf9c0645f2554c10c480e798b9c96756e42cc8a7f626c2759d21555342548e0490420df3a8124b0566b1804933b68225359cf66caa599c55573b70d488d16185496216cc09090de382d570795efa569aa5bfa8f4a60665cd30d63bb36cc5ac050310ba9bbe4b3af2f9400296bd344cb72bb623c757366ef1369c968578eba52a092dfef34aadf552a63b1495a5b78168cf6e58b218a3ae64310d16734d5e72b2036bcc001ca07533085548809bf114a092225aec9cce6950a953773ee37ad3467bd5ea0b4cc4c6b0695a774781ce17004cd48e36116776db19565367c92a94488ccbf4ca3c3960524d1b13d6f77399ac625de5a2d09954cf867011f79bb4c3682cd40f133a9d67778a24d7cf1a5b71b7b81dfe335d0fc392a8b12b234950ab79cac94776ad1b713e99b0f394aedce739a15334f19042f4861e739c839ce07da145808260b159625b5a742258779440953c743c591659b9d982aa7da028c7eac4390b47b243ba23e8ae4fd9c98042a0c2d25a6688c9ec774cd7e95899fb7f081035b0c4217c2903688ca7e4466e66ac4e3ca938fd58b4d6bb732a36aa8e097fd75976d1200d61a5c988c12702698b1cfcbd93157d3d1c6e76d316b00b4e462588bbf3c480d8374df3cf66a16f9dd2ab721954e02a9f8eea4380c381da230f10c2c7dec02b057177e157cbd5304ab1d8160a323fd5892fe1649c2e270dbd3777035912dc0802f4d18a56356b52946f30c516838028f7f39cc22466ed277a5adb6864972e1063b1af0709dfd60136b16a3d6c863a68895677c488eb1d879a69a5341a695212066ab848609cbe3317b0abba905c1559715f25f720b7b745a52332355154e60577e598c754b6346b335b0195ac305268bae78bb4617807ca4666738ca81515bb041d43a4188003c52ac4ae4b3808d8c755d3e99d00537249d39d4cc02ed9f98ed4106895666c47538f79e30f5104adab1540a1fc58d1a857a1a4611257be37e0327491aa4b543aa6322ef7816a5c9a55eb3bc8604b15540b62c3405b861a84218211c20bc3d35a8a506b0153306fa98b9488a7841d85197c170f84c380098077e42cafdf1913df369f37f3291ec47289710c57f152b74572c23324f83618fd281f5e41976e77097a570a991b3bc623ad6331a1bb34673b1c328319758ed731ca2981b50a5a2cf8c66d31b10e88c95ffc27c3b6aabe8b207e6cb4373464b1b83f4a5a9806449bf7fb622360bf9f098b56729c5738191d57492b377ca8f989a87922a7368d724b07b7e36133620fa0735d60f5be8b51c19ed1655de5108681cb27273d511c643b7867516c2982a74f62e4cb759bb1f5f0808cc90e1baab60365722293bb07841803076504d00e6fbaae853749fc322e3458810ea41d832b35bf05a10e62a4ff8317b506b9af7216c445663c9061cc62914b0b72b5989d7d9c2b761c2fc5a28b5839bee5596c0de25c10a15776447e17770edb666249a2310962152059c5ed5738741a29e899072427891fb53606ab8b5dd06c005d239adb7bc368b10b74508c45c4aca726fe59c7729cc1ad617236e1b75c760e47815df33297c084429ca371c16c5761c9a23ebbcc2cb43ae9734ba9495d5a86a89e75aef50b9e73470d8d9974cf27a961c0cb2c180ff36140818b005f05afaabc86d8b8bf5c2a62f0632ebeca0c9c567514c9311ba6216fb13f1603c77656cced520d977ac75031044c8790d1b4c97dd38b2aa43dd8808a79e406f8e01503db8f7b51cc1e4265ee830461f41cec398251ea60d2c573ec59b4d28b09dc9446bb972f6d134e2e192e987153b39538e1f631bd81b2e65c2c5c68a96d1b78360889efa4c692b7cc374160e8dc485f47a676d77706e047d3e717386bb49cd942e4c05374b3a1cca148535a3ff1085102f4a7077b5f9c7b1a9ed651edb32691037f9388b672a662bc247beed215d51b414d3530c6b0631999663fd7c0e5da7e411c32c506476fd08a09d499ba3c27bbf6a804cc7e8be5c1f3f97d7aac085dbb3bd1076a69db89bc990efe59b00ca943ef8560642176e926af342b48e8002f6d1aa99b58cd013b03e0d285455786b54a4be3c581419730081361c04697b1b2c07df068621213c8ca6554b5982d5a1aaa113ed9343a56101aec68b838a37ef2c8a15d0504c672b278556b40c766c2066ac995caa32676da182545773881545cd58b71d3d7a02a209bc7407f420a830513b9d9d6c93c56571e42c8bf154afa060667a46d13cc542429c9d1a35be012cd3c9abc2bb7484fc89a4a83a20f7c2bb088793dab732ff370cbab614aa851fb77ce176b8f806c4f2e6068235b93d08c39e96badb37a457e8a790b2b8ef00b0b9e941592373fd2caa3ec3477c6c440d0daa755ac0ad2285754ac64b0852086112b0c9794f1657916fc173209a40425afc9b19946c529ca95154f24ca3cda5f9547c429836c377123c6ec0000000000000000000000000000000000000000000000000000006f8e54b993cf2cd10ba4e61693d9aad8943af37178908ab532712df5dec4b908d48790195fff2c19f221b7cd8637576cec18c29a4a51cd07c82eed4974c36e8c +ciphertext = 925fde875ae198cfea88c4eeb3a0091897e25a793672df1de3f24ab4fd3edb2cad0b07e698f35dc97bfd1d551fcace3282c8c3d8131857d96ee9986da7b79a02ddc6cfc9fb7f2b809a8e5511b1c1256dbab33e7606d8a5fc048b36f6ee53c7f556efadf94494595a549ca260ac9c45bf9962bf406610ca58dc286a9eeccc447a767b6db3ab009f5848558acea4503de747d72d43218babd6f68c091b4581f4e41f2e850047f5f543a02407e7331202b0eac7bed180061bb53f4dd3504ccbd3f298d96b43bbaf8f0c2545be54c59830e1f343ca88bb9c6812c66bfbb59a6d68298985767a73d34fa69b52cea98d95d8305f97c4d4fd643b56c60fe31e3c2ee7e938ac2e4a5da2297e670931c1dea5fcbe9cf118c62a76a461495f10f640fb416ff7bc2478c0e8a1356bb840345f3d43476bc4cd990eb7f7cde7ccb96452d055397ee402be2ce395a29a4f4061ec3d85b99f086341441022435b636028a1a04c5d787abe1c24a5a55653b7063b1cacdaee40ae0de77b4034b9ac0e860a90c8834b352c71e353c02b1f46b135fa68fa7a5c1c719896987d79f3174b8d0b0c28ed64cf9f2907924497e35bf519d519a9199a4dd68025992c6f466604bb2ec3d7b13eba76e4803fb73bb125b83413998ae86691a0b35c0054e1418898f435ab26cc12a12fd4dcfa9e80887af7ebb6c856a7fc010cfcaef9e1c5a4dc24a91a622fb7307521faff0b8e8e966b7b6ae849ccc75d31c8d700a3b6a9c3f646b2a88d1e9391c2ddc6c9ff15db961874c87dd94bf0165cfc8f719806539a8beb8e28350610461b1252872f0f3ac273b3366abd78d9fe8868dca1a5eecb683ab8b50ced8cf4a5ed3b721e0fe6b205fb191985ca745ff5dae0010493f8296b6586e1c96f7f23fcb4ac4dda15eab811107c977aa0a16439b06986a9027640cf7a01051934dfc758215d22c6f06866d5b871dfdb6ed240a73dfde43f7f89c0ce6909b54b0a633a25f7253c10906166f81ae91a1419028d6182c1f277dc7872b824c7a5a22bc7afc02afeaa9ba4c271ee68882397e6cec34a955cfc672f4e6f5ed870a35ebce97f34542cf0a162938c91922230ee3fe9ed9a166a790ccf450b80cb5f483c3c6ae5b2e52e907824b45e69e5ab38226cbd6519de995e1a62a910fd45ed189540e0b4058ff01edbc6ba4eebd58d55c0e33702de299eb53d6518254b8471f282779533eaaef90602e52373be8b519c56a2f6fac0953c0f84135715c5674e45d15804fb94d9e0525ab493aa625fbf73ebdf74f0a1246e1eb0e4e2e261b24ab81d8da6e1770634c747542450cf0a2af23507f8b6766a16dbb2e67b2c94859228b91eec6c59f5a271902b340320412ae947398ad102073f8b9b8c021f81f786622c3483e61f812aa76232e6f9453eae044c5e918e6e4e0e18a78efaf6cb36f7b75929d0036c44edf928d6efe1ddc87b96288c7c624655d302b98865978ed7bc779c800e6113a0484dd225aef29796c8ba300b3f48dd566fd877dfeb5d25f96da5d07e643c5d +expected_result = pass +expected_shared_secret = d4b9a0f77a52d4f8b9c95951257348d1931725c27eede694ecc09204a931daf7 + +comment = Rho leads to a matrix with unusally large entries +private_key = cc4a14e75a6b1bf87f11a240424645dee23657db9819ac274780c2d7d8ac64f2cb82530b40a078791a2ae70aba868253bdc3045b6254c4e29024894cd13723edc7461a37403609b48f79b8e8b1018981bca9f68031dcaf87528a6b065d8cb83c142ba20d68a728a3866ca88e6836cab209ab49bb234312916e432fa51152c763a62cc53da61480691b07a073be74aa6c2b88468bca8302a23d1d6405ddf4aec2f88ab055b18e2b1873862af6539ca83b1c270b6a563cbc7a220cdc8106e6e5595d63a26c0cb86ff11b48066721634b43b361b57a5b4ddb2967d232d34cb750026b362cbd20188260c6a856e9493ae09c462bc4c8663c7903112488b06b2a996dc6668e382e9cdc93e52a1a368b07d8388c9531afff0cc4c07ab423bac717dcc888e213e3a75d69a633f49745bab10f62592f59d53ef19b6a62f0b24216aaed9c91203b7ee65b9d097cc1e2676deeeb576ceb4fa4a867ab7310076a912a41292c658e8f75a98603612558352a5b7beb404fd2bb6de18c7ac838464b6399182536509624e1e25a7821b71edc57c35541cd115ec52c13a739c3de231ada741274272383cc78bc9869d37282f5980209543c92b76ddf99c3d45cb7409b5e44599b75412d8bd122460905c250a94dd4052c0b0a91c9a906aa3652180fba9212046b4f7ad14f7c304780d553f19487b8b7413de732ba1296b41a2d94983d4be93e540a4a4137a030629e97fa640c21ba5b7b5537a03a2a958ec3a888590a5c14a904dd74c83631264644cc6689a245f833530124f7d10e2596a8be227f270941faa75300bd731c145f781cce52247418595ef67c94a170676cda269e51c7ddbc63b6765b010aa061cc576696c84345c35c491d3e4626efc8b73dfcb481c11bbf8c79c6a3aa4e54c43a44141f5c35932486320567ce37adaf5241bfd8c44ec140d30823b58223b02742f3e2bf5864756d528ea36348c1c2293d8ca050b6307d71a20a036e0060697b58a0ada53eee5a6990a9cfe283436cd36a02dcb1a2b7200a267c3f133ea6423bc001baeca953515214e2766f066cae531212dd3551e22bbb1c705f21753ab60a70f364bf1949901d9a0415a36567614c1aba2dacf2c5435b4ee66193c5e461596719790aa792d5a09ac474343509ee36ca048751bd4b0c644b2b039b1320b2294df814b419c3ac55541be5cf4b93593aa4c099142de9e13699a40709d70070aba9227b6c14f216d434c9bc16112b8b4237f838340a5c317a618a91170709bae6a7c13cf96851f72a8761736c452df27758afa4b02fd55b3493b1bbf96dfc45ac743718978b7de8a017eca45dea633dbc417f856781c856c87516429127c6a3d335f162ace0982235ac79ba0ba68edbc1eafb9ed7a3597ca7a612a9bf3ef2b0d1d7c238e98714a434b8b08b35e3885e007501f9bc06e841921521d47999db3ac3937468a54b95b57a2bbe34aeb48ba57f0744021bc684456a8ed413b9192057eb77a5502dbc89c5964c0383b4c9034396da209279199ab5830abe9386b2e811c222a6ccb0cb23732a95676fd5c0376505943ef8bd67a95defe0af7cac395a743bdc3119b1a74771343bad21c53ec80cafd7548ae310293027d62960038c5d80656805b427d0b9167abb3697444af88a0f3eb48bf658be44f36b01233902291860215084ec7bb3e170e517c65c623ecf4a488f69923f9045ea18334d5c8ee847381b5a8903a6233796b1def36e46d343cd3547f4a757d82c262278432bd555fb5430e7f936affb453ac1a031c70cb1b3a8f3762dbe226461501d13d10052fb621be30b8ce63ce93591979863816397f0d198a6c534b55213d778ae7bb1a20ef1809ec37b08382c43e82b4a758458d7758d23a350538b3e524d27c9074d1cc4e3e1a17a6b06fd71178c5b18803b1c439b9e903a0d63018d2f765fa7426a0684793ea789c30435657b9aed58886cb8788e14426ea0295da18293024eb1a39eb99a20619a3e2db48a93eb90dbf42b84fbcec1f0b9571946b6f150ef5a672686a30e52be2d536bf3664550f60c99a89b81f3c911784d8a371ebea0b97ff50e2af68f822a72e9a76cf473bcc1cb81fe2a03051771b1c91f1e1a444ab6119c0a83b25a434fd598bc767315881aef9cb4d4c51ceadbb3b1a1142e0b87d5826b161233ce253d2adc9a00bd00e3cc21fff09abd919b54e09ba6b505601a358e50593dfa117eb2b8d7458745a25e7c7321cda0c432aa5bb41aab60eb3dc7e03ce4017b245809a534c3dfa49e97f4474689901e814a97fc0892ca04d0c00e3dfc836b36bbf74256e77525a031160fb3bf8ac31502c049d0a264140104c7488e36a46d23a76f4535b5902677cb98a5abec57b9357b0cb3b36b68349b273a2f8396e6c8594b4a32f0aa8a622378b3ca0426f44443942c02162907b2651ac2168fd1279b040192716bb584211df4ba36cb363b8c3adc39b410977ae3cac26c21470426837a43b821f65d8ee1950c87b4765a034aba1a35579f4148b8c2f39949812cf9d850d5e25be7713ce62ba31366737c03ad45f23e9b226d1835c5ab01c081063dc193630d72821cfa2a56d16108c40ffc483177d075b6a7a1bbf5cac7da0834d755acd10b9b9850a7c97d90a1061ce94efa4b0c0707339dbc7f160a45eeec022815a4494334254c08ade388c07c34e3a07e51ea60fdeb9b20b4b9afdc6c3c2b63e872aac9b2a90b798bc2dc8d585c69c1b33c1d51372c583e835b9ed561c218a2968c044051f8a969a7b2db6a7031d20cc9e024bbaab4385a3ae13ca264c25f6c5b4170b5c0da13044664a10f335ae9045bd6319abe139bb2b8b635bb06e2f48427e256a16a0f71f119230a9acfb19f0fe07c71828063f42a844a5c703aab9a844f689944ead511d8c97127d99429fc87ede190e0fa002261494076b7a10496dbe12919f585685733ae780eab3ac168287aae3842cfb637a94483f68170f6a3092d51b82ef10496a6374572a527aa7a7d1a99315953f625842ec0bc8851180b98cbe411453027c9b8a4a07fc3bbe32b897fc09e5e65a0457556a8b28e5b7c8b28db24e5431893953c912c195ca52db5d125c3f595f2ea75a63b6c83c8cbca257824ac60ce16bb5be02b30488974a22a66d37b19531e3cf17b59bb43d738cea25326dbd6355243ceff3caae98446927351ff623260472f8c7a715016ca5480af5cecc001c6b65f41221b16bfa61863e225709775b5e6393e4b71920c0c539c6bc5ec5c609466000000000000000000000000000000000000000000000000000000313af29c47d66acaecdafe1b91b95ddce43b0cd52be1d1a84428587728f01522a9e4a0d3487b6714e18bcc9d1daeb3127164328a19d5cf60822f3fd37a24bbed +ciphertext = 7c06bbeca8b58423e2ad420ec36064ed42c881e3655668f8865a2d643ecd1a4eecf915b6c64b37c98947f06c3ccc8e00bbd16017c246db88cc83f12c887aaad7db61b4d567c285841689169c3f928f1d178a0ddae50d8c46cfd95258667d6239c300595738defd2e806637ca46baa4c6c7b97f1a9b47d53cba9ffe074f88d104c4971d250d085b1800fcbd91584d8cc48e145fc81438290d74765e7ee8c1605e8048b37b9d22b050791fe008b9b84b7f23b0f49955e32c0eef78d7a3a0b2effe8b37d124e19d4cb6f6914204598a525239d9baa116e1c9c39c47f9f37f965941b2aef8519782c65f3ad3a6509d1e31e7efb67db21911e4edeb1f7e9c37b3f852c81d63a95e4775e3f2a8ff315a214680adf44d290e42ebab8ca95bf471140b9d7e03f5e9f97864289a0ae8c9a105e00409f714e413b69be366303b4a138ed51264ab0e5cca5f6dc9387c6608109e8859893efa3bc7384e9f418468b1078807dadb768e254094039d1b807d67353c8e0b5a03d28b8e41ffa0eb3ce0837a132144597908f7a059a097b79a1bac323757324e907b445d064e25c378d2069e7c5d671036871e4fe36705747635e40c6e835319e3ff81714cacc44515d671b703c5581dc76afca0b881f37c1ffc93f2e4afab1e8ac776ca883f3adf7f9ab99396f7e19541c26342a7d5618958523b81871326c357ad84ccc6d3574d97cbd875524e7b08a102263d80f318a48e510c22126568f76936c904c231700ad042d73137eec741c827a082de4a45d296745c55b8367719dd08b8295e38d8d3894b9f8e2f9b483b266e1fc71d6374353ca7d9ed1c6b73ab5a42f6abff7b2ba8fd484d1ae6928b5ea92ea3577be01dc1e88abcd0886eb771dca4d36e91c45bca4807c89736b7d6a927cf64b22c5f323077f5488f6044976f310b4b99f7d486335dcca60571157ac0e480a4dba79a826b4bac3dcb7327a33b16381eb41e1d39915e91a58750ceb71098ec7f1a2d7e44d4bab75bb7482eec277df206502c497eaa345109a145a4da6bed1900b680ad12fb028d33563bfb204ecf66e6ead587c5fe27f8a2eb0e27471925ea0f35eb9d5e53ef801eba3acaaa7790b105eb6128ace992668181c1d7cf203afdccdfefbac67dbd97cad05d499239df84e4cf7372117932c973957e5c70a8520f822be430758990296877df62069d818768513d14df0568be8e63e123bdde35036dcc69a98197f52dfbaae5e5e0cee4a48c67fdda605dad8a27651625c2b35e81dfcacd2a41a6d17f6d7067a67faf2479b3868673b248270f4a2d8ee26de9c787ce966ecf186c1401ad9d3bbf2c43b1d5de32bdd77f5433f4325427254a13985d733ab0863e62a4f3d484ab3f5d3b88f23049079143b058babffc8367cebdd9d2468d7af782979a3ef12841370da6ef2db03679e6bca0db72166c361adfbfc02234119abaf98d4fea8ddc6e8490c2fb5a1be4806a61bc7b36884cf4631cfd53138a23fdda11e597aed323748314282672473a1819ef2b9488f6744544ad +expected_result = pass +expected_shared_secret = c9d0cf3edb1172344364afec3615ba98477ce9316f92ca46ca5f42b73553a9f5 + +comment = Rho leads to a matrix with unusally large entries +private_key = cca22002e0b84e0c0fa98c902c2a30f0d9303a411db91a26576834d4f1645c181bba750c42ab6bcf401739f83fe2a4a3aa1a3f5917418003aed863875fc044dbc99c70b27758389fdd3cce51d5a13b21afe1219f0bab5dc3b15952591e6f80068b30870ed644de082476e7b32d3a531ff8631914c7a5c106a5acbf8672ab4a304afb71b1672cb281438f0fdb1db0f52948e8b0a1422ba10ac5e0a480e87bb844072e7a134dcce36f27274775fc6a8bc611b2a33cf85a4820e18b47b24188030fcaaba998d84a68424c07f4503abb553ec33b4be2af3557aae2797649da014dd0264d00ce74431e46f8969276b24b359c6750c5bc15a6318c2d06898ec5f473380a68302a91eb562fe4f10596012e5efa83f4c55a19912978a6583e4a884e36af1b9367e69ab0566c3cd8c34eaea615f49c094bcbc63d52a21d74c02462cb0bb7c77cbaa03df988b60cba880771a7c179315a9f6ebc6e9b8c90bbf17f737508b1691ef1952363e9499b5007a9c84838c2a149478e4be76c0368a8220b9a3ac68ef6560dba6b3f68257b6719551d83c38f73654fb392af0c1c2517851fc160c343cf826aca2c5614726c774c758e1abaa9ac04ae0742799060970909cbc2f78ca739c71bf6528f0695ea6175a4ac13555c3bcb9920bca3a37d363ba622666e54a4e779cad5059612792d610257a689975fd664dc5081d5ac4586c60e99b9a2a17ac612e5a794ca4dc097a71f72bce02b4907d69d801a22fd7b88f9e4ab284076037a0f6ac803bd7b243b835e51873919d3b77de041bbdb9c2917338f0c42a54ba6f5539d60e827387a9e7c156155d693b85701b53278139b29858785cb59788ed981d77556d27390285bc3f9408cbdc717895815d31641d0c31f2d911515f36743c40f4f3517432c620892149b518fecc80cd2d14c99730e0c940dec155930dcb5ef861b7c80b55c2223f7066b625c9fe5f0cb04f0bcb880119de142ce511affc01d483ac8db8b73e504b242315533d9c02cb64d15445fe32bb0c8e19383f82854981a9ea465b05c77cfd66d97a2b262bb37398cb4654a0fc8146c00b7608f061a216b9becec17f686b93d88309a7ac04c2447030b41ebc6a95fc52466d36dfd461bb046172f3b83fd10bf79c281202a60aed8467748a986100b97742c8d70c8de523c1d700489c391096c1b92654064cb7e35d7b25f29818ff39fa523c88bd69b8cf41689a414288c492f2a83f7b34a4d95770e6144b7731057c73a077a471e7b378fa48464c426ce5a6566e7c862131ebd5a1b3df013641a878fd702d167ae3f369361666514d98f325679c22aaddb56406e148e744960ee1395866acbe095542a6836571959a80238d037260fa053a52cbbc2cbc035e78fa9c306ebcb61ce33422584009271835ac3845524794f18bd7e1b4c034832fe68ba24a162815404f65c0af0944c9789b1d92767268c801a0444fff50399b3a192131e965523bbc2c75c286c96450c3f0733458bad7831205b1b4841a617626b4bee232cd1f220edf53b59bc213a055d956591fc3518a1974582f79a66dc8892ba71ccf7a5fae1c01841428525c32dd2b433445118559cb5447e3c851a0cb498cf99c2d359999fa3967dd722a23522b0d8cb522a67d63a75af305c05f3659bc496f1c47e410582a0e58bbba80751bb2f5ab71414051627f46a78f9708e3139f8950b999378df4709a08b9b511982ab1b2cc4d51d177578ef263c8e12752f914733023d9e8068d4fc1aac34106fa72197f6b4e4bb26ab29ab64d7c848f98ef5557ec2b35edea70b67c084193921d8cb52e132a24372be7046aa2af66696007e2e0830df1c7b4396bcc8f27aca46932c463b49db0ed88882f3a45901a4b96ee3b74e78afb8dbae7bc653be895179f208c27c6ecd60c26e54152aecbc13bb5ece39840574c56fb39fd2385c76d62c59a41b3311702d5a99e366467b6c4f6c252a95db32e5096e61d1ba872924d358b346dc099a485c3df72a94e437a82a6cd778888995c473c203e091309ba42511950c19db3acbc5987259bea952b5a549839f197d7bf64ca0772cc1dc89572a0e04690fe651a79ffb3dc07388c30c06711c6b25572bbc83ba868a379d54c6439754bcd67c9b0364ab3790967a062948084ab33a80ac5971fa99830aa7d1e9263e7087af67ab6a83ab34f405dbd72b3fe46e9f2114e26cc6643b6d3adb9de63090394213e72b64ecbb2242266139579ea9cab2e51868ef82ababaac38e7ca0b9554d665365dd8b0b58f3020cc9218b866955f54d9f7b9af9634ab995a0b5e234fcc78cd1594e1cb8a845ca0cdbc82e3fbb35414c53423b76875ab267a702d51710149061e7655a0168695053aa61b990fa9439883640e7600345033ca90678925b1d632962deaa0ef5642b870610be3387eda90cf608254dc2b000c06632331680e12e9b277597d07633a31f6445318ac7b9cc1b087cb58bddd30a07ea6e1b1429950b7e7efb1a6b88b037c92cf987c904268ce39cba4bd3c163f5a8bdb9698488152a18b02bc98a83fb6c28a55a018b48979660ad5b42281b8745a4bdcb02cabd16735ab1523916adcb031e34ccbf4c50bf61bb7d562804d4104d3f6ac183f447e6608acb0bc40a34ada4897e9a91c542571877931864b612cec01c88010cbe039d42540835422f5900c944c7025ba3365543536d093a68c27abe1175bc227faa590f8fb8ca9ab1a87366574422379fd8659fe5bb5ec76e179666adebcedc7b54f1aa9388b2907a4ba5c48441ad90499c64a57768631d4a961d88976c816adb897da7715a100c75099cc122f3b1df183385673a3bbc98cbb0ccb0b090b3517993815e3f6b26b984bdda32c11947b2fa5411004c2c41f2a646036b86bba618e72be7f97ec6369af5ca2ab2dc9493d9078a0c8598841385205177c80a3be42a31d1166b02cd1dd2871148033c794242962e8645ae2e4867a3e5c74f71a1d978379ad45f7fa5c70066cbfc4cbfbe05cf23612b2dea551cc52dd90a8468ec771ff071371544e96400e288a82e9c9eefe807d6f4903ac567741abeaec9707533b38dd8c4366bb33cf86f77272478e43a2d8061293332c8d805a4516238d5ad1934a9683655674aa6b6d91610d4c82e966d74c41dfe7ac18e993c22d59b2d286a0b5272cd44988510b9b342405757a25731729e934c58c601f5c311a244a24dbcc772088a20dac4c8410167304fda18445f6c6126b9645d4042d6033419d246968848e1f5000000000000000000000000000000000000000000000000000000ed43f6cfc5464d2f56a817a3dc74b5ab404164947d8c0792f6bc9bc00bb4d20253f53a49ff45b0ae588d417a63a599670cd391c5e9885c972593d09350bd7523 +ciphertext = 83ea5ed982570cd981b7430de924469d4e2faba68e03261a74f5114ab8c448376cfcd1b9cb3e72bb031bf0fefe772bc40888abc6acffc1d335d46d267acde2cb89cf1b3c67a139796d6a5763805d5edcebb81070b44ffe021b6c2b3c6c3d5dfb6d9e546930223ab0139990c6c5d6257520fe394a3aa30c6a71d47f415ac86b68eb8c83b131a3c5cbf051971fef5ef3bda355d3868e71ed8a0e2c6de8a759bc0c9e760277cc2c04c783d29d1ad3d3385accb85cc88c39bc8348f84dd8c714c5feda50b0770414a333136d6678be6ccbc5df488bafdcade883fbb310c99cc648493aed72680fe1e43c0cf523d3dd06417d29dd97c98ce53089505d36a476c0ae6d89b165c3ff6b2c62ba954fb81ac5782ae648a6802bc057c64fabd3726559ba79de9c144aaa525f6a840ed55abf21b37231c6c4cbb0110fdbcd0004f6f4974ec644c33a8aea34ef4a0a146f7502650c3def5a313d2f309cb428880502d3bdf39196a99bee296f9231d87972efd1159d3cf59bea05f0d0373a0e218ee5e0528e1ac7132440980d1153b9423bb2e099d05fbc8241ec1f316bf0add575a69982f546e99c64457c12ac83951ad46a5f024f6a61c91b7d3853ba1fa41d5a95f6ca811610ba3f32addf011ea4091ef217cdd126ec5e45cc40ec6f1292602b16c02718419646370e5b2c7c55c1128fc5d6c767cc75248b79e2379d40f91a8617e8a3db43c42cabb5cd39a7a7969147f30344c4b03de7034b12d8a1c3639697c97c4483e4191ca0fa81d8659f40e31b899b4ef4610644b1314ab2ef14b8dd8dc0082826fe65dc17211572cb14fa376f1b1784a00033c8dcddc44d6a1128a200eea668b6516ba42585cbb2e2be2a42148120013d0a9378ed7c185071fa8fdc09102164c63a665fd09c08d34104c9abb64e394b2e2a00dd834f7c7f5de16f6c02906ae37acc923dd76e530c78f2143396bfc371d14e6c48bec072b6b4e18eeae967456beb3f897a06eae17de174cf09be1435e691350632c0b1eac69dd66549c1d980fb147fa295ca6f21b5dc398e63a7c4263c75b55c85b4f38fbd7cc0fad84aba90dda1f2c9ca88d88905602096162486dba1ed0a8caa6b897c99e25934152a35fd0d476de09fb211abf36565af3744f3fb737247f5d8f172fbf438ed04422a6b3e17bdfe2cb0f09a1d57f1f1a113a768697f23d61ab288f15abc760feb0f5c5d4d5c0b1c891d3dad6089a3b7e54516b8f9755d38430312cf17b21efeeecbfd2719b62480225b9b3ee8940b1f1784ed5630d152635a1233acdd16e5489a9a15eafa7bec99aff25b18d9cac1e726c9e424773a7083f213cea53dcd310b0037aecbde1d584657f32cf548a6872c6f5a1a3a70d4db29ee3773291c94b00b5a596e1691f7752e246ca0960561cd233ec7d5f54496d34ba65b359a856315f02d16c990cdf3db2051b17bf283fed1b808ac79a9ce8250c806896bf75f2cfe76465c09360aba4c9688acea341fe755363abe41c0cba3ebad00c6c7bcc3f7ce091f87079f60094b92 +expected_result = pass +expected_shared_secret = 4bb6a6b27596869efae3d411c69c593afff99b1a703ee1f4ff3e0e7e9756e75b + +comment = Rho leads to a matrix with unusally large entries +private_key = 16997ff80976d1506b23c012e387ac6ca0a792f7481ac3c9775317ee3ca5267bc7180ca884d28bad6b5a05b045f33a9b975c6c98908d670550b874ca70a77424e48bf097256434b9d9b96c8b8149f02ba5bde9b813eb2b60f20da4440b4cfb05716bbfd86255a1e82941d2816caa7253e7368a4bbf4bf546f40b1bafc65bb994c34f7337e82818021797a431cfc664699bc22b92561fe3d1cd6306b89a36380920abbb466477549d1bf14364221c10f51fc3f7240de4c99b3bb3eeb9ac1fe12bb7c97888e8386da4a341a0be8f78a7b7c49f2184376c3c3784289a6bd9b6a03a110c228f72939b86c7a87dab3e093c0ade693a0e5331c48b761b070476f55cc45ba1dda14dfde01a011776143a4d29d48b47b0c6cd2111bf18360a7438f384a28d772177f648773b961a86637c946d7981a6b9f571a4c29aad07220fe081f1f18700f3c99ef28e76819f8d7c4c43d754cea21180c43357f3430bcbce1fe8952c691cfe9a7483026386a479eee4025a838df5c563b9f5a1882a2d7209a68d231ee82260a7eb4fc157936deab52618cba32772fa1440fb675220f4610d749a5b3b142f31b404d94d2bd816cc4773ec83aa1445a37b361e52b10960827e94171dce3c12cec80a1ec65aa6f117fe937673a78cd7767dadd3cebe0217f13c903ca25d6a681116b206acb46949b18f671a63fd2581a6c0978738460cc51df3711dc1215dcf75525d30559ab6bc52e16fa513753454888189348f045aee8a32e98cb2dfd708e7d42818115e5c61711a0c43e85a13657aadc24b5b30a04a43cb97bafa433204c18536337758c0db6154d4fac670fa3af148b52f24aa731c31f98464ca9bc975e97fd665710ee2c56b024fb8d7c7f4a20cc9d510f8eac38f96129c97b17c890417a21465d05abca02754ac3614e964f1a24393d05ccf5cb9500852cc9231656ca899f3538df30984475209f84ae8b99983e844b06ba4cd8a9640a513cee439ae13ad57d3846aea4fa165b68c6c03c05c835bcc5a63d45cc5568aef94ae7798bf29aa7f38e275c902236e63872a274e4776cf1928c492036166d04eed9ca64aa16ebb4b11fc3ba802c6b249e4b53f90112b587d36c6bfb0733a2ee3003419026a10a4c54c2be294b2031a48fe895c2c9920b3772f127338a865a82c3262dabac113c235d433b90d401f5557bb1bc68359020f75742c2008c2bc8862416910f53772a55376ef05a5eca853eb1ba5ef841f243b8d98b11e94483ad7e72fd7360a3641159e481ca50971a6e8aee73a0d4f24b25430ccc0997c631308fe2aaefcf79af5d2045932043d95933919b21ef87865b8550742a513d67af756c5958465f582983a777e9032ac43164e552358861a0ebc458e55865fc3545fd01b0e7565877ed3229f8267369c319abbb017a87ca662c635519ff418682af39ba387aa38ec37396b4d6ab505219314f4448d0f572f4330cf33fa1369872649c922bcd228c294b3213a216e59752072b8e026700ea63061855be3d6037c0cabe0c21f5be948ee4b18dd935ad358a5885a0331db2e496995bd47c3ff2b679e0abafc02804b6117271a2b00e33bc06250fb30ae2036716d30a50aa07e45f244e1f0100d749359b479b444b510d9b6d89b7001b237f4a34c57509f69208c7e6b956144bedc8b2d19b12c1baa725dd106f5418ed943370050808ed2636fa634add059541a7a8c7976b0990e59c20c00343d1c37bc3ab587e312991bb88a74227651b340346c58bbb174ac18c204f37445681bc5905354d834f86016d0921219fb467d829daf24901815666d664b8c4aae307485cb95885b7cb9125a14d4d988d3a42c0816ba7ef14de9b622e08871988b8c02d857626b65065551d5bcc81112384f979cd8d2b9ecb55c6afaa700e92e3ecbb285c01112a19cbdb90b8af135b235914c901e2314902a43c939d065481128f83ac801dc2fa69c912f2b69189736d72414df12646680c9c858a9afaa28b994531960b0f2b82fc6b9c6f10706930786ab5c6b0da61ae813cdb7387c27324499b111c6ca5767056070e608cf421af52cb45a842da82560dd86acf45a7e70245e0b535f7559a9fceb9369c44032c09302438cb4670925c7a831d52f083a7919e575be844d9e6a009957c15e6c5f84f050cc4801561876f9f483ded505b3c77a4a97788358801f012b59d716fed55975f8abd3464420d849d89c16dd2a95c372cf631a93a8897ddda2a038070adc2a97b5538778c0215cea399deb8279b2ade6c5ab84bbc8c6e181c091b7002a4d5f395bb60c817e03966b63ba76e88fb05b79d126ab0975c995b5bb2ae6550af78d80b96af40c9514f945d72b0c9602412242c81b60b2df97999fbbaec0404056195879535041231803aa7cf064b5fdfc8b86344d65eb30e52cc0d5b86947b8051ea93008d789914493b58abbd5395b657560f5823c387574db554118d06b26ba14b9660b4b390f8b828ba8a852870cba24a114a68094cf0168b721af8f0998e599b5db2135a3e9360b5754dd49155eea830f0035c2c116dbc9039cf69034c505ed998f8460a170eb5f09786d902664c8135ad77101d0b802248b6f3165a847b5c989131d7ee3135cbcb48b3cabfd100074c00f2e7bc85d4c84bec8980a6920e6f318a4bc805900b548fc7d98316c1b3c3b49f6c5d90595ff7a7b56465385620544aa3f39114e53581e851849726023d953b5df56b87be98854b253a39297f060449fc1c02725c3442a4ed8624f7f6abf3854cf04166b24c3b5a38358bae933ee4777df09720415314b152efc0b175b664c0c0a3521cac1817314d1e69fe03b351fe211c4c44639622a73a4547ef52d46b033aa52a79182baf49a8808fb259c048a04cc03f8a1038e9112eb30965c797f90c277b3549df4f757526351bd1a100767b4bcfa7489c17cb181b707986b9af85e766aa1f99b08aa2a7bc8a385d294277cb00d705b4ce2583e61c16be2b18445d051d7f0cee51703db3162bdd328cf0b0b24a424bd830c6574091088ab746a291c737e8cd595d1b51f9646c7813a8991f89c168489d1a3b61a82466d98ac9de55b4d5aa020243e638328fedbc93d341e1fdc7eb861bba3783a57c86a7184aaa7d5051b7018f3f18b40b69fd7780ae9609194db70123801729c561e973dff3a7ea5ba9045b24e5fe5bc63ea858c687184a8276612c80ab600cc37699583b9ffa8c5a1b7934f3c12873522dd1c4f976b73121bb79766803d247de1dff18807000000000000000000000000000000000000000000000000000000c69860913068eb936405db039e82a2f7fec48a8ea570bd538dc9741a6aaadb02e366c059f5f26e6dfba8db203c5b27beca8fedd3de2664f6bd5c3e2ac9fb3891 +ciphertext = d4e89c9a1b36b648551ac2180f2f59158514568358f66a6fadd88492a0e1c122d1d7806287eecbcc8e8e6a463dc1c909f13842f734b9eb5bf690291c9d5b7836de8f4a28b8242c21131c53ebda4002b329a1951f469168ce0199f0a1d2edcdf3e6566f9e638e5a1095025cdb591aeaed8bb115ca3a1f1e9a8e911b2b9d3838608a27e50018e9a99e65b04adab67a75db892676c28ff41f118286f0ad2f5b650baf9441470db659e262e64cbebb4e808b1e7cfde0ff5c1ffbe1336beb42155fd9cb1cef90f306f5aa2f121b30b4d6091b19f37243cc15df2a0a16c4b5f70ffba99456f535af0eb0df80771150ff28c7925da7293878699c00f5136c340d1d06460b0ca7223f37ca553be904ebb7a7f41daa8288aa244202247eb8c35b7bc6d1dc8b95c220319532dfed22dc5d0f2f77a4bba0f5ee599420a94c446d89e3e8532117bd8ed0f7d9cb1f0a58a92bbf30a9d7c16d5ebffe16f39f682c18a8fc2ec0a551370c0e3ea706259f52333f5e86a83fb60b9ee3776f08e3f85ae4ee66be8c653cbe25e316e6ad33415a13e5139f53480625f09f593a598d6fd864729362efc3d09f5b171b0eff76cf860c8fd80583bfcae3bd7535e0270d622c2c09886bf9fddff6dfd045fea3259d26f17500b6b1e0b5068dc06a510da4809fabd615221f672f6d1d220c22dc080c9dbd7544ccb3369deccb76287c77e1a2af0afe133cd19325e6a77a8bf96fae6dc0381bb303815df4de480a9f3f97f1baab7774d7d5d9eda6c5927692fa2277934b0ebd30b4e7785f0c61a44357f49adac4430fdff3af956904b789c2dc9bcf87eb4cf93c48256ae13e90a1bcd713f77446593837b81baa6fd7050455d69a16b429018390a47e6e881467b57a2cfb043ce5a8cb114c4bd916ffe353579b599994efae24ced2dcf1a2923a0d0d8e771e7c230d887e596b80e01d84c908ec9fe81270f12e2f9ba2d783b1200fdb106e9d340c21667b722564a0cb4603dbc2193d3b455e06cf8c1d8fdf3e7ebe16a47f0181407f66c214379a5f336545818782835f6be2e9ad89f180ae0747067cdaff1f3b9386debdf3f057cd02f6eb00ecd656838e2ee5bdb99d6260c0447707d747bb6ff33ed65c2b3e22074ff25a7a0933be3e9b51de95d99e02ed4204f5ed8a6ff864e2f04266c9392c6feada8805ad44dffd5abe8d4262ddf6d2b1b4099367927b0bc075cf1d1d802f2d10b6d31d7f8c48b043340cae34b5b7c2f1e9b5043a0c2a977c51ff038171f8c81f04b284b2ee262befb6a54bdec146b84dfa116542bd13123ea79e4a660e44f3d23a0ce35ae4eb7b45611f87ae836081742d3cae6c65a0f93514bfe118cbbe7011e2a9502b197ac4bf31fe17016e184657b8dcdd62a223d1bd88b98aa0bc200ca91e123fa956b3d804b2c0ea139f934124f8d0c3f4412d8effc554f8364b0f351a789cae775b241cd6aa6d15251cbd28f0f85fd4f2a48fb467444f2f759ab6048d33c27832cccf9cc45fffaaa17a6f5e4b766f861529cb1a0641b6d3854c11 +expected_result = pass +expected_shared_secret = fc501515ab8bf04e3cdbc78c032524d6b9ac385122bd2324b11a2ba812158fe6 diff --git a/crypto/mlkem/encaps768_wycheproof.txt b/crypto/mlkem/encaps768_wycheproof.txt new file mode 100644 index 0000000000..7e6675cfb5 --- /dev/null +++ b/crypto/mlkem/encaps768_wycheproof.txt @@ -0,0 +1,1840 @@ +comment = Official test vector 0, seed: "061550234d158c5ec95595fe04ef7a25767f2e24cc2bc479d09d86dc9abcfde7056a8c266f9ef97ed08541dbd2e1ffa1" +entropy = 147c03f7a5bebba406c8fae1874d7f13c80efe79a3a9a874cc09fe76f6997615 +public_key = a72c2d9c843ee9f8313ecc7f86d6294d59159d9a879a542e260922adf999051cc45200c9ffdb60449c49465979272367c083a7d6267a3ed7a7fd47957c219327f7ca73a4007e1627f00b11cc80573c15aee6640fb8562dfa6b240ca0ad351ac4ac155b96c14c8ab13dd262cdfd51c4bb5572fd616553d17bdd430acbea3e95f0b698d66990ab51e5d03783a8b3d278a5720454cf9695cfdca08485ba099c51cd92a7ea7587c1d15c28e609a81852601b0604010679aa482d51261ec36e36b8719676217fd74c54786488f4b4969c05a8ba27ca3a77cce73b965923ca554e422b9b61f4754641608ac16c9b8587a32c1c5dd788f88b36b717a46965635deb67f45b129b99070909c93eb80b42c2b3f3f70343a7cf37e8520e7bcfc416aca4f18c7981262ba2bfc756ae03278f0ec66dc2057696824ba6769865a601d7148ef6f54e5af5686aa2906f994ce38a5e0b938f239007003022c03392df3401b1e4a3a7ebc6161449f73374c8b0140369343d9295fdf511845c4a46ebaab6ca5492f6800b98c0cc803653a4b1d6e6aaed1932bacc5fefaa818ba502859ba5494c5f5402c8536a9c4c1888150617f80098f6b2a99c39bc5dc7cf3b5900a21329ab59053abaa64ed163e859a8b3b3ca3359b750ccc3e710c7ac43c8191cb5d68870c06391c0cb8aec72b897ac6be7fbaacc676ed66314c83630e89448c88a1df04aceb23abf2e409ef333c622289c18a2134e650c45257e47475fa33aa537a5a8f7680214716c50d470e3284963ca64f54677aec54b5272162bf52bc8142e1d4183fc017454a6b5a496831759064024745978cbd51a6cedc8955de4cc6d363670a47466e82be5c23603a17bf22acdb7cc984af08c87e14e27753cf587a8ec3447e62c649e887a67c36c9ce98721b697213275646b194f36758673a8ed11284455afc7a8529f69c97a3c2d7b8c636c0ba55614b768e624e712930f776169b01715725351bc74b47395ed52b25a1313c95164814c34c979cbdfab85954662cab485e75087a98cc74bb82ca2d1b5bf2803238480638c40e90b43c7460e7aa917f010151fab1169987b372abb59271f7006c24e60236b84b9ddd600623704254617fb498d89e58b0368bcb2103e79353eb587860c1422e476162e425bc2381db82c6592737e1dd602864b0167a71ec1f223305c02fe25052af2b3b5a55a0d7a2022d9a798dc0c5874a98702aaf4054c5d80338a5248b5b7bd09c53b5e2a084b047d277a861b1a73bb51488de04ef573c85230a0470b73175c9fa50594f66a5f50b4150054c93b68186f8b5cbc49316c8548a642b2b36a1d454c7489ac33b2d2ce6668096782a2c1e0866d21a65e16b585e7af8618bdf3184c1986878508917277b93e10706b1614972b2a94c7310fe9c708c231a1a8ac8d9314a529a97f469bf64962d820648443099a076d55d4cea824a58304844f99497c10a25148618a315d72ca857d1b04d575b94f85c01d19bef211bf0aa3362e7041fd16596d808e867b44c4c00d1cda3418967717f147d0eb21b42aaee74ac35d0b92414b958531aadf463ec6305ae5ecaf79174002f26ddecc813bf32672e8529d95a4e730a7ab4a3e8f8a8af979a665eafd465fc64a0c5f8f3f9003489415899d59a543d8208c54a3166529b53922 +expected_result = pass +expected_ciphertext = a413be81047259202401ee35989d25a3856cd1c0260ce2391de323736b678f328005c821ad092180b4496f2129280f4f299404362b9d141948b6bb02acd5736559fc9039018c961dddd94ee559198471d4a049e547b5636cf8bbf7db1a90c72b870923dcd54b148c60c9c8ee604d30eebb6901e6df2596121826058d25029ae399c95f6aacbaafe34f118ddba7a69d7cd899b5f4d58d3df2a889b030ce9a7ea6446d41a60a175f127da94c276baa1edfb357d41b2857ad462c83d8ff00236d9bac59325e0c3bddcb37bfe0fda4e167fcf6aec149fe5f9f6393fc4715c6995d67f2b4ddb0c7678ee140bcfdd2365e8122ca92cbba1ac703357edf15210c6892669f1a2b88d792be7d9aa56c5e8df758abb4bbae83141d2759dfc4ea8f2cf00dd86a7312fbaea9cfe6d7fd3f13fc8cb75d252cb3ec7e7b37cd81d88f38ae593ede6f8a81d51183d7dc7f57abb21ce2c593db72f0bf779cccc82420f53c2fe364b1fd3cd2ec54b924a62afa4c3195578e48aa5f507e7928d7527d6577d3fca87e7b7b19a89f69f0018eeb36871baadfcc7094e344fb36481fb14a5c53c30867cf1c5c02cf6227f9aae8d8a12b24c5ac2b8eb912b87de8325409e440a47b5c74237179a6ce5558ee09101ca4e645e24bdc28778735abf98b0688f6289d503251582aab6e81ced0179829f7311731d0615d0a0d955978aafbf8aa440a5c85870c58b3e5c1ff9267f094b742f516e8e9759d0f88021d99a7fd65bbee801217276656d21f3734de0a5589b33fe996ecb99c0d8a52d54b39dcfe707fc11e35638a69d908ccb0edacfb2aa435e3beb981d3fdef59cade6f63cda056c526cdc55b87a3ef2638bcaeedf406711053a09d310699dc8e3d07acc10e1ea8ec8d51ab31c04ca88c2177a51193b418ccc4b2548ecda861598ffaa8b16eaf89d59c8403c39c8d94c428cf19180e1420287b455fb6e4e5bfbd383aef18ca99f810f6cea703be4b9bf0cb6f0c5383e83ed3a723a27d8e3991067656726925b20fb735b12752facf684e5c03dc5be7a63af4bd930754fdb5f749306c2cfa6e398925c346d9d572924b153b7673b7a5022140264fd5a0abe00b5d85c686f296fbc49dd3155ad2f748255506909b355c7060dded4dd2fa21c7bf681251e7d63289e15f85854a25b4fb085ef03a03cd050f4f5021d112f3291a9fd60ad01e0b5797e78d9b94befe9746d754e6ce41da34c57da3d7deda6b233082c4137614e964fff0e38472e36e495f54e2d2371a7581b694cb263ddf80bdd43f6383578b5e18244a69cac9cdabea3d05718f5c23b1d4ce6684457597d01284b38b9d3eb1eba4f5beff990bb749f096a30f1bde724ade3789de5ef183a60163e28f1584500984ca5153555c38c61649683a727921ffcce3007c267783bddbdb9de48880c4e8452dab29e7c4f8d1d5dfd303a908b1ce08be0b9fae98894dcb2692d0b32fa39da98bd4ff0ea10f0b438a4971a7fc47182fbe52d6de71fee3e824a39f19c27f51aec6d92bc7f8b8f071847bca +expected_shared_secret = 729fa06ac93c5efdfbf1272a96cef167a393947ab7dc2d11ed7de8ac3c947fa8 + +comment = Official test vector 1, seed: "d81c4d8d734fcbfbeade3d3f8a039faa2a2c9957e835ad55b22e75bf57bb556ac81adde6aeeb4a5a875c3bfcadfa958f" +entropy = cde797df8ce67231f6c5d15811843e01eb2ab84c7490931240822adbddd72046 +public_key = 6dd406b49b9ca035467fd26c6c0b824bea310f435fbe8bbbd3430b5c39889e6b117e994e2f08823a33789ff858b72715323c6204a241d9835ec0da85c5884a8a96210219099c8c383c182632280356c1b4f298405258a170e81624e861fc1082d31867a9037e3b90b0aeeaa064d27020da7ba79398fa92a963a8a294e7720bd4cd9ea213f08063079c4d55b094bebc4e979444f462b967972e61206fcc80337911b02c7396bc64405ffc0b77cccd2ebc121a734037cb90b77846b2359c30a451beb20a6d72c238284e5df2ad1cc1a33fd5a104965c86251a596360d541240a4828231a827a0168b6d8ac7e27328173886453a9c91498765c2bd9ea9f666bb4a1d60f992538a1a746df845574f99adad23b9744afa81c7fb79a32b175706454438f46b8985132b8e1cca10c2b0fa011eab2428b88cfef9378a5228e55d7463dfa5022c998abd6354118b5116b3bc1004f0008134b85a1cf2a9f409a10e14b6d06c26d8e355864c35bc71b60d5cac33a513efdf6b9bb83bc880983682c8fb8a81b6927ca52e93835956795488181a8cd82b1a50dd18a25f35e2643cdd76c282e7018bb99624f031418fbc8052c4179b43a5998be9a20cd2d8a883b313ec282598202add6471971c88cd9607d3a8052519930bc5bc71ca4652352b4d02620b8d983b9849ce8b8935f1a4decc3250de7b0cfcb49eb7b74e0b5792ae97633b092081c3c6bf58f1b242ca07610c3387098ac3f0f9043901c614590c4ebbc64ce1971e824694a999cbcc430ae923a1432b6a4911162213c429481394a27006b9d48c0ab5801823d756bfd8c6919502d613594aec81f5669bd4e8495292606959292467ccac7f688333b3f48a39fce5c42c9c2653886a5adf4747cc943b2416348f46df5b58e4916ba64e9664a4baaa3e0a9652408c8e5076c226c3a7932c42a846949a2a26b4e2c452f86cacfe5c201ae1321ab5c2cabda557648a849241f077a799edba3582202cb27763047219f5546cf18819322b9c63974b322b949baa491d97c70f20545886c87086721d3ca2aeab441264b516975ed0c6044a425853528424532e4d721e85cb0bf65c26082c790765b062916fac4a0dcecbc2e900c6f600270838e2df20ee0a907e3613dcee049c445640362c980a292f123c6c9b5918f21443c996016c44d2a124c5925a8e0c48e89bb167a129fcbf67adb89903e1249f6028bc176bacc722366139858e583eb582ada714e79b5ad1bc1a6f18754e100624620968d0702e080befec425bc16b650a307802004c57590897c87e65347f32c324569051d798bebdb421eb28b2d1a0c662444c7db32bf97845d7225c7539f457894eb87606fa85b5e804053fb6ecdea773566c006e540ee65101d99bf314181d666680985c78b103dd00a040dc69cff389fea7c18e48a363b943ff042b476dc86be953a5925076cf749a62a77a9406165d31dacdc3a677b9114d8bf84b43f59f647fa4023535140fde04285921184809c5f193a7df45f62187854061a4d6754da528f3b71a134aa487d9b5f7cfc6838108b8b95b51f5540c9ea5f29990f7be07efd502461033f103723093a16dd96c098977f81330249183cf35a636841bd1a9b9796f13f56be785d942d7eab011805cf3504fce325b6a5ef1aaadbbb11c662b9d2 +expected_result = pass +expected_ciphertext = acddfedd604fdb81a6bb89518b9c4542ddfa46f4acf3a1ad092de5ece00c823b4938a85cd32b1c291ffc446adba2fbcd0078e9ad7dac7aa54d9d38d1603a0707e9bd77fe2a41e2d35fdf5d1c3b7a9c4a1a91a1d6b96db95e11df77af9ad3511abc41a8f84cd1e8afe8b6d5bf43a912c3ae871cce1ad968f2736dc856208ed8802a42b164238e7529570be8a3b57954d9b6409727100153df71d3e405a633dac6668440919fdf6692e39505a7dac58268c2b9eaaa0dcdfaeb2ad38d7edc13617eff27e365ca2e015f17804ef7204158fda049ebef27cd80b4d03416cf0d34fd1298440c807079aeaaf86951dae492efcf43d9bf52afd9eb2e2fce0c644f4efa8c5e74f612537d809a64f68145df78d458908e0e8c8901e340e11fa5c0ce78cd7e2923a880f4f069934b7de2a6eb076045b7a3b43a5fbb9e56afe3de239fcff2eeea1d75e96c64779d9713d43de1efe523bbf450fa8236b9b57def1cc381a798b3b77ab02d8a3e944d388932eda80f5eb542b6e275d8c6cb92b31f8bfc0454643dcb9041e0069a0b8f6ac1c4600d4f15543fd5c25453ea1cd5a3cfc87bee71ae1a955a60087ba5db2773fda9c0acfcf22b2fb0804793add6d44413930eaf6f9b2d8c18433da6ce17f9f5352a9922741be5558c3d4eb57f9642f9774ad449de5d672226163174d82c5a00157f4b69d3d5ec3f1bd5586fdd9dd1c9f4e50cf4ab7d60201c7e13c5a3475f6ca877319a845a2f80459d7032b0388742e101c26f2831b7dfa78dca4f3b8a127cc956fc013dc068498901eec716d8f5d8cf943892c98bb435a0c3440512e10c3c6d65926549309e5a83b391b06b2b5e8f51353382527557507654dd895f0b83cee90de518228950d141b968c3e4ebe116905b3d233f8febaaa7e83170d50227ad35283dd31ebd69ceb7352e3351cec82285520ae8d56d6f597e52e360cd9586d99eb3bc1f2cdf1a1917924e58d2db1a813024cbf02f5d0a3458fa55617eefd30a5667c988984fc6e61849edb588dd66ce3be5a52e42abf0a53e93e0e0b92e178fcdc1d5a092f1d9dc9578f555a5286b112672ec8ff7a2aa7ffbf23ab5cc752a45e0ed056b3beb9711b28e415da7bb31fa2c9b5227d5bd30d56c910f58eec5946a15b6af1f69aa343070aa2aad6172a98875ea2f1b33ecacf8c477eaacf56231daba5e91a97f869e0b9f13ae213153e2933f10e55bbea8b8111fcdd68655ce09fd893862dd26e29cc24fede5dedb2cfa720f14fc739088ab28eda8c5b36ee7cc98d104ba6a463e8f6de7b906bfe165efc1fad56c499a64d923d20f49648323527dd6e172b34d79517baf2fbb975e4568c40ec4f19054721055fcb5255a7249c60528a816df084c6bdeb1986207aae2e6e2776bad47c31078891e2bd5a44495ffdd7d0a942879b33195fed959c30dc688666b718d6367867667260eb23229483123ebec5cd2d78e0f99572fd293d453f0691d1d72da92db5c84036e1a0bbfde755c9c1d18eb721856249db963ea546b4f2086f1f4f528c457 +expected_shared_secret = c00e4ede0a4fa212980e6736686bf73585a0adf8d38fec212c860a0d3d055d1c + +comment = Official test vector 2, seed: "64335bf29e5de62842c941766ba129b0643b5e7121ca26cfc190ec7dc3543830557fdd5c03cf123a456d48efea43c868" +entropy = f43f68fbd694f0a6d307297110ecd4739876489fdf07eb9b03364e2ed0ff96e9 +public_key = f5a35b4ec7538b62289dd1204db91ac492b610538c93eb5f2637ad97dc88f0035ff3cb735cebac9be7ca78a4149cf10b6d93283050167e737596b711a9f32a0f6909975055ce6632f4b42cf9a2361cf69047b5bde1868dd745a82cf473ebb30d86a71793364f70b1255b1c2003f166683c936a7977df156a84051e69b95e02616dd3090dd38086ef3bc12353bad25377618965c2810fca929dfbf46f20360fc847818cf90dbc044eed16b3b9052c5c70a5a430441e53a5527a689f49b35ce82b84d6057c5269fb60c710c5731f431a970b86431125910277fa7c310a2285117b47b95054e4174a1eb11da3e3c26ac25619d36712b11b2ef7405bcb943dba10d50c0436b50de5b04d96488a38f53df37895ac20c10d959d81a29fe1f319ff871831d93c54654172a02e65599f9d820ab037438e62714be6c7d868b66ac03c31c8753a062318ca36b6e59d340b9696d47c38f115104765865353a05c8fbc4b0a62a96577e94c17094de259006f169e75b8919bb4c37df6787b59bec8fac999a90b73123a5cc8772ad67585c879ebe05b5c06afdb440adfbc4ad400d0e634822a843e9b165f2f0bb748e231c0e0ceeca8806046b5dea7cac614a5e2cca3767556448785dbc739caa9c58fac291a0bbe96e9ad36a4a1d9c96939603bcd76a81c040fba27a5a39a1c387cac9d1b086e512468d378e96039aae2622fe5483673850d411ab64b892f2c29853822eae76feaf5716a660b55c2020dd3323a150ceef9ab79925d2bc09cc6faa31727a5912a7f5e9051f8b94d8866c4da173d3f2a388e6c44218338cb85702cba2f602c24e1788158b0129e7c15dcf2cc6ed55c54b456cacc07d179b432a5aa63e8ac59f0b6979a833d99c13aa0c56cb65928032e2f30583fa6c038748ceb77a91c631dd09b575f13126f1447cab00bc9c85fc7601da44ac5fea5adcbb599a409bb1a67b24ef438d750bf87a8814df22449c9256da1286dc623e81546c283b80cc88c48f003678ab35380a6da551ac7041cd5112d59d15a80032c28b61a1bb3b8a7267adf4662b5963468b3bc5918418f980cd7db3946c5a67f864dc1f3adea12142fb71fda590e070007662b5c3b8b31af169a092a2e466aa01ae879641bc4d1d62523ccaa3ed436cc089b2621456114215d1a9eefd1016dc81d5320956fd942bdda40f3a033e5170ca6a2c57ce17eafc97aa0959cf37b92e789636f159faa827ddb895553540d52a61edc1b3dceb22a7231c48037cc78594718902333d0bc4fe6b29352991e2ba5d31217457007057b9d3c07c39b7c7eeecc222d4415d6d9272ec50b81520bc607592947c86d2612e434c22513235536cd08f10022b97675b89f1de58130eb6797380f6b68773dfbba0664bb7caac84f7b06711587c6ecaa383505f62751c8346bdd502a58e9326e4a0d2d29226f794ad0064b2cf0a56e6a67c18b331f5537d2fc6c3aeb52a5c3313118cb7d159b8372158c1a7bfdcb65d426458edbcf8797383e272d3b18bee68c4d74e25751ab1ce4567d66b714cd62a8e9b886baa812a9f50739e30f296791414727d55003bcb52ab6bb74cab215b348ad06f974192cbd61576baffc815999ab8556583024cdbd1c4398f4a4ac60e8cb68627382a145f91be9d78fd51ba5e3fcbc3155b62bc07751dd +expected_result = pass +expected_ciphertext = d4aa3d0de639a1563732d6f6a1d0e8dfa86c667977822bd99f7fad9c2996b5b0593aad975d8a7257c68209d80f676f7083b5f2d2690067a9c639882955c4717ac9f64d01676cd1656a181124b299010cef7094772a6c83b4dbc15320a22b02de44da9e532064f3dc3b6e1e540cdc168612b4271849a1c48efab76c3614c173d973ceb61bef391eecd1e3bc8aae662c4d60db2f55458f4d13c56262961268f714dffdf907aa08a434d7b897d1ecfffa32f1c62c3487adbc6f3c6d6dc38302069e2af348d26b39ada73b2c5d927eea8ab080cffe74c50f6e2a5e2bcfebc73ec4f100710c2283b42cc8f3db9609bbe487d0ab933e970cc30d3f084b179602b555f797bc53a49d56a1ca53a8b0e539b2cb41a08c306a162b902f0e8475d0332ae8c2329b54c45314b598d11be48fc0f9ea0584df93ba3185c94c063968c914e390fc7b04202936acac5c8a7e7677374f62fbb205467697881e3d8ed60b0f3730eadce1d26058e58f652e4e00b9b8c2b94102d1fa39460973ca8cba348cd67c20aaa1cbba500a998b50d1b0f48885edf46b79ea816bf7b1831ce4297a0330521bd131a9e5a43a5d8676619be7a45fe29509179d8eea1d0afd63a758817c3c5ce5076f21887a48fbd2afc142489768ca4bd0dafec9727b1fa77aa1f977f7aa72b628290265d1d3a904f5b4c22fc313f5f75d1b8496b2195742b6eb017eb8d0c4d40df0913a7ca9dd5427708bebdc435ab096d6c2cace5d24e8dac647bd5e7e8060a81a379abb478702341f0376e2ae70de9a4e7ec6213d61983713fefab2e4f7e6611174fe4c0578435cf87fed3171ae5488bded533e9e4a057c6c79e37f93f6727ae9269d0c96bbde650e4163278b54ca865a38ad0ec3a04ecb2eeba9b7f1d55c84fffaa5603a662884baf8f715ea6a30d5350eaf6b4abcaf7bc2a3db44bba3f66e84d7c0ba4afae3950dfef27985198533ca5af7d59b4e89f9dbfd29688978c0bc639dc7b3f06536ea66fe0f7aed7d5eec6acca1ed5d13f4ec5ee9e94a7682d803477d0b31ddb77daf14395bc54cde91caff9dac3cb641a1b7354d1fa9e90756bb59617cf1108e2bfdffa11bf8e6565f7cf3df3501a2193cd03047a7e7b44aced6ae6381cdf440b7ed2efac1ed5f6889d69170490b57335a01adf88fcd6dfbf8bb1e7c97038b13e81f018868ed52516f6bad28043d48abc1bd69d93f6a192d3264f38fd693f5e9b43a81446079369fd8bad5197328691dedd297ad98f1684a03193c6e6ecc469544463a70157f644dc14c341ac3943f3920e9de4a96d8091b282ae5fd5d9fb3bcc94357a67e0f616c6906e555d52bd13a24b05be0866e43ea957b297094f34a3636d3d9453a34b6d1565861fa67a746d2fbb598a6f1aad8b2c7db65043c5b7bf97eca89e32588fe105aa6ce7e30b687194169c4fdc6729079cdabcfb0085d00de34ba57f9d8140ffe1087c469d7fd5af5242e096e18648866bcf24bb5e68bec64289ba207caba330b6c8ee82bd43bb71fa96977909192ef9ffd1ccf +expected_shared_secret = 8f50401bc9b1f857fd870902d4065f6cec8cb825db3eb22573c6167442b6e19b + +comment = Official test vector 3, seed: "225d5ce2ceac61930a07503fb59f7c2f936a3e075481da3ca299a80f8c5df9223a073e7b90e02ebf98ca2227eba38c1a" +entropy = ea74fbc3c546500ed684bed6fe3c496d3b86d2d6dfaf223969b942e9a8c95e85 +public_key = 25949faea67e908040a25908a7e33199d586f22a3cf5a7ac49ea41bf83452528c7f12118e0685b09d30947ac76f4f72e89bbb7579bba13d3cd4e262fcd385eeca8b780d7b6d3343ca7ec1958569c49808b97586c263903989928ab9b63efac00b27037637897556b8aab33198c144d226ab9284541400138e03a31f10cbf1cc4bf633c3ad70c65218c1b18770c91d139971574dd90317a421b8bdc56c02c2564b2496793a27a12009ecca141aa337e911f0b448d913394ec1abbb46a568ba749f0fb0a2c4562637a220225a0afac0e9a53ca4f506391d7483932814dea886c89879237a95c03684cc0c2d2701b40e5b3a340316159cbc56bae84130f2fa830501257f8a8948f482ad194ccd4f6ba6c01bacc4c1b9c3188c3d002f8f18f62393b373396f6c510308b6754b8ca81f53d5a1512ffc3428a6c2a543a61fe1193a86b97b260339fb43a9f0375b1c2c62ddb4c1f6629db701b2d2a50577cc7d5d55a30766400842938d83a6818a128310d16648614a6b6df6b5d8d9a8d0ea4a127f4233b9a50ba539f5f01b62513a5c7bb8ead8463c0a346252c94f753a34751b078a06dd785ac6532c2730caef7249515514f8e18713c2a72d8949de781c698e708deb35448ca1df99b8e09ac4faf694ca71b7bd41bb7024c0435424831424f680a77f13506a56c97b6966afac4b90fe60bf5e7507e6a7093c47b5f8ca47d86c767455d645c502d82cf5b1ccd8880758bea855dc71b1c98494862030202c06b935125654ee498a7e7f37254084aa1795484fa77926c8b438592f4d7baab58978329cf12f461b1f93aacc7117980774e12355af27e506a2ac63c4abfe585b2123e2404b9ea9753fa101604663d07e153c07b743b23c56b86a91ca34111803a1f5865e47807c012a81885104495499884b495ea3f457a2ae1363221b2a94be84e27cc9e8bca44f8fbb92746821782b3b92b1bfe87127f34076bd4acabf60e4f9b97a8f63008b584d0221af927c67d616bb9933be9486e38d7befda11a27175f670600041a6dbf0c9a4364b3ffd28eceeb0c8077c3aba19c6123a20ca72c0776aa8e21a582168591c7c1eb146ba820c9ea1aa3374625c8744612bcab37250ffb34a89d305c35169660dc9b09f7c960a4c4450b1a2e56088e8605fd75a35eb620c3c90b93fb001e03c006a15b67136ec1c354d405a61014821fa9590dd212cc6095dd011bd8801a10f08f15da21c14cacfde606ca02b7e2e1483e3514cc6bc88c2987587458d77851e476aea14a94c176a4eaf865d58c033ba2280ec0521bc53dcc3772d48258593a5a1f9974228652b8cb4a08296eeae869c733a316d926d400cbb09a2daf532da06522da9694cec2a29cd4c87f6a6c837c6ef6182a30548afdb807bf447953a3827db3122bcc7e33576a33a943492a61f3625dcf412793996c664a4664b3666c154f90b40c3ec514c4b1a2d265a23b897177342b76c69637d52e356620f468480472923313a658683566dc8f8fc1079f248f9d8ac67d4ca703339ae28a86edb4bc21db231dfa970249aeb1e2138bd4791352151520a73b0792a0e77d4967bc8b46740cf5599d4056f382c9006b79938825dfe2806cb6afe7523d940792782d978970256c691434f939b02c14f42b1874087ea68917c2f3e31315e22581 +expected_result = pass +expected_ciphertext = 72251024f554cdac42bdb223557f2c724beb9df0001783cf348f83294177c086dda8f240a793f879b84b7ddf199fab6cc89a5c1a5d9e72351a6eec092567a7fbc0f588b970151d55d1d8391783396c352f1842300fd934a2ad4a2627b455e47102c45e3d23b5ab6cd0db4b40f689762c36d0c90ceb333820e736fcdce8f0f683a3476602a5f3326fd6278ff073cb5833584d8a5317bb6349b6d4a0c86b4adfb9f3e09cad0c35acd652b16646150e40e3653e230fedace908bae8b9411a8b344b90708a468129781f42dfab8476b654ceb3042407d8ba005d7577976e6b5f918d53d3cc3bfa1426633efd8a8a211c57fcf3026daec0d1b63cb874efe2f9b0b90bc43421c39b17884fd1adbb1b7a27189743cf9b785692d2afaef0d8d7f3dc84cc0a04351085550a53cd764ccabe0dfc376dbb140562d8a923fc5d6478e5fa951c1797673db456634f948f840f534f66739943509455deb3e1b7e4249f5b35f0ad810cec14e275f9dc23b00fb89fe12c211f310620ddbb24871a15eee57527e12764f45039695780f3eca702d7cfd9cd85b2411bc426192d6e9b77d65b8bfce6fdf610564402e8be61831caf75fea911112cf42e65ac431c891c03914c1cf6cbcadaac24f654b4f853de2a7ab29f7dfa52b91efeefaeafda36feb7868b4b28f8f987b9117d5049cc61d41b253e4ae985319210509b25be27e4c1a5220503726318debc86321cd1fa4158b1afe3f1677f1474ad276e7adb6ede24cd85a67023e85acc924792bb15a4228bc242426b72672b1a443a188a2b6f95555ae0ea41e1e03a26ad7f7f3f0d1629fed1002e8477693f97d334caa9b448e0e09e9a1216fa03219854beaebb0e932c4b51f9c7f8cb869b05c5c401b3de89cb08b9bbffda04d6b675988fabae97a16c5991a9bd62aa093bbcdcb80f5251def293ebb350a4e8834ecfa67f716f4553beb0731069ef5ce77af83f29cdb75309f8488a5eb7418677b4cffd27415d4057aaf750e9da84445146b21ffbd57e3ee5fe3cb0525a9192539ff44581b96c6ad6131af9578b2d82c0d5a9e9d165d992f34e7f24805cac07d6595734a166e946a7b0e13e972f3a4eaf34b82e5c04f10dea2b31346d5b7321a718f0e162afbe6f80388ff18b4f3d2701e17b9ff3a3b8d62a412b6bfca7ffa618ec1e54c150e2b7b7b94a1ef82bad5d6659b22733105632a0949068b2b78751a660567f1f74f79f81d4bf35250fe1cac57c4bd5bd2a759b23289188444645af0de21274f92c5341781634c9ac6548684a9ffb2960735aa2562fb02562ab8b86cc5cf544e71cc1348f3fe5c25e9bb086e40773b2a860a12a35799dc602a6140e6b29a249aaeb366b2df08fde7ee87ea86a40f195b179bb355a61f71c40151a3e4bfe5298fec2146b968141676c9b24e662253f5579523621cdd775c56257f1fb23bcfbed0fa1a7381330f678493794a0c6d79c26a2171709f615898ff6a71b2af60e410b37ebcaa0de88d54081d6659a670b9d4c2967364f2995e744c884e1832430 +expected_shared_secret = 3221d7b046caccbded38e369625f69bac60c2d7efacad8f24170b10c5d222830 + +comment = Official test vector 4, seed: "edc76e7c1523e3862552133fea4d2ab05c69fb54a9354f0846456a2a407e071df4650ec0e0a5666a52cd09462dbc51f9" +entropy = 64efa87a12cb96f98b9b81a7e5128a959c74e5332aaab0444fca7b4a5e5e0216 +public_key = eb14cbcb226951857be4b3bc2a1b578b148e824a2414412a3d57c8213793c418bf2e0803de4a16eb9c8b5d53718d38ae40299b89793f14741792bb10d9c21d5f06633aa3cf1cc78d0dc99983076f8756b2f96b2095e0b812160fbb9494038a88057671dc692f14a956d5e6565ff752d28237c70b8f8528cb1a04cfe5e6495bd3b46a3264fd7364e0d54f2ad27dd27b022efb3d3a632a7f99551bc3317250207f2658f363164a9631a34b468e9b3c9b34b27a3a02fcbacc516469f69b3a51554b93e05fd6dcb098e8af8a3681ce89548ca311e2f5421ca1496a532366435cfd56a26a245ba68655db99cd113c1ad1170bab16a22bb3399e45c6a9ba45b5dc5da04a426c635c844744c557af7e49ca12437cf455b302c037bab4954627a2363020c4ab5ceef5aaf2e352ded62fd6a52acb70c84723a527ba34f179204b26ac10692822ac66cc56bfeceba65c33295fb805c596a48a0c59477405c21ac3edd2c27e56c19bc84d710584ade48647c681746038ac74ab73591fde872ccdfbc3cb1218fe12acbfec9248c00e19424b1fbca70fc5193151aae1415416ba2d7faa6a2c745cdedb94295438bb182dadb77182b2be5bd1ce0cc028b7eb71ba8cac8585cba3ca01620b63fc91bf3c210f67c65c92f893fc616158c104a5799720ab0fd907798f0678746475c8502029865dd653209a39c0c362258a266b1b244a4f42b4adc1c6bf602fe61125c3b989c018c0a0e0c73e35abc97c9ee695cd265909af82548b865eb4238376a6ab53a6baef185799489f64e200fb542ec3d1b42e8b3960e02730936d620360ff4570b4079b369a83629b599e7b27ff48c37f727a4f93bbb2d4b7e1c73fc0d6668e53c1efe0a0b547b1f38c51f4001654f45bf0e5766ca1c662f2cb99a6bd42a17f89c80a4db03c990a81ae9487e1a52c13720266083e152061aa08c03a7a703de58251f129546a42282515a3e27195ca97ceb39b00566cf4acadaf320d5c88c75ff310f10bb5ad738d38aa47c945235e1730b6cc227a194dcb04ce046a22c37319d910060b594bf8a64f2c4b8f26000031948046721e6546893a341ed2c32804149954e3788ea5054c51a43da89f9c789eda6727bdd4be32b15d47b9c327ec68422813b00950bd73c96c7175274a5ea8bc128a7c0993031b4e8a5d3c074d2d1abde8239d5af58c06509b24109c84297e3feb447fb3926dc19f39211119c4597711a222b341cdecb0698580e422a951db2305d4a7a871967db945a60439de206955c371ea52452f865da438130d2b8eab3669a97911258b08931a2e36c6c390b6845e8076a0d621d7692971ba71bda0b8aaf7ba0ad3c4f05ac23621a146c68bbc501854062b924c3a64916a1b9b19ce5b466f8672ede621ea987f83495106dac22ffab6f4a5cca797587126ce50589f68a2084875bbb505c7ff46922eb496da260e3719cdb2f23950455dc8d36e3932518bc11bfcc067ac533360b86550b6ad09e93dbb092be410721d48bf56b3594b93cbecfc785a5852b598425e4c4cdcc7cae1907adea5772276b2929b9507db5c06041e5f9846506055417c6fa091652a4a424bf6396d46365bb40601e3a55801b93a1ccf39126ba7f025a2467f6d44de229c527f6e4e7071cb826cfe76fea483d9163eaa84f6afac495a +expected_result = pass +expected_ciphertext = 6416527ba23e80f4837873839feff13b3514abd118bb91d6b361b9bbd9abad576f3a4d8db28cf4461b9371ea96971269360f966cd6220bee62d94f3fdb9857fb66b0a9245fa492d68ee1a9e8e2a49f1610391349377d1810a55258b3529d1195ba41b6642b7c8b5ee3e14cf59216a870790088bb0511ca47eaad07326f2596cb851b00fae41118dbe6f0e3563fac9345bccaae3f1608f10e0541022de77c2f820499042e3e0398e48e8df6cef984c91675c3ea283e00ba9f12e7f3f0b5a4e9a958d648afc3e5012af630b6b64848036d95bcdc79c5d1b11bad1327853623309c5d0cd670a65d64a3737817f5961cde07a2d4adf8e4624f0cd88494b5050ec665fca1991384f9bc93e0c3be752f94d4d0fb3908fe8ebdd8b8a9968c00c4482ede3f60eb6736dd4e6a33e44652e82a4cd16751b760b784bbb778663bc514073a93be9e9626c7979052816fd54514611134fac5a6a7ad1b5c8363336ad8bf44f05daf59d6b66e28f86d1ccb6a776622114190dfdd65f5088f82f6ad4df28369d7c9a7f67f12ac36f143d9e2ebb990c4f87c4442e81d16e8753457183dc14b0dc1aa803a4b016af2bdea1b90e888ca5f15f5e0780fb6ccbe45071fa6f73035a547d1eb8318f735b15b9dc465e6938f5454808358bc4444304e82397db3d1f2b06fb5aec777e2922887408eab4804499268829b5b94e66e75b01e4e8ead235be8bcb68c801d9a92adad2abac3ccd87a486bb4c17d6717d3f679e0d8d549af5c8fad6a0a398b395a57715e8a7ab3870a475d5c30b917d24e69bf0c9fec18cfeefe54953064a1c56c00108f82df8f224469e2fedf46e2a8cb3a0105a3542284611ad45433f7782b9e879f483f4d5ee87b481f8b353741b5565edab5b252c73988c705d7adf1c3f2c87b2f9bdcb94ca5e4a0c5aabfa3ce67e8cfb8f79f43dffb385d8ebbd4e76ffa8ab641a3c8f3bb2291cda186160abc78169568e7daca87a9c536d8a7c345ccf8046c38e165488301872b1d7ca223782f5acb7bb664ad8c7448beff305147e7bb663483899ee1a4c481761f7b65bdc9c0d4396514d48f22ae383c39c9fc650b7b7f166bbdd2ec8bc54161f7524ac69a9fd9c538f584a096636cadfd633d1e64d5e89246a08a51a9c334608631c2687d63836f6fb8dd515bc7a4e769157499638d2611b69058f2615527a04f4ff2b60360e46e34bef1c8e57d499850f44ce7529e80ef0980790a8925184b4b22049b356f4fbfe293ac054d63985540cacb9f25e9180b626bf1e3f5bb3f413f090f5d468402edf672da22212f2d1214b760944f57d3c914c042eecec08aa5d2944fab51fc833d9e374f2be7c5fe94296c0df98392592e0a6b183242db0b124ea728c44a5aefeb2ac1c1437bb8ad49fdacc3fc482aaef9e814a4a8010fa2f0d0cc6a88a259aa8c09b7204e09a71fcf5a0e7a801c3319369cb933a57cbfcceb64f96be35598b4d2dab925014efb66247362e5b61cd56471a3ce4399ede77b09879ee29fa51513d4532bca164dc19be35bb7 +expected_shared_secret = 1d746afc4160c75aaa6c6967f4eee941e09546a039027f05f0f8a483710ac334 + +comment = Official test vector 5, seed: "aa93649193c2c5985acf8f9e6ac50c36ae16a2526d7c684f7a3bb4abcd7b6ff790e82badce89bc7380d66251f97aaaaa" +entropy = 8a95d71228acaa5f9ae6f9d9ca8ae55fde296463b41083a39e833e37c4c90f88 +public_key = 86b5c9a75157e73ccc2e138518ea98a246145dfb6bac9b2ffc333c0ba5806047ca9ba8ab797937000270e773c9863709e59786f8ec948ed27660aa3758e33f59140e527787fa74a2ce22a4a8f3037a26903665cbfe8a0677ec273f590d64c97f69f396db78448535746b43296bfa2bf0a251bf986a524074c1f96077f5219cfa9124d1458520993f627aa8b7b6a0f191683233e0ba6bde24561a666fd10151b0c52c9982c301e0970c3363de27825a5bab078848aa5cb75a90c1cbd24cf67a68f3417780cca947131e4573934f9959787b6320a4b47bb311048289e2c915e35344e3a144e2708893138a15a03fce3816945464c229c587093b5cbbb519767fc65c078d6c684b8b81c1f9cc2b3ba749fb3074623e3c9124a8e1a513510357656b37087bfd02773fb59157eb885e1501740483f3ec070bd492dfc217d7db99cd7c9d57b937297634c3494deb585b8c93cd4eab1865f8a9c8bb15dfe583c7dc0427274f8df3c693fc351289964a89a3c745967231261d949552e0809ba9b7c5d258af579a4515981e991d93154bcaa170491b06752415b1d52bc2a98b7f39c5b91a87eb759a9a4537218156746930a347a5026911adc0412f10a7a7c200a1514d500805c10a276c327e4899aa3f9b95d1ba2347e0140184b1235a719e6c4a3011576235215d77084034771129c33199b70774b2130898a0c69d8f39c3a50b273c665dcd8031b4454d144a4356b9c2b16641311856cb65466991b06d1a8a74a5aad6b5b935b65dba8374ee690cd1c701a5a28b41732b5f88a9ad919a7fa563bafb529885488f544e1240b3cd673f94ebbc91b4757444a302578aa953161993cc918216bc56ba53ea17664bc5b543a38c3516d4063c35695791d8821240bb749caf98896c4718a9db33c1a7e9b91b9b6d06fbaa58e507f8a105e2f71f6095621e354b3dec1f9c979ed7b3aab56b4741110fda601fac78c2edc386669118a425c634157875f61adf10c43d2184d3252edeb11a61eb67a349405ec74b9fd307558a887efbbb46c904f9469db491605a3582be433bed57363426055cc4852acc0317f24d89903a918875c949556a6a458fa3cfb5797d6a3a68ee9991d97a38e16b9a727c5b2e7b5e5a0029c1513d5a1a98eae78713785bd4322261d90109a0806e565ebd9308849cc6708b536c83a2fa35995c819d99b850251c1d50ea902a053c7ca31faac37bcb1b40d6123cc4d52002909d0ac566f7d75dc89998036aabb267c5aa70184ab4cffeab018f195f62879be0a51b42b843caf7c494c181c2f06866cb2287a00349ebb136747da52a3c4a3c581798c413929ce3e698fa594f019579ae329a22d4af66f27b46453f22e61aa6ec5d7d854ff6d3c3d4117be2145b5c2ba7a57ac968a5ca43b461f808167fb5a76a942c95145098b95cd46439669c00366960e2162ab613c5ecb151359b093c27c04ab230fa7c0074684996f44939c81fc31373c8231bd0b6679991a32a031002b257b2f31101317b3e2b6b28b8911e3991479444c6086110b7a70125ca71c6659c970f94d0942124c17ce3ad50d5a7019146bf51b012d1cfa0f59b220a795dc6b3d7896aac680adad383ec46762b669d35909a47c12dc8ee619e1a0c8915822d574a243f67e14104d4f021cf95bf33271c9bc9 +expected_result = pass +expected_ciphertext = e87c238704de82f3b46046f3501bc2f30e57e653fca6d1bf693945caf49a924072cbbb21838970324ef7c44537a67d90dfa64ad9048fdcd9cf15c7cf55af3155afbf69a498a3deef649022a61ab18ab3267c38707d732f479fbc7021038b52e0da50bfbeff9208eb6c09cd5931feed40a8ad8a6fb95fda48a911bcc1dff75e952c1c4f8d66cf7a6c1788de249b7c559c9584781ee0814b9af67205d76fb32df7dd1e6bcb11628aeb198fe307baf9db66158019ae9866263ab0b7bb301fcb36f5f78f7a70b14e8c75dd505bd204ab79519b563572b14f332f7b434733dd3dc06c968540585f07fb2533c6a4599940b92f0afc09afdd0f0e74c13368267ead2ef18b0f4c0799a6abe14c5fe16aa5c81e9189b66c8b2121e4b38422de375272e296bdca2c3632ce6e8558dc8dac44971fc55cbd9eeaa9d91f699ff664b0e8eb096cb007556afd783beb895d382aeefe1a6004f96f48cb0adb49a75612235a2ac318c9ae11e6261f2b90d975d866fcd1d7f330a44325f5ca0f792f3daf1035a5107b90bcf9907f9a3649ffaaf4a31b680184bb3f76899f834958625a91652485d84fe7567d667ba84e7d2c8bd3296a0d1b1f59975f92ed1c16e0e5cb83437a6b9d8c200ccc2e38e53d3ae037869e018958e6bb473d6a009f3c09714760bb2afddafbace214b8e119f0888f2c6b9343b9cc907633583a8495dc4178489e95dd68460b892c27c0897a2e6b2a9499515cc881673577683fbb28c8e7ed4fdaca6a58b8e98b78065c5a4b2b3414d144b17ba898b8c268afd0cd6e1c7543801a13b2218b75cd6ba9eda819bfedd4094c3ca7e439c1e9c4a8df0e6e3518115a3791d8bdc86bc712b613c7708d36f94cd95775334836f39bfe641ed8a4ac9d7e3c9642ba5ba766296154b6af09baff56b7da6c43c848b7518f445f87a31554c90054dbaf3a2fd1b1ffd91306a5888620b90838b7be589c9fa15055aba13b29e57f8b5dcd2dc7dee25d31bc977c05eb0012c261a5916cdd6b91ce7c7f3bc4662bf500d06374d59f0ee21f35cc04ca90ee4951350f2fad026ebaeae4ac28d36882b824e9341dbbbbf2b5406451c8b4eeb4defa8c572e9c83c6d60b98318369b5a2bc88af89dcc6120140f4c5caf432c67a6c51b2c47a3893f80776a6ee726300e5587bf3743d4372bc9e1e3a53bb583412297866c0174e4b81cb4d2363bd5a08355e3573118066eb549d9969205a61e8bd916be103481d0a8fbad57d13cfa057305b469b9ebaf78fcf2a333783956e2cb0e865fe4e9287eb5a608403b1353d389391b3ab57010bdb0838c2b21f8d7c1c063de9a27f4d600aa82737c805b0f0264cda08a3d315613f8741519e9dc16d7cdfab9816e2a639b5ec31cc7f66782f0e382dd1710be19610094c61230ab72f859ca4ace9a63e3dc1e101a95e206d832efbee6c3c1819da9d3a03c42100e309dee54b2d8817bcec51944a39aceb7ae0423f7f8fc7a55970defac02838dfbbc72f0a84869f3f177bde1e403784032e71dda78b484ec1eab5 +expected_shared_secret = 722fccef7142c46f74eb57a10b13e420d6554e9d18507f660bd1be96d3cebbcc + +comment = Official test vector 6, seed: "2e014dc7c2696b9f6d4af555cba4b931b34863ff60e2341d4fdfe472fef2fe2c33e0813fc5cafde4e30277fe522a9049" +entropy = 90d79d75d0bbb8921cf70d46bab497022a8e750efdc99e5f1bae653275441c7b +public_key = 05eb362461c4a2e81885084505c3862c3b647d181805205ef3e4ca5c30c46a0c21eb97700b70c2bee78d862b3e19dc1e0cec0ae6998a7b3c4fdac39a950027fb2a3bee027a8e54b4a5b981bba01badc0b5ba6a36a2913f1c1a046036960790ce2cf2583e6c62a778290f242b49606ecf24b3a0dc023b22ad8945a0b8dbccc9356475b36b2a990d7435b12e1536a21079fb7802b998488e690f763646c3b66adfbc8161855b20ea18afd87229d05e60372694e4c4c6215344da04173559d7954b029555e6ca4356f6cbe325a39431a64df06e75c63ed0e40bb0cba6ed68bc7211b02f1165c370ada1e0acf4ab61c87cc32f7017b4a26ff8cc0784f76047316af6398ddecc0c62e9a37fc4ca685017b33aacf597767312192cd330b2f3a84e0bb858480a63a607295a39f61510dc2c6998614013f45d319858da8228fe5bb6eaf3b03aa60f4b721a3f046d3088671930672c61c92d6005254372d8081be322ccead06cdd472cc5a481ee385096a5b8ce64b57781cbfc4457e917162da007bd7bad8e3803e05b08876842d9e6a0a545407a5067ede3510ccc4478c040310aaf46051454d855d1a5521e2514af676846650e0043bebf453e7488b6db8aaefcc16e26a75c52bc0ef3c80da3bb39f73b9852b54d9c606363438c45dac4ff1a1913d81b9a80544177ba7db6503a04a5405299f80a83fb7135fde04f8cecc0962461c0e80298d219531c9cbf00a3bb5b84908b5a807739a63485128512c0478084c8964f9064cd4514ce92c30454ac25b48919b719c5a853010a2eb712b80975660456562c4c448c39162ca63aed14af7f28875149857f9b8965bc1d04cb8ee2e67c14a493a3822fcd0a2dba2677e719b8f2c8bd09431b82ba56007584beeacaa1f081d244b0d771bdb0c8033b18ca9597443ff8cdf754569dcc2dc4d4c212e2bbee88925ce73034e19167cc7ac46059cd3b9ebbf6bc3a476f08438c61971af139a248821002480f42c2b9c0979ad3bc6868565ca3fcbc124a7548d53f56b51c9f8aa387b59b07638c7aa45704420b3c24642035a7884cb42f877260c29697809aa7482e3fc356d8ca061c1c443cf24c4535bdeccb02c3e3b8b1d90e5b47bd11615caf849da5811aa743b9bd7810c470187e81af9bdb4d1307303f615ace2a58e7ecb3be260e9f7c1e10eb3a84f207d2e75a30c7c741ea45fb04a9473c1425f80a9186a7f2625ea6abb4aaea3bb50602df23acf8e452cc01a909ec9034acb47b969d904213f0a79edb7766d0290005c954a1da0155f7318be854fdb038d019c1904b714f0514ac331c3813bd703b45076365be4b47ec510a9f585907bc0f461a6befe13a2667593e12134a86ac139777a50ccdad16b6891a0871621b387684b5226368400164b29109328f672cadadf7648377cd11c9232094165bb1cf12f694f940c3cd784c84925ba74c8a49dc27cda4c553c85334a860a8a55d8a75969977ad1f505b9b20ceeceb24a262c707843310f39434390ea5315a67491f0592bf722a1c2658c8a720991b26561e14b178c3a1028003cab8b69f60828f47b876d43d3f193c3820804068a5cae76dc3f27f5f1323e6a2797b9a13c86713a83ba9c161899cf295cfb4a4aa443f32d16b72616a0db4d3849fc41a7a6ba87f4af757a0ab1956518f +expected_result = pass +expected_ciphertext = f030991858a580b285c29e337892c953d068fedfdc83b1997d21c7cde737d0215a3629565b8b060f17033dd24a7c957bf76f490c814636e745689ec0582d17bae213f6986f88f9cff9fd86771b36320483b6dbb019ebbe8ca5642a4613d9fd3ebf436beea3590b08f411287b8a0a50a290621f0430364129c3ef1a5730cbb1ec741277965299bcb0b1097a9f9aeab4b4f1f392141897963f1f0f6768a763af9033c2d52988fdf794bafbd357cb19a101a11d0d35eff4039cc8142b834dc8e60c6d87304f5e1065cb982c5d1e5524d3f32b72fe65c42f8ba83be04f54a0d336fbb88a75e121a7a5a895e7a3c1ca80d70b2463b3b589fc35781cf2b8e917139a160522f88188bf92188eadd1c964cb5f2d3b14d0e1a1ad5bff6a0a5048d2b621458b1c088252b5410fa7bb8ba1d9187b90fdf216871382560943d7ffefb0274662982f83445c112a0015444415beb57bd1a6d282e097f0cd3cea94f92c761c54e7f4d3d27482cf2026d5e5bdee65ab969f8ed3d7861947bdd20a7b86b2116772168e5dee105c59cca176527e8762ceae54fc71bb2eb1301b0a3b5d77d26c4dd3326f5cd7dc535bd4e3846f3c4ca211c4e3e61dc276a0e6e1a5b278ad02762a2a6d48a6d06f73334ea229120a9a8ad71c6bef1beddb53478d1e2af606a955ad8d055f12e79b1733db11b67ee5599340e36cddd89d3cb6ec842dd39da1ae7b9b6943974dc24c497cde4263f56e6bc1dd309fe7c6a7905a6080a2dacf1c71d703c6e277c7661c7ee1f0e434a1241ae089444c31a971b141bc717bb10163af514547d7475191aae32d3adb8bcf0bc49f08b40b3860f2ba046ceef3e381675f803cdc9c4f1a0a4f8c1b5c06cad2465f6608ddc6f104494906e79faf03c3c48b89c613b016e7529e5e6494668cbc4092488c1238fba0993a81df3a3b46896a58a44848486429342f4c823c96de88c203c502df63fd6a58765a2ccf89dcdfc2b8e11cd8521c270ab50d3dc97e66a01aba506c713ac7550ca174b51efbe5c90fad46db5375f09ce999ee3ec2f30dbc5f5dcd04224827bee9fd94b56d4d5f0805300a3775c142e7a1e81905ba012c2e62000c9e2a6c2436cc919f46361c0287c56981d40c4d2c571dc7b566d189aabfb904c8177b52f525cfabcd37e22801e9025657245ee339a8f780d6103f2ebd613b7276308fb3eeb7869fe5a7038a0dca12abc39d0e6802317789514a610b265500855376207ebdf94423005af9724744fb94ce218c2c87e15107d71284157ccf6b6ed55d772b4efaaa4687f1c5a0da143ae00687c749a1e9a869cd356c04460868f581771a7e7da3674d221d074fc2d44edff15932008efbdf1ea5f6a023d1e7c67617701b6685f624448e4d2677638558997f0edd44c4ab4cb9a895044f00056c946e07936ed11aee915fe25038007ce395ed773bb281665b87920a7d9ecb49ed8e4a0d9aa277f7e19b5bcfaa45416a7437699ecad80b43e16948c2be55f69f99e7e849f84b92f45f556389008c1a3b89588ada52c7 +expected_shared_secret = ee7c5fb6a63ace944e1eae1bd4b182263d918754c33753b904853551b2b46cb8 + +comment = Official test vector 7, seed: "aefb28fdd34e0ab403a703b535296e3a545ca479c1d8148e2d501b3c8dd8b1034bd986f13f1a7b4671be769359fd2aab" +entropy = be8a32f97b9a8d596382c02fa2a0eeebc15c083e970ddaa4f2622b91d6718663 +public_key = 89c28969078e11664ca1554eca81b9542bae2ea8cc12b44e81b3354818141af0b494543d4674160a086f7e8755a87258e7e6a6aeb96955286924b42636e04583f74184133d8acb9067925f4969642f274085f70fc12361ff96c3130b143e23797f2a3a6cc757c97454cc8aa5d9c062f9254f4cc7335b44cb66dc712b4677c290ccbba08cfc3948c535be29f44736a23b4c8ccb3978404e419a08a67aa555becb48bcc161cbc5492b55e3498e74bb515c28a7a44a3afa0148ec3411d82a1ae103513074a13938a5fc17dfabad006d90455b4b5e45079d7bbe956c7a18a8bec9a64c1db72544cb00c6997d545ac7e3bc5c6565885536af486417e728cc99c78cfa12a1f7697f1ad26efeb7262800ac4e0121e766aa9bf0a74ae635074c62fb6ca79975761419b12a985ed7a2c8788c9020462fb5764c087681be1595a5ea4ee7234aa2d22f4119b559a536e0da0e8d0b2e493c2b5bd576459994acd684a81a0955684818e1b88e348446a22c9143a4eefc7d8ec678624763d4548fe2451f078582c93c986b0417e1aababdd76dc0532e252b59e47370e81951ef75ad48c223316a40237152e3508ec164c7375594f73b5f0483c560f52f250aaef28431e9d1b2b9dc650d2371bbb7c8360c72369755bd8696fc5c83fca76a7fc02eff54ca60579caef6341385aeee34c7182445bfdb549bc59f70b76368da88d47386f75968aba093e8f42dd3c7cd68c8028a90cb0c93cb44d42ef9d15e6ca978ed5b88914c4e20768028f2c927a33433d33c5e6a45a6c5ae8c252a83e68ec121347b025865f26912b89a9da7472b75b9aba75581852b97d27ea7c9c5c7e8bebc0094c01947f43a2c6501c97e43231310167eccbc4c3a2022839584a12ad5b51b4cd308c94302e58c70eff7b24faa051cf548b5a73ab4254179eaa038ec95d4d4182d2971084cb33a6ca1106076dfa76ec0c4b3bb5c7266a481001cad07d12051a77e31603bf47c62dbf959c89774587111db1b038ae834e0a08c27f2b772a967179a9bada1ac12bcb8fd3b06ca44b3f11a6762ab51a9a0b67fb83def8c9a712a1469b719f2557e5a03c6bac808d0e0aa304955a3e961618920d0bc2347c74ad6725a9a855d1d8456d2c26addd849e59b7ce7c85765064ed6d63039e368e9f18d4fa11e16f8cc88bb3ffb40b4c6269996da8a6b5586365292b5b1c78bf4161c171e2fc7a6a8293a96d61d683275eafcadfed74473e30a1026809076a1025398b745be723a78e008c85b558d2b76392f5015d1024c171c0fc6c7c0c0e631bef57166e660269231c3216fb08b6cff0a420aa413ec1285b7b5ae9fbb15f9fa6b8af29ec061996a7612de524c7e0724766bb51e1264ab50c3a095815645b1d1021060b90c96555e8a001044d16cffd7719858065efca6c2654ea25506f0541fae242dbb154e420c0dd4e13a79053b431b7c00768bf0f781810a0832a2b814c5517aa1a0949523e12aa35893912256a7370bcd9faa30788b631b87731cc5c831a26e8f48ad7cf9c935301aa8cb006ac59fd2ea5bdc1736b2a5523ff3c4d8f429dc037292e863a087bb29cc2732ba30bf11490dbb1f3adb3448d6110a774b25d242602c250999ce69d1b32ad3702602e6d28fdacdbd2a03546764c4fc1c62c0efb3462c7c88ab8d94e20b +expected_result = pass +expected_ciphertext = b053db98bcf8daca0c50a98c575bf2272f8f0c70343d5f78e97744c670f9d436142850638fe135a85d212ef2b4d2e23e8ba9a5d1327ac7a55454f9e1370861409b296ee2dfc6e7a4f1e5cef633489948173be158aa5192c6a9ff129e0b63b311f7595425aa29dfc758de1629be6d167fc58a65a4252863c5016042409da5227fc1c5334fa809235721f6f608a5443a67dbb33a1e5fa690cd34e9accadc99072a1db81386fd42257e1035b6fffe1a559b97fb71cab8e8e922aef2141733d39935d754e487656cb3b9b2bbb0a5a7c6bebaf62f86a407fdaf776e3a973074cdd2cebd67bb2305d67db831fee54826cfd8514be7117ac424548de1ec0628594062c97b570058bff7f0b38b25d57e953cb4a6d748828d56d643b1fd2068983d138e0f0bf67cbccf7a5ce79068eba43bc77d3abd7222ec5a22568874281ed644d5f3627156d35bd56da1e59fef74ce30a2185834df0f74d776f4c1661f6ca1343cd1149624b9bfeafc0e0084a3b68887cb44d51b7abc7f79886fe6966ee47144a78d12f99333a8a56e2a40110b7c505b6164b0a812590b4dd89d66583aed83348f27d88674a26440d423d1ead252edde582049f0f332afbcc54b4ec1ee81554dabcc8422dbedbe38f9c503722f3ca042ea0b51300d078ebb9663016bf61344f26d6bda836cfda3d06c3c1a2e8ec11ba197105b75942938117811cfb78afb5264f02d1c3a7b8cd72406ae08fad11966140a1ebf31cd5df8bd203453db15ace5e8f0a6ed9d36e1f98d55610e5c048c93c173f0bb47299e8c55bf2b2e1276ea90b22473e8f97a7bab2758087067da3dcec80749b66443e819964882f886bb9c232ef91ee1f57879eaff19f8c7472a8a709b3466801ccf756fb2ba6142ebdbf39643530879284ebfba338053479d78eaf70edbf439ec03f92c440aa15bd765d49ec0c580abf7690efd67068f20b5aa5537fd6a44dddebfa0f91bb6124c2bfdc3c6bb0eb6ea3015e202c6a5644c627963d172168c1b522bec3d6f7c83c02936fce8f3e774d91468c652e40c30ce4628927c44790f98c024860b07f758f1e09df4d6e3394d4dd1c0c5403c2c3a208ee3a2948985354929a90163a00e86b481bea2b4f14de01a0592a80695b5ae23996b1ddf4a712931612af6a6fc529f819b8361b3a8e98cd82fe92005b9c147f3bb4dc9d3155656575de568bc2199ba234bdff2ab277207d8615902229c48db3dcc589148d1b33b1d0594da5b27612a996d33b40ba2da0631471afabb3d155b2645958eac3bd6841dae38dc0adfa59b5e1aa809f888504448a56a3c822a613c998535c3aad312a41385a42dd691f7e9bea9dbe2cf0df32a86199a3fbd537aeea46e7c2768958912879115e2dcf76ab592cd3992036c83e2b2c562ad99cf42c9bba8b96aa54f01a4ced5769d22f51826b4217b2b47f721fc58d5ad5016ee4606b78e93194706332569a673425fe02bef35f942b9637c0f428a54f0bc190b6116aef98a2965181faf2f1d31a436e002ae9ef0f2a6bb912046ce +expected_shared_secret = 77cfbdae47854e9e10765cf397eca9ab2bf2b7522817152b22e18b6e09795016 + +comment = Official test vector 8, seed: "cbe5161e8de02dda7de204aeb0fbb4ca81344ba8c30fe357a4664e5d2988a03b64184d7dc69f8d367550e5fea0876d41" +entropy = da2cfaf69e25b2a89ff2557bbb6f69e01d8e2e7bb27a7a1ce7e40fead16f33b2 +public_key = 764b51d1dabf923518de898c5e7cb5e0066fd69522f5889dc05c41a472c983583333132052a1c93a464120b325764b8665ca42555b98d8d6a93c88a0a383ab51280f52873f2be26e12c131677027c616711d478342cb424b0463c88161ed84bf6e869abe9cb915d13534d2756dd72343359e9911624dc7c6e828b19d6cb178c43a5ceb9360d2939df2744accb4dfe8aa5eca35bf87c6ba265fb4ab7c4888516ec91e52c4030f5453e6bc9103b9c19cd83e69048272855b11b8af3edc09b04ab31179bee59abc76726fbe9612d271b7010844f62535f2f30d8417c35f17c1619b055fab6a0f5458568c753310299fcb335a7697e7cbc9b9eb1b14ac2d0ddb765b266b6d68bdb5b0236895328540b20f91bbd2910625e674b33a4f8b6c1b4f66c4130c2e973ab72d809282ca63edab71268c02a9d020bfc805410aae2dd4b699448a56049d1e9a58c5fc2abe159dec69c5027099a3b57d3a2560ce24a6f5017d32e00f3078b792309384421878cca555b7065d57537c804e10bac052788769b7c1121a78911a153fb56a365a2f97b070d7b61724d0c4d14c295d78be57a8aadb873d3af6b74d020b8654cf48543de8ca22371a48ded585b7073ecee0c44eec27c85b5a68f6b454b0cb10692039cc68ec2c2bf892804520c71be5b7badb807b4059a3d87d32548ba3e4b698ca150d784a8c2c35a67a8c92c68ac0037888b65a4c9800ba7a1ec050627af648fb61c87cc55b8243545aa514cbc550a8804c8598cd35786eb8c6b06077a1e2d4344e4a6baa789c305b6326e0bbd4402dbe26cec08a7c1a19457bc2677f15b984a74fbc52cdce48618d50c47400011b392908ac2cf08a579783a80fb2990cea90eee90b7dd81e6cc9c961372d8c720d7eb223d5a6a16d4571c1a93213b32289934f7b30a63527c6399920086940b7696503e623e63a050f4b69810b6e6f6729e5782b572221f596a09a1879bbb46a62a955043a30a2aa3e62e02ce1ab6f3d03693a8cb653e361d8783ffa37274ae06a3f2292f1a6557182006e493ff2653437a64dbea950bf6a8ca8836407fb489d42a6f6257770310f28715bc6411c81486cef3cb9ab500558f070f4a15817f8c177d63cafb176caf3b2b1cb7b7254c18fe15111fcab9e9a9682f41c9fd247ec532ccef514860a3fed330255323dafe46eed198041d732538c9424d43fe2f5481650470f08906791b2bfe65a445bb26ac87d9bd04aa648a54dc13a137b60e5c2779fe4b5a866620dc2829d42384aea9ab1552fca920f8929b7baa059dea53e6a5b3e492a6e45b5ae11f6ad24d035d4246a0cd53436687a0204a1de29aad2c8b53ad4b938a57c2e29555219544ff64115cba2668b54c6ea8779146980b58a2e669124a81ed4420c87b0601de23e3ccba915faad0c2b47ef6238dba9449274c64ccccd85e91712470e8f9a2866720059a8501c7762c0883cf9827bfd62bdc0882ee03b457be2b2794b8becf74ec0da4684282200a294c13c8a9ff376c1187911121bdd886f27514846f740b72aad5544cbd97a7e208635480acddf404fc067c82a45b5c97829f06abca5201429e9a516f66e65d07075cbc0c60c2a9734baadd68f421617fbf9515b569fd08bf3aef948095de1afe74bbc3bdbb45fd8f92eddbf0c682c81a98f930f6165 +expected_result = pass +expected_ciphertext = 4d372cbcf55aeaab39558fa7f1b3936da31e6679efee4b0af81d6b6e94e485e0f79a1a54dc8358ba0377a92eb5270b7b0cd814e464e2ee1ebba10ebdfaf6b53b5875a89fa0b0edadb5a60d815bea517523636fa18fe1780d152bb90d47d593409a2fdfa6b39c42214f709a86ddfa81bebd97ad6d18719d107dbc838111987d4f721746d75ceca8fd414f4055d206fec568c13d1ffc34ba1c243899bb5c16cfb6489c4cc018d39eb93873f520333d8cdef4fe3b9fcc117f291c2a2c1bb9febba997341404360213d9f5d7d80314fb059f57e12c884a4c42f6977b5bf3ebd6e0136da4065a91d9665cc141670e492beb0bf2d1fad2d536f2c0659a8d367c282fa5f117e0d4e0ac05610031e5624c61529b144995c155430063ca9a5e654bc84b1ecf790a635c3e5c3dbb1f980ae8b80c1b2ae9a48eee5a0f5e2aa0175eb19531a7ad6995a2d5a62dc236b596e9edc0c2da79aec60e5254c748ca80b90623f2309201ba88731d63794bb1865912866102fc732c88fc9c511d3a86648e8a5c59189941e694908ed80b513684b0cbba9ea16dee6cebf857b8d791175d623b3eece53235086b45b78fff9fe4b742803ceb85518009f5d94cae007e7cfe5cdfa2aa07d397aa97ac75b53b722c4d488ca391ec0c9f3ed196fc4326eb50b3efd27d0b34d9c9f200d7c74d0e30fc04022c331b55b0d7adfa777b0cce009786cfe71a020e33835012da068158102768cf441a078e5b9ffd6a6b1281f2c6159f114599d1096cc74a1980aa6ac45c8c4025067cd6e947c62a908be3a033367f1828e846fbc78bcf0be2d63a24ddf18336b8524c927a03ba76ce527b84a1358e3831a76e955a1b937e0ee2f006ab0d2dc886115c4fa6c9a7c831ebcde5b1aacbe33a82495349bfca371db6beb88e8ccbd8bee3585bae39a435c491292147e4e4833aa80ede11d1b98651e6d0525944106a454d76c3db9d74ecca42f52805037575420fda0ac6e6be3d798531ec283916e76159c79bb054ea23c24a41f124e1dc887e6b45babb35248f5c2ff7096a458acd6430f22eab1e5a6849fe783e612bbe435aaab7bf6efdb27220279e7021c75ceabc76422056a322afea422b17a8abfa6c3160ba885b3e54e70f3be0e304724cbe24d7b95359fc04642d3063d5191173a84f44f1e930c6c2346ab973ea722dee19f8d36065596e83d7e532505add1ad3ebbee0315d07a10c44f288a7c97ffcb03b829db5a01bca183ecd2dadd64bd2dd67aceeb0d34d039c3c4a2ab7a65c2d7479c2350663b754fd9e063bdf4ea73a04cf1cd0fa6782d46a9a834936f25baf39f0367a3e53298259a48cfc6d0c9ef767c30cd175dcbf92a559cae64cc9fd71eb630dbf78d9225e5cb216beea284440ac4497db0b095c094daed5d39695ae2360859bab3cb62673ef2ae5a1d03c4582764f2270644326a0c4143126de4d4600baf1ca099db5b562f33e9e35504496be65ba3e80f62ea820b8f11c91b64a53e6bd53ca5d62be0070762111804109bb8e1a594e5f536ecd8c +expected_shared_secret = 8be7a417efbdd3587c6f82ddd1d29956789d28c2413b8383590c5b80cc53e04a + +comment = Official test vector 9, seed: "b4663a7a9883386a2ae4cbd93787e247bf26087e3826d1b8dbeb679e49c0bb286e114f0e9f42f61f63dec42b4f974846" +entropy = 511c2ab40782322c06111e144e505328c4e5bfc890a5980a2bbc44aeda4c738b +public_key = 5a1278bf11b37fbab1db212359473012f3b545301ddc833c69a75afe16744557b5e28bc0ee895da16c2c5dd34fe6783949d555e580c1be7994bb008daf27a47f554932b87222e82ec670490ca5139ff49d5ed896218825056a8639b31d3ac8550356a408a01404c6aa9c2b7284e7c7c27036256b7902445dde00630d81930f4ccc518b9efd8ab24fc16a365b8068c90f7e09bbd23c2a6ab12792d245551a9894f704042501c8fc49eeaa0132701e29a3c97834530a7c61f1b8440822cd1bb6b11dca2a5951b4deb0b1268c2f5aa8cf76a6bd0be3013a37ca1a903ac634405ecb3714bc54610baa63bacf0a263d8cb018b03b0a286083998a7e8b2a573e570179712130a19f9ebc2337d43926f9c96460996cc03199d81a0e19259da696fecca7906931a787a5c264826099a3e03339295b587e7a4efec6a11aaaab057aa8689473f1f211c6d85499c46746bb00ba687a17877e6650c678d13861337faaa7045a16b8eb7173e7c08b6394b5f2b99ea3083ba175c55d350fd61b73aa790ca6f479fd4b01282b6baefa00a1946f6dfb855ce7bd50389d42856823301e01a228ac754cb65a0e323a0943b75741cb498cc499c8649b6bf87e991507194983aad1b57994b7d79bbcf2eb3b5f8734ccf3cea2662e95d486989144aea22c94c363571ac7dcd81f577645cf19b313f849b422afed963cdb701395020c2d18601a40a42429896aa9b0b1c10c4876928aeac59862414e143722a0b94746abd157343d15bb9fe500763b18c61b184407449b1b5ba8fb1554e4bb58ab99faaac9cdc3b698e64179b089b786204bf95eda86474ee799440478348989c91c3462446724340cd2376c682907edb58c85a4ce3ef46cc5d0ca345590ab14844b224735dc05e0e66ede94258f395fe867ab9d8c1b0fa80743002a15da197614295dc358f40758c9cc05e45bbc659b93ed611aa58845d94acc7aa75deba56d4d83c640c252975bc3165254c92957b78c9583b370ad785f2c16cd5cb9913839939c7293e6b956e23cc5d14cb3ab2a2e94f179bb076355157920085236f60b84449d43ac89c2b46dafa6b784438f3510bfc48357a5681043ba7428583bb5e912b08786562579df58a41bdb82114344b3ea3574b997f8564248210d4e50ab2277100b9a5423178b1f138e9d427762253cffc3cd095cb53a776f4fe015b5168b1a9759ac4acc77f90c69b307192b7b866753872a69813b1bcaab5cbb8126d8998e78d99f5a527992b89495a28e3fa83e75337ca2b896172ac244ab7e30761c8e3a00890046e5f599eeab65bf1a4cdeb5791cc10ade7197fb5bc754233f3b10c9ba2240adfc61c05231c36a6cf71aa752ab3c95c3756ef9373b677105d11f86e68036348bdd181f27407e344bcd297cb02bc44f077976ed588d6a846c2f839bc9bc4872617bdc17a7baa97af9a9322ff015956678e8d622cfb1a11ed929f29bb1f094c17f49417c09c1c443369123caf8701199c43bff97034efc6999424144c9395d9063bb153c0ed82b1c5659bfb23d4cd2c758a26b6c448525060f686bb14873cbf5046b3a3033c5c8081027bf5e3c51f6fb6a1d54a77c46b0ea4299a9da4ab03b95f9d3601f553d46800f661e2c9a7e548ca42e385cc6a0678f9e9d268ffce02c4b465a46773432109a75 +expected_result = pass +expected_ciphertext = dee3cb7f92c8c7b79465a085e92d8061c7234ed5c76ea7548e220737a13fc67d46246d0331fc32d43b0094935c1e709f03f0d40d9f4fefd86aae871ad7bf783e8a8fdd6c690a71901970b882861591ff94792fd0bb16c04a6d5cacf617032f4efb3d032254cd04bc5b8b209c5a1eb3257bfb36e986dd6824ed046852b56f821e931973aff63ffcc586892c58e854705935c44f614dcaac0aff6b78a6aa36ee7914548c9c1413e8b90ab7bfdcde7c5d7c2619394e2dc8508346c187d051683299c041154c3e75939d94afdf3e76676d3acd2cb4de8bd4b6094249ce63155c87c561396dcc300c699e87422df2c8201196b4f320c422b6239e072f6a1ad5dd518298dd0ccaf2da7093a65272b3eddae908fb36e23c00a49d924787210ea21342e014dbf9a335b15c62cbc5c214d27c17a2b6d1c185d5bcd7cf15ebe4a8212e97ac11008ad0e645cc02ce0c7b313f672efc67776516959bec21b66c9a226d95c9dee529990fcbdc8df96b044998b3f1da1ed732e2301f180d0c419a8b95bc6584440bf4fe30b305023570eb91b16dd67c432b0f7dacf63722937bcb45655fe7445abf8ce2c946c03c4c5fe2274a7231df907a5900a3ee0f36bb2009eb4abba41d4f6c372ed7e825d99e0fba3ffef67cd52df38bd2a9588198d9be63cc980e909b978516a25e63302958e3328c10fb61375fa9c218b572b880b13966a8c483ee5967b22cf7dd7f8365e765c71e8f4bd57e70b17c8b79bf259d517826f2780adaf3b8e7774f3d9122809dea47ecb9118671e068b9c9a10cfda0b2a8f61349f0dcf623aabe70a5421427511e48c45e71553072909b8156722be3b301e421e8f9413fef0efb157845c54a593e0e7e37027b47508ba12a75f340a566a4b984226a086497cbf79dcab6611e0a684cf238d7e26c1114829b1e360de4bfe688f7405e5dd46dc3a31ae538d2177b17ec6393c1e973f69ddbfe3a465ab22fd2d2dc3035fe53983c807edceea2c7d157af345cd87c504983502c9d8b52fa86a7fbdb748cd94faa0734b6a0231a1dfa1a36447ae3a27ac1b9d39c0d65b7ea0d8c21ca23d491c7bd64c8c4495fc90247cb5e1a539657e8dda18dac206efc7cb8403d3f9223e800ff2c961321ec5ef918b6f2bf959121cdc940056d06d88910cf622fe70a5af489a069e58277305d9342c05f403ca9fa9df2a80d6dacbd00a6e622043c7f0038da2ca9b49e011bc73df548564e3f55ece3897bbdc95142857aef3f31296699671ade99deb866b55d738e23bfde2ca6d9c2f783d0f1246c3dec26ce19e4b176fbdabf19157a83d308a9e93f65c285c494f4d48b736fbad129c8ed1e12e5174cb49814e1b53ff6e1265e7ef6bd00c969c6a56bd34e4af851a40399a749c4c8f939c43bff06878c7dd80612b0c3cf6afe9c8392ff4ce10ea9ac601523e56f7610d23cacd60609bebfc37b9a063377439d307db2c14d19ea22f19141e80e994d988710045b536762773c12fc42da4f1f9506a38b9003d2eca9a4b971822ebd45bc52425e +expected_shared_secret = 79fcd201101e7e277c1b6cdc4475d63ea1dbc42ab94cf873bf0163c2aab0b5ff + +comment = Official test vector 10, seed: "980d0ba7c8f8b23d0e948a6029ff2659810ea1360064663a8994d0333c8543ee5ff5d6d5c9acf446e61dc464f792b9d3" +entropy = dca92dbec9b260dd97e8886f876862d6effc3b91fcf3fbc986cf56ab93ae79a2 +public_key = c4a90087866b29244c3641310e94b8311a1303465975649288713e79ca67a9085c8f7449c0bb9a6ab196245b0da028cc1765a8ba0501d5e360cb3064e11554f3fc2914f1260509073b67b4a0570d7f708ca7c435ea987762f2a5a23cae53907fc9db26942136d72202d0a0bb10b65d422091abaa1c21d152dad59c25d20c016237634741def8ca26b9cce3097ffd896f1bf08300282fcb7000c7e1956673223902ae5b43bc63b6806c469a4ebb8bd34b057b375e725b07ee856fcc0453379b96f89888d21a7bd5ec91f837b90a2c334a97ad70d87bdcc12892d588d06655f6103e033547cf5933ec237b21b2956e5921cf10a0c55a70e4a24a57b93f6fcaab2a44bb079987eba57223b4b9deb60ec6464faa4058283b8cba6956c792ae8ff9184e93c2e2152823c15412c102518462c2691db1c64412eb1ec6d75d47c82fc5a9214670b3297067e30c6d9ce0cf3eb314cc1a4cf35342ae419513ec2bd47182c4ea52626a56f7831dbdc5719f532a5a421a7bd5a115c2195d0532e7c1c0ffe40166404137a5b45d7b2cd31752e1646588021508293fb881123f61034318700eeac429500905179b283162ed0b69590541eba0848decc94bd18c888170a4c030a89305fe97a2b0292390a3b1fd6aa22909cf0134a2754728b6fb5180276b7d65c2fd530b4ff48cc7c7093dfc2b418b97762c42bb0980c7f41d9651c69387173a6718038010f50b79b233187bc3a0f7c770e50abc62e8acbe297c58c58055387bc7711473d81ca97b6a6e6504870c0de1d806e3603ed0b04d01dc62529434014c5068c3ab3d4a909a079947127a8a2746cc8126f0212e21a0318ef273d5e0be16253848413c5cea22853c6e63b675cfac1d6590004a2bb3bb4974e79aca0dd927607a71d4b4c9980a86e5a2b5a84bcd2e694190491060411b332aa7e7766a4c693b00eb9d68f34e5b0564de24377d3a6d45f72d82ec24fb268537c07b81aa79b5b28ef5a657e0f8b6b2f3a4279abcf06ca2a79401312943d1d1086d91b1ad3030d0c0bb21806cb87b56ed391e6bc6aad974034664b4902336d6e45a7449cb656207d59367f2b142746636e44726f111603b28670f47113d28ce6bb11f464b181cb3205febc13cc70d3fb35924a641a1117df5cb65fd9a69c71bb800fc22a6bc47e52756c23533a3a494733b74d9689d64a849d048a2ffaa62b24ba53cc76ce8489d7515834ad3a2ea920e4f2275f4f7bb361866647c04c573bf47e6b54cd31810c7814ab5cd27da1905fc5976286b781787d2db606c036a2616af7946935713ce2c7ac3fc4972abaa2229c4c294e7a70f97bb6d119be54553eebab1c80c8da7459258e44a234357a1c9cc46412794116123d21db27455063672245460ebc8b6b1116b34f2401169ace16a514534154e798ae3155809b651ca963f854ba501407920765a14f826dcfa4bc4f21766b05bceac55e6854f1ad080d9b2538848a8dc7857f10c4c843c46b172adece3707e01c03059313bb96bb144996b127a16006db4063ca1251f550836e167adea545b3a0c55c0ac5de3fcab6e8242c2c5c09313646117a95ef46536dc74d869301335a2f9040484fb0c9cb85a3d034d55b03c66725d000c47537e0d5ae249eb884b67dadb110119f1d0a5ea38cdf9f2e0e27c75a43a +expected_result = pass +expected_ciphertext = cb8021857be83d6c14856fa999c0296939540b44fa0973d41de5a98a7b8ef1bfafcb9b16885d777ac157f018f00899c739a8dea7feac36c5dc8402456f565488495f4c236456f7775424bfe331013dd60a242d436dc354b06f76a46e23f7ccf3cc398ca8b041f2591245a15452248d193474589b275e1a7f1a9ac3c7bb651bb17e5c4bc116d976dc447565a29497effea01ccb07220b45919790aa8be2f63dde259aef47f135456803471932046a51b0ca0a0b0418f989373d780f865f890ca055eb1bde17bcf131a956be72249d4155d35b2fd4ad28a59540d7334ec453e19561697797758c413829c46c9487a35024c67dd2bfc3cbfb2b35e556c1a271b6455ed7b9ad266a3b246ebbee224616f23cf9aa8ccfcbe019847ec34ede915970f2b7976446133c1862f961f4f059ffc9f722f6d267929819545a9fbeb6f03465339234e98cb6629aaa06a40d6159a94aec36f39b71bf0d3bb8ac93f9df0c8043e9f9cf17e78066a57c5d10d2d27dd9c0a8948275b14c82bbaf7d8451aaeaddc8eb2ee2c768d2d19d590c1be7af7ba30bee182b3de636125c9dcd80d4c64624d2c458cfa5f30fff16d99c97001404d6c64c5fa89bd225abd0a647fe92a0d004f270b7dc84a88e35892abd37a3321396815a63d1305a9dc7e495b592dd80046c82c13347395a6a92dfdbfd8fe1f7634b472f266e603209df3ba334bb0c68cdbd6d6724b32452938ea0dce4c3a6596638b0916865566586cebae4c0ee3ec36c782ebbb85e583c108436852d4545073774b2177de52f9610f7d778d7eb6d2382455965ab5b3ce9816d0995247945c31c9ff479587a9f60058d0867d5bd7ac12a3ad9dc581eaf7e4c5766829f7f8e2935bd1bc159b5e27f827c85bacb41f2ef5ff75666308c6a28765d6f2b261805bce28c6ed48cbe20a0945b31f59826be0742c711054a2623abecf9245fc34bf6c3b5e8f2f66114af277812c773f0470da69d10006e2dd44180713eef89307c3ce79a877ed3cf6f63acd681cff64647a3c08ff5a0c4fbf7c8a80b4bc3336948bffabd460dfd548c62e6167a24e841f13e1b0a868bc20e9ee55f9d89c44f58912cf23333a9b04e3bd813a0d2c61d0d087c9bc2783476dea746ebaa805de06eea87e7c50a20f1518bf6bcddf09f635bc1145932b4b323c4614882277130315ca6e5e3cce1f937de71e39505235f0ebd8e6482a2845ead61224bd8d84398d8816b31a0b178e95c0ba50f9757670e2d23df3475ebe38b6e53d8e95884fd60c38b3502a762f6ff5078188426a87c6502ac7251110f29e16bea769b1ba2bb27458dcaa225ee7e35397d3bd8c2b82401584b666fad035b2b99cc6d518ba1df7918464eba094d8297254c2e804aa06c00191af19acc9139728de08f19689a2507430b6e2597b1e5284815fb60273d80c48d2d4c934d813c0e1bbcc35b855e09ddae9f97111fa3d1f12cf449784012170e594f6e74d0646691a09a6f8956b815d9e3fa6265036ab2aca4ab450a62645155fa81ef4efa44682696 +expected_shared_secret = 6c4484b6d7b0a376f52abb1811c712368a9f34bd108ffe7ca31c36a6ec8140f3 + +comment = Official test vector 11, seed: "6c029462ca42ed520f10a579f52687101105e0b90c6e7bfa582a4c112b579d5ad0a0abd38f72abcfdcaaf5893a112bdc" +entropy = 57c170e691d7a914a901b9a11c62b8b569b3806427557a9dbac9faa720ec3641 +public_key = e9718a491b3262d206be72a9ceb000e81b6be6668d14a124bb49be524abb09b91942a60ed38b1974e36376a7724ddc7e5a993ea9c25f40b80c766cc57e807bd5932603403458b84703ca58f8e57c451227128654df4537fce6a57bd1bd6fd8c5be1135b2c82cbfa4b96d577575406f92538034d22d6198a9cd000fc8dc8988f95608c1974c4359ada14f7dd4870c63bf79886ab2d4cad1c89a8fe232fc1c8c515b7d2aa9cc35759ef583244ea767916478f8415fdf7b1cf85a80f4d6960298b977a7abf380709ef904c1706ee3f51abf415028321e4fc79fb2e15454c47b3572bc09c62c0dc466efaa759f116e8ba4717f91220f125656ba7c52338ab1facb0fa6a75ce61f3135911d5714fcda7a5a271205547018cc0607c5aa7104a4a77266c0525579f054ecc6c62522068e79352ae7a1c3265413459939764a4421caa937c8f9b2b276a2c77ce7814fe9034783b8aec29881e2563a63780cbabbcbe72501d68f1b72c6ef3c5d84a4bd7cf4a84686682fe36a151bcb3bb76ce5fa67ae545c9621bed149be06aa2e72f72d1b24b086836b525915b93a49d90cb3c45877c54204a605cc27f1828de6ca1e95056938a6c9651eb3b4a9b09c5aa9fc4401215d9ea9015a996f9a7b898cea466ca14f0065a5b1f374d422b4a277a011f3b3e8143b053507bee829e582528dcb3c9e950f39d17ad0a849c701779d070e34cc606c84a596650b7776a468659344446bc19186b43cbf042516a7b133065393c83b85313c53b71a5bc4421a91694beeb39760806d3b910aa8ea546f53763b656c99ea50a179986dc3786a554b819317fb58564dd69428bb1d7bc45a642a8ab9cc013f932a67222d1fd42b455930b8147d6175c66330217246c400c4b619b922182101b2d8165f93bee58757c14cbfc958552137b904009fcf845321841f8648b8f9e58d1572119b11cbcd59480246a46e255adcc1649817a052736ed9c18a262c36f7c37918db789ab177ed39add0850a509319888073b54bc3ed81000c780fc87ac5c302235a959b1164b491001b92811d4aa76876065e841b276a27b868822fd1da7c3fd1831d88c9f5d891ff610caf264fbc9280b8d4085251774ee20c23576ace6215b3eb8c1610ca2405115e89421418a7610c05bb526ffa39918e9558c6cb2618a612b6d38bf8a2569b4c3ae902a4ac744ed4bca8ed783c4eba450470aef5ec5370b87daa419145298170d64caafc2eda7c989645b9285a3fbd16c16e0c1e3fe085a6bc05248426ef106e7f6012e80882682660cd05ce49520785ea66325078f9a91e5ffc3ba0833de333326fecbcd8878f286064cd1b672f210133e30d106c61af9a75a7fc64fb5b1e1a1649fab356c0f26b9062c5dceaa7cee502c750a93187a21c11b1b7fcaa45f8b857d38e18287b1e878c7ee59e07966f3619bee70253d77065c02926bfd9b031260b5af95846573ad09c42573c8338609fd3e5c0b50092b17a83128a4a9f1a6a232252884504846b3b7df82981dbb036f6a57c5c19136789af9690a978145ea6adb74132ec55840965083f388877a93fc01b006fe4cde4012a1814b327a12cca8991cd18027f4485b4025b5583747fbb37916585261abfea163b617347acaf453ae235166cdd8afbffdaaab9919f0cffdc75d8796fcc28 +expected_result = pass +expected_ciphertext = db57de9e2cfc65b4ad9d944d6b8968d8ef73839c55b96a77ede1793f2b8ed9c8bfb6e3e711e0f947d7789c97960b9598ace9109d603c97474b5829a5729fcb19d2232f5f02ddd2c7b7bee5cdb042d2e255f986b3f6c16666a223e49b0316028bad8416082fd7e837f208ab21fe97d884d05b8bebf05c206006f6c94527398a204377051e15d2115a998faee7dfaf49be6dfd6e3288226106f25f2cd89c576dc74bce95538594b6a72e1a0f422d6f8c49c5a5eecff37d2ac8d86e94a65e6d95a1c421b83719b30cbc8a39fd82fb21ee981a2bf86dd6cb0a964b1fd408d086a86bb2fab39dab3bfa25137f7963e94ebc54dd93148316ef1c6b3b9f8d7af85264c7ff14b69cec63520b5d0e4476a693545c515252f879f7a68b4b2132aadbb212a4ed8c6ca154db4ca7299fce1d218bc95b4f058d77ab04989d918e712c266417d2e9b72b2a7c128f4b06d5131f92e2fe4285fd75412326d29bd9a1cd3efe33cdc3a5f1f404831fd7fee72facb4b37d42d33a7799df32122cf349ce0d64b8be5980d4cc140ec58bf0f52f304fa035cd6e0a9edaf54ff56c9d6aedfb61fb1c4aa597bb87298403fdb140be8fe124f9a2c8070719f1a16c58b2093c645319c137c1f53cfe9c267e00502a442918121c922cb6afb3befcc19321f067a2838a0d89ecf94ec88648a64218dd2f2fd2359b31fdbbe1a616daae89f736bd2e16f05828e70e4b9c0bc610041900a29a29ec5d7f3cbc0254442686eed9ff7aef4f42958dbc30b64352b7dfa97864122a889257a5f4ed365fb13fcafc4845080a8a4607c31eef8e8a3b49a0e4b4f6de1e1d01e871c87ca0a191f69b73c2e773b64912b86406786d4c90a8fa113e298871acfb77de35138e2f68cb2bf8b26fd7d464a02d2f1664d6df49dccdcf869a8f1adefcab1f1148bdbc97855a6ebc160394164663d04205828b711e62e8accde8c89f4fe02b2f1a6701e28a364d10bbbecfac9f113a3db495d2720e096db5562259900ff6a2c6a0be74e66012ac2e7360daae5dbd3ad6825dafc23491c732e6328f40e7af2cdb78eb88f91eee5c8163fbb3f7f4b8cb8671f0d6b0317432b4caf2b6a077a712d3cbc68157a2b340e01838fab5f22a28e432713a33b18556076681ea7f43f48cb0339d360cb6f47247220e23f313959c39cbca191b1911c9939aa541cd2d95c7a56338e09f846c4d38080100e82769ab86164bdfce24e68b6be20483d761981ddd4c963862fae0e9fedf619dd7a3e8e64561c1fc4c778ebae8741cec91a4d5161ca7f975716d2bbb4f50536f11710010aff928a03118e698e2cd20edeb34da6675ba04224cab7f5a25e1b1d9252971bd79d757362363c5491d3f2b2b0b95dff046b7168501e3a25ea58334bba7e1574bbe1c77fd4f66fa424313b095ab9dab5f810f818a9bcbf31edd63980ae89bdcea8306ef416124a06041e8a2459219fb863caa7a010843b4d41fc28abb73cd610208201e5a7ad693998b19946d05c563a8dd60e706ff5c237a17d875df0522c72fdd7a +expected_shared_secret = 8554d6af350f13471cfd45c23882e43dc81d8a094f6299e2ad33ef4c01a32058 + +comment = Official test vector 12, seed: "db00120937570d62331f4c3f19a10465231eff46465cdee336a0d46aa1e7493df80f18617f9ffd0476cf7784a403ef4f" +entropy = 6b5a14e1473abf5a33d44975ca2088bd8fa6fddcb3f80e8fd5c45b9d90c24a5c +public_key = 14345d52853184aaab60195152259d9b643d864c4ec5fc4978c657c3365ea81212eb91339aaa4bfa87a197a04d46a7b666837f55db6f16c095db449e9baa879ae14016ea4f8ba975da26cfcf59401237accb908efd17146e9439b1473bafa07703f2932d5c598276b59b419402d681d87111f70c20d2710e10a407634ab216907d7363af0bc4647dba208f9c6744d71a8a1c1a99082a3bd8a843e4ce581412f04877edb1709d1a9623c3c428eb111a1189073c9a3d34ad16aa1f1551a07e6880147360e60888ddd5b0956036951021af4699c96382cc0c16b3f0b960135391c6692b0c556a5b9ad2f8a5ed0cb0baea2406868ac6f7a5a44b722721535e098fe832c9af148ae027604c47ce4d3214a1bc974675289ac7bfb9a644db30235a664417c57a8a46a86e18a10f81b87f4b4727f7234017088f447f28680b0600ad1dd672f0ea19e38a39fcf964cccc64528c97fa474ef3aa6777676b3db443d0a2042c744555049c48b2bc2577738a698bc58910f55b0ede555b171838f6086ca365aed981aa5354561411990707bd3305cf4d10161fd3124156691daa5cf3795653e2aee1c4ba021b0edd0809b14905e46c2cd0bb1e165c8aa428b180ea394e6c92bd6873e12328e5e1916c94c81393172df3815127b937b9646a783524671fbd8b5f01395178c6a9ff42c47d8b25fb37a2d1da975f69c7a8286504faaa6ad5b05307c2d20b4f27640fe59b1ef407110a317cd72023828192b131cb9af96899a69b0f51125b2828f29493a997a33023661bb7811c4593e4e579f8b17d0cbb6037d9273932af4eb235f7d01dd398b70752a925968adbf56cf132b85680abffb937c35425c244345e805bdb608cb0666984775ac1852690908cf2a60214f6a888004aa41a44831537e55a5dfae7b2a4448fe6c562ea66764dfb5fa508b6738c4f52f10d4a852d38f5354981cdfb7a851a675c5a01c2fbe886192582d1f08ab37753bbd81ba6d848949731c99ba92278a2833cc11ac3bf603512bd6557f9684eb980c7588424db0c1e2bb2bd09196a7da29d79208da50c4a0c839284a44d8861706e991edd099e0b1467b88948c89778787c26dd4436fbc4bfd12b0acc00ab4d85b613bba4f928bbfcb04e2eaa51b81845c3a710bbc8458027a4f055061d0b39ad28482646aebc5458d0e70d396c99a0b456837376110488f49a83f48372327467ab87870d11b3c1e6c112ab3d6d486a99bc2b9b368a0695c6c6251d6bea5b56fcb96fc23475719b8cc82806875cad772e4716332ffb02189438e27097e565159e4b1790558273ca887fca2a6e7226c53879adbbc07ac1072e6aafdd2a1dd89677842041f33c447204a3fb91c1e4935111ac739cdc9fd6f2ba8c0c66dff5552f3b2bdfdb19d4f65cb3b23777292cf97cc54bfbc41ed041e53318386173d229b9288c5d68e87d0ce2032d481c46b646ef71940d97af370732533260c6ac943272866bb2bc90ec64424c67b1c877f5d2b35c39656957bbe40c53ed88c4124764b726a5e24aba7b0c866a52385c85c241677f75487d4156c85db639ad741e0412438bdbceb6092fa14501fe1c5e95d90833332debc0441554a8cb5a8f7826b047882b415b78a0c2e966ac7c67b03ef5106f0a751017b67cc52a3d0e1586c74513d2b5f13260 +expected_result = pass +expected_ciphertext = 434defffdadd10d9567ff7de185a5081952e909d1a43b163483f8cbffb19f07b20cc3152c39709c3769e3152a3870edffc8dd78d5c9e26622d7b6c7aa341c60a5966b69c71265d8881fb94d9e13efb08d0a738b857cec7fdb63d016c025fb66e1cf8ba31961f56ac47871c7598b4cd2679fd7ca0ede0805c76a6f5564ce1bd748559f3db064e1da38f33cbe9c993c7cd1476472b4ca2075666380535d70176864275e438a543766ed89727cdaa4da0fcb36d948618a935ce49fce7148836b35d80f9885e82470f3ea9e321783047b136ab25f3cec80fa385f81722c0b02e924b7906ddabad71b8607353669aa8e3ab3826e895cc43b55aaccff387b7edfd035d39918738dfa7930b4dc7be3b3103552898c590ceebf0660db1b9d1fff96e339bd7845d6542418ce34208e662cf2c18104971673789c1c429aed0f0212868a808a5d6bd5152040285b8e7f5294df6db7129061c22e16595c57a45deca829ea1fefc4e9fe7d25a7bd5d17981bc9212eabb58a6ba17231753571f6f7f2e1efcca7b8e8db179a774da3d2994be50f8a32dc18bbcf606f73b1f72e5f36286ec13b576a013786b5af3621473719a2e069c0e59b1de69973ec0ab482a0d34c0bd4e815df2c36bf79c5e2bcb511043bc4e6802e7fdb358c5994537dd9a6e5535e281627a0a40576befe4d863e1b645585e0935f3cada9e64303effb1e5d8be5418db1fb76d1784aa7b56c2825f970e221e8c8d6b6f43e8b80f03acbedcc4224da3942016668fda692383178faa7328ca7aca8be1c4bc9ef50bcf209289eb47abd34402a7d1e21c9ff6871a3b7f603d77e08ef58853aa0db5789bca441c50ecf6b01726b8cca5656705fd2c670a8fbaac44be77fd6b60c863873dcba0b5d883667f37cdf979ca1a098cf05421ad841ae88d5c235141104b32c1075c5c9b03ee60a33415f3863e0894eb112046790ae65b8a6606c2a295f1d91e32dd37a42ce0fc5be9457fca8babe3bfe142c9abd48df57a848ca966930c1372e68e939e9b75e72d52d6a2babe0992720f3a3452176e13619ab4057a3141aa1fcc82ab50d470b31a9beffc5a57597de1415998a9e5806ea9bc5df191624432543d86c2ba247cb78ab4b6f73afbd5533041b30ac9e2a5c2221721330bbe258a84ef5e9d5a14645cdcded23af731bc9071c66a21c7dc36593173ac63d818965d835d572ca8f6562c048773321f2a546082f4f0bb479c32b5fd6008d417debd9ed9c36c15ac9ff3d990f89e5f26bec912103b5b3ced9193cee7712c6442463cf60c7e613d1215594a2086d3695db7a5f0ebd6bc953a2c388e4866a0c54770cdc3342986beb6591953bf6d0d7ec07b975d01076513d5cda1bcfeea1852ccdf15660a73585a254ef9df4199ec11c30d04935d299908aa92ac5c3a2a549ef139dd061f80f8330a92b52439bc512804b2bb75d1233f6ef04625db0e621f4d817489c34c90b99837eef09fae7484f801a97f21ce732e7f1352429e00420474936f73188eba2000465bd8961f393c87 +expected_shared_secret = f9646f73de3d93d8e5dc5beeaa65a30d8f3a1f8d6392190ee66ff28693fbadfa + +comment = Official test vector 13, seed: "bd26c0b9a33e3b9b4c5d7ea32d5bd1fc371015be163c86f584e49bfd5362c8d8341161cd1308115b2a03b7e5eaddd418" +entropy = 40e593754e6eddb7f9cf176ba2d5fd1087c90ad377556d0b0f686537b1a3165e +public_key = 8bd98be4597242c95c9641b194a093a928b8d3b30f33c10ba326943a8b704c09a6dfa55f700c488c38a3334716cceb6585008a853162e40a544c0a16878328f47c4e67b5aad276a2dec4c320047e2eab345cc14982b96d1d13566da409e93072377a1729546117a04ce291a2090b60030a35d5b360f9f871cad52f37e63954da0e0a8675abcc3717972f89469978730607293267cac89e3c96a98576c2351d8756429722a1278a173a75114baa4f0eec6a12b09cafdc99fee2c1af7acdae3c747b94b06517464f654adae25888a15cb4c5017076c9d3fac3b1560dd9112d88b2bcf31b15ac420fe5a698d52ab41ef33fa6ca8d8cb9b94d58648f39a138974e8016a972308c7b040d2fa32bfd1096503a3a0e84b9941188a6720e06e6641b896d365190369766995826b72122d780477581bd69b348bb6c5c8f65b4d84ac3f0768ef6645e422b3ed7e38d0a423409c285d0e21bbca97be6707557bb0027e755f9a81912d04b9ebb374bd79411b2c283068670431f2de58d346bb525d192f128c9316742115275e9214def7a61da509b5848013b304216f783d77c3f57b76fb8dc984f05ab557709dae4691b519c44d41813e4b61e6664af5c970ae7a810714217745af087bb00575b18081921a854b7d953e29cb1de704e6578283292168ea73a03e2082b8b641c819649270011861a7b301dcef74e9b116a86f717e30ba6c5398e34390072e20c82f570fcfaa2bd8847a7187052e6b9d0d9bc9fec0217373bcc7b8d38245e40a1597077bb00a408e9eb2bb451c31a746d2aa07fd6432cf176382b6665d45343cf32731817023ee046577abc342bbe25416daee417f2971a8ed4c839126e996a8db40a55bd424c0e534cab677fa1c6b692d2b7e322a331305f75289a1ed102ed604722737e76501c7e7acc69842d6ffb2d31d1003c3b3bd8f4458d93b0270cba21db21a7d16e22e18584e68ea5b890ee839de75b68d60b25d5452bbb91658f3220aaab200ee7a8f070a5b5aa7fa30a768275970012324fe01910e8647945ae6f8b3a17d08e5c36af468a7f6308751c4141439b567eab03d72538ddf71debd2aec5db13537a2b0130b4c2f6662182bd08eb750eb681fce77981a3012102c45642bb8a44ad5cb27cda8369ec28190f64987eb600101aceae7a807158cc8100555a82644b3b513d7cb283a363c70a4ea090241c8a96ac562e7fb3c38f3515c3a68fecb271713729fb77a1a68695fcf995855749c1f0ae09f90741ec332e7602cadb69e55438b9d8ccc213119627410488145777907d280ddb7391d2ec9f27371277c266bb1b14f6eb8d46b2c8bccb0c68f3beb2d87b07044904d5b08e84305b0686f923985a49acdcb1a662d1a08948c9b8d95883518d0ad3933976c464a41c18351216d84066d71164a32d41886a153703c584b747555eefe8309f0810d49c0df8c5512b245f637c9448c47e1456995e922460b8210c7ac1063047c3764077288a1345c23ee0c8fa6865fdd52acb49614207285d241c14114db55cc0c92049f3537abff81b8a30a02e5ab013741b36d92191691b3197cce8d2328bbb6ff61932434899ae01412b231b0efa18d8381555866091c77981e753f8a2b95e8095765ef7a13bd38f9fed3bf36477916cb802690a213c83f6624a067a5e2c +expected_result = pass +expected_ciphertext = a07bccd6a1000b2d0f27be9021ff90c945731a7f45e8565550bd4196b7fd1b3fc4265aecf0714bec8fff9975ea86b40eed6befb80819936d437df6f83dd6d00d36692ea2c69ca0c93544e3ec86bbd6e24b12e7985e7bd89cbab9cc0167091270095529280eb6520545c07a7d76c99eb452e3fd596ac1c493e05aee285aeb22767bf7482feb0083147361198bab22b7a9b90051c42618443e621761a0e4bbf5444e23aaaa99ddd344dc738a81b1900e546d008c9e51c5a28da10309e35d40415b35fa9823364a0da0a5204a8c67e073128ebe2ae9f82dee1a91753ccdfce4247d9a3620545a8c4b5c5b1e55eecc4e9cd4338b912f5316f206ad53ba83adb62023c6d220fdcd573dfcfccff31616b50182a4f5fa42ac71b2ed506eb260f69b183d0dfb43f9e47fbfefbcc43d5704b7d4e303671dfebb03c83c79b3f7dfa0af964dcbc2edceef8821be9926ed353b9760c1d42552fbb8bc55d793a795bfd380e4616b3384bb6ac4c0dd9b73918c17a7b208138022a2835b5b0f1b8d79f186dbbf4a53300d70a18f3a0a8c3f3a8f57911d9958e5350d835bb4253b4c720675f81188480b62059d7af0935b81ca49313e49dbc2e5ace73cad23d8579218686ce283549e2f39b712dd7570aea5ebeb2fc0896501a39203769b41aa931876a2641f36136b82b53101e0868f000adcaa5157544fd010faa592cbef477f12149e0e45754bc25d66c0cf845cbc78b6bf3f52e6fdcf9e7932eb05f1eadd9e1a8d6640aaf34fc0da9cf0f64ae8398ea5ab0caad93648672d084d27a5e8f036b7390616df5a8536f1260ccbd3b8810f070149df4ba40ddc9633e7c1ac97da236c4269bda5b4a31cc39c5e1c1f2928ae140e67baee27fa30ff122fc431091558d52951b1041772439fe52a867df5c34a5d407249782a2ce947475a59d21463461a556f670801903a194cf4c55e7e2e570f89c93bbbd2e0ea1097c7d971b41c85a2fb20159b6271ce2a8feb0fcae0eb5f5c7ddf1482f6ccc35ebedacf47e67fc63581f79aecbb95d050edba235543e0c9f90a26572674f00b331226d1e00795d0323c331de978bad64cbeb8de9fbc2cecce265b7e8c85d0f334cace439e27f320cc8b475758e6fb4a1eda0021447ed963c8952c6635e6f3e5ad1372e3d4c6ea668434f5a00a9022dc3af451b0b0c8a4d9c705c9e837ada61d85eeaeaecc43f4cc3b0ba795dd712a943b09a5682a25f4a6089df5885c9a3a7e8789419753306134c46c3f6da5c68ffac355a4b8aa0a1708c7f5b66fa9f5c5cb3b4d9eea2ed038253124c3c14f572ac43fd6b817ca6211f0210a3d96e72e38cd415cfd525425536809b6d590b3da32a8c3e87c649896b1d81de6622cee43b5fa022e2bc6a378b4fa6f421f79ba8d6630afed853530d5f3b2d9341e6ce5b16da3c919f8bff21192fa4c3b0b4eb7187e453f0c3437c7407912902fb8d3a85584ec961fe7094d606719ccd89128f636119ed9ddcffbfe1d2c2296036d870fe0903b81446c6cc444bfd20548bdfe8007d4 +expected_shared_secret = 1ee252e97b69445f7f109187645cd2879f55e10eb8361ab43b3492ff51f01815 + +comment = Official test vector 14, seed: "e2819ef86853bca1b9dee7ee1c1619988964f9a913e635aacf0d96ca6e0300d084329dabd8f149e24176d22757404260" +entropy = c152523abd8248bed40c3827bcf0f8e8127037a55c780695e2c28ea3e041a44c +public_key = a6bb3b93c181b651918a25235e22779cf052e1d30e6852557ca32aaf841834b423a9e61cc24b5231d7590f863e814aa19f123c0cba97cb3773740871ac23868731748355a85f03b275b3273486142153be4920bc9ee77ab5c05d2b96228906586ec831ebe8cf6f9bac3631b7cc904dfc768b1a717274b33f70d08b6a79c4aec3597e1c9664c9472b6c100c1601f27bc0aed37152e20b327b5d32646f2980bd780c8f476715ac04bf1e03c2d4a31da23b14dc0233c1a2c2d983627bbc845f023e349ca59626a99eeba5dcc12e8b82076ef2295238667308451c2052c6f9b127778a3c656213a23dc7e25660443183298753475bcaf667a9483192c6bf553b7e50b44a84a4b881b0365fe513fc661a03689581e045d2f921444c6a76e6344ed8a335b6681ccbc7b42b50b9b03558c64da65088f60b136882012135a8a659355503918ba25da1c167b9fb9f771b5727493c921338c1acccefa80201039d28c968aa3a40c2a28835f63bde23b9722a245ee3c859997f45e10a11f1906c1485b0b51093f51819963393a692ecdb1dda2c88a6133f69f401b124cad796217c818152a528f7d073bfcb9eaccc6cc8825ac4612533126c1ccc736db53f648201ff29a6c3f77b41e01de2087986f237200014e5fa540735513400004b5925cf64b0ffe9575e27ac19ac5644f355231bcdd70348c4507c80780f1d51abf6ac4c5e2957a94325a3f64e83a0a192516f6cbb40b8abba5f8b85bf2aa60e44b46585bf009a723fe1a44fc97543f269f670c593935bdf87a52a1a31cd2b9ad92807407b5851b49eb1a2318611cacaa7710b6764a7e57f8962bc3fc483a8393640e602ca55526eb1be56f2c61ce802b9592f24c14aaa75aa4b002ac9b81fc1327b2a93aa889c9eb178bebdc91579ca7bd30796cc324447892558d2c052308946a451ca49816c06aad39603dd3841ef03ccc1075df164739feb342adcce87aa12f550200ce94765eb4f291a5152941b4eeaba91c3a59257c03017c0b7e0003b07657ba60b4256a8a4b205d7646813246385b348ec157dc6eb3be4546d7eb85c29512840018968743d2ce147f071c8f96c7436596337d69f5074485bf4a288833f2855787f8a18d874c5a2a41422157f65b62b5e581c2181a7023698fdc1ac60a8340a34b29f81b03dc35da2b453fa61293070b1c6db57f3040c3af7766c69b84d624dba1163feb0c71fab6582473f93c8753d67b0259a2eee1c847b1b8a73455a74fa10c3a4c21a35ad20fc36d563be9bc55350f565e4076670f0c77b3c4aa2a06f7bf2ad1bfc4fc8721618454d640189a6f8b3d6c71086dba68b213f4c51100a6037e717147893cdae20a97759204b2c684d8206fdcb10df575799aaa3de388cead4446dcba8e14368f7202520c71e453b41cce426be6c1e29ac475c45742ddacf7c520da15780a9056183900559129e5e3cbb3feaa288b25b6fc69bb8b164c1db8e24391172a8c23859545e98a13725130e45c3d1cbb5d6f5c0dc275608163916013e6e466c29502902c97d3bc33dd006abaaf2aacc40c046e55951d744e31887155a3fa880058a8767b35684445982767c697540ce339a0f4c29c2ae42b5dac5047c12c22bcc155a63a8610db945708cb5425ce0c3c651532a43d32473f236519d54fdfe0a815d +expected_result = pass +expected_ciphertext = e3305af051f2b2d4d411b8846aea1fd866b2e9f2fb4c92c7d70a7c31515dcc9b9b5795d7c1716dee295b1b92703315bcf4a5506b70eecffa872a1c94585d978bf2b610a464499f36e58526a1ea99aadfd0f18ffa916134cdde7b857e72e8440c33de1187032280cb1b9cc7facd37abf84df7fb60b2bddf242dbbe89ba881d4b4a4bae19d706cd24d3dddf19e6619a0db6cfc5311c5f917dbc9eca99fdceb6f240144bca0697c2dc759446abf52f4a960afb3dab2a28c9922f29ad0c93a24b3f276138a980e7c6fe6d4dd349aa4254fa950ccf1ca5b177eb10c13a795ccbfb9b866b6c1d1a7b92e680728f45be3ba332d026820bf1f3b22ae9360d9a80ef9412194c1801838e2eb7467855bae54063ffb4a173796ee577769859812985ed1a0779a1b44b31bee787d6c894f475d1975bcc5b956201fa8029c1a50579893084874099c5d9ca37b33c24e08dfb45ad8c3533161feabf9290666218010de638757d46d8f36da00eb73f88d363382e3c99773c34f925d95da1486be5fa085e6670f34c6ad07453f21b3509bbd1eba6d16d2ca83b7942731a99766ae98f1a16df4a8d9a6c44d4c9c026f0232aa8219f37eaa2764945db0a57ce9700c3fa57849e8dc7848425b7538267b749c1474ca6f9ede161bdf7614f8384438250d13bd9fb3b86475de88bad4ba9cab85e94e3ee8c5f6a17867fae42353de0eb6807abb0180261ba13b5c28f3374427d9b70a49cafe4fe60ccd4264322f313173759383a3fbab05e002fce19a98ca8e8d112ef35fda07636fa8a23b4806497efba14e91608b92a737756d921ee5895c36aab80f5b863ce28ffac7fb55534a7643e27707c6caefeba5a60388f185e2477a66ee285dbba5ca77d79c4f7a10d40dd61e9e161f42d9c8674e3a5fb00dd22483466ef309474ad64850a13ab5e9bfef7df441adce7d678639fe4cdd49d58d23d722ec96127af9819e392f158a0b3d7f69e872349ed4eb81162529f8767a345d00e9588e8238d1fc25722ff23240202d7b1039b2b18eb14ae2da455be3851466ace03d27fafe35f5b676565c4a259634d24593efbbb13a9225f3233340cf8c3cc3504bb43158a57de9307554189d30936d5a9399aa71739074d5d487d7c69c3daaa10e40f6007668e76a7a3013bb6a7ca94cf668847996a7a496e839821cfa586254e21c3c04e3d40f730847b8aa60f4cb1e028899f4915114bec79d17501f8369c7c5b0a16cc0bdaf10a9dd18245ae33b55ab86391cb027a7129713cd130e7327639a7afca5f2d291b1f36069ff0b78979157c938619dfba02c24ca90486ce306d552d512e1a6fcf3f388647232fb0ad4feb4d3c9236e23a53962dd1118dbfe5f4ee1e47677db5f094c3bb3845dc7d9f7922ade82528e0d68a76b9608f3028100e5cfb2a989dd0690cf3bcbea5d1a827ac63a4f14992974e5fcf00981145d40c8d0a943dec836042ef5e859b9c6c12ff19ecd8957579b43ef7960952a020a571ffed0e37f7844cf37e0932f573134bf43ca169f09cd5e69 +expected_shared_secret = 1e1ea5d6a18873c5c7fc8da79093f6d3db5b28fdd0aaa42726ad130c78e9bb88 + +comment = Official test vector 15, seed: "669c4ef8a051ce201da65fc4bc34d398ec1f806276fc5d987ad71d93bc12dc8f107b58be6e8422a0795c88cb9a0e7488" +entropy = ad6466dd59f26b762fb02b19eedf5f79964da68bce0459b91c3a6ee5a7e01183 +public_key = 8452a77401c4e343bdcbdc985b70189ea976e3d65c47649593c9cfc112a4292238302253118cab8ec52060305392e6a131f0445a0bb4e11a1a8d7465e704b3134c3807d9be9f8b2abd57a00758685392592fa0b01e116410706a669a0ec5acb524d1561a265e307c24068b12897568490458121c572c2cc43b2464f2703212641202a40b27a41fafc4b24bea9f26711f28b1050645a38757708ad607ff6763f14c15a2caadfc2bc4d23c576e5cae6a20b10cc9cf610a5931ab4c59ecbe67ea079bc3911a96b24b86a0d6b99cf85aa44094b0f6c55924776c4e1bc9cfc88a127b8195145da3515288f933da602f1a2747a6856657b2102774bc1946163b534d02a1ce2e641cd9fc7f7d48b6f643ab53045bc690a249433553845b34a5953c873c1c686c83ba46acec4e91046f9e7590196c9c24a747c6d986b4b414c223a52a6c88475405232c78ab3aae8861a45a817ebb16c3a3070b8e842527e965013244fe50907bac3883122393340b1e06728fa0400791b1dc3ba103c8aadb6cb0328b5efbc85694164d0934c207b63614cca28eca71e5f63a58604599eb6d1d248a37ebcb17335713c4c9a0500fbf893df475cf7c19792fd56fe0a7505de0158f34603e0071b2aa0bdc8a12376a1313f571d33686d505660c4bace8ea40820918e05bc15b381b90d9b31bf52e1b18c422c3935d04140170542829cdcfc883bc344606e75a2ee7af469c5a81daa1071771fff275f2358472b409b1ec31ec887fd6e76ceec6812d40ba4469b3eeb028a0a6875a19b7aca51465cc3fe78566a3eb1b98c621eb3bbda4e7beb5f2344b64013ec233fb5714bc68b767da8b60a6b0ffc8565369c19877c16d7c70f17b85f7a228d28a5936968915d026cf683c762714830c1742ab4dff789f1f43782622a070a4ab52633efc52693b695dab939bc24944733905ae86801c4577324c625159b141c5a1014a6e458b71a959001839c461e17a3ac46da47ab687d2342ff63b83d3331510c98ac484f44b7fb6a31f6926cf047982c400008bb3b0d1ebba3cb2345613680531b0708a64b937c88b2985c01a10eea22fe5022912f9ad2bc667cea16b0a091f3fa9bbb9b8c30160717b21cef9d74458241beedc215d44900cf40709f6671f221d39c804eb6756c812364df0503355b8b01102574ac3f07234bbb1b658ea822d52a452545da3544c041c3a3f89ba30005a992b432178bfba078686a07971601f8b12c22b23b69c05a89adc2469287f052a6d4f58798e10a464db4aa71ab30a94854d1b8c16893b432a8dc2859c66a168c8c5ad4d04559056c4588b0a8755013e378545b47efbe90ca97552c9b8711d3281cc7b9057f78a68a59d5aa642d1e9233de093df5705d8639d702097f0dbc98451a46905ae72d876e1243546590599fc5923b37b4cf0a3f7cb47dfe8af00f6a999127a256681a5705bf5100d7096713c49149c7c561c0783e048cc3444776bf8997671970535c2cac5360c9b53e0d952af348a28e4826db9810f07110a48771c2c9b21da3ca719c7a5407b92020aaa0180b4d6b3ae42a1c09ca38fa59d1ed02a3a0079f2e922d0b36d9795c1fa42354ca51ddc11a315515a45bc7e1e21bcd3287e18bb0ac3f8119a88d1fbce1d3419bef67b6694d9fa1bb309cc61c819176964dc +expected_result = pass +expected_ciphertext = 9ec0cd62bc32489cf014d70757b26fb83b3bbb19bc0c216f48829326dcb00b90256a7a5c4929fe9aa669803594abda4d1daec5bc98176a0cf44d66619dc04ee086b7dee5ebfec9af3d77b775d88a0d458f2a3d5f7517a98ef5a1ccc287047250d7ccf20be0154833116bcc1974534f3336441fb7e2185c08c6c79a4cb12cff37f05473a508dfdca60d774b4bfc5a52f7338648a8b2e34382c7d909ec79c620f5af5d3458985ea89c1316ecb77eeba08a0b294744601d0ffa16608c76bcec186203028c1bd5d3c285052db30ee906a2183194b790f8fb6d7a74ff6dcd25909b93bee46af942cd43defc71c7a70cc64a146f43546d03ca0ad34d8dcc4528a8f65d3f69fdceca37d78359cbd76416ee442292b3430170fd589eb8bf278df46415c740d31624fab2b73e116ab8b01f61512de5727117818598470179de87f9fd007475eee6297fae76e20df24958782bcfd4b4c3ca2e80de164b41bbf304a31edeb81906b22f9572e4411985349e826f6f2c37d5668f93e6544dab78cf8d4787c1234a04a98e8120bdd2ec23cd69f2f2bc42877091cb42cc459d5ce7a88d19dbc6b52c9783e03931d726219cee1be57fc4c4032143a7855fe1df7df26cfd815f8f67942adaed372d13c55dd90278c3f3563233cc4441a261908cc81598f1ae3812a0c312a6860a35ec0c80173aa24d7ed55732ed793fea7fcec59b3b355102fb286029d448c3ef5a39ddfda82da997782e352b089724bd7e570ea6b2314e30a3b075e37c16e289afb3c2f0eca3577ff385b9faa733fcae2ae01d84fc685676494382cb25b14d41c0861a814eff00ed266e3c3d1f9e5f6a3b11923860ae71b0e139fa3c75a93bd9bfc4286e3d432ddef5a8de2d767cb0fedc1eb5e4742aadae6585dc8c726c8c8c38eac111a3a25e008045e11668bfb48f940a567f80d6f16e03ecd19e00ce59d1aaacf598df4ea754cede6157e5f62daca54f10e8172b92f0dac2183684dd07308a5236c480e3a6a5aaa174fc0cb166897641243b6401ed5cbc31180afd3f4fab3f9246812c5a5382e00ea1cd89d67ab1c3dc80bd52070f9654cb0f9b4c9f179aceb687396cced59ee20cfac6372aa759e9423f1bd96240741bf34af940079840229a120392c6e01a37bf5c24d026c4ddacf9c4a96364dd985ef98da55ca7780d2c75ae85ae08d462e54d2f0db2138e9e373bf65896dc2967ff481cd2b0f724f0086b932f728c201463fac0ab083d4440bd967d4929b7fa19c3a5f2f9b8ab237722d9930bb0f31b932c5538725def050e680bbe4b2f92067e739897d6d860a8087af3fd4faa34d09a9d0362edb5374ed988509ce4a61245eee1c1c531e5e72b977be3992caed8a441ef8ea849ffd4fc2efa3dc9f254d582389632b29718f638a6ae13ca506f117bdd204bdc2f1c07a182b1fe44e5b0a5ee3833b8611b0da300b28aec5d798aabae37a97b76a61af12cd82b017c2e2503e9b1c56311fe79e37af0b881106764fec52e0b1724f3b371a90f225bfb1080dee64f4d45d7 +expected_shared_secret = 24619bb17c912fc992bd8272969cd5b6fd6b030122ee5af9365cac8b38e569fc + +comment = Official test vector 16, seed: "9debccfe818f6b5204db4ea09c03ec9a19dcf1629c1527685b8a29776bb1daaec45f8abf8f0adc9a8c8bd6e2df6d8048" +entropy = 1a4d5dff5847cfb48333e33bb00ca7301b144aa89dcd412ff5a3b1081d775b7f +public_key = a16730c3d8a8484295a1d995716a3bf93c7270671afb7886f397af65f5bac1b1a1a49084d1a672a1f98bca762287e90410ab01098c74869b42479c2cae5906ab354970c05cd256514f5c2e763230b6770884e7b700544977993df1f57969e0265fac4f474b76648b36f5711163638069820232b8a64f16bde83557b0540405d7987cc39069923dfa984ca4045999a77483e04fe6eb0be954a74c13cfcea79ed0d8124b01b740a26ed961b2bc496cbdc539a10b8151e0078f66751fe78d2f3a5100761c8beb514923a7b4f3ae208766fd852222dc31fc1a59a883c401459dc73468eb35af61d28ec1da147c882cc7f5ad5204bd8da270e4c91dc37baae1811cff4cbf8605bb48ac8585094327a8c17527bf5b3968aa268e152b6896a288a9722183e199f608cd7a412ca949113e87a956e4ad12737d53c3be4752533bc755f7a1c4b07661e988210ac72131b4496941893a9c6f1180ba622436eeb02f3a3a090c00b1ffd310e811a7a8b87984d275d76b0f99abbfa45cc5096a1562a375f0599d9698b18012a84a0628601c731ce1ce6824907f1b16878a75418c2fb0751202fcc988779be2326e2e5228c9493a0e628441b13d58b3c79df34b7b53c7be816cc7368f2f31c380296250b33269158c4f9706d75b3b5536adfe5b0bcf514899287b4b637bb4249db25a0413533d628597ddd745a7f5270d136763e48a517ca62e116913350e7361580cf77bcdb5b607b38d49e1581654a61ad9602f4415f484bccbd833255a29d2e76262b401f7fa5a1e68bb136771c41b29333b653602b79a2aba21004e8a257df7362163b6512eda4e1376aba1facf04d1aa56c814000d718b5b504f1b9d2e627b8a678d0294c5e3b186a67c082b90abb1c839232912c39c3e02717a65e24a185a5d96e99851eb538a4ab872148c2d7bc52ec4270f708690d0678d43c783ca194b4aaeb6f2156297355d7823e0f80890608768c65073e04e7e5b45acbb1cb6446483e7c315a0a0c2066f080a53818a4ec0e4973f630f6822a437f6684fc9431f20a306a055f9906435172699b3cd0d46457be26560f692864a97f80b493093270b5225980287f1f5711b355f9ccc018d670ed8ba64f10ba98b0068e7714074e14736087819ec2cbc960fe6939a4e9a4de2045b53e81fbb845b0e546de6b34ee9e91ecf0c9f74c569dec949d3ea11785639126bbd45137021e9670735488e46a325342a2b4a959297816d1ac731cb501d628bc09083ab5c4dafc09a36c7c70f2885a6622bb7162aa2c999927a1fb749bae280237db21418e2cec419990288b813e80765b47e4c314171b849e570c7533cc5bb77cb9f10272926c382fc0796f39924b6971fe6b54638c4cf25318e146aa02769e64c47e4da2d5264b282b32933d8c74242aa73c15875934e99d6c570572e03c54e47726e3b0416d3737a29624169778970e99de64bc2b16039ae97c7472a41c9a6c6fd45bd7738cb662505bb26a307a2cfb9680f5cac086f9bbf7799263c0b5367032196f1bd842534601094668a33bd339db59746d63ba6007887ab750f5887453e02b22c3148bf6c48c806a94cb7bf23568789a1260c87af0548c71881401c565268317756a211b6955ed03c49e0beb46c4ea9ff7be444932e61d464966bffc96bec0647ab34f2 +expected_result = pass +expected_ciphertext = 7c8e5f4f09ed554cbed6874d860af2b8fb97fc6de51e23a003338d67723b50616d0640c2e7e1492cd5251b0e4f442db191e500b3fb6d0fa76e6112f20eaf1e8f66e6634de166f2a67ace1d95366bc124129a016f6a4d669a643d9d90223b8a8829ca2314e88d76ce49a05e15121fb7116afe19dd38603e994f207e827135be71d62076b75453dcf6588b1a1c98ff2c517a4620f5d951cf06be81f28bbfcd08ff396e1a0894055bea6b7ef41a333df33e5c24cf30da5d78c5de7629cf8bf458255a3348f67127ad36d71641fc7a8bb9bf38c4706afd14e9de0fcc798c0fe35aea08343936f552a1dd7ca42d513c2896ad762fa4c0ab737d94f63330d47aecd1ea50a083f8660a797a9edb47ab2140748a610e981085f7dbe268e25e9b748dccfbdd9c312bb64f41a143a2a7f6e8d0bb7db83325747a414240e9316c2b4305940a42fbb9d5d7b3d0f593f63877d7461934a9a125d16673f288e828f17ffd75c0046564f092d47e99c59f51ce741d736cc26a35fec6d1c2ae909d6b4f4e635221139c9e6ea9f1b1135031ff694e3e12503e6315bd9abd54d0b4fbc9da7d48463e80ae57d3dfc1bbb468b206659f60772a2338f38b274ffc0d391a103e0a1a50833218d1165ea4e88f07782b1722fad72bc409feecbdf6a0bf99862af673488d3c39e9b343c35a5e6fa14b3c6893e727347bb965dbd9f8fd50b1ad0f23f7d3307f650ffdb5d8c085acdecc4c3ea7c52b1119175721f4a382b91c59c26220e40fdb57ba76f44238e1a77a062025daf823219ff117202f5f8ed2789b2b9e80bd98fcb4a4f42d006e299f190836b7e3f3a66e7ba13dadef54a2e5029bdb1d0f29318c3ad3013ce6793f5d4bf15c70cf79883b0fd455e9fb6bbaa0651d72596bf2392e38fa140cbe0f9e42f0beef0eee3263642a52f04f345c672560914e80ffa70b4f2700c8823a6c3352331690b54b3c20320a8a810f4c5f0a7eae739e343a93587846c4acdd4d93ec3e48e9c4e3728701ae9cfff5eb219cab6c50ce52ebe263bd54d29d4e785d80ee87cb4f064d2b38c3b2090329124ee0c74e4e7b7779769b14babd36396e1eeb8614b3af9f8867dc8f93c46376f8a5450a3761d6f4b7de3b4108c080e5e3c4c9628f160458774f0a1994f9ef5ba86933670c800a9f76866e38210a0e26650dcd110ad5f0f621e1c6cce1279e2c8ecfd4055d32d7b7a910eed993222cd2dc83dbfbba7d04e0121a849b545f646ed140e7afb1816982f1f2d8c6549f9d73148c5adeb3a30a9f3a459d3afbc552cb999bbdf104003955221fbdf7f6d06e9087e3c4ef49104ca51510c544b0abb048d1345c72d2c5e873555019487124998a67821f119ebf6ca973cec4e29bfb5704c92ebc7c742870e8de0f5811cff0107b168762d8051551133e3597ef4d56d50fa9333c0b5e6ace36ac36b0bac6ac16cec413f7e9d449f0ac9607b52f5a43f33921f3f226eac9eaa72ec17f0348b04a5191adb2e7571a4e1dfb11a1e2f731c124a6246d94bd253bd88296a9e60363 +expected_shared_secret = a990af801ddcf2009c82fe657fe3f068bae7e6bfc661e3e588354ba7d1b176e6 + +comment = Official test vector 17, seed: "8098ae7a92c10f707d405f7dea02c2efbef44efa132ba8aefe81bd45e543ecec74f10920ae48a40b0653d63532517f2a" +entropy = 34f44ec2092eeaf686f2ea170591a98527cbb03a4fa9477a7aef6b41a54feeb2 +public_key = ad735e9e838da63ac7a3e1cd3e574db17c2601d3927cc2a9d228a05f5c1e51a63634383ff5e03151f43c66a07be9e992aa65ca4ca17b1e021e06b261ccaa89b12a4916a5a4e39826a94c86bcba9fc7d65ff04549db70b300b1cb280b3a41e82b6c8b0a4a3c5e40eba59fd18f004ca3e4c15bedf22e099c99a3d114eb0c5988ba02873b9581107a23e54a8e51ae62375a887929f7333d4d763e23b20a246785e07700bb16c531692531433eb6a6594d1464bca7348022c1d4219cd8aa6614862c42376c3a0c4674181983f2a2ce8b7f32659ae87accab6023938592e188a3c1015e98720eacc9aa837a49c4617a850c89e1212478f3c6bba51c30a64a8a1c225274c92ea953872342a96ca3235ca7a9467be55250796126b30694f71b2f75b56d84ac89c4b635118145c7b8967de515ecc719e35804194b7ea9304636283cbf72339474ce1da00106110a596725574747dc07b3f0c7c527aca703cb23baa080bb7a4cfc1009b3e5aa89659121e365fd6cb6fd15afed70779a978b3ff50f915b6c16a350141721efd61085189c3265530c1a17491b317031b4e4667eb8314ad34cb7daa50566a9812377cf24076fc3dc748fd58865b1b02dbb831b25b7b7383579376fdaa6c8a5323230025a4bc66977f6a458374faeb14e47f70e654c42c94a5fc5e386a57abde3f29349623e4de92f900527c165870fcc26a2f95fa1850f2c940fb7b87686e253dd54b6706a84a0c70e3ab04ca8446efb77609e9815a261af5a135836064d44a485b5e850f10153653838e5874b76568516e847a2a9b186e8a50c34c2d2b0839ee58024211018b0a13fc781623cc313b30c26a258106941a66b3cd9481aca7c7e3ce3202f098746c42c58f4c7dbe52fb5f606fbf31b9b5022e691cbef1464f6942aa503147eba081817ae28581ecdd867a96195db320bd2d91c36db01ade9affb6b00f86c13e2e252c988300b05afcd007470cc3022e96af0768dbebbcf62b53345b213c1544491f1bc75ba96bd73be57a2cd6874511b44bf2dd27f4fc87c167815fec59f7a043f699ba4d23400886a7214160c23dc96056bbcc7007a0049435c534b66971e6e5c90effa6645c45031c0c905b9887700181565b53165bab605a51bcaca0dd0c308a46432794c38f21e04172005f4348211c63a40cffd7c32bcd57fde852fec793cb7013e74504721f6bfb7637f73319f75b08e3c25777c969c6ea000c9b79d6f16a00cc4b00ad7ca4f8704b2e54d9d27524f6b80a6d51f85447b22c29af0036c6ba486862c8b4fb03f26042a0e195a3e91bc303770ac844e77805e41ec6aca920ff3a1a3abe81b598c193723b20c8685590131da89c0ace08a592489791911c92c7e6ed55f642caf918173f190b2fb8cc0cb2139fb6caa259b5a4634cfd0a532b719903e32831489a2d390b4c5a5066b4ab5a3316441b162407096a0bc0342599804752fd4f21c45923705a7a04012ae4a900c01d584f9f41676c36681994c2f4037bdfb84a69a81fa561e5be05777b571922988eac714ff249926fc9cc4e93666e198308a434df74dff3c5a440948437a7c500582124574ae225f52d322d0909b5e946a5e22ac8f774f69c48b7874417bb1c0b93cc0a90d2a9640377808ccc2673495c4839fda0d1038b27befe3d22e2b727a +expected_result = pass +expected_ciphertext = 22f3f2214b8b2b7fdeaab34d714c6c4a7c474464bf0229c2c7f31b323f65f220adf521118a41218c92f737c2e8bb753d6e19649e5fcba1f5c821a7d5603c84400015986d669ef0847ca0117f03ad3ce2928f3b88d079ad95ad6396afbeb8146131bf4d822dc4dfac100f23fb329e23f3123fc4bd0605903dd911a6f9c092259a167445caab38943790b7556469cf37c07f06d604906d4d10af9370dbd8a2e45ab870063ddf1b3f24fac5c7b5b348bc6281dea95547c84641f697ced7b000334493c35df845a12a1cc3d61efaf5a84738c2279128485759c838993d7204706ec6487010e6935d71319ed2dadfcaaae323aefdb7fc4ec8f121ad6a3bf1f31afe622bcbe17ade7db20eb98ab81a5fd91cd22fcba60176084ad5a51aa5c786650fb0eae9dfe79f74e919961e018f1718ac031e46fc3601a6ac4f83d3cedc66225a1bd7879217df9b8fc3dd0be1b9992d0bf7c8b84854d0d9bb82813f3dd74a5b7f38d174d67a00743c4bec322d6fca86ddba4fbb199c5d1a257b5e94b3b1f3a5d8a3b1fcfc4fa56eabc48520a2db9291885d912173ae0bb798b9b5ff15298cd87689964a5ac8283b4d5fd11444ded04b8abbc91727140c93acc3c817cc66176ce64c4b7e5cf3d5063050d28ae924103b0cccdf116d72df01d2b492524aedda5522dfc54bc83912d18b984f7b3e5d5b1bee11e352b44f04f3ca3906cdfd4a08324008665d712ae8ea746cd4dde1c70f4f4299a22ecd16d17d5f66f1060311a378e7b8d7e20d1d7548bd902ba9f4559d5f870d587cfb4a2f39d41743e7610861d24e8703ca8575228ae41a88d3f7d5cc496694873e5fac388cf3c42655cb521d4680ff42a12a6e1f9e4f6685c2a7e786c1ef26fd6be01bfc37ad8618bd799bad70fcc502d9fe543d91b47e10a58a1787a2caac3cb38ca418323ca97a1c0d4427fe31ebaa4d548ffd41e696a541eac93baa53219944510c4b8a891d930d656e66da78d5ee1518fffbce85cc31072f234a0584c97a193737f6044a2ddaaccefffda4ad055f01551cecd853bba68d85f24037d8e34cebb8d625c80b5602a3c6080a393255829f94dca02f7c6f31a674cf37307dc5eb649249236cd8f44281d6becf64f9d301dc2b624c6c0a7ff0cb38461510199b83b42d716c5fd6cfbc0c571bb07620ead1f72ed1960c97d76d51805a48bf594357bfb08a57c504983d1cd8ecef8a6e5cccf0abdea45abf78c044f1dfddf5a884ec3182c3884df3c1e271408712f1d55be61b80e9d4f64fe5f3a4506d85875a59908ce0223e40c775ebb258c0cc9169ed8dae85266a7f191c5729d867fc8d6185798a1bd4a6e9f7594eaafd61a925ce5b18f7e07885bb2d37704a544dcb9152d1822c5ba449fe71c499b46a6590aa8adcdc3be9d5c0a94066a53fc682f5d01800d5b7240f2188600a7f1099e2d42d9dbf4e2831c0e046692548918212ce5d52808c6556ace187ba18e0ff1bf27ef6425ac18ff437de794d546334f940fa5f545128aac740fa0fd0a44888346a70f0bb9c +expected_shared_secret = 11a2ceaa0c77f0602c4b2be3499e6df6b0339d9de90d04b2b12829f4758afaa5 + +comment = Official test vector 18, seed: "d5f23808871544e9c1d6eace2028362b48e225312f77663e9f78cafeb512b908cd9e25875d61a16ec615f4b8ff826856" +entropy = 6250c81126572eec2da330271db36ee591f060fc7e53eeefe2e1c476c675fa33 +public_key = e0b9190b548bc164bb826874c1800980dab529866b951c01c20cb4ad363c681336b13105fc338b1788afbff321bd981974c33d98a35666eaabe3612e61839d6ad65490d71ae992111719aacf12a060648667e34d09343d93db88abc69e0e098a63749bdad39f8c6b93d75990b0731621cc04e6e2061e93cc4b51209ec92abb303bc638c52ab2ae40d746cfcc43b7576a240540bf410c14744f80a442d0555d474192bcd9b187a56691b63965973c7793668682852f91cfbce70d6d4832a1855cc4b83a847734c24019c508b2d29539fd1a114f787285e197b51bc092f80b559446f1076f02e984a1b27cae7aa1d0b50967939aac74cf2335ad421021e3225d94fa3b09148e60c20e8454c68a8022043206b7bb1e799c9b69286509a188db29a9ebb078420a0844c858cf4b11f9b4959934002be0229e714350451b9c2775a5cc8c45b07e121290eee32a73d46f8d7c55311a8c29027356139f153cb405fa14064c5c31060d7a964b33d76bcd4809d21b34a2f7806486bd2835b7f871164ae496d4264f89fb4eb15b7e5a7232b6c68b11351a41b09bb0c92c8437534d2b4c0ca2538023b29df93d93c98136780ff6f82846cc2868664322ab28dcd7279f68994ba5a5ed406d4d717d16c14dfdda58db1524f7c53f3cb170d45a411b07cd64f001daa0ad1bf63a11550c0c154d20f5096db44d1ab0a1c9d66581891a9314c18f778330a0936e7a2f3e19c18f7bc87cf078627770dfc5a2fe71b27eb8276863c3295c11e08703ef4a4ff6b3a1871c7b42c43a6eeb6bd1526aa95b7dcd6b38edc207c630bed1768ce9505544e9053e5c8cbf6a181a1a0f48c8a98b59c3adebcc3a5c99e61588834024cfc71c9dfab1df558711b311404a739f79b45b1a8a7633081a27a08c3c16478c9d24c1229723addcea225d39bde7851345b18b1b08254181b01623347a9a57f5d902290b10476083949556663309059815626c3ccb5302b978b2ce82af231934ffc7732352b990b21b69210f2acc048387b95c346974c2181148078154416e08564d664db3045dba82c9a7934de51ab5c1d7346a391baca48209c8c7235309943c1cb9cab4771c7eaf59321b510d430c88473ab16f54ae461a5dc613c6fec61a5e899552e835eff57fc34b7992755d178a0365c52b3f020ab40020ce21b45717654634606dfb2917fcc266193e2e5b2c4559cc5652aad1121cca0711e26c23eb33c1f7d389f2d742f384725d3268f8159f8c463585998289e58369fbb883caae21b87139e52d7ebb92b011cbe6426390458247c45f06f2519ab35b35675bf93325351617ad3ac470f73d3d3985e10277a647c96a6c56cc2346563cc496db232fd742aea3adcfbc506ca8cbada7b040a04f6e329fcea77bec0683e1a87c396113639159d9ca52a5a5484d2839869a2e80557a6bf7ce2ee295a464aaf835c542457d021c65c2b2a457c771fcc47f8b1056c8b7aa61d1843a40c4c9b083269b2e89fa3ba5959f89972805fa4b46e35abef0c57d875c54804de77071f1219195bc8b4f7c18a19a7953573e7f4157ca03be2852461a784e736110157ba3f83a6947aaa09e9bcae730b9b212bb837627293a485ed6b42ca1cf26792676c1f4bef1609e71524b877f53fd3133bf71ab13912bf37c2cd7a359eab035cd +expected_result = pass +expected_ciphertext = ef721977b01338d0f77a3f31f04fb6dd98be2448a7d73e426cbbc87c9eb56ec0a36df6d71a95516b8a6880c9a722ed440407108a41d0dd34893d2a6f243a28d8ca9920ed831315fa207f059c0841e6d2d7f9c5311ac5bfd74a36e81c9da718a87d208c2eb4f1c83676216178022a27a04ef6343e958f206d22a27f565907cf39d521f5d0b4f7025f37c228ec396139233c4f56abc399818001ea2c10a15b4b46bb348df15c2da0ff6ff9851336ac936804a27455449d21822090e6a8962420e742a7ba41f058aab77556bc2be4a59fd6588246b539b003f90efac50784e13814336c4b06838dbba07f6eb287b850b05c9e4f7542ba1412c9e7ef5af7f8cc8f7d3699f9b32db4623357a24e3557bb63612a2705aae3132be9c6a1c143fb52d0d87530654f1c890d40a645df8538a707b35d173259dbbbca97c4f5ab88c047936ac72eeaf415d1e5f8d27817a45a137d66e6c25b0e6b2791f65063166042b4e750d6c445a4b5830c9c2c3ee8a879f1685f8aa7deeb693df158a6f2998560502b3882839c1508cb1611af1966f62bfe50b1554e4f0d70cca0eec02c0d295cba03eeea812a031757af2a147925daceb64f7c0a4bdf728a6536012c2e80b486a3ea82c7ebd7b97005aca5bb3e890a9515d5942de00ea502ef13d620b832c7a57fba93ec30b259512c666e3d325922394c1b4fdfdb1cb24fa6fffe747dff802d277370a97f4d0b7fd78a176a6758bdbb6cc88f1ee95639bcd9dd69f56b45e1c8faf26e205563481860e5c3e999354f38c4a34b56f8ae19848e53e1d319b3dcee667a5495a47b9fb79aa137787d2e1d51784ce0b90e8d6040d8da5b9ff736b22c1eaf1da117b258b5151239543330e33e6a61e821abc31352b41032fd51690bcc65b95280ac5cf1bb146d2cf364e1c83e654407bbd3391d68cc494c93da50e360176c3caee6e96e334a868d6ca8a0873c7a4e300dee289496c71f6d2c81ebe9895afabb3a274f8067035ee602152ecad5fa1597a3fb5e356233c63fc9e339a17204ca879e084bbcc4eb9079d7e41154cbd974231cc5a74f1711109dd06a1611f593e0ed4be5e5f2ad8619e16e424e249e3f3d7af016785582db7d228f7139649d2de795b264a65554f55d4621517262595f5170cfc96176e397e84e247cabe61bf60564a3ddd3c782bb428de86962f1b7510d136013a7dcd72a464180f59e23772843a012d03ab5d38dbf96d424fa371c28e7db3cc123304dc65026fef804d6a24c55ba5ad15b3bda23ee7e61fc2555969d87131a15f29ed7a5abc5e715126a6590e9c1960e8bcf9ab46988e0f3f2d58d5a6dec84aba81731e02d7a862350f8c54d48a5477474a1fd7d58dffeb3c2485ccf956c20dc9e0547454c973d6ed72bae9afe2ad4e8775e5a57f6663fb464077cb812268571672ca5d1a3b49fbf56db19cf7289820538a4c426f1601abcec6db5893a394b8b2f99382948738656dbff1a5c8fde40e29ef40a84a6dbcc4f184842fff1bac63275a3127435e0eb400e204e9fb45c +expected_shared_secret = 7571990ef1ef7e15cc920318fb75fd38c4ceb9abf7a4b1adc2175f99d1a0a275 + +comment = Official test vector 19, seed: "822cb47be2266e182f34546924d753a5e3369011047e6950b00bc392f8fec19ea87c26d8021d377df86dc76c24c5f827" +entropy = 35d470bcc5880872754810dfb3f2796da2fd7f397537146f6488c27804072b34 +public_key = f1390e49f3b488ac39d0e43292b70042c52355eb48b841887ea256055a688fcac5a71c896414ce75f57bba12967215c50d4b5be692b6dcd1ad2190a3d785c19e283f87f784a03c8f52a23e150734fdd7bea2ab6d122c928606bfb60570bd696d9676397ac3aa1d062ee1ab3922a2c9b5b02d14557164149c62e8029b139e6950b3f8acc9e8c30274b69926c1658f7836f479c8cc70138b829848c7698b179643b7550e9193d6fa87350503c2b69136b08cc298b5c335b1ab95054d13c9260625e34c6c2fb8186e1916c137ad9907c8b2ac9d88faaaa0375236751a47918f96477b7ec01819f8ae1d72951e21608c87532a9428bdf4cb5658440cb025ce3b271652961bd935624b9eb70047e63184b9503adcd057b6744fe42908cfa325e401b9d0db5ada201f5d64350d392c4fb842823895e15720dd7785c7f5986f15cc2565a71f6ca11b854a293c9ce6c9a1f4aa3917130308f2a2aca964790baf960aa12de3334d146e64db81ef09563c9667381424c809441ee989eec93597e7c5b558a89dfaa976f6934cd18b8eacb6f2f54e8f748e4bdb69b0764fd59352575066dc242dc0f1356fab4467c8064fd23f8823148b77a4acc642eb2c181fd5ca251b323561191cb15f2ff0784900a15f67014b518453c4c3663528ffb53271e195c27533fec8c3b159ac1bf39c6fdc69dd5a5fe5872ffb6b2271a09966a5c738c48e63e141d65315051610f0f5588ac97f14100027b144aa23774f199d0d9a122953aca8782a4136820ffbcc1f2692bb919b674aa1f4d679e8418e8597c74d60c5c287cde6d44492411222636b03cb661ad66fb442193690a5f1d6b80a947442a46bdd239fe3989e6da86949474e395056a5e6cb42b25343a7c73b650d843527444243852518a9034b9efa7a6bb8505bf605ec238ffbc08cbee35a94845d7319144b381819d0928c27023b727656ea843140649c03098fe74c717aabe91948ea7698db0a86d34296b5e50dc0a9949c8ba07f64ce60da2b6e62458da229d52c08b9b696a124a8cbb791c0d255d3e4a69ed2c242000dc6476b4555552deab63ec19fe8783151daaf78e561e1844886d4418e7510bd025299b1c83c7ba22f63335b9823043336da897a44fc6a28b44c68a49b436b0dfa406be642a5bd303bb0d633685364d80440cd7189b6b34f6535101979ba9d251474fc91bf2497670bad0da78ab3c13eeaac864572a2f919546a57c719bcabc9dc8215b492d53118c2d379e879234a700638370a530577700982c4334673aa5d71db98627384e8ca876e24b5a31575ea3c334d3c7d3abb6d8891b4904b8f5db93d0531caff25be53e28c45c94758e309b83abc2ba66d98d3bdbc53b7d06592f2712663c777db60aff496a217e82d8272c3a218ad8c8b04ae7c66be35c08e3a955fbc18edd07e8e68a806fc3fe218b87f87bc332b86c2625d8ff01c9ff6214b75a20cc465f847511030b47ea664a75b3d4ed9038a9c747c6872de0a57f3b76c60585ade64570a21cf8548a5be4996bc22b3d16a7bbbd20149034764b820892b9394581697e39f9b35077eaaadb06702968a5e5418983110a97d4749d3160ddb2b9c587767fb56b9ed9bb3d91cbeae141769c2128e0acadbafd72fca96aed457caafaf51dc8c30ceac70cb4621cd4d7b4c +expected_result = pass +expected_ciphertext = 011f7beb6c4be8f266d9d6baeb2d0ad7c3f7a4257b770a8cfe675d00d80fe92975ede583a59727628ca1064987718fdcf8f8269a371accd47560caa9daa1cd606b258b1532eb341b47963281d843462e822406a41681bbdd81247255b4ce037514695a4a596ad23b493cd368897e94c654a69b102e4aed52efe1ca2407222ea5874a4366f3fb804b9d482ebe6ba777b9d79701dd04becdd10acd05b0b4281e6db009188cc9a0e263232f233091af61005f8258f05e638f7d779346f59555827b92b190829003f42156dd0da2f43a3ab17731f2e15f7207b11f4ec0dd6ad56cdd5b5a2066d1788cfb060317cf36b90ccbcf0014efffdf291606b615488a762240733fb52e0fae719f434414e245eb8e7ce84ee0a35ed39925b233a219d60458c4434243e6575b2a654c4c6dd8bee20302b442201d846261f1476098459d9c2f548a097dc4043e8403ec21f6df98a2f1020a09e7609dba49a5df6e91fbc705a09d39558d7b12ac4092c96de40c18cf4e0d2e0aa575716ef57165d38f8fab47e40b914d75e5f4dd65fd99eaf77296fc742ce9e52728297729f9ccaf0e58f15726b6b664b3998f3eae5db3803da3a98c11149ca1c7c1dcec42f6b2be604134b381e4ecb044be5b1aa0a912e71f59d56f3d011ab99d3defdc09c345591c79295a528341ca533af543a5777a5a5df06527cb961a28075491da67334ca67f7ac1f8b26855ad3b8e05291fe9d401a6d6ef19d3e915235aa3de6556b7fee9c7faae019bcd21f54a137ba08d305ded214c208f197ab65123f58068d9b770f79ee0f022c85a5e18c0f99d96ea57e3df44475746c3bf59ccc5040b88da34c1ab7e477cefb479377844988d1737e56b52e95b02ada15df5125b6a380cdda6331ac4afb8285638465b6231169523096b49b0d13bbfeb905483893f5aec46d003fcb37165dba2dc96cbe7c269eebebf8f437992dbf4dffc7b69f202580b84184ece0ee39b6e6b782e33e40add26469687b05b06a02633316b8b1bc251aad358327f998dce5a95e7bdc5c4ed526854d5f44b2e1c6403fdfe2091f9e31cf706c18cd02d1a019cfd88d7a9429d81405c1be11d57582ea371b80dc19e89a030982177e3781ce086ea0d633f09e11ee5708d90e37e8c68eaa4a419e2fa01b07ba6c2bedcf57b03e740da6df1479e3dce41a7a1b587b918851b98efc67218c19d2cb71a04961ebd147d247d9834cd8c976d42b7658ebe82194d823865cc5cf1125b0768de6f33c8aaacf45ab11379ff8d920e1f1addf6e570c3a550f8ffeadcdc0d9c8174f2cf3c3fe70f17808f25c49eea9ae043208bdf9d5bb61dffc86adf687fb60bf3f8eb289e22125ab0027383fa2fb04495a9f70c66fe5fdcf1bedf9f9b7b52d6b3f9f39db14572e707a15793d06fbaad499ea36505777455420acc090d2fbd3bea249c225403a6e9c80b1cb49d91926a9acd9c66388386ab198421f2b51a04d914738026e009b022f1d4d513d44116bb293e317e22afe91381d64629145a2aca70d4b507c8fd1a +expected_shared_secret = 27ba4cb50ae44cd938585e0a4905d76053dd851e5b6af4fd787446079aa5a4ab + +comment = Official test vector 20, seed: "81401db81138d6874e91b7c11d59596e4ace543f5a3471b6fb00999221765fec3ca057abe20f03b2d59003375fd71fe8" +entropy = 8d667921c5db401a86fe1c35dfcf164a6bb2ab7400fd6a0b67eafd4a0ed11940 +public_key = 2d7b0180596be297a4631abe0d48a046dcc99c8912b8255fc45592a2a61230652bc7c450a674ccc3abb27395738d177e7579afdcc30e74e7c7b5ac5dc235176343cfc4920ed8d9472e13c9b36a6d38bb44756bc31fbab62893656da065901303700a14b2f785d98896ae97953ba358fd53091012b97498cd7516b0e1898e2f6803c5a13d70f5bec346917249940ba35e3ea954f6ca13c343a09cfc02d8e66852c1ae0ff8b22e7424f53b1897ea11268a6b866c09efe8694031754ed1a2a147c0086283284133aa6c324e0b0570469f09e0901f25213ff9b113147990b54cb241268e0b6c7a3a90c638b7c483c71ac1344bd65c988736c4756e0b71111bf5b810fb3cc4187363a94efa020de1c3cb9a005cf472bec5685322faad5bd1cb0f240458b56fcc5a6167f22577565dac1ba9b984c33c348babb70506b87926540547389b805ba01e4443b5d60b9a407f8b060fcd96c4b717baaeb72400eaaa9853b962e8a0c8d966458cc4cff31e960c447c6b205629419478360cdc945d6b9a55504d853c1e51364e7a9aad82b64fc37a02e4139b9e6c392dc83c04005f6d1299d990a89ed68acc31b5d1d224f2c8b3cd5280a12c6e088cc2f9d3c59afcb9fee458af5135c9b4b477d878f34723e3912189d2764f9366ab8752c9248a5684296ed46f404a1739ba72d5d652c614860d41898e45b72bf66d587089fcf49e3b94cd26999d7539c32bdbac0139b20988cc7b578ed880048885355f193ddb1690b9092aa2a86af03a41797120be84334ef25c2e70bfe8e0a658f03435b65787f38bc9452ddc584162955f8b8560991c407fa0c12d770e80fa4a2cf7b853708bef2a44f959b9d05b6faef83f6f41a2454257b0157c55047ae7d0cc17079e118c8a4ee3358d877251970eaf86684ec70858a94bbaa4bd2fd1895c2223320ccadce636c2156471b76c48d53e6a6c12a1317c39c48bf3a0aa0dbc8afc034b43398b9f1c56d407a4b7c2bac134024df6ae9800b230e2592f529f79f0ab048867a349684b242bc4d2284a6106dba36de7b3a114b6353b479d014a69e33acf5c465ced6669b22027d6657f12379abbd248c6967834239e2d3a0211b73a77d681b61892877b7e102a53cb4602e3dc1704ec92a9e260d9817c6393062bf520f7a845fff19123a1662fd241090ac81ee1748eea878d53969fea20fb95688fcb3d235910f154bd09a75556d890409cce0a20c6cd2a59664bc4ecca3d4725910d210db0c848ce7242cca945f1568561bb90d9a4c3dfba83074a16fb3ac934c865dcebaf6fd90d5b458c22542ded5111e77c12d8656908557649e9155a8472d5213b46f739f095b5fd4a2418074ef7db9385f19d6630aa29b28881aa3474b7ac352c5dfbfb20fd7b8a0b87cf3933547cd498256a9e17733ad6967d7b9c7adc64a951ec5c8ecb75b9190064f3a862d10cb5707215f456caa10a2c240619925a140b6cba878a0d40283efb9e1562c227d716d2935e8d96649c06ae9465aebf552d68da1e7991bf987a4dff4371049a0dc9e56f110779d562959f278b069b3c7712af29027aad6109bb0c3201565c0b0892a62aa74ca7bd6b48039066a95dbca4e76a3a323612269546b18ba1bda19c123c24504ecdf72189dfa1cd24ebf011a3bb66d35f78633e1ee7b249ff +expected_result = pass +expected_ciphertext = 800e73bbc8dc491180b29772408aa58d07cc850910a70660127c54207460eabfaef758520f288cfb6b7f1403986abf40fad912f2ad1d40acf9ce8d2126dd59c4148e5483542045aaeebb0fc8a5d86172ff25f8b65db0b1c2ff9b2f7b10f82662ad06e40370465f74c8ab12396c4b7c877ca8c231ee5a88358be2e6efde24d17cae8d8e9185255e173f465a9df4131cdce630cab9dcfc6a84a0ae35256358e643b068c521bb3a3f1a63f751a0ac8a2ca2771a30fd8f11b6c9dff802ed6f1dab41499ed0290beed78292b1ce7807ec6cd25d934efe72177a91c4e3727956143bc3427eef3cd9daebd5d9f84ee6e335b77e2f0aad546b938a6e92504d3724a0de4e8f0d1b4ca83b119d92fda08793635b25a4547d910f2c90c143f891eeb14e52b5874905996cb88536643a64c931ddf8048430a63e1ff5be1904da5b136ee0f433217d1ae3b2040327f51323fa93a20610f273ad3af90d2c649698d524c407e04b8aa25ab6e5580be5025f34709314f80f06caa9b2e342c404679d8a08453ee3fa0b59c0b04bf14998bee7be578871deda59931c4e665a1f624cb181e22194bf5b0611cf6a41f7c3cedb2d52dd30a434a504e60ab7fe4d5238394d5b340d38bbde7260f3743f31b3637cfc6f3c6777d9f6f4dc3977d962a558bc533725f315ac425f3e2104e754d361dd24564aec0bbf5cd3253909e091941e8b7e828ca70e730abebbcfb3dbca1dbbad3e16f0d68ebfbb2b208a177ca988c8f69874650594e912fffbfc02d274e094c5ace6e480a3e51872488955176664dbc42501d9b0b4671e0fcd8e096539908d0147fc6011cef14dabfeaa9a1ca31f3010f17b1960e8233d8e2425e96c37f229e53390d800a6c059c3f6aa2b74ebb5ed654001cb760531792d796711c4eed4584279fc520a8e78995329d2ae238b1745f7410dd9cf0265caef5411606475735a6c298941cfb7ae810524c870d355211972e1856d471a7f928e4bf400bda5ed9707ec838b43a4dc080f2a96600db1a5759b246f7f870add6ea8f91608375976d085a5507c9a03ee3da29d77f4a2b32e51a90374ddd79e331a99ffd0d8458bfb5a65fedfa7196d36dba0f2fc8e04ea9fe8cee7aed584eeda24437bedf1812d30fb096bd5e3d7613d620f93dfcf1cb0cd5968530e6fe291ada0411daac93a6269d66db7e3908e91f4511551de33da82e74ca2a6fea7006705408260d7aa57387b8bb4cdd4809b2b140e264c25daaf9f50a8fc28274c17fe1dacff35b4006e311bf0bbe7ee895d707cbe2f1c46824a8813882d46d2d6de5eb8a4ac2afaf4939f36459f64a7dbadca53e098f44d8a0f75042ebe6ab566c8191679f6224bc6676f3d68bcbf422a8cae661c231c841df80d9e40566176a58d610e006811b8d0863d73aa66bd59d659135fc05d0568f438f82a2d4f9938d57811c4f1654dd127ee06fe2d99e76a5e716674d389c91ac198ee0fc0afbe93ade71540f2ea0cb2d63c5c45aef6d0cef2d624fdc309c7d312a39be86bfbcbea53fa206442 +expected_shared_secret = d17b2738213a98f29ee46747c93308ee7000fa404b9a0c1acf3f89654ca2446e + +comment = Official test vector 21, seed: "30b5de5b73681ec08aaa03f6f2d2169525d25f4042a5e3695a20a52ca54927b85f8bb948fc21df7defc3910b28674994" +entropy = ec750b3939385a3f8df868119dc76f77ca845567ef068de6ada5478a56bc78b6 +public_key = f3576ff861541032094855b18cf574d868b0eb783ce9011f28fc14c486b122cc80093897bfc8ac1082421f99767bc42b0ff41b22dc7b50d5556041338e6c4368ab190e92608f6cc69d8b33f1ab04de68cf96d9c5882c97cf28c30b86924aa57849954369c5427c876a9b1ca341e8522e1357e60a4450b69f150658715403d1e1c957e5a914b9a3bc4c45489053306329c7984e76f169c8639de4080db1671ed01a24724a101df89e45b5b385ca2ef663586ae58d9b33ade9738f84482e6e28909e7641aa673ad772b125161a316166e1717fdbdc8d02b2b2b6dc21805619d4facc40e9a21bcca9d4da71220a4631e95b25e960192a22a39b904bbb02f1184b79a97b3cc16b5e4b5eaf278913b7a195f3107342a77a68cac90c1b5a3ca9b354a6095c29c09c5ac2b44c6cb28a250834d5f2a307ea3434977d0087017ca2692b79008640b770b41ee2c2c77bcc2605f1857368c8e12983afa8633c870115a3818d6bcbcee864a8db694f4b77bcf63a8aec407a45716af6358065c30b77b68c2198b2fb558f463a7477b9fa7680f1e65706a888b8740a87cc7e7949156f896c182b53e464721e46a258820201887ce9b83d43250b63e2ab29900a115084a6e66584f767853b2e684c547d97266b36b6838aaba73298dab79c58c88f1b51113ee752736b7566eb5759cc4dbc37551135bb3c87b1a6c83ac5a38dbd78106ec0c5e9967a6d81139cd516027c25afbb6c47e3802d56079e6265c4f21f1315a96ab994597214b814cc53e8566330cd51fb4045f605df1c7c9c255166651de6041b7fd85c7e376e28076ad352051c65494a1054c30930621c53ee8947dce3c55bd686f186cd5aa21afc17664d36a2d7f5008ae83950b93ae510847552a5c2f761207b0f478c73c4d6313c8acc25b13ea64a72ee3334013cbc0a855b55e88ea17466534786b6176b9053ca9d0494c6b4a940b70b68f40bf570c461f11795952e69f21ec4562dec99448263188ef44e71a1681d626cac69c6b56ab51ae656be1ca028672d97d044e43577f26329d50851b0f8a4a1b6c2b673ac6418ccd58005ad400c27d274dd4732e56b5d7c0b6ee731a99e15229f7295c153aa3a873c20c23a35b6137c824f6fb021a0e28f98bb3be8dc07a5b038dc89944952913af7a39a9b00f1a038a628686a735dbd4c45e0b8bcdc1c1a902cc4d0571cbd589f507a0c0dcb81bd39811e723358d6320a3049bcc90d776562eb34877978c9929548286a85efb85f7c6c76ff255f13a0cf5e70304f1cc838fa398fb34e26ca662759c8f3657125dc2aacdc4615653ef074a784500ec60980be4aac94b0c7a9012dbe73cdbf1687a684ac63526778926654a4ae4cc779a600a836e3273acb95a802051f18af32683f52363572583fdfe30287b2632874cb04832f55e0944712c86d37420137c56f6251a1352ae37a0c3fdb885cb561e63a493a15beb5e3b123aca6b6b7294d8002e7ec758ad2c22d336aae3c067703821842cba2dc0b1b7a45cc0a48202a002f927122c040f84a884c1334c1e17347108b91c055d331c0b170c6f06048b40ca0bed838ad963fb8747ca714cf1d3267b701132046699798421acc06a3bc1ade172fc62123235c2d8dbfe40dd56ce5de6756cc4b6afdf64050da2eecd9953e893c53bf7ffb +expected_result = pass +expected_ciphertext = 9aeab84b3e0a280ae182a9ee4f3e5075883a9e22f0aa84470b1d481a7a1c45acd500e666cccfc98f1d01c1f1dd3fabf4d2a60e8a4bcbc237acd856622431f667719e83b8ba4d14da5131d9b377998414f3ae58a98295396e41cbe34a8a3b65ee20db915136097e6676a96c093da827c206f9619d09d218468ef0a2af7e3c06a647a148c26b706507b792c0eb9ba46f0d7e3cbe4e71488f83cec8af88fb29e3c61d43221d21329271c77001acaa2d47f2e3842d221834d20e232a5ba3a49f33f7a82fe0cacd6aaa96e24d2d75f12a71eb10e5e554c98adfa732e9d5cd6cdafd6a3fbe97d7b464b15909499f6dd739de3ba963406ce45cad0e8e25122d469857b823b821f59ffe138a29d19c4bdea4e839e5191e7187ebd96eb1249b50a0f4a8d7e3f4930162d922d296301bd4955c44775b42b8e06d25f731bb18e8cd13c1e928ce58b101ec64d88a643deff0dda247300dc7de01e1b8d1643c471369528d94534fe54ecd90203c7fc680582140ae1abc4963c0158d26be214eba6a262ee6f35c73209f9ef2611de8c37152c9e0f5d5195492dc8d91825593e2af1f348e4bd228ce205b50f24fe769a5cfb7462378e3c6f87e680501991e8ef4babafad6ac15f1bce68d0333aaefa0b8f169a2431890ea62d99cfbfba14ba9d0a203c967ba3ab036f485f96cf2c5f033919a1795f60c5772f0f6677aba09c56bdcb33d44470b02e7e1af31cf9b449056ac3b2eabd13c7ced8472744e4d0b8fb396b0791a956e97312b376eb045d7cadfe03c7153a4efd25dd393fd7a8a47bcdda4d4279183bf2dcfa553340ea026a034aa7e8c755175330fbce7c176b4f4eb45485519a72bb4d29af2e439460ffc08610c3aedd144749bdad2dfa5d674e0f6ec6e3fbba1e96ff5b3cbdf68b187c98ba31d25836e25a82e8434c0b79c4c5121dbe00d6a45947c2f4b7a6d2b04b5f6f1aea722caea639bac03b282db978e98235ab21c6714e7684ac2aebeab9b4418a77277cd3da7abb0a44c4c3d2fa28be6fd30a295d85c753dface9090ae37e56fda6c1cbdc9d4d5eff7388c3b96a909da4432877263f67492c35a48ab28ab686e1803d18009c62599762611df174ca87a4c5381b062731b3bbbcf07b846040bee6cacea3e7a1b3781a5568e7c3a9213320ef4877317cde72200ec9bd731d30d0a061cda0055761f0221a1f804a4bbc23754c829d94df4952f36664e3f677bc04b6f9a16412cbbb78b2e5a340837f587388eb17e9ec07c29745b22387da055e1e0c8cf8c01eed2140f21a28d38441d1ce9b263aed39dd1b20856b69082ccb797848177535b31f8065cd86c73cabdc68000575afa2fe8e5c539fba6ea5af3c017b6e3d0e40bd1e68278a339e49a4541d691b178758d90e3b8d016d89deab0820e4c0cf14a53b281e608c74586be07f1e0a5492e79a09f2c5464374c2f287c97d0a0b7bce04e55ebd3371c5951f46714bf52721706a1c086a1168081fc1d1a26e7c472fc1c13daf9f98a85568e993fbc14b4a635d9fcacbd698600 +expected_shared_secret = 954af53b4add522514b34cd2ab96669a76ca13f82aa2fd70826bc8ee790ccefb + +comment = Official test vector 22, seed: "e335df8fc0d890588c3e305ac92c7160ff199e07c85760a828933750e3fed8c83b0dbe802234481ecf890a32d7a2884f" +entropy = 74f1d52af09b12c36eb062ea7528550cb4c18a3ce8e4f4ea9fac43ae383bc925 +public_key = 4c376ba98c3a0415a3bfb0ab42d0a3d68cb171109c5f83147c33adda2cb07c62a9025b44523b0ae4cb8a8bea5e550b717ca6c8271997cfd6c5ed76aa44e43da2a02d35610787f22966298ffbb45fd78a8d36eab454675d6951a70472caf06640bc1b97d6760e74b41c577855bc0756abe528eb4894e8776f1e739da45a9f84c9bf3c72b43262525b547f75176ab2e12d8ea808d3b0355766bd69d964eb3b450a96c835d7b238220febd62443b03985731333c54382d20200e30e4cbb2b607ac998f20def865bdf47ce78ac3dbc1abe33245d6fa7583b31b6fe7b6ede7a8ec776b20f7bbe7e376578f0933b761bb0952161123d61282cd6c80cdc8a85f9632aba1a8ef5925e410bb80beabc67735d07e4abdd587827745a3220a24a7b3902416befab3073c2cb1fa76ff04315b653b3e7c18343391f92015939829dabd0289b5aabc4cb5335d963ab842865bb7c38106eb1274eccd0140b415901279e8719c0415517b5101394f78a48f565317909371a3154d291698b0bede17052f30786dc2d46e71edc438c288cbd44445f993926bff0a8ca1a033b656c2362a659eabbcf37b2cb5916940aa9b3e850e51039c08c8588347e1099a0d8380ccc4b8cd0c87218bc24f09126a82a3d530a75500254510ac765cc1de612a4ceb14db78a7141109f947b4329158f87e4c8b41a92afccc9eb749d66a71159db90e7a36642636af22cc0d541ce52db7ab44baf30560691a637c93193a11a00efec075289953fdc9df3ec3390342aee44c08d661632fb0303681e1f89ce1300b0c1a36e63e5a45886a4c76534fa78b87a75cf96ac66205c28766ba5eef7062363c19091c61c543d5c1b8a547372515722ee515e8ef52bf8e089d93377e2c8458e626d3391953d658cdb05c7a40077f4e19dc0b132be719014c12b0cc242466112e94809630b63fad12c99d271dbd38e5afa54c894542b940415354203a0c8a785ab94200ee0cb976991c642257d9af6998b61ba27b236fdfab86f834fb2d47cc0904b9d6acd2f8311f0d4b8ad81a24f712d92272587220e8023a8bc13bd17572d38851778f319607752466cb0de7c5c12103fae4c57d953b96be93262ba9cb05405a5d2a9e012b21a22a2ef33a385c898c80aa9663565b63241a1b206f3379abe8262cfa49ba05c3b43e9485e60cd38d66eaed114ef81afd66b2594baa361d3c3b02069b1a164bc387632e24c82a91be2ca390eb585e900173699a8b26b8916e52bd643645d3225df38ba50a50ea013b4b2a86ee1f76278e27f5a4142f034004b567f309c52acca3c7530162ed744a67481ca338861ccc3e8331e1c67886023743719493cc3caea51438e28ac4ea06b906789a65220e3c7407c874c6322be1f9b627386081753ad618a8dcc013395f20f5017ae2b57ba908617490460d5a67fae2660a56c4c4d97babda0bae0f494260877f7077af2536b2ca46e297c61dd8422bbe515519210dabc02e7047b13f16607ac15e4950574c43bf8c39a2528addfa2782506635e5626967a1f30c02fa3442fa93250571a8173999a88dc27b43c476468a6a4739972dc1b68493413a2743b9b563283cc886916eca5887796a4f833aaed6639b9d531efe5cadf9225573a23664c9cea086428dcd19ff40a06186a41fec0723953781475f648 +expected_result = pass +expected_ciphertext = 0ed9d867a5a681c5294598bf4ae653943fc39d85798d3ab337f344892209275d9916e72cac7e94757cd91e9c35b23e04a29cbf32320395c0201075f704a0149acb8b3624153e2d9ebcb6c072009850f3fdaf52fb27b559dec221cd22a24080b09b1789e5c7e0e927b613291fab9118ff69ff7876eb2fdab05373240ba5b10339c168b635c811456f2fe6295f1f22f01c04c8ae0e49c9e303edd658ea87a279b48e3a63180a645c40e1d0ea1f7037f53de37eeea6b3ebc8a455d3a2356ea047e09df3ccb32cdb60d7a894c1b708b6be01ed9ab7befe611f3699bbb54c1f9fda9b3fa6ebefcd9e535ff1cd1deb3ed6645498894c8dd29c89b6b4fae20bcb4e05876aa9ffd200c2672c6b0bbf2df9143a1a1383e3ca7ff7691c5c5bb6e94f489d8d269b6f19fb411df8865f0d07168df6fb052a31579be29954d1e6a7c9204e9095824b09e9c99d1b7f7c174dc653ac55cd87b6ad0ffdc49e54afc500d7e9d3674355f199c24ed2499d7f01e789017a33aff2f739e3b60420bb9658f2317fccc39663067fc9197e3d8da3eb414339d87439144b8b6c993ac3d715ddb2603dfd2b73fb1b89d7f46dfd757c1d2b6043f83686d7a8e81b699af1d4071fd4fb30309aa7a730e134539687e9cc2ea29dfdda6ef249ce9ee85b4e1c84da1b91689ded5ca4d1c9c9d8ac446139cae39ba54207e70fb18970078cb8256a0233d8b29a0e7883bf076c45dd9219f2694f616e7f370b53a853095435b0ed5a10210a9fe9e6aaa79076aff0dbbf7f9cc4e267a1098221c9abe8e7d9e8d36401878b4fddea1049267d1928d44c3a6f99be6bc476ed91feec35d9504a085e745e39f2474e1d3d6dfd9b8994014e294093ea397845c0ccc9915bc5c800c1e799a256174ebbf65ee8701e9af4f355c657a7cfd36ead4b475c5fccec52cba88e0e5e0306218bcd333088dc31ef4ded6a2294f29793abb4e3762df8b74e19ddf32a641ad8d1fe16f315c60dc68b2d29fd83d2bdabcd92d7cfa4e02818530787d60b19618a101d71f964dc95d1a921b28eeb343ab4e6008840d226a0e9e8915c3abc535e09351c0d898557027cfc578a07376e878c6b90220fb36aa04834dda6f9b7c1d8313b9242e9df2030474afa0743c9434fd189e64e76518573ab7a054d81e1ecd1321963a078805f9a074fd3920b7d4e1a435a5ecc0a2c25466913be3b209ee3b0693ee561e3d745920029c384f53c3abdb4a49cd4281ceb70eec21a9b47a693db42ae08c88d2ff41ef3d632080d33405a21b516ba377e521e868fa3659890ec0200985469873bf42daf4fa5fb8d0292c5bb8e9435433d2a4dd176c1d27f16e146262de295e2b1046cf5ea965e33ed56fb387ebd0fb39d95893d876e33278a699791930f833f2ed6e5a7defac09e6ace406deba5b19dac8440b6bcecaf85674839f775f279a8152f6fce0674e07603a69d10950f51da09b12e084ba70a828b00067ef26c9d3329532cafa9511f78b3c84b685f9b42d96ca5a1b0b399caafc45483a805b614f629a1 +expected_shared_secret = d0bbc576fb1aa43b6e76db0e87bc4ee3fa057c31642b37f3339217a1b041b521 + +comment = Official test vector 23, seed: "fbea1bc2c379f4f8fdcb0de260d31cdb064c9ea9b1d6dfbe91b3692add1d34dec9c9ffae7bf5e72ed2743ba3f9f2e43d" +entropy = 4b3a70d85f640d1a2a852fb6fe96704af56a7415a8ee4282e9207bc3a2dc116a +public_key = c8735813347c3c7c05f81a176264a5ff791d9801af88047574008c870635457126b4069071242c24dc0977a8c13d43b889d27f08984d9ea657d241922bb12aa28a1408825b02663b970778bf669d585a975abba6bcf8513c11bc73a0c33897991c3428a5cb4dfed155b9a2909e6597dd8cac1ad62f9cfbcb27088860512859761885c5b6c5d89fd6b18f9e324ee8f80b4c507626762a22f4cb7f4527527896aaa97a69b8aa4fb09b16cbafd73a667e9cb085f7ca36067d4f740694e6c83c671071762fbba26a640c86422197894caf01b0af66960651998073ba7fccd3189148187ba22dd2661262766399a6b8bb943aedc590fa048816d1b9d827ca80935d30e1830c8115b18b754f20acd7a376272c119cc8210c9aa112d604b2022326f51ad674aa1579c081f12df04a9a2b4571fc1c21a8a4ae2c701eb2ebb0ce65cd2fc22fee530fb3daa6d82b3d46e33e9c918f6d33abaec34f45391245453ef4d128c4c068227a6511800d69f6a31a1421e2d322f897145961abea377c9393acbfa72ab3c3aaf7f04ddad50077e7c36ac46e083075265c58db4b7b47da253b8a9361c08a1248b53098c6b797622e228939f110ece18c02ac613e00b624c61eff4524f92c1ea632553d9b90cd886fd2c364b25c877459ba6de0ac8cc2a8b0f2c6d71a051f8727c2892d1934857eb995a8d728b9739872ea472e6602f2c39484d290109ba924933d6ae52c30eb4d80935f0d2c87d4dabf07582cae3c2f21692f0825c079ea6700065a6086b197582b76cac90a58451d7479965475ac8a6af662c7d23055c404246264c97bd23d280b43cdeb59be0cb31e04474cacc4a1453fa10a9e1e4050f97ca3e9ab31e561ab18cb3af721570380023a9349ed6bbc5df66bb243928dd3a4b5e113a0f99725c9c8bf673818b89030db28edc536c9620a1625c8a647bd3d7055039753e11c4b1be3ae79eb565e6367690b5338c554cfda9369e9b1ba75651a0234d2325ed82369bcd415089692547b325ef28189482714c80dcdc5bff72a6152b70ac2f16707c63a42830dd6cb88ee646d882338d3dcb202408fc5210c71d1a8ba02b8c2ab7e06e43ccd85ce39a215e67914369c749c3978778592d9e34b7671283dc787446b5b70a32c4c1ca4613b01a5d0bfe55016b897130d1bcfb49bb5f08c5df9f15b6d531b06c53a389500675aafca9700fbc310fff968300360ab631ad95649f0bb47e55b90b2593d9a60bb0477ba848c0db9f8bf6c774cf8348c65695b31b921e4439e976b4306a47069c25e4a7515866c0bd77b44c7881121025cd2f28430383600e4ba0bd28074b7bbf2a2a3bd62a73ba240d644ab1f89ace0c8a83ae62f642237de265765458d6744273e4372add9cf5215bd39fa516575bad72034288ca3e0d3be57dbc7ada731f5f13fc0252bc5a9213f502c342a451b933d3060a2ad8a9c13013e3d93455327c187547809fa57faa299a843a251f8368a715508c32aa57a42f9551520433f9675add0359c5997c341464264986fcf67261d16b7a6989ee33730754a2ca0f66b6c98cb421c8e4b36002561b1a5550b93b144d5552afee236357c8093932829f864963159a8e7ca992b8fae006190b55c6a4fc08ad10190d2a178865abfa35607e1a88b47ec8ea71b102d7f1567bed46a +expected_result = pass +expected_ciphertext = 94f5b9ef5dfd9caea5d92ed4a48ba23b9f55754c1aed2406de032457dddf538e797c2e02272aee5ed23bae0d5cba2e37e7afb8a472c75475b92f89db6ffa08d83b9160768541c49dc9da73ffa6f928bf16882b63c29e9eafb9467d0ffb5e3ac4b95c89a9462432ecebfa096e36901d2192fb2ef06ea10d908a48e9c1b2201b115f19f7b433d74a6ea836836a04e95eb93e1b844df7f36148ba6b218715cddc3ec5766df62ab97d5337869b14d674fc568a4c249f7832d34f05ce36c465ef020d00df336b2befb72659f97cf645d4420dfa0ded164cd10130ec7e9bb371f57bedda294e603f74b268333afc0d943330e0014ee57fd5a655aa24bb8c088637afc0d6300a8a3997f3e513154381a8f240d037791da03f8b536cb4a4a46059b9ef3c16de282cafcf7abf4c840584eef2a4617b3b015a0e3734aed2ca2d7c182181343718934f6f4bfb7bb3806ff6f412ebb0df25b588fe79a60f0118c9f0de2ad09031eb00f635fae0a2dc1e25d8460da9faf3d84c785522b817442fc1c801b5dc0192480649564731eb95aa96970b00677df4b2328988ef813b13c0175f6b73b2646a90107f1c031a920aa8efccbcd888ab6f0c249d22f7a08dc725ff5bb6969ea5d8a319c7c0b905c2c3b9688a6eb0d42e9b6d51f5ee1195b0591e7f279831e427d283b439a0432f77ad85345b1cf997e6232ebf21734b1cbb6d333e73e25f9aaa94de479b7dea838881b766ffc2f5e8813b32bcfde3695096ff2c9d201741c602be13e79a84718c0201a1232a89f6d2540e343327c1c9ce9c1687b4b030e7fc410018453f363d639470f480beb007812fb88d6c3450d13a9e9924b82198d9325c4ddcda7e3b1216753eb9364bc8954f1c3373efaf5bd0b70e260b712a79253459fcb928cc8ee8f770e233eff63b9d1d7e5d15db03c95a64e24c1c121e084f2aeb506dce765d03cec76be9bf8cb26dde32198ee9972ac2a441301e49dc703a8284ff900353951d390be673710d0f8c14b4ff42c15b6d2bb9e360d0b573b608b0e28d8cc8d40b9486217fa3c4783d1bb31e9f8f7f9b6852207b4fc9938c9f2b784ca4946dfa1fac87277ba62cb6a5b69bf34defeef435e6e03ec53ccf255fde48bc843df6ea502efe32f094efa52c991cde63678a5a8c7e5265cb096298f4d32d482a8149157aa4b025ae8ff5889928ffb3fb08499d704f3d146ad259e296fee0b83ec7fc4fd2ad036afa9576d1196c3261e2ceebf52eeeaf5cfaa38ae9f4adf7be4ba96d063ac8ed6fdf3480bc26c1ec8c382539f188e5b64e2016d511af0e8744aea561734efb76a4c943aa452da6523ff6b4c99fc8b13b51c74077cca51cd7d4c17b77f5f966d79e67cdbfd9489a71836c8e0f0fd9da93b4c1edd952d6300413dedc20fc77730811008a39f2b9d2a87e67d9657aaeb98ac4e73f99b4a5d9eddedfe04eddc6665cdc6dc277b5eeb5b86750096708205ec78c20a512bb01fa825ba85c8d1887d01304b10cc482c1219f97b5b7b97e76359c20b4cbb06c4df79de4 +expected_shared_secret = 91fbc37d4749ec6175c12f0d8eb6b6a8621e693c79f85f5cd2f557cafec5e7e9 + +comment = Official test vector 24, seed: "7e87fb886bc3c7c9fc12569f465d2ecd12532e76cc27c65644c8d3dd603b0cb2d036c5974e675058f271d5c82ad7a813" +entropy = 26e38ac804fb5b4d59ddf747715e7e6041d875f99c7b638024b4af82d622da60 +public_key = 04a592c364aacb2c89689106aba29029c58ddf7050a2c78787358571aa506570288e747a4204c43e8c6020aa3e2d77b36c3440a618c55f3cae6d43b979786e6a181d4107cb723bb6d0729ce3eb98e7a979caea9508563d5a0b7a7ba55b8985b71f3c489b370d37a66ce048a9dd27ad17b38c66880491985b2af8916c547e9c6cb16b506170f29304c4393e8274ee254a3f13c6b0e31105442bf92799f21774be9a0f64970e6ab581626115a1aa3ee4da7936504d036b75be6046e5778f58caba93f8640bdb24982c17ba3445f2ab983b685644b596ef66acf739039ad0a3cd61bb80b000f7e8bf53f60ebe235c0bf22c7873aecc6b3ae2f3b2cc3bb47d1b88423a188393c43c4999c32a886807cc4262bcd5a588c5e1bf8ed6a6ea9910c19a6042679926f314e7c7c85bf550482735e7fa088c857ac1578560a1a2f7e831223cbde33a46632b7e24d400a82a8c7307c23d6ca25075b58e727673d7cb5554042cfb9b7f95b11a55a9fd63b1b9f0b60f6931a0ba1ad28b485753446b0005e8710d7189bf438407b8ba36a1687a48e550fa37cf4c6b591afcb0af6b8d2ea5a97b6c1729e7ae22e28f2082a5e653b5babb0d147a8748f2606ddcc7847c24f0d32771b910ccba85befcbd2b89c5035b2062e6b9bb40828902b82e12b752d48d52b7a6599ac014731e8da091cb30186c849b61954dff867899e5bf27428229376ac7d97fa03996160964abe56d3d0278f9f91fec6bc821fc822949ad5ec8a9d728b95b19052ad9442fa0527b3935f4697cfa3c7413ca2e81b32a57f69479e89760a46d710032efbb662f9467f0d03c806b619b9228135076fa235d502230e56669e2354c1b412ecfd01a429b5c76b17ae2ab99c73b4110957aa38c22c8fa39c00261c78aa571b953d868690761655ff700803a477917ac8a6105cbfc220a30a0cc1466d7598b2058b3899c567a71a66d5c9da75085686aa4ad4015100360c6102c84c336c13b229ff599dee4cb2c90a1516682330722da110f42f7c0a4f23a2089add65438dc66246671be41e7766641b4c9139777e08cb4d5b953e602931a7db3e1ce70d765516242ae8987454b898f19c5103bad39207bb16771b5d4191abbbdca9b5bea711081ca6521149b60975e02cc2250a355897960a8e203ba148f8be76452420d2134b607976f7809ce97597d8ca57337fbbd6748c03227607fa082195b49753c43047b95a020c7d195b01dd3cddc4c091916c37e447acb606f2d232c37c9871831c1fb9a8d00717762f18e62e7995a7393e0a82617da4674078d8f10065a28649e53377a88bb0f996d84fc83e9496564344d65b73ab96c4e887107d6c14488e604dfa15e55004fda8b65ae19006ea7c8a7471b354a4e746703d5c79857a02ec222b78b966ecf161d97ba7cf39b37fe173485a0156c3712a6ecb14e629899da9163709b672a243d1b87e15c0ad611419d85522252bb5a02ab725cb5eaea5bda73976d534a881b8c32c5328d117306fc5217aab89cf51c6174489ad241d1cb261d449f24a235fcd46fc19a8d14a4281906236738a060061a494947bd91604431b1a2871080616ee2e915863b2bf2d9cd86743b0cc12a5d21c6c745b34247c17f9447579fcb9bd38af3b64cc94782e299e1d98e68f8bcefa20d1e8db8552516 +expected_result = pass +expected_ciphertext = 4f196d816122c6774617c45e22df48ac3e86c3378f3459e569534f574842967a369dfcb6ee004e1d050636654bb9d0f7a2ffb7c574010fb2f321f85aa574dc3e62993a7870475787ad35d68e5f7281ab98488da56a7a871e8a6eb67baa98c09b9ae117427268d3ef7a3f8f012d0e0b241c39d12f3b1d405093dcb3d20ed8aa3f24a0ef8c08fa24623f3b96845f913e96b1896083f7cfa047bf50bda06000b5f8f81ace902062982aab78a5f800a3d7d7268855e8451de5c633ae05b8075f2d6c98cdc8fe55d7ce4364407f4789f0bf91870ddf6630bc84d3d5d5f8a08e20561c8645a95e51b1e657684e6f9b23fa979c97a22dd6a2e3a729f74201892ccf378db23abe5a6c6734db7de54555e033966516b08de0d652186327af83691a5af4a8f806dfda5aaea644bf1f1c32a9e3a50e9c5783623f20e0f7cceac32b57a908d28277430ac7f2d32232353c1e8d34c4a6e5113bf2de9a074d26196459638f76801619a699dce0a7599cbdbc9ebba872a1bc1ae83d07986e534454ccf1cfe526d4fbf599e79cba747f4f2c6b3a6e1fb04b993df44d87517e7657d81d5fcc1b220a3069c16868e279351ca90c20a73345fcaf12cb75f43102fba680b641536345c154cb15bf7592611313f8e958953808b06bf0d5655c74b022e3a731280ff7a7cfc92a60fa6c51161e3534e7529aa310ff848b4a0bb7c00f2425bdbc6cc1c2fb050fd0b2ac17db264f48a025eba86a7b11651108174b5b2d859205ef2480b9adada70ae09162f82c3edf176287f8e742cfb7a233367867ac8bb2c5306831d3c8d399fb5208ae3f15a24a70493b62f7a918312ea3fad7a978beb11c43e679ad45c284a47f68ae2970f5e66972a024ce0d6424e58e0262a0f94ff07621a2d5fd38817f7d989a45282e71463ef37b5687291c4f852a6b13625308f3a4e6fefa0ed84c3cb47725f00cd88687757d3c625da09bcb8910a441faa38212a4bdba9a1b513b003efc55fdee2a3bfc1ce0d0b8a0f2cb4b828c5758a174fb40b9d245f63cbe3bc07fa68067d8feb438ffba418e50ddb8ce6f5548b8319401d1b4193ec59da087badd67665e9b73ef489b5249c8794ede24e70e3a2eaabab868508adafa1c44dfc1363d3d8091a7acfbdeab2fe73de1bab8507b180f570ceaab92bb297557927909045515974c230840faa67d9df34390675fe206bdc4b5a48032b455b45bf85d150703aefcf57af41fb0a094816958193162e821f10b16ad8adb8021b0d5cf27447b9b2c2c3dcc3513832d19b11a85b00afb03e79f3e7cc06178639eccfb943ad60d5705f1e6c8ce1c8b1ac9a62aca9500bf870414aa2613fccdd9eade567c135dfcfd850f5d6617b1dc181f375806fad84bbc69e28c49348cdf09d7714fd35a49d57d75ae6d74f1ee337d2ac2e595152da79059c93452f0f89be3d1b2cb5e2c454a4fbee52fd97f51b4da45c68efa1bc08441bbaa3082f4b633e06251b9859298b2c4201759538bc46874fd4678eb27d7d5ff35b4fb497ed739d5d7119e213a +expected_shared_secret = d586b441b8eaf7d053cc96b6835f093426677a7c3acc51aaa3ddbb66dd14a623 + +comment = Official test vector 25, seed: "ad1424e804f306c7ff513da4c1e8d445afca7bc942fac5c0b335733aaf70693712ecbde26ea726ee0f9fd9d52a83b1a4" +entropy = a319d2b8f114f1acd866478bcdeba6fd164dc4e37b0adfa8d8034afb3e197376 +public_key = bfd11fc259a2115806f9f68ab15859a763a49d169d615b4999714d550707e8a0c0a93c8db2fb5e4de7c93111206f052a7d7a5e0b5632d94c7a87596d24e950b361a185f065fa96435f312745164693fab8d3a741c56c6f10d8be52c06a5d83cb1bd327e5b28db12291d907a2888136b6fa3a20a48990c6b6c81499de2bb12d19b591234d55c4549a3861626167c5a17cc2a4cc9f668df0707d26795de7f771bc614b994b574fa309a1e1c8b4a0a4ad6240286bb78ba701ecc430269a37843149e1f1aab731523359c735694f09298e2a1a08c6ec273b4a1d57118b20524fda18190c2029da4095ead53212f609a76a343d5c68ff17ce6b92b340dbb8cc6c03ae4b29df243b93233af6b95eb5a7a8b8643b0cf5a8114152b8ea54f0e3668511ceff536d888baef85a62299c641769023b7b92088546f338448c1977804b71781a554bca5f13c0480b42c5a6626904516139abaa54b429e7a0502b17a5a2727a7f230d63c5764dd497f164b24e5ba3a626785ad1b917a6b77b175e64323783c9791832a7c442b895eb338e6a29ef671d4d7c0230668c14bc794cf11340229ac905891cf1c51ef62b6a4a0553331f7f581054da45c370bf606126b39492e4a3b8592bbe0359bc017557379471ef922367d82635d8494c88bd38a7720669a1f9145367a92090fc5df15c034b82cdd9b7cb9ca76e74b2069c36987556012bf0746424677f60ade29c9cb52c6d9cc2052394691d7306952c65ef498da41279eeabccc66b3a41747a8b447d7ee81116eabc04f4b776923c93a28ffe888652fc34415baaeb6854d4732745a4bd5ba61c35678780063ed874c81823ceae41b9684a05410266f7ecaffbfcb5285472e5b02fb8c15d126410f0ba3ba8536cfdb65d23797414a55f2620be653a98f33c95690714fbd3418c6893f8693908d41d6d69a744e63b2b0c190e3b1696a5c8b1cbbaa4719a0bd184f896c9d8f926dc933ba81b2785c05a51b22a95191f43dc23b42c050dc9133de2b003a5b6f1a5730f490454c58af291cd8d46acde69842df79353670a54e2c88cc693745516ee64c2afebb95df25ec0608ae4aa9c89215d471bbf68dc6530fc0fee495fdfa09e98ba8d37f9636b270bd1102579eb7f1bf0b911cb79f03537168867eaf60d77d48be27bc935b02662929dbf2263270670e0601e5e43008bcc07f06451e54755fcab421d584bb603008c9909caa61cf99a4b43a93ea8a3440991ba402c9a8fc51f90584c55eaa450b7a600342e98420d728a8b6344659f2a0263140e69ab86bdc6b20b3aa0920b90c70c0108358c8a92b27635154af9a0a76080ee593ce3d37e40fa33d0c654aa77171f822e0082c95cb60b54a6a26099443f671e863889f35a0b9597b3442a71fa704f164834fc9c8e2c63847c9992cd73c1bfe7abd3d75448d21926da0938f92b9133a92e426dfd2634a677878ea9820f5c26a2382fdb1c4b8ed59db74b4490b87b0dfc35f5b22112e5110d494e53c50d3fd6c64cb485bf5ab37f7a1b709122c7086d3fa56fddc966db2c53e09b976f986a334290dd8c3c7e6582c4eaab182766ff70503b03b4e68261cd0303f7a83732795cbf84a04d78a541a0929691c94a094b7b8f92c5d5a3bc95122a6a7968dbb1334a712823d470766b3b9e7b55672d02ae +expected_result = pass +expected_ciphertext = d1b9adfed05b0545598a380a908d0630ef5a5b633f1a0f71b7ab658c12b5d41870dc738d16dff8ab4009b04f1681382c91cd87cb1fa19fb83c6edfb215b14a21f6595e50f60d23f65c8651a7acd2d42b8093d36511183caaf38482ec02d0c5495a0ae08d86be9177ed05abc034337e502dbbdee1555a5df175420ef9d13ff88d34e3dea95109e543f83060050c948cb5248bbc30ae8dd31c16c0a2aa6bbe91290bf30ca690edbfdc3122961b529112d1c88b5075fdeae100176b48fc6e954de16894004a33f1150ec182d1978dfd30ae4db0c7abbd069ad761c131617643b25bb42855c05586cadfd35578b04ad23c599b200a42c75cb4614d4bc49e0cd69ae47af58eba9c4d2adfd39631ccc550bd3052e33514b1aef509d9d4156520510eff630878b9612a7afe6e652baa02cadd1cf5875ce07f04345a457a9cc94e4ce3ddafb51314e11701a9062fc38d126d3a5846c99ddc89423396c5dd19ae00648760bb9647d0d4d85aad167452ed2405f1482a9699cf70c99a3d9e7b897d99bb5e2f59dfed7a1c681315a881cd08a0dcff6678c7aed3211417d11f4d40da95e46c5aefa7e88e27ac0e91ebdac1b6961be17fa2c5b7ebcdc67354be0e43abf6a9a611ef02fba24a662b5b6ad31747155dcfc62ccd0149b355cad072e462331298f6b0155db2a00033f6b6aa71b8fdfb4e2db72040dc5b8e7a55efb0cdeaf6127474738fac38a5fd890259f86d5af6339c4cad26d1ccbf98408eaa182026909dee6be1069fdd9dce80f2c9233370a8cbc0a8a52b3eb999161ca9bd8c250dea2358f72340f48c9cfc0a8f347b7480630659e13708a34a9b121beeac05af0bb9f8475674affd1889dd75146d104ce6d50992311e3132c4724bdb1f793ad76bf1f6c3e30d9592aed479e406dc470aa810198c30ef25b549fa49ead13b66db0107201ac624982ba4570f97679afdaf1dd174e1121d6e02b26d8435795fde7a05846323c5dc7f64532375ecc44b9081ade905e4e194d1d17ba0c91507f16e34d4befb2b6ac08a0f0d3a8f09d2a1bfb01580ed0dab28645faa28866135961e2910481f9d39ce5a0ad97390a1d05f40a0645c3ab4b0c749127cd17b176199b5eb9e87f625bf322cf226390f9de5006e207b63c5e1863bcb60c6b05f7d3577cc59e9d9f7c8be6b30ba9a22f17b6d860ca6621e00ec18733645af0e9b63a40810225fbaf470ba8d232420bb004e779ec73eac3d688ee30926cd1ea673ec6ac7acff1d255189ba3ee8dd5d9ef0c0d3fd0bc911f818ebecff8cecb65339b8762492e79d4f69c2efc9e0d6a406b1640f820454f4cec11ea7ec441bffc79de43f9bc224a570aa693edd08bd637a3993de98eb29a2f8db93347875ad3adfe59ef1a1017ea9a2151e8e95c40b92f357e7bab7c5a74349e1aa557483667161762594cf28bc2f837815679729da4e0e1a567c7eb92d4cdbae032364db056ddec3dbab4d2cf2e94ef0719ea60465374d37110bc7d89baca24f7a420870cadee72f58d8504a37bb7acb384a34 +expected_shared_secret = 409bfd9102bd4632c6b5d3610eb349fe3e3bc51e73acc78a8e994a070e20e10c + +comment = Official test vector 26, seed: "7c33ca0e987226c8524dd56c811fa4d1ccf9995b1e4e4dd5b1481974e88cfabfbf6787775c2611cefb27ed4403ea9b46" +entropy = ff646071b2509e6b75790917e08e4f0b0d9f0116ec6291c0b59eaa4b583ad830 +public_key = 12422cea108045d2888e2c29ce0bcd454b95c09730d6c4698e779987523de0e972332544c34350d29c7bc030bb6273b9f1c98c3a63170abb2641c54dad64790e83387c51aac922814f834c4745409273ab00051b2a819eefc9a048f222626409fa7b3f8d27a0dd754f9372aa37eb92f6454fdbe3116d406b571203dc05201c31a52ba8b2b95b191a7b7b55e743c4ccb80a710863ab741b727f176224012c539af2bd062ba6be7a42eac08c5b6b420becbb41b55454ec1f41347ccd984f11767bfc82665286a56dd31598834b37ca6ee93658999798ead094298160b7e6c76978370db3180273401532315168a161e087d4c6086846a3b60b80103c1ad814843bca7ab329c7914982ed32bf16507b3024a16f231281a732d3d155fa60260064919c484c1741874ba96cfd91aebe5c314e407a66d7cc4c846176d759618654ac2a52fe69c69a375ecf625e2889abebf395fa20561ba6300a72a2091356fcf197c866ab5468a3af7bb3de755836d9784f7c0949445d83b3358721c7db3c09b5120f7f757bfe3366ae4365b677255ea680f27c310f768e56f1aab8792259340bd6b984406148a254bb605a291c0946c83b1e9c5bb3f879a787b9106f98809e94bdc23c062d592318f9854df04bcc343d64387baf398599bb352f82b1f0a5b530e824cfd69d7a4a15cb5624f70cbefe1c61302b8fca337d70d1900dc817837619fa893208da873c350f02892097708cc637093eb25bfb4b3c793331f0fc73c5446cb11276824cbe419378a224a683fa0d17c671fb8c4bdaf18c20c53a21a4bb8fba9ab7a1b7eccc81946bb5fcb15e1d08ada7761a55d503dba912b73765ff93a6ab642b5fb72ed4f16657ac448a1957413cae547ccd76d9936c860c70c5635c28754421af13448959d67cdea3997ee923aa326129b5397c15ab90f95832f263e080a42460cf9f081152aa59cf17263d008acbf146f34a7808257689a3148e58a0a0117fbb47bca97810a42a7e0f734c0a17745afc6ade752080b39f3267399c20b1fdfa195437b83ef5125405aba8d2ca42040371c541a5fc339772948a21b7efc30c909c7938779bd012642441083150118ce431baa72e989425210945a7c47479f4873e3c3ca6698ecb2a050415066d0bbe5e240222a2884b3cc17bacc14164be0d21330456a279547579f8a4e9443d913a154210a3fd1a1a263186445a8e1b884bbe8b54d0196affdc47544c8d10a69378fa139bc8a422c44c5568555f9080f170bc6e97284f448e6c23885d603a732c469b376a762b5068e29e80b74f994588d9822f3e81ba6ffc273a9c905d0910062bbe94aa1e0c8c3424303845779f8c9b515dfa0864578a66da8ad7b56da2810c11e1a2888b88bb55b8c096a145b62ad9d2c98e003658c9729d7b82550527411a9c0b981f3479251c1774014749d211687dda83626c6bfcd5b08f8075954bc10f48623838a736e38c1143b9472b4df5d30d37f0bd7c727a2f16a3cbe0015dab5a12e27a63f7aedb841d6d9bb1a79a5c3e903c9e374da62a298c549b9842b77c33aab6b4939aeb55704cb610d084950c41b746afd7157613618f6f1574ba51b36f7828af0aa4f79c0840ea3d679013df619046e935e0bd96ec59643250a0b38f9779b0142a9e546eb525e72ad204d1eb31a6 +expected_result = pass +expected_ciphertext = d7ebad4e7d0644b802bf0d325f8947e10343dca6ce3affb6645153d9842683b6d7526bb86e2d07892ead2b38662504bf8829b3591bb44eb03822d34976031ee39bccd8b418ed77296b2ecf1517a37aeff2193fb1a6f90cb8b3b46a213aaf471f7170a04b7eb24b8b62f273061fd3f04e567c695f9f85c1749f052a508f04917c7fdea48643f2aaf8d3f4208fa6e5e3ee001054826da4ed89240acbc68471bb06acd6843f639875042454ccc3fd0aeaa0ad416c16ee17afc0b8df9a49153ac2ba53d536fa4587d69df1360d98c82589f9cab145b07a4230e5c82c856a74f0ca95d205ce5d074c9bb54bb1caebfea0fe7afc30b69b852663752f478132d54d26e5372cd62f48e0f33c836a1e5f38562b6728061c2875126527ae4e84ef15c4e29df126fb9c555e9ddeb9cbc6c07036123bc615aeddaba1d53b0159ccede60943e1d00d7eeef769e3eae0181c69556e5daa1520103403f8b16e9e921be7338771d65339fd89e180caa88ac32154b9539289c587738fdf65eb3ee011961e0f0f365a5e885e811fe2db2e12435ea84ebcbb9e70ff8c8db1325578a7e82b1dfc53dc5322f971ba2cebce3772c019504d44f86156740d31d44fde5d877e68c108af3b22dacfee863d21d40e0402209eac16c3ea6934d9031fe217b326451b29130e42788e62a0def2eb2fedb2b01f57447044f0f61af4b71205b6ab352cf46f738d9582e5554d6a1088afae1fe4c7077beed897d13641adf5b6c053cb3d4e11311ad3b07627ab4519e51c0c767c8abc656648524aa42d8d4d3bf4fb82baa022a82e095a39c16b6945779391c3125d8249c6b66453123fd713443dbfefa85f1a74981b40e72065972af07d47e7a1de0f42a159dc1909ab3e8988f43c4a6b729da0a8dd33110c777e2344f1b8179d83de58bb2b95a8998b00008b2022b50a7ab7524d1189d840cb027c3ae29ccc809e3a977bcbb4aefbf16c524497e98acf053e14bedfa90b01750b1cce2c2ec50a701bb8ec8f9f5e3ed0e6923f8926807ff5dfae71256afa331f14fc8e73aeeb30ae63b3881ac4c27f9973eeee6095ec9033df4bb73537c304fc037a9d04932b3aceb69769e71cc73eb020864395e5b4f455e6ba92bfbf8588cd5bd3ecc7e9ec7566e2daa123d4c4037cf1fef134078f463e4c0a901d51071fbebf889245ccf13c0c0a889822a485b06fff11b241960ee95b0518f668c3c663b9fca9dcd911246e1d01d524a309e96cf50839deacf9eddde59ef2602bacc13cf145f23e98c4f033c7ce1896502f88452201fa81f90a16cd2816f19380c0dcc61f342fe479ef17f7f8212c3afb8f607da4673cefb3d58ad5d70ff938db0a593b1fbba0418041093f386761616a851a23fe0cf576ab1c0903c31f3f01e6cb76997f0b7dad2b088abffd67aa942c09635ef3a90b09115a5be2c694f493d076df5152e02756bebcff329abba5ca82bc77a699f650102e4f80d57d6c74a45779e53ac6717f2c449451f65f16a92a76fa87ff7c2dfa5eb564ac66e79a74b1bc75 +expected_shared_secret = 5dd151a8015c0b16d79822832ff4cc0da7fd38eb73b7da59bc519d4d2374b808 + +comment = Official test vector 27, seed: "54770ea1252ea2857d6635151194f5f520adea8a41e409ff498d40c271359858fe2b084d5b96bee087b8e8f4dd4e00c5" +entropy = 0584270ec26f3b9818e4af074d17b2d51037cc8dfdcbe3b140fa4fed5deebc54 +public_key = ace2af54375d684a6cb1fb38bd9c803a158483f91175263779e75b6d42734dc72fa02bc3b09630a0f79e2f95cb067c7dabf42f409a9635d55106e91e32341aaa4808df6528c3ba98886184e0195e3ca09d9cc525980cb5a2e9027c6a88e9042bf77653b9dc02ad3cbb04f594bae08da4683dfc960708d85e39a28ad6e6a7dc81a2f0f8167633901298628b695cc1868756a97d80b1afebb71eba5969a1086de4d611f737af56a83c7378c6e5e04e79a8967514cc668bc8fb7c7a1a671e29d55068e34d883a8320438ae7a44f01db1d4dd07304081d684796a9257154381ec44562a8d005f3dc4c94d5ce9e36705132acc8876142194da54934095c2d5725a10e376432b17bf7d1b085d342cb3c633a085e950248ccc9c7ff350efc341d07d0ca06e6bec943353c479506691f2347a29ccb34ad09c929692ed98640e6b8560529cb17030ebfa4c769fc7707c75d86c234edd78e7b3010fe86bf71748cc1c5b00023944774200b2163b403b8207093dfc959b6aa09fe6b98f6e83f972a50abf113e9da2fb9fa10d0d05789ccaf05c448854249ba8973a19c537dd69d3f39744da89debb58705ec90ea56cdf428087d8333b16b1a9e59794d49a40b513b50867979230243b27f3d784932e1caadf8b58fe11bbea62da4875d004a73fbcc90b566ab998a45099194d449cc60b0562570648ad588b213cb99a01283706878287930a71b68b43f87023d2f49829abcbde6a37a941182b78b8cc1b93982c7a24457a9e1683d2bcc97b4259518e0102760100e1c26cdd85022a04a91168486ba3413613ddd6c42ccb563379a08096b287b41a011fc9594d132e33957f2a5bc1db4c57b4c8d9d3135476095ded35b2fdc09d8f996e332baf7939efb1032e529606677bb1144374c41c08807c9c0868b0c32772f18b755d7bc5c5b12f8eb9ca9dab589185553b74408301062c90b2d68504f0718d42a1989f050f9097889aacdc175cd7e6768d626a8c9aa1b0cd6cbe91b10af1a3e507575b47b6ac8c2b7c801a81985a81ad4ac04b32d0dd880d43b3d36857738369b7898b231b24ce6e9944526b9ef370354e21e38f6aaefacbda63497a85327a2112a5db95179c5285d805698209f2a1b67a7730405b02b3507b4e4b65298734f5eb1b66bcb68f9369abc01c7e4545568d432a685a6e038122253987edc55efaa3d926413dbdc43f9908df1925031f45d28712734fbcec3724653b019f7d5698da7b0c3c90eece1a1be3567a253a143723b9550c8f7333ddae88208667353a6184853a85a99c0c463189eb5763fe59d678349f536c56d014cd92b56ed2aa6b0518f1221a49fd6588650057ff00aa29b93f182b3437386f1f846d2a3c60cd900559425b2b7a5ff88cfabe24bedcc825552577b5c12e4856ddcd91b0713526098b5fa555f105a0f1219110347af9016254951c3cb5c7ebe602564242276399b0048ad8d370b544b1cb9789694c7753ef2cd4ab51513cb33f38bbb10c83c9a1a5fd1489d97476d9bb314849581d688c3dba01662b539c50b0db8e889a4654e6af708a64910fc503cfa0abc21b8abc233ab978965059c41d1123a4bb90306aa09263b25be885f4db186d0e720e97524464c7f1b57e338a864d6c447ed4e29d88c30bac7d2d0cdbac43e9f4176f0078c715acc +expected_result = pass +expected_ciphertext = fbac7fc21143080d74a75a743e156d9095fdd7cd5a13091f191437df1788125c9f908390b664d8d2ed2b9c56f0805df3254604d1f5bc1a9b49257247ca57863636a9c61433fffeab86eefb6ae8c2cbb725f7baf4d75e1f9ace6420cbf71bc7be58b5df198fd08bb2247bb19397754bcdf63567eef5de89120e40dd879993fa9dabe971abea02b5bf2e01d7cae26b98fb9ea5f253c6db007d06ebfa7047751fe66e471a2bb0781ba873074aa8d6478ca81f090a6134f5808fe60ea283557fe932d8916b675f5fd2f7104e0f652d9effc565288e2d1abea97e5313b482b8f83cb36b203cc63df3eb063c54f2088bb20c6a0d53d982c1803c646e57e6c4a5645b86b71b5890d488991716f3ca3210e9fe4fd7403aebcc5c54c6d59f5a9195d78d8223e459fa223e4f3d54d3c4443b54026128c71ea5d9171b26f63746d592999c63fe4d21a783666cb737351f88acd1428d46db5aaf965f4c55263895018246ad78193ce1e347d9d2fc71b9bb196e79115ad14625e562819d16bba8fc27371afbd77dbac73f4d20d4eb1d748a17ab00e2ef7e51c439ecfa7137c7183c3700e579b1f0ca20f4c2ab04645675d3fe763eb820274538cbee1fbd659e790bab87a9fe7d243cd3ffdce8e3ab157c4b42d354f37105b412ffbdfd0f626f196fcf44084e6d4bef2a77d92b6be9f4cd19a1e48f084982162dc832c36500d5eae06665f241b85467c3687b1ed0c2845fd98862a7426997f70973fbbb16bbb5847e4df7b793cc123e247dda4b1609aca09f9e9e41ff14d70a7fd54a0dafe80dc324d6c8cd03e1d2b7ee594a2c71e8b1bafb227b100b57fe8d04f13377af132f3b0fdc3db4a67163a47a8878f87a98e6956f7346bee24a2f5a3b1a393602e940f21040b4739dc6fddb41024730eb3756f0873e6696a3b8c2f7b507c36e9342a41a774fd55eb91123c54b874fb501b8c7bedab5436b50250f7c85f228b9b8ac016d548680a4554d6019ef68ece514be2a20b8148af168e0980aafe69772a0fc11cbf50c0ee4350d4cf72f4212605477cb2abb6ebf4f492452e194f79abc56f71ff7b00cf68b72a4763e442150a6c507e52e7b47f9984444680f7204a5e848a770cd27cd3364f6e020f2754d852b6fa82bde6f97d41909e66a4855e56c82dfb21d126039d9f06b802959d58c103abf59e90426809492053bf9793ae348d53759573545c3b0b16739938ea6122f77e1a56209edca1377141ebf98b5a79b6c7f1ad3e3afabfbb0e77c4578cfab6104207ae4194675ae9078eed0af2b2cc27d47d66df086a8eb89e17b65a7c5c19e0f038bab8e7f687477b01780ef556aefefe059f3fcecde27e8c1f83b92a4e325e85398aba2de802a6c574824d9bf627187e5562408e6dd53110bffc6269112be727a0bb638f5f011b1f88988faaa12f0fd2de21f969d1ef5e76a3c32b28915b32377a54eba21160ec0e62ad4209f81dee1cd58751967f3529c9590bff1c21a2caedab88c88eddfb7fd7099c3b097f4679d3a79430c2dc9fab2afab +expected_shared_secret = 1c729b8e580e124e715f19ea6f2409fc6de741afa3d9919b2b8bf3e54c053b51 + +comment = Official test vector 28, seed: "cd6cfe94e9c0a1cc4ffdcd2d7876504be5f50f1d1ca5cf93482943465b268276056f2781f4de805c138976ca72621387" +entropy = 51e05c7b4ca3079781e8293f4eccebeeb2f8c8b4c59468eddb62a21bcb4ab8a3 +public_key = a9c823efc5c946dab44b5b2068d61f00e7b0d87ca67706343927bfe4c12d20d69c4a5ba892f97eeeab7b5a45742cc4ac4d37219ad72ac312051d31b8385ca2293415a13bb8983b8457b8af9dcca9e6322094ca68399ab77dbb9f6aa7ced5f224641c3fa07507da9a08e0d180d52585dfb3b2fc95cdc733a573a888d403cbbb71c120baae2a195278370bf33299b9b2684accc5288a3cba1277fd3999839a6ed29bb91d71a528bb2e4f953778ba23341cba4b9b3c17f9a8366212af3b722397419e24874b163470b3b2b7f24ae62258983b6161c6773b5ac90969c03d01cf4669b9d1f46e05705d4f676d464264d7549e1e2c3290c9b2bf5a71132057531714bedbc7a91bc0ad56254d298908d33d588951333b3cb7924abf14b0d70652c45aa62cc3062d851e45c866c6200df4e74a9e559b9e6ab738f2b0da9693ccec3d968a866f0220ca95b7c6e8b04ec41d39c17eafab77444aad4ca3a9d6b5b5d4611a6c074fdfb01f7df68ad2440efc5588f3b4a5c4106efa3b9b6bb35c327465c7b656d1c1c6409993fd91cc20172e53190dad63ce02691ac326904cbb6424c906bd091312c1bfe6969ba6aabef954b5c8d439da5064a248c92988961fd2254479946dec829c76cba61690e3c541648228b59805d7fb2adb6aaba70718985279452a2fb1414e4704ac3dc84d3eb767101c8f4feb24bc8148316609bf963afa826a9b87638424052067ce8fb393d9ac579ab1080d1c549fd5103312a1ff9988dfe7805ed906fe9228e25942d49484a4510e0ff9a4a54a22cba6be945126ebe461c5940a74e1517c60603b2651e8371973da7051eb7197713f5583ba51b92a9eb3179b45a8a8a5099b40c29f59146f25a563291364f236038c79b784bf09524fc6810f91b777bae252e5b723e8059c06157653e335549784a15553ff9a7a29407d87725aa6b7a2a2669cc776bb810672967cb5b8b9a9ba751a9e69a8ddf796b1f324348712ff0c23f49a1debf210c027995b8a7cc5b288c4c74218e5086112237128cc57f4bfeddc21ed23bad00c58d835b5a3f0c8fdf1001e0ab26c2cad47d5caf2252cafd3520e36ae21119e56fb456f277132059ca18623bfd994878c794545ba4a04436d804231f430b12808fb01647fa15d94b975bb6798ab7c3f6355b9bd50bc1ca00ee76342c8609be0bc893deb398b65a453ba08bef83b805b61945229d98422f59c27e86022da5620d737867828540c20b097076bc6c03e5435aee1b9af19958a7dfb921da414280429da389eefe23fc9578b714b4f2e5b19b792903ff45aca045bec0b3d83c204747a2e24971b440c10119941d9316f45a87c4ab2ac0f7c4bde9bc8ef73a7f42513be3420c56720ddb984cb173587462aed9996d2a848d11344eac02351e6c5a18cc7ae813bfdc50d5b143f4d07ac72a213a0577f9802043a585d95031d017b319358a24b06b7c2ea19f22b6634146cc0a123a8051c51e6ad6a956b1a935ffe00bc65c44a60534d1375570bc036edfbce66255f523bb377b2256c29b870da2c870868299828f6fbbd8e0a109386b8d743a6e7a38384d5933e64565a037b9f520ecf8466f2073eeaf03d1b606f947ca2d2ca49e4b41de9011ffbd23920c0d2d0cb20e3a9c63bff3e047504a8965639e8fd0db690ffa1e791fd +expected_result = pass +expected_ciphertext = f10dab8353de2ee40f5596160fb8f0be1722abb0207aafc3c475de6199bf2da4bcaf41599880c5c55d27ba1d6de27644a8b42748885222a8f6eed81503421dca84978fdd41f0380fc9b43c1aaa4e4a3437f3776d0f06a88eabf23723970ba13f127ec73d37ecff2593627bbb505362b29d8b6c6dc10474b373a7f5ba819bda564e0d7e24c298a557163309ddc91034eebc1a1bc4efa22909819f7f47a42f2deaa4025d5296288bef197c7fc71b4bd2a769a7bf73883e7d0fec631777d560b74a384a518abd2f660be886618c9c2ff82cf557f2c3ccad1dc29b444fdb5e0c6f82f111c338d9ed7b9a6ad148290786644b9107b2ccf3e78b57807e3b77f2b29bc58a3abca9505d3760b71091d0f6d9cf93a0f5932a194a25d3b87c5aafd8b7679eb75187b62f85fe5f6b12480f34d91b33aaa3c4e279a7b6dc837f203106248a49b9202e0676a6e697168b357a07ff4233dfaa42a2fc255220c33514d65ff3f7f8a41a9982f911b918e720f756b0558e996266b26c4dd7a95e3a7ed8b15a07b2b560276f06eff062be366108b7d6be96fdb25cb210fc1defff0d89f19797d4be632b04047f29f2d6a8485afd5303b1430e3cbe052ce2fab2b575fd07188832661059284c6bbd2862b9b707c954ddb05e7cdc447a7f0e102e348f2cb7a6ff9140b80cbafc20eee2282ce3188549f1f00a1a1a45c26d0de74dd818cedade0a1ab1543c50a05baaa07cf5544a338e7e1f9204b8d883d9c14a6ff983c3012b65b781d9bcf0377c9d8ec7167adda2b2582fc0ad2ae9b96b6a92e393023e785018a4317e69d852bee8566efada3e6de2a290949724dc0fa39067e035b3727040b2bb96be824688e4ad0b8f929987af4927fbb9ba08f49dbab197cd320a276740f48657cba5a295db5b599a3a15e00ea17eb9db3d91929029895912e11c5e0d8550343c4b9f414fe0d4517f3578ebe5d76c78ebfab79c1fc6b528f693a3d58fc2b735498d68f137530e5b992216ba093257425c51027d18acff20f980254beecbbde3c87ba75cb4b3718981bdf0b4bbe00eb30aadc8193a7200a5ef9a3f1361e724dae88fa0e9e329c5fddf8e1da9f77d39b512c263380891d57a14003ab607f44ece6794a1ad41d0aae15aa7367e0a74d04f0138124d583bcc76c9f79334ecd7d8db31e70de23c29276fded2afc2495ae70baaf0ce1c28f249e3d21ab72129093b53ab25ab2f6e66e022dc23c5649b210b208dad52bae848f0522f336f1cc732f9b0d157a7d8059cc851853b7fbc5865d6b79863358284f6493254df3fc3076b443e0539ca8ea7d92f2f738a8b58176829b7c2462a9b43171d4c6a857f4a51f1fabd691e50b350a13e6a2042e7f52ea47d810b77ba11cd0facc56a47b03d0f829edb9e13e355ecb8583b12c935a177191828317856307537b5d4457ec2eb19bef36c67499cdc0d0d5a04b7e80da3c0f82f838154f15106515e5bbfaa6d38a9ca997a54990f1f68cdca6d9512edb6eeb5bd67d733286c9a14680f094c4ab6cce15b6cc603 +expected_shared_secret = b95ac8b73c703ab1154152b3ac73f054596ed23d3be328fbe20f936ea95fa926 + +comment = Official test vector 29, seed: "265eb2de7099e4bd5614e5de7f0c2a05c78ef3e8e2dd4ae4cb70f3e5e59c8d1d88248303f07de0c5508652da66b47222" +entropy = 9eca0fe36c80fc5eba171c3ae66a5b1c923faa50b4521bb055e7bf51005c93df +public_key = e71b4ff986bee57636f904c856ac93e0c18775864b7b932af200251b0328f5b3caa38116c5a187305622b4a152ca337ed7a3690c31161862447b847f5639c5851133f627b5980572023b4acc37c32f6b70b3555e0ec4c5809c9582407a0e59a866991564ca55b21a48ee530676a435d26b749c1264f9e58c3fc619d1a23ef5f6300e96665eab70e7350852115f5859bbf1a8308977648ae5cf5a55c9fb42801aca4f0592254461a632a94a9c3a7ccd05c8b7c3b09666be54f072cdc58d8cba687d609d1f021115085c340153ce63a37750acbda01a6944a46cd16cad098464a109bbb611a83346ce6b59a5f4ca3cbb4394daca06e5708459cc777534eb80a620c308dd779b074c11f31679ae98ae569bbe79cb04bb127208e24ba008bea28c5db5ec18f31c50712171e27042651701c3004e057a6865d54763843d27873220c174c57154c9a9705da162e8685a035b34e15c411fd1b7220c57265c2ba7579f4bd9ab1461650e8027c0ba79f2ba3f14093cab6015d8cc092905a6b8f09dbfd5743818489ada2bedf88ce592396074a79824457f7caefe334fc84869ff43641821ad60e80407649edaa8bdc2fa877eccaccaab8a1f35a1573546ac382222c193bddb31275b84374cb4679a5ffd803eff07987ed085fbd43e45752dd9a32f5ec03e7b74567ed9674e1070b026801e99ca27ebc0ed24742530507e19b97a09877a1b511da3b9835268ac35ae44187ea14b996dd96c35686eb98a81f1b2ad90a80d0c989b12813e7df2b34573b876289e7c79481c7247e637a60f9b2d3fc129c379a759756408636048565cbeb24c2186a875606a43d20bddd8b9d70781b1848be54a075fe978a3e112a567223d21beb3395921d1a100c578e7ea0455949b7b420b6494688aeac00697ae1914084eab375d86243b50a948874dc973b7670c8f9173228b64647e58761442a2cc90165b188b58025f8eba65cc654575a1bb3823a1a29633aaea1763f24486aacafd611c28774c98d89b3ce8a696e29f62775b5d5c50847c3ad4bb968c441086aa070097508da888b5b202e5a3b5db579943f0861a5b6e2d58415019182262c444fabb77679e019cced4e0a3854507fcd0935bf81b0e8500dc6c0b3c154ecba94d166407c5dcc67bfa6aea8b4ef0c53859ba4416d5c1975c1feb6bcad8076e6b020a62b077f0141deb5ab5986b386d51cb7e8c779654af5e5485a969467012c572f62daf788d1f58bf9ddb4bc6e04b00218cb671ce8b2515b072b76cf253a4006ac5437c107a077f162a3984586978ceb3752b1fa1a2b525961f96c63d7207ecc4c0268a354afb00231b1cb6eb4e4a694524448e7a043c22a5bc1094b23d3c5d0a9641f909a778eb64bab84feec3a53730405c92130f756050771999e469cf07cc8c308ece9b827d7558bf882630556150a602d9400e3d4abb229a9d8b8132a7f0c0c5475bb852000b63228c490472b42488aac0ed647b1e834f248534fe2195adf6952b83b6705593a1e53f0315613d2596aad44e27a26d632b9c71e9c9e5a6ab733c7e81e54db3437d894a19b4710a3cd5075602b176ec369f5116638775574c74425789154b0bde48bad6e52c91c451c87b48ec406674a75b0cd39d1173c3f411ad1efdd8bf4be2afea69c2327bd070cd1432c8d219 +expected_result = pass +expected_ciphertext = d876fc40a1ee787db486792f9ed3a749a6e996dc5e20935d6b76c8cf2d6ee6cf6c9c05fa7d6a37314a06dc4042088cdb68599f8d27958ede9a31054cc6abf51dbf7cc76e7d6b20408447469d5860fa09448f2e54efdccc8d0255cd6d7b759b7e665f0641df729b4468789cf480c9a606c8d1860245f0995e972b02dddb7606b85e3efc19a93063d095ff068112c6bc4d2b3edaf8205b76b8fca8e956e3984f945b06527a49121a6f1754236e70aeabc770049bcc240d47e003f47bce03c988e8c1731e85f307d0dd74b8bbaffc511e74d04db81f04b0e0317d57c25d5a11b9128280a131ee849efe204836ab46820ba4e03710c67e79e0466a506c8eec2834f465c97e0118f138e8fb7d6aaf1c933ad13e3cffd84b6b2db732048b5720c108a6c1f3d576b57a7726cad853c31e4af74ac59e7620f87e85dc2035887cbc88080c28e49d986c21a9216ffad3b95b3391a52914ebd10f0202fe4d5c5fa11af3cac6e4a7358888ed83cd8567eaa4fabb73fd6a675ee4490722cd3ccf4fc3efed41ec07a5409b24864004e1ec0dcdf7bc630d537a9e303334e3353994d14c225d59f4cd88466185f8e0c01724ee0db468c2ff12aed38eb4a14ac13a50c7396fe0622704a45ccfa27053a15ff14046ebffdcc8b8fcbf1b347f3430db409c4b7b30bf138d712ca9177debaac6a3138e6651092473d86223943e889bf89a498fb0c0c662973408e9398229c76bdd59b5f626a2d06f80dee6db7457b917cd1f2a333f3853d1355a214509cd14db558afd1fd061d10113465d1682bb40044879b8b64910d19fe8c45d27caa82fd7d1370f7205669e1c62e03772d2a0fd8844fbf6a0d09ccdf877429d59a84efff509731d38bb7f0c17b90eb54b2bef365a4f014e6ca6f6f90b3e8adf99cb3587d7ef7892b488119cad921f0607dc6fb7a72aa5f33e93b6b53ecf3eeb3bd735056f8ba8a003dbd99a3563e85a2dddb27fd544a798c8bfc220654c9e3892a0c2fd9664f33243f9bd3660897bc41ffc7c862a139d1178bfc94cf067bd979ab0c66e984bfeda086c3280c9ce101798cfb73eed86cae129d36d72f79a8ce1114a3e74537e990c53a5b30b3334b1be3d2646daa719dbb216df3536bbe800db830de08769f04a6b874c109f7419febeb34e1e30445427ec154f2fef4a288b070996985e255a362224aa33fa5020d7b0b086e76600319f79ddd8984fc3aacd54b2a47e3bf115c7d297ed410649ad557e87f880c49cce91403fe5ecba4904b6dafd2c273d847e440d2b34270a3dca4ab85a1efe5318f3a124058399c4e6f607002314534fd603b4e71819396b5c168e52e3b47d347bb2dfb1c0f2f7c2e1bb0dd86de2dfb4d680d16cf0987d644bb4a38ab0b14309708bab82903f942267de8f6585d82db7af561ece89d635bd61dd9cdae73afdb29b6b7bf118294450696aa15601c2882c9a2d406e1e9ac78a46006bc62e565fda3b5608dea7f528b06b2826dcb07a1ed7893a5767891b6f740b1c88cebb26cc970f28059786cf6648 +expected_shared_secret = 8c3851393e5c5997cc95f06da96300f6dd85c041343c98db2e742aaa5f78b298 + +comment = Official test vector 30, seed: "806bbd111f27c2668318387bd0830f65ec21a51af01985ef48d03d64e1958ff7ee5133a4ebf6dbf36329bcaaf65f40ea" +entropy = 0c5719261caab51ae66b8c32e21c34e6d86ee4aa127d1b0195663c066497b2e9 +public_key = 8518c8d8dbab01f270c3131ac1586bb783b35db82f3c24ae2b767e2c4a7d15c2a86eb19fdfc41113a7501367cd70d73d0f63705487ac4e0bb1c84001fe6657610c7d64fa3df4538bb6069128c4597ec9b291938ea5d7cd46897ac2179b52f1cac91b6c36f37a59780e454c50c5dc354b56a43040804de2394bea14c2d385e082c5f181228d62307f5a6a1aaa1eabb84f90f34310844df95a4e6d423d8c993fa7f390e6984e482024c2968254b54b7d3418d6f859e295665262246e1bc8cd6c9b726581cee69140f85c02024c5b59aa0711813d66433aa384b2a4a3447939378a1e6a98936bf04ad075981d93c53e9635b5e285f96755f8689b5ce5429142af6fa02edeb1a719b272f6b0a6211a5b9807ce6ff368739b51d4d9480bd884c8b456569027b08a3cb928645d450c6264c5fce2a2de2b241f965034a08716649a3c71020a6986fbc8bfb5b4a2cb162749264cc1e44bd66223f3db1b9bd2c68744b52ed7bba0b9773df128883110d2cc4757dacaf7f4c90fe02884e1a581d89af687ac79444c9d801d156325590a3a24441b7c2c893b777386198c16374329e640b6a439fe5bc71ab3ae195575a71cbab773ae6f0b5ab2d750d222a5d36b86ea2aa2006c54940a5f843ab708d19d5937643309c12d522dd479c3b2d57dd5696d25615abbb573fdb62eee5c6a6546cb1fb188f356800ff4177c69b636cbbf9ee9a7c7d512ca156490c96b347a5bc2cb257a061452dab5fd15bdf5026677f14967b6c825d03eb782cd0422bd1078b7781624dc318a33b0c437d6c35997a22e30496e876762ba5dcf5146c5188dde6c684c265a8f05031904572f7554123832c78767ff4b5ff525680c773ab3ba1a93776897d57b0d507b9391712344326f090b3d964df8c293b6638fa36815c7cb9b7962956f903f62c4ce3d7646ebc1a8ec04a815191cb4bb085ec8693f2188f490731c087c23a8bc7cfb32fc019d106934b2d17706526cc6f787be424bce5b26329591c47402d57548110ccb42955c422323addb4987fb0f3441558964bf14021a54277ba14c5773a10b81c1427f51173f5c6cbe1b7575a4b6766ac355bc443e479a2953a51f7010f7b04b23e0ca93d08836432e3ae5a1a6bb62f5476c07914f88532cecd00ceb340588ab675f93c286e7288da1c6ca3621ad6a4ae1fc64aa15b27a7c3eabc120e7460737585b5773ab18e23ee185c900ecc3b765983cb807e2f7047e6c999c6716e26801ea938302abc312aa797535358196b63309846675bcf1b33343bc3d4d172db81947643a84fd2173fcb0477ab87b57b55899a308d51311c9ba6916f15947d707d88b9228d0488ddaccb25455cf782b7a18264e55c9b6798f39a53f53240c82fbaf461364cd5202c5c94cdff23e0f731624e69310e5b47964b2bfd3a59a5b0d55a026e260731de346f74938abc607b4f579b8b200ecebb633614a46983e60e442a4914c93fa62219025e4a99d71032f0b00906126365c467e0a235570a544a7640f23800cd5f2a825479a632343f20801f1774f0e8b7db96a860fd40a43cb7abae76039c6bc80b94ec315ad49e9904908a20cb444bfe219452c464eeb2914ec19031152cacaa00dd541fde81ecaf1f339e468be45459e708bfb464d0c480a1becdbc021a06af7aac4772545eb +expected_result = pass +expected_ciphertext = 101139d23556eb185fc84b7a91052c0739f48c9850ba8f6886b5c2d4c064d37c525638d8a434f902c4f80b1bd8f87a573f7426b109a3bdf6a1d6ed315e459c73ffc28039085eb8f426868a7b45921e05ee78eff266226b92296339fa679def4d89a2f1d53e3d8d868fedade22da561fcb57297da23688c1617e422ac3a855cdfa30d7454920b68ad591dcaf0a45cf95026841072f304c03054c5322684a8e4b6ef489b39ca40df1d7fdf47b73c4e1d82a538752f59521060e47494b372c8d3b5406fd6e5e39987cdfa03bbcc2f6f6a7cf3d77f1f775c22cd11b4a74b8fab4fefd93a9bcf5bad44993057fc2b8f35d9898acb25ac1574462621c29b74ba64f58336e817d5ad2c9df18f754bdbca516a0b41624ffa2f9a8d67f8ab013cd0a9010c21296649bbd159f3ef908fa368e212232948181b0b8679f658ea55064b59a354db13d44e2d9ffa372492250a8dfb8f1adb1e7593c3d7c3a54c6360488e82ad056071d0562cbcd6fcc82015a9e45109b7d49beec8fa187d4a2a41f1ab0928b0c2bfb20b92048ab9210f0a27f258e90e31b2021a1a94fd0f32dc8911b2ae5363f93e3d70a0e3ed6cee2649e6c4284133c9412aedf464fd83c291c477099cb8e1d7ba347c53a99c7f455872a51204f4c30ae0c41080287a5b247619e2713b79e506e564c3ddb3baf52f15b82733a7b367eb808db1f19f079e9374bc06a0bc6d059458e539cd3ace055e3895e8246a9e888226f05a9022ffadff3ab60bd6a4cae8700429162004532f1bd30843a1cb6b72467522c8e41908ec9c1573551e0b2485c287f48aff967c7a0586986f07c1bce12099d5011a7808b629eae7f3c2e8bd5e79235f958fdfb1377ddd4850894dbd1d78ee375ea3f2165b5acc7f02bc1bb54e7ac58a077c513f0cf17daab0c7934b1a9c3ef073e8543deddd3bca0c13926ebd64823d0ef62b15c26532784b323a67c37e90087a1086955087b1a1a9cc8ec9788609bf404fb2553d7a233691501b37a311968392df5704b8513090bc416d39b5d3ea4a7b21eca56c8b5eceb1ffb124dfdfcb36cb0b84a49808c6105087caa8de272af17df3d99f90e482a704bf135fbcb27c068be5b16d6ae7579c0a046a3c6825df0facc8b9402fa5cfc492c2272f7b325b6b71298c471518de97bed53084c8f559c8435a6b1e9a69a70382f4c35f6bef440a5745dcc98623c9bfe3cedc55be17bb22ee5de49d7b9fe8341137f0ac2907f897a639d816a096911c8c4b84119ae14d459f3377bc7ea7224fb1fb218052f9b03f29cac0aa72daee1170ba56939de8d02d24bd4d26c5814052a125256b083e9e59cf2c7252f6ad6d75eaba807cf4620d4145103f105a6c07f3aad6c4d9ccd783c1ceeec399349d877a82a8d25e56fdf771a56162f5d46ec068e2b7ce7ee89e8565fb95fe3599d8129e3b0737be46484dca61940e9f5f438c1be101ef4aabcc5c23f41121936d0d54af535e53f8880c2a99a70d9a41ac69e137ee32f2eefe7d4aca9c3fb747c3b21f6e7c9eb26214e0 +expected_shared_secret = 4b681fff6a755e1dda908d070f0d9ac610d85c73079c1022fc67d255e36f1f71 + +comment = Official test vector 31, seed: "ad540a9ce816d6fb1661e5483c44f6fdd00c9e7bd1a8ceda4b4c4d3697d4f78ed0a56954996ccb7da96ecb8f5cb15809" +entropy = 0e59f6f9047c784c1f00b24454aa4f1bd32c92ae7e626549972f86fab90e7e89 +public_key = 5e55633267468551b3ee117792c80c1a802230ac805f769807976c06399b97b3c93fb83bdc136cb3cba70bb4ab5f11602e977ed051115508668c244a44e09569a13507d4009ab72b16cc3bc615c12ada7c56d50ba6307d00801bedf8526f0a9366869a4830314d162f63ab8f51996663c1138641275e164ddf60c7708a75376bc235e16d5c22033de1a149153d1868679e1825f638967becab5b9644a6e201906771a703b7844cb5cab61748d202d38b5b8f03cc45626027895e23d0c1c1b526c6d519620436ed593b58732164a39639c813f6032eb902b05db15c5d8825c8b11815768d29522536698a751bc1f9964dc579358adc57eb83a0d2201b9b9354b1b39c6e7008d5f3189902964973af9a9c694eec1298d68d3372783d34700b0280d692998b49a9bb76293d7a95363b317670352a71822f415b1c97742934713c5995fe5ca9642c3ac18b73c43357d4d497b3905df7f58c6566621eeb25dda29d97b598970684c5780f665243feb854f9f566177200f9331ce353cd1a23cce8aa4529bb667d1b9e59b1a312a7c6ff08871cd95c6934419f475c1c08395ce1a3aff83dd14784303b4ba7751054aa59f5710e4ac6039f3168c1b601a5278562b525abb11e66193dc9d34446bbcc8163578cb8065f89b9f43407f79246cad2b6b8b40f16b839a060a95b76855237bab2fa315db48e40842f8306125fb04145356bc50b00e3389dcca26ff048af5a730ac573b5b80331d2597c4188227682075bc0000186b8fd26a383e1bce5c19f13b18cb21602f2160dab202bb07b63d925b71708095daa662cf25dcbecc99395400a79842f5c40e79b46b5384ce730439f537bbc8a8608f61520e120ea9843456118a0a4cf36384832b12076044c65f06c8f8cc31752469c8a1e33dc529ac05485548a6e075f46a089aa8446c0d465bd43cdf0343acc9668fba2a7f7191a9d29be7e9300cef33d13a11edb2b409de297f30b8a7b077fd4ca4d1ac74b31092aded0503ccb5818d1834a734e15b74d3fe550ee49773a800d86f129b4e0250ea1c43da3a3b802b0757c6401ea090f98a28291621341a9d98c67bb001e46e89973f40c1c4950b0e34f07772ba6379fb6a93ecb57369b48b3aca26ef815c615b4a97ac2190fd2b15e83aa10545fb859635d084a57b0268ff085d9ea4b7ee1763b914e67b33dc46037f39815a1f8c58663c88662b91bab0db6758288c682372a269c64cf3ab5c46de2c8f0f1b7780a068948b9480c6af10251453c1fe213855d74675cacc7b162917730ae74ec7a8e7673a7d0887edc175791309ab28e6ccc629bf79c6d69b19269a19488b7b88a45a199841916ba4a2a1c2456a108a5cb4de1b15356ca737369668b0b5c7bc10e22377d6b5fef7515b4f348015872e3518c2676079b8a06de8b53bd189ec9766c04c084e74c6e747c783ff3a99b930547a72fc3a179cbd62b52d46207e79e37d65c9f3c4839d1afc167ae4041671e2c1bf3324d875b78615067dfe11653e6bd4dd5414579ad8c942081db4f1a10b0e1054fa3d79af6a285f2107d4232700676b8a007057d15c923a7889f115762b4c242392ce7c4438c68c6c3fbcccae4a071e404c24274f5066deaf5359eb3382eda6d6338f166acd09e376826299b77b781250c2224486ef23d424bdd +expected_result = pass +expected_ciphertext = 188663b7ec7e4a08f623c7e55c2148f8a6ff30aaadf2adca46e99287a7f8a6b37a1c6036653a321614ffad06f531cd01c62ae6e3491af8c06aa210c42fefe0edb96389306ad1baf1bd911c106ab8d32d681ed8238aec43591644a19b1f3689a1d9fe2a6798a4ebbb55316a2bd3725049621ff553a688e9fd101e4bb9d1c2cb6f1afcd2189990279af782458152379988be07135f061ff3d3af9796aaccaf78f01f4c9f0a89841885b8a015c6de80788fb3787ecb7ef2e36e9dd4b1d3c9df3d0ade0207cc37e23c8f758248a030d7d2d7c43c00c06711d00de431e53405dcccfbe3b21730c453a74365e7d1fbfff706a2c12b060b5ae1dfe6cb211a42a2f0fad86c6b0b2c70667bee5454434093afab1f37f955b895359749c4e61264e0b18a630857c7c3a98e159199e9fb1fa0fd6f07e2c696ede68333465226933c566da073297623168adbbf6d5ad7e9e22bc55d5c2aae513016344a7f2a5ef80d247ff1c71b983ec3fc88b4e2765c0b26a6614292763c14b8612b63ed0bdd43f78b5344f10a28c5df0b635b2f44f9d5c6496a801f7cfa5db18b2018eee66a664c0bac6bcf39f82e00e57a6eeb57a8097af864ef693b871b5857a42e0a99eba019a8ea639895e1a6373a3035bd3148a7b267b5e0e3ac6709a4cfee2085413dfa55000e09b4ec889f2f5456d4b5b9f42d23695e925643f9ec9b2618e09283c99b966f91284e176edc41265d3bb436a6771644460d97ee02afb7f1ae14d06bee9aee03a6279fcb36d069bda332d586851d9e32e9a58bc12104014cf7a167501b086e120a97498d0cf3f3177c2ff3b32a93916665137846bc21545930423e907329d8b57c2ae202f7a7c2cc9dce39a681e6108e233cd955914047a5e20552c9b3a482c8908f536feb396406001f9bb8e24807dc931798a6454fd6ae43600717ef03bef80e6fa53c2b9a74211dd82ce9aefe1e24f6a4f82b6d2b8d8ef6975c0433c14605357379276d58b8ec11d55b4e99cc2d3516198f4eef6901f70d6d74b96c289496adfb0109af4e3da8ba074f5dc936dc1268836a0bdc000ad8dba6bd9c6deca8487dba9324d07e66b07608dd4d884223460f0414228819c430ac30cba5825e889a07eeb75c8fcede709cb12dfe76381381ed76f89818c4d3e177eccedabf6a7ad44888e298b1eb51dc2f6a1d6bc5b0d71a9cc05796abb534330f1c9dcebd5a8144cc7471df50a684b424d8fe1db0f1351926f6c45c1fc120472f0a35a8332fed29b24c7534b90439629ff7ef469785d851703f070bce95d923a88bfd592cba6975619f07f9aa96733eaf9d3e44adfcee1a226bf5c6a006ea58753b9a1b0679a36e619bfce738b2125dbe1a517c6a4ca05417e267081c26653510a1bd1992468c59f6e56b857c8e95bc192f427c77a6bce7d4af50ae875e7b38aabc08aae9132188029576153204575e28035de11efe643e5a5195a49d50d590436912b25310bc4ac0d9e303d6e6c56583b9e11fcf15fc621e45fe7be1c118896918cb09d0a219e8d5c004 +expected_shared_secret = bbaa67f1dad879f2fb33bd4ead45aec354bc8f05c7cbea1e433509faac022edf + +comment = Official test vector 32, seed: "288a5f2684d862a86d2790afddddbac6fda934ee7d2e6da1508bb550838609e8107312b28e00a6c01706374ccd3aefa7" +entropy = a3963ade17d69debbc358dda82c7bebe2c39d25b36813058e7a161542e3f8c2b +public_key = 420a3005a17c7b4a08178b83f8540601145b102970b3fc29f30a4ca1a8a5bc4164051931ed68a59efb2b50d549bdc1a65e9909f5aa690b0235d32b1c6b2886ce2959fa189e2ce24224e99255863e6d964d4f422c02646a461bb5abf86f4b4c0975765a5b0ca01081677334af26c3467da771cdf40ec4293608801cad9c61d5f80839774eaff772b139051beaa65632120f00171ad020276a1fbf23517582149ad2c73450b11315ca4b244e7218800350aeb5808da774030635bc247508144740634ac4a078a5af2816e9206a645287de06263277242dba12af2a82ce13ba6787c5ac3020e5d30cbb92452985ae41027056f492bb1a5e23332698240b5038302e552c5acc0443a8795804126e15369ae96cebd7c9765233982458ad6520550baad77bc74296badcd4cc37240d0163caf8c806a0ccc3f4125a0874cdc1c67e4626c9c753453fa37b208caf5f523388d6308248b7688c80f6c925895670a1397880933af0152da1e54f7a7b512aa87499f7a718e62a7cc5bf5687add09060426b0d3cd292ab9b8372083ee462182872815cd740fd69acdd24615110bb618ca1ef662715f028864ba0872b8c199abe40f35f91906a821b8ce0742f931c661c65aa2445371a300e68f23b767382f3701ce685cea5f59c50e82e45234169c3bbac814ab9d68f83842c513a8faf475590b3bac2e3a4685b8f71208357d221ae41310e8454d315670c3a3409a2a95258b9057b42def7a7c6f588f6da61183acfb18a7cedf138c7984b50a940f17c687e5a2f83451d94398f4c82c93a375be195b4b219232e9a766e77040d3b9125e70fa4097d807a6d25323342508f2490a59702575d64af146088f59802aa2cab3537a8b4e92a10ec447bd89f9fe738d92a5f83c2861628601e42bb427b87c2153d4bc44b19413b79baa5ef55325ba8a42e1a88548155d03ab116e47ee0455f0e5a71bae3a03ef476f77a9a9cc6526df1adbea64930b6995f60181544356c0982e957c5e5186f321b9467d05dd5970a96e226c89673e50a056e7c0a8027aca8a5cd93723353ca1991730dfea1aee943cb0d62537cb5ad88c14f52a78cb6228ef4750eb7db0aa831a4202b178ef47446a06a17e7caf5274f384b36832a07ae0a66069bc59fe439f7b6005f064d865b550505210768bd636c61f0e7a1bdcb3c3065908d51302ee234a3fa113a1a1a2a618750075a6ec277cbdac535fc1524a62e3c0601aad1c46026ab6b8495c1b7093f776f9e6b3b533267ab99801e83bd18570166387f14ecb4d279b86cfbbaf90649e5c514e432561f850497d47c2bda1bc2c398b306751991392c399df6f408ff836f989c41cf76234b9445d9f81f4aaa987c1721c0c726efe44c311a589abb5e0afbc4add9bff6f87597a52e16a53d6c3551b7e6be0a1958a89a739e0717f0a86be0385c5ca433b68ab9506ba3a6e00debeb1ad0519e228b5b2d9aa3c9b4a2bfc8b35bf0a04b5a9d0154aef1a9478df4c8a0354f8878331f76c8cb6851940c996109113446367497cc73d395b34a9c7dd9621c9bb277bbaca6d976c3e65fc3fb4588643ab523bb35f551f1f30d0cd1c40d14b09429215e0c5325bb2b069b85c9e0bd9fa841771aa7c9709046b442990cf89513930f122152632a3c3d7c15c8018e1c23aa33cb89ad +expected_result = pass +expected_ciphertext = cea8231a59705364e56bd14bdfd745a5edf808a710ed23de250ce3d4cd42c931ea20d4a888f594ef8909096758d207e22f7e6f1a0120d496fbbe491a9e7d02f4a332ca25322e7b3d8c5cce294b8858660574748a9eec1a832653b8586c29cff0c33424fb9dedace9204299642f9a34d7391e04be2d2b0b189291373f6238a5e47d959e8b6f1a7e965ecab91fcbf4b5fdd264dec224e291f3248c9bab12c2149139ce73d1409b21c91f02cc9ef9c41124c15796e1a04e7e57d727b9b3d54bd51af1abc79fb6316db1f23ca3e29fbc4812e828d2038408ff3e9164d503ddf3a31ba263cb38ec6b307f01291d680feb21730a7bf3adf21f7ea73e2cd21a2ccbe3b1808039c00d09f60a0e54775510e8121716d6c25ccfa1f0b402dd186a8f623d66f685913fc597d24f63afa8e5b88654019de57939ae9c169f201bc53eed1e5c9a6bf60d7a2ce5d0ff33cc6f9143619e13fcbad787bf3752f1563e9c3d201b8716eafa70b15a7adc241aaeab81e0ddc1945beba409b3bfaab9252e30cb26805e6b42946023c9664764192870cb05ea9bc0692c8ef1408db412117e2633c011ea6ab54ef7750670873284484c754a2d374a381e253d629b09c5402b12a73b90a1c70a4d18cbf3278457039601534745b5bc4a404f17184de598afdc6c38cee8d89af50473e3748ca229715d575ab7e31a05316c02df4d19a594056ca4c250402fff7367e5ce0bc30910982b098360e00a44652e4734e14f490532d5f6ef377d48d69da43d5bcbbdb679e8096298f2e9be4ad3a3dd322f9675f608930f7dc0d00bafd4d2253eedc5dbb1389200157d7b0fe5b49c5f2845884616045d2ca0d4daa45a967606c0e4319e21af8c4eae03c0473b8d902ce55cdfedcec31b3c4923ccb4563834d3683ee3750c39d1782e091862e08dc99e9aa709483e7e0337047cc9ccd4aa1d6ef65a4a4cd1817a85a5a7b0d59c9585073fa0fcde6eca76a83d1cf1f734096d767c9df176f0ebbee8dbb511db823a350c671739dd50913a4220a6d7d9f0d98ada716ac2775348d22f2864b2000adeaf081d730d02246d07f1f1b18d5a7578458387731150eebbe79126ad8a63a2562d4e937c39b9f99ad04df3abb938d29e5dbd29fa640fdd4007964c9e4c27a1b440597a3415c789fa6b241bc7d533518a60adda939f62872cc61ac2e09adb1d3c6004fbdca01498cb37538d5298cfea058853b7d55e0bc3d00bc4ecadebc7ca9492705d7c1db971a8fda2e10e40eaefda7d32338953f138f03fca15d2d0cbd1f89ed97723e8684eb6e4cfec9aa81182e90c695e0a747d2dad465d4dfb7fe28afcfee0a1240858fb6798651a326e0e81e09621da3a529405daceab67657fa4af019191f0ab9898a447eaf02d072adbb028221b509235aeddb4f0d82e84e777cc2ef6df4d3ca6b65b9f40e06db24b62260c44ffa7eadd11e1d05eeb0c5fd163f8595f15c2ab7d3a897341c7bd2c7ee9a0175c113eb454e49f7955a8c17a7a02236778ba7e366d3c1fb1bdd6d0e884959b +expected_shared_secret = 2c7b983d66978be80250c12bf723eb0300a744e80ad075c903fce95fae9e41a2 + +comment = Official test vector 33, seed: "4635dc5bb92ef98cdb6220df0dd717c7f8158375eaa2b78fc3f0b58e9c9653e92684cad3461d9158a481da3d14694c44" +entropy = 97beafabf2c8575586487c7a80e8af5fc50f94b6051c1bc66a5ae9f66be3cea7 +public_key = 63992e0d6a8f811b3f0d30807456c84c8bbb008d3b126a31424954cbc6cdbce91e25b19928f4a41b1371447ba3d173915580bbd7899e9adca37b4b5a21e715101717710bc7eec56ec2e58002127d1898bc55f8a3be385d607b3ba6561991ac6f0913617303830da25f0cf0ac14e67abb8097d17b0ad1ea8c6c267adf51a15a9a363d7aa5c8ea535a89115c984ac5d6bfa922c6fc44a3b35cb667f939fa6b2676ba212c17bcd25c82e8172f6a7506e8b77d82cb21d7066da93a7eb3cab8e881a24c7592bc6b656e459af33a06fc2846d71221f1da641004b68bd65dc28a59036ca678508614b15a93e74f89b8af58200d50e718dab1c41c4556cd47b43f14092ca47397243983406e12e423233c90cfeb661a32ce65ab464db58c922bb693f56553961868b064e17a11162a7f0e3ab0b0aa76b8494ba394c902c598c23721dc16c51d46b8258c635763776b922fcac747985b94c006696f18ba49d0c5eb0525cad1349745691320969b6bcff69c30851b41e66aac3353c6894ab0097b4ec49783cfe4960d61a6f94b317d488d2d04a8b42c7fb7d89d52d89b2de30336333c50895348870bbc311611f27845c7775128a9cc831966fccc06292d86b582a18c6ab2fb3cce03701ba91047227a9fcbc6f16130710756c5dc288ba92402b5b7dc90c39193737c206f3f8230261852f1694258d47c469c7452156e70634384825bc52b03e90720066b609a4102862433e2621987e23af51121bed807810501200b776f847ff615c0f594420dc29ca6573276559c1c84b0723569dc2a76728909d9d1279a8c240a3979b0b44003687a412389581b8ebf0ccb06c797f7f5815ccbb434132ed5f1340e2c669430b13a709f7d1612af876454f06ccb7841f84c60f3806d5e423cb34b23bba90ab630403a46783329707388a1f4232785d4723c993cc62284d0e35242e52cfd6981268b86f598b11472900f83333c48627d402abba59c6740b4a40abc3200b5d9e13010fb4dd6bb503548c777256e0729905a89bb386459e0b885b6e3017c94ba93c7518f017695f5bf5b99214c8555bda863fdd11d40053c0d652696286d2ba14d569915e4532132527ce1b88122640ad668a20964476db20afca5ca663c6c17156ab3cc8e4b723b3a5209d2d10767da52b2443764f91a7f3aabb35137ee18a1f744562e22385716892ca77d518c4bec578e0f1145b3241c1831bf782c760f9081a1191812790531648954163b10e6a1f02b2b9e17cdd439c6707aab0df09236ba33d9b271196a398ff0b2c9521e57b6c8833489c5328f4866c14d2cc1ce037400dc610b28cd99150404a175662102f9617205c1cbc24b5716c7b9b0e8635bf960be5b632a976156c64078cbb23eb86b7be9a2d3e12f5b56406cc51796c66a6e871deb601cc767c0b8e45744346de60bb160808210506c5779bc275940e000314f30555677689f23009a583cd6f9779c83530e5b2a5a0a771bf1376f0091c627afecac104fb2ba251c074e359e5fc44dec244ccb78423532a7eb27c8313a341dc1431035162838835c85c677a420b67c847dc6605821587c8064e0bc2f4fe6a6b22113e73519125b92b3a66f15564666023ea99273d0d5657cfe1b1b3bbf85039a8189076a3752784e23d8a802023fd0743eb03d989a6968 +expected_result = pass +expected_ciphertext = d17ae2301459a388f0adddcc7afd2405cffdd627343e2d01651c3fce83f51eb81a69fcb5ced2966fa4645360d1e89363c3b8104f2799e7a22591cbbd38b2f7ccb8c699bd1c9ed043415bf0f3186a916f854136a4546742d98b1c36084eaad725af2a92bbe8efde8e66a3ae38b0f4221bd7390fb6e99d4b5268dbdea674436f949b4fd7cc00c5424f83c669b3c2ae905501599bb6961fcf2f92bdc83c025285aa3194432fb7e0a1e66ebfd5089db70a061cd8a44527830139fc40e67985412768e74ad81d5cf41411238ed3535075931aefb8006e90c225fc9510d645b59f97c1165082fef535b25bfbc57c38a6e5030a2925b5039b7c3c6bd4e56e5eb2d6b48866b91ccde538bee232a3ec190dc8bb26469e02025bc5659e98ea50813176dfea7f4087beb9c59f825789bba86472714b676041fc385d4773332bec39b99fec6cba68b3de5ee080fed1a65a650c1c193f1dbd98d555320143d1db61db609ad6541c09135dc0054c4056b194321a63cba4142a8f397f4e8c6f5d04ea3988a1f769e191a43c0743644cbae9ee20fe4b1da409fb8c3bfaa2d3e02efff51816c5daf25374f7d5270a807ae7bc94027f8ee673b03e1b860bf4e3856ed5eae78b067b8e1af3cf0c4d9de86908a96472db51e7ee96fc8f21065e6f3ce849b09644e543b27b4573db1ef9e0fb407045ebce6457290d225d490d209d2b762d08e94ffc36c4e717954ac4376acbd322bb745200ca84c3e67115c5ec5566908083f6f9d06fca56996c4ae48e67182fa9bf7b547252a552e037f387fdf4105d147b9919f8c2f9c588bc7787a75d60b57e441687a15e057a379bfe9eae7ef0f222ce5886a7dd4d8adb1a1048ad15efb70b951998c7ff236e5401110c904dee9d34710a429a8bacf98a1f14d9f635db19edf5bb564c8a598de2bd33de9a33a8f96fb7d1742313578f2f83f382545264aa354dfdd9f145914260faeaebdb769df30203e41662e183a5dbb991aed6cfffca5db84058a1eb808beeb3b9e6ec299dc51a0c5a4e89a5cee1be3492eeef9e9e573c427e33291a3fc1efea7943760ed4a564e1b93049902fc35c282e4ea9b39f26290e6c88bf8f7c59dff676604db287af7e3af34b5348dbfebbab5041bb92bf0e114d12bbee1dce00e33bc44130f849113d80e95438de828684c8da1366fc3803f79e893812e81b5dbe0b417ca3426fb994a5b8534e941b9bbda4d9a975cbca174854761ef0f7e2dd14eec51f2926902aa84479044bc3275f5c612b6ab3004771f6b590eafd45c3cfa3c986d203b19fcddda741d6652a3282133353a66c45bf46cbdcd7f996d3b0bef58cf1e0276c34452f88babe26928e608a880baf525895ff3cb1114a5ed5bc4d5ecfe3ea527e4651743e7a036fa21c2794dae4772162a93968ec11385e2d4c73fc13a212cb957e9b40a99fdbd4dffa137926ca298f963f10eb9db3f5fd96744ed1e8c0f38f50a43aa06ebe280607c14ae30ec63bc4750e31a2923680966bf9973d799117bd0f514bce085d28dd49e3 +expected_shared_secret = bbc58d06cc14f9e96a10acb1789d93b93933f1429cc53a1735b3cd995f086ce7 + +comment = Official test vector 34, seed: "5da2c51b4acf488c8bded5e985cc4702e4a7bcb248b5ac18aaba529f7f9cbf30efa776e99f76d5c1686e94f50fb57dae" +entropy = 75461decd34c50d6a094b4a64fb75e5e9479f8f9250d82bb7d729dedeb2d4b65 +public_key = 192042d43a4271e44d1546306137a4427130c86a2025bcc297eb36d3c44e7cd4b0b1c22005fa702ac12569bccccaf6ac9256a1693c8b677c5ca243b9c8556cb3a268165596fd0470400ccf5e3b56714792f7a87b9e03019751425695ad70e4ce0b2769571901c6c2003b58152fa9757922bd28a094771b0cb1dcc73741b14b402e8ab86dc0f647525c131e9aa1a9729075ebb3cdea4d31f6c3b23a5bcbf74a3c653d4c015ce5f65fd1042a137453462b8710704bea463204c463273bb71056378850ad28f37ede664e38514dd735bf9ab9b95d367c54d84ff085650ad33ebbc982a329c6fe3a516ef387bd0a0417c2655a5476f51a68cbdb4aebc53f00c11e78e5ba6692a516c076330c20d0a09f167bbfe1c956a619825a8305d1aa9ac5736e6d24145924b2409a8688b41f33a181a9e4858325140a797f2ba81d50f21af88650cd0ba8e662077708551a947c97c0a3355852a77576ca5b054d3b0b9fd973dada618bd02fff1cb59eb56b12c71b24bb1f02e27282d21281493ac7d07a20b124aac30b7bcb8c2ff24b2c927d3d62ade0357bbf7c1281fc94da2b21d10a5e5ee07a3fd9cf93e34615b871c8da7db5441020d0522c12711e1963be54739bd43949999083115988a09c6020ca88124b35c34ebfb0743b494b2666ccf5b5235968275fabcf9a054ef92833d8ec816d68c07fc53634a02ca192a411c87dd1f17ffea094b6868638716cf593b33483591e4049e4e7c65c8618b242b17d6021bf0a70c7c59bc81c34f5441b063b9a1d95481e6529602b95f874bf1c649d95a072e70a52e9252e1dd1bccdf64332345355f7cc48eb7dd1aa2f2c31ad1fd58b8b3a711d113c270a90aa2c5c79958f3907ae3ba071aa6144b88ba6c5575bdcf5331729a65d8acf3db97aca4191b72a2bc1433fb3483efff09698c291dd868275dc5a86d06d97305ba596515e434a8d956b2b73b3c00821ba055aa7541e4f35896113acfd9320fa91585f3212cfd5b023a77d7c5c0ceb746723c2c7d7417bfb740e4bfb2299b29f987698edfc1b8d7b33de2c80d0cbcb44f05b1ddbc667005b6e4335751ac281022cbcfac0a55226fa69cff845007b9a16d2b6bab3135b325b12c263a81fd423120a6fa639910159b693406411a289863736557a028bbaa23e0c984f04543e61916d9bceb4f64fd48823a4b13e4f83b43d443f62ecc72fd304f71772cce318c1da9a57a67502a1119313b93c4a66d03c2316c2cc5c2285b1e80c413b2f29c447dc975923d9100bec9db958acd7850ab0777d82814929121bb87a6f4f07880510331ee6171797bdf23850d5fc1802e432b2f51b3cbc37631c9729892b6a09baf6717e6ec39ec2b3489b33baf257c35b9cbeffdc1a1334380fc35df386116baa9bad3a0a8381c4fdfc4b1b98836f23ab923175eaf72c59d9c500e10944fb0fd701ba5142b3cc358bfaf2732d643d0b135c8f991b0c73789c465a7e1b3ea6804b5ab9ab2e42ca1e91158019306855a5767893bcd17e92a41470d721f6432448fbc370c64c3e330d83987f3a9479f000c75320a296393e253a68e0e1c05969784f5612adbaa2662459b09638202b74d8d5cbd2b01a915ab2ad06b08670546d8b76877b8b2eaa1abb3132e55d8bd5b08678bfa4243430bb4d059b58a4b0cf0fd26e +expected_result = pass +expected_ciphertext = f597c7ed20fd0069d448c8616f8ca0a60aa23923c79f3bd31a13638775b7b3507bf4e3145221ce3417a8f22282c56862f8ea58cba7a512dc6a3fdc2da6716961ff8011c58c633ce653d39d0399d2e73d4668464a46417545674138259864e639c1f06d6a7a315805340fc277e17d774d3a74938390f399d53514947eded14cbc65f7e33b12662e956478000bf8f2cef30db0b975a93a7383845be2de01c4e87174db7af718e2cabf1b71cb22f166d9a75211bf30aec147c47a1b9d65d9d82c86e2966eb0c3d3b393360e13d085cabcc195c702e1cc4c696cf1860a9fb9b89116a7def1c2215ba5040cc44da0a908209f3554986ec2b60f967d09cbb6291f8fa38319cec24ad9ba588b0c3c6c46bce7d5ece8496313a3ba853ee2060608fb0ef119ea35ef976c77a006352a86796db6e531dbe6598df8d2074b27a170133cdf6c0110995a39796de53d4d7da5068a0090bd08cec831ce7d19b25b49f133b21670b1a43b52ba1c4f61cfb6c9b1ff1d42425501a054697a1fce811a4801aeaff05643ddde4610df7917cb89b82c22fa3940ee67219c6a0d8ea964a4cacb30e3a7d3e9c3bd83b1f0f815a6c0ec6dd8f21c1a49fc56e9d30245baca996c8480d7855e3c87094f1e1100bfb2e45f36698f69c6f2eb13d57e8e40e30f60abeafd09b435717fc89966077bb4f636b6c97dfc6ca7b3d042dcf04aa866afa00a4eb45d92d45bce0dd436c2e4726480cb543d0e95424c3077ac5328d0114a5749ffcfdb48753da9e8b2a02eaa4427ef17fc98cf6298ce7e793910d8b28649a8362a9715eace1cb82df37a96ef30adca9e945512725c4a1202408e6adedfdade710fb80a81c3ea45890beb0e1224763bb018be9f945f4ab02ef6ef3a143edbe9dde24802b01666946785125fd9dfc47066d4635701aefb93360443c5d38d72e5c0f1ff6d3b6d9c0461a91a91b2ef7af8f6533169f6f215b69a71e038cf1add2c04b8bf8e805b1a2a3c60b74bc236ff4f3adbe3cd3d6d1a245cfd080141f54dc036b6916cb5a8b5121b083d7d89d0df82cb924fa847baea59d016847c03ec506bb33f77baa0ade649403545f0f398a9165ca6e5a07eba51caa1a86514e47bfa152d6259570e04fd5a3976bd7a816266c11ae8b5db9330999e9bb1584c4cf669850fcdb064c9d58d959e4fdf4d732b5c7aa7ee5322ba653ffd4fc376f712b8f35e3832c37986fccf33330b1974655d158f3563f886acbdb73f76556c077812c3113246c03ff3a61e8ad973d869aa5f0537d987c0eb001a634b1a01c63cff5c141bb058ce3923d7e0bdc53c44a88fadc9aa48acb254f95d107954b50861fff2b15e9223ed5d575741ab66e6453185dd0c70cf1ec5a3baa6d677cb79a48f54db2d2e105e70809c78b4ee926b903dfd735f9e1ae9aac04c5ce73f34d4b3e3ee562cff04f7cfc383192adab68ae3cda8ec2153887891284ed5399a24d85287ef0a2669abca1eecba26d997219d98a2b81d9f8f91e508ff0d9525aa8d077591823b7cc28b3f4942f8ae +expected_shared_secret = e045e0391e15a66d6208467078f2ba5e429cc586c410ca6c5f3c032c21761955 + +comment = Official test vector 35, seed: "4d2239e84b052109a78dbab6d80c51a86d38248105970476b74a0b78b9cfab6283e30d5a406fae1c7f54f8bae1110ee4" +entropy = 2607dcf4fd6ca1c614c21b5e37c24981c32b91c8c3e6955777da8a3f5d9c9335 +public_key = 38e84df3c6a2dc2389897c3745183e08c1681b5b9f57c16aa2c12778528510868964122c1747662cf97d8b0353bf23693a70b3b2a7c8cd5c5508a227261cb7c3022058e318d3dc39e320770724351ad78010eb423ffbae6714999226895ac23735a9119622bbc0811516d617353c7f769628925bbd49629fe0aa333d1909a16c5c27604b7db0b4e602ab27987df23c3718630ba4c2846444b83fe914d840cc8ed79a85b645a32809ca069ffbb8b3201131cb129db9282b73174f8d4a14a37393552b109d2271edda8d968ac3ff67aa3374a2355c2ec895441873325db71c91020e91f19347d965f1410f606862f69643216b869673b5a70583fd1218639b5036cc11d051a13d219f3969c817326d2b60ba5c13cd8cbc9313aab478833d73716a2a48438fc529084c241bcb4fd67179d1f5494b4bac2b05a5767b9647ec8829a500d1365bca7b8ce7b75bfea0c68f8a28edb7bc4a3817c0d32c4e10169832b9abe271cb0b473aac2c3dd39ce895551a297a61f47162d97c41f051d48b62e5a8882da62fcee16eacfb89b98a12ab626e69d77ceb3b6b02878ce346ae5cf754c3f6097e0b5eb7ac80b9b8ccd9418f63e545d01c7d17a71e45ea3a6d927484d4976ca936fe392cf2052535c201de9464008c932617cad94085c5816aa41973a8d21610430ac4b3080dd480169258e65b53e340759bfb70d68b15b868c4098847901a6b255938ecd15d5ea94232b2971e3bcd56205fc6f0425f50ab880821f56c7b25f51f2412cd7fa023852cad04f2704d4103d4362e965473add3563d9b36e5097c982506865454ba30af132bc17c807309723847257c697c525e27cc570a88a1688134f4193db67eff018f54751e578483a77a119210106fd03066c403b3303ce54b39493323c4334d4a7a20aae04d8ef529a15cb7d0900fbc4236c717310246c9cba14d6874beac61b566593b5ec5887272b914ea655d254d595824288a666f10c7da583f933052f43b0b0fa59248b0584f193ad548a12a845fdf14a73a0a37adfb4d1845afe6b56ea50b00a5503cb542c254a26f456aa3286b0126350272638ef0b4a3abc56fc8d0aea2f7396d97b64c56817d58c32103996db88345d377fb7b2644fc99a24258c50730045b897ac908f7fccb81bc2b51c286899c8c499c1757c6b0a6ac0a8482159d564cdb746037a1224ca72177f79ed19a398040426664abfbbb7b7ba99906e7982b665a551881e0f02a97409a3e2acd37fa96a4f9293f786a11b21e1f0bb22cf400da06081bf68111a9bb64469487d4cbc10578106b381b8b054ee29339e1830dd613e19a9baf9a81c2b9ad1d121a47d40234bc9d4b79c2f5f165bab5a2db68c59c0737e0e4786990a92476aea44105f3c77feefc342b458e4310b9b110a8b2c01593b512f069944828a3f6a219354bbdbb1c344f24aa0784160ca704bfd89c4933b6123c4434cb9a6ce16d3f042f1fc571db728119f6a33e4a9f6981193d60be6ab916818b8e1ff9a1d1a59de8824f808043a1949a5520b675d8834ef65c1d47afde2710c6b63998d43ab47a681f0a856d166c24494081e076d5fc05b541145d3155e232a5af0ab96ecc0b09c2c41e285d350500a4f8bb32e99b4b05d558ea7918a7881bcf516457ad2c3ab72ef2e04e3a4acb85a987c2 +expected_result = pass +expected_ciphertext = 349dfba896178907a635a6d93910cb4ce0ae4089e9de6c1092bce826d207f0c09a6584f829136258e4fc56f90c21ec74f1984a23afd3515e45b45bd34120e761682de9d9b71670eef80dbc1d5b0131f740c708594e8c66d8096a571be068b6333075773f92a082d2ac79acf46b19de4d595b3ba7ba407cea9d4901617de4f13679af9a45e297aeef0946c2844681134a6d869ac2da7c90b089f66a805518146ec3bee2cd95744d0d2768a1daf931928e9589ee8fccbe3a44d010b794149f0397ac81a7bef9ff5243d98b9492c220e872ff5fea295102beb6f9381815aff179c0b2c26d2416aa41cee61ead73a2e91578d584c8c6bbb5c154a12b94cac64afece0f7081c7c2e071dd1e63e56b44296578a4402cf3775eb713146f13faa0d933e85030d0bf6a26f906f12f826c1b728811ad3ad141b4303763d2e9a651cd6f968af3ab97207b6d17f95c0b40fa6652637d8b84721f3a9802645d5f6f828000e58a4e5bcddf3d19053bd1f8f8b6b125cafaabc09d08abfc852858c7b860542e3b08f4e6661e0799d34ef209bb62df89d5a84e9bfdeb853410e54dedbfe0bc9425226d9aa4b00c51eefd9c2fcff48082e6b65720b45e7175f3bd9f1f4948495dfd9ac595d9b485c779f27af8d4aa8b781cb8b332105e0f38ad554696ce80c4ef5ff762f506214cc8e1e3fb1d7a230b20aef8e55543450eff4289d401861fc37c30d64c4093a2d512394c07340d814aa25476ef992919e6fe58577fb6bf70c6778aa976742bbcfc4677d44b79fedbad1424641915e8599b8bef53ce2c8ed682a1e10716e1d07d546801a7eaed846ae94908475ea20eafda70be83bb7e7211698a2ce33370b83da952140ce4029ef0491d8d039fbf1996cdbf1d04e576c0778b30e83572d05081238743f5b4ebde402629aa9ec70399e364aeae31894e56c397e5430c7250e80dc4d0b749a276ed02ba76e190bb17a2740f098785b8b0e2de69d65cad3e770d853316f7c5cfa508a7ec990c81fb912d1e5eea2f0857893d5e10a1b7a2031169de2ecf3935623c769652de3c48ccc671dab69bf992226d95fa549adf29533f6c58f3e79bf56cb5b0399c2ed2a5550e54b4f9cbaa157719c47f3db6b7ee8f32c04d830cfc4bba8573bd3c43c5f9069704448649bc3e638e46e5ceeac812d356fb616835acbf0711c31455124000d451926c1d55ee0b44295d2fbec5913828b5f4ac5ae3589045192a0e006b3466d8ce6347019f0879e4bb7baff07e53a95044525a843d7f6d91e06f6ec2064b975c1af4017eff586b7681c8c5f7125b6238703bb39333ef122e281229d9c67d495eb3d2c6ac5f176caaf3abc6fafaffd4443c353972b5276f4cce612ab4f2d11fbd30b71974655afecbe8814b9fd088655f1da3a3f7408b36c9292a6d086fab471cc98a21888298fe7eda2c5a1a732c7cbdfa70286ca361914ff83657b7537b84afcb8ad0c653c7bbe623745e95a7067d7cc698e80bd94bf02a0d52b1ff03f22e5e4e62af3fcf152d5c35a20b61cbff2a +expected_shared_secret = 0b8584b75838e084839d58c89cb1749e82ec06a0e85464c7546dd96870547d29 + +comment = Official test vector 36, seed: "ee762f5c9021c36446706a88ef16312f4a12c725cd7afff1484337c91eda8e89f7007f3705747d29907b3fb7500e5074" +entropy = 38c89bbe7145c29e9a831c11431eb9929cb24fb4992db20737e4687d397fd732 +public_key = be390596bab505e51b3fc147af616e0f94506635a758964b3e7cc067b80827db21dc87450fe1415ee41fca8a2b56b355fff13616622fd1a19a7cd98f5084610d1ac9f1b8a6e78cad9281a0afa5a7c2a9a87916710ec9c5b3544b76b4808d01399f219b745962536026c79841f11961b63c10c99074edbcb4ed786f7e8c3826609533e5bb4cb80f3e515299eb757c217da2806d26664f154c0cc2b4a644b224933502adf5a66f5b54cd45a71589219aac65be0623cf5b4c0df17e72cab64b91bfbd903d75e164e2a0c9e2c997f36a0b432177de617f5e6746bd82984bb9375b4a0a12e96d06045a3a984667d03d8c08cd980b59cb2b0983b13f9c53790fd43653e78255882f9b0c980ef6b062789332a6b67b2b78e9e370b78181531846b9980a8af905fef403f47b891a6b440ee71cc5d6bf3ba5c7b087a31123ab61ec9f2d0c89e1eaa7dac36613a15f147938d32673402164b001975d9c4a8ba5ce84d20b47f26eba5909183c6fe1343d062389b9b99cedd21e30d5841fb68f3450a47f4c4be5e8c413c37ea4d5ad629141d7430938158cd04492bba8aedf7477ed13a0b97c8217a300dfcb22de05449547626d21409f491098162d7ab477e3ebaf0e15124f449f08e47d8ec6847a0ac839bc5d237b3d509a8b5c44c8fb6705a467a3d4d9102ff2b6ed976ca9d856e9f257d5d586c7d8a4c2617dca73aaa65719a21538d9e6997c5637df8c5a2ab98a169a5ba8f708bba55f2c0a9463c9b4ef0c9822fa64ecc72c8bda4030157bde5073fae6a6e6f036121125dfc5a9dca1504a1225e6da9db4d0665f6413386153ae25be78b3410369bbdbd84a86c6c7bc924dd70005bec0c54e07b4adfa2daeb8265dd98bcb8968a2f683a3b07633aaa0290550665c01fdeb22398aba31140fa7494fd6a0087194673f51ac7d759d649a2fa4d7520fc67138f445287b681f5c3d1678b497129bc6624163e3515c8381e85c173d6a4cc0038dfc2064a213c557931e2e7138fa1a6bc3eaba08965bd803bd5759332cb1bbc4c41337bccca153905990970c261cf63a53204b6f8cb228d4234f08837425a82f1da9be43775df88a20a0381f70044c76b3524b437cf365cb131baa14ea6f24502336762c8e126afd009e1997b8b3bc20c246070df7b33bc9a7bdfa8ccd576925968915f186ca4a5a4934528dc75282e246b0824ef7118d39dc1f07449a218836d47cbb7365b677ec7d6222abaf33068b5730d9e674cc008125226cbc5382a76a9823db1b42976c5c90c23bc02eb7b874dff93699e6035a838b22a7126aa42d62682505f9bbc77143dca061f5c38e99652fc2e28e30ca8d62127af02186bd9c95602992e20baa636ab050ab870b11c52da19b3a68b7a07a8cfbe7bb016a2537e50464265ff6f065d7a8c30f659998a35d79032f887b4629d07bb2dc895f09ac0387cca9c5cd1aebc08a687798721f24ca43c2c5ad42d1b6641838efc2a72ef210bad10218846f25da336a4c00c4a29eac8a608f2261b8c76b18f10b7aba755771376dc7b876152f9fba5370262919511d4ad50d76aa5cd6566c29225dabb3b668608d9de5bac08320cfc3570a0ac8deb4bbf3d941f9325aaf546fc368af005caab7ac6a7dd70d90506ddbb5f53a83079aba0927bd52a68e278d3f01ac19eba6bd +expected_result = pass +expected_ciphertext = d0bdfda854711dd009645b9d16ca8d8f4e44c064c54bba2037633599d73cd05e6473dabd029e5518b3b9a39b6b01f6e36734b5dcd4f8aadb4e4ed8e343b8abc4732753d7942f22cf1bf6e9b7fe074195d1c8f414f856c8175541cf0745b755fd58be49ed7f6e8c48ee393f508eb373e79a8a06fc0d5696bbf3f8f8270e3e2b890b90946fbbfe694c34d4df5e70a92a2e6acec73fec7dd90cdc7ce99dfc563e9bd766779f1460f4776d7fc223e4110ebd68bee47a383bb5adc2258dceb67fabe8933641d2cd6f973c157dff849f6e190837fc795348d9e78b3aee438acf7dbb960f6cd9de2630b730100b913e856256c3c5d71da1c83bc29a584bceecee94a3a1e16cf22b7a610066603c14d44268dad9bec3cf53f72a0774ab0782c0cfcc6eceb9413769d4e6f531656e5592412152ad35d7dd7253b3e9578d11bcfd7f0cda76f89c5a3db06236c73f580d7ec441f67a67aac3ee4a80f9f56b56abf7debc9ce34dbc0bd01d5cf3bfab83a06754ad655c1610137071067feb622ff6afd666b74e52df3d95cadf8b05c5e2a20e3821d6e2620f778cf103af079dee56604169f3fcb4170e5ff130bd6365e3a6de215925f4388204da9579b40e98d5831c43fa0d9b60fe2c9f95cde75b2b324f3353206a3d978b805e524211f9e257ef0ef5d391e4258141b489cd52c8e1aa96e5ceef558308952c3ac6b9a01b5cd6f712545f686f9542632e748bf6b492af2c94e8686687189e2b330a71de41e1a9ee6e6d74b95989dc6412302817081b68d1739c82a2f9a532a58c7ae6fd5934d04aa824c5d1ec5201b755b3761a3756bde866b085778597087f99adccc1ca9fc04fce92a423631d4756cfbc70b7b1b96ce5ac56bb61cf14d84fec2fbfd0f62ef4691603a55b114d2216a24b4f6ab07fdf35d7038610882a7f34cd9958d94c9f0b99ce1e5601c72ed128db8779ab1c3fcf8bd8be63c01dcd14748a01e1d1232210006f4ae5183904137d04c9fdbc76e9cddba4316c7cea1eff42e9d5e17dea82804ee9cc40207e28cab35b342bcaa802555f35cb260cb481daaa76739911a4260f26e9567033d69337bda9b11f6a1f88cb65d17ae0a5cead6cace4b93a1f8184c6303cbe5695d37ebd3a7e27f813ec8afb0d18a72968048d27f38cf9de4cbde27b674a672a400aee9cb90c5c170153f56dc3ca8f01035ad173e6931332180fcb2a74e4ed21d6d27cfe9329dc4e275416be050300a90c12cceefca2bee8bf52c71803cd8cf39e29a51b60f188bcf905eb3c35039193d2d0852a62c8543c82f3b2b3fe3e4d51e752eab0130fa0b89f1141dc2f1e73536b8a963022c2a7914eb8f80f9af9ceaebd96137d17c3172bc2af2f819e0899d9e55fa39d6a6c7139a8a2866dcf41f46a78beec546de4b4b47f408128b9317b04949e6b083976cf9e0fb6031a8b88d82f0f6dc64cf5334483a339f7b1f157031a13c751fc62805d6d01295352df2a48c1520fd40e2924e8e7d5e4728dd21cd7069f85913ed776631125846e2e13301d8ff7f2 +expected_shared_secret = 3547a15b5748990a5436bdc4db283738eb7d64bdb6ff566c96f7edec607ccc9b + +comment = Official test vector 37, seed: "d882ba69ac8bbc88715f1c6387531f53273a5dab87e66faa8221a7f628d2bdeee1cbc59c0e08d0add84520a3a70c1389" +entropy = b2c35e33c72d90182791f0e12a0324f5b216efcab2c8da1bee025dfbe13f4152 +public_key = 99315a88d083bf5196f65cca4541bd4ce3526e514dccaa8ed176ba58014bd0ac486056240ce06c6c182040606dd98978d6cba367eb0ec18401ed348743780ddbd277f2ba22e1b34208f215f8f91a048ca497ec37a7663587ac85f221810e64acf87478a101062535287250907d0854b93a9d4bb39cd5788be361c00faa87bbe078b26353a51b7bdba58d17e5496efb263df826a59296a13535abd799cb931fa5886e35476dfff97e82870653d5c4ba09c2658a9a22838ba0c6aaa4ab7b19699b8b27243c42634045506762ab1817534f419591b04622c650b828b3d4a66d9b163d09847bd172ba8ff452759184c07b11183665c0185e0a089c957135dce64bda52338b6492a27a1238aa567f017dffa796de84532fd5bec8fa800ff4c5e34791cc5aa02901b73885557cba188f72ab5a35b489e98ab377691033934029118a34af7d176a436139aab3ac127a8f510c8719936e8676caac2211c8292a42f274c7fa85c542b21422c5790079f34a26f0678c005818bf4981a2b4c7db780c0bd43ad55c0acdf1ae0e0761d7527813076f3174a1d49c74659a453e09c2b4468de6f185d5f3c04f2b7e59e05317586e743285e6817283ca11faab44271a4667912df262c0c03843730acc24e80e2ee0251cca86a83853e6251e3036714576b1c171a112e7a15ca215f63039aaa7632ec77880b89ef8a45cb0b3746202ace1d7221fc98afb73a28a6ac2ae443f16e6072d6b3da1a3be5fac533a9175a5f176fe131f021795f8880d320c6096ab63f53525d01b32a2ca90e1a9138e4ca72502785976bee4e566dc0cc1f3827733b0a7d00cb58b6b89c5e26d2da00429a2450e269da77c46b5c954cee6bdc0339ba357a9b9951802a255b74a4f4ca1297d124056147a0f8123eb903071546d2c22723367308601a22f199f9588734fe1241450a45fd7395df965f46574a030581cc714a50c08da03a51b367b524a2ee4e56752db9b66d9c6b07702ec23bcef798d68300859383c5baca9d8f08b71409ae5552209b5237e697ba55328a1693af7fa0ba27020de2c35f643514db292c061c8e2085d06c101644c94d17c07560811c093afe61c6b4ffb970382ce9fd25f76c6728108842b3841dbbac62504185edc32dfb817c45878189a7ac02859eca77ab445797e030e910243b121a859a05d8caa3c32fa54d033714d20a771c7cca73999f6d91d4db4683a9543d3c978f1d56816d75590642cd4aa7d9e9c709c6cb5aea8832d7c84c576afbc837b6615b8290078e2c0ac9a8ccfa8338b36649b9f7c41d0064dca53b8fa1793cbdc8f7b75306f19c4127a214e5532884274646b91f49a1e36a3b42cfb90b27425d2645c5acc2482289d0b4b84a6359007f23b9f528718e6c499590d6bb2a5bb674e89561ab1a48e3988927ac41d05ba143799214701b2f6d708d365be84baa60df8bf7d969a425c93452a0277f218790c80c60b4b59fc6131e7865d1135ac84a6655507c1d98f6665c932093d61fa578e7acbfdf49f2e15c138bab4152c005ecc44fec299094a285ff50b09388b6ac3972911cfb8ecc9f0ea58761741ed23ce16fc02af5a341f65043f0802c0353d987c718fb72d3d922cdc861bb6a8ae003197c8f9c878a367c021db7e9273fe2e03a2716683dab6caed5c770f6e7984 +expected_result = pass +expected_ciphertext = 65caf8276607786d9560a0d97f5165b79d5e4c80e07999acacee06bb02246f54a362cde4a2e7ce7f7119e974d8c6fff713df67997041a7cfe52576028d2c90a456390f6004f6e7a5ebde39dbf7aac49faa5060dad9259525da2b466d7da1c3964e94ca16413d7a1ee28e7398b31a0595bb3f06e8eaf26c350f27d348e957bb7ab37da03c120e61be9c4a7dda41775eadc1911a31bf30bda208db0e51dedfe7ef0421f35c2be9c891da2c636eedf8f46395c1ea6d87ca96f17387e444e22a586b4e9818a6cfe7a972fa3a6acc7583be04facf1b9c76cfec8d8d9d4456227c3990ba386bc3b7f8fbdc1a492f3c1ce46424248d6da00e9ac3f868312bee1754539a44816d85d9d2b9764d992728837c0765b9d03c7e8a070de91c655bd3b2cd1268f2a310ae5ec444281e87176678c6f0194d2640459a2b9a7867bd519ae9e092b28910dc45a32190302d34dd90bd068ea9c5ae9443a990b33818beaca0b6c64fe67b847819b943046bba7af092f05170f6a87310eaae2a813ca69fbe6b20fb7d09835b2a134d29b1018d6d05d03119297fb0c53526514aa14921b6cad0b89117cb9b80ff669f635652f67b8e9b26900278ab879f2dfe736284d501b38a48286e29e43eb90f3c6162e3db81ac69722145cb93e57ab98cf7c981ffbce25923ae7c2444bba4bfc007d1f7bfb56beee3425d6420a4c6952a70f85941565c83d9175b98fffa2b44a3edfd3d9665af0ea523daf7d88c739ed491680c1fcc0467c7fb2a4626d26f970f034062acec4ae7a8ad10c3ce34d6d2658a2d3be94e97929faa3e9e76f20e8e1ac5ba996e6bd2be769213164de7fa49d04e2dd010bd56487cf5f00210ffee81030434658e0cbef81757fb3845e3ee5bb126fd6432d19861c9a59a1382a542f5607e7686262f577ee7a5fa51257c286c173e6694533dbe4710e3a9ed6516b61f572bf9a343c0790af2160c97d21510df91ebadd881a8d3b26d5449ace1aa07ad01a192504d95f4b9c352bd000313273a62d099b73d07bffa85dd4bc5ef80b715186e0de4445d30a3eb38059ccf1c3a6f1dde918bb6034bd58975bd891b96aef7f570e9b262cb3b0e9cc721c4e151c1cf055a880ae794acb5bec31b855df972c7a642c28a15339064effa3cc97a9b5136f01f1e8d10b497d4bce88ed4776c23dbd1abc690a233377b39a4559c6e19b2b008484ad5e0ed9b0d449b908e20f9b042105064fa5fc2549e680f038aa3264df28f763db9db51e5e31bf8cc057ce596e23f8dba50c35f44c50e15d08f80422530cf2dafa1e0b9d250ee61b1672f2d01f82c81e396dd1b5d8a68af3635974f0f27242be9e7573d0813e3e77e1811635c0a9341d8647894659cd00ba490a1076cf2ef0c5c605c95cf8ff51ac83a856c45a903179ca136e38425fe005bc5c74aaacfe7f10cdafc5d9690d5018703821b168cd112a45cb92197a50e2dd989744a1da2e70c05ef4c770ab75678ba64a97521a112f579f9e57aa6d966777e128b979b85248793655296fcddd9c8e0c7 +expected_shared_secret = 852ba9be42763c5a74a75778eb839a3738a8ceed1520b0588f9dccdd91907228 + +comment = Official test vector 38, seed: "6c3aff39f5d097096d882f24717718c8a702382dc4aaffd7629763fda73c163cf084807bbb0c9f600cd31a7135f48aec" +entropy = afb7d6dc2b7eb6d84acc080c1be63c98afe7b07786b5801f716444a3e8e64800 +public_key = 2e7240107059c16c3eacf4a1a8342b73911db6a51d3cf12bb168229a1b29f7c334d0d1ad99932f21babfd8153bae937fdd2393d9748518f12689ca7627a1041d868094aa7440c6724b4430ebd20776b602940c9d1fcb5a109978573434da891962b645002508e46992c0c148f5a039609826baf5834ba7271c443b69dc5110c4b7089068d16202cbab2e1e4525738a19c8315fae806fd139be91f4c1e192a2c04983291340dad4018a8a83c27a57c622408f933a51b7618148b16375a80e0a901f10aaf6e7803cb2a693abcd4ca8bafb942086f42f6b743937098e3d2a607f212f766603c9d89accf7ac584491f230bb1108b1465b865f824215d79fed2525d7e95c7976946e22a9e6510afa2a9e8af29ddb65c47be8820561661050b70ef3b7bb249b7fd0cedd688c37d7a3de667626c2b389b38be066089405703bd51fa32199e9c83d5265bd62a2aa2ce521b69973a18777e32151d3d5ba1983c8659a79ac978ffa15ceab733b49ea8f7a853d4b06cafdfc64c9d00e55d814536171496037036a078d026164d7b07e3277b7ecaa770b06dd291b9ad29241c3bb43553bccf66a1dd81fe2e2bf79f1a21e1539d0bc517a9ba8ede2c39deac4cdb7c65ff96048461ba2e350017095a35c1bfa25c242b000affc8af29495a2d349133c343d680eea815cdcd89c4fc283cd5136b89abd473b4aefe2228f4cba5e0c10ec7a1083833735f081034aa7bbf20c11319ca263b52262096e505c45805e73619e2ceb242e559883d20dddd4120f0c9e49f4995376284147cc2d2a96a046bdb3f56b6dc1889976ae1ed732eba43af5941831b2202d6091c16b680001a82d98ccccec212b79b5a884756c75cb2545316fc072d903c670864d5a13534e545d836276ee594d3a7841e5f91d6b738d97e73a7274671d6470cd2719b0515fdd67c6e4969ad213254502c5ac9ba23c264a375237369b46d0c45745041a20511459d3321ee9b395978f2c575ebe1c6caed03afc7027bc457e03f527b0ccbaec71850e0955f0a2b54d9bce69b6c8fbf90850168adac411ad5c973b578424c55ce01b3ec2825b0085232469968b8a96fe7b9f26846f789323a15aae6397242a712cd26b0465bc038a4aa30dac42c0036c062c21c3a4178a0c92b8992cbd54a6044b789d943f1eabb0bb24c3d0d4c067251779374579b27c84fb435e6c745334485fba84676750a27c520f79366d008e4be93fe8a958e8d06b8ec323bfd5bd01e86b1f13302eb17aa3aa8fdb3445ae5775111b2124e2a35021c04945661b2c510a29264ad855836c7d8eabc069011f8814934bb4b32176c0b59b04c5fb6cdbc8bc41b0bcfef4423635c0c7ac43e4d5286c74920ef37c951266b92074d239b2bd0a0d6c096141fb6a718a213a3387d75b927ce176169738abe0cfa6b68d3b064157c3cb03c5793a7400c1960351b059e43a7f1b28ae5073780cc606f7e40aeb458dbe95a31c23af7e760001b0bd601647ad1805c4329e46f490575ca928fa908b5a30fd31520c61c9f1cc5ef18578b350a929164de33b008338180ce41c45327152090a91b8c9b3928c2629a48d78abd1992720e841a52ca91a15a1c7953d18b4ba1f990af34ca408ba2d449f94385651c3b4c0503726cafa118167110e848fbed995526b458d362061a1 +expected_result = pass +expected_ciphertext = 9520fd68f1a0428cf46c71f124f0e6f3f21fb2d5fc390d54127819c49541346d0da18c5e2d1259564aad5a1709d33a87ac8f070e9509c6275217407bdcb1802849d2d6428878a121717b6359e8aeb075304fdafd10a6e77eed31f4dda3dcf7550abc55cdac8476eccdf9b2088559a5cf7cd00c426e9cb3a3d3d533bdac13ea257641a324719a1c92b3f27dbcef88916fe9d7e7494a3b4134d5aab08246923053b3500dcec963dee7d1e483c20224f480fe6c2606facc609e7fd47cb0d70116467153719562501afce27d9d08981254b96836690a369c9fd2cca3ab0399e8eb794295cddf714b543612303b44b6b86280feb547e36e10bbe4fd729f3a93297ad20fbd53b665c91aaa966e7b0e2e143505f4b4c930cbf0c19766e0f045fc3cb21b09df4331157a751c8daeda28a8d515ca09c53dc37bb9c1d6b99c4689316b79f4745c969f10be1f601b81b989ef3599040917d23e20df69b716794bf332e9a31690749319f08cd3de0b3fa6a820fdbede2c8af4c5d1cf5176d6b457b8f57d18821ef22d16544f4b6f3450f87a181fea90893f917f379897ea322aeac04ab1b4207fa1723517e4831ea7b2c8918040c995c3265748931bf9bad6f66a112954de7fa799b75ed1572aa999d91232c29bae2f5372dfabc7bc6d5dfcf96e02747ebf039adcca1036b4b4b13c59aa330f817c2bdfa29edb911a613f5018128f72dcdc73dfe06ead3b0bb323275e3a74ab23763992031f66f20ac134a9e5c781c5948b533b08d777b4cff4d74edaff4cb27025592a670ff2aa74332156b4917f7ec0da54d58fbc7cc63b62d3bc1aa420b80a7bc4cd22a237c797fb633ccb0efaced8bead400b623e0f99d2db72cb5f9e8d44f97470917c303f4b1543346c4482532f795202c131c9cdcae8aabd5df2f3201e9dbd247979c1ad198ffc9aa45d20d052f48d3a675fab69a6e33e1a46f50413bfb73f377e260e5b150a859ece8eccc1d208bb6f9221e145f1a071b3fef1d6c4ec186fe8eff29129a31a323e7c6769eedbbb125c57b4fb13272147f631f5089b6b49b9bbfca3c20fe7d0955b9f9e2bd717a8f14705b5785391d28064499c5c1af95fad2f57e339e14498e1b4f2c59265223e7362042ee6f51541483254c9184130e45372be466796a6349cd59a002a3f0458bc72e824917a13d32efb7dbb3898a2cb830214388db9ab1a60b299e8671d42e92b096b704246140217bf522ea5db18d65480b23cae658bdaf48117aaaf3f555aa9521174247a31847dbfa4e592046fb1f4e60606aa894b2e6a78941c34fe79bfc45143ffaa8954388140e4b369a224067450c6d6e6e39348d8a00b784188a6229e6fb983cb103a30c7c8bbdc8ca658edf638a6acf29c6df500b91ae0c9cb9d8beecd9b58ce1ac8d1ef506d1bd5961e7080e9a78d37aae5f67ff01ab1f4afa1cabe98b5fa66e8f8c6d687a271c58c6003c6e499445e4fb9c85b6dd5ab4af31a33b3fa4e76bbb29283a9bad6ab7d9d2cef241d30fc01123a3df4b47fb270c222bd5d +expected_shared_secret = 618a8496b8850609c09dd1d18798ee2bfff3ed7ef6f8b8034fffcec98f291d69 + +comment = Official test vector 39, seed: "cf520b92a2e3677afd003ec1ec6ef136a709d78f828c9c0dd4946efbd451c5faabfc83ca66f9d3d17ee4220553b7a69f" +entropy = 28f5e9dbda122b2cf8f3754fe9e0c73a84ad4b0c093522e0b62cf815d60bbc3c +public_key = 45fc2d1bb1872a743763f12d29d937f3f2a41d257531c1172af59c90806c7e5a15972a8cb9dca049bc92700a72b4fa5a739033437c946ee062aa86c12103b557822a08084be63c4c74d1b92608c3b02c6520b2991f8499470114fb659f89a937a25897faba6c0dd142d8d4868ee3c6483128241b287cba0ae49430dd6a28d1339605a4b750e6029f73baa1fa8ce6219c36a40e5542ab45cc781a613fdf416502743df8cbb3c4b864d0b448a20c0b0942a829601f2b131fb038587a99b80ef44033061b2e4b8f9a12c3c03193506b62aa1c7ab08569c7d0a88c8a098f87061ee41000fd202e2c3af4e625b34787bce55f74aa58eeb9124de7089e51a581893354b36fe035ce5fecab74018ee6209b75fc2702429c932abf71d89b8c82c047d77725cb6ed98608f2ba0b3462c1d428352c6376f6269d9869aff4bc821870b63f2284d296677b6145683ba6282c12c72512ef015eb19ba86b3571be7438f17311655c118a530266bbc6d9d10636b6347c630607864949dabfa558522c100f6c7941a076109253b5ffd76328c99590f48b3fc7ae7a5847cc958fa5523f540ab54ea0a302174e6c401341759c121b355c9280d2ab6a84f9028634bf7e3ca90679aca188667d5086df35b88d95b262e8478561a414b627f43b0fb8731d3bda73c6396594694a9f7024cfd55d3ab88342516cb34a922e6835eb8c067bd35ce0b3711d7bad2d7529464c493adc40d8ec8679c903e8984850034ef4a828d3fabcae9474f7278cbe79c8e5c1c948b94798d4c68da8255237ad8b0b38cd4a8dfde5abf6b2cfad98a677a8c40e208206774661490c3c212d23327a46a23dd6855275b78d29830b23900b13c638e31b4745a917d4fba95a04956c371212e475271ccf94f6295346118806316ec01d08454b0cd922d6f1a3e4a651a7a931f380042a09244bb39973ec5872c28c8d41c4bcc72ca4409a363c49995c45c7909522128c03814612214a5eb01527b67bce4463202cc14e31225b36a7d7d10e26966beb389877ac0062f9172c0517ca8676f5a44a10106fe75a31a4aa86688c075918a4d8a7461dcc1ea1193913c259e3b44c2d976ec67613468358886a9108acc7d0c6a25f5a991d7c53b8638c24a585f07aa074b5a2cb514bf7178e14112c8b31727a38bdd20a5ad087746768957f837179d50d25f6697f4a88d056451a593e385b74de8a01cf0244e70ac9ae36b2d76cb91e5419165c6507d141148869d6676f28645653bc78c96b9e7f382cb0c6768e2968c513c7ab076928781a6530cd3ae3286b0c681743a58d9c524be5120c880605bc139f672e30174095932a000800d58a926cf40873c44ae6096940a3bdb6e7966595bb3d23c9915bc7e29aaac9f0344c9b6bbb25cb0aa084f616332197295163989e1448784082c327075dacbb7d912025e4786710b0c7452f827aceda11a73ada09c3e54b404419dbf3a8f8b6096a73528dc50fcd230155a97a614663174683d1095d97b7c0e994764df2095ab7bc029b7dda3799e5a88ed825cf1674aee01bb0c17a5c84b8ac1ba061302ba9cc20cd46f769e1021c03c43ab07bab1bb0c7f3426d252a15ed5a27854ca7b177a6f79502789842e229637fd32a677f68dabfa371062d8b8ce9dfe0d90bf06044ac3a840ceb626b16e134 +expected_result = pass +expected_ciphertext = 027cf1e2d501b25ffc3a13f5a9fae7f3535a8749d0005ef28c3468d95a2931dc1d4b6908ab8a4d22012d7ae11b21d594275a9288ea7f12fd1c5a18c9bd13741ee16bf946383c8d18de5a8008d98187a7b55a42685a5a79415cc55dc2bc2b81dce12cac0494ee667b948f6bd14b8503a0bd549f54cbec3e1ff25aaaf142e03c8461f8fcfddd4b0ae1a8eae7f6eee9915df2f80c501dfbadd8911463b73d254385dd5c6bf96d3295495b27788822759e13deaf2665b6c5fe0b2d51425c447c7ca06d0d86e803194140433bd02877ca9e47c23c28133e4463fe0bb00292929bb4f7806cf8e71a0b3bab86fa386fd0611f96d6b648a30a079719a283f02116db38ba5b32778f15e9d65d11fcba269dd19f85b4de540508ebee0142a10c11bb0814e0fba0b4d0d951d0f5ea38749534f0c3b1f6d30ed9c17e13a817174844d21d399b36b71241e1b49e2ae1937bc6d1a255f61230e2aaba3432eda6da8c0e3a7906f07982c5ace4d484853c4358401745ede71fd8984acae82d098d9c72a0f8ed9ae7a0ec72d69cfcd56197f082bdcc04d3b81c2a10dab91e3a4e4c15b815d0bbc66451bdd5d7293d0f7823989f7d6e2704ecda52db3562cd2dfd139e0e30603c7f3317aa2d4131ee7bc1f9aeb697f4201505c3c102d42def728dbf05a9d55714da3ab5d4e8c0a0c77439118f804efba1a3953972a62ebf20da30ceef4dbeacf69746baf9c392ebc4d0ace031c46eb4a7fd1466ebe992d6262ed24779c21f17bb3c20b63e716ac68fc90fe5fb1ecadb031ce87f6c2d13abd5c2dabc67e726782f44498eb1dae0b601863c02f13d3ab7eae309c48369fa77a7ba1f185547ce10696da86e2668a67eb3283074c4e3b7b8fe27c6c81060353eaa860a89ab08259ee015deda20bae823e0c15a6734e835ab4e64b540963753782db41b9451083ab2ef38e675e1a792678a9b0a42bd35586576cfe78cd86450db997759dbd4f9c4989b777272ad6adaaaf4dc32199fb0798a11d08a006a47ffea9d8f9a1489562effd9741dcde99d267a40868a781ff3817080eb34bb931b1dcef5e4bdc7bf904615a2e6353e1e6ebdc37a85b9f81f72e2afe2eedf6414c07c95fdca8a4d9b58f8d4313f636c3f6c83aedb5e76c63abd838404b1f86b9ab1ecde167501e9a732ce656efd9dfd39a266f457d3a73879618c46b4c034f0d2e6e76edfd39154c65e8e601f40a5c199e802bfc96af5e557c0addcd3cecdb9e7c7d35a5c66d485b18def8a814321856019808746fa1df56994240d9f0684f6291d86971580f85f706a59c6013eb57a52da5b4d15ea564214d2106a1f5c131a6a8ad3f83f86bcf9a8623069cc8df231b7bc84147155f1f7680bdbb7e0dff61706d849aa7b89c549f04d3f5b53e6440c2ce437c65731e5d76fac50c6f310ae3734e4fa46f75af8d8aee4e25b93e84e3f7319fdd8bff9bdf3bf18ff433bd5a7af58e542bc91ff81393d04794cf85bb719c6e9397f355b201a85202de2dead155fc4ab4d01a1bb379e71c78e053f5d46 +expected_shared_secret = cbb8b7a05f48b47d163cf8c2fad32bc586f47f2c2e0911da349f29b1e3286c22 + +comment = Official test vector 40, seed: "197e5d562de7e01bed4fc597db28dc6efdf0179f3a5bda5f94caa39d67bae730540534d59a7a06c8448f628da8b7859f" +entropy = b0d713cbef0bb1df70cbb425d1e9373e9f7790fdc7980cc96a240dfc53f1e8e2 +public_key = f6446774b30fef5b426f563962cc29ff78ade42b497dc3b970f1b848b1141d7a5f45a37c25b125aed61863f22732a06128bca08efc8cb176ab6343239b572e1c8c138d829810227afaabb81cca0a73131155377730a120558231e8f8a598a2b730578edc7800b0d6c5627530ee92930eb2b40a9888cf648263b688f0a12e08f004f4bb449a25282029cfb73c32f8d31229d0a58e6aa08698517fbc5f619837ae3331cf763631d305e88c8f85413e9d5420cc282bad24a783011184011a79a3b305db5b3032b75c55907ca5c7f839320028305c439c39484895212b1e87925999681819416dcbc7ead45ac2b1262154bce16866c04561eba2c9ec6022b07a57a67c7b901b5da3bb8025c7585c86bda0810c442c39374040236a82884199159729834663d3b1967df9955de3a387d93d50f5001924c4fe433d016bc2b6614f2d3ba72fda226864ad6ba5b8c31681dc104348ec2b29c39fc9f567cae17bdf1c6e215c92effc60e2d6a3a3106bced0bf301b542f7987b582b0780b6d398631eb8559459b1db01a0443100dcc731291c737499c2f86452394c0b6662401fb57a4db232e40d1b0f2511ee1eb15dbf7b603e2a67808c064fc5103fa7c9c954fcd12bc619582f82590b323698a328cc14acb87c217e39c309421c7e6ea15ba6c3bd8587126c5aa02c26308c9912d7262dbb91ac2c2cdbb9cb009a3ae10761771740b2e6558fae775deba7a66086859270ec07b584334900c278002d8a47d01547dba3036336616a8c12415b86a1423a6c9aab5f085c7fabb6355b3db4023e47c7917c10c284333110bc978b2c08e16512ba95a07237cc35c97bfa51bb1b25e30750e65664377ba49200aa6e935b4c7451e547859edf03bcfc6904df05220c02f5e576604a873ee82b7693b962853b5522a5b0986348da63df86a64671737c17201ed556e92acb56f065eebd31bef43ca85db1feac395e19110a2f0c5b90459838cbf779c27247709765569e5a649bf160301003169e4ac2baaa4c4697f25869ab99179f9f792d9b19df0c148df7c6b9aa20e63426697d83a6e33b35f4c7e798175bfd73ce60a050146a3d893c4dc9b2fabf5960bd80fa0679433bb33bb91915e93c1eb2aa16cb13e0b9870fef99835a674b1bb76946bc4064cafde3063498ca30aeb3983f5cdb3a6b9c4970459d969f4d8b6ba27755b6ca8fbca178dec28dfeb2ac03318be7002a9a4cd7b1749a7fc7f09a6b560740da89baab8130872510c99630f3b588069d50a9550c97f8198b7a46148fa7ac1580632db1ef49528f9125784a5bb2757235fe44e74529a7ce88e91543b2ff81d9ed78e2647aa07033cf3422d34942e7830191b104c7ed56b8951a9c8706e4cb33cb0b918387b869084386420c13b09be75d2a5e9276246b674e96bac7782541e1ca441e53ff3b9c702cb95ceab628d1617704a448ef743e8b811fe52c659cbaae22377f28646c45642a9886628c9b73c510bbfb645d4077c1d8b954bdc8b707b7f6bc4701bb1af0f28b88dd282b78b7ee96732521aa6180b6021aabb415839dc3a1f6f545c1320c58b965b62993abf6a10c18a22ce6a45539685f297b1f04a130465845d189d17552e2f4917e924cc0d2dbc2ddc739f6b876472eb12ce233ccd402ddef61523fd6fee69a88f34a34c +expected_result = pass +expected_ciphertext = 3f6f05da5d7deeea60bb32a85c0fa85f2f6339a48eb45343e20ad802329006d35743ad24a30ea7e1688ac9870485fb2dfcec77a5dad30ba75d613ae6211674f12620b2f84e32f5bab410123f921d8967d7a1b8ff92f4d17885b2bfcac31442ea09e40a41b54588fca2cb4624663895a8e4990d121cc261d97e5211ea06e12278d550d5b0d5cb815cbe7a6b5c31cc01edca9d61917346ffa49163e363b1edb342d496dea50d463c3c330cd453b903dc4b2fa78b93e4a78fff529fd38a1b57ea5e714ff924c14d97654d390b8dfedba47034db426c371e158359c733437cfb5b0bb39b1f4b7cd3874394822b9d137359c7dea734e1bdb51e77373f7e6a37561a8051fcbde5da7f65f5a1e0dce2b1559a4a90c0d0fdfc57e11d8e8ec81cac05299b3f29bb211756e3811622b768eed23d84e20ff27a2dfc7738cac348a938c0b51f6e1340587f2ed4cd05d1ad2298dbe751863be092d8e0f9ca870cc7759f898cf2497249206b14dca4f06783d7b54d417fcb578904d87a674b82967a820e525bf1c708246565291998d83a78feb27982b3d7b9259936eb08239455fa099181df240787c3855e564ca1d53253e45d7f12230ed2d623e7dae75e53dc57c41678b63f66622f5b762abf5374a01265d82eded50bda26177a09007eb30d3ecbecdfd7d7f9ab455949426773a03f628ae86261c11e6c17b276a4fdb7745ac76c7d536ac83a7805f9aab8f86810f0250367a86ad682c070367d6ec4d11581fc9d0913daacc0053f381218f5aba830740bf531fbc9e823d71dbf1d8f3bb2f2997f8a257f02fc8b6b6d9be236e190bb0f83794824e6ac07d6727add717472a0894b27692b6070b9c4197d0af9db339b9eb13630bdc016bb43712b92e79c35f8be95d4469cccf385a15cb76a48d0597ffaa710d4fcdc62e9587eba1713afcde87efc2dc6002a2dcb4105aa473c30a827d8d4ed21bfc7da7293617029f1f0cfc0857dc11c273c86e18ff68a129a74039f717dea458e3fcde1383d70d800b3d369f20163d2eb0b3333267ca8428c8937ec809f33d3f532a6fe3054edc3e88505f6e7001247e21597927729affe877ac665a6d606c36cbe8fb737ca62e2af6f6a3cf6a1e3706e5259ba689c4931b88827250f0e1f5e5fce0e6d2f8930ea41f3a80938d9a50c2ac817302d7f60546ed233185326e8f872558ac16bdb5c16c132cc2ec05c2b2a19912ae41d900274cd8d9c52b025246fcf14ea1bc299efb10cbc74481a58a5a7a284f3357702556441de77647b29a727455f4196960a10b86e434cce0c69dcba15af5b1ed7762e7f211b34c3a9223959725e181f0a2421586c6d36fe7d31944ede70d63e2340feaa54f1983a3a37d834c2bfdb9470fb8df5c9c4ede73d1820f87961448374b19058a23970a63150b730cf6a7816c8ca21145b2cdd46ebb01a65015bdd5d982ff8e03dcc1adee845aa5bf09a590c695cd2ef7f5c1edf40f167b28a894d9c33baedad48da0afb5901a13019f72c3147269bb3f2cbf688b2dbc574ba43 +expected_shared_secret = 1eef87404f318351413d52ba8a07cfa5e72f235d6f91afd7fb8ad3e683ce0a55 + +comment = Official test vector 41, seed: "f170583cb451d8a45d105457c02c01a33a40350616ed8515bd49067142f61efb00f07857e4fff3fe11e7164c648c76ed" +entropy = 32bdcdb7059fe27f6409901980c080308951ffd90deffa8317b4d213a5f04495 +public_key = 5fd557f7434fcb61b199e793c5e763764c48df412acb7c756e1370cd117f8c10cafb39cbf0c8c3f5dc8da1855203d02b39647856b55c38e944617b8348d16a8221962a42398fb61978f40328c83a0b49bc843060d1711e289434db4b5b0838cd87949df5ac0727d8a528b8b5bf30ccb9e37a6664050cc5880d34c13ca42c1779b8d098c5e0876627c17a79b6bad44a9a38c56883d97cf2d2b114a1c4f1a502ab4a9b7b5398d9e73e543b860f87062e27a9fd1a2035185f0d98857b0759bf1c39a41984c8c1a1a9027944417f84cca0dd4206e9133f6eb6a989075d004accd9f57cdc928cd455443f0222dcab9a8890004c2596efeb06903b5d0af33a88f14fec760fc074a3dcdc744e9864e7ebc608a56002e483e60b8202b31377dc7f5a486d5a060733fca9836aaeeae05909c6b6b0db4531271fe4f3548bd5bff1e92160321218f963081c518874c0cbb792fda4513f7902be6547745a0879ba6ccd7c0f73b123dc605bc7995bdd14b018d8278c8c3966aa87a24b4a4bd3abafe0c8173c028df14daad39c288943eac139210392bed70c38d7af7439697be96977d23a27cb6e7de7b785673c9d1b33a081a9cd417129430c6c6300c496b04e1796c9c781e4211915162de147501b7bc55f8913c66c5cbd209ba6d115f753ba739417c8eb182200113ce17c935a0622dcbc674553b9dabcda17bdbfb4865d58143c149512cc2e74a2b508f67be8058461252d95042f8b7641e1d85161521b81a616a02110d7ea3bca4723d003a4db1673d64273b34c9432ac981a0c01dc8b8c0ed5a05d20c5331831ce56014ab0732b301ca2f8569fc061ddaa95d63667b9acc7a1ea656f821d55a31b41f32dfb3b66ddd5cd2155438db6923069430b61c85ab309bf56b0ecd990427c1b7d93991e783a647b1dd66696659b5c926485e1642854f0839033138a3a54c349c138977275e71e0fe985493cb85e0923095804037462ae248780006d0778334f664262e88498fcbb22d46d4f4291bb90afbbd40fbf2b302415cf195542dcf3375e78602fe1067638ab995b70e6dbaf7b75bc11701207e489f361512b590a860401a3facc1ef1375d8b64e0e5c7f863786d3984710c2f55ecac578c41170194d832929075671b814fabf45c6e2bcdf8c0cbe2954c5a414e3f8878ab68ca13189d97f316517abb4c5187dbb03413da654e650ec1cca0bc9472bd4bcc60ca6fcdcb26e77a025eb70ec0e60e20b19d30fc261ad11d3c0c56ace53de82c6a38ca5d59e9c24568b7cd15a0531315dec20d9cc957fcf8958e3747471a8d944a6678f6ac8a8763a1759b3dc83edd18ceeda5036c31a897b65612d2b176e9648352899bb2869f48b1e70c1ff04864487258526226a7dc64306b6838f4286b9a81a3193f5c9c711dfc5b9fe79bc6cc14c934591f93860b66511aab061295af186b8ceff5772fe50dffba4f5256522b5c7c55a6ba9b13b615fb3b3bdc4b159a1c84c85d717824a0573cbf219fd9b2a32ab66bf8a498a04aa4e22509a5057997b74ab5a1b27b96656bc194af08114551709a41142b715c6e167e5ba5945729bfa702c236073fdddb4ceada972810253d642ec094333c028b0af40ce2e29993369eb7ddd07164969a62466b80918873a4ea56cd80a8e559fb30f6cce44f1f8fe60a +expected_result = pass +expected_ciphertext = fdb35f966ebbfd16a07385adad48cfce34f8e312619d54fa614ae387f2d7c1e80f07d8233ca39dcac87d98d0b0972d96058f3d949dbdd749a759c31ad696837f7e687624d20d6a921ef055a55cfadf48a5952eb98a1d1508dfaf0c83d9623f08f7e6424a5dc45de4ffe226b3e1e5d5ee5ee53ff0a7e12a2497d5d4ca14dccfe23eb4fc26f27a62398d4f1eb268565487124306da0f7cd8a89e4746a9f42180ec5aaa8ac3d821e3f24cde824489fc38f7f26d83f1a134a19929e3ea4f3a3eb13bae2434104e115e451d7a7dd0732f57d764d7aa63399450b5e3a74bcf5cabc0b597919a1a14d6112549483e6d918ef6c0c1c8fc71ad382c63c3b81f14ce5a9c2f57ec3a3c58d643db18637a2e84c1ac4288dbde2660f34f12911000662b519e69e2aab4ff6f7093ef7330bc91b6a808487a5987389e380a2bf5149e955349e378f96eb17131d9d00b218df9f9de4a607614c614447ae1af7b7880412e686643396720978dbedcba4eab3de76233545b578ef85ceeaef3689c0f7a8e1b20c601d96ba4d9f2326f35d60a7c30b17344002cc37698fd84536fc9ed0848b12db94e17862bd2cea1fe8536211bb99bac84097d3a81661a452d05ff7be7f1a9febb4931351bd9d9515b69ce4030157ee5a468dbe9911ac26a93478225cf10d79ad86c75ab0d2c825cd43292515a317c1e9ed74bf7d51b8fc88ee3573634586569375c91731ac0e4eabbcceea2ac9efca2c8f9de612115eb02279826d0212de5fb25327084f1b07c364591e6fe8b1c647eea063dc923f2dcdda841bff87befa0feac5dae47626125989fb007f89632b87ef8318a2b0a669c554a830f29ed10cbc3820f1cd4bba6fa367ec20665858fc1033be26a443257a43329ddac6683649139b13b5a4237643eae57ff3a65dbf70377d943f9a88a8a355f32480a739d6913c0029ef691b6f9e14d8bde603b2788e9d1169086276702ad55fdc02832033c729e6ddbb142cda0fe072fd781072c954f07005189612db4ab774664793f8a00942d4d3304ef7d412f5717d476d67204a02667c3230cbee8ee41c6eec7c2d3fbc3582a7584e24b71e1e204a98c8e0073e068c6bfd607a1bf9ae1cdadd86ba48478b051411adfa3bef3dfb021f0e6acfc17a1722d0fbb802657ca3a1a3bfaad6f244b518284e2a88e7bea955e41556fc97eaec1fb6864a2f13b417984196ccd70d067b1d746d332062b2998c51f89ff9e7493b17562dace6b0f0dc521bfc2f833a405e1e5263006aecebf880dcd2cd489aec589793e4ab46681ecfdb07992f7b32973a179e7bc03ee5237eef3352489d81aec6a0fd039da71590ce193003816b04936935ef214d109c20c02acc085dfc79e4e4dd8b0640e78e8a90d45a421eee92b4ec78db88d63d3d21d5fe2d2550ed3cebcfa7a326abf3883d003b415cd3fedee17b934960bc2c2ce114a5cda73f7aa783070b7d9b04a7085c76d2862c9920e88e91c1639680db6b03b9947947136f301f4bb33048c323e061ba7948e1e058a01a9277bf6 +expected_shared_secret = ca2c0bba56645e4fce4b7e38a7bb4b839e754bf2834a302a2614377eddd6ae60 + +comment = Official test vector 42, seed: "44a6774b2cac02dff210ff861a090561a453db311f47b6fedb81811872d5d9489f5fc4103010139ae53fcaed209dc9be" +entropy = 4ed7c92d83bd03b2a25b567f17ae55542e2f6a4308ec0f3fe69f8ba5ae24331b +public_key = d5f135d06aa99635c9b53244e1f898d8494b681312bfd243c8ea5b7e71ccb7a5386e477d01fca3ef4122a63934843450a446caff55184d052923a393fd887df6b045659cc282d1424b19b17cc2a2384132eff067a0347f88c6b392aa56a3519a440438d3f90f6941112124c91fc31187ab0ce6752d9b336a1e230f97837a657599e253b7798c912a66a48314447c352b84590941355c6bd1c0951374105858a46502ef39cbb58b8e63a64e2b99c4825912155695893a62af6745e76058d551a946161f25f1b8fc045602344a7f342facc50e9565c1d59a459d34233c1921ceac6e0bd936b496c8fd6a619d8b0649eb458f8943eac97293635092666688db559d255ce9f280227755c3605d6ed007ca718527227fa1f40dbcd88792801d8db6b2374a23178a72276c790f902d7e969f2686c9508186788905e77132dd909397f6b6bad3ce77e8cd4c4a3b9686cac35abc86d57e911cb58b0c997c1935ca64918370809d3b1b70cb09641878e7c0a141573030aa2b687761bf43ac89a81e73376793ecb32db53368ec9e079172e9aa482fd8652583b9155683da3467e4546f26ac98371487527c37b6646ca582017892a188fb2440ca7240c3c22577230b59ab8ec038bb95cc49c2a2f59a4a22c0c482713544fbca9d7404b3a6ad86e8764a601b7084289858bf62a2828d3091ff015089726ca23b1ca0f87195ba1abf80b01f101f8584c15289196744500000b431a60267174f2cc56860bc5ab4ec20d19ba8ed47535eb42fe1d33f2980ba211805a3618f2ff64d1cc634caa6b40fd23615538366dbaf41971d8b5857298c1e406a293c1b8b7f4a499a97be8cc51b5382020ea9c7cf809fa7323134290fa461218f4a6f495caba2d1511ea48b7e0905b0465f7a6711f2716b17dcbb4b9a1b31933d7d3622315c79f3f11a93c8058fbc01c4839a808a5d2d45b99f7918faf52db1d81d669c7988ba7eb8847187ac7b76404b1a139dc4e4917c9b4e29833fd9fbc36e4bba96e25bde691ce0c369ace7183c762bd04785efcc6b614165c014a0fc4b64b24b3b46418ac5b6b7bf69cbc75090b69aae46b4a12feabd4e134bcaf14922367b50f17976c6705e175ff34612cf7b086ed733deaab0ca815a53c99b2985963db89bdc284d251340b0e3ae20990ee93344dea18063db6ef4374a331244ede00b46676475937a9472c82e124b1751a9e4203becc77ace092b055abf0892637b39c3a9a011219c88139277b8bb73b9508142421939380acfc2b81523c72e923609a0505e2979e086ab85f9663e549f3350a694458ce7b02bd8716c0f8b8946a21d99d97632952bee898989c1adeb710e15bb25b0a22be598a65465bf2b899719d00f9d16367e9436803ba8c17b6b3bf62a10a017c177125396bf6745163fe24c455319cea69393ccbae42508156167b28a1d1050bdefa5a789bc389031bd86e72af5f5bc80a215260737839654998295d5aba8c11a5417b55d67201243393b7593400d46cca1d321c027bfb09cb08a1738c88b7d47e876ef7517f8d96cc1c93b9e93b7062227a55996fa958a684aaeda89587b015a6b336dfb610721298ac6ab713f3a2e37b2aa7b1ccd2a876f03c72546b861e351a73036f4b363137340efa7764c439f68d3c8e0723683aa8254a66284f447 +expected_result = pass +expected_ciphertext = 2726c88c44097de218b782b16c655fc658d29386b80ccc0168220bfeb554b12a3ec13ade45147b3b68cf67384840e1b011b86808e2b922f7b9e0db40b5ebf11ee131a1b4c10a2d350c1cdce92b330de7f838e29062bb243e25f2f62422ff334f7ecb5863419b44024039d1f900d3a21f5f48bb78f066aa726e070711973c1f8de28efd8d71e0cb5ee72a9d675974c02286b56029dbba45e064bb68db2e25131243d9cdab71d2dc8b56263a6fe2b2d6bedf4cdbea2572e333c4b062c91622ee60d1e506384e17a10d08d61cacd407ec924944e9690a81d1f7f989cd58c243607c4cff68058ac8c970376585666d146bfe8816fdd0d20e13bdc0afd88ccc1282a17827adfa9c927c55ddb520c248216378b68908155a718f335c39d0504bfac4a069aaf2c64b8cd935d5494e31a399257997fa8df3c4237e4209deb9da336d4cbb116c531a8cef2f0be5184dd08668630632d030831dc13652370f0d7b54aba8b122f968b2e00af4a5d9c1790554b9077b2fec861ce9e8dc89eb21c23ccb68e9080c2cc0ad9dd4c3364183a164e9f57401653cbf95d0a58d289f481a38b8b13cef56926612848fad81e5f2a1468808ff45bef6de82c121a8d3e956710b5a0a37cde624d1aff6efefda13341a7cf6d1518b633f65fcf0b3b91c06769f307f94347c7e1efcc80e02e823dadbe0ffe2cb7f3bfbf3a60e8dd31506304155467d28b12740ad712177227b4468d5f4bd305ddd6341ba68ceaf4d4fade19fdadaa3db805d37671f1cac1c57882bd710b2a7545594320114ecafd0fda32fd9e06f7cf2f08ef27de1ea119239411a10598bef458b8f3604ba82afefbcfb7b6c92cd65e92e7518f506c684b08d156032fd00c3803cdecdb92351ad7a3b7768159deb534a24c9642684389399205a8b69f52e460be217ae7b5b08e8c1360b6ddd6ff35462d9066618ca07836a136d044794954e3812e29ed9b200d250f3dff0672aae2509b4f32cbd580631627085147c5fd76fabf284b88a836fc4a48911a892f03a92a4a497d62dfda5b71acf4dc4976c7670c88993a23b1bb0c21f6cef59b0ffa88c4c50393355a72299cdb456a592deb3f749e1341826b3e89c4138badfa1503041e50c70f8236ec881b08bba64c46d611e160cc9765c512574d875b50a5781a7871a6b4bdd02cb344a586bc1653ca974adb1175519a0371695d2490a54b2ac21d53916d584f597f7e861a051f93b64d5219339ec403d7d537271d5d9928e1530a6c6d0fe8e1055ce1eb70e5c929afdfd591cd8f9942b6fe252fc98801dc4ba50b9a9810819b1b245ca74a6d8238a4bb7a64cc6f3c7c4541779ccd0f8509d9202a88af0ab2552417b13c075e1c609af2281740847648719ed72e7695af239e0c288bd630c72d5957632c76e89b0c5dbbe74ced4a1536b1e7fbb2b7e6edf8feec8223428616ea5f967ed05eb2254598f3572e2627b6035025404911ce26378e8df914b06c6415e528f9e2901a90992a5eeb0a2326c8076ca8da8a80931b222b809bf62e3a5 +expected_shared_secret = 9155619e28de6cc0670ce70e0ad270f0e885e5f5f8d6d38426938ae1036d6ffa + +comment = Official test vector 43, seed: "49e1855588b6235df2a400c4a70aedf8ab17b6e5e2891aa745f132fa2e7ab0c8117c1df37c39f5d57624eb77c2b4a091" +entropy = 060ea5d2ed1dd88144a9885e79278590821c22917b55a48920f96b53ebe0e689 +public_key = 26ab73a3355199a1833a1268a37a087ddb57ab621046db1f407c804c488e4196048ceb762b9024c2157e7dccaa1a762881280715a1467e766dccb159f4780a39bc4f4a59715700070318c2ae03706b639f79a8a81af34fbf6c9ace4843151ab5c3cc81af08ce392335e4fa913052119904745ec68cf3502f4663bda74522ddd61a318539e10a853bc90a5b06aa12018c6bac4a8123719c567719cb723b420540ebcd84c2787f37a76c6c40fc983436c26f7fdb14df17062be752af2c1f1cd1026856500f3831cca75eff7a08d4d9c819d295674550c1c951ff9a0155856c3cc143824556c09025d55b0db7192d969926c18912bf5ca8629401b8c53e23832cefdb369020583b360595541f48573ba1557fd0c1058a8cc5ea7ca7f092b7dc7b4b04490fa4e72a37aac0e33b1746aca327258d9d29acf140c5f70b8f94a23195d60d30a498259c6f9d06bd69f82398953b4fd39adeca972851431b59c9614b7867cb1228e2519ac130f003903d801f70bccd776a9b916684cd89cd71723ca732a21fecbb90d547646b987155cf5425abbb2406cdc1821afa8da120a540d1c3af175032444e1fd85f43f47903665be922636755b5e75a90931c66e89345f57ca4a032959bdb4521cb62bb1377dc5c99fbe36c71347b81a80b6b7251fac3732475009a719f4374bd5ff01cce4601e761a754e05756968f33fcac4d6a540d93951d0bb4d0d838a3112872020c2dc67718888dbf408941b877eb6543432675c879aa85f102e608aedf267e32d333ca9c3860f907f17b553580aec75902ec304e6c7996ee34061b40a9f4f8ba2ccc55775490dc9c2a6d5c0134e809bd305d7445c9ebf7b89f9604146b2e55a1090597033bab2a25a3886dc524f4908adbe98dc2d74386806ad641712d9c23a19562e4ac7f57a86fc98663e455bd963c4e63d8471b504c14eb718d8bcd6475cc45687f55099f8fe2035f3812f081b6df2a174999765cd69433e5312be67698346fa1030a40943f8927b2cd8a1e2cf2514333bce85a89a6a99d03c4a5c0b847550972f9d1448d1819b3582b99a50ff97c124398cff30967013c4dc4d374379b4e8b037eb0e570aec147a1c99cadbb651bfb576ad61bc5449c5737bc4ba4a01f24aad80375acbcbaafeb564665a192211b4d6918260c1251eaa1014c6f41427465609310d8b665c6763639c71ad48019905cc0874be438023936856017b5562a9ee79686bcb55e04a38eb9b3bbfc07acd4865860a77af3b5acf7db344f139f79d5953778124c2c92d29cbfedc21678e54861eca5cd350fa09b1365fb74435316f37386b9b510e2bc585da30a71ecc7b9913921ec8d8fba2dbc97807b693b1e306832507cac90410e0576611ba79c1ca9c0b106d0147680790ec5051798592d3035aef57a0174cbc70b435710c51695852841907d41a8180123a4d911787b674acb513c84047bbd5851c3e83a8a046062c06bd84397858241c95b8d8d2a2c53038856247506065a70a5a29b701bae1b488a68c2bf02472d86bcbfe263e7820902102c612747cd60344957a871c7774a0980b70b56f7bc45f8e2bd2085af080cb923b55640bab2aa2c30f206ccbad17bc9f58c1cda80399962268f2ae99c43bbc1fa7d8949cd772a745bd9ab018fd3f6ed02f32cd2bf845923 +expected_result = pass +expected_ciphertext = 0a307d1a8a695cbb2a421d2c316ba05165535ccd1cc9ddb641b9edc8dacfd10d001d7dc8166a7e405f6251abaac6d5f466438f4a2240557bd7cd6ef811d4e1334b76274dee6c34b79979e02db09a682b3f965d6356e9fe640643b03c9d3cc37af284ff51f1ac542060c0377df1bf3f577d387c8a5adb0b0a615e9d93c7b54a6c7e3593ac118fdd7cd1985414fdfcaaf20b5ebe647a7de9aae9b43f0e1836493fba2aedc459aec78bf697469daa96819fa276113504ea82d956255e0de55f8c6268881e2795527889278ee674580866739fe66b66e94ab71de0f7637214c2e804bfd8414ffd95a5aa0d1f694760169455a5d47bad6d68f277279527e8d2e6e95051c6c92fefea4e07610abfa63ae90fc38d3b819df566ff44379354bc4479007adb0fcc603a346debe6a2bf14afd1da6e6c04b1483637f0814b5bd5f92984ed8f895c35c9f7f2fb5032614e52ab183639e6caad3796b9ffead73a9822a23e997e0c99acd309d93d227b9bf1297edda5a443e4b01a0f67e5a25b2f395635a1fa9d25241649767baae14de7a4bf3d5cc8d7360460ff85ff0cdc646a4a2f8b5d1edd9e88e353f4771b2395095026b79daa65e25bf9c4d19761f3e9bb955dcc6f2f288b1537b263a026b7067a309b08130438db1c6790835695987b705520a215118b20e636145264e37a1577c7466de14c26e4c372b33059bbc913a559880e31820fd0be232eb7d289f5d6e9abeebd9018fa4247acc708f602b1e8692ad10b0dc6499f0293d1b0624ee40d7f13b235210087be1a8e2c709b88f6460db6135ccda532f8061772a5767501750e58ced64397bd0f7a280558e86d7fe81d34a24d5736e4e65e118c7296b020c55af0887743bd53e2a60f809a024c68bd1324f833e8e1d505080fec99b3e2098df4e844341f7becebd889c15706d7dde9dc754b6393da40167a2f00209eaf0583ae4ef4048dd026ccdc2884f17238207afb355a419f3666f80d963f338548b6fad3c9b4a569a964691f8cd20a1abb3e01fc5744aa4db5ba0594cf863f566e7b3eb401e62e05a84b30054b7798d5b81bf994a4fdd3a876b46898820fa4480dd9a1a5ca970b459a4366e5097b6d792ca598ba6785b0e3328aea07f594706af89d88727a0fd7a5d16604766aa73c21081303bd676ccbe0ab287f2ae1ae235fad0a3d2346df4da3cae145a0d2b7f2a70dbe3cc70304ce49e528e1ca56fdf81f33267402d271203b8990773a1fa03f18380efc7dab62ca34e28d5db918dd6365c2d79ecd5d70c95a395211afca1a0542201e731e61c1dbd31316dbc41ded48e70ef47e4fbbab6bab47a56dbdf58c5d741008c74823561937fecba694bd31538064bf242eb926875b094d0282a9583886bee06c948496c24d563210cd96579dee6de96d29066ad4e1f9d1ef1ed463f7c9d21bac44c9cf303922fff1337fbfc5b9559736801f80974dda71ca185baf31f4e0e2936b4d3ba6f85539816b69a8d433d84a7a88d2c3abacc5d4838fd3c2952f293a0adfead7b2829e4d +expected_shared_secret = d1f24383d5b8d0c3c0a6a5f8f7d38ccce13ec179a84b0b09bcda4c9988f3eb4e + +comment = Official test vector 44, seed: "df0e41d2f6f86c1f79d31fd5878e7ab434fc0af3a0d5f47d2ab3fef31a42bd949b0e3629df9f575befbb62e829e51dae" +entropy = 10ef9426f8c4a13b52325c5bb4ead4596ecf2c6b5bd2d37d8350e90d4164fdd9 +public_key = bac16e6e3c5e5d9c8ca207a5c77c7883b917fe0463d3101962b802549a87bf39b9bc7a30a5b654c9c96b14bc61506371e4768429db8f7c0a6204903b9bc9311c66b907c5825621b7ebfb52f6c7cf75c169c17129595631a2fa95920317aad4cb338329adc69c6795158558638c474710c78763e012240cbdc2e586adf93c028522321a94cb766f9e983fb5110a10476ecba92fc0c120cc83632409940db249ec569ed5740471c86623b06962910307781349f342c759886f7c376ce708091019fc407eeae76409387d151c97cf7270319143471a84994bb596f9b5e1a78d33428740fcbab415c575e478db4b4e30771802e409b8c1ad4ecc9cec1b7396e664645cce83a40d512684e0b2750d8445d2180be5b4cfc09bc9fffc8d6e49b49d68c4d849b584512cbb55283722ced5566149811545609a4c5459f523c1c76667859760e690385f65768331b7654c30b8c0b26f2b8089a3c5b4f21eed42179c54ae61d22736512fa3aac6eb018946a47cd79acd545719c829b304477541ea92b10a1ccae8b36ba83d5ad83083fcb51df653ce899227c52581699b7150456cfa1910212f7678056a33755ddc7d0648164aa297f196057060009dea8d87e86b6abc0106a5536d7c83933ab12e294b4f50870fa0bea16ab49b88a60ba7790549ccc0e6571e81875d5632dd8a5627e48e0395bb4c243ed9d53cce7b591949408d2c87a5e295e3c3231f4132e1117b835529456a53d3d748c16280f4d597573685b04780f611094c665c66164a1323c290ba8c8b1031b142a3b53062ad5c59d8d112f9926e5aa591aba711ee2ba1509aa09b86c60a969020d74e238b849374bcae7788fae61296d5ac7ad0927ee30912c4287e3981b7851d5823295076365196bfbee4a3cc189020254f31b06fd8d70c43a94cf380c01936465a334fa59b3d39296305dc8b775269ee204639bb3a30ac437936cbd734a5c6477b2a451eaa0159e571bb12473b77698621d5247eb5012f608c6f070a67551f6f63abe87ba12a56b2b2dba44bf72e01c9a2c490579d2c103ce91a841c4f4b3aafddaa0cc3d33d31ec3ffb4a3f9ab87f93494720d386bb13cc482a4adac46395479d1421aa91216bbf56bcecb89f11588b4085a62ba0a47ef9a184c2c9346525ce006ca4819857fac8b1498c9ca1222175ca5b01b6bd502f69f8977a0b3b04987a1897a8f2f20dcddb098ad070d15c15c099a5672c17087c6b58245bc25c382ed3bfd5ba9b8e48932a27546a089113f37e8c85971fa10d465970d61446f106cca6200f85eb2de2947bb4ec57e58c1f7be6b6fbc025a4a41eb05c516578ae9ba4c197b692d20976116ba35660cc5b612b616269a837012230b65f2913e5d0362d0b510f1272716a4dd2832d3bacc914929ff33354c01217d8a0745c9263b5d80a4f497d99d98a4d895b59a59a1dc173ca6945fa54c398f351c8c3ab8d66cb8971a68157ce3ce82104094fc83c7306d242f1f0497180842beb8e126988c5a830d2a39c2711b033490fe1d53e432c7a453b4ceb05a5644253797135231228f246bc6a1445efc16b2f2bc674327a62ec32dbc209f2c4a5c600920d2856dc34549bc4656f7953e697cea6f2891fd65321f89bf2d90cf3dfc681c2fd81792135e1938ca482ef3c253d8976201852444e +expected_result = pass +expected_ciphertext = 39acb3d169060aa5a9a7aa6d76e53f8e4cd790e536b1947c3f0e5c084348c8f3f5712ad3ddf33d798b7522fa7e8f570108897391abd2c0ef86e04823b115adc2f106ca8239a4f8a52d38653c256262aee0b5560b9f74e285ae1c190d2ce0e0eb65668087b98ebc9eaf32db83fbc09b83410dab78038cfe192ae229ce2bc82fed7d653ca71fef58d6f3ea9acac45967d09478080760dfeebf095d0bdf723836903b8fde5b3e74cf57a1edc1d178bc29c6cab5c4381bfb591952bfc70444951193c3bb0fb8645c7d9eab913d64cfdb76e1a2f02bd7f9c98c8042146c5428d641a79046d92aa6f926d4409f62ba47f73255ca57a781cc01f2a6c1c5bcfa890ff164910e4780b322c4f2a0ecd2fd2f8fc7a2870fa3c636afb0910d25b4c56e060bb22e969a37bcdc29f3a3de70bdca6a59d803f59a942694db2cbf73de3a787ea166a1c111556c1866468898539a7f36f2ed7d15324b76879af9b9b70bf99546345e0ec17fe6f1311e9f438dd92cbca8a02d7c3778f5b88f9191ad12395ffdba04509f3f338b0494ace5d52b1e8e3534b901fda4001d493f9b83f89a30ec57a5aaf4d5102b82b0451566634ba68e1f7e93cec122e7ab4f250bc78b6df0a9b7d84a4de5fb51e1b7381497ddf72ecb010832b5e0dbd34e41e1189744174dc01a7ff3eafcd717dc2cb56cc145b6a8dfcd404b748a1dd9cae69b1f3db48e414584d1cb902904b7652512a9f191dd7a95ec60d1387e1bc4b6943c7a6bda205343e2e67583dc06c72495722a678ae50ef4a8eb0caacf9a41dc13a56c5dc3e2d0b98d2804fdf7a43d0fa2d20722405bc002d71432424c88ea9dbdac6e8dcc81e660e85e4c650a90c7e6d0c50e5e14a2919b399b1838bbd7543bb95275e341ce086eb85eba4dff4c9d3aecc99829efdd0d68514fc304e5e2529d04c9fbf79897620d9307605bc566fc6ae6f176a25ba26859097a241974cdec07837a0c1cb86e00fc8f8a4365a7c348379eb60f12e0b1253f297fabf6e6b38c9cb226f14a4ca9dbcb1120969fd56c2ab38dd075351d33f853ca3c24f4afd756370b0ea4dba295652354b89d004854cd89f57cd583b7a7a415e48e4a5e38941dbcb1c0e5d55c479a871b8eec04e4d5a73c93ad1a7183093c28589612c6a4041d98809db41238efab617150bd9f9b51a279682ae75fe7a057cee50f9a98d6abb1c7efdc2a0b1c0bbede9e1d19a2762047ecd4f37416a3f86dafa241e078b3defcc414afe25cebda4008af5a356d10ff83dbcb6ca1e71268f60524849dac904d7c0e638fa3a0716141bb8f5c019228c930cac73143953e4cc86c554ee7a700bf5aeae2c8e872da8fe7c6f27d901bb74d87e1f1626fb53ee3bb080c21fcc41f828032214a738e28a51cd5085d0f5a0b15629268461561ed7caffab7f22c2d00a2fc9276bb80e9964d0bad8a5ce2b627479439a80587b9e22e0b579c59b59ace59510c206653842b2a4a75d38f2c7984503ca35a62952afbbe25049ce84f5eed70686848790a96f42a3e3572f130b2 +expected_shared_secret = d2dab0b39b7f62de3ca9826f9dd15a4201191a0e0c690d3e52b305a9d3af2d0f + +comment = Official test vector 45, seed: "d3c9ebba6eb03ccb5c9b9d2c8d7f0cfbbf50841e24396cddf0e56525b38918c2fbe6c34cc1b93f7bcd4f4d5777e1a488" +entropy = a4bd30a64cbf29a4e290fa1cc1dfb99e68348713041e4409a1af23c5d80c15c4 +public_key = b873b2397a7c7ada2f4b0b589ebc97c50174e4317ed5d9cf2878c924937bd258bacbfc83283a218d443d8ee43f8cf3c64459b189e6b3ad100a6c6a3ede9916f89b8bb67cac332c0519f502a4c427f5c9af1a16a59a2122521a0c624a20149765e986339ed63567cc29cff15d7e8ac026c96f08d6ac4e057db4e66361b18ccdc3bcffc300a996ab7346232db7310662c75b39ad7aa080b23763ece54960397b8de836071b8914d56f95a681accb8fcb9529e5e4cfc2ec0601f7b0b291524e180aa0a69fa74ac2f17aa88162c481f51543a5a527da5c42b59f9a72b14dc91574b51e5806ace3f022d1f19e3eb621560478bb70beb8407719a01e16313d2f0c785e3b9886f679acfa465ba974676c0689a149ac04996f4132dc4974f2fc322b56115a64b0b5dbb8dc71869cc655dd61390b032f062b024bb71505640a41cc6174b68870da11eaeac28ad061f3abccf4e12231655eaf9285b205251ea69371d90527793495835715ac005868a78b1cae80025426848c4ae869b52034bb266e1b97480aaa7a31e384780442d9933fdb750efaeac0bfa802e5314d28a17d374caa05b46121e16362e8341dd923a66872df3c942177b58951c40ad1641f53a53d8708ebcc22aac67ef262b6155007dc6880a1f45cad3a5312b282055b1e0b181d9b396591fa78dfccb9d6a92d5cf8189c14c68cf4238654716f0a1e4f2542cd35a7e4e2185814c1f5b16d8c423213c69d5958c46960b8df589c185087ec5474df3c5112b5bb6bbcc6ab7160abdc2ab28801d775caafa049479a837cfc8847763559ea86239889385baa43a2848b489087fb43aa20acd7ac05606767798500f9271271e52032f21fc2a82d8d15bf774771b69c570ec488053743dc5398c4363aeb3932a5c54d16f45a033386dbe3b2d0a851116c2cd2fa4671b95cf7e60bdcb4976a2393647b714031870b1a6b2d486a5cf2a8093b7b948c9418f3a27f6296ea12336b8a6dd5a5715ce9a70dc6978038369a10332e3ab6c2971961d5c66441abc3290113b21c46e96c509aaf09e658d9b77928935b9a122e42bba23f920b58ea48f3f19a7924128669c09e135f772c275e55904400495153a691794a8d182ee1314446371501e87c41a944f850c9cd288cc2ea90a4e27864c79e554cc5924c4ca9a217dca424ee8b76e49993ae4b085e9809eae27401eb9c6c794a67a31705876243478f86d5b9f9cb3295422816526439950a412b4d1d28a70c6b9794c959be155aadb39e00b418efd0664b08843d20b71c547f1468c5fdd92b9d818336282f34f19b515946a7961b5a9319d9444cdc1aba840cbb57272e4da4ab20facd5fe4958a57c3c812978fd772c2862dea8b60b30a601b692dadaaba0f361cff27c5c734a42265341641b861b7899cb311e7e0acce396bce2809f24289c5361b91cba88493991987c0aca3b070411481e154104c15780abafe725dd3e1adf00bb0eff4a29298ac10c63fc0669df6379294aabb4588aad2087c9c16c9afb654f0c9c213d79cee1a843a84742d574de252a4f24795e9aa631d5198f07511160300a2e02a402b4cf8aa556ce67bd341307ce5a1eb6609efea3f066379865489701783b2c95ee6967f0893d44d76104bf396577fd719d69eb306117f3abd65385a87af12d1bb6d0433 +expected_result = pass +expected_ciphertext = 0899b2fb6c3e1b50c82cc10ece1871e4288e619f6f83fe6c3373b7aec9bc0fd4fadcb8a1cae8c76f7bca200d22bc19130fd47fabe13d5af97b927166a5cef08c3b54a9311ca168f27252a389b41cf76b7ed09405d0805e44134bd0a90c29e28bb2488e063debef324014a7783cbc81741b0b7dc2a471ef3aebebb593d995b91eff21343f19521523e53319a21a03996e55036989a3d2eba8986100188daa5b243ceb9bf10379ac3cfa54ddc3b83f91d038c9dce1238782129682d38b605f652b73ea182b0ac01460fb45f0c05cc545808b87f84f00d96fb14915e1802dd6456f5466f8eeb70571afb129844dc95f87bb88d4270edd50971247ce1a2c2a07573d5a3efe3dec8989e9670974139102270b499ff657c2ef9aec1a1ae2a6a0ec968e58a0bfd58552bc4ad2de49df561e1c59c471990044dbd6f29ce4509a92466337704fd9deb5452b6d2558f2f76d6cce661414872dc0a0b9faca3874a9baf70c07e72562941e9b74b027818cf9e20519ff714f743fa7a53a778bb161739efb49e8cdf3ec9bcca18a72ef9a34f3cda4b313710cfed57e5bd7a6801428f7eae5b531744d8fa5d7aeea0bfd0b58d7585e328e065908fd9b4b853041fabea2acca4875cbbbf2bb73cd8c876fffae08c5c91e6d0938539c1c6f96852ae9c9aa90865f1ba78e5a17a00f8656ebd1e52024c940995b3b38b954d1bd3267636c74498cf4a996ddb024db76445b9d34687edd5ef67bac73c01f3a334bfc866a2fb036d2b00972ee4dfb7c6e8748cfd69698e0ffd9d9062c00ed57285cc96759fb99dc1ce49e6f76a18034f77fdb1dbb83b8926e37ffe62662e49a8f42d7affac1ea512302cf7f590865f01aca869188da43018a3f21a15b917e2878500ba1d1a2ac7e87c0f06a23bd20f7ee2e7399fad9a0f728161b6cf3ed9c4e57e66e71deef1838a56a70d4b59b4b49e0411ea09c91bf5fed61fc9d1d164a9176cd5ea8cf7639eb9896529260a8b76e2c26987278c11e0129f3ca598290ce7ee82353af0f99e15baf1470f6c3a2b3dcc141fe2090f87fc43cbe17769b3b7a5ee05cef079d4a153f8f160744dac6d5a8b208b544e51e75fc9a332c5cf95d39a27b21d4f98ac411273b9605068e167a583f8d43d6c764c6974cfcbaff4966ada842b9a60607b17897ca32793522da30460fadcbfc25e053d3f14877852769bd2d55fc27363b8e9ece93d9194dd65305b0b251479f0a90dae87758e08f0b4ee160e3c31ffa7f1570dced7f8a8a19f64e5df2d77c51696569049eedc6ce026f9228a01aa3d9a9a2d8a571b124763d1c9456fb695ce0284ae655c64315debec95c5587d25fb0fe9be32146733147cb7988bd8e1d9256e460958adbe92dd128327c0d4b7fe9443b01628260ef3edc66da4242077f1b29ce31d9b5b31d328972652e81b7d96cf4661ea5910343cf07007a5a07a87eac17fb52813ba186c499db08b584dafb6331255c53070a5795540ed2927ec82ff2f0cb4e182ef5517b1110646b2216ed6eefdc130fe528faed +expected_shared_secret = 6869ca370a496af2dbaa866265d91ba6be54b9686b1b8dd5714f6ba861b0d1e8 + +comment = Official test vector 46, seed: "6b3996e8bc6f52879f2b7be012c44ad555707cb7e5fd8abb3457a298336d6fdc9eb7853008ff13201d5969a315c7e493" +entropy = f4b66a7d3b65b896dfe100b2cad24b175a1168cfd2ae11fd704b835f6bcd311a +public_key = 0846c63e2c3018bc8733f05f8ce3b614088a787669205ac9889bce2d3b523f366f4bf811f004666b2b654431b135d97a70a00fb9a3928c1a4a2c7285f6f7b19bb766bbe6b966b4013ec06833ec6f1118a772c2465d81b77ba740b7ea33129218542a41e2f1b10f42bb42396e9a6c5011351e783641aa692a982272d9544ac93580fa6a51b8c7b6a4b5b1ce3b58f1d901855bbb2b68b988953ab63607d988999ed96e5a4b963497a061ac69bd90c4eab7c0dc17820b6963b0293d4ca30d82f5997a877a9aa71c5c7893c1d153ac6779d0a88190b13df828bf3afac9d7ea392fea899ef844535187af673972399a5fa31034c02d70b57b97434ecbf3b1985c86ec75b23ac0afaa67225f12a257b78341966bfd2569670680e012899c112ad3873aaaf26d2f4a5c8cc133c92b9a446530c169b6b87b118d03329374a71ada1778a2035986ceae200c763a12b6e2b2fdb672b4d58d8be640e61576f2cac617a5ada5d1b874bbac9d272ee4c881bbdcca1c9a84626012b988395eb5a4a48bab1e7551b6cb57ea7b627138c3ac252bda1a83ccfaad69e38ceda6b149c1b3ba295fd5025c63225ce88ccdfbfa6b3950cbcdf96e14dc0962745a5fa32d10525f71d895a2085620c89024d922359741be366ce9038aa3b260320a456858a7b8d01bca12316e9c6d1782bedcb590a1d2ad9ada0c26d3818652ce6f3b6403c94dbcd1424d090e9deac559472c9ac19cbb26c16e8b27db9140a1161ea96a171728689cd6b6ba0c8002ba6c46719a1a0c175638770cd088ae29a7fa958209788ade14354a1b0880f05ef7c15a6786be063b357fc7521973abe4fcac0a8c26f3eaa052959e2f973709c9c6bbf4c889c8b76c0ac81353b4a4dc81b7d316f75accdd1911df10a7e838a7c2023ea1eb0a956abb53fba02c48396807229f492966796805e04ad62b8107493aab264a5beb32f5459c06aa6e7f79acbf171899a911fa910dfa6687b2c28c1d419a4817abcf656ff669b587b72374f3cc20b92858361d21bb85a3b9aba157100875c993b54ccbc84db2d72374bcae29c5479cc95197e625da047447ea5797551595853651912daec4891e68901bb67faa98bc5050bb50e913645874fb7a0e51c816acc88a7f8a4ad383170a583a2e17b0d5766e12dcc827386ba8d868ee16b2fb892aca3941cdfa7a487c13af9787a309779b759cdc037c13e839314803bb10a3ab19b7fae477c8c322bf05bd3ad9cfb0b241371c85ffcb607748cb518a6c896830b191737ba289b15288ab59869e22637c57019818801ef9a6b7160ac1b5b4d7519b41905e6687b3fa7230eb88a3c9530813561308b68bd2b740e7aa08ca72cd6468c008ccab34ab99b6773c533b3914b19b2b80bf7e783e7bd9366c8962e7f3410f34651ee606eb737e6c9c5f6d306af7348ce955228cf02d15b8abaed16994b56260221beb1a29be5596e204b9ce111127989bd2ab49cf27c976f74aa7b084fa6b8400a25f3c36213f7c2d160045d865c75aa14542f5a4e4d1459b5676491c6a3fa0a2f0319ca1a63a401c9c3a14c94f0016a9a69e64c522aee93e8b96b4f6691322242b20353e0d8b995a6a9129e961ae7349f92c92a90b833e82b9fae1ad459ad417635c409c28f9ef936ae28d221563e30f83162cef01b482889e +expected_result = pass +expected_ciphertext = ed4b1d8efb6224a8c0139d9df0f1dfdafd3a765d70e60099d700efb4910568ca3241f67b34d34aba653d0ee0beb023b5473f34398e5e5a62bc482b81382cda3249bbe50339843c37ecba16481b66da65c38a092a970d949d8e095f474e2deddea94e1d9997001a131e738956253fefb026076dee64e97ceead6b43109ac533ebcb1a05e606f1cfaf62f956bde4963f6b91f3774d4432114a4b14091790ca9a583a3418d1a3adbca8e04944a8dabc7d636819237991837eb8144168f4ad813f56e48aee382bf8e01a837e65a4e0ebb77e5e533bb718ca1bf0374da381fcabc5a38aa37f9a68f9d70656d0381916b7b74dcac08d444f532fa357323534bb7bf1e0413c8074e722ecb22a748636dae0ba5159d071c8a7ab0d2e2b4610e8ab3291492f429ef31f22f9d9a8a209a8fabc2c2e761eafe57c96a71e2cfd119f78c4240e6ef8b0aab89d4a0acd23d319b390a18696892d33de135092fb0035cc5f7e4d221dd4531cf6cca3e0e1c9eb0607cec1bd279ef77681b8ba22a6f8079095f6762d518c7472ab9e7292980bc2486fb8cc80d91fe175c668ba11429bbaaff4dd0088782ebccfae7eb4484800e0a183e598be22a64cc27aecabecd69b73ebe3bba2170db602e9c0e6553081458150f05d50d8a804fd80bfab0cc8119a865d4e558f06a7875b885571be68645b568de8182614c66bf0ed74a9defaf039ee478d1c026112dd94ff4a89b553a015ec5e21503312d7b3e3d163103c660a5312d1b56b009fa393ead12030f50cb495145fa4bf2fb95831aba27609620c0281d2887c2e49503ef4b0dd91db1b6fdba7c133846b775bc861dcc122514a3640c0098e628c8cc8ca313d94a4a2acca1da96ec33efa49eede82545094056ca79ce138b79131ed8ab224ef00839a388b0b5338629449bd5e2614b83ca644ded974a3eea42fa7bf75410a1c52ecc691b9bcaaf751beb00d0acbc5e05c5f1c6593dc674a049f652c2774e8337a72d94be074ec12863f37e6b719993c010a449e80c49998c0b7771abe617811e930300ff4302a3d1901a8a2b8fd5d5a569ea76858dc51c72cebc66f1a2eb7f73296d4bb251a8e9e5e33fc73308ba7cc5412159c0700e8d0a6ba332fa23386c06b4e551c849f11b00deec734870391cff398079a70e3f4f883e5b0c2ebf8d6a52146e62e37d62fc9c1ddbd8b1fb29d6c149d4573c435199056611b3bd76458a02f7f7daacfd2ef1b1ce3da534bca74a4bff0559380569275ba97f51538edc74844fa5a034a2b1b1e99f03de9647172365abf7cf7f3e94f2dc0fcefde3a9a6cb44d0da22d8bf35f9445bbecb3941ab70f0b9a7ea7aac71d6c49789fc72693262aba0a6a16fcbbc0956b8e04b4446b2791865d34fde941716a13bcd76729508a92dc7c5b2d2ff8160554f5fa5ae3cf701aed0d13128a76d0d0ed964da3ae47e50bd49650205effc5fff4d1dc1dbd426aff5d387b47ff9c54d7f1fc4fe65d60600c6f4b98aa53b0fde6a8e7e6320e8e0c98a59cb8aeff013cab388f5ea822 +expected_shared_secret = 502d92b2a7e1804892ffb8ff009987a58f35baa30c0392c83859fde82105a9aa + +comment = Official test vector 47, seed: "730b65ece22de27d573ce3aea7cb021c415df210d228808d91d4f380070ffcb0778b683c71d4853deb569c822765f2a3" +entropy = 1d7b03d3c5eefb8ae5799dc569aa668f1bcb8c86607b089d3530cf61d6380147 +public_key = 964435fc16be2cd2276b7bc78ee8b5c963af2af4673a93940b429131663cc124be5a706bff5c157dc17dc5cbc2a11418dc4b8a28c841c5a831b1a2ba989a20fdd17dd06706ceabc0d20714d5595d54216e9fb6824e3272de0a1e262aa246494152b1cfd95c970f38aa35fc0337b26e76c77a0a76bc2c57b80757550b11807a423b85e32ddb537ab6d4694cb8b9ed58b11c9a6acc746749c21011a66dbd7896329c3a31d0a7e1e78efc93574cb7b051d79188ea4981dc6299eb9bd1bc1a133a41565305cd4a09fbb10934e7a3d132bb0eb83559c484ebc92f7cf93e445020b7187e2705a2d1a8386c008ec7f22fe172088360cd3fd160e7020b6d0c747ccbbeddb1b84fa7549f625dbc064621fc2e13f720188c200c1ac1f10394fe4117018b9640632fbed570c942575ff61a7149a51f9993b90827ea2a08c32a330747ca27ecae452154ce1a6a67a8b63676998af929e8a7a9d2ab709e2162a2e0bc0721bfc7e49c5b2c9ba975b3bd881aa3782391f5cee4cc1835c83732c84f54b373eb18869b2c90e9f986a0ea345cbb020333893b463671c95e6aa07193d06f7e62bf4361cd0009b1e528c85d147d0e650cea7b0c67f1b4fb754bf2f1a7b9cc621d4c34682a6195776bbb9b2cc866cfa94c368a2b4b346c75a2a6bfe946cef09416aef21b15d3c72b7cb408141608c058e506271380841656963174c70e09c1f593acdfb9bf4a3a9387b693f882495149c62a77595574c0bc745b51ba8338c6361a293402e74df74a7a70b49faa1ac4d66b89fb6c31dae59f318b610f00bf4f4a282f752a070582f2f3c141e168f6fa037f23945893766215b9ee9a3a1de662060a5b1fd34bc8dac56c0875a6f82ecf8863c1692dc2073cf517cbed3c362a853beef1a8cf2247000cc4cd8176ce980d683b8ad89b3eaba3b962624f5ab3695fa10a88055ddd664a2ba0749e439a39c6999496999be3ba7bba2ffe06388b1a6c83068ae70a1c6f8a36e788b8aa148933c896eda61efc86cbb7d5c9cc96c9f137c6a9210347289010979bc1e16700a610c7c990d685550f537ab0c45b2bc57e5ef4c08b2220961c6e17e95e2e4482a4a94da2e17b6854ce57c263d69429e1566bab646fdb216e0444cd8fcb7df4168ae66223a0ccad971583b5917c4805271a17b4a1e17462815cb39332699ac447332a3f7acedc03541e93a822a96089d6a1f47a7df35cc9b659cf419bcd2131b98aaca67343cdbafa3db35661c38c0ba1e18043a4c945067adee46e428a16011abfeb58c1bc8b2330288b57cc319389921857c9d015a0471128c34cbc13417db24b91a3567ac299cfa6d4c2f1123661a3ce0996111d340d9613b966955c6a758fa7f3556f6716e5ac7ad3a93174b2032a983cc0c73c0de302f9f83a0de89a1fb576cd3b41505b5ba712c387730c45399b8cf0b0e548cbed984e7bb5095cf7263b05cba437ac6fc369ebca85e0211715133bcc314723d79c9b93abac57ad3d3a5e77f2986a3539eb795a5b4967ac7753115b916236a97900870b658b9d4b3e35827e1aa9adc3500fd9ba18fc6b03465903858c61c1259cf485338cb700eb731f31643b469bb259210cec78c158e3290573c5228518e4697f19171d8f1a3a633448fe9c83bd28097bb29a168db5af1d1b354b6881a2ce509b +expected_result = pass +expected_ciphertext = 74bed33073033310bbce2a4a3856a92a519570deb8779e7b4dce5147f198bd71ee95be287839ebea96cf5b1fb11f274d63ca2b6d14c15e9cf2394aba065c27a94f7c6f1eaf6ea0655fc0cfbf7a773abc14d174ee861e6bab3c69beb678cc362135a5c2bd55f811edfdee774efc6c2b6675c2a94bc44845ed9bc711cb657ae894e80db0027c88935be4bd91966aba98726e111a549af8664dcfa9a343da9db39dda10ca22af7365da7a14d40dea90cb216c902a9dee17e371a538c85b7832fdbf1c3ed0721527204bfd7b75bae01f56a51b2b8c995ed7b74c1222d849a6df69fcb5502898c3e578668595c405a73514939d9b4a0be52c8e7846765c43771083e49ff08f3d06df2252a98ac8b096c729306b47c07b8000d6af8bca84416d7e45fbd749ce32952ef7ee2359bfc31ab36491f4445f231205d0766884d5ba5c32e361a269605a2836b092bb611e2aa1e8d0a761b36c3d7e2cdb14755ad1c79c104f46ae33f615601033a60ef387df1cfc1e2985f0052076805eb9900e67bb1e9048c6a303b6344422a714162c92c9f724311b7581e18b214e27aa099f507c1614a1582b1ecbcfd23b7809976ca80cc6cde473a7046207bc0d29af3fa4c509adf1f199c7171bf6a8d029d7a19e171dd272a7d95a268c6d1f757a65e4da37b8a63e1ad50fcda5acc1c377015bb942b946a0b6ac718ce4caffd229fa6f1fc2f8e02087c72dcad9062d2b7905a73830577454e6d63b602781056a43d5c0d39450fab97b35fa77456812bcc48670abfaf71cbab2e8255b5bc8113fc070dc2fd00d2cd5bc597631bf798858df26bd5d9398e0d3be2b8fe7d6fd5ded8b2694934b5fde4e1b713453b9397b2c8be399c1c835815485518e6ba6e8854e39d61f474cd4ebd752a61e06d7b76a713a7de9e80c6d34dc4069d0492768659bc8888e3d5a7462f820bab3adb4547e50e9afa891aaf477db8f24bc620405533b2e997f11276043eee6a3002ad901654abf4f3a89f9726c50612af40be942e809a2afa71c30ab00045a8d12cb57896e79ea12989dc79ddd43bc1542142c77af2dd2dbdd808f5d2e52f709f18fcc908338e126ab921879fd1931b720ed9e09c6c1e57c58ac310d8f5149037586a0bae9d8b119ab91f8951811ee7426dea158f32a1b7140d4e9402d68b26150288862277c370a4bbf6c296f440a55412cd1886f69d064bdf1ad73a5fc147129ca5f13ca8b9c1c7c816c2dcc2af54af917910dcabd247b614f4377a236aca35c4f8d29bea865858891afecac4acc0c6726fcb3927c12878a060aa4136b4bc3419b83f64920a63707ec048b5f9f1297cd38142148380f00f6d2dde4934ab78ead5c3414b6dde04c49843f2c54598fd511a5b222b5bd2d349b3bf8c555bb3980b42c7ee256878d3a8c8ba403d710a16e39b96fae3526abaf9ea9b99dfd7fd28579689e4f3787ed8000e1876fb531014e722fd2183371677071a6d2efad5d5725df77572c5d1cc20b9bae3fe89b8e0f393245625dcad1d0531ad787f69692e56d +expected_shared_secret = 48eb4b840c0d957f28808e434786c02a8f99d3464ccb3caf91cef4a0f8e70c4f + +comment = Official test vector 48, seed: "5522a5a891a9a9b5514f4556afd8df40b9cec63a01492f0cb8a1db073a285a963e4a9ff2376c88662f7d8d241f8acf17" +entropy = 554f3385b382f4a46314de37ee3885addfc5332bd4038785094e0a832e9e8c2c +public_key = 58718343322db0162d26965d5e946b700ab88d702fd5a1376920b5be702297aacde28588da91c719d40c1fab0af109742ac26c456961338c44c93c83ab58581635499545cca66160e15a35ba4931e2b91fee68a8734acbf72755e8d452d17215457161284435eb6a7a2933c8d146a12679143b80740f68ae052087eeb988771a8fb43b34d6ec79868a0670551bdd19cb5313892bcac9e4fb500d3375ae471a3ed551b2d9c76142b22607615454a910f8578e44b448aa9200d805cf4c15eb635013bb80a65593ff578c794066f05abddb850ff976c74ed6acb4c41064fb5eeab479a13ba57dcacf7f02421603194a3cb549f08c0d700790809ee0e585dce4088f96a740320c57d5a632c8bf5dc173f0f841173aa47ca42004b808ebc2a6a1770ad9dc06027557f80420db47b0158a1d1ff32007fc058875c4f5d21fabb67bfe8909e10b51bb35c76d0605d0e6a97e56cb93dcc58f722d95f33008b0a237b711420a20269a7097396a4a98be20b8226e103cb1136ea3fa39d438b305b63fa049c420cc378392b9f911bd7800bbaaf2bdd7586780c7078dea622df51c7190841585bb16bab9a0d83625d55826e3949ae018e7c4703ca082466b9a078393c30a4f6b7b1fc775c9dff7cfb5909cafbc66ea946e6f098f881b3039c251fd3ac142029e8728082f838a202cc3586672cb6285b021c41e3c16f5787ce6e319d849483fe40d989c246f7c36c11a991234ae7fea68770c79d8290aae3bb72ba014aa1279fd13977a49b0cdd494ca00c610cc2306059b695686399c1590f274f735142639425dd88026f8be0f260cd66672a12b5c7b5c7323408a2711677f062625eb8f3541098d079c13208415dccf3ff72d1999721db3c271f7521dfb0f129b3cb6885310a0689166a3b97b09610347ceea5579650720db621db20eeec24eec2144fb523ed2d30f64b9c6655928b3d06e1fd9b088ac8b7c964213e5674757c7bd48a3d066355f0249a50548f430c55a6ca0471953eb7c67e140aaf6322b7741225931622db114ed46b9ea997974c9ae2f54b87125ce79e8621d712688b50c7a49877d52091643a4a43148550135f27bb30ea131521583f5b79255309465f4b9f2233027855cc0e7c93bb33705136c88392cca717254640c540573d3a20032c9b297eb5b02c954c744c4c6143a56eb48f1d15439f885803ba5acb524f3d54bed37145cd9173ed92a00f724273787cf1b89c788184de0905bea74fb331ddba00cda70c1547c634c706a8447145489752b0633628ba4f5286851e1b5ffb8a7fa2bbad3f92c542ace74e67aa07b467e70b6a7d3056592b36a7a37c6c7114c610721e9c6ea933742e43609c41f6f3803e99a8d5a27b069bb73c892bf07524a8b2989633c96ccf33791ba29f3d575f249c640093046d1684fbc701ac633381bb349bb7d351230a8bb1a22223de3850258ac7043b887770a307c3746002cada2826e47f7694ef51f94fb9e3645aece6273298592bf00c0fdf14c07d8c9fca401ff351d2e35491aeb55aed9b1b0ebc2424cc729ac7eb07630b8b11d0e47c323d6b3c0ba12dc235d5c310ce2c7bc1f0a8467d627568a185855750e12717760355a0b8a756468e95406d375f6a1289b8cdbfed9f6518d7031c57fd3455d4544735cf52680424c90f14f +expected_result = pass +expected_ciphertext = a36c2589f709a16d07ec8ad94f92a168e6ad851e9b19ead54651ae5b5135f38d38eeb1e3ab60526f5724ef7741cb2bf962b4675042a9754227472604eb1ba179142c9b91a7cebf0ed64537618a70dd66f63c0e52f7c548906309e8fdcd30d573b036afb4c17cd882eaeee61be968c40ed5067b4d72a2b6a49e76a3d77dc36f1d9bd051bbaa501bfc89d3eea3439cbea585073aa09887d504d08a5cd0da0079f0698655ef809603d27f5b3c3146983c5fd8ab0df9d4e3f8b6f4781d35972425e13d03701b1aca48b7b9c87aa449bde4e4c37fabd70a69aadf9170359d1cd8d0c87121e468c385f099209575bbde29c5eb745d90319e96a1163867264383e6e908b9aa251547d15f8d95374e4e07b8e10e7f70758f19d76ab0d255d2870086db6070b7acc5242f92eec7a784515c584b9a831659ac86f3a610a09500b3a65a1f1c309adf2e4432111e0ccb6a2403de2d1395afa4d03de5a5f3c9c319ae0dbae6d3c40f6a4c0ca0a371991c7a4c55c21d50093e5257dae97ba3266a312e4647045780091194a40cb4543106dcefe181c104a29e2913d8d0491c0ee792b25fbb87f482abe52a7e38cae57af8ae52ef7c006e34ab21bf93127dbc744bd09d1f275dde2beb763479ea3f77db387703fe0e97a8d648a208379c9f0ace66bd442ae1254b26f0f3cb267f7fed926cafd59df43500564907e2a06eb3b6cd480b5f451f4f94562853e92974a13af6335661e69f16e265d9433a004402d9489f89e631e360c3ee3e0b2bde5ca53309df77a479371dfe9b2bf12734752127358f36a98fad6e60ffa1c3e418ac8c81c3a8f54d5fe592b079a871c0f1cf36bf2229bbfc5cf88f74757bc11dc826c589541d93e771a9870fd8c07562c76d6f4fc1dd2a2e82ed136f5e9981aeefffbabfce661bb5597e7710edcba41cec1059e96f15d667010dae62cce9bbd8a2e239c3dd762974af32e47ecfca58e4643c08e0a972b149749e4aa4a4e97bb89cf12acc2183125117435417dd3bc3d18304a8f56db2e88ad5ae15d20a7f68ffdd9f7a76355e28f8d308604b6945da697d85c5c965383e4247b03702d2cce376b651cce0c9a36f26485562f6b38d4389cb855f74849289848267f17aa874c475ec41da8e4548a3ec47a389d33e20de412d3fc37e630965a3fc919672c43865e9cdd9282f23401e49b9d110f73886a00c839905e3fb7cbf2d4b881b24d5a34a2896a6a93ebbd9cc176f5a00b7ac139f477541e8c2c412ec7ed30b01bac78595fd18194bcd608dea182c741af8de1cab857b551b7a541bf76dc6f706e32b688401435e25f9ff303ce8a487ce1c5140ae2a1b1aefb25320c91cc641cdea55069acf7d261d6d5539c0dd11789ddf6b7ffca89a2166a0ec7391db587faa543f17d98b16991c50f0d6ccd5ed6c80aa44a3ae3172e7e242e9569a1df9b1def0851d9c150d5a8825151569e56d06a53e624827c0b99bf586ec7a71c09d53643386309c74e25e329a7b3b8d0f3eeebccec064d83d98c8f1f6ef19aaf28b6b4660 +expected_shared_secret = f9507f70421be90f21138a1e135329ee8228682cc948a6914ea58624d396df0b + +comment = Official test vector 49, seed: "1853e72329353b3f89ae6a1b1ef700da8ed3c10d19f9e61ee9252e28ebb0e15802ee43083a12a0b7527088832605e3ab" +entropy = 38bf0033b779edf5367d9ebc01c988af90904c560970815837380650e4749eea +public_key = d8279f9a0681cb98bc38cb551320031f46262799c182b0355eec82cdb58d750596a4e6bf1213490810415a4b347e13c9e8514890a0995843936be342e81c7f4971bf9b75925d61ac8c961492a85d83fa8e33c12fa37ba08d7c681c521ed4060481f58be673007a081321e01e21419e232283a01cb1a4481550dbade263382eb93b7e42470b265027a933c480cda340a9a4065b4bc47990833786456aaab5a81c0a46e0076b91ba5bb4d4abe21c6ab193b3a3671c18479db082a706768a63109d2c4224d71c7c95755ca24b056c355e9c22cf5006662b3218edd4b317b19962cb514af123245b152eac41391cb432c6caf9295c66da4e5737ae3d60023f46aa7a604c64a6c403306ca4b96fc2929aed5b4ce7e6c631b473d7d61cbcd19826ab82c0c58880d77ce8f9bcdbf59d645424baaccce334809b43acb99248bbd966c88793a273ae857946902649f97b5516fa2ea2a84fcfbc054653852d8421b6b78c289b49080c8efaf85df195ab5562a03e7099c43c439a25ab41390b86db4f57188f002129f3ea1ffdbb9e9c688ebbb26e0d7ac6eea395b698a134f70f98480e87313b79444963557cee82534e9c1cf10b74718caede3bcbd98a68d9956facd8a45e2184c16b14048b9d28e8bfbf5ab43d1b650ee8cf13148caf451cfb144656052cbaf82e2f765c8c9c66c23b0cbae0257d6000f247200ab87f93b5167478a27b42ad7681b6919529bb1430dfcc809e171a334b33a0527a1d9519c18130971c55f6ec172b86248059830fc57c7356c9bd8263f7d571d0f7bd87d2a1686a7c41db9306558cbdf39f0176959a188b4d457b40c152b7ea09f6860d4d945e78c45eb68b579d48774eb26ad43bc1be3c0ac327c80b4c1115c2cb58bbc24a18146470abc223ad51fa10eefc311f1ac02af4c7432210233a4abc408b1db484e7885d239c0c2b9c4952e577a8ebc3d6a7684e711e12db96e1f988df423a395301d2c15fe2f1abf708bc64147a30e2717f7868ff602d50fa9a3d0b3a0097259ac52057dcc14319c438e113da967f6dfba4279245b72cc86cf724c81769dae271e18c0b6cfa84b916ac89b12a1f8b05d88527ad40346775cc832713146806a2b2884e35628169bc12f67811b507bee3bbebca81ab93b5d700aa92898b3f5cb6e9d345483ca3743457fad8cc5bec2a8e7a22a41ba8b67641ab181d42abaf94d0055206b648c81361f8486408b610bb3552299316b5c0b7d301d9f1c3d55621859ab2ee922c59b11ea9f2a1efe277c534128f2cae6b598c0fa059efc2c24e8a0c2337bc2c57a0bc64a7fce190c656b529d21244eb66a900288b5c484bb033020b9b9ba3019b72387f2746b3b893a1427882bc3135f0a17f8271f9c8480eb60732672d44336b32f851a283224144c480aa302c05836edc1ac4569a6020130b341466322d17811229441c4513a2e8041c85e035113992f16799dfe8c1eef3aff8ca2f341628808a81e8b66ee5ba47ad0863c735a904565f036a85fb1203058137aad2206c303f22d3027e732542a342caf3376d6b065a745e31e865fc2243da31ce08eabbf8183b4294700bf8928da8ca78bc08490810c39747fd3851211b22f26451f6772e0c75659133e8d8c063cd3044da1719855fbbd9796314b11df8459ebd2d92b7fdc94c4c +expected_result = pass +expected_ciphertext = eb9daf793643df194162e69b6c518b5c2dd3eb2e3a02334fe7d5fbaae8cb5b1946998a06dc8e3ea0c2e5f009e2fe5214d735c46855fdbb1d45cf47b78ace270537aab983305cb7b2d31e4587d71166b463f3ed2c21bb5e2467682ff74ba01cdf6aae255ebda0cf205ac9dde6d55a9e3c0ec9b9383f2a779d2286a86988ede3e055fbed98be3376c7f0421d629d34d753486a0e80a53d12d1a2ad0e8120687a92455d720a072e5df030d7dbfe55a7df9f144b34e7686b3f75b78d41043e945b3d2757e4625d0bf038dc9671b16c81f9c91574caa2d9ecbec25c0486c525a6b08e9dbb3de04670030b580d559159d0c95f0f962c1a0c524f10244fed82ae8c161bf97683f200a3447d3dee1794ae518a6bc7384930a6dba9e761498ab266e73aa99ab3235b65b6d8350652efb94f28e54e86e63628c5d86a88051400deaae123f80cf0e35c3f9b48a2d48e7588845bc327a07a9d2a0edb7ba9adbfd257ec2529e2bf93cebac1243c91508c0ef7b61d913036681468fe9768ffa4789ac24f44327035561df783012e768139313f5c58aca8e47302a5871226855403d9e3e862b20ae66c521135e67ecbc0b947f92cd1cf8f74b2977e826d513c66e00672b2d16e693aa088441a32b64d77387e963876ecb5853ab458ba1e4d5567fababf1c9efa0a255140c94c3f286600f04e87a1cfc5c4253ad5c5c9d7c7e614a2f6808ec8b9633d1bed84e1f6f27aaa72080b69ce6f1885cc63d9ccdc006139e67fbecb07e56a2ab8807f2f0c09d22ee1504a9aaf086656bea5b2ffb8d2f9ec1c586caa86ed3db23284f5952fe2fc4f0cbcc127071b85e1e6c6a64a87b1ab3f708b40812854cd3d187ed627f4c3612433aa2e0c4fd6709c4ef07436cf31801f6f77d6fd28b0e070b54191909d443d24e95617e39f7065066d65eb45353e80bbd11529f2c9385606a96b6b7673f258725a1587ac316dd56dd3d25bf2484d855e59d77a44272240116d11e725ac45766759dc89b3aa9e5cbe96ff7df371f4ec039f1472d241fcf233836b3da13224d92cc710a6caef02b2b77cba408539403e5a9c3f06c6984d43e05b5e278898e3e59c28af7d35a1a2fa982c7e014b185c7456a986ce41277122c50fbf2d7dc3014c5f2d3da0773f31afc83a138461ba19b21df959be21e2e9adbd059d2a141439cfe8210bfff745a5c3108dc34572ed87d3b60e0e6b1ac41e1d7a9cdc10e16ed2ecc2a20bb4669bac747726c8bb112874f48c7d618f0273f098e249e2ef0ac29953737e036ebc361a8512071d6fd3bb6d8661463856e387819ff9201476178f7683b983cf8473ce6688d93ed5e6a4be6d2fba23949a25bb2a1ae3f5634599ac8c83515d8d904357972c659ca5766105ec7108fff659f428f3100ecfc2bfc57f97e87249ed6640d47948ec2376268180a7a627e992930ac7d7cda5076ae04a1405b215d5d5f8bf98a40576615e02c3cf85aa6dac1b47632c66b947d8da73b1c6725032f70278177761ea063308d540a60acd162d83522fa6d188 +expected_shared_secret = 24caabaafe2063f812eaf57c58b6c0376ed8ff778cec1980ee9c3228801a75a5 + +comment = Official test vector 50, seed: "027c3d5847ed4470931141104f25b19ae76117cbb64b224ee424ffb782e9a0e988839e0bded0df666fe8e5fcbb5dbc09" +entropy = 048ea516d0ebbd9f709b47eaac66f344c571cf50f0d01c9466aa061a50b66a24 +public_key = 41aa7b69158362a41767486ec3da09ab4335fe2a25dd6c07366478cda91c691c5ed9264f771124c1f3693050802f480f5df89d5be189da765337a69c5c838488a0a4ba7880e91871fe346cf3abb0aaebadb211b5acd3b773c9146cf97920e509dc202f79b14734c9777a567cd44a43500b5eb8005bf4c5a387701286639e6d9ac2574b33f2432b3a787039e34b2ae511a27825cba7a8e09b401cfc6123d3b4c42318e7b032331230da960a09f61a6a196dc185bb8bf1c1a6b691a06cb57f12be1e45269c56490e256a83c13352a878c724242ff0681881160ed03166612d69894951d65b95e690db46129d149afba2c835d3b138036931423d2f84ca51179466a1028d1601d5c397cc81b1b5e468869185b25095a0e5b5dd6a421b5c7eceb58c4cf97b7feb114fbc435c78857c65098d3017ff8a58f5927e5ee7712fa0c2962939b9d8c84bb6428b3902881188df17479ec01e4709b7840235ccd77acb0bb3a05995693781fb711d61f2883827a96ddace29a9cd43ec6abd4691be1a758b72a629f6aae1c795981c0d8bf8160bfb3b8f5047e1a410cdd49c6a42adf0bcafed1b21eeb95d504b1a48b1ace228bb5e1508bf05128f0cb63f5597851b9df4caa5b6ac10f7f6188dc41b02761f840caa42871c55205cd09771ac9125d6265ddc56a466249fbd774ee53756035349ca12a48237221bd53d7ff1ac18242442935ba818a3b50007a3fc14a2fa3abe437ff14705df0cb5af97561a608a3fea42a809a7a7d5491453c849dab7acd99636931c007a70d01655c7302f9a26012c494de47839c1ea2951a87ff73968dae83a86f392f021873be4c75d2b0700a3b540f50cf6fb664a4627dda9c75394032f434655755d12d4c781e2324ae00dd61744cef6c5ec9680f379a26284bf9590a33350905e080e9b70547ac1cf3ad888f30232fdea7bd2c184f9e1a9b6835401e737204c5ebf2b28f2b58edd399f873c7849cba8064b8a20c9c391841875b4963bba2097b958d752739383bf26787e64ec215974b45848185f44b8780c0714b9651a7685e673cd1b6230c5d6639ea5629c20659802bc6f2b95df274836241165a524ea99a941312fefc7cdd2fa8016d69b652c3e94e73c70c97f65b3adf14bba2d31916522701d80252e9c7fbd7a17d306a4e1e02cda405f3f07b38eb65824d5c9d8b91f7013784fba0df0348f21b00ef5a325c745a829714a5b9aba16acbdf029771d5415e867590cc5a57360a8969407f0749ab8a08a65e37e70146fc1b7bc40d789eae83761e77749a07859bbc046b5a87e3a92a5368251127f12d27789318f8b9c3c1f79211922c852a0b0e10bbb631599190b49a66937920b3f113185d89c6e37da5f7ce9c12d37c12cc24741cb9a79446606eabe8c9ab06d8963c959955f198e03a0bd127242dbf2a2180281a7b65f54c28ec9c6cafe64881d6456c07607cdfb89e2ca2fb3ba8f8357720051c30952734932b08b508402a6a2f4f9c76b053c12a267618928032b5d9e41990a18c2c04ba7c2868ad9f4538ff1b494707eb9da6b81374d7f9731f9a26089d7033a8c24600944d65871d313387b4101c0aaa27ae19d978653638577bcf4caf48083eeeb57f401544d4da3b73dc1c5c4a047b0a5ea85edac7bec66f4d87fd2fe422e7dbcd02d1455 +expected_result = pass +expected_ciphertext = 0b19df76304bbb9eac107e0cde980f205d0be113062aae748fcd6f23badb6faf0dca0b9a52a0c1a45fb39a5434d97795de72799398a6f7729dc32bc0fbb724aeb6a9742bb8e1f5ea50980b79c61da2118aa15b92eaa122bcaf059658bc763cd04a22318f8db35b6cd62d7149e4d5896b651ffce990974cfb4b0342946c13697e68a5ad08cd94b13b83a78ef022754434636363dd2314433a11c96123bbdbb242cb1224f31b1b171a30b975ea7f6e2baf749c0eae2271d33c58a247c56bfe1c362554dec75f8ac8a4d170009efef05ab92f0afcb47b6afbeb88c718430a98a09085f377a34c84922d1f48c004f790d9ece2eefca8daf3f44cd526aa074101a3ab083f05a163601b68e16c63eb293843d0aaa8e438ed68e71227959fa9baaed20eea22ae66b8de0b7c19f2a777928fba4fa17e137cc40d14ae3cb8a711cb4637f3d94f16a47b6be2345cc046a1f64c1aa0886098731cd9809a3b2d40ec95f6c7bddacaf68865cb22c32b38ddfddd008f11065167a4acea5212b1e1013d704ac9048775d6eed6ada96294971b6da0100def9a754e57b9fca70592974ac72a6db96c38c18844f5ef0c213cfb7077b11e8c53dafdb091fa81445975f38709741a295d46ab9e6b1f2c3449bf6b906a610484cc40a2c8ae35ab4311a08cc5f5e9caa90f8c5c03ca1e4c02921d24d38eea84688353ab5724ef73b16bd4e881376b78e992e9105f85c00cb30214c60e70b16e37f5d1c8997d7de9266f7f4cf419fd0e1be6cc1ff2128d3b21b46c2782af8c805c7fb7cb441ff4b5fc97a94902beaa56df272d0be1e48120dac00bee41e8795a210170eefe920682468eba45ca106e6e8a6c963d8587734baad6874229f8ccf5daef09836878e3ccb8edb7d0d3f10c466781ad04d943d478d40a1aead1537073b405ea712b6e879983d6dffda1885e5bf4354508c188246b4e205ea087ac883843d868742247a5fbb66baaf0eac8e5a92fbb8316bb5cb560a72a140ac57fdf41682729a69f2e87bd9d096ea7fe2243e6c958ee394158d70831c9d06660c46d86a14a39c8a2566588d72118eb8d53266dd16e35e3249e16aa16e0d5af04966f71037698e278e129e65de8629e28fefdf3cf399277f0eca62e9ff1f1d18429a3b06402c88e30d47aa4c1d5a9fb1cddd516ec907f3c97b0dd3076504b083004cee7db4a31d98d80c751b3a5ad56c4299434effb58b86149869bc0818738f95ed0dfb269b2d7a4747cd3d08036501f7b20fc0e66635bd89056e3de42228a607511a85dc37682e4c64a89c0592b86026d0f7cbeeef3b436e4d2f399e68334a29f514825ea8cc8e0b0e61d97391b3b62620b5f288e271365e3670d26e2e9faf37d41e3bb0cf937c446185706713b4fad79c5a4e358a3c208c37c66ab57ac40115ac256feacd89bb5ad0ae35c49cdabebee5d1f051f5ce2a5b4b23f00c53ee4adc430f8aa74f81f92871a4f6c87ad22c4d0c0387bb515e3acd8865fc1a14e9fcc5c4082fb0a1b8247736a510f45a2cc31f4724b44a0 +expected_shared_secret = 9f734b15fc7dd99bc10d6cc7de5d2c93ac789a5665e508a95d075dffbad25abb + +comment = Official test vector 51, seed: "450751d4401737459c6d93e6c5f2fbcc4a3af7cd7250ccf404bbb817a67bab7b4c9d0ef4570bfe25cf919da331c31d88" +entropy = 686c921c9db1263e78ae753b1c9c2e7936b8229dca48c0942c56c6bca4f10917 +public_key = 32b6c92f059443501427ac964fa569cbb074c71053f179bf1963ac704489ebb9936e23950e51ab7e26a98d6031c652701fa4ac59aa7c15d88c0337a067257b8d916db0456fad9622f44a928df6cce84a3e6634c9caca246208920c487b9a666342abc389c14c499785bcb91a95dc868fa20d25b08ac0e48c72e9b486151f21b11731d1bf049174adf279f9020aa98c38372877299c4f54a4493a3b20f8bc71cbc490b363c4162055cf3a5c13650db1154687462fc01b5e5b78c9f603255a24189b808358e17e01b9cf736a77d78a32520b6ddc9c1dd65a00e84b562b607b6ab472d5173ab53a97db08b322e95cb3378d5d088cd3ca6fa4739c6633a27d686abf040dcaa766bcc18d6b8a2f91e51ed6d49aa37aa44531bd9dfa25c116a842e50f53a68bf1617245e8b7da778eb3343d3f2575ea84627c640a6509133f4c5d78151a6695245659955cd3824f264a7df58ec87c8aa3066ecd1b68d848cb758487e647223c0154388912ed028ae364a9fa9a018d8558c3e9b179b66f2488c2be8792b1849fac0401a9756f209889fa637cf7ecc4f2c0249eb5c6f7e0219faa2a9433759ac70dabc7baab623c2023cf7ec869b75bce953ca3316b7a6fa685bdc7c8d467273268a0797b8d6fe57ddfdb03fff7ad3d5b9c80dc1939720ee8810933a04f51b78262910d7e28c0eab06b91980b65056472a293f2361183125670ac2426e514790b945d6b09c9ec354fe7c895a30231d95794f89ee60761ac9b2aaa9a75ef168c0950afb498915b2518e010c3800764bc5a65c0c54b2af686b7d954e77bc4cf8137ab398fe93429dd0ab80fc846d4cc8db2b9b2b4bb36d4c4121639c1e74622e59250701302301b4df96b2fa62736b29caf0866096f842898b2c6012b93b5ac23d1f39e192002ff0b9005fbb8cfeb8930562a4e0aae7a40c5032b8b33d0760d96c7c203920e2439d3ea02372c7f5d80b92259349076ba20c3ad4fd21752a3963cc5126342a963a363c1157f33189732f7243e465b14969f1ca199af45b50851266742151a235a8ba9a595534bd6aa31ccf52b8c5885d571a93d2577c57057e2caae68c9c84f565c72681fb15056a345236b02a1e5b13289388f035a2f8e03402f8b0a44259179a904c94725319acacd28ac1e449b87e8916091940e33861a4a35a8600267f04ffc6a3e06c60858d578bec60ee7716fd4b0225e5cceb5fc5437387522200f66fc880e0c874119c71f462cb4eaa24e67be77ca67278344199b27e2a55b50f372b65345122225d7324ca9504ce4d12bc101639e93b331e3b60e1b520e03c9703a69f54c2b1a52254ac44b86f310a711263a5a9b87a7116ec5654f7297ea76b63f939c1f49ce99d52bc58876160401558193ad98c7c8f4b6822712429679214bb2b6e8b324b58e1f57695dc8968bca7ec3717df12c1279408183b49679b349e2e45686e722c3a57bd9547a65656cbc79aec1d3b129837d84a6975d018c7ab04c88775e9c68839955775fd66ab02aad69b76307f51db2ab33915aca61969aeff14674a557c322af6997b1a8d9c51445884779227ee742986446ea1719808996049038e0d9aecee828ba054417cc3a683a7295066aaee9cb429c4740531990744a987152dca2388ba27e3769c8bf287e54e41cbc0ecca95ce621f2 +expected_result = pass +expected_ciphertext = b7b48ff76d8b1709c67027c3f1161313114a848d6c0a3460850f2b08556a47dd82a0ea4e4818a1667882dbff42ff428caf7516cf7d32a31c6efb18dbebc69a7bfb17c04eb69bcfd8b8407b85d4e68118efee310f122b077560af4bd157bceca4b72a1b4e927ff144b0443d3fc4b00ddae83dd88c33e728b7520944cad9b1106d3c43f5c469efb9b00068668f0ee8528b0482ed82cebd51bfd0c0dfea9ab42338f3636a369578792e07182f379644219159d90ef9b309b312309f3e1b4e6c86ea904f0f49fff3469b23958bcbf00a4efea040530e20d4b8a19e7a67fad4f017b2e03224f0e2bf9cb88055743cad55c59d7965a490b1cab9be13852bfaeff93799d08875f55a765bb78bb7bd3bfa6573962a233951c99a8a1ce020ac8f2cad10927a766d4fadac01ff066f8b42bc071c1de33c0c0bdfe761cd607020ae3e2c559d77717dad70f62dbf147c86712d92a2cebbd80584f1ec5dc10cf94372d772e6087b9f73c62e7994eaaa8d3a52f2f7a623ecadec7d9cd3634e44cb282e07fe20ff0fe7c29534030b12c1d6e5894536c8815e7dcbdc82f291fc8309af952c489cbfd86560db108c731c877975bbc076435c227c3c6e5546c9c9c475b693625de1896ff066e24ce650483a2a391f31ebfb68e172641a8be54ffc35f09208bd2aa1d837f9302fe2cd7d54dfaa1f833c85222135609b4af0901daeb0f46a81dfe8396aff879acd5ab17754cef6a8f1406563f8899f379fd1ff99371929304338efcd3465100e0e7e3f94fcb26f20b28eb8367b7cf3d34f74ac992b5c37050daebfafb35919ce6703d6cb3c0b1cc40e7b6b8de1120977a5e7d09943423f0939839cb6bc53df64b387ac018fee33ac33d780090ad582432c4d61514198d74acef79ed0c8710243aac73bed13ec6661e46d1e8605634578bd17e1c94b1e705c6ef1307cd7f4e828b30d3cde1f65adfca10439ae9c369f5827b94c3f553d258573f0b7c7884133cbe8277d207681800291c139dd0787f0800763d79ffbe667c1c56ea8bfc020e339f22edde053a4bd05f345e66322216b56c168a7b11bb1e630ec1fc05cd30cc3ea0ffac9a223e3aba860783728f9ecc974a0279f307f984baadee9091ad4f4db905dc75014a29e9ba246b2edc076f7f82cf5a49c4b5f85d3b3306dd9d391ed8500a7d8c567cc25f0e25e46af32bfb44d2f57d59490884b494e30499669d5e8e0ecf5b0f8024e0e1cfb9d25d5152eb7b010398f49d169f57d7565a0b51edcd362a591686d00c6c72bb1a0a93c05b52cf13b82b08e4f28062b558fda675c5a9a2fe5a0fd13d7fa0b54ca094935971149c35c0feb38bb658e929d291920fad23f27818a5184e15a7db054e4dceaa162a1fad1ad647ea7084440e80e54c6805708c4aa9b269c8853f274a6097d313dff1e36cc789806a9acf77f1a18cdd88e1e8527abf12c3ac3bc45b506939f9cf8cb65a66f83fabd5037477cb29a0a32234eb4034692edc2ec6a8f79450f232c443639979d2d4a442963d7c63f04a8863e42 +expected_shared_secret = d27e55f2a1f9ef336c8537f11da9875e03cc7dde8951d81b0740457609654107 + +comment = Official test vector 52, seed: "5de720f2d152bf4e1f96a61e7ae5f1bed6b8548e32638c2ccec9f43b87d1bb43dfcf334f0582984d27e440d519ab662f" +entropy = 2387772e50059cabda53cb93ba24b19ae529496c03b36584169451525c4a0e7e +public_key = 7c6b065ef3308afba0cf3607b2c98d83f76f7c058262b55f7c0746b3c22437f00de9d7cb69f40afd60ae74b0506afb96e30669f51c464a27b4f177666f92459b293dc208a0dac5654a8058a8fabc2d1853009743a598bab2c248068750f01227be5a4f7c4c6948f9167e88894d43b5aa44687ff177de837e2f0537f708a8f73a11fe6632dc285c9026bb23424ac2d1cbce39ac6a0a7686f088d617b096436c9f773e7cc50cea1c08db20c2949a7878d18e7372cae746b04558a8fbe97df0b9a69090449a507e6e1c07a35680412033127037607b2f0502690b47bd300a84c041650dc748ac2c060260c933a0b81847243fb3267f3cc8dbea4cea40790f37cd0373a71ec00634bb3b3b087a82ccb1e1dab77300156d8094a1d61d1f1bb3f977b749c938ab8092d71c93394856ed133075e2bbdd3cc0f27c2a2d34bc0f633f5e55c0a6c989b1e277ee9132f8779923eb2e22f78a1502ba5e55b6d53a05137867c10536e672c7336a3ea1f237263a6046f260ed3871f1d479be589744361a0d819439779075cc47a5a33e18326615134d9f09b68b6873c6ccb682f6b75662cecdf5432c37189ae09faf36735ea01c12f9ce64f4116d509c70e0072a242ff126710d178daae86539226c92d090d9b60dc63539f51b46dbf24cc8d54eda255e0ac19b03d34f5a270b6fda6d6408bcf1d2a46824b5290b8a26a8131402c9aea052d0101759345f86a66a4d238a20c6531d792170c52deed889ac3050ff87c659524337830c205622a989736b788092101933c0073c0b686106a9b88c17958a8711d272392ac448b01507634df4a23846aa9d594c80bca99f17505ac1793f2877bab4f1b211d2985842795c4c1b9fc018dd15b510556ef89b687e6b01701cbce0b56159a90f7b2c6fc1039aa38449a596c087a62b2ee5a7c3799f5a601bfaf8b9c598834fa115ae010f71167fd41b5cccc45146009752f380cdc56453e554cc779604f976fdc34e9f135261eabffbf00afc514f2699aa6a5aba0638542891c6858c7f6c6c4a12e4ce2d89b50b04c33ef262ee8b0d9a7777d3c56c85b1bafac7052fdbaed24303c843110c1892381887eb351134798b9745bc229208b277c2c999570075903deb530bf22f7906b75db35c3b24b04751bf6ed41724058c70988952d86b48519264d25ec2b817894ac370bc081362c841ebaefcd7625a67a48e3ca492d63bb9036a5b9a35d21470586510acf76fcc683035b18c05eca7d0702e0453ae00a8144779117d7c19cffb568a3c0959193d689a6adbac13df43907fd45fbf3313d49425d32ab9d81c6bd9b3486c3636e6e0015152c1cc78c809f3a3ffbc6f0628609b996980b3c43294c0e293940cd65a34bac8fcf020cc611e3e2c8e52f5ae886b8d9480551d012885318e5e6c1ecee0a3d75b342667c691d19f34fc7946e7a7047097f7938516cbb6c7f3abdb85b15e302a5547198ac0b89e7c2bfbf74050970e8dc746cf16bee6147076bb89c5124a89e070a785427cea590301cea7ab28ada228ee7bc7fcc17074063358a706989c8d6c82677287905722cca0a24ff91958c44a3044787eab3599eaf241eadb932b06b151a1a02ba8b244e9262b96144302124dddb5584adf5fef6bde5872a551b6840e3a082a8aa6dfb7232a6813367038cc +expected_result = pass +expected_ciphertext = 0abaa530450dace740e8afd009c206de7c0d5d5e81fcfe4034bebe306027fa8372da9cd5e10572bdd552e82a2e596dbf9b6571f8a009613b4c9795d44d377353eb4f9ca13c2fcced279674bd21d310f5704ffdc74b4ad98d72648106171cdd082ab3f78eeca66e7355c012838a5129cc0084d722948d24f00a91d2be8bc44e6dd949c1e241a22341e3256f7c751b8541332ac389d3c57a8d69365bb4c9a4757dd870f5cc7ef86aaff94e26858c6f006dbd1a63bd7e09cf5e4fa6b1d2c5e03e58c3d6823a524a76336db51447a17e64ed42e7da5e9417cf0b447f32143e689ed01c4e2e5a947bdd5e2f2f701e407276c341ef766238c8e04fd1c051f71227771e36809e6a53cc68c303f190613334737bda59b4375629ac14cf16d7e98bb435b9fe348cce9b216b6ad2e6f95aab87bff03b49f440e4e284ead23353bb85c81811731705fdace139c7264797eb2624ce48122dac337e146ada469011dd6a8e3022eceaf82b27938be256f84e74878aa568930ea88e6d823514491eb9a27d956452a9aa81b9a2068d3e4fa1c27e5eec5649aa395b2ee52ee8e87033be00e7c4aed4e1375d01a7be8b16673bed2758b22eccedaee993bd26b91e8e0c25dd1a5bedbc55cab0dce5e308259efd45cbf7e6185e2792ee36a453c693da35a668d685a8d70d49d75d4be3b567fcc9a978defcc480d2f70888db31de14cf90a2f489f020358095dc8b7588ddc8ce441fb1385be6843a6e36e5775fdfd14f03018e33c5a2c027cbf4328106c33afe57b0da9700e27b3d25f905438adf34a23718cf7e6ca992dc72b32aa1c432ba1792a626fd91ceefed47c8cbec2b9cea537b0f9253cf9a11176f3103c7a98859e4211e995610a4817527977eed6ea70b310f1c91ca5b6403118084159e84b497c9a995e3918216d5ea0706c89031c2d5ebf8febd8e68b594f00d266e41ce12e3dbfd16c130d44a0378b114dce1a6eb50f227d4d43f1f8d615b7b278546bb53dde219677c980f215c8b2b2284655e596a343d1aba0e277b8c98de9df84208a9e045828a75b1573bb15ce0e8d7c39809e57d118e0b8fb2d67d72afbe8e9750c4eacd95c4a69e03a16911d27f1bc5351a35212e69241dc4d780fbd4c9dccf01bb79fc2a40f4c29f0e22dc552758c7f735a9bb13685b1e45772b47a97d4312359ff0d3ab6191e572bbf9505210582a470e58a16b3c5cbede72d07802d973e09f80339684eec8fb84ac613c4c869cfda4c6ab82ec54d8d3aa70bdf89c792ba8b5ed3c2b3632fd391e43fbc66733212d439e5a67d20f237c2a0f782f96a9e2d93adb6f1333182ce55056d4cc807098b5333541269a10935d6132fc5dffc549d99b25a1f48d67999e669ed8b5202f0ce91f3f368882ad1eb67bff3a6941f16ee6349019bd41433c2ddd70f7d5b789b000503a2ec1f48e77869240ffc649b1133374e80a16ecca2e28baee086b973aeccd3692fe9597d934af1c53668af5ba474979d2d746156fbce5cb86367134f0476f06c94c3b52ee1f1b675a67 +expected_shared_secret = ed5903d1cf02861444cad7fc3793b4e1b9b6d0324bf6babfb768bb2f84300086 + +comment = Official test vector 53, seed: "d71729dcbb27d7cb39e9e905025d3e55c8602efbcc483c9b866ebf82326157833169243c14550ad728bd1470f39c642e" +entropy = 155c29c5f0378df0cd0e847a80a07143cf7522fcd880c9229eb9feb1ce340cd2 +public_key = 9e686b49d538cf32a05ab82372f7525df40085b3413f078226b97c234b815ec615b2683f1d9ab32dc0314c6cce6e9620c8e73b1dc85bed5205cde5a44f40427865a62356ce44751c7278a3b236bc2d208c7b383129661810a6a2962496d058ca4875ad234c2df951612e665984bbae791c279ee835b105202d4751f1a330dc6b0bdcc38fdd6458b0ca7a9bda026bd64e80868b87b58ccf2a37ca94cb06279ee77a6731e847487142561863b5f38c5aa4c0158ac28e95012c10a8b8e99ef7db12c05009311a74791c6c8b355e4a861dd3cb6fa085884d7a7e8cd270f656ce29f9bf3b91b798032c16b00f8cd722a1cabfbb25c3002324c56b66df87182504581a76297ee1181cf05a6d89698cc94021b16574264435f2cb137a7a667a4548c96f835cbbcf27805ae37448674aa998818cf26d15a63689777a9b98219ac3b9ecf84203826eae294800f5a07ffa886cc86e7d095f42c471c121a69a1972a7906abbd31003f6c8c0d07ef481b55fe185811084d9a472ccbcc586b6a9a6f24d269ab36126a3f0381b29532d027c2d5e21cc5b9c6ec8303e4b388a6b7216b3e581c0566558107c8b94c599f09c2ecc4b7a824fa3db9a29722317d5bc5d43827f4bc6d3a91f65dca56bc26de9d40bf2f69263cb010a9a24a749c931631ec2d13ea4d5136aa8a97ee019ae1291ea34b0807886ffa323ad3b0f83f82e5d9a2d748945a3ca34b9535d0460a6f734bbeeb66a4e3c257bb079f5d80f6deb0dbec130fe4a182fdb16291403f37a191c381723965c3fd90d9f2b67c36ca3ac141030ab516a01453532aa06b73a91b5ba7d1a308e286fced38f2858801022a453320a857b564179c55f0436b25cb191865de69877b47041d9d0c2c9bc42ca513f207a72ea9a5cc48b573fb402ba8b5ae6d73f2e0b044b8ca67c1031577099b9975fad7103c7f6bf80099bb51138d8a7af7bb509b761a9c6407dd9826b7ff87879098248d779d6f26aa0215084f286ac77c50849ad19f29a32b07ef517000ff71799d6be1d177508bb969d9479c6c037a5a18bf4302720e240dfa603b7f8745144906bb88522505b19336bee5572188853a47b4f8ed8a040b251307299be642e086317e1504784990f2149cb2d89b1a8542e4a19cfafd57ade9a234545142afcb3e544b49df75b0cc78f5aab935752746ee7a7f7936777330a66c1063c50becc4286a3db4aa66cb602553849b5baaf83965ac6bdb19a9e5db8251de0267ea3c0eec342b51505469aa7fe936a5829463892645438a3a182859da136e033b926695421a1891610816e136dbbe36adc08cf00e4b44649410b2a11ef254144c27787e54cc5a533e8e54f11ea94f7e9c2009d25a6248321f04a53c31787c12aca9cc78fcc06b161701852215bc6c29d1779f5c183152cacb583a90399746f75c5bb337f1b580b9029b112579884f792ea5a52187a109f547cda89b7fbba90c66065a33423da4515d13bb5ffa074aadb0c55119065a51239511bb33288f994b121da8913992b979a59bbd64036968621e76ae336096fd6125cdac4f767a883e6448b078dc04b1f2b7aa49a1180c0f3bc65d2a93458291982652063419a9cb7f1042c38f483c4a90e17aca78e9fe10b44687f9aa606cae8888e4c21ab0f7b85eb3d3a2a3d2fe8ed883d1de0 +expected_result = pass +expected_ciphertext = 5794df0ad781361c6821319687c08ace02ce58cfa47ddb4d8d9659ecfc28c7997b98665da6b0e985ce869168935c6dc81877db1c88d3aeb37515cca3dbdde9eea44707066a89fee8c42d3c64921c97accb8b62249e20d248c7507d5b49a5849c54bca761745c7d2c5f83fe7551795d9c1979cfec5a0b31361a515d95899cc121934065a0cb0f8e8aab6f6789feda87579f26c14c76081ca22bd24f65c5d1824ecf796520e2ea33b9feafaa45da662c032e866b26f5ab26dfc7e7baa2e4a1d14c4a3fe70d3aea96e5a68d7118706a7869e37651524046df15eb0fe51c70b89b9f6462ee7481ab1472d4f9997a65e06650276b1fea8af04fae7746309307aacda58e3af745df5f02e9102b8c5b2d981321cbc3ec8476a2f7873ca3013d4ad3b9d1914d331a97ce1eaacd85f9145759ae255ab80c34564794d2f58c00a1bc10e69f5c28934b163ac554512b43587af22a43cb01471ff8ec21cdbc2d708476036805bee7199078b139009ced9b39a402bf0744842222515aa55d8d86d2fb04e81ee7a8fad1d7b46862cedcf5ec66503bcaaaac78f336107c4b406c4e67283b0e7ea99ac08d222822b6721f1e1669e3ecc52573d477c6784ef31637808a50bd3ae98701bd1a8831e11692be8e0c84474c9ba739dd01fdb24bdcbe8e9a3a12082f20ded7d06ed3bfbefd1f0e90ec2dfcb1cbd039f1e5c4f657296371ca5f2947b27e686541e8991603850422a2091a9ad87ad342e936f0d78e4211710f8b51b947e8a2aa98fdabd660119835eeafbcea6e2bf2895d22d264a9d558222926469d2454fc948e843c0d086ab8980665fdd0f600d03a14f14b0bbb2756a2f17b38fffaba6ade7db5768c0ab9473bc0e1d133e2467020c0ed4e53b94b722a3ea63ef74433a49ee5856848991cf9f0b24bd39e90d57c00dd86ca0bb4b3c0af67a84127a41cfc3d233ea766ed7de7784c9fc0a422f3f0d2b6432583d93d001e167765db6af0aca9b2320640d83d7b41bead197632aeff5b952ca216c0051311b6547d04f5edfbcab178ff1891eb6e42fd6c2986654b58f41c644b00785201b26f4606bf4b5c0b3d4f46d1f606df167be6584979b1d26d3f8b61a08d65c6f733c6ff2288d252052250fae9373d9b3e2b314be7cc454b749fcb6e5207d051be4fa345abde67f1603f12a5433a54d2badeb7a9f5912209b733f2682e7d39208af7a21872e4b64ef835a41e1606f8649823aa236b47579fc8263c2f812ad4846b2a8217c847656e2d54ab774fe8ae617a341aa2b3fd2ea3f6959bfe58c26a9db8c3badad7a7557c7e75ead54c9bf85ffe9e4249dc1250e37c9bfe5343aa0653618e0e651bce7dec72cb14510f1580c43c8ee786ee3ea87499c80183544a48db67b8a8435be1e68d8d3c6433aca5f42c8fdd3c144e96d3dfeb60fb1d9b1d92d8da62e51fa1e060c973ef92c5428e9be6d0a547c9aadcc47e35c0e7865b6493dccf4381da972bb51f99d7b6f4bb7ffb8950798217480a4230859480aab0586e2f09eec53c2f4f645f82 +expected_shared_secret = 0d301028c1cb31dedc8a702a9e95b7d3589f68a6a1f600af84ae0f543e625361 + +comment = Official test vector 54, seed: "a7c2c8edb3601396beb2df0657ec82fd5780a2723581a9e03dee1cdb018440439bb1142cab0487c5d136e9af46338ab7" +entropy = a9cb9a61a3324b1ea5afe693b32784e2871096b2ca14a11acc9577c52359a241 +public_key = ecd4c65cec93a9b26efe3b667405482e3aa37d48aeea67c1698008da4b68683697dfd34fd72a6f39ec0aa0806ea5c59b4554182f6034b9c5b7cb438e21a14774d58afab0099e478a4ba8568e192c71db7c208b7115d29bf649bfb3d23c2d70599682c549ea28dc16597a43aa6e65c77c432f554b067a64ad62ab71492a1aad6045677c74e3e8773fb8665259abd821bf07d2157c09199435bf41992628534daae814ee4ac64ad89ffa1547442b8cf6f54664c550da5cad0d828174805da5d66f01e584789992bf0a4036d770b6c5b3e21b78f5da2467db42479b478f0570d48071f028110f555857e4acb555b9c7d5b5d913b75d5b393bd4b9b2c12d34027aede4a22fd80abe26a9c93c938c6b1348708d1bda7fe6c55bf66981695487ab81362f50b7376c6a52cc39769b921f575e5d7a9666abc2dd9459a5595e3ad631a0c638c3a2181b649704748141394053849b4f996f9b8a68567b73227b8c9e4588ee4a13b75379d2776a7510abb21941c2b36357e8248686a5d973b946b82e40802290651a073636b367671c9c001ac91ad03b9d6e83721ae1247cc188fc05b0249571656a276eea09b6d3376c208335618b1fc2748655ceef805c39165d0ce9bfed062add0c0a50e43167c80e5301a076c9cdc1f13852a5987aa3cef5e5864a706b3de947d2ac8e8cea0c3f83745bf3185bac9fd0162510f70bd20129d7c5215026114c4b5ef044a8a29a3f01fa02a0a3ce928a65ce8cb566848110994e7ce20ea5c30304d6ccbc7477bb78b3ec527758b7828b836dbb2742af6095a0bb882c2c9d8e162618029c1fb5aaf4b963fcc4a35ab78b0d9942fbdb53d4684ca85218dc27678719ca0d4a8cd8e9bcaeb944b7c0670ab171927c56c35034ad92bb3e6714d0f7c137c2b9a1fc5b72367c35c55d5feb93d1274b88bc558158c5d478c34b68240ad193e95c0311aa501b3c1c44b20ab6ca2d2de1c56b65618ca53f0e91550851bfbc289206d1406b27047fe610ec01a86e8ba94516aa926b99879836dbb27a7056c4d54bbd19a44096d1b3f3e9956cac29e7ab95f175b9d9a0078da633f10a6fee899f400533f0f77102da19fb02610003674828758e23b5ec724c6829b95b8a6750f1988f431e7537ca9d05701ac8ae2034688082c5c20a122c6349db27ab958504fdb4c527b223b2420db7246a4a69b58085a3c1e6997db19fe17a2bc23bcd60b924cc393ebfca864da054ba38bb733b00fdf57ab147b922278fb132c5f5774bfe368dc2b66583790d30d282a248b7e9d43a562ba1892a985b75a7aff961762a05fb35b9420905bb8c4de00a3846e38ca7d71411e89f9e2c9489c597834c7a5315080130648f5347639184f315bff2d580ffd0227c9185adf9203ed50baa43a9174a7ae9b5655f2245a15c30f877bb7dcb2ec184138792738113895a980dca31baf6b5261e10a1d98ab660c066bcb05ac25429775c3bd1550d4a823fc96442cb2770751c812ce67613e48bfbe66a0fdba909317513220ebc3c55fa1364f318812199009af24f9f70c36f81b22b20be53208f0dc44dd3b6abb7236e1fd37c53fb1ee8c86810863a86b0029a58955dc73ec8a436112b5c3a75ceec356bbd91355e4c3941a07e45ad3ecb9ae67e7527f70f6e07a757bd112947074d5120a1f2a1 +expected_result = pass +expected_ciphertext = 1af07cebe18b64049fd34156f0c1f2920934c333ba89237d4b942881e51f495d5cc4e1607d128519e51b8c59997b6a0c1402df0d3b032f6c3d0b4c34d48a5935ff61319530ec1e6ae306dc8b30e220031aa5549b00f4142201aec84beabf37c661c604bc26825e96075fb2ca24bb539187e1913849f7b9d0e6fabda2304d838021de30fb367172a9d0d0627398f966685df3de86f3d74f501eb56755844eb64f6b739820acebfa24ee515d7043e259353c7744dbce3886122abae686e4a4532a5863f6e898d4fda096266d25ddc674c28614e4d0ad2d38ce80b6855ac742b6f3cba2602056622565b486ade99294683b7de8cf7548b630ff5a6b0f6d52dbbfb9b5ddfae1d98eaf68a43a2b33cff3dd605aceed93f539b3da3a070d30efc2c1e9fbe027af86d87c3b8f84a2f30fb6359570ed3721eeee8efa351da77c69043c19c695e46a5f9535338142395c9e3660aee95765ed84646d6e60cb3343b60a61a4d3cf65975764d735f6aa57cbb07c06ffa651932e698969842dc1709ba7092192154bfc55c3d6362fa419e38b2001439b41a2d149e8ac22a5d9bb7700570b08dc2d3b91f764b43b70dfc2ebd534951701b6b985ad3b3420290b88b42e50b2e3edf857ff854f1693bf0977523e012bd6332381a1155b64e0bdba2dd7cd68d408602ed0912bb5b3f672f8ffa42eacc31da8601cf43fdf187a673b1309ff1bd7d8392bb76f71394a596bda178273192746c40d34eb4f80888ceae88291418b96f333cd1b15d7522b21ea6b57f12415509e932814505053320f84004637e479d1c6a944eee6896c75ec69367beb5cb7ecc5ce284120fbd24be653f61cea186f2f7b37a1f7d2bef08b8e1aa006118232bbf8217171ad0c0a71d0396cfdb42e64a1d0705439e131be2137af000c553d68e7830e3a3fefd5174bbbec523df366b228fca4c8fd4dcb2dbee571526549cac4dca391de5d82e0ed17962c52399aed8ec81c86717fc813139fa35dcf7a4a6c1b110883a86daf45840ef4bf7194122719b50e0980a7098fce047913348755fbc1f23de982560b3ecff6b82aca52f54dbd4f3bbf308ba1be699fab8207dc80ba11a923d7754769608a88c98835903054e66d810341f9809cfab29c53d16b3a804b9b51de50b07e7aeb9e7f378bd106a594c74af3d60e6d6b466d6f5eefe64f7b71a6cc2fb6b82a5c44b768e89dda891891ae853ca43da23068556a857fabd5f1689adae488c6bd4af811e9176b868deeaa2ad31caf71bd6f4ce8ba595c47c80ef6a24aa4d950c090ba805a99df998ef6a6305f176739ef2ae0bdfabb999a44aaa72fded16b7806d99248cd65394743da26358a661d6283c44ce9b8ed089eab79398513f8ebff93ed127709a43f050a7742100941def83b6d526fb499216d04d250e39fe6f80b4d36b303bb6898bc06362734370b3aba94c1a6244a5a8c7caa9d282082514629a0f864ebb91669acc757f9d7b8aa3059c9e44c7f1925ea18c3c80d85549686f74b7e8a8197efc89d42d2a15d195d +expected_shared_secret = 354d86b389021a3196b75c6582927b3a005fbfee0951f34d9cd5c8f415fa50f9 + +comment = Official test vector 55, seed: "467f6158cb86b724039ff18c47950ae5c49170163c910fc9a9b30141f86e9c06ebcec91497bcd156d95758c9f0c6ef91" +entropy = e99fbae8a024ebbbdcef32ce213f6aa942e3eca925e5da4c09975d773b33a175 +public_key = 8c5785417b65b2e4235cc67947d7b214627d326ac1adebccc3a64017e004499a8887c4a649e443e74720f0b1bedd52b1a8eb78b3ac2d5516b7a3233be9448575209675f4a813120422684191d6771ef2b44d92b2ca3bcdd5f5ac20a63efc237ff9d99bb4f5094afc187ebbad39b8b9ce75902190741640babf653886162645a84262a24b1885c626403f23136707816acf28950bf181742c98347022cd5941b7b69e21b5cfc2b4c6c5f301bd32a2e7882a1e1a9cd94743fc86af0cd26b51b3512003cbe8628d299663da40baef443677033da8b8c21e0a0f12fb93f4d63809375fc877866394a1a5409e2f13b3e5011a2a5877732415281b7b19991e6ee0a470561b6bcb46d87b4086f18ca29c5fdcd622f4315dcfb11db2c6cf136b7b0a870ae89669ad1011477899b8f679e5c9a8413959ca0cbfb3b54ad58c98b94760058c6f1f499435118d9143723da05ba8f13e5cca1813f91ce01092917ba1d798ba3481121026713be1889b58375e5c4f9bb0bcc5fa808e2c00a36ca575c68b1d232778f71bf0927c5f2092d0629588826d02005db9bc0dce456e2b928ec9fb9c7a138e7b1065a2b660c287c3d062144cca71e5c1294442073ad48afc555767f1bebaf550d520659496af9237a22c27670a080f8a461778aa42c6ca9a954c28a658c73847a586fc3ef266562240acb6978e026152b1149b8d426aefe37bbd263a00da05df48375e53bacf9c4c11d4bbb055666ad008736b9c323a9974661215495e032aaec611af0e6a9244c2bfb6f3195d5121edc3c0719c3fc1365c2bfc70d5c6140e6a383714a0931ccdff946adcf73993aa113c90aef03374e251ace73770a350428ec32a9ddb4aed8832526968412863966228644b9af9842c2e967957f10d350a3499876f25d157bb2812501c8dc95365f83bc64b6340fa6cb4c2816b31824d028726de0112aa9ccc9e0b6869099d310aa6e5b79609487e7a20a56ba75c45986f92f5a4d1672f3d99927a1193ba15bf5df2586e823292593c49321bac9044e4844a7a6bcb08309e2520b6acf20e73ba5b05931e29ba43b2000a48c72a5df05ef715cd8865cf16a835a83c271402071d1068a426839ca424cb666545664ea5e7461af147b9d84583285ea1a05a02732031bb0ba40b14c828bb0e82807fc57882b31d9cf509be7b712f56994721b55da921eee8ad45c8b4e99931c9b71b473a89a2d4821213a1acfc453a41784d35b522e93c2d994d083674c71583782128476b04fec71f17ccc65b9c83f52c207b08adb10824a505b6da8a78d4c599a5b09979d9491e1383ea155576730614fcbdec1a8c801b94083a0fb55790b136bc5f37b752f3a6c636481debc5da8892ac1b04ac7447953015e7251838acbb6e24b508578b62d7450c46c76272806ac407112b73f7946d9654a45e943b406776e057c22e669b34a39d92f87928f8689cb8363b5b07b861be5a750bedb4a909605e6e26a489a5a4d9fa7be3976479f8abab955200c479e75983be821e79682ffb18553b72cf0797b2d2117add5ac0abc71cf0e4ca83c26d218295aec75872ba3a8b3ca22a2ab83404a046355fd394bf35d66df46a6124d18b9a4606305a5968c4ccdf6b77a5ef23c5d54c68389e610b30de122c2b2cdcea30b3c780612fb9992721e26273 +expected_result = pass +expected_ciphertext = 6e4a75139d037fe938768f42f9de93f12feeff1328beb5a9f23790e2eabec1f605207994eefc2cb37851f718bae8b94570cb06fb35ada46207fc9a0e25d535731cff7ba833963352ee9feb501bb3e1365e85ae3997630c5b387271ed60ba872afa7ee2b87867aaa14da0a174f83f7d488ec12b72107372c0a31677a6e933144ce571955be7a06a7b152b6693a5f07ca8f90a0062ff6c88bf45956e13df2e92017c6e246c4228ff0e86b50e0e6224000a44edceda07b3e8d6be399da183ebea434db5e9e5703dd199e340b02797bf62b29f442e378f9b0d99ab7c771d39102ac07341ed6d823a4fe6094622e3a12d74f4615e7b216d4c3da113bf62109b12fdd8046de27fadd35330879359b0ed0085da5578a1330c3755572958001f25524adfb9fa6220e24417a7d1bcaf63ea1044a3e9b02fd249a2c0e281b2f9e2e18b9f7552f4446192b7b65f881954cfeebfaa3075860d1c6c4e819e40873a992b6837257ac50a7fe7e3d759deb249fec5755da72e4c93d2c412e316e22694dba50831ff7c2bf0a294ff6329d0d2022b3aa6a9791de9fe6face1ce67ad828cc0c6293a7e5d6bc26f58e63e025c757576e849a11f122e6eec09ba7025951df26ccb414cdc914f47584d443f06310e86ee20c303ef9e30e269f7a67f8e67313cbbe0b06d318a172d0c47d6a7fbb1aed20fb6da5a28c53277d1d38800593d571b6dbdf2671ff6802d7c346232aaea7fb96134d8d16ae62b07804474cac1b3ecdcd5c26c112bcc9f72a003c4931cdbe1c89158505ab8267e3f5cb5869aee93956bc0334d09b719d898685f04a70a32ea8b0e56aa6b36405221ce539690e6e85f2227fc6cf40d203d55a2de22c902f1eb16339191576f3dbbbbed0c2ef90a5e7fd04011b33fe9a0eb2ec1a8fad089a410995974f5b2ee8d72e80a716b2c389322a279a2bf71c0a563da36779887c8943fb2cdb5dc6396d459acc88d04d09d1d1f0ad82c8e26c89f48c2dfe104483145dfcd2faef8807c4a160fc4fd025fd35f188b55907556dc55bed560970e3046c4b621038194bafc02da0503f3a9828da90b7dcc73add69908421d8169d32225d54111d122a456092b08e012a3c0d8994cc43fe993d7501fb7c7be94ec4b223dd13f50272afeef76c7ffcabdb509f9c1f9baf4b72f9908cb5ce3770a3040557797f666c8927dc08608709eb97942a64c31a1f71ebd7066031f415034f9d8e9c267b539a3274196919959d4f919ad4068b21b53fb18cdcec7391b9ab46f401672a22f2302af1a5104088d9f6628f894a7e04a78b4666f669eaf906e9ed3c8c9bd7ac220104967485cff8df46b064b982a2b552cd521b477e8b8e90b5f1ce11ca9ba16b045f4dc0f36a3b4ca8fe87b1fa6057b5334e993508192c6b46c79b196012dede5a06e4655b46c2540a64ee40830c7ed1c85507809810086d5be4ea8f1197cea21fc56113e45368c6f3d590fddaffd2848481a3424c813f3047dd8697a6316611889a74c0b5a4fa071de935d2d473ac2a0d4f62ac009 +expected_shared_secret = 3afcfdc446f93a8169024a24fc0383692843cfd6b4854a8e490892fc35aad4cb + +comment = Official test vector 56, seed: "687c02de1041abac7b2c1e6ec2a7c3375552ed5edb10e3a8139c24cc76bda44d719d8121a81d47a0b762b4e9eeb85235" +entropy = 67a216f37d67f5e74f782f1badbce1cc8c80a6130aec305b421899a4faa0a6c3 +public_key = 605471feaa9e92b94016a9a05f585f3c52a993a91a6db73c9ae6364dd2a07b6c2afb449122e76a3b273d424b94343b3bd7e7b1e1366204820819c8ba8970218a22262ca649d8e3223167be77d9a466c860ad7c320b227e873a0d68faaa441c0907805996d64f7759bdeed65cce25b367f02094714be404ca9fe56f6ad99e7d38b5396281314898036493002cb516878db66ab19e09478872c0f76abbe0f754b443b13dd5afe610c1adfc52fb3c82488984dbcc4d9850a0ee4bbc07d0051208c87914a3fa5159c775ad91a552c2fa2ac573787ffa68f456012af600af60183f97cb3e2936ef683fd8e2b5742c6de946b96f825cd0f4807640a532561c70600d4995bf8d2ca543db1eacd68d28b207617c23cd9a57bbf75abcb620d941913e6506aa0123f89c261ce9c39c605646904d22586643f4ad250870afe94dc950913602cc1cdbb77bb9b4df518d1a18ab0c5a25948302c0535908e70f84587eff169114161c3e646740893faaf6b37b42168fdbc494549776d528bfa2c2baf6a00a7498f403347a646c9a58328c59274ae8cff8b82787a29d67336dadd3404fb5509640c29c9456fcf82d4abbcd9899ab108a1fef872617c5ca780970182861c046a594d62757d33247b79e12873493634c16fa70983c9b593814e69bb160120b4129370519327ac2332063992af4370d9871e7a27d13420a6fb16ed9b579d1ca1d36a2094eac96b537109ad83f4df1a1d2e184c309ab65d75a3e409c57578214ea4035657757ab92aa930a76d251a1b87bc6b58f9d900e38156d73a1961c43be2e044314c89ea9601937c0a87d9c4b14cb9e79d83e722cc40b048bec5ccd038304ac0a65bf93b9a787105eb31b5be8845c5c57b9a9caf6243f54438ed84159f5b1b8b246073b1715b0f635e8078991118dfee2ce08887f9680bd4e672d3aa78df8954554d398d1675d785b85dd28a1675944d7597968f22855999f148cceabfabc2358c315076c6b4333a82520a8332543aa100034bb0a6776cd959bcb263074fc28956726d0d99b9d81a7dec14f13ac5ceb5b9eaaecb28e282bb517cac09809073c3d085718d1dbbd75ec83707cc768bc79a3b637d0acb34f37c9c2b4c0eef3233cf91c0bf5a6a9279f6ad136808a9a3515b02e303f4da26f93264c5ab9010a9c8550b9076d6471c196675edb08223672c1a229ad31c05ebc4fab557f46b4bb37dc2b605a87b888a1f475516db87b92451127436eda7922bb45b8b8462122542de969c31622cdd62676a8faac5663a8bc2191711383ef4c1cd7a183bb55cc3c83b566e5514f233d79a2963710c5e5225f7b09b0b6176f451a7f77570b1c17b7ba335511bc3c3feb884e459add3a594dd35662419272499b4e9258dc9aca946ca80911999d455d06407cf9c69e814478a9f5151780bd754a440bc69925155fff0a675e0c322c69174c27cd804279ebd3260feb62c0e24eb63c7a042996c25bc9342c589c340e99999f9c5054ff35c760a43974096c5fd23bb9e51e2483722a132b0277bb24010297c4ba2c58bb286c49ed20b7aae98c5d9b0601f06ee53c1808e07fda53114efc6d36b28b906611be3a29e68a8da76457be5419d70059f7c329aad28692d45892f335d02d36153217d5db379b621e416a54ce8071dfda35f639a04b14 +expected_result = pass +expected_ciphertext = 0739932f7b5b6ed0d363a0fc2a4829b0e1fb8c071b315c536b97eb6ee3c7e6b4022a5f6bc0770e3c48b8c0711029b6cb454b1e80e807ca35b55c06abb75fe24dcb4327ea8b1a7faa63d3de0f13c0a9be2c9bf101a293a078cb33489ee8b6ff1c21f5c4a42e9e9b16d4b860b0a624e00b5151b7f6c4db7893e485715b09e2964dc97740cba20650522f21644776c28b22a26ebd5e09cdcf07ec0415d3d464bdf785035b98aa1fdad58bcf06f87509b3690b327d9acb8b034a34f5b1061f58872f214b57d6e5451ab568c3e8a700fd8c95c82ed28427c7fc569fd3dc334ff8d9faef54b972da4ad8014cc22db0f1aa82663f3a8f205dc5ff8d1ebe30cbc1a590542bf5872ff6b0390345aa14eb43e06f52b35888915a0d8d64cabddc8194ea6a6bc96fa805113a0486643b79721735c0ff55d28501254faa73caad71600ff139a1a5d0d7930dc5d202512ed49e16f6fbe95913898688f3928dced939f2230aaccd2ace43276e0820c56bb7cfe0a1ed5d4aa4d044d2c6e6e895d408fdfadc689ec2b5f4cb24a89dd87cad740477ec812b2f8c9ebbd77aa73900c9a412c8ec72c39ffe3ec82cd65e036056acd5d37c4f45f25c65fdb035e1afce1e6743e985b8de817bf5d43778a0fc0edb3cf6825bcdfbb42c7cbb3a8c7fa02068ff0e1a1a3bd0eb3fca906a100fb92463c7c221e776d0bb43a13037d9a07b96e0f2c421ced63ff9f5442711a7d876ea5442c1d77639c7eb90d7dfea7a635f887ecaefce74aadc6d3cf722f75172835a24dea2664c09a70ed2ceab70a314f061187297428ca7d65d07e0bc8d161c5cb43b0fe2e3cb9cd74c9b2f3237bbd318c18d8058719ee0e65a3f1cabcfda9e10b8c685bece284a62d514c2e663b263220c29cf3a207066bcc53df0f734ca27f2360e5d67144104f8c13f5d12354d61ab96b939cbde93eec145c7332511127944a26ce2ffebdb03504982d25c86fb81bccb6441edf24d3975df84a0950ab9d28866c796aed23c91d12ebbc0a90774d60fa213cb5459b5e55f8d8a6d7aaa94973d88988832eca7cfccbfb9aaa7c44b08a391c6905fa75cfc6d7f1796168c33f8c4f4b04d89d8dba51c840bd0e08b2d660dce30b9880cb86841ca8ea05c3e6b1444a61c318578cef85c9cbe2146affec98afb815380298dcb39ee3913c63a3dca559ce4d5dcfd17152f68c8db381679ffdda0859b6d09866f296b9bb3c6953a4f3c9de9a6901fb46c5548cc150ed9eb30468e8473e308c9d80ec708f031dbf7860762a020702dc6b92c155f2b7f2af9147ba4012fb23290085fcd6a7590a4ee2542f8bbeb2d55bc81d49bbb439018bade94f8282c4f9bfee804f4b53782cd4e912e76f34839728dbaba746dcbcb94194496dabbc1c0a658888137cfdc6b42f6b8f9c6a83383ebab751e29fb29e97b5546e941e895f4316432cee99460bb680ea561000f268602ee0ae9ad74102f7cc0c212afc97f1532428ed658a59d8b80ec5f649726273ca6a5871d8db2184c52e25dce3ae7e2b20ea7c2532d +expected_shared_secret = ebba9a8bae936c829c1445c68595da96919041ee3d9b0fe27ca93db691146874 + +comment = Official test vector 57, seed: "4142237070c216bcbe245a39bd9220533c97651d84832b26727855ad994a0760c52b9319ad404693e4248b8c5ff324b3" +entropy = 52b19fea232c9154a3e431e9d69cda40013cf2d485c3cd027ad24e645420420b +public_key = 5b668ae6721c79e07ee5d26233936d195b62b192058cfbcb0a5a73ea0154d78224ebe84b7b611ced7256d0726492a4b41d4a8d6b2ca73a3668f93a77294439b0d8ca9a725c5278c21d896ca5d706e5f03d71526cb175ade2606e3c3a24d510b4d9816aa6846a77663a80f5ac0d364747307068da942b15cd2e02a3eed2818f9056d697897b509bd5048b178240c841580bbb77a79423996072f39497869007b19442f401009ba1a039c18f191cca42f9551713cd791c9fb847690cf6247bb752a17a9873e97bcc36b793b6ad827acf418543054698d77693f9c38c84354cc81c7a3b6a43acccc32da070fe29411f17a420521fc69c0d09a6425a20affc98681568b8ccea88e54b8dd9f12aef4b3c10f256eb1519671091984a1dbe972a901bb4b24246d7db01b86665374bb6cb841b3cdb2593ba5c96e32c20936ecbc4abfd24af76158b36a2c752a9bba8946b34c414eedb355a3ccb87431221aa2e936b0bd7540e697142da0817b1b51314fc71cf4017f50544474c572c70bd142c676b69afba4292f5f19e88163f2ffba3b1685073c3bbcac825b095b5d259228a459fa7e866e09735e4cab8fa733d4db6a98172846397883394059c635d23c09fbee3cab350b9976c6a8a900c8e1693c3704e779049cd1221ce767651bc23755a3a49c6be0c314a8c501579f7a447070effe0314fa3687ab92090738434e55280a42f22a66eab77a2932b07e6857a32e31a527a2a909865e053a32148b59cbac224c12468e444916ca375dc204c600899f90ba7c854b3646f2af3981797afc4e261c7a93aabc40a93990dabc82564336d01b2447fd35e8e86a0cbf676cfe6c3d229b256e585d8373d26c3ad66161890325533818f845301d9311bc8035714a722ed9206967123e65410562a745fe28f90d50d772a9cded6354132688ddb1ae6956eadd896cfaa71c44aa925fb3b2c6b7d5e47cbae00a91040456f4023174c73dd8a4d50f9714ad1cff718321677a6962587ba6ca82c341f02a7382be9715b41994db91e6d0b487207b9b660793e62470b806a7444b6faab38f48747484062ff443ae1da9e7ef41f797398f0527406787e00e197ac3248ee4a0e5037cf6c754ab9a24d08936e9d3313b99ac18886cfa9972030f1a40e58b25939a21698c434391785a3a98f0445567a9dbc0b4284d49652bb1862bb76fcfc6abe60831cac9aef6469464319411a30f7601b5358568b014e67a76ea42acacd7c3fc2f983bce1bc0667897b92590dc724b5284fecf7c36b3842c61c27af1a2f2ec95899591e707272bea384cb9c8c9409bb26d743faf196d3b8b33119a379d5cbf6823d4176ca83ba4e2a426745f346a42861a7b5343ad3ac26ea8895f24a379c449156123ed91a4ca701bd789da84ba0ed5c707d373634ab7a65680667191f806b6f62cacb4b40afdd649cc9d1650c3a5e40c8346c91b27ec1b1a957c778ec9c968c670fc84645fc07881c54946b5ab0b6033f45afcc6a61fbb99746f3991f5b827c22972939c5ff620bdc4b131eb393d108c56556719abbb978452ff0a12a1d138c9065c304c8514658193232c832b05b0b21a10483c6faab378c6b1415b75b43796f314542b9d7c87c1ca5fc13a12e8459454d36096c3ba38e979a3d4c852032429bfe1e663e0c256c2e93 +expected_result = pass +expected_ciphertext = fd2b69a027c2fc20dcfad7a6765f0946a637a63374b349868b77d6b6d84a3e32392775e1cbc0d9f986843f3f19966f7a2ea83e4ba64b46efbab4c88649ff6e0532f5ebee8a218b9444bd815a44e2be4bee845a961815fc122598306b1d60c402ebb170402220d97bae5e04cce58470800966acc024c00c5e20aa3f1d4bdb672f1d4731cfdad84388c2e918191dd95d2b70ff1a5228dd38e7f2d936fc7e571d3d288f3c6b3f71c1219669c478a10fa46460340ef9c1ae9a4981c83df9a13d5b5ea04cf9b44d08688bf66e59670b9f13f1096f921604c68a44ca5fa79e12ea7bdf671fe1deda8488ede59ccedcdf265cdd168c3d8e9981f10fe225ab88f714d0c31bb53eac599fdfcdbd24e533327cd6efd32a39b24474da685eaabfa3f50cd290d8d681f684481036a19e741ecf16e4b59059522925ecac163083cc087f4b6d78f0452b429eae2518e7623333bc84bbe39bc85866e41367278b995af06e382d165c6957ce03f303965c94b9d857151840b1ad140923950c931b501a7f97c6ae2cada15a16ee5a7636a6f412d19358bf807130f8bcd614d29d8eea8016b04b8a9e2343c951926417fbf749f7f7bee048daa22d966f98975daf5481f3360a0ad80f501f2e4e5d0f840f48adf8f066541997b67504ad8aa89cfc3c12635b8fd25f5f2611c8b8bf0e88398846c9edf3ea57a49978d1fc704692c29165e6b0f4e8db8d298776e95f36dd21504d42f4ec2342a7354a47f4ed0536e6cb206e88e070a2d8a2c5ebe8e1327b1041eb34fe570b9af85f7945f9e2486966b5abc9edda49cb4d8603328f4a4dd77db3dc569894cb21b6db52665f86729c8def02e53f7051f406bc215827d9c82fb5f106a777f369c39c447cbaf4ed2efd105f93a46e5cfd346ef86af228b39f48c27625385f01f78a1a9622e58fc72a8ab21ccd362c7c27af6cd1844cba5cf0953f5aef4f7ce44e681926c691bbda9d1de170f78669546aac55260cadcb5ae44eee3459e3ebbeb14e053fb4daf6c1d43fd679a120e7da136d931238bb9df93cf2ea88b1112e46007c27164e36b1f8a0827d42a2950f5b58bd3eb1d643034d6c04970e00b686489fb493b8a68a87670d02e85b5097987cddb5f59286322ff9308b6de9a1c5766ea6ed47dfcbe40e42c4bc3a82d5ae872a82951d41bf062063f6f8f87ec5356055d94610ff915f930430330981af065b131bb5352e3172d59a09a4dcc84299ee5fa611f31bb61a011df04d4994c713a8774a6ac21b620c5cbeb7bfbe7e26f2478db2c105e02a194b237c8cef57867592aa3a1d0cad24c30d53be0ffc0fb50fc83e981490409b20e911e9ad3b1de67e51a4bee820dc5e136b26f9efdf38282889283f33f4d8ebdeda6c0183bbb27351f7869c3c59b05da65a152b6668226cd5bea860cb1b06de463fdaecc1853889bd2fcb98e5fe337a727524b7bcf3faa23aeb6de10223cfe128769025375e94f638c55d838bb1ff301db74f03285624064cb20142d9cafd33631038b0d0593a4fb141a48b9399 +expected_shared_secret = f063c0908deb2e61faa0c4c0f5051b2c8af7265060681df14bacb30f0228b3b3 + +comment = Official test vector 58, seed: "bd334d7b7eb14e00e68863f2e5551a095f8af10681c28353fd19b9a7e70b8bfe266840860609008a567abc66316c77ce" +entropy = 64440adb05db3308b189bf999f9ee16e8ee3a6ccbe11eebf0d3ae4b172da7d2f +public_key = 98cca518437873f144e7e261e8465b3720582cf7706d684f84e618e8834f35857d4a8bbc303134b5e235dd1b2387a81c663876c5530293f99571b97ae5a299df0c012e9662947089c9f81687722fbdc30ce50689690b30932a8a3ce7bcf6a353bf988dd310a2c347bfe6b30999e69c455b9f472b9bca0216c84265e5d9486f6a7f1f3125c16467ae41b9f85180497b255adb06a406a13a221388e14c0de8cf73b6a952c2b2501644831c3700b7c273b7a3180a7641621f33b41c0f9255efec1025fc46f658c64fc89352c54c264b97e5a91c2386cd3790605127740da2076eab4876e128f3746843205b8328cfcdc65feb92c2d973bbbfc68fd7a46db51641b7830e73589f41d413fb571c37685dff142863078acf00043395bfab3589b0cb435981b84e54318ab46e398389b8e146cab2a9666330ec4c90a652a0f036951519880a45bf5d000d4e40c6b6554cd222880d0b91b67153c43909eb2c0926354d436c2318c593f9fc214b548e17245c0c9b83174a6783508b97ac6a8d8a88ecd278e2e52c3c9138b1685dabba2bb1425075b298cb9120e790afdcb9792c88698cc156ca5a789474992f470b1d554514823e87bcae52ccc872c951b0c24b4a2b0460f488ee7768d56b07dc79b3b4cc321e5878ac0a5c3146aaeb6ca123206b0c7b5aa6e0bec5d0a903ac9415da345af199cab86ba99234c9526e6e8812f6da8001f31337b8498a8374ae527b6032a0cf3142d1d34181a5afd6aa432a588ae1f644f5a100fa593f0ed2753f441ae5677484738ff694abcec58781b06d0213579f827fb4f97b3fc343a445ba3035aee989685e7b20be6103fd39afabc334417379bd666181925ed369680b851a54c41b6546b9c04ca69742b2a814763674abc9cbcb03e96f9466cbeaec698cb5c9acf814e90887f8d15bee556b28f50b739185eb7a5a06e896ed0048bbd905e016436477a68ebbab1e172928ac8fa9a8b0a0d999b135a753a29a47d0136865b0f382572b0697d0fccadc8a77c1b591bd73b639e13f9c21b6f0969b0aba3ea807303377afe0f49421b68d0712823fc448fa9a468fa000d5964bcf9a9e7fc92dece03bf6732a36935b25023b47fc94c15795dd983bb4531e935a19778305d0e8a75c2cc770eb46b6d5759df503bac33f0669c775729c59eb94d48223d763880e8b58473683cee48e309380f7b442e6c83f0eb9bbb0b1ae805b1498471ac1149d578b454041aaa2f5cf13390f10a72df3385c6a8a1f990bb946f4c888e585069b5849882788a1be27da0725276ff9db130519050b74cff69a68534222499cc61f5845a8fc0ac5629e0cda20d3ea2f0046b78a2267fa0187f15721ec53083018772097892be85c1be99480247e6e30aac8fa2c593c630b981e57515e0f7414cfa8b606d931280a950e567c93b319fd23ca1b682fc0b960dd309f80455cabbbc71979c59a025008462c0681465d748ff2a6ae24e86c79922e2845568ceb5063fcb81b78295b93a80b221ae7e14a9a9bb7182c1acf347f2fa73784835f3375a29ed05e4bd120a119cd0fda29f76a1eb873aa88d0cb3c661ff0d5652f2b4604e2bdb1497486687f17b8ce7a096a59e0922260ae99bb7412e306cc0b25940ffddf25214ee4dd4e1aeb851878e2493c05e2bd5a30b5b99d369454 +expected_result = pass +expected_ciphertext = 39c2464c42bbb75ccc9421eca048aa426c45eec971a442ce8790e14ca23260c9346c2681e7985e4e27e7ccf84f8a03b25b0604b9a64d943c2340d4818e28d774a3b4e04b6840a2cb81e542dc7e4fbd2146db158edc7250fc8ae2bebb24bf2b74c2cff7a9c5902a8963d576185576c4c6c4ced7c6f0878b67aee7ea494c34221d8907059bb989a65ac921c511c3b1f23c649811220f1cd528251a208641774228d513e80eb2ee079e9de73eb9774c2b51445235a262f166ada853256c6b53ec6ac3258059e4bc6fc23c6f0d9fadcbdd15d7f7f3a6a96743815ccb65117c06b2aa9bd134746b20337075f1eb45327942e22816cca244236514db48a46f353d5c0b0f9029ce274820fcf479c1600237028558b9acf943e8986c9f5d21af0bb5b294a421ad1a8a803ad0cd38b085dfdfe8f8f19206c027394d94b2fdf6d752b1eab11cd2ee871870d5f9a444077cd5f563faa1b1574b630704c01be830d9fa56eed3ceb9dfa8f384137ad76a461d17bb062b3b6a0325f787702c26e77cd649f3184a10ef5625402e7c7e1894071f8772331a714a4facbe583a1e1810e75c141440e1f6a903b6077783a2e2fabdb61c3b9a5deb1e7bf2c3852160aa8a366578e873d6d4a9f9b54f6a15f0fa3ca20146b608cb63a449656916b393a0633366b527b7e652eb2315e2921711125f9b2f0aaccd30474bdc2880bdd83ee40f94acabdba84810a02733fbcc1770ec56fdc8cac2accf15d6e739850b48616b7d56beacd5c0c30ee09530367675771567db0b05fe97f0e4f6244c020dcd1fe8b95560c8901cf350c9824b0ed5a4bf06ea63110d97ffeae97b0ed0fb5be0c91856cc0cbc4ee16d78d1fa3f2539570623bf53058e9b6087e252e86e0896c78e5bebb4dfe870d5d3a2d041f45346b559e81e24ff09904230d40125c17836aa20027ebf9fd40f045f9485582c124e01fcd22d05118ec6986788805cf0522e9b9d162e3b1003d7bc913d27c26a9171264f49db8463b5f69936d7abef9f28437b6caef081e1bebd7c9a39a43dc0a00ff49731b15e7f1467cc389b03a020fd94b90f5a491572d167ef6cffd5aa45b3b611fe7b9691721f4d9dd76f9d9ba3d068d8d9578f1e238742342a791e4b59f8271e09575a53f77ea871090907710c40973a8b07945109c1fbefab60add3e8ae3b783ad222db7f584b7bd60671afcca5713c0cfa96048bc3c52d62d73fb5182a70b499d54cb6286817cf85c63189590189eee2c81e05cbfdcf23dabaf7c7269a18b801597aefec507d0772f30e21c1bf49226ca74a8e0bfc334f7de59632b564a54aece295cf745784332e873ae704022af6732657c81d7037f9424920c1bf238921d6b596cc247daa20d763f61ecd3fe0cea7d79e7a6094f35606f19976e1e37ac8f81fe5c63e51129cd8a8ce602ac56d9315cc5d6c68398f01bed2e9fc79121db26e319257c40212220bab87a274b97784f932649517f462b05a423a0fdf88582dffa35f330a0c345755cda858b815b6792cb28b5e45c500f86c +expected_shared_secret = 02d2e466e170bf45d3e9d357e2f04c34cda408cf147e9ff7a6e8c715f2c88ace + +comment = Official test vector 59, seed: "a0264c58ab1f2cbcb212077fd378d340307accb31f1312137cf84e3d3135044d4eae8bd38bc3e540a0c14d46458f6179" +entropy = c8bb46b3a7344ad170c2052fb042b5a3b62e0590562ee82577b1081f6f114d16 +public_key = 5e451e4c8c85a192c91df27c17c0684baa6375b17586f8bf1ef12b91615bd08a340c58629cd45f7a392f10a04916c249af956b180bc418b8a95f66b2d0847e79d247b430812d682b1fb91879faab68f25602579bf0d895073780007b7d61940239913eb217cb16a63ea08b29656712a21a32c754953335c29e769df17125d84c32b3250ec96067b975bf524091ee4013a8b67a19a331daf38a396a765f7820a5e3606a734f5ba854d1e6b6e70cb9ee5b00d4d18d928921ebb8048e284a3a05a3df9469ec53195180ac9f869a8e8866d69019e9730fd6e672db024b6ecb4dc55729024033703b6fdb7bbeeecb2345782815843b7b7664627cad52038f98db605fd23d24080f809a276419c876aac69977998b1400395829656c97be262e053197ead738d9bc995145cb2713b5e181223e04497c8114ec5a05384aa31cb84406f93365d7059dd88db8f94a8f068fcd10be96e32a0e926dca518b3fe9286a755f29d83cf667407758141b2011fbb1764d3334f3a763a17cce33c2816ac79ec4cc4c2d842b004c352aba419be87281779300708bb20143a43413a2a55c41e36444046a3c021a4d7818dd146d1dc335c66152866597aa69a44f39a2814a4830e002672731d93b7fe5f77587b782aa279cc9807d6126392f812e83662d49db231dd3060f882d71d2a0a4c94adb3784ba1785187423d7e8a82f379eecba7e6f6a67b568698ac3a2c0b096b015100bf9acfee522a0192e49880439cc1fa9b30fb7a10544e1867b0c34da981ce6e660cebb8853545994454815178c60b04dca7073531aa2a5095f7b8578cd9889f3428a7d1c72b8fb320f304fe5d23a4291666bf7aa1afb5086532fc5aa347dc29279a4484261614f2774c81374aa453024b68d384b01565a36d98b751297477a61780e98135375af8ef68359332826da01ba6a73d5263abc659454f57d83172d0e515d3754270ad84543d995c0534788a6786927b952698abe693bfbb358e9e393151aac991c97fec8c55cc407bf027df7e2a505db531d47344552321107b651fa4e47d4b389c5825e02ca1f42839ada4d7eea2ccb24a74e34672bf1bc4f33c88c3603a3fa6ce87aa5cfe30125f99e81550c19b58a807ba8a586415c2924a6e467ca8bc85a5400f910457e8b9d74a11e2668c0f1a2a1d0389361d09900ec6671206139380ebf9390b2401555ba0a57fca36d2742f569a573096a2b442c5992c3fb65271479291f097cb94589fa15bf73cb9319d93860eacf1cd1bf7d380e03587ce3faaeb6360d79574803b5c49841b74918768efb518ca46b26929f68639eb8fa9f73e61a8b69b004cb5d9d92cf0dac9abc03171444a03409714dc1514931182701c19e242ae73b465af335c8d3588ff468346abf76604b6ef887a7eb8e8b44005bb55af328155af7928c732e7805010cf0a50ec68e29acccebc4a39e2aca10084e2543746be6c81d482f6f3c1fe0d31c6a69329d783a1bfa0b43e289a2f843c71196809ca4b82c75c59c7aa5d311350aa55e89735d9c34e6982d17c033937253d9778ca31a14a9894c5d801415056552c410484970cf2ac86b374644a37976ec4a123c0603ccc01c6c6e994514f13885bceb2f8b0a57073e0f3130daca54c038dc1085402160513337af2b6dd900b04dc3bdfcc90bdb +expected_result = pass +expected_ciphertext = e7beaaf8f14f63e4b07afed36ce1aae517129415537b323347ab73d9154cebfbdf51a20e75b6625635ac552fc88f30866afc1eb1347e7963d1d634b9943db25d14e21030580d7bca1422dae24b0be423349735509ea2b756043498c41a893055f9c7b51a5783aed508a6888416b4f544019a6c0e3766024d804d8c067660161cc17196c98fc0a602b89be5b089e669efe0ad5086971c6b23883567df50c0bdf5508dfc8f62888238b34a0aa1736322838d00be507cd0476739a0903ba622f42f13478b7a127b43799324b990aee9e8bb603c3de3d679e34ef6f22a8d309bb882e61c04dbefa54004eecf710d80bb09d091ec716ad0f4392396ca1c06016fa1acc111308eef78eaf6f4ff1b87743fb7629da989c79f58b69619aa6e3333de32e8ab0df5001b12cf27318d45ba24343a6a1ba4745b3b702ca2799b4428af6360c526b67a2532ac2dc488bf386e7f83fe5dd4049f03293af0459f4879d71483f07dfab14fb1cfeaa7474b45d8a3acc91478723a87a2a16ba6fb69865abdff0e7e18606fc60613ed6f1968bd36b122f345682c2bfde19d0d0cbdbbb051651708d839593dbbe010194280394947ef157a0ee77158398b0d98f7a1f78a528175fde7891e40d7c2055dcb908862434c3875b06922cc3332f3b4acda02402b35514445c90cfaec583aac99100712b3fabbf6317cb7ab57bcfd7057e53580c978ae42be13581f547273dbd53f1c168d0acef9a38b29bc0c35fbb4c534634de64271fab4d9ec326cae654c4b6d8a8b2402e970dfc76a7d31a9649dba063ea5377741216adf8fb01d7aeafb80e8a4ccb9bc9fa2b62118b216815a6fd7c2af7c9b55e666cda56e03ee8ba78886d8b1a19ca0f844d5e2ce6f8ab530baed6057782af9b133a8a01a930c1b900ae48017283fc91f86e81ea77bb6e17c8a00d0212d2c9dc8ab39c90f7bac717c73fc6c05af9a1436241c8c8db904bd2c1d8d2b6df8e83d46220982c0debcedc62c83d547df31374fa85fcb59a4819ff45b8aafd06aac7845137c0dbe64f530c37ab877729222541303a13211c0a9b315111f836fae49fe0c2896a92f6da3786887a42b0c339e0312f6c2849f43a931b5041fe10e277465ea9f6839aee65ca2144668151172a781dc59d7a559f73249f6f0399a80049b15aac6de8b46f64100f31b41c4f0a2d99268b27512d61f69297761bbbc9c61fab51a02c83e13f6b104d89e9efc1f77c7926585cc84a19f3d17c2dbf16f8304fa942002d781be0a3e0aa3347731fd19571700f81cbfa0d7d30208611345023193885bcde430f7868f3f64fb941e8b22192f9974dc8bcf523a3f7c4f9fa73dbbbee9a5c32a1fd7f9e172f5f1d7c0379aa0987fb374018535d5e3c288e855ff53472b5232bec315437513d4905fe3851cb8b5c089da4fd4cc667321e1693a44e598d42ab61880426ff3c27d134db34a7f5f236510cc3474899657de4432ea4b878667ba9140d0257c3616d140cb9b501b0afafe5f2f91ca5b85a528fd920e2c9a53fde5310ca5 +expected_shared_secret = 6a5b0842c122ab6ee251399492b061d2ab3e40843f4dc01c12fbd5bd545c600c + +comment = Official test vector 60, seed: "99a9cdbfc674ab3ff2c64cded7d697a6e27a767434a47aff7c3fbf3c6a22d6043d27868955286a13efe3de36d22ec48e" +entropy = 2e2b70609f3fe029a14d09d5d659871ac776ce2797a0355f16e2eb68f5613fd1 +public_key = a20c8da5745f754b89a990746ef771cf07a6d8109998936b282757f344a1b00b851eaac27a9a7fbf480d44262868542128461598b5597b10cd3a2a26e3f941a9a4719ab2033fa1181ed08e3247bdd396a834e43f5700522cb307ff4b150bba9d8b6aab47361a7947b7a04b8d923202ab1a3d6644be06bc6c1e0735d5d92821c5b8e9b9a83c343d0c456b181b6fa566b0e83602428b6cd33405a95abb623a73299c5b4550a7d6c31d6ef81473489bbe457e744b5d1e39ab74d8a051951abd01a6cff3942a102a33080327437635c1c17966834340c26654a3f38616e5eacb0e489141b14e9d1b15b7fb30927715273547999b93ea2a1ca2189f5645cc4889943f3ccd95496b71f392f78a82aa1a21d66382c37154323c0616804f50125d6b0698e5dca3e2d5658ce153bbf57e4b1908c92587b8c863ff4872e9e1963ae6c971c6ac3932bc974b9f15e5743ec069ed203c3624a022f9a7420ba951425a432b46c5e8bb666091d6f223e357ce96c55bf067b3c3f51abe70abd85a73a42233800853031313ae9971d280b3aed18489e75cdc16cbb3ebc95a8c97a768aaa6c0bb0da7943037bf2b4a523e33abf669c262941f326b11ec6bc8ef51b0666268d6d433b5190bb6996f65925a7eb0761eab6906178be9a923d1c61c0b7683cea681648c44608217d6dc86441a8f423a9d1c288b32ebcd049c15ec151e256a322ee79e2c689a23a53b8d473f4c643aedc646401761a7b75f7bd4145e837b756003bab223ff1a74feacc2e449b5dd9b5777d62ff0e20e4b395821474ab428aa2ea219bfa169b95039616598dae0b9282c69ce329b534bc7aea58e17467b1348b1ab2a031324bf835c985371b0f53877dca53570199b23bc4d70a9425a32b54749082e794e10012e9b458205e106da807c03ac3202a4350050815487626bd018706c69a6ab02fcb92621114a16cacfbea02aec424f82fb874800c61cc23bc6618ed75674a70a6c43c4068e2a7c9723a054967e4dab09f337695bbb01053a7c5dbc764a0856d2b75dd4a94a9898af8b95a62b487ec7fa9f00ab75325c9ab8248f1db65fd7661dfb0b8eecdc2a4134103380988758379d0a73b0f348b00b4b13b115e74674aaac2ba8c2a7ff440340b622b5c0bce05cb601259913c488fee540d7c058a28a0c28b856ea800d26a6a26f8bcde7d78298314cea6056b00a845321a245949a8c7c98d9f8821f1264c658a8061a3014249b7e522d586a54ad7a12ad805544247d74058bc9ac0f603a44ac5199bffb69c1570c4076b345064ec00c5ae0d6a2308947593a84ddb6133ba40577b7b245c20b5d04c5d08281ca0aa10da2a358386d2a4c048c89a2402c9150a7419c0a1aa17562fe786f00486dc82a9809dab08f7b16d9432981087b6741269424598eaa99082525d5db0deaf1b96f55b41ee209f57aceb895babc38828b712724204744834303c496b7171fc458534f46892627ae54800fe6f11d06b6af2b6b9259144f769b1f16c0586c9caf01f8491251907fd213aa6c0bce5b08f060124fb99822d964c502ac49c16ce9fb17eb0c91af559947c056af77ca687c4f675c89be35aae91584cf82202734379b56784fc5ce56e3852d89b052367d9a5d375d06ec7863e051cb44929f17a4656a2cb2c58d8d457897a1aa0d +expected_result = pass +expected_ciphertext = a2e6548fa8b141a9e4657c41ef47720a20e1c548a4258cde5bab41b42b58d69e30b6f887f84c676f295266398aeec9b24a7650d710e0211ae2c76b9bdc0c6bf40e057aca0adaba8ad028c66df5ee016268a50ec7a4d5300e8fc128e6a0aa5f781a4108831554b2086f27938a26b62a3f26fa4c9315da5d43e5699e7dbf424f81f6069e3f9512952ba6958108038471aeb5f8317c3767723d1df5f982d6d7a653a561da3f0f0c4f1d8268770230ecb039a3e269ad58cf4e62732eb0a93cbca5611530371675faec5d5a22a86285b2edacb9b79ab07945f7a7d1e759234957a6bfcb47f13853a2d2062543bdee3b833b0925d9410b0fa83f9849cfe70783041a5716842d8d19d26c0e04c9c63fae13ea49197f2150c5b2e59273af8e4c45603e0f3d655e7e1d442e9e6ed3aee5fe0434104a006a3d5aee9f0af9593a9f9b8e7ed1b6b5f4c3be440d970d1b447c0343ea4982ecfc262a35c1567dddbc61439447f2b72fab241632b448e553c05d7e7ace39338a0df928c4a1a47d9230cc89f4f9a596cf5e08d5a724b85ba10132445bd8e5a91b9547bf602036ab50e31d069ba9f542ed462fcbab1915829ddfc05ce4801758d1792271bd4c68a475dac3453aab9ff0271600e80e68dec303b25384bb61febf82822b46efdbdae5a789040f0bd08714dc06fa8fb051f5a74d9a54be204a51e0fa41bc6cf8771dd70ab54e328381b581a809326331bb37783620dc2f7e9f528b7d59d587d3cef8a952f7f96a2bdfe89d33ae7714f3c53aed207c4cef6495ffd94be2673abbf7f3d3a81279b9342ba3093da3f9d280d381211955bfd5f84fab0ee430e63e4d485182e4152bcc715d1bf917987ec85888972645515ac8b2cf0d47c736aa652221c379b4c622bc1c9696faf0895d42d805b971e340291c952b931fcd85e7e56c43a120102252ad42a258791518677f37c5c6c5be67beab159d136304752daf06b210389ec4c07604bd72da410934fd08f053c91be2bdc410fd0b5e5886e0bcbae2033d8a6bfa579e24f2bff7e96e70b880331a4a7211435fdf9f78dbb758b1bc977fa22d3e09611510f84adfac85b151064796623278a0e791c1c38a6854fb344ffd786a8f9cdee2f9be606bd4bb55f57892046fd0d096e1bd577fc71b74c00bfd1c7c683f77f50b57eb93a93fc5a03acf43002dc35025d3731fc2dcadf031a2a0473e2f7530eb5246fc53f32ffbbf94494555d077fe6b01eeae398964c7a7412d5cfe03b758105bcee79d07524efb52065d94f3ebcc34357bfebb2cfacb51481f5368f33b4db2d1a032ed9283dc876c813f2787e14b55de96b6792e73697db908388499ff13a7d14f5a343b8fb37278ec1836cfccf592d47d7d4942332a6a2453af2d82df45fc0ddfc7b83de2c82b28cf7df01ec9171040c434b92f3adfe59dd5243cc80e76bbb95747a2672ea343395c79bd7154c8d6747f3a8cfc93abb97ea2191b0feb819d9649cbb4df6fd9c1835695e944e7815ca7ee52952bfef13a9027598dd893749909d49f +expected_shared_secret = 2486c0a6cf17d9635dbca1f8395784cde54dccb7df10fced92183f983478fac1 + +comment = Official test vector 61, seed: "c799d57b41f28c5c446dfc58a5ac6499c4bcf3c162afd2b09a16549826ec2a6f689e44bafc4acc82f5d6aec23f4a3993" +entropy = 4725dd8fb314bfd8ee23731c2341dbe114606d9abe6434c471b5573e7df193bb +public_key = db55c6cec7b63c0721aad84d2b6551fa941167c78a0c105ed9e5300a24bb2c8b2265251a38ec2b9d05a0635b2849a81a2a7c6f2660504d5602fd2763046820ca168d70b76e35b9641ce46a44f2a394f496dc32353c1a84302381e8d74ce4294a4a260a5b0704797567ae831d7c4410593cb7b9ab74d2042c84805c3aea6ebd193a927c8189082333b3a5e96857e3970be7daca4c884d7bb0b3b9c250cb4135d0b8c90ae320dcb3c423e8a6de79ad594240ae7aa036e320ad8807ccb7a1bc80c704c9532960864a9528347636b4123337db7e2de37823c6ae084418fdd05ff7e904211924fe5a370537762dfa012a2153af96a46987776d245fdcb9434d66aa10524a3ca74e494c9de919c8e23c3ff77c58cbd1cbaf5b8a69803a32e23959b2a7d9f808689906a0985aeff5a8464a2af64ba053a3c18d89b2cae3814cd712484288abf7655063c403f635d7a2afb9d804e2e89677131bbbf7009c981548036726d25f05f004d605a24b7c2bccc4294f065c013c8ecb242d25611b5c82bcabeb9e578758f2f3ad3f087bb6813db1f3990c867a2e679f47f074fd012e87b3b6f51cb1707b9287d99fdbf43c8e58940109c376789e16c4a30b6bc34c870364192c555b81af58962ae771df477ff421a9b46c6e64bacd1a8a6d00da4d9507212c910ed2c62d199c7e330a11982c514f27aac092a5216b13ad54beebaa4049065a68d8ce9b1c969ea01599a71d633197bc33c2f6f958f72ccf14c7c09d973770f170f1f7bb9e458a00936d8677717f4a17655bc7a7ec56119779f7aa391d2356ae3a97d7ca04971cc2515154e148568c176a659a8decbb2c5c449ccd914d3cb7431cb3a0a400a8c7b59b1cc770c5bb5b64e0932c61783c9979d6cbac042216a0cc5800ea160c8c8556e0721d610fce13992396c382e93bad1514d780cee046525c443fae063c5882a01e5a73658a30864b1d6344a6cc46729bab7810c46f5b480d309a263e30461769a55a2965ba6ba0b44054f211b98c6c2355150acab81881e5ac1e561a4bc4b39f9902d1027e56155f5d71b7ca67415185319ba769f88345611ca2c20b233dcaca9ddba42edb204576bd028a79bfca57c9dbb0a54b933c970de35032b9b51d00c9922abb5106897cb896065fca846aa486d9c27f5b616e99ea0ada711729b75d86669645b9a223959b3c1c2f3ab6536d74295473c4c055aef8c2cd2d321e9e73cbb872698b3a60667bc768014332083139d08c321157cff1481f259ed56a7a3ff1717bb64fc951297c709a4ae3c05fe3910d6507ac947f944b970070570fdc9843a8a5ba564141f80f1654766f93048be6297a1cb76c105a7ba3ada06a42ed1ab3c17542201712f11824766c07bf14685ab0a9f69a15ad6574e59709d2411b37b509de3b7fe5e8b0ac65922df23e680c33141418f9551660467accc0c794a67cc530a5b130b4cf1c28747601d26983764acbddd30e42eb96125956a5870142574419977209a12e09ab3c5e8a22c1c5252527c90987a816b8830a757ec44b12e2e2bcbf19097d02b19ae47cc7bc99189370a1aacef36415ded82fa7a63be809b515f79f06612dabca5768201c59e2c92eba6d13b72c31648ee1d504ec3e89c8d796e77fa9a772499aec973b63e864ce36a29de99ecec9695d12112c +expected_result = pass +expected_ciphertext = 459624a950aff4a380db1ec8f9216591e74b0bfb9448aaae1aaea886c781c414fcc95ddae21c478a1f1692ae703b8b80008661919cb910ca02b76b9538fc9dabc00140c0d790a88245d3a3e70823da64629066e039361442e60d25defc22c16e33f910c3ebec5d045bc9dd1a763fd42a9ca61037cbbccd76c64a494c0e2b58cc2a4e8c1210001cf0da6a2595c30b36b3cbde8d08dc0de26377f0a428a35ca414cdcce0f7e3d4b45f0a32b167587521e57c1e677a23ebb39753f1fbdce24a3a8316d2044165d2aebf018dc0e4fa4e89c75477ee02ba8afee69df1720cbf5db1d6658b7fe8fa0c5672bdc7af5fc691cc184fa80c9a4000b37b7bf8ab63ac072309374277e8b01a08b6e717a4ed0c0357487cd7aaa702bc593b6669e63ff8215e684049ee8466654cc978f81514740b20038adebf7cabf9b21dce2405726d7ed474f246867edc20a729434fdfcf2402675d4622230ae94fca7ebb4a273380d53416d587fae57fbb7907068f04ef35d7205806ffbb3ccca0ae38945966b7303ab930dedad2d02a4cadbff6c991c6af14dce43b59c55614d970568bb8137b600401299d2f7bfcb7ecf7b11ffb26a9d0c3b753c7c58803447edf17acf17e77d1977aa8357acc332662bbd3f4a1396091d74203b1f06c1993df3e34da20762a0bf8bbc1d0732d8d011d0f09264ebd1d1977bacf77c4fa030a4d346f152e0f1a132ca1b4f996b548e93104ad66593d8fde6d3c6eace63e1d0b53372f6e0bacf148b0f4bac5fe90e7467dcf62682cb70cd550257445758a6e159e092ed1952bf66e1be065e541e32954a08f8e0eca909ebbe54d4080b1f2e482952d912a32592aa089c82d7621d43ef59640a910f57ece74e5ee0af8a6eb59836c266360ef293339b97c194904bfe37b3462192247132a2407e27fee0639b4e3ce3e62208d0fa299d9113e3430d52eb295b170320511d110f83c05deec70b3e6fd864fb15912ec7e5d358ef277019719bfda9eb01e80b98d98af154aa22604988fc246fc4e1a1a7cf7cff87825ac183f5333391f32049ca0b09d57e1a2bc983c091bf55e048db026372f7cf673bcfd5e88d36fe0faefa7326a057caade1b50cad49a2413f9718f1a01aea81de054c0000dbe33e21f9081202f5c5e824bf240561c2f4f50763cc9718e66746da4443604148be687dedc2075fbb3814d7e0a2d79eb6695e7dcdd45ad9afeeecf58590ea21b1f78e273289259afbc7f97ecd517bbc8f33dd95bd9ba0da7b8e72d8ab1f336ee0dbb6b0e43612f87d558ae2315c91abed8f8c38c2d6b00df17206ba9752a8e958da506595f2c65a53e767d0453da2e70dd14c3beefbcd32fac60fafb379b67ea1d69c0febdac6558bec1f7b190028eeddb618e0aa70f4c65169533eda0a5f3a2e35cddec4d11508685278ba688b2e914ff23997c4d4b4d36e15113fd7bcd644cf3b4995799206e0d2f87f2fe1566b7e7ae721c49b871a30d16ac0cbccdf1747333745a91807ae6dc9b272558fe1eceba01bf5b68dc54d73dafb5 +expected_shared_secret = 85690ee044e4d8e0540ff984775b59bb5134383c4e229e79e37d7d77632fadaa + +comment = Official test vector 62, seed: "f7ae036a0176a9de9a036a542dd2840033277c44ae936d10b768566216de9d4395cd42b116873b69d9804ba6ccbc05d5" +entropy = 818d3bb8ebfb32bf464775f7139bac0a5bddce80ec5798595992f9403002cd5d +public_key = 7a2912329482f244226ae33507ba8fc8366736352380b346ca39a936190f09576c5188c5e82315e3532f34d41f1b50bccc42c1138802ccd5b50a7846ffa7bcadd91fe757ab7fe30e873ba233e13b21d25461030593433f4f66482d94b916aa8d1b4b8d6786926e9364cb579f52236218f199c3925142b53500291a3164516fabb941f98f0daaa1e2d619c9622d649a0408ac02d5ccb9b787c1f9b196da37020e362ecdbab03cccb63b659c6347104074b1f8254499c8452364726b1294669a3a24ac8b487752175b30cba68860184d5f78b845b107beba80f8750475d059dad57caf827878b926facbc00b54388f24b7b431347e334ffa046c45e234124c958cf66023dca620e1400cd5c08b89554a474d7d04086e5cbd0d051c03c4580d3442a575255c833026bc19dd301a70367fed300ef27779d2a49819a370519c7fc404acb3fa441a931c67a3033799519c883bea134242f35f92393dc134bce15713ddb33e252b991af10c7134a8acd09408c8cb2ada36bbc25224e8867a4138ed9b4daf403a477321614b3ee5c7bc2281441936b0b05513c1525421871d007346bcf52d6e09b756b4529bb5480aa3165e617cef41720167707f35a4415975a62114c7918ad83bbd8905a283d14d22b2400cb29fb1e102562cbee5a9c10929229f8c60a4b153c430a361812e75b244e4c3954a945459f735d45572e83b505030c13867c720567fd681c539d7094f5558dc5a86da79b38049b0a45a1259713af2c1640ee0279bb7191f0c0ec59c2f91184ca70a2e8b7576ce493e32f2c549c4bad6c925039c4c57114075281ac7631ff4d94ee0723c3400cb2d73c184489aa5b440ad470cde548f2f70903d08b9b4cb6db68a5d4fbb049a5a9727f50f9e6c59295c62bed7182ca96d6093578dd014f7eb0b121ac6faf917fa9b47f6650c6c7336d8848dedb92a0f70971e456e9ae625cfe266b1000c4ea6252de1ce20c014bc161fef405ff327cddda37be4919c2a0c097d6995b0eb743ff66a548307cee1080a13841ed12333e62eff081514a5915022c550c6021a27889bb0421df3a709ab2f9f3b0c0f6019fa8810ce3a9c37f53cd651acb4e5bc1d8b231f373b7a4ca6723a9710681016943f29697b09f6abfc1c60e8fc4c201a9ab05c260d2452c83b88423b904df74f425a9b4d116de0d059d96779d61017c2e984c2bccd6159c82dfa5ae7bc63e59304b1105ca054a71d753e7e583742e715bfecc80e51245ff53c16854ae0ab41c581402221cc8834a5f4556a84c19f6172c7c80c759299a42c71bd67040a29185a45c14b91b56a4af9178e0bbb0c4c197549b5c9765a8874686c63445dea7a85d43ac4d0b979b4ca13a80bf8db634a163fe3f4327210a7a128716b9805bc1920dd322b15c74fc722a126069abb8c95bd090f84497d832a1ab72358d4193b6542bfd627a139374404dc1998416f46054d1b4b538e778d6d0507fbf5571bd01ce56362164793e58355366495aec80eea35463c4044b202451b3604d6ab96acc3617acc1015379564d6a5ff1a6ae4d802712a94422a99d90988206776055545172b0282b5162b479d748a2e9d22356af11daf2629036665eed0642044b76775cfd9417ddacfdcb371aaef7abb3c2cfdca88891dbf808a90028d4f12c57e4985f7 +expected_result = pass +expected_ciphertext = da88cdf0e629ad2c8000929d89554053e692132ed02ecf7f3947121c3da49e64e1fbf87f48d8a99818864eab9fe3b715165503b6adfd94b6587c65864d0ffa31a1e2bdedc66d2ba36ecc03ee41520af6302c4150a1ea1bc153edbf1a8736f3d57b22e309118019a6262138f311055e9b3750cdab2b9fe95b8be05934a61eca00f64aa6ecebe7ae12bcc6da07b91001fbc1d3161ef92592d0fa8a86d2a5241991174ba94a054f1c975b16bf36d4550ccced94a96f52433846252043839a01678167bea5a5f613eb41b4b33707999e4380d10097d089a44a721eb888528310188f6d9e642dd7677aa1e19fc710c94f645fcd2ce7514d69ef2e4650c6df9034475f6eada37bb02a268150af7b5181db8b5ab7242d601e4bb2ffd9d508d2988d4e13b5ab0e85094aaf296c8ea577d75de39a08e2bca7e3bbf132d886a2965b3476f04541e47e883e659a8bfe1f4c16881c70425528c5142a389d0a3f96cff2503c77a40d5ed881597fe8e5b9ee4d3db92cbf20e97aecc5a984f4d14445a33c31983353f9cfac3912150c7c6a48a8237f3ddccfc80fac8c8d73e4e527012170b3f485faaf8dbf3ce42f152b16bcdcc40418ec45e78beb00cfa936f31e16626278ba94e8fc0589abd8619aa057880672509a4344500c88f05210705220c0ffc327e73a9751a2e03606d0400d6f3c5bf4405ff0be6dcd9629acc2817b7bd28ffec361892bbcffd220fc3d9813e73aebf0929b814953b3d02a5d5000ac52e3a81cddc5f64e2666d4c86af23b1f45efc634f18f512ceddd5cd52fbcc04805306a794a61b0a502a6eac8e069e3aedf5039fb6ee62876795e874d6cc7cbaac232c73806644b49e10e5d69b5493e3ee647e7f92467cd255da303031270f8366c6e39a91143f92b9a803fbdc42e83251761eef40928e447d43e75abbcd57b97c207cc35a66a64c81e81a6ff33aa58e5e6dc047912171b53e34bb3ada16e57c2d7aae76c430f764b672f60e7691ba73fc1c6eaa57c2d06609ae2a6ed311c6479c9d3c8c12c4be9ae17ea146850f5676464a63d3c688c485e1caaafb515bb7ed4ed7f3d47455002eeb53c6282ff810ad5cb2bec2c5e52a6c6e5e8227c4ac72a882c45c9b2b90262111e58280f0cc6de4c86c667bbac46151d06966641e3cc67c86d06825c3c53bfb03a2505bc5731d0909d384ded3669197a2668c9d9c9baebcffe8a489dd5b6c42a3e2b65b236a9bf62db7342b0dbe07a04e2b8a53e7d4cbb520e1a56d25f427d2bf61a1cfbfe72e6c09a286bda114642237d6416053fc077f0824f439ace9a25433f57896157298f449cab005f4ce8395a904a3590f8940212a9c39c02ba42fc6dae73451e48605f2431d463c2c26f6050a3412c7d5b16a318286f8fd001285b28934f956138d7ebdaea7704451dea0641687eb19d87b96dec22f8a2ba755a62435a51f9246777923a9430310f529219ba8ba0d948c6c6dd13d2c0ea6f8c921ad9a3b4d2c9829aa9571279984c2bda818a338f3af9ab411c29b17fc4caba1ad3 +expected_shared_secret = d179d901a0570bd23aa52570c5c233a2240d4724e81d98c9ceedb74187eb75a6 + +comment = Official test vector 63, seed: "d995d38f934b6e1a7ca77c9522e3d037676cc939b0c8bd4b84394b3dc91a791f09d2d97199258c9943da955e7f7b26fc" +entropy = c92aa5fb91c980d9cade9ce99d4c75b2ffa7d6a6ff9bd59def1aa701f2a0992b +public_key = 8e892a62437ce84445f2e82b495c9730fab393dc6f3b36bb2a63759a79ae27b162250076a608522440ac1e04630ba766b4c256341c6ac967b36e6934dc58cda15621827b9558076361192e89708ed88a71826a20e8ec948b9c7915566c70a7c15a72c36ecc7a3cc644eae696022657c53500a0f13a8ae50fdfa432d8d2530999275e5b9c1d341fb34b8a5a7421b7d290cbc3218486b555c92572bac8f1085f058a87fd48796824844553261ca11f06978a03f3a8d68657c22064af83166280af52270e004731d20b18982283e51ca3db7a2679da6fb0aaba1e75a2d283add699a797e1be93502c6823007ba5b9760a338768615b671baedc6a6a6937b9e1c35575776a4a791fec7751079c6683ba29ea28bad199175b9629c44bbf219cd88a19f1089aa551946e58032a9c9dfd29bc4ca3b654f494990cc02bbb8e1280b54ba3920ef98903f171c27a5c0fb679c8e84774f22136e89915a534d973733410a96280a3207407235ca0d81a636a35b9dd628dee9a64a12918d0dc6d4c600989168a163730fab8c78e61a57970c16c813b791a0ee9f625c438ccd1a9429a93062c4ab38da5890188829ad116a6f1564a43a2e4f3bba3712207b65e701995c99b29d691c86bd9844af2471eb5cecd934f764629dc25839c809432e395fd8582cda980359246eef0637b9771fa5853099007f173c8598164da69c8e67a910a50b9940b213547815e0589326b02ff21b89bc4200219652dea6ccd59883e29127e2abe3787738b124d839a67e02195d64989520737e3aa99c6822f2c32249256c45455cbd931a5a1fb27cd56a21e22b51c03217aa387e151631cfa445b2b77ec90ae01828601961ada8a8e6192104f02ba5064c4efc27cf2dc3353fc98f34bb947b21ec5235fba6caffb6bc6b1c09a783ab8ef14c4921a28a3896bac07ae8ba98c117b3624e01ed0496a8c649a38a33fb679bb535a7d1960028ca6c8ba825178e74f0e50b5d74c2a9119b595b863d0375a3da173c63a03d8c60a8d613cc08064588890e3894a9bf4580704038841526ab84e27cabc8fa4cad6dbbde9b53017f100778478b86138fbd6be713a7e695358538bc4cb5a4fff531bff178bb16ace5a295ca0340985f34267a3a931998b29a36935d3b13af0631cd37777689ca0b43b9208afbab88ef886a8672b331224c66c6086b8b15a8eb86107fc0ae260bf08f970cdec98ece9a197751b6996258ffb6dce05306380770dc63498e9b5d65acac5a179d8946b27630525b39c3755c070a120c9f468ab3aa8b1a48848081b888baaa1156bd600733be887abf962c46107c432c34edca8e549977d9a6f7eb77eb9974bb353896e8261502820f599257cd9c2852328b0fbc5c2b98658d67e4a636575a46e074a1efda2cfa50a0594b0a421661d81d95a9ae0ca1c037532ba7eead089961c29765c443d428bf20767d1f08615e85d0c08b0fa5076e297143249283c13486f61a4d9d39780624055d6043120a510d4a686f9b490c74f2da782ab42157a00991be019e093a509c0c00b7c1e6ab611dfc4373c640a2f488e7632be1289666206cba2b096a479b2140c6aa301bc448b13b6839447c4675aa1be46eb6ecfcb4ddf2569b2d79abe93fceaff0f0ff88688c870d19759a41d3d361a0cec73cc908f52bad8 +expected_result = pass +expected_ciphertext = 3a289f96c11468b574dc8fba9ebc8e41d2cf47c1e08dd6cc9fad7519975af392d0f0608ff43bed72346208e0de7a19b1b5c6de3ff343cd5647afdc94a8d079b12207802c5b35fe1152c55cb37d5457835251f7d101d540c7fdf80e220bcda0305d8ab89f1105436071ef5c588addb1753756710e7ce507768236bc4637ad18749522ff2d5c238980ce4ff37d820ca43330e680d8cbf149abe46c8c856642191c8393e2471e3078f2860e57bdd8fbd5cc1c696e145f57a179a5c85393e05604a76c70342c2f708ebbf150765d7f018101a0b13c808886974202ffa8fba17e7579ed9a7ff1a97f323d8b3e00a00e19803d2132fe804248b86a13f4615de551a0dc65e2f2704b24c9b43c7efccb42b5ad4159a4e5b74c87f7df156874cbe4fbd91c2048299b27181aae40bdabf64657427570badae13bed38aefbe8d7f130ab272562bc3724a1ee05c32004b3e446cdf04a31e7d1628a6fc3c0ca547d7addbf959ce5038f5f6ea655df4d4d2ff45e124c5395833041582498fbdac6fcd27624e015f652d16cf7d8938abec77ba550807c598dc507105e855ebc717c88082481b92f1687bdb9c7e486774693a9140549dee7b387f28227a83968cc61715f68122e5e46b847056586fdc5037645f44d9654fe0aec4b4132d15056a2afcae3b31f0a0deef2964a7d039f61bd1920fb47facd8718d6ccc429704b8dd2c830d3c168405e9dd90b7a7e1fedf9c5ea36126ace5621404c6806e5a95b1c6495a3885c6c6d62ba4c5122303ee901c69c14f9383e51f8b565b56c1a3d8b54f048dc01a0193ca5af367e4fb92c47a019551becffcd2568ddc7d57b66b3cd5449cf3841c66d901e2c9cd6a9e93831c7b9e78cc26673fe3a7a54c85d3323029e5e9a3bec39edf9d4c00e5e1d939219842255c35265066c534bff32f32887a3a277e96525880bd4bdfa97e26083b4342c4f6882a074a14acfc1985732f732f96072f20e95328d4f52be6f3ba7d3e3972d6bf5d584ff7c5385af1b749af453356cfd6984591269c5014f717fc992b6ce5ff945ebc98e6df117d4e237112dedc2d8f1c88adc466ee74f612564ee5d49e94cf33470f735c3dae296e8fc1642c08308e285f20729c39256cbd63b664a375eec8a04e6e9cbdae34d5f27350d3313727c7b2f2612657865db4364551d315d8849a96e8525ce6e100ba496f6782e11b5d42c6da5f91cc4bce2c77c65c029de1f67f6977217d9256b70f47c4712260a8102a110a94bb3b7e26dade7b0b9cd0c158bc95262f54087eaf92eca527ae4cc835d443ae7c58daa2eddf7680637e42da68564168840d87bdfd5797ba90967299dc367ed48cd1ab7f1a0f094bd2915a9508ff2db189ab6aa2f7d813a9e2eb219620c8a1487993417319254038037c080051a98da562a0176436990937e64d458be7f34ed366aa942d169e486b163cb8153924d750f1c152759f36672de638b3f3afc7e569ec52165887acf342123a9d88d6c795ebdf6f5cafafa6c2a6e03249c33a74e2d12eaa9a63a44 +expected_shared_secret = 6d574af7fcb241fed8763b2d0a352870baf85ef686e90eea31f8500c35945ef7 + +comment = Official test vector 64, seed: "5929f02a271725cb40200de32d9d03d8bea53b53ac83186c42c7f565ccb1ca508305d470850cf86e9b2c61a5b8ca1c93" +entropy = 7e8086a01dc5b3bb9eda25bcc45d27f99874841b97237968495800e007696ac5 +public_key = 61101724795296a2499158c8e1b50e4c900d65c8ae65503932dca40e058e8192cec2a997cf12c8a1227567b12a1b21bb31d3198c85c4878c6ea1967668e3952d04b4123cbb9cd8c77f3a7397a9133d99654e6c56e7465d9b98bdbd624c12e36c62b60b6a32c9086a8eeb9b8919706f4573a33c393f74bb51d5609231f1707e152f23f36f6c6830ef28253c8cb81ec5c27adb02fbda5302212826f0b88aa4b4d72a509e29cb1bfc8177c019c60598e693bce999aabc4621123415235208e7869f62aa7b50a51724c13da2db59d5ba5302c772f2c1820fb0882ef32f73321c17f40d019cad39c3b12c57c3519ca0b38366ac4353b133c39262be6ee47ecf660286f6ca8eb7090418aba0d9833e22b46b761fa2872fb80972b551809c02775be07c796636a2c619fc748b90d28e1e702ffb0653e250c8c3759178c39e42411327a81c7e7887b21915a5cc032c37a11382c4d9186221b1c66afcae8184559910201c8baaacec62bab984e080433b9465e64a2d987028e9d9090cb2c41753742cd77f0998c672441e83d45f2d06c22899c2136362271b731f6ba3965b32e2517463e627aeca0ae5644bb8602f7fc599abc120aa111e2e549a276a18d2a92c39502f6f9519ce76c0bcb514e8084c7122a321479338f59ece08a0acd30f0ad68f2091855d5980219083398a6c0a63c70d3743678a1c0202a69dc526ddb77e30b779c36ac2575704ead94ddf1661a38b2624e733f2e2ae18467ce2c3083b75017411390314ab06abb4d0fb58bff99dc3949e92994703e85fb6b863ae1c29bdd6656cd75d9ba453aa115a32745f2dc1829881a9f4d5cc2cc053ab79b89d107e6054c69dc93f5aa9c8ca6cc1a7583f2e2739b102378d93990cb8280b21a5d5ba8415c48ec17288044623a9631577c16639922978258cee0b6c51bbcfe3f70be07cbafb7c58111cc7f2f922aa023d5ad01d2d31a57e0469ac428b6fb88a97d957ae22beb768c3cb7c9f02f583fa2513db7c580d2986984314e8b346a06501d8972e31ab8ef5b983e9a15e8ffc624d0041fd523570960e09e57d616a06297bb3f9d938f5655628b06c4f6c4fa5f8136f8cc05dfab7389237ea75aef46117bf1b67aa978ba622491260128e743f28f95f533b708f3c59230b23faba96ffb5c239b32b30a65b36fc5a0a76b76f04a60c9c7d5eb78ebe44b736eb56a0812f59d9b5812916246228f2523175242cd1f432f9fb054a8b52d824349dc0756091b2f7c21e2a899362157bf9f631287b90d6c80fb55b1469273f79892435d031b62982c49a1464e2274f815f56f3b6f8c949be11388df1151e7077f603ae592623e4259853a2b90159344b041aa29c8afc5074bee81959102e0c57a761f1b1aa65b1dcb66a18bbbbe12b2b2942a37d13c77c77b2bde758eb1901f74c7d57d373a47737d6e23998e35dcee70983359b4162c7135126e90a807604034d52add3530456b66f0da64453150afbb67d67d9b359137c2420250c279a1c537ab06952e4823f09372198c253d5b71a7e70a1c48b1dcac3a85feaac35a11e670b2840a57f2a7c77b6a00cc80a282f0a1c8160080c702d619a6b6d68c757306c93a5b21ba8185b1a46c79b03c35880a7b265a3e05b2db868482fcdba0367177bbbcad04f3a50adeb85ded90bd59dab +expected_result = pass +expected_ciphertext = 85c0bb95389f7e5801345480ef8cd5aee04a6bdaa435f7198c4478ae8a16110b5356cfa6c84c202c0d7ac5a13fa01a5b08611373ad41db6bab6783bd8cb03964d27ef42e9ca1d123ebec7f32f21bce5ee855a48617e85ba20ec6da894b582a88367ab489b68628ebd5195d7ce2e969e5c4141c9295b95d0cb8bf18ccc65b9f6b36ade0ddd93ceb7c0473d2f1abfcb788d4b92262b8a220ce9d99ac358ded7f108c2c0cfbc54fe75f53cad2f7c8b2e1d5be8e24bb0c554548421d821ee1e8c6187c9ba06ae2c7d0ac58062282a8082713dbfbc536ee7a032f018bc8d85b0d01c4ab2a94ff97eee42322ed7ddf060ddee5803bd30268c29202817f8b698e87e03f5ed608a194d7ba1e89d027b31a4a2b7e23df5553c9194bf5dfa9ae4c3428d31b4851adf635a5f772e7747da34ac8698eb78835258006e4dcd1e2b6aebafa19924864263bad9e52f70cbfcbe8fd31f993515852a431ca984f0460f9f987075a244b8df3a8c6fb8cc5e46c31874ab657a31f32be45511bc49dfec92511335eb15aa3bda5f637349b1cbb8c1a927da6b4eb2af8d603fd988744f677bb7355dc737fe1f161c2181d45fd6b2792501aa6ef68de0621511a7b0bea9132e7b99dda23c074e8f2ae80dc5438123a63152f6305c6dbb156dd572abae44d3530c35b4f1458326d2824e636ea5b8476d9287af2457e528803ae3c546c02a24f3dfe9aa872bbfab2437ee2352eed14a2d94efd9b064c2dc59d076e882177af81e3e7571b8f73c3caae2c5880474f705327c034b6044d899635f16c15b45dbce6f3be9c72b5a9e82ae6b2c2cbd994e88987447d2a1b4f1ba3dad60c0ad9c6544296127aa9fd858cf2015dd5d6cb297744bce70b462dbabb8fbbf124e7723836a84fc613fdc0bc6b07ce574379197598e902912844813939ca8bdcc88f861b97ebe58d8aa250d89ab513c68625358a783b4df50eb5728fdb4a4dfb00a4059c3012a3a67fb942eaa4adea1341b3cfda696d84ccf833826750c27b5d9cd84683e5c3a562c89e8e2e4043d469ea530abdc68641e2171dafb8718ecfe9451430561bbf7c349acde5f73eb3d296b5d1bc0f0a004c4ff8d84e335a9ee548a03e1bcc2903495744637aa2de638ed226b202d126d4b80c0d56cc14e2d23a71f57baa5a866a19b490caa860dd01db946356c0e162727ec75aa5321ea332898de7356bdbf110cf32dbc9cbd9c6bcb844e60f0e7b064bbf8220e443d7385c0967d7f32d6e0f7b68d75eeac8a8c6dc3d8c69caea30222a11d4413c294b2ece3c5c14f8e17e685e0753a393218ff4dad9e0d3be4bcfb6d21274bd2be7bcf4ea0f5147bcbd7117f137d106d1ac6ca8c6c772bf815bed18aef0b16b7a000ac610b1d289626b1a8127879e5312462f657439e220b13cd94b0ac3977b4143982aaa10f2e3caea6457fc8377fd766bcd2c96453f6d0c03450a78d10fc8108ec1a21bef17ce36ae5ca62a5e3e5093d2db9ff8dbf8d9034e450d7b98b17826545a3065ffef40d932d94661681676be4f07 +expected_shared_secret = b1090cf26276a81c22ef0e4479a4c705fe294d3b892051ddce7eab16495e0783 + +comment = Official test vector 65, seed: "905074033d7b75deb2d06a2f29144eb377b452534c5710632989f02d45312d156557e96d4486020826db200153bc4a8b" +entropy = bb321ef14d44d8698df879fd52450567657f52a2df8d111185dcd7d4f30a72d4 +public_key = 657b941f466659fcc971c1174aa4459551848e7a116b751e5e4022c8f2a4b3152a1b26a3096539c9b0bd6a435ea1e33413ac4d5f401f5de8570cc11cd4bb9fac473328d55501702743e2c8d1b97cedc8ad3d55b67d284158ea8bf1a4a8a17a9de6d5669e8b9571200b05300cb30bcec4a58b06f70830c2b32d28992b70427781854456129cbab53a7c72ff557193d3a221d06177d002095bc04e993b8606245416c3b998b01716af3b43a535f7a6bea71270b34ec808ca00e9453ae660b732963ba634f14378b1691a90e3708125cde31bae3d10451a5643f526cb790a8d6e091a725681fb539e9b05bda7b04c48a31b39da6e39e6be624663b6284de9f958c50149ce4090e6a486b68511ae90a0f093297bf090db3c81d34400a40cbe11d74271e23bbb7a49ea875ea7f7cc25516a899198362acc52c8a8ca14bee12bbcea9a6e3509b6887a3d1d4c3b2b4314c4c44f44c96f48b29a8e7b85339037acf131f2692b7e7a49282237c8f37267c835c24883d1a189d4dccb7c6bb1fe622fc31301a6d3612a448084e0a210449b7e15a4fd84a9a538b2d5844dc170c911fc1282bc513e8c18c469a01a548d1ce4853128a03a8b1d369b353c3003b0a29d210ab6af23acd010ae3671493c774efad8b3746180746401d0e5862a3265e7969f247c954955b4afc13fc420143c10263eb1c6dabbbf5a8857a7f3bee7658c8399503c21a9a38ba554132344e214cd2036c2b30d0770cc5dd87ed9b246e7f955ea926965748cb9e58351a938f7e4ac249ca5c970cfde48c0ade051ba873d36a581e0fc50d9583109a79549fc5b32ba432444046ac0a66f3c64ae1498f43b1b36d8082442b5aaa7bbcff2c4cda8c0c4d2c62cf9135a75709ceb5b82ba4ef5716c4986a36bd7b4ad5c3a505869fd34aec2d7caba492f4bc30d232382b2651d5923242bb50df87092ace5566bc5a18fb2925cab467b641df7b5b91142318d120456245f2f0887ff13516d23216637393c469ce1f776cf2426c6577844cb3d4e0a92aba85ffb59979a7c33eaf51ea2bac9862160bf8a85553a3d4edc05da102106f632c91b8d1df2a9b2734185283941ebcdfd788107b307738786d6c0a0e7d4957dfb17488c5d6cc11b83e3504ef2923034a06270563e18a18bb29f48c36a64c132aa626dcfc5a615e4416df76746673e500186a117a27c5007a4b04867213c33739e27058adb23c0de35ce6158c99e59b88b147e2ac05f09f7c0a414c3240abaf65c24cfdb6857eca66bfc58e52472861bab1e03ce70d2115480b443a9bf799379af9ac978d0072f75bc7923816a189da5974ed948b8a709a8191cc9be60ac2a383a7e27cc62543a2a0ca9ea6897d284ae79b595d0893514f75db35c9254b7ac47260785c1b86a98a5dd733d3dc2b947d148f698c5a117821847604151068412268169c86d50be92d77683386025704575177aac0b9d3d3196a610985e860e2f799f480b1331ba346db0c379cb1833223836d88fd4e11dbf2985825c78330658b9a189233bc76b172127bc7a98e6c644d28da7b0857f67157ae2c27659297c32a7eb653697a295097a32ac235a11887388265ecb3b46a75c865c239395300d0f8152cbcba77b4d655c9f1ea4b448fbe32c4996fc298d26cae25d276bcf6e66ba65e3e97791 +expected_result = pass +expected_ciphertext = 175c3b39d3296365a6f8e1e6648985b0c1b353b852a83a7950bc3bcf8ccde62f52514f63823ea758d4e58bbda8b6e95a0483faf6e20612d042765dba9b60a3d370808c7554c79b1ef6454419e80924c202304ec41a6b4d1d12dbe20934727b94e3d60e0f76c37ea60f4c385c3158e882cec48b1433fc62135ea6f05594fd98f13fc6929be35492b354b58e26c8035fb07fe179929649c91a532831df262188aa0280e46f5ea5cccc7eed59586ce55d5aa088692b25cc3ab58c98ca228306b09c26fedd0a823b36d845d90f6e5496e3b6d70c07300df9fa5c90ac1798c4ca5ca25c16d8bc2738c475aa76b8e2dda6cd00279935ca1bc8868d6bacadc33c77656af0e53b10be68cc1679c54404c686837c4aa3f86c9b18c4d98e335f52a80ca28f61520929c8f6c044eda9b7802575051d89287d1af7b47519661d529065eec290dc145a7e496d6408a5a6f067a9e1db3f7d99fb0fc34ec167e747fccba45052586f12d7730a489da235d84d612777b0986c501c1e028232c9090fe6c8fc51a56088c1881c4e09ea9baffe50a6c2491f61c5dc0711d96c7396b8922551a70ade21f332f5236f13d9df8388cb6f0e461106d32ab61817305aa5bed1b9ebfb44f85413634bd424a95d913c9a2ca3b5c44ccb65e65be918dc2917cf9e5aedfae4d4b49dff4a613274f504b7f30b0e1f2c076d2ef31c8395219f9712ecab9df8c0d4b9b843a514d520166323dda4e9a35c212a8fbfe6d16e3b6892282bce66ff727a8472326705726e147761a2128752e2541c5f5331b8962265039b78bda79e326c3d7124294d29c2a60c9a01dd244d7edca5936560fd6323b9aaaec48fecb8e275930a882859a75cf7aa467bab38f54b34f3b35e8d29574dd2e301cb9b4ebe7043a350c14f46c308c5001bf680232def77f2b7c8f5fdcc8cc11d65b505ca393b97c0a6d2d2484401dabdded20fe2bcde15773a2b109952af594a4d943608b066cb78580d77403707d189c8a11c0ec5fccbf8a82967c151c955eed18b395350fc85506f42639a1f1e6382b269ff2611833286310ff91d97996e9c3896fb1c7994e877e98a89f9d0d1e69cc6ab6da66eef7b75cc147d1633450ac4d8baea19dc6bb88a4b93d2d7fe842a36d900d5b52e77165967a003ec5470282891e770369cf21d21d71a982aefd6e2d943c68b51ee312d537ba02a952baa7f6c0fbb6f93d554a4f13fbb8c48c04e2d9416cb9ebdae2ae2bad31d6ca5ed0f7cd01bd4db174bc79333c4d9292e07dbcd48e72cb7e63fb36dc54f0553ca0e43b48ef63ce225781f88a556c37cd2a1fd24130f41f1d778d8d9d0a0eed1a5cb75b924bff5dae57119cb38ceca4b9cbea6b6b7c5ac854a1f115945772b981634f402dd69e536d2bcf51466a20ae144fb853c475c04ae4c40c5828c230532982dc51e53810fc73809c1113ef54015290aeb9bcd736aa8ab1f747d5b90d188fdb45c8bbf14c06c41515f354746c7b08ccd2adfeec6bc02266a78380b972b7ff44e1d29cc4bb1933421cb5450 +expected_shared_secret = 2fda9fa72321be3a0946d6d914c7ae714b9cc175619ab8abfd1f1fd499e0dc27 + +comment = Official test vector 66, seed: "a3e2e511afa7bb560446bdadf67d2ee2e16ffc7baeae7efb8c5455068bbd4e91bf9be9d98b280072faba7712c75b26d4" +entropy = 210a423dadd899b810f011794b79aa7f860823ac1962370e791287d3a1afa384 +public_key = eb9b77f8c16dce72611902a8ccb81e8cd4c5a2fb1d8fc30ce226bb45779f41073ff3ec0362ba152102cf45d3a95874a551c14c8a621436e248ffbbc4ca3b4033d50efa392dbad9c339745803f845736c30bf309546229ef52788ab223758c03491f62913fb4ca4307dc6b4c7fd9503a701ad21671387cb2cbc728ecff4641e312779c7034ce720554a948a021751d4628890ca7367611d4b9f269c5ccb2381f1f6a01b0634d9c5c954fbb934e4144922ccfa2035892c4cc2a8457300946aba4ffe77868d34c7a90507be43748a366c49d0a927e66610a08cd0152a2c1bada92a05694b6e3d2610acd4579d5634fd2675f2101290e2ba1855252b57a438b50fcb854ea7b6a89b109ea9857c23aa38333428b94ca5a524977d72077b56978328c18980382ebc967dd37e6136360a958d5f00c3b9996de3b97b6468b9f98c3c50f37a9e73ac8e8364288347d9b018d437b3b065c120d26e9033078b5838dfc7ce68f244b32c5b4ac04def068f58fa733e99a418176575ec2ba0f78d4c402d67176db5717023b57f8d26c636a11f49b926d20b277d2613941c3e786b1a9a3c1135993bce22a1de16434a5902c0f101993b65777399828ba52330a2f356203521a3c59b6007c3aa41d198a8232d27c05f8e0280c9076d54d5aebdfbc95c7c06bce24507892641f90d2b774a2d98764c42bcf009799432b706da59bd84cde4892427c0586929c99850c7d769ad9a221c85a4062a62b2a1847454554224c4cc47898574fa66d147c4aedc59ff612f49285db54170508c89e6787a8ce6515cec673d4545970ca8ec486802933e319800fbe46d5cc14c8363656dac0600d895fe383fcbc3614fe334cac0a94c185b73db30cb5a56a8d04cb271b13859862f164f980625d78ac35ed120605cbd69e6410eb05168819440816eebf8cc9ad153cda5bc2efbb00a7563a55856711231cd12873a9a56996c174ae43b5c172a1445bb40cb3deef9051035b33214a61e26852ef3bcb3fb319e1b4d6bd832d6b9bb54b6021d180881d59d2458564acba148b0ac36cb501cc8242919064ee24343f26a87a0696000533a20943445c72b9260b4c8a46a1c921c582600d978c5370b400b2412f73541a13ba0349e66fa4025735cab6402aac51e08a019b48115c49c665f415244fa91c208c6b1f2bb02bc18c47a5aee366edbe3bae1e41a8b405ddeaa22a2fb254a6b70dc5a16c0217e4dfb933a127039b788e6c035df8993ff86923500ba466a81d34a0ada271da4262f33123a1b81a13621211845a167449d93370bd95a89725a56a8452b510a7fd2642af41a4a7856abd9688dd7c85433a868103679a8eb2bdfaa0cb52cc141267e91e2c1e57162c6b4897c9004a3d375c1c8bb87c5ae2cc80c2a107e0f904e5bf8065ac96c9152aeb07322fa181a83a9cba0224c9faa0f06cb67e2787eba832d3f53ac60b7b014d28945361759689c3ec65f8b885eda081443a2afd2a735b1c57c201aa4d273b1302267e5a63abefbcae8e1b2d3883439e2be2436382eb9bd62146de0e446b6e2baf8300575091db145a646c733bf352989938fdd8003218a607739c60da6758bf448bf18a22630b08ac40635382e3bf86d16625c45e12ebeef4308b229c948d425016d674119c0aadefeb21338ba6cedbf7df723 +expected_result = pass +expected_ciphertext = a79775edf0315a85e2a48145e0ce0e7b2bb5d25d995a78c8b4905aabe811328d595575e87409438b07a0b772e9544246a296961385f20a180addf607531c8aa982b4a5ca6bfae414956a40e52de3c1427a087c74017b0b711696459fc50369e06023bc915cc0f37ce9b1a250bc5e3ffc1404df54edfb9935b7ae1a5d73811515e0c1fa539eb9b11b08d0329c1310d3e49c816249d1142240f605e39abba101adb143a143d7e4ca7abce799e13135033c98555fbfc900a319824691886026b395841387bdfaf4f2cb712e455e48880edf86c40563bece6cda265ed7eed3ed91e649cc086bdc81ccc5d9563567cbd45f032bf78235c2576a12d7fff82170b4e0d0d6dee1cdd075e55fde2e1b00a03edb1615c8f225674525d7a1c8f17e8f8dd6863dd41e990826b482a307ddc522e29d271ab97fa57f2e2020f50701c7151f445fc3a8ef1afb9443aea1919edba5a68d745e3863accd6e3ba32f016d405018890969148785d00ac8830c17a7610376a0450f037ee4f0510096cada7cdb7a38d9a765da618e8b5ba2fb0083cb761e96a753fa119425bd50e4b996c5cd4f58377de02ec10ffd8751e6b513c3b33e7b6e45027d25a910a380cc16cd6e85f079cfe1f985ec15be162efd333d594c2fc333f3389f3c6cba92ea1285d68112fa07ab65d18878c423ae22898d0c63057da644004de424d312d099d1c47ba88fc9e35d6f51691a95e0689ab180955afb49caf3891a329858f625bbc4c54871aa82692bd0b32d0ffa87662bbaa75920f8bb546bd0fa4c67c63aa72501f7e213f72a9d2b767eb5fc2c7b5f83f492bb9eeab10bfa746248d1ce4ea4d497ea4de28878f764a349e2f6c268b7b61fec881f3bdb7910a7fa2dffcf4dce41fa8ca4e3cf4f720f72bb29799c93e7affaac971734837e9e4358508b5570c4946938245c30b566292e7fced74793a089046cf396aa77f277ee2292d1ac516e09213b1a334dae4e4ed4c6bbecb9e6f12840a3a7e111ac10714dc73f2c74a137a7b662b515175b9ee56e76eb21d26b75bd5b4dfc7cee9fb6ff276c27c6d531b06e5fc26b740090cd6830c126a1f32e7ae449507eaff06332b792d82e68a285f5b7af77f030dd4535b8eeb713948ade1ea09559555fefb1a332ee3548d4a29f2a4cba841c7194c7d309bc6aaa4d8d299d99965300347aa16b35c90871c4c7577bd419b2076628adea586d73988828327220dcdb509807b7dc921d5f7771bd8a0de19667c965e3ab22d3198880e837716e506068a70de4b4d300a1f1a386ce65d8127bdf38b2bdbfead80d6b7b89600b880833d84a38b9dd9cce2646a5cf6849595f0ac740b5e65e6d7e1fffdbfad7d36ced685b4fd17911ff697a8ef8bbb37272a95139920727deb0bc7d5feb6fabc89b4d342421b29d71d0796c5312484711af245a0c53629148ebe4c1a61bfdda623775b75e263cee799334be799dc8d26791a7b8ff002ca4f92ea37660ce55199ea6b25134eb9c692b255d3f59c96133c6857ff5aceea9c32a3d90c3e1 +expected_shared_secret = 23798e8b9eaa0b369842cad83a2bc32206f791229c830d7593b9150161168011 + +comment = Official test vector 67, seed: "074ab1a37ba5a0403d8f68d26fb787bc2c90f5ef88f2a6d286c3e6b168abd85d393d8225618608b8eeb301d26af53bc0" +entropy = bc856afe24213e3d14c3d6f9b89223bbcfb2c890722d770fa3492c1e46d1c302 +public_key = 9bd11c902a159f41cb5395be189b1b7e98cc23658dccc7bf9a843a77b2a6bfa27bc941b04f391950d998c607a59b49330811200b38b243060b55e381c078100da84975091f3a0acb06f22ae3fb1b7d756d36f54200a367c109b13cf40f3671231d5b0ce9e5908776768767209f4726c54277d0f8b0e05bb4cd50bb5547a01051c89abc4a352745316c8d85a3187d68382ef05dc96294446972f4c76c7b9b91a4babe06fc634e76ae4b778f939c308f22b8c816bc3fd6b48e168f5dfbc19fd8cb7e4686bf2325cb060638c723364b27c8e3123fe26cf9862f247cc31c844ae77754206b03b497bb3283cc7e38664b23771f709e1d308cfaf5086f25acbd04cbd9f1612acc2712d129c9c195bc024cb057b0766aae7b533e60f04d947947f920470bc37e5eb4ac4fa1c48066877b4456d4ea2a5ee089de38a7fc7573fae5480bea823727132651a85d873378cb97d6f7be1250a94621abf5eabf0114952665cd2a5005af338b36d19f6e4c8f77e2cfb6f24d3cb7a909315a026b5aad50a9cd4baf3308059a91323b1c226ffc76b3565cd9386592476b76057e3477c8b7cbb201ca91546a2354b59328d411a724cbd8b3689efa335d879996fb0d1d2244edb361be4b2489e84086f4a995f20ffa9404082c4e66061d3ef668fc155bce04916c92b8fa46b77a4a9fa82c8c0ca5a5a5245883d25fded230e74b22394169464bc33fd51fb7f2aa9214b1ed546dcfd00ad554aec80882ec170c6ec44794204170d738ef9341d6034920a7aec3b68fac00527b2812d88969c6207f9aa122464a4d76320ead6271d2836e574155310a756cd4249fa7474b301ca978a0653935b7740a16c50df1eb678c1bc3eb451cf6fa35beb903cd89cde0aa58a43bce9cf591286792fb3b5e658b5a32196ea24a4252b093d2ab40884c39a4abcbd19b108b81172e18a84a288aac2982d113454335423148168bb6b9d97494179bba1ec8760be59d06251b94b4baaf82a6481c4a8f33b0fc3164635452e6497f992308688352cbf44537c618000536f9c41a64361ee162236f9227219b8b84a3984c649ea82211207c974f6c7575027aeef57e496a58ce2719096a58e2e31e82844f4d674a4cd9cfcada79afb0c63e634d2514ba4d8604ccc42b2eeb64691aaf23727c93c4abe1423c27b3b7abf0b649334760056e591c32fe812a753723f7c93ef5524c8e0267db177e6e55620715688cd0ac70b2a90e133caec86945bc74d7ea1cb88479a37b45eae4993bb7048e5316bf66b9715591148c9a20a35412c2404bb62c512b3800b9ae104453d95acffe000d3ae85b96d8092532796a03039ba2154f84afa4a402acb673b8799441bc505e836c3b558e1fe2057fa79153e1630d72afd96aa4fe9c0ed4822ab33a559719b81d274ef0a2773e405761a036521278df5ab3617cbd89d7543cfc7c6ad373b2d0b781dc78dd3b2afa34b6565979231681fffb8c62843dcd11686ea59406e23cdf96aed95554e47027c5b6976f5515bc40b0e3a31c556219f89b73c0871e1ff552ca04c33daa4a363794cc7c0e05249b53d20460eaa8ad217787c8c9423a7eb71058b5a8081b82454dc91f77f8608d60caff30a7c42424542a1746f0f10feb3f0fa52eaad4f2d4c36e59ca0a5389566fad53898992a17bbe0a0f +expected_result = pass +expected_ciphertext = eb2ebc83c36b4b470e983a8f9befb67443567e2c532348990f62418cf62208d84c1e97c114fb76ac3d30491056f2f820178164276804a16267eab23b270f990de9307b5947680ac4d4c070a2c764ad520cdf3f4f0bedee9c2eece09f07df98209e214abf99c07e7f50e78e38cecc268f84ceabfdaa8010b1c8b0450f440923f23b22465770d19fec10e0917874dc78243c3483a38d49fe28526554b217b2a0eec4bb4b45fa8f92954dedca998ff1cb649237e0e056e72216660a10253ac5064dd0faf13d0675ddaa9a3142c399bfcd2efcc353c316e4e8d3bc9b6d27b9ff8bc7cc4f87dc4d4ef9f156b0e80ff45192dee9413e74b83dd98a6b5d3a0348202bf041efe408dceda6e1323c887e414f126ba35cf6d78da697a47ed66f8053d9cd0a096ddd6649e74138d69caad22d856297f4bcb2e4f7fd6930210e63325693adcf4c60a346b34b17fd2193cc3e6d484949106820fe308c874f93f9538365b9cadbe25230dd5b3d7f153bf54fcdfb1f2f668e039f3186d9e4f9f336614e88954ceccc791d584ca318d942917678f511ff1dec3f1534569bf0168dcdd1505fa98dcff66951fc28dda492f0afde670bc4fd0adf3b5303f3ded36d323a89d58c5b37b9df02a21174abc8f2d517bc15f2afadc22aad49a678392d3dc5c96c3969e4b55ffa30daef78b07a01563ed24b214d662648afcaec2ec91b5698b638889b701ae84fe06daf92974b545a007b73ed5a12602bd0fd6cbc5c62949ffbedc1337bd4d1c10ef41040e31168135c45c765245c00386ffb54a6d62eec1266a18daee9d4519214663d307d43e729954807c859c4a6834b1c9b7a47966c6bff8e8b4e062d1f9be53329e0961abf7872e42fa510cfe350c15030a0e12c66e8de05af485b9688112b5c4612973b81f50cee871d816839a2beeba30bba36981e483fe600e2993a60b3493e016596545243c7887f9ee9dc1ab6c875621c1d4b8c600e062d5d37a30421bfdb811b62fbc73c0910d305b71919d1c80169ad86c0205cbeb4bb0df6bf7bedf96c741870d66a78a62d8ee9cd7f7e7fa8ebe0adaa1389a4932245ba6f85b908366d1589db6c2715265e98d0f5e89ec8a0e35eaea4c9f50aaf213158e729e3766c50497e6c2b9f44668b4760e593fb509789ade992d9e7d047a50045093f2d935452648c7afaa320b52465d48b9e15acc640b9e89a2b0b893a6fbc8c257f386e4cc9a52bc5d2ae7590cc2161bcfddecd17e8daef627fa9dbfa92b76942e6fdc0a2f09692fd82391d69546986b364c5a22b2e91819d957e1ca654faa71b11a16b79c37130610c01f4f9c2da974da0940ab94febbd955578b28ce30ecd668c8ea876ec9b313ad41e5a29a04039e50fb24233716a726bb202e7662c37b90adbb942a6cf708eb77abafc6850af6d037024e6c781994c421b3fa916ae07cabe60dbd701f9dc7c29ca13dc810c89970559853066e00152d171823b237a0e189c1fe72d14186f420c1bdf6055270b3782d78a2d924be110794fd3eff58d8493bfd6 +expected_shared_secret = d5c63d2bd297e2d8beb6755d6aefe7234dea8ecfba9acda48e643d89a4b95869 + +comment = Official test vector 68, seed: "cc0c86cc0abf86fa21899be1953913c00e7c46e6b5f730c4e88b3c034012763981d7f14459d3081638080378348856ea" +entropy = 5fc00f89563e44b24cd67d0ce684effe5731619fd08e7d72e2406eb016afb66b +public_key = 8683354b3c3f035586b50b88c4140f346a05ada7ce4beaaa5f096614cc767af89ffccb95124b00e8379efaf76ca381ae4886abed9240bda4710dac62a71017059b07921c770da1ca2d209338536c3a9b5238313bce565fb861bf8ad3a78f030b3f646b34347f1d215e8ec1789d602d92a971fa3c2e892a09cfa68968f96f206a7535766ed7533497fb051c8036b0aa81c2c802fb7333cc6744ec830e4be56ef1e4874371409486c477cc4ee90092d2919f585ba21f32bc973acaef42b4969746ab2618631b6536ec298b2828abf41e24776bf288ca6a4a8094d63c7ceac44854ba9e4837e44b3a7b269d6ccbb6d1712e9ffa937ec5194a3541e3fc9c685102f9a47faa077fecd688d607996e5b60c1715e617994b842b46574b87086a061488bb2445b357a38934b612c16168e662112756bfd764a4fcc5f7b1634f6f28094464d600046ee03b4540c1049bb3d18f783fba2ac5bd36ecde662d9e08e2a89cb754b090db7175277941e5973d010ae08a4b4c922aa99f47f657a49c3b81fcdb54c905a3010405ed544bdda9942bc857b6d979f796c859e0627a5212543477ed791c2adc95fdfac9d21d19750b8b5ddb95f02d721a9304099ba6b2cd0a40c1a2f9dc1649b2318acc93a5fbc52e3f4900bb44d20a7250142ae5f3b77c0720c77104b74c78eb821bd32e260051c499b5ccdd9d716521163557b5e4526acaf09a2beda04994188a5065b4a975b215171eb288024581cffa37d6289813773b29f1c0ef5587f9c98049f548d2a0c3a5c71c1693b5ec8c64ce0267fdf625485dcc4b5553c5736a0d0623cfe20596f984c014aac0380ba9b58257a993b1be3bd2cb9ac25912b36b2c085443074f093510a46cde5441ee3cc88dc2cd636a5ef77310f91cb21abb149db2541407726582b54b50306cab4b5356492c220c138c64b4ab293680e01c2aeb369bd611064fd8955b790222bd5997dd76bfbe50a2bd039c1f14f0469b623c53195a3b2ff068182d951dab05ffce9a6c8fab42886987b7999043c12870965bd463980aa6b35e13b5bf9c25b64920d7788a291a98ebc30d3785783c27e53ca9ae809004f23706e3cc0b9ac0bd571084100299c932db2933cd91566aaa367371b16069a706be664e86107b33b1cf05360248c808ea250fcacaf9096715478463932a1c632cc9a185eeb08583a9309259c567743995af013216b1086815b851655d0f14fcc43682720acdfc36f35806894177ea2144f6e28837cc887e560874ddcaaf60a3580fcc7a5f1733180b1f1202a08182345370cc5c46cd28a507ad846d1d9415af679d4b22ee560c6c1b2499d5b74aa2758da090e62713343b3a8b14c68e415a3f196c2573c5e828a16cea51443104f9cd899ad03c3b727774b48ae61db98feda4c1e029b57f89d1735381166b70450215af92120ca61a8a38e575abf2cfaa54c613031a9ba60275d23178ba553a3ed7179aac44fb3607e93c1c57c7bad6854533844bf3d6a9b95a966f891612239cf6cc41df1a859afea9c0cec6d2679cd7c71c2cf251dc9759666c871853a1012294022fabdeb2269b430397f337b3f416e528748903ccb8b24c8fa28197244c0ac3a0345e699b247c863e9a58d8caee564224faa36c70ecd281b67eb98908468420b38f3c24da9290ea98b24 +expected_result = pass +expected_ciphertext = 333ce97c3ce5fa6677ecc0eb829056e8732a4bffb16f97895f2893ef0f27f669208abef07f251184b011f5485050e7dc471ae61c651499318a2634feb720f81edee3a9153a82d840069601e13e8a05e35fa2c18b0fa66745e104319b785c36adcdc4a2dcf03b152bf488fbba844eda7eeb4d289dcc7e926dc0ecd84f651a3f6406929b26223509789a1465817de510542cfd42424b594587c1cea93790e88688a9492146076b87cd9b3d52e772a072657148cd22c6e3f1cb724795d4811330a0469f91b3df0cc389e3e7c6280a20f4a8086f66f1d8f37446060ce019d1781b7900251049389911c0ca210cc2c6741ae7b2ae5ac5bc5905434645116cedd2ec8147ce6021bb953b98d7e7576edb3c9ce8ffd31dfe2aa2bce390e82862def5de968971fc0463666f754317e0e5670d4a573fee33ace8196dc5767be6adc9976ccc07e9a11fb7fe8627cf6b09e07c22da8c829785a3cbe044f8622dd130498ca4aaf6a66e5980c7e4055b6e66666893309345f7e506426152a6ebe811f80e000634c09c356306bc9c4d6d535edf4f72b860d0f52f24acf910ec731743d0856075fe2e0f9432db321d509c122b2bd69b18b62f2d8925cfd35c273c2ff4c0fc184e6c060707d30de3014d8cfb9d291f2d6d31700805da5d41c1c6c3681fb7603ff518b3132fb42f95c23685b6b72652404b1e6dd61ec31d27ade50384541336230c6b2e435ec32fc783972bf5f48666690687642732dc5f7090d81460924e2a7e64c05d189b88d4276bf9c6b51632f197f3f76e5a97571467b83a2d8754ba7fa8e827bb2e7517c30e5ae5c0fe9735897a86ff3359634adf981201f6ea59adc80a63264c776a08b939cc9c5565281adea113cdf3bbb201f5c6754dc2874b9a67e4a68cd2853f2ff5becc9d3a7c43c8d3a917d7829078a76d097f7117f87b7d4054a439c22dd41183d0e74d5e496ec19d66d555b45348ada3ed9d3ae1b3d351921f68bbd1d9fb4c87185614bc7b0bd3a53dc81b9fab161794a9217ca0c5e716214621c2fdfe6ccf9682135a14d52800f7844096dab5c59b0a07623657d505701733e409c8c0ad70a143cbffdfcaab8e8f122942a8197fa3cb2b9e0d4b80d30fbe7a8fff8d49df0f59725db077839398f75961bc5b9ae4f1d03f6aaa4a42b3960b7212b535bfe34360d1809317b3cf268905e41c923752301b0a9660da97cfb14726245e55721637ea2a075c202753e33c97ae9f20aa5ec6ac03202af9bd5700e93b5f94d63a683cbbb8242052549c21b4380f13be398b8d2db55dfd9fb04c21387393183a7f5547dc7af9fdb6cf7fc8b0f1665e57f67d7bb59a06933a15fd7313c38823af5fde333572b15a5f13b2740886a6bce0e942f6dd5b82f4007c224c500b1675a25a5c0732b72391087f2bd04d8c9af2ff040ba18aef056fa13f088b3b564abe07536195fcb800800fe2ff41c79aa0cab8c561cddaf1bad9bb35792f0e61bcb242a3f2e3443f89391fdd0f1951c8b2b615b684abea2be35b1af327620e00a83c +expected_shared_secret = 29d6a229adf49a1139794209307b0ca24be5825b2771809232fb718660162475 + +comment = Official test vector 69, seed: "6d5a7cc326ecf3983c4e7683f45263a37f692f3bcd2d920e1fd9584350119e74f9a3f905f70d3e20318c1413de2a0dea" +entropy = ea22a76065db4b565ee1807fbd813b43bde72b0e08407fb867c6a18995025e50 +public_key = b147b4694b12c461130f3126f8f71673e4643b2147ded2a7270ab360f6303dc05b03a314bb776c488318686069c3a4c91cc62435e829a6a8621ef5cf838311a4278d7f453ea5484d32f94c2e9628f5532ff93771dae106c8ac9cc80ad07d306b1da78463a08226657680e5acaba6819543cd96194aa5973d4f7b8682b13a07e7a5194c91ec95a2d671a2627710a4c78aa107b3707942d0c78f3eb2b3a58b7833fcb0fd7785e349a2f0027aff079b62a68e3f425122f7bc0a0b4c053a6696f90a67088f139b2a39f542d6439091e4c1a0824734d8b6e5e6483f48ca738c39a5bc2016c0746cfa9c1889297f5377d614acff2833ced20abed0aa6c7024221b73d53610575c6d91a262a5e834abb63cf74207437b31b1e989ecd7416b2c4e7bf807b5f8973006877e204a42774c93a1b394e885cf727b7fd286def2b4c8d5684460219c31b1b225aa08ac2ee1da3922e935e981b3b5e2c3d044a784bc965a580d3052ac48000ef6183b94b0a870e65207ba8029c0bd34a10443e5706792207fe2224da533d307c3e3077e6e1cbad064b0399abc6f445b651864f18b42e1a518fea187bdd08072e47588527c3b9a5eb244ae9e910f93c92b69faa7250bcf38e68e9c3a2b2b733b18032f37673907097a4cd65a9b396db4859312d59113e07b39746c52126ea697a69929b1b625b5ae1b809ce9a811d13cca70971ae8bd6ad223206691af6897f136cb451699e0a19739d52d60cc89dfd654a320a79b2c7cd55116843239d6847b8bdc1efa29cdc0a979f0e3a8f225a16fcb7996fc8ca3e79fab55b93dc2a395117426a17af4d404151814cec80e856b777eb35085f1ad14285078803c2d76ac1d25c3f8609aeeec4adbcb64136516a2077cff4c13748c5d1fe6386782688d944e0027a2f8c9af77b79352ea5523767cbde4577877af1f8017e4db244e833e99dabd0fc70824bc3c50a38275040446a5c74406873ba0b5bfc2570a406570b424727379e5c1c39ec194a29a8aa249844bea2a078c1c0f25a400d6bada80731a00b87bb5a19325b4e79b78af0bbb2c52c3db38ae552ca972c3927291145438115a952bf2a85e78f6141e1cae8516b056e614b7015017e71d54268ab9919b7eba09d196768d99651d60a334fc443c8ccd9064a420263a68531f0e86cdc48776a3d44b4726916273a0d3002de095526257bc5e6246dcc10814d1907885207a53241a184ab7e40d87148a336a33262a4bb0826b417abcdf957f68737adee682194115348ac58814661765bb321254a874c4a3c6745cf984528c2b9726ac35441015233219e169d0ea761425c06513720881b330185b48bc271b275dc024419d8761eb23801eb704f6326f162656713acc2915a1a6f877a583c8372cc391ebcf2cb22873c5bd22c58c80640cce759b2c09b368ab4ab504c613493479b7725a18811837213f9237734577af09c4be0b3fe07ab78b712b0683060be76920cc5fc56993e56c7b46a543ad675b2d13357c008911320e0d292268768b8370c66ce757af191bb703cb5732113acb8f02618eac98693224abccea04e7b3157c03b27a3cc4f0b880dc4877ac35077c1c2d5584b971261d2c4bb767c75907827ad7370f4074721445e155a3a1624cb4aca373de6947f148ca7e2b3c93605e706eddd992 +expected_result = pass +expected_ciphertext = cd3583987c6395ecdc3ef180fcfb4262be1bf772a99b337df5eb36eff544d69276d7b4608b69022bd044fce397bea7d55a0a37807b53455ac6fdea5f0435dc71e096568cb19afa1992770c96f34f9f2eb0ce27e5e3200a47bf36336a1104f9de0d11706098fd63bb97123e29bbc4661a4f6237378e23272315a95b587ca6c289dfe0391fe12a18a257e3aea5a362dc0e60875d65ba9524999a010c23d2cd094744cf538e461cf77ee3ad166e54c8f7d2a746998d08d25ee34d5c8127c1f2f13aedc7e1cf874c087e123d9595a4ca40a482fb0696871438f0d3b07058131e532aab8041e95a42cc35b3a5937c59bec36be6b7b7773f60af694ebab7104434c23cc78e122724a912d9921b4aa0b1a44755161264b6f9cec639d4a7059d0d08ad9d1e2c1cfa9f0689dce97c04f070712bc54e19e9c053710f9ab5777fbefca8dd81761f93883f861cf5ab169fd701a39b9ee3d3ae5d1f961ff5b07ba15022f51deb1897983f2bb94050e099b573c2268e788e406dcc1e666734e1c74305bffc3c9a6f6b4ee4726694d5ecf499dc6059a17482b672df791ab1495e3be6a1cf0d7cb6a0c88250c19937f5233cbe4c2680f31c6b440c253fcbaf8de742c2d8af3f3734b0e8c433a7db21b105bdcf8c5717c2dfc8db54512492b0eaf284b1a6b33726d055d5e222ded00da6f81bdc30b728226d0aa46b64da409e2f884c1972fd4d123ee016b9fcbd7abbe92fe028d8b36ed4e9321c8baf833c0dca79d4ba16172adb1225d3db8f597bfa40bf58854641743b40dc28e8de9676f815eb5244499cf8b4a15d83b9f864ac4e8b1c0fbb684c3c2056abad006ec44b0c18ab5366cccc3f4871ebc15cb94d61ab91751d8a559b8dacea2b66409095460b7b352625782ac17c976936d75995d74c6f89318176951474c07b19d31b9bcf63ca772af3f923528839abd1929ca63fc6cf5d67435c34675d4ee6caf474585c65654c3d79c4e6ea59a42e2825c229a364a29ee84eb78f63846a7ff08b21fe077eac0559b91c91452e15147ed5f7109c59b510856f11a63f355923562aa0434b2e16d6067dfcdd619dbb80a68be5790c195e0b9d3b9e9ee13273290fab34969bce02c5eef6867b0fee382a7159b4c927bf56d29fd0d849831212386a786c2a9bc086895db111c7a3797a40c9236f425454380fc5a1f96e2df779f05446d123cdffe072aeb9e64f87f3f7111470061d87ddd0b8e4dfbf1aab0604e90da29ea0659fefdf17748425b2730b8046af71f948af2ca5363eb63d2f0399a22f8d3c01414c1291a5dce3cd654206ade8758077275458c95003452c1078cc787c6a4eeef475b78bccb0419c0716938a1ba1545cc87dfab4b18c253d8b7408093e2305359359f80bea22a69709a89f4b1a70d62b529d14ebe929a64132a1b53c7b6cffe3214eadfd77d385113fe3ca4a743cda6af120b25009b5bdecde4d956beb970b8ec1e2c5b7647dd5bd099f3f843c0aafb2d00e26b1bb368a82afbad3819bb34ab810ab55222ede8f28486a7d +expected_shared_secret = 2a56a7a6d5b4c0500ec00a92e322e69be9e93006240889552072482966c54f56 + +comment = Official test vector 70, seed: "f68fc0314dea88f66afaa76e6c9b6804b13d4876924410d1f526fac59a62e26c560b125b1d0f8b461f1fc2e351effb4f" +entropy = e9602b34fe73ad57f4bf6ead99743d645641553a5b9b9bf2e7016629e3e9bd76 +public_key = c0c8122855031d7bb0ca735042bb43b8ec6ee13061046acab9b873b13519c22678ace2b59f92aa4e8269844b1de5e3426d66c0451a8d78cc07e719033a536c2bf4c7397c64c6478be5f42a06413b8b44111ad9742b8b020711446d63cdd64490c0917557b884eb429b05dbc0df7acec032adbba55d3e104f7bf391cba28b903a07712a8da3a1a92f5682cd650a628573844032a307704fe77af738696e974181a85c5ca1c14f7546f8713701115883480be2cc686625a37b62292367b5e1546f4189592639cda4cc20974c6a87c0377d15b8ec5c84b70233b64800b79c62e536553b43263532c6bc2b726970cc58bb20f0c0bd35b317d9b66b327bbeb5175d9611985ad799ebb19ad0587aeb856c288464d983256649827de9af0fc79afa1aa5817c06d3447a25ab3eb8248167ba60a4462ed47c007107b1eecb630ac4707b837f24d26da46bcda77c4b6ed5b4118b79294744788b9a9c21b168565d9398b41edb91517493f5fb48ae5cc04fb95bb13a8fcdb8615262408ae25c2985189ba8ab99643624b70557a984011474586c357f1c7551f0bb069336fe85bb903040f48c4a111113507055f2716d37ea6a6ffa48f40584914c4738397430d65756f298aad345671077da8a4173728364a493bdca944b1879b114166cc3b8293937221257c2e78f8f1c7794eccbf0368ce34921a2ebb01e32a92255a676e77c39564b575aa5d1f9c7d1388226d636f4f12c5636b2e2f712c59ca583a811bdfa56448c013cc820f21a36c3351aec3c2c6f01243ff47bf17181ecac752108c43a97729c6b9472270fcef5a7c08665f7aa9faa55b152163e8446c1bee5082192b5eceab269ec13e7879da3768bbedc0a104c5e9496c63e9507881a4c8e758211076653f369e58b59bd7cae5b9a64772c2a84329e43f492fecabbb56514cbe70970f361e6d3c6595065f6cc668c64bae7d587fa8bbad129136d5c9b6f757a51e653d2754aa0e35307845a55b80086d5a0e86302d306b9ee1550419b495d424f701a098220897fc47333d5a1e994c8584a00d79804e4989a1cf02dcf9a0ac2ac52be1090bb149778235ff6091075a5360ce095cb705c81e3be126984f51aa471f90ff98c21d3989fd936502a8a2b38c4a2320a618df751c7099d1063495a6a5936c744a094cc1ff1b04ba8b56b0464e852bbe06176034cbf5239cd2c687facc2cd37329adbec3a77b4842aec40be902e8af72fa5805345668408cc7b6073097391921e765e4d76025fd5c78e246da268a4db21446f2cc3273861d2081daacc2cc775631927b709dc1fa8993b1e92619590c08940342219682af351495b2e0aac74786c897fab196abb609e216997c2c7b283bfefca4b1f2b1b6e98991bb32424321ab7d61e4d13c44dc93295a75f6145bf2d4b8f1a03109bd7038ef4b16fc15f44ca6ea3411b68400eb20c46c11cbb98201d705a6cf4f4b792aaae80d97a6ab830576aa651142793fa7da0b8bedd877217d54897375ec285849a79268babace85176842c601ef8c740a21c2c5321436a21cb968ecb5410e811912cb0962f713322021516535907914b86e9411d27cf164b580528768ad37b57300dc201557bb0a142d9416ed7afef52d284175dec18f24979ef5ba8eddf7caa3880aec7b42a147e75f0dd62b3d0 +expected_result = pass +expected_ciphertext = a611a3c02dd6d3201596fc2e819f631c7c468d7437c5cb5e1dd20d69079b6397e4735b54ad9f14ce7764e1f7665ee1027423f129ce329d4f89d967b7e9a1f1851a86b9241695db93f77276c8c13e115603394fdce1e29768218f10b051481ba1477b0f50424462f08232899c6d0da4d1760e9baa2523a59ed4bbaa1d56ba1610174e99c81d56aeb8f9811a88cbca115e98b4f16fb0593ab5ac3b86f2c0c1b66d8be9d2774b66c0c2f0f9cc2df6ee453d97f0256ca73338643438b03e3c59ed591646afad1424bee637a50eca224adc62d447c64c3b18a55aa01b938d66ab90099a76a48f201cc66e067d4db6f5b4f58568eefbaa68fea67ad5eb8c253bf4a1c30ce0c1993bf097f9a9b5d04a92fbfe666e326b92ce22de4f11d3a87024c315e94e4c9aa404cd5e4d2ec1d2c7d95657ec50e15ecf10801329ab243f1dc95af92518fb4162656f1aaac8bc8bb8832a6755e29d7ff78fe1e4b93578fae62c4e6b2d896200f7523427f55d6305b3eeb5285a47db7c5e4f628d29d2ad39af473167625cd848efe6dc72e45d4b531b4a0af4dea4206a6087d7a494f7e7e27ea24b5650fe06aefd954da1cfb8691c10957ebfcff92a7683ea584b112bec9e0a67f831b305e72b7f3e58f790988e96ff9fdad1c6b2b5f5f03084fd7a7d6895f8e7bea32a344117dc9be191e89abcc8888b72f091c0a742af35be4af72a657e93df0b48bcd602e3a7141d962d692a3ee90b33a625b83945356b13ae531a5d43f30afa5901bf791f22650f3f2faba02817dbded8b9712b7641372d4af4ef2916b8cdc05bb5800c3289388e2fdbf07f2fdb95b154a2e1cc6998ece7a514bedbd489ee21cc1df314b4fbc452c1378bafafa083ef00842e2dd585668eef7b00e895f013edc2611ad882e76f9b85074be087bb9f8b45990d1a65053eb561a34c8cef2b61d017d50055ac478e82c6fc881e64cef53b0598b0e354c2042325d5a55fa7d592bf8bd8f01fdb18b391a069d3eacc373765859468700234138d0cbaa4cf64862ea30b66afc2ca9effebb733e007fdd6fdeb483d5d6e3523d32092fc0fbf94ffd7918529e192603a609ef632202c37f49e34ccacef9c1be4781dca2208097cdef7365025141ef427b789fa4da96a07d58c2a22e158de7b4394c38e17d98b1e363579560199088bf6bda0e799132ca391849ce59c0742282d20e2ad70df32d8484dccb5247322514f6ab1588723450f4245920c6551088f0a2d204b6806f054c185501b031b0d1885c33ca17ce9124edaca319c16aeb066295b66b86b70ea7762cf502a0b6d785f645a3283e2f9c97fcd54ec07ace7ca8ba0fefc013c201aa18a3c36ea8592984783e128b076d5b99a237cf99bd449d2b92eb66c1c2503ff190ec0eb172f6d6274008c5cef30b5b08a1b295d437b357fb2febc2bc7a480ce7b22fd7af4d2805d786f3502d743fec304d7ccd0c42d25a7062049cb778f4492ef4ad90a97ec1c2e14ad79248c325e297101e73d65960aa0085f688d41cfa95e31744e5e6483 +expected_shared_secret = ecb62b03f640ae4a9d89685fa0070efa93c24dfcff0d555142f9de25b62f861c + +comment = Official test vector 71, seed: "a229218b0d51f58d915df549901548fb0722f352c7470900e7e4d8399205764a319bbddbd06c00e8c5932722ee5a404d" +entropy = f72b9080a6c051bbdb9b0abc1949034be0f89a9f73fe277ec4d4740c78d04a83 +public_key = 80b3b92647a1dbec6bb883a4b2160e4dcc84c89c6adbd955cc055933d3238e325fa826acef899a555873a5b9c189117844202c65e40eaba07d9fa94d421bafe8f3a5e3346b6b93cef8b75628e4418e2885660b1d3df32d1bd50cc50757c5227928b32e0c567872e66bcb58128b15c8696710a7b33bfda469128996f6979f896b93d22910383c90d0d877a56b4b7c77c53c99128719c2995497dd36877276a25fa8b74a4947e223215a314a075585da457daaf17c41711363950ef9013a8ad95f9e07635546485a3568aa502d608321061a6999057e705c46b6691183874fa9ea38bc392f718c99ddbba59a1865a135207a00058a408b6c61772ce777456c92b28a51ce823f7524a26639ac64aa49d6903cc2b2b5b60b59643bc950230362caba6abb5ba4f6964331b1f62099cf385be3f5b43c2b8402006bb3386f5a16354e45118f0b759c3363ab4069ec2c4c15cac4e07a24fab0c682548337d157e6ba213c7801dc5a0a7045a442b4939d611469746e9da665e2e910b51c56b77a035900b25490216c0bb53e04173b3bc454a7a17d77283ee278e7d30496301480c8c1af6b3e1dca213b174f968c8a45a3ba2044bddb1492bef2af610b4ed2481ae0823df53282ba7750fbc7a764db58e3789ccaea778083c27ed101e3c75be5486249f9818a08047f97447773c7dec3ba7c59aecb5778a09cb7f1182b2e0a01c182a1bd13ab7d72af97f96f564607a9a970b35a6adff275c35c22c2444ad6e997d821c065ea49080900e766c0079b7acae7bc7cb3b31301656fd39591e0bfec2c33f05a0dd633bba463781f1c519d902342bc12bd16c1ac8305ea9769e489073297784ee45f99b248670749c728385f601fc84c1ffb298bcc447537785226bb5de712b7bdd04a0ce39226919105f06ecf6bcddb0cb5ec3b5505b5a169b05480b2587ce4934d2b232a44a6683920a81a6038c59497c9b47faa62f4f2120b15c360616e6573bcc5a23a88887b50d1a7dbaa429bb00a9f87b63829b1b641922425016c979db571ba0f1a139267bb362c68f47689715cad6636402049c2b5c616c321cba6e43c1c1a48a0e141cf3a71c0099bd183a5c0e59bca9a2fb637c1b534cb6687493eac495acc7c5fcc4898a52e44094fb1b7014a15c88e11a9e7244ee53c2d5b16708c233ed37859268501630a296d63c094f563f0e559c59453abf05a93722aed5ac0c3cc6a0be7890f8c3191677c21f70c8153ced3e2bd96a4bfdce27f86b809d8ab04dfaa837fe030f420b845d23c78cc82a2d7c440897c91c3b726b4622445899de72bfa263b93c3cceaa8500b4b0c240046387b25bd98b5901aa670180a2a8b27de424f4d804a68dca2e044430d701b67e9b4af33c60fc54bb3a94a8b8604fa5882a401a5647b8dfbb20878e4b4094136bd4b5bc14288463c2e87f0cdf6d9497fdb5f42f26d2f9ca2e048a757a59b440c2c5642232e714d11fba959ab9ac52126bf689864ac98cbd1a633baa3ecf75c09c4c6878994cdcb3e882798ea02aeaf39915dcbcebfe2ba14e620f53b3d83ab58bbf99509033db99b0acbac29fb4674c95cb94982ac398c2771a8ab6da1ce9b0771e3d5c2e7655b4bb99ebbb57adbc7a540f228114639b811c5c1d3b614daf84266bc4c312fa43c4109dafde79000ab39 +expected_result = pass +expected_ciphertext = 06cbb7fcb9fd91bf6cbf7f1c8a47511fbe998d1e0c6c20ec92ba6c6d86e71a22e7233c44494ffaf7c9f1075222019d9a57dfd3f9754905a5ebdaae12d2e2b16b537eb00ab967016539ef46700d15ea21fccb92b17b7edc5c87e58ec518f167acb81ad4b96e4e4d51e605b3ae45fa0d6816c9c6f103bee9687ff098f1543fef241b80d1f6ba194fcb9f21ab1f5a90bf7053bafd8fef1104ec367de4525c6f60b01180b9166dfb66f192ded9707cf59c16761ec1970eac7b031821bab340f23758daeb9e36ee899ceed7cf2c42017f0f808743a6f7b97fa7bcdd5a35a72402da6eeb5d10e4a1ebc6eb5489c0bad8d529fcb47f4c6b4254ee64d31ebb149c975d5e14b7ef9ee3fc64bde6dc0019585e66f19a99ffd1db55bc58a3aa88ef7a575f2383f7e781f8b41d36bcea14d03fa9bb65a243dec37efb3fc19622340ab99a1183fd55eedd7c4d12762b7d5de711dc182b9281a5bb75cca2a5d179b2213fd7c940991a30b88297f0a9d307ad443363bf776599ea76bd25ffe9929cdf7a9e148f23e51ee1597e63493d54c4d9487cdb8f524b5004711af2276cfb8377cff0787c615d38536167b8431837492069b2667cc311d3c1be3381931e702822c04ae2041cd3a9e3a96527efc1f427d60aba9b4d0327537346bd853bc6e9486013ba744e922931490b841aa8bb1396f05a11bc1346c86164486add3be92c27b76f1e9edd2ca9150b1ebf682097341fdc85095dbaa32b7201af8b2672d7ac76c5d2eceb2b14eb911c48571a7fbdb6246300701122374e761a0ef1d6392498ff8bc3f82f77a555820e79d4d99e9954770f0259b54f01757bf9f19ea655b2baf3f4edde69613cfcc1cdc3c5997ffe893cb2c65fc70319579495c071ee08b18bffb1066b3202bf75313e45894f328a56a33299f3b9bdd413cf5d8e7c299ee920ea2b26d5e0d44f994f76ed0554ac767427d73ad1604236634a1d294b1f246c544a2aca45b0c35a7cf2f8b66390f1ceef3209f0562c39a5f340c85eb267ca91f2a8786d0bdad4968faf8165c10e2cd52f8455fb7d118dc1f75517a7ee655ef7069840b8ae9a03b788bee0ea758cbad93806896028dd050e6f1a7e62871e7f4b69e5beea271682dd667f01106dfe97a423a4ddbe0efa184985c25a20fafaa0cdecf4c940c43d4b53a10508e13cd703258ae06072a88a4ec02913b6f3bf7a66fd7f207dcb8ba2d988a547fc3d1d267746d0ff35c4975c3814e53041d2937a2a19ca7a639792c132a64b035bc6273223bbffa5cc5b65878f47ab6b56943a2a2ef39918b2874594f803dd5f4cb5228b41ac59ff34dd50890d0e99f24891d4fc04a6f30a4311f958fa8740010f74258e87727f855a4cc466f5d12aeae18a9073071e0c4be2fc0cd130431fd753630de8d347f6949b79c046c0b90e4e636656978f3e5852bbf6044d9964747de482b448dafd3f7b8e169cbd1a56eb7a803e1bf06dc11bf65a0adef9eb33eb2aef852ffbf03afb82459abd087a9f260d776de5f735a311318f41c5273481 +expected_shared_secret = 6cc30699701927e07b559d708f93126ed70af254cf37e9056ec9a8d72bfbfc79 + +comment = Official test vector 72, seed: "6960f21c7350dcf41b4770c551dc8692d8ba2c0b6e162c589166ff22e7a1ac0f94c2f48504a5f7eb0da094df427bc98a" +entropy = f1e5542190db8ecf4b8d617a04fd3783ad0df78bf8dab749afb57db8321d151b +public_key = 03a20a0337040adab8bd449e0beaa93b07512485ba33f291af1a44540bd04af4a3dd2a09f6454d7304d0944674a580551061ba5f88217aa57c10640dc1a97396f138c1a32cf40b0bd9286f88c4087f9084a9012d248c63efec072d77ab0e736719a23a913b7b8b62aaa5bb40be97cbbc1c29edb283c776aeb9b032e2c2691aec9ce89617b84b09712b40e2b713e566c714e0baa75957d6ba5062ba76471357252b72ac66ba97e10921ca2313a232a6ba908dea13645b5617938381fbcd748a11f61cbcb615c458d056f0d55a449c4f544c6673322ef106010cf139d1c586aed5a5dc210fff7a60f3138c34a4244398b692c567ade5beb55c1edcfcbd93183e1ed0c2aff5bdab67b51e39a58bdb8388d67cc1ec0d7313b7ec8a56cf3c9b73214c4ada14592794749b6834e9b81a2ba47de929e9ac7856b56549f40f38f0784ba0cdfc195952d3155222bceaba0e3c233ff7e19a65822437217a42721f9c060ac2cbb9c4e6bfa9fc3014d8add7b4bdf78291423511f9874a07e06a82b6369fe349e08333c7f56b7b7b808a0b4e888a95799a2df4873944cc43eb958b1508c66e571268e79a69178793e7a4d430507e1259d01c86f999c16772cfb7b4b330114ff55a51ee5407bce95a6d27875a91773420c24f8734b3023e9db777819ca2163c431de46f22f38398d46ee352b815b6b07e1a242b01a4230b59ea8c7b0c3c3dbe2b7c77b4c860660daa04c452e391c710722c67bc0632c072fc1e5296a2e70932d4d38efbb96bd636bb41260a7bf27cf5e71ce3708e6884cf0b8584adc3cd3b5c5ee1003a13731704472a203c8f9b49534309bf2b60cc3e2448e02b5a46d889ffd78fbe722a709a2d5b5c8a7d805bcff44052c553cb990ad016079bd87db7573eb1d431d1e549edc8ab56a0bf52999f32555e8ef2b03182bd8d812cca638055a73b548c8b432a2a7d4a6a074aa212d50362d1382747ca8dbb95e03945d95b995d6346d7db47b24b86e4f774f3767db7996335b789733cb251f9b1edd04f8f8cb7af4c947af224dfe0af6a42c7b65120b9c18abe9161d88cc5c4780fd74403cd177f7160281884a11cf686f0f523f39cb7ad39b780f13a8ee83c0d646f9d85babeb306d53a7df53ab00b5a1aa8c215914a48222940fee10d1939ba5c93617690cae113a59de071c969436b3771fc50b2f4aa641a4c852922380a420fcdfccb81816f4b474a2ab293a4d97b2b280cef031148ea7e4c9c0db7e7cd0e50b203a6b7519c3cbc8062c9b60b8b81cd956463b8180c67f34be4868e3ba94b9f0226d9f010d9ec5ef0bb62c865c807184b96526d94170af9474bbc100530f7c77e46b98c2aa41f92a48d8027c855c7f84684389bcc8e7c67164a204bc5c0c90828faa439fba235b6f20785cc8ef4c090a708bfbbe26e1933886cc96ad9b4562a119d4c66589c85bf0e55606886206734142d432c1b032e0aa93ee3731f069a8cc069a03b95a8ab873b447a04ead3a32be3054af834882bcc581712be18539b805577e50ff5d982c98c0b0dfccc96a4c6429281068c8429997dc17a6600f0736b8453e3d77636faa8d0ca89f9193bb34819ca1117ea368ea23198ee11345c613993ec052992954099bb9a086057df0c5465326e1932aa50da74aa8435d9294fd6b7c05a153f30 +expected_result = pass +expected_ciphertext = 3a00a38b5cf0894322b8f5c5b35dd486f4e4cd14b18cb3a101345718ff843b13fab8ae89af0bdb731cfbe6c5bca36200e5ac90b9faf0c7296b6ce324513504bc1ab4ebb91e77e9736743722cec11ed929a2d536c25855e7c28d1a6ae521eb9b6391647073c55ed0fab85084ffbb47552721bb6827a0dbc65bff589165f25610ade382367ac20c48dc380bf89c459d98cd5bb01da5899431e29b938262c29e68898602dafbcb9465d0f166986e19d51c00c94131d3a5c0abd1ffbf793d6e9a52e5e11d72233565cade9c20a8810e55f4d2fa80072db2c1ddfd98681e693730b693c3ad8d01230e45aa8822d191a8bdf90cc62829dcd40e75f568b8f562aa61a6a9c6a7d1be451ad6bfa404216c102b4d6aeb4599951b0b96cd81e2a03d825380a96a831b321c6f14ea5af818d008d6d80f28b93f2e3bbe22195d4ab020abd3af6b545473250720bc992ee57ed9f328f0cc1988033728fc2a28dcbefebd698215b3a91a05ea5270cc8bf8b0a1ceca7e9bc13bfd8359892c795aa6360e1fe6d8a2965356cd5ea7f4f8740a2e9073126d0c41f07fad51c74cad707c9f83140a2370fcabe3e9f48673d9f1d007b41c647ac0d195f279696ff29ba14b6841213b7218d769be8f684803bb1d29aa6df3a0d6e52f29b19063a81f1446e54fd8f1a6887b0132da286053836c0cbe97bc36c8770198e203908d3496c43941b35257dd86fd1a9c5f5177b1f75a426b00ba9162e1630779c6aa4dd421b4abffdebf19472a3c3e27d270d30d17812c49dcf3c5b49109800625eb8454098e1f994bbb193c2f6260caa9ea62cc2eae8bf26255b7f3b1a2fa57231f00a7cd97387d5348d68737e167f7f22f6f4438b911a040e142fbf2d9228480d83a474d54018d92635bf2c14ebe728bf901689f35462801aad5545cb411fdac9dd55354e7896c92cb9eac3aa0b88fd6e2b82f8c93281d5fcd7a490a537efe83e9f3b8ddcc8f8a83a081354f0e9939f77f8368fd6f8aaa98c7019ac6c2b74a59067d4ec0b5c9bb1d7f0bc6b6e06b05d2332284eb5f24cc35e14af83d6633020df2e74c124bfefabc42338b4acec89031cbbe5c1ed3f2d464b77b4c479e37dc0f5d5d4497e1b97dd00aad4fcc47013791b2ba6f098bd751b66b51971fd886c03cd6a45addf8ba4af20679c498ef3b92f793d1f6a7a460a665c65b58796f57f1d8da4c127a2cba6af842125ee6f9c10a1cd9c9f06cdbe63ec6ed979b6be2048db2f83e4cd16a80e3ec5908f8090218e2e9f97b60707337dfa770d3ad27076d9c0b0c7aa1eb8e220392e3683cd19519660a17661d2eb92621f59a75a8c2e008119465793477e055c14765262b33347245b96dc1347792ed7271c5d20f73def4056f96100a80fcb89f69c451da786f045fb2556a2b3d84aabec88dcf99d2016c3697cffcb7f8f452c654375d1eb30bfd9a7941c6cfb1193f1d371ab335966aae0c14b68fbe23f6a12f5160d786577b2ffa3af2dbe46fea002bca529419faac0a3c9da0b2c161beaa83422fa6e875f63 +expected_shared_secret = 250e7f67bb34dd5477471e3a701fb71a8138a1920eb807824380f88a944a6fa3 + +comment = Official test vector 73, seed: "53df46012cad4a745b7a3c06e18ca95e0b839fd8161e3025749a0887549eb0ed6a44eeea08bd6060d6509dbf7e9dc864" +entropy = 74efa414ae171bf60b6f884cb7e5ce12028f49365daccfa23e845d551711660b +public_key = 611ba36d3a65c0d17cb22b7f3a682b593595b1c682d521a16dd621a05a7d22c9b2d29c9bb75cc5a8567ed3a545bad39e2c85cec0f83f37c6aaf101bec273bca5d606a5e76fdc183175a233c93373e956580a522badd22d97d71199c1a7b4149e652686eda541e69187a2abb68f89ae9492443547cfde7b5d609b4835911d154c33e49248c4cbb244acbf03e93e52e71ed87a75cbc43c3f505422c1ac31c014e82009d4b13bf2cb7dab16896a320fe6c0476f37767ccccd80850dc94b410b983fbbcb484dd09b44a817fd95686106c710d983cd2bbc11dc4ae59091a401a6941bc704142c792c407f7524ede1a71a726e2f921b0626768307c31dab514a783febd67b50e93479d2c7d1787142f591607b7a5626a718d502b37a6f5b8766e8175c6ef276934a12ac1107aa3362840513d3f5c02042ae681181dcab30f6810389db07c3fa1790345e786031e3196bcc01c22bd064b2f9c439d7b7a7b7633232aaa4d88e0288cdb791049b8a8c64883637098def7c88fbcb974554af0f3c51c70a758176215871227869766452871602093d6949e1d078691537d9d7030b36926147aff8151cfba202c0364795122d1d748a18289cdb33982900b38ef9aaa5d10d146985c757ce5cf82ae0a2489e0c00c83550d455a03fc885dc7a5ebcd71529ecb0ca13ce1259186f9b0ceb4b90789aca0762c8bee063780801ce365540f440b0aa0128103ae0f5b4a5d9b98ff3aec5793e8fd046a7e15b517c5c4164105e87c593db19b85792b6c705e615c4d95c38bc4bab4f30737a20241a3189eb38865c6b60f6341dfb931626e729ce39313e122687862bced934ccf88411730fd066be831542abc5b15a1cb2d3f0aeace904cb419754d9a5cfa35d72e570c8d3b0bde5a5b18201f14cca3e3564c16769757a2daa89b03dd993ec8b7c9fcc63098478af1890346a8824a4b142f88759f382292ac404f436bd21282d6a3242417b36211c84b75f388151f087186cfc01e59383e8218039db15da50120aa1c5489743bc42335a774f8494a4244acb6677b22a46224df7bdd8a9292ae58e07f3068cd975abb51e44631172535e52c910b48748a190c50d877903a4c7b9f4b18993669d254ef566058528a157428111d43d360ab54343adebc2a3636720f1e0c8ccfcb0fc3b71b55353c2682946408cad171fb711cf0b3ab561ba6722647acee4b8daf0aee2c43352609dc617549841adac54adfd3319efc715dd917ab2b887dfeb49cbb6323acb566e43638a5c9b6f865da4157cc3f866066a551230a335510f55733ca4f3a6329aa0830894e06a05ee578c45b3117fd07d62718a9842ced5f49710f7b15741ba5b06298c550b96bc6fdb0561926240faf09012e2cb49c66868e27ea318aaac50bf882c5bb8e674381a96645b7a7dfa936201933c31955e24912e436528027b39f74a909aa5ef4653cc23c5e448be6f81088fd322fbb1779be52ad60005c2f57241932ea3b435c47a39e6e0477b989c00bd5ea71ba671d8a37dc64d36216ccebb14e6dc7420c362926b555598b92f6a78061423a4cc8961d57733982fb8c78573c35584185fed801ea674a7fda06008517b42d1a45fcc50416883d0963d3b744edb5e8548c3b3dc474f7843c49a8dbfc939c41af7f8ec6c8354aeb0c67e05eae0 +expected_result = pass +expected_ciphertext = bc05257f294ebb1d9f523ee049a3a6730e4cc5b52e9760cc5d47e7401dd902179a830fc9261554103aed30dba87790961d9524952048d442623264dfeb2e4a4a1da9894a07d994b9054d664efba14181c35da270672e2a96b6c912eed8c5bb9487ee426399cbae893fe08ae6000a4ecddbeaba0187af28aa9f30f11e46e2e622de5f5fbf89e4c84a10c94724cf0810334fb4a9c609619295cdff0a7079a55d7231c05cd13b9fbc381d1b33a3f9170a4aef32889beffb76d91c3f9a3ecabe60430006aff1c59e6781c816fbb4a8338f4af1a1a9a719497b54bd7b753611ce0da6177850f0762d189312670c6028f3af43b6c8d9f9297c636c8e4e6cc926569c81f93e2c1b7844eb83420070b57b5df5357adbde5d794fc5d1c2c6c411b563450dc843a1139a405d16908c277db81f202cf53b2bf3a6231121e7d8445b6d45d7b258ef24483e34bbcda7c2670ff02e23b6a7a6fef8625fc83bdc56baaf2dd7987f37e565dea443b2c2e25363f74009a730f8f986d021af214692a702b38cb56d048a1a5ce2157cb932c9d8a4663c33b500485f7f3147eb9c50a49bc8c3d7eb5dad6cf206e275921ea4fb4e3e7b00abf9eda1c9c2b93f439e979a7b0331bb5cda584e59551564ca3bf065ae9097d0327220d265e6ace108258fc09ea5e0380e5c97114ed4fa4760220568209cf52a79f0aaa1efcab10e58b047d44c2cdd74921aa81ed53d6c98a341bbd0834b19628826691d6aeff3df36f123dbce39a84045011a7d9493911cdf171a63cbd7ef21a6fc206abaf9ea46d491d94e12e88220dc27891d1e4a728538f3c930807ddd5292ae905e22b395cdccaa6431ad6f3b44e299aeb2772db97de93963eacb47d24f09791380d98165ea0e38d579f1b5f6249686a0c1610dfe223ee389c09a7c4ecd67bfbde3348b4c27d7087cae132f88b1ac82d31e1c41c4418b6354b57e2c37cfe8e60218730beb2154437b66db7531b16bbe4b4b6a1c8cd1650c732f872c8cfc6761480da34dfdb6f538bc28f91962bc52447b2898815a8f79bdab2ff82ffee5073e3c90d90960d9b0b6c389969decb7a41686cdbf12005c0e96f3a096175425130b485c94424896ef25a9d7e00bfea40f0e2facfabe7355937901af2fb8da23b69eb2249de3e6bb98b84b3c11f65b2889a01073e75b20b7077df34c4a3da9461ad036c41a926f4c18db0989ae4963ad31c59aa2c14d177bf94a12f73d5b6d61c9a21702fad90a2f7f519f502585e3fec795463eade03bfdfab04f17f3b8dea98e713f91e21f3284a6521d3c051b2388c6c5683f5bbecbb1575db97be5f24418fba1e4d30a3b3ed014fdf028c3b8d80a91274995c21bba4cc272d31466d54fd6ef2a593c5aa5511fb95b02c3aa932aea4bc5341d90ffbed8f7fd8f94c2a511abddb4e2498caa887512d6662ac02fe6fc0a01df4377c05baf88a74cfeb50fd3bc6403a6dca1d794043ca59584bd6c5177731beacd58ffb2f0b6177d0ec260f2df873b594500bba6b7888c772a61326bd69a5574 +expected_shared_secret = 0210935a18f1add5ebc2e1107bf40a628ef9cf8f6e7cdac81dc0291bb50a5a3f + +comment = Official test vector 74, seed: "deb963f8b1d8fbdf499d564ba8d2d47915bb402da02f17031b37b4039a842afb9b7e48f37200605992bd2429427a7a4e" +entropy = 0b4c3cffb2ba4380ead13dc0d8acad2356b448a810da1df29f264c44aab6d24f +public_key = db0a138c9442fd3a7580e68eec01077d31525465babef901806363a2d664ef8c1908a30491e336e27b0f8690ac71c30adb145805a15fc654ab8982565eaa96fecb93a2ec7ebb697652965fc5ab837f6b7a20e224e4361977b71c694a88e5252f608cac97e97dd7c80a5ad10d62681b57162269f7b8d812af039226ce2a7930e43007c0b3ec6a4cdb3897ee85796d051cb053881e1b9706a572ccc75d0ef32f92610c40db4553824f1a352fefd979a310124b9456a9106367ec6a50db6fe0b057fdbb00a46028c0d6a638bb7f2139ca6df68f014c4e1e0b79670869353912b5d67edd4b77c70c067aa76d174cced6c7a901c65737082276188cffe28bcfaa2604447e68d490c0f11cd22b8c351c2d63e7a01ee460bc408e174bc4a6cb023492c6eed42f5d85244ec883b1b49b8e3584f27835f21b6b2e6060e0671f289771d124168e196edacc1aba26cec9e09fe7367f46893c2ea3677caa3005e34e722608a3b64a3b987289952dd695a82de89b9034390355c5e33546eb833f602cb9324c095bb4cf66c05fa0ab98d69bbdcff155c3169f3df2a575901724b678fb080b67f32240ab8f0198cb43176f6ffc93fa602748d591f0b2acb9aa67a8d8b15c27140c320b0ee040e737077a8c9fd6a20dcb865ff51c41808757b0ca750c502a356b1c7d821f1bf804ae2b337819c5ea89542e079045c887ba6550e4f05693f5c7012424d37a17e2294669c0538ce69a1f1c1f121784e3c3537424bbc4d73cf1a685f03a24c4ba8fd603b328d2a07fa2b714dc1eed17693727732ec7be2b02c0614caf3d42b222061ddcd758a0674133e6cfc5362f855b717695acdb971aaf16320690606c1c42238856d757b5d610bd64427f04c97abe1bc6b0185116cbbb2dca28b5d7a9aee205dbd37e92bb36311c8936d958aa1744ca67332a600d8c719377273c7fb0029f27c75817746e1058dd196de71b0e4302682da21b4ec1beca3cbdf690509573959d816cf5fa034ce01d6a4ac477e3bfea75732678aea6c0a5401c623dc225c7a9a7ae6a572f738387181913cc71b9379a5a2bbdc45773c6a1167fe756e13731f47226bc678331312b99428b07b2122b2b9dc86b01c5f090ff632fa83b598863c0b42623549ca831f66bdbbbb1d4747d56a97dcef9c81766a3d90043c1a99ce5e81105e9113043342a539de446a7c5f9c4b46a8cadec388fbb8bca527d90a56c649200cb2a7f968611934014f9a7b6faf3015bf6494ef72fba0c7ba40c499357acc96562c65b9ca7c53231045e35771947172118eaa02cd95f7137c93e2159d9389607c3011a76363560a97df950b0329258b0126c7bc10e4081ce46b7c7b0af0752b038386e9afa2d0a7543d85ab909376b618c0a2d33875d264b76941430e81c48832f43270160176ed5938492a06cc08392237caa8487abd3c83019000bb6671784109c7bc4c2a0362a5b5122e620aba511c49ca42d75091b3b1abaad9b8162bc27f182ae310872e789cf05f6c949598c41c3b73a1a9cc0808e68f95c8ad8392f021f77c79618685db2fb1d04a9a8acb8441ccc764aa3b191736f5a24ae31c23428390c1c22c6a6052664db63b94960a433584036c05e031a07823a03ca153015fb2665c77d8fcc529f21afde0d4f32cbfa399f2973d812f516c86b +expected_result = pass +expected_ciphertext = ed678ef3105bcfc14050898f388a2daa0d61c5ab310fedc2107297881a1097f329c679ccd9d1cebbe957c137acacb33cb7ee31c9f5c148ac51e57caead59178132f69a7020a8419f4f833bfe4b8718691b26b771ac6e858551aabed2b9ea3c904a8c2723f5fb8b87d519f4a93dc43cba81c39063f732ba91116f359721ff3b6fcae87c5965bb728f4442f35dfb3f2078106078aff64f51cad6c62a5c8b056a5e6fe7e08046f097ebb1311603f7b719d93b53a1efbad985dd5bd5d2375d118f81347104593e6a05118836beb278a62d5479c7bd62e90b2aad04f7c6c0a4b5b410568b9033e72f1cd6c71c53717faaffc9fb72e27a3f00661f2b65a4e0845c2e7aaa391fc1ba253e6ac33abca8a2839eaa0be8e350101af3cfc7363424626ef571c6db515cb8a8ee209aded9f56a5bdc3dfbdb9d4f1a94b73698838550d4e348e5826a8f632d556385d3135ae872580986b43a5d77fe471db736328931dae7f9554604ffa969d5d2e7802130afd2bc5e05b3f3947483fc8ebc680176d792b0fce9f7d121ca199011efd51343a9f68cc40cf3c019338cb6e1b46f3ca920344d1207be283329945c1729704d3baf1953440474be9aadac1f705cb5ee8c41ca4f29645fe9b5044897952899d18ce25b841383ee086ba8ceaf712dc69d23e564e35a3cca5309cae57826907403065e943f255bbcccb64f39a54c18ab26a8164ef5d9d07f6522e7cbb50a2b80040bbadf0799ae1b55abfffd5d2a74c9c94b43eab75f55c2b438475bf4a4f0a123ce8e91e94b6ca6106b39ca34430efd34fa0a741cf93e0286642d45e78d8fb26af2ea594152a87d1737f54238c7a8cdaf174ce7e9e13aa207b627ebb4a92598d184bdc62a643934e114b356b4591ea5415fe42a9f47332d559b9f748752c46e4c8e1196a9d16df310ff2824afbe1abf520ee7c6a8ad7a833e01e1ac3fb0784cc85f3d731b40a12c667e6a0f3ad83505080aeed9309fd7492eccc9a81fc5f047c47c624941a0ba626563813f74eeb0a8a558fa968f809deda218f6a73b821f30700307b3aa52122c81ab3d48e4eab8e1bf8ce95f9d77014b5edbbfd21152305d427abc30c19ef3bd6e206eb128d245ef3f0132008957577081e1863ac3ca83232ec8e3a9d95546948c9fad4275e0a1863d5fa2a54fc42d0846dab4a0d74bd55fe5071c6c514b0f0fb69a8f27347013b87fb48d00a670b6fd28e8c844ebbd6cc93c527b5e0da483b3625e754b5f39257c9a167e5b381bd60f3cdfd5cf0d65fe96e02340922e10c488f35df7fa4ba9296f1e576aec3e425cbf92d648f6095726ac3ee8a6d812fe9ee629413f78978e200fe3eb1816fdd1eda1845382a1bec1ac57b23b79189ee7f67f9ab45731d2a2ee4f208025f0f0530294bc2e38868118bf2464fce482113463325223ef8395f945e0002d395c0e9695c9b8a0ca20fbd1f3b66327b69e6579a1ddb49f50daf499031b090dc2f8486e65d8e715dca3b5ee26a1cb3fba97d4df8e3f283c28a4e2abbfa3ae5ba78b6b5d8c +expected_shared_secret = 34169fc520e944f94ff1fa3799db802a4c1b26cb2971bf196259a937ab8362ca + +comment = Official test vector 75, seed: "8e2995f1b3e43853b18916bb1212aceb05898e2b177a87abeb928ad7184e59695c56b2cccf5db80853c28a525e327d13" +entropy = 1c82471dcdfca3a6942061ab4f3d5bf0d197321437c706d9cccccce449447002 +public_key = 35a0c8ea287462d8cf8841cdc9016796500e61e89eff672e87c667f453c8ccd148b94c9a9a3765649ccc6e1c05e5350218d091783b6c7e4958a0807e73e9839992c8c36a87891b7ce5d7122e38b5cdd745feb1058fc2827b882df77cb564323746855392247b054527ee862abc91a557c431e55b81d23b1c1a94992ef540e07338fa944d24b17ed4e693eeb8224a0c5307202457c8033aa4651b2b30f85a9bd8070d1b11675fe240a1009dacfab21d50036426a6dc9c3dfc05cd1612ba91da51bd5a0f7ef9b235f1b3b2641747ab8a380b42c060357bf259548cb80788cb41da4c7d3c4b9401925588920df255167240f6b092c1329799f0039b74cbd549b2c053a71d4641071a3a95a460b2b3a8ada727193267de555e6ce87986ac06e647c4b7967cdbe5083c4b99a1b44b5df58959c48beaba0818608fd4046ea0c09a28416c6a97a1066c0650ca619d14a056252d38539f1c2676b69cc53502487389648fe596783baad0d7627cc6ab2da5b6788410b67285841a323e04d037f25e103b38b07672248186c969b04661ac6b2753c5429eeda389599b78e84608dea89556a9510627b29e13b1713a1442158561db8f435bbd6234a420618985dc4f71f0a5f15762fa16084f178e0e76bfc9ec5c35fb52e52301e6809cbb287d42b7591828afe605cfcc93c337bab78b55237b075a8bf08c48c15087e82600655234fa99f6987da7904ef50a1599867d56760ae1d70006925ade67157508289f137def9b9714f4cb72a017ee6a6325f9418f3a0ea3a8762c55987ab406dd9a6d248a33eaf264774aaff6f00607f37bc20041d3a170e07407792a43c5407fb3622ccb065b74bc1a54f86af9f7246d288fee725a6fd85e82477483f778d5388728c4565467a9ba3216d92089bc1c742a20b03bb526b73573cdc91aa8e085f1eccd1866280e791bd1e43d4843a440e050e2967daae26686cc2d32f512332cac82095ab0005133023e75c9c92b0388bc8b2822a82f93fc3520972e2e0a062a388931092bfa8758f251895c641186d1b40f6a332df3088bb24381da133ce40d3461a7d87a93e702472e49ad91cc013c936b02a96c4ce14c2b23ac79869c6d139c8d85b58da27c6eb4c4250bc3ddaa56dbbbbffaf452c09074e013a3c7599cd5b8a876076523c6b0aefc6a503bcee0fa76407b779db92453f7aaa4e58401cbc6f3718a3352013e1383b4222572118878c99289b91b02d929dba06c6deb6f4c2b0459f86d04fc8d287b6a676b17e45997027568bf7bcca05c3d394c1557873711174242ca50cfa30bb3d715d1400807cc5ff1049ce720be3c360febccb61dd7244f4352b655a517485ab13b413983cc089749ac7144312966b2c67ad50096bc176142858881f09e3a075f8fa6bf638a13af572ba026a172b23317a01a999c8c1ef478422cbfa9802f98f2856bd6a11f8584c532807771c19c411a2900c5a57c9b8e44b4c07b3be3477baa738ab2c407653a309d7a82cfc6b86a1b59ad1251e008598e453e04e3306c1877dc703869da25a9b91fec80aaf4f30b4d0a83e2daaac73990f05a9002d6ada0409450454291e37112a9ad97147cc89999dc89a30c809757933c5d0356f329bfa3823d34197b7d9e60e307bbabd9b3e8272a0ef1b3333269a7af6a5bb8740bfa +expected_result = pass +expected_ciphertext = ac958722deca4336b0f60c62e7c9e13fcd4b006cb719e07b26fce400e3467d481cfffbf51699fa8dd5706cc65dc69d8ec2c04229c636a94d6a0dd59bc81e90b7538bc0622489f18d445cf2a7082c5062f4534e0a156b4b77095af6ee36d2599ed7a961b0288f40a52a769b5ff92a7bc835cebf20b0aa61a33379b669be2efa997942b71204a97391df9461b2ffa7f58c85f437effcc82220484b1d352f17ff76ab8516411558fa3e3386a79726ada7c29e8195fb41d480b2ead4d48faf6949aeb157ce17f6524f1c0468defe260f6b5f634b265428574e259b546cd48050f2e8144033f686bc08d202563d55833c217bb649d50e68ebbe5084a1752cf479a24332f6b87229ba8f38a3f75668f7478cfcfc4de61e65495b22e746ed7cc8ca5ef1af1b3aad68dc224d8c458eff394747e235c191780c8c405bbfd7ada024558b04e93afc1b09ce5e97474aca4053be829cbf7668c660fafe8296e7f0c625741e5cd0ece5c23aa4e5183559cc09616dadd9fe4a471158d27d54bdce7b95c6374d88353e8f09907b6d910d228598f77faf7d14eb4faf5cfb1aa6cba24062878f06d2c8bf4f57673547abbda6266f26d6893ea8d9f09c5adc8918eeced2aa88c93a6039d53adc5b5722c2bc4bccadfd2768acee766d400c200babf7330e17be15023522123bddebb445274caaf1bde7ea23e2918f9b520a3173d7e060791126668a997c29241af3e531ba30e1c26e7611b32a346f733de31d26c7971beeb6d8a9725c282b2b07947e4a6899de0d7cc703bca6cd09c2f6d24922ef78592106d1dd0fb8ed29173f6d79e82df387526ceb9f0292b8fec498757d1680a1784df0c22fc05f409a908816bb060b7fdd6cc95b180fc3dddd50405c4deb8af5c68e166c841710610ca126b2469f964c8d19b3b0e9d54aebd19553e9c791c0e50b90e9c676e8bbd1cf0571810d6ff0134bb77b451bca63b37325e4574e67b553d834b537c4dc371a69352822844fc8e68786f73826fd3e38b8735966b96caebff7a67b5053f7e18f3fc0133317c6f3f88c0bafee7b1ea9dfb9733c8834f401171cd8837d7466a9114f58dbe278b6882050730eb0a979919a267779cdb35eeb4c2e4d1187c0e0c96f63a067bec7c8a91db1342b95386e062af1e43e619a04c040fa30f40d2ea3123ca5ffcbc00b353e8df0486df38da624cee432284b18d22c6051da022255d16fd85736cdc5a1c635279f28f2348d5ea50c22f5ad445e3e025ea208dfd9be4c42953a578e238150253364530c51fbeb90b9e83d0c0bfc59ba37ade7f001272eaf84e88b82bfe939d43830fe7f6cab1309392352fe2a91d05ab5a93b3b530e1bac3dc3fdd3157dcef43983cbe0a5b4a6f0dae4912126bbe5d4c62fb9ca542a25c2bf463d519ee01642425b0c93893a9adb034ec67149d8d3e91dcd643758094449e1cb3675760cef095c91b52202748ad12bcdd4de0565cb0d214d0f2cf40cf9cdd21ad6eb0ccad52cd6eba41e72fb3ac7b401cadb08fc6a6de0b1ba1f02eba76c +expected_shared_secret = b5901e97eb656a09d2dd132528148ad07a0a89f638717eb53516a9ad19aa36bf + +comment = Official test vector 76, seed: "9218943c51fd2de47e509aac67eff176795102f37d7a2017e3afd768fcda7877af38739b00fcdf227c2fd62eb635942c" +entropy = 46fe60a18124125ab93e0c578f1c02f1bd1301595013001c7f3c2fa56cde294e +public_key = e4749bcd8577d50a102352b869402efde59f5fb54bbee919e7d4a8bb8cc40fb8c7240401113152ba727cecfc8e4b817c5d537df050902bd03df866317006a2aef59cac269813a47fd337a0c5b694f4b080f100089255614634a2b0bb1ecbcc3f1d84cdfb3054fa749736e531c2e673716079cf45c89b444b7d821d892c7ec39a74d39b815c2b9981ca47f5e56840341ff9d23fc877285f9b90fc78bea1b9c5c647ac52d066ad7b8ca2aa01e0729fa22c39d9c3c6cd833c6aac061aab1c1ee6819d2a245997b8580a9e1630112cc6b62c4952215a3281111675f25a10ca0c32bc68c7bc920bfbc7bcd82edfe130b0434afa29b2b9d90ac3f1143b5664e5e51984b52d976439794507d92cb256a1520078972b843ff3dbc6736602f68b289e0850ee845e49586c889ccdc104cbf13470f6f6c0e6766007e5c3a1348166933a45a1a62e0b749ee14a38e11a094bae60a38c84079d81aa655782138671a0fa186a727457d351a8a45b6fe05369f7b158de844e31117ddc47af9fe52075c6acd5f93a31c38ec7f608ff9096c8562e0271a35fa7265a56b24bf31c6a727376d1ab3f600573342e60884f41d355b2336e464b94554b7c108614c3394fbd561a2e74ba7045c0d74032877901e4f8a95c41ce9fc72013c51fa93b5c0b3c3b0a8c90ce0960f510a9f6a453b8b0012f7c2430350b8a4b6143ab5adc7aaa6f3533e230c3062b7caa33b1e9a3bfda7bbffef8341ad0a33ab272bada717a4790f4c99cf430bf114b62854810eab7af582a2ea327a599c490e25795cc5c42219771391b33df4c7fc01524c4c520eb4559c2ea8c38ab5cfe27035c756248662c1e969ef478a2d2419ed9da7125ec32b0557edb5b77e0dab221544e5f7a57a2941b89b803ed1c7d8de65f64a29d8e7bc2020b723d391987f83db0bc35e96aae7b2772b37159a3257ead277532119cf55959fbec482169c5391a9409877c79255cbd1c8d2b8352cba074bc4714deb09f9cd81624d2782de91efbc30882c45631e96e35c9b53f77cc0d268722ba5eb858a1de719a88ec240da229cd7766b9a237641c1277c006a6672bf61ab5dab4c223b7381fd3c16704cf7920b2f11210c969b6b46a152b72598de4aac1665d72a45bf51370de61559f83081dcb6aa49339e489968c80498550afc467c8aaf0c6c1b9085699b801c75eacc3142be38de6f6a64ad6708c426eacc13b09d8bea819bdc200258d31a8d1f308d0a7470dd35161379191576a03b81d70ec58565ca7c4a6bb333338d8113d70f5bef45b6835917e17c2945a06cbb7f2225675252f351593b06a6db504b6e67c6e88763fb06879187c5053029724b3477281cc5c5294b36b64f12a08084eea098489d5cad338a0cfa61231268bb866c2c524c71bd6a467c845ac7a4eac579049734970859a2ea753c6b93ef01532b130a103c6244a17870b75023e0014e6d8433ae5cd2b145bfe253a8bba300b6465fce277e2fabe36d6c8112887cb0a6daea4a54e258cf89071e407594de1bf1f4aa2beb50263dc5d5fc729b632957375b5ce6373d9b93211a66a29736a6ed616ef8538e95c45bf595b2eb743d79436d6385bab74c80d88c1a1f4022e6c3bb3d2294c474c2c554f3be4d7fae86455763b97ec8fdbe9640219b35fc36033966a3525d485f1 +expected_result = pass +expected_ciphertext = bef2266443f466793113b5d0fc7413bf46e39fdfb568b88550b25cbe578868d6074a6b2de2dc03b8ce8a7a390cbb67c46c500c7e6a044391db3af04e95c88f2acc12c63613b2a139a4551e9189b118ef4f04de5da17fdff8338483df67b9f683ef87a2ec36185a33bca3147fae6f6121cfe41ad623f9f15676bd40fd7a2802568e9609ca00bcdf1d59c6595ca1b67db3a3bdffdedc7dee22eb33bf9e444c9f115ef088a32fe4c800bd57fc854ba31c53979d48a8071f8f8b83049dff41f729ec4bdd5423fdc088592b7bf04206b920cfc96aa4721a55235520237e1c7cf15e7905d864e6a040f8625a55330a2dda784554891d35862811969c77ae7260f776f1a768606117fc922d936a058151850df0aa94a05a9ef0ba817533073f831b03097ba43b2a3433eaab922a1020cf60b5e02994ab56d8b1c746fcb7f699c42254f3161cd53388b50c9c089a73f30ce34c2ee1168e8acd73c3665c89205c7b1caccb8baf5d94ec9451a6ed00cdff4515fbb8b3cbc0fdfc0d2e249eea42ace1990e519198306dc8c040e6b8822af99755825d2ae48ea94dc5304e7646863a7af04d393a35305f15de1c38e4ab78c061d0006e85074af2e8a7cf53a3ad7f631de6d49c84124271b3a29e32e40ce001e2d21d26cadb65d825a126281a157551c87f712d32e754b5d8cc66f3c0d719ad0c0fa3afec198c8a89d2459d304d4b8fe164008a9432fc62e21199f7a3f648f1d990a55f1ad253995cc848f6e5e7e320c221e33a31e8517aa35a6001f75a75b1e3721aa912ac92e4a4d0c5c847ebdb834bd6ba30addb70c613d4ce7e83e3a17e5273441eccdfb05f9f205d697e0e3c4aba2070fff99e2496fa5e9548767f6b3920eb3f6825c194cb6d720caa133bf75d98bb858bab11d4e1dcf57e251aa4fb82bffc1629acffdf25010ab54a6226c88b2582ad8f6adafdb62723b0d173377e5f7bb894ad70b26a2c22fe0b940805f1b5160aea7a8396729e1428446308e3ca349207d6354e2197b6edb19496146cd71edd1564e07afb401888c22aff7ddc721d276819cd908915e0d7797b20bc7d8e2e63c9fc3d899158a0862df09e506e437bf194807544b3ed75813ae767538beb5f2bb1f25abb08e9b446d8ac4e965d759f033cb68980121660e2c9de083caa42f8543ae4da5dd31a1c1eb9d460b5175f5b913a0cdc99e81c696ea831cf6e87066f479950c852a240f716462773205e5ebbe5b769f844d36729ad0996a40f69ae558da55b9792c328403170f2b917b65a971d0ece55be01f857d67ed4a8ef59ad83f7ebcf3163770bab4f583b32e8213b000b65d5a7c2f276430c4b23cc33d9877a72bd2d755a131ecbbf88d489fa75b36159c17a9f1d61f109048a48507dcce311875a52920010712c6af5a181051de669c4bdfbd370590218f597e9e39afd39adeb31850733df8928d7daf5a6e2f3ce694854d340557647f4b8fc0f6cf633396f2ec7e03bb74b1f8f3615a78555dfd3a35d540151d4ed385967890818f997d8ac26a4c29f +expected_shared_secret = df5117706beedfb521f0f021069fe9650d0844194339033de6997dced05268c8 + +comment = Official test vector 77, seed: "542e20078add5296050af150360f057f6b9ab3ba835589dd56987de805f900b906505b5390a0d86cba28038992dfc59a" +entropy = 52fb7cb6a633fd2e83f2892bd9441b48fe59ecee6d026f5246fa7f2a5e55ee3b +public_key = e26411e0cb6648d36c6236468793848aa4b7f4510377e0a24bdccb712bc98cb21ceabc08101328d3d032cfe9c82d21372924c69ab5a402e9b3d88c87e9bc5c90335e5ac231a1b87ea3c2527b82445d7c8596b10a609616e4da431c9593b91a1aa21a2e436a359a7a5901902a6b516d562363bf95890501af4c5946626ace3f276af8966709cbb9b666b9842102f3077978e4872307ac65ea11002cbe4dd0bb83677419b89c9e0c9847fa6441c86b8b601663e40357831d1b3c21b4a8985ed50e546c2917f332d4acb59bd64d9be88efb981362458b8d868da7ec516ea9c807a29c5d51385781302072c1f3295da2559003d4265cb330f43ac5b774562c182be83636fa034bdbc3cb25ab6c8c21c69b873329321533a788287a40c1659f457c5e6e15456da54a7fdb18c8ba246447606f2aa340a48b4fc667d7e67efec47910e05c3da4463b75359668821711530835357b6a8ec62a3e7817c508c79754063f7110362be73416a46533341cde577c17a75b3316ac59575eb1a1575ec0104ee77f70941e91786ad457832e1493466a3faaa55911e9bacef8ce49f579f1753b5138797ef827f0bb0821ea69bd9c43abf2181d0775fb64b8694c74f0323600fd3e5f1bc5cbdacdb2329928247e4759747c02cdd924cf1c93bae5c37be8c3b9c7e09b4660c3b9901ee33b62350a695d799b52743d5158c015cc609e891c87f9ba02616ed2d3a1c14aabef101b4b42ad5c47916481bef01b11b9496819ab76a428c0f5b8a69ebb24fb5b3407e1c22e2020341575c7098e63379406c9b60b6a1733c171682b1776719db5acbd2ac6ac4b97aa0a3c8c168a5ab389010a01b4dd01829ee4a402e54e633a229a94cf96e01f72ec4054c13335b89bd6e91e965bc324924c028b433074c9705ac4ca2682fb1b385f058d574515319397754cac9f68cb70022882a24242d1c3f1242cabdaa4d68a91ddc8a22c939bdf1539645a912a33c1d11a5849211d831abc2c86834be35bc3500cc44522bf9aca86988aaf580bf45a5ff7f8192e110e163356b8a52486f772204bbbbc19befc631433f081e8556579d288b3b27c1a8209ecfbaa30a82b34eb722fe2be60534e2f625c0ae477826a9e75b7c5aed2398525358bf0ad127c15915133a32a9add47a72270a98f942807fc59f2420e14365a758c534f289160a65cfb34619c7c9b2992083cc699f554bd64586dcf379605581711d607235c944820cc28416ac761498d8b54193a8cac8b815d7b19a21b02a6d5a737c4984f3a888c0b9e3f51b95ed9430327642a082787132e94d6c26b298b77554e7f2237ac286f419266580697fc9316ec1176c4d763b194c52d79b25604974c1bc899560b72094701709797c5183391a268853b9ff3aa277c707906be0b078fd6619050e14b48bc73f877bee69a3ebdabbb8b2198cf51b14b2cc9abe673caa803b419be1c34b6341c2e83d2013152b557a87ac4fb55c5c86ccbba995492cf960479b044b3d6233317677c78a453d4e247ecdab3fb200c3d2a0564c4100a995c4f70597e498cf0897b507ab35e4587e2b875030303dc2ca8ceb41ae2a9725085c12040c8d0cb20ace46f1936725bcabd60d0b880f7aabc887090195d95fb6ec060b5257ac37481faa2eccaef99c0da37285d53baeb0e25bdb9 +expected_result = pass +expected_ciphertext = ec483fe1e90af388eaccf12f71eee44a9868b9d22fc604716b42147fce466a3d9499f2ac1a601e1eb6a268ac14025edbbb5d02c0b2f8a60a4b1419cfd3682fb6f08d8d62d51f535753b05d4a3c3bf515dfb7f32ba2dbbf491739ae06850b4ff7bf94bbf18395a3f7ba4f504899f21e27f31c58b2389e5d018aa232cbb3287109d52655efc595e46faf0724426fd47db5eb9db222f9f325bcb97e7a273fa1c1bf3e5a22c2b5d3b915f7b27ce6d7fa9086cf92fafb7e0f1cd466e74add460ca84d518ee5be65c64f5cdd3eb13b1a5447b0e3cf1f5bbe40ced8a2f6dd6a76b175d017400611951e2711fad5a880412b1a29bbb3774b432020e93f90cb7643e0cc43b4425fdabfeef2586ee284e02968773fe186facf694782feadaa1d2c10a54d5eb7d274bf47c22c8e7545c5992204760f8f1fd65e26978da3bae8c85f0117e6837a87e2b4239363968d949ad3af50524733291c72585f21c8e91fbba2dac44e6968a3bed82723b9da8b6bf64eb4ed0b7188aca874835bd8591a14386ef6f6a968b8306a4a5e38ae04acb5533c3aff6e36ef7de90b6e9946ab7a1212714efb564e9464c47a1dc0173e6668c61f7fd24738f2ae66708abd047b582cbf5f8b794de988092c293a21ff273e1249ad499ebd36cc7ec6a7a5e28694bc820e8f9a5e4b17eef4dcf421f6a4a872fc3c5aff93e6f2c4753e84fa352178ee1c2defb18aca27c55a32cd3f09c24d0a5cd1eef3c33f8dcb52e0613b6c45f16d4cb2058f89491310027ec1fe23a61ccf5778053aab940d4091fe34b713205b074e1fdcc6f7f95235d46749879717d64d012facaaf35f4326670cd5d312adb6cdf493645056a13fde2b9e7be6e83e09056e6b54c51bee49551b333126d35987d7a75a494bfc8ce611b2dbbdf954adc160599e14930846ada2e76a457d473f8bd2a3d0e4b4db62ec8e4255369466bc9ad4df424ebe5d6727029e512517a68d7f426e5fd3f8c55d4b1ab1889369da30b38664e77e9b8e6458c70c9ba6d7ee3eecb61db33b71eafb21544ecf68a22b0499912ece6db40c6aa0283b76446ceb8388a7a6929c100b4f0f333ca49de2b1e68495336b70468a43877cfff03f30dd306a813961979ce3118ca0309b4c8be667393e9de346b2cbd730cacf59a2499330e3b0c7c8ddc284f9923ddced65f067bfc7474a4b673f6e1e0a39916be5cd05e71d96b797dc9c072bcc2a4f6690d6bae6594d9ca5333a7b8280150f0debb5e0d2d14a37540efd2ed2691d487d144c42676d96bc902168239667ff39a0d5d82b8ed9af5f79a972fb571dc1b47dca3cecef6f3dcbc045a730971b9e417ec682cedf562e4e129de4285e590006ff03158f4c5de616b0280524c0a50898f13d21adb49483f3dfe51388582e4ef2b3776ae8c2ab36726461a7bb404af15745a751d48c78c3f82475dbaa0e634d4fedcf2714000b16857d8b25e71acbb407bbfce4926cfa5d527e90798c58c820f7052a7dd3cbf506d63ec499e953a9c21cd8144b3da89b6f02a04b32e6998c +expected_shared_secret = eed6ecb831c881508f99ea115745448a7b312a4fa97f65044ebcede172dee2fa + +comment = Official test vector 78, seed: "6a85a61dd08c0733fcbc158abb49fe0b0d96a50dcca140a2e9f5a254f1901985844613b1c656c0cb0112620591b88ad0" +entropy = 0f81a5f97082121244403da3feeb734f6084b314b8d94beb11627aa6ad1914e9 +public_key = fb262aa9a031e49084a6127b8410a5a46cbcabe6b18f607c97d4af6c6a598a089bb40c1998d16cd307895035b15df2c34bfc05f634813eec780c96b83fab557075cde3b64eae6ba98b65106e729b81d11c926404e99164bac5b546997d2a842f6aa9ce1f6bb7ab7551a06a3649e1caf7872ac675cb8981a124ca05a318bff9a234853821a3036a86404b0f056491a5b20ae09dedb123df8b4e9eb612a00207c6ccbc580373b0921fe2831f50610340865232c60660655184d8a0867a47811b88bcdc4e6dec5874839919188f63740588ba97405bb1ff2925c1553188c0137336948f7809dbb96d2f910a9c0aa95d49267e543057976e3dc7346cdc7560e68911b8829d37bd0eb20dd5e2b0eb1538a98a76a68798b5469f9dca82a08648a2da13bdc1a9b52a7b6f345626bb691aeccd14ec20f1c252b4fb2595474b2dea0edda47b87cb51f020072d489a2e79cfcf9a12b52bb4f626c35ba4c0888c7939f38e6126484a7932f5d6a029e1ca5cea27d729065d7137bb518c1885a299b58e1f6446fdd8449e58a21453cde7ab683bec6d84876cee590d1ad93852885db721b85d4061dca1327179acdbfc329416b23234572901b3f63a2cda36aa65b17035f449af2b404691957c30028f053989c501d8c2cf8a8cc0c04aa59f3b19a98777f814a18a0753a7180264e59f2be7c9f0266b8dc481cab4833be8b3b599818aa930571748d41657256015f68a8c887c23205a6655f30c51084925167bb75c98b8a25b7579bdf40a912365164814794bdb0b78824fe9066cc63473496ab9cea06248d883d1846fc8084d59f05277aa3eec0c3186d68bdceb6c240cd0128a6bc1361467b861ab025309c82183233c37b35e8af1b464331cbe7cc3974a48a8e015a491677567472f263e31188966eb556151819cf52772053936abb0d0a48e99357e558301dc8157a8a7853212828269786919a8f9032e17f9b692ba8efaebb602e83bd4b75160541500779d1907b1159170dea870e6f57f5229222e85b178dab32f897bf45510ead084887566942656357b7896570756ab1614994f982841a525c8ec63ccc8e4575df03be2f5cf96505ade252fa4e80fcff664f6fa8c337980251904a9135abcc509db15a49fe4c6d57b41bb6383b3483ca5f5ce11641f9eaa423c0c3254a508d4319dfe72168070cc8c771ed3e06ce74c93240947a8dab87d889f9ad894f37243b25259153324e103b73c708371400ebf007bb5459ee084be938a18d055af7cc7aa98fbb88a156849765936e7273bc385a1bca94a74368168cf26d8806c7901eee2359c8694b5439f1e82c0a6892e4a68c4858a9a00b1496e177d1efb57eb9c0ae382b56626595673230903cc19c79714364cc4b10891823535e21cbcd45c90d471e684af1fe243e925c848565a1989637f7614c900af1bea9049b78e07f00950ac800ef72860e209c192a4aa0b901090987bf15a2db6165516ad0238a40b0bb233a365bbf2bab2f60eeb8a54771a8d8e5279e2740298563aa2868e2df1be582897c7a9a0547acc2d8933aba9cbd5d937073455489a30e8cc3659c03d37240bff084d77f09dee76b60952221ed2c1aa73b772cbcea4d7a1fd64561e88bb90327b7c13c809696c0e4711ce152577517be0a2fb3d597fa5804e0c106a4c10 +expected_result = pass +expected_ciphertext = 9e87e3da4198c29968ff7e7ffc34af342463c33e928f1269f1f9dd9da05f7e6ccdc1368ca53debeebe88475d7a820be6266995b186c27068361275e3b2ea5fcd04484f981e77e150612841c15f5d3eec0e42ddde5c8dff60c0357fef646c13656e83947706b402f0bf4e7529b5912d6ce1478f9afa10b33e0ad8e64fc0c511267fc3802c21e8b39904ca88e8336f6eeaf9c9588001868fec48c5417e131345431b56db9b6e4468a2d9990106051ba1393277e9a55666916059e75ef50b399a45bb8de993ca4423ba9eefc797f1b2f4e9b10c63a79912b697d36472c3a53666542bbc5614b1d7e598e04d6d7258ee3a870bf3c715f3fbd0af474edb638cf94d4b000d4aa1f84f938f21e2b64b4f5aaf8d4a64e66a39268eb54c3f283c6ab0163b7ccd7a8c830bdf7cb5e7ecef736dc3837f6db70e18e23221cef0d6d2a3a50bc789116bfd1d3e4c6fb4ead0f5cfdf66e2a8c1e5f769595aae06555f0473247a48edfc9b5952bf5b5aef540eef286955347f4e16423dd6401e34000ebd9e330f2d8c801365c62551250f02c30128422992e34ff615ae123fc30a203382f8e5d190ae6e5347e90086351e4adc328f01557addb597968791490bf99baac1b5a4c7c5fd0348f71f9f62d0e65932e621cddf5de6732b182a7549c7d945a8e03857eacd7578623d993e1b9fabc88bdc9ca1007e79cfd0ab258aa1eb8ccea56c28b6da4bddcd74012d4526a39cb7a6c19175717f65fb02b10ae0ff90189c9672fa53fdabe48469a2fbcbcc5272d26f6ebcecbb5db514a53b2fe5ea45a1498022353918e67e3d53373ccbc0616c3f72d87f13ca8660641ddbc8c6f345aaa4e8ea397a690009fb080b70c7bd7b442ab8c5f7caaabc284fa140484636598a725868235a78b91c748c6e5a5c5fecb7bd9504d35745b1f06fd7ce6f7823375080937f81e8d8c6d894e606fbdfa64c928ad9beaaae76cc5f4ae37bd9cbbba7ba34181442961aae39cc534d44cfae600e79cad2d198969c85b66760dd7aac5c4aac439af9c8c49182e8d1151c33803fdc45a7bc9b3fc7ba063dbabb7670b184ff4092bc2f9e50156f5a85fd75dabd385740eabcb5bd816372b869bc1b751bc8db94fabd51c9759ecbecbc0403b233467fc3f08d2c94f1d0e0a6ff92a6824bcd6088cec85771ed9f6c4006d36a92c0aee038f96cc1378821827cda9ab645391feafcce1df8a6e8dad89abd81e87337db2ec1981159bd6cd17f39fa6cb02759939722e53eb0f42cc4265f85ea042027a36a9d77fe2d9099a48ab1644102538c958b7a5ec3a55a4d6291e885086605c07abd1d21b05e3b54962b87a2db165e6e351d91ba33ef882d83cc3ad5dd01d248db82642df1a0ee9175d115f86b1df2e7a3f5d1b33b1f6a41ac0c9f1eb4311c8720687886a5b9abc0de282f5925bccc89f9b779970cfbedf951ab1c7a06e4a0c04d7d1692f0edfc61eed1eeea7e0e3a440daafc6abe72508bce43e8516bc2eb9f7e2eac1ca693863b4b07ad985fae99980ee736d32c69af71b1 +expected_shared_secret = d6cb77dc96f9ae4bf8b2fc0e277935b3b7b7a59f749ff2c08ad42659dbce386b + +comment = Official test vector 79, seed: "7f4a56eda151e7b097cfb8ef980440fff707affba91867c89522ced6c5ff3bd7f5f00bb49ddd615d9361a7e4efa42851" +entropy = 31af9345365549ea0360169ed57daf98cc5444799d4c75d9f1f5d615e9df8a91 +public_key = 5226aa8edabd5a4a5a7cf6633a394b756ab38bc652ebc1bdb728c74ec316d039ac982b118f1aaefec04e48448d45f72b319289691a93a20283c3cb1fec992364ca83226332107704d3390f71e1883b46bc2f31b4242744e0847e72d5645586ad0b8c0fe48ac04a003045ac2d2101b52c7c1d494673bea69766a5adcb38ce3a978209471b5d7095a720a4c1971d94970884f11fa90c5c8b7009e2e1769b382004c93a2d9187b23929d941468444cdde233db3791656c860705b714e3aaf076921458b8dddd61e09ac461e96a1b1e9af19ac6984129b6c8ca9d4e39d70277b5d9a6a4b605f5e0454ac05729c2691e87a8d79353289678490a822c41c52a2f56b91a35f89918aee8935ef2bbc48485bd747cc5c59066b7577739b669ad21a5561018f021663f5cf48e08f39881d221552c846ad789810030326c8530dbb369681c69cc00c2390fa857a37ad81623eed4262db69929353118a0886e6c1ca3d36c65898968eb7c187b7b866f18a8bb369aec780e0033ebf1b0df846cd60633a461c569683598c7744fbecc54282725e337cec503d12a87f9cf5ba6587baf31b852bd45a871abb81e88c8b8a56d324c87a777beaf543ba153a222418bbc57d7e1325fc2a075608988bdc44e276af10ca2d7e52b045514080597a0ff73732789d0f955f93ba77e8034900251416b43e291984cad36c53c947cc954a8320c11424be43283a6dc586a9fb39b2927867b79772dc1caa16234233adb5ac819f1a172da5194edb997f924a827a85fc7c7a8281c98f7a9cee443f68a2aea6001de7c7475b46b55ee8991dccc6527b5fa1393c9107c4d35a073ce29a7ea205a9279b62f5ce21f3aab0838b42e6679000cc4c182504a2a4e81757b7f6a183428786f09c76c69e2d7598f1e5049cb57738daab6972abf6d8bfd2ac7137493bd2b8b5f997519b2026ef38623294b91999a5419356bfe03e338194e471926fe5842e79740f416adae2a24f441ba4a0c08acc175f347ee3b614664496a5e51c01a55b1d2a3e8486cec4c3ba461970868502a0f9553d776514857bb8a872c7f736ccb432b1392e99568b51b9c9a56c441ac0ccbe785693722f90d63a0f78c8ee777236ea43de2583d0e093ec8bcab7c8c6ddd8254258b7a5732939d953e491a6bf310449083986b2a0f236c5b9a300db22299146b9a0943115845f3fe98045ca844bcb1132e0bc98cb54746937b1479dadac5a4f9320dc572ba81cb250f13869d132fa259604a76a5dd56a7543b96c3096d3046389a917dce53cbdd9ab04a65b31c6c5cfa23a2ad53faea3bff3985fdff9ca3e3965989c072f4659ee8914ddda0acf30a64a1a823b78561d5a9304950ea3056f50b82915c71ae0b6883ef319d061464d8050f37c24c62c7693f204dd4b4d74b66dd7526fdbd707a3490769764adbea61c09a2d7f464d7e932705212d6a9151b46c2ed93a7b99c1148f679d622419a4574310ac20941b3e51591ca5d53cff51a6ed2c081ee7b4bc23c8ba8b1aa2924406618715731b1cc404929a38911020fac6647c24306e349f1ecb4e2f530e8f200eb9c0a315606a3e130498f96ad5865ebb4cbb55265e69316a3bc96e51745b02f4a593b796b5951f48ddd5d61bcb3f79106fb3f881087b21e528bdc627a8a1fdbb3b1ff5d83954f7 +expected_result = pass +expected_ciphertext = 7f5651959d131f3dec04f463341a622dbbb71494fb88a8df3c32ba4f398696feeee85b56a6870f77362e5bcce245c5e26e6ac9c8a995cf8b16591a3fb13ca611acb8b464556e1301b742b18b85e79bd8aac5e0c7c69faf37d3fd6c04b22a6a0936e8f3ea4acbabd6e6e1c5254f30061fec7939d165fc83196071a4950da73299adb4797665ab76167b024f7ad115a89f937eed5a9f9223250f54cb496e94509b1368f6ff28d1a5a5428c7f43158fd8b4b962db4e69f95841c82f9b9456999ac0902787c6b94b6327c13c40816afdb3d27f5a5153607d48f79d3dc3a40cee37ef2b255685435af03e82e4ede89cd639c7f66ad44a8a6cb2c6aba3d3362e075d6d11ac78485b6c69c77048db47d59c5662d4ba1462b40d1b7851592a9f442d6ed6e1db0614203a0667589e9736fed1621446b4d92c6dc550964d3436cee676aa72dbc7f47bc053434aa9fe04ee2ac3d37715fb6df7156a3bb5366fc2f50c2082556abda2695bd8b46de24624b11b3f275265c441e946c0b4e37981a4b2229db4b1b04f37fd716e2b54e345c12b231f201ac546386a72d0d2657f5ff3149e6d2981dd87c9bb1e2f067e79935ad015130ffb2186e93fab5be37f141a04ad649ced8f1bd1a5c745a28df4fbf9da9d7650c3cec51980f5bb0117c0c5835eac133f0fb570c86baada7b5d8b6c68fabf9f0c9b76580b512ee9b0d265cefd838bb7d6caa92d7487574d6d4d710e5a6edb453fb3d6227d8eb469539911bc8273524b48957eb32bac6898dc09e8538ea3a0508c860ff7e61580c5a8d146238ea6620be7b435d10093e184ae98228300f9b0ec5eb388953ffd45392dfbff64cff7ebd2f62ef5b4adff8a2dfe16d8d97481ef00ae4cded00e75c6dca982df4c06e703dd6c42ce47fa61cf576cdf11752496003331985b032de9cd03168559d483101a48f4e3febb92bff1ca9a07ffb6e0f9682b346316b567abfbad857e5ee520fa659536959d7082ebfdb86c92ca2189dd74ca92b9af4bba9b989a7cd218cfb3bd58f4cc9cdbf59f42ccfd9f86fb7f68e319753fcc1d2863e730f0f8e0f51ed12b991c8f734b440d7de3fde744d49d1c3e403dd5f5f2a845e157263b514ae72d16bf9ad5634b80f9ef434d9e35c3065057f23cac769f29e2ffbcad8ad08db5b0dd3baa828e035240a5498a87180be4f3afc748da484a877085ff2b2e74580cad830a9e3b98fa6b9db91e902ec2ddde406e1c8e3bacb333be8b6b5e83f81ef20e3bef0a8ffe7da5b0d127c67e64c0e0498f2e117f53e7dc1e052f181b9c8e2320063acf49d8db7645b5222b4a255c22c7ccd050a0c246c9c1512eb6830fe3d93fc820fb3edbc8a6482ee06989dc344489a54ed242cacf6dbe0ce21ec394ee7662dcdfde16c178a890e0f58d6466dd2244881beb22017d0a915a1df3ac4c78d8b67f50748b3937b939be6c36ece06c7908a8fbd9a444da6dc496f3b8acdadd2cfbce80a78e2f4bc1df3aed9eb195aeb01a01714a2c15b28b20460961303a44721b10cb8583f7f5 +expected_shared_secret = 1592f1413331f1871b41ff298bfa669bca667241790370d81163c9050b8ac365 + +comment = Official test vector 80, seed: "09fc004519bcf85b20d25d314a0dfc79e00cb6262a7dddf9c52473641afb8cfa0f5dd5f53558184caae9ec34b459e98e" +entropy = 774ae54093d694ef40b63b62c73e6c98295f606feb8699807eda1d030ffb996d +public_key = 724abfcd15255f0a5efb7783d909031ed02c52a203de570873c7a7c556202d53a6c086899802bdc877bc6a813ab59b781bb95f4fca9ee76028aecb9142a992dd7180bc1c15dbebb66765c5abbcc5ebf764d5234d89a378d5925fbaf63a00e35d568804b973450a045e55c7c5f4907fee390fe6877963e386bc20cbe929c3d247611e346eae401acb972843dc204eeabb043644eea29ba2c1a160b98f0d28caf0677ab2aba362b7bfadaca4e1197f54f03ac8033814a71e1cf407972b3f1d9a986637a972b46d3ac46509c053efbcb9a475bc4055265961c79e1374c2159bd2409a84f22755a1b32e4b604783bcb2ac49a27a5b0b07ae346ac38f54a2943559f02270bbb19508e903888aca4bab72e332285837b9ebb466e5cba74d5ab6bb3b2a0fa26209a97f959c905bb4b058ba8abf30a5a6c190a018a9803ac29d84ba710b30da9a0844cc1a1478c289c32737144812355e0d7589b9ab765ca3b23353a350876f05081f3e4b14d8f66c998b81f458a394cc68c3b7bfd37366ec93113db928e5f9bf0e9aaaeafc619e332a7ef3898a66020dfc64f671879691c023409b53686770f8148a2b6f7b62b6aa42981ea0cea7753599585034b9ad99c9ac8b12872b1a47a088bd8afca2d42093928a4fb770198c4cc50b0214c4c94fc7b62b5e636423c6adb553b138591f6372ca6d53343ff7c70782a2ddc4801b262f220a539181c13f3c3e8e0a0d7191a43a54ab008d326df803fd8757f88ac9bdc8bc75cb83517ac71ff8613b3ba713377fdad2199bfa332b8c22c136350adb9553e3643d0c45413782f3bc9e941965dc051df98738cf50113ab422e4a22759ca016bea6fcba390ed64540112842f5b1373a2847107a43403b4aa5ccae154b9c54831e3911239b79f1fe997bae30a542560fe6647a2e7c4916097fd484c3d040456ea2bf8b63dbcdcc8577b7aed99c05fa28d468272876b614045095e918600f7c94bb0944f62235c169b58789ae8bc3e6f677ca8d238602399e307553e235d11836be120b3bac41b0a668e0841ab11f49e27aabdfc27afcaabbf542911b6a220cdd626d819c44c72556a3946df86c43d1b8693944d399a3b5b1309b9780e34330ca387cde8e4c9b2d0775a962f447828d6295873cc1629777fd93c062098b6149a3e7c383e2c33cc3fe7730537416fc1adb6c09f4caa736e4c796d2a97fa3807c9eab72993b4b876136b856c7bc75ad054288ef491effa872247a99aa39a9c2b7602027d65a169317cafcbb77c37d89ed32489e3c2557998a06689b06ab96615bb5752d439da446354cb0640686aa794444a806c31d721b8c6b820810a5afc00932a885107b5f968b5c8ec98207293d8851892a01dfae4a99832326e3863bcda75190c4a487b46e3914b702017b1b520ccc30a5c475fb2da94ea217f76556bfee825076533973bad3ac7305b5c764cd040d723617090af4a7811e9ab206c6a331a647d9385a5e7d8bad6c89b390b617018c4a0691d262429bba173598b37d7c245452853506437e756a399670ad8e292b0d820e3567047c82870e82236389d99d678cd9b49526aac30d1b830b12f4e62407a59c8f88b7b5d088a2d08b9f114c3f158650f32c682ea6a76cb62d3ad7357cc617d597a3dbbdf515f6852d71220768859d599bbaa +expected_result = pass +expected_ciphertext = c1a71212d3e37d620f58b896a7d06bb05b206b6d84c0ed4b08a5c55d1579cebee866e8f58273b10eb698f9769ecf270ad900ee8871d8c89ae01c90228f57eb877f7f6ca888369ebbfe2efd2509ccef519f80b678d33c6f63cebe6e003e9f63d36dcee6e76663677ecf437d59b71e8fe106477a92bcea414662a647be78bcc02c65836f83e0111d4e2eab9b14f5de6b940663ae6edc3cae8bc090116b84ea78ec7e8bff76d91e735280eac3d40556d4389d2a7c39720118dafe3c8a8db614905e620b7b1abebc1a0b17590a25e30cf46abee0c4cf1c498a1c81a68e22165c76e857b9f6fdf4a2a4e3414ed47afc180351dc441c8b3d534703cf2f36f630b1416c12557115dbbf5f0ef3575b0115a9121749a061e2b674d0336e3ba496aa54f376bf594786d5d6de95e27e0615b67f6c318be228f1e89afc8ec7589627abe3e024224b85d9b11542411267ae956a6057ae955ec9ef8848c9a300ef227fc0569531d233713d83ab84afda6481a7ac32b4460ac0df8611384c6e9104048f7fa8f5d6c0bc9b55f52cc0e733ed6b21efa1067bc86311e929e991ed38e5ebd2acfe72964180e775e4abcde3106bdc514f8c47bdf872ae256346dfd90b9109e27f4eceef8ca436c868aa56a9ee277f8152e10658e8643326e3b619d0222f3fcc3ac878073f1ec5db29bac0da0c55e1ae7d818083f3fc071500ad6aad2e84dbf363664b4b54c88cb4598121e45d86367e215bc6a436d864e6431aff34b79c4e6617e9ce5599189494b9cfe0b87d34727c2839b6756434ac84e83e0281dbd8048d2b1b19f831faa198528245f77a102e1b0bdc93649219cace43d961cd86eca2fa1c77b65f2e5cdd785fc5ab7c237d8fd1181e598c4b8147dfc597df9dd6855eebb3685d21c82e9e80707c65c2f84cffb4f44abc15d563ac82e8fb46be179c01318d112c36608db929260c27c280b5e3ab11901de1e15f41dbcc578ffee9a1bed3f31ed3ac49527c442ff392044c98e6805a82fec28f69904e9dd99eda5a473590172478c1d637c12b949a7f6639a86fd8548e2c06fd9b1861c64cf9f9f3a0ad913a077cdd0305227e50f2e38bd7bb726ff7408907f71e68427976104de4d2df0e8e21f4cc601ea968f51a933383f28776d0abe02b5680562c15883b6ebd2fd5a6db063546e13c47036a657bd80b9dd917227a52f5b00b66091dde66f950617c9ebe73a0d464506bb3bf89d6801f8803e770e424a12500ddf6b8fbd45c533a99ef70c42788d4660eb5968cda54df25a994bd2c92aa5ecf72282bfee5c376a2391deab3090b292dd574e630859e7c2a866ec9c557558bad78b236460c05e0fae86b9b0e960974b340ed31ea35ca171308bf54d40000adc56d8b4ee6d10c238c5390dfdfa034e28609e95ae09d4f431c5b96232ae85c537742b3068a4059d3e8894c41dec04d87901fd25a78015c845c858ff75d15cb8c1de7ead6f1487d2fa582156a24d254b6633b7a027c61c2cab286ea16dd9d1799c606cf4102d6455740868fca9ef583 +expected_shared_secret = 966f35c6bc47b4525d9af1ba350e8f44ea448cd1d90cf4e9c55ae5878920b7cd + +comment = Official test vector 81, seed: "e3c41cca6f04cfe7732fd54de30cc5caac93e2f80e76aed7d24a962a3969c1b6a311459a3ec3e510e3e9b1e4291d4d7d" +entropy = 9f27a47604ab5146caaf0aafe6d149424f8d66e39ba3baf5e6c73b19221b7e21 +public_key = 30e92dbf312758b73beb83625df3b8d5c47a7a334d4e140915ca1401d461d7052e9ff05f73a1598dc9622c324c1c8b5de9b0386ea3cd95b86d80085588ac69ae310be6b5b5379202f4f14878fbb5508907b99490e4191b1e13a6890a9209f0a12910a3e096747eba94a337af9e609da4e8a9f8003633ec099983b8e778ca3d72bca1c19b4fb4a0faa4459ea06782367580b7aa49ab74b60c4cef7ab3bb9ba081227a7e1ac2f5400f8f7395f96567403b2401a2abb0b70e92e6ca2102c597f496cc8881d7b688861c7988363112155b5b88271072a7a7d68b76036059ca5e402532ce8763c52ca237a334832832f2a49be3907d15852fced4675547796d3046535390d44580c24bcc3d67a50cfa2ad8936d46121a7f60179be7aad0746e8a2c8cae124d27181a374493da6a68d47387a44460b39a45b2619f1d29b08ba4495230470b87bb926279eb760b9041632317c4d7a19e7753458dac07eb73331d808ce318555e1a2828da2f1d101cdc9b8363990b85064f63226c36c71061444e17a28c3b56332bab4bec2602f5c31394c870dd21030997564de52602c2628c41cb7ac2388ef35371f870a21675ac522660268a1802a2e4ca4c7152a9776410910175fd08c5e0307f4c2a61c877abbd2185ce58738fda15335aba2c77a804f94077a777fb49854c7a78462263e435a1d7b4a5205ab879438a91eb60397704cd937e66c7310625a6276182d86894ef9750f1817d85709bc578092d3b65f5c84514361264909dc2147ae6f3a577097e64bbb2c679c845d827b1ac393497575e385bb39563e125c3a3925a21160201897072f03f45d6ba85db7eb1d5b8ec7111dd785ebde07056653507e967385945389493b95c0a95827583f01dcd473fd3138887d3472e18b24c1b7e2c837668fc6917175471f3caa1323a34432b72c7b68f658868a2ae87306109b1053ed2bcedcb7037ab72d8c2bf48d29a0822575cc91ca1e5698286c9b19a7471a5b652f6a900659df9183c76417f0fc89d743aa635791d588cae6f650f3d314d65a6ae81a935f38b964f290be7a1a75f256776f17383f9bb9f9203415622b60b2a152a7ce3420cb49c3592ab8aaec009a237a12c2c04abaa08a382622dc84a053c94881664a97381ab88ca41846e82c02e00c6033b4721db29b71fd29069297a2cc387f2aa5336816c66e75b594bcd144171c3f7ac6df8a9a10a71f35b39a3da7d53571cb33860315288c2f7843e855d27db6f27b38940f973b2b063eba12b3a8b73d46c6781ac87f44c91e982cb27e534161212b367ab74a318b0f41e7a060823f17814f9a6e4f5a9093a6379fb0291d99916b15abc596550f152bc79703f1b0393b720cb85a510d4c9557acf3e620cf994c0bf8c06c2606041e7c3ce6044879a7612c3a2fa587b1b7676b956291a7ba5a78527a163ae08696c7c881076189bc1623c8d360c8d85c287a9c0c6965d0fa315e2037eed604084416fe31b2f01c7678311ada765acd7f70de59a9a85a8249205c78cac786aac9a0a0a7352b18f9cf936165a9c39d99aac7c175a5025f1c66d04354480175fc3249930e66c9d06aa50e7adfefab6aa9c205c1507a8f40512a45cebfb2b39f3330a962ed717408e0934fde42a5e1cbf04c80f37d7dfc7eb53a785194c4a1232e61c37a5 +expected_result = pass +expected_ciphertext = 8111151e8888872490f4154b113ec0c4ebf57a28a670a85c362c7db91f1024cf7b6ac8030cee1081be1531a8af52275a3b94cd0647a949a6211ed50b0b362a034bcb17829dd73864bfe5ca9b2364ae0fd13e9824f8fab68922e937d2103a74e170c6829446e2fab2b7149bf2bbacfa817a68803e6b70a17f7dc65401f6a6813410887e4e8a784bd2d1f492c0052152cebacb091795ca0ee732486c992be11867f70789385adf6c0d82fcaa8eaafeaf706fa6434df3896d859e07d94cc83ca41e691cbc8cdb5f49222d2e883e9c900362476632b102761aa641dbe498c090b39789e88808dbb3ebb7fb7ee3389401e754a812766f7b8525411af6575036714a2be871754442b958601c1b2318b2d381ea5c852b31e1fa7c8db120482048181aa13014c361baabff04cd155e23c16496aa62a65e0ab8eb1cfb2b594f1714ca530f7893e89a3192ed2db714568e04d64fc8358f0735bdbf58570e179492365c1e1316be77c0b2e2ba15f5481c16db022bb314e3ff0593a3159d28ffe314fde190ebbb779590e29ad69136f695750a7d5948132b4e1871ea2ebae888942ac10f3d3c7a6960bdca579b43f2c258254e6ca45211f37e6cc324c646a51cff077271b959c7d39334e1617afe1c6bc54d0da480a5ed7b175d4bca69d97aebf3b9e399b1c498f985f2224f00845a8d78ead7b81ba0c324c5479b430fd8c4ca9c63e2acce7252c1b3530456a572ac3be23291437f1d11abcbe67a8df9ebcd22019b2d54cc3a939c5c72dbfbec61780b3a47481677c069197529c0f436e5b94abb7a731e6bc0622739eb6a9f9e3716c1ae50850d9f104e1193a9d3b05c2fef5736a5078e45b233c4bf9f85521f4b8a663b7a1fd63faae4825a47c0bbc2ce5fec7d492019c7315ea6145e53a91057c0c7245cad154ba809d6d18660cd9195273a83170c9add780de366a4e6bcd3fa5cddb4f84ba8d638b2318649417dcbed7936397e1850ada27b7ae967e6fb1b7a62721e8e70bff0d0de1959ec2978943feae4efe55bcb5de33ab5b71d6cbbeeac12af32c353e34bf53fbc05e1a7cb431a808260153cedeaf20da4a087b69fef49b05a8eec70d85cde26b8313eefff1a458d8d155233a54d025f013aa6cd0cd3d54a714e19fc5fe22aec2557c465144eb9315e2f1b1534678196d98c2991487c29ab085d363bac01f32d77a8d9d1ec055fab8cbbd68c8351a7e62bc76b860fb7829ef3e19c123e60991046305afc39fca4fa79040c7a22be2599749a7fe847992a7a588f8df9407e3692a34a52a9348e3bc5ec05120d5f0541083893eea1f967dfc45ccf4951f613c87dbd9cb3758f4ed4a46af79a11d9167fc931f13bf9356249fc2e3342bbfe977938518d6f807a7c62807e87a4dd6df7d3b205fe5f31898105b7a536aad8ee82018be1c3c331c4dde0b26d8b5c5c55e872f46565576088eec6ebdf37c8b0c36c98f9034ba52b98f225a69e0784a1ee452c2e318a098e634b824ea59ff3d57aa5b9000759cad7bd2a4db030c53906b44af0 +expected_shared_secret = aa333af0226492126c6985130ac7df2226a64d6d5c5314ce3f7a99add6696d49 + +comment = Official test vector 82, seed: "373fdde922cfc416ed96b444e445bdd0962e8989f6c50adf9912a89937c57217d3600b06c95440448e3f601ae69ca5be" +entropy = 90044031b7597b5e60a4f946b713e8996d0426d2cb013243d9b7d8f8ef159a0f +public_key = be0aaff4d255d72c6e8424c2d5d23f0aa4c28094691ac4bf0f56a51ea4799810cfb024c151c35cc3c6cc90a41ab964370c2bc953a84a73c87a02813de34b933f233da28643a93388f944c033236372fa6e6aca085b598123f27122a40074a4af57684d46398e5d58b13a863b0b984e224a7ad52c1c4eb26909451dcf2a15dcb11ac4ca38d93ca350078138e0ae87f1390fc9045eea420260c913c6b54dd93495f31aac32350cd03500da308fd8ba0777c999cb4982c91e569a1c52396edc506ac7cc43264a05cc880191501860f1a32f7760ad3b17ff693508339fcfc05fae095c6a96c1e6864baf147186bc22dd882620e5a5f4516df92b8b715394c5677d0db913efb25459d6c636442a8ce22899f8943957bb2b281a8ed14bb5d0ce6de3086ea8b6165798619b2ecbfb22727cafc6409e23088c6c940c23e86a603788c07ba89d6badcef07d79174acf70c55b7b30c067bd8202a1a70998459c54384196f814515ec9c7f360061270090ef37ad32115242c2aadc0121e1a08623038b311982c669de3dbb1c7789530191b07a947c9637bfa241ed35aa1d03c81f0d70f8b95112a3b1b08b25c34dc7e1d577fd30a808ac574decbb51538c2a017287e62128f32afb0f7a73ec8831e6b975007592b5c652fa636c7315baa474f873a5da2e82fd146268dc951689ba83e046c0f4820447c3b3e6c78cd240bc4d21e0a4660eb1c69402b617b83057874122e203bd6313d7874a987f2987599cd4d7946e50665f7d9a80651cc8dbbbc4df605f48274fba0640f8609b6554a7760856259c32df00d3056aef65436a285583cfc9d9a644f66e382d4907c6d78aa461a2b6ba8887c238f81d31e796a675ee8b7a598afd5d79a0587965420a2e9f2782b71331737680a499aa759824d11acf1a001f9a5865b6568ed8a1f4f4cc38f74c24e231965e9830232924526baa377b2ee933a1fc4677ee74fd98a0881628315aa95085c7415a1a51a98406fa345a69802ba71cfc885816ea30fadea0232b13eafbc24b84347124bb41f8c663506665ce4c3801b09933c19675c1f9ce54c418207b69215c91b10451730de65a4aab6c97804ad33c50233f83599133510bb334d9c1f4b7970087700ef45500ccb31b7933fe74a346aea4c9bd409bc5a186f00bdca67cfa8d041dfeaa56547a71c35cef1b664629ac9d4f431cfccaf62a781a4bbb2adca7a7914627da380873977e6e1a11fec0938a3a886e9b328a8a539557f6c700285693266742f779bbe2e7a0603060673c7be9591be19a57a0cac91cd1c61860a86356b90715886acac2306190cff686883a61e56140f64ba76123c1b07614ff5c8a4b402cdba738ab68b749c1151da62c30dfaa3bf826d4848c4910c9ea20669735cca4df583e0c5412b610bce816fd17ab9c203a7ea42081901c8cd78940f090efb49718ac90ad6a101093580c13b5ffa0ac0d7b094d913a9ddfab03f835f79173e966746c69a0228d06a2c363e94522ec68312cd312eccdc688c4a88f6a5b7c3464cb7ec842fc1377359a162032c8c504105461936714f451481d8a4942d1715b6a65583999b96b0c47a914f2f721f5ec6315c91b009e714f6518bfdc75e828256f25740c91e7efd93a5d7db1850127df85b8f086dfc57f1f62a86d6ee7e45aff3f27bc1 +expected_result = pass +expected_ciphertext = b13cbbc323f152b23a9715d1e210086445587a3a62a216ec00b74c0026982b21e6c2fd63d059d5f001deb171703127d47928a6cd9cb5093c3e6dab85d8c36af2815563817e53ea71610b8ffe9f6d969f0515550a62a7712341fa7e3a98b4823bcf0c3a98ba7976cd5ff343aaf0e01872718010bf60f6c28ec3955539b117fe8c0b5e59021462f4f32e5253514d41a31436190b9b4cf0fa55647d71742893a7b83aad7caf98d5bd0394c8ae4ba6dc192288b69e0406fff2b0c61dad7f474e7a3bac1cd2dd2c96ec38521e0a3a37d807d554316d7f2f998d91389aaedc370845813833f147ad4494f7aa59899a9b23be3daec4d79038c746728021e6b341ce04c2904b323224a8eb48e6bc6f81bcd2b3484c5921e2e6c243e1d2b66593144c350ec5ecd7a5939527bcffed92ae72d7e1c71aee263bcbdb50e5bf91b276b3fd2582a8533c4d2088d7d079d821b5f5b25775d60b6512b8fe64d677a67118656ac602b0033661f6fed92237c6a078f037c3ec19fc4a9d8f0a31b9ae80a3e060868b2af0011ee08afffcd0b62c17d91d96c5eb13edc7adb97b6a245d34585094541b138de269f38ad87a3edf3062a24d551d239fd5c409b038b45581fa8529f64859cd5091094e9639f18bfc422190356b6d8bb92368fde8c670d053aff96539ff179e7c8e1385e328b070e9b1e40174d7344e2f552eee4eec8ce9b6e81ba9f67782cbaf0d187caf801d0fd4cc66e88139698eef60638763f90c24f5d072f6895f1d04243b4ffa6fb106d6db627b5e0fddf2452b383f76020ac14be23977a17617666bdaef26bf60ea597407ece5668f334290edb4abf51baddab112fc9486ca90048bdef3bb79a18bc6ce4d7ad1abaae3e593115ffbbdfede454943370a7a5f58a47930f82fa7999a8016028fdd906be7bbf4a21bf4f4851278515d3d18ebac857326aef3273a82a7a78538f9c4a0365acbc61a0cecbaeffb5f66efad5d47b78a690a7aad41fc8c9787af7c09f4a5fb38def3eddee45eceeaff670315cdcbb174b4fa5f0a5bbd7e2d8d65f0b0862e141a9cf6350e6611cbc5ee2ac10d1ec3debafc912627aea0607c4510f9ae4d8ab076c84546a0e76309057fc66e4813bde218346a4fff9e026446dccb73225308605a2ba9b552db468f43f22d81b305bd255f59e4fc62a7e5e0c559b839e2be1a875826fc22dfb4f57eec3bc7cc45064d7438f2b11ddbd319c9405a5479ddaf567c0e6ac8e8361350ccae87e5b2219b6383bb16be9aaebec1df4f736ada17e663afd9f65d68aeadaa66d74b4f8828b14f33466d6ac3173d6c290608d449b493d6f45f9afb00fde8e10007b367596db43f5a931fc83c3e8f5cb3aa218c25b76ccbeeedc17bb1b08f0ee9ee08e380d663b482d39cfdf5167a2b862a65107471852df5f50591212b42fd3942940f5e8a8693d107306ac7b21e4562fa2413b08375c92b1d73476d6d67cca6ac3776de360d3da5d330f2e0ff9df91df9503162d5723fb1bbe2edb8e04a21dba70bd868d403a2c42bdc11 +expected_shared_secret = 9535303e6035e30c6605c9e0f10c553dcd73828d8525cb190fea79937e093331 + +comment = Official test vector 83, seed: "16bef67f7ac3a755c59c816478b75fcc16ce5844db537791accd1ebd49d2824b105fd2e970f728c8f0cf16e439a9ae2f" +entropy = a7a31e140891ea37d2b6424b59b1f84f89220f32dcb73e037eb912b389d34a48 +public_key = 690b34b6586039100e84215eddb39ad2d40ba9f80165623122a2c5faf3437ab0376894ce67397d32a67c3bfb9761850c1c68ad988348725c83a378143d504400f995157903b9d04ee43404ab2cc7c35b8e0e09cce4559945f5640450703f81c35ed332746162f7b8328f78bfc3359e7c1b4fcf06155fc745c70245ffec09eca957c8475c62b05bfff288a5e5a5c78206e48c3ef373658859c3d9636786980578c07b764641d6a87222224557d10436fc72b563883ecb0934e50b6ec89429d7792ec0bfcda416fc2ac323a58df3fbcdb6e023140478868055251b1c09fa023e240e109869c1d2967f598a529042d9859f97cca2e85a635418707b3aa1835b77df93ae4dc53f228083de6a04bdf58655c59bf57b107987b88cbc001e010b9c2458bdf138288190f955b62c7013dd5784c809a7b1a29f8c3c33f0311a555306327392ddd44ec8f72fd5893f56f58baf207f9ee98b7e31092f761c390763a8b57409c7c5c665a913e20c9b62a5e80646364aa8e3b95030fb2fb289991b8637ea57c7b324a25e0389ce979b5e816ff841456261bf042c85dad84f80d788076b7c69cabb8e389a72657d7d63949657b934a468516c36674194df1ac3f595a294c28d24c26e1b1b5af5b542e025a182868e1555442e0b0d064865ed5cc1665074e55aaad601779e591e1ed2ab07cc551437603d24ca743218fa846822b2857f871fa26834e0422746a6c7dad256bc0b4bfff21bd7309482d7669f8857543a0436140ec684c959d26f2f827a84b37534b7aa3bc0a08163689f01141b511e7d11a316d2aa7d73909e889dd000c20e38667da048278b5ee87188607b4210642f5c38866fac1549637c600c8be8c60c11aa394e8344b6c6536e687ef6dabac397abf1ca7486f6ae87d8a3dc8070b5687f7c6a73225b9233685c6b703d33677998c24e40a72894193cca1c5acbe4a133d85a6912587ad4ad522214974cbb1f877e16164683021ea9c335d41b000cf52a3ed45b2d95b7e2d061b5213db4c6bc36d76df5db9ee6984d31bcb1f6757de7e51871f1ae7f388c5134956d3286a49bba39967889c9a424772bf5dab014c94893a4c8b74ab099687919243c7633caf297b2b73ab15df419f6ec22d15a95553831be379ed0489749c495e3b6b8e190049a8065dba8933fb21ba3a751cff289a2e2772b06a4687338ca88c0eef1488b848afa1041f4f9607eb18bc0650055803041b728f2f1922cd984d228096ff29e71f097921423cb82254c40a615240a2482a3f5f095f5b399a8f9addeb6b726f43e3af64d09038cafea26686caa2ce2194cba660edbb083f92dc2a51142bbc922958c86c62ce7a4b3a4c95240d72244a912c3c193485208cddc4514495b35863cfc6cb41fa721a78080fd7ba72669ac6b29accd3b832d35ad70f7584e197d695b78c832000c1c337fc019f0aac04b2149a469420c15b2daf5281dba5dc3618e0135c043f139cc74b14e7451fc11328f06b73f124766403541131d94506628c30b7ba68564179faed9c9d2a20f3b61793a33a65e92b699a47fde974eecbace22690273a757da903a886778002d283a819cb1ea2d34b8462dcab57c85653e363629d9270738434ab1bb46bb71890031ffecaf8fc027d2dfa2a4ad271dd702f055836f40ca137e5d0ef9 +expected_result = pass +expected_ciphertext = f4245573118edd0abc115298abb1c7c118cc0d6a4365febfec360b289f244e1971e472049c9cfcef5f27d6bb6ae106138e1b42573f8dcfe10e41c49857cf586c8e1fb88e14e4e96c51d7a3775b84c38dca2361c4cfb637caf53ccfe6789ff289c1771b68832d0b445b66453699e534d81bd7d9faf248fe49b5e1be19a5e49c837191aa8ab301cde1e69b49481a2788c1aa99eb974ae2dc0a8dfc94f14baf821ef4cecee893b1c296903412c48a4aee3b1eea76370961fde96f772fa1b20a3209299e2926f76605dbd256938a9069c2564ab418c5343cdfcec02ffb2bb5a422615fdbd12a661a067e38cd35b86af9e18537e3c1f041b601e1c305ab6712d6b42ee2248f985787701270a51b052e32a52a4d9db52f1f9a775b387b0c4dccf4b5efcaf4e25c522b515cca2ab912b2cf07b7c421747357109205530c9927a3c9b639c7c473a991459f7b3391c0392a63534b0f0e604a969b3da8c29969301d8be3ba068d9a2723a6277334bc651f906166d78366e632b686145a0afd0b940221a0057274fb16b7f74fe8674c2c59199ae2f296dbffff51082655c19928eaa3bddce0fb27e5d72af612c7484d715c61fe11bb9d8b17b741aeb3b14e501999764dffca386f683d07d1b1e72329c7da38b029a970cfb1a94ac74901e07d0ccd40225ded0a778870419a7c3b32ef6ef05b1419521006706916f7d7663f8603b62e7396e047e1fc78661d7d6346623ea28e80510ddddcf918e2b985180a1a1c58ee5d40bb0a287890c0344d3cde39fda5a8c64a4e4c906dbcca97b593918ebd9f70ab79412bdc4ecc3417eec3a26cd5854b479d623cceb9129c1ab490ec98418737e5501f1fe51299eddeb86655d702d85bed3c4ae44ce16395124706cd763c80af32464504fa0d267f6ee03990b57afa2fd3a8067cd5d34b92a753bf9f590b506e2e81862cd7bc617bba82027bb9f900b55c7fcdb11485904ee2df24ffd095fdd05c1eb5d2da47080a8d3ec103d5ea7d516e1fc59bfb4f76591e10ea9e047b082b9fbeda25fdff8a946acdab298ddab2df2cb3d9ee0a781685b3b47d97009324bec36e9ad95e615fedd28505b969004b5a49aa517eea6d20ad42af18a46361df1caf9d3663fe5bc9d043d407faba0515fed3b6a615b03ef11685e4657dfbc165f20df62644e62074b9d86606e736d362b855f31402f936a2cd8d5cb96e3c209b7862b2687f054306b106b3b92570ce066ae63de2b1523590c7fbc03fb516d17ce1e13ddcc692e15f2d262b87688b9334edc0b33bbe4113e608d16c7e34b23bd3e854ed1cea39cd2548edaf85e1ff413c2afbee72cbc9d6d91ea2e98e4a1afd06c44b419b5a6a75579d89917e828edbefef6aa33c26489d7cda35e9c781b7ef5e41601593c4536aacb5cda2d8b75655f5c807f1e555da5c1415076ab0dd8d925ccd8e9493ec4a8185670d335bc7e348d8e3af544b17beae9d910c3de0b9ad5111dac9e80caa2d9960f3808858cb7be6151b76530254e8966fdb2b27cef7b7b941ebf2716b +expected_shared_secret = 0caa79e0054182c15e54159fbe36d9fb09481331a560ccd9714fff81db5615c4 + +comment = Official test vector 84, seed: "d0611f9ae5be4da5d7eadc9109944348e716cb3daee545721eea8c892e7831cf2e54603146454cbfd92387739e9a78d8" +entropy = 70eb3f791faa91f1f982fa477dbcddeb2c55691c07f93b04cd31b37544c94b42 +public_key = 44bb530c48419abc7578b33d6db56c76179e9da3808ba4c8d7c227ba5c64afd5c87e01c1ad12a294758f45804719dc7369950e9e6398bfcb60a7819585a689462346aa5968dfa83bbb3b8a51bb59311c9d100a4a0c7586056201ffc3cbd92c3a42d6851ec064a89227b4d1551ca7af6b5b3e892b4e44571669412e4240a08c42551dcc50086389f9e0c0290956b5ac58844a84be308d0a5562b57b5cbc594ceae87910a13167f27ce63b822f201af5e9c33bca746ba7c5e8541fff17324228321c7a0ec976646a6b5615f80fb56351d319b31960aa8823426682a610652652994d4a78c25659b533f5b40e6236a6e704cd891502e9c2d1858ca64c94d3734ac0bbcab2db2f9e03450e721a38c82a4c26a487f006e1966fbf8063ab115e74f441837506559ba5b7266f62b17e4d959209b657193689a0354149880d08434fbc282713118d9daa89c52186ea918ce2c170d8380e45a32e9f710cd6f89daf91c9210b767d743f61655a9702051d7c8a46f17a681b136c0863cb62430d084d282099d1636c04d6b1ec212a74046d2d8108470123dd751db685a1a1fb3a3b2c216f51302fa13ad73b919a439d424a4ad9e12994d1963b3c0e0316739ce50a1a7c23d65acea61423a5792321a84ad2e1b3f5b595f11637eaca77fc753260e04cec9ccf55d70d4d567bb78749efd005c9525f6e921f0630c25cb9a129781b9b864b7556272d5b4164e340d9464bf192979a073384f6a5e52aa0b6b74d43faa5412c5914524974161afcd91660705659dca87ba482d67c8c1400b069e66a19905b331243701ac8261952c5b736b25290235669fbdcc254631294fa2e97c440d97a0211c35c2ff4b6009aa66e27cc09bc09307c7b3794a5d189892ea60b2b323e95057ff355114ab48613e2760e00baeb82b0a763067e216aab899e7ca06e195a5e92486ce8911bfd5c7d956318ac3b029436a9d88c56aae2a3dc7b382f2c5e7265a037a827761447fc59a40a3c8693bc996ca786fa7ac1bbcc6aa404a1bfdb3d227c6abe42cfc463c2f1542ae418cf4b38cc2c1595f9343d41b4a1967c7c94a7a0ae91cec8235705805af096cbefd0cad6dc0bb5130907d64e76e4be957a117d121d66071598112ea7d02b9648cf53e57af9e7cc3c9803aab327d87c53e41cb9bbc42368d332e0a963c3385c18936ad7483a5f4292b625c844c2282f25af0c86984ddc09371ab555d57de146664faab59dfa514f8bb8d397a987bbc8dbe147efc2a34daaa712baa1e36c9c5113a7f47ba8c4a83db2dc79ae93688af7c480dc8adf0b12d7f5453e669be2d805dd6961454ba8b40c6efa961e53da19eea2243c998b504c8ab9eaa2db11b2f9b591990040954a1567074e69154ad6e618d0830d3b554fe4c99f48b51cf6609952cc9693acab000c335b98126b4b45a9f317f80a6049558fe9d855a026aefdc649d295387c530e075ccb32aaa202171c6f6907a4a2202a9c5fcf252d98328f12f927e31c596047140af9b177e0352b120954d00529a07d6b2bce5026a6d7cba01231a85ba39b1692694788c9215b69fcd111fdc8934a1ba24cc7890eb479aef01ff29161b0a7ad921bb72a8b495ffa74c62c880bf03f0bc175eb865a17ecb56e0aea501bef8e12d3025185ba4cf8edd1b0f297471d58c26516 +expected_result = pass +expected_ciphertext = 692da34419ae1d6ea887c5910ad9c1e027ca2717684d8cf8d73519be768bbe6844139f4e75a63b0251cc9842de4aef1473122681f288a19ce658cfb921114e619de23dabd7db3eb80befd83216eeee6639c589aae70ac2fb8f1b839e953a9070d287e498329e5748ac3cecdc3effdb7c75b860a64ef4a389262959b42070bdffeddbf1b41853cd7c5517a6dccbfcf74f392fa85ba62cce1dcf30a3ed8cf6608381a06051767b3f8b9e836c44c20bf54c4e174e1da9cdba988d049ae0f43f1eaf9ccfe4ad537de224db0d54efc313cdc8a16d356bbca595811f6991f80f94fbac41c45db49892ba56b20256c375b130d64a24fda9c9d796554923418dc18fb92f4e93df2ae2351c5a53566472f57e0e206d818e1d1128abf61f984ceea23df1697561fa48d0d6d5a0ff59f705297da6949955091dbb013c091d200f5856bdcb6166ecc42c36038588791f0b47dcf6dcc7a045487ba59b0075e3b53817bb8544e98a9b60a426ecdabc139792367d99e18611ac931680d59c876fe55954e3cb311c683f514520ce59cca491e3c4fc4b0f201d554f9b7667b19642639db4866c1242f0745d29383a2d009c844d2605e93e9c62d65e1d44b7030d3cc943bf0f291547f7a91f9edf37c3d0dbf1ef9d770e838f626e591e751ed64ce5b94e114cd443be38955a2ab79ce76f28800cea4cb662c1dfaef1985dbc955e09fe1156dd87d93701d05641e65127a96853ec478bd59ce855f28674db4f21188ee0572e3cf0840009c1029edad1dbc119ebb219a37f3407427c1dcb96b4f676979bd77ceebfdc0f89a8f0b759fd19787f3105c98d0797ac038d3989e1ded23fa49f3c9c580a5147d847a9f0048ee9d816176cdedc5c3bd97961687d59794dee37a2a9c7c4e6c8028b48976e944c8d45c7d7f637e50b25e4440263a67ef562e2baa5ec3c978ff8e6c390b57ff082c202272fa7e6bd4e482fb5fe7205dc56962d28d6f1ce85659299cd913938cd036268856b564a154af0e877fdad96ab0a185048cd1ea6b7dc8de79412378126be5d10ddfe4d5cdc027f183fbdd80cd9005250d72b5b2b8d824cb4512e1d15f85f68626ac262b4e169b8201ef197da7c208378a3c5d495de78bd780dbdf8e0f1b55811512fd78c1695f028f386d7bb591dd962b403da023977bb66c4145239e61730da1d91741237a65e686bd48fec1be0a6bda744a16db76f0c4622fca5d3dd2f87628deed85f8efd90f8778b2d9ff8a4150028b65aafc318571a8b954819c1c9bf0eaa2d1aeea6373213513696feb1eef11057106a76aaf501ad784326caf958c5c94bb473ad548b8db8dd508d44a667a420f7252d44e46148e76a9dbaaa766ab0578111ebc542aef2a85c0249893053ec5fc19c4fa0979227ca550e46367fd2e09d018cc894d9c24409b946f6464c54987a09b54a96bf5e672129b391b0aa95aab3903066324ade24b51dfaca8af884369f77dfdfb5e5923bb5a497e721f46a6332a6d6b822c25e581f4190080834b2e973263f22f8bd9708d7 +expected_shared_secret = 744ce1aa5a9c515c6571ad6e2f5985df8434e35e9f714cf3659f184b5db4086f + +comment = Official test vector 85, seed: "fbc38d7614d7718e931edb850d2c6f0c5eea9ee889b3e25bd69ac255d5b91e885d93e808e66bf9c88c655dc594da5792" +entropy = 30f4095015ba88b6d969672ca3f438c395dacf7d476ea7a9e805ce932d270a13 +public_key = 9eb92fff176a27197eb4ab0171211dc7fa954c652698c50105b5c2e9f7a2a887bfb40880f8624e1fc67b1b43a51139ac6025b9eeb60925d424bb82c58b4b617618c43c99b07fb14e5b86538d29700e1ccb4f53a52bda2ef566b20d8cce1d7616dc81398d14abd03964940c794e6100da994d5bc0bcf28b04a8971214e7ab9285515ef09a7b486ecae5c84655c9ee15255b715c3b784d9c243993171c604a3e29450728396e7572228610bb9ac04b06577b3636c137a24e2139b48db005553152c6b040cf0b2408248675eb90afb66d6105537a316c7c989746f43c3b284342e2cdb5f2183a16ce71ab39c67797112b0b907c00f6a47f17db08d924826d526cf88234a25676d82449f93b2859076978860e499a0de134a936e35f06a7802456008c23970818318aa2b55a1762a9394dda7a49ebb4b38469410f5945dba2801ac25ba39a2df819b0db194b53c4247fa5065ff99f73e71d51c22f51fc262dd2809ebcc6879b0d90004da5ba7cc9462f6c822ac8fac8ab95b769a465cd743ba2babb26958ab9c3494d329a0c736c28a9cf84f5c90c5a0594485a9b339212d01bf6910105d44109b09bd063b4f2f3b903c94dc650812ae5cc87527754d476ffa82f34f39b5462006029875712cfb1da648dabace5aa1590b5ccea82c20e74795c71bb70826ef4d0bba580a447693a42d8af3256c64ce327b370ce576b6343f2bf8fecc76e1434d5e448aa8a3b326584ddc56496704be54108f8572170c2bc39680598017641422bb81645959b8092e82a54c68aff60b78be78107e7bcacb241b09913461579b52aac5c6c8627cc033be2273580a523d4cb7979cb65d7056643856be187ddac112799559a87168aa96a18089a6c547e87da949c62b8ea876aa0192af409bfbc354f05dc08fed46904a2688fba59fb71b83031a19bc8a6350bba93552be0c01b73c89964563fe588a5b76971dacba69868b588bb2f9076532d6a8fb4316dda4c85c2945a2a29b6ead3900e50abef2b44375ac36bcb0e028a20cce58353c827f1d53a9a0510e3827cbd1383a6d18c0d22c374e2b6061c2197a6cb094ca9dcb42f0418c24a9cb893c45423447cd5eabb0b9b410c9144013543e5c3bad525377ce8073d4a5f4a22bb24874b7e21523cca731265572b487e3b42ae581a617437348c290f00ad09460aa0c7b6a1a53128e4e01b3c406a296cb35ca0bd0d1917dff42a4848ab3bc28a2a28044c719ccaac45c513ca007653bc854dbdb79181157aa17220153ca3563b21be77aceae06bcd02531ff5b7f5453db0119364dc4e97ac7a495287815b5eb512129643aac4f42b3af35afc1207db0a3194302fef097bae37bf382c154e78154b3407bbd90bb2143bc285af1ea0b1b4fbcd3ea373a077c6107ac2800c89f20544cb7a83baf26ef19367724b1c989c39bcb4337deabf7d531fe2b3327f4ab0f6457c5f3869590c49664923993cb2b0103b8e8a41cc5793acd192a047972978a2ea1b9e354cb135f2ad8928574b2c14fbc1a4c02715292c9052b69ab2a8329c02938bfa0994c209f816a24eb13f4365af2d20240ef66f9bf6b39d54ab5d350c7cb3cd6f645379815aa3028232bc89bb89bfa2c62e351a3c6401b7b384ec61a83f9056f3665e523a0c28d48e778b0314c1ec2a83ee9805d0 +expected_result = pass +expected_ciphertext = 6d7d3b4a4c4089566f5519cff32e125274f9706757ac5e10fd2e3b104025ff7aa64192ecfc2ffaa86e2f48c8afbfbc635b75ddc04d2867a39054d0c3489ebefb7297215a505e7f65d93115592d78a709195f9cdf6a3cd7a7cc1b9cef75aef9fb2bc05136c5c73714d6b078cd2ba88bbe9fb61302e1d0771520509b90163d1514bb510d2e2a0e4e4872e607f303ecd6b9d36bbd694c3ae905d7c9424b604be28ef2e985977a575d778e219dad4a16b0107cd68af5ade5fe9e3ca48910fd2b6545ab2a38fb9e7159ed97b1c8d3aa7b962e4eba2d75439a6846f9c7447685d8208934c6b9dc0a47103fc71ae6612b10d4c71beb667746e9ac680a2c750331d1d79a54b3e991aa7eea7ff896d98a63c7f499f646b349b695d74aa849a4268c450d72aa8f531784641282c7f58f207c085144a1bbb28b657e9dfeabc03ef0784fb4aca22a2fd0678ff1b365b987c170225c6785540ec2112a577c20151dbd47028e88bc2b45723c3b50edc0efc0bafc741c4b8208aeca01f2af5c223d5c6016676b09c8ffb64874616a2891031a3fcb2c4d21c073b5bf14b6e5e313bd252267ea4165b347793de3f4f93b9f269ea07a60548c9fb8560a49e544aff22017ceff150ef44b12dc013b6675c1b709d4f40808fa37a9352dff8d37acf1ac5f7e6a27673dc79e83cae6b1e69fe113155646cd1b6e87e2e9cf67c3f2d2576a2c47a6156caa33fc547f343c51a17932368e1290e0ba91e35482a70c7777eb45a482f261f77cd88dfc4ffdbab03e01740fac45457a6653059975519f2db38c9155a31bafd22c57c5212483bfc55ef9bec51be4860eb574bde711dda9825db976e39f535a7edfae6077e1e1644776fadff2f9e18e98eb238c7bdf35c9c1af1889f08d61f51227387c5b01d0434178b55aabbc1945c78cc4da30d4b799ca4da2228c410bd8d5d4a01a0a8b0530a61277c9db721946cc605d089fd944a8c8787aeaa9f3fc6026bff912cebb5b85923d25cce52e1372b5861957a39db748cf275c4530479b3f0d061ae44599fb392337b2e5f8cfe8a77c73dba4c9a77428e47abc6011cf37e86d8a748d2899bea405b2fe43172ac5361482b69c3b16afeac9f43016f3dd0191f627624e5faff4a92e1853b16f4635b41cc1b256f27f54930139c3b50d5b2126c86121ec72f7fd11d06f728412e309b9df172d2acd8f1f7c1a6c86629e3e0174023e3e73d01379327a59031829aa7d6acf01b22cd550b1fe31af06d91f43fa51cd5b6df75e6081c84875773b053c6e473b8cf1b13620633082a47f1610cd60e64da50902801f0077e65a0d4d2a5467e59d7e1b95b0eeb95db0642ff81c2cf6b76d42e6bdb58fbfc0730a55f81c2886160df921a8c04c6175008743796a4a67494cea3049b8ac89df062aabaab5c277bf1a81a61d4b42000b2fb55b027d9bb6d3e3e984ee595c6a76b66332b9554b38fdb0e93b77cfd9f891f25c7105fd2c1679a04ed526cfa6a26984e19d71b2b57ac3635f233dff02a799e9cdd565bedfca93d2ed66 +expected_shared_secret = 726f7d790df4c860a0b2c40de9d62c85d0ff70c704ce5a1b3f6bf1b3e3f66cd8 + +comment = Official test vector 86, seed: "1722219cb5db47374eb0af0232c856a57f026f1cb09e5a5799f4c333dd422ff6a0a67c4da502faae727fb2d45dafcf35" +entropy = cf31220f44de862e1719570e1b26e897790159366a385452334fe24cdcae28ba +public_key = 5c405485d51fb10cb0f150b9db466c53e070f5849049d225047bc47aa15f630a6d62c5b179906ee6c067fa3384a4c22748f984eb31ab4cd69083da31a5b45f586560371bc99113c44d05828fa7687aa649b261beb0eb4eebcb8548139bbd6a0a844ca1e4e59f3d7c4372ea8632b278a7e68b59032012c5518a8021bd5367557077c9c1b4a50944ea1a834bb61004b2cba7f6401a57839a3cb85b326449a25457851b4a2bba2e2187f040745fb608079c8b59d2b191813d51c5c3f329b1f5e40771e1b33f63ca400555ce5351cffca2ddd268d7855151618587c8b037e7ca290467e4a7c2c38290b84ab8dc4a839f57102dd559114092165b13b130b41bea2f857c84ae45c1734375a3ea91021014d29ac58f12bd5a44b91ce986e094a66089479dcac23a6275b864195df24f2d4a97f1b26b508c3a5bb89b9f0a913867c1294c252d5022d9fc60ffeb3ff3c29b2dd1aa97f22271c5c8e749cacea39f2c637ff4a235882747ceca1d95e093966462ad401510ec112026bf0fbc106270988b2c35cc7269da693a7d67052f9156d30c916ad6552eacaa3ac2396bc56668686ea8a1578e46658a71b4b7365ae56a263c783973c1b63100b1aff4c3feb64856a781334c6e83519e541511b4d581914c697ff31239dac56662a145316ac4d14e522480782c4ec52b1a2b8a85f657217ed11426a2a606c01c17171fd10824c07042b189225d40919aac5cbe05b031689b1ea61041f6091d961a8910a205e62ff21909c6b4095b270d87c9727a2b611118c84aac033ea9cab5f40efad6117f2160a56505fd775d3f415aae9271a9b2b1fd1964edfb772a9c4875f06826a49c26e93f0b1846e006468de71b98ac6fc0f81ab146236739c9a7b6c13952089d621936e8b265b50dd4016547a2abd52339daa0b459d265558a1d9b61c73e49346396b6155195c9c3a437614e68e23143f09fd28857aaea50aa808600f5c5ca33c5963cc00c4b1c1ce2609486ac4f1b2ddb7b06acb62398a32320f315dabcaf5d4a833e2a01a6e7c971ca15e40c459ef18db8452aabe1584412b4c4dc52e6004ca56b5f48555041cc828a7a6da77c435f05574e5c25efc3c6057443eb77993c987cac2363c3030d88e288f4d08966e624794078a39c53ecf273df178cb022a5fb025a2687409a785cd6c019f5761b0a3087ae91844a69c2a89c1a00b1caec7c1f7a67425b87be02d80b67ca6c7dc3b45bf425dfd33dc5a13e7531907ed6329593c333466d9628668b98422c985182f8c0952cbf5052225363398e516d23678b5320a9cca38e21c6be86822c4fcbb9094277bce80992858c5498c6bcc57db982c196b1a78c317975544ffdf33e57a30dd29a5ca4a22a918746fd9a84ee1008db920432e39b6ff182c930243cf350c6f486832a807a36c8a9242a5c39140eaa7a45bace0086a86fe36be28acec756b5e9a47225638659b250c52b564751ce8c42c39bd1046d2b6cda70b7951707b63073f0eb5ea3fc5229f816ebf4007ce97307c6607b4ca17ca30330570d4f39bf76998147060cc04b33d4b91294f85f4a717ef9c288e3741f70fa5823ab8329f56d9d0b05c996701a050a387362db09427d5587e7751131953146ea3591818f0dde74e33983c010419218b08822da9c3c62eae1f2284801b3e4 +expected_result = pass +expected_ciphertext = d1a47ec5e9df73d00ea6c31f8189070b3cdbafbd59d3561ff50a2961820739bbd40cd0dc9183f9dedf28da0dc608b7c0da800fa9ee2b44331062d972cfaf9a08a943f60e4cd3dfb6eee587cb152308ec9c772c566452fcf0e16745d5ea6854a2fd14812c4c08e065464a0d494df56861e6fe82fabb22e955825d303dab2abe42d094f0abe8f10b788a24f90180dc9434b163db2aa4d461566111e6817a92434a2427c365a05232fc31ece1d49463cc3667a92760480857c893a180bbb4b4afa50ca382e9e4cfe5cd3e3a424d5b927fc75387fe72f7e38c267fe94a9cbc12b64141b574c45d6aeccc7cd28ad9ff4563d5ecdba1dc19baa079940d6c71f18819180481fad6025ddb5254e7cf39cca79bbb190cb526c427d15551a9af18c003f92f35c8f8db6bbd27af8e6108f9827332d836dfb5299cf9af20d6cedf3f3bdd3c29d0c46350dc4bfa046ebd38125f4a5480e6543090c4b3ecfb11ae6b31c501d38ae00b21d4889c10d697207ece62b5dc607ed66997bce2a2c2aeb2db1e8e9346456b9bff2f40668d0ffeb8fd3909ef59b7bf2e23c81938502a702c4c531024fbd6265980b2f16c70fbadde02abe62a9e530ac31b2bfae08581146a2c47691c755cc4e08e35bff1acd79cd12dad150e308f0d421dda9539b3d142fa544dccbf9bef3441fb8dd08c21756fac0d4efe441ab6b8c1c21a5e7604914a3181a52ebafdb7de84b0b634cac7cf9c616d851f8a7c3a1e6d1e7362642cfd00870fbe15dbe0fb122ec58ab300e93c65462f8e9fe59be9a05919aefb568edf13e4bde5ecd0b5912b29a044e3f33477a35f925f32d1f52adb91620e8f667d5a55d428737b3fffb76439db79b74e7da3ead61f3c43a13e030cad345415ee18d7415ff6296ab1cd0d306058d3a785fb1cb27a18d245dacee17fe8a0e3aea3299f6d3c211be3165dde7caf805efab878de257a8051fd2650473e6d3ac4eb9233e38ce9452ad85862d3684d864220902358d35027451962ea11492038fcaf2ef3faf3cfd8cf77295e30b7dffaba171f48062e6b9213efd6d2feeaa688191626dbb2fcc89a0175ab32351e7c72005ebae83c13d59bbaf0d4a5f1030168de6a7c76c83943456867435b63fe864550dd99bf934703debf2192d6a1cc1a363e8933f1b5e176941b3189ad53f038423d90b9a2ec584ede715b903f1a9917358bc7616a6d5bfd20c73f98104bf1509aaf19960fa2145caf47915db32af854b2c75abccd0763d06c5977efd369ef5a55df1c3e13ffaebd2a9cf99ea1f75e796c3a6bf38de65fc10aaaf024946d1df9f429115139fd5564682773e5513f2c0ff6838a5e31197fb199284402274c10dc157da502a06a2c610822a1f970adebf555e5832767f21714033581699b1c01e554099a7ac9b31e890ea981cdbc917e063fc162c877c51358431d00875c4270160d54d93841535c582804e1b68bfe87877fc265ef906fb62331e4b7bbceaf9f12f255df44976e4e34e3f5fe186a21b2b411410c45deb34a64911bf410de13 +expected_shared_secret = 68f3e22d1b2d8c57bff32160e550becfce535fdcb327394aabeb60eede263213 + +comment = Official test vector 87, seed: "ac139b78fd16ca0f26d6d7f9e15345c888d857b1910cf38d883339b37ead2dcac30f7cf10176f23ff34b4488eb79437c" +entropy = bb5e65669a44e5d5c709bafa98c16ccba6ac2c4ae923334f69a11543eda64f5d +public_key = 7e395f02d56d41b5c5889bb6b2f149425a2ac8aa06ff23a82841887de199b56c91846392a026b50e87453f44588ee6ad4a443f54d25ecae39aaf286efb47a760da01b6c13fa178811c47a0dfb14110fc6482543e8a3a52abec3a8d7176aa2868b2d46cf68538c27514222a34371c25fe832184206e5abb699d61426027a942581d0bab075a367793c81b7fdc11e2f6772c8040d271be5d07d00b330a6c874b46d26f51db8f43f22dfcd72613f8c22d15c28a2b384051142c148b07f7362eea4771959b635a215b1351f650342d2a071acb16dd8ab50539096f295e44173bcac20f3cb271a8041e3008a742057ef2fb2d78f8a3a3c252f6d38d8e85bd57a75d45ab4dc21b8033992caa623866e8989f98560de33004d3409f233020899340b2591e1a4a0223a79e20b4b85c632ce7609c0c45a0246251468c1b6c20716315a54520c5718f4c5c7066331fc7e953ed91aa5f3b92e69617b29c256657124242ae8305780cc0caf00c92896929a1648be9b47f86f144a3b12d9dd51f347875e6da935f0bd043abbfdc7b85066a7836d442872c56fdd41d9a3a01d9ac6a12531079f74b273ca129f36a7ae463f6464436e50fa70cbc2756bd25234893b50a2898345e588b819c0955e9c50072517d58b0a3e4bfc9832b727c7f2fa924ac672d4d104a8f3ab81200a624c61eb6aa7b4553aeb2084360f1c03e443ab99acb63ac699443a638ba9b8013c7aca95acebc9ed6b12e8be5a6ccc74efea7cefc7a0f5ee18857250d08f03cd94cb4c455141d7aa2fbfcbe3eb896c2404bfa3580bc63b73265581d87618b206caa9468c65bb1863b18f560413d1b1d392259f37c00f7d89124c56913483513006feff89092f218fdcbb8b118b206b64f2de52be0b553665c32831bb4cba3762991716be65e6a222b30a0a5cb246207352732bc3c8ad7a2c3243c62424af222a922787f7fe44df05299da1105f9ebb0c5aa18b6c6c73f43390af9c2454442110aab4aa629c8f300dd38318c43a25d269885f970ddd8ac1e5918e59a3d53dc8a44873eea97c31f34108b893b634284d69153779230c28b2a1636b6b839a4d91b7e23f0414b111f2e7c1b3ed58613120fec37c78308587494233313950d82ce946778e044c3d245a19c29b09a80c3b55416a811af33032a0068c7a4767f05e9aac3e8b99b967f88d5281a38b072b8c4e194794c40bcd5366714525e846048e55c008cb48b5ea0c61655b8819b08fbb88337e20d63003f2453462598ca66181ace033c707c1ae9760ced165596b2b163e54934540c4f7097bdf14d29ea850b95be6fd42973436144270549a81b5f73192c2c6ac2474686a9a3ee556b6f26a9039866176026e25a60b5864e963850cdc8219d21859b5c5c3714434ea53bb16786dde8036f317c430b3bdb025e6b62c097340f1e961b90e0c5182183de05b293a05b58dcc251d8a2911c6e71a635f5179d06d93d33d8cb332c8b835c0e2973261bdaa43e414153118b66c641f834c949e77fcdbcb59dc27089138a2e07a5b40c7666794fd8e6b97685bc4a3c2a65912c35f50a278bbad765c8c775bacf28181d61530e54ae7fdcaa2681a01bf51c0d7a033d6b005893b98da86005381f1c6e600b1787bbbc13a01210c0764a4a2578d4bf90a24704178f06a4e4b110f5 +expected_result = pass +expected_ciphertext = 9066923999bae264f53cf96f4712cc8655ec53d9a692221863ac713b2c6febc02e5b43163d008e1a5a81525dab273757a27c568ab980e5f15dc01ba4e370915d2f77cefe1a1e6fc2fd189e7717f135d9b5ef2cb4097715a825092e022bd750abcd7cb3d6ff8f73918443eafe6c2c06a00f0c65d45dec9cf12626e19c1ec4bbb01bac2a34e02d096be6836153d0802eb8e62c1f4e46a53ec661a304a223b0b3c7ae0799f8f0b162b962ab3c92dfb5fc8168632bacdce1bcbea60a0e88956288152d2a2403c3ec1cd483eb119eb62c5878694276a18d58b20c849bf41f42b1bd8abdbe68a9f0504fc106f47ed36c2b1fea208583737ff02c23470fd81597079bde3f56845a3a444870671c410f7010af93f253c1f14fca19737738923a90b78e097fe52a130df7f2fa622203a05a7099378cd22de5511db73715839a043b17adcc7d9ea75fab128482182efe6fcf9d87af3bd80fdc1afef0a635d387f39b27e73948540953976e66df8672115184bd7719248ece5afa6e85e59bac2415a9c242c7e28556d26ef5a298c2d7b4e80d05854e5d8148439695b645cc27e041095bceafa10e3f049f23f42c4a7bae8b58f031a1885ca2a18f1ced48148e52d16ebd12b63931dbb9f21e46209f6714a092535f454a8d3968fddd8022130c6bb989d0dd84dee9849ea3f75496425654634adee5462d6b425ba4e911fc8c47f98a67c3c116d12f372608d0bfa2d066bd5c3b961c64044a0f8186833213551415b2beafcb74d9b77f59f8b78568c9337bf73449f70c08ead3086c50ad0193082925cce5ec4df8df4b841ac1deda751873d1b0698e8037499fc3ee3434fb72b1710e6294909bdefe9e670cf80260066fcad5d7dacf233af61960c651164c40eed1d08e91f87ed638cd3879e2c933921108a4da065b4b2cd8f965a3365b130ddb2d1f0ff017f6d91e9aac01fee659403e00ca1008198eccc6572f0e49dbd0ffd8006a45fb6daeda45ad2a7ec4970406b44f6f0c5252bc2234b9db504810a15ba85ea28dd19ffc0476a38d0b74856836588a31792ac185f5208ce4ca0d1a5e2210d049a7a38c9b6953e8a4a154a34a15d4dcd1a758e5a03a746ae1fd576cd14c85f09d0bc8554ad570dd55e6ca80308a927515b215c1af914f9e409ae14cf99960e8355d6316297c6b18132dc89ee1a5bcd3ea1623a8c0b974e17048a18081ca47c2a22049c98f0c5c640d304a7fd80089bd1c0baf634b7bafe352e7d57c12771c8c4f944e4ee03b50fa3d4561f615f8f87fdd3f3181cc6d74e63b2393e5e38e71b1fd2a3aca442d45f1ffd7776184c5e2eb5637e31aeb60e547ddb12c7d276304f166c7be9c4569f34209875407fe3e273842b4cdb28408515e69313cbef447234f6dd7fb0606aa3bc42293dc31d1be2c18a221dc650644708dbadc53849c80fc2e91abaf51f869796d5e78c5b53d2ebeb3a2efe02dac17a177aefb0a583bc271cf7ab5d73686fc971db994575adf973fc84bb9ca50609c52a22fe421cc3b6f35735de793ce75 +expected_shared_secret = 7f6085840a30c6b1fb9dca782e0c78a2264d54726c04c3127956f131165426c8 + +comment = Official test vector 88, seed: "cc7152849c98d5fed2813275d32069e44824ecb14eaef425ce017448cd9a401c91c06d0f7eed6d22b7bbe8ba6c429ec3" +entropy = 9ddb3aa9c7905d1a438c93bcf78e3e321813580371ab4e1289e2dbf3701972c2 +public_key = b5d6022ef207e7629736d614527619e33cb92600a1e39a20b25a5b16eb0ec1070e5d566b28449bfb38936f44721ed428ced5768ee647a771b7d76a30c7e5563b515f5aa89ffe994cffd9277b0695049c355267b3a07c61f3c5a2c0d4ab8df76129c19f44f762b51bc0374a43e6f6c1155901b2430b2b77afc9ba4e14d3658607387dbc2d12b99ec0c0b0c2721af298a6ebc92a7e6b97bc460674931e21f68377c8303b24cae8d5ab720c79c4399414a514254603b565397857a7078b36e24a262cf9070a92c034c76614d5ab455b60b3b3388500946677195cd587942342a6fc91bef144ea412ece186a422b85a213c43fd0c361aa00698458f5c5370c6c553a9c238201754e2b2e2785bb03053e0b414e472087a0276bf2d805cf477378ca34d8f01c21b433f33b49a8b9bcf762451460558fb9c3cd071e654c250df04b6541baa278c1669bb49ca3ab4c78cc92d0137a2864bae0c904e23aa28395edcb435d9c1cf742562d603bc61c521145ca16f69192b137ee372f04402527bc557b754e187355a388410751267561a6b1f59e04190ebc604ff64a2b08b244b57abe84f18938c5a9ecdc972191bba33915c653a84b1a970aac7343ac98bdb7bb877a3170e8b1e8693fa5089f421281b5763865c584cfda6aad7482d00a0520d947fddb173947865fe178f9800570d4b2b9529a42a514a8691c8531a271c18e5f84380c20cd9a992051d29b5be76b2235b511514904e3b284e8854556334515162db1b09894b18a3127982269509bbc5e8758015a5b810569e544bef9398f7d195a50a958dd78bda187cea0b7b2bca04e2cd90db634a3d52b734e224c4c60ba3c8240d7b2755ae5892a09a0e7ea1b2424402c45a0ad59563ab97ed906a1a15b8c4412219203ce6826b91dd00ad602089ebc5163b416c0d02009a7a5440350a00a7b49309ce39ba26df79ece038f23f4b4300c01287a51f5fc619eba04ab1b78e6396bb23c1cb86a0f3bb11f7d31a161a480b8f33734cc63ea7219d76bab759b1ab3405ca61b535b893b1bf2b678849751a6a4f18923ef44470e543924d0c462d8a078782b80241334f547d2aa474d95b8709747162b228993ba15a0c4fbd8bd662a1a2f01cfa859ca723a011949823fbb55947b9c27c2bad547b0e6d29665071b30f3c8c536651e6437c0d4a314ab38a8f707928c0c2b864a3a67397a936dbfb98fab2c0935441b83157d05072891a43573882be97686534c8bc7015ac267b75f0a79c6991cb6c96c735a4bea90acc9bb6ba1b12388f0821a074018909f76944d9295b5eff73e70ac1b0e1644e3a40685305f8a0626b2f05969fbb4cae07c61f6213159b3471654a88ab58ec3a648f2944625820f6592c67126bc085dce216fa708089d4947ab911ac14c00e53782a01580fd967594e0b2b2a3272d590aa70c7a3f419accd33c1b1294d21242c739a3e8e577316c23ebd4b4c4d0577b2bbb12cca71841b54c0b76729320bce26dbfe5bbc017c92491762a6c938d4bb0099aaea190813a3a78e5685d83975050d719d6b6a80ac313d3018d25b9054b5013f832c1353401e6cba3fe527b8d2906871b79836cb35284725e733d8fb60e6a8410e5f61428a3cf9c25fd45802d5699f33205a71d6404704483bd2c82e92ba9457926a45bfa0985 +expected_result = pass +expected_ciphertext = 99d62a49c06c371bd6d26ec8c497e9383a842e6374424085f3922951dd554e866a4593f4651c64c1ec8123ace1cc6f54674e685018b756d6d7a5d6ea146ce22f25743c06aaa95093177f25ca0be23e6e76f5f71a5b741a29fef9c82137aeef17392972687f24184bc0c90344d3c51759546dcf761aad332c7d31ec3e08bb6021e07efe3b8fde04f6d1f718eca765e27fec6592b94315e116cae292d94e72004bae5b6d5a99d03801bcd0420a459605498f299cee4b3ce6cbbf0178894b9e20a421b885914e436b7356294e69f1d419a9633a712771931cbdee3b1c02539e4a080ce2be2dffc33f15fff7d3368dffb2fdb4ad6ebccb71b5746ff2bb19c809129dba5cef8d17ae011b64472b38107416b88585645cb3c80a794febed9e0e16c169ed0dea7ef52c079ffd05e2cd3cf2c6b3cb31813ad0780be61ff258b53f04735c2a3e8ed23dde9d44b5e7e182d0bcf1e19fc9d7fe5084f06e311aa4cffe8e2dd79457024b94a2b0a56f2f6f3caadc4ca3c6dbcfb538ad58862306e63b50472194578d708e5456aafb34d4a31dac16c6e596367b636dbb07a5a932b863d86d3b9b9a20514c6aac42b135b98b747b6bf1e0ee53cc9d9ca1b6ba97cd4b029ecf0ba3fbcbbe01392e43593195e34442100017655486b8bfa442f65256ce79a8e1c4c0429030d4d37cedee7d1fd6749de72d187a8b4554756842f035e7e873f06794a315ac8f1b26a6357447813b60fc9d6c4757b696df2290529765e2276418a8df9d22408cb9b8b1b34da3778cb981e9d08c69e003e251d98651050676d4238698a0879209e772fd5db2e552c38e38a822a1d6ca1c0f2fbf8399501991606ece8480f8b5f84a965a0e1e3da39459b7e6adfcd4d4bfe27119a608b0edcb134ed12d5798796cccae06970e1f283aa2ec5c5d736fb7afdda1dbfce7f89015eb195c56ec23ba0c10ef7937ea39ed252a47a812e599ec99048c50456631214fe7e76d11d7f1e2a5ea7b52c93c9b810a18f71309b0ff7aeec8c9243bd8695ed9b8311f18022533f6f294e281a9ecc525e99774627628f8b8bf9da0308e1910f255494d9a349211d4172a2fcb7a135ad940c4bf579667685833b21b7232b818ce2a40d4a14b28eabd8feed6016181c591de5a569e3b663338b9c710649bc7fcc5451785cbf6c2888fc5e7cf992ec049c46bbfbc20f7b4da3df1cfb59f48d8e24eee95597c77a18243544a693010cd2a0b2209a260d6d7d5ecf8d86a57b54fd16a5aab3908fa9f4c4da42a0c4f686dc08dadd5ca536a80213cda1fb230ba45b45f3d6d590b17f6844f54132e6e8c422be287117d35c12ad0707c6daa0cbb0fa039ba168621c78f91b65f48bf23af0c84493c77edc132e1a335e2e15fc3830b90df5d1029c08afb86703d46b1b4e018b9234a54cb76eb906f2b50a414e68b59d44a59d6b1cecde5163684933361055e51337372e239c0f94940ac4a44cbb780594d3419df9a896e271bd2e2306415317278e1bf7ab91ada048ed232065b9df3379ff9cde44a16 +expected_shared_secret = 96e30641ea4280168da37291a3063342ced8e77b33b5415819938c0bd7264ffc + +comment = Official test vector 89, seed: "96d9a06f88ff2c2036fa8e914b89c765e4a510b468dee40f914f78858c811857efe9fd0e17c0048e7389e8d996b7e2b0" +entropy = 26d90b190a6c3d0d9a86cf66005154e7086749e966e7187c249ccb9329fd3b8b +public_key = c55170fe0945513748c0ecc9098a02e9d51e44acc267272633645ad562816d479466b54d2150afb682b4f32265f1f4bced21caf7c7980105b08056cc4192bfe0da9aa5e00864b0a34712204cf6ae82dbad360a7c840b4804826c39a59ae029056c1b2542b6a589eb47c14a70acd1731bb0a4d657656915b91d696b2f92afd82245945c7b77958a5b6a3b6cbb179ab83a0f32591b757e8b68368d6a5ee63490604aae70ea7fb4619c91a455429a6b195214bd28bc717385d3cb8235991c05088c7939bf852125dafc3bc368479165438092b530bb2b869246988b8f85425a2a523ed108c6d2f54358580944d64d801078a4b621f58012f9d8a17a92ab8ad43821e24e2f87bfa844abd0c6b08650ab76d5397f2cb0060b31af689fc8612249d46374848f496b360e733fc991809da804dcbab14030a4bd18cfe37b41cad91a66a263437b7ddc2484ed55acb16ab95a1a8c9345a898e89c37248f9768524c616babd17a8dc7924f37345dcc32de04273c5a0ac038a133ba01ce2481ffb57ba153826a7cc4123570293c82082b6a75fa05031cc7fdbb9031e10ca94aa283aa26eb3546f894b646b9a85afc5df3b513db522efb340287c64492aaaac5fc25547129b56b9541eb0912222c2e60a11b9304692a749bb174cb47679cc294253b0f768a7872f698c23493fd908c9ff95f9275551b947bfe84780f86c1e0bc105f6cb7c9430369b58bbb07b3b0c87d8541618c76a43d52c98a08166e052b4487177ad222e6a002f7fa3f3601cf1ef0b4c02ab550d76447eaa695561118a46301b544b493c368b5b77ab17c5af4543fa6a8c682a46af39ca48046b1529684a53d0e492e1b8596f55334ade15591dbc4b411537c88a5113458f187a6d77278675b0c85bb017416b6e9543fa1b924b631ac1ddc5556127548fa8ce0c90125139bdf13428e2c7805607a44251a5f289be4e3a2c3c95c5b5cbf7c87b4a7d87a39a44b672bbe9af8343dcb062ea3a039e949a7f151c8900484368f1cfa385bd13cf55685bfa4b959f8634ed7c437fc9c044b401683cc7482722c98583de24ead414c1833858be987672c557db87aefe4ce2db8a676d14083462db35862dc0cae95f88ec1f59426fa2e24e9cfc54813be07c98f78a87b9703276b455e15474d7a283d5738d4b639369077e7790dead3336e1467c871a571080004a91162fcc31d2912646a9406902248fbbf28dac4343b081c327743335b9efa4b7fd13d5177064a5b6e8065b64d8c6580b47e6472c8f5139268145ba7a23a02f59acf680692b20ec2dcc087a99be036bf7e9c8c0df15f168c508ae28e33d951740a9b0f0321e35cc01328b7ba860592b566cb369b21f51b7ae583d26652da729f07f5b8d59caec65aae42c7c9cbe73c68504f26670bedc542fbdc67a95c9f2da1a08e559797170ee63147a4688c8e101e5aab48a4d1862506cfcd297c7ea61a9ed4a54fd3a28380292fc1570fa2ae43920b0e940675b60534425c69f35bba714c88b3a6c323090b4c56b7f89963059f8ccb0994373fc1344412f694175c2eabea110e035bee6abf546396d79472eeda164bf49350f54c2e75754f502de4a42721b37974a8266c49b57c6837b38a28ca489f02fa05307d7163b35ba6a4c5024b70ba27db0de8d64bb8b55c83bfdd24 +expected_result = pass +expected_ciphertext = 39afaab7974b00311d124330c72214db54b573bcd9fc3efbe3cdc82b4b680c4699ff19c1af2b0ba0fd7a2ca1016de5fc566a098d40dabe6c09cced8fc3466bddf7fd4166bf9f69dc4f8dd8baedddafa1c07371f85cee047165b030a99897eed64b7bf34f427ef1fb5ffa56fc4150dfcaa480385b86e215c116de9636b59cfb5c1485c1364bd6ee0c12d471d219701d78d470ca7b6d16d9bba3fd0610611fb7e0d13acff438b6ab4644a1d97814f2563d7159f7b11f632c3f5cdea5dcd4047a9084515441b5e16f22098b6d943cbcb71f705ea675544193fcf2c8b0f0457735840bbebaba9d6dcdacab820de3ea579e8ccad0d59ca19fc1f70578730254ba58fd00235e77dd346c92f4916d7bacdf6597232d18beabe0f7b4f8f916d661094066060b9a0383170758e3f5b2fe0adefa80a2c7b553f03f83d465a1cf090ea5f5d04410f620e509f9b7c81dd0dde465e4c52afcce12f5ffe58506162e888afa1ed8700741ec4d424fc46e1c7baa9d7da6a450019be4522f23088a239ef39d0ce1e3e46a8d7d6dee09450b06dbdd701cf9ca5b920bca236d0ff8d2932acc4b590b16fd314c8fc466809c06c7066dbe7e4716d32cc40d48dbd3a74820ee85b0e8f200b375ae5729b8a708ea902780ad6ade4ab87f8dcde5e9552dafd56599ebedda9e43a220b209932227210b744b7676098cc1a9fca1a325f28c6537d56e6ea922c6a9ccc48ec1fab814631b8eb8d5dc466f6b2d7f5a48a5dd3cc42880751cdf7b6649cb662bb973b0e0b88c95d8de90571989ed9e2ed115bf7f7bfc4caccf262247e90a7f63febc66218525f255329c75e957a6cd8650583560605faaa84676225cd42580e1a24fe7f3cbca951812762adbd5fc514bf094ddf9fefa94c72e22ace942ed493ef021a87d5a794f4c27ba5cf6c06408f79cddc81b21d416eeb01982120e77ea036b11eb2aa6f16ef380a90051a543e45d3aae0b313be0a9332b71db12dfafeb0128623553d69a30b967ee7894e54bc39131c376e73d2b947f0d06d3b5d35bbca914c8896a683ca39947247747def3ade0ee5a4049fbcc26989f792309fe1793becff2235de7434a83c6cb7e5519f8a7c67970d5acc472d3303dbef8fe7491c949cb8155614b692f17cc0ee844f7f0c3b2b538a70d9f3b8e9c698a77753616721c4a26ca766df1af04c8011472166ec8acde6ae95f002005dcbb5ff0f2d6db1eb3b49c258a23c9dc052e8d44a6fe08515537bf5175b7618882703160c285207b64d55c1f9563f50cdb151f4dcc5918f6d34c345160fc405931dd97f7e3403f5117a84a16c17077f6e13119bb5fed5cf8f128c50b46e81105879408ea5a90a128e2bcfd54c3c091633dfd9cc48be1e492d2615b8c3766730b7a9484ede6d646d3c45a09b52e3180c8b281595a97ed66c0ec03b66aa3a364926ebacb166b7699f7dc56f3606538db5128bb8b408c8fea3cf2ab0903fdfcdf5416c8623cc5a700995be6f0bec2ab7283df510d95f6ba323bac70fc058567daed0a06f1cc81 +expected_shared_secret = 47e54c85cc0e2503629a8bfdcfe038c3cf692d723d462bab733c7c8e0aa37b02 + +comment = Official test vector 90, seed: "d26ce360d399bf7b89dc364aa7ac06bb513eab8f527383e93e30727edc3f22c262aa0ec70257b39edff0630dcdc1b79a" +entropy = 7db6d1a129d6123f1f805b79ad3b413012ea86aed42a05e98e7b1f32f9fbbdec +public_key = d3b1cdafcac7f6d08082da095a7658b3a45f7bf717d4b80a3a050a04cb23e01103ffb1731b2c35a9dc23c4341976b188f5226459a02d348bc9d2064d574040147b41612914cfc2954e4190905446e5ab8632ec96145b917dfb4a9dac62b18cb0120679e739901d9bca662024335a083911aa53828d6d79c948425422c32ec471c2fa843b54f6731fc401475612a135aae4b146fa829871c0654c075dce41190483c3ef60b7336200a4a39cfb6787ac09ac85f4cb3dbb494727a20acc8a1cc9cc765862b0d402147a08a5e4aa6e679d482786910399bac7a36efa477236b1a01baf452badb3f184d7d6ac6ef64cdfb89d1ce66a059a4659d8137dfb3c95cbc9e8d86e064cbfdfa50c68130a8d82258407bb7b926f7a802b53209f3ab78784102e88fb91e6311d496251f7b574aee5797e881ba1db16af40281586267d826c0f33a0518c26e6533e19ea0ebf29474a131d882a189ac03b835c16c34c9ae7a1c4d9f5159f85b8542284e0409dfb0876fa6488e6519867b5c53896867772210e95399a1733d2e78532b7651ca9704ac063df086cae4aaf65150093f27054f34e2849449c7680ef1ca1a0ac399a01a9b74484a967592ce85086230582518414c247bb7680abfc2a04a35a20a851b73548a8e4cfc2b84cb5ec24108396c28498a6614790d56bf8d1b9f9e40bf574c497218eebc06217c9bd361baa5d0715e666c2d3d299346a79be0bbe4b7ccd49f948a60438514129c126aa1f3875718922c5124728f09fe5437ae83194ddeb81f0d744fd2b9b59fc223e2792501b4932924facc16c1e5444dbd6a823016b3afcb46ef59ceeb49728ac541bbb6bb64b7e196c59910628c8ca22b1138d884842c387b594b544e5d99784b06acc3b5d80ba81cd34739a20af11f7735d645d9ff25c07f8af9b5902524a1953ca2a58d6b796e3695a006ad6c703dd161c12c01b9bc995773c5d2ce59470c765c3f5401cc07885c77bfb3c15d7f766f0ec7cb3f601dbfc210d599093a21c87d82002212b06898a5a878d4ee913eb451dce14a1bc424838d4797ed14d9eea2473b304d6624f1725c820751a9d313cbdc79ac9a26548587fb41371c5f48a4da04d37ab7189685aaa054853f0491a0388ae4b7af4259969e29eaaa2b2eb9503518c7c53ba0e6bd20ea8355a63f1c481eb5e662a0b792014ae4c0981274d902759af794338072a839b05d9d42c1ebb1a3da33b54066d1a63024a3b1d1437b37a83bbe816075cf416275a6f58336905937105e63a1a017f87911cf0b41daa41a5dae3856a606e2a9333176628198b49d2517f54a9182e4ba877760517dc94a079538822251204b4c4a2382cc7889bf84923c09072f86bd1c5879ecc3a37678e6d031568c24012578dde5ca01005b2df71a4a0b0455a03afbe7c366bf1b086973038fb5debd793a303b4c867b611772733f66574cb0d7c303563c389b2f1b46e98945a94b142b2b0d647521f4b58f12326fd86286a448909191bc600bc7578b0169a45c071c77f280c583788f9c2aa1200a73431ad56d23b20471bb67a627a594ba9922b1ffb75d2d030432a954c71235a9278857c3010a8a8906c070b77060fb831842140770acb92e856c8a95e163d5181caad6a478ac9ae82ee27f7256f4d4cacddd43f45cfa4de4dd067cdca +expected_result = pass +expected_ciphertext = 6a97fb0d3fc17256c88c551781f6f142a05547fb8d0d96cdb0242069d0aac67f102232efd259c853d4a5222e4d8b9e5cfd7028afa9de9c3777669fa77bef10515be69536e6dba285206b1a924690cc8882178f04702dbbd541a38dd036ff8e6d81253e7e902c6de5151c04eb29236b261b30cce838b8748c3da04e524f3c71f8344235adaf16b54bfdca539be81daee0c2640a03e69f55f974e8573af1f42813fc32f99f31bd1d462324dcbefa61641e6eb2277a143ba321f3524307976d26ee122a758c330c80c91fcf5c7a7a5709401607f723c3386cf8314cef0c14a69b6868f117811a7c3caddf1935fa2dd230381eb62d1564072f6d3e68d4ad87e4fd2915d2fb80ab2f6f3b18e853dbf0d06a057f930aa61898f1b04148f5387ed19d6c2c36669ec31cce3974dc0717a188f1d2e37cc31de7b15b7d0712d33ff646b11b724b12509ba41735a771c6ccebbea8da3e651cf795c2131f910689f11a2b6a241ddd4b71605d794ac24778e2ce1d47566f8f68d22251b265fb0dd9ba211acd4652b509a6b412536f4348a0cc95a7c8bf736ab2b2a9870bb7e75af32e6b6ca5d318c5ab752234ee9e09f3deef5e0bc52fd7c8dab5c2e965b41397413b063829f194e9fc8d9a92f0dec9619d6d6aa8bb368a5a80167a4511225fd88145be368f210e1dec5cf94f28e1399a53612fd7d4003eef30a0106975c1d198a97055e9e44aaea6f9d21056ed983b54524eb706b89d7cdb6372dec8adb8217a214bc29f02e236530f56daf7966b31997ec4201be6d776880a5b0cd7a8784eba3517c2e7613c53c1ae23e5b1fe3d2f95ad0ef951e06e5a249d8225d48e70dbb406731ae18e404d4bdc2d7e10c43e62b7b18b7308b4effac86680f6a84bcfed751ab5d3d68f093800c1bc243a28ff898c66d3636820db810bb7b5b92087221b2afe6bd8e953694f87c38ea2c59c151929ac831b120c66de1fb05cc39a9b57ab491a7762dfb8ccebbe3194a993b4867c4d336a04351b30ec4d2f0370440acb6bdadad12e4d3db51e701aa49c455296e15b9d13cfa68340915d2f694b8b67b0f34d275867c3a53b6215dcb0c3654e6c77663524301d1e828a0ceaf7d2cc226da11d1cd78b072ac7f3ee14d2b06f8cbb9560c6d7e60dd95ea5d402b5de9e7b96b64c4accb8eece2a4bde33e8d27859d6fa6ff7b609ab159d1201df7734d4c73ad0a4eed2d80f24b8638273e9c0e53ec0b8272ed6fb82a6ec30ae431972f929759d000e4e5b801189473cc3ea318f07dc495b7b9eb7afda03f7e470345c9095bbfc00bd0321eb5498991c75d29731df41db55e24890e4beb84d5bd6666347a53f2dedc5c6480a93b19df229b8d7ee732e02c62db28623fb11c24b2de9d2ab0707e4c174acdc7b1ee8e287b62d1d797a3accf53decd3ec40fb57e571d129f1a7a70da324d094e51cdfe1a648650670736e0da6aaed753822e5bde4a2b69cd0c05a875b5f75148a6a65ff26c670d17a0fb598bff1643ba62d03c2bf9d1ac3d33c044a0348b762f95dcd +expected_shared_secret = 8569bd042465a2c4af628425cb102b15ed4f5feee16090e2234f3a884a0fa938 + +comment = Official test vector 91, seed: "c5856298c3cb6ac9787a0f30938537ab2635b96f6d19cc9522063360e7a5c88e644929d2879180e3e5bcad2422b7cfc3" +entropy = 1d129b27be7384c359d04311fe5c44917d1fde4bfb57314f483ac617edd5ac49 +public_key = 112b1dd09313b9a25b7094700639775f89b8d0314eef0186adf7ceabac36cc9292c270717f27caea51b1afe1cfe6b6a1cb1a7da53c6715c9c9b2694bd5a581b733ad4841b229fb7a17bc213b969935c672d0993a94ec170bdc8b7c800e66bc6514f84fbc81c7d1c9417b79a82e5b3980acc792a19c46d13a2e75a3af791beb401f7555793d94c0ee1b9e98a5b6c52777e537bfb287268ca9524a4438ad87a0e85279e474c5be7740b7867d8b04781a2436a8d343f62274e236c736dc3c59d5b326563b9c86798ab14a6c9a0e67b36db89a82af690da7016418ba2d6c435e39095bb81a0e49c01a73a31ec9159844d1a3eb233d16b932919421e6a342473a71de629477183e8f34b2b7c8abb7a3b6e516107cb5229d780b93417f9bc94c38bcaa58f34dd88835308c742875cccf4928122199cd932148f48a94c5c2252295890bb4645761d3c2c0f33ab3e1021aa56b573e9c6fdac37c83f678b97148ce573a244b0487f3cf771bc7b6a13fe53a6ba58854b87a67a6a17d6a301c85f7c061071b4ddb27b3f404dc402ebacb8254a0568d48b2d299bd831188886a65aea5cd8d987f6017a2f4392f455c2b4f9b63e6cc1a27ea38f2588b0f8086d7a5c5e4b05b76d2b8918820cb8851704ca6d730861b512fefb0a76b61401e23b01ea710c5e3b73fa716dfa6408a635423c61372592dbf174d6d811eef7c4d885bca5fe669233a141e43810ad10235cb59f824728bd7acf17765bcd354a493aa60438f07d266d728b640cb07d50275bc2605fa6c964614b2c8143b37b184f3c30668662149bc18c6038706c12f0d31b896b69a7d588d0004497e4808d8c12253987f000168ea758a5b32c195f03f23a07c5a546a6607084cf79e073bc6cc1cb372e385ca827c490a42d900035bf735c6242031b8332bc57765ecce4792706f1cba0c7cc390e7bd3595ab876c4e397c58fc325c9607b0ee39692c31730eb4744e967e7ff8139fd1a545622ec870516b2925628ba782cac845b2429c3cc0ebf7747f414e8d35cd4a91c959d2276404a5df4790f4363104e6a0d1d60a48b65bbd92b417b51a5338cebe36c0f218bf27968c05d99947e9b44b4b5b2934c538f85cd7c8b9e3c31637e14c5c0279cdd6386e20ca89a53671fb2f04249565491ac2f900ad380d1a68b67693b185f26a232aa1b43503398002085713ca4b2f94cbcf6e837b020404b7f519a2b520f93b901943c918393f26061346a0193ce9ba8a48b5c4b01b0efa231eba0528c5b38cd32cd5d22586494734fa746b411759303a51a12ec58b03fc99a1edfb1cb01375032054878a6ec9dc4425945aae387e7fc6cd399c90049854cf51b3db690eb78a0a2db04d05102dacaa9834620aba427b5733bf1d1693643c88bd265af0280ecc66344b81129c491b3998c6c70ccf03257c2d06115b72aec35b4c8774cc7936c578b29fb3b0a5c66709363b73f41b08db919cbe57ad817cbb5df62b7836af6ff4ab8cbb07c9fcb7e3d601b2117e6a7242abb24ea96ca867b597e9e9b45c01aba9b54d2d323df8b38d3d37b72c2790e1041037355f274cceac2714a92955b31c55d4903a85bca55b2bc22c536aab22557d912fe2234423e7bc0894bb5f846a2dbc4a0dbb11c51840059ec11bf6cefa3ab473e1cb0f0bd17ee0bc3c59 +expected_result = pass +expected_ciphertext = 1bd710a00c224ca78beb7e27c43a7541a1618fa3dc2615317cc4aa233e6169785f2b722e6e1c73d77d8ed134a6d56e3cebde5fd64b5a7b6030bdfa7a9c95960ff5d2c0cde027a437f272311bf4e79c00be9b0700aedc165d911ce9e3b7c75d9b4c6230e734c9d1d6b9a835da5d666cdc8c129f4cfa5b640bea9c1da52aecd5272e65d80f1e53d261cf0913ba405eb4019e0f9a54e99239fd8e247ab5db67d062cb3cad1d6e2ec8c0c8f13bf2db8a1596e16966e68454c10b9fa416441d15113da81165f2813a727b7a6b3f598311405b7051532dec40035ad088a5c598e104ef624a06a98f58f28f7fd22ad53d6b54d26449fb289d0fb6c42e6f5039eaab0fd650b627c62a57228119920435aa41190d51418896932e338c9dde3b0e532fdeffd03551d0e039940134695412f2e81a99c73094fbbf9b03335155ab2ed25f0a96d73fdc08b04fbc32a2e5486110997f25a7308d33aa8c051d3e6aa887b7fc5294ce8c4a91812c41fa6160e37f928d9e6e10ad719f3dd7ae18f6444b9645991a1ae8e2d7f284a96e652a7f40d7f132e681f6da4f4041ed9ce41de22f879ed09fb765bccd340345095642a07bbfb8d8d1854c1107200e0288da6790603dff76906b44365c16a3d05e5de2a22c3414ae3e2033218e918edd9b1c3275927df7e771d7b5b1c5e07953f3a30da668b3ed6d408b709791fd5ede9328561ec40123606673a22d496e6ddf6e5ee838a47528f44efbeb9718e4872fc6c63d8c9860ba2c1689958b77cbe94057b6779021b039e4c18de0b75702b2d9c7123a2e281b979b22d1e476e6941b82786355ebb6a76f8ead17349c1e5d779b494d0b7e0153e56e967cd4f5cc5b0f136cbfa965d323998ebfb73ab2563a62bd222f9d4113c16accce74ea94468e0d721fa7f5019c1f9d31439560a5bd93a071f696dec1d0f52f4d671767cf4e25cfc46f4eb5f6d67fa40951ba31ee8aff31eca1a7787c90a4ac7667bcdd66a220e2c69df7b7ec49f7d6d8558da91c4a05dfea6da06d774a420ada78866c2d5cdcf526dcd2738a27fbf2df61322fa7e8964da5b634c7bf19985dfe77a1e0683844b101242b641e7d0913b37bbf9d3f2bf3519c8ce95e917126a7f72a8c49daf48d4bbe37e9cccc9ee4fec24f47bb2bcf661e6c0dc9b2b1753d929430cf923117990e0f22b43a74854a2b3fa62d3618faee0b877061317128ec4553f74bef2633d847141ae3b0b2dae44605b97fd159532cfec972103342b21e6edbfa9f03f483a67c45cfa31d338a668870a26b34023004ddb2246dcecaebdb2305aa4b178c4ed57fb0e1b33fbe37f3246be553b68c240ae8e54b7d36fa4bdd0a0f7602745e2885c7a85832320815eecd846a08c0974a2a35542373092dcc4f7fbeaf61092c43b25616a876ff66d9a2f458955056972c5a7460a4ba22fbf65680ada0d1c9664e5747740c4fe921e2c5671d9c6e30374217578c769c3a8f089c5ccc9f3d19eea5389db458ca87f03087006cefa7f3669753fe6fb712073d267d18bffe82 +expected_shared_secret = c184e0b019c2db772e2c1ca6f97f47478d99cf0c4c5ae1406f51d15815022123 + +comment = Official test vector 92, seed: "a28ead0a08e7228aeff602b16a1e752278b8ed1e91dac67994f5adc372e1d82f95cc390cd97ab9212275e0566c833fd8" +entropy = bbc773ebd2df42c36ae05952d6a64c63a5dfb82ceb3ef4f8d4df3a30ec8c0467 +public_key = dbf001bfa28b07e21adc142c75111b9785aa2109a795ab792de4cb7b6298a504200f8850d32cc44e54182761a1c9c9ba591a9fa6873a61025515b068099bb1e63751c5b887d283077f86b733e4344d13310ce12d22322f254a0e92779a87067d19c53c70dbb927e14e1f2892b5273949428eb4c70c49da8aa7fb87048961db4892a6f89f18f0bb69347b9575025a964047ac7bd2c7472838383a6072f8338b23aa07d6b7b221e18d4e3c62641916106694315a2fc5bb88c6d664667680df556c3c046398a88328421f32ecb758bc64cf246815a25922021dcb67c995fc72cc6b46bf5ca9ef3998535ac5cfab70aa54318f9532dcd138a4c03e2ff5024c52bb486ba7665b27610b822975c412331ed6c98e66721daa1897936371113a4f17d96ea735a5cdc019809c3907c03fa950c00eba9dffc69a902151a39163f2931e1c0271d491562e0a87fdf7b7846c31151017ef08727dfb68f22a8585295659ea358cc1b85c9ab4d107413225b8259804b31850eb347e1fd37f5435617a7a07b15321cc204b1a6b7c30d67e91c088a458bef5cb704e6b662189a9c0079e224a94e21502c0f1a4dff6028ef6645cba38c0c86eaf673e9b2613620bc216914a9781645fc48e33cb9ea06182637439f1d1a19fa50cfd3b5e2cb8310229b74ecbaead4b079d535521b8587a2995fa9b8c6694be6e432343c97c16ca23bf53883e23cc38f10c38e54f5639b9fc0943a4f41cd0acc8db40cb12e644cb74b9d4b858f7d6767830b92381a42368476cf2602adb9ed08b35ff5c4d1ea93c94aa75e218779825401d859902d19822e9820d86c7e57562795b89cda97eba773070bbc502884a6f437d7ea7a459c0764cd943e0b6a5b61b8358530459685e2842ae9ab867fa712172207e692a7affa872323779087547c3d8b89f368ce078acecd55aafd5305371a5bef24fb255211b2169f4543927c845a3049f7a88513a682303960c2d12bc277656f15738c4368deb70cff2a32a1d179f4fdca57812cedb21b356e0aa63270788b510e58b4bf613473fe931dc80a9cb8bafe63aaac3913936c8a939c413cca10a1277409250b5da321ee5c24ad3d093c1c7095fba34b81380e5da561bc039e3a8c15ff3982a7938bc16446a3ab2679a50c2e5c1d1a08127db4cea30340b5589b2327988c97b78f003d1315dacb301520a11f9f0b4fb33ce7c0203ff11c6a66136c0aab83928c145f4b968783b131281f2153925dc13ad133fcc5247b595cef0f03ff0da0a429c0de9a54f66c03f1a616c7210b7ed3624fdd27e99f38472867a9283c6b294b0d7014cf9eb62f0d7b051b190f093450453c056081370b45f5ebc4c03808fbb5c6d8b659bd22612c2872de9034b11c6aa6d356b2baccea0f909da0c775969c12fd5bb0c8a9bed5172a9358e01c29d308636b5d668f5b2c9def1380ba23b5c84259d887d3dc4882702b41d99c72c800dd5b19935d7722610741a105c1d227c38c5665cd5a6daaa991a9868499830c1697fa430bf4f95b03004126fac283a167281e4b847eba8487b0032914edb0b67b1e320c25bab50499378115cb07a9000e0156c9c93c1d90693b9c22623a3eb15618fa1c470481c4cf292b7462410d057c2e5851e08e31fd88af2f84b0cf79a88de834c1f17c7a5fa17d329caa0 +expected_result = pass +expected_ciphertext = 56faf8ba810d4962b71cf915ffbb0c4dc4fadbcedfb4d7778d70d364c15a803aa91866c8b086db348f84680b08f13c45d0b154b68e5b355b43e277a6457b3d304f01b5dad75324aeac512ab2aa2864129a10fb287e12fba81843ee33def6c12dd9e4b29c170592a907d3350850a55addcbe92affc8515287f73e4fca3199e536d0c2e2b74dd92ce862c3f302621689d666b8dee9fcf90b4721818cefc3776f9b1195cefebc7a45d6088b3b588ce4275d32685d1c06f0065079c8a73dd8d8e7120907a141f189ffd63b2b7568975a21c90b0cc69f2120bc94e5ed04b8c3628aa1fc7d494a2b8119f939afab0e5e99ad377661b04e85ba80a62e7468ac3e90e4dbd11c196fa678d3246d69928a20e4b9d6bb0c3fda5d33b4ee8b8e8e7c651bde38a9918f9131f60f4ec5b5c340ae3e64b39a1c507b77ced606ef9b93246a204dcc5363ab0302726bc94daad4214807f33103c7a7c57b460f432b8556b54953e6beab1a116b6b73d38bf54758e65a236ba13f10c8abb4345f336660b215d9e43209f8b85363342a930d8d9f229765258bea0d520d6d9710149b26cbbb1929fee006a63de21194cfb90c32deb5c402743c4d6643548e82071ecfe64e6d0a5f333bbfc7eec513a7e4bb5f16f563de4f45df83d220b8df76ef10c750b90f48e18a9fb7727dd64093dfe9fb6c381f7e19189200a53efd6e1d4d534bd3ceebbd3021e9410485465adae7340cb599a987f6792d9c8d675a12debdc06bff40572eab9ba1d405204b6fb7f87c5fedd49603bc743082cb3752e8893ae720668481487e86160d590422f6bdd3ac742081e3ae4fa0c145c795281f0f61cefc18e79fdaaa2d0d6cbb06cc0e4b9e7b3c0c3b02d2d6a9efc4b61f0156d510ff5effdd8fb74b32acc81d31dc38abf0211ae1ae1669f2d7753d209e00d9774434291a105695c9e618800cd518591b1facd18ccd4939b51a410c1b3c0e3503a0d5edaaf37b0b4d55e33aab5ff93ba38fc1ae300d42f1983cf3367b0a300817cb79fedbbda6132e2fe9f815f5f88442ab6d01d0eecb7d8185762d30fdd94978865dcba58a6601f407e1b3ee3c3fddd40439a47ae414aa37410faf9e10d6b661d452b38a1091781f3cb0c7236be1ee528f174c58397fec391f7c02a0627879e943e317a8cc075213218354c81e73bfb9f7c8f95e2953872d42603c844304ff42cbe05da1bcb1880a3d2d5858f79390ca5f60bac06968c5c0b9e159d5c49677f0c8313701579cd2fa921e4e4fed73622a7e783a9542653e000e530144a60622d79a804ff48cb933f84599b5183e6cb93e257de282e386f6b211f093e37c3c2a43247c1e6d97686a5c46d02a5e8c9fbf611f4a0a308f15106e9561e8c5a2b1c78c45ab0d4440972dc28a6d92b5786d5652190bd8f5460ea8d0dea988162fabfe7597a5deaa75e3ad2de1d2172d3147d3332f3160361b41ee990d5a89b4b2d27e97b2d21fcbb3fe26e04672366bb03c34cf5ac6975219297d3d299ce5852c6e63a7dbf632cb14078f31621ee4 +expected_shared_secret = 6d72e23c8a4cc60b2f14adc788a5c480033bbf6eb111070912bc83ad7b89280b + +comment = Official test vector 93, seed: "92877d706daf88ef3412eb143db8cd91bc047a9a43b7acdaa42523560dee4c172697be4332042fcab91135839bf74ab2" +entropy = 5b17a6adad541efcbf5ae4b0c0452cd2ce32e4f0f8701801c5b63e197c1fcbf4 +public_key = 2df84a0272c13da5a495942ba848ac92d302a98a3e55937b8b1b49fe588be32a540ec90b5cebbd90d1b80dd24d32eb85fc041a7ca307e522b8c5fa9c85bc258c8abb9f2678d29569f313a1e660a2454730261a6766945ce42c140e5181c68461eaf12d1f185c358233b9bb4902fc5089f851bac83ce3f07bd7b185ef08626d7029129703334084375bc5ba27ba023ca6722319a916baad529715661e3a413c8137cbbb206e313906df1ca77cba73e5499f54fc53047741af2341d5623278f76131ab47af10bb4dea8f493b6c0e4829ecf4c425a46d21755e93e5a80d0a927739848695be93444a98a45d02d1131e493da5a0a1117b41d4ab3db35a7a2e95c6055ba70ef159e7aa0dd5452598f91477087bef1396acd48e747b962205af92eb99faa809b4bc47eb93bfd3860102d4adcbfc39be80024550656c42785a6788c7a851b107823a02a3daa4caf25097f1f9afb29416dbb360c4a824e3ca2a30e19f94b805de181d0a028e685c378dcc225112899a6b79869109ca4b094909b21042c179c6cdeb22564cfb6f89135022fca3028caf7abab19a4045dd5a60721c6bb47ac53e40cd932511f2e5473d3b4ceeb44be1a00e090a886d345b13a58620c49ca0893f23058412054ae5069c1014361cfb0379c2215f330abc647114a3c597765fd014c64c8c1b1b45b3bd02be9d5a55b0cacfce297581fb48fe0256f4c0cfc84aae1c542f36730e5f10795c72157c653210686801210418b549a7398ca8b7c70ed007cb153d2a55178ae23a5b095ee2d116b9f3a1a9f19faec40d75256cdf76ab8e393210d3afae375a7bc384799a6efc5b76f287499c6701368b8ddc219a9f2295e6e01d22c4a50bd08179a08044b702ffd786faa088f867b63b951a92751cb0f839cd554a83745444c3bb88d3609a9a4bc2e0bc73108a71cc7534217872539bd6e942cd36a09aa0374a3894d279a1f7c38a56e7c0298948c330b8c3a5b6aec3bbdbb87384677ada78017564a7fe40c2983a9ed3acbce5e29e3a78502952a9540a44975572a1512b1d4284d9bb528e538f43a15216f4b4f2a5208e06c43896a19c416c99c3b677564975948468792edb6532f9b0567f407fc6d6c302766c6d1373bf78a18896188cf20ccec39632269f6a193de5ec5dca85cad6bc79023c691d5682643b6f314827e0b24539e2aa91123b3fe42308f041dfb6c876d079d60a3ef5735ab8a36abae34f4a12729be4a00f753c7e4699572375e6c7b037948684206c08a27ec12b26f7349cdacc3559ac29d5cbc35c310870597e391ac4e4c02991096f37492083bc1c43304bc3d5925843622494c735942dac8904cf195387eccdcfcc8a999b6d1b744a542359e6b167f91022be1660bbd218a6a6861aa17c57152552172f38b43d5281956caa77daf9b94cf60cbf08cd9d9b4c1edb6c4a17bae3b36800891910c280c3e7cbf4aa11f33a7c70e3b419c2b2b9a64709c31878f913fb934d77b4c36e329ba98b44f394631e0a289042061f527d67446d6ab55ce7b43ee1080fbae67085a2a03b36cc9ad9b5b546156c3c5a79b092a67912a19575f6b5546397c15ae334b451c3d919422f28b70727c75fb631a2ab012bd5971b5b2b75f80e14bec0494baeae3c7ae947bd69827e1fb86388052c3bf3f8b4cd25a568 +expected_result = pass +expected_ciphertext = 4894d82e0c293e45df99ede632043a85e6054b1611e5559a4cef6e13de2f1a4900f0765b01da4ccbcb823fd715242eaef76bfca91fe70349bc1c24b265a0d3c8294e1dbc274fdf5e0e14194c418f5ebcaa17e602986608b1a7456713cca5e121389169a056d1ff870c6f23d44c96c2afa779fefc28a9439a6f17a28c76c80b83f54916db504d15c3d871e9c31da20d957a71fd5553c7b2478859124f74a5bb62891586d6641cad19be57b806e59ef42790ab89a0ece8ddcaa718e965c7cb91f7b2e7e8bda3db23a4f7281d0ec15a6455775705d00a6cd2a6a900e4cf6f584163990c211a49da061c2174444d3794e76fe271e7dd01e580a2dc34c5feefb118fec7bbe3d28505d39713b985a5d8391589ca29f68834db1f5acb42bdc6ddc7fef72b0528c6aef837ba5ddbfa47638cef78adbfedbb93104a8a8ca1d121038bcc3cd29128b8cd93a69872d21b00f64e0c6f64e970d0d5454f08785af96a7f3df920852456b51d1c6559be74ae8b902f499e4f47bf65916cebc9b092939b3fac9097fc29e33d9c60e511763c7d48d05e30db42845c102ecf542b2296fd448b4adb8cf6f3a2b1ecf59477357feea532f41013f6f8494cef0ffeba1c7e88dc31f3a80e110060f9363638aa577f97d56554a9cb48ccefcbdf211665ef0d19c0e5667d4970e46b3a122fd9feb6369ea20dd39bae8ebed4f2ebe7bb388b2c38abff8010403ce5c63a9ce090b2ac371587353fa892cb221a6f104c58c0f24d5071a1a3f2fe15e0936de0853230b8a8ca393182276641286fc393264b4032ca117ccac3b8ab44660213cb645b0a91ef6f40227f13ed27c79cce843569a5e6fe0ac49d1aea0508902f33e3b4a4ea6a54c6e0baf40315291a367950b6bd7efa92d1051c135de04f5e2f041273db77ccc0b6d99886a88acf4848f5c235534ee1503afb3152dbff0fbf85d36aa8854c84c9b4403bab1cec6de2bf0682dead6a5aa800338aca87b7d2627d26bd842ee17effdbdfe3fa6df0db28ef11f01b0a93fda3edb75fcaa9921068a4c1e7d96d99864ddce1eea3f4707abb56bc7a8ea6519462209ace4535f2e119d37e24746e9fd3b56c078f01492b3f800ae10dc633d0f64f106dac5c60d928cd3e15097b92c99a5163ba27d5b0961cfdfb49aad6acb76e8d3c09ae9c3b093e887d1ff0f79ebf6cc2f1377bddb95a2269d18781a4e046fc5a9d13b366906edbd308b546d7584c9533615857680a22dd7865644d8c62d27f5585c1f8699762f86fa3f64662e77157793a33f4babdcc657af6de6267ee3afa991c510be7af8a0aa0b154d78646f0e5df267c9a7b0e46dbcbb02fee8f3c53b2f5388f01674c21dee845450f659bc7fe4776d515a99f248df58bc24819857d672dd2e83d84ef05476ea6cba94b0587d85ddf6214873fcb332b98c087666bccbc8df96687649700471eab9ae063bd544349c5d39e1d43363802d8fe6286401b2ccdea2408280bc53e0087f9905f13c3847ec2687897375c8ddf9de7aeb115b712fc8a7ae189b661 +expected_shared_secret = 29e6b1edac0a9aa33066c113167e42c64d70215ed04963d8be2d4c2dcd0f6589 + +comment = Official test vector 94, seed: "bb4c0082ca4044b1ff60b036c9b0e0495d58667156786c530bc69d949a13bfaff53798e456423d7a0e162a60039367d7" +entropy = 61ab87659525de9656af41246f20e1dbe85c24e335e7ecf9493f46168bc14e94 +public_key = fed53d194419c06b92e51498ac2601869a1024eb0370ca3a420c48a765a5b99bab88a759251cb83259a628603c54a831ac0147f3a97b8329474258b7bd6067476605a2b2b8311252fe54565c865e2dd96ea9e43b23121c27ab02c348310acc38d9d583b0d8105dc87896c238069c689027910f9bcb5d29aeebf57c2b9c78f76866768c0699c6bf743c0b43108c128a5277f39b32c351926369fb8754cd0197eb9ab602f391c4ba564be2c3423005266229a10b21d31a7cc3d40c2e7192cb6628afa692d3e75aace66e7bb1169893c8ee45bda5560e7f79c711d32d52c0c783eb40bf8977c3063cb114b6368a8d1486a86cb108d146a648e080751440f4d8087116701987c328d8547d0573f8c03d321ac07138a60954297cd832dfb989fd99aba8b213e7501cb3d25b384c023f66776efa3ad4981037a54400729634a782adfc24404bbb4f2405a27a8500cd79e8521daee48848e485f53a28de91089d849ebfb54d97d0cfb3cba46a27438f426eea1a0122f2180630864ae46cc5f3a828725cae89331d540b5b3633eebc0228000d75908f21277104d7816f56854c3289ad1a5c72c1655830089cfb9c90b1306724cb2828be679b989a3565758b058ae983c1ea9b71f10553795537d454eed50f50a40274592ae165c846d85527e479e3fa8d8865047bf68d200287c0a5b8a6a78c4769bb3a795979b774713a522dbb723f3628f2f4126b639e3b4c5c4b076d321a208a123d82852aa0db6ff8457e745b6b710b396c8106e635a379e22c59f17df7b7070eaab38d5448e4ab67e6b21078d5b9f9979c6d7365cd1423cef6b4c2b186ac6b792ef9351b6040f423ca22e7a1455a0473273e3b53b92a132d7c44556477907fb41f981a06cac9beeb9655fe90c4fe93cc33337d78294f7c128ffee82b0d4211e550342c599c9932a201f3cb8bb253a0559fd667a3d2cb46a4936f5cf9c4d0d105880a446066ae06841e12f259e4e6220d932633f77f9a6b463e180778d53c37e0bf423717f4d476ecab6bfbda7e461ac3cc9806ff4b38fb80c0ac9b0dcef56e9b27881d1aa0892657b12a913a8ab84037a6c78399f53816d79c6a1fb40f1ce200334a7e74760999f8a0294c3029bb23ee0cb81700b95ba20140cc5de537aca62c9808240e74d508a93263eb14b7d202a31ddc2147747192ba1f38932538241ad1db35caa40097393038957b64e716d4cb3675aa9ea46257bf55a6d1fbc2c356b020073e16ebcbddb3692515be92dba54cb62c702165c74864c3a7ce67d8af92eb78496c4e8eb78b55db7963b016a252a85e655c95936d6006bc07ba6250e458a387bd7bb43a3f5a16cd8733b66565377c1a74d5488c1a0dbfd7a6dfb474eaf29fa80aadc83267d0b98eb7a8ad3aeaba977a0a5e55b8937ab68e385f94db13fbc6c26bc23b0b8ba331a578b99b493d875f206c278a3b4f63e156fd386fc13104d6dc96ae9bb3055481b846183de71eca09273e58c466ea225b1824246c799ab8b045fb844572882299bd6f1b2787e1094bca102fb20e0a274257062385dac60f37a15b0496ed23c465a3ba46bcc0ba9b5b78c93b45cac0151687859b155ad62a8539cc6b872aeed63847ca64797460ff5f477504df1b1894fee3e6bbf8218590936e0102dce8adf459d590355576e1 +expected_result = pass +expected_ciphertext = 2f2b7e105dc744c34852481001d4d1eb1d0bcdef8c5845d58258f6bf6310b2edbb26de7891a00b6e217fa62ff257dcae69b6651ee5e074ddd61c8a17946d1ac239e629bc2c99a3076e97cec64c5a626cde2cd58e30192aceea1d0c743ade2914df45089b6fd8dfcce48bfd740d0bbfe76572e2619fb648c2c9abbe128d3c4154c2e95dc29e3f5a362f6e7a54c5a1c903963c5759533b9a6824eecfa1aa486c5008c3039fe220739e8fa5b135d0e68482623d46f4486e9ec5161c070a6ad330027316b5b7fa0a7d6f46c4a18460259a0185f63505442053a356cd3866e2d8652e892e9d4ac7a87e1b0beefebb3ff94751d7d82247264c6701daae5fff0860e72d7cd26596e7d6cf4e01c0e5deff512ad211e516db0a91a0104d0f693fd924702ad578d535a024a06220e24110517c0909c71bc8d1f53dddb4d1d00d87e529b02081ce5ddf7db06613e6af9fe774e81040f37b00e7408c9a6583c273bf7a742d71f14bcc5b84aab2ae54217891f9692c57494e0a13c64d1434f9c47de6677947de61b092ffab34d05488e0277b5e8c29ea908c92ae68ca9873057cf0ad0c1e7ec0f4becf830b8edf3f6a9f3f06850a3c94ee0b62a39efba961f067b2c09d6b0eb774869896924620687037d052ed339853446fe3312c676d28e5bd54f22dc080961f546767a9c683e4267d8e0b412fca766268aeb72aa35111a5eae473ee808fc143113adc424fbf120029493bd311bc6c0f5084b371f20c73dfcaf52c77cbbd39fccfa4c1b0ca5ca1e4002a891b4ca6b0197c34b3e23b001d6367208edaf9085173c81ba7d25a139c4bea5798f4d2fecbcb46261474b1fde3dea181d8b0158f18297eb0eb3eb493dbb5de70543db4e193ec0eb79aa0097729bc8cd5d93303cbfbec0b892ac9f9de71c349f651c75bd327eb8e1c1e3b9c2b6e2244693d000af2a37510adce9e542c4b455aceec3909b1d3d0775466d14e185135b7cfd3f2b5c7d6c33d4def0e55299ac30a129c79e3d66ec9edb0ad0001fb4e18327aa3428659ec4b2ea509921eeab807459c72e214977e4209b294b9c105aa88e432ad017dc2698291ab51304fa00402a6d0085626ae7462ac4e953c6d9f590c7d2593c25a90b9b212b71e4882a4dc449bacdc0a5b338c5712c3d6865ac00e9f4e059d0fb87851c77822f17875563484e3aa7310039fcee3b6e6fe6560a925a1efb23852bdecbc7bdafffafc1c769cf7f1be11185cb0a426f49bd4ebf60e52f6196ab216ccc5fa5ca40b3ac8626626de041e4e14270aab1339c562dcc40adc1de8c3e184ef9868def9f469b035c082a44764352fe03db55beba995197d04f1ffecc5cfd47b31be972de5db28137a6fd1d80a958d80b35d20c6094f36c6584646a644b9357b36cf4d307165dc8849be47363c1c1d7244d1d4bb13f143fe8978ef5089b38966ad6961f2bedb2f51d368798b0b3859a8f165edc5a02adecb9eae1ec60624d523aacd6da4f2ada45004f096a6911227d62e2b9d6ff277e34beb6d2ce6ce428311b500 +expected_shared_secret = cfd1b82181543656807880f6e2576f0b095bf84629b3367e9bdede24662ee42e + +comment = Official test vector 95, seed: "121d90e70af6204445d0deb28ac0c108262719e9fd3476aca74bbfde89faf04d8d5f89a624e8a75db80431f0d10ad28f" +entropy = eca2adc3da1fb15f34033405ec08ef2f46163df4bfcccf8842c600ce0bc2026c +public_key = a0e473a9d639b1299251b46d07c79c0df1ceb995a968b5b707b760d8bcb120f6226ef5b742f34548902a7c73338a8cbf8d6b02a83470874b1ec5845dcfd3a4067c420f8485fae1286a23adb7373b9217c6dc173748870bfd164a16d62a3a6608f5e2b7fe78b92364a4b821967db45ae29aa1b11c0cd67cb4299b32d263aad7a26eeb3a69ba56790fd806abe3935d82487aec3205a856b4981e7f53b8f82a30d13c1b725b1418607b6619b0e8a8870bba6070e33545730182fb5f6f9938ab2ca68c50719fdb472a88384ef210b0c22785367dedfc840979ab758479506064b7971426d70af9a95e7d585dc8b67d4ffc2082bc45a4fa9b4fb9541493c3dfb88fca757eccb50f1a9cced9c046f37062e3879e13958bcf063041e858810b057680276d2ca12a307f511217fd626561587617674319382a4a00ce5e3bcfc5ecb5b3816133910650a469ac663f7a4a742ddb87c4e5be636213880c246370b1cbb8adaab6bb7e1185e1f95c945bb001a0210cf56f326b35051b8dbe85245f9bc6d973b39afb3a3b961501862b4caabd0d55693c201390f48fb7511990571985764be7373a7fc4bbd5e82b31f52494b15b6c2c8b5b593182028bd7ac7a40fb446ea756463c396de29d0fdba2569b9001e169f7c824c8a42d313a15b682bd52004867837344324e2f91a06a4c9f7ca447d6291635257cb0934e015c1937f732c1bba2c13591ccf4add16960b2303476000d984a8fc8036772c3b7c5721261387ae535129a7921a1711c98103161a95ebe16c0e0a28555dc3598cac2d701a98ca249801a4bb10379a5c29a1932acb6f6c3d040639fa98fa7297c6d453e35587488576db9bb2f9d1c37f8260cba3ba90e4b779867ad97db03ff005ecfe3470d2c25d54105ca287a9e0c039c2a2b71a1cbc6260d59a268d60c05d61202ec336cb8285b41a043bf58949df50def5937bee1af32d174e8fb463d03449ba747e92a79a1eac8ded247aa0a50821a16ad4c9f533a0fa24684d452a71df461aee15cddc2185551112682b4867c6cc27c43bf835432cca184840b85886a5d970e9f515f7f97151410c401e9baadf41ce2b8642313c295d28587a327c41c24da18967a6426663642dcf389c50892d6847718365cbbbb80723c1397b90447b197842c96a141bf6cd317bf12bb64c664fd237e886a9f793313aab15f668c91c71149c4b90b35b147f7c34b8ab6948799897855b22283050b113d64a60aac739948844a9f99c448d21c414425d77560670c298f493d891128ab1665d8141d2b1c8e67950a68255b7f9376332b1cd7c6630ac05ae7c127fa7acc35e640e94285e78661b15b21685a36c889a8cc890ce53c36ef23c2f17cbd8c31351beba827949f8707a05324abf05aa71857bcbe690405ab0030e648fcd3bfc0f2ae2c627e04f490bc3ba237059ab93085de218029f056b0f57abd342170f5b16db069073a3c16bb1c0bda5136952919b22ac477ac2489237bb0869656614e4ac248b003799c761b2ba5f2711b24a01419c88937dc4ce745acc16c796e0123a4228ec623a2a4e059b80b72beb1329c9204b6555b0a62c14df0b19b4a157bca985090b428dba8587b53ca2714b2ec2a04d306b3cd5d09045252960a068412f1bd67b83a217049d0685ec3d63d691559a327b2 +expected_result = pass +expected_ciphertext = de60b879b315048087f7a044acf1495002d4d8c1fe775d9f05319b141573f998398a2ec9e0a4783497271e5b3ebc33db67f59b721586c2d09e45cdbb77e59dea5f83c2e4a9e7fad83769ed0b29c89a117ff7ef7172a63dbbaeee3c1f6c6ffa92d69cd86a3e44639f718c0b3e713c17449b0ecbf674c8d84d1a33d7a96b4527c270c206c00aba5bb834930469d7dbaa5019dced9408b12774c4a36361a1d9bef01b95af6532ac982345cd45f6926017bb2189031aa64af89b83ac99db3fb349191de25ea482c88f3232d6cdbf02e445f76bc0aa19f35d178684c4715284d52ca3063e2129dbc757ddf36c3fbf08051bef13c498feddcc27591b69ba34be65231e6e4825e28e6cc626902e1ece7a4e08cf7e6f029fedab272f79c928ddc22f78113b9cb94455afbcaa7b7c9a50c1238ad2eb31adcc8a88a4c02a8fa3d90ff586f8a45251b485014a4e8f154181f5ec04f6ee3de1d7c5a0088d4ddb1e9563dbcf0f9c0f2576d87017cbc89a491317f388f06757bd8cb8a34d7125e2c66d7c00602c785104912bb52e9ef681e54425fb384cd443837338cf3f093ee407f3b5989c2d8b7477d2765c1cd97a66d46f1dad4a837389a1e09d0d4a6b56762efd058eecaa8aae088606b8543dddc23dda1bc5a4fa76c94755a7f5ee314ebd22832cdd17b05117919c07dae55aa8419ddbc9ecf4747e38a9780c2cec7e956a58687b082d7d873f5ef4258392b8713b1728a6e295eedc87cd848c3f8fe88340e2a32629a5d373512be9a46b2f6b286edfd3b9bed40c55dafae968340f711d48ebc28aeb93fbcb039714eb11d698a5c73eb3058a015a4d0e01678742a312b8b9fd2a6cf7eb26078cd4c17dcc903d4f51bba698167882912c7f7b6417d30ca0f074c628a6d5b16356c813f592e568fbfff725900a8313fc528bdf6beb60cc5b445ebba573ec49721bc9aeb6025b1295eb536f4287c88d3dbce90d5dca6b9c27a6a879f0032e01fceacd348c92832003bcac4e766888f849ea6e7636687b766ff8bc93a94a7ce3d2d2c8236ee3409404c3394e807c108c3f6e17d69fc3dd5861f95e959049545a4422957b11c65ce6cb926c3df73104d19f67589fdf09b44ff4d4cd0c7056125df52ac7952f8b6800652ca91452ceb11de8ebd09b52dc4bfe9b60559ba1547fbed198001637a4c8abb24b78964f461f910ced77c71d114fa44e7dcca920522100c8470e5699ee58338e715ea09e257f74df146e9b2083b394bab377e472b918a8e94274595ffad4f27e7660f5e29f2c292f3364b2bc758f741f11e215ed45427c5f512b7216270513524814b931f50b1b59a89752318a23b927d432b2876bdc663dc04cd30de442ab832d3e20f77ebbe261d64bf4124f64f6aec0100216f453420cf66a65d4620bdd74322fd270fa502c7f4c100c39c79edb4c6d09d065036d7cdbe0e8da3298f65408f6b010e19e3e9990f46793e32a52713991a9b88a3814a80ae52bfeca0f60388eadf5c51bdddd5853a591d56f9008e491e11710f2b722ca +expected_shared_secret = f7331b0a4674969838482b7184fa92e5246f11f5b5e284c3e179effff7eb6329 + +comment = Official test vector 96, seed: "b3ac6503206accc2a92cbc210d020a2654726911d11ce676aa04feaa08af1d20c654e4105883ae470ec3ab299075d420" +entropy = c4f15bec2d7701339d0ade4835193bea3632edcf89e74992620d9eb623a0d0d4 +public_key = 4d960c98359f5719b20dca6d1e2916f2829e73f79b55b468170b64f2f8b0c788796801c8ec244e1973c7e033b768414c55d43079b2711bda630e678b184a70dd161c4dabbcb91c07fb634620d1450664a444e82d22a0a4f54ac6c7c02d74120b2ce205fe49a139b9c8194341f4295ef126b37f3b22e35792a8853b60eb3f7ed01314491c4451470870a5ea5b1d23442019bc1def547fb8935ecbeba0833228b8d7bf2a4aca52436a3f993f6164666ebb3c38317bf5b48cc7182c00d58d4a095d0fd4c60e4229e77803c4f38f22464c7a4259e45ac71e8ccde6e5738dcc798777317f9847f8357dce21b24ae462d0465f1d58203f3b8590d88deb9c6df4722a1420a9ea0813ec3777a6cb11ca0271292b6c662a870c292291164004299c82442a8dd5404e74cfbcb45175237ae5649f7136cb47b9c6c053203f265bab420eee2c95a5960f8a87c3333785e1b89ff841a6aa5aa964f3a853e512acabb60e29c3a4810df33830134c0e49bc5e1ba41b07b671e1ba6bfda82576406e6da854920a46914c8ea986b1d6a0328d4a450fc0ce698b9d16954aaa0c52b6f2b5ff7b5347e84c3af403e9b31ec180238cd5af96f5c6f0d3644ab51717f7255ad6551f44378294778937cc56b610680704bfb37e3ccc07c5276777e37f36623dec8225388c3a5a2c7026eb902c63260ce27ffe657bce34a47db43667b9293e04ab9677b6fdb0b0a429a4435a9f5624628a2c07bbfa8afed562be4233019524e67cae6f955226437433bc59835561c462071ac38058c145787c242d4b6dc055170675190882792ea49726dc8b2cb638763784d3c23e1791c93a55383a8c4b59643626f8948d228b670312893ab3ce5b123401b1b24432545889d4d124d2b846070c1663b87a3475c01adc4f4df286fc91c76b018c05b5a26a696df86c4b1fbb2ed3050cc9b54ca2786839f854b9461655972fe21c3c98007a693a4d0b8aafa3ab73f1c411dd283cce59528477b6e089847ce6518f29b523602f80ac573618070bca649efb84fc3947d43b229e05682914c153809521ec9b7978a6bd667f59b18f1d986222dc9ab345ad2c7c7cc5799c15297c22c3734df18a218c5bacb364c9136b8e055053567a1856c21b96a1a2723913c98cc364bbd1fc4edef37e1853c523727a6c677ca4c82ac4d49238e1b60c1531d1dc9835c4a96124a0011c09350353aac4568a84293e8666f6016e56c38371489eddbb3df3e53e6767bd01e231eb122f13f59a83a35101844ab389954e8068f6d7128c738ac1774edc6465eae8ccbabcbb41271467c407d36928d9e3174c99665e3a9af0fc1b2733925b254a3aba050ec3925dabc511427c0b2930bca63ba7629366c1ba620cc0d7090752157b5d70c098745e37db7316056c7bb37c024226425107da8ba0e9c30e2606752f31a017e50a0e10c05332677ec851eae14f594a55d07392c23a962248ccee1221feb2c8f801860892b33ef2247b801e5ff55ba97675a71037fd133133840050b8b7914125e9d30165847319eb1e483005ca0bb8338b75eed618c47408d0260ddfb1527640a148f29e64f65fcafc59a8715a8126830024767009bad41a3385c0173be51a35f3825843b59fe06b5fc03dc21f6d925b9f6d92fff175c9dd625bfaf502b4e2870961858852 +expected_result = pass +expected_ciphertext = 9ce63bafe883f7e6b5932e071982bc35f643185589ff435bf663b9fe433014e07285e8be328729d3d01079bef62ee178fbf8e7d9ed1c2529fd9912958b8f120dee444881a4634d0e96973b8c47c004b373d513ecffc97911b53cf0686fe2cb8fd33eb7c0f50fd38592e9b7f73d119eb8b7288e7259894812acf13f81191f5f383279dc7c05f290e580f6e0a2e488a002071abbcbf2cefc4bcb73eaa86ffc1314e120b8a96edd6c0ee4faabe7037dbcc63d8dab849a55a35f39e75502c961f1051008ce4c9b0fe062cbfcb6bbd6d99ac1cb24e979d72d39e057233212af4afa92a3284b1b272509d0aea213d5f18e5ecee943d90cf8bbdf9061b7da7329cf363e54237ebc2f07de66ad90cc12744a74c6e5d577c8517e140d64bcd40018995143383f5ddad2f7828163d25f9c3af254119541fbd304b96f70a8cc9822087cc2ba3fdcedd9529cfb7137991dc8842c5cd1ea2cfa9b831f507c04ee4db010780fd3703e54fe7748597f1574683f88c3a0e8a5bb36695b7c5b1d6f566f318263f3777db8f433019b287ca1b8406e7755426e593134880c908ff7cab24f2c8a446dfe1bb1b51a546ef9ec43ded91f7ec7f1f97df2ee83d8f52ac9e174639fe9591deb37b9d9f9dbc9d1be6b2ffa2e8c4b5eac3332ec069e9cec31bc7d21c5253bb20ee61ee701985a8a73cafb73b479cc19ea62b998eb85cabb5b4ff462088255ce5cfead669cf5e17871733361a9e25392a8baf8958bcf08da7bfb12b3b174acbdbb8c9cc1a87b2f6e48568f19b1ccde0e9f59ef624dd525168ce64dcf1e63b0c118a077cbd7b48144234001910dda0094e21d0abaf3741aedffbff4dd92d291180c67e3a253799118eddccb6033e3f450ecd84637b563dfa9010a2c07e9b4d4d55fb71c7cba9485b612561ab34566c40575c4c41eb9ec7d0c08b100421b7e07af4c864b7d8997fe4458867ff0cfc02b001250eece27b8e8b71a1a04983193520762f4b7c4d2fd289af45f1316f89108f19caff5703960efb9ba42823a6b9d9aed333e37e5989c8720341ed60f4b47223bd313b56e6160fae8a3bb56f97ab1092a7e36e2811226f9bc14d63bd3f48db4fa2abfdc2b7b8215d4c5afa301783940d3c9f8f0b48ef9c35b02e272a7725c77af66a4c3f43f7da5852569115857f7036f7fae04db993d6a016913c8c24912eb8c6c68159059fc3c3a4dc6c47da86cbab270506651e2f3a2fd268f81aabf83239d885c886fe85df698f72d019aacae6d59eae99e2e1b10e77207d047659b00bd0cefe7d675d7b4b50669056e536539a0c29d35633c6a059dc09abeb473b99a85b067d665374209a5e2b729642d03bbb9a41df15d8a2f12f65d32c965c0f883c6acce98ec4692cf48c55c7cd4e5ccca0e93048600b3a37fc6b2cc617f03926d033c2b6a4255968cf927c665c601a9a23c58db533f67f65e6b501d42ac65365e14c0180349580ed85e9c5c1f4f0592644460027830ec2470287d6ccb55ca108d34bf1d373f27e46b64b848834c85fd585a239d +expected_shared_secret = c89d62938a5caabfd5b30d82ea88aced52ef5f8ec0528e59a654e1f6aff1cc2f + +comment = Official test vector 97, seed: "59eff60b1ef6185db34ee1e3b1dd2f159106ceceaa79beb74923b4f5623d5bc52dbf5d2594a1f7c6c64d12cf144e9ed4" +entropy = 28878249e2ac2b6263422993923a0c8bd05ce56e385ed13c943b03d226856947 +public_key = b49b9264faafe731c0dee965ac981965a28ff907ceabac477e2c9b6dc95aaeb0531cbcb65d8b3f6251be17ecaa89a5b57c1198ea66af1f4461b91c360e4531c4d49269896107f10ed1f1070e68cddb2a4e06c387f3126087a71a366a250b450be1567dc957bbd034b66ab65fd4eab2d89b8481ec2427a4af3c1b861c799263f492779053a0128508c86ebd6201c876bbe8ab8053b790314047a1901c9f327207b2130be5bce8504bb03817a380975cd81fe0c0416986a7b74a16a21146636abe4d2b2c5c1223d39265a6845804d49e5f160abfe3ca21a345b5d044afa5636c37b976f2894869bf4500c62ae9941b9b3c3e6064fec351268243fd75bf287cae8aaa9aaefc1cfba1032ad2623a6239a7f834a4826f86132b59ab24efc9c57cba929a64ba90271b987bc08a913298911650399429e9bfc40742df735f7cb935eda73a41f96caacbb34324b29e64348c6063aeb0bcee9066028b3340aa147b09c42752cfd6d491ffa497e17ab6c0726aefe59c2577764a1a996fd879e58c23f1c0ac9e9372b3f0be42c829b7b09acb722e3189a2b3e72124895ccab565dae583c6c76c34c2c0075568379639869325f6e92e0b91a2d4100b2f4aa6486b756cd521e1b781a964a21b8b0c72637a2e4299fe15c1ac275fb077cf42f36453e7603c91a648e09cbf128ed188639b7247584b333003a2175bc587925111654f24680c540b32643b035ff38bb4598785524504ebcb26163d513867d74744c8b562bd48989b3a328374a125ca05fa962ac08b0d22277e578206a165a9e3d31a084b4492c664448aa62986b55fe8c8420816a5a9c035644f592969fd0951b6e9aa57303d1f9927ff6b3de99263e2e11cd8317cfc899a45706746e9850922b9a4f9cde515623f3c48b86379c969969934ccbec4bea3e9796889cbcc56285e9a85f0b3471bf9692f3c72ffd945089b9a262ac1a8844c38c807f7274708aa0587f94a107089a99694fc627291c30fd6b0430eca692db54a96019eaf89635cf54f579a63048070b7f32dd2c32a18e2b7e8400344412e9dc5943bf3af11b4aa6c328499da7c220670958a22bffc89b8f0091c8665b6605571d8a1b5c934ce4686c7c047ae416bc6e39b7ccc92cb076de94001374217e9b8820354351cb377b4f06b7fbb69f64c7b48f781ded2cfee998718d875eb94866e7c5135358ea4ec92849978438c77cec1ba1803bf9933c8856657c953125eb76014bacca8ec9be6290936130d166b187e1463e55cae3ad85e96e81bc574220ab0cd374aa1f657abea849259b4431f1a00ee59b35486beb09302bf71b4c2e840963333b4a3be37f8048d42a0f67c886de9b47611555495248ad4c587577d45775f52135518793ea14582bf153c74210c36b9251609a4b28559ade5a93203725a475971b92beb88a69357bf83f384577cc1dfb62c70fc65401073c67a66af878fd961bacf46c633e7cac0e5092458cbba0c3b69494c4c0c0da6025cd6516c1ab89b3216bb9ba123040051563610251974a0b11be7190504522a128ca3107938f5b18e4441b52f7944b0e54cd3946c57e7ae3475bec06791a9f5a83eacbb12f40ac971cb475610a0e6c546998dafe5c2ed852d7715b3dba61b94849dea30e28720bbcb90c7af7feb0af619a0cf57d173405c82 +expected_result = pass +expected_ciphertext = 4106b63bd9cec4d8be3ac33234128e2bc1346ae6388357a3258c03ad9689e68cece1992893dd26409f62211674a84155d1af8ba9750add112f33c812c04adb0a1a59685ca91bca59979af97c948d5443c38894543a225f05317c22e6a8afa332f4cb4dcd6638df6b3a0efaeb8f065c576c06f8cfe3cc0b3c823d0dc638e2203b886efbd82e6cf5216a055e364de238948c55187ba2d5503a3fbfbb684cfe76da66ab53f97ffaff0322a1c0224941e8f64e3705a2e4e9d58d022d31e6403329b220546268abc3220bd49db91521cfd149fa186474001c2a86c407ea8ff96ce07cc335b3cb692998ee7929e27e80cede8eda4406494d289f479f15c51d3ea30873cbc9e5ca00ae20df9ee94901542c02ef705e068f589a4056a9521b6e003a345afb85cf66319506ca2f5a75d15baf62c6c5db502afdcdc010f93cbe1d1fe4212d6796f7876c3f1417508480678fe36aeb0715cd76fcb15f4154a7006a073e55ab89fe90b708e05279a9d51bb83d268e729e47a832c2a93642ab79023b6aa81063cc2c82030012cbb2374e005b9f0ded74e82aa174496744434220d74afb7c018b93555d9ceb8a23c5fbe22744d8dc9381d43ebd2c8088db2c699c320f7a45fcbb2003573157a848459f587b22d571b37b94a76575f1f2341085e08e31ec55f330b66ba4f5040b199dc847262f6d87e8ffd3196367beeb904241f7e0c09e9e2b0094a26ef78ab7ed8e7400bab8094b6eb75601427af06fb9a3ceaadf3eabe93a4e3aed4b8e1a72fa616f010bf0642ddfc84dd435e9ed98cae09a805ec5fdbfc740d6d218cc7ba34790debb2141990a3402145d48ad84548d5d2a1c3455379f1c1fda6e6b03cda2c6286f9285e9f4b77aa6c82e7254ad5cab2c9028a0e47084f1494978d58e2f8bc0ee2c7f2cbb38f7c50e7f60049feb80073493b1cca02a700f0d51901869432fae4687e11639144785a8c53b285ab1f9cb7bffdf5c5bcd322684fc871759e6d43bd61bd450cd69ee905724111e11f3723eb87949bdfdfbf769b76e5239814eeef6d5ad7fd65c8e0c32015868b9756f7f96afafef2861506e882043d1f947e7a21572575a475b0ab0d11566428cf7714f1497ea85de68282038563fe43e72ce17ab525e93265df6d62d0254f9c69ceebbc0fd6a30e37d2ad218119ea8d4aa85e302e4e70e25e2428032c00250b14f6c434f2b02557c4d8367792692fb31e79259c76902bcb37c4c00a1beb4ecc502b7c66412358f93382ae592a25505ccc42fc8f02e43ee8e8ed6a3d93c2d9505de290ea8fca4519237b7c76a6ca6fecbaa47e7f519f68f118ac54443a5e7ea238a61a1348ab16fe8bf1a1e39462babacf98e39fad4af8033a0dac02c806ef6715d6d9978e9b91d28cbb6b894898de9cbca5ef3b49ce91e19e23be8b75b187bfdb14fe943f30e11f253065df04b1863566e456c0f4af829d3ce3c88f728bf08e4b38efa11758a308fe6a2a45d0deca930b9929a51e72b7f8da6a45596378e071f7bfca861117f534573b35e994e +expected_shared_secret = 204d9272682710b52fb39b1176af3ff737848978770310df0c67996f6cb596c3 + +comment = Official test vector 98, seed: "dddca9dc31bea737d3f474e7560b37facb2f53c803e768ffaade7669ff94b1d4fbd17068cffd5dfdd24aadada4ef6b12" +entropy = 17fc65f7fbd7c75ceec421dee84dff5a8cb22764a182db17e0ebe857f54d60eb +public_key = bc962535672a8d77c9eaf9726cc1a8b8d87d61b1461f33b7f7f5a003a8657297cd100324fea561ba879ffa75287d9a838275734593abc2b842d9353906334d3f9324c7d00eed794c78310421db45cab6900817348d67490bf1485e85a3dfa255694915d286ab5243b62d3a91f8493f0b19626fb89c0b9109c6e1084bd8c848c06b3472a65a2646dd89be2d922a0d2c5e816652c826854ab36f44809ee56c9f7e26a1dc30823535997a05255756704aa1029b86601e2853c2d34a192a9b2b76b31c69c1a048a76a6a58e48bc8e512b1c767347ae28ae046076c20179d0977d2d54a3f78add2ec6bc06071d9447f0461846fb1a5e91a760112424082c2994a98d07aab29e818fd15134de437c7fbc59469ce8ba80545a4a5bf337fe142b72e602d8a1b3009cc95975759ad38274e234aef0552b8aa65cdfcac975495a84c124f8426a9c87d8db03ce48b0382642cb9e31ce210b774724912b09b16d88ae007ac4542c092f9bbed9c262d823d9d5719b357821d4c245f384fc923cd334b9dff579e324a0bcfbcba61fb7ae9f69b3ab88693e005ee32bd1a6a3ca950a22421125391a060276b07242a795085d0098906969c421cbc469128fb5393b72590fd391dcdfa3cf87b9f7a4c6cc3a1791ae1717478a5280a3b7580bbedf88f0dd7c1c09aa67d6b284334049398ba983bcbacb8c56237bc3efb3fbfdcb358a006457832df7a01efd937e68b3299580cbe1c9f69e165d22683b3721e4189adaaa91846b7717d41baf8d9a1dc76c387f0b55c2552533326597466ecf06aca624fbf73226e471d835b0ee4a24a8f1c5fbe359c61d974a4d57c2f7c49822286ca27116839b784d6782c13b606b87804ba0969c7c47c7a29ce16cecff5514028c3d84944ec8cab4b4acb5b681723511087e25b8ae84f3741a2de6cc21e7a370b35c255c34555f29645d4b420494c4d993ba3f092ee240f1d3691753420891acfc9421c361ca2186b563ed63456096227eaa738a33ab56029976c1125dca790114aeb83aebcf271ed59bbc2e8377301b53d697cfabb4c6b40bae19b6cecd421a1109f9cac7b71c749e60a2005a30179c393d5033cb4f8795de4c98d91538fb9a8cb1654b1e6a82918471470461f54cc71fba50deb3e1221c55aa616ad5262e352adb7a89ca04557a2090fb05704b9521809b8cabfa325892ab46765cee83850586918422212c812373a1c6217ba890b4c5310f7b0d5d8275b884aa9e4914c85023ab53bea88ad4281a7f501a87534ac1d806b0f8691e9f1bc7171001043015b391cfac09b5fa88f840c63194632bd5a012b34b50441ba08c879c44654f136cccbb7114f7b4099016e0193cbbae63522927df4b740b3ca5b32b741ea15a47370b98926a1f90618f5235357e8087443c93444803dd22bbdd5340c876d41f3ac1db59e9ef17db71369a315600fc6801a54483fb015ad3766284a97cbc241ad73461f4b2a0f6645ef428805762a6e57474d29288404ad98fab63ae95e25436626bc66ee10c01e55103597288ac521b463886f863833948455319d3455110b68bf7bc495d1a922191a1a230a5f036c3c4ac05ee2609d09891ce368c01f037d818805a566193a433e924b30f4e86dc76ae2b345932a0e7025f8ce6101884469e31aeacaf4d77e3f1201bc75 +expected_result = pass +expected_ciphertext = b1ddab92816e9b3d6c9414ca303b6d420087f1f154d8fb5ea6dc1d5508e37f6edeb9e00b1fcb7d14066fc3585c6b61452303e8f76c034cc94efef7c29b703f2c5f997b2e3e73ced4e264bb8d940cb26ee5e048c7baedace34c3404752746593b40806baf5a7d13d1d4f43e7d178a85d3edfc37e840f7d7aebe4748a4a6f862073e18e916f795fb9305fe250574f2e7de19aad589e2a2640167d49da76c63e0dd54065e83345c9672367cf0e64596ef1357c0bc580ec438aae9b9293eea6bb2dc43eb39069e6d409ec1c61633c436959cab8f564858a835fc468815fa445c647fa6b4ff9b32a5fe4bce0ace00e15511108feb69fd12ec24900fdc7ccbb3ace5677279b33be301ef70247b625315439c805eb3f1d68ab316635cd5f5eb8e9ac9439b5278bf7df4e58da1353508c6601af0db94691f15de3d2fa21b5e2ca7052330f55218f207fd956b2aa774e0920dd6ba34041c0c801b69f4c3feeb1b6d64d78fb8d3d8b4d13792ca75894c28c1f172272a99799fcde0c9e10eb3671eec271855eea93d50e8a341ef680056eab4da00cc43c38207aec9d678c0d00b64f695aaa6ae2ba75d11f275d2985ae217514407c952084b123219c2a119d2257c1ca1b635d770cd1a01819d03a2d6880d6b0ce1b8bc59da04ade0ae64b543fcc6e96495bf5fb5d88807d5582c36088883dc14bd616971f1d98ee6083dd74a2bfbe96dd08d2711798643a84f07aecdb2f30797cc98939f61fd5d5ab12ae0dada77ed40c8187ce5e505ca5e8da98c7f5705c252b0a6ea56d8e347912b854f414c606d36bbb60aa9dbf30fbb1152afba2d335d82eb865a38baf10a01ef2cf5f16f06bc826b1f980ef49ce6e7e411a15750adb337b3d3e7503b3b50a3db53ae8a7bf59f26fded1abea8fecd430cbc72f4c6b357bd30d01d4d03d70f07c2644282c133b0408ede5a61f797b01d288d9a8326ba620f071f4823e73328fd2c18e6a3376fe5b41a54f63632338b70ae5e85b7bae061621c35c609a6c2754229a57f65d8be1b0889a148fbd19d58c002bf5d6e4651a3feef2fe29dd8732211e9dc7a68f8e2341c33a573e815e67026bd559c398121ccd61305961194f69ca1c21debc8caf921f54a2ae0de9285966a9d0a8720cebbe6d18363b724be75e402da9d56aa1a13ff4bbcdcff699adf148998f5e47f6ff9a43355687c8c7baddca273b8bd337464a42fd11dd33feaf6f3c218be2b3a3817019a4e4eb9cc88529285274d5c5e5c2329a42392cc28aea4ae431dc29e6d33a8542fb79593d93fc4d7702791d16ed6934e6d1473dfb21305657d2e57b5032388b1164165e3f6446c024bde67994c7d1e9fb32ce1a9ed53094744f08a5e9fcd34c390313555ab80a08b45f91e2137bc555da994a3951711eb699f2c0ee681e2abeed06f017798b5fccb3e0a8ec4eb880deab51ce1b21507d47c3065766325f03032b8b747c63b0feed45cbf1af5eff06681096f49b2f54de23430f165ad9cda134bfc9d1554eea7336094381a91b75e861d39416d +expected_shared_secret = 76e5f7623e3e867fd12f28dfda4311f7cd90a405b73e994e857f693573fd2b8a + +comment = Official test vector 99, seed: "2a6f7386b815366f572aeb6c79e272cc21b7095fe09575f18072c9d677da23bc9c8a4bc393b7524604d299bedd260c8b" +entropy = fa0489f3730100609488e951e6aaa15c0f193bc1dbcfcd013bc418d6c507b176 +public_key = 28441cc07c18856568c4fc0eddc04175f564bda148788608b71756367551a5709127668efbd60b389877001b948f2c50ce62c7ed63122daa7c1889400a4175ab959d09ab124bea2c9d3659b8b4861e482eded950dbf57a47c87f79fbc143d20420f4162f711963c47dcf7b8ea7faa329d6a70f601d3a1b15a7890804917c84477d95f916a3761e3d94a0b0d69d9b7c39692b7f4acb9091f87583810ccf67bdf86c4be8f08762f2c3428646a3d33df4b67eb87a2662353a208403bf59334bd9758a9439f8d8bdd45195f2255282a73456d168a2b249e8d180d5b310ba828685b3a1daba2fb88783bb5062c13b79c2b0c3a10085664377eadbb477329567d1158882085850b95697248c6271f44988218777d33823ad70791bd40e29825ed124b963e05d06547c740a5ab7a1488e38c464b53b6f016ba1b7648a14aaa111907846c5df162f61cc62747386915724a3b054e868bc04c934d64b7f2ff461aae980fa806cca7a9c4d7255564b420887946f7a72e4d1384d8222c70330b09c08d9a70aa176529f0685d087b8f9eb464a776f93606b05d0729fd2afa7969eec2662ebb7c7fc821d6b5393707acf25c0c2c81702cb195f8cf730e8a46442e91e18fc7577f4aafd6933450491ee24763bf6786d794d889c3005a323cef2a8863c7ae00998d2e3ccc1f5a6c8a933d5d615ce82af312990969c6288b6893c42142ad87ab483362461b87c641f646410ef5b393283230220a34730397188920b6873f16478331cb22a5a2c73273d865985533a1f8e109dbde719c10c8ed87a831ab65562751ebbb15d3d5b6e01f78db26a54e47943d6b31f916a552ed01a39f96dff820765d6ae52265010545162d509f6ac3f9b7c0fd0ecad4008732d6a9df9449b2017b389522f11870704127bc6d018e0a420dd441ebf636c31b3b63da9c00dc15be0b3188371bbc855254217b99294815d78194fdabcd1970e31e38d37b4b1cc69bf428514f50ac9bcca9125e6473028571be535fca274651752dac691ff8a28c555036378b260acb060faba9573b0b65cbc76b892425294d65658f4a1b3309b424c6865bf1ab307b88022087f97f6882d4360ecd91f3d2513059a784bb256e47670afd5c1ad5c177142a2955b082fd0b546577ca5286e0f1c85af8b0bd5650038609e8ec8344e6ccb6df93a056644cb89294fa19266948e9a561bfa66517a900b67f6be5efb853c703ccb4a296a493c24607a6ac4a749361d8f738080a80ca62aaf658b6a972894e6ca402af3c09d2a6e9c181005e0c4d193361859011173bc8b97755fd1085b52808373b29733a7d0488c5f890364abb9716920c074645ae023679bc9c2b3ad29b9051a94a124a43688a1027c35b90f9303664aa37aa92284f97dbcc7ad0f12b5b6ba38ce0a07130110518c74ea36ca6d6a44399a3983101458f926e0bb3357bac5a294446463814806ad1623185f295d27f2c913c9608314174b2bb8bc03a92db6cc6f044d964a7e3e289ea8f064d9b5c0d0eb43357495d09c0fbc4069903bcdc683763bc4c6acc2517b7c94e3e0265029bff55773421bc6143a38f57410bfb50bf21bafec948548a87667d95439bb78cca2c9da670beb4c816478683b5487a4ce6401ec27a1605f879e2d9c53bf27e165246401cad7840a077934b8 +expected_result = pass +expected_ciphertext = 968bdb85e8be748513a831e247218d164bda5f1f8f433ac105e0798820c1300777ab82383d265ac6c7464c42f2f1b82734ce4208cbd57abb0a0eed81beea32d430ad955c6535d8576a4258a148d8ea33449ccf1e63b4bedfe1752a6006afabda3f7a6f6bd81bd49065357cc1a2b4252faa112997cb4d8ce361dd76c9dc1015368e8919fbb67709ab3dcb2cac18ad6e8c06e05d1586db41ab3555a43e5b0631022d04f5e784874e3a68b8a2f3ae31f49279fcb83c4fc1600870b1d25e433c68339aa9a5bcd1985da955149fe2fccf0e1c912b435beb46a083fcee0c924acdb192f87504b27018c27a2db9c71d4d870676631b4b94fb023df02f6fd2b97f84741d8ebbb055cb786d0734b83cb2bbb2f094a80b204a5a257c770053e94373d9e9dd13dd345fc4963fc05243ae659ab7be475519f85956d2640068e28bdcf7dad6b44372d1d032de309e4e228cb932bf12f7da347acce0e24bfdd89ff7710afeaa973f735d7d69574dede21e4099181d0c885be477d176b19e79dad497f8d46b8843456a5b338c37aeece04596e6ee4b74dfe3976449627deb97e2fd6ce4e903ba2b0adb9396846cfb0996ea32143c4188abcaa15b3a0f38a44625a52c62fdf3bb9cf81e1e6e0cbc102e251a91eaefe8a3e0c903414397ea25321672985bd8d91e07e297b7472e04fc481ac17ef4a61a4e618d2fb3aa728c80206f367d5c44c29ab4704a405cdff7c6aaa34db06cefccd64ef24370ba1c0d2204069c1a48f0556c7664cdd5b80600c466da748e4c774a4784e15234c20f7258cfd998d764eaf8359e69c3fab08b148b634257ddab72777698e63b55f817e370b804851c40b642df365fc97f73a0161140b127ebd3affa31da4a2f59918b095ffd877739e3d1d7af7455e99a5162c301a66536d198d18e2db6876e7ad5f95422a3e363dc637ce45dc663a975dc0d27b9e92008df453364256c3c12acc52e7e4d228c931dd5fc4465151a4d7b453775ea131dcd06dbd05f8e8a9001dcca04a23b2d4d18abf23fb50484a382e1c07e33f9a2fe69ab38ccbe51510a9389c2d522deb000a66d406b2b09c29fe4dec4cde29f358e813b72b38ca32afbb5990cc37f06cf18386e39a06cae8529400fd479152387f0c60d301344666765405ef92b98a7379e983ee89a5104cb3306a296b53eb2242e6fae55f04cb29d0c875bff6b1856439375ad697c88673e49b8753d4180db24a28ea0c77051d28752ac9cf6c571b129fd91c3b0c79b19a6b1afc1b72d1d986658740dc01a7aa7ac69144e99af53089e072be0f2d0e173f579f91acd0047d28b1259147fedc28d0e66589bea1207479f2c13ba9e4896d45a715e0aa9a401f5b5a35e29bf1f791d45ecb581063d6a82fbe7f623ffa5ebcd804932c81904a4756ab940eda4c4c7a4b69ea22701597cdeecc857b4231fded57126cbd5fd91da14548f5b82cf33605abadab82565ec80bdc6f63b8366f08a2bb9b252f33de69f13ae4dad178897f8ab66565b2e0ebc143427d35215ac75f4264e +expected_shared_secret = 874ac966970f29935db73c231e71a3559b2504e5446151b99c199276617b3824 + +comment = Public key not reduced +entropy = 147c03f7a5bebba406c8fae1874d7f13c80efe79a3a9a874cc09fe76f6997615 +public_key = a73cfd9c843ee9f8313ecc7f86e6f94d69e59d9a879a64fe2619f2adf999051cc4530dc9ffdb60449c49465979272367c083a7d6267a3ed7a7fd47957d2e9327f7ca73b4d07e26f7f01be1cd8d573c15aee674dfb866fdfa7bf40dadad351ac4ac155b97ce4c8bbe3dd36fcdfe5ec4bb5572fe6e6554de7bdd53dacbea3e96fdb698d66990ab51e6dd3783a8b3d278a5720454cf9695cfdca08485ba099c51ce9fa7ea7587c2de5c28f6d9a81852602bd6051ed679aa482e6ef61ec36e36b8719686f17fd74c54786488f4b496acd5a8caf7ca3a77cce73b9669f3ca554e422b9b61f475474e608bce6c9b8587a33cec5dd788f88b36b717a46965635deb67f46be29ba9d70909c93ec8db43cfb3f307d443a7cf37e8520e7bcfc416aca5fe8c7a9ef62cafbfc756ae03278f0ec66dc20576978f4ba6769865b6d1d7148ef6f54e5af5686baf906f994ce38a5e0b938f24add7014df2c03392df44d1b1e4a3a7ebc6161449f73374c9cde40369343e9f95fd05e2845c4a46ebaab6ca5492f6800b98c0cd8d3653a4b1d6e6aaed1932bacc5fefaa818bb5d2859ba5494c5f550fc8536a9c4c18881516e7f90d98f7bfa99c39bc5dc7cf3b69d0a223f9ab69d53abaa64fde63e859a8b3b3ca3359b750ccc3e81dc7ac43c8191cb5d68870c06391c0cb8aed7fb897ac6be7fbaacc676ed673e4c83630e89448c89aedf04aceb23abf2f4d9ef333c622289c19bfe34e75dc45257e47475fa33aa537a5a8f778d2157e6c50d470e3284963ca64f54677aec54b538fe62b05fcc824fe1e4e83fd0e7454a6b5a496831769d64024745978cbd51a6cedc8955de4cc6d363670a47466f8fbe6cf3604ae7bf22acdb7cc984bfd8c88ee4e27753cf587a8ec3447e62c649e887a67c36c9ce98721b697223f75647be94f36758673a8ee2ef84455afc7a8529f69c97a4cfd7b8c636c0ba55614b768f6f4e81f930f77616acde7167f5351bc74b47395ee5fb25a23e3ca5e64814c34c979cbdfab85954662cab485e85d87a98cc74bc8fca3deb5bf38d3238480638c40e90b43c756de7ab9e7f12de51fbbe169987b372abb5937ef7006c24f7df36b84b9dde6d06247d42556e7fb498d89e58b0368bcb31d3e79353eb587860c24f2e486e62f4f5bc248edb82c6592737e1de6d2865bd167b7eec20ff4306cd2fe35d52bffb3b5a55a0d8af022d9a798ecdc5874a9880faaf4054c5e8d338b5f48b5b7bd09c53b5e3ad84b047d277a861b1a73bc5e488eed4ef573c8533da0470b73175c9fa50594f66a5f50c4e50054c93b78e86f8b5cbc49316c8548a74fb2b37aed454c7489ac33b3dfce6678d9688fa2c2ed866e2ea65e16b585e7af8618bdf3184c1986878508917277b93f1d706b26e4973bfa94c7310fe9c709cf31a1a8ac8da3e4a529a97f469bf64962d92d648453d99a076d55d4cea824a58304844f99497d1da25148618b3e5d72ca857d2bd4d575b94f85c01d19bef31ebf0aa3362f7d41fd16596e8d8e867b44c5dddd1cda3418967718fe47d0fbf1b42aaee74ac35d0b92414b95863eaadf463ec73d5ae5ecaf79174003ff6ddecc813b03f772e8529d95a4e83da7ab4a3e8f8a8af979a665eafd465fc64a0c5f8f3f9003489415899d59a543d8208c54a3166529b53922 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = cde797df8ce67231f6c5d15811843e01eb2ab84c7490931240822adbddd72046 +public_key = 6de4d6b49b9ca0354680df6c6c0b824bea310f435fbe8bbbd353db5c39889e7be17e994e2f08823a33789ff858b737e5323c6205af41d9835ec0da85c5884a8aa6f10229d99c8c383c28f63238d357ceb4f298405258a170f8e624e861fd1d82d31867a9037e3c9db0aeeaa065df7020da7ba79398fb9fa963a8a294e7720bd4cd9fbfe3f18d63079c4d56bd94bebc4e979444f56fb967a7fe622d6fcd8d337a1eb02c7396bc64405f0cdc77cccd2ecce21a734037cb90b77846b2359c30a451bfcfda6e7fc238284e5effad1dcea33fd5a104965c8635ea596360d65ef40a58f8231a827b0e68b6d8ac7e27328173886453a9c91498766cfbd9ea9f666bb4a1e6df992538a1a746df845574f99adbdf3b9744afa81c7fb79a32b175706454438f46b8995e32b9eecca11cfb10bde1ebbf428b88cfef9378a62f8e55d7463dfa5022c998abd6354118b5116b3bc20d4f0018e34b85a1cf2a9f40aae0e14b6d07cf6d8e355864c35bc71b60d5cac33b5e3efdf6b9bb83bc880983682c8fb8b8eb6927ca52e93835956795488181a8cd83bea50ede8a25f35e2643cdd77cf82f8de8bb99624f13e418fbc8052c4179b43a5998be9b2dcd2d8a883c3e3ec38f59830fadd657e971c88cda6d7d3b8d52519930bc5bc71ca465245fb4d036f0b8d983b9849ce8b8935f1a4decd3f50de7b0cfcb49eb7b74e0b5792ae97634bd92081c3c6bf58f1b34fca086e0c3387098ac3f109d43901c61469dc4ebbc64ce1971e824694a999cbcc430af9f3a153fb6a5aee1632e3c429481395af7006b9d49cdab590e823d756bfd8c691a6dfd613594aed8ef5669bd4e84952936d6969f92467ccac7f688333b3f48a39fce5c42cacf653886a5adf4747cc943b34e6348f46df5b58e4916ba64e9664a4baaa4eda96534d8c8f5d76d2f6c3a7932c42a846949a2a26b4e2c55ff86cacfe6dfd1ae23f1ab6cfcabda557648a84934ef077a799edba3593fd2cb27763057f19f5546cf1881942fb9c63974b42fb949baa491d97c710fd645886c87086721d3ca2aeab441264b516975ed0c6044b4f58545f8424532e4e7f1e85cb0bf65c2618fc790765b0639e6fac4a0dcecbc2faddc707dd270838e2e0fdfe0b9d7e46e3dcfed49c44564046fc981af92f123c6c9b591902e443c996016c44d2b1f4c5925a8e0c48e89cbe67b1f9fcbf67adb89903f1f49f70f8bc176bacd8ff366139858e583eb68fadb7e4e79b5ad1ccea6f18754e20d62472d968d17d2e18dbefed4f5bc16b650b3d7813dd4c57590897c87e65347f32c324579d51d798bebdb421fbf8b2d2adc662444c7db32bf97845e8ff5c7539f457894eb87606fa85b5f8d4053fb6ecdea773566c006e540ee75e01d99bf324e81d666680985c78c1d3dd01ad40dc69cff389fea8ce8e48a363b943ff14fb476dc86be953a5935d76cf749a62a77aa4d6165e3edacdc3a677b9114d8bf84b43f59f647fb5df3545e40feed4286afe1858d9c5f193a7df45f6218785416ea4d6754db5f8f3c7ea134aa487d9b5f7cfc68391d8b8b95b51f5540c9ea5f29a9df7ced7efe6df461033f1047f3094ae6dd96c098977f8143d249183cf35a63694ebd1a9b9796f13f56be785d942d7eab011805cf3504fce325b6a5ef1aaadbbb11c662b9d2 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = f43f68fbd694f0a6d307297110ecd4739876489fdf07eb9b03364e2ed0ff96e9 +public_key = f5a35b4ec7538c7ff89eeef04dc9eac59fb610538c93eb5f2637ad97dc88f0035ff3cb735cebac9be7ca78b4e49d0edc6da3f8316de67e737596c7e1a903fb0f79d9985d55ce6632f4c4fcfaaf361cf69047b5bde1868dd745a82cf473ebc3dd86b7e793364f71cef55b2cf004fe66683c936a7977df156a8415ee69b95e036e6dd319ddd48d86ef3bc12353bad25377618965c39edfcb9f9dfbf46f2046dfc847818c09debc044eed16b3b915fc5d7da5a53d441e53a5527a689f49b35cf8fb84e6d57d5f69fc6dc710c5731f53ea970b86442ef5920f77fa7c310b2f85117b47ba5d54e4174a1fceeda3e3c26bcf5619d36713ceeb2ef7405bcb943dcae0d51cd436c5dde6bd4d96488a38f53df37895ad2dc10d959d82af9fe103eaff97e831d93c54654173bdfe65599f9e9fdab037438f6f714be6c7d868b66bcd3c31c8753a16f318ca36b6e59d340b9696d47c390ee6104765865353a05c8fbc5bda62a96577e94c17094de269d06f169e75b8919bb4c37df6787b59bec8fac999b9db741f3a5cc8772ad67585c879eced5b5c06afdb54dadfbc4ad50dd0e634822a843e9b165f2f0bb749ef31c1edceeca8806046b5dea7cac614a5e2cca3767556448785dbc739caa9c58fbcf91a0bbe96e9ad36a4a1d9c9693a6d3bcd76a81c14dfba27a5a3aaec387cac9d2bd86f6ef468d378ea6d39abef622fe5483673850e5eeab64b892f3cf98548f2eae76feaf5716a76db56dfd20dd3323a25dceef9ab7a9f5d2ccd9cc6faa31727a5912a7f5f9d51f8b94d8866c4da173d3f2a388e6c44218338cb85702ccaff603cf4e1788159cde29e8ce5ddffcc6ed55c54b456cadcd7d179b432a5aa63e8ac5afdb6979a833d99c13badc56cb6592813fe303d583fa6c038748ceb77a91c73edd09b575f23e26f1447cbcddbc9c85fc87deda44ac5fea5adcbb599a409bb1a67b24ef438d85dbf87a8814e0ff549d9f56ebef86dd6f3e81546c283b80cc88c490dd4678ab3548da6da65eac714ecd62efd5ade5a8013fc28c6ea1bb3b8a7267adf4662b5963468b3bc5918418fa8dcd7db3946c5a67f864dc1f3adeb2fe42fc7efda69de081dd7662b5c3b8b31af169a093afe466aa01ae879641bc4d1e6f523ccaa3ed436cc089b272e456124f15d1a9ef0eed16dd8ed542d956fd942bdda40f4ad33e527dca7afc57dee7eafc97aa0959cf37b92e789636f159fab8f7ddb89555364dd52b6eedc1b3dcfcffa733ec48037cc78594719adf334ddbc4fe6b2945f991e2ba5d42fe7468dd7057b9d3c07c39b7c7eeedcf22d54e5d6e9f72ed5db826fdbc607592947c86d36e2e434c22523f35536cd090ed122b97675b89f1de58130eb679748df6b68773dfbba0664bb7caac84f8bd6711587c6ecaa3845d5f62751c8346bde6dfa58e9326e5add2d39f26f794ad0064b2dfda56e6a67c18b331f5537d2fc6c3aeb52a5c3313118cb7d159b848fe58c1a7bfdcb65d426458edbcf8797383e37fd3b18bee68c4d75ef5751bbece4567d66c7e4ce6fa8e9b886bab8e2a905d839f3df2967914157f7d66dd3bcc5fab6bb74cbcfe5b348ad06f974192cbd61576baffc815999ab8556583024cdbd1c4398f4a4ac60e8cb68627382a145f91be9d78fd51ba5e3fcbc3155b62bc07751dd +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = ea74fbc3c546500ed684bed6fe3c496d3b86d2d6dfaf223969b942e9a8c95e85 +public_key = 25949faea67e918d40a269d8a7e33199d586f22a3cf5a7ac49ea41bf83452528c7f23ee8e0685b09e3d947ac76f407ff89bbb7579bba13d3cd4e36ffcd385eeca8b780d7b6d3343ca7fce958569c4a8d8b97586c2649d398a9f8ab9b63efbcd0b37d37637897556b8aab43e98c144d226ab9284541410e38e03a31f10cbf1cc4bf633c3ad70c65219ceb1887dc92de39971574de9d317b5feb8bdc56c03cf565bf496793a27b2fd09ecca141aa337faeef0b448d913394ec1abbb46a568ba749f00bdb2c4562638af20225a0afbcde9a53ca505d6391d7483a3f814dea886c89879237a95c03684dcdc2d38deb40e5b3a44d316159cbc56bae8423df2fa830511f57f8a8948f58fad194ccd4f6ba6d0ebacc5ceb9d3e88c4edd2f9fe8f62393b373396f6d5e0308b6754b8ca81f53d5a25e2ffc3428a7cfa543a61ff1e93a86b97b36d339fb43a9f0375b2cfc62ddb4c1f76f9dc8deb2d2a50577cc7d5d55a3076640094f938d83a6818a1294edd16648614a6b6df6b5d8d9a8d0ea4a12704f43b9a50ba539f600eb62513a5c7bb8ead8463c0a346252c94f753a3485eb079ad6dd785ac663fc2730caef72495165e4f8e18713c2a72d8949de88ec698f7d8deb35448daedf99b8e09ac4faf694ca71b7bd41bb7025cd4364f48324f4f680a77f145d6a56c97b6966afac4b90ff6dbf5e7507e6a7093c47b5f8ca47d86c767455d645c502e8fcf5b1ccd898d758bea855dd7eb1c9849497fd3030fc06b935125654ee498a7e7f37254084aa1795484fa77926c8b438592f4d7baab58978329cf12f461b1f93aacd7e17a8d774f1f355bff7e507afac63c4abfe585b31f3e2404b9ea9753fb2de604663d08ee53c07b743b23c56b86a91ca341128d3a1f5865e488d7c11fa81895e04495499884b495ea3f458afae1363222bfa94be84e27cc9e8bca44f8fbb9274682188fb3b93bebfe97e27f44d76bd4acab06df4f9b97a8f63008b584d13feaf927c67e6e6bb9933be9486e38d7befebeea27175f6716d0041a6dbf0c9a4364b3ffd28ecefbdc8077c3acae9c6123a20cb7fc0776aa8f2ea582168591c7c1eb146ba92dc9ea1aa33756f5c8744612bcab3735dffb34a89e3d5c35169660dc9b09f7c960a4c4451bea2e66d88e96d5fd75a35ec6f0c3d9db930bd11e03c007ae5b67136ec1c354d405a61014821fa9590eefe2cd6d95de1eebd99dea11fd8f15eaf1c14cacfdf6d6cb0fb7e3ee483e45e4cc6bc88c2987587458d77851e476aea14a94c176a4eaf865d59cd33cbff80fcd521bc53dcc3772d58f58593a5a1f9974228652b8cb4a08296eeae869c733a316e9f6d50dcbb0aafdaf63fda075f2da9694cfcfa29cd4c87f6a6c837c6ef628fa30548afdc8d7bf447953a3827dc3e22bcc7e33576a33a943492a61f46f5dd05ef793996c664a4664b3666c154f90c4dc3ed5e4c5bea2d265a23b89717744fb76c69637e5fe3576f0f46848057f923313a658683566dc8f90ded79f248f9d8ac67d4ca703339ae28a86edb4bc21ebf31dfa970249aeb2ffe38bd479146fe5162da73b0792a0e77d4967bc8b46740cf5599e4d56f48fc9006b799398f5e0ef806cb6afe85f3d940792782d978970256c691434f939b02c14f42b1874087ea68917c2f3e31315e22581 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 64efa87a12cb96f98b9b81a7e5128a959c74e5332aaab0444fca7b4a5e5e0216 +public_key = eb14cbcc2f6951857be4b3bc2a1b578b148e825af4155efa3d57c8213793c418bf2e18d3de5ae6eb9c8b5d53718d38ae40299b89793f1484e792cbe0dadfed5f06633aa3cf1cc78d0dc99983076f8756b2f97bf096edb81226dfbb9494038a88057671dc79ff14a956d5e6565ff752d38f37c70b8f8528cb1a04cfe5e6495bd3b46b3f64fd7364e0d54f2bdf7dd28bd22efb3d3a73fa7f99551bc331736df07f2658f373e64a9631a34b468e9b3c9b34b27a4ad2fcbacc516469f69b3a51554b94ed5fd6dcb098e8af8a3681ce89548cb3e1e2f5421dae496a63f366435cfd56a26a245ba68655db99cd114cead127dbab16a22bb3399e45c6a9ba45b5dc5da04a426c635c844744c557af7e49ca12437cf455b303cd37bab4954627a2374df0c4ab5ceef5aaf2e352dee6ffd6b5facc7dc84723a527ba34f189f04b26ac1079f822ac66cc56bfeceba65c43f95fc8d5c596a48a0c594784d5c21ac3eedfc27e56c19bc84d710584ade48647c681756d38ac74ab7369efde97fccdfbc3cc2fe8ff1facbfec9249ddde1a4f4b1fbca70fd5e9325eaae24e5416cafd7faa6a2c745cdedb94295438bb28fdadb77183bfbe5cdece0dddf8b7eb71ba8cac8585cba3dad1620b63fd9ebf3d3edf67c65c92f893fd6e6159ded4a5799720bbdfd907798f0678746475c96df029865dd663f09a39c0c47ff58a266b1b244a504fb4aecec6c07dffe72ef5c3b989c018c0a1edc73e35abc97c9ee695cd2669d9b08f548b865eb4238376a6ab53a6baef185799489f65ffd0fb64fec4deb42e8b3961fdf730936d620360ff4570b4079b369a83629b599e8bf7ff48c3807f7a4f93bbb2d4b7e1c73fc0d6668e53c1f0eda0b547b1f38c51f51de654f45bf0e5766daec663ffcb99a6bd43ae7f89d8da4ebd3c990a81ae9487e1b5fc148fd266083e162d61aa08c03a7a703de582520efa546a422835e5a4ef7195ca97ceb39b00566cf4acadb04fdd5c88c75f03e1f10bb5ad738d38aa47c955f35e1730b6dcf27a194dcb04ce047af2c383e9da2dd60b594bf8a64f2c4b8f271dd0319480478fee6546893a44eed2d3f804149954e3788eb5d54d5ea43da89f9c789eda77f7bdd4be33be5d47b9c327ec684238e3b00950bd73c96d7e75274a5ea8cce28a8cd99313eb4e8a5d3c074d2d1abde8239d5af58c075d9b251d9c84297e3feb447fb3926ece9f3a3ee119c459781ea222b341cdecb0698580e52fa951ebf305d4a7a97e967db945a60439df2d6955c371eb5f452f865da448e30d2b8eab3669a989e1259bd8932afe36c6c390b6845f8d76a0e6f1d779f971ba71beadb8aaf7ba0ad3c4f05ac2372ea146c68bbd6de85416fb924c3a659e6a1babe9ce5b466f8672edf6f1ea987f83495106dac22ffab6f4a5cca797587126ce50589f69bfd84875bbb505c7ff46922eb496da36de3719cdb3ff3950455dc8d36e3a3f518cdeebfdcd67ac533360b86550b6ad09e93dbb19fbe51d721d48bf56b3594b93cbecfc785a5852b598425e4c4cdcc7cae29d7adea5772276b2929b9507db5c0614ee5f9846516d55417c6fa19e652a4a424bf6396d46365bc4d601e3a5590eb93a1ccf3a1f6ba80df6a2467f6d44de229c527f6e4e7071cb826cfe76fea483d9163eaa84f6afac495a +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 8a95d71228acaa5f9ae6f9d9ca8ae55fde296463b41083a39e833e37c4c90f88 +public_key = 86b5c9a85e57e73ccc2e138518ea98a256e45dfb6bacabfffc333c0ba5806047ca9ba8ab797937010f70e773c98647d9e59786f8ec948fdf7660aa3758e33f5924de527787fa74a2cf2fa4a803d47a26903665cbfe9ad677fcf73f69dd64c97f69f396db78448535746b53f96b0afcf1af51bf986a534d74c1f9607705f29cfa9125de45862d99406f7aa8b7b6a1fe91693f33e0ba6bde24561a666fd20e51b0d5fc9a8fc302ed970c3363de27825a5bab078848aa5cb75b9dc1ccdf4cf67a68f44e7780cca94723ee4573934f9959787b6320a4b47bc3e1058f89e2d9e5e35344e4ae44e37d8893138a16ad3fce48e6945464c229c587093b5cbbb519767fc66cd78d6c684b8b81c1f9cc2b3ba749fb30756f3e3daef4a9eea5146ed357656b37087bfe0f773fb59157eb885e25d1740483f3fcd70bd492e0dfe7d7db99cd7c9d57b937297634c3494deb585b8c93cd4ebbe865f8a9c8cbe5dfe583c7ecd427274f8df3c693fc351289964a89a3c74596734ef61d949553ed809ba9b7c6df58af579a4515981ea9ed93154bcbae70492bd67534e5b1e5fbc2a98b7f39c5b91a87eb759a9a4537228e56746930a347a50279e1aecd41301da7a8dfd0a25e4d5018d5c11af76d3f7e4899aa3f9b95d1caf348fde40184b1235a719e6c4a311e576245f15d87d84034771129c33199b70774b2130898a0c69d8f39c3a51bf73c665dce8d31b4454d144a4356b9c2b16641311856cb65466a9eb06d1a8a74a5aad6b5b935b65dba8374ee79dcd1d7d1a6af8b4183fb5f88a9ae9e9a7fa563bafb529885488f544e134db3cd673f94ebbc91b4757444a302578aa963e61993cc929fe6bc56ba53fae7664bc5b543a38c45e6d4063c35695791d882134dbb749caf98896c4718a9db33c1a7e9b91b9b6d06fbaa58f5d7f9bed5e207f06095621e354b3dfcef9c979ed7b3aab56b47422edfdb7defac78c2edc38667aee8a425c63415787506ebe01dc43e2e84d335fedfceea61eb67a349405ec74b9fe3d7558a887efbbb46d9d4f9469db59e605a3582be433bed57363436d55cc4852adcd318ff4d8a9d3a918875c949556a6a458fa3cfb5797d6a3a68ee9991d97a38e16b9a727c5b2e7b5e5b1df9c25e3d5a1a98eae78713785bd54ff261e9d10aad806e565ebda3d8849cc6708b536c83a2fa35995d8e9d99b850252ced50ea902a053c7cb3efaac37bcb1b40d71f3cc4e5f0039d9d0ac566f7d75dc89998036aabb267c5ab8de84ab4cffebbd18f195f62879be0b5eb42b843caf7c495ce81c3fd6866dbf288bdd349ebb136747da52a3c4a3c581798c4149f9ce3e698fa594f019579af3f9a22d4af67ff7b46453f22f6eaa6ec5d7d854ff6d3c3d51e7be2145b5c2ba7a57ac968a5ca43b461f818e67fb5a76aa4fc95145098b95cd4643966acd0366960e226fab613c5edbe5135abd93c27c04bbf30fa8cd074684996f44939d8efc31373c833ebd0b6679a9ea32a13e003bf57b203e2023e7b3e2b6b28b8911e3991479444c6086110b7a70125ca71c6659ca7df95dd942124c17ce3ad50d5a7029e46c05eb013decfa0f59b220a795dc6b3d7896aac78dadad383ec46762b669d369d9a47c12dc8ee619e1a0c8915822d574a243f67e14104d4f021cf95bf33271c9bc9 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 90d79d75d0bbb8921cf70d46bab497022a8e750efdc99e5f1bae653275441c7b +public_key = 05eb36256ec4a2f8e885084505c3862c3b647d28e8062d5ef3e4ca5d3dc46a1cf1eb97700c7dc2bee78d862b3e19ecee0cfcdae6998a7b3c4fdac39a961df7fb2a3bef0f7a8e54b4a5b981bcbdebaecdb5ba6a36a39e3f1c2ad4603696089dce2dff583e6c62a788f90f34fb4a6d6ecf24b3a0ecd23c2fad8945a0b8dbccc9356475b36b2aa9dd7435b12e1536a31d79fb88d2b998488e79df763646c3b66adfbc8161855b20fae8afd8722add5e6047f694e4c4c72e5344ead4173559d7954b029555e6ca4356f6cbe325a3953ea64efd6e75c63ed0f4dbb0cba6ed68bc731eb0301e65c47dada2edacf4ab61c87cc3308de7b5af6ff8dcd784f760483e6af6398ddedcdc62e9a37fc4ca696de7b33aacf59776742fe92cd330b2f3a84e0bb85858da63b6d7295a39f625e0dc2c69996e4013f45d319858db9ff8fe5bb6eaf3b03ab6df4c8fea3f046d3088671a3d672d6ec92e7dd5254372d818ebe42fccebdd6cdd57fcc5a481ee385096a5b8ce64b5788ecbfc4457e927e62ebdd7bd7bad8e48d3e06bd8876842d9e6a0a545407b5d67ede3510ccc4479cd40310aaf4615e454d855d1a5521e35e4af67684675de0043bebf453e7488b6db8aaefdce6e26a75c52ccdef3d8dda3bb39f73b9852b54d9d6d6363438c45dac4ff2ae913e8eb9b8d544177ba7db6503a04a5415f99f80a83fc7e35feed4f8cecc0962461c0f8d299efe9531c9cc00da3bb5b84908b5a807739a634851295e2c0478084c896509d64cd55e4cf9fc30454ac25b48919c7e9c5a853011afeb81fb80975660456562c4c448c49e62ca63aed14af7f28875149857f9b8965cced04cb8ee2e67c14a493a49fffcd1afdba2677e719b8f2c8bd0953eb82ba56007584beeacaa2fd81d244b0d87ebdb0d8d33b18ca9597443ff8cdf754569ddcfdc4d4c213efbbee88925ce73035ee9167cc7ac56d59cd3b9ebbf6bc3a476f08438c61a7eaf139a2499fe00258df43cfb9c0979ad3bc6868565ca3fcbc124a7548d53f56c5ec9f8aa387b59b07638c7aa457055fdb3c24642035a7884cb42f877261cf96988d9aa758fe3fc356d8dad61c1c443dff4c4535bdecdbd2c3e3b8b1e9de5b47bd126e5caf849da69eeaa743b9bd88e0c58de87f8eaf9bdb4d130730406e5ace2a58e7ecb3be36de9f8cee10eb3a850fd8d2e75a30c7c741ea45fb04a9474ce42508db9186a7f36f5ea6abb4aaea3bb516d2df23acf8e452cd0ea909ec9034acb47b969d915fe3f0a79edb7766d039d005c954a1ead155f7318be854febd38d019c1904b714f15e4ac43ec3813bd703b45076365be4b47ed6eda9f585907ccdf461a6bf0ee3a2667593f2fe34a86ac139777a50ccdad16b6892ad8727feb387684b62f63695dd165bf910a3f8f672cadadf7648377cd11d9f320a4e65cbecf12f694fa4dc3cd784c859f5ba74c8a49ecf7cda4c553c85334a860a8a55d8a75969977ad205d5b9c2dceecfbf4a36fc707843310f3943449dea63e5a6759ef069fbf723aec2658c8a82d991b26561e14b178c3a1039dd3cab8b6a06d828f47b876d43d3f193c392d804068a5cae76dc4ff7f5f23f3e7af797baae3c877e3a83ba9c26e899dff95cfb4a4aa443f32d16b72616a0db4d3849fc41a7a6ba87f4af757a0ab1956518f +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = be8a32f97b9a8d596382c02fa2a0eeebc15c083e970ddaa4f2622b91d6718663 +public_key = 8acf8969078e11664ca1554ecb8eb9542bae2ea8cc12b44e81b3354828e41bfdb494543d4684e60a086f7e8755a97f58e7e6a6aeb96955286924c4f637ed4583f74184133d8acb90689f5f4969642f27408507e0c12361ff96c3131be43e23797f2a3a6cc757c97454cc8aa5dacd62f9254f4cc7335b44cb66dc712b4677c39dccbcad8cfc3948c535be29f44737af3b4c8ccb3978404f4e9a08a67aa555becb48bcc26ecbc559fb55e3498e74bb516cf8a7a44a3a0ad248ec3411e8fa1bfed3523d74a13938a50ce8dfabad006d90455b4b5e55d79d7bbe956c7a18a8bec9a64c1dc7f544dbd0c6997d545ac7e3bc5c6565885536af4874e7e728cc99c78cfb1fa1f7697f1bdf6efec7f6290dac4f1ef1e766aa9cfda74ae635074c62fb6ca79975761419b12a985ed8afc8788c902056ffb5764c087681be1595a5ea4ee7234aa3efff4119b559a536e0eade8d1bfe494cfb5bd576459994acd684a82ad955684819eeb88e348447bffc9143a4eefc7d8ec678624763d4548fe255ef078582c93c986b14e7e1aababdd76dc063fe252b59e47370e81951ef75ad49dff3316a40247e52e45d8ec164c7375594f73b5f0483c560f52f250aaef28431eadeb2b9dc650d2371bbb7c8360c72369755bd8696fc5c83fca76a80ddfeff54ca60579caef6341385aeee34c7182445bfdb549bc59f70b76368da88d47386f75968acad93e804fed3c7cd68d8d28b9dcb0c93cb44e4fefade5e6ca978ed5b88914c4e20768029ffc927a33433d33c5e6a45a6c5ae8c35fa83e68ec22e347c0f5866ff6912b89a9da7472b75b9aba7558195fb98df7ea7c9c5c7e8bebd0d94c01947f44afc660ec97e53f3142de67eccbc4c4af022839585befad5c5eb4ce3d8c953d2e58c70eff7b24fbad51cf548b5a73ab4254179eaa038ec95d4e4e82d2971084cb33a6ca1116d76dfa76ec0c4b3bb5c7266a481001cad08eef051a77e326d3bf47c62dbf959c89774598ee1db2bd38ae834e1ad8c28ffb772a967179a9baeaeac12bcb8fd4bd6ca44b3f11a6762ab51aaadb67fb83def8c9a713ae469c7e9f2557e5a03c6bad8d8d1edaa304955a3e9616199f0d0ccf347c74ad77f5a9a855d1d8456d3cf6addd849e59b7ce7c85765064ed6d63039e368eafe8d50beee16f8cc88bb3ffc4db4c6269996da8a6b5586375f92b6bec78b04e71c27ee2fc7a6a8293a96e6ed693f75eafcadfed74473f3da1026809076a1025398b745be723a78e008c85b558d2b7639306de5d20f4c172cdfc6c7c0c0e631bef57166e660279f31c42e6fb08b6cff0a420ab4e3ed1f85b7b5ae9fcbe5f9fa6b8bff9ec16e996a86e2df5f4c7e17f4766bb51f1f64ac5dc3a095815645b1d21fe060c9dc96555e8b1de045de6cffd7719868d65efca6c2654ea265d6f064efae34fdbb154e421cddd5ee3a79053b431b7c00768bf0f781811ad833afb814c5517baea094a5f3e12aa35893912256a7370bcd9faa30788b631b87731cc5c832af6e8f48ad7cf9c9364deaa8dbd06ac59fd2ea5bdc1736b2a5523ff3c4d804fadc037292e863a087bb29dcf732ba30c01e490dcbef3adb3448e6e10a774b26df42603cf50999ce6adeb32ad3702602e6d28fdacdbd2a03546764c4fc1c62c0efb3462c7c88ab8d94e20b +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = da2cfaf69e25b2a89ff2557bbb6f69e01d8e2e7bb27a7a1ce7e40fead16f33b2 +public_key = 764b51d1dabf9245e8de898c5e7cb5e0066fd6a5f2f5889dc05c41a57fc98358333323f053aec93a464120c3f5764b8665ca42555b98d8d6a93c88a0a383ab5138df52873f2cef6e13ce31688df7c616711d478342cb424b0463c98e61ed84bf6e869abe9cb916de3535df756de7f343359e9a1e624dc7c6e828b19d6cb178c43a5ceb9361df939eff744accb4dfe8aa5eca35bf87c6ba265fb4ab7c4888516ed9ee52d4d30f5453e6bc9103b9c19cd83e69048272855b11b8af3eecd9b04ab31179bee59abc777f6fbea6e2d37eb7010844f62535f203de8417c35f17c161abd55fab6a0f5458568c75342df99fcb335a7697e7cbc9b9fbeb14bcfd0ddb765b266b6d68bdb6cdf3689532864db2109ebbd3aed625e674b33a4f8b7ceb4f66c4131cfe973ab72e8d9282ca63edab71269cd2aaedf0bfd8d5410aae2dd4b699448a56049d1e9a58c50cfbbe159dec69c5037d99a3b57d3a2560ce24a6f60e7d33fddf3078b7933d93855fe878cca555c7d65d57537d8d4e10bac052788769b7c1121a78912ae53fb56a366aff98bd70d7c6e725ddc4d15cf95d78be57a8aadb873d3af6b74e1fdb8654cf48543de8daf2371a48ded585b7073ecfedc44efcf7c85b5a68f6b455bdcb1079f039cc68ec3cfbf99f80462dc71be5b7badb807c4d59a3d87d32548ba3e4b698dae50d784a8c2c35a67a8c92c68ac0037888b65a4ca8d0ba8aeec15d627af648fc6ec87cc55b8243545ab5e4cbc550a98d4c8598cd35786eb8c6b06077a1e2d4344e4a6baa789c305b6327edbbd55dfdbe26cec08a7c1a19457ccf677f15b984a74fbd5fcdce48618e5dc4751dd11b49f908bcfcf08a579783a810bf990cea90eef9db7de8ee6cc9c96147fd8d8fdd7fcff3d5a6a16d4571c1a93213c3f289934f7c3da63527c639a9f0086940b7696503f6f3e64ad50f4b69810b6e6f77f9e588fb583ff1f596a09a1879bbb46a62a955043a30a2aa3e63fdfce1ab6f3d03693a8cb653e361d8783ffa47f74bed6a402f92f1a655729fd06e493ff2653437a64dbea950bf6a8ca8836407fb489e4fa6f62577714edf297e5bc75eec81486cef3cb9ac6dd559fd70f5ae5817f8c177d63cb0be76caf3b2b1cb7b7254c190ee5111fcab9e9a968204eda0df47ec63fcce05e5860a3fed43d2563f3dafe46eed198041d732538c9424d43fe2f548175d470f0890689eb2bfe65a445bb26ac87d9cdd4aa648a54ece3a137b60e6cf779fe4b5a866620ecf829e4f384aea9ab165ffcbafdf8929b7bbad59dea53e6a5b3e492a6e45b5ae11f6ad25dd35d4246a0cd53436687a0204a1de29aad2c8b53ad4b938a57c2e29555219544ff64115cba2668b54c6ea8779146980b58a2e669124b8eed55fdc88bd601eef3e3ccba915faad0c2b47f06f38dba9449274c64ccccd85f9e71257de8faaf8678fd059a8501c7762c0883cfa8f7bfe6fbdc098fee03b457cefb2794b8becf74ec0da468438f201af94c13c8a9ff376c11879122febdd886f285e4846f740b72aad5544cbd97a7e208635480acde04d4fc067c82a45b5c988f9f06abca63de429e9a516f66e66dd7075cbc0c61cfa9734baadd68f4226e7fbf9515b569fd08bf3aef948095de1afe74bbc3bdbb45fd8f92eddbf0c682c81a98f930f6165 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 511c2ab40782322c06111e144e505328c4e5bfc890a5980a2bbc44aeda4c738b +public_key = 5b1f78c01eb37fbab1dc3ef359473012f3b5464deddc833c69a75afe16744557b5e28bc0ee895da17cfc5dd34fe6783949d555e68dc1be7994bc0d8daf27a47f554932b87222f8fec77d490cb5e39ff49d5ed8962198f5056a8639c3ed3ac8550356a409bde404c6aa9c2b7284e7c7c37d36256b7902445ddf0d630e8e930f4ccc518b9efd8ab250ce6a365b8068d9df7e09bbd24cfa6bcef793df45551a989407d50435d1c8fc49eebad1338dee29a3c97834530a7c61f1b844092fcd1bb6b11ddafa5a5eb4dfbdb1269cff5aa8cf76a6bd0bf3d13a37ca1b9d3ac634405ecb3714bc54610baa63bacf0a263d8dcde8b04bda296d83998a7e8b2a573e67d17a8ef131ae9f9eccf337d43926f9c9656d996dcd3199e8ea0e29f59da696fecca7906931a787a5c264826099a3e03339295b587e7a4efec6a11aaaab057aa8689473f20fe2c6d85499c46746cbd0ba687a17877e675dc679de3861337faab7d45a16b8ec7e73e8cd8b6394b5f2b99ea3083ba175c55d45dfd61b73aa89dca6f479fd5bd1282b6bae0ad1a1946f6dfb855ce7bd50389d428568244dee02bff8ac754cb66ade324ad943b75741cb498cc499c8649b6bf87e9925d7194983abdeb57994b7d79bbcf2eb3b5f8734ccf3cea276fe95d486999e44afbffc94c363571ac7dce8ef577645cf19b313f849b52fafed963cdc8de3961fdc2d18601b4da42429896aa9b0b2dedc4876928aeac5996f414e143723adb94746abd157343d15bb9ff5d0764be8c62be84407449b1b5ba80be654e4bb58ab99faaac9cdc3b698e6417abd89b796f04bf95eda86474ee799440478348989c91c346244672444dcd2376c6839d7edb58c85a4ce3ef46cc6ddca345590ab14844c2f4735ecd5e0e66edea4f58f395fe867ab9d9ceb0fb8d7441dfa15eae97624f95dc358f40758c9dcd5e45bbc659b93ee7eeaa58845d94acc7aa75deba56d4d83c641cf52975bc3175f54c92957b78c9583b370ad785f2c16cd5cb9913839939d7f93e6b956e23cc5d14cb3ab3afe95fe79bb07635515792008523606dc84449d43ac89c2b46dafa6b784438f361dbfc48357a578e043ba7428583bb5f9e2b08786562579df58a41bdb82114344b3ea3574b997f85642493edd4f5dab2287e00b9a5423178b1f138e9e4f7762253cffc3cd095cb53a776f50fde5b5168b1a9759ac4acc7709dd69c3d7192b7b866753872a69814bebcaab5cbc9ef6d8998e78d99f5b5f7992b89496af8e3fa83e75337ca2b896172ac244ab7e3086ec8e4ad08a0d46e5f599eeab65bf1a4cdeb5791ddedadf7e97fb5bc754233f3c1dc9bb2f40adfc61c15f31c36a6cf71aa752ab3c95c3756ef9373b677106eeef86e68036348bdd28ef284d7e344bcd297cb02bc44f077976ed588d6a846c2f839bc9bc48736e7bdc17a7baa97af9a932300de6956678e8e6f2d0bea11ee9f9f29bb1f094c17f49417c09c1c443369123caf98de199c43bffa7d34efc699a4f4144c9395e9d63bb153c0ee8fb1c5659c0bf3d4ddfc759af6b6c44852516df686bb14873cbf5046b3b3d33c5d8d81027bf5e3c51f6fb6a1d54a77c46b0eb4f99a9da4ab03b95f9d3601f553d479ddf661e2c9a7e548ca42e385cc6a0678f9e9d268ffce02c4b465a46773432109a75 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = dca92dbec9b260dd97e8886f876862d6effc3b91fcf3fbc986cf56ab93ae79a2 +public_key = c4b9d087866b29244c374e310e94b8312ae3034659756492897e3e79ca67a9085c8f7449c0bb9a6bbe96246bdda028cc1765a8ba15d1d5e360cc3d64e11554f30cfa150ef70519d73b67b4a067dd807d8ca7c435ea987763ffa5a23cae549d7fc9ebf6952e36d83fd2d1adbb10b65d432d91abbaec22de52dad59c26efdc026f37634741def8ca26b9cce3097ffd896f1cfd830038ffcc8dd0c8ee956683f23a0fae5b43bc63b6806c469a4ebb8bd35bd57b375e726bd7ee856fcc0453379b96f89888d21a7bd5ec91f837b90a2c334a97ad70d87bdddef892d588d06655f71d3e033547cf5933ec237b22bf956e69f1d01da0c55a70e5af4a57b93f6fcaab2a44bb079987eba57223b4b9dec6dec6464fab4d58283b8cba6956c89fae8f09e94e93c2e225f824ce5413ded2518462c279edb1c64412fbeec6d75d47d8ffc5b9f1477db32a7d67e30c6d9dedcf3ec3e4cc1a4cf35342af4e9513fcfbd57e82c4ea52626a56f793edbdc5719f63fa5b5fea7bd5a116dfe95d0532e8cec0fff4d1674d4137a5b45d8bfcd31752e16465891fe508293fb99ee2407ed34318700eeac42a6dd905179b293e62ed0b69590541ecad848decc94cde8c898e70a5cd30a8a3d5fe97a2b039f390a3b1fd6aa22909cf0134a27557f8b6fb5180276b7d65c2fd63db4ff48cc7d7d93d0cfc418b97762c42bb0980c704ee975ec69397e73a77e8049de0f50b79b243e87bc3a0f7c770e50abc62e8acbe297c58c58055387bc88ee473e8eca97b6a6e75d4871cdde1e8d6e46d3ed1bd4d01dc62529434014c5068c3ab3d4a909a0799481f7a8a2746cd9ef6f13efe22ad318fff73d6edbe162538494e3c5cfaf2853c6e63b675cfbced66add04a2bb3bb4974e79aca0de9f7607a71d4b4c9980a86e6afb5a84bcd2e69419059e0615eeb332aa7e7766a4c693b00eb9d68f34e5b0564de24377d3a6d4507fe82fcf4fb268538cd7b81aa79b6bf8ef5a657e0f8b6b2f3a4279abcf06ca2a7a4d1312943d2eed86e9eb1ae3d30d1cdbb228d6cb87b56ed49ee6bc6aad984d34664b4902336d6e45a7449cb667fd7d59367f3be42746636e457f6f21e603b28670f57e13d28ce6cceef465be81cc3f05febc13cd7dd3fb35924a641a21e7df5cb65fd9a69c71bb8000cf3a6bc47e52756c23533a3a494733b74d9689d64a849d048a2ffaa62b24ba53cc76ce8489d7515834ad3a2ebafde502f75f4f7bb361866648cd4c573bf47e6b54ce3e810c7814ab5cd27eae905fc5976286b781787d2db606c036a2616af7946935713ce2c7ac3fc4972abbaf229c4c294e7a70f97bb6e1e9be54553eebab1c80c8da7459258e44a234357a1c9cc475ef7951e6124efedb27455063672245460ebc8b6b21e6b35ff401169ace16a514544e54e798ae3155809b651ca963f854ba5024d7920765a1408f7dcfa4bc50fe867bd5bceac55e6854f1bdd80dabf538848a8dc7857f10c4c843c46b27fadece3707f0ec03059313bb96bb144996c1f7a170d6db4063ca135ef550836e167adea545b3a0c55c0ac5de3fcab6f8f42c2c5c09313646117a95ef46536dc74d869301335a2f914d4840bdd9cb85a3d034d56bd3c677f5d000c47537e0d5ae249eb884b67dadb110119f1d0a5ea38cdf9f2e0e27c75a43a +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 57c170e691d7a914a901b9a11c62b8b569b3806427557a9dbac9faa720ec3641 +public_key = ea7e8a491b3263efd6bf7fa9cfcdd0e81b6be6668d15bef4bb49be524abb09c9e942b6ded39be974e36376a7724ddc7e5a993eaacf5f40c8dc766cc57f8d7bd5a3f6044d3458b84703ca58f8e57c462ff7128654df4537fce6a57cdebd6fd8c5bf1e35b2d8fcbfa4b96d5775764d6f92538035effd6198a9ce1ddfc8dc8988f95609ce974c4359aeae4f7dd4870c63bf79886ab2d4cad1c89a90ef32fc1c8c515b7d2aa9cc35759ef593f44ea767916478f94e5fdf8becf85a80f4d6960298b977a7abf48d709e09d5c27d6ee305ebc04e50294fee4fc79fb3ee5454c47b367fbc09d6fc0dc466efaa75a01e6e8ba47180aef2101f5656ba7c52338ab1facb0fa6a75cf6ef3135911d67e4fcda7a5a37e205547018dcd607c5aa7104a4a87f66c15f557afd54ecc6c6263fd68e79352ae7a1c3265413459939764a452ecaa937c8fabfb277afc77ce7814ff9d34783b8afcf9882ef563a63780cbabbcbf7f501d68f1c7fc6ef3c5d84a4bd7cf4a84686682fe36a151bcb3bb76ce5fa67ae545c972ebed149be06bafe7207fe1b24b086836b5269e5b93a49d90cb3c45877c65fd4a605cc28fe828de6ca1ea5d56938a6c975eeb3b4a9b09c5aa9fc44022e5d9eb9d15a996f9a7b898cea466dae4f0065a5b1f374d52fb4a277a011f3b3e8143b0545d7bef8f9e68f528dcb3c9ea5df3ade7ad0a849c80e779d17de34cc606c84a59675db7776a468659344446bc29e86b43cbf0435e6a8be33065393c83b85313c53b71a5bc55fea91694beeb397618d6d3caedaa8ea546f53763b656c99ea50a179986dc3786a554b81a3e7fb58564dd69428cbed7bc45a642a8ab9dcd13fa3fa683ffd1fe4fb455930b8147d6175c6644df17246c400c4b619c9f2193ed1b2e8e65f93bee58757c14cbfc958552137b9050d9fcf84532194ef8648b8f9e58d168fe19c1ecbcd59480246a46e255addce649817a052736edace8a262c36f7c37918db789bbe77ed39add095da50a3e9898d73b54bc3ee9ed00c88dfc87ac5c41ff35a959b1164b4921deb939eed4aa76876065e842bf76a27b8699fffd1da7c40de831d88c9f5d891007fdcaf264fbd9f80b8e4d8535e774fffdc23576acf7fe5b3eb8c171dca2415e15e89421418a7611cd5bc5f6ffa39918e9558c6dbf618b6e2b6d38bf9af569b4c3aea0fa4ac744ed4bca8ed783c4eba45057daef5ec5370b87dab4e9145298170d64caa0cffda7c989645b9285a3fbd16c16e1cee40ed85a6ccd52494f6f01d6e807de2e80882682660cd05ce4a6fd785ea66335d78f9b9ee5ffc3ba0833de333326fecbcd8878f296d64cd1b67303ed133f3dd106c61af9a75a7fc64fb6bee1a1649fab356c1ff6b916fc5dceaa7cef5d2c85da93187a21d1eb1b7fcaa45f8b857d38e18287b1e878c7ee59e07966f3619bee80f53d87d65c039f6bfd9b03136db5af95846573ad09c42573c83396d9fd3e5c0b60d92b17a83128a4a9f1a6a242f528855d4846b3b7d08fa81dbb036f6a57c6ce9136789af9690a988e45ea6adb84e32ec55840975d83f388877a93fc02bd06fe4cde51efa1814b328befcca8991cd28d27f4485b50f5b5583747fbb37916585261abfea163b617347acaf453ae235166cdd8afbffdaaab9919f0cffdc75d8796fcc28 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 6b5a14e1473abf5a33d44975ca2088bd8fa6fddcb3f80e8fd5c45b9d90c24a5c +public_key = 14345d52853184aaab60195152259d9b643d864c4ec5fc4978c657c3365ea92fe2ec9e339aaa4bfa87a198ad4d46a7b666837f55db6f17cd95db449e9baa879bee4016ea4f8ba975da26cfcf59401237accc9d8efd27e46e9439b1473bb0ad7704ff932d5c598276b59c4e9402d681d98ee1f71cf0d38ede10b4d7634ab2179d7d7363af0bc4647dcaf08f9c6744e7ea8a2cea9918fa3bd8a843e4ce5824e2f04877eebe709d1a9623c3c428fbe11b1e89073c9a3d34ad16baef165ea07e6880147360e60888ddd5b0966d36962df1af4699c96382cc1ce6b4fdb960135391c6692b0c556a5b9ad2f8a5ed0cb0bafaf406868ac6f7a5a44b72282e535e098fe93fc9af148ae027604c47ce4e4fe4a1bc974685f89ac7bfb9a644dc4df35a664417c57a8a46a86e18a1108eb87f4b472707f44027d88f447f2878db070dad1dd672f0fae9e38a39fcf964cccc64528c97fa474ef3aa6777676b3db443d1bfd42c744555049c49bfbc2577738a698bc599e0f56bdede555b171838f6086ca365aeda8eaa535456151e990707bd3305cf4e2de61fe3e24156691daa5cf3795654efaee1c4ba022bdedd18d9b159d5e47cfcd0cbee165c8aa428b180ea394e6c92bd6873e133f8e6ee916c94c813a3e72df3815127b937b9646a78352477efbd8b5f01395178c6a9ff42c47d9bf5fb37a2d1da975f69c7a8286504faaa6ad5b05307c2d20b4f2774dfe5abeef417e10b3e7cd83df3838e92b23ecb9af96899a69b106ee25b38f8f29493a997a33023661bb7811c4593e4e579f9be7d0cbb6037e9f73a3faf4fbf35f8ededd398b7085fa925968adbf56cf23fb8578dabffb937c364f5c244345f8d5bdc6d8cb0666984775ac195f6919d8cf2b6d214f6a8890d4aa41a44831537e55a5dfae7b2a4448fe6c562ea66764dfb5fa508b6738c4f530ede4a95fd38f5354a8ecdfb7a851a675c5b0ec2fbe886192582d2fd8ab37753bbe8eba6d848949731c99ba92278a2833cc11ac3bf6045e2bd6557f9684eba8dc75894f4db1cee2cbfbd09196a7eaf9d7a2d8da50c4a0c839284a44d896e706ea9eedd099e0b1467b88948c89778788cf6dd4436fbc4bfd13bdacd0dab4d85b613bba4f928bbfdbd4e2eaa51b81845c3b7e0bbc8458027a4f065d61d0b39ad28482646aebc5458d0f7dd396c99a0b456837376110488f49a83f48372327467ab87870e1eb3c1e6c112ab3d6d486a99ccfb9b368a0695c6c635ed6bea5b56fcb970cf34767e9b8cd8f806875cad87fe4716332f0bd3189438e37d97e575e59e5be790558273ca887fdafa6f8ff6c53879adbbc07bded72e6aafdd3aedd89677852d41f33c447204a3fc9ec1e4935111ac739cdc9fd7ffba8c0c66dff5552f4bfbdfebe9d4f65cb4bf377739fcf97cc54bfbc41fdd41e543e8396e73d229b9288c5d68e87d0dffd32d58ec46b646f07e940d97af370732543f60c6ac94337f866cbfbc90ec64424c67b1c877f6dfb35c39656957bbe40c53ed88c4124764b726a5e24aba7b0c866b5f385c85c241677f75487d4156c85db639ad84ee051f438bdbceb619ffa155d1fe1c5e95e9d83343fdeccd441554a8cb5a8f7826b04798fb415b78a0c2e966ac7c67b03ef5106f0a751017b67cc52a3d0e1586c74513d2b5f13260 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 40e593754e6eddb7f9cf176ba2d5fd1087c90ad377556d0b0f686537b1a3165e +public_key = 8bd98be4597242c95c974eb195ad93a928b8d3c3df34dedba326943a8b704c09a6dfa55f700c488c38a33357e6cceb65860d8a863e62e40a544c1ae68793f8f47c4e67b5aad276a2dec4c320047e2eab345dce4982b96d1d13566db4d9ea3d72378ae729546118ad4ce39ea2090b60030a35d5b360f9f871cae5ff37e63954eade0a8675abcc3717a7ff8946997883d607293267cac89e3c96a98576c245ed875642982fa1279ae73a85e14baa4f0eec6a13bd9cafdc99ffefc1af7acdae3c747b94b06517464f654adbef5889ae5cb4d5d17076c9d3fac3b166ddda2efd89bfbcf32be5ad5fdfe5a698d52ab41ef33fa6ca8d8cb9b94d58648f39a138974e8016a9733d8c7b14dd2fb3fbfe1d96503a3a0e84b9951e88a78fde06e6641b896d375e903697669968f6b83ef2d88d47768ebd69b348bb6c5c8f65b4d84ac3f0768ef6645e422b3ed7e38d0b4f340acf85d1ffebbca97be77d7557cbd027e755f9b8e913dd4b9ebb374bd79412bfc28306867053ef2de58d346bb526de92f128c9316742125f75ea2e4def7a61db5d9b5858d13c3d4216f783d77c3f57b76fb8dc984f05ab5587d9dae4691c5e9c44e4e813e4b61e6664af5c970ae7a8117e4217745af087bb00575b1818e921a854b7d953e29cb1df7d4e6588f833afe68ea73a04ffd82b8b641d8e964937d01196ea7c4dedcef74e9c1e6a8607e8e30ba6c5398e3449d073ffdc82f570fcfaa2bd8847a7187052e6b9d0d9bc9ffcd217373bcc7b8d38245e41ae597077bb00b4d8e9fbfbb55ec31a746d2bad7fd653fcf176382b6665d45343d03f731827d23fed46577abc342bbe264e6daef4e7f2a7ea8ed4c83a1f6e996a8db40a55be4f4c0e534cab677fa1c6b693dfb7e42fa3323d5f75289a1feed2ee6d4722737e776dec7e7acc6994fd6f0bfe32eed03c3b3bd8f4458d93b0270cba21ebf1a8de6e23ee8584e68ea5b890ee839de75b68d61bf5d555fbbc9e65904ff0aabbf00ee7a8f17da5b5aa7fa30a76827597011f3250fde910e8647945ae6f8b3a18dd8e5c36af468a7f6308751d4e41439b567ebbd3d72538dd07eeecdfaec5ebe3538afb023db4c2f666228fbd08eb750eb681fce77981b3d1220fc4574fbb8a44ad5dbf7cda8369ec38e90f64987ec6d0101aceae7a807158cc820d555b8f644b3b513d7cb283a363c70a4ea1adf41c8a96ac66fe7fb3c38f45e5c3a68fedbf717147f9fb77a1a68695fcf995855749c2fdae0909d841ec332e86d2cadb69e55438b9d8ccc223e19627410498e45777907d38dddb7391d2ec9f2747e278cf66bb2be4f6eb8d47bfc8bcdbdc68f3beb2d87b07044904d5b08e84305b0686f923985a49acddbea663dea08948c9b8d958845e8d0ad3933976c464b4ec1845e216d84066e7e164b3fd41886a1547d3c584b747555eefe8309f18e0d4acddf8c5512b245f637c9448c47e1456995faff460c8f10c7ac1073d47c3764077288a1345c23fedc8fa6865fde5facb49614217f85d34ec151e4db55cc0ca2d49f3537abf08ec8b3da02e5ab01384eb36e9f19179eb3197cce9df328bbb6ff61932434899af0e412b33eb0e0ae9d848e555866091c77981e753f9afb95e8095765ef7a13bd38f9fed3bf36477916cb802690a213c83f6624a067a5e2c +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = c152523abd8248bed40c3827bcf0f8e8127037a55c780695e2c28ea3e041a44c +public_key = a6bb3b94ce81b75e918a35f35f2f779dfd52e1e3de695f557cb3faaf94e834c4f3a9f6ecc24b5231d7590f863e814aa1a01f3c0cba97cb3773740871ac2386883e748355a85f03b275c3f73496e42153be4a2dbc9ee77ab6cd5d2ba6f28906586ec831ebe8cf6f9bac373eb7cd9d4dfc768b1b7e7274b33f71dd8b6a79c4aec3597e1c9664c9472b7ce00c26d1f27bc0aed37153ffdb327b5d32646f2a8dbd780c8f4777e5ac04bf1e03c2d4b3eda24be4dd0f33c2afc2d983627bbc84600f3e349ca59626a99eeba5dddefe8c9fd76f0ffa5238667308451d2d52c6f9b127778a3c656214af3dc8ef5660443183298753475bcaf667a9483192c6bf553b7e50b44a84a4b882bd365ff5e3fc76ea03689582ed45d209f2444c6a76e6344ed8a335b6681ccbc7b42b50babd3558c64da75d88f61be3699fd12135a8a659355503918caf5da2ce67b9fb9f771b5727493c921338c1acccefb8d201039d28c968aa3a40c3af8835f63bde23b9723af45ee3c859997f46feda12fe906c1485b0c5e09305e919963393a692ecebedda2c88a6133f6904d2b124cad7a6f17d8e8152b5f8f8dd73bfcb9eaccc6cc98f5ac57ef5341f6c1ccc736db53f659fd1ff29a6c3f77b42fdede2087987ff37211de4e5fa54073551351dd04b69f5cf64b0ffe9575e27ac19ac5644f355231bcdd70348c55d7c8088df1e5eabf6ac4c5e2957a953f5a3f64e84ada1935e6f6cbb40b8abba5f8b85bf2aa60e44b46585bf009a7240eea44fc97544ff69f77dc593935bdf87a52a1a31cd2b9ad938d7407b5851b49eb2af31871ecacaa7710b6764a7e57f8a6fbc3fc483a8393640f6d2ca55526fbebe57ffc61cf8d2b969ff25ce4aaa75aa4c1dfac9c8efc23f7b2a93aa889c9eb178bebdd9e579ca7bd30796cd3f444799f559dfc0533d8946a451ca49816c06aad3a6d3dd3841ef03ccc1075df164739feb342adcce87bae2f66df00ce94765eb4f291a5152a4eb4eeaba91c3a59257c03017c0b8fdd03b07657bb6db4256a8a5cfd5d7646813246385b348ec157dc6eb3be4546d7eb85c2a6ef8410e8968743d2dee47f17ec8f96c7436596337d69f5074485bf4a288833f2855787f9ae8d874c5a2b4e422157f65c6fb5e68ec228ea7023698feceac60a8340a34b2a08eb03dc35da2b453fb7ef9317db1c6db57f314dc3af7766c69b84e6f4dbb1e63ffbdc71fab6582473f93c8753d67b025aafeee1c847b1b8a73455a740ae1c3a4c21a35ad20fc36d563be9bc55350f565e4076671fdc77b3c4aa3ad6f7cffad1bfc4fc98fe618454d650e89a6f8b3d6d7e086dba68c2e3f4d6ee00b6d37e727e47893cdaf2da97769f04b2c684e9fd6fddbe0df575799aaa3de388cead4446dcba8e14368f83df520d7ee453b41ccf4f6be7cee29ac475c45742ddacf7d6fdda15780a9056184add55a1f9e5e3cbb3feaa289bf5b6fc69bb9be64c1db8e2449e172a8c23859545e98a13735e30e45c3d1cbb5d6f5c0dc2756081639170e3e6e466c2a6df902c97d3bc33dd006ababffaacd4dc046e55951d744e31887155a3fa99dd58a8767b35684445982767c69764dce33aadf4c29c2af4fb5dad5d47d1fc22bdce55a63a8610db945708cb5425ce0c3c651532a43d32473f236519d54fdfe0a815d +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = ad6466dd59f26b762fb02b19eedf5f79964da68bce0459b91c3a6ee5a7e01183 +public_key = 855fa7750ec4e343bdcbdc985c8de89ea976e3d65c47649593c9cfc21fa42a2f38312f53118cab8ed5f0613d5392e6a132fd445a0bb4e12aea8d7465e704b3134c3807d9be9f9bfabd57a0075868549f5930adb01f1e64117d6a66aadec5acb525de561a265e308cf4069be2897568490458121c572c2cc43b2464f37d321274e202b4db27b4efafc4b24bea9f278eef29ced50645a38757708ae6d7ff6763f15ce5a2caadfc2bc4d23c576e5cae6b2db10cc9cf610a5931ab4c59ecbe67fad79bc3911a96b24b86a0d6b99cf85aa44094b0f6c55924776c4e1bc9cfc88a127b8195145da45e5288f933db7dff1a2747a6856658cfe02774bc1956e63b534d03aece2e74ecd9fc7f7d48b6f643ab53045bc79da249433553845b34a5953c873c1c686c83ba46acec4e91046f9e7590196c9c24a747c6d986b4c4e4c223a52a6c884764d5232c78ab3aae896ea45b8e7ebb16c3a317db8e94f527e965023f44ff5d907bac38842ff39344db1e067290ad40089eb1dc3ba103c8aadb6cb0328b5efbc85694164d0934c207b63614cca28eca71e5f63a596d4599eb6d1d248a37ebcb17335713c4c9a16ddfbf893df475cf7c19792fd56fe0a7505efde58f34603f0d71b2badbdc9ae2377ae313f571d33686d505660c4bace8ea408219e8e05bc15b48eb90d9b31b05ff1b18c422c3935d14e4027d542829cdcfc883bc344606e75a2ee7af469c5a81daa1071771fff275f2358472c4d9b1ec31ec887fd6e76ceec6812e4dba4469b3efcdf8a0a6875a19b7acb5e465cc3fe78566a3fbeb98d6f1eb3bbda4e7beb6ff344b74d13fcf33fb67e4bc68b767da8b60a6b0ffc8565369c19877c16d7c70f17b85f8bff8d28a5936968916edf6cf683c7637e4831ce742ab4dff789f1f4378272fa070a4ab52633efd5f693b695dab939bc249447349d5ae86801c4577324c625159b141c5a1014a6e458b71a969d01839c462ee7a3ac46da47ab688df342ff63b83d333161dc98ac484f44b7fb6b3ef6926cf047982c51dd08bb3b0d1ebba3dbf34561368063eb0708a64b937c88b2985c02ae0efbfffe61ff912f9ad2bc667cfae6b0a19ef3fa9bbb9b8c3026d717c2ecef9d7445834ebeeecf15d44900c04d809f667203fed39d8d4eb6756c91f364efd503355b8b12ed2574ac3f17f34bcbeb658ea822e5fa452545da3544c041c3a3f89ba310d5a992b432178bfba078687ad79727def8c1fc22b23b69c05a89aecf469287f052a6d4f58798f1da464db4aa71ab30a94854d1b8c16893b432a8dc2859c67ae68c8c5ad4d04559056c4589bda8765d13e378545b47efbf9dca97552c9b8711e3f81cc7b9057f78a68a59d5aa642d1f9f33eed93df67d5d8639d712d97f0dbc9855ea46905ae72d876e124354669d599fc5923b37b4dfda3f7cb47dfe8af00f6a99a1f7a256681a67d5bf62ddd7096713c59e49c7c561c0783e048cc3444776bf899777e970535c2cac5360c9b53e0d952af348a28e4826db9810f17e10a48771c2c9b21da3ca719c7a64d7b931fdaab0e80b4d6b3af4fa1c09ca38fa59d1fedfa3b0d79f2f9f2d0b36d9795c1fb4f354cb5eddd1ea3165e5a45bc7e1f2ebcd3287e18bb0ac3f8119a88d1fbce1d3419bef67b6694d9fa1bb309cc61c819176964dc +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 1a4d5dff5847cfb48333e33bb00ca7301b144aa89dcd412ff5a3b1081d775b7f +public_key = a16730c3d8a8494f95a1d995716a3bf93c727077eafb7886f397af65f5bac2bea1a59d84d1a672a1f98bca86f287f9d410bbd1098c74869b4247acfcae69d6ab354971cd5cd256514f6cfe773f30b687d884e7b700544977993df1f5796afdf65fac4f474b76648b36f68ee16363806a9fd232b8a64f16bde83557b064d405d7987cc3906a9f3dfa984ca4045999a77484ed4fe6fbdbe954a74c13cfcea79ed0e8e24c0eb741af6eda6eb2bc496cbdc539a10b8152fdd78f66751fe78d2f3a510086ec8beb514923a7b4f3ae208766fd95f222dc31fc1a59a883c401459dc73468eb35af62df8ec1eae47c98fcc7f5ad5204bd8eaf70e4d9edc37baae29eecff4cbf8605bb48ac8585094327a8c17527bf5b3968aa268e152b6897af88aa8ff184ee99f608cd7b5efca959e13e87a956e4ad12737d53c3be485f533bc755f8aec4b07661e998f10ad7f131b4496a4e893a9c6f128dba622436efcdff3a4ad90d0db1ffe3e0e91ea7a8b87985df75d77bdf99abbfa45cc5097ae562a375f0599d9698b1811fa84a16f8601c731deece6824907f2be6878a75419cffb085e202fcc988779be33f6e2f6ff8c9493a0f6f8442be3d58b3c79df34b7b53c7bf8e6cc7368f303ec380296250b33269158c4fa7d6d75b3b5536adfe6bdbd05e4899287b4b637bb4249db26ad413533d628597ddd745a705f80d136763e48a517ca62f1e691345de746e580cf77bcdb5b607b38d4aee581654a61ad9602f54e5f484bccbd833256af9d2e76262c4d1f7fa5a1e68bb136771c42bf9333b65370fb79a2aba220d4e8a257df746f163b6512eda4e1376aba1facf05deaa56d8e4000d718b5b504f1b9d2f6f7b8a678d0294c5e4be86a68cd82c9dabb1c8392339e2c39c3e037e7a66ef4a185a5d96e99851eb538a4ab872148c2d7bc52ed4f7107d8691dd678d43c783dae94b4aaeb70fe66297355d88f3e008d9916d8768c65074ed4e7e5b45accbecb6446483e7c316ada0c2066f080a53818a4ec0e4973f73df692fa437f6684fc943202da307ad55fa9d643527f699b3cd0d46457cef6560f692864a97f80b4930a3f70c6ff5990f87f1f5711b355f9cdcd18d77ded8ba64f10ba98c0d68e87e4075ee4736087819fcfcbca6dfe6939a4e9a4de2045b53f8efbb845b0e546de6b34ee9f9eecf0c9f74c569dec949d3fae1785639126bbd45137021e9670735488e46a32544fa2b4a959297816d1ac731cb501e6f8bc19d83ab5c4db0cd9a36c7c70f2885a77ffbb726faa2c999928aefb749bae39df37ecfe419efcec419990288b813f8d765b47e4d3e4171b849e67dc7533cc5bb77cba02df72926c3820cd896f39924b6971fe6b54638c4cf25318e146aa02769e64c47e4eafd5264b282c3f933d8c7434faa74ce5875934e99d6c57067fe03c54e487f6e3b14e6d3737a2a6f4169778970e99de64bc2b26d39ae97c7472a41c9a6c6fd45bd7738cb6635d5bb26a308afcfb978df5cbcd86f9bbf77a9f63c0b536713f197febd842534611d94668a33bd339db59746d63ba6007887ab85df5887453f0fb22d3e48bf6c48c806a94cb7bf2356878abef60c87af0548c7198e401c5652693e7757bfe1b6955ed03c49e0beb46c4ea9ff7be444932e61d464966bffc96bec0647ab34f2 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 34f44ec2092eeaf686f2ea170591a98527cbb03a4fa9477a7aef6b41a54feeb2 +public_key = ad735e9e838da63ac7a4eecd3e574db18cf601d3927dcfa9d228a05f6cee51a63634383ff6ed3151f43c67ad7be9e992aa65ca4dae7b1f1fee07bf61ccaa89b12a4916a5a4e3a8f6a94c86bcba9fc7d65ff04549dc7db301becb280b3a41f8fb6c9bda4a3c5e40eba5a0de8f004ca3e5ce5bee0fff099c99a4eee4eb0c5988cad2873b95821d7a23e54a8f5eae62375a8889f9f7333d4d763e24cfda246785e087d0bb16c53179f531433eb6a6594d1464bca734812fc1d52e9cd8aa661496fc42376c3a0c467428e984ffa2ce8b7f32659ae87accac7df3938592e188a3c20e5e998fdeacc9aa837a49c56e7a850c89e23ef478f3c6bbb5ec30a64a8a2cf25274c92ea953872342a96ca3235ca7a9467be65f507a7ef6b30694f72bff75b56d84ac89c4b635128e45c7b8967df5e5ecd7e9e368d4194b7eaa3d4636283cc07f339474ce1ebdd1072eda5977f5574747dc07b3f0c7c527aca703dbf3bbad80bb7a4cfd2dd9b3e5aa89659121e365fd6cb6fd15afee7d779a978b3f05e0915b6c16a3501427f1efe6e085189c3265530c2ae7491b31713eb4e4667eb93e4ad34cb7dab5d566a9812377cf24076fc3dc748fd58866beb02dbb831b25b7b7383579376fdaa6c8a63f32310f5a4bc66977f6a458374fafbe4e4707df654c42c94a5fc5e386a57abde4ff934a6f3e4df9ff9015f7c165870fdcf6a2f95fa195df2ca4dfb7b87687ef53dd54b6706a84a0d7de3bbd4ca8446efb77609ea8e5a36eaf5a135836064d44a485b5e850f20e53653838e5874b76568516e847a2a9b186e8a50c34c2d3bd839ee580253ee019bda13fc781623cc313c3dc27af58106941a66b3cd958eaca7c7e3cf3f02f098746d4fc58f4c7dbf5ffb506d7fb03ec9c6df2e79ecbef1464f6a4faa513e47ecad81817ae2868eecdd867aa6e95dc4fdbd2e9ec36ebd1ade9affb7bd0f87ce3e3ef52c988300b05afce0d7470cc3022e96af0768dbebbcf62b53346cfe3c1544492febc75ba96bd73be58afcd6874511b44bf2edf7f4fc87c1688e5fec59f7a043f699ba4d244d0886a721426dc23dc96056bbcc80d7a0049435c534b66a7ee6e5c90effa6645c45032cdc905b988781de81565b53165bab605a51bcaca0eddc308a46432794c390fef0427f005f434831ec63b4dcffd7c32bcd57fde95ffec793cb80e3e755d4721f6bfb7637f743e9f76bd8e3c25777c969c6fbdd0c9b79d6f16a00cc4b00ad7ca4f97d4b2e54d9d27524f6b80a6e5ef85447b23cf9af0036c6ba486862c8b50bd3f2614fa0e195a3f9ebc303770ac844e788d5e41ec6acbafdff4aea3abf8eb599ce93723b20c86855a0e31da89c0aded8a5924897929e1c92c7e6ed55f642caf928e73f29db2fb8cc0cc2e39fb6caa259b5a4634cfd0a532b719903f3f831489a2d49db4c5b5d66b4ab5a43e6442be62417d96a0ccd34259980485ffd50fed469f3705a7a0411fae4baddc01d584f904e776c36681994c304d37bdfb84a69a81fa66ee5ced5777b571922988ead7e4ff249926fc9cc4e93667ee98308a434df74dff3c5a440948437a7c500582124574af2f5f52e3f2d19d9b5e946a5f2fac8f774f69c48b7874417cbec0b93cc0a90d2a9640377808ccc2673495c4839fda0d1038b27befe3d22e2b727a +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 6250c81126572eec2da330271db36ee591f060fc7e53eeefe2e1c476c675fa33 +public_key = e0c9e90b548bc164bb826874c29dd980dab529866b952cd1c20cb4ad363c681336b24ed5fc338b1788afbf03f2bda8e974c33d98a35666eaabe47efe61839d6ad65490e7eaeaafe11719aad01fa060648667e34d09343d93db88abc69e0e098a63749bdad39f8c6b93d75990b083e621dcd4e7ffd61e93cc4c6ef09ed9fabc3d3bc638c52bbfae40d746cfcc43b7576a240540c05edc14744f80a442d0555d484e92bcd9b187a56691b63965973c779366878f85309ecfbcf7dd6d4832a1855cc4b83a847734c35de9c508b2d29539fd2ae14f787286ee97b51bc09208dc559446f1076f02e984a2bf7cae7aa1d0c5d967939aac74cf2335ad432df1e42f5d94fa3b09148e61dfde8454c68b9df2054fd6b7cbee799c9b6928650aae88db29a9ecbd78421ad844c858cf5be1f9b4959944d02cfdf29f7e435055eb9c2775a5cc8c46bd7e131f90eef3fa73d46f8d7c55311a8c2a0f7356139f153cb4050ae5064c5c3116dd7a964b33d76bcd58d9d21b34a2f7806486bd2835b7f98ee64ae496d4264f89fb4eb15b7e5b7f32b6c68b1145ea42bd9bb0d9fc8437534d2b4c0daf538023b29df93d93c9813688dff608f946dcf868664322bbf8dce7f79f68994ba5a5ee4d6d4e7e7d17ce4dfdda58db25f4f7c53f3dbe70d45a411b07cd650dd2dbadad1bf63a1165dc0c154d2005da6db44d1bbda1c9d6658199ea9314c18f778331ad936e8aff3e19c18f7bc87dfd78627770dfc5a2ff7eb27ec8f76863c3296ce1e097d3ef4a4ff6b3a1871c7b42c43a6eeb6bd25f6aa95b7dcd6b38eedfd7c73dbed1768cea5d5544f9d53e5c8cbf7ae81a2adf48c8a98b59c3adebcc3a5c99e61588845df4cfd7ec9dfab1df558711c3e1404a739f79b45b1a8a7643d81a27a08c4ce6478c9d25def29723addcfaf25d39bde795e346be8b1b18f5428eb01623347a9a57f5e9d2291be0486d839495566643d905a8e5626c3ccb63d2b978b2cf8faf231934ffc773245fb991cfeb6a3edf2adcd48387b95c346975dfe81158d78154416e08564d664db3045dbb8fc9a7934de51ab5c1d7346a49ebaca48209c8c72363d9944cecb9cab4771c7eaf59321c6edd430c88473ab16f54ae461a5dc613c6fed6ea5e899552e835eff57fc34b7992755d179ad365d5fb401fdab51df0cf2eb45717654634606d0bfa17fcc266193e2e6bfc4559cc575faad22fecca17e1e27cf3eb33c1f7d389f2d742f384725e3f68f8159f8c463585998289e58369fbb883caae21b87139f5fd7ebb92b11ecbe74f6390458247c45f07ff519ab35b35675bf943f53526e7ad3ac470f73d3d3985e20f77a647c96a6c56cc2346563cc496ebf32fd742aea3adcfbc506ca8cbada7b041ad4f6f3f9fcea77bec0683e1a87c3a7ee3649e59d9ca52a5a5484d283986aafe80557a6bf7ce2fef95a464aaf835c542457d021c65c3bfa457c771fcc47f8c1d56c8b7aa62de843b4dc4cabd8326abfe89fa3ba5959f89a7f805fa4b46e35abffdc57d875c558d4de87d71f22e9195bc8b4f8ce8a19a7953573e804e57ca03be295f461a784e747ee0157ba3f83a6947aaa09e9bcae83db9b31fbb8386f7293a485ed6b42daecf2689f676c1f4bef1609e71524b877f53fd3133bf71ab13912bf37c2cd7a359eab035cd +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 35d470bcc5880872754810dfb3f2796da2fd7f397537146f6488c27804072b34 +public_key = f149de49f3b488ac39d0e43292c7d042d5f355eb48b94e887faf56055a688fcac5a71c896414ce75f57bbb1f967215c50d4b5be79fb6dddead229da3d785c19e283f87f784a03c8f53af3e150734fdd7bea2ab6d122c928606bfb60570bd696d9676397ac3aa1d16fee1ab3923afc9b6cdfd14557164149c62f8d29b139e6a5db3f8acc9e8d3d274b69927ce658f7836f479c8cd8de38c8f9848c7698b179643b7550f9e93d6fa873515d3c2b69137bd8cc298b5c335b1aba5d54d13c92616f5e34c6c2fc8e86e29e6c137ad9907c8b2ac9d88faaaa037523685ea489e8f96477b7fdde819f8ae1e7f951f2e608c87532aa4f8bdf4cb5658440dcdf5ce4bf7175f961bd935624b9eb80d47e73e84ba5d3adddd57b6744fe439d8cfb3f5e50eb9d0db5adb3def5d64350d49fc4fb842823895e167f0dd7785c7f5986f15cc2565a71f6ca11b854a293c9ce6c9a1f4aa391723d309ffa2aca964790baf960aa12de3334d146e64db81ef09563c96673824f4c809441ee989eec93597e7c5b558a89dfaa976f6934dde8b8eacb6f2f54e8f748e4bdb69b0764fd59352585d66dc34fdc1fe356fab4467d8d650df3f8833e48b77a4acc642eb3ce81fd5ca251b32367ee91dbe5f30fd784a0da15f77d14c5e8453c4c36645f8ffb53272ee95c27533fec8c3b159ac1bf39c6fdc69dd5a5fe597fffb7bf272ad9966a5c738c48e64ee41d663e50526e0f0f5588ac97f152dd028be44aa23774f199d0daae22953aca888fa4136820ffbcc1f2692bc9e9b674aa1f4d679e94e8e8597c74e6dc5c287cde6d444935ee222636b03cb661ad66fb55fe9379da5f1d6b80a947442a46bdd239fe3989e6da86949474e3a5d56a5e6cb43bf5343a7c73b75dd8445f7454f438535e8a9034b9efa7a6bb8505b06d6ec238ffccd8cbee35a94845d7329e44b48e81add928c37d23c7f7656ea84324d649c13d98fe74c717aabe91948ea7698db0a86d44f96b5f5ddc0a9949c8ba07f64ce60eafb6f6f458ebff9d53cd8b9b696a124a8cbb791c1df55d3e4a69fdfc2431dddc6476b4555552deab63fce9fe8783151daaf78e561e1844886d4418e85e0be0f529abec83c7ba22f63335ba8f3043336da897a44fc6a28b44c68a49b437bddfb4d6be74fa5be3d3bb0d633685364d80440ce7e89b6b34f6545e01979ba9d35e474fc91bf2497670bad0da78ab4ce3eeaac86467fa2f919546a57c719bcabc9dc8215b492d64ee8c2d379e889f34b8dd63847da530577700982c4334673aa5d71db98627384e8ca876e24b5a31575ea3c334d3c7d3abb6d899eb4904b8f5db93d063ecaff25be54ef8c45c94758f3d9b83abc2ba66d98d3bdbc53b7d06592f38ef663c777dc6daff496a217f8fd837fc3a218ad8c9bd4ae7c66be35c08e3a955fcce8eedd7e8e68a806fc3fe218b87f87bc332b86c36f5d900ded9f06f24b75a20cc465f84751113db47ea664a75b3d4ee9d38a9c747c6872de0a57f3b76c60585ade64570b2ecf8548a5be4996bd2fb3d16a7bbcefd149034764c8f0892b939468e697e39f9b45d77eaaadb077d2968a5e541898321da97d4749d326dddb2b9c587767fb56b9ed9bb3d91cbeae24e769c2128e0acadbafd72fca96aed457caafaf51dc8c30ceac70cb4621cd4d7b4c +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 8d667921c5db401a86fe1c35dfcf164a6bb2ab7400fd6a0b67eafd4a0ed11940 +public_key = 2d8bd180596be297a4631abe0d48a046dcc99c99e2b8255fc45592a2b6e23075fbc7c450a674ccc3abb27395738d177e7579afdcd3de74e7c7b5ac5dc245e76343cfc5afded8d9472e13c9b36a6d38bb44756bc31fbab62893656ead659023d3701ae4b2f785d98896ae97953ba358fd63d9111fb97498cd7516b0e1898e2f78d3c6ae3d70f5bec346917249940ba35e3ea954f6dae3c343a09c0cd3d8e66853ceae0ff8b22e84f4f54be897fae1268a6b867cd9efe869413e754fdea2a147c0096f83294e33aa6c324e1bd570469f0aed901f35f13ff9b113147990b54cb35ef68e0b6c7a3a90c638b7c483c71bce344bd65c988736c4756e0c8ee11bf5b810fb3cc4187363a94efb1fdde1c3cb9b0d5cf57fbec5685322faad5cdecb0f34d458b56fcc5a61680ff677565dac1ba9b984c33c348babc7d506b8792664d547389b805ba01e4443b5e6db9b4d7f8b16dfcd96c4b717baaec7f400eaaa9853b962e8a0c8d966458cc4cf03ef960c447c7bf05629419478360cdc945d6b9a565d4d854cee51364e7a9aad82b64fc38ad2e4139b9e6c392dc83c050d5f6e1f99da9da89ed68acd3eb5d2eff4f2c8b3ce5f80a12c6e088cc2f9d3c59afcb9fee458b05e35c9b4b477d878f357f3e4aef18adf764f9366ab8752c9248a5694f96ed46f405ae739ba72d5d652c614860e4e898e45b72bf66d597d89fcf49e3b94cd26999d7539c32bdbac0139b20988cc7b578ed99dd48885355f193ddb1690b919faa2a86af03a417a8ef0be84334fff5c2f7dbfe9eda659fd3435b65787f38bc955fddc584162955f8b8560991c4080adc12d87de80fa4a2cf7b8547d8bef2a44f959b9d05b6faef83f704ea2464f57b0157c55047ae8ddcc17079e118c8a4ee3358d877251a7deaf86684ed7d858a94bbaa4bd30de895d3ff3320ccadce636c2156471b76c48d53e6a7ce2a23e7c39c48bf4adaa0dbc8afc034b43398b9f1c56d407a4b8cfbac144d24df6ae990db231ef59305f9f7afdab048867a349684b34fbc5eff84b7ed6dba36de7b3a114b6353b479d014a69e33acf5c465ced6669b33df7d6657f12379abcdf48c6967834239e2d4ad211b73a77d681b61892877b7e102a53cb56d2e3ece704ec92aaef60da8e7c63a3d62b05f1f7a84500ff9124ae6630df41090ac81fee748eea878d53969ffaf0fb95688fcb3d2369e0f154bd09a75556d890409cce0b2dc6cd2a59664bc4ecca3d4725910e3eddb0c848cf7f42cca945f1568561bb90d9a4c3dfba83075ae6fb3ac934c865dcebaf6fe9dd5b458c2264fdee6ee1e78ce2d8656908557649f9e55a8472d62e3b46f739f095b5fd5af418074ef7db9386fe9d673daa2abf8881aa3474b7ac352c5dfb0bf1fd7b8a0b87cf3933547cd498256a9e17733ad6967d7b9c7adc64a951ec5c8ecb75b929d064f3a863eedcb67d7215f456cbbeda2c34d61a9f5a140b6cba878a0e5df83efb9e166fc227e7e6d2935e8d96649c06ae9465aebf65fd68eaee7a9ebf987a4dff437104aaddc9e56f110779d66f959f278b069b3c781faf2a0f7aae7ed9bb0c3201565c0b0892a62aa74ca7bd6b58d39066a95dbca4e76a3a3246e2269546b18ba1bda19c123c24504ecdf72189dfa1cd24ebf011a3bb66d35f78633e1ee7b249ff +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = ec750b3939385a3f8df868119dc76f77ca845567ef068de6ada5478a56bc78b6 +public_key = f3576ff96e54114fd94855b18cf574d868b0eb783cea1eef280ce5c486b122cc80093897bfc8ac118f421f99767bd4fb0f04ec22dc7b50d555614e338e6c4368bbe90f9f608f6cc69d8b33f1bbd4de68cf96d9c5882c97cf28c30b86924aa57849954369c5427c876a9b1ca341e8522e1357e60a4450b69f1506587164d3d2eec957e5a914b9a3bc4c45499d533073f9c7984e77fe69c8639de418ddb177eed02af4725ae01df89e45b5b385dafef663586ae58d9b33ade9738f8458fe6e28909e7641aa673ad87fb12526ea326e66e27e7fdbdc8d03bfb2b6ecf18066e9d4facc40e9a21bcca9d4da71220a4631e95b25e960193af2a39b904bcbd2f1184b79a97b3dce6b5e4b5eaf278913b7a19503e1744fa77a68cac91ceb5a3ca9b354a6096cf9c09c5ac2b44c6dbf8a250834d6ffa307ea3434977d0097d17daf692b89d0874db770c4eee3cfc77bdcf606fe857368c8e12983afa8633c97d115a3818d6bcbcee864a8db694f4b77bcf63a8aec407a45716af6358065c30b77b68d2e98b2fb558f463a7477b9fa7680f1e65706a888b884da87cc7e7959e56f896c182b53e464721e46a2599fd201887ce9b83d4335db64efab2aadda125d84a6e66584f767854bfe684c547da7f66b36b6838aaba83f98dab79c58c88f1c6ee13ee752736b7566eb5759cc4dbc37551135bb3c87b1a6c83ac5a38dbd88e06fcdc5e9967a6e9ee39ce5e6028cf5afbb6c47e3802d66d79f6f65c50ff01315a96ab9945a8fe4b814cc53e856643dcd51fb404506d6df1c7c9c25516675ede614eb7fd85c7e376e28076ad46fd51c65494b1d54c30930621c53ee8947dce3c55bd686f186cd5bbfeafc17664d36a2d705d18ae83950b93ae61d84765fa5c2f761208bdf478c73c4d6313c8acc26be3ea64a72ee3334013cbc0a855b55e88ea17466534786b6176b9053ca9d0494c6b4a940c7db6804dcf67dc4620ee895a5fe6a0fefc466fdec99448273e88ef44e72ae681e6f6cac69c6b56ab51ae656be1ca02877fd98dd44e43577f273f9d50851b0f8a4a1b6c2b673ac6418ccd69dd5ae5ddc28df74dd4732e56b5d7c0b6ee83ea99e25f2a07f95c153aa3a873c21cf3a35c6e37d8f4f70cdf1a1ef8f98bb3be8ecd7a6bd38dc89944a5f913af7a39aabd0f2ad38a628686a735dbd4c45e0b8bcdc2cea902cc4d067ecbd589f508adc0dcb81bd39811f7f3358d6320b3d49bcd9dd776562eb34877978c9929548286a85efb85f7c6c76ff255f14adcf5f7d304f1cc838fa398fb34e26ca662759c8f3657125ecfaacdc4615653ef074a7856ddec60980be4aac95bdc7aa1efdbe73cdbf1687a684ac645f67799f6654a4ae4cc779a70da836f3f73acb95a91fd51f18af32683f52363572583fdff3d288bf632874cb0493ff56ed94481fc86d37420137c5706f51a145fae38adc3fdb885cb561e63a493a15beb5e3b123aca6b6c7f94e9dd2e7ec758bdfc22d336aae4cd6770382194fcba2ecdb1b7a45cc0a48203ad0309f7123cd40f84a884c1334c2ee73481d8b92cd55d43ec0b27dc6f16d48b40ca0bed838ad963fb8747ca714cf1e3f67b81ee32046699798421adcd6a3cceade27ffc73ef3235c2d8dbfe40dd56ce5de6756cc4b6afdf64050da2eecd9953e893c53bf7ffb +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 74f1d52af09b12c36eb062ea7528550cb4c18a3ce8e4f4ea9fac43ae383bc925 +public_key = 4c376ba98c3a0415a3c0bdab43dda3d68cb1721d9c5f93e47c33adda2cb07d6fa9025b44524bdae4cb8a8bea5e550b717ca6c8271997cfd6c5ed76aa44e43da3bdfd367ed7880ffa66298ffbb45fd78a8d36eab454675d6a5ea7057fcaf06640bc1b97d686de74c4ec577855bc0756abf5f8eb4894e8776f1e739da45a9f84c9bf3d7fb4336f525b547f75176ab3fefd8eb8d8d4bd355766bd69d964eb3b450a96c835d7b2393fdfebe6f444bd398583e333c54383efd200f3de4ccbfb607ac9990fdeef865bdf47ce78ac3dbc1abe33245d6fa7583c3eb6fe7b6ede7a8ec776b20f7bbe7e376579fd933b86ebb0a5f1621f3d6138fcd6d8dcdc8a85f973faba1a8ef69f5e410bb80beabc67735d07e4abdd587827745a332da24a7b39034e6befab3074cfcb1fa76ff053e5b653b3e8ce834349ef930e593a8f9dacedf89b5aabc4cb5335d963ab94f865bb7c391d6eb1274ecdede40c4e5901279e8719c04165e7b62de394f78a48f5653189d9371a3155df91699bdbeeee705203d886ecfd46f7eedc438c288cbd44445f9949f6c0fda8ca2ad33b656c246fa659eabbcf37b2cb69e6940aa9b3e850e61d39c08c8588347e1099a0d848dccc4b8cd0c87218ccf4f1aef6a82a3d530a75510f54510ac765dcede71fa4cfbe4db78a71421d9f947b4329158f87e4c8b41a92afccc9eb749d66b7e159db90e7a36642636af22cc0d64ece52db7ab44baf3066d691a637ca3e93a12ad0effcd75289953fdc9df3ec339044faee44c08d76e6320bd40378ee1f89ce140db0c1a36e63e5a45886a4c76534fa78b87a75cf96ac66206cf8766ba5ee07d72363c1919ec61c543d5c1b8a5473725167f2ef5e5e8e05fcf9ed89d93377e2c8458f6f6d349e953d658cdb05c7a50d77f5ee9dc1be32bf7e9015defb0dcf42477ee2e958d9630b63fbeefc9adf71dbd38e5afa54c894542ba4d415354204adc8a785ab953ddee0cb976a9ec642257d9af6998c6eba28bf36fdfab86f834fb2d47cc19d4b9d6acd2f93e1f0d4b8ae8ea2508efd9237f5883fde8023a8bc13bd1767fd3895e77803ea607752466cb0de7c5c131d3fae4c57d953b96be93262ba9cb064d5a6dfa9e11fb21b2fa2ef33a385c898c80aa9663565b73f41a2cfd6f3379abf8f62cfa49ba05c3b43e9485f6dcd38d66eafeee4f08eafd67bf594baa361d3c3b12d69b2ae64bc387633ef4c82b9ebe2ca390eb585ea1de73699a8b26b8916f5fbd643645e4ff5df38ba50b5dea013b4b2a86ee1f76279ef7f5b4e42f044d04b567f309c52acca3c764de62ed744a67481ca338861ccc3e843ee1c67886023743719493cc3caeb5e438e28ac4fad6b906789a76ff0e3c7407c874c642fbe1f9b627396d81753ad618a8dcd0e33960fe05017ae2b57ba9096e7490460d5a67fae2660a56c4c4d97babeadbae0f494260877f7077af2536b2ca46e297c61dd94f2bbf5e552afe0daccd2e7047b14fe6607bce5e4a5d574c43bf8c39a2528ade0af782506635e66f6968aef31ddffa354ffaa3f50571a8173999a88ecf7b43c476468a6a4739972eceb68493414af743b9b563283cc8879e6eca5887796a4f833aaed6639b9d531efe5cadf9225573a23664c9cea086428dcd19ff40a06186a41fec0723953781475f648 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 4b3a70d85f640d1a2a852fb6fe96704af56a7415a8ee4282e9207bc3a2dc116a +public_key = c8735813347c3c8cd5f82ae76264a5ff89ed990eaf880475750d8c870635468ef6b406907134fc24ecd977a8c13d43b88adf7f08984d9ea657d34e922ccefaa29ae4098f5b02663b970778bf669d585a975abba6bcf8513d1ebc74adc33897991c44f8a5cb4dffde55baaf909e6597dd8cac1ae6ff9cfbcb270888616ef85986e885c5b6c5d89fd7be8f9f3f4ee808dc4d5d762686fa22f4cb7f55f7527896aaa97a69b8aa50bd9b16cbafd73a667e9cb085f7ca36067d4f84d694e6c83c77e07186ffbcaf6a640c86432e97894caf02bdaf66a6d651998073ba7fcce3e89158e87cbffdd276e262766399a6b8bb943aedc590fa048817deb9d827ca80935d31ee830d9ee5b18b75502dacd7a376273ce19cd8f10c9aa112e6d4b31ff32605ebd674aa1579c0820efef04a9a2b4571fc2cf1a8a4ae2d8deeb2ebb0ce65cd30dfffee63dfb3daa6d82b3d46e33e9d9e8f6d33abaec34f4549e245453ef5eef8c5cd68227a65129ddd69f6a31a24f1e2e3f2f8a7e45a6eabea377c9393acbfb7fab3c3aaf8fd4ddae5d077e7c36ac46e093d75265c58db4b7b47eaf53b8a9362cd8a1248b53098c6b797622f2f893a0ee1edee8c02ac613f0db624d6eeff55f4f93ceea73f553d9b90cd886fd2c364b25c877459ba6eedac8dcfa8b1ffc6d72ad51f97f7c299fd1934857eb995a8e7f8b9739872ea472e76d2f2c39485df90109ba924933d6af5fc30eb4d80935f0d2c87d4dabf0768fcae4cff2179ff0825c079ea6700065a6086b19768fb76cac90a58451d7479965475ac8a6af76fc7d33d55c414f46264c97cdf3d280b43cdeb59be0cb31e04474cacc4a1453fa10a9e1f4d50f97ca3e9ab31e66eab18cb3af82e57049dd23a9349ed6bbc5df66bb243928dd3a4b6fee3a0f99725c9c8bf673818b89030ebf8edc536ca7fda1625c8a647bd3e7d55039753e11c4b1be3ae79eb565e6367690b5338c554cfda9369e9b1ba75651b0f34d33f5ed82369bce4e5089692547b325fff818958f714d8ddcdc5bff72a6152c7dac3fe6707c63a4293ddd6cb88ee646d882338d3dcb2034d8fc63edc72dea8bb0fb8c2ab7e06e43ccd85ce3abfe5e689e4369c749c3978778592d9e34b778ef83dc787446b5b70b3fc4c1ca4614bd1a6ddbfe66de6b8a7e30d1bcfb49bb5f08c5dfafe5b6d63eb06c53a38a5d0675aafcaa7d0fbd3e0fff968300360ab73ead95649f0bb47e55b90b2593d9b6dbb0477ba849cddb9f8bf6c774cf8348c65695b31c9f1e4439e976b4306a4706acf5e4a85e5867cdbd77b44c798e1220f5cd3ff8430383600e4ba0cdf8074b7bbf3afa3be6fa73caf40d644ab1f89ace0c8a83af6ff652f37de265765458d6754f73e4372add9cf5215bd39fa516575bad82d34288ca3e0d3be57dbc7ada731f6fe3fc035fbc5b9f1406dfc342a451b933d316da2ad8a9c140e3e3d93455327c187547809fa57fbaf99a843a251f8368b7e5508d3faa57a42f965e520433f9675add0359c5997c341464264986fcf77f61d16b7a6989ee33730755afca0f66b6c98cb421c8e4b46d0266eb1a565db94be44d565faffef36357c8093a3f829f864973e59a8e7ca992b8faf0d6190b55c6a4fc08ad10190d2a178865abfa35607e1a88b47ec8ea71b102d7f1567bed46a +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 26e38ac804fb5b4d59ddf747715e7e6041d875f99c7b638024b4af82d622da60 +public_key = 04a592c364aacb2c8969aed6acaf9029c58de07d50a2c78787358571aa50668df88e747a4204c43e8c6020aa3e2d77b36c3440a618c55f3cae6d43b979786e6a28ed4107cb723bb6d17f9ce3eb98e7a979caea9508563d5a0b7a7ba55b8985b71f3c489b47dd37a66ce048a9dd27ad17b38c6698d491985b2af8916c547e9c6cb16c5d6171ff9304c4393f8f74ee254a3f13c6b0f3e10554fbf92799f21774beaadf64a7de6ab581637ee5a1aa3ee4da79375d4d036b75bf6d46e5778f58caba93f8640bebf4983ce7ba3445f2ab983b685644b596ef66acf749d39bdda3ce6ebb81cdd0f7e8bf5306dfbe235c0c0ffd7873aecc6b3ae2f3b2cc3bb47d1b88424ae88393c43c4999c32a886807cc436fbcd5a588c6eebf8ed6a6eaa9e0c19a604267992603e5e7c7c85bf550482735e70ad98c857ac1578561aea2f7e831223cbde33a46632b7e24e4d0a82a8c7307c23d6ca25075b58f7f7673d7cb5564d42cfb9b7f95b11a55a9fd63b1bafdb60f6931a0caead28b485753446c1dd5e98edd7189bf4394d7b8ba36a1687a48e550fa37cf4c6b591afcb0af6b8d2ea5a97b7ce729e7ae23ef8f218fa5e653b5bacbdd147a8749ff606ddcc7848cf4f0e3f771c9e0ccba85befcbd2b89c5036bf062e6b9bc4d828a0fb82f1fb752d48d52b7a6599ac01483ee8ead91cc4de86c849b61954dff867899e5bf284f8229376ac7d97fa03996160964abe56d3e0f78f909f0ec6bc821fc822949ad5ec8a9d728b95b29d52ad94430ad527b3935f4697cfa3c7413dafe81c3fa57f69479e89760a46d720d32efbb662f9467f1dd3c806b619caff8145d76fa235d512f30e56669e2354c1c5efed0edea429b5c77be7ae2ab99c73b4110957aa39cf2c8fa39c10f61c78aa571b953d86869086e655f07d1803a477917ac8b7ed5cb0cf30b3da0cc1466d7598b2058b3899c567b7ea66d5c9da85d85686aa4ae5de5100360c72dfc84c336c14bf29ff599dee4cb2d9da15166823317f2db2edf42f7c0a5ff3a2089add65438dc76f4677ebe41e776674eb4c9139778ed8cb4d5b953f6d2931a7db4eece70d765526f42ae8987454b898f19c5103bad3a2d7bb16771b5e4e91abbbdca9b5beb8ee081ca6521149b60975e02dcf250a355897960a9ffd3ba148f8be764535fdd2134b607976f7809ce97597d8ca57337fbbd6748c032276080ad82195b49753c43047b95a12dc7d195b01dd3cddc5cd91916c37e447acc6d6f2d33fc37c987193ec1fb9a8d017e7763fe8e62e7995a7393e0b8f617da4674078d902dd65a28649e53377a88bb0f996d84fc83e9496564344d65b73ab96c4e898ed7d7ce4488f6d4e0ae5e560d4fda8b65ae29d06ea7c8a757eb354a4e7477d3d5c79858bdfec32fb78b966ecf26ed97ba7cf39b37fe173486bde56c47e2a6ecb14f6f9899da91647d9b673af43d1b87e16cdad71e419d8552235fbb5b0fab725cb5eaea5bda73976d534a881b8c32c5328e1e7306fc5217aab89c05ed6174489bdf41d1dbf61d449f25af35fcd46fc19a8d14b4f81916f36738a06016ea494947be9e60453eb1a297e0816e6ee2f9e5864bfbf2d9cd86743b0ddefa5e2ec6c745b34247c17f9447579fcb9bd38af3b64cc94782e299e1d98e68f8bcefa20d1e8db8552516 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = a319d2b8f114f1acd866478bcdeba6fd164dc4e37b0adfa8d8034afb3e197376 +public_key = c0eeefc259a21168d6f9f68ab15859a763a49d169d615b499a7e4d5517d7e9adc0a93c8db2fb5e4de7c9322ef06f15fa7d7a5e0b5632d94c7a87596d24e950b46ea186fd65fa9643604ef745164693fab8d3a741c56c6f10d8be53cd6a5d83cb1be3f7e6bf8db22f91d907a2898e36b6fa3a20a48990c6b6c81499de2bb12d19b591234d55c4549a3861636e67c6ae7cc2a4cc9f668df17d7d26795de7f771bd6e4b994b574fb3d9a2eec8b5ada4ae6f40286bb78bb7d1ecc430269a37853e49e2feaab83e523359c735694f09298e2a2ad8c6fcf73b5aed581e8b215f4fda28e90d3df9db4d95ead5321206daa76a343d5c68ff17ce6c9fb340dbb8cc7cd3ae5bf9df243b93233af6b95eb5a7a8b8643b0cf5a8124e52b8ea54f0e366861eceff536d888baef85a62299c641779d23b7b92088546f338448c1977804b71781a554bca5f14cd480c4fc5a76f69055e6139abaa54c4f9e8ad502b17a5a37f7a7f33dd63c5764dd497f164b24e5ba3a626785bdeb917a6b77b175e653f3783c979193fa7c54fb895eb338e7af9ef77ed4d8cd230668c14bc794d0ee4412f9ac905891dfec51e06fc6a5ad55343ef7f68e054da45c47dbf617ef6b39492e4a3b8592bbe0359bc017557379471f0aff367e8f635d8494c88bd38a7720669a1f9145367b9f090fc5df16cd34c8fcdd9b7cb9ca76e75cfd69c36987566d12cfd74642467806dade29c9cb52c6d9ddfd52394691d83d6952c65ef498da51f79eeabccc66b3a41747a8b447d7ef8e116eabc04f4b7779f3c94af8ffe888652fc34415baaeb6854d483f745a4bd5bb6ec35678780063ed874c81823ceaf4eb9685ad5420f66f7ecaffbfcb5285472e6cdffb9ce5d1274e0f0ba3ba8536cfdb65d23797414a55f272dbe653a98f33c956917e4fbd3418c6893f8693908e4ed6d69a744e63b2b1ce90e4be696a5c8b1cbbaa57e9a0cde84f896c9d809f7dc933ba82bf786cd5a52cffa9529ef43ecf3b43cd50dd9e33eefb003a5b6f1a5730f59d454c58af39ecd8d46acde69842df7935377da55efc88cc6937465e6ee64c2afebb95eff5ec16d8ae4aa9c8a2e5d471bbf68dc65300ce0ee495fe0ad9e98ba8d37f9636b37dbd22df579eb7f1cfdb911cb79f03537168867ea06de77d48be27bc936cdf6639f9dc02f63270670e17dee5e53d08bdcd7f06451e54755fcab421d584bb613d08ca9d9cab6ecf99a4b43a93ea8a3440a9eba402c9a8fd5ef90584c55eaa450b7a60044fe995fdd728a8b6344659f3ad26324de69ab86bdc6b20b3aa0920b90c71cd108358c8b9fb27645e54af9a0a86d80ee593ce3d37e40fa33d0c654aa87e7209ffe018fc95cc6db54a6a26099443f77ee863889f36adb9597b3442a71fb7d4f164834fc9c8e2c63847c9992cd73c1bfe7abd3d75449efe926ead93809fc9133a92f4f6dfd2634a677878ea9820f6cf6a248ffdb1c4b8ed59db74b4490b87b0dfc35f6cff112f5e10d494e53d5dd3fd6c64cb485bf5ab37f8aeb71aef2c7086d3fa56fddc966db2c53e09b976f986a344f90dd8c3c7e6582c4eaab182766007e503b03b4e78f61cd13d3f7a83732795cbf84a04d78a542ad92979ec94a094b7b8f92c5d5a3bc95122a6a7968dbb1334a712823d470766b3b9e7b55672d02ae +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = ff646071b2509e6b75790917e08e4f0b0d9f0116ec6291c0b59eaa4b583ad830 +public_key = 135ffceb1d8046df888e3cf9ce0bcd454b95c09730d6c4698e7799885f3de0e972332544c34350d29c7bc13dbb6273b9f1c98c3a73e70acbf641c54dad64790e83387d5eaaca2f814f834c4745409273ab0015eb2b8e9eefc9a0490ff36274d9fa7b3f8d27a0dd754f947faa37eb92f6454fdbf3e16e4d6b582fd3dc15f01d3ea52ba8b2b96be91a7b7b55e743c4ccb80b8ed863ab741c7f7f187ff4012c539bffbd062ba6be7a42ebcd8c5b6b420becbb41b55454fcef41347ccd984f11767bfd8f665286a56de3e598834b37ca6ee93658999798ebdd942a8e60b7e6c76978370dc3e8027340163f315168a162ed87d4d6d86846a3b60b80104cead814843bca7ab329c7914982ee3fbf175d7b3024a16f33e281a732d4de55fb7df60064919c484c184e874ba96cfe9eaebe5c314f4d7a66d7cc4c846176d759618654ac2a52fe69c69a375ed06f5e2889abebf395fb2d561ba6300b7fa2091356fdfe97c866ab5468a3af7bb3de755836d9784f8cd949445d83b335882ec7db4cd9b62fdf7f757bfe3366ae4365b687f55ea680f27c310f768e57feaab889f25944dbd6b984416e48a254bb606af91c0946c84bee9c5bb3f879a787c9e06f98809e94bdc24cd62d69f318f9854efd4bcc343d64387baf398599bb35308fb1f0a5b530f8f4cfd69d7a5ae5cb66f4f70cbefe1c61302b8fca337d71de900dd8e78386e9fa893208da873c45df0299f0987d8cc647d93fbf5bfb4b3c793331f0fc73c5446cb21f76824cbe419378a224a6830ade17c671fb8c4bdbfe8c20c53a21a4bb8fba9ab8aeb7eccc81946bb5fdbe5e1d08ada786ea55e5d3dbb9e2b73765ff93a6ab74fb5fc7fed5fe6657ac448a1957413cae547ccd76d9936c96dc70c5635c2875452eaf13448959d67cdea3997ef9f3ab3f6129b5397c15ab90f95833ff63e18da4256dcf9f18e152aa59cf27f63e0d8accfe46f34a7808257689b3e48e58a0a11e7fbb47bca988e0a42a7e0f734c0a17745afc6ade85f080b39f3267399d2db1fd0aea5437b83e05e35405aba9dfca4214d371c541a5fc33987f948b2eb7efd3dc909c7938779bd11f64255ed8326de18ce431bab7fe98a4f5210945a7c47479f4873e3c3ca6698ecb3ad50425d66d0bbe5e34d223af884b3cc17bacc14164be0e2e330456a279547579f8a4e9443d914ae5431da3fd2aea273e86445a8e1b884bbe8b54d0196affdc47544c8d10a693780ae49bc8a422c44c556855609d80f27dbc6ea7f84f448e6c23885e6d3a732c469b376a762b5069ef9e80b74f994588da9fff3f8eba6f0cf83a9c905d19e0062bbe94baee0c8c34253d3845779f8c9b515d0ad964578a66da8ad7b56da39edc12eea2888b88bb55b8c096a145c6fadadfc98f0d3658c9729d7b825515f7411a9c0ba8ef3489f51c1774014749d31e687dda83626c6bfcd5b0908d75954bc10f48623838a736e38c1143b9472b4df5e3dd38fdbd7d7f7a2f16a3ccfdd15dab5a13ef7a63f7aedb94ed6d9bb1a79a5c3f9d3c9e374da63af98c549b994fb77c33aab6b4939aeb55704cb611dd84950c41b746afd71576146e8f6f1574bb5eb36f88f8af0aa4f7acd840ea3d68ade3e06e9046e935e0bd96ec59643250a0b38f9779b0142a9e546eb525e72ad204d1eb31a6 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 0584270ec26f3b9818e4af074d17b2d51037cc8dfdcbe3b140fa4fed5deebc54 +public_key = adefaf54375d684a6cb1fb38bd9c803a15848309e275263779e75b6e4f734dd7ffa02bc3b09630a0f79e2f95cb067c7dabf42f409a9635d55106f9ee3244eaaa58d8df75f8c3ba98896e84e0195e3dad9d9cd5f5980cb5a2f9d27c6a88e914fbf77653b9ecd2ad3cbb04f594bbed8da4683dfca6d708d85e3aaf8ad6e6a7dd8ea2f008e77633901298628b695cc1868756a97d81beafebc7eeba5969a1086de4e6e1f737af56a83c7378c6e6ed4e79a8967514cc668bc8fb7c7a1a77ee29d55068e34d883a8320438ae7a44f01ebed4edd730418ed684796a925715448eec44562a9edd5f3dc4c94d5ce9e3670523facc8876142194da54934096cfd5725a10e376433be7bf8deb085d342cb3c633a085e960f48ccc9c7ff45defc44ed08ddca06e6bec943353c47950679ef2347a29ccb34ad09c92979fed98640e6b8560529cb1713debfa4c769fc7707c75d87cf34edd78e7c4de0fe86bf71748cc1c5b00023944784f00c2e63b403b8217d93dfc959b6bad9fe6b98f6e83f972a50ac0ee4e9eaffb90ae1d1dd5789ccaf05c448864f49ba8973a19c537dd69d3f39744da89debb58705ec90ea56cdf438d87d8333b17bea9e59794d49a40c5e3b5086797933d244bf7f3d784933eecaadf8b590feebbeb6fda4875d004a73fbcc90b566ab998a450a9e94d449cc61bd56267d648ad588b213cb9abde2847d6878287930b7eb68b43f880f3d2f49829abcbde6a37a951e82b78b8cc1b93982c7a24457a9e1683d2bcc97b4259519fde0287de00e2cf6cdd85023ad4a91168486ba34146e3ddd6c42ccb56337aad8097bf87c4ea011fc9595de32e33957f2a5bc1db4c57b4c8d9e3e35486d95ded35b2fecd9d8f996e43fbaf7939efc1d32e529606677bb1144374d4ec08807c9c0868b0d3f772f18b755d7bc5c6be2f8eb9ca9dab589185553b744094de062d9db2d68504f17e8d43ae98afd50f9097889aacdc175cd7e6768d626a8c9baeb0cd6cbe92be0af1a3e507575b47b6ac9cfb7c90ea81985a81ad4ac04c3fd0dd880d43b3d36857738369b7898b232bf4ce6e9944526b9ef47d355ffee38f6aaefacbda63497a863f7a32efa5db95179d5f85e8d56992d9f2a1b67a783d406cdfb3507b4e4b65298734f5fbeb66bcb68f9369abd0ec7e4545568d432a685a6e048e22253987edc55efaa3d9274e3dbdc43fa9d8df29f5031f45d298ef734fbcec47f4654cde9f7d5698da7b0c3d9deedeea1be3567a253a1447f3b965dc8f7333ddae88208667353b6e84853a85a99c0c473e89eb5763fe59d678349f536c56e0e4cd92b56ed2aa6b15e8f132ea49fd658876dd5800ddba29b93f28fb3437386f1f846d2a3c60ce9d055a4f5b2b7a5ff88cfacef4bedcc82565f577b6ce2e4856ddce9eb0713526098b5fa555f106adf1229e10347af9026f54a5ec3cb5c7ebf7df56434f276399b0048ad8d47db545becb9789694c7753fffcd4ac5e513cb33f38bbb10c83c9a1a5fd1489d97476d9bc3e4849581d688c3dcbde662b539c51bddb8e889a4654e6a07d9a659e0fd5d3cfa0abc21b8abc233ab978965059c41d21f3a4bc9d306bad9264bf5be885f4ebe86d0f7f0e985f4464c7f1b57e338a864d6c447ed4e29d88c30bac7d2d0cdbac43e9f4176f0078c715acc +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 51e05c7b4ca3079781e8293f4eccebeeb2f8c8b4c59468eddb62a21bcb4ab8a3 +public_key = a9d8f3efc5c946dab44b6bf068e6ef00e7b0d87ca67706343927bfe5defd20d69c4a5ba892f97eeeab7b5a45742cc4ac4d47f19ae7fac42fd51e3eb8385ca22944e5a13bb8983b8457b8af9dcca9e74ff094ca68399ab77dbb9f6aa7ced60ff5641c3fa085d7daaad8e1de80d52585dfb3b2fc95cdc733a573a888d403cbbc7ec120baae2a19527847dbf43f99babf684accc5288a3cbb1f77fd3999839a6ed29bb91e7ea528cbfe4f953778caf3341cba4b9b3c17f9a8377fe2af3b722397419e24874b163470b3b2b8ff4ae72f58983b6161c6773b5ac90969c03e0ecf4669b9d1f46e067d5d4f676d474f64d7549e1e2c3290c9b2bf5a71142d575327e4bedbc7a91bc0ad66f54d298908d33d588951333b3cb89f4abf14b0d70652c45aa62cd3d62d95ee45c866c73dddf4e74a9e559b9e6ab739ffb0da9693ccec3d968a86701ff0ca95b7c6e8b04ed4ed3ace7eafab77444aad4ca3a9d6b5b5d57eea6c074fe0cdef7df68ad254defc5588f3b4a5c51d6efa3b9b6bb35c327465c7b656d2cec6409993fe9ecc2027fe5329ddad63ce0279eac326904cbb6424d9d6bd19e313cebfe6969ba6aabef954b5c8d439db5d64a248c929889620eff54479946dec829c76cba61690e3c541659ff8b5a8d5d70bfbdb6aaba717e8995f79453affb24e4e4704ac3dc84d3eb767101c8f4ffbf4bd8e483176d9bf963afb8f6a9b87638434d52067ce8fb393d9ac579bced80d1c549fe5e0341fa1ff9988dfe7805ee9d6ffaff8e25942d49484a56ede0ff9a4a55af2cba6be956ef6ebe461c5a4da75ee517d6d603b2651e847e973da7051eb71987e3f5583ba51c9fa9ec3e79b45a8a8b5d99c4dc29f69e46f25a56339e365ff36038c79b784bf0a5f4fc79edf91b777bbef52e5c7f3e8059c06157653e335549784a15553ff9a7a2a4d7d887f5aa6b7a2a2669cc776bb810672967cb5b8b9a9ba85ea9e69a8ddf796b103f53497e2ff1cf3f4aaedec0fe1c027995b8a7cc6bf88c4c74218f5d8622ff37128cc57f4bfedecf1ed23bad00c58d835b5a4fdc8fe0ed11e0ab26c2cad47d5caf235fcafd3520e36ae221e9e56fb456f277132059ca196f3bfd994878c794545ba4a04436e8d4231f430b138d8fc0e6480ae5d94b975bb6798ab7c3f6355b9be5dbc1dbddee76342c96d9be0bc893deb398b65a453cad8bef83b805b61956ff9d994f2f5acf7e97df2da66f0d737867828540d2db097076bc7cd3e5435aee1b9af19958a7dfb921db4e42814f9da389ef0ef3fc9578b714b4f2e6be9b89f903ff45aca045bec0b3d84dfd4748afe24a7eb441ce0119941da3e6f45a87c4bbfac0f7c4bde9bc8ef73a7f435e3be44f0c577f0ddb984cb17358756faed9996d2a848d11344ebddf351e6c5a18cc7af8e3bfdd5dd5b143f4d07ac73bfe3a0577f991fd43a585d9513ed017b319358a24b06b7c2fae9f22b6634146cc1bef3a815ec51e6ad6a956b1a935fff0dbc65c44a60534d1375570ccd36edfbce66255f523bb378cff56c29b870eafc87086829a8f8f6fbbd8e1ae09386b8d743a6e7a38384d5933e64565a037ba06fdecf8466f2073eebfd3d1c6d6f947ca2d2ca49e4c4edea1eeffbd23920c0d2d0cb20e3a9c63bff3e047504a8965639e8fd0db690ffa1e791fd +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 9eca0fe36c80fc5eba171c3ae66a5b1c923faa50b4521bb055e7bf51005c93df +public_key = e71b4ff986bee57636f904c856ac93e1ce8775864b7ba3faf31df51b13f8f5b3caa49ee6c6ae873066f2b5ae52ca337ed7a3690d4ee6196f447b847f5639c5861e33f627b5980572023b4acc37c32f6b70b3555e0ec4c5809c95834d7a0e59a866a9e564ca55b21a48ee63d676a435d26b749d1f64f9e58c3fd6e9d2af3ef5f6300e96665eab70e745d8531e5f5859bbf1a8308977648ae5cf5a55c9fc4f801aca4f06aff5456ea632a94a9c3a7ccd05c8b7c3b09666be55fd72cdc58d8cba687e6d9d201fe115085c350e53ce63a3785dacbebdea6944a46dde6cad098465bed9bbc6e1a83346ce6b59a5f4ca3cbb4394daca06e5708459cc777534ec8da620d3d8dd779b075ce1f31679ae98ae569bbe79dbd4bc1f7209ef4ba008bea28c5db5fce8f31c50722e71e37d426527d1c40d4e057a6865d54763843d27873221ce74c67e54c9a9705eae62e8685a035b34e15c4120deb7220c57266cfba7579f4bd9ab156e650f9df7c0ba79f2ba3f14093cac7de5d8dcd92905a6b9fd9dbfd5743818489aeafbedf88ce69f396074a79824457f7caefe334fc84869ff4364192ead60f8d407649edaa8bdc2fa877eccaccaab8a1f35a1573546ac48f223ce93bddb31275b84374cb4679a5ffe8d3eff07987fdd85fbd43e4585fdd9b3ff5fcd3e7b74567ed9674f1d70b026801e99ca27ebc0ed2474263d507e19b97a09877a1b511da3b9845f68ac35ae44187ea14b996dd96c35686eb98a81f2bfad90b8dd0c989b138e3e7effb34573b876289e7c79481d7f47e637a60fabfd40def9c379a759756408636048565cbfbf4c2186a8766d6a44efdbddd8b9d70781b1848be55ad75fe978a4fee2a577f23e2ebeb3395922dea100c578e7fad455949b7c5fdb6494688aeac00697ae1924d84eab375d96f43c5da948874dc973b7670c8f9183f28b64647e5876154fa2cdade65b188b590f5f8eba65cc654576aebb3823a1a29633aafae764ff4486aacafe7eec28774c98d89b3ce8a697ef9f62775b5d5c50847c3ad4bb968c54e086bad70097508da888b6cfd2e5a3b5db579944fd861a5b6e2d58415029e8236fc444fabb77679e019cced5eda38555d7fddd935b08ec0e95d0dc7cdb3c154ecba94d1674d7c5dcc67bfa6aea8b4ef0c53859ba4416d5c1976cefeb6bcad8076e6c1fda63bd77f024edeb5ab5986b386e5ecb7e8c779654af5e5485a96946711fc57206feaf788d1f58bf9ddb4bc7ed4b012e8cb77ece8b35e5b17fb76dff53a50d6ac5437c108ad77f26fa3984586978ceb385fb20aea2b525961f96c63e8fd7ecc4c0268a354a0bd1232becb6eb4e4a694524448e7a043c22a5bc1094b23d3c5d0a9641f909a778eb64bab84feec3a5383d405dafe30f75605087e999e469cf07cc8d3d8ece9b827d7558bf98f630556150b6d2da5dde3d4abb229a9d8c8e32a8fdc0c5475bb96fd00b73f28c59d472c4f488aac0ed647b1e834f248534ff2e95adf6952b83b6705593a1e53f0315613d2596aad44e28af6d632b9c71e9c9e5a6ab733c7e81e54db3437d895ae9b58eda3ce5d7570fb176ec36a06ee6638775574c74425789155bdbde48bad6f5fc91c451c87b48ed4d6674a75b0cd39d1173c3f411ad1efdd8bf4be2afea69c2327bd070cd1432c8d219 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 0c5719261caab51ae66b8c32e21c34e6d86ee4aa127d1b0195663c066497b2e9 +public_key = 8518c8d8dbab02ff70c323eac1586bb783b35dc8ff3c24ae2b767e2c4a7d16cfa86fbe9fdfd4e113a7501367cd70d73d0f63705487ac4e0bb1c95dd1fe6657610c7d64fa3df4538bb6069128c4597ec9b291938ea5d7cd46897ac2179b53fecac91b6c36f37a5988de454c50c5dc354b56a4314d804eef394bfae4c2d385e18fc5f29ef28e6f307f5a6a1abaeeabb84f90f34310844df95a4e6e4f3d8c993fa7f390e6984e493df4c2968254b54b7d44e8d6f859e29566537ff46e1bc8cd6c9b726581cee69140f85c030f4c5b59aa081e813d66433aa384b2a4a3447939379aee6a98936cfd4ad075981d93c53e9635b6ef85f96755f8689b5ce542924faf70bdfedfbea71abf72f7bda6211a5b9807ce6ff368739b51d4d9480bd884c8b45657adf7b08a3cb928645d55dc6264c5fdefa2de3bf41f965035ad8716649a3d8ed20a6986fbc8bfb5b4a2cb26f749264cc1e44bd77ff3f3ebeb9cdfc68744b52ed7bba0b9773e0ef9894ee0d2cc4757dacaf7f4c910fdf885eea581d89af687ac79444c9e9ded1573f5590a3a2454eb7c2c893b777386198c16374329e640b6a439fe5bc71ab3ae195575a71cbab773ae6f0b5ab2d750d32fa5d36b86ea2aa2006c54940a5f843ab709de9d5937643309c12e6ffdd479c3b2d57dd5696d266e5abbb573fdc6feee5c6a6546cb20be88f356800f04e87c69b636cbbf9ee9a7c7e5e2ca156490c96b347a5bc2dbf57a16e452dab5fd15bdf60f6678fe4967b6c826dd3eb88fcd052fbd1078b77826f4dd3e8a34bdc437d6c35997a22f3d496e876762ba5dd05e46c5188dde6c684c265a8f15d31904572f7554123832c78767ff4b5ff525680c773ab3caea93776897d57b0e5d7b949e712344326f19db3d964df9cf93b6638fa378e5c7cb9b7a6f95709d3f62c4ce3d7646eccea8ec04a81529ecb4cbd85ec869402e88f59d731c087c23a8bc7cfb32fd0e9d106934b3de77075f6cc6f787bf4f4bce6bf6329591c484d2d57548110ccb42955c4233f3addb49870be0354e558964bf151fea54277ba14c5774bedb82ce42806ee73f5c6cbe1b7575a4b6766ac355bc443e479a2953a5208de0f8bd4b24edca94dd883653fe3ae5a1a6bb62f5476c089e4f8863fcededdceb44d588ab675f93c286f7f88eaec6ca46f1ad6a4ae1fc64aa15b27a7c3eacdef0e756d737585b5773ab19ef3ee185c900ecc3b765983cc8d7e207d57e6c999c77e6e278d1ea938302abc312aa797535358196b63309846675bcf1b33343bc3d4d27fdb81947643a84fe2e73fdbd477ab87b57b55899b3d8d523e1c9ba6917fe5947e7d7d88b9229dd488ddaccb25455cf88fb7a28f64e55c9b6798f39a53f5334dc82fbaf461364ce6fd2c5c94ce0ff3e0f83e624e69310e5b47964b2bfd3a59a6bdd56bdf6e36d731de346f74938abd6d7b4f579b9cfd0ecebb6346e4a46983e60e442a59e4c93fa6222adf5e4a99d7113ff0c0d906126365c467e0a235570a544a774df249ddcd6ffa825479a632343f218d1f1774f0e8b7db96a860fe4da43cb7abae76039c6bc80b94ec315ad49e9904908a20cb444c0ffe9452c464efbf914fce9041e52cacaa00dd541fdf8eecaf1f339e468be45459e708bfb464d0c480a1becdbc021a06af7aac4772545eb +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 0e59f6f9047c784c1f00b24454aa4f1bd32c92ae7e626549972f86fab90e7e89 +public_key = 5e5563326746865eb3ef1e7792d8dc1b9df230ac805f769807976c06399b97b3c93fb83bdc136cb3cba70bb4ab601e602e977ed16ee15508668c244a45ed956aae3507e4d09ac7fb16cc3bc615c12ada7c56e5dba73d7d019debedf8526f0a9366869a493d314d26ff63ab8f51996664dee3875ef75e164de06dc7708a75376bc236ee6d5d3fd33eeea149153d1868679e28f5f638967becab5b9644a7ffd1906771a703b7844cb5cac6e749efd2d38b5b8f03cc466f6027895e24ddc1c1c5f6c6e5e9620436ed593b5883f164a39639d8e3f613feba0fb05ebe5c5d98f5c9cee815768d2a6ff536698a751bc1f9964dc579358adc57eb83a0d33deb9b9354b1b39c6f8dd8d503e99a0f964973af9a9c694efce298d68d347f783d34700c0f80d79f998b49a9bb86f93d7a95363b31777d352b7e82304e5b1c97742934713c5995fe5ca9642c3ac18b73c43357d4d497b49d5df7f58c6566621efbf5deaf9d97b598970684c588df675f43feb854f9f566188fd0f943ece353cd1a23cce8aa4529bb667d1b9e5abea312a7c6ff08871cd95c6934419f475c1c08395deea3aff83dd14784303b4ba785e054aa59f68ede4ad6d3a03e68c1c6d1a5278562c5f5acceee66193dc9d34446bbcc8163578cc8d65f89b9f444d7f89f46cbdfb6b8c4df16b839a16da95b76855237bab2fa315db48e4094ff8316e260bd4145356bc51bd0e3389dcdaf6ff048af5a83dac573b5b80331d2597c4198f2779fd75cddd00186b8fd26a384eebce6ce9f14be8cb226d2f226ddac3dfbb07b63d925b71718d95daa662dff5dcbecc99395400a79842f5c40e79b46b5384ce83d439f537bbc8a860806e621fef0ea9843467ee8a0a4cf36384833cef076044c66fd6c8f8cc3185f469c9aee33dc529bcd5485548a6e075f47ad89aa8446c0d465bd43cdf0343acc9668fcafa7f729ea9d29be7ea3d0cef33d14beeedb2b409eef97f30b8a7b077fd4ca4d1ac74b3119fadfdd503ccb5819de834a734e15b74d3fe550ee49773b9ddd870efab5fdf50faec43da3a3b90fb0757c6401fad90f98a2839e62144ea9d98c67bc1dee46e8997304dd1c4950b0e34f0787fba6379fb6a93ecb57369b48b3adaf6ef815c615b4a97bdfe910dfb15e83aa10545fb859635d084a58cdf690fd85d9ea4b7fee763c9e4e67b33dc56d37f3a8e5a1f8c58663c8876fb91bbbddb6758288c682373af69c64cf3ab5c46eefc8f1feb7781ad68948b9480c6af20f51454cefe213855d74675cacc7b26f91783dae74ec7a8e7673a8dd887eece7589e309bbf8e6ccc629bf79c6d69b19269a19488b7b88a45a199841916ba4a3aec2456a108a5cb4eeeb15356ca737369669bdb5c7bc10f2f377d6b5fef85e5b4f348015872e45e8c2686d79b9ad6de8b53bd189ec9766c05cd84e74c6e747c783ff3a99ba3d547b7ffc4ae79cbe6fb52d46207e79e37d65c9f3c483adeafc167ae414e671e3cebf43f4d875b78625d67e0fee653e6bd4dd5414579ad8ca4f081db4f1b1db0e1054fa3d79af7af85f31d7d433f700676b8a017d57d15c923a788a01e5762b4c24249fce7c4438c68c6c3fbcccae4a071f4d4c34f74f5066deaf5359eb3382eda6d6338f166acd09e376826299b77b781250c2224486ef23d424bdd +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = a3963ade17d69debbc358dda82c7bebe2c39d25b36813058e7a161542e3f8c2b +public_key = 420a3006ae7c7b5ad8178b83f864d601145b102970b30cfaf30a4ca1a8a5bd4e64051931ed68a59e0bfc50d549becea65ea9d9f5aa690c0f35d33bec6b2886ce2959fa189e2def4224e99255863e6d964d505ffc02646a461bb5abf86f4b5cd975765a5b0ca0118e677334af26c3467da771cd04dfc42936099decad9c61d508d939774eaff772b149d51beaa6574fe2101de71bedf0277aefbf2351769fe49bdfc7355db11315ca4b244e721880045daeb68d8da784d30635bc2485d8144740634ac4a078a5af38e6ea2d6a655f87de16f63287f42dcae2af2a82ce13ba6787c5ad4df0e5e3dcbc9f452985ae420f7056f492bb1a5e2343f69834db5038302e65fc5adcd443a8795814e26e15369ae96cebd7c9775f33982458ad75f0550baad77bc74296badcd4cc3734dd0163caf8d8d6a0ccc3f51f5a0874cdc1c67e4626c9c753453fa37b208caf605f3388d6308248b7688c80f6d9f5895670a1397880933af025fda1e54f7a7b512aa87499f7a718f6fa7cc5bf5687add19d60427bdd3ddf92ab9b8372083ee57fe8297f815cd740fd69acdd2461521dbb618ca1ef76f7160df9864ba0872b8c199abe40f35f929d6a821b8ce084ff931c661c65aa2445371b4dde69ff3b767382f48dece685cea5f59c50f8fe45234169c3bbad8e4ab9d68f8394fc513a8faf475590b3bac2e3a4685b8f722d8358eff1af4e310e8454d315670c3a340aafa95258b9057b42def7a7c6f588f6da61183acfb18a7ceefe38c7984b50a940f17c687e6aff8355ed94398f4d8fc93a375be195b4b229f32e9a766e87d40d3b9125f7dfa4097d807a6d263f33435d8f259da5980f575d64af156d88f5a8d2aa2cab3537a8b4f9fa10ec447bd89f9fe738d92a5f84cf861628601f4fbb427b87c2153d4bc44b1a4e3b79baa5ef55325ba8a42e1a88558e55d03ab116e47ee0455f0e5a71bae3a03ef476f77a9a9cc6526efeadbea64930b699607de81544356c0982e957c5e5186f321b9468dd5dd5a7da97fff6c89673e51ad56e8cda8027aca8a5cd947f3353dae99183ddffaeaee943cb0e6f537cb5ad89ce4f52a78cb72f8ef485deb7ebdaa93ea4203be78ef47447ad6a17e7caf5274f384b36833ad7ae0a66069bc59fe439f7c6d05f064d865b550515f10768bd636c61f0e7a1bdcb3c3065908e5e302fef34a30ae23a2aea2b6e8750075a6fcf77cbdac5350ce624b6fe3c16d1abdec46026ab6b8495c1c7d93f776f9e6b3b543f67ab99801e83bd1867d166387f14ecb4d279b86cfbbaf90649e5d5e4e53f561f95d497d47c2beaebc2c398b306751a9e392c399df604d9ff836f989c41cf86f34b9445d908f04aaa987c27f1c0d7f6efe44c311a589abb5e0afbc4add9bff6f87597b5fe16a53d6c3551b7e6be0a1958a89a739e17e7f0a86be0385c5ca433b68ab9506ba3a7fdddebfbead15e9e228b5b2d9aa3c9b4a2bfc8b35cfda04b5a9d0154aef1a9478df4c8a0354f8878331f76c8cb6851940c996119e13446367497cc73d395b34a9c7dd9621c9bb277bbaca6d976c3e65fc3fb4588643ab523bb35f551f103de0ddec40d14b09439f15e0c5325cbfb069b85caedbd9fa841771aa7c9709046b442990cf89513930f122152632a3c3d7c15c8018e1c23aa33cb89ad +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 97beafabf2c8575586487c7a80e8af5fc50f94b6051c1bc66a5ae9f66be3cea7 +public_key = 63a9fe0d6a8f811b3f0e3d807456c84c8bbb008d3b126a31424954cbc6cdbcf9ee26be9928f4a41b1371447ba3d17391568dbbd7899e9adca37b4b5a21f7e51027e7710bc7eec56ec2e580031f7d1898bc55f8a3be385d607b3ba666e991ac6f0913617303830eaf5f0dfdac14e67abc8d97d18bdad1ea8c6c267ae05ea15a9a363d7aa5c8ea535a99e15c984ac5d6bfaa2fc6fc44a3b35cb667f939fa7bf676caf12c17bcd25c82e827ff6a85d6e8b77d82dbf1d7066da93a7eb3cab8e98ea24c7592bc6b656e459af34ad6fc2846d82ff1f1da641004b68bd65dc28a59036ca6795d8615be5a93e74f89b8af593ddd50f7e8dbbec41c4556cd47b43f24d92ca473972439844d6e12f4f3233c90cfeb661b3fce65ab464db58c922bb693f56553a6e869bd64e18ae1162a7f0e3ab0b0aa76b8494ba394c902c598c247f1dc16c51d46b8258c635763776cafffcac747985b94c006696f18ba4addc5eb15f5cbde34974569142d969b6bcff69c30851b41e66aac3353c6894ab0097b4ec49783cfe4960e6ea6f94b317d488d2d04a8b42c7fb7d89d52d89b2df3d336333c5089534897dbbd4ee612ff7845c7775128a9cc93e966fccc0639fd86b582a18c6ab2fb3cce03701bb9e0482f7a9fcbc6f26e30710756c5ecf88bb9f402b5b7dd9dc39193737d2d6f408f30261852f1694258d47c469c7452156e706343858f5bc53bd3e917f0066b609b5ed2862433e37fe988ef3af62ef1bee8d78115d1200b776f847ff615c0f594420ecf9ca6573276559c1c84b0723569dc2a767299d9daeef79a9cf40a3979b0b44003687a412389581b8ebf0ccb06c797f7f5815ccbb43423fed6fe340e2c66953db13b7d9f7d26e2af876455fd6ccb7841f84c60f48d6d5f4f3cb35bf3bbb9dab73d403a46783329707388a1f433f785d4723c993cc72f84d0e35242f5fcfd6981268b86f598b1157f900f83333c48627e5dfabba59c684db4a40abc330db5daee3010fb4dd6bb503548c777256e0729905a89bb386459e0b885b6f3d17c94ba93c751900e7695f5bf5ba9f14c8555bda863feeeed40053c0d75f696286d2cae4d56a9e5e463f1335f7ce1b8812274dad668a20964476ecfdafca5ca663c6c17156ab3cc8e4c7f3b3b6fd9d3eed767da52b244376409eb7f3aabb45e37ee18a1f744562f2f385716892ca77d518c4bec578e101e45b334ec193ebf782c76109d81a129e81289d531648954163b10e6a1f03bfb9e17cdd439c6707aab0efd9236ba33dabf71196a3990fdb2ca6fee57b6c8833489c63f8f4866c14d2cc1ce037400dc610b28cd9925d405ae75673ed2fa6e7206cecbc24b5716c7b9b0e8635bf960be5b632a976156c64078cbb23eb86b7be9a2d4feff5b56406cd5e796c66a6e97edec7decc767c0b8e45744346de60bb1618d82115d6c5779bc275940e10d31503d555677689f33d09a583cd6f9779c83530e6bfa5a0a771cfe37700d91c627afecbce050bfba252cd74e359e5fc44dec244ccb7842363fa7eb27c8313a341ece431045e62838835c85c677b4f0b67c847dc660592e587d8d64e0ccff4fe6a6b33ee3e745e9125b92b3a66f155646670f3eaa9f73d0d5657cfe1b1b3bbf85039a8189076a3752784e23d8a802023fd0743eb03d989a6968 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 75461decd34c50d6a094b4a64fb75e5e9479f8f9250d82bb7d729dedeb2d4b65 +public_key = 1a2d42d43a4271e44d1546306137a4437e30c87af025bcc297eb36d3c44e7cd4b0b2dff005fa702bdef569bccccaf6ac9256a1693c8b677c5ca243b9c8556cb4af68165596fd0470400ccf5e3b56714792f7a87b9e13d1985e425695ad70e4ce0b27695729d1c7dfd03b68e52fa9757a2fbd29ad94772bdcb1dcc7384eb14c5dfe8ab86dc0f647526ce31e9aa1aa7f9075ebb3cdea4d31f6c3b23a5bcbf74a3c653d4d0e5ce5f65fd114fa137453462b87117d4bea463204c463273bb7105637895dad28f37ede664e395e4dd735bf9ab9b95d367c54d84ff085650ad33ebbc982a329c6fe3a516ef387bd1ad418cf655a5476f51a68cbdb4aebc53f01deee78e5ba679fa517cd76331cf0d1ad9f167bbfe1c956a619825a93d5d1aa9ac5736e6d34e45924b2409a8688c4ef34ae81a9e4858335e40a797f2bb8ed510febf88650cd0ba8e77fd77708551a947c98cda3355852a77576ca6bd54d4bdb9fd973dada618cedffff1cb59eb56b12d7eb24cbef03ef7283efe281493ac8dd7a21cef4aad3db7bcb8c30ff4b2d9f7d3e6fade0357bbf8ce281fc94da3bf1d10a5e5fed7a3fd9cf93e34615b871c8da7db554e021dd522d1f711e1963be54739bd439499990841e5989ad9c612dca891f4b35c34ec0bd743b494b2666ccf5c5f35978f75fabcf9a054ef92833d8ec816d68c07fc53635bdfca29fa411c87dd2fe7fffad94b68686397e6cf593b33483591f4d49e4e7c65c96e8b34fb17e7df1bf0a70c7c59bc81c34f554eb063b9a1d95481e75f9602b95f874bf1c649d96ad72e70a52e935fe1edebccdf64332345355f7cc48eb7dd1baff2d3ead1fd58b8b3a711e1e3c270a90aa2c5c79958f3907ae3cad71ab6e44b88ba6c5575bdcf5331729a65d8acf3db97acb4e91b73afbc1433fb3483e00fe9699cf91dd868275dc5a87dd6d983d5ba596515e434a8d956b2b73b3c018f1ba055aa764ee4f35896113acfda3f0fb9e58604fe2cfd5b023a77d7c6cdceb746724cfc7d84e7bfb84de4b0bf39abf9f987698ed0cec8d7b33de2c80d0cbcb45fd5b1ddbc6680d5b6e4335751ac2821ffcbcfac0a66ff6fa69cff855d07baae6d2b6bab3135b326be2c263a81fe4f3120a6fa639910159b6944d6412af89863736558ad28bbaa23e0c984f04543f6e916d9bceb4f64fd498f3a5be3e4f83b43d443f62ecc72fe3d4f71772ccf3e8c1da9a57a67503bee19313b93c4a66d04cf317cfcc5d2f85b1f8dc414bff29c447dc975923e9e00bec9db958acd795dab0777d838e492a2febb87a6f4f0788061d331ef6e71797bdf23850d50ce902e432b205ec3cbc37631c972999fb6a09baf77e7e6ec39ec2b3489b33baf257c35b9cbeffecea1334380fc35df396e16baa9bad4ada848ec4fdfc4b1b98836f23ab933e75ea07fd59d9c501fed9440be0d80eba524fb3cc358bfbff732d643d0b135c8fa9eb0c73789c465a7e1b3ea78d4b5ab9ab2f4fca1faee58019306855a5767893bdde7e92b4e470e7f1f653f448fbc370c64c3e43dd83987f3a9479f10dc7542da296393e253a68e1eec05969784f66e2adbaa2662459b09638202b74d8d5cbd3cdea915ab2ad06b0877d546d8b76877b8b2eaa1abb3132e55d8bd5b08678bfa4243430bb4d059b58a4b0cf0fd26e +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 2607dcf4fd6ca1c614c21b5e37c24981c32b91c8c3e6955777da8a3f5d9c9335 +public_key = 38e84df3c6a2dc2389897c3745183e09ce681b5b9f58ce6aa3def7795f85108689652ffc1747662cf97d8b0353bf23693b7db3b2a7c8cd5c5509bff7261cb7c41ff058f3e8d3dc39e42d770724351ad78010eb423ffbae6714999226895bcf3735b9e1972fbbc19ee516e6e7353c7f76a6f8925bbd4a6f9fe0aa333d29d9a16c5c286d4b7ebdb4e70fab27987df23c371873dba5cf846444b83ff9e4d94dcc8ed79a85b645a338d9ca069ffbb8b3211e31cc1f9db938fb73174f8d5ae4a37393553be09e2f71edda8d968ac3ff67aa3374a2356cfec895441873325dc7ec921fde92fe9347d965f25edf606862f69643216b869673b5a70583fe2fe8639b5036dce1d15ea13e2e9f3969c8183f6d2c6dba5c13cd8cbc9313aab478833d747e6a2a48438fd5f9085cf41bcb4fd77e79d1f5494b4bac2b05a5767b9647ec8829b5d0d1365bca7b8ce7b75bffadc68f9af8edb7bc4a48e7c0e3fc4f2de6993fb9acef71cb0b473abcfc3dd39ce895551a297a61f47162d97c42fd51d48b62e5a8882db6ffcfee6eacfb89b99ae2ac6f6e69d77ceb3b6b02878ce346ae5cf754c306da7e0b5eb7ac80b9b8ccda4e8f63e545d01c7d17b7ee45ea3a6e9f7484d4976ca936fe49fcf215f536dfd1de9464008c932617cada4d85c68e6aa41973a9efe61053dac4c3d80dd480179f58e65b53e44d759bfb70d69be5b868c4098847901a6b255938edde5d5ea94233bf971e3bcd572d5fc7fd42605dab8818f1f56c7b2505f0251fcd80bdf3852cad05ff704e5ed3d446fe965473add3563d9b36e5097c9835d6865454bb3daf132bc17d8d730a7f3847257c697c525e27cc570a88a168813404ea3db67e000f8f5485ee578483a78ae1932de070dd3066d4d3b43d3ce54b394943f3c4334d4a8af0abed4d8e05faa15cb7d1addfbd4f36c717310246c9ccae4d6874bead6eb566593b5ec588737fb914ea655d254d5968f4288a66701dc7da583f943d52f44bdb0fa59249bd584f193ad548a12a845fdf14a73a0a37adfb4d1845afe6b56ea51bd0a65d3cb64fc255af6f456aa3287bd12645d272638ef0b4a3abc56fc9ddaea2f7396d97b64c56817d58c32103996db88345d377fb8bf644fc99a34f58c50730045b897ad9d8f7fccb81ccfb52cf86899c8c49ace757c6b0a6bcda859fe59d564cdb746038bef24cb7f177f79ed19a39814d426664abfbbb7b7ba99906e7982b665a551881e10dfb984d9a3e2acd37fa96a409fa3f786a12cfee1f0bb22c04d1da16d81bf68111a9bb64469487d4cbc10578106b381b9bd54fef933aee830de6e3e19a9baf9a81c2b9ad1e2fea47e4d234bc9d4b79c2f6fe65bab5a2db68c59c0737e0e4786a9da92476aea55ed5f3c77feefc342b458e441db9b21da8b3dde593c5e2f069944828a3f7bfe9354bbdbb1c344f24aa0794e60cb7d4bfd89c4933b6123c4434cb9a6dee6d3f14ff1fc571dc7f8119f6a33e4a9f6a9ee93e6dbe6ac9e6818b8e1ff9a1d1a59de98f4f818d43a1949a562db675d8834ef65c1d47afde37e0c6b63998d43ab47a681f0a856d166c24494082ed76d50cd6b65ee45e3e55e33fa5af0ab96edcdb0acfc41e285d3515d0a4f8bb32e99b4b05d558ea7918a7881bcf516457ad2c3ab72ef2e04e3a4acb85a987c2 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 38c89bbe7145c29e9a831c11431eb9929cb24fb4992db20737e4687d397fd732 +public_key = be49d596bab505f5eb40ce47b06e6e0f94506635a758964b3e7cc067c8d827ebf1dc874510ee415ef4efca9afb56b35500ff36177fffd2ae9a7cd98f5084610d1ac9f1b8a6e78cad938ea0afa5a7c2a9a87916710ec9c5b3544b76b4808e0e39a02e9b745962547df6c79841f11961b64ce0ca9d74edbcb4ed786f7e8c38276d9533e5bb4cc8df3f5e5299eb757d2e7da38d6d26664f155cdcc2b4a645cff49345d2adf5a66f5b54cd45a71599f19aac65be16f3cf5b4c0efe7e72cab64c9ebfbe9d3d76ee64e3adc9e2c997f37adb442e77df6e7f5e6746be8f984bb9375b5ada12e96d06045a3a984668dd3d8c08cd980b59cb3bd984be3f9c53790fd43653e7825598ff9b0c980ef6b062789332a6b67b2b78e9e370b88e81531846b9a8da8a09d6fe04d4f47b891a6b440ef7ecc5d6bf3ba5c7b087a31123ab61ec9f2d0c89e1eaa7dac36614ae5f147938d32673412e64b10e975d9c4a8ba5ce85efdb48ff6eba69d9183c6fe1343d062389b9b99ceeefee30d5841fb68f355da47f4c4be5e8c413c37ea4d5ad639e41d753d938158cd04492bba8aedf7477ed13a0b97c8217b3d0dfdbf2de05449547626e2e409f59e09826fd7ab477e3ebaf0e25e24f449f08e47d8ec6847a0ac839bc5d237b3d509a8b5c44c8fb77d5a467a3d4e9e030ffb6ed976ca9d856eaff57d5d586c7d8a4c36e7dca73aaa667e9a21538d9e6997c5637df8c5a2ab98a169a5ba807d9bba55f2c0a9463c9b4ef0c9822fa64ecd7fc8bda4030157bdf5d73fae6a6e7fd36132ef5dfc5a9ddae504b2ff5e6da9db5dd665f74e3396e53ae25be78b3410369bbdbd84a86c6c7bd9f4dd81dd5bfcdc54e07b4ad0afeaec8f65dd98bcb8968a2f683a4bd7633aaa0290550666cd1fdfbf2398aba3124dfa7494fd7bdd8719467405eac7d759d64aaffa4d7520fc67138f445287b681f5c3d1678b4981f9bc76f4163e3515c8381e86ce73d6a4cc0038dfd2d64a213c557a3ee2f7e38fa1a6bc3eaba08965bd803bd5759332dbebbc4d4e337bccca153905a9d970c36ecf63a53204b6f8dcff8d4234f08837425b8ff1da9be43775df89af0a048ef70044c76b3524b437cf365cb131baa14ea6f256df33686fc8f1f6afe0d9e1997b8b3ccf0c256d70df7b33bc9a7bdfa8ccd576925968916fe86ca4a5a4934528dc75283ef46b18f4ef81e8d39ecef07449a218836d47cbb7365b677ec7d632fabaf43d68b5730d9e674cd0d81262f6cbc5382a76a9823ebeb42976c5d9dc23cddfeb7b874dff93699f6d35a838b22b7e26ab4fd6278f505f9bbc87e43ddad61f5c38e9975ffc3ef8e30ca8d631f7af12e86bd9c95602992e20baa636ab050ab870c1ec52eae9b3a68b7a07a8cfbe7bb017af537f5d464265ff7fd65d7a8c30f659998a35d7913ff887b462add7bb2dc895f09ac0387cca9c5cd1aebc08a6877998fef24ca43c2c5ad43deb6641838f0cfa72f0fe1bbeed218846f25da336a5cd0c5af9eac8a60902f61b8c76b190edc7aba75587e376dc7b87625ff9fba537036f91a6eed4ae5dd76aa5cd6566c2a2f5dabb3b6696d8d9de5bac093f0cfc3570a0ac8deb4bbf3d941fa3f5aaf546fc368af005caab7ac6a7dd70d90506ddbb5f53a83079aba0927bd52a68e278d3f01ac19eba6bd +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = b2c35e33c72d90182791f0e12a0324f5b216efcab2c8da1bee025dfbe13f4152 +public_key = 9a3e5a89dd83c05e96f65cca464ebd4ce3526f5e4dccaa8ed176ba590e4bd0ac486066f40ded6c6c28f0416d6dd98978d6cba367fbdec194d1ed34874388dddcdf77f2caf2e1b342090fe6f809eb048ca497ec37a7663587ac85f32e810e64acf87478a21ed62545f8735d907d0854b93a9d4bb39cd5788be46ec00faa87bced78b26353a51b7bdba58d17e5496e0bf73d08f7a69f96a13535abd799cba3efa5886e35476dfff97e8297d653d5c4ba09c2658a9a22838ba0c6aaa4ab7b19699b8b37f43d4f63404550686fab181753504e9592bd4622c650b828b3d4a66d9b163d09847bd27fba8ff452769e84c08be1183665c0185e0a089c967e35dce64bdb5f338b6492a28ae238aa56800e7dffa796de84532fd5bec8fa800ff4c5e34791cc5aa02a0eb73885557ccae8907fab5a35b489e98ab377691033934039e18a34af7d176a446e39aab3ac127a8f510c8719936e8676caad3fe1c839fa43ff74c7fa85c64fb2152fc57a0d79f35af6f0678c0068e8bf4981a2b4c7db88dc0bd43ad56cdacefeae0e0761d85f7813076f3174a1d49c74659a453e09c2b4468de7fe85d5f3c04f2b7e5aed5317586e753f85e78e7283dae1faab44271a4668aefdf36fc0c03843730acc24f8de2ffdf51cca86a83853e635ee3036714576b1c27ea112e7a15dbfe5f73d39aaa7632ec77880b89ef8a45cb0b374630face1e7f21fc98afb73a28a6ac2ae443f16f6d72d6b3da1a3be5fac533b9e75a6fe76fe23ef021795f898dd320c6096ab63f545f5d01b32a2ca90e1b9e38e4ca7260f785976bee4e566dc0cc1f48f7734bda7d00cb58b6b89c6ef6d2ebdd42aaf450e269da77c46b5c954cee6bdc0339ba357a9b9a5e803af55b74a4f4dbef97e1f4056147a109ef3ec9d3071546d2d2f72336730870ea22f199f95887350fef4155da45fd7395df965f46574a13d581cd7e4a51cd8da03a51b367b525afee4e56752db9b66d9c6b087d2ec23bcef798d694dd859383c5baca9d9fd8b724d9ae565f209c5f37e697ba563f8a1693af70adca38df0de2c35f643514ebf92c16ec8e2085d07ded1644c94d18cd75618e1c093afe61c6b4ffb97048fcea0df5f76c6728108842b3841dbbac62514e85edc32dfc8e7c45878189a7ac02859eca77ab445797e13de920f43b22ea85aad5d8caa3c32fa54d033714e2da771c7cca73999f6e9ed4db4683a9543d3c978f1d56816d7559074fcd4aa7d9e9c709c6cb5aea8832d7c84c576afbc837b6615b82a0d78e3cdac9a8ccfa8338b36649b9f7c41d0064dca53b8fa1793cbdc8f7b75306f19c4128af14e5532894f74646b91f4aaee36a3b42cfb90b284f5d2645c5adcf482289d0b4b84a6359008ff3ba05f8718e6c49969dd6cbfa5bb674e8966eab1a48e3988927ad4ed05cae437a9f1480eb2f6e7d8d365be84baa60df8bf7d969a425c93453ad2780fe9790c80c60b4b59fc6131e7865e1e35ac84a66565d7c1d98f6665c932093d61fa578e7acbfdf49f2e15c138bab4153cd05ecc44ffcf99095af85f05dc09388b6ac3972a1ecfb8ecc9f0ea58761741ed23ce160cd3af5a341f75d43f18d2c0353d987c718fc7fd3eaffcdc96ebb6a8ae003197c8f9c878a367c021db7e9273fe2e03a2716683dab6caed5c770f6e7984 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = afb7d6dc2b7eb6d84acc080c1be63c98afe7b07786b5801f716444a3e8e64800 +public_key = 2f7f40117d59c16c3eacf4a1a844fb74aeedb6b5ed3d0efcb178f29a2bf9f7c334d1dead99a3ff21babfd8153bae937fdd2393d97485190ef789ca7628bed41d868094aa7440c6724b4430ecefd776c6d2940c9d1fcb5a109978573434da99e962b6450035d8e46992c1ce48f6ad3960a8f6baf5834bb7f71c443b69dc5110c4b7099d68d27fd2cbbbfe1e55f5739ae9c93e5faf8d6fd139be91f4c1e29fa2c04983291340dae4d18a8a83c27a57c72f408f933a51b7618148b16375a80e0a90201daaf6e7803dbfa693abcd4ca8bafba4f086f42f6b743937098e3d2a60803eff7676d3c9d89accf7ac584491f33dbb1108b1465b86608f4215d79fed35f5d7e95c7976946f2fa9e76edafa2a9e8bff9ddb65c47be882066e66115db70ef3b7bb249b80ddcedd688c37d7a3de667627cfb389b38be076d89405703be5efa42e99e9c83d5265bd63afaa2cf5f1b69973a18777e42e51d3d5ba1983c8659a79ac978ffa15ceab733b49ea8f7a853d4b06cafdfc64caedde55e8e4546e714a6d37037ad78e0f6164d7b07f3f77b7ecaa771bd6dd39eb9bdf9241c3bb43553bccf66a1de8efe3efbf7afea21e1539d0bc517a9ba8eeefc39deac4cdb7c65ff9604856eba2e350027d95a36cebfa25c243cdd0affc8af29495a2d349133c343d78deeb8e5cdcd89c50cf83ce5e36b89abd473b4af0fff28f4cba5e1ce0ec8ae083833736fd81034aa7bc0fdd123e9ca263b5237fd96f5d5c468d5e746e9e2cfbf42e559884efdddde4e20f0c9e49f4995386f84147cc2d2a96a046bdb3f56b6ece889976ae1ed732eba43af5a4e832cff02e6d91c16b68010ea82d98ccccfcf12b79b5a884756c75cb25453170cd72d903c670864d5a13534e545d846f76ee594d3a7841e509ee6b738d97e73a7274671d6470cd37e9b15e5fdd67c6e4969ad223f5460fc5ac9ba23c264a385f37369b46d0c4574514ea216ee459d3321ee9b395978f2c575ebe1c6cafdd3afd8df7bc457e0305f8b0ccbaed7e850e0955f1afb54d9bce69b6c8fb09d950168adad4e1ad5c973b578424c55ce01b3ec38f5b0095f32469968b8a96fe7b9f26846f78a3f3a15aae63a7f42b8efcd27bd465ccd38a4aa30dac42c0036c063cf1c3b4e78a0c92b8a9fcbd54a6044b789d943f1eabb0bb24c3d0d4c06735e77937457abf7c84fb435e6c745334485fba84676750a27c520f79366e0d8e4be93fe8a958e9dd6b8ed3f3bfd5bd01e86b1f13302fbe7aa3aa8fdb3445ae5775112bf125efa3512ec04945661b2c510a39f64ad855836c7d8eabc06a1eef8814934bb4b32176c0b5abd4c5fb6cdbc8bc42bdbcfef4423635c0c7ac43e4e5f86c74920ef37c961f66ba2d74d239b2bd1add6c096141fb6a719af13a3387d75b927dee76169738acedcfa6b68d3b064157c3cb03c5793a84d0c1a6d352bd59e43a7f1b28ae5073780cd6d6f7f4daeb458dbe95a31c23af7e86d002bdbd601647ad28d5c53f9e46f490575ca928fa908b5a30fe3e520d6ec9f1cc5ef18578b45da929164de34bd08348e80cf4ec463f715219da91b8c9b49f8c2629a48d78abd1a9f720e841a52ca91a15a1c7953d18b4ba1fa9daf34ca408cafd449f94385651c3b4c0503726cafa118167110e848fbed995526b458d362061a1 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 28f5e9dbda122b2cf8f3754fe9e0c73a84ad4b0c093522e0b62cf815d60bbc3c +public_key = 450cfe1cbe872a7437640efe29d937f4ffa41d257532dee72af59c918d6c7e6ae5972a8cb9dca049bc92700a72b4fa5a749d33437c946fed62aa86c12103b5589ffa08084be63c4c75deb92608c3b02c6521bf991f8499481ee4fb659f89a937a25897faba6c0ede42d8d4868ee3c6494ef8242bf87ccadae49430dd7af8d1339605a4b750f6d29f73baa1fa8ce72e9c36b4de564fab45cc781b6e3fe04e6502743df8cbb3c4b864d0b448a21cdb0a4fa82a7def2b23efb038587a99b80ef4403316eb2e4b8f9b1fc3c13e93506b62aa1c7ab08569c8dda88c9ad98f97d61ef4e0000df12e2c3af4f6f5b34787bce55f74aa58eec9e24df7d89f5ea581893354b36fe035ce5fecab750e8ee72d9b750cf8034f9c932abf71d89b8d8fc047d77725cb6ed996d8f2cadb356fc1d428352c6376f6269d9869aff4bc82197db6402f84d296677c6e45683ba6283ce2c735e2f00e5eb19ba86b3571be7438f183e1656ce18a63d266bbc6daeed636b6347c73d607864949dabfa558522d2ddf6c7941a086e09253b5ffd76328c99590f48b3fc7ae7a5847cc958fa65f3f540ab54fada302174e6d5de341759c121b355d9f80d2ab6a8409d38634bf7e3ca90679aca188667e5d86df35b88d95b262e847866ea414c6f7f44bdfb883ed3bda73c6396594694aa08df4cfd55d3ab883435e6cb34a922e6835eb9cd67bd35ce0b3711d7bad2d85f9464c493adc40d8ec8679d9d3e8984850034ef4b8f8d3fabcae9474f7278cbe79c8e6cec948b94798d4c68db8f55237ad8b0b38cd4a8dfde5abf7bfcfad98a677a8c40f2d820677466159dc3d3efd243f7a47af3dd6855275b78d2993db24addb13c638e31b4745b9e7d4fba95a04956c47e212e475271ccf9406fa5356e18806316fdded08454b0ce9f2d7fea3e4a651a7a931f49dd42a19f44bb39973ec5873cf8c8e4ec4bcd7fca54d9a363c49995c45c89d95231f8c048e46132e4a5fcde527b67bce4463202cc14f4ef25b36a7d8eede26966beb389877bcd06209e82c15e7ca8676f5a44a111d6fe75a31a4aa86689cd75918a4d8a7461ddceea1193914cf59e3b44c2d976ec686e3468358886a9108acc7d0c6a25f5a991d7c53b8638c24a585f07aa074b5a2cc5e4bf7178e152efc8c3e727a38bdd20a5ad087746768957f837179e5dd25f6697f4a88d056451a593e385b74de9ad1d00f44e70ac9ae36b2d76cb91e64e9165c6508de41148869d6676f28645653bc78c96b9e7f48fcb0c6768e2968c513c7ab07692888ea663dcd3af3f86b0c681743a58d9c524bf5e20c98d605cce39f77fe30174095a3fa0018d0d58a926c04d973c44ae6096940a3bdb6e7966595bb3d23c9915bc7e29aaacafd344c9b6bbb25cb0bad84f6163321a7f95163989e1448794d82c337d75dacbb7eaef025e478681db0c755ff827acedb1ea73aead9c3e54b4054e9dbf3a8f8c6d96a73528dd5dfcd33d155a97a614663174683d1095d97b7c0e994764e0fda5ab7bc029b7dda3799e5a88ed825cf1674aee01bb0c17a5c84b8ac1cad61302ba9cd2dcd46f769e21fec03c43ab07bab1cbdc7f44f6d253ae5ed6af7854ca7b177a6f7a5d2789842e229637fd32a677f68dabfa371062d8b8ce9dfe0d90bf06044ac3a840ceb626b16e134 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = b0d713cbef0bb1df70cbb425d1e9373e9f7790fdc7980cc96a240dfc53f1e8e2 +public_key = f6446774c3dfef5b426f563962dcf9ff78ade42b497dc3b971feb849cee41d7a5f45a37c26cef5aee6e8640ff833ad6128bca08efc8cb176ab6353f39b67fe1c9ce38e8f98112f7afaabb81cdada7323e155377731bef0568f31e8f8a599afb730578edc88d0b0d6c5627530ef9f930fbfb40a9888cf648263b688f1befe090dd5f4bb449a35f82029cfb73c32f8e3e22adda58e6aa08698517fbc5f619837ae3331cf763631e3d5e88c8f864e3e9d64f0cc38fbad24a7841ee1851eea79a3b305db5b313fb75c55907ca5c7f839320028305c439c394848963efb1e87925999681819416dcbc7ead45ac3cef62154bce16866c04561ecafc9ed7df2b07a57a67c7b901b5da3bb8025c7585c86bda19edc442c39384d40236a82894e9915a7f9834663d4be967df9955de3a387d93d5005d11924c4fe433d016bc2b76e4f2d3ba72feaf26864ad6ba5b8c31681dd1d4348fcfb29c39fc9f567cbee7bdf1c6e215c92effc60e2d6a3a41d6bcfddbf301b542f7987b68fb0780b6d398631eb855945abedb02ad4442dddcc83e291c73749acff8655f395cdb66634d1fb57a4db33fe41deb0f36eeee1fbe5dbf7b604efa67808c064fc5103fa7c9c954fce1fbc619582f82590b323698b3f8cc14acb88dfe7e39c30952ec7e6fae5ba6c3bd8587126c5aa03cf6308c9912e7f62dbc9eac3cfcdbb9cb009a3ae1086e77184db2e6558fae775deba7a6608685937dec07b584334900c278002d8a47e0e547dba3036336616a8c12415b86a24f3a6c9aab6fd85c7fabb6355b3dc5df3e47c7918dedc284333110bc979bfc08e16512ba95a07237cc35c97bfb5ebb2bf5e3085de65664377ba49200aa6e935b4c755ee547859eefd3bcfc6904efd5221ddff5e576604a873ef8fb7693b962853b5522a5b0986348da63df86a64671737c28fd1ed556e92acb56f065eebe3ebef43ca85ebefeac395e2aee0a3fdc5b90459838cbf77acf72487d9765569e5a649bf26d3020d3169e4ac2baaa4c4697f25869aba9e79f9f792dabe9df1ce48df7c6b9bbfde644f6697d83a6e33b35f4c7e7a8e75bfd73ce61ad50146a3d893c4dcabffabf5960be8dfa0679433bb33bc9e915e93c1eb2aa16dbe3e0b9870fef99835a674b1bb76946bc4064cafdf3d63498ca30aeb3983f5cdb3a6b9c4a7d459d969f4d8b6ba27755b6ca8fbdae78dfcf8dffbfac043e8bf8dd2a9a4cd7b1749a7fc7f09a6b56084dda89baab823d8736edc9973df3b588069e5da965dc9808e98b7a46148fa7ac168d632ebeef4a5f8fa1f5784a5bb2767f35fe44e755f9a7ce88e91543b2f08ee9ed78e2647aa07033cf45ffd34a4fe794de91c1d4c7ed56b8a5ea9c97d6e4cb33cb0c9e8387b86908438652dc13b09be76dfa5e9276246b674e96bac788f541e1ca441e53ff3b9c702cb95ceab628d26e7704a448ef743e8c8e1ff5fc659cbaae22377f28646c45642a9886628c9b73d6edbbfb645d4077c1d8b954bdc8b707b7f6bc4701cbeaf0f28b88edf82b78b7ee96732521aa6180b6021aabb415839dc4aef6f545c142dc58b965b62993abf7ae0c19af2ce6a45539685f297b1f05ae30465845d189d1765fe2f59e7e924cc0d2dbc2ddc739f6b876472eb12ce233ccd402ddef61523fd6fee69a88f34a34c +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 32bdcdb7059fe27f6409901980c080308951ffd90deffa8317b4d213a5f04495 +public_key = 5fd557f7434fcc6eb199e793c5e763764c48e05efacb7c756e1370ce1e7f8d1dcafb39cbf0c8c3f5dc8da1855204edfb39647856b55c38e944617b8349de6a832e962b4f398fc6e97804d428c83a0b49bc853d60d28eee289434db4b5b0838cd87949df5bcd727d8a528b8b5c03dccb9e37a6674d50cc5880d34c13cb4fc1779b8d098c5e0876628ce7a79b6bad44a9a38c56883d97cf3dfb115aec4f1b5d2ab4a9b7b5398d9e73e543b860f97d62e27a9fd2af035185f0d98857b0759bf1c39a41984c9cea1aa0f79454e7f84cca0de5fd6e9133f6eb6a989075d004accd9f57cdd9f8cd45544401ff2dcab9a89add04c2596effbd6903b5d0af33a89fe4fec86dfc074a3dcdc744e9864e7ebc608a56002e483e60b8202c3e377dc7f5a486d5a16d733fca9836aaeebed5909c6b6b0db453137efe4f3548bd5bff1f9f1614fe218f963081c518874c0cbb792fda4513f89d2be6547746ad879ba6ccd8cdf74cef3dd6d5bc7995bdd14b018e8f78c8c3966aa87a24b4a4bd3abb0edc8174cd28efe4daad39c288943ebce39210392bee7dc38d7af7439697be96978df3a27cb6e7de7b785673c9d1b33a18ea9ce4e712953dc6c73d0c496b04e1796c9c781e53ee91526fde147501b7bc55f99e3c66c5cbe2d9ba7eee5f753ba73a4e7c8fbe8231de13dee7c936ad622dcbc674553b9dabcda17bdbfb4865d68e43c149512dcfe75afb508f67be805846135fd9514ff8b7641e1d851626feb81b6e6a13ee0d7ea3bca57f3d003a4db1673d74f73b34c9432ac981a1cd1dc8b8c0ed5a05e2dc5331831ce66d14bbd732c4deca2f856a0cd61ddaa95d63667b9acc7a1ea65709fed55b3eb4103fefb3b66ddd5cd2155438db6923069430c6ec85ac3d9bf56b0ecd990428ceb7d93991e783a648bedd66696659b5c926485e174f855fd839043e38a3a54c349c138977275f7ee0fe985493cb85e19f30968d4037462ae2487810d6d0778334f664262e88498fcbb22d46d504f91bc9dafbbe4dfbf2b302415cf195542dcf3375e786030fed67638ab995b70e6dbaf7b75bc128de207e489f46e512b69da8614d1a3facc1ffe375d8b64e0e5c7f863786d3984711cff55ecac578c41180e94d93f929075671c8e4fabf45c6e2bcdf9cdcbe2954c5b4e4e3f8878ab68ca13189d9703e7517abb4d5e87dcbd3413da654e75dec1cca0bc9472bd4bcc60ca6fcddbf6e78ad25ec7dec0f6de21be9d300cf71beeed3c0c56ace53de82c6a38ca5d59e9c24568b7cd15a05323e5dfdfdd9cc957fcf8958e3747471a8d944a6678f6ac8a8763a1759b3dc83edd18ceedb5d36d3ea897b65613dfb176e964845f899cbf869f48b1e71ceff04864497f58537ff6a7dc64306b683804f96b9a81a3193f5c9c711dfc5b9fe79bc6dce4c934591f93860b66511abbd61295af186b8ceff5772ff5ddffba4f5256522b5c7c55a6ba9b13b615fb3b3bdc4b15aaec84c85d7188f4a0573cc02e9fdabfa32ab66bf8a498a04aa4e235d9a5057997b74ab6aeb27b96656cce94af18e1465e709b5ee42c7e5c6e167e5ba5945729bfa80fc236073fdddb4ceada97292df53d74fec094333d0f8b0a04dde3ef9993369eb7ddd07164969a62466b80918873a4ea56cd80a8e559fb30f6cce44f1f8fe60a +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 4ed7c92d83bd03b2a25b567f17ae55542e2f6a4308ec0f3fe69f8ba5ae24331b +public_key = d6fe35d06aa99635c9b63f44e1f898d8494b6823e2c0df43c8ea5b7f7eccb7a5386e477d01fca3f05ef2a63934843450a446caff65e84d15f923a393fd887df7bd45659cc283de424b19b17dcfa2394e32f0fd67a0347f88c6b392aa56a45e9a440438d309e06a5ee12124c91fd3e187bbdce685fd9b336a1e33df97837a657599e253b7798c912a66a48314447c45fb8469d941355c6cdec0951374105858a475d2ef39cbb58b8e63a64e2b99c48269e2155695893a62af6745e86d58d65ea94626ef26feb8fc045602344a7f44ffacd5de9565c1d59a459d44f33c29f1ceac6e0bd936b496c8fd6a619d9bd649eb458f8943eac97293635092666688db559d255ceaff80227755c46d5d6fedd7cb7e85282f7fa104debcd887939ded8db6b2375af3178a72276c7910adfd7e969f2686c9518e867899d5e87e32de9d9397f6b6bad3ce77e8cd4c4a3b9686cac35abc86d57e911cb58b0c997c1935ca6491847d809d4beb70dbd9641878e8cda141573030bafb687761bf43ac89b8ee73376793ecb32db53368ec9e089e72e9aa482fd8652583b9155683da3467e4546f26ac98371487527c37b6646ca69fd1799fa1880bf540ca7240c3c22587f30b59ab8fcd38bb95cc4acfa2f59a4a23cdc4837e3544fbca9d84d4b3a6ad86e8764b7deb7094f89858bf63af828e3d91000f508a7f6ca24beca0f87195caeac08db0202def8584c15299e9674450010db431b6d267174f2cc56860bc5ab4fcf0d19ba8ed47535ec4ffe1d33f2a8dba2128d5a46e8f2ff64d1cc634caa6b410df3615538366dbaf41a7ed8b5857299cee407af93c1b8b7f4a499a97be8cd5eb549fd20ea9c7d08d9fa83f313439dfa57ef18f4a6f495caba3de511ea48b7e19d5b0465f7a77e1f37e6b17dcbb4baaeb31933d7d46f2315c79f40eeb93d8d58fccd1c4839a808a5d2d45b99f89e8fa05feb1e8ed669c7988ba7eb8847187ac7b774d4b1a139dc4e4917c9b4e29833fd9fbc36e4bba97ef5bde79ece0c369acf7e83c86fbd04785efcc6b624e65c014a0fc4b64b24b3b474e8ac5b6b7bf69cbc85d90b69aae46b4a12feabd4e134bcbfe4922367b51fe7976c6705e175ff356e2cf8bd86ed733deaab0cb8e5a53c99b2985963db89bdc284d251340b0e3ae20a9dee93344dfae8063db6ef4374a341f44eefddb46676475937a957fc82f1f4b185ea9e52d3becc77ace19fb055abf099f637b39c3aabde1219c88149f77b8bb73ba5d81435fe93948dad0cfb81523c72f9f360aad505e2979e086ab85f9663e549f345da694458ce8cdfbd97e6c0f8b8947bfed99d97632a5fbee89898aceadec8ede15cbf5b1bffbe598a65465bf2b89971aeddf9d16367e9436803ba8c17b6b3b06fb11bde7c187e25396bf6755e640ef4c4563e9cea69393ccbae435d8166e67b29aed115dbdefa5a789bc38913ebd86f7faf5f5bc81bfe52607378396549a8f95d5aba8c11a5417b55d683de243393b7593400d46cca1e3f1c027bfb09cb08a1738c88b7d47e876ef85e7f8d96cc1c93b9e93b7073ff7a55996fa958a684aaeda89587c0e5a6b336dfc7ed721298ac6ab713f4afe38bfaa7b1ccd2a876f03d7f546b861e351a73036f4b363137340efa7764c439f68d3c8e0723683aa8254a66284f447 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 060ea5d2ed1dd88144a9885e79278590821c22917b55a48920f96b53ebe0e689 +public_key = 26ab73a335519aae833b1f68a38ad87ddb57ac7fe046ebef407c804c488e41a6d48ceb762cadf4c2157e7dccaa1a86f88138d716ae467e766dcdbe59f488da39bc4f4a5971581dd70318c2ae03706b639f79a8a81af34fbf6c9ace4843151ab5c3cc81af08ce392335e4fa91316fe19904745ec68cf46dff4663bda755f2dde6ea318539e10a853bd9da5b06aa130e8c6bac4a8123719c567719cb723c5fd540ebcd85cf787f37a76c6c40fc983437cf6f7febe4df27d62be752af3cef1deed26856500f3831cca75eff8ad8d4d9c81adf95674550c1c951ffaad155856c3dce43824556c1adf5d56bddb729fd96a9f6c199e2bf5ca862a4d1b8c53e2393fcefdb36912d583b46d59564ef48573ba1557fd1ded58a8cc5ea7ca7f19fb7dc7b4b0459dfa4f7fa37aac0e34be746aca327258d9d29acf24dc5f70b8f95af3195e6dd30a498259c6f9d06bd6908f498953b4fd39adeca97295e431b59c9614b7867dbe229ef519bce30f003903e9def70bccd776a9b916684cd89cd727f3ca83fa21fecbb90d547646b987155cf5425abbb34d6cece821afa8da22da541dec3af175032444e1fd85f43f47903665bea2f636755b5e75a90931c66e89345f57ca4a13f959bdb4521cb62bb1377dc5c99fbe36c71347b81b8db6c7f51fac3732485d09b7e9f4374bd600dedce56d1e86ea755ed5756968f33fcac4d6a540d93951d0bb4d0d838a42ef8731fdc2dc67718888dc04d8941b877eb6543432675c879aa860ed3e608aedf267e32d333ca9c386009d8f17b55368daec769d2ed3d4e6c7996ee44d61c4da9f4f8ba2ccc55775490dcacfa6d6cd134f8d9be3d5d7445c9ebf7b89fa6d4147bfe56bed905a7d33bbbfa25a3886dd5f4f59d8adbe98dc2d743878d6ad74e712dacf3a19562e4ac7f57a86fc98663e455bd963c4e63d8471c5d4c14eb718d8bcd6475cc45687f55099f90ffd35f48e2f18eb6df3ae74999765cd69433e5312be67698346fa113da40943f8927b2cd9aee2dff514333bce85a89a6a99d03c4a5c0b847550972fade448d28e9b368fb99b5dff98ce24398cff30967013c4dc4d374379b4e8b037eb0e570afce47a1c99cadbb651bfb576ae6ebc5449c5737bc4ba4a01f24aad80375acbcbaafeb564665a1933eeb4d79e8261ce251eaa1014c6f424f74666d9310d8b665c6763639c71ad4801a9d5cc0874be448d23936856017b5562a9ee79686bcb55e04a38eb9b3bbfc07acd4865860a77af3b5acf7db344f139f79d5953788e24c2c92d29cbfeedfe678e54861eca5cd45dfa0abe365fb744363e6f37386b9c5e0e2bc585db3da71ecc7ba9e3921ec8d8fcafdbc97807b693b1f3d68335d7cad9d410e0576611ba79c1ca9c1ced6d014768089dec515e79869fd3035aef58ad174cbc70b435710d5e69595f8429d7d41b8e80123a4da1e787b674acc5e3c84047bbd5851c3e83a8a046063cd6bd84397868f41c95b8d8d3afc53038856247506065a70a5a29c8debae1b488a68c2c00f472d86bcc0ef63e89fd9032dfc612747ce6d344957a871c7774a0980b70b56f7bc45f9efbd2085af080cb923b55640bab2aa2c30f206ccbbde7bc9f58c1cda80399962268f2ae99c43bbc1fa7d8949cd772a745bd9ab018fd3f6ed02f32cd2bf845923 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 10ef9426f8c4a13b52325c5bb4ead4596ecf2c6b5bd2d37d8350e90d4164fdd9 +public_key = bbce6e6e3c5e5d9c8ca207a5c77c7883c9e7fe0463d42de962c8d2549a87bf39b9bc7a30a5b654c9c96b14bc61506371e4768429db8f7c0a62059d3b9bc9311c66b907c582572eb7ebfb52f6c7cf76ce69c28ef9595631a2fa959213e7aad4cb3393f9adc69c67a5e58558638c474710c78764fde2240cbdc2e586adf93c0295f2321a94cb766f9e983fb62eda10476ecbb9ffc1def0cc83632409940ebf49ec569ed584d471c86624bd6963aed30788e349f342c759886f7c376cf7d80a2de9fd4d7eeae76409387d151c97d07f70329e43471a84994bb596f9b5e1a78d344f8740fcbab415c575e478db4b4e3087e802f4d9b9cead4ecc9cec1b7396e664645cce83b4dd512684e1bf750d8445d228dbe5b4cfc09bc9fffc8d6e49b49d68c4d849b5856efcbb65f8382fced556614a9ee5466d9a4c5459f523c1c76667859760e79d385f6576843eb7654c30b9cdb26f2b8089a3c5b50fefee5fe79c54ae62eff7376effa3aac6ec0e8946a47cd79acd5467e9c829b304477541ea92b11aeccae8b36ba83d5ad83083fcb51df653ce899227d5f581699b725d456c0aea113eff7688d56a33755ddc7d0658e64baf97f1a6d5717dd09dea8d87e86b6accd106a5536d7c83933ab12e294b505d8710adbea16ab49b88a60ba7790549ccc0e6571f8e875d5632dd8a5627e48e0395bb4c243ed9d53cce7b591949408d2c87a6ef95e3d3f3204e32e21e7b8365f9456a53d3d748c26f80f4d597573685b04780f72ed94c665c66164a1323c290ba8c8c1d31b24fa3b63d62ad5c59d9eee2fa9f6e5aa591abb7e1ee2ba1509aa09b86c60a969020d74e238b849374bcae7788faf6e296d5ac7bdd927ef3d912d4f87e3981b795ed5833f95076365196bfbee4a3cc189020254f32bd6fd8e7dc43a94cf48dc01936465a334fa59b3d39296305dc8b785f69ef2d4639bb3a30ac437936cbd734a5c6477b2a55eeab0e59e67ebb12473b77698621e5f47ec5d1306d8c6f17da6765ef6f63abe87ba12a56b2b2dba44b07ff01c9a2c59d579d3ce03cf9ea841c4f4b3aafddbadcc3d33d31ec3ffb4a3f9ab87f93494720d386bb13cc482a4adac46395479d152eaa922e6bbf56bcecb89f11588b4085a62cada47ef9a185cfc93475f5cf0d6ca58e9857fac8b1498c9dbef22175ca5c0eb6be6dff69f8977a0b3b04987a1897a8f30fdecdebd98bdd70d16ce5c099a5673ce7087c6b58245bc25c382ed3bfd5ba9b8e48932a27546a089113f37e8c859720bedd465970d61446f106cca73ddf85fbfde2947bb4ec57e59cef7be6b6fcddf5a4b4eeb05c516578ae9ba4c197b692d20976116ba3576dcc5c7efb626f69a847d1233db65f39e3e6dd362d0b51101f72716a4dd293fd3bacc9159f9ff33354c12fe7d9ad745d9f63b5e8da4f497d99d98a4d895b59a59a1ece73ca6945fa54c398f351c8c3ab8d66cb8a7ea68157ce3cf8f104094fc83c7307df42f2fd49728d842beb8e126988c5a830d2a39c281eb03359dfe1d53e432c7a453b4ceb05a5654f537a7e35242ff8f246bc6a1445f0ce6b2f2bc6753f7a62ec32dcdfd9f2c4a5c70d920d2856dc34549bc4656f7953e697cea7ff891fd65321f89bf2d90cf3dfc681c2fd81792135e1938ca482ef3c253d8976201852444e +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = a4bd30a64cbf29a4e290fa1cc1dfb99e68348713041e4409a1af23c5d80c15c4 +public_key = b873b2397a7c7aeaff4b0b589ebc97c60e74e53e7ed5d9cf2878c924937bd258bacbfc83284af18d443d8ee43f8cf3c64459b189e6b3ae2dda6c6a3edea9e6f89b8bb67cac333cd51905d3a4d4f7f5c9af1a16a59b3ef2522adc625af0149765e986339ed63567dcf9d0fe5d7e8ac026c96f08d6ac4e057db4e66362be8ccdc3bcffd3d0a996ab7356f32db731076fc75b39ad7bad80b23763ece54960397b8de836071b8914d56f95a681accb8fcba5f9e5e4cfc2fcd601f7b0b39e524e28daa0a69fa74ac2f17aa8826fc48105e643a5a527da5c42b59f9b7fb14dd9e574c5ee5806ace40df3d2fe9e3ec6f1560478bc7dbeb94d771abdee173e3d2f0c785e3b9886f679acfa465ba974677cd68aae49ac0499704e32dc4974f2fc322b66e15a64b0b5dbb8dd7e869cc655de6e390b13ff063bd24bc7e50574da41cc6174b68870eae1eaeac28bdd61f3abccf5fef231655eb09f85b215f51ea69371e9d527793495835715bcd05868a78b1cae810f5426848c4ae869b62d34bb266e1b97480aaa7a31e384780442d9933fdb85defaeac0bfb8d2e63e4d29ae7d374caa05b46122ee6362e8341de9f3a66872df3c942177b58a5ec40bde641f53a53d97d8ebdcf2aac67ef36fb6166dd7dc6880a1f45cad3a5313bf82056bee0b28ed9b396591fa78dfccb9d6b9fd5c08e99c14c68c04f48654716f1aee4f2542cd35a7e5ffe85814c1f6be6d8d4f3213c69d5958c46a6db8df589c195d87ec5474df3c5112b5bb6bbcc6ac7e60abecfab298d1d775cab0ad49479a837cfc8847763559ea86239889385baa44af848b489087fb43ab2dacd7bcd56067677995d0f937e271f5f0330ff0c2b8fd8d15bf774771b69c570ec488053743dc5398c4363aeb3932a5c54d16f45a033386dbe3b2d0a851117cfcd2fa4671b95cf7f6dbdcb4976a2393647b71413e870b1a6b2d486a5dffa8093b7b948c9418f3a2806f96eb1f336b8a6dd5a5715ce9a70dc6978038369b1d332e3ab6c2a7e961d5c6654eabc339d114cfec46e96c509aaf09e658d9b77928935b9b2ffe42bba240afdb58ea48f4fe9a7934e28669c09e135f773cf75e5590450d495153a691794a8d28fee23e444647e501e87c41a944f95dc9cd288cc2ea90a5ef7864c79e554cc5924c4caabfe7dcb4f4ee8b76e49993ae5bd85ea8d9ebef7401eb9c6c794a67b3e705876243478f86d5b9f9cb32965ff8175f6439a5da412b4d1d28a70c6b9794c959be155aadb39e00c4e8f0dd664b08843e2db71c547f1468c5fde9fb9e8e833638ff35fe9b515946a7a6eb5aa3e9d9444cdc1aba840cbb5737fe4da4ab20facd5fe4958a57c3c91f978fd772c296fdea8b60b30a601b79fdadaaba0f46ecff27c5c734a4226534174eb861b7899cc3e1e8edacce396bce38d9f34f89c546eb91cba88493991987c0aca3b0715ee482ee54105ce5780abaff7f5dd4eeadf00bb0eff4a29298ac10c63fc0669df6379294aabb4588aad2087c9c16c9afb654f0c9c213d79cee1a843a84742d574de35fa4f24795e9aa631e5e98f085e11613d0a3fdfa402b4cf8aa556ce67bd44e307ce5a1eb76d9efea3f066379865489701783b2c95ee6967f0893d44d76104bf396577fd719d69eb306117f3abd65385a87af12d1bb6d0433 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = f4b66a7d3b65b896dfe100b2cad24b175a1168cfd2ae11fd704b835f6bcd311a +public_key = 0846c63e2c3018bc8734fd5f8ce3b614088a787669205ac9889bce2d3b523f366f4b08e2f004666b2b65453eb135d97a71bddfb9a3928c1a4a2d7f85f6f7b19bb766bbe6b966c4d13fcd6833ec6f1118a773cf465e8eb77ba740b7ea3313afe8542a41e3feb1104fbb42396e9a6c501145ee783641aa79fa992f72d9544ac93580fa6a51b8c7b6a4b5b1ce3b58f1e9d1855bbb2b68b988953ab646d7d988999ed96e5a4b963497a061ac69be9dc4eab7c0dc17820b6963b0293d4cb3dd82f5997a877a9ab7ec5c7893c2de53ac6779d0a88191be3df828bf3afac9d7ea392fea899ef844545e87af673972399a5fb3e035ddfd70b57b97434ecbf3b1985c86ec75b23bcdafaa77f2601fa257b78341966bfd2569670680e11f899d2efad3873aabff6d2f4a5c8dce33c92b9a446530c169b6b88be18d03329374a71aeae779bfd35986ceaf3ddc764ae2b7efb2fdb672b4d58d8be640e61576f2cac617a5ada6deb874bbac9d37fee4c881bbdcca1c9a84637de2b988395eb5a4a48bab1e7551b6cb57ea7b627138c3ac35fbda1a83ccfaad69e38ceda6b14aceb3ba295fd60f5c642f5ce88ccdfbfa6b3a5dcbcdf96e14ecd962745a5fb3fd115f5f71d895a2085620c89024e9f2359741be366ce9038aa4bf60320a456858a7b9edebcb1f316e9c6d188fbedcb590a2dfad9aeadc26d381875fce6f3b6403c94dbdde424d19de9deac55957fc9bce9cbb26c16e9bf7dc9e40a126eea97ae71728689cd6b6ba0c8002ba6c477e9a1a1ce75638770ddd88ae29a7fa958209788ade14354a2bd881fd5ef8ce5a6786be063b357fc7521973abe4fcac0a9cf6f3eaa052959e2f973709c9c6bbf4c889c8b76c0ac81353b4a4dc81b7e3e6f75accdd29e1e01da7e838a7c30f3ea1fbda956abb53fba02c48396817f29f59f966796806ed4ad62b8107493aab264a5beb32f5459c06aa6e7f79acbf27e899b9e1fbaeddfa6687b3cf8c1e4e9a4817abcf656ff669b587c7f374f3cc20c9f85846ed21bb85a3b9aba167e00875c993b54ccbc84db2e7f374bcae29c5479cc95197f6f5da047447ea579765e595853652aefdaec4891e68901bb67faa98bc515dbb50f9e3645874fb8ade51d8e6acc88a7f8a4ad393e70a583a2e17b0d5766e12dcc827386ba8d868ee16b2fb99faca3941cdfa7a488ce3af9787a309779b759cdc037c13e8393158d3bc1da3ab19b7fae477c8d3f2bf05bd3ad9cfb1bf41371c85ffcb607748cb518a6c896830b29e737caf89b25f88ab59869f2f637c67d19818801ef9a6b726dac1b5b4d85e9b429d5e6687b3fb7f30eb88a3c963d81366e308b68bd2b740e7bad8cb7fcd6468c008ccab34ab99b6773c533b3915be9b2c8dbf7e783e7bd9366c8962e7f3410f34651ef6d6eb737e6c9c5f6e3d6af7348ce965f28d0dfe15b8abafde6994b562613febeb2af9be5596e204b9cf2ee127989bd2ab49cf27c976f74aa8bd84fa6b8401af5f3c46f13f8cfd170d45d865c75bae4542f5a4e5de459b5676491c6a40ada2f13e9ca1a63a401c9c3a14c9501de6a9a69e64d5f2aee93e8b96b4f679e32234fb20353e0d8b995a6a9129e961ae7349f92c92a90b833f8fb9fae1ad459ad417635c409c28f9ef936ae28d221563e30f83162cef01b482889e +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 1d7b03d3c5eefb8ae5799dc569aa668f1bcb8c86607b089d3530cf61d6380147 +public_key = 964435fc16be2deff76b7bc78ee8b5c963af2af4673a93940c4f9131663cc124be5b7d6bff6ce57ece7dc5cbc2a124e8dc4b8a28c841c5a831b2afba98aaf0fede7dd077d6ceabc0d217e4d5595d552e6e9fb6824f3f72de1aee262aa246494153becfd95c970f38aa350cd438bf6e76c77a0a76bc2c57b80757550c1e807b4f3b85f3fddb537ab6d4694cb8b9ed58b11c9a6acc74674adfe011a66dbd7896329c3a32dda7e1e78efc93574cb7b051d79188ea4981dc6299eb9bd1ccea133a415663d5cd5ad9fcced934e7a3d23fbb0eb83559c484ebd9ff7cf93e456df0b7187e2705a2d1a8386d0d8ec8ff2fe28fd8846dcd40de60e81fdb6d0c747ccbbedebeb84fa754a06f5dbc0646210cff1307f1189cf00c1ac1f10394ff5ee7018b964073ffbed570ca4f575f06eb7149a51f9993b918f7ea3ad8c32a330747ca27ecae462e54ce1a6a67a8b63676998a09fae8a7a9d2ab709f2e62a3edbc082ebfc7e49c5b2c9ba975b3bd98eaa388f391f5cee4dce835c83732c84f54b373eb18869b2c90e9f986a0ea345ccbd20333893b463671c95e6bad7194dd6f7f6fbf446ecd0009b1e528c85d147d0e75dcea8bdc68feb4fb754bf3fea7b9cc621d4c34682a6195776bbbabfcc866cfa94c368a2b4b346c75a2a6bfe946cef0a4e6af0fec15d3c72b7cb40824e609cd58e516f7148d841656963174c70e09c1f593acdfb9bf4a3a9387b693f98f495149c62a77595574c0bc745b51ba8338c6361a293402e74df74a7a70b49faa1ac4d66b89fb6c31dae59f318b61100dbf4f5af82f85fa070582f2f3c142ee68f60ad47f23945893766215b9ee9a3a1de662060a5b1fd34bc8dac56c0875a608ffcf8863c179fdc2073cf517cbed3c362a853beffea8d02f47000cc4ce8e76cea8dd683b8ad89b3eaba3b9636f4f5ab36960beda88055ddd664a2cad749e439a39c6999496999be3ba7bcafffe06388b1a6c83068ae71aec6f8a36e788b8aa148933c896edb6eefc86cbb7d5c9cc96c9f137c6aa3ed347289010979bc2ee6700b6e0c7c990d685550f537ab0c45b2bc57e5ef4c08c3ff0961c6e17e95e2e4482a4a94da3ee7b6854ce58cf63d6a4f9e1566bab646fdc2e6e0444cd8fcb7df4168ae77ff3a0ccad971583b69e7c4815f71a17b4a2ee74638e5cb39332699ac44743fa3f7acedc03541e93a822a96089d6a1f47a7df35cc9b659cf419bcd223eb98aaca67343cdbafa3db35661c39cdba2ee8043a4c945067adee46e429ae6011abfeb58c1bc9bf330288b57cc319389921857c9d015a0482ef8c34cbc144e7db24b91a3567ac299cfa6d4c2f21f3661a3ce09a6e11d44dd9613b966955c6a758fa7f3556f77e6e5ac7ad3a93175cfd32a983cc0c73c0df3d2f9f83a0de89a1fb576cd3b41505b5ba81fc38783dc45399b8dfdb0e548cbed984e7bc5d95c07f73b05cba437ac6fc369ebca85e13ee715133bcd3e4723d79c9b93abac57ad3d3a5e78ff986a3539eb795a5b4967ac7753115b916236a97a0d870b658b9d4b3e368f7e1aa9adc46ddfd9cae8fc7bd34669d3858c61c1259cf485338cc7d0eb83ef31643b469bb25a3edcec78c158f3f90573c52295e8e4697f19171d8f1a3a633448fe9c83bd28097bb29a168db5af1d1b354b6881a2ce509b +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 554f3385b382f4a46314de37ee3885addfc5332bd4038785094e0a832e9e8c2c +public_key = 597e83444ffdb026fd26965d5e946b700ab88e8dffd6ae376a2db5bf8df297aacde28588db9ec719e4dc1fbbdaf109742bcf6c456961338c44c93c83ab58581635499545cca76e60e15a35ba4931e2c9efee68a8734acbf72755e8d452d28fe5467e61284435eb6a7a2933c8d146a12689e43c8d740f68ae062d87eeb988771a8fb43b34d6ec79869ad67065ebdd19cb5313892bcac9e4fb500d3375ae57ea3ed551b2d9c7624fb22607615454a910f8578e44b448aa9200e8d5cf5ce5eb635013bb80a65593ff578c7a4d66f05abddb95dff976c74ed6acb4d4e064fb5eeab479a13ba57dcacf800f421613e94a3cb54afd8c0e8dd7918d9ee0e585dcf4d88f96a7414fdc57d5a632c8bf5ece73f0f841173aa47cb4f004c8d8eccfa6a187dad9ecd6027557f814f0db47b0159aed1f03f1070cd68875c4f6efefabb67bfe99d9e10b51bb35c76d16d5d0e6a97e56cb93dcc5908ffd95f33009bda237c7e1421af0269a7097396a4a98be20c8f26f1d3cb1136ea3fa39d438b305b63fa049c420cc37849fb9fa1ebd790dbbabffbdd7586780d7d78dea622d05ed729d841585bb16bab9a0d83625d55826e3949bfde8e7c4703dad82466b9a078393c30a4f6b8befc775c9dff7cfb69d9cafbc66ea946e6f098f881b303acf51fd3ac1430f9e8738d82f838a202cc3586672cc6f85b12ec41e4ce6f5787ce6f3e9d849483ff4dd98acf46f7c36c11a991234ae7fea68770c79d839daae3bb72cbde4ab1f79fd13977a49b0cdd494cb0dc610dcf306059b69568639ace591ff74f745e42639425dd88026f8be0f36dcd66672a12b5c7b5c73244d8a281e677f16f625eb8f365ed98d079c142d8415dccf3f07fe1999721db3c271f7521d0be0129b3cb6885311ad689166a3b98bd9610347ceea557975d720db621ecfdeefcf4eed2e44fc5f3ed2e3df64b9c66569f8b4dd6e1fd9b088ac8b7c964213e5674757c7bd48a3d06635600f49a50548f53dc55a6ca0471953eb7c67e24daaf74ffb785ef25a3e622ecee4ed46b9ea997974c9ae2f54b87125ce79e8621e8ef688c5dc7a49877e6fd91643a4a53e48560e35f27bb30fae31521583f5b792563d9465f4b9f2233027855cc0e7c93bb33705136c8849fccb7e725474dc540573d4bfd032c9b297eb5b02c954c744c4c6143a56eb48f2de5439f885803ba5acc5f4f3d54bed47e45ce9e73ee9fa0007f5273787cf1b89c798e84eed905bea74fb43eddcbddcdb7dc1547c634d7d6a8457e45489752b0633628ba4f5286852eeb5ffb8a7fa2bbad309fd542ace74e67aa07b467f7db6a7e3d5669fb36a7a37c6d7e14d7ed721e9c6ea933742e43609d4ef6f48d3e99a8d5a27b069bb73c99fbf085f4a8b2989633c96ccf33791caf9f3d575f249c640093047de684fbc701ac633381bb349bb7d361f30a8cbea232f3de395d258ac7043b887770a307c3746002cada38f6e47f7694e05f094fb9e3645aecf6f73298592c00dc0fefe4c07d8c9fcb4d1ff45ed2e35491aeb55aed9b1b0ebc2424cc729ac7eb07630b9ceed0e47c323d6b3c0cae2dc235d5d4edce2c7bc1f0a8467e6f7569ae85855750f1f71786d355a0b8a756468e964d6d375f6a1289b8cdbfed9f6518d7031c57fd3455d4544735cf52680424c90f14f +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 38bf0033b779edf5367d9ebc01c988af90904c560970815837380650e4749eea +public_key = d8279f9a0681cb98bc38cb55143dd31f56f62799c183bd355eec82cdb58d750596a4e6bf121349091d415a4b347e13c9e95e4891ad995843936be342e81c7f4a7ebf9b75925e6eac8ca6e492a85d83fa8e34deffa37ba08d7c681d6feed416d481f58be683d07a18e322fdee224e9e242f83a01cb1a458e550dbade263382eb93b7f4f470b265027a933c58dcda44da9a4065b4bc47990833786456aaab5a81c0a46e0076b91ba5bb4d4abe21c6ab193b3a377ec18479db18fa706768a641d9d2d5ff4d71c7c95755ca25bd56c355e9d2fcf5006662c4fe8edd4b318be9962cb514b0ef4246be52eac41391cb432c6caf9295c66da4e5737ae3e7dd23f46aa7b6d4c64a6c4043d6ca4b96fc39f9aed5b4ce7e6c631b473d7e6ecbdde9826ab82c0c58880d77ce8f9bcdbf59d6464f4baaccce334809b43acba9f48bbd966c88793a273ae857946902649f97b55160affa2a84fcfccd54653852d94f1b6b78c289b49080c8efaf85df195ab566fa03f7d99c43c439a25ab4149db86db4f57188f013ef9f3faeffdbb9e9c688ebcbf6e0d7ac6eea395b698a13407e09858de883e3b79444963557cef8f534eacecf10b74718caede3bcbd98a68d9956facd8a45f2e84c17be4048b9d28e8bfbf5ab43d1b650ee8cf13148caf55ecfb14465615fcba08ff2f765c8c9c66c24bdcbbfdf57e7dd0f257f00ab87f93c5e67478a27c4fad778eb691a5f9bb1430dfcc809e27ea334b33a15f7a1da5e9c28e30971c55f6fce72b96f48059830fc57c7356c9be8f63f7d571d0f7bd88dfa1686a7c41db9306558cbdf39f0176959a188b4d457b41ce52b7fad9f696dd4d945e78c45eb68b579d48774fbf6ad43bc1be4cdac327c80b5ce116cfcb58bbc24a28e4657dabc223ad510ae1eefc311f1ac02af4c7443fe0233a4abd4d8b1db484e7885d23acdc2b9c4952e577a8ebc3d6a7684f8eee12db96e1f988e04f3a3963d1d3ce5fe3feabf708bc64147a31ef717f7868007efd50fa9a3d0b3a00a7f59ad5f057dcc14319c439fee3da967f6dfba4289f45b72cc86c07f5c81769dbef71e19cdb6cfa84b916ac8acefa1f9bd5d895f7ae4d346775cc8337e31478d6a3bf884e35628169bc12f67811c5d7bee3bbebca81ab93b5d80daa92898b3f5cb6e9d345483ca3743457fad8cc5bfcfa8e8af2a41ba8b67641ab28ed42abaf95edd55206b648d8e361f8486408b610bb3552299316b5c0b7e3d1dafec3d566f1859ab2efaffc5aceeeaaffa1f0ef77c544e28f2cae6b598c10ad59f0cfc24e9adc2337bc2c57a0bc64a7fdee90c656b52aefe244eb66aa1df88b5c484cbd33020b9b9bb3d19c7f387f2746b3b893a24f7882bc3136fda1808f71f9c8480ec6d73277fd44336b32f851a293f24144c480aa302c05836eeceac4569a613de30b44e4674ffd189ee22954ec4513a2e814ec86ed35113992f16799dfe8c1eef3aff8daff3426f8808a81e8b66ee5ba47ad0863c735a904565f036a85fc2fd3068e37abeff06d3d3f22e3d27e83f542a342caf3376d7bd65a745e31e865fd2f43db3ece08eabbf8183b4294700bf8928da8ca78ccd84918e0c39747fd3851212bf2f26451f687fe0c75659133e8d8c063cd3044da1719855fbbd9796314b11df8459ebd2d92b7fdc94c4c +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 048ea516d0ebbd9f709b47eaac66f344c571cf50f0d01c9466aa061a50b66a24 +public_key = 41aa7b69158362b4e767486ec3ead9ab4335fe3af5dd7cd7366478cdb9ec691c5ed9264f782ef4c1f369315d802f58df5df89d5cee89da765337a69c5c838489ada4ba7880e91871fe346cf3abb0aaebadb31eb5acd3b773d9e46cf97920f5d9dd3dff7abe4734c9777a567cd44a43500b5eb90d5bf4c5a3888de286639e6d9ac2574b33f253fb3a787039e34b2af5e1a288f5cba7a8e09b401cfc6123d3b4c433e8e8bd32341f30daa6da0906eb6a196dc185bb8cfec1a6b691a06cb5801fbe1e55f69c56490e256a84ce3352a878c734f430fd68199ee60fdd31677efd69894951d65b95e690db56e29d149afcafc835d3b1380369324f3d2f84ca51179467bed28d26d1d5c397cd8eb1b5e468879e85b35d95a0e5b5dd6a421b5c7eceb58c4cf97b7ffbe14fbc435c78857c75d98e4de7ff8a58f69f7e5ee77130adc2962939b9d8c84bb6428b49d2891e88df17479fddee4709b7850f35ccd77acb0bb3a05995693781fc8eed62ff883827a96ddace29a9cd43ec6abd4691be1a758c7fa629f6aae1c795982cdd8b08e70bfb3b905d47e1b4e0cdd49c6b4fadf0bcafed2bf1eeb95d505bea49beace228bb5e25d8bf15e28f0cb63f5597851b9df4caa5b6bce0f706e98dd4eb0286ef840caa4297ec562d5cd09771adaef5d6265ddc56a466249fbd774ee53756035349cb1fa48247f21bd53d80feac1834f442935ba818a3b61dd7a30ce5a2fa3abe437ff157d5df0cb5af97561b6d8a3fea42a809a7a7d5491453c849dab7acd99636a3ec007a70d01655c84dff9a36d12c494de47839c1faf951a87ff73968dae83a86f392f12e873be4c75d3bd700a3b54005ddf6fb664a56f7dda9c753a4d32f434655755d12d4c782ef324bfdddd61744cef6c5ec9680f379a26284bf969da3345d905e18de9c7d547bcecf3ad888f40f32fdea7bd3ce84faeea9b6835401e737204c5ebf3bf8f2b58edd399f873c7849cba8064b8a20c9c39194e875b4963bcaf097b958d85f739383bf26787e64fcf15974b45858e85f44b8781cd714b9651a7685e673cd1c6f30c5d6639ea5629d2d65990fbc6f2b95df27483634e165b5f4ea99a9424effefc7cdd2fa8016d69b652c3e94e73c70c97f65b3adf14bba2e3e91662f701e9df52e9c7fbd8ae7d306a4e2fdfcdb4d5f3f07b38eb65824d5c9d8c9ef7013784fcaddf0348f22cddef5b3f5c745a82a7e4a5b9aba16acbdf029771d64e5e867590cc5a5746da896a4d7f0749ab9ad8a65e37e70146fc1b7bc40d789eae83761e7774aad7859bbc046b5a87e3a92a53682521f7f13df778a3e8f8b9c3c1f89f11a2fc853adb0e10bbb631599190b49a66937920b3f123e85d89c6e37da5f7ce9c12d37c12dcf4741cb9a79446606eabe8c9ab06d8963c959955f198e04adbd137f42dcffa2190f81a7b65f55cf8ec9c6cafe64881d6456c086d7cdfb89e2daffb3ba8f835772015ec30a5f734a3fb08c5d8402a6a2f4f9c76b053c13af676199f8032b5d9f4e990a18c2c04ba7c2868ad9f45390feb4957d7eb9da6b81374d7f9731faaf6089e7d33a9cf4600944d65871d313387c5ed1c0aaa27bee9d978653638577bcf4caf58d83eeeb57f50e544d4da3b73dc1c5c4a047b0a5ea85edac7bec66f4d87fd2fe422e7dbcd02d1455 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 686c921c9db1263e78ae753b1c9c2e7936b8229dca48c0942c56c6bca4f10917 +public_key = 32b6c92f0594446de427ac964fa569ccbd74c81d53f179bf1963ac704489ebb9936e23950f5eab7e26a98e6d31c75f701fa4ac59aa7c15d88c0337a067257b8e9e6db0456fada6f2f44a928df6cce84a3e6634c9cadaf46208920c487b9a666342abc38ace4c499785bcc9ea95dc8690bfdd26bd8ac0e48c72e9b48625ef22cee732debf059e74aeff79fa1fdaa98c38372877299c4f54a4493a4bf0f8bc71cbc490b363c4172d55cf3a5c1375ddb115468756ffc01b5e5b78c9f613f55a34e89c8d8359ee7e01b9cf736a77d78a32520b6ddcacedd66ad0e84b562c6d7b6ab472d5173ab53a97db08b322e95cb3378d5d088cd3ca6fa4739c6633a27d686abf14ddcaa766bdce8d6b9aff91f5eed6d49aa37aa4463ebd9d0af6c116a842f5df53a68bf26e7245e8b7da778eb3343d3f2575ea84627c74da6519e33f4c5d7825ea66a5f45659955cd3824f264a7df58ec87c8aa3066ecd1b68d848cb758487e657f23d0e543899e2ee0f8ae364a9faaad18d8558c3e9b179b66f2488c2be8792b1849fac14d1a9756f209889fa637cf7ecc4f3ddf49eb5c6f8fdf19fbafa9433759ad7ddabc7baac6f3c2023cf7ec869b75bce953ca3316b7a6fa685bdc7c8d477f73268a0797b8d6fe57ddfebd3fff7ad3d5b9c80ece93a8fdee99ed934ad4f51b78263aedd7e28c0ebbd6b91a8db65056473af93f246e1841f5670bcf426f5e4790b945d7bd9c9ec354fe7c895b3d231d95794f89ee60761acabfaaa9a75ef168c0a5dafb498915b35e8e11dc3800764bc5a65c0c54b2af686b7d954e77bc4d08e37ab398fe944f9dd0ab80fc846d4cc8db2b9b2b4bb36d4d4e21639c1e756f2e69f507023d2301b4df97bffa62736b29caf0876d96f94f899bfc6012b93b5bcf3d1f39e1a3dd2ff0b9005fbb8cfeb893066fa4e0aae7b4dc5032b8b34dd760d96c7c203920e2439d3fad2372c7f5e8db92259349076ba20c3ad50efe752a3963cd5e2644fa963a363c1157f3318973207f53e465b14969f1dae99af45b5096ef6685fe51a235a8ba9a595534bd6aa31cc05fc8c5885d67ea93d2577c67d57e2caae68c9c84f565c7278efb25d56a355f36c0fa1e6be3289388f036aff8e03402f9bda44259179b9d4c957f5319acacd28ac1e449b87e891619e940e33861a4a35a97dd268fd4ffc6a3e06d6d858d578bed6dee87e6fd5cdf25e5cceb5fc54373875233ddf66fc880e0c874119c71f56fcb4eaa24e67be77ca6727834419abf7e2a55b50f372b65345133ff5d83f4caa5d4ce5eefbc20e639e93b331e3b60e1b520e03c9703a69f55cfb1b6ff54ac44b8603e1a82ef63a5a9b87b7e16ec565507f97ea76b63f939c1f49ce99e5fbc588761614d1568e93ad98c7c8f4b68237e2429679214bb2b6e8b324b58e1f57695dc8968bca7ec47e7df13ce27a4d8183b49679b349e2e45686f7f2c3a57bd9547a65656cbc79aec1d3b129837d84a6975e0e8c7bbd4c88775e9c68839955775fd66ab02aad69b7630705eeb2ab33915aca61969af0fe4674a557c42faf6997b1a8d9c51445884789f27ee742986446ea27e9808996059d38e0d9aecef8f8ba054417cc3a683a7295066aaee9cb429c4740531990744a987152dca2388ba27e3769c8bf287e54e41cbc0ecca95ce621f2 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 2387772e50059cabda53cb93ba24b19ae529496c03b36584169451525c4a0e7e +public_key = 7c7bd65ef3308afba0cf46d7b2c98d83f76f7c058262b55f7c0746b4dff4380ddee9d7cb6904dbfe6dae75bd506afb96e30669f51c464a27b4f17766709f459b293dc208a0dac5654b8d58a8fabc2d1853009743a598bab3cf48068750f12ff7be5a4f7c4c694809e77e88894d43b5aa446880fe77de837e2f0537f708a8f74ae1fe6632dc285c9026bb244f4ac3decbce39ac6a0a7687fd88d617b096436c9f773e7cd5dcea2cd8dc2dc2949a7879de8e747fcae746b04558a8fbe97df0b9a6919d449b5d7e6e2cd7a35680422d33137d37608bff060f690b47bd300a84c14e650dc748ac3cd6036dc934adb81857f43fc3f67f3cc8dbea4ceb4d790f37cd0373a71fddd634bb3b3b087a82ccb1e1dab7741de56e8d94a1e6ed1f1bb3f977b749c938ac8d92d71c93394856ed133076efbbdd3cc0f28cfa2d34bc0f633f5e55c0a6c989b2ef77ef9e32f8779923fbfe22f78a160fba5e55b6d54ad5137867c10536e77fc7336a3ea2ff37263a6047ff60ed3871f1d479be58974446ea0e8e9439779075cc47a5a33e193f6615134d9f09b68b6873c6ccb682f6b7576fcecdf5432c47e89bed9faf36735fbdec12f9ce6404e26e5d9c71fdd72a34fff126710d178daae8653a2f6c93dd90d9c6ddc63539f51b46dcff4cc8d54eda255e0bce9b03d34f5a37db6fda6d6408bcf2dfa46824b5290b8a26b8e3150fc9afad52d12de759345f86a66a4d238a20c6531d89f170d5fdeed889ad3d50ff87c65a5f433793dc2066f2a989736b7880932de934ddd73c0b686106a9b89ce7958a8712df72392ac449cde507634df5af3846aa9d594c80bca99f185d5ac1793f2877bab5feb212df98594f795c5ceba0dde8dd15b510556ef89b687e7bd1701cbce0b56159b9df7b2c6fc1039aa38449a596c087b6fb2ee5a7c3799f5b7debfaf8b9c5988350bee5af1edf71167fd41b5cccc451470d9752f380cdc56453e554cc779604f976fdc34e9f135261eabffc0ddbfd5e4f2699aa6a5aba063854299ec6858c7f6c6c4a12e4ce2d89b50b04c33fff62ee9bdd9a7777d3c56c86bebafad7d52fdbaed253d3c853e10c1892381887eb45e134798b9745bc23afd8b277c2c999570075903deb530cff2f7906b75db35c3b24b0485ebf6ee4e724058c70988952d86b495e9265df5ec2c8e7894ac370ccd8146fc841ebaefcd7625a67a48e3ca492d63bb9036a5b9a35d214705875e0acf76fcc683036be8c05eca7d18dfe0453ae00b8e44789e17d8ce9cffb568a4cd959193d689a6adbbce3df43907fd45fbf43e3d4a4f5d32ab9d81c6bd9b3486c3636e7fdd1525fc1cc78c809f3a3ffbc6f0628609b996980b3c43294c0e293940cd65a34bac8fd0df1cd7eee3e2c8e52f5ae886b8d958d551e1ef8863e8e5e7ceecfeda3d75b342667c692de9f34fc7946e7a7057d97f7938516cbb6c7f3abdb85b15f4dfa5557e98bcdb89e8cfbfbf74050a7de8dc746cf16bee6147076bb89c61f4a8aed70a785427cea59040ecea7bbf8aebff8ee7bc7fdce7074063358b7d6989c8d6d8f67728790582fcca1af4ff91958c44a3044787eab3599ebff41eadb932b06b152aea02ba8b244f9f62ba6e4441fe24dddb5584adf5fef6bde5872a551b6840e3a082a8aa6dfb7232a6813367038cc +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 155c29c5f0378df0cd0e847a80a07143cf7522fcd880c9229eb9feb1ce340cd2 +public_key = 9e686b49d538d03fa05ac8f372f7525d04d185b3413f078226b97c234b815ed6e5b2683f1d9ab32ecd314c6cce6ea6f0c8e73b1dc85bee6fd5cde5a4504d427865a62356ce4485ec7278a3b236bc2e2d8c7b38312976e810a6a2962496d058ca4875ad235cfdfa5e612e665984bbae792cf79ee835b115f02d4751f1a330dc7bdbdcc38fdd6458b0ca7a9bead26bd64e80868b87b58ccf2a37ca94cb06279ee77a6731e847497e42561863b5f38c5aa4c0158ac28ea5d12d1da8b8e99ef7ebe2c16dd9311a74791c6c8b355e4a96edd3cb6fa085884d7a7e8ddf70f656ce29f9bf3c9eb79813fc17cddf8ce7f2a1cabfbb25c30033f4c56b66df97e82504581a86f97ffee81dfd5a6d89698cc94022be6574264436ffcb137a7a667a4548c96f835cbbcf27805ae37448674aa998818dff6d15a63689777a9ba8f19ac3b9ecf842048f6eae294800f5a07ffa886cc86e7d095f42c471c22ea69a1972a89d6abbe3e003f6c8c1dd7ef58eb560ee85821d84d9a472ccbcc586b6a9a7ff4d269ab36126a3f048eb2963fd028cfd5f2ecc5b9c6ec93d3e4b388a6c8fe6b3e581c05665591d7c8b94c59afd9c2ecc4b7b8f4fa3db9a2a8ff317d5bc5d43827f4bc6d3b9ef65dca56ccf6de9e4dbf2f69263dbd10aaaf4a749c93173eec3de3ea4e5e36aa8a97ffde9af1f91ea34b0807886ffb3f3ad4bdf8308ff5daafd748945a3ca34b9535d056da6f734bbeeb66a4e4cf57cbd79f5e8df6dfbddbfce30fe5ae82febe62924d3f38ae91c48e723965c3fe9dd9f2b67c36ca3ac24e030ab516b0e45363faa06b73a91b5ba7d1a308e286fced38f285880112fa4544fda857b564179c55f0436b25cb191865de69877b57d41daddc2c9bc42cb5e3f207a72ea9a5cc48b573fc4d2ba8b5ae6d73f2e1bd44b8ca67d1d31587d99b9975fae8ed3c7f6bf80099bb61e38d8a7af7bc5d9b86ea9c74d7dda8f6b7ff87879098248d779d7ff6aa12e5085ff86ac77c50849ad1aff9a33bd7ef527d00f07e899d6be1d177508bb969d9479c7cd37a6ae8bf54df721ef40dfb6d3b7f8745144906bb885235d5b19336bee5572188853a47b4f8ed8a041bf51317f99be74fe0873e7e25d4784a9df2149cb2d89b1a864fe4a19cfafd57adeaaf34555e42afcb3e544b49df75b0cc78f5aab93585f746ee7a7f793677743da67ded63d5dbecd4f86a3db4aa66cb602553849b5baaf83965ac6bdb19a9e5dc8f51efdf67ea3c0eec342b525d5469aa7fe936a582946399f645438a3a28f859eae36e033b926695422ae89171d816e136dbbe36adc08cf00e4b44649410b3ae1ef254145cf7787e54cc5a533e8e54f11ea94f7e9c200adf5a6248322fd4a53d3e788defaca9cc78fdcd6b26e70196ff15bc6c29d1779f6ce83152cacb583a90399746f75c5bb337f1b68db9029b112579884f792ea5a52188ae09f547cda89b7fbba90c76d65a344f3da55e5d13bb500ae74aaebdc561e9065b5e23a6eebb43f88f994b121da8913a9fb979a59bbd64036968621e76ae346d96fe6e25cdac4f767a883e6448b078dc05bef2b7aa49b1e80c0f3bc66dfa93468f91a8f652063419a9cb7f114fc38f483c4b9de17aca78e9fe10b44687f9aa606cae8888e4c21ab0f7b85eb3d3a2a3d2fe8ed883d1de0 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = a9cb9a61a3324b1ea5afe693b32784e2871096b2ca14a11acc9577c52359a241 +public_key = ecd4c65cec93aabf6efe3b667405482e3aa37d48aeea67c16a9dd8da4b68683697dfd34fd72a6f39fcdaa18d6ea5c59b4564e8306d34b9c5b7cb438e22ae4774d58afbcdd99e478a4ba8568e29fc71db7c208b7116df9bf649bfb4df3c2e7d59978fc549faf8dc16597a43aa6e65c77c53ff555bd67a64ad62ab71493aeaae6d45677c74e3e8773fb8665259abd92ebf08efe57c19e99435bf41a9f628534daaf8e4ee4ac64ad89ffa1547442b8cf6f54664c550da5cad0e8f81758d5da5d66f01e584789992bf0a4036d770b6c5b3e21b78f5eaf467db42479b478f0570d58d71f038e10f555857e4acb555b9c7d5b5d913b75d5b393bd4b9b3defd350f7aede4a22fe8dabe26a9c93c938c7be3497d8d1bda7fe6c55bf66981695487ac8e36305db7376c6a52cc39769b921f575e5d7a9666abc2dd9459a5595e3ad631a0c638c4bfe81b649704748141394053849b4f996f9b8a68567b73227b8c9e4588ee5ae3b75379d2776a761dabb21941c2b36357f8f48686a5d973b946c8fe419df29075ea073636b367671cacd01ad9ead03b9d6e83721bfef47dce88fc05b0249571657af76efad9b6d3376d2d83366e8b20cf748655cef08d5c39165d0ce9bfed16fadd1cda50e43167d8de540ea076c9cdc2fe3852a5987aa3cef5e5864b7d6b3de947d2ac8e8cfadc3f83745b03e95bac9fd026f51007dcd31ef9d7d5f15036e14c4b5ef044a8a29a3f010ad3a0a3ce928a65ce8cb566848110994e7dffdea5d3d304d6ccbc7477bb78b3ed5f7758b7828b836dbb2742b06d95a0bb882c2c9d8e26f6190f9c1fb5aaf4b963fcc4a35ab78b0d9942fbdb53d4684ca96fe8dc27678719ca0d4a8cd8e9bcaeb944b8cd670bbe71927c56c45d34ae9fbb3e77e4d0f7c138cfb9a1fc5b72367c35c55d5feb93d1274b88bc558158c5d478c34b78f40bde93e96cd311aa501b4cec45cfdab6dafd2eeec56b65618ca53f0f9e55095ebfbc289207de406b37d47ff6e0ed0ea86e8ba94516aa926b99879836dcbf7a7056c4d54bbd19a44097deb3f3e9956cbcf9e7ab95f175b9dabdd78da633f10a6fee899f400533f0f77102eae9fc0f610003674828758e23b5ed7f4c6829b95b8a6751fe988f53ee7537ca9d05701ac8ae203468818fc5c21ae22c6349db27ab9595d4fdb4c528cff3b35fddb7246a4a69b58085a3c1e6997ebe9fe18afbc23bcd60c9f4cc393ebfca864ead54ba38bb734bd0fdf57ab147b922278fb23fc5f5774bfe368dc2b6658389dd31df82a248b7e9d43a562ba1892a985b75a7aff961763ad5fb35b94219d5bb8c4de00a3846e38ca7e7e411e89f9e2c9489c597834c7a5325d8023d648f5347649e84f315bff2d58000eef27d9e85ad09f13ee5dbaa43a9174a7ae9b565602f45a15c30f877bb7ddbfec194e3889f738113895aa8ddcb3ebaf6c5f61f1da1d98ab661cd66bdbd5ac264f9775c3bd165dd4b8f3fc96442cb2770751c812ce67613e48bfbe66a0fdba90a3e75143fdebc3c55fa1364f3188121a9d09bff4fa07dc3708eb22c2dbe542d8f0dc44dd3b6abb7236e1fd37c530befe8c86810863a87cdd29a58955dc73ec8a436112b5c3a75ceec356bbe9e355e4c3941a07e45ad3ecb9ae67e7527f70f6e07a757bd112947074d5120a1f2a1 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = e99fbae8a024ebbbdcef32ce213f6aa942e3eca925e5da4c09975d773b33a175 +public_key = 8c5785417b65b2f4f35cc67947d7b2156f7d326ac1adebccc3a64018fdd4499a8887c4a649e443e757f0f1bebede5fb1a8eb78b3bcfd5516b7a3233be94485762d9675f4a8142fd422684191d6771fffb44e9fb2ca3bcdd5f5ac20a63efc237ff9d99bb405da4a0ce97ebbad39b8b9ce7590229d74174dbabf65388626f645a84263af4b1885c6274d3f231367088e6acf28950cfe81742c98358df2cd5941b7b69e21b5cfc2b4c6c503d2be3fa2e798fa1e1a9cd94743fc86af0ddf6b51b3512003cbe96f8d299663db4dbaef443677033da8b8c21e1adf12fb93f4d63809375fc877866394a1a64d9e2f13b3e61eea2a58777334e5281b7b19a9ee6feda47066eb6bcb46d87b4087fe8ca29c5fdce6f2f53e5dd0ceedb2c6cf136b7b0a97dae89669ae2de1477899b8f679e5c9a8413959ca0cbfb3b54ad58c98b94760058c6f1f4994361e8d9143723ead5ba9fe3e5cdae81309ede11d92917ba1d798ba359ee21026713cee889b58375e5c4f9cbdbcc5fa808e3cd0a36ca575c68b1d33f77807ecf19f7c602d92d16f95898f6d030d5db9ccddce456e2c9f8ec9fb9c7a138e7c1d65a2b660c287c3d17fe44cca71e6def9455fd73ad48afc555768febebaf550d62d659496af9237a22c27670a18df8a56e778aa42c6ca9a955cf8a658c73847a586fc3ef26656234dacb6978e036e52b1149b8e4f6aefe37bbd263a00ead5df48375e53bacf9c4c11d4bbb055666bedd8736b9c323a997476e215495e032aaec71eaf0e6a9245cfbfb603ea5e6ef1edc3c0719c3fc1365c2bfc70d5d6e40e6a383714a0931ccdff946adcf73993bae13d9daef03374e35eace73770a45d428ed3fa9ddb4aed8832526968412863977ff8644b9af994fc2e9679580ede350a3499876f26de57bb38e2501c8dc95365f83bc64b6340fa6cb4c38e6b328f4d0297f6df1ee2aa9ccc9e0b6869099d310aa6e5b79609487e7b2da56ba75c45986f92f5a4d177ff3d99927b1e93ba15bf5eff586f8f3292593c4a4febad9d44e4844a7a6bcb093d9e262db6ad0fdf73ba5b05a3ee29ba43b31dda48d7fa5efd5ef715cd8865cf16a835a84cf7151fd71e1d68a426839cb4f4cb666545664ea5e7461bfe47b9d84583285ea2ad5a0283f031cbdba41be4c828bb0f8f807fc57882c3ed9c05dabe7b712f5699482eb55db9f1eee8ad45c8b4e99931c9c7eb473a89a2d4821213a1acfc453b4e784d35b522e93c2d994d083674c71583793ef8477bd4fed7ef17ccc65b9c83f53cf07b08adb118f4a505b6da8a78d4c599a6bd9979d9491e1383ea15557683d614fcbdec1a8c801b94084adfb55790b136bc5f37b752f3a6c636481debc5da8892ac2bd4ac7447964de5e735e838acbb6e24b508578b62d7450c46c7637f806ad4d7112b73f7946d9654a45e943b406776e057c22e669b34a39d92f87928f8689cb8363b6bd7b96ebe5a85dbedb4a90a6d5e6e26a489a5a4d9fa7be3976479f8abab955200c479e75983bf9fee7978fffb18553c7fcf0797b2d31e7add5ac0abd7ecf0e4ca84cf6d228f95aec75872ba3a8b3ca22a2ab83404a046355fd394bf35d66df46a6125de8b9a56d6305a5968c4ccdf6b77a5ef23c5d54c68389e610b30de122c2b2cdcea30b3c780612fb9992721e26273 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 67a216f37d67f5e74f782f1badbce1cc8c80a6130aec305b421899a4faa0a6c3 +public_key = 605471feaa9e92b94016a9a05f585f3d5fa993b9ea6db73c9ae6364edfa07b7cfafb449122e76a3b273d424b94343b3bd7e7b1e13662059fd819c8ba8a8df18b3ff62ca649d8f3f23167be77d9a466c860ad7c320c2f7e874add68faaa442cd9088d5996d64f7759bdeed65cce25b3680df1957e4be404ca9fe56f6ad99e7d38b53a6f81314898036493002cb516878db66ab19e0947897fc0f76abbe0f754b443b13dd5afe71dc1adfc52fb3c82488984dbcc4d995da0ee4bbc08edd51208c87914a3fb5e59c775ad91a552c20afbc573787ffa68f466d12a06d1b07de83f97cb3e2936ef683fd9efb5742c6de946b9708f5cd0f480774da53266ec717ddd4995bf8d2ca543ebeeacd68d29cfd7618cf3cd9a57bbf75abcc6f0da4e913e75d6ab1ef3f8acf61ce9c39d6d56479d4d22586643f4ad250870afe94dca5d91370fcc1cdbb77bb9b4e05e8d1a18ab0c6af59493d2c0535908f7df84587eff16911426ec3e646740893faaf6b37c5fe68fdbc494549776e5f8c0afc2baf6a00a7498f403347a646c9a58328c69f74ae8cff8c8f788af9d67336dadd3404fb550974dc29c9456fc08fe4abbcd9899ab109aefef97f617c5ca780970182861c046a594e6f757d33247b79e12873493634c16fa70983c9b5948e4e69bb1612fdb4129370519327bcf332063992af4370d9871e8af7d145fda70be6ed9b579d1daed37bfd94eac96b547e09ad83f4efea1d3ee84c309ab65d75a3f4d9c57578214ea4035657757ab92aaa3da77df51a1b87bc6b58f9eadde38156d74ae961c43be2e044314c89eaa7de938cda87d9c4b14cb9e79d83e722cc40b048bec5ccd0393d4ac0a65bf93b9a797e05ec3eb5be8845c5c57b9a9caf6243f54438ed94e59f6beb8b256d73b27e5b0f635e80789921e8dffefce08887f978dbd4e77fd3aa78df8954554d398d1675d785b85dd28a1675944d75979690ff955999f148cceabfabc2358c315076c6b4333a835f0a843f543bae00034bb0a6776cd959bcb2630740cf99577f6d0d99b9e8ea7dfce4f13ac5ceb5b9eaaecb28e38fbb517cac0a8d9073c3d0867e8d1dbbd75ec83707cc768bc79a3b637d0acb34f37c9c2b4c0ee03f43c09ed0bf5a6a9279f6bde36808a9a3515b02f3d3f4eaf6f93264c5ac9d10a9c8550c9d76d6471c196675eebd8223672c2bff9ae3ec05ebc4fab557f46b4bb37ecfb605a87b888a1f475516db87b9255e127436eda89f2bb45b8b856f12264fde969c3172fcdd62676a8faac5663a8bd2e91711383ef5cecd8ae83bb55cc3c83b566e5514f233d7aaf96381dc5e62f5f7b09b0b6176f451a7f7767db1c17b7ba335511bc3c3feb884e459add3a594dd356634e9272499b4f9f58dc9aca946ca80a1e999d455d074d7cf9c69e814478a905e6188dbd754a440bc69925155fff0a675e0c322c79e74c27cd814f79ebe3f60feb62c1ef4eb63c7a042996c25bc9342c589c44de99999f9d5d54ff35c760a43974096c60df3bb9f5ee2483722a23fb0277bb251ed297c4ba2c58bb286c49ee2db7aae98c5dabd602fd6ee54ce809ed7fda63e14efc6d37bf8b9076e1be4af9e68a8da76457be64e9d80d59f7d3f9abdf8692d45892f335d02d36153217d5db379b621e416a54ce8071dfda35f639a04b14 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 52b19fea232c9154a3e431e9d69cda40013cf2d485c3cd027ad24e645420420b +public_key = 5b668ae78fec7aed7ee6df6233936d195b62b2afd58cfbcb0a5a73eb0e54d89ff4ebe84b7c7eecee7f56d17f6492a4b41d4a8d6b2ca73a3668f93a77294439b0d8ca9b7f5c5278c21d896ca5e7d6e6fd3d725f6cb175ade36d6e3c4af4d61db4da8e6aa6846a77663a80f5ac0d3647483d7068da942b15cd2f0fa3efdf81909d56d697897c5d9bd5048b188f40c94e580bbb77a7a4f39a6d72f3949787add7b19442f51ed09caea03ace8f191cca42f9551713cd791c9fb847690c06f57bb752a17a9873e97bcc36b793b6ad827acf418543054698d77693f9c38c84354cc81c7a3b6a43acccc32ead70fe29411f17a4216fefc6acdd09a6425b2daffc98681568b8ccea88e54b8dda0efbef4b3c11ff56eb25e9681d91985aedbea7fa901bb4b34f46d7ebd1b86665374bb6cb94eb3cebf593ba5c96f3fc20936ecbc4abfd24af76158b37afc752a9bba8946b34d4e4eedb355a3ccb8753e221bafe937bdbd764de6a7e42da18e7b1c5e314fc71d05de7f50544474c572d7dbd142c676b69afbb4f92f6fe9e88163f2ffba3b1685073c3bbcad8f5b095b5d269f28a459fa7e866e09735e4cab8fa733d4db6a9827f8463978833a4d59c635d24cd9fbee3cab45db9976c6a8baddc8e1693c47d4e789d49ce2ff1ce767651ccf3755a3a49c6be0d3e4a8d6de579f7a44717de00ee314fa3687ac9f090738434e55280b4ff22a66eab77a2933bd7e6857a32f3ea528afa909865e053a32148b59cbac225def468e444916ca375ecf04d7dd89909dca7c854b3646f2af3981797afc5ef61c7a93aabd4da93a9ddabd8f564336d02bf447fd35e8e86a0cbf676cfe6c3d229b256e585d8373d26c3ad6626e8913f55348e8f8463d1da4eebc8035714b7f2eeafd6978ef3e664e0562a7460ef8f90e5dd772a9cded635423f688debeae6956eadd896cfaa71c44aa925fb3b2c6b7d5e47cbaf0da9114d45705df3174c73dd8a4d50f9714bdecff718321677a6962587ba6ca82c44ef02a7382be9715c4e994dc9ee6d0b487207b9b76d793f6f470c8d6a7444b6faab38f48747494d62ff443ae1da9e7e04f0797398f15f7406787e01ee97ad3f48ee5ade5037cf6c754abaaf4d08936e9d43e3b99ac18886cfa9a7f031fea40e58b25939a21698c43449e785a3a98f0445567a9dbc0b4284d49652cbe862bb76fcfc6abf6d831cac9aef64694653e9411a30f87deb5358568c0e4e67a76ea42acacd7c3fc2f983bdeebc0667897c9f590dd7f4b5284fecf7c36b3842c62cf7af2aff2ec9589969ee717f72bea384cb9c8c9409bb26d743fbfe96d3b8b33119a379d5cbf78f3d4176ca83ba4e2b4f6745f346a42861a7b5343ad3ac26ea8896ff4a379c449166e23ee9ea4cb7d1bd789da84ba0ed5c707d373634ab7a6578d66729ef806b6f62cacb4c4dafdd649ccade650c3a5e40c8346d9eb27fceb1a957c778ec9c968c670fc846450cd8881c54946b5ab0c6d33f45afcc6a61fbb99746f3991f5b827d2f972939c5ff72dbdc5be31eb393d108c56556719abbb97855fff1befa1d138c9065c304c8514668e9333fc833bd5b0c2ea10483c6faab378c7be415b75b43796f314542b9d7c87c1ca5fc13a12e8459454d36096c3ba38e979a3d4c852032429bfe1e663e0c256c2e93 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 64440adb05db3308b189bf999f9ee16e8ee3a6ccbe11eebf0d3ae4b172da7d2f +public_key = 98cca518437874fe44e8ef61e8465b382d582cf7706d684f84f6e8e8834f35857d4a8bbc313e34b6ef35dd2bf387b8ec663876c563d293f99571b97ae6af99df1cd12e9662957d89c908e7888fffbdd3dce50689690b30932a8a3ce7bcf6a353bf988dd41da2c347bfe6c3d999e69c455b9f472b9bcb1fe6c94f65e5d9486f6a7f204ef5c16467af4eb9f95e80498bf55aebd6a406a13b3fe389ee4c0de8cf73b6a953cfb2501644831c3700b7c273b7a3180a76427fef33c4ec109f55effce025fc46f658c64fc89352c54c264b97e5b9ec2386cd389d605127740ebfd76eab4877fef8f37468442d5b8328cfcdc65fec9fc2d973bbbfc68fd7a46db51641b793de73589f41e4e3fb67ec37685dff24f863078ad01dd43395bfab3589b0cb435a8eb84e54318ab46e398389b9ee46cbbfa9666330ec4c90a75fa0f036951519880a45bf5e1ddd4f4dc6b6554cd32f880d0b91b77e53c449d9eb3cd926354d437cf318c593f90cf24b548e17245c0c9b83174a67845d8b97ac6a8d8a88eddf78e2f5fc3d9e38b1685dabcafbb24f5076bf98ccaef0e89dafdcb9792c88698dce56ca5a789474992f57db1d5545158f3e87bcae52ccc872c951b1cf4b4a3bd460f488ee7768d57bd7dc79b3b4cc321e5878ac0a5c3146aaeb6ca1242d6b0c7b5aa7edbec6dda903ac9415da345bfe99cab86baa9f34ca5f6e6e98e2f6da800103e437b8498a8374af5f7b613fa0d03e42d1d34181a5afd6aa432a588ae1f644f6bed0fa593f0fdf753f54eae5677484738ff694abcec58782bd6d021357a08f7fb4f97b3fc343a445ba3035aee989685e8bf0bf7ed3fd39afabc334417379bd6661829f5ed369680b95ea54d4eb6546b9c04ca6984fb2a814763674abc9cbcb03e96f9466cbeaec698cb5c9ac08e5e90887f9de5bee556b2805dc749e85eb7a5a06e896ee0d48bbe9d5e016436477a68ebbab1e27f928ac8fa9a8b0a0d999b135a754af9a48ede36865b0f48f572b0697d0fccadc8a77c1b591bd73b63aee3f9d2eb6f0969b0aba3ea807303377afe0f49421b68d081f823fc448fa9a4690bdd0d5964bcf9a9e7fd9fdeded3bf683fa36935b260f3b47fc94c15795dd983bb463ee936ae97793d5d0e8a75c2cc770eb46b6d5759d05d4bac33f0669c7767f9c59eb94d59ff3d763880e8b58473683cee48e309380f7b442e6c83f0eb9bbb1beae806be49857eac1149d578b45414eaaa2f5cf1349df10b7fdf3385c6a9aef990bb946f4c888e585069b584998f789aebe27ead725276ff9ebe30529d50b74cff69a68545ff2499cc61f5845a80cdbc66f9e0ceaf0d3faff0046b78b2f67fb0e87f167f1ec63d83018772097892be85c1be99480247e6f3daac80afd593c630ba8ee585e5e0f84e4cfa8b606d931280a950e567c93c3e9fd23ca1b78ffc0b960de3d9f80455cabbbc71979c59b0f500856fc078e465d748ff2a6ae24e86c7aaffe2845568ceb5063fcb81b88f95b93a80c3feae8ee4a9a9bb7183ceacf347f2fa73784835f3375a29fdd5e4ceef0a119cd0feaf9f77aeeb873aa89ddcb3c76eff0d5652f2b4605efbdb1497486687f17b8ce7a096a5aed92236dae99bb7412f3d6cc0b25940ffddf25214ee4dd4e1aeb851878e2493c05e2bd5a30b5b99d369454 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = c8bb46b3a7344ad170c2052fb042b5a3b62e0590562ee82577b1081f6f114d16 +public_key = 5e55ee4c8c85a29fc91eff7c18cd684baa6376be7586f8bf1f0efc926e5bd08a340c58629cd45f7a49ff11ad4917cf49af956b180bc418b8a95f66b2d0847e7adf47b53d812d78fb1fc9e879faab69ff5602579bf0d895073780007b7d61a4d23a9e3eb217cb16a63ea09bf96577e2a21a32c754953335c29e769df28ef5d84c32b335deca6d67b975bf534d91ef5de3a8b67a19a331daf38a396a765f88f0a5e3606a734f5ba854d1e6b6e70cb9ee6bd0d5de8d9299f1ebc8d48e284a3a05a3df9469ec63e9528dac9f869a8e8866d7ade9e983dfd6e672dc0f4b6ecb4dc567f9034d33703b6fdb7bbeeedbf34588f815843b7b7664627cad52038f98db6060df3d2418df80aaf76419c876aac69977998b24d03968f9656c97be36fe063e97ead738d9bc995145cb2713b5e29ef23e04497d9ee4ec6ad5384aa31cb84406f93365e7d59dd88db8f94a8f068fce1dbe96f3fa0f9f6dcb5e8b3ff9f86a755f29d83cf667407768e41c3de1fcbe764d3334f3a763a17cce34cf816ac79ec4cc4c2d94fb004c352aba419be872817793017d8bb30e43a444e3a2a55c41e36444046a3d1fea4d88e8dd146d1dc335c76e52866597aa69a44f39a2814a4831fdd2672731d93b7fe5f77587b782aa279cca8d7d612639309efe8376fd49ebf31de3d60f98fd72dfa0a4c94adb3784ba17851884f3d7e8a82f379eecba7e6f6a67b568698ac3a2c1bd96b025e00bf9acfef5f2a029fe4998d439dcefa9c3dfb8bed545ee867b0c34daa8ece6e660cebb8853545994454815178c61bd4dcb7d73531aa2a5095f7b8578cd9889f44f8a7d1c72b8fb32103d4fe6df3a439e666bf7aa1afb508663ffc5aa347ecf9279a448436e614f2774c81374aa453024b68d385bd1565a36d98b751297477b6e780ea8e35375af8ef6835943f826ead1ba6a73d5263abc659454f57d8327fd0f5e5d3764f70ad84543d995c0534788a6786927b952698abe693bfbb358e9e393151aac991c97fec8c55cd4d7c00f7df8efa505db531d4734465f321107b651fa4e47d4b389c5825f0fca204f839ada4d7efafccb24a74e34672cfebc4f33c88c46d3a3fa6ce87aa5cff3d125f99e8165dc19b58a807ba8a586415c39f4a6e467ca8bc85a64d0fa1d457e8b9d75beee2668c0f2afa1d0389362dd9900ec66722d613948debf9390b35de555cada57fca36d2742f569a573096a2b54fc5a9fc3fb75f71489f91f097cb94589fa15bf73cb9319d93860eacf1ddebf7d48de03587ce3faaeb646dd79574803b5c4994eb74918768efb518ca46b279f9f68639eb8fa9f73f6ea8b69b004cb5d9e9fcf0dac9abc13e71444a03409714ece514a4ee8280ec19e34fae73b465af335c8d3588ff468346abf776d4b6ef887a7eb8e8b54d05bb55af338e55af7928c83fe7815d10dfda50ec68e29acccebc4a39e2aca10084e2543746be6c81d58ff6f4cefe0e3ec6a69329d783a1b0adc44ef89a2f843c81e96809ca4b82c75c59c7aa5e3e1350aa55e89735d9c34e6a8fd18cd33947f53d9778ca32ae4a9894c5e9de415056552d4e0484970cf2ac86b374644a37976ec4a124cd603ccc01c6c6e9955e4f13885bcfbff8b0a57073e0f3130daca54c038dc1085402160513337af2b6dd900b04dc3bdfcc90bdb +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 2e2b70609f3fe029a14d09d5d659871ac776ce2797a0355f16e2eb68f5613fd1 +public_key = a20c8da5745f754b89aa9d746ef771cf07a6d91d9998936b282757f344a1b00b851eaac27a9a7fbf58dd4436f86864f12856e598b5597c1dcd3a3af6e3f941a9a4719bcfd340bee81fdd8e3247bdd396a834e43f580d522cc3d7ff5be50bba9d8b6aab4746ea7947b7a04b8d934fd2ab1a3d6644be06bc6c1e0735d5e9f821c5b8e9b9a83c343d0c456b181b6fa566b0e846d2428b6cd344d5a95abb623a73299c5b465da7d6d3ed6e08e573489bbe457e744b5d1e39ab74d8a051a5eabe0ea6cff3942b2dfa3318d327437636cec1796683444dc26654a3f396e6e5eacb0e489142be4e9d2be5b7fb309287e5273547999b93ea3aeca2189f5645cc4889943f3ccd95496b71f392f78a82aa2af1d66382c47e54324cd6178d4f511f5d6b0698e5dca3e2d5658dee53bbf57e4b29d8c92587b8c863ff4872eaee963ae6c971c6ac3a3fbc974b9f15e5743fcd69ee2d3c3624a022f9a7420ba9524f5a432b46c5e8bb676d91d70ff4e357ce96c55bf067b3c305ebbf7dabd85a73a52f338008530323e3ae9971d38db3afde8489e75cdc16cbb3ebc95a8c97a768aaa7cdbb0da7943037bf2b4a523e33abf669c262a4ef327be1ec6bc8f05eb0676f68d6d433b529dbb6996f669f5a7fbd761eab6906178be9b9f3d1d6ec0b7683cea681648c44619fe7d6dc86441a8f423a9d1c288b32ebcd04ace5ec25ee256a322ee79e2c689a23a53b8d473f4c643aedc646401761a7b75f7be4e45e837b767dd3bbcff3ff1a74feacc2e449b5dd9b5777e6fff1ffde4b395821474ab428aa2fbfe9c0ae69ba5d39616598dbedb9282c69cf3f9b534bc7aea58e17467b1348b1ab3ad31324bf835c98547eb0f53877dca53570199b23bc4d70a9425b3fb54759d82e794e111efe9b458206fed6db8d7c03ac3202a435015d815487626cede8706c69a6bbd2fcc9f6221e4a16cacfbfbdfaed4f4f82fb87490dc61dcf3bc76e8ed75674a70a6c43d4d68e2a7c9723a054967e4dbbd9f337695bcbd1053a7c5dbc764a0856d2b75dd4a94a9898af8b95a62b487ec7fa9f00ab75325c9ab8248f1db65fd776edfb0b8eececfa4144e0348d988758379d0a73b0f348b00b4b14cee5e74674aabcfba9cfa7ff54d340c6f2b6cdbce05cb601259913c488fee540d8cd58a29adc28b856eb9ddd26a6a26f8bcde7d782993e4ceb6d56b00a84542ea245949a8c7c98d9f882201f64c658a8061a3014249b7f6ffd586a54ad8ae2ae8d5544247d74058bc9bcdf603a44ad5e99bffb69c167dc4076b345064ec00c5ae0d6a2308947593a84ddc6e33bb4d577b7b246dfdb5d04c5d18f81ca0aa10eafa358386d2a5cd48c89a2402c9150a7419c1aeaa17562fe786f00486dc82a9809dab08f8be6d953f981087b685ef69424598eaa990835f5d5ebddebfeb96f55b41fffd9f57aceb895babc38828c8ef7252d4744834303c496b727efc458534f46892627ae559ddfe70eee06b6af2b6b9259144f76abef17cd586c9caf01f849135e9080efe3aa7cdbce6bd8f17de24fb99822d964c60fac4ace6ce90be8eb0c91af559948cd56af77ca687c4f675c89be35aae91584d09ff02734379b56784fc5ce56e3852d89b052367d9a5d375d06ec7863e051cb44929f17a4656a2cb2c58d8d457897a1aa0d +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 4725dd8fb314bfd8ee23731c2341dbe114606d9abe6434c471b5573e7df193bb +public_key = db55c6cec7b63c17f1aad84d2b6551faa4e167c78a0d1d5ed9e5300a24bb2c9bf26535ea38fcfb9d05a0636bf849b8ea2a7c6f276d504d66d2fd27630478f0ca168d70b76e35b9641ce46a45ffa394f496dd3f353c1a84302381e8d74ce4294a4a36da5b17d4797567ae93ed7c54e0593cb7b9ab74d214fc858d5c3aea6ebd193a927c818918f333b3a5e96857e3a7dbe7daca4c884d7cbdb3bacf50cc4e35d0b8c90af3f0dcb3c423e8a6de79ad5a4f40ae7aa036f3f0ad98d7ccb7a1bd8dc704c9532a6d864aa5f8347636b51f3337db7e2de37823c6ae0854e8fedd5ff7f9d42129f4fe5a370537762d0ad22b2e53af96a46987776d245fdcb9434d66aa115f4a3ca74e494c9de919c8e23c3ff77c58ccdecbaf5b8a6a8d3a33ef395abfa7d908d968a9d6a0985aeff5a8465afaf64ba053a3c18d89b2cae3814ce7e2494f88abf7655063c403f635d8afafb9e8d4e2e8967723ebbb07d19ca8e548036727df5f060dd5d605a24b8cfbccd4f94f065c013c8ecb34fd267eeb5d8fbcabeb9e578758f2f3ad3f087bb78e3db1f3990c867a2e679f48fd74fe1efe87b3b6f51cb1707b9287d99fdbf43c8e58940109c376789e16c4a30b6bc34c97d36429fc555b81af58962ae771df477ff52ea9b46c6e64bacd1a8a6d00da4d9517f12daeded2d6fd199c7e331ae1982c514f27aac19fa5217be3ad54beebaa4049065a68d8ce9b1c969fbde599b7ed643e97bc33c2f6f958f72ccf14c7c09d973771fe70f1f7bb9e458a00936d8677717f5ae7655bc7a7ec56119779f7aa391d2356ae3a97d7dad4971cc2525e54e148568c176a659a8deccbfc5c449cce9e4d3cb7431cb3a0a50da8c7b59b1cc770c5bb5b65ed932d6e783c9979d6cbac053fe6a0cc5800fae60c8c8557ed721e7edfce13992396c382e93bad25e4d88dcee046525c443fae063c598fa01e5a73658a30865bed6344a6cc46729bab7810c46f5b58dd30aaf63f3d461769a55a2965ba6ba0b54d54f31eb98c7cf35525dacac8e881e5ac1e66ea4bc4b39fa9d2d20f7e56155f5e7eb7ca67415185319ba769f88345611ca2c21bf33dcaca9ddba42eebf04576bd028a79bfca57c9dbb0a54b933ca7dde45d32b9c5ed00c9922abb5106897cb8a6d65fca846aa486dacf7f5c6e6e99fadadb8ee729b75d86669645b9a223959b3c2cff3ab6536d84f95473c4c055aef9cfcd2e4fee9e73cbb97f698b3a60667bc7690e433208313add8c331e57d0fe481f259ed56a7a40fe717bb64fca6ef97d7d9a4ae3c05fe3910d75d7ac947f944b97017d570fdc9843a8a5ba56414108e01654766fa3d48bf6f97a1cb76d1d5a7ba3ada06a42ed1ab3c175422027e2f128f4767cd7bf14685bbda9f6aae5ad6574e5a7d9d35eeb37c5d9de3b7fe5e8b0ac65922eff3e680c331424e8f965e660467acdcdc794a67cc63da5b23db4cf2cf87486d1d26983764acbdde3de42eb96125956a597d14257441997720abefe09ab3c5e9af2c1d5f52527c90987a816b8830a757ec45be2e3efbcbf29d97e0fb19ae47cc7bc99189370a1aacef374e5dee8ffa7a63be809b515f79f077efdabca57693dec5aefc92eba6d13c7fc31648ee1e5d4ec3e89c8d796e77fa9a772499aec973b63e864ce36a29de99ecec9695d12112c +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 818d3bb8ebfb32bf464775f7139bac0a5bddce80ec5798595992f9403002cd5d +public_key = 7a39e2329482f254f26ae33507ba8fc836673645f380b346ca39a93629df09576c5188c5e833e5e363ff34e4ef1c5dbccd4fc11398d2ccd5b50a7846ffa7bcade9efe757ab7ff3de873ba234ee3b22df546113d593433f4f66482d94b916aa8d1b4b8d6786926e9364cb579f52236219fe99c49f5142b5350039ea3164516fabb941f98f0daaa1e2e6e9ca7ffd64aad408bcd2d5ccb9b787c1fabe96da47d20e46fecdbab03cccb63b659c6357e04074b1f8254499c8452364726c1f94669a3a24ac8b487752175b30cba68860184d5f78b846ced7beba80f885d476dd59dad57cb08f7878c9f6facbc00b54388f24b7b53e347e334ffa046c46ef34124c958cf66023dca621ee400cd5c08b89554a474d7d14d86e5cbd0d15ec03c4580d3442a585f55c833026cce9de4dea70367fee4ddef27779d2a49819a370519c7fc404acb3fa441aa3ec67b3d33799519c883bea134242f35f92393dc134bce167e3ddb33e252b991b0edd7134a8addd9408c8cb2ada36bccf5224e8867b4e38ed9b4db04d3a4783f1614b3ee5c7bc238e441936b0b065e3c25f542197ed007346bc05fe6e09b756b4529bb5480ab3e65f6e7cf04e720167707f35a4415975a73ee4c89e8ad83bbd8905a284de4d23bf400dbf9fb2fed2562cbee5a9c10939f29f8c60a5be53c53da3629efe76bf44e4c3954a945459f735d45572e83b50513dc13867c720567fd78ec539e7d94f5558dc5a86da79b38049b0a46ae25a7e3af3ce640ffdf79bc7e91f1cdec5acff91184ca71afe8b7576ce493e33ffc549c4bad6d9f5039c4c581e407538eac773eff4d94ee17f3c350dcb2d73c184489aa5b440ad57dcde548f307d903d08b9b4cb6db68a5d4fcbd49a5a972705e09e6c59295c62bee7e82ca96d6093578eede4f7fbdb121ac6fa09e8fa9b47f675dc6c7336d8848dedc9fa107d971e456e9af6f5d0ef66b21ddc4eb6f52eeece21dde4bc26eff04d5ff327cddda37be59e9c2a1cd97d6995b0eb743ff66a5493d7cffed80a13841feef333f6feff18e514a591512fc550d6d21a27889cbd421df3a709bbff9f4bdc107de9fa98e0ce3a9c37f53cd75eacb4e5bc1d9bf31f373b7a4ca6723a971078e016943f29697b09f6abfc1c60e8fc4c201a9ab06cf60d2452c83b88423b904df74f425a9b4e1e6de1dd59d96779d72de7c2e984c2bccd6159c82dfa5ae7bc63e5a3d4b21d5ca054a71d753e7e583742f7e5bfecc80f6ef45ff53c16854ae0ab41c68e40232ecc8834a5f4556a85ce9f627fc7c80c759299a42d7ebd6714da29185a46ce4b91b56a4a09e88e0bbb0c5ce97549b5c9765a8874686c63445dea7a85d43ac5ddb979b4ca13b8dbf8db634a163fe3f432731da7a128716ba8d5bc29f0de4ffb15c74fc82fa126069abb8c95bd19df84497d833aeab72358d4193b664fbfd627a139374404ece9994e6f46054d1b4b538e778d6d15d7fbf5571cedece56362164793e58355366495aed8deea35463d4d44b30f451b46d4d6ab96acc3617adce015379564d6a5ff1a6ae4e8d2712a94422a99d90988206776055545173bd282c5e62b479d749afe9e2f356b0eeeaf36f9036665efdd642044b76775cfd9417ddacfdcb371aaef7abb3c2cfdca88891dbf808a90028d4f12c57e4985f7 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = c92aa5fb91c980d9cade9ce99d4c75b2ffa7d6a6ff9bd59def1aa701f2a0992b +public_key = 8e99fa62437ce84445f2f8fb495c9730fab393dc6f3b36bb2a63759a79ae28be62260d76a60852254dac1e04630ba766b5cf56341c6ac967b36e6934dc58cda166f1827b955807636129fe8a7d8ed88a71827af0e8ec948b9c7915566c70a7c15b7fc36ecc7a3cc644eae696022657c545d0a1fe3a8af5dfdfa432d9df5309a9f75e5b9c1d44efb34b8a5a84f1b8df90cbd3f18486b555d9f572bac8f1085f058a87fd48796824844563f61dbeef06978a03f3a8d68657c32d64af93e6638daf5237de004731d21be8992f83e51ca3db8af679da6fb0aaba1e75a2d283add699a798eebe946dfc6833d07ba5b9760a338768615b77ebaedc6a6a6937baeec35575776a4a791fec7751079c6683ba29faf8bbde99175b9629c44bc02e9cd89ae9f1089aa65e946e68d32a9c9dfd29bc4ca3b654f494990cc02bbb8e138db54ba3920ef98904fe71c27a5c0fb679c8e847750ff236e89915a534d97373351da9638da32084d7235ca0d81a636a35b9de6f8dee9a64a139e8d0dc6d4d7dd989168a163730fab8c78f6ea57a7dc16d8e3b792adee906f6c438ccd1a9429aa3d62c4ab38da5890188829beee6a7fe564a43a2e4f3bba48ef207b65e701995c9abf9d79ec86bd9844bff471eb5cecd934f7656f9dc25839d8d9432e395fd8582cda980369f46effd637b9771fa58530aadd7f173c85a8e64da69c8e67a910b5db9941bf13547815e0589327bd2002fb89bd4f00219652dea6ccd59883e39e27e2abe3787738c1f4d839a67e12e95d64989520737e3aa99c79fff2d4ff49256c45455cbda3ea5a10bf8cd56a21f2fb51c13f17aa387e25e631cfa445b2b77ed9dae028f8601a6eada8a8e62afe0500fba5064c4f0cf7cf2dc3353fc98f34bb948cfeec5235fba6caffb6bc6b2cd9a783ab8ef14c4922af8a3896bac07ae8ba98c117b3625fdeed0496a8c649a38a33fb679bb535a7d1a7dd28ca6c8bb8f5178e74f0f5db5d75cfa9119b595b863d0375a3eae73c64ad3d8d6da8e6e3cc18d64588890e3894a9bf4580714d3894e526ab84e27cabc8fa4cad6dbbde9b530180ed1778478b96e38fbd6be713a7e695358538bc4cb5a4fff63ebff178bb16ace5a295ca044d985f34267a3a931998b29a36935d3b13bfd631cd37777689ca0b43b9208afbab88ef886a8672b331224c66d6d86b9be5a8eb861070cdbe36dbf08f970cdec98ece9a19785eb69a6f58ffb6dce0530648d770dc63498e9b5d65acac6ae79d8946b2773d525b39c3755c071bef0c9f468ab3aa8b1a4884818eb888baaa1156bd70d733be887abf962c57ed7c53fc34edca8e549977d9a6f7eb77eb9974bb353896f8f615038f0f5a9f57cd9c28533f8b0fbc5c2b98658d67e4a636575a46e075aeefeafcfa51ad595bda42176ed81d95a9bedca1c037532ba7eebdd89962cf9765c443e4f8bf20767d2fd8615e85d0c08b0fb5d76e2a7e43259f83c1348706ea4d9d397816f4055e6d4322da510d4a686f9b490c74f2da782ac5fe57b0d991cfde9e093a50acdc00b8cee6ac6e1dfc4373c74da2f488e773fbe1289666206cba3bd96a479b2140c6aa40ebc449be3b6839447c4675baebe46eb6ecfcb4ddf2569b2d79abe93fceaff0f0ff88688c870d19759a41d3d361a0cec73cc908f52bad8 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 7e8086a01dc5b3bb9eda25bcc45d27f99874841b97237968495800e007696ac5 +public_key = 622de724795297af499158c8e1c5de4daddd65c8ae665d3932dca40e058e829fcec2a997d01fc8a22f7568cefa1c2ebb31e3e98c85c4878c6ea1967668e3952d04b4123cbb9cd8c77f3a7397b9e33d99654e6c56e7465d9b98bdbe6f4c12e36c62c6db6b3fc9086a8eeb9b891a7d6f4573a33c393f74bb51d66d9232fe707e25ff23f36f6c6830ef38f53c8cb81ec5c27aebd2fbda53033ef827fdb88aa4b4d72a509e29cb1bfc8178dde9c60598e693bce999aabc56f11244e5246fd8e7869f62aa7b50b5e725ce3da2db59d5ba5302c772f3ce8210bd882ef32f744fec1704de019cad39c3b12c57c3519ca0b38366ac4353b133c3936fbe6ee47ecf76d286f6ca8ec7d90418aba0d9833f2fb46b86efa297ffb80972b65e809d0f775ced7c796636a2d6e9fc748b91df8e1f8dfffb0653e35dc8c3759178c39e435ee327b8ec7e7887b229e5a5dcd32c37a1148fc4d9186222bec66afcae8184559a2df01c8baaacec62bab984e18d433b9465e65afd998df8e9e9d90dbfc41753742cd77f0998c67254ee83d45f2d06c22899c2136362271b731f6ba3965b32e35e7463f6f7aedadae5644bb97dff7fc599acdef0ab2eee2e549a277ae8d2b9fc3a6dff6fa5e9ce76c0bcc5e4e8084c722fa321479338f59ece08a0ace3df0ad68f219e855d5980229d83398a6c0a63c70d3743679aec030fa69dd5f6ddb77e30b779c36ac25767d4ead94ddf1661a39bf624e733f3efae18467ce2d3d83b85d1751e390314ab06abb4d0fb58bff99dc3949e92994703e85fb6b863ae2cf9bdd6656cd75d9ba453ab1e5a32745f2ece82998ea9f4d5cc2dcd53ab79b89e1d7e6054c69dc93f5aa9c8ca6cc1a7583f2e2739b20f378d93990cc8f80c2ea5d5ba8415c48ec27f880456f3a973e578ce663aaff978258cee0b6c51bbcfe307dce07cbafb7c58111cc7f209f3ab0f3d5beded2e3ea57e0469ad4f8b6fb88a97d957af2fbeb768c3cb7c9f02f583fa35e3db7c580d29869853e4e8b346a075d1d8a7fe31ab8ef5b983eaae5e8ffc624e0d41fe5f3570a6de09e57d617ad6297bb3f9d938f5655629bd6c4f6c4fa508e46f8cc05dfab7399f37ea75aef57ee7bf1b67aa978ba72f49137de28e743f28f95f533b708f3c59231bf3faba96ffb5c239c3fb30a65b36fc5a0a76b76f04a60c9c7d5eb78ebe44b736eb56a19eff59d9b58139e6257ff8f35f317534fcd1f432f90bd64a8b52d824349ecd75619eb2f8dfee2a899362157bf9f631287b90d6d8dfb56be469273f7999f436dd31b62982c4aae465fff7508e5f56f3b6f8c949bf1e388e0ee61f7d77f603ae5936f3e4259854afb90159344b14eaa29c8afd5d74bef8e95a2dfe0c57a762feb1aa65b1dcb66a18bbbbe13bfb2a4fa37d13c77c77b2bde758eb29d1f74c7d57d373a47737d7ef3998e35dcef7d983359b426fc7146ef6e90a807614d34e5fadd363d456b66f0da6445325dafbb67d67d9b359137c253df50c279a1c537ab06952e58f3f0947f199cf53d5c7ea7f7da1c49bedcac3a85feaac36beee671bf840a57f2a7c77b7bddcc81af82f1aec827dd80d8dfd619a6b6d68c7583d6c93a5b21bb8e85b1a46c7abd3c35880a7b265a3e05b2db868482fcdba0367177bbbcad04f3a50adeb85ded90bd59dab +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = bb321ef14d44d8698df879fd52450567657f52a2df8d111185dcd7d4f30a72d4 +public_key = 657b941f466659fcc972dee74aa445965e848e8ae16b85ee5f5df2c9ffa4b325fa1b26a3096539cabdbd6a435ea1e33413ac4d605def5de8570ddeecd4bb9fac473328d555028df744efc8d1b97cedc8ad3d55b67d284158ea8bf1a4a8a17a9de6d5669e8b95723ddb064ddcb30bcec4a58b0607d931cfb32d28992c7d42788e854466e29cbab53a7c72ff557193d3a222dd6178edd2095bc04e993b8616f45416c3b998b01716af3b43a535f7a6beb7e270b34ec808ca00e9453ae660b83f963ba634f14378b179ea90e3708125cde31bae3e1d451a5643f526cb790a8d6e19ea725681fb539e9b05bda8bd4c48b3eb39da6e39e6be624663b6284de9f958c60e49cf4d90e6a486b695e1af9da0f0a3f97cfd90db3c81d354d0a40cbe11d74272ef3bbb7a49ea875ea7f7cc265e6a8a9e98362acc52c8a8ca14bee12bbcea9a6e3509b6887a3d1d4c3b2b53e4c4c44f44c96f49bf9a8e7b85349d37adfe31f279fb7e7a49292f37c8f37267c835c24883d2ae89d4dccb7c6bb1ff7fffc323d1a6d3612a448085eda210449b7e15a4fd84a9a538b2d5844dc27dc9110ce382bc513e9ce8c469a01a548d1ce4853128a03a9bed369b353d4dd3b1af9d210ab6af23acd11dae377e493c774efad8b3756e807474d1d0e5862b3f65e7969f247c954955b4b0ce3fc53de43d2df63fbec6dabbbf5a8857a7f3bee7658c8399503d2ea9a38ba55423f345ffe4ce2d36c2c3dd087dcc5dd87edabf46e7f955eb9f6965748cb9e58351a938f7e4ac249ca5ca7dcfde48c0aeed51ba873d36a581e0fc50d9583109a79549fc5b32ba432454d46bcda66f3c64ae1498f44beb36e8d8254fb5aaa7bbd0ffc4cda8c0c5dfc62c09e45a75709ceb5b82ba4ef67e6c4986a36bd7b4ad5c3a505869fd34aec2d7caba59ff4bd3dd232382b275ed5933f42bc5ddf97d92ace5566bc5a190bf925cab467b74edf7b5b9124f318e2fd456245f2f0887ff13516d33f16637393c469ce1f776cf34f6c6577844cb3d4e0a92aba85ffb59979a7c33ea05efa2bac9872e60bf8a85553a3d4eecd5db2df106f632c91b8d1effa9b2734185283941ebcdfd788107c3d7738786d7cda0e7d4957d0be8488c5d6ddeeb83e3504fff923034a0637d563e18a18cbf9f48c36a65ce32ab6f6dcfc5a615e4416df76746673e510e86a117a27d6dd7a5bd48682e3c33739e27058adb23c0de35ce6158c99e59b88b147e2bcd5f09f7c0a414c3240abaf66cf4cfdb6857eca66bfc58e52472861bab1e03ce71efe1558db443a9bf799379af9ac979edd72f75bc7923816a189da5974ed948b8a709a8191cc9bf6dac2a383a7e27cc62543a2a0ca9ea6897d284ae79b595d0893514f75db35c9254b7ac4736d786ceb86a98a5dd733d3ecfb948de48f698c5a11782184760426ed6852ff68169c86e5dbe92d776833860267d4575177aac0b9d3e3e96a71d985e96de2f799f481be331ba346ebdc379dbe8342f3836d88fd5feedbf2985825c78330658baae89233bc76b27f127bc7a98e6c645df8da8bd857f77e57befc27669f97d3fa7eb653698af95097a32ac235a11887388265ecb3b46a75c865c2393964ddd108e52cbcba77b4d655c9f1ea4b448fbe32c4996fc298d26cae25d276bcf6e66ba65e3e97791 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 210a423dadd899b810f011794b79aa7f860823ac1962370e791287d3a1afa384 +public_key = eb9b77f9ce6dcf7f611a0fa8ccc8ee8cd4c5a20bee8fd3dce226bb45779f41073ff3fcd362cae5220fcf45d3a95874a552ce4c8b7fe437ef48ffbbc4ca3b4033e5defa49fdbad9c339745803f845736c30c03d95472f9ef52788ac2f3759cd349106fa13fb4ca53d7dc6b4c7fda5d3a80ead2177e387dbfcbd7f8ecff4641f4ef779d7d34cf7f0554a948b1fe751d462899dca7367611d4b9f269c5ccb2381f1f6a01b0634d9c5c954fbb934f4e44a2fccfb2d35892c4cc2a845740d946aba4ffe77868d34c7a915d7be43748a366c4adda927e66611ad8cd025fa2c1bada93ad5694b6e3d36e0acd4579d5634fd2675f32de291efba1865f52b57a438c5dfcb854ea7b6a89c1d9ea9857c23aa383344f8b94ca5a524977e8fd77b56978328c18a8d382ebc967dd37e6136360a958d600dc3b9996de3b97b6468b9f98c3c50f37a9e73ac8e8364288347dacde8d437b3b065c121df6e9043d78b5838dfc7ce69ff44b32c5b4bcd4def068f58fa733e99a418176575fcfba0f78d4d5dfd67176db67e7023b57f8d26c637beef49c9f6d21bf77d36e3941c3e787bea9a4ce135993bcf2fa1de16434a69d2c10ed2993b65777399828ba5243da2f366f0362ea3c59b6007c3aa42de98a833fd28cd5f8f0f80c9076d54d5aebdfbc95c8cd6bdef450799f64109de2b774a2d98764d4fbcf00979953fb706da59bd84cde499f428cd586929c9995dc7d769ad9b3fec85b4d62b6fb2a1847454554224c4cc47898574fa66d147c4aedc59007fff49285db64e70508c89e6787a8ce6515cec673d4545970ca8ec486802933e31a8d0fbe46d5dce4c8363656dbcd600d895fe383fcbc3614fe334cbcda94c185b73db30cb5a56a9dd4cb37eb13859862f164f9816f5d78ac35feef0605cbd69e6410fbd51698e94418e6eebf8cc9bde53cda5bc2efbb00a7563a55856721f31ce1f873a9a56997ce74ae43b5c27fa1445bb40cb3dee09d61035b33214a61e26852ef3bcb3fb319e1b4d6bd832d6b9bb54c6d21d28d881d59d2458564acba149bdac36cb501cd8f42929d64fef4344ff6a88ad69610d533b2d943445c72c9f60b4c8a46a1c921c68f600d978c547db401bf412f73542ae3ba0349e66fa4025735cab74d2aad5ee09bde9b59ee5c49c66604e5244fa91c208c6b2ffbb02cce8c47a5aee366edbe3bae1f4ea8c4d5ddebaf2a20bf64a6b70dc6ae6c12e7e4dfb933b1f7039b788e7cd35df8993ff8692360dba466a81d35adada37eda436ff341f3a1c8ea1373ef11845a167449d9347dbd95a89725a56a855fb510a7fd274faf41a4a7856abd9688dd7c85433a868103679a8fbfbdfbadcb52cc141267e92efc1e67e62c6b4897dadd4a3d375c1c8bb87c5ae2cd8dc2b1d7e109d4e5b08d75ac96c925faeb083f2fa28ea83a9cba12f4c9fbadf06cb67e2787eba93fd3f53ac60b7b015df894546e759689c3ec65f8b885eda18e444afafd2a735b1c57c201aa4d273b1312f67e5a63abefbcae9eeb2d388343aefbe2436382eb9bd62146de0e446b7efbaf94dd57519edb145a646c733bf45f989938fde9dd3218a607739c60da6758bf448bf18a2273db08ad4d63548fe3bf86d176f5c45e12ebeef4308b229c948d425016d674119c0aadefeb21338ba6cedbf7df723 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = bc856afe24213e3d14c3d6f9b89223bbcfb2c890722d770fa3492c1e46d1c302 +public_key = 9ceeec903ae5a04ecb5395be18abeb7e98cc23658dccc7bf9a843a78bfa6c0af7bca4eb04f49e950d998c607a59b4933092ef00b38b24316db55e381c088e00da8497519ef3a0acb070ffbe30bec7d756d36f54200a367c109b13c04e0378ef31d6bdce9e5908776768777f09f57f6c64f77d0f8b0e05bb4ce5dbb5547a0115ec89abc4a352745316c8d85b3e87d68382ffd5dca6f94446972f4c76c7b9b91a4babe06fc634e76ae4b778f939c30902fb8c816bc3fd6b48e168f5dfbc19fd8cb7e4686bf33f5cb16d638d7f3365bf7c8f3e240ef6cf996ff247cc31c844ae77754207bd3b497bb3283cc7e38664b2377207d9e1e3d8cfa05d96f25acbd04cbdafe612adcf713eef9cace95bd0f4cb057b0766aae7b533e61fd4d947947fa2d470bc37e5eb4ac50aec48066877b4456d4fafa5fed89de38a7fc7573fae5480bea823737e3275ea85d873378cb97d6f7be135da9472eabf5eabf0114952665cd2b6dd5af338b37de9f6e4c8f78efcfb7ff4d3cb7a90a3e5a026b5aae5da9cd4baf3318d59b9e323b2cf26ffc76b3565cd9386592476b76057e3477c8b7cbb201ca91547af354b59328e4e1a724cbd8b3689efa335d8799960bde1e2f44edb361be5bf489e84086f4a9960fe0faa4d4082c4e6616ed3ef668fc155bce04916d9fb8fa46b77a4a9fa82c8c0ca5a5a5245884df5fdfdf30e75bf23a4e69464bc33fe5efb8ffaa9214b1ed546dd0eddad554aec80882ec27dc6ec447952d4170d738ef9341d6034920a7aec3b68fad0d527b38e2d88969c72d7f9bbef2464a4d774fdeae6f71d2836e584e55310a756ce4f49fa7474c4deca978a0653935b784da16d5ddf1eb678c1bc3eb55ecf6fa35bec9d3cd89cde0aa58a43bce9cf591286792fb3b5e658b5a32196ea24a4253bd93d2ab40884c39a4abcbd1abe08c9ee72e18a84a288aac2982d113454335423158e68bb6b9d97494179bba1ec8760be59d0635eb94b4bab08fa6481c4a8f33b0fd3e64635452e6497f9933d8688352cbf44537d6e8000536f9d4ea6446eee27ff370aff7219b8b84a3984c649ea93fe1207c974f6c75760f7aeef57e496a58ce37e9096a58e2f3ee82844f4d674a4cd9cfcada79b0bdc63e634d2514ba4d96d4ccd4fb2eeb64691aaf247f7c93c4abe24f3c27b3b7acfdb649334760056e591c32ff9efa7547f3f7c93ef65f4c8f0f67db177e6e55620715688dddac71bfa90e133caec86945bc74d7faecb88479a37b45eae4993bc7d48e63e6bf66b9715591148c9a20a35413cf404bc6fc512b3800b9ae104453d95acfff1ddd3ae85b96e8d9263f796a13d39cbfe54f84afa4b4d2acb673b8799441bc505e836c3b558e20ffd57fa79154ee630e7fafd96aa4feacded59ffab33a559719b81d274ef1af773f4d5762ad36531f78df5ab3617cbd89d7543cfc7c6ad373b3ddb781dc78dd4bfafa34b6565979231681fffb8c62843dce1e686ea59407ef3cdf96aed95554e58df7c5b6976f65e5bd4db0e3b3ec567fe9f89b73c097ee1ff552ca04c33daa4a363794cc8cde05249b54efd460eaa8ae2e7787c8c9423a7eb81d58b5b8d81c8f454dd9ef77f8608e6dca003ea7c434f4543ae746f0f10feb3f0fa52eaad4f2d4c36e59ca0a5389566fad53898992a17bbe0a0f +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 5fc00f89563e44b24cd67d0ce684effe5731619fd08e7d72e2406eb016afb66b +public_key = 8683354b3c3f035586b50b88c424df347ad5ada7ce4beaaa5f096614cc767af89ffccb95125bd0e8379efaf76ca48eae4886abee9f40bda4710dac62a82de705abd7921c770eaeca2e2d9338536c3a9b52393e3bce565fb96ebf8ad3a78f13db3f646b34347f1e2e5e8fce789e7dfd92a971fa4cfe893ad9cfa68968f96f206a7535766ed75334970bd61d8d36b0aa81c2d8d2fb7333cc6744ec93de4be56ef1e487447e409486c477cc4eea0d92d39e9f585ba2203fbc973acaf04fb4969746ab36e8631b6536fcf98b38f8ab04ef24776bf288ca6a4a8094d63c7ceac44854ba9e4837e44b3a7b269d6ccbb6d28efe9ffa937ed5e94a3541e3fc9c696ed2f9a47faa077fecd688d607996e5b60c27e5e617994b94fb46574b87086a061488bb2445b357a38934b612c26e68e76f112756bfd764a4fcc5f7b1634f7ff8094464d610d46ee03b4541ce049bb3d18f783fcafac5bd36ecde662daed8e2a89cb755bd90dc7e75277941e5973d11dae08a4b4ca2faa99f47f657a49c3c8efcdb54c905a30114d5ed544bdda9942bc857b6d979f796c859e16f7a63ef543477ed89ec2adc95fdfac9d22de9750b8b5ddb95f02e7f1aa3d4099ba6b2ddda40c2aff9ece649b33e8acc93a5fbc52e3f4900bb44d20b7f5024fae5f3b77c18fdc781d4b74c78eb92ebd33ef60051c499b5ccdd9e7e6531e63557b5e4526acaf09a2beead49a4e88a5065b4a975b225e71eb28802468ecffa37d6289813773b29f2cdef5587f9ca8d49f548d2a0c3a5d7ec1693b5ec8c64ce0267fe06f5485dcc4b5553c5736a0d16f3cff2d596f984c014aac048dba9b68f57a993b1be3bd2cb9ac26aefb37bfc085443075fd93510a46cde5441ee3cc88ecfcd636a5ef7731109ecb21abb149ebf5424d772668fb54c5d306cab4b5356493dff0c138c64b4ab29378de02cfaeb369bd621d64fd8955b8adf22bd5997dd76bfbf5da2cdd39c2fe4f0469b623c53195a3b2ff068182d951dbbd5ffce9a6c8fab42886987b7999044ce2870965bd463980aa6b36ee3b5bf9c25b64920d7788a39ea98ebc30d3785784cf7e53ca9ae819d04f23706e3cc0b9bcdbd68ed8421df99ca3fdb2933cd91566aaa367372be6069a706be664e97ed7b34becf05360248c808faf50fcacaf9096715478463a3fa1c73fcc9a185eeb08583aa3d9259c567743995b0de4217be0878e5b851655d1fe4fcc4368282dacdfc36f368d6894177ea2144f6e28837cc887e66d874ddcaaf60a3580fcc7a6fe73328db1f23dfa0828f34547dcc5c46cd28a507ad846d1d9415af679d5cffee66dc6c2bf499d5b74aa2758da19de637e3343b3a8b14c68e415a3f196c2573c5e829ae6ceb5e4441d4f9cd899ad03c3b727774b48ae61db98feda4c1f0f9b57f89d1735381166b7056df15a09f220ca61a8a38e575abf2cfaa54d6e3031a9ba60275d23178ba553a3ee7e79aac44fb46d7e94cec57c7bad6854533844bf3d6a9b95a966f99e612239cf6cd4edf1a859afea9c0cec6d2679cd7d7ec2cf35edc9759666c871854ae012294022fabdec2f69b53d397f337b404e6e528748903ccb8b24c8fa38e97244c0ac4ad345e699b247c863e9a58d8caee564224faa36c70ecd281b67eb98908468420b38f3c24da9290ea98b24 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = ea22a76065db4b565ee1807fbd813b43bde72b0e08407fb867c6a18995025e50 +public_key = b147b4695be2c57ee3104ef6f807e773e4643c2e47dfdfa7270ab360f6303ecd5b03b3e4bb776c4893e8696d69c3a4c91cd6f435f8f9a6a8621ef5cf8393e1a4278d7f453ea5484d32f94c2ea6f8f563fff93771dbfed6c8ac9cc80ad07e3d6b1da78464ad8226657680e5acaba6819543cd96194aa5973d4f7b8683be3a07e7a5194c91ec95a2d77ea26287e0a4c78aa107b3707942d0c78f3fbfb3a58b7833fcb0fd7785e349a2f10f7aff079b62a68e404f5122f7bc0a0b4c053a669609db67088f13abfa39f542d6439091e4c1a18f4734d8b6e5e6483f48ca738c39a5ccf017cd746cfa9c1899f97f5377d614acff2833cfefdabfddaa6d8df4221b73d546e0575c6d92af62a5e834abb63cf85fd7437b31b1e989ecd7416b2c4e7b08d8b5f8973006877f2d4a42774c94aeb394e885d07f7b80df86dfffb4c8d568457df19d3eb1b225aa08bcfee1da3922e935ea8eb3b6efc3d044a784bc965a68dd315fac491ddef6183b95bda870e65207ba802acdbd35bed443e57068aff080fff24da533d307c3e3077e6e1cbad064b0399abc6f445b651864f18b42e1b5e8ffae87bedd8072e475895f7c3b9a5eb244ae9faedf93d9fb69faa7250bcf38e68e9c4afb2b733b1813ff37673907097a4cd65a9b396db4859312d59114ed7b39746c531f6ea697a69929b1b625b5ae1b809ce9a812de3ccb7d971ae8bd6beff3206691af6897f136cb451699e1ae9739e5fd60cc89dfd654a42da79b2c7cd66ee6853f39d6847b8beceefa29cdc0a979f0e3a8f225a16fcb7996fc8ca3e79fab55b93ecfa3961e7427ae7af4e4d41528e4ced8de856b777eb35086fead142850798d3c2d76ac1d25c3f96d9aeeec4adbcb641375e6a2077cff5ce3748c5d1fe638688f688d944e0027a2f8c9af77b79352ea5523767cbde4577877af209de7e4ebf44e833e99dabd0fd7d824bc3c50a3827514d446a5c74406873cadb5c0cf570b4d6570c4f4727379e6cec39fce94a29a8aa249844bfafa079cec0f25a400d6badb8d731b0db87bb5a19325b4e79b78af0bbb2d5fc3db38ae552ca972c39273aee45448e15aa5fbf2a85e7806e51e1cae8516b056f6e4b80e5017f7ed54268aba9e9b7ecad9d196768d99651e6da334fc443c8ccd9064a420263a6863ef0e86cdc48776a3d44b4726916273a0d41dfde095526257bc5f6f46ddded815de907895f07a63f41a184ab7f4dd87148a336a33262a4bb18f6b417abcdf957f68737adee6821a5ee5348ac58814661765bb331f54a874c4a3c6745cf984529cfb9726ac3554e01523321aee69d0ea761425c0651372098eb330185b48ccf71b275dc024419d8761eb23801ec7d4f73f6f162656713acc2915a1a6f877a583c8372cc391ebcf2dcff873c5bd22c58c8074dcce759b2c09b368ab4ab504c613493479b7725a18811847f1409f37734577af09c4be0b3fe07ab78c8efb0693d60be76920cc5fc56993e56c7b46a543ad675b2d13357d0d89124fde0d39f268768b847dc66ce757af29ebb703cb584fe13acb8f036e8eac98693224abccfad4e7c3e57c03b27a3cc4f0b880dc4877ac45d77c2cfd5584b97136ed2c4bb767c759088f7ad747df4074721445e155a3a1624cb4aca373de6947f148ca7e2b3c93605e706eddd992 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = e9602b34fe73ad57f4bf6ead99743d645641553a5b9b9bf2e7016629e3e9bd76 +public_key = c0d8e22865d31d7bb0ca735042bb43b8ec6ee23d61046acab9b873b145e9c22678adefb5a09faa4f8f69845bede5e3426d66c0451a8d78dcd7e729d33a536c2bf4c7397c64c6478be504fb074e3b8b54e11ad9742b9bd2081e446d63cdd64490c19e7557b884ec4f9b05dbc0df7acec13fadbba55d3f1d4f7bf391ccaf8b904ad7712a8da4aea92f5682cd75da628573854d32a307704fe77af738696e974181a85c5daec14f7546f97e37021e588358dbe2cc686625a37c7ff92367b5e1546f4189592639cda4dcf0974c6a88cd377d15b8ec5c84b80f33b658d0b79c62e536553b53f6363fc6bc2b726a7dcc58cbf0f1cdbd35c3e7d9b66b327bbeb5175d971e985ad799ecbe9ad0587aeb856c288464d993f56649827de9af0fc79afa1aa5818cd6d3447a25ab3eb8248167ba60a456fed48cd07107b1eecb630ac4707b837f25df6da46bcda77c4b6ed5b4118b79294744788b9a9d2eb168565d9398b41edb91517493f5fb48ae5cc04fb95bb13a8fcdb861536f408bef5c2995e89ba8ab99643624c7d557a984011474586c357f1c7552fdbb069336fe85bb913d40f48c4a122ee3517d55f37e6d37ea6a6ffa48f40584914c4738397430d65757ff98aad345681d77da8a41747f8364a493bdca944b1879b124e66cc3b8293937231f57c2e78f8f1c7794eccbf0368ce359f1a2ebb01f3fa92255a676e77c39564b575aa5d1f9c7d1388226d636f50efd5636b2e207e3c59ca583b8e1bdfa56449cd13cd8f0f21a36c345eaec4cfc701ef43ff47bf27e81ecac752108c43a97729c6b947237dfcef5a7c08665f7aa9faa55b152163e8446c1bef5d8229fb5eceab269fce3e7879da3768bbeecda104c5e9496c63ea5d7881a4c8e758211076653f369e58b59bd7cae5b9a64773cfa853f9e43f492fecabbb575e4cbf7d970f361e6d3c65a5d65f6cc668c64bae7d587fa8bbad139e36d5c9b6f757a51e653d2754aa0e35307845a55c8d086d5a0e873d2d306b9ee1550419b495e4f4f702ad9832d897fc47333d5a1e994c8585ad0d7a8d4e4989a1d0dfecfaadac2ac52bf1d90bb149778235ff619e075a5360ded95cc7d5c81e3be126984f51aa47109e0f99cf1d3989fd936502a9afb38c4a2320a618df751c7099d1063495a6a5936c744a094cc20feb04ba8b56b0464e95fbbe16e76034cbf5239cd2c687fadcfcd383f9adbec3a77b4842aec40bfadfe8af72fa68d5345668408cc7b6083d9749e921e765e4d86d25fd5c78e246da268a4dc2e446f2cc3273861d218edaadcfcc775631927b709ecefa8993b1f9f61969dc08a4d342219682af351496bfe0aac74786c897fbbe96abb609f2e6998cfc7b283bfefca4b1f3beb6e98991bc3f4254feab7e6ee4d13c44dc93295a75f6145bf2d4b8f1a13e09be7d38ef4b170ce5f44ca6ea45eeb695ddeb20c46c11cbb993ded705a6cf4f4b792aaae80d97a6ab830576aa65124f793fa7da0b8bedd877217d54897375ec285849a89f68babace95e76842c601ef8c741bfec2c63f1437af1cb968ecb64e0e91e912dbd96307e33231fe5165359089e4b86e9411d27cf164b580528768ad37b584dddc30e557cbda142d9416ed7afef52d284175dec18f24979ef5ba8eddf7caa3880aec7b42a147e75f0dd62b3d0 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = f72b9080a6c051bbdb9b0abc1949034be0f89a9f73fe277ec4d4740c78d04a83 +public_key = 80b3b92647a1dbec6bb883a4b226de4dcc84c89c6adbd955cc055933e3f38f3f5fa826acef899a555873a5b9c18a1e78453dfc65f4deacad7d9fa94d421bafe8f3a5e3346b6b93cef8b75628e4418e2885661bed3d03fe1be5dcc50757c62f7928c3fe0c567872e66bcb68e28b15c86977e0a7b33bfda469128996f6979f896b93d239e0383c90d0d877a56b4b7c77c53ca9e28719c2995497dd36877276a25fa8b74a4947e233f15b3e4a075585da457dabfe7c428ee363a5defa0e3a8ad95f9e07635546485a3568ab6dfd6093f1061a6999057e705c46b679e183874fa9ea38bc49ff718c99ddbba59a1865a145f07b1dd58b4d8b6d6e772ce777456c92b28a51cf8f3f7524a26639ac64aa49d79d3cc3bfb5b60b59643bc95033d362caba6abb5ba4f696443eb1f72d99cf385be3f5b43c2b84030d6bb3386f5a16354e55e18f0b759c3363ac4d69ec2c4c15cac4e08af4fbbdc682548338de57e6caf13c88d1dc6ada7045a442b4939e7ee469746e9da665e2f9e0b51c56b78ad35a0db255adf16c0bb53e14e73b3bc454a7a17d87f83fef78e7e3d4974de480c8c1af6b3e1ddaf13b174f968c8a45a3ba2044bddb1492bfffaf610b4ed258eae18f3df63f82ba7750fbc7a764db58e3789ccaea778083c27feed1e3c75be5486249f9818a18d47f97447773c7dec3ba7c59aecb5778a09cb7f128fb2e1ad1c28fa1bd13ab7e7faf97f96f5656d7a9a970b35a6ae0ff75c36cf2c2444ad6e997d92ec065ea490819d0e766c0079b7acae7bc7cb3b3140e656fd39592edbfec2c33f06addd633bba463781f1c519eadf342cce2bd16c1ac93d5ea9769e499d73297784ee45f9abf48670749c72838607defc85ceffb298bcc447537785226bb5de81fb7bedd4a0ce392279e9106fd6ecf6bcddb0cb5ec3b5505b5a16abd5481bf587ce4934d3bf32a44a66849f0a81a6038c59497c9b47faa62f50fe30b15c3616e6e6573bcc6af3a88887b51dea7dbaa429ccdda9f87b63829b1b74e922435d16c979db67eba0f2ae39267bb362c68f47689715cad6636402049c2b5d6e6c42ecba6e43c1c1a48a1ee41cf3a71c0099bd183a5c0e59bcaaaffb637c1b534cb6687493eac495acc7c5fcc4898b5fe44094fb1c7d14a15c88f1ea9e7244ee54cfd5b16708c233ed378592695d1631af96d63c094f563f0e559c59453acfd5a948ffaed5ac0c3cc6a0be7890f8c3191677c2107dd8153ced4efbd96a4bfddef7f86c8d9d8bbd4dfaa8380ed30f52db846df3c78cc82a2d7c440897c91c3b726b4622445899df7fbfa263b93c3cceaa8500b5bdc250d46388bf5bd98b5901aa67028da2a9bf7df4f4f4e8d4a68dca2e044430e8deb67e9b4af33c60fc54bb3a94a8b96d4fa5882a50ea5647b8dfccfd878e4b40a4e36bd4b5bc24f88464cfe88fdcdf6d9497fdb5f43ff6d2f9ca2e048a757a59b441cfc575ff32f7e4d11fba959ab9ac63ef6bf689864ac98ccdea633baa3ecf75c09c4c6878994cdcb3e882798eb0faeaf39915dcbcec0efba14f6f0f53b3d83ab58bbf99509033db9abdacbbcf9fb4674c95cb94a8fac399cf771a8ab6eaece9b0771e3d5c2e7655b4bb99ebbb57adbc7a540f228114639b811c5c1d3b614daf84266bc4c312fa43c4109dafde79000ab39 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = f1e5542190db8ecf4b8d617a04fd3783ad0df78bf8dab749afb57db8321d151b +public_key = 04bfda0347d40adab8bd449e0beaa93b07512485ba34ff91af1a44540bd04af4a3dd3ad9f6454d7304d0944674a68d55116eba5f98f17aa57c1074ddc1a97397fe38c1b3fcf41bdbd9286f88d4d8809d84aa1efd248c63effcd72d77ab0e73671aaf3a913b7b8c6faaa5bb40be97cbbc2cf9eebf83c776aebabd32e3cf691aec9ce8a6e7b85bd9712b40e2c7e3e566c715edbaa75957d6ba5062ba76471357252b72ac66ba98fed921daf314af32a6ba908dfae3645b5617938381fbcd749ae1f61cbcb615c459dd56f0d55a449c4f544c66744ffef116d10dfe39d1c586aed5a5dd3edfff7a60f3138c34b4f44398b692c567ade5beb56ceedcfcbd93183e1fddc2aff5bdab67b51e39a58bdb8388d67cc1fcdd7313b7ec8a56cf3c9b742e4c4aeae4592794749b6834e9b81a2ba47df9f9e9ac7856b5654904e039fd784cadcdfc195952e3e5532fbceacade3c233ff8ee9a669ff4382e7a438fef9c16dac2cbb9c4e6bfa9fc3014d8add7b4bdf88f914245e1f9874a08ed6a82b6369fe349e08333c7f56b7b7b808a0b4e888a9579aafdf4873944cc43eb958b1508c66e67e268e79a69178793e7a4d53d507f1f59d01c86f999c1687fcfb7b4b3311e4ff55a51ee64d7bce95a6d27875b9e77352dc24f8734b40f3e9db777819ca2163c431de46f22f38398d46ee45fb815b6b07e2af42c0ea4230b59ea8c7b0c3c3dbe2b7c77b4c86076ddaa04c452e391c81d722c67bc073fc0720cef5296a2e70932d4d38efbb96bd636bb4136da7cff7cf5f7ece47d8e6884cf0b8584adc3cd3b5c5ee20d3a1383e70457fa203c8f9b49534309bf2c6dcc3e2448e02b5a46d889ffd78fbf8ffa70aafd5b5c8a7e8d5bcff44052c553cba9dad026d79bd87db7573eb1d431d1e549edc8ab57adbf52999f32555e8fffb0328fbd8e9efcca638055a73b548c8b433afa7d4a6a074aa212e5d363de382747ca8dbb95e03945d95b995d6346d7db47b24b86e4f774f3767db7996335b789733cb251f9b1eedd4f8f8cb7af4c947b0ff5e0edaf6b4fc7b76ef0bace8abf9e61d88cc5c488dfd754d3cd177f727df81884a11cf686f005f4f39cb7ad39b781fe3a8ee83c0d646f9d85babec3d6d53a7df53ab00b6aeaa9dfe5914a48222940fffedd1939ba5c9361779dcae113a59eed71c969436b3771fd5db2f4aa641a4c852a2f380b5fdfcdfccb828e6f4b474a2bbf93a4d97b2b38dcef13e148ea7e4cacddb7e7cd0f5db203a6b7519c3cbd8d62c9c6db8c8ecd956463b828dc67f34be4868e3ba94ba01ff6da0de1d9ec5ef0bb62c865c807184b975f6d9427daf9474bbd2dd530f7c77e46b98c2aa4209fa48e9df7c855c7f84684389bcc8e7c67165af04bc5c0c918f8faa439fcaf35b70fd885cc8ef5cd90a708bfbcef6e1933886cc96ad9b4562b1e9d4c66589c85bf0e55606896f06744e42d53fc1b13fe0aa93ee383ef069a8cc069a03b95a8ab873b448ad4ead3a32bf3d54af834882bcc5827e2be18539c8d5577f5dff5d982c99cdb0dfccc96a4c6439f81068c8429997dc17a6601fd736b8453e3d77636faa8d0ca89f9193bb358e9cb2ee7ea368ea33e98ef1e345d6e3993fcd52a9f954099bb9a086057df0c5465326e1932aa50da74aa8435d9294fd6b7c05a153f30 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 74efa414ae171bf60b6f884cb7e5ce12028f49365daccfa23e845d551711660b +public_key = 611ba36d3a65c1de7cb22b7f3a78fb593595b1c682d62ea16de6f1a05a7d22c9b2d29c9bb75cc5a8567ed3a545bad39e2c85cec0f83f37c6aaf20ebec273bca5e6d6a5e76fdc183176af33c93373e956580b6ffbaeeffd97e7e19acea7b4149e652686eda541e79e87a2abb68f89ae959f443547cfde7b5d609b4836aeed154c33e59f48c4cbb244acbf03e93e52f7eed87a75cbc43c405d5423ceac32dde4e93dd9d5be3bf2cb7dab16896b4fdfe7cd476f37767ccccd8095ddc94b410b983fbbcb484edd9b44b8e7fd95686106c710d983cd2bbc11dc4ae69d91a50ea6941bc70424fc792c407f85f4eeeea71b7f6e30afeb0626768307c31dab514a783febd67b50e9347adfc7d1787142f591607b7a5626a718e5d2b37a6f5b8766e8175c6fff76935ae2ad2ed7aa33628415e3d3f5c0214fae691e81dcab30f79ed389ebd7c30ae890345e796d31e3196bcd0ec22cdd64b2f9c439d7b7a7b763333faaa4d88e0288cdb8aed49b8a8c64883637098def7c88fbcb974554af0f3c51c70a758186f1598ef2786976655f87171fd93d6949e2dd78691537d9e7d30b36926147aff825ecfcbfd2c03647962ffd1d748a18289cdb33982a0db38ef9aaa6eedd146985c757ce5c08fbe1af489e1cd0c83550d455a03fc885dc7a5ebce7e529ecb0ca13ce1269e86fabdceb4b90789aca086fc8bfed637818d1ce365540f440b0bad1291d3ae0f5b4a5d9b98ff3aec5793e90dd46a8ee5b517c5c4174e05e87c593ebe9b85792b6d7d5e615c4d95c38bc4bab503d737b3df41b3e89eb38865c6b60f644edfba3e626f7f9ce39313f2ff68796fbced934ccf8841183dfd066be831542abc5b15a1cb2d4fdaeacf9d4cc4e9754d9a5cfa35d72e570c8d3b0bde5a5b29fd1f14cca3e3564c16769758afdaa89b03dd993ec8b7c9fcc63098478af1890346a8824a4b142f88759f382292ac404f436be3ef82d6a32434e7b373eec84b75f398e51f097e86c0cd2e59383e92e8039ebe5db6de20baec5489743bd4f335a774f8494a4244acb6677b22a56f24df7bdd8b9f92ae58e0703d78cd975abc5ee4473e172535e52d9e0b48748a29dc50d877903a4c7b9f4b18993669d254ef576d58528a1584f8111d43d360ab54343adeccfa36377f0f2edc8ccfcb0fc3b71b55353c278f9474d8cad27efb81ecf0b3ab561ba6722647acee4b8dbfdaee2c433536d9dc61754994eadac54adfd43e9efd7e5de9e7ab2b887dfeb49cbb6323acb566e43638a5c9b6f865da4157cc3f866066a55133da3366edf55733ca4f3a6329aa0830894e07ad5ee578c45c3e180dd7d637e8a994fced5f49710f7b1584eba5b16f98c65db96bc6fdb0561936f40fbfd9013efcb49c66869ef7ea318aaad5dbf882c5bb8e674381a96645b7a7dfa93630e933d3e955e24912e4365290f7b39f74a909aa5ef4653cc23c5e448be709ed88fe3f2fcbe779bf5fad71dd5c2f57241a3fea3b435c47a39e7ed477b989c00bd5ea71ba671d8a37dc64d372e6ccecbe4e6dc7420c362926b555598b92f6a780624f3a4cc8961d57733a8ffb8c78573c35584185fee9deea674a7fead60095e7b43dea45fcc50416883d0963d3b744edb5e8548c3b3dc474f7843c49a8dbfc939c41af7f8ec6c8354aeb0c67e05eae0 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 0b4c3cffb2ba4380ead13dc0d8acad2356b448a810da1df29f264c44aab6d24f +public_key = db1ae38c9442fd3a7580e68eed1ed77e3e525465babe09d2806363a2d664ef9ce908b3d491e336e28bdf879dac71d3dadb145806ae5fc654ab8a8f565eaa96fecb93a2ec7ebb697652965fc5ab837f6b7a21fff4e446e977c7ec694a88e535ff608cac97e97dd7d8da5beedd6278eb5726f269f7b8d91faf04aff6ce2a7930e43008cdb3ec6a4cdb3897ee85796d15ecb053881e1b9706a572ccc75d0ef32f937edc40db45548f4f1a45ffefd979a42de24b9456aa1d6367ec6a50db6fe1bd57fdcbd0a57df8c0d6a638bb7f2139ca6df68f014c4e1e0b796708693549e2b5d67edd4b77c71cd67aa76d174cced6c7a901c6573718f276188cffe28bcfbaf604447e68d490c10eedd22b8c352cfd63e7a01ee460bd4d8e174bc4a6dbd2359fc6eee4ff5d95f44ec883b1b49b8e3584f27835f21b6b2f6d60e077ef289771d134e68e196edadceaba26cecaed9fe7367f46893c2ea3677caa3005e34e7236d8a3b64a3b987289a5fdd695a82de89b9034390355c5e33546eb833f602cb9325cd95bb4cf67cd5fa0ab98d69bbdd0fe55c3169f3effa576ade724b678fb18db6703f340ab8f0198cb43176f6ffc93fb7df748d591f1bfacb9aa67a8d8b15c37e40d4fdb0fed40e747d77a8c9fd7bfddcb865ff51c41808757b0ca750d6dfa357bec7e9fef1b08d5ae2b337819c5ea89542e079045c887ba6550e5fd5693f5c70134f4d38ae7e229466acd538ce69a1f2cef121784e3c3537424bbc4d73cf1a685f04af4c4ba8fd603b329dfa080afb714eceeed17693727732ec7be2c0fc0614caf3e4fb22216eddcd758a0674133e6cfc546ff855b717695acdba7eaaf1632079d606c1c42238856d757b5d71dbd654f7f04c97abe1bc6b0185116cbbb2ddaf8b5d7a9afffd5dbd37e92bb36311c8936d958aa1744ca67332b7ddd8d7e9377273c80cdd29f27c75817746f1d58dd196de72bde440f682ebfeb4fcebeca3cbdf79d509573959e8e6cf50ad44dfded6a4ac477e3bfea75732678aea7cda5401c623edff5c7a9a7ae6a572f73838728e913cc71b9379a5a2bbdc45773c7bee67fe756e13731f58ff6bc6783324efb9a4f8b08cfe22b2b9dc87bd1c6fd90ff73ffa83b598863c0b436f3549ca831f66bdbbbb1d4747d56a97dcef9c81766a3da0d43c1a99ce5f8e105f9e13043342a539de446a7c5f9c4b46a8cadec388fbb8bcb5f7d90a56c65afd0cb2a7f9696e1945de4f9a7b6fa03d25bf6494ef72fba0c7ba40c499357acc96562c65b9ca7c53231045e3587e94727f118eaa02cd95f7137c93f2e59d9389607d3d11a7636366da97df950b13f9259cde26c7bc10f4d81ce46b7c8bdaf085fb038386e9a0afe0a7543d85ab909376b619cda2d33875d264b76a4e430f8ec4893ff4337d160176ed5938493ad6cc08392237caa8487abd3c8301a1ddbb677e7851d9c7bc4c2a046fa5c6ef2e72daba61ec49cb4fd7519eb3b1abaad9b8162ccf7f28fae310872e789cf05f6c949598c41c3b73a1a9cc18d8e68f95c8ad839301fef77c79618685db20bee04a9a8acb8441ccc764aa3b191736f5a24ae32cf342849dc1d2fc6a615f664db63b94960a433584036c05e13ea088f3a03ca153015fb2665c77d8fcc529f21afde0d4f32cbfa399f2973d812f516c86b +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 1c82471dcdfca3a6942061ab4f3d5bf0d197321437c706d9cccccce449447002 +public_key = 36adc8ea287462d8cf894ecdca0e67976dde61e89eff77fe87c667f453c8cdde48b94c9a9a3765649ccc6e2cd5e545d219dd91783b6c7e4958a18d7e73e9839a9fc8c36a87891b7ce5e7e22e38b5cdd745ffced590cf827b98fdf77cb5653f3746855392247b0555f7ee96fabd9ea557c431e55b81d24bec1a94992ef540e07338fa944d25be7ed4e693eec8f24a0c53083df457d8d33aa4651b2b30f85a9bd817dd1c1e6760ef40a20d9dacfab21e6dd36426a6dc9c3dfc05cd171fba91da51bd6adf7ef9b236feb3b274e747ab8a380b42c16d357cff59548cb80788cb41da4c7d3c4b950e925588920eff55177f40f7bd92c23f979a0dd49b74cbd549b2c053a71d4641071a3a95a460b2b3a8adb7f71a3f67de555e6ce87986bcd6e647c4b7967cdbf5d83c4b99a1b44b5df58959c48beacad8196d8fd4046ea1cd9a294e6c6a97a1067cd650ca619d14a05635fd38539f1c2676b69cc5360f487389648fe596783baad0d7627cc6ab2da5b67894e0b77f85841a323e04d038ff5e103b38b07672258e86c969b0476eac6b2753c64f9eeda389599b78e856d8dea89556a9510627b29e13b1714ae442158561db8f435bbd6234a4216e8985dc4f72fda5f15762fa26d84f178e0e76bfc9ec5c35fb52e533d1e78d9cbb287d42b7591828afe605cfcc93c337bab78b65f37b075a8cfd8c49ce5087f8f600655234fa99f6987da89d4ef51ae599867d5686dae1e7d0079f5ade77e57518f89f137def9b9714f4cb73bde7ee6a6325f9418f4adea3a8762c55987ac4d6dd9a6d248a33ebff64774aaff70dd707f37bc30d41d4ae70e084d7792a43c64d7fb47ffccb065b74ccea54f86af907f56d288fef7f5a6fd85e82477483f778d5388728c4565467a9bb4fe6da2d89bc1c742b2db03bc5f6b73573cdd9eaa9ed85f1eccd1876f80e89ebd1e43d4843a441ed50e2967dabef6686dcfd3205e3332cac82095ab10d51340f3e75c9c92b0388bc9bf822b8ff93fc3520a7fe2e1ad62a38893119fbfa8758f35e895c74e187deb40f6a332d03d98cbf4381eae33cf4dd356ea7d87a93e80f472e49ad91dcd13c936b02a96c4dee4c2b23ac79869c6d139c8d85b58eaf7c6eb4c4250bc3ddaa56dbbbbffaf452c19d74e013a3c7599cd5b8a876076523c6b0aefc6a503bcee0fa76407b779dc9f453f7aaa4e58401cbc6f47e8a346fd13e1383b53ff5731e8878c99289c9eb02e9f9dcad6c6deb6f4c3bd459f86d04fc8d287b6a677be7e45997027568bf7bcca05c3d395ce557873711174242ca50cfb3dbb3e7e5d25dd807cc5ff1049ce82dbe3c46dfebccb61de7f44f4352b655a517485ab13b413983cc089749ad7e44312966b2c67ad60d96bc176142858882fd9e3a075f8fa6bf639ae3af67fba026a173bf3318bdea999c8c1ef478422cbfaa9dff99ff856bd6a11f8584c63f80787ec19d5eea2a0dc5a57c9b8e44b4c07b3be3477baa738ab2d4d7653a309d7a82cfc6b86a1b59ae1f51e008598e453e04e3306c1877dd7d3869eaf5a9c9efed8daaf403dc4d0a83e2daaac73990f05a9002d6ada14d9450454291e37112a9ad97147cc89999dc89a30d8d9757933c5d0356f329bfa3823d34197b7d9e60e307bbabd9b3e8272a0ef1b3333269a7af6a5bb8740bfa +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 46fe60a18124125ab93e0c578f1c02f1bd1301595013001c7f3c2fa56cde294e +public_key = e4749bcd8577d51ae0245fb86a5dfefde59f5fb54bbef9e9e7d4a8bb8cc40fb8c72414d1123e52bb7f7cecfc8e4c8e7c5d537df15d902cdd3df866317006a2aef59cac269813a47fd337a0c5b694f5bd80f21dd89255614634a2b0cbeecbcc3f1d84cdfc3d54fa749736e531c2e673726d79cf45c89b444b7e9fed892c7ec39a74d39b815c2b9981ca47f5e5684044effadf3fc887f85f9b90fc78bea1b9c5c647ac53dd66ad7b8ca2bad1e17f9fa22c39d9c3c6cd833c6abcd61abbec1ee6819d3af45997b8580a9e174de12cc6b62c4952215a32822ee676ff5a10dadc32bc68c7bc920bfbc7bce8fee0ee30b0434afa29b2b9e9dac40ee53b5664e5f5e984c5fd9764397955d7d92cb257ae520078972b843ff3dbc67376d2f69bf89e0850ee845e49586c889ccdc104cbf13470f6f6c0e6766007e5c3a1348166933a46aea62e0b749fee4a39feea094bae60a38c84079d81aa65589fe3877ea0fa186a727457d45ea8a45b6fe05369f8be58de844e321e7ddc47af9ff5f075c6acd5f93a31c38ec706d9009e96c866fe037ea35fb7f65a56b24b03ed6b7f7377deab407dd57344fe60884f41d355b2336e464b94554b7c1096e4c3394fbd66ea2e74ba7045c0d84d328789d1e4f8a95d4ece9fd7f013d5efa93b5c0b3c3b0a8c90ce0960f61da9f6a453b9cdd12f8cf43045db8a4b6143ab5adc7aaa6f3533e33dc3062b7caa33b1e9a3bfda7bbffef8341bdda33bbf72bada717a4790f4c99cf53dbf114b628558e0eab7af583afea327a599c490e25795cc5c42219771391b33df4c7fc025f4c4d5f0eb4559c2ea8c38ab5cfe37d35c75624876fc1e969ef478a2d34e9ed9da7125ec32b0557edb5b77e0dab221544e5f7a57a2a4eb89c8d3ed1c7d8de65f65af9d8e7bc2020b723d49e987f83db0bc35e96aae7b2772b47e59a3257ead2775331e9cf55959fbec482169c5391a9409877c79255cbd1c8d2b8352ccad74bc57e4dfbd9f9ce8e625df782df9eefbd3d882c45631e96e35c9b53f77cc0d268722ba5eb858a1df7e9a88fcf40ebff9cd7766baaf37642ce278ddd6a677fbf61ab5dab4c223b7381fd3c16704cf7a2db2f22fe0c969b6b47ae52c7f598de4aac1665d72a45bf51370df6e559f93d81dcb6aa49339e489968d8d49865dafc467c8abfdc6c1c9d85699b801c75eacd3e42be38de6f6a64ad6708d4f6eadce3b09d8bea819bdc31df58e3ea8d103d9d0a7470dd35161379191576a03c8ed70ec58565ca7c4a6bb333338d91e3d70f5bef45b68369e7e18cf945a06cbb80ff35685f52f45e594bd6a6dc5d4b6e67c6e887640bd6879187c5063d29724b3487f81cc5c5294b36b650efb08084eea098489d5cad338a0cfb6e231268bb866c2c524c71bd6a467c845ac7a4eac579049734970859a2ea753c6b93ef01532b23da103d6f44a17870b85d23f1de4e6d8433ae5cd2b145bfe253a8bba300b6465fdef77e2fabe36d6c8112887cb0a6daea4a54e258cf99d71e407594eeebf1f4aa2bec5d263dc5d5fd7f9b73f957375b5ce6373d9b93211a66a29736a6ee6e6ef8538e95c45bf595b2eb743d79436d6385bab74c80d88c1a104d32e6c3bb4eff94c474c2c554f3be4d7fae86455763b97ec8fdbe9640219b35fc36033966a3525d485f1 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 52fb7cb6a633fd2e83f2892bd9441b48fe59ecee6d026f5246fa7f2a5e55ee3b +public_key = e274e1e0cb6648d36c6236468793848aa4b7f56ed378eda24bdccb712bc98dcfeceaccd81023f8d4dd32cfe9c82e2e372924c69ab5a402e9b3d88c87e9bc5c90335e5bcf31a1b87ea4cf527c8f445d7c8597ceda60a6e6e4da431c9593b92aeaa22afe436a359a7a5902adfa6c5e6d562363bf9589060eaf4c5946626ace3f276af8966709cbb9b666b9853ed2f3077978e4872307ac65fae1002cbe4eddbb83677419b89c9e0c9847fa6441c86b8c7de663f4d35793ed1b4cf1b4a8985ee5de547cf917f332d4acb59bd64d9be88efba8e362458b8d868da7ec516ea9c808af9c5e5e38588e30217fc1f3295da2559003e4f65cb330f43ac5b774562c28fbe83636fa034bdbc3cb25ab6c8d2ec69b87332a4fe533a788287a40c1659f457c5e6e15456da54a7febe8c8caf46447606f2aa340a48b4fc667d7e67efec47911ed5c3da4463b7535966882181e530835357b6a8ec62a3e7817c508c79754063f721d362be73416a4653344ecde577c17a75b3316ac59575eb2ae575fdde04ee77f70a4ee91786ad457832e1493466a3faaa55911e9bacef8ce49f579f1753b5138797e08f8f0cbd821ea69bd9c43ac0fe91d0775fb64b8694c74f13f3600fd3e5f1bc5cbdacdb33f9928247e4759747d0fcdd924cf1c93bae5c37be8c3b9c8ed9b476dc3baadeee33b62350a695d799b52743d5158c015cc609e99ec87f9ba036e6ed2d3a1c14aabf02deb4c4fad5c4791658ebef02be1b9496819ab76a428c0f5b8a69ecbf4fb5b3408eec22f3df0341575c7098e63379406c9b60b7ae734ce71683be7777e9db5acbd2ac6ac4b97aa0a3c8c168a5ab399d10b0eb4de0e829ee4a402e54e634af29a94cf97fdef72ec4055ce3335b89bd6f9ee965bc3259f4c028b433074c9705ac4ca2682fb1b385f058d5755e5319397754cac9f68cb711ff883af4243dec3f134fcabdaa4d68a91ddc8a22c939bdf1539645a912a33c1d11a584a3eed831abc2c86834be35bc46ddcc455f2bf9aca86988aaf68dbf45a5ff708ea2f2ede163356b8b5f486f772204bbbbc19befc73e434fd81e855657adf88b4bf7c1b9fd9ecfbaa30b8fb34eb7230efbe60534e306f5c0ae477826a9e75b7c5afdf398525358cfdad128ce5925e33a32a9add47a7237da98fa4f807fc59f35fde14365a758c534f289160a65cfb34619c7c9b2aafd83cc699f554bd64586dcf37960568e711e6d7235c94492dcc294e6ac86e498d8b54193a8cac8b815d8be9a22bd2a6d5a737c4984f3a888c0b9e405eb95ed9430327642a18f78723fe94d6c26b298b77554e802f37ac286f429f66580697fca3e6ed1e76c4d763b194c52d79b25604974c1bc89966db720947027d9797d5e8349ea268853b9ff3aa277c707906be0b078fd76e9051ee4b48bc73f877bee69a3ebdabbb8c2e98d05eb14b2cc9abe673cab8d3b419be1c34b6342cfe84efd1325fb557a87ac4fb55c5c86ccbba99559fcf960479b044b3d6233317677c78a453d5ef47ecdab3fc3ddc3d3ad564d4e00a995c507d597e498cf0897b507ab35e4587e2b8750313d3dc2ca8cec4eae2a9725085c1214dc8d0dbf0ace46f1936725bcabd61ddb880f7aabc887090195d95fb6ec060b5257ac37481faa2eccaef99c0da37285d53baeb0e25bdb9 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 0f81a5f97082121244403da3feeb734f6084b314b8d94beb11627aa6ad1914e9 +public_key = fb36faaaad31e59d84a71f7b851da5a46cbcabe6b1906d7c97d4af6c6a598a089bb41ce999de6cd307895035b15effc34b0cd6f634813eec780c96b83fab557075cde3b64eae6ba98b75e06f7f9b82eeec9274d4ea9e64bac5b546997d2a94ff6aa9ce1f6bb7ab7551a06a364aeecaf797fac675cb8a8ea124dad5a318bffaaf348548f1a3036a874d4b0f056491a5b20bed9deecef3df8b4e9ec6e2a11fd7c6ccbc580373b1afefe293ef517ed340865232d6d660655184d8a0867a47811b88bcdc4e6dec5874839919188f6384d588ba97405bb1ff39f5c1553189dde37336948f88d9dbb96d30aeda9c0aa95d59f67e543057976e3dc7346cdc7560e68911b8829d37bd0fcfddd6efb0eb1538a98a76a68798b5469f9dca82a08648a2eae3becea9b52a7b6f345626bb691aeccd14fcf0f2cf52b40bf695474b2dfadedda47b87cb51f13dd72d489a2e79cfcfaae2b52bb4f626c35ba4c0888c7939f38e6126484a7932f5d6a02aeeca5cfaf7d739d65e7e37bc5e8c1885a299b58e1f6446fdd8449e58a21453cde7ab683bec6d84876cee69dd1ad93852885db82eb85e4d61ddae327179acdbfc329416b23234572a0eb3f64afcda36aa66be7035f449af2b40479e957d4dd28f053989d5d1d9cfcf8a8cc0c04aa59f4be9a98777f814a18a0753a728d264e59f2be7c9f0266b8dc481cab4833be8b3b599818aa930571748d41657267de5f68a8c888cf3205a665503dd51084925167bb75c98b9af5b7579bdf40a912375e64814794bebdb798f4fe9066cc63473496ab9cfad6248d883d1846fc8084d5afd5277aa3eec0c3186d68bdceb6c240cd0128a6bc146e467b861ac0f5309d8f183233c37b35e8bfeb46443ecbe7cc3974a48a9fde5a59e677567472f263e31188966eb55625e819c05f872053936abb0d0a48e99357e5593d1dd8e57a8a785331f828269786919a8f913fe17f9b692ba8efaebb602e83bd4b7516064e500779d1907b1169e70dea870e6f57f5239f22e85b178dab32f897bf465e0ebdd84887566942656357b789667d756bbe614994f982841a525c8ec63ccc8e4575efd3be2f5cf975d5ade35ffa4f8dfcff664f6fa8c3379802529d4a9135abcd5d9db15a49fe4c6d57b41bb6383b3483ca5f5ce1174ef9eaa423c0c3254b5d8d53e9dff8fe6817dcc8c87eed4ed6ce74c93240947a8dab87d889f9ad894f47f43b35f591543f4e103b73d7d83725ddec00d7bb5459ee084be939ae8d055af7cc7aa98fbb88a156849765936f7f73bc385a1bca94a74368168cf26d8806c89d1efef359c8694b5439f1f8fc0a699fe4a68c4858a9a01be496e177d1efb57ebacdae48fb56626595683f30903cc19c79714364cc5ced8928f3536ffecbcd45c90d471e684af20ef43e925c848565a1989637f86e4ca0daf1bea9049b78e080dda50ac800e07f961ffd9c29fa4aa0b90119d987cfe5a2dc6e65516ad0238a40b0bb233a365bcffbab206dfeb8a54771a8d8f5f79e284d298563aa2868e2efebe582897c7a9a0547acc2d8933aba9cbd5d937073455489a30e8cc365acd3d3734dbff084d78fd9dee76b60a6ff21fdfc1aa73b772cbcea4d7a1fd64561e88bb90327b7c13c809696c0e4711ce152577517be0a2fb3d597fa5804e0c106a4c10 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 31af9345365549ea0360169ed57daf98cc5444799d4c75d9f1f5d615e9df8a91 +public_key = 5226aa8edabd5a4a5a7cf6633a394b756ab38bc652eccebdb728c74ed3e6d039ac983be18f1aaeffcd4e48448d4507fc329f89691a93a30f83c3dbefeca9f364ca832263321087d4d349df72ee883b46bc303eb4242744e0847e72d5645586ad0b9cdfe48ac04b0d3045bcfd220eb52c8ced494673bea69766a5adcb38ce3a97820957eb5e7d95a82da4c1a7ed94a7d8850ef0a90c5c8c8dd9e3ee769b48f004c93a2e9e87b249f9da4e468444cdde233db389e656c860705b714e3aaf0779f1458b8ddde6ee09ac461e96a1b1e9af19ac69851f9b6c8ca9d4e39d70277b5d9a6a4c6d5f5e0454ac05729c2691e87a8d79353289678490b8f2c41c52a2f56b91a35f8a9e8aee8935ef2bbc48485bd747cc5c69d66b7577739b669befea567ed1901fe663f5cf49ed8f3998ed221552c846ad78a8e00313f6c863ddbb369681c69cc01cf390fa857a37ad826f3eee4f62db69929363e18a0886e7ceca3d36c65898968eb7c187b7b867fe8a8bb369aec780e0033ebf2bddf846cd60633a461c569683598c7744fbecc5438f725e337ced5d3d12a87f9cf5ba6587baf31b852bd45a871abb81e88c8b8a56d324c87a777beaf543ba153a2234e8bbc57d7e23f5fc3ad75608988bdc44e276af10dafd7f5fb0465e4080597a0ff73732789d0f955f93ba77e803490035e416b43e291984cad36c53c947cc954a842dc11424be43283a6dc586a9fb39b39f7867b79772ececaa26f34233adb5ac819f2ae72db5e94edb99809f4a827a85fc7c7a838ec98f7a9cee443f69afaea71dede7c7475b46b55ee8991dccc6527b5fa1393c9107c4d36ad73def9a7fbfd5a9279b62f5ce21f3aab0838b42e667910dcc4c28f505afa4e81757b7f6a1844f8787fd9c76c69e2d7598f1f5d49cb57738daab6a7fabf6d8bfd2ac7137493bd2b8b5f997519c3df6ef38623294b91999a5419356c0ed3e348e94e57e926fe5842e7974104e6adbefa24f54eba5adc08adce75f347ee3c6e4664496a5f5ec01a55b1d2a3e8486cec4c3ba4619708695d2a0f9553d776514857bb8a872c7f736ccb432b149fe99568b51b9c9a56c441bcdccbe7856948fff90d63a0f78c8ee777236ea43de2583d1ed93ec8bcab7c8c6dde8f54258b7a583f939d953e59ea6c04ed449083987bfa0f236c5b9b3d0dc3ff99146b9a0943115845f3fe98045ca844bdbe133edbc98cb54746937b1479dadac5a4fa3f0dc67fba81cb251fe386ade32fa259604a76a5dd56a7543b96d3d96d3046389b9e7dce53cbdd9ab04a65b31c6c5d0af3a2ad53faea3bff3985fdff9ca3e396598acd72f4659ee99e4ddeadad03da64a1a823b78561d5a9304a5dea3056f50c8f915d7eae0b6883e03ead16e464e8d50f38cf4c62c76940fd5dd4b4d74b66dd85f6fdbe7d7a359d769764adbea61c0aafd7f464d7ea3f7063efd6b9e51b47cfed93a7b9adee48f679d6234e9a4574310bcf0941b3e5169eca5d53c005fa6ed3cd81ee7b4bc23c8ba9beaa39f44076e871583eb1cd4d4929a38922df0fac6647c24306e349f1ecb4e2f63de903ddebacda3166d6a3e23d498f96ad5865ebb4cbb55265e6a3e6a3bc96e51745b02f4a593b796b5a5ef48ddd5d61bcb3f79106fb3f881087b21e528bdc627a8a1fdbb3b1ff5d83954f7 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 774ae54093d694ef40b63b62c73e6c98295f606feb8699807eda1d030ffb996d +public_key = 724abfcd25f55f0a5efb7783d919d31fedfc53bfd3de67d873c7a7c566f02d53a6c08689990fbdc877bc6b8e3ab59b781bb95f4fca9ee87df8aecb9142a992de7e80bc2ce5dbebb66765c5abbcc5ebf764d5234d89a378d69f5fbaf63a00e35d5698d4b973450a045e55c7c5f59d7fee49dfe6877963e386bd2dcbe929c3d247611e346eaf5deacba7f843ecf04eeabb043644efaf9ba3cea160b98f0d28caf0677ab2aba362b7bfadaca4e1197f55fd3ac8033814b7ee1c04d8972b3f1d9a986637a972b46d3ac4650acd53efbcb9a475bc4065f65a6ec79e1374c2159bd34d9a850ff856aeb32e4b604783bcb2ac49a27a5b0b07ae346ac38f54a2943559f12f70bcbe9508f9d3888aca4bab72e44ff85837b9ebb466e5cba74d5ab6bb4bfa10af6209a97f959c905bb4b058ba8ac03da5a7ce90a018a9803ac29d84ba710b30daaad844dcea1478c289d3f737144812355e0d7589b9ab765ca3b23353a350876f0518ef3e5be4d8f66c998b81f458a394cc68c3b7bfd37366eca3e13dc9f8e5f9bf0e9aaaeafc619e43fa7ef3898a76d20dfc64f77e87979ec0244d9b5368677008e58a2b6f7c6fb6ab4f981fadcea7753599585034b9ad99c9ac8c1f872b1a47a088bd8afca2d52d93928a4fb88de98c4cc50c1fe4c4c94fc7c6fb5e636423c6adb553b13869ef647fca6d53343ff7c7088fa2ddc4801b36ff220a53928ec13f3c3e8e1add729ea43a54ab008d326d08d4fd8757f88ac9bdc8bc75cb83517ac71ff8613b3ba713377fdbefe99bfa332b9cf2c136350adb9553e3643d0c45413782f3bc9e941965dc15edf98738d06de13ac4f2e5bff759dad16bea6fcba390ed6454021f842f6be374af847107a43403b4aa5ccae154b9c54831e4aee239b79f1fe997baf3da542560fe6647a2e7c4926d97fd484c3d14d456fafbf8b63dbcdcc8577b7aed99c060af8d478f72876b614055d95f9e8600f7c94cbd94507ff35c169b58789ae8bc3e6f677ca9df38602399e307553e235d11836be22db3bad4eb0a668e094eab11f49e27aabdfc27afcaabbf5439e1b7bff0cde6f6d819c44d7f556a3946df86c43d1b8693944d399a3b5b23d9b988de3443dca387cde8e4c9b3dd775aa6ff4488f8d6295873dce629777fd94cd62098b6149a3e7c383e2c33cc3fe77305374170ceadb7cd9f4caa736e4c796d2a97fa48d7c9eab72993b4b886e36b856c7bc75ad064f88ef491effa872247a99aa39a9c2b76030f7d66ae69317cafcbb77c37d89ed32489e4cf557998a06689b06ab96615bb5752d439da446354dbd640686aa794444b8d6c31e7f1b8c6b8219eda5a0cd1932a885107b5f968b5c8ec98217f93d895e893bdedfae4a9993f326e3863bcda75190c4a487b46e49e4b713de7b1c5f0ccd3da5c475fb2da94eb2e7f76556bfef8f5076533973bad3ac7305b5c764ddd40d72361719daf4a88e1e9bbf06c6a331a647d9385a5e7d8bad6c89b390b617018c4a079ed2634f9bcae73598b37d8cf45452853506437e756a39977dad9ef92b0e8f0e3567047d8f870f8f236389d99d678cd9b49526aac31deb831ceff4f6f407a59c8f88b7b5d088a2d08b9f114c3f15865103fc682ea6a76cb62d3ad7357cc617d597a3dbbdf515f6852d71220768859d599bbaa +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 9f27a47604ab5146caaf0aafe6d149424f8d66e39ba3baf5e6c73b19221b7e21 +public_key = 30f9fdc04ef758b73beb83625df3b8d5c47a7a334d4e24d915dae401d461d715fea0fd5f74ae598dc9622d3f4c1c8b5deabd386ea3cd95b86d80085588ac69af4edbe6b5b538afd2f5fe4878fbb55099d7b99490e429eb1e13a6890a920afda12a1da3e096747eba94a337af9f6d9da4e8a9f90d3633fcd99983b8e778ca3e7fbca2ce9b4fb4a0faa4459fad6782367580b7aa49ab74b60c4cef7ab3bb9ba0822f7a7e1ac2f65ddf8f7395f96567404bf402afabb0c7de92e6ca220fc597f496cc8881d7b688861c7988363112155b5b98f7117fa7a7d68b76036059ca5e402532ce8763c52ca237a334832832f2a49be49d7d1595ffced4675547796e3d46535390d44580c24bcc3d67a50c0afbd8936d472fea807de79be7aad0746e8a2c8caf1f4d2728ea374493da6a68d47387a44460b39a45b36e9f1d29b08ba449533d470b87bb936f79eb86db914e632317c4d8ae9e7753458dbcd7eb73331e8d8ce318555e2af828eaff1e2decdc9b8363a9db85064f642f6c36d7e061444e18af8c3b56332bab4bec36d2f5d3e394c870de3ed30997564df5f603cf628d4ecb7bcf388ef35371f870a21675ad6ff660268a190fa2e4ca4c725fa97774e0920e75fd08c5e13d7f4c2a61c877abbe2e85ce58738feae5335aba2c77a804f94077a777fb49854c7a78472f63e435a1d7b4a5205ab879438a91eb603987d4cd937e66c7310625a6286e82d86894ef9750f28e7d867d9bc588d92d3b65f5c8451446e2659d9dc2147ae6f3a577097e64bbb2c679c845e8f7b1ac393497575e385bb39563e125c3a49f5a2126d201897073fd3f45d6ba85db7eb1d5b8ed8ee1dd785ebeed7056653507e967385945389493b96cda968f75840deecd473fd3138887d3472e18b24c1b7e2c837668fc6917175471f3caa23f3a3453fb72c7b68f658869afae883d610aced53fdfbcedcb7037ab72d9cfbf49df9a092f575cd9eca1e5698286c9b19a7471a5b652f6a900659df9183c774e7f0fc89d743aa63589ed588cae6f75df3e3e4d65a6ae81a935f38b964f39dbe8aea75f256777fe7383f9bba0afd34166f2b61bfa152a7ce45fdcb49c3592ab8aafddd9a237a12c3cd4abbad8a48f622dc84a053c94881664a97381ab88ca41846e83ddfe00d6d33b57f1db29b720df9069297a2cc387f2aa53378e6c66e75b594bcd154e71c3f7ac6df8a9a10a71f35b39a3da7d5367ecb33860325f88c2f7843e855d27db6f27b38940f973b3bd63ecbefb3a8b73d46c6781ac87f44c91ea8fcb27e534172fe2b367ab74b3e8b004ef7a16d824fe7814f9a6e4f5a9093a63790bd391d99917be5abc596551fe52bc79703f2bd393c7f0cb85a510d4c9557acf3f7fdcf994c0bf9cd6c36d6041e7c3cf6d44879a7612c3a2fa587b1b7676b966f91a7ba5a795f7a163ae08696c7c98e076189bc26f3c8d46dc8d85c287a9c0c6965d0fb3e5e2037eee6d40854e6fe32bff01c767841eada765acd707dee59a9a85b8f49205c78cac786aac9a0a0a7353be8f9cf936165a9c39d99aac8ce75b6df5f1c66d04354480175fc3249930e66c9d06aa50e7adfefab6aaacf05c25d7a804d612a45ceb0bfc39f3330aa6fed717408e0934fde42a5e1cbf04c80f37d7dfc7eb53a785194c4a1232e61c37a5 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 90044031b7597b5e60a4f946b713e8996d0426d2cb013243d9b7d8f8ef159a0f +public_key = be0aaff5df55d72c6e8424c2d6df3f0aa4c28094691ac4bf0f56a51ea479991dcfb024c151c35cc3c6cc90b4eab964370c2bc953a84a73c87a038e3de34b933f233da28643a93388f944c033236372fa6e6adad85b598124ff7122b4d074a4af57684d46398e5d58b13a863b0b984e224a7ad53cec4fbf690955edcf3ae5ddceeac4ca38d93ca350078139edae88fe390fd9d45eea42036dc913c6b54dd9349503ebad3f350ddd3500da308fd8ba0777c999cb4982d9ee56aaec52396edd5d6ac7cc43265ad5cc98d1926de861fea32f7760ad4be7ff693508339fd0cd5fae095c6a96c1e6864baf147186ccf2dd98f620e5a5f55e6df92b8b715394c5677d0dc9e3f0bf5459d6c63654fa8dfff899f8943957bb2b38ea8fde4bb6ddce6df3d86ea8b616579861abfecb0bf3727cafc74d9e23088c6ca4dc23e86a603788c07ba89d6badcffd7d79174ad07dc55b7b30c067bd830fa1a70998459c54394e96f814515ec9c7f47dd6138dd90ef37ad43ee5243cfaaedde21e2ad8633d38b41e982c669de3dbb1c778953029eb07a947c9637bfa34eed35aa1d03c81f0e7df8ba5e12a4beb09bf5c34dc7e1d577fd30a808ac574decbb51538c2a027f87f7fe2903fafb0f7a73ec8831e6b975007592b5c652fa636c83e5baa474f873a5da2f8ffd156f68dc951689ba83e046c0f58f0447c3b3e6c78cd34dbc5efee0a4660eb1c69402b617b93d57884e22f2d3bd73e3d7874a988ff987599cd4d7946e50665f7d9a8075ecc8dbbbc4d06d6f58f74fcad640f96d9b6554a786d856259c32e0dde3056aef65436a285583cfc9d9a644f66e382d59d7c6d78aa462afb6ba8887c238f81e3ee796a675ee8b7a598afd5d79a058796552da2eaff782c7e331737680a499aa759824e1eacf2bdd1f9a5865b6568ed9aef4f4cc38f74c24e33e965e983033f924526baa377b2ee933a1fc4677ee74fd99ad8826f8315aa95085c7416aea51a98406fa345a6a8d2bb7ecfc885816eb3dfadfad233be3eafccf4b84347124bb41f8c663506665ce4c3802bd9934ce9676cef9ce54c429fd7b7afe5c92be0451730de65a4aab6c97804ad33d5d233f83599133510bb334dacef4b79700887d0ef45500ccb31b7933fe74a346aea4c9be4d9bc6ae8700dbdca67cfa9dd41dfeaa56547a71c35cef1b664629ac9d4f431cfccaf62a781a4bbb2adca7a7914627da380873977e7eea11ffcd938a3a886e9b328a8a539557f6d8dd28569326684ff779bbe2e8ad60316d673c7be969ebe19a57a0cac91cd1c61860a86356b90715886acbcf30629dcff686883b6ee5624df64ba76124ceb086e4ff5c8a4b50fcdba738ab68b749d1e51db6fc30dfaa3c08f6d4848c4910c9ea20669735cca4df583e0c5412c7edbcf8e6fd17ab9c203a7eb5fd81a0ec8cd78940f19defb49718ad9dad7bed1093580c13b5ffa0ac0d8bd94d913a9ddfab03f835f79173e966746c6aad229dd6a2c363e956ffec693e2ce4efeccdc688c4a88f6a5b7c3464cb7ec8430ce377359a16213fc8d5d410556e9377e4f451481d8a4942d27e5b6a65583999b97bdc47b9e4f308fef5ec6315d9eb009f7e4f75e8bfdc75e838f56f25740c91e7efd93a5d7db1850127df85b8f086dfc57f1f62a86d6ee7e45aff3f27bc1 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = a7a31e140891ea37d2b6424b59b1f84f89220f32dcb73e037eb912b389d34a48 +public_key = 690b34b658603a2dde852e5eddb39ad2e4dba908d2666f3123afc5faf3437bbd376894ce67397d32a67c3bfb976195dc1c68ad988348725c83a388e43e5d4400f9951589d3badd4ee444d4ab2cc7c35b8e0e09cce4559945f564055d70408ec35ed332756e62f7b8328f78bfc3359e7c1b4fcf16e55fc745c80f45fffcd9eca957c8475c63bd5bfff288a5e5a5c89fd6e48c3ef373658859c3d9636786a8d579cd7b764641d6a872232f4558eed436fc72b563883edbd934f5db6ec89429d7792fcdbfcdb4e6fc2ac323a58df3fbcdb7fdf3140478878d55252bec090ad33e34de109869c2df967f598a539d42d9859f97cca2e85a635418707b3aa1835b77df93ae4dc53f238d83de7ad4bdf58655c59bf58be07987b88cccd01f1edb9c2458befe38298e90f955b62d8de3dd5784c809a7b2af9f8c3c33f14eea5563d6327392ddd44ec8f72fd5893f56f58bb02d7f9ee98b7f4ed92f86ec390763a8b57409c7c5c665a914ffdc9c6fa5e80646364aa8e3b95030fb2fb289991b8637ea57c7b324a25e0389ce979b5f8e6ff94e45636ebf042c85dad84f80d788076b7c69cabb8e389a72657d7d63949657b934a468516c36684e94df1ac3f595a295cf8d25cf6e1b1b5af5b542e025a182868e1555442e1bdd064865ed5cc1675d74e55aaad70e779e69ee1fdfab07cc551437603d24ca754fe8fa846823bf857f97efa26834e15ff746a6c7dbdf56bc0b4bff02ecd83d9482d7669f8857544ad43624dec684c95adf6f308f7a84b37534b7aa3ccda0816368a01ee41c6eee7e1ea317dfaa7d73909e889dd10dc20e38667ead48278b5ee97e88607b421074ff5c38866fbce549637c600c8be8d6dc11aa394e8344b6c6536e687ef6dabac397abf1ca7486f6ae87d8a3dd8d70b5687f7c6a73225b9233685c6c7d3d33677999cf4e40b7f894193cca1c5acbe4a133d85a6a1f587ad4ad533fe4974cbb1f877e161646841feea9c335d42bd00c05fb3ed45b2d95b7e3dd61b62e3db4c6bc36d76df5db9ee6984d31bcb1f6757de7f5e872feae7f388c5134956e3f86a49bba39967889c9a42487fbf5dab014c94893a4c8b74ab099687919243c7633caf297b2b73ab15d04eaf6fcf2d15a95553831be379ed0489749c495e3b6b8e2add49b8d65dba89340cfeba3a751d0ff89a3ef772b06a4687338ca88c0effe488b848afb1d41f4f9607fbe8bc075d0568d3041c7f8f3fe922cd984d238d970ff9e72fd979224f3cc9ff54d4da61534da258fa3f6fd95f5b399a8f9addeb6b726f43e3af64d09038caffaf6686caa2dffe94cba660edbb08309fec2b5e142bbc922958c86d6fce7a4b3a4c95240e7f244b9e2c4ce93496fd8cddc4514495b35863cfc6cb41fb7f1a88d80fd7ba72669ac6b29accd3b832d35ad70f7584e197d695b78c94fd00c1c3380dde9f0aac04c2e49a469420c15b2da05f91dba5dc46e8e0135c044fe39cc74b14e7451fd1e328f06b7401f47674d354123ed955d6628d3db7ba68564179faed9c9d3bfdf3c6e793a33a65f9fb699a47fde974eecbace2279d273a757db9d3a886778003df83b8e9cb1fafd34b8462dcab57c85653e363629e9f70738434bbebb46bb71890031ffecaf8fc027d2dfa2a4ad271dd702f055836f40ca137e5d0ef9 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 70eb3f791faa91f1f982fa477dbcddeb2c55691c07f93b04cd31b37544c94b42 +public_key = 44bb530c48419abc7578b33d6db56c76179e9da3808ba4c8d8dff7ba5c64afd5c87f0ec1ae1fa294758f468d4719dc7369a5de9e6398bfcb60a88e9585a689462346aa5968dfa83bbb3b8a51bb59311c9d100a4a0c7586067fd1ffc3cbd92c3a42d6851fcd64a9aff7b5de551ca7af6b5b3e892b4e4467e66a5efe434da08d4f551dcc50086389faedc0290956b5ac58844a84bf3d8d0a5562b57b5cbc594ceae87911ae3168ff7ce63b82303deaf5e9c33bca746ba7c5e864efff17324228321c8adec976646a6b561508e0b56351d319b31a6daa882342678fa61075f652994d4a78c25659b533f5b40f6f36a6f7d4cd99e502e9c2d1858ca64c94d3734ac0bbcab2ebff9e03450f8fea38d8fa4c26a4880dd7e1966fc08d63ac1e5e74f4418385d6559ba5b7266f63be7e4d959209b657193689a035414998dd08434fbc38f7141e8d9daa89c62e86eb9e8ce3ce70d848de45b3fea08edcd6f89db09ec9210b767d743f61655a981fd51d7c8a47fe7a682be36c0863cc6f430d084d292d99d1636c04d6b1ed3efa74046d2e9ed8481ef3dd85edb685a1a1fb3a3b3cf1705e3030ae3ad73b919a439d424a4adafef995de963b4cde0316739cf5da1a8cf3d65acea624f3a589f321a84ad3eeb3f5b595f11637eaca77fc753261ed4cec9ccf55e7dd4d567bb78749f0edd5ca5f5f6fafef073dc25cb9a12988eb9b864b7566f72d5b4164e340d9464bf29f979a073384f6a5e52aa0b6b74d43faa5412c59155f497426eafce9e6617d5659dca87ba482d67c8c150db069e66a1a9d5b341f43701ac8261952c5b736b35f90235669fbdcc25473e2940aff97c440d98ad211c35c2ff4b6009aa66e27cc09ccd9307c7b3794a5d189892eb6db2c3f3e95057ff365e14ab48614ef760f0dbaec8fb0a773d67f2e6aab899e7dad6e195a5e92486ce9aeebfd5c7d9573e8ac4bd29436a9d88c56abefa3dc7b382f2c5e7265a037b8f7761447fc59a40a3c8693bc996ca786fa7ac1bbcc6aa404a1bfdb3d227c6abf4fcfc463c2f164fae418cf4b38cc2c1595f9343d41b4a1967c7c94a7a0af9ecec82357068d5af096cbf0ddcad6ecdbb523d907d64e76e4be958ae17e2fed6617e5992efea8edfb9648cf53e57af9e7cc3ca8d3aac3f7d87c53e41cb9bbd4f368d332e0a963c3385c18936ad7483a604f92b625c845dff82f25af0c86984decd9371ab555d57de146664faab59dfa514f8bb8d397a987bbc8dcee47f0cfa34daaa712baa1e36c9c5113a7f47ba8c4a83db2dc79ae93688af7c480dc8adf1be2d7f5453e669be2e8d5dd6961454ba8b40c6efaa6ee53eae9efbff43c998b504c8ab9eaa2dc1eb2f9b5919a0d40955ae567074e69154ad6f6e8d093dd3b554fe4c99f48c5ecf76d9952cc9693acab000c335ba8e26b4b45a903e8f80a6049558fe9d855a026aefdc649d295387c63de075ccb32aaa20227ec6f79d7a5bff02a9c5fcf35fd993f8f1209f8e31c596057e40af9b178ed352c2fd955edd52aad7d6b2bce5026a6d7cba0133ea85ba39b179f694788c9215b69fdeee1fdc8934a1ba24cc7890eb479af0df0f39e61b0a7ad921bb72a8b495ffa74c62c880cfd3f0cce75eb865a17ecb56e0aea501bef8e12d3025185ba4cf8edd1b0f297471d58c26516 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 30f4095015ba88b6d969672ca3f438c395dacf7d476ea7a9e805ce932d270a13 +public_key = 9ec9ffff176a27197eb4bbd1723eedc7fa954c75f698d5d105b5c2e9f7a2a887bfb40880f96f4e1fc67b1b43a51139ac6025b9eec6d925e4f4bc8fc58b4b617618c43c99b080be4e5b86538d29700e1ccb4f53a52beafef566b20d8cce1d86e6dd8e398d14abd03964940c794f7ed0da994d5ccdbcf29bd4a8a7e214e7ab9285515ffd9a7b486ecae5c84655c9ee25f55c7e5c3b784d9c24399327ec604a3e2955d728396e768ff2871dbb9bcd4b06577b3636c138af4e2139b48ecdd5563e52c7bd40cf1bf408248675eb90afb66d6105537b3e6c7c989746f43c3b284343efcdb60fe93a16ce71ab39c67797113bdb908cd0f6a47f17ebd8d924826e5f6cf98f34a25676d82449f94bf85907697896de49aadde134a936e35f06a7802466d08c23970818318bafb55a1762a9394dda7a49ebb4b38469410f5945dcaf801bcf5ba3aafdf819b0db194b53d4f47fb5d65ff99f73f7ed52dfff510cf72edf809ebcc687abdd910d4da5ba7cc956ff6d9ffac8fac8ab95b769a465cd743ba2babb26958ab9c3494e3f9a0c736c28a9cf84f5c90c6ad594485a9b339213edebf7aed105d4410abd9bd063b4f2f3b903c94dc75d812ae5cc885f7754d476ffb8ff34f39b557fd0602987581fcfb1da648dabace5bae590b5cceb8fc20e74795d7ebb718f6ef5ddbba68da447693a42d8af3256c64cf3f7b47dce576b6344ffbf8fecc76e1434d5e448aa8a3b326584ddc564977d4be65ed8f867f171cfbc3978d5990e76425ffbb81645959b8092f8fa54c68a006eb78be78107e7bcadbf41b0a9e3461579b52aac5c6c8627dcd33cfff7368da523d4cb7979cb65e7d56643856cee87ddbce12799559a97e68aa96a18089a6c547e87da949d6fb8ea876aa029faf409bfbc354f05ecd8fed46905af688fba59fc7eb8313ea19bc8a6350bba9365fbe1ddeb73c89964563fe588a5b76971dacba69868b588cbff9076532d6a8fb53e6dda4c85c2945a2a29b6ead3900f5dabef2b44375ac36bdbde029af0cce58353d8f7f1d53a9a15e0e48f7cbd1383a7de8c0e2fc375efb6062cf197a6cb094ca9dcc4ff0418c24a9cb893c45423447cd5eabb0b9b410d9e44013543e5c3bad525377cf8d73d4a5f4b2fbb24874b7f2e523cca731265572b487e3c4fae581a617437348c39df00bdd9460aa0c7b6a1a64ef8e5fdeb3d4d6a296cb35dadbd0d29e7df04fb4848ab3ccf8a2a38d44d7e9ccaac45c513ca007653bc854dbdb79181157aa28ff0153ca3564bf1be77acebed6bce0f531ff5b7f5453db11e9364dc4e97ac7a4a5f87815b5eb62fe29643aac404fc3af35afd2fd7db0a31954dffef097bae37bf383ce54e88e54b44d7bbe9dbb2143bc285af1fadb1b4fbcd3ea373a077c6107ac2800c89f20544cb7a83bbff6ef19367725bec989c39bcb4337deabf7d63efe2b3327f4ab0f6457c5f3869590c496659f3993cb2b11d3b8e8a41cc5793adde92a047972978a2ea1b9e354cb136ffad8928574b3ce4fccea4c037e5292c9052b69ab2a8329d0f938b0ada95dfd9f816a24fbe3f4365af2e3df40ef66f9bf6b39d54ab5d45dc7cb3cd6f64537a8e5aa40f8232bc89bb89bfa2d6fe351a3c6401b7b384ec61a83f9056f3665e523a0c28d48e778b0314c1ec2a83ee9805d0 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = cf31220f44de862e1719570e1b26e897790159366a385452334fe24cdcae28ba +public_key = 5d4d5485e5efb10cb0f25db9db466c54ed70f584904aeff5047bc47bae5f630a6d62c5b17a9d6ee7cd67fa3384a5dff748f984ec3eab4cd69083da31a5b45f586560371bc99113c44d05828fa7687aa649b36ebeb0eb4eebcb8548139bbd7ada844ca1e4e59f3d7c4372ea8633bf78a7e68b5913f012c5518b9df1bd5367567d77caceb4a50944ea1a834bc6e005bfcba7f6401a57839a3cb85c3f644aaf545795eb4a2bba2f2e87f14d745fc6d8079c8b5adfb1928e3d51c5c3f329b1f5f4d772eeb33f63ca400555ce5351cffca2dedf68d78551526e8587c8b037e7ca290467e4a7c2c48f90b84ab8dc4a839f67e02dd559124d92166be3b23db41bfaff857c84ae45c1734375a3ea91032de4d29ac5901fbd5a44b91ce986e094a66089479dcac23b6f75b874e95eff4f2d4a97f2bf6b508c3a5bb89b9f0a913867c1295cf52e6df2d9fc60ffeb3ff4cf9b2edeaa980ff371c5c8e749cacea39f2c637ff5af35882747cedaed96ed93966462ae5de510fce12026bf0fcce0637d988b2c35cd7f69da693a7d77d5309e56d30c916ad6552eacaa3bcf396bc56668686ea9ae578e46658b7eb4b7365ae57af63c783974ceb6320db1aff4c3feb64856a781334c6e845e9e5425e1b4d581914c697f03e339dac5676fa1463e6ac5de4e522480782c4ec53bea2b8a85f667f17feee427afa607ddec1727efd118f4c17d42b199f25e4d919aac5cbe05b031689b1eb6e04106da1da6ea8a1da205f6fff229d9c6c4d95b37dd87c9727a2b611118c84abcd33ea9cab504dffae6e1802e60a575d5fd775d404e5aaf9f71aabfb1fd1964edfb772a9c4876fd6826a49c26e93f0b1846e006468df7eb98ac6fc008ebb156f36739c9a7b6c13a6fd89e7fe936e8b265c5ddd50e6548afabd52339dbadb45adf65559aed9c6ec73e49346396b6165e95c9c3a4386e4e69ef3144fd9fd28857aaea50ab8d8600f5c5ca33c5963cc00c5bec1def609486ac4f2bfddb8bd6acc6f398b3f32003e6dabcaf5d4a833e3ad1a6e7c971dae5e40c459ffe8db855faacee58451fb4c4dc52e70d4ca56b5f48555041cc828a7a6da77c435f05574e6cf5efc3c6057443eb77993c987cac2363c313dd89ef88f5dd8966f6f47a4d78a39c53edff73df178cb12fa5fc0f5a2687409a785cd7dde9f586eb0b3d87af9e844a69c2a8acea01becaec8cef7a67425b87be02e8db67ca6c7dc3b45b04f6dfd33dc6ae3e763e907ed6329593c333466d9628668b98422c985182f8c0952cbf516ff25363398f5e6d23678b542da9cca38e21c6be879ffc4fcbb90a4f77bcf8d992858c5498c6bcc57dba8fc197bea78d3e7975544ffdf33e57b3ddd29a5ca5bffa918746fd9a84ef2dd8dcafd432e39b70fe82ca4df43cf350c6f486832a807a36c8a934fa5c49e40eaa7a45bace0086a86fe36be28acec756b5e9a4722563865abf50c52b56485ece8d4fc39ceed46d2b6cdb7db79527d7b73d73f0eb5ea3fc522908e7eb04d17ce97307c6607b4ca17cb3d33067dd4f39bf7699814716dcc04b33d4c9e294f85f4b7e7efacf88e384ef70fa5823ab8329f56d9d1bd5c996701a15da387362db09427d5587e785e131953146ea3591818f0dde74e33983c010419218b08822da9c3c62eae1f2284801b3e4 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = bb5e65669a44e5d5c709bafa98c16ccba6ac2c4ae923334f69a11543eda64f5d +public_key = 7e395f02d56d41b5c5889bb6b3fe49426afac8bad6ff23a8294e887eee99b56c91846392a026b50e87453f44588ee6ad4a443f55df5ecae39aaf286efb47a760ead1b7ce3fa178811c47a0e0be4110fc6482543e8a3a52abec3a8e7e76aa2868b2d46cf68538c285e4222a34372cf5fe93f1852d6e5abb699e6e426027a94268ed0bbbd75a367793d8eb7fece1e2f6772d8d40d37ebe5d07d00b43da6c874b47df6f51db8f440ffefce7f613f8c22d15c28a2b38416ee42c148b07f7362eea4771959b636af15b1351f75d342d3ad71adbe6dd8ab50549d96f295e44173bcbdfdf3dbf71a814ee3008a742057ef20bfe78f8a3a4cf52f6d38d8e85bd57a75d45ab4dc21b8033a9fcab6f3866e8989f98560de33004d3409f233020899341bf591e1a4a0223a79f2db4b85c632ce7609c0c45a0246251468c1b7cf07173e5a555f0c67e8f4c5c706643efc7e953ee9eaa5f3b92e6a6e7b2acf56667e2434fae8305780dcdcaf00c928979f9a1648be9b47f87fe44a4cefd9de5ef347875e6da935f0bd043abbfdc7b85066a7836d442872c56fde4ed9a4ad1d9ac6a1263e079f74b273ca129f36a7ae463f6464436f5dfa70cbc2756bd25234893c5da2898345e588b81acd955e9c5017f517d58b0a3e4bfc993fb727c7f2fb9f4ac77fd4e1d4a8f3ab8130da624d6eeb6aa7b4553aeb2084361fec03e443ab99acb63ac699443a638ba9b8013c7aca95acebc9ed7cefe8be5a6ccc74efea7cefc8adf5fee885735dd09fd3cd94cb4c465e41d7aa2fbfcbe3eb896c34d4bfa3580bc63b73265581d87618c2d6caa9468c65bb1864be8f66d413d2bed3a2f59f38cd0f7d89124c569134835140d6feff890930fe9fdcbb8b118b206b64f2df5fbe0b553665c32831bb4cba3762a9e716be65e6b3ffb31ada5cb24620745f732bc3c8ad7a2c3243c634f4af32fa922787f7fe44df15f99db2ed5f9ebb0c5bae8b6c6c73f43390af9c2454442110aab4ab6f9c803d1dd38318c43a25d269885f970ddd8ac1e69e8e59a3d53dc8a44873eea97c31f44e08b893b644f84d79e53789f30c29bfa1636b6b839a4d91b7e24fd414c2eef2e8ceb3ed586142fdfec37c783085874a4f33313950e8fce946778e044c3d245a19c29b09b8dc3b564e6a91eaf3313fa0068c7a4767f05e9aac3e8b99b967f88e5f81a38b072b8c4e194794d4dbcd53667155f5e856d48e56cd08cb48b5fadc61655b881abd8fbb88338ffdd640d3f2453462598ca6628eace033c708ceae986dced165597bfb163e5493464dc507d97befe4d29ea850b95be6fe4f97343614437d549b8eb5f83e92c2c6ac2474686a9a3ee556b6f26a9039866187df6e25a60b5864e963850cdd8f19e2e859b5c5c3714434ea53bb16786ddf8d3703e7c430b3bdc0f5e6c6fc09744df1ea6eb91edc5192e83de05b294ad5b58dcc251d8a2911c6e71a635f5179d06d93d33d8cb332c8b836cde2983f61bdaa43f4e41541e8b66c641f834c949e77fcdbcb59ecf7089138a2e07a5b40c7666794fd8e6b97685bc4a4cfa66aefc3505db278bbad765c8c775bacf38e81e6e530e54ae7fdcaa278ea01b05ed0d8ad33d7bd05893b98da8600548ef1c6e600b1787bbbc13a01210c0764a4a2578d4bf90a24704178f06a4e4b110f5 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 9ddb3aa9c7905d1a438c93bcf78e3e321813580371ab4e1289e2dbf3701972c2 +public_key = b5e6d22f0fd8e86f9736e6e45286e9e33cb9270da1e3aaf0b25a5b16fbdec117de5d566b28449bfb38936f44721ee4f8ced5768ee647a87eb7d76a30c7e5563c5e5f5aa89ffe994cffe9f77b0695049c355267b3a07c61f3c5a2c0d4ab8df7612ace9f44f762b51bc0374a43e6f6c11569d1b253db2b77afc9ba4e14d3658607387dccfd12b99ec1cdb0c38feaf298a6ebd9fa7e6b97bc56d674a3ee21f68377c8303b24cae8d5ab720c79c4399414b5e42556d3b565397857a7078b36e25af62c09d80b9fc034c76614d5ab455b60b3b338860d946687e95cd587942342a6fc91bffe44eb5efece186a422b85a213c440ddc361bad0698458f5c5370c6c553aacf3830e754e3bfe2785bb03053e0c4e4e482d87a0276bf2e8d5cf477378ca34d90ded21b433f33b49a8b9bcf86f45156d558fb9c3cd17ee655cf50efd4b664ebaa278c1669bb49ca3ab4c78cc93ede37a2864bbedc905ef3aa28395edcb435dacecf84f562e6d3bc61c521145ca16f69193be37ee47ff055df527bc557b754e187355a38841086ef6766ea6b1f59e0429debd6d4ff65afb09bf44b57abe85fe8938c5a9ecdc97229ebba349e5c653a84b1a970aac7343ac98bdb7bb877a3170e8b1e8693fa5089f431f81b5763865c584cfda6aad7482d01ad520d947fdebe739478660ee78fa9dd570d4b2ba5f9a42b5e4a879ec863ea272ce8e5f84380d2dcd9aa9f052df9b5be76b2235b5125e4904e3b284e8854556334525e62ebeb09894b18b4ef7992f69509bbc5e8758015a5b810569e544bef9398f7d195a50a958dd78bda187cea0b7b2bdad4e2ce9ddb634a3d52b734f2f4c4d6dba3d8f40d8bf755ae5892a09a0e7faeb2424402c45a0ad59563ab97ed906a1a15b8c452ff19203ce6826b91eeddad71fd89ebc5163c4e6c1edf009a7a5440350a00a7b4a3d9ce39ba26df79ece038f23f4b4301cd1287a51f5fc619ecad4ab1b78e6396bb24cecb87adf3cceef7e3ea161a480b8f33734cc63eb8fe9d76bab75abeab44d5ca61b535b893b1cffb678849751a6a4f199f3ef44470e543925ddc462d8a07888fb8034e334f547d2aa474d95b8709747163bf28993ba16adc4fbd8bd663aea300ecfa859ca724ad11949823fbb55947b9c28cfbad547b0e7df966517eb30f3c8c536651e6437c0d4a314ab38a807d8929cdc2b864a3a67397a936dbfb98fab3cd93554eb83157d0517f891a4357398fbe97686534c8bc80e5ac267b75f0a79c6a9ecb6c96c735a4beb9dacc9bb6ba2cef389fd821a0740199d9f76944d9295b5eff73e70bceb0e1644e3b4d6863d5f8a16f6b3fd5969fbb4cbed7c6106f23159b3471654a88ab58ec3a649ff944625820f6592c78ef6bc085dcf2e6fa718d89d4947acaeeac15cd0e53782a01580fd967595edb2b2b3f72d69daa70c7a404e9accd33c1c1f94d31f42c739a3e8e577317cf3ebd4b4c5dd577b2bbb12cca7194eb54c0b7672a3f0bdef6dbfe5bbc017c9259e762a6c938d4bb0099aaea29d813a3a78e5685d83975050e7e9d6b6a80ad3e3d40e8d25c9d54c6de3f93fc13544d1e6cba3ff5f7b8d39d6871b79836cb35284725e733d8fc6de6a94e0e506e528a3cf9c25fd45802d5699f33205a71d6404704483bd2c82e92ba9457926a45bfa0985 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 26d90b190a6c3d0d9a86cf66005154e7086749e966e7187c249ccb9329fd3b8b +public_key = c65e70fe0945513748c0ecc9099ad2e9e5ee44acc26737f633645ad66f816d479466b54d225dafb78fb4f42f65f1f4bcee2ecaf7c7980105b08056cc429fbfe0da9aa6fdd865bda3482ff04cf6ae82dbad360a7c840b48058f6c39a59ae039d56c2bf542b6a589eb47c14a70adde731cbda4d657656915b91d696b309fafd92f45945c7b77958a5b6a3b6ccbe79ab83a103f591b757e8b68368d6a5ee63490604aae70ea7fb56e9c91a455429a6b1a6fe4bd28bc717385d3cb8235a9ec05088c7939bf863ef5dafc3bc36847916543819fb530cbfb879f46988b8f864f5a2b5f3ed108c6d2f5435868d944d64d811d78a4c6f1f69de2f9d8a17b9fab8ad43822ef4e2f87bfa844abd0c6b0875dab76d5397f2cb0060b31af689fc97ef249d46374848f496b360e733fca9e809db8d4dcbab1413da4bd18cfe37b41cae9ea67af63437b7ddc2484ed55acb16ab95a1a8c9345a898e89c37248f9768524d6e6bacde7a8dc7924f37345dcc32de14f73c6adac038a133cad1ce2481ffb57ba153826a7cc4123570293c82082b6a750ad6031cc7fdbb9032fedca94aa283baf6eb3546f894b646b9a85afc5df3c5e3dc6ffefb44d287c64492aaaac50cf6558ef9b56b9541fbd9133ffc2f6da11ba3d4692a749cbe74cb47679dcf94254bdf768a7872f698c23493fe9d8c9ff95f9275551b947bfe84780f86c1e0cce05f6cb7c953d369b58bbb07b3b0c87d864e618c76a43e5fc98a18e66e15fb4497e77beff2e7bdd2f7fa3f370ecf1ffdb4c02ab550d76447eaa69566e118a46301b544b493c368b5b77bbe7c5af4543fa6a8c78fa46af39ca58d46b25f9684a53d0e59fe1b8596f55334aeee5591dbc4b51e537c88a5113458f187a6d87f78676bdc85cbd17416b6e9543fa1c9f4b73eac1ddc55571f7548fa8ce0d9d125139bdf13428e2c78066d7a4435ea5f289be4e3a2c3c95c5b5cbf7c87b4a7d87a39a44b672bbe9af8343ddbd62ea3a039e949a8fe51c9add484368f1cfa385cde3cf55685bfa4b959f8634ed7c437fc9c044b401683cc758f722c98583eef4eae4e4c1833858be987672c557db87aefe4ce2db8a677de408356fdb35862dc0cae95f88ec1f594260aff24e9cfc558e3be07c98f78a87ba7d3276b455e15474d8af83d5738d4b639379d77e789ddead3336e1467c97ea57118d004b9e162fcc31d39e2646a9407adf248fbbf28dac4344bd81d3f7743335b9efa4b80de3d5187d64a5b6e8065b64d8c6580b47e657fc8f5139268145ba8af3a02f59acf78d693cfdec2dcc087a99be036bf7e9c8c0efe5f168c508bef8e33d951740a9b0f13f1e35cc01328b7ba96d592b566cb369b2105ec7ae583d26652db7f9f07f5b8d59caec65aae42c7c9cbe73c695d4f2677dbedc542fbdc67a95c9f2eaea08e55979727dee73e47a4688c8f2dee5aab48a5de862506cfcd297c7eb6ea9ed4a54fd3a2849df930ce5710afae44afdb0ea4d675c6d5354f5c69f35bbb7e4c88b3a6c333d90b4c56b7f89963059f8cdbd994373fc1344412f694176cfeabfae10e035bee6abf546396d79472eeeae64bf49350f54c2e7575506dfde4b4f721b37974b8f66c49b57c6837b39af8ca489f02fa05307d7163b35ba6a4c5024b70ba27db0de8d64bb8b55c83bfdd24 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 7db6d1a129d6123f1f805b79ad3b413012ea86aed42a05e98e7b1f32f9fbbdec +public_key = d4becdafcac7f7dd8082ead95a7658b3a45f7b07e8d4c8da3a15da04dbf3e12ed300bf731b2c35a9ecf3c444e977be88f62f645abdfd348bc9d2064d584d40147b416139e4d0cf954f4e90905446e5ab8632ec96145b917dfb4a9dac62b18cb0120679e739901d9bca673df4336ad83a1eaa548f8d6d79c9494f5422d3fec57ec2fa843b54f6731fd4d14766e2a135aae5be46fb8f9872cd654c075dcf5ee90483c3f06db7347fd0a4a39cfb6787ac09ac85f4cb3dbb494727a20acc8a1cc9cc765862b0e4d2148ad8a5e4aa6e679d482786910399bac7a36efa477236b1a01baf452badb4fe84d7d6ac6ef64cdfb89d1ce66a059a4659e8e37dfb3c95cbc9e8d86e064cbfdfb5dc6823da8e9ff58407bb7c9f6f7b9dfb542d9f3ab787852dfe88fb91e74eed4a6f51f7b574aee5797e98eba1ebe6b05df81596f67e8f6c0f33a0519cf6e6533e19fadebf29474a23ed883ae89bcd3b836ce6c34c9ae8aec4d905e69f85b8552f84e14d9dfb0876fa6488e75e9867b5c5389686788ff10e95399a1733d2e78532b7651ca9704bcd63df086cae4aaf6525d094ff7054f34e2849449c7680ef1ca1a0ac399b0ea9b74484a967592ce8508633d5835e8415cf47bb7680ab0cfb04a35a20a851b73548a8e4cfc2b84cb5fcf4108396c28498a76e4790d56bf9deb9f9f4dbf574c4982e8eeccd6217c9bd361baa5d17e5e666c2d4df99346a79be0bbe4b7ccd49f948a60438525ef9c126aa1f38757199f2c61f4729fd9fe5437ae93e94ddeb81f0d744fd2b9b590cf33e2792501b49339f4fadce6c1e5444dbd6a8240e6b3afcb46ef59ceeb49728ac541bbb6bb64b7e196c599116f8c8daf2b1138d884842c387b594b544e5d99785bd6acc3b5d80ba81cd34739b2daf11f7735d645da0ff5c07f8af9b69d2525ae953dafa58d6b796e3695b0d6ad6d7d3dd26ec13ddeb9bc995773c5d2ce59470c765c3f5401dcd7885c77bfb4ce5d7f766f0ec7cb306d2db0cf20d599094bfec87e8f0033efb06898a5a878d4ef9e3eb55edce14a1bd4f4838d4797fde4d9efaf473c3d4d76f4f1725c82085ea9e3e3cbdc79acaaf6548587fb41371c5f48a4ead4d37ab7189685aaa054854fd491a0388ae4b7af425996aef9eabafb2eba5d3518c7c53cade6cefdea8355a64fec481eb5e663adb7a3de4ae5cd981274d902759af79433817fa83abd5d9e4fc1ecbea3da33b54066d1a73d24a4bed1437b37a83bbe826d75c04e7275a6f58336905937105e63a1b0e7f88aeecf0c4edab4ea5dae3856b6d6e2a93331776f8198b49d35e7f54b9e82e4ba87786d517dc94a07953893ff51204b4c5af382cc7889bf84924cd9072f86bd1c5879ecc3a37678e6d13e569cf4012578dde5ca01005b2e07ea4a1bd455a03afbe7c366cfeb086973038fb5debd793a303b4c867b61187f733f66574dbdd7d3d3563c389b3feb46e98945a94b143bfb0d647521f4b58f133f6fd96f86a44890929ebc70dbc7578b0169a45c17ec77f38dc583788facfaa130da7353ead57df3b2057ebb67a627a594baaaffb1ffb75d3dd30432a954d8ef35b9f78857c3010a8a8907cd70b87d60fb831852e40770acb92e856c8a95e163d5181caad6a478ac9ae82ee27f7256f4d4cacddd43f45cfa4de4dd067cdca +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 1d129b27be7384c359d04311fe5c44917d1fde4bfb57314f483ac617edd5ac49 +public_key = 113bedd0a3e3baaf5b7094700639775f89b8d13e4ef00e86adf7ceabac36cd9f92c37d717f27caeb5eb1b0eecfe6b6a1cb1a7da53c6715c9c9b2694bd5a581b733ad494eb229fb7a17ccf13b969935c672d0993a94fce70bdc8b7d9dde66bc6514f84fbd8ec7d1c9417b79a82e5b3980acc793ae9c47de3a2e75a3af89ebec5def7555793d94c0ee1b9e98a5b6c52777e537bfb297f68ca9524a4438ad87a0e95f79e474c5be7740b7867d8b04781a2436a8d343f72f74e236c736dc3c59d5b326563b9c86798bbe4a6caade67b36db89a82af79dda80e6418cafd6c435e39095bb82ade4addea73b3eec9159845dea3eb233d16b93291a4f1e6a342473a71df6f9477183e8f34b2b7c8abb7a3b6e526e07cc5f29d88db944e7f9bc94c38bcaa58f34dd88835308c742875cccf59f8132e99cda3f148f48a94c5c2262f95890bb4645761d4cfc0f33ab3e21feaa56b573e9c6fdac37c83f678ba7e48ce573a245bd487f3cf771bc7b7ae3fe53a6ba58854b87a67a7ae7d6b4dec85f7c06117eb4debf7b304d5dd5dfebacb8255ad568d48b2d299bd841e88886a65aea5cd8d987f6017a2f449ff456cfb4f9b63e6dcea27ea38f2588b108d86d7a5c5e5bd5b77dfb89198f0cb8851704ca6d83d861c6efff0bda76c6e401e23b01eb7e0c5e3b73fb7e6dfa6408a635423d6e37269fdbf174d6e9eeeef7c4d885bca5fe669234ae41e43810beed235cb59f824728bd7acf17765bcd354a493aa60438f08df66d728b640dbd7d60f75bc36d5fa6c964614b2c8143b38be84f3d3d66876f149cce8c6038707deff0e3eb896b69a7d588d0004497e58d8d9def253987f010e68ea758a5c3fc196fd3f24ad7c5a546a6617d84cf79e073bc6cc1cb372e385cb8f7c490a42da1dd35bf735c634f031b8332bc57765ecce489f706f1cba0c7cc390e7bd3595ab876c4e397c58fd3f5c9607b0ee39692d3e730eb4744e967e7f08e4a0dea5467ffec97d516b39f5628ba782cac846bf429c3cc0ebf774804e4e8d35cd4b9ec95aeff76404a5df4790f4363104e6a0d1e6da48b65bbe9fb417c5ea5338cebe36c0f218bf27968c05d99947e9b44b4b5b2934c538f85cd7c8b9e3d3e638ee4c5d0f79cdd6386f2dca89a53671fb2f0424956559eac209d1ad48dd1a68b67693b186ff6a232aa1b445d33a9dd20867e3ca5bff94cbcf6e837b0214d4b705eaa2c5f0f93b901943c918393f2616e347bde93ce9ba8a48b5c5cdeb0e0af41ecad528c5b38ce3fcd6eff586494734fa746c5ee75a3d3a52befec59bd3fc99a1ed0bedb01375042d54878a6ec9dc4425945aae387e7fc6cd399c90049854d05eb3db79deb79ada2ebd4d062dfdacaa98357fdabb4f7b5733bf1d1693643c88bd265af038decc66344c9ee29c59eb3998c6c70ccf03257c2d16e15c7faec35b4c8774cc7936c579bf9fb4bda5c677d9363b73f42bd8dc9e9cbe57ad817cbb5d06fc7836af6ff4ab8ccbd7c9fcb7e3e6d1b31e7e6b7f42acbf4ea96ca867b597e9e9b45d0eaba9b54d2e3f3df8b38d3d37b72c2790e114e037355f274cceac37e4a92955b31c55d59d3a85bca55b2bc22c536aac2f557eaeffe2234423e7bc0894bb5f846a2dbc4a0dbb11c51840059ec11bf6cefa3ab473e1cb0f0bd17ee0bc3c59 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = bbc773ebd2df42c36ae05952d6a64c63a5dfb82ceb3ef4f8d4df3a30ec8c0467 +public_key = dc0dd2c0af8b08ffeadc24fc762eeb9785aa2109a795ab792de4cb7c6f98a514f00f8850d32cc44e64e8286ea1c9c9ba591a9fa6873a620f5516bd68099bb1e63751c5b887d293d77f86b733e4344d13310dfefd234fff255ade92779a87067d19c53c70dbb928ee4e1f2892b527394a4f8eb4d7dc49da8aa7fb87048961db4892a6f89f19fdbb69347b9585d25a964047ac7bd2c7472838383b6d72f8338b23bad7d6b7b222ee8d4e3c626429e6106694316affc5bb88c6d664667680df556c3c046398a883295fef32ecb758bc64cf246816af59231fedcb67c995fc72cc6b46bf5ca9ef3998535ac5cfab70aa54318f9532ddde38a5cd3e2f05d34d5fbb486ba7666bf7610b822975c41243eed6c98e678fedaa1897936371113a4f17d96ea735a5cedde9809c3908cd3faa5dc00eba9dffc69a912e51a49e63f2a3ee1d0f71d59e562e0a87fdf7b7846c31162de7ef08727dfb68f22a8585295659ea358dceb85c9ab4d107413225b825a8d4b31850eb347e1fd37f5435617a8ad7b163f1cd2d4b1a6b7c30d67e92cd88a458bef5cb704e6b662189a9c0079e224a94e225d2c1fea4df06d38ef6645cba38c0c86eaf673e9b36e3620bc2179e4a988e645fc48e33cb9ea16e82637439f2dea19fb5dcfd3b5e2cb8310229b74ecbaead5bd79d535521b8587a2995fa9b8c6694be6e53f343c97c16daf3bf53883e23cc390edd38e54f5639b9fc0943a404edd0acc8dc4dcb12e644cb74b9d4b858f7d676793db9248ea42368476dff602adb9ed08b35ff5c4d1ea93c94aa75e218779825401d859903de9822e9820d86c7e57562795b89cda97eba773070bbc502884a6f437d7ea7a45acd764cd943e0b6a5b61b835863d459685e294fae9ab867fb8ef1732d7e692a7affa872323779087547c3d8b89f368ce078acecd55aafd530547ea5bfff4fb265f11c2e69f4543927c845a3049f7a88513a78f303a6dc2e1fbc277656f15738c4368dec7dcff2b3fa1d179f4fdca5791fcedc2eb357edaa6337d788c5e0e58b4bf613473fe931dd8da9cb8bafe63aaac49e3936c8a939d4e3cdbeda127740935db5db4feee6cf4ad4dd93c1d7d95fba34b81380e5da561ccd39e3a8c15ff3982a7938bc16446a3ab2679a50c2e5c1d2ad8127db4ceb3d340b5589b33f7988c97b790dd4d23e5dacc3d1521ae1fafdb4fb33ce7d1fd3001fc6a76e36c0aab83928c145f4b968783b141f81f2153925ece3ad133fcd5f47b595cef1fd3ff0eada42acdde9a54f67cd3f1b6e6c731db7ed46f4fedf7e99f38472867a9283c6b294b0d80e4cf9eb62f0d7b052be90f093450453c05618e370b45f5ebc4c048d8fbb5c6d8b659bd236e2c297fde9034b11c6aa6d356b2baccea009dada0c775969c12fd5bb0c8a9bee5e72a9358e02cf9d308636b5d668f6bfc9dffe380caf3b5c94f59d887d3dc488280fb41d99c72d9dddd6be9935d772271d741b1d5c1e2f7c38c5665cd5a6daaa991a9868499830c1697fa53dbf4f95b03014e26fbcf83a167281e4b847eba8488bd0339e4edb0b67b1f3f0c25bab504993791e5cb07a9001fde56c9c93c1e9d693b9c22623a3eb156190aec47058ec4dff92b756f410d057c2e5851e08e31fd88af2f84b0cf79a88de834c1f17c7a5fa17d329caa0 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 5b17a6adad541efcbf5ae4b0c0452cd2ce32e4f0f8701801c5b63e197c1fcbf4 +public_key = 2df84a037fc13da5a495a4fba848ac92e3d2a98a3e55937b8b1b49fe588be32a540ed9db5cebbd91deb80edf4d32eb85fc14ea7cb3d7e62fb8c5fa9c85ccf58c8abb9f2678d29569f313a1e76da2454730261a6766945ce43ce40f5e81c68461eb0efe1f185c368f33b9bb4902fc5089f851bac83ce4fd7bd8be85ef08626e8df912a7d3344d84375bc5ba27ba023ca67233e9a916baae5f971576ee3b4e3c8137cbbc2d6e3149d6df1ca77cba73e5499f54fc53047741af2341d66f3278f76131ab47b01dbb4dea8f493b6c0e58f9ecf4c425a46d21755e93e5a80d0a927739848695be93444a98a45d03eee31e493da6ada1117b41d4ab3db35a7a2e95c6055ba70ffe59e7baddd555f59809e577087bef1396acd48e747b962205af92eb99fab8d9b4bc47eb93bfd396d102d4adcbfc39bf9dd2465d656d4f785a6788c7a851b107823b0fa3daa4caf35d97f1f9afb2a4e6dbb360c4b8f4e3dafa31ee9f94c8d5de28ed0b0f8e685c378ddcf2521f899a6b7987aed9ca5bd94909b2114fc179c6cdec2f564cfb6f89135022fca3028caf7abab19b4d45dd5a60721c6bb47ac53f4dcd9335e1f2e5473d3b4ceeb44be2bdde090a886d345b13a58620c49ca0893f23058412054ae5069c1014361c0bd47adff15f43dabc647114a3c597765fd014c64c9ceb1b45b3be0fbe9d5a55b0cacfce297581fb48ff0f56f5cdcfc84aae1c64ff3683de601d795d8fe57c6532106868023ed418b549a7398ca8b7c70fedd7cb153d2a65e78bef3a5b095ee3eee6b9f3a1aafe9faed4dd75256cdf76ab8e393210d3afae375a7bc384799a6efc5b76f287499c77d1368b8ddd2e9aa02f95e7fded22c4a50cdd817aad8044c7d2ffd786fbad88f867b63ba5ea9285ecb0f839cd554a83745444c3bb88d3609a9a4bc3edbc741d8a71cc75352e7872539bd6e942cd36a09bad374a3894d279a1f7c38a56e7c0298948c43db8c3a5b6aec3bbdbb87384677ada88d17564a7ff4dc2983a9ed3acbce6ef9e3a78502a5fa9540a44975572a26efb1e4f84d9bb528e538f44ae5216f4b4f2b5f08e06c43896a19d4e6c99c3b67756497594846889fedb6532fabd56804d7fc6d6c302766c6d1373bf78a188a6e88d0fddcec39632269f6a193de5ec5dca85cad6bc79023c691d5682643b6f3158f7e1bf453aefaa921f3b3ff4f309fd41dfb6c877dd79d60a3ef5735ab8a36abae34f4b1f729be4a00f753c7e4699572375e6c7b0379486852d6c09af7ec13bf6f7349cdacc3559bcf9d5cbc35d4ed870597e391ac4e5ddf991096f3759f083ccec443d4bc3d5925843622494c735a4fdac99d4cf195387eccdcfcc8a999b6d1b744a542359e7be67fa2df2be1660bcefe8a6a6861bae7c5725f55227ff38b43d538e956caa77daf9b94c06ddbf08cd9d9b4c1edb6c4a17bae3b3680099e911cf80c3e7cbf4bae1f33a7c70e3b41acfb2b9a64709d3e87809e4fb934d77b4c36f3f9ba98b44f394631e1af8915fd6205f7d67446d6ab55ce7b43ee118dfbae67086afa03b36cc9ad9b5b556e56c3c5a7abd92a689e2a19575f6b5546397c15ae334b55ec3d919422f28b70727c75fb631a2bbd12bd5971b6bfb75f80e14bec0494baeae3c7ae947bd69827e1fb86388052c3bf3f8b4cd25a568 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 61ab87659525de9656af41246f20e1dbe85c24e335e7ecf9493f46168bc14e94 +public_key = fed53d1954e9c06b92e51498ac36d186aae024fbd370ca3a420c48a765a5b99bab88a759251cb83259a6296d3c54a831ad0e47f3a97b8329474258b7be6d674776d5a3bfb8321f52fe54565c865e2dd96ea9e43b242fec27bbd2c348310acc38d9d583b0e8e05dc87897cf38069c689027910f9bcb5d29aeebf57c2b9c78f76866769cd699c6bf744cdb441d8c128a5277f39b32c351926369fb8754ce0e97eb9ab602f391c4ba564cefc3434dd5277ff9a11bf1d31a7cc3e4dc2f7e92cb76f8afa692d3e75aace66e7ccee69893c8ee45bda566de7f79c711e3fd53cdc783eb40bf8977c3063cb114b6368a8d1486a86dced8d146a649ed80751440f4e8d87116701987c328d8547d0573f9cd3d321ac07138a60964f97cd832dfb989fd99aba9cfe3e86decb4df5b385cd23f66776efa3ad4a8e037a544017f9634a782ad0cf5404bbb4f34d5a27a8500cd79e96fedaee48848e485f54af8dfaed89d849ebfb54d98ddcfb3cba46a2743904f6eea2ad1230fe9073d864ae46cc5f3a8297f5cae89331d64db5b3633eeccd2291ddd769d8f21277104d7816f56854d3f89ad1a5c73ce65594dd89cfb9c91be306724cb2828be679b989a3565759bd58ae983c1ea9b720ed653795537d454eee5df50b4d27469fae165c846d85527e479e3fa8d8875d47bf68d210f87c0a5b8a6a78c4769bb3a795979b774713a522dbb723f46f8f204e36b639e3b4c5c4b076d322af08b1f3d8295faa0db6ff8457e745b6b710b396d9ed6e635a37afffc5afe7df7c7d70eaab38d5448e4ab67e7cfe078d5b9f9979c6d7365cd24f3cef6b4c3be86ac6b792ef9351c6d40f423ca22e7a1456ad473273e3b53b92a23fd7c44556477907fc4ef982ad6cac9beeb9655ff9dc4fe93cc33337d78294f7d1f8ffef8fb0e5fe1e65d342c599c9a3fa201f3cb8cbf53a0559fd667a3d2cb46a4936f5cf9c4d1eed5880a446066ae0694ee13ff59e4f6f20da3f633f77f9a6b463e28d778d53c38edbf4247e7f4d476ecab6bfbda7e461ac3cca8d6ff4b38fc8dc0acabddcef56e9b27881d1aa0892657b12a913a8ab84037a6c78399f548e6d79c6a1fc4df1dffd0334a7e7486d999f8a0294c3029cbf3ee0cb8180db95cbfd140cc5de537aca62c980834de74e5d8aa3f63eb14b7d30fa31decf147747192caef38a3f53834ead1db35cab4d097393038957b64f7e6d4cb3675aa9ea56f57bf55a6d1fbc2c356b020073e16ebcbddb3692515be92dba54cc6fc712e65c74864c3a7ce67d8af92eb78496c4e8eb78b55db7964cde6a35fa85e655c95936d6006bc07ba6250e458a387bd7bb43a3f6ae6cd8733b66565378cea74d5488c2addbfd7a6dfb474ebff9fa80aadc93f67d0b98eb7a8ad3aeaba978ada5e55b8937ab68e385f94ebe3fbc6c26ccf3b0b8ba331a578b99b493d875f207cf78a3b4f64ee56fd386fc24ed4d6dc96ae9bb3055481b856e83df7eeca19f73e58c466faf25b28f4246c799ab8b045fb84467f882299bd6f2bf788fed94bdae030cfde0a27425716f385dac60f37a15b0496ed23c465a3ba46bcc0ba9b5b78c93b45cac015168785abe55ae6fa8539cc6b97faeed63847ca64797460ff5f477504df1b1894fee3e6bbf8218590936e0102dce8adf459d590355576e1 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = eca2adc3da1fb15f34033405ec08ef2f46163df4bfcccf8842c600ce0bc2026c +public_key = a0e473a9d639b1299251b46d07c79c0efeceb995a968b5b707b760d8bcb12006f36ef5b742f34549adfa7c73338a8cbf8d7bd2a83470875beec5845dcfd3a4067c420f8485fbfef86a23adb7373b9217c6dc17374897dbfd164a16e6fa3a76d8f6efb7fe78b92364a4b92e967db45ae29aa1b12cdcd67cb4299b32d263aad8af6eeb3a69ba56790fe8d6abe3935e8f487aec3205a856b4a8ee7f53b8f82a30d14ceb726be4196d7b6619b0e8a8870bba6070e3354583d182fb5f6f9938ab2ca68d5d719fdb472a88384f0fe1b1dff785367dedfc840979ab758479516d64b7a7e426e7daf9a95e7d585dc8b67d4f0cf182bc45a4fa9b4fb9541493c3dfb88fca757eccc5df1a9ccedacd46f47d62e3879e13958bcf063041e858811bd5779df76d2ca12b3d7f522fe7fe6f656158761767431948fa4b0dce5e3bcfc5ecb5b48e6134aed650a469ac663f7a4a742ddb87c4e5be647fe3881cf4647db1cbb8adaab6bb7f1e85e1f95c945bb002bdf10cf56f326b35051b8dbe95f45f9bc6d973b39afb3a3ba6e50196fb4caabd0d55693d3de390f48fb86ee99067e985764be7373a7fc4bbd5f8fb3105f595be5b6c2c8b5b5931830f8bd7ac7a40fb446ea756463c396eef9d0fdba2569b9002ee69f7d8f4c8b4fd314ae5b78fbd530d48678373453f4e309ea06a4c9f7ca447d639e635257cb0934e016ce937f732c1bba2c13591ccf4add16960b33d34771ddd984a8fc8036772c3b7c68fe261387ae545e29a89f1a28eec991d3161a95ebe16c0e1af8555dc3598cac2d80ea98daf49801a4bb10379a6cf9a1a3facb6f6c3d14d639fa98fa7297c6d453e35587488576db9cbff9d1c37f836dcba3ba90e4b779867ad97ebd3000e5ecfe3470d3cf5d65ed5ca287a9e1cd39c3afb72aecbc636dd5aaf68d61cd5d72fd2ec336cb8285b42ad43bf58949d05deef5937bfeeaf33de74e8fb463d03449ba747e92a79a1eac8dfdf47aa0a50822ae6ad4c9f534adfa24684d55fa71df461afee5cdedfe8566ee1278fb4867c6cc27c43bf835432cca18494db85886a5da7dea05e5f7fa7e5151dc401e9baad04ede2b8642313c296df8587b3f7c42cf4da18967a74f6663642dcf389c50892d6847718365cbbbb80724ce397c9d448be97842c96a24ebf6ce3e7c01fbb64c664fd237e886a9f7943e3abbe5f668c91c81e49c4c9db36be47f7c34b8ab6948799897855b22293d50c1e3d64b6daac739948844a9f99c449efec4154f5d77560671cf98f493d8a2ef8ab1665d824ed2b1c8e67a5da68255b7f9376333becd7c6630bcd5ae8def7fa7acc35e640ea4f85e78661b16bf1685a36c889a8cc99dce53c36ef23c2f17cbd8d3e351beba827949f8707a05324abf05aa71857bcbe79d405bbd030e648fcd3bfc1ffae2d6f7e04f490bc3ba237059aba3d85df2e802afd56b0f57abd44f170f5b16ebd69073a3c16cbec0bda5136a5f91acffac477ac2499f37cbd869656614e4ac249cdd3799c761b2ba5f38eeb25bde419c88937dc4ce745acc16c796f1ef3a52f8ec623a2a5ed59b80b72bfbe329dafd4b6555b0b6fc14efdb19b5ae57bca98519db428dba8587b53ca37e4b2fcfa04e3d6b3cd5d09045252960a068412f1bd67b83a217049d0685ec3d63d691559a327b2 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = c4f15bec2d7701339d0ade4835193bea3632edcf89e74992620d9eb623a0d0d4 +public_key = 4da6dc98359f5719b20dca6d1e39e6f38f9e73f79b55b468170b64f2f8b0c78879690ec8ec244e1973c7e033b7694e4c55d4307abf711bda630e678b184a70dd26ec4dabbcb92cd7fb634621de450664a444f8fd23ada4f54ac6c8ddfd752fdb2dffd5fe49a139b9c8194341f4295ef126b37f4bf2e35792a8853b60eb3f7fede31459ec455e47097da5ea6bed2354f019ccedef547fb8935ecbeba0844ff8b8d7bf2a4aca52436a3f993f6164666ebb3c393e7bf5b48cc728fc00d58d4a095d0fd4c60f5ff9e788d3c4f38f22464c7b4f59e45ac71e8ccde6e5738dcc798777317f9847f8357dcf2eb24ae462d0465f1d68f03f3b8590d88deb9c6df58ffa152da9ea18e3ec3777a6dbe1cb0f71292b6c662a870c39f291164004299c8254fa8dd5404e74cfbcb45175237ae5649f7136cb47b9c6c063f03f265bac5fdeee2c95a5a6df8a87c3333785e1b89ff94ea6aa5aa964f3a853f5e2acabb60e29c3a59eddf33830135cde49bc5e1bb4eb07b671e1ba6bfdb8f5774d6e6da854920a46914c8ea986b1d7ad328d4a4510cdce698b9d16954aaa0c52b7ffb5ff7b5347e84c3a04d4e9c3eec29df38cd5af96f5c6f0d3644ac5e71707f65ad6551f44378294778937cc56c6e06817d4bfb37e3cdcd7c5276777e37f376f3ded9ff5388c3a5a2c7026eb902c73f60def7ffe657bce34a47db43667c9f93e04ab9677b6febdb0a429a4435a9f5624628a3cd7bbfa8afed562bf4f3301a5f4e67cae6f955226437433bc59835561c57fd71ac38059ce45788cf42d4b6dc065e70685e9098f792ea49726dc8b2cb638763784d4cf3e189ec93a55383a8c4b59643626f8948e2f8b6713e2893ab3ce6be2350eb1b24432545889d5eef4d2b846071ce663b87a3475c01adc4f4eff86fd9ec76c0e8c05b5a26a696df86c4b1fcbfed315dcc9b54ca2786839f854b956e655a7ffe21c3c990d7a693a4d0b8aafa3ab73f1d4e1dd283cce59528477b6e089847ce6518f29b5247dff80ac573628d70bca649efb84fc3947d44bf29e05682914c1548d9521ec9b7978a6bd667f5abe8f1d986222dc9ab345ad2c7c7cc5799c15297c22c3734efe8a218c5bacb364c9136b8e055053567a1856c21b96a1a37f3913c98cc364bbd1fc4edef37e1853c5247f7a6c677ca4d8fac4d49239eeb60c1531d1dc9835c4a96124a0012cd9350353aac4568a94f93e8666f70e6e56c38371489eddbb3df3e53e6767bd02ef31ec2fff13f59a83a35101844ab389954f8d68f6e7e28c738ac1774edc6465eae8ccbabcbb4137e467d4d7d379f8d9f3e74c99665e3a9af00cec2733925b254a3acad50ec3925dabc5124f7c0b2930bca63ba86f9367ceba620cc0d719d752157b5e7dc098745e37db7316056c7bb37c035ff6436ed7da8ba0e9d3de260675303ea017f5da0f1dc0543f677ec851ebee4f594a55d07392c23a962248ccef2ff1ffbfc8f90e86099fb33f0ff57c9dee5ff55ba97675a81d37fd13313394d050b8b7925ef5e9e3d165847319fbee494dd5ca0bb8338b75eee6e8c484d8d036dde0be52774da149ff9e64f65fcafc59a97e5a8126830024767009bad41a3386dde73bf5ea35f3825843b59fe06b5fc03dc21f6d925b9f6d92fff175c9dd625bfaf502b4e2870961858852 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 28878249e2ac2b6263422993923a0c8bd05ce56e385ed13c943b03d226856947 +public_key = b49b9264faafe83ec0dee965aca8e966af8ff907ceabac477e2c9b6dc95aafbd531cbcb65d8b3f635ebe17ecaa89a5b57d1e98ea66af1f4461b91c360e4531c4d492698961080edfd20ed80e68cddb2a4e06c387f41f6087b7ea367af50b55dbe1567dc957bbd034b66ab65fd4eab2d89b8481fcf427a4af3c1b861c799263f492789d53a11f8508c86ebe7fd1c876bbe8ab8053b790324d47a2adeca03f7208cfe30be5bce95d4bb048e7a48d975ce8efe1cd416986a7b75ae6a31e46636abe4d3bfc5d2ff3d49f65a6845804d49e5f26dabfe3ca21a345b6dd44afa5636c37b977ff894869bf460dc62ae9941b9b3c3f6d64fec351278f43fd75bf287cae8aaa9aae0cedfcbed32bdf623b6f39a7f834a58f6f8623fb59bbf4efc9c57cba929a64ba9037eb987bc08b9e3299aee650399429e9bfc40742df735f7cb935eda73a41f96caacbb34324b29e64348d6d63afbdbcef9d66028b3340bae47b09c4285fcfd6d491ffa497e17ab6c17f6aefe59c2577764a1a996fd879e59cf3f2cdac9e9372b4fdbe42d8f9b8bd9acc8ffe3189a2b3f7f124895ccab565dae583c6c76c35cfc007556837963986a3f5f6f9fe0c9ea2d52ddb2f4aa6486b756ce5f1e1b781a964a21b9bdc72637a2f4f99fe15c1ac275fb077cf42f36453e7603d9ea649ed9cc01f8ed188639c7f47584b333003a2175bc5889f5111654f2478dc540b32644bd35ff38bb45987865f4504ebcb26163d513867d74744c8b562bd48989b3a328374a125dad5faa6fac09bdd22277e589fd6a165a9e3e3ea084b4492c664448aa62986b55fe8c84218e6a5a9c035644f592969fd0951b6e9aa583d3d1fa9f7ff6b3dea9f63e3feecd93e7cfc899a467d6746e9850a2fb9a4f9cde515623f3c48b86379c969969934ccbec4bea3e9796889cbcc66f85e9a85f0b3471bf9692f3c72ffd945089b9a262ac1a8844c38d8d7f7274708bad587f94a117d89a99694fd6f7291d3dfd7bd430eca692db54a970e9eaf89635cf54f579a63058d70b703fed2d3fa19efb7e95dd3455efe9dc5943bf3af11b4aa6d3f8499da7c220670959af2bffc89b90dda1c8665b76d5571d8a1b5c934ce4686c8cd47af4e6bc6e39b7ccc92cb076dea5dd1385fe7e9b8820354351cb377b5fd6b7fbb69f64c7b48f781dfdfcfee998718d875eb94866e7c5135358ea4ec92849978438c77cfceba1803bf9933c8856657c963e25eb76014bacca8ec9be639d93623dd167be87e1463e55cae3ad85e96f8ebc584f20bbdcd374aa1f657abea849259b4431f2ad0ee59b35486beb0a3d2c07eb4c2e840963333b4a3be3708d58e4fa0f67c886de9b4771e5554a5f48ad4c587577d45775f52135518793ea14582bf153c753edc36c9f51609a4b28559ade5a93203725a475971c9fbeb88a69357bf83f384577cc1dfc6fc70fc65411d73c67a66af878fda6ebacf46c633e7cac0f5d92458cbba0c3b69494c4c1cdda70f5cd75e6c1ab89b3216bb9cbef3050d515646e0251974a1ceebe729d5056ffa128ca3107938f6be8e454eb52f7944b0e54cd3946c57e7ae3475bec06791a9f5a83eacbb1204dbca7ecb4766e0a0e6c546998dafe5c2ed95fd7715b3dba61b94849dea30e28720bbcb90c7af7feb0af619a0cf57d173405c82 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = 17fc65f7fbd7c75ceec421dee84dff5a8cb22764a182db17e0ebe857f54d60eb +public_key = bca6f53577fa8d77c9eaf9726dcea8b8d87d62be461f33b7f7f5a003a8657297cd1013f4fea561ba879ffa85f87d9a838275734593abc2b842d9353906334d3fa3f4c8eddeed794c794ed421db45cab6900817348d67490cfe485e85a3e0af556959e5d286ab5243b62d3a91f8493f0b19626fb89c0caed9c7fed84bd8c849cd6b357fa65a2646dd89be2eaffa0d2c5e816652c826854ab36f458d9ee56c9f7e26a1dd3d823535997a15f55756704bbed29b86601e2853c2d34a192a9b2b76b31c69c1a048a76a6a58e48bc8e61fb1c767347bef8ae056d76d3de79d0977d2d54a3f78add2ec6bc16d71d9447f056e8470bea5e91a76021f42418fc2994a98d07aab29f8e8fd25e34de437c7fbc59469ce8bb8d545a4a5bf337fe24fb72f7dfd8a1b3009cc95975759ad48f74e234aef0552b8aa65cdfcac975495a85ce24f94f6a9c87d8ebd3ce49bd38274fcb9f3ece31db7757f4913bd9b16d88ae007ac464fc092f9bbedacf62e8f3d9d67e9b357821d5cf45f384fc923cd334b9dff579e325adbcfbcba61fb7ae9f69b3ab88694fdd5ef3fbd1a6a3caa5da2253ee2549ea060276b0734fa7a5d85d0098906969c421cbc47aef8fb5393b72590fd49edcdfa3cf87b9f7a4c6cc4ae791bee717478a5280a3b768dbbedf88f0dd7c1c09aa67d7bf84344d49398ba983bcbacb8c56237bc3efb3fbfdcb359bdd6457832df8ad1efd937e68b329968dcbe1c9f6aee65d22683b48fee4189adaab9e846b7717e4ebaf8d9a1dc76c388fdb55c25525343f6597466edfd6acb6f4fbf83f26e57ed836bdee5af4a8f1c5fbe359c61d974a4d57c2f7c49832f86ca37e16839b784d6782c13b606b87804cad969c7c47c8af9ce16cecff5514028c3d84944ec8cab4b4acb5b78e7246ee088ef5b8ae84f384ea2de6cc21e7a370b35c255c34556ff9645d4b420494c4d993ba4fd92ee34df1d36917544f0891acfca5fec361ca2186b563ed63456096227eaa738a33ab67df9977ce125dca7911e4aeb83aebdff71ed59bbc2e837740eb53d697cfabb4c6c4dbae19b6cece4f1a21d9f9cac7b71c749e61af005b3d179c393d5033cb4f8795de4c98e9e538fb9a8cb1654b1e6a8291847157d461f54cc71fba50deb3e132ec55ab6e6ae5f62e45fadb7a89ca04557a219dfb067d4ba6fe809b8cabfb3f5892ab46765cee838505879e8433fe2c91f373a1c6217ba890b4c5310f7b0d5e8f75b884aa9e4914c95d23ab53bea88ad438ea7f60ea87534ac1e8d6b0f8691eafebc728ed01053d15b49ecfbcd9b5fa88f840c63194632bd6ad12b34b5054eba08c879c44654f136cccbc7e14f7b409a0e6e0193cbbae635239f7df4b740b3ca5b32b741ea15a4747db98926a1f916e8f5235357f8d87443c93444803eeffbbdd5340c876d41f3ac1db59e9ffe7db71369a315600fc6801a544840cde5ad3766284a97cccf41ad73461f5bfa0f6645f04f880586fa6e57474d39f88404ad98fab63ae95e25436626bc66ef1dc01e65e035a7f88ad5f1b463886f8638339484563e9d3465e10b68bf7bc495d1b9f2192aea230a5f036c3c4bcd5ee36d9d0999ece368c01f037d8198d5a576e93a433e924b30f4e86dc76ae2b345932a0e7025f8ce6101884469e31aeacaf4d77e3f1201bc75 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key not reduced +entropy = fa0489f3730100609488e951e6aaa15c0f193bc1dbcfcd013bc418d6c507b176 +public_key = 2854ecc08ce8856568c40cdfdecd4175f564beae487896d8b71756367551a67d9127668efbe6db389877001b948f2c50cf6fc7ed73e22daa7c1889400b4e75ab959d09bbe24bfafc9d3659b8b4861e58feded950dbf57a47c87f79fbc144efd42004e7308ee963c47dcf7b8ea7faa329d6a7107ded3a2be5a799d8059e7c84477d9509e7a386ee3d94a0b0d69d9b7c39692b7f4acb9091f875849edccf67bdf86c4be9fd8763ffc3428646a3d33df4b67eb88af662353a2094d3bf59334bd9758a9439f8d8bdd55e95f2255282a73457de68a3bf49e9de80d5c3e0bb8f8685b3a1dacaffb88783bc5d62c13b79c3bdc3a20d85664377eadbb4783f9568eee5899fd8595db956a7f48d6f71f44988218777d348f3ae7d791be4de2a8f5ed124b964ed5d06547c740a5ab8ae488e38c464b53b700e6ba1b7648a14aaa21e907846c5df26ff61cc627473869167f4a4bd54e868bc04c934d64b7f2ff461aae980fb8d6cca7a9c4e7f55564b420887946f7a72e5de384e9ff2c70330b0acd8d9b7daa176529f0685d087b8f9eb464a776f946d6b06dd72a0dfafa7969eec2662ebb7c7fd9fed6b5393707acf26cdc2c827d2cb195f8cf730e8a46442f9ee18fc7577f4aafd6933450491ee24763bf6786d794d889c3005b3f3cfffa8863c7ae00998d2e3ccc1f5a6c8a933d5e6e5cf8faf312990969c6288b6893d5fe42ad87ab48336256eb87c74ef6474e0ef5b393293f3032da3483d397188920b6873f16478331cb22a6afc73273d865985534aef8f1d9dbdf7e9c10c8ed87a831ab6556285eebcbe5d3d5b6e01f78db26a54e47943d6c3ef916a552fedea39f96dff92d765d6ae52265010545162e5d9f6ac3f9b8cdfd0ecad4008732d6a9df9449b2017b38a6fff1197d7051f7bc7ede8e0b4f0dd54eebf636c31b3b63da9c00ece5be0c3e8847ebbc865f54217b99294815d88e94fdabcd1a7de31e38d37b4b1cc69bf4295e4f50ac9bcca9125e6473028571be535fdaf74651752dac691ff9af8c565d36378b260acb060faba9573b0b65cbc76b892435f94d65658f5aeb3309b424c6865bf1ab307b88022087f97f6882d4360ece9ef3d35e3059a784cbf56e47670afd5c1ad6ce7724fa2956bd830ddb546577ca5286e0f1c85af9bdbd575d0396d9e8ec8344e6ccb6df93a056644cb99f950ae9266948e9a66ebfa66517baddb67f6be5efb853d7d3ccb5af96a493c256d7a6ac4a74946ed8f738080b8dca62aaf658b6a972894e6ca402af3c09d2a6e9c28e006edc4d193361869d11173bc8b977560eed85c5f808373b29733a7d0488c5f99d364abb97179f0c074645bfdf3679bc9c2b3ad29c9d51a94a124a43689bed27c35b90fa3d3664aa37ab9f284f97dbcc7ad101fb5b6ba38ce1ad7141ee0518c74ea36ca6d6a44399a39842de45809f7e0bb3357bac5a294446463814806ad1633e85f295d28ffc913c9608324e74b2bb8bc03a92db6cc6f044d964a7e3e289ea9fd64d9b5c0d0eb43357495d0acdfbd4d69903bcdc683763bc4c6adcf517b7c94e4fdf65029bff55773421bc6143a38f584e0bfc5dbf21bafec948548a87667d95439bb78cdafc9da77dbeb4c816478683b5487a4ce6401ec27a1605f879e2d9c53bf27e165246401cad7840a077934b8 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = e7aa41194214caa340115002a25d547f794ea33200dc8a9ee0fd033e181ac23a +public_key = a9278597d0c32b74436bb246e27291976c4459690d0bf64f44456f48859517969ef6a65c95e55f3140542e7204cc1370b4354054678ffd7789b03c81ce0759f89155bbe210e3c730df30b6b8d6c5903650bb2674d9ac3bbe909743f54b624c9ef7c9722acc168b332b32e1b937fa8dc2fc3c28b8cc6eb43bbcf5828c0aa415a7202cc3b3aadcb093003a1ff8a3d4f96fe239cc4dec7aa635533e48053b77c6c649a312cc5067441bb8d97af2062758e02978db44dd3170d7d143a91866f79a42e2e097aa66255c15007b7659c0408a8f4c93fcc490ad119859d21d84b1a2f8108054e7bfc37a0cdcf7b2be9973f7336769e849c05767ab71bcfe8420ceb3227afab3e9d764e3f328991cb42a90119f2b1aa95a725ef3869690026d744e7298a48be948d1b65232d54444b67c53d27a4d128db9563376c94b92cbc443992426f160ebd51ac3a2bf445700abac99f1a09e8855398a8c6b580abc335b7461aaa5a664b4039b10c15391c160885f3495d291cf7f854be2f455ac3b05d8c385d86749aaf1c6a61851910378e1f402e7f2b1b4c6b344856fc51c3a41f429a7db6a0703a0f078130b4592fc59c8db156112e13e9ef85ae6cc20bb932faecb5bde57795e3163fd +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = 7e2a93bb6dda4ddb1003e9a868447d77a5ea223ab645f9f6d4dffbbefa5c8a0d +public_key = 596b2651851c8bbb4af78d0d934b6b57b6f58054708a7a71f0962c9530fc5bcb11a62b3f740be7d15264a168840ab984c390dfaaca03c38ce580660deb8286da090dc845af7a63f691871a17540b582033cc6195d2664f5359e0201ad0c941c7610a9c7714d0522877fc36a5772aa7492f8a061fef6288253746c0a98338c038a0868d249392b62a8107385536a1c74d1a4bca0841d88677f5328b692cc1f478a3d98a32f3b5a48971bd224241dfb67f714caded6bc19026a709e87fba8265f11c78f3b7c9e406021eb83204558065e4cfc45289b0a1a383eb23bdc73d567529f8e369b364ae9438c5b89c53d55b3cad61a48971c6 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = 76bed69c7b1f6011885373da211145cb9264b5a50134a51354c2a8f5be06db37 +public_key = 77b951081b67da7e7c32a0619a473b5758f6fa0e5b21bcf338a80cf7cf5798c79a7085e3a6c13ea99b2c894419785afe9b005a152924fc4257105011c770ceeb88a2bb90dac14949f64bfd25258262b8f3331d508288ca6cbce219b69487c805bb133ec66a10461276c486ccd8b5eb0387d4a419b91634e69152ee9888163549cf7cb945a2732cd7b341078e8a97996064ba3a54175045c64401d04eb25e4a539a82b39ce29b8d1ddccab74ba31f28c68c211f3e03107c066994681e3a80a6d82a487ed24366fa79789a42 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = 6d1edc7be0c8f9ff8b1ca62eca9cc77d6337066c91b9ac04766c9cc833e03ba9 +public_key = d753fa68a8a2e2848de7520d9b72a5f63ffcb014c7f8c7ab08c3b925729c2b2893b322ec81c1ff4963c0e644353a05ec16ce3cb025a6ab283f7ba802622a7b6c20f63121263b6d6f5abb20eb18d86a7936f8c0c5f56a555198d693bab1b822811a322d98b4e6656b4693cf1db390df7353e23a28a801110b77cb3e920739abc7b8451463e90ca7e7801e74a04de31eaf9bcd3a0708b93b66d9d31298d7b5bf086e297006853345b59ca0d5955681c2916b4bc1580c35d3a5ae0e2056f705252520b0b1842b97821aa5fc50660629 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = 7625b3ef9c0efebbad28dc6b15aca34bfdc4f2b93e8ecbac8a432061452dc364 +public_key = 83096750a176355355151614848711af1cc83c5b2a7aa78262c6d10205657078e78481e812e2812b9658029b928a537676f5324dc0355f36184037d798bef4c1046469d7914f7bb647a2d50a4c366231385c6ef661df6c16aa15327a787b115a4e165c41c98052457888d9a1866a293f7fb05ac6a81410e50b61729ad6b9024630a46d0b5a4aca0b4b610c39094b9e6a91deaa4531792a844441636568d1b005aa483cd251b92d1cb2afd620c7086e619c18e97b6df7798c27934126aa23116c5bb1ba8768976e870777e8b17f370887dce67ff99647ed634ee4398e93e26e7b30c2f6628af1658854391b23f993219974fa9b0019e4b9a9b1972949497eb076a6f603d2031fd5c520449576bd13ac8c1a39e4e2cdc5b11d371b803dd22b2f557f79ccbbf10c0e6858c13407496a1974ae599232a424b8707ccf350b197ac6215a42f9f52ccf5c5cf7965da25047ba190b472164dd7c9b3206696ee47dd93baa8ef3159b1130aebc6d5c6a60d2fc0ecb66aee0a2 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = d1f36787c6e759092521de965f09bda02bd60d990b3fb221b236c60c57264c12 +public_key = 39bb5c9e62566a368ba98f90c5ba5c3178b0291f8020e49b1a82f143083258e48b713007906586796d064d167a56a6364ed5742db8063e332894eb55a020e85faa603a372c8dcadb693b224f0cda13df7432acd3823f448bc8144796b57748937cd469087653023ad32ca7a731e90a8263d38bb7ec42690107cbf136c85acc26a2aa0603b168e64e81ab224474b5ef53b2a0e1c093c742aadca876e13cdf5c420b43757e543b7692cc97c3202499b985f9cfd3d87c7de6a3e09b9b07d1088ab38f8a9a87ce27a4ab567b4574cc95e67587b8a68ad80f08e60594512e4dc87e45eb63465953f5065491961dc66398 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = e38e66918ad06c6b64df3eb7c2c64e39f23db5ac2c81539e42bb983459df95e0 +public_key = 90ad188208b84f43f59a56838ae06847081490b4245c0ce2a2f0288a7c084af2d4134d78487a63a22c21311db23433cc8e60a7cdbd2cb6d1b2cfa341a8ee9514ea63a02a09a9bb595a45ec86ce995fa441977172983efa37fdc82890e4bf7ed8b4f6bb10c4d899ef4a72f414a92385650d3cb4b9518a857b24b916c4b2a71c8655856b7a96bee4bef6f50dc2d093a1322cc33610390a919ee14f6104957988025d480dae65c202da5b22258af89349e3ec6b48472920b7af04202cdf694881b33660926666e91f2528cc4de3ca34a32df5c938fd04065d2a6de6b03b23eb835e79b66bd68b9a48c87a245e72ccbda435873ada060cc940b327b24bc15a840605339719ba569f7b21c35ab7273209b77e9749a90a0f6b20631fe90bc07167cc658bc8da933cb9425d6b5bb6c67888255037a26fd592724ff1474800635712cf21901a99ebacdec07689440a3072be6b1abc19096834344ba965844a4518176011b9b217541103e10580c119460cf57b9c006c8e2a1df95604d869389c77225fd63f65f3c692364571395d3502798df5b0d3e719275b215a8893109196b5d507c4b904b3b029c288a64b1657049b391e4842e2e8befe22310030c4 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = 2ab0bfab14e3287e1512f002927672c6229b6adbf1c8f31b72ee90dc4f96a584 +public_key = fe19b4cc2786453b3a7d088e391859cb9b741e1b4a551a4b7b821850229b9aa955ee4686b27a4e31021114c812c7398030965f8c0b1820f1489eb343028454cc8c9e735a7320a0a0b44c43d8d79b0ec61593dbb0ccf9356f9566bc21b5e1473e2aa2658ad382f3034c25112e50f8613632641536ce6db3543a90cb38f2 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = 548c87eda498c4033938de91e98c50e3f370a74abbc9fa15571e7a3e091c541e +public_key = b4c64512b6bc6df9c7601fbc2ea6170e93912d7b6c7101f5317ef06134e34f224873c042a1b566432f0849af1bae8adb6561a778d2260495d11fed1c1f327ba2f0 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too short +entropy = 48db851ec75fb465cf42c6822abd73405a1d5ccb6b37227aecfba9b8a25369b3 +public_key = 547771c4c1bfd844d72b034765ac858364928024b86045df37bb1ce34b9d097f932b5263d2ce5d25140d8b481a48b9222b22524cb03c981576d477fed73098b058d7f58de050112b98ca56589a4bf686b2f73ab5180089672607abb833d2a9a176696ef72d9de8343cc5c6e5da8d51a2216ce0745fb084ed875324d9419dc35d99c69f461c6d39fc93fe363678d343bda7cdfa416fb5528d6be008ac94b890e48672d540fdc6b46e06cafb4b213a17884f687678e99a637732c856a388a2bc79298a14496449a274aa9cb9c08531868aad2fcc6242795c0050990b752ac15668560b658ca385624248110416a2625f92050c5d16931d079c76e82723c03baf46b91bb082169a7a21047ae6c55ca4b527c98b2f0213597e97cc64887028faa548ac24285c5e9a535b473593e96b3e18f7bd69d354366b402da733486620a4248b87442a647a0a7522c307c933c4fc66b4123a0d3465d9a06a16a20080ecbc1e100c6c90b0a38a609b722e85186611752b2355a0e7fa298f562acda8408ae3177a4993dc0863b05180ac915ae1d4393a197cd11430433541889655166594f164bec86751ffcb916e0075ef517d387574e7709ad9ba5260192e0b147105a18bd18c5700506fe382692d544278e2ba2922869478435255bd8530c398417adc301be923c63ae53cbfd13159cc368e4c99fc24b509f880593964f5650da53a8fcd776bf9722e364b2ac431a1d1ab6b1efa266738cca6c514c8ba32e2f4b137127d5834194a6413602b22fb17a81f82bb580613e8390d20879b56e1b17896a22150cfb23b205b68b661a52d54b6c353305a2870052f30a21f5955493a61af129c72d1a56980162b9caf94f42f80d1453655699182805be506e56c0c6d8081c3c4a37fec15efd413f8cc29e3772c88e68bed981457f59ab1899acc3a386ce145d246adc7509a2ed645aa536903b5bfab4b5997db1cc31826fef7abca0919b0e013ed497ccdbb4ce2635fff4c5f0d59ad193b2e61ea90fd95cc21519fbb1cb47da973dd04bc46b2094d0058811abc016486d3e72295b5b496692d65f916df48517f477473159d84bbb07eea8d447b2b9bd246a73326760916fd890e35f05489b1af973ca5f9ccc2c8a26edaa145a55980ed79c19d680e74400ae8c241d0681152f2128e7712af916e87ba118825bdbcf4999f2889fef1c76afa4f40052a3463ac3402ce7fe394ca2b506981204f21be971c1bb75744c61054c0fb2453f76deac45b5e5cb902a9a5a9175cfcab87e6d135306b20ac +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = b8ee47bdbafd6beed55b1e018c6675c0e91912f727baa6e2588b2506b92da3b8 +public_key = 5d0062ad244abe3b3a72c524a6c16372c86aabd585e73b712c06392849b5e43b0d2c8670ec604dc9230ceb2767e9f32d5dc11033a774c257031f238dc3711edf07633ba794bbe2c9aa650bb8e4818089a8c02170fa58a51fb82bf2e29afc5bad08038526f23f3742a192daa8f19198bb369811c23f30568b11a9c749171e3b389e3375b7ef6b1ccce09ce02185ec612833422f78869683352c7694795a5412c880685f72be06acb409b8980d7b2b9f220d1b04665f3623d4d97110eb55ea9266e985ce1bb85ebc5c6acbe4149963b8eac16f809a27ce565a4901758d30765ab674c7d4cc701a3346d24bf9c83069d778ed28c19bb21c355814a4b41ac4b514e98c3bf8aa9135c650edcc51dae8b81da827a07c70dec5ad994206f77a203d3c67ebe46edb4418d5fb05fac7c02e13c475647b9c55af5ff7af890510e3bc75b74c090291bcb5f6777aa51067b44b6a045a6af207812aabcaa33b1c63588d4069d849b35e16c56c966299ea2b4b7376ab1bb1b2db4430b838bd530493e77842393c60789b17803b0f173dc52197fd35a6aba77c3d3b77ab697cdf1a05e7d9c6f5d82a2457aa22f2b07926006a75217e5b9fd7a66dbf4472eef641eb70a9478899e793ab360b368a1278c34a920d97800474ad29cb790f127d6b6127fcd384bed26f158725748307659731315c690194a29e91722bdb6c829118c9a0389cd2a74b66898a698f1da84c24342eb0aa994125536f010935a90be97a3af5846cc00c8ad7994719c0a3cd478c150ab781782513ba417df33084cabf81cb4614990df074330c7aca6952401b2930ec28787246444c33a03474ce5e497c1c01a55ac2a3802a9efea48117450e63ba3de7c5a99a3aae86c0a0eb486a0aeb8d8161696449a10b79b88ff8bcb1bc29ddd59d8a4c71d10abf44f68c0c9b8cc1783501d236aeab975d000219240383d7484c0563f00b53876178cc5577ee3740d0e1b9bde97d4d8140f311165fb30f1982538dd30052722b54848ce461420f6bad21a9300ed408eb180294586019156060ea8ad2c6a4d5789cd5d9a48a9ca45aeb10c7832455aa5ef1b3797b14968a51032143c785db2b4c1c73ac6069fff324e69699966083c3448fe8530b4b63cb7f28977b201835081286704a80c357d9d0a8d2ba75c74601ce602dc6b58fbea07607b61985d599cc174644da260f214789f01ba089a741592b8221656cc76dc3656c19183d4fab72c7440040f198e80178fac10623e63a0b587daed75141a718bc4b81e84ca0ab061262b875a3160beccc4ff335ab4e58890dc269d5f33e55773a139b7bfef850502cac669435d17a17e36935f50197bf358acf97c026da64bd6039efdccc050a1caa322484ca8ebd11875f2878bef1338c7c6e78158eeba40d04956ab4912b5a103628eaa464e4cc9bac08274b5dc0bc741052629e822a42ab7f9f380016c530d3c233d1015927aa9bd521ae11a5af908204210413e9cb004562a974b016655bccb3e7a3c91b1518e92d55cc7e73e977e9736a34705ad217701390972aa15ef2890eaca90e10e3089853533b45c1dfd624f1f78cfdd88ee0f7bac8f359507481e5a48d5a20432ce374f8b9be0b39432a376ec5f44e3d641b1b7b3849aefb66bd91e3db9984d538db503fc8057e4291bbd177cfb1b97069ba3e6603ba2de033 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = 1275309a0e52464d441f3cabcbe2b27fbbd8bbb981a87b526174a834aa52af00 +public_key = 4e491344d49efe772863ec7cbc8861629a6a49b771779c8e51b02b66675e7e4c01200734cfe61b01bc6dbe3bc1417442b082ba90c009a997c045e5b1b5c41aa72a7fa8c9c90bc3006d91a9ed031d8e443fbd7b8686d4bcba416bb7995c9248b114198857a8059fb111e53009160acbce8aa7d6d40b43ac8ae9caa1e9d0547586bf54ab15118a91f976682dc910b1b64f49247e142607f7c06cd98b6a670aad00ecafffc51fbaa806b4c74165516b8aa1523c526f5b19c61ddcc64870b12bf291ccd8467fe593d5458424a75af9e5cde79ac7f934722a6a63545a1e72b831a7a27a15d8062be2ca91f803f7d146d6e9c27bab87321c7c4ab58c305049ba021413292b0cf38b7e27a2592b4771ac6edba6198b357775615ee8a2aaf927330a3618ed59773d98ad1b0b104f67641afb8e46ca51c682a26f3b796410655dc78c775b9768d9ade68a6dccd94206410b4252c65a2b791793343dc293c0695e9c9c7cde442a8eebcb2e7336358aba6ffb31ff9343ada2b71d96c69e744cef8b5844a48e55928db6ab579e9a4b59087663d9a1918639c4395ad877312c000ec3bc7ed693b5b03a32c68818fd1b8c32807bdf24bd34746d33e4be2c637325eb1b71376542782640f0467e22404e00615555a8297b286fe5708ca2c0fb5cbe18e62218711a74851037d412ac6a73d1d47d10812418a6950f71928614141d2715395008158605fc898b58f36c87db133657868013c59fc730010b79bf0cc22af72682314bfebcbbf1f4336f216ba81280d954c4c034615c25636d95782704b2acd5997758560cc209dc4b25484cc29ceb856aca342cab436cb354f6ba8bbef9ab7ee1a93c40312f4184603a012855bd00c8b55bab4122f6b687a62ae7b09852d9ba00e6be8799703f886959e472e8e1a54d479b74c13a596b4ec9c9226ee0690875865d2a99a715a1497354aa0952ec8411a32b5c95c2761b9961f960c9e47246e974176720cc11863be1a9c9fec97450197e89e077dd805044a669bb725815312e3a1b8643574dae1b27c63593591a3beaa05d1de6631b160d3f3a001e39387f45c300e8001a6c07485729e98c60ea3a5f0034ca8220002a5ca59de27601477cdd51cf9bb59071e92563003b88e20cdb0a619a37442bd121fbb86fcc5b787c52c3c5a6a9b42867d9f68f38e044733b0ea59c15ffc78de0c57df6aac61aa96f133a59a48969874561e7b60d2433790ad2666e691531479c7478a3b7a28530013e1cd4c5a30bc1041299a1989f0d32a690e46900655218485dc4266ef70ac863b8126423c1936a1174070326949b8315b8e741b45601471a350d103586ca34476ae385808c43eb58089631c8cdb2b906731da6f47ab7aa59c9273fddabbe49a65409618d7ad043e48b7e22c974fe124701839a8e56be77f51715e2410a8c95fad86426b59f18737612bc91d822911737c8daa61c5f816d969081029982c6f7c217627defa67f66e53ef1d24a6727b4bccaa659878c0f3743edbc0cc02bce335867900898a31a4b901738bb817b04a34dc962c27684c343b44d2b8c0edff0c915682dc5c42a352c538d4bca11a9911404bdf79a73c8349d4eb73f8b394cb15c5426fcb9828404ec5dc350611e37ed85478252bcd3ca37458ed350a3677a495fe2e516055ea54cfa88a8c392ad4e83d10ba209b1e048d45cb12cf0dd3d4fb34beef58f44164693 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = 7a7bb5b36c93d5c628d54563f043e40c1207bc6ac593fb52888dfca29203b166 +public_key = 8316b7e641c7a6117a817113ad41a753c859c7d8563eab9fabf70f13263d20899b09a068858474101935a5d9c7c3d9777b045bb90c925040755ef38bf2bcaadfcb6ab43ac97743a090c71d20fa6ea817833dd5c6bb337998a7435757501f1396849b4d3e32907696bd562729a4c8cba6bb4ec884b57a5c90449372af68aec9a8b77d85187dfa5eb4e90ae04c03056784f815648045ac8ed2946886bc715285d5b37805e41cd15916681b7a3e06436ab881f3a08bfd66ad54cc79a9ec0ab1072add62a105b15f48a15750d78864218321704f69ec387c76b52e562a28ab5974d9607ba09df3744e59b8c05ea29fcc466053988512059191236b6f0a7935a87d74825436825be6c8769ec59ec1c8087382be48a0388d6c56240143eef1693b2b8906b0a041e07cad50602aabc1239714b655b894371b5d7425d6e59b9c629d2555281ea88d2f3b41b883c477c47c227a7c03215d1e456900f5574de37945b2ce52e0098c186a0fc96cec4c0de0450b3e8a65618190b8219121601c28c934e0cba4e6ebcebc857ae0b84223e289467844bf2624d9d031dba3586e7acd5f9261739caebaf634a30c2db1172fc64bb465153a2285b52f99978a076b7536311d06a18d589d979a7be8b45aace744cedc1ac6e04798d91773e769ba31151c584fe9abae840a53a58b8efe73c9c1f195727a641fd2b16a358e16f7097f151246c9c9aa1b4200d9854d9707fa95b01a30b15402375f73127aa90d0816ae780c923f5c2764060874b75b2b94463062a60871b6868172c596c18f140406fa78667c336310500e14a5aa3294e9d33b357a204a8ba0b477123d0498c7a549c20c2c01d29c1871bcee723ac5e51f558c295e258046ca8bd024553725a1ffa84c876271896bae7938c2de129f154331d09bc2a082144bd2af39e49c0b15ce77248bdaa45f27901a6426484cb711a221190246c5bc9334a0d79792607d7e30276eb936a4ccc4ad8596aa29671a353095f117ad420cb5f8bb44d63a121017a596141935b07f6a148d6a4c39c42b0ea71da5b514c7e58fe0d74646f94c286850c33303e5da76c385871150024f944ba6c3b8c9434ef17c58e46980bf650ed3f7190dc692c34bae36525ce03827bd914539e3ce4cb8898c43a78b1ca785d9ced63b044062b954657eca3271c984029b8bc753f142b5ec27effc5fdd99c3769766d1e76e4d50cfa06a8860e12cb03c1db4a25b37b3bb1f974a805b62e908bbce296445809a51d4189a7838a2967238eb5867c35f99c322537a6862686586d56b0765591b5a3f409bc0fd8a52c204befeabb6d56b430ce25414fc1f15c42b54e69ddbc6a36e1c3371a38589a4594c18676587ca07f0c9078597e2f472e92c63e4925d8eeb65b719ab69d25dd0963eafdbc3bd23cd83e6424cebb00270706317a7e2f8633f60396b946151b097aa433bc9e13a05250c0085af9c10c8790c4287d2b8e958be3535379a40cd253b559196ae7d7c3031f73b6c8002410a632d46be332b041c863cfe1a80fec2304c881bcd5282e9cc5129349b499705f115cca73b579969709629a1f34b43f39156cf485193b0173dba7ac13c6636693b2c848fe1565819ac9c48591d4645488c580d5994bb4f9bea102996d76bf89b87cb028dc6f998f431c943259dc90251ca6805a23266c3e3e99466e04be1526abd7ad99459f2b5bb8d8f +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = 7cd774275c35da9c0788b0315ee68b8c6c5476ff2b1ab1b8b6db794518e080c2 +public_key = 32360f5accbf0d107f76ea906a4546d36586fbb422f2d40984733b45f55c8db84dd7aab3f0aaaf42c6bd5421a8f22c49d011612b8649a3384a5dab221af90a58a991d4a0aaf3e91db46c6ea326c107553890c6cb3d940dd95761649c8a9b192a1f182864ab2621c5c485ac03ab414d32d4c48c463dfa167ac72a036441c0bfd205bc676998c979731954ca2686bb17b07bf3458aa11bd9049265f49ce3e92a7b70762492b13f30699d76131a4bacbd007a72fa9c0cf53974c20fc864c4dce6817fb584ad88a5eae3a3dd434235da64bf3107c097b10445bf8c72760a93a4c786099a77b3f7fc319899ba1ef473765345d0a10c9e64af960307b6d503a151239dd79707d379f91563c13b378d6575f22180fdd22bb5394883e4210900c9cab99c26510dba4680ccf3a7c6864139c0aaf8a710190b667b386860c82e63425a1b0863043bcae2b630ed802b26e22854ac6d0ef77f2a3194e79bc4309c864ca99235684aa8a60fe095343f50202f950441d587b34b930a824f06a20b78bc8ef888628d81620f1143f9352ef4831c73f6828935c81ea95d886bba2ba06b3aa34879caa4aa177c096498551a9cea5047427c6075919f9c145d7700652b4c828ada4764c956f7dc965dfcbb048a09e5e704b0605cc7161406c0b2e384aa39f6cd2001a9bcb12b1a683643620a765a29736372e64c084ff609e0dcadb367b69ec64da11ba469585d003bb41ca48ef6d3c9f3d4bd6efac805c188dbfc95c7514313820000b21fafba9c70533e03b27d0bfc9695c419ca311248037f96aa8a9fa3c5a77368f5f8617763a8b5a17c6206922b2524750488b347418267c14169673d5a1f6a1218c8e8a234305b2371429e483ef66622595a81e4baae5d8c3e94b1c85e602e6b412890f2cc14892f97eab851a8214912580c176554c005d81a9fe79c99db1bb286659c97498701d546fa8cbcbbf98bf90037abc51ecb404ff1272d7f09afaae5943542181906c5e095bc135201c797cad99c69d74c3ef287a321b09e17700c42a574ace85138f72fc2418a8f4b9aaab5961c6b622ebb6938b7b0143aab18271a3fe2bcc638c9dad0650a0053dea7c32ff07a0f821e3af5b671216b2b2a764b56444be3b196017f723567cb2998a9626633727433a2126e07c717119f8cc3064c028d3e266af186346046bc13083d509b4655896e9af508621544970a034be202130c8ac52b18418b9315c5cf0874761e4132b8fb4e55d4beaed18b70e8812ce98cbdb633ddb2b5da7670ace03150174963f741ddec2dd499a497975891c0658bd36419db478acc982b893c3cb55711b18829f2afe9e24d24f642befc089ea4108db57dbad107f7411f00c342cf759f3afa528da02fcfe785b5c98b706a4e942a3adf27c3e38155d2a694ecf07c7b7728a7369e66276ccfec254f64781c668d86bc29e8a3c5c975399a6b1114454a4bf75486811d94e2ad659a457546a2b7e094450477836c0e7fb7444102abbeb68e305cc661591ad1f3712e388384d51656622953054b60229ecc5133ec5c8028e42ce7d554c1921ef06c44e265ced9fc61383bc536d07eb528851956460cc0011c4c6372f6980bea0a9362a4d040816d506cf31030b20fccdd7ae031448370d9a1f07d21f6f8cf63793acb543d1a0d330ead1b3affde567268578fcc1c212e31b672924cb5ca045b91a67fe479c3f74a48 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = 0e057f85c9ab97358b132d71fe786ce1dc78a7a2adca7c5a550a30e762f00f26 +public_key = e24b217a6472aa8424dc92029430a4e3b314181cbdcaa0732293a150701162c7bed76574fe86b383780fa5054cb3387aa3139565d330a1e6b5b9d5be6d5485c226bfc6537247c665f6b6a1de3489671bac0a30560ab30805307122e0837f39c0e8f275be6b5d5194413790786c5209997c0ebd6b888098b3ddd8057cbb24ae376231e29e87234b13076144e11076794d3804a81edc430de922b050b5e8d2aed5b25be1cb189504456ca22478c2bc94095b034549cc5ca518997143b3527d9aa5cf66187bea7b87173d712400dc330294a56ed9c32ea4c4712420137ec82a499b584e30b626506f7be9110be59a398610a82a167bfc71911337974c2af9138a28724d76084cb6171cba495d053463898c3f31d8c6b3d6a6c43574b9d1a5f62cc6939a68d693ce6553bab3a2878d690e172294d7009a4bfc1b7e42abc93b0c469b98c9d84c223b5c4a25790129c6aa1b4e225b9b00b005b1f68368a9496066821d55682d2913db598f7565c9c1e57bd0b27770e8a3703c3dccf48f38a46c2df73ae8c2983bf814aca09239628a737c56079543cb2289f1303936396a5f72825df3c3bc063b3c2b504b860dba38369eb0b69d9134c9fb08f3bbb04cd56f13d20b2f2a8dbc5c2579a235e2d1cca9c520e0d2b3fa52b5e329067614216e411b41c84fdd16881b5b083a40192e9b237044ce67f87c7e6c2c73204f4609b3e28acf30b31e38ca0d75a68448944ab595c1e12b3089a587eb346d4cf35369dba082da44a0a8c26f202b4e73be7b9c0ebdfb3ce6b692f78948e6f656dfe1a71e4584bc5a8180e22d9956356139acf17568db0a73824c3d390bc3b6c1a94618ce32974563471eb3711b86dbc1e1dc5ebf07716f492b576c25223043ac6706f89bcf4c5b0812d6a3cce4816c3a4343027c7ce968d1f4b0e01874deda9821245a372599ee29bbddf13f4e970e2b7c2597fb7072a57c31e36a4b4c5bc3844e9256ad0e3492ace30b9ecc6b7609c8349c56bee45211e72099056a5e161db37575bf1534692559d71930526704cee1bfff2bc4ad410ef88941a4d83271750c9698540f669638859c7ac350ad75a3d8794f0f12a2de5170fd5b1b61b28a5c8527f87411cacb8401d11eec98caf8772bff976f86d87c67f5ab912644e5d827c99261c56c323f666bc5f7624ef35c0d118614ba64c88b2d140c60848976a674ab8db7a4da0a06fca487dbf4c3f4924f77dcb69f152c8336ce1ab6007c8755434355e99b6f99b212a5762f998b693aaa5bb6c62593767cc4646d3b341628e371eeb7af34901121084cf7f341606a3d47cc7b83b0b440a0ba3f27c597210920a88c47525ca7f4b5c4471ef834983169784cd0671ae103c0e2494d37339dacb0d12c388acabb88f0a64567a1bf2926a0f164b536aeb0846dbc265fb10744d0ca87eb28bc1a6cb424fa9a70f390b7e4c05ba7b7f306867507431e38a2f9f424bf711228476705c78c005a67bbf8c0142c941ea56874c783b4703da13b3ce4f72fcce11c44929064a389da4982c384a64fb06b32d6186b92c11e7303b7236716c3073745302136bc4753b302b1cbf3eb1d30e56d08ca2eda5a734b34c990b25454c0cea91bb63bd6784f599e987c69715ccbb7a55022f94f2c75f671913c9a0cc385c444ad46659696fb9408844dd81c844f8d40b644b1 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = 33c3399bfb3e20debf852c6ad6b90f4e7ef474319d55001486fd78757c5e050c +public_key = 00044255aa623931925023bd7be0b322a0a49bf48839477523cb285f3909360908c5a806ebd8a697d28166d14ca2b940a129aa37808efb0871f36c99a0b36aa5449c140a19b7625bcf4c7337c4206f6b5210d12c97f4aae6214c2f404e899a49ea74458a9980717953675004d8e1c796a7484766281821b34fb41b24809790ca3b2edc10d0329925411db681a23f654156a94e8482608c9c55b93809686149e8247a8eb61eaa46a00c6542954c40caa1a84a7514e4c2280bc1610159672eca600a17afb3270d0981441d1a90fb3407d238b7c9b00f4cb28be24c3d97d71ae576725e98208950b1b6b34c108352e3b28a85a458eed46ec785cee85745fdf186eed115edaa26ff188654aa4317fb265e2730776210f3f3000e63624a4aabefeb618cd5a133f125f9589c0efcce128ab7bf39c292040805e7cceaebb698fb176715c8554615595cc13417c086531581301fef291fc3da084e79bc14a7acaf1b511db929b7323b7a80086465c858868e02b72516301265e1cd90dc521208acd0f440ca5ab590c5a74366c763dc3242248d14c22e5265cdc7f5102a1c5f78a6746942b451d30a44775ca80c3fc2f7123378ae8fe9ab517839fd468e8c378ec958a8b63461225381a53059afb2c4f30cb0e8b62f0d997f3abb773ab2941ca85e2b88469dd78292bc73e0006ead96aa100abcadb4b432d49f200152bc1765a621151062741ac77c58515d5745aaa19cb32cf0215a148e96bb368d7c5e8abbc487e519f8dcbb2d82a7e5fc29e7422e6ea4124f607eb9303ba268591ce27a222bacf6417d568b327109991dc464c9d9a5081c14539775be160b88977feba69f48fcc2def3249523aa2126bd6781cdef757136886183d795c770a3ab8053125a916b877921b829e6a33b7e7c8215f1842fc644631aa6d47ac7000954e8830d566b5c55e93eb585259879621be48bfd013199b09f7789ce3986abe1d85a01328351f6766b446883b17aa29476d8064a5b536bfda6aa6304c20101519c10b15ac73b0ac6cbd2889509514a1df987215b8d5b6313dd591e59458ead82646477551d838ea91699e2996bce13283e725b50944585285e2cbb0c1468832c009ceae651701c76f3666ced69160866b1d8e95edadb575d2c01e0044020cb4a89317cbc9534cd8a15f57a2c930cb94f343d42113ffff33ba0eb1007ba3bee8a3df0d05c9f0660d53a8d446756afbb295b6282b66cb93af99b779624b491974af776a2a6c0c24038a11106b2c48bd2c8a43718b3e86a867672271b9c48c7a719d189a45dfa0823887deeb02b05e1574ce48ffbb3997a4c19b037bab0977b90995b4fdc357bba4c7b23a3525c6d04734c6ef2c909f2bd91fc7ba03921eae81cb30c8c41435d1fc6a6b2e695a7a1497aa82ad7099b8ee3539b4687b60264a0ca46462867cb92a28ee57b5e03a58b5b5fba6248c64b3877c38f0e552913d2627b18ba7ccb7fd801b30d9b599e612bf536c475c03ecbfbbd345a98f21bcf13134a1eb61af2c417ba67c1014b3aee00941f798af106a584c3a03ec05f83f443f05c64838c0292d15bf8e8851cd0c03b6a6f6189601cb7ccf26597992726379023d23a6643d79e0be7b401405c9f51c05b982b4a09517647081db586bb859272ea11de5e75b2b452192deabcaa3c90e668d12d9d11315ce1463ea54ce4f66b +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = 110a8285f4ccb5846782dc61382e517048cefbf2ddfee70d94e4872f8fbaebfa +public_key = 7a35c2a489130ef451086b0082c3b6bee40f8ab942fa21bbea1067b2ba6613005c04b04dac6183a3745e27104a64424b256272616b76b8f5c1acfc64c04559dd102bc3e7a71762a97045c1fff7538efa775cbb0d3cbc3cfe971d584062c274b5bf1c09cc046782e2b2775544ee2240447353f1cc75060a1f013a9b036736c4d68ab6d1b96e5407611515fe25acb1b4c9c02318560736fec53e3cf58d82cc1a1d4214efd7b8ab2863c9600149b3a75efc0f1774456f2a31a84925ab2c1e4c9c6a4e26bf5de1311dd21a1fa28cd3b2555c0a614f781f50e26672fb23a45a729ba8ca8262078b53168749b7170187fdb9c166b8120a039ee1ea304242c79dfb77617b2a6dd8603dd04df316949425ca8f60497efc0118d814a6aa677a4a5f238b93ed8729b0a20abb301345c83d630aa866a50f83351e32c02b4e287f8d6816c51aadfc7c7d1b2b2135b6c34b932656a8981a98c65a1316cc856d50005fe55a0846c9a79a4c30f4126a2784c737213ebd25c96d9650ded059d583845644bd08b7adb4a9a0accc725235b8eafc5feee22030e79a87bc7c8008acb7271ccb20bc21161c077906e5b6b501f038140317620b44a5a719efc4b5fad60c9fec30fa761aaaaa69179491585159e543770c589060fb69698bb73c4791c9794b15db2a79e1163d4468b7d2582762bf61880f59737ac2587a7c1c6b804b72f1ec52189599e7ebc37548adcbab54133361320296c3b9cbf75ca5242645da2c296bb1c0c9e696fd980d57e2a1e4d90222372961c8c7ee157c90b789bc4ca2d86a00dc500a7bbcab92421cf218a18ad8b674b14171e1769a654ac8332123d58d716c8aff612ebf3a3d58935d99904a48a02450aa77310306c76927feb19fb28c5af5cc6329eaa7d7357a64a959e9b03ee926ca4af62f65468b6c0b8761e7348820519188a1cd6224749c4cb2809a6c544bf5a44c32b1c96a388bd75c9cbd50858157b9d4b98935a53e1b6ca39b9322a0a0202938a0668c9c3c5bbacc71b9ef233116398521d125f423960c7837b7e13ab7b056fd194a4249148aa3836f4b993b0157921aa809d60837105560312e62fc28b26519a7abbedab7373d73c7b833b345626148c526073629d6c307202b1c2c767f179602e4345f4382a9c3138924e1163c60298beb79cdd132b3d2966b404a0bac255bc4aeec8ba4f6650a2f610604243aee1904394c22b57c6b52d42646b64fa413741c467eda04ad3f1239e419b29ad6005be09b8127126ff38f0f85b35232909d26c4428a1bd619505d47913784567f117dc19cb353d43b4f1c6b823628c7436cb43bb8255940f32b27ed11659ee3629a02b4bab1c1d543b28e45a91483766fe32ac4e57b0e922fed3835a5346f5036a1480c2439d15c71fa73bd0552aa6695e335cff1174b72b2137f39c92a906b7bc10ab974c4e1d62d225b1caa1098d5250d7f2112e37460cdf2afe2529be1ea551878cb2dc26143602d67c9686e6538f3732ea249c8a74c5d3af1ba8c72662f211c26d5891a407234a146fc084534449ca53b5a1bc661cc82ca89bcbed9733a301080bafa426562622dea33bcb5c4a8a049b8db755bb9108db910eed8c97a773a6d8b5ff077aade0a495c81274ba3f6e3953fc310e318fde5119695491a4af40bc41710cf44dbcee343401b93cfd45c19b4eedb383a19c6c3c18f7ab6eb16d06e +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = 64fe129938e76b4f1d2e29a94d64143d847e43f5f05498671243e5f2692809e2 +public_key = 695393088338e8ecabda1277daf09a16956d1df7999f58be025024f3c399cb7069d3a3b7738274ceb082f9981b8b43592bd3860eeb76e181a3a58386efe47659008db3167004807355b763b519b8c0a3200e2461c49b80b6f2b8dd208ccf92cd1b099a6d5193ece1bf0627bde3f23a1606a9bc283b1830a050ca35aab9440e46387469cd32f03fdc537275426f3a00487e6b9d0bc83af6eb3b2dcb8d22a278ea48c3e6996b0baa42a2cc55ea5a5edb60444ed81b65a61243853cb9a08dd2e910bb86b16f66befba1817ae6403288775e80c483961282b4811a2c4dc3c9b71325315482bde4762d70ac1fe83128910b97ab469b157c9f6eba53958b913d2a6fa0744c4f8993f4d070486bbc4d6a943657440a894b5ae69145a4867c7c13221635a2158c549baddd7553c06343276237db06a480ca5df4764e779765bef25a064c999a8c3648b391bf77828a5b6a0894c76541549900335b4c9dd2d956026700d1ba7fd8a59282e4cd2161c2ab1906d64259fb505b8254265db5176b3524c525353bc2bee01b8b9f95bffd215155a5300ae8b7e5c15c0b8c5fbfc75c20d67a0acaac18ec8b3ef08e27cc7a107b75bcb2243df99a5036b705289a61943afd8595927170de3230eee6297f58ac7e08b1c3b6342d43cbe8248fe9962c7dc63eaa010eaebaa4759a9ddc5248db27329c36526ae674546b4feba77c3cd87f92076825ab2793a56d0e44b56e837d60991a6581a1461a191370b9367374b1e82662d699c72080db3c5a249700b9c4713eb64cae673c839b0cc852235beac0616645bb0a5910889b4a7bc66bba939a9354b94854543c32416802e838572a56aa01f2a7ae9425afa58847cc7b42389597f4037f133338218e25327e8f022139228782c0049cc7be6b0c95a4c380ad110369a64baa5cbf795c51375910a1bc5f03fbc2e77c9d0ca318248c82b217a46c7189add46bb6123a370ab81f7c0551674c67179fcf48707565be3452a2719c032138c82b149bc0f546f80153fb351529243be6685c5637ccf31746fef4c8f6fb7d15b23a2c2cacc68a8d6f7aa02f7c8be36a162f70a19f93918cf52bb3263afc2b5cd9344ff253bc5665cdd237c1b8d85032fa8633c93f8b8534c01168036b0ef96bc5491930fa9316ea47782a043297f57eb3e4465e0826ee0874981b3c88f84e9d06b2355272a8140ef9606934a77c5361374de806d02bb215e23653f352059a5a8da9156777bdad3ca004101f27c2c441ec311ef10f730c1e7c214ea51a535b9b617bd540c63806bf011e654c059cc6098a6209370c1c6a1522a047ca1f771f3dab6605dc24de498c564863a0806698444e8bd62970a7938436475b884e6ca952c4eb87472bb61f043cd92a30727a5f19829d3f744e63d870fdf09eb26994e5d86758c65a194011b7d584654595a180c7d4c4b819b82f3789856ae74b85d722645786c0b24101c613809ba83db637702c2e07fb3ef0a9732bb8958b43618ad79446c95ed25a75801aa80d08a8a1f452823ca734767ec30897d8307e5dba124dab03c3c61329caccf8a91cc20b2fe719734611abc7516bad91c08f443e01371607166dc0350b5bac8a8ca22246db0855321bbf75ad3be635a915329983c86d09967482430a8f9f16b65b42e4ed2ca53d1b7d8e2ceb1350 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = d276a3cf659b7102429ad9f0590ce40bd91720908cad1d9c85d7aab0189cf890 +public_key = 8674043493ce62224d2273838ab0976350172a847bd91c3925160d7849933d217d551a7def409516354ecda39ae8344aee41679f690123648921fcbac9440d4852cf0d1a2dc9b13335106a2a1a508a7a2c6b1b04929527313147e86bbf3eb49e1698c410046cd85818444589f127152a412d79927dca274546248d2f4383abf1a9e838b63b37657d1c42ee866b01c53577d96cdebc6cfca534ba2011d454333b8c37ab427c44614602553e88f9b17d7c625f42ad52a19409b7c8a002c236d454e5d54a78fc3f023515db624a15391e258a8baa637642b7590282006fe0a8906217b3d4ae5be0bd005289257c13593a202fa560669c13ddf9a05ad4bfd3a3ab40866fe913c7a9ba865227098f042bda40a92e78758c8b5307b0598c0c1c32008f159470643091cafb4dfbb4b69a89bc05d88c130b80a6e13c18a93af59106e84c27d22281586bc9c8a5246cc78051b7b44a7129025092a6a497f0ac28ab1b578b97541f767089babccc629554a68c36ebcb4e645c7e0092f40c4003e15c98c184f2450b2aa1990caa6f2dc830c788190b697cc71664410387b151cf42190fb4945b1658cd9b22b0f44c2b165a7dc28a95d7a252f80227345389412b91d9897844d465bf35b64fc2cf6583c7e97b239f064061d45298db87f85b460fa989f570751cc3bbd2e64238958ec0f98af7f5c0987ac10b064b153419be7007ac4949b961335bc043392a26d4f238ad0c69d4fa91aa578cd19c3f04280a3bc0cf4701ae00746da433548490756ce08953b31243f2753f3582f7a4122676ac2da36d1ba3a559655300d6ae7492bc046c470e779306fb2e8e634ef2264b0536ba21854ac899b605526ad9eaa3fa6360a3069e3ff75846168469d0a6df500402a688e73867a52754fdb8095c330bb37131d7995b658aa62b2790115b5653559b09d99013e6b656a04c9fe79442e7b9b8728c94c19239590241cb8bda9294600cd095783aa3b324646034d11776842c871720321eb1c76ee3631a318e8c7ba05c10760fd14bcc8468ebe40a66665f85e606bc302346e542cb07bafc9b2dff6934530850a95a6913072db65053ad2a5089a560ecd7bfb607b93d46a621421404b2cd3eb2b4df616ac2f4a0a2c17b123aa5cafc2b12912b59f7684a7b1c71e1a1d4044427b92ccbaca1d2372ad857aaa26415d8f53b45e63524734fcf4b3dcef007d66c3f46d3b9fe3566dd5a0c2744104292a9c1300bd78bc566a49531588dbad6800e4319b2479c3e41b9d7573786f9897e43692ea8134fd4b65302cdd1230e9b98cc20d104b7f4c15ff4992c411ea12aaad103277ff01adef2bf4e64311c4921c594bebd7bad19c5b01ea075c7e42869a04933145bad699f0ad5b1a1351e89208e7c88b3e65c0b5516c4a5e39288001ed9337d9cf8cfe2810085c70fed4372e145b2dcca905f484ffcc7b082a4276fe9ad23e0b43de05246fbb9d0a52b95c47910aac0bad6cec5d36a0b924849237bca33c417f4557e09c38fd77082c78f637c2504e6860041469abc3f28f05fc91b04af0010a4088a1834b45ba58b809960782a5d6429744cd736e2c9166866b36dfbbc5036826dc20ab6fb4f9f062ad62b8c66d639c2b76ef2f5f8784bea83758b91d5e1e080ac8e7a6b3d8b1fc4ae0109540efdbeb29146e8ce27729db1ed40 +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Public key is too long +entropy = 5fe02039e038b1d1c3629a7a8a20f7ea0c3979a07f658846b6384d1557224658 +public_key = 3510bf4f191ee7289e32b990c40b380413551bea86311c9c3dd02d05d1642ad53989e30117f9334fb203152045c1d96f0ad86713ebc082ac76a1d2cf707901bfe224625420df852ea7f3b48cd8935b882a51d80aa62792f6b536d8410091c74416e89ffad7a7b28c8222b3b6e15a5e2665071a3c3a9ecba5c262c600b38bd0e80e92cb511a524b0a394bb15b07f9dc639c872eabc222de2766260513ce7145453a00a54308fae3a20f5a8e566426d8c78a404439eed2cdc8312f60e87e377568b5f9971c61205752335d5962e24813de203523b4a48a60a344f6563d75baf7c80bb1bcccf583cb9dcb72cf7c1e44e9223e0ca138a49a2e38b878b989ca686eee90308d4822ab371ccb1861249264c4a8313fb89785a9c410ac82e44191599572a4b5472db14976348490240b6a59589d764bdd225850f8b8dcc0be03c5b98f852650f86de501084b3ba5f52cc32aaa823c51a873254d9158b2d0706e48c1738409c9a6c208cbabac2ba020705b18f2c8a4f5819377f0211752b6f65585046ab3afea983861931664198be80058d58579160eeb423cdffc1a02bc3b45a1be40922a3dcc1ebe59c3e8c50b0bb00e9a82442006932172af56836b7a504d2e7abef48924be3ba16f2c1f89b316e50c2e789c1ea26c0b320b1d2ab97fe53ca84a811431a683d1aaa01fbbc00d6439562bbf527425541104a7c139e230110f843e19f111ad8c30a8679a28f811a4e06dcecc77a9922a35c4ab9ef137f52b4a253a7ade933f70a47a8982069ef55c2f9071d1db51f783a37eec8fa2739e4a3bb397896b006b57f1928e40962000229f05cc1628a1939ed96b4c1a5461302e3166af5d909372b5cb23a0374b20bf96260cdd941ba3c345a5b56ef63b3899a0c54171111af1aea877c75f0a000095852d8a7d8353a5d5ec3e994566f8b03611926fe0245bde908ebe2497dd70756d893accd79bb2788a84330a1cac6a4762636a125efa4261af91904aecabf757aa9b9a3bae2a1b4473c46f5ac4cf574844d5873343bc1aa755574193bde293cf7080cf67b98719778c590050d936e0d8c5bbc7649ad413ab2099e7073a0b916b812565101908e64c73fe7a90daa499fd3cbe79ea0199b774921725da00742952760c637e841b1c5b0656e1351ae1c933005d5ac5c93eb43c450673af50c52e18619954c4a2080031450a46b45bcb1b348f46c24b925049d469c97749887e37af2cc737e977677f98830a53263fa1a4ac5a14073a0548012acd1286c2d0cbffe4a2ee6a2a1d0c04c6d89a85266bb884ca9e16c5331859ff922d0410bf8e657502175c7ea2b0ee824182982d05a4c05b249aa9dac2c3559d810a3cd4fa28e49596da2213f5b5bcc686c5801a184f39966a126f98a9061d1866a9e01a1b6297a83cc04f0a7f69a7a52b26007552797a8146985681432a567d4a16c31194a8acb680396252d6038a807fdd79885114901a267557c16c59f2abe95acf967006cc44606382703e98728ff48515b4c39113ca5154a80ad583fa3297aea645d4e52eea1a8277553097a917cd6b0eb792b2631a854e079f892140b6c1c57e2a3d68c88befb6c9cf842a6a5a325b47553ea4273c643818a89878b2bced19f41922b91c2a3e708d5f3e4ebcf69510158065f6da061cd646d1787013d2c5094a2182a411704fdb4e2814e153e1587bbf +expected_result = fail +expected_ciphertext = +expected_shared_secret = + +comment = Zero secret and error +entropy = adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6 +public_key = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a60e1a95e846cdcac4c779702db2e7d39055c815cffa89c71595bf461924ef2 +expected_result = pass +expected_ciphertext = 7d3db5cd14b6db21e23580dcef17133205df090d24fb80487306aa6d894143dcd9bf9c47f9ae2634d4c2bef2400f839d42fa417a2b53baca917ac3e8e6c62083d8d1e849603ad45a6522f8e1058b328e38f66aec79c96065470ab0d15947dc61aa1ee1bd4a178c957bf81b8247c68425c4bc3f2e243b8ccc50fa0018ecbc215f3487b4f54a0fb18333ea2da8e2200a608a83554ac5649445a53da1177a3a11f69fe12c6ce093ac3cadb9be5ce9e6fb895345dea2a4cf386ff6ed2d477719af3bcaf2dd34f2f6746d039f82063fc589e5322b02dda783f524bf59fe9ea30b101ffd83be9d1965ed3eb16c52df822425f9029209e303df1725842e94fd806476e684f6f53fa74ae4960f498088b5eecf024b24eca054cff625feba4d133e6263b07617a467e0d9c0bdc0aa8e1f12620ade63643fdb573a798ebd81e1b0cda60a08ade91c92c3ff8c5877593ef0a90e6c20fd9bbcc3797d3dcc7a5bab85ec1e08471c73c3a19dac7d7690eafe2ecf5d19f3d0d3de2b700a622d1ef40631dae81f725849a2fc8a0225598b5941d74da237376e3c4cb72749e3bd76a81701d79f1423b2787a5b4276ca277e5279a820aa9abf164d921ec41a5a3598f13665c19311d0a75a0968926ef664869b8b2e6628db1887ebb2a7ec06432662b9c1494eb399142b2f05b6ec71d37ab33392f755f2a9c772f60a802648e3e54494c6006067f95946c09c6db484c526a4bdca4a663b329c45d7888cf8cf6cb20192b57b21f06800d711d1a79301d05eed76bfe406f85c2bc32e8680bbf7742719686f59564e39ad7f77e1d6226efa41e5918c4e4fefd8f24e7d3bc885af5a3e4965dbcac0b0ca594df119af883309ff10183b2f6d26a43f0cb9df9284c04e5780ea2bb2c160bcfe25a764fc0789bf40da40f7001c5d92e03ab1907e9287c7879c3fd3d30a1fbb3f4b5684d73b8cb0e7e0b8cf455ccceea2c5e92e8f90e0a1f99ab2d2353c391d20d9d9fcca8d449ea1b2d7b2e161bc198f34aac1a9221f5e6178be1f15dd26fb5973ef7b56a9214ffba6683071370e619ad805f6fc3aca3dcbea742c975f72d3c1c8b6f7a0fb86e9b4dd4fb76c5531d8d5a48be510e3c3454c2ae8196efd398bf117c2dc8c9891c8ac7db5317d4c98b5b300d6422ff8ad7c0b748d8dadedbea0a0742afc0383f6082c8428c97f49f1225a40e9f10ff3cd42d701d7a8d4d24fed319fd3b601601a9e9eea1552c1d169b4b7073b3212bd86ba3efe733b549950ec4b71078b3f7c09880a810492463d8152b11ef165a1ac29b81a17b844ef04bfde87f9c090a1453299c231c7453376f3a676f75e4836ac80ac294d69da31f60f1e470888808008088888000008000088088880880000088008808080880808008888888800088008088000088088800800808888880008008800000880080808880880888880088008080808008088800000008000880800800880800088088800008880080008080000088888088880800800080880880000880808888080080888 +expected_shared_secret = b30f8bbff487ef7613d1676569986a72ed98afa9f37842013a2467a9ba6d013f + +comment = Zero error +entropy = adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6 +public_key = 1c398b2065bb3d95582d63859ec7006f9c80b1d0c26c22666dec1784f76b4096b4fc5892a49c925ad388a3e31ab2bab228c91985b295b730861ae72cd0f733a0ecb85d26844ddc8d28766dfaec97486105a4281663c67585864367b7521e968357940bb31ac0658ba60e23baf9d5cf4b2600ed8b19f6a7c974fca655b0b2e5bc019c8398bfda6bd6442e51d365c3839e6e4cc124cb5529782692bc68a58617517a9d6a316ad9e93695e48791897a0ee3010c43809d0a6f5127ad9f43578d5842ed91902ae068ce3ac8cfa419e0dc8c90b0cac51a47a2a16162c515d0b98099a02c7bd82cce9532590c2588955c8c37c5d957736c25cdc7329f3951653747b7b8f9b1da32027121a53d62b949e9b15a7a29d07716a74486ca28bf6ce3b8bed381cc391890f2259e60a12dcacd293908c97c503606a78a4c035a10a966415788033cf870234986820ac71db9e322392652547a6f5836c138b869dc409c16d67f1deb186454ba33e6c45cb24e969734d4da25946a427346915d598a0cb45986fc73dbd63c387421bf95c11f6a0956a76697d6216485352da8932f697e8a02c293bb76688c550c63ca633a18f1e07bdc07951a996cec3644755c4a0f55230c48844ff6a82511976e4a0a17a499e768207df0c309b814e30a099a6511d6f3a499994a821c9dd41872860a977e7406cc2b3b69768b7ea720b2f5858df28f97b77f05d2361c62b100271db35c660493b12b66938845c1c799b5231251980a99ccab6356a0b445e86098108126812121176f13979e59a1029cb040bf36aef192aa622523866ab99459a01dd94535477e1755101478b53ec165c3197d0110a7b4b4892a3bb82831b300e55807c44df5f6c1571ca125b74bc33863603501abf51120acb848eb1daa2a7f50e640fedb74e01307f68798e98acee0e91bffd8150f2bc9780956b4a2697a825da419aab3d3946797762aab8cca9a5a65dc2edf507e8a9474d803c8fb637e05c94cabd721eef5716ca4410e69220c4a22deb89c82526a5b506bdde8789e2359352c07cbb90f3faa867c538d1926051e3c318939302dd31c34e894e3917e4ddc60f3ca9d3775242003ae7642035267757438a5deeb96c46489670abb8918c3c4b42ec7c7c3f2bc74f1269989080782c8941a2838439c3425d88f0d5537282a677ae1102ed695dc447668113481f89e60659f1e017dcd3336ed47710a8721cc421b024595a86125af941203392fb0f9cfb2fb7af950772319070ac60f97c2932ffa71bba6a94d47c695bca3922835d86a94cfc360ba637939034a7850579c7c5e6ef90cd7ccc983d28f357ac379a6b7d6f328bb0283d79356d6b28041aa0151d16605798fb65652ff270114f29241b8774f94553351536526aec996be9396282c66c77b63399310019ad8474912bff5bb1503d481bb4aab4fa23824c68ae5058230ac2ba43a4805ca8cf6b07b810ba6d415c4bad388d17373b4535af6234e42187d33ba51dc75a8cdd3c80870cbbbba89277c1b79e631f959c8f45689fdb7a6e72a97257aa188f8548da934533076937a140ac62c598a40adcb0bc0e0af7af639efa4128d10b8dc0197a12ba1e3c9c68b461dc3a7ab2975482c62810a60e1a95e846cdcac4c779702db2e7d39055c815cffa89c71595bf461924ef2 +expected_result = pass +expected_ciphertext = 8d0f4960c3b07ce8148731d6f2424e614145f9bc98adf02c0c9faf944c708502d96b8142b0823b6283faa03ab500500684ab8646951f90a09ddb241f5afefcb2a75c3bbe742961ee3dde84518933dd19dddc08fe0c2157743a5d464738f430fcb0940e3b12d8a2458234cf3d2dc475fbc589d90f5918dc8c1be0bae511d6bfa0c26598529a3646453019008df6bd4d2689ec76d5b0bf1efcad50bcdc1945bc670b24db9e0fdf1880aa9d90687bb1f4d4186ab444d2cd1c91b7a7c57324aec0e96240f9d817929f6b91d136447e46cfcfe0d6e11ab16d47dd095252e13d61ba2ba1f5ea4fedcdc0cc16b2780edc9b4e4941e8b2dddf791da9f8aa6b67906c52fd368e1808035377af67def8840fc44bd11896e594deca14d4cb942b28df99583081a3e9c0f5c8a989d781a062765214ca381cd65683faff599eb6db4752fc667014a8dbd7d2fbd64016fa33c7c8d39a36265f300501d52ad4c532abd18f43662e9a0110b5c54797f1148615e52ebfd60b07f9dd61c5f22f563620735a5c55dd3173366b0ec207722afa4e7791453f522a898b9fe97759e6112e096185e40b7447c112d508ef6f8afd64b0c2bf1f75cdaa42c9db11f0d997c38dc5417fe39d2f99f00abb50b66cf1f9ba5472b05605d492b8d483b7708568753bf415938a3c26ccb361873d0a1d1d42820cf5ec6986cce388b0356b40ba6d572f19be691a654356dc7e90b31bd04e8ba9e27fdf179037c0c8e2d4440eca4d849bc85d61f2df423bd09d90ba00766e5e6ba946e53a66c119611d5b017032c5a39c9a533097dcae083d3832821668b1633ba1aeab81f556d61dc96d3052b6497f7cc349b548f90fde55604c33ce018095d72e8c1a2468da1c6c5f679234636352e5ac1b08c7508a887b1fed6fe466520f88cb5951b86a4aa6c94398db200f4ad7e51b3321af70124f7f34823c4af599ccf925c3002d297760bf4baf7fd1465e95cc824853562623540c544c8d46a4c4e006837983f976d47cbce04b703dae965111948159ef0c95093df21d80555016265c582b19b0dc8403e4e297c980129485311ee1ab7ee9e4f37f627ab239f5c6158a7434b8c6a654dc305e338b2e7c9da053d6932bf4640c2215f68e2020658ec82ace46300fab43412d12b2cfd7e09954acc0e7b928b2fb791f68f7fb455230292eab955b4818031e65a54bfea008ee5605205fe4d68b26de0e60e99ee5acd069a23e5d83ba43745985bb0cf05da32028e66bba8516889e6dba565a006624433c6cb23147008dbd238163739adca132ee73b4eb0415a3b754fbdece10f926f7979c6f85d0a6e9ee0e881f13f50c657cbfc345185f55167c215d35dd0a0f88c3736119d1c5891fe5555dc3350c86e2df0383aa876ed91f03207811e0d6d752669b8832de3836481c33d416f63ac05234a996d7330b00837c3f267f09c74f0b4b85a2bf0b0ffbcc23ec403fb621f7f94ff5b14db6bc699545f15e448223e677906f8d4eef5a162e0b2d4b95e205b57ec7fb50a03c7ce1f53d7b +expected_shared_secret = 6f68f7fde8fdc93b27a91e7989842c6132d60007d2bb9d99fbb91d4e1c79fcd9 + +comment = Zero secret +entropy = adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6 +public_key = 76da327e31334a81297ac41a07b9c1d4e04ef3fb8b06e9bc13071c98f6a80523801d0c6e5e7848d143a5dc011eab319ce6308bde406c4ca459fd3c20c5c76dab11c3eff0a060f52d6c677242b6019ea40c0709d071f587c06557d0cc36f7c428383834b69b877308c55e8c816d8195f614336e50357da66fb3f03de7c3742fb23c2398c7868690648122afe321a0b2b55abb99306265b8e9c4be1771b7727775a25adb2108a8d62bf5c18571267e6c1b5dfc547019c331532a40550579e79426304b52c88cb722da72d63a8da549731d5625a6e28db6ec22f3d1733df7775d5771857382bbca11dd271fc35b4854f58b6ffb25fd42286823790b1bbccb40c105e38092f5a744e19d7b758ce2a5379fcb1f401aa4db967fee4bcfd73811b214516a098d1cc726ba418118e14970aaab00293bdd9b18de001075e2a1d25183bca677db703b010a7f3166b7a4bc374b913394c504463a42cbac84ea799d70db4ac0db6dc3da8c78149bae1cc5e4b65f701bca315866d6a67e9bebbea36ca91fa694929cba572c60a1d1006c95941a640d472bc2b30cbb635087170381a4328cbd462964c80692f224ca17575fd7cce32425d6fb19a363cd114524d8c4106cb628253bca70377aa242751b626447fc43de18333dc21c841c236eb0b2073a2a8f9a268c931669daa4c9036228394fc8a0a2cf809a1a2929a5ccc98f924a9b7282f922c5ecd96cd1436b5b21692610a44747a2435807c50581dad25268d737fee3834a54967e76c3e7f537023b57f6a7b58c191427a12282e06421289448c97f7cb042ca66927a417e6747b3dd501d119cbd4dc43d18174aac099ef85839c7d9425d87a17cd77ccd568bbf4bb0fa8ca4e5005f9ae815a307471219a9aaf60bea631e07162a1818c3c5da6c29385fbeaa76ff4804beca79d1f842c46b9fb29c81fc4875afa0b178564d26b26cb21aaad891822ecb471b76a869b83838388b9f5839e0c344a7eab55c392c99019a0841b20dd14f36875853c6150fa46c2572828f51b9636b00bad5940912923252be3c49190577c928d5bcd6983bccf00875db487287ada1849d3339069195380c1a3ea34703792251e5c7877523c1b6278f9e40cfb1614a04c01d966c41bea36a10492edba56a90e370c1995de2203aff43002446a30f3771af65924b8354e0dc2fb4aab0295925a23576e4e9770740845ba541eb23610125c782c6c82af506d9a25d148373f5f48537d7b0df7c9e72f10938f9cd66aa6b2dea9322412eb01cb04de39797f78efa29186af03d90588d8488914f94033b644663269435e2c26b47297af4a324526301f2cea3446c2507717e83c29c8a53f277cb739851bfc94db3db6c6d2a35df897ad06420452281d1659e7aa89e3062abd2a1a7113cb373e6856b7acc402abd86418c554858eecbc2b38b8b9920cc0fa091b891c8a4248cbec13d52984c6512a025ca69b34477dda65e12b7839128427c42832a1c5f31e5c3ec09497667ca7e0059c5f43889460344fb6985441afee726b58172e2ba2312aa10639737325cb82e2947299b94aa8bb021857232878b45b03f9f0ba5b0ab75c1773c471ab51e666231c3c37f1bc4630628a9b1272fb9af0a60e1a95e846cdcac4c779702db2e7d39055c815cffa89c71595bf461924ef2 +expected_result = pass +expected_ciphertext = 591416ed43f689aa76a117f623b7647c6ebade29bec5e089f06a7ba3048178df0aa0c26680f99d0186432f9fc3987e0a511f2bd3d075603d315956b2319b4a61c250c09a5f8a49445050e6c2260daa43a6e12e7f25bde3a94fba40f990c950bd30f9229d5c65b6bb4e13fb8ea50baa866cdda065636656941dcf58907f6bc45c778dbb8e1e8a9bc1eaacbd3ed5c034136afd74228e70c4cf735a82c696ba386a451cecf4b43a71340012ff8676c7d5b4b80e0e59f1c548a40e7c4d25b8526bc4fc14aa9fa7935c9860efd43095538dc081982ae2c81a96f9634685f506bf7cfb1fa7fde39594c5252fdf753818be40ec6191fac29f9512ab94e8c03ffaa7990e3b788ec43d749d78da8f729803eaa864efdba24dc3db1a65d1110922f612ac60c3cc731d65f8a1ee946ab348d5ca8f4d749d5b07d0ec91c0f74923533f86640cbb30b470650d2b710c690651c99c03caf4792d923e5a094ce709678efad3b474e803a87b7d390ef05ce6fb2b84eee8c31f9cd325479f78ed7dcc82d06d390c616019ad6bf8d7c18cc5f719afb06ca331034d620b108da68656c2c5bcf206046cf954ff9aab6f76833312f55b0ae36330035afea8e4b9c3fb522599d7158f3584d7d0d70e4557568b7838e437f04bb41d4f8e8d41969fc8dd2d35fdef69b85d331fffbc5d47e1fdcd60e8a10979f35722a430c55e9564126182a8d9140e8cff41386b6e81a1033a9b40d75ca6aec60beb7e3080223dbde023eb59decb9054663fe1170f2da33c352c86b10c4cba4cd79878a7c4e83745764355b3c1a8b4a61384e1e9db00bcef2068ac7d4a4e67a1aea96c52ae35f998eceaef3db46b43b85dfcab0a2994dc700868125e3460e2f9c11a0402432e34a0193ac2cde8fbda0f1a81371b43f271f737d7af2af211f5287389989f71cff7c107fadf8010bb837d3cf2ac884653ad9854caf494d5196d4fbe49585525e50b009332eb86303ba5cf5ca11cd19b687b5f3ab06c2e36327c89e0ce03efb32a813190a1849382e82cf554d86caa9cc2c9385bc3b203d20415d0282543ed33ccec14b2275014a13121aa206a98ed60261e22acf4a8eac9c853e96f99d09ad7c0c46fc8e93db918818ebf249f871dda0c5220c4a46475266d2dca6b609167e120930861bce88859a822f18d044befb231ea1e6c7459bdeb14b6e988a85c50b4969215451d96a653ca2990c8db43f44df0809dd894b072037e647251aba319267f7448b408aa959825d79e011a5792ce8dccfad35553e4fc662867811081836a839927a4060bc9be4ddc69391e0824bb16d6376f03077919e3525a6865410c71a5fc8e86b9cbe9043a294c90650888808008088888000008000088088880880000088008808080880808008888888800088008088000088088800800808888880008008800000880080808880880888880088008080808008088800000008000880800800880800088088800008880080008080000088888088880800800080880880000880808888080080888 +expected_shared_secret = 1ef65648be69ac3ca3ade1382a2b4a4ba1c0c7a04eecbcdd9e34af67665bbff2 + +comment = Rho leads to frequent rejection on matrix expansion +entropy = adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6 +public_key = 1c63473a75acda757b3ac6ad26221ef4f671e01461ab865f59c26f22c61de17800336b18365a190e7a123a34193f375e9f9643ae99889eda085d5317d5887e6b2c8999c133e20c49b3294aa0e064dec63c7a00acc1c08fabfacc28203e616b5a06f02e66e87fe1789725e8538b405323b9233fa61771980626b98b014ccbb9573d57d85dff1b000b38502af474add3a32f1ac7c1ab8adf93350ef1939ea376226a37c9675fa33503fcb753a1c86ca8c10e10ac74658944af239b48b97ca2b85ca4034ca7d662c91237c63c6b35137fd0429562b5856fc11662d0777c111ad9c6c34bebbd61eb6b538378b0123033c11ae1f0715553ae62cb27f15ab26b46ce4e540d39679ad9613fc91a35ca1073497cba5c57cc2c77bc75e7281e518f7640ad48451ecc32bb26bb2512fb76c9f6c46dfb6dad9c7be4762cba596184f37259143983e906002b34acac2be801c837c53771b048dbbca14b6c33e9ea7886c3be529a488aaa4deb590fdc96aa62a68f67abb4073b2f0f13a874fa7065e3c16a8b549987c5f2733ac4bca74be87f2e14cdf7d8916d47b69652244552a7d74b846961333a5755ec1179eba27b598333a07aad70626429153b7609a131e63c6bc94c32e345b9b293345598ae20a6f6cb25ff143f68e28013793183b5c9bc8a9d289967ccf613ad510a63c94c2b6b32214a9248fa89f85949ee3cbe0ba3a778ac7b754498dc3a79a95519606171608840587040a70aa1331899bb1082802c2aeef31ca2a773ef27382c2a84eb04ca518a83af9b44028c56427013b7036e441c20acf86ae09a82b8fb6ab2a234853a7b3ea386558a0bdfcb4487455a95c30cbcd54a6df965c2830f37c41bfef65013671411db77b8d69f6d386fd254ad7e175ceed98cc1e16190965b97e7375ce1105a491875007030c01cefc43e7a45615b665e073b0ba41a8309fc7cd70a271e71a36530c80ea227a9b57645899003c60e97609aa0761e60e8aa1f414518006cf1c62ea53826d53981f2264bc6c24ae072a2699886b75912ecc880ad6939b6a40d539232fa155b0d101aa7791cf74a1fa459ab8c8cafbe2911289312ca990fba952cb0253b71a792a5d9c6bfb31219e898c7125197f7b7a90aac7d527f62bb5fa7e00e106961d1babcc582590989262f1a1463e44d839221717b49b28980ea8b81f5f2cc44252c771b47d5550e3d68a8f5599aec848347ca728eb6c93b717fd6dcb7d8e338a6543d3a434245a44c2191a550794783212f44a94e46a64117f0b98157015fb0c6fb7564847703674945ca3b272e14aaa3a02cb8eb7fe3445e45940315b4408c5b4400812b0b48925862cd5c27abd9a2a0c3656290b11f6a342ec589720135a47b555aba0b098b37539cd0a05e729165d82b82ca1988dbb5bae64c7cb44a3bb190fd701b7927257a0c564fd2762f0c999341600bf86ecac593f7320e4f77bf720a42399c3b36642885b5b53a527a7b9606de8703805a72a777b1bf3674de08419e3ab4e424678e42ac87c15ed6c49afff1c246fb6b80d1182f57b6360203bb6640291a0b9d067aad6b8e3465a84275b923ea4853f799a7d31766bc84b5a0230aa43b9a3153f509b0ad9c63b00b4f68c75e29a6cf40d7000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 515463ea5284839dc84869288f9c03f0e384e56fe04c60cd7af8bdf53057698a984c2ac336de2932d3d4ba3d2073b481a125bd6cfae82da6ded2b0e8fbf7f579dfe5d590a6c03a95b53df59baaf4f0dad94a7b821cbf9c1c809b5d089d38be1c30d455ef44fef503be587c4be0929e2cbd931d10f1a8027ef2d14e15a931f3881a2bd914adf3fc93f97ceeaa8a521762540307ce5a670313d828d5ac71680d4f46bb1ba551ed7fb47e4b82e6c6b4713228038d5011df91b07ea0fb98790924b4cb859bfaeb309ffea5c2cbbf3f12fac5a063e1fe7bbdb0de70683837b180a13e0cad655b6fcd1f5b635d3342dc84298269c1de8ce6b39452297fa6bffca90ca6045cf304c4691cd052148dfb0812162e7e000dc5c18c21209df9d9f0fe7dd8d0962cd0ac01402a7f8170265af8804747857d31aa7aea612900e9067ba8970e1a60ae3ab1105b1eff223c755c045b81de79659d001b7c45ce64dfd2dc16853276b50053988337ef88e4c70ef5861dbcb8a7d6d1b2a5fc5f044160be5694e12201fc57f0c8e3ed5e48c83c2815d78fc68a118918615b2ea0898eb7a33d446c449aa92c82131fb80267666d9e11425c9bb8e10f745828b72570194465c7b2eca785228244e08c06e0d8f20222221f5dec81fcb478945564e2e53ddb68dbae7c6b1540ca7f4087d2833a752d97a69cba3f604483a6eda26e8f5ec27f3ca84730237cf1bb30d70aee528eab3e4493c7f5787f5757ca6a3ab5c278c631584bdbcebfba318db0fcdaee34cfac4422b448f00006c97abf3175c379fcb16f5b150e398355212d8c60ecbfcb3503824565bf841743bce55fbb2606dce0b45a5e2c1fc9fa20c1847e9173de2d8dbbdba840b42b002cf5c0c1d34e709816806e525ca217e37cb2d23e3c268fc4b31608f89ceda1c78c7d3c6b23863f2c6b80747dea4fd11ddbbb8421728c4dbd97fecb9bb652150278a3a3dd388789d2edf85baeff8f6153317a9cc9b72af8f69f260ca96cf602e2831cdfbc14958bf62968e7c019d7c71f6ad55fb51cfd9adf82894e56c05f6b19304cc04d2906b935639f2e96b56768abe27199b5af84268ee89c97f42925bd3350aaf8832d1f7b2225515759ef64d2d75ab29039b549774a3ed7209e1e0e50656794b315ce2bfe35e20a33bf180ac724b9a47cb9198ce2174f6b9cff075f94ede24074f169f15a8eadb54d5cd8241efe8bdac98ce02706ab86c10089ea23470e048c0f9bab797c240b5c499f75ffef8ee6da533642301c897f66770fe1860a01e82449c4259f54be74a46d96ff5c78f0c07d43f66ab578a795a5f3fca06a1d3cfa16449a278da74a5eb6f0494ebee89d4ce6dff6c008e10953b9df95f0e2e7310d33239206598cf4a729e1466f3718534d914617d260298b45a5314d045516a15701c269ec948b681a4b3dba464878a193731e174ea8902873b7132eeebacfec09ccbce7f50835116ce5b0a9e10fbc7c76559ce0044ddc494a9224bc197c494510f2c44e43b037798c1613416f2240394f +expected_shared_secret = b177b87b89197809b36026136b06fc1d749dee4cd4881b4ecf113f28df2bd4ac + +comment = Rho leads to frequent rejection on matrix expansion +entropy = 3983da6a4615805f6d55c14ba582d59a40e646c7ae77f4835a51afc6c37f11f3 +public_key = 2597a577981e1c300ed316423494735483aed71b9f85903dfca56970907910317d72a309adc2cfb0f062d4cb215a1caf67f4543f499001ec9db4db066d9989b600223d3830bf1818809881efb057a7626ed7948f2dcbb9a1582d6f421e08571655916d3a99b14ca30145e3330b31086d5a039a89ade149c9f362cd03c1919b4abe4178713a8400c0d0a21f866cdeb55b1a4202c79a5a26874004eb8a2681742f5bb97ae578faa58e856a8d186a07826a54c1495503d9180073275f139bc1a3749daccec551a809981520aab0c19c3bb59571e9cc0942799f71b502475397e9508d673b14652b65644565a436bba2aa8fbc4802663608e97a2da50249f6187217e01d5f4812f889b958d2ae4af89b255836795049b87bc45ff47549532c00499964e046191c26bdcc8eff1553ff488124d709dae90df510204f234923dacebdb46e5efa933c693c00b4823e276b5d78af2b336309919168fa38a224415ee61a6f729958f5605d57b748a09993f8c809212393b381f1e7c139844dccc37273488562a28fa232b51b6b22de4c0b4c909a03231078f2cb05581cce12432d44a66ea24ddee28ccb2a20a31130822cc74112686599ced4320878826ca51a9e892a5be735260be64c11697fafea1cfe152eae96a4d3acbf21594af1b5507c417679e6bd85e169319931922631e8042c093a6269205b4e8121fad69ea1f4037282852afcb3ec477cf7d25343c59e94e74eea681502c6939c297367dc3502e21724a77f2535a70d383a24d29e872aca63d9cbebd9b737fb2d565968bfd2a27d44061aa88cee5869e3fc96e337033de554ba4229d9ac62743c509ff3cba9c25e7ce3913e9812a5b9ae281c1374e86f653b7d78216af6f233e47a5b9830c5e3c3b932d2604c45c7777898d9078bcea38138a170fba8b41012648983b6c6e1cdfea72ff838922fd55cf1e62688798b6d425d20f2ab12c75714e8b3ec0028441259ff5aa175184731d98d2e7215c87970141580e91cc6cc2561de55387e63346acb04a6f017c9d7cf7ee39b26dcb012fb59eda233efc411aaecb51a6037ed4ab3dc227a4a977100ed804aeab9f7f585c7f5b76f441ef3b2b5b96434a647012fa13c1fabc08d1b46cd8a05753b7f7bc345847151c4a40ffb19238c122e7ca6220ed8acee34129075aae84b3732bb23257b33892c80309b89a0f33b1d7a4102d55f81b1996c90c5258a880e2aa0e80700803b9a80952316e654cb6c2349a0c88117b5f60138a571250ab0cadf7294457646215ca866487e6b8590fa926c2b5c367d1a234714a733671fe6f8b966b9b96b4296692981bd19b519a4a951eabb0d40751d916f03b3223ae4b12851b0d1e7486543272e71097bbaafce2a82642252d650c82f38a4a40b9360d789e00a3a903b71b6b91bb4bc17a67b864312c4c030127de12552f97dd814ce03ec14ce737ce3539a8f71b369c8947a759d18dc2b76aa0edf820d512615e8a7a8dbeb4d7aa92e8faca354f7192f7a42257b92fdfc017de9016a969efea146d1516316e31ad40b5829c06fac16b2c6d425b0b5aa17623af5a26ee4e0587f6c67dbac006c236f0ca216eeebc201c107b2879a247a60b1a7be7094ac8ea62841cd0933ae000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = d8e28962213efbabc8a9e3efde9de2573855032cecc3be756c87151a368e15e8c734155213614c931c083fa04313898680f70839229ee7f34eefcf639bbd35f3c375e49aaecfcd3b0b506a1708f4d8c26a69a46483c5db50201db95c0de02f67fff0811b43d58cfa1f2a61838835ba909e87e58708b07ed43c69b1cf67655baac003b6dd004434d22bed1aa21796d3c9c1085a2c04ce5c03797023545a1cd0d6dcdec111b896a7b34b36c24be3bc890a65d3b1f9fb96fc56928d456b845ed5b526865d9d588df3a977cf7ad0277c5e02ffb8ab67360d0009279eae50e8b038d43390000c2805875e9978879288c827fc3fd49305d3ccfa9c7fdb63833b5765b21f70d52ccf2802644332f961029dbec5c0ab56ff9fc72dc3df3b97311ba4058eee91b0634459a59213df74385ecedd341fd0b7235b9d7e061746149ec12cb1c6fa8b28bf995672f1c7cd1c01b80d2be48493988f0a43bba9ba45b6098fa8ab08ff8941aa8ffb2b7fcc82b07afa401f02f562d6b4656eb0fe8a3f8c2e97e45372c35a8b97041e4d2bc92302bd4fab1bd989e16e5ba7c315a8a2441c0607368c116159b005fc18504f12c96d557857e35726f9a4bf2c0012453663cea4481f3b4efbbde568664c54c1be3e346a499ee98e06ce2534b5d9bbcfecb804b8f4ce6b876e1ee00c12ca97b90940334d6cc0fd4cd010e3d83c7c4ae91761d8f73d699d2086e7fd635a028b1ed094e50b633d153f71161094b9aa230cf1bc005a9b2591c4ed06ed9b1695479bc67c41b0f7f3e25cfab21f06c4dfc68fdef64ea5b86ba05fad5b8a5316593c9ff8a9f3636167cb3148e97af82869e42e1bb3f110ffd711478427796256d82a665ef33745ea2b949a4aa55ab56e86d2f5feee5f0b203ff6354399a0ebe00c36d09060e467b434db070e77e9a125ea82362dc76cde94202acc71b47777e6821dc477a466caf6ac724761a1ba63020393ff2c33b6c0e14edca3527e897e184509e48424526534c4f2ef34a91a28711c53675eb4cd3c0419c747e2e67ac03ca3015e651dae27bb559993b2f0d20f0179300e5e69580323534d1289117ad6ee3ba03e3cb5f6bae436b9ef634a8c7be8e8c5567c5576657d1820f83c6578385d7911de91585a28d1d4c681ec03cd69081b40bd5143387fd020a9dc5cbd5fce0e8baed3d16ad548435db9adbe14566052c2d8d93d0b24bcadae084ba69ec63735cf19a6d46d534efa4c65bca47ef83f94d9fedd42578f794549bd5331b9aa1a2fce0c6d83a6e392cd4695e13245f8c91f3e76b187c55ccfc0c0a6344a6c89fa6544a86f762df3c59da21964ba4aed245647c56817a600ea3ad3fcc3c104197e2bc7e09fb81d9f8fb7ef559514da710f8093989f51c5c6dfe18cd821917aac8c7e9bdd9c61296ea839b8a54e466e49454e212314f39d50dc762e6c4c5623a88ddd423536aa51007bf6c56e3697c3879fcc6f2a55f0246a032dbbb073a1048f91d0264845c405c5063852cb507e4c9f3646db75c99abfadb6cd50f7a1 +expected_shared_secret = 8a746f85a41b6c46e0ef358c9407c702c86fb907e85f86de98d6f7bf7d6e9866 + +comment = Rho leads to frequent rejection on matrix expansion +entropy = 2676b8426b9d6a30af007094bb76d65d388c2b3da938215dd6f6987206400e13 +public_key = d4aa88217021609b2499381632883e6c690d720297f130a546b8c101487a31579bfa132c9b06aaf8b6583e633487752aa9fa26551650afe52d67d182bb035848e30696d1be1e56c687eb6387043e28e6a381b4536eb18dbfaaac8f6123ae066ed7568fc1fb580facb933875eea026d182329214cc62f75383d68bccc63788d228f88d17d3aab08f91c19ded4b19a876bc19984075a529dd267b823b7c83bade5e6a782013f8de263e992031e8a32252035e6d292f6d98e022c632d115ef2c60d53e47345e470aadc7816cb6c43f0ae1ee2bec3786b6b159b8d2a958ae567f364c70e4987f237a5d7dcada9066df63018ec4b21f0000f4674a4ca155e761c41c6a54490b3c64c42b2777cbdcc5cce8543a5f9a605e7aac50012c7c2088721d69910f9b3fe26013f45c68b7b04069b9d41555b5d7339c371389c95ca419b77d2c5c1a5b068846972ddab9cafd26308f790ee0a8e7d73ad4c12c4256b237a9659a6ca866197a2ccf39c005c47b4102ebd47607181795cc66a2b677ee68b02a5fa4be222c5f2a5b44436be13aa589044b574997c5f085ca099bfe8b2554ff981d2872a78d6a08840caf9a9051609c586409923a989ab4bc1521b8d23ba04f30a3df77378ce88abf81309de61646ae15e7bb62c8f300b5a7952c5d4881bcc2a81e64a6c612f7c6a9eb8007a2742b4bdc8bc0b5a0218479506c746396867b1a869038943147ccab4a9c735fb318a7b84efd56ed70b05e8a9cd05a650e2fb7ef5c48be6d39222082080b74aa7f4ab869b4e189710770cbbc5a70193597a0282a02445c5f5772750e505b968bf5c665ef2eb79c01a8e12948ddeb641fae4c4e8d7a88d13433611553292910e831d786b0dbf5cc13f77a881f82c98263a86174223184fa96a2c53f1b77c0c12c11c54cbc37776b568b4574b458494ee6b8e0c356a4195bacdf2b11876bfd3a84804a3001a37967b40855326c261d778cb544d346127eb7091821a5bf5eb3c6215b3c7933e05205754635cb4b15a89f827289c20844a6f7e4a817bb140057991858a6091157fde0717bd2428b50711443195f4a9b462eccb9c2325a092439452aaea85521556a17102223a65452c5b152c8b476db176cf76a6575188222215d32b5c08a80e80bb84e7007a350776165c1ba259a2eb06c5a3b36d27ba4b7530a104d2a18cd896dcbabc020a6de3f09bcf24a1e5e5772cec886f5102c71930dc00a07dc71f56fa905cf8acce66a717279ef7718fd9d40864474338c0729f4cae12d2b0bfa579f742c5de322225b0c633359108d8644c47b539d3b6f99cb8bcd42d39208fa5dbb87e600ac3cb1179a63936881748eb99a7bb8631d65dce2078edcc4abf0608575977ff4a805cd81b5679899d36227d1479d25a52072c07e7ac65148559ed558ccb164b9822b5f80575dceb5166121f4ef56c32950ba46217f0dcccd3f4ab8b42b4b0213adc08a5136a404f4532449915cdbcb3fba8ba3aaa7f32a63371f5c09ea1cf1094b205b2681b476375c481a5f336f38251d4bcb652c2a849daa65c827d5163359292b8e4b98a6e6c38fa592fd068197661282d457df84367f5f46815905203d635e9540811b66b990045e4e42532862012ae783c1d000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 1ea478e56a462e1f366f167cd818372a44d1d0311631d74a6e2ba29a86357bd7e066489d32f4eedb2398e2baf12dc4e90188b81cbd961047889a81c4a2f1c040a4527fef9518029458d524cbdd897409255258a9da92edb0d9bbaac73705614171db771c68532750750a70af8acfdcba1ebd423858b01ce3ecc821f9359c043b37dafb9574c5f4abda2cea0d09c0fedd0cbf40041a613e4de883ec725de57a89a2d0a9ced380acd54bea2eeef2abf769f81d92b302911b4ce0d865b5636372543e218e52c5a1ef0872607e4422a6c10aa77022120ce4875e9b11273281044b5d200a61e3c29a69f177a6fe530399fbfdc4edd2f0aae57102e66a4c48e549afb78e503c90517b7d741abbc2dfea9681ab74bbbe5bab1f25bf4be19964548fe3048cc27be264ad196e837e2e0fdd8475e6909d0d464cfc8df600c1a71523582378d1d70224330c852aa2f70b9536f1768736e95ef8ba0b5f595b683ff8a0a2e691522784a38c44171250719ce54cda4216052df02d164034acd650cd47d465be69399b9a148a5fff2974b7b42beca2039ad52358626e2b8d808b6a52d8b7eae2fd92a7d5b019b018f473b712c2df01295ce33cdb56cead9402adb1f245682d29af706c270d16f63edef39a49e9346a2a647aa8e481e5f72ac87aa5348af2c655c074ecaa0394bf531d9ba5851ec692f577e09918e4013ba53d529dbddc98dc041cb5e11598474f34e5356877c4adcfeda2bc44872ab538b908521088e06a166b58424a462dcbf88ba92362f691ad015083d83aa686147e635842fd2dcf58faf92d94a104719dbf7e5ea19522d395eb4e1092bffabc6aa314de0549381b8ce4b416e102c3fac0adddb2094fd1eea9451d6c14295446606f9e65ddac902a1fcbe65fdda0c1cb5322af2805dbd33633e5d5ed3289bc133983920491728c9b851b46e04c7dbc6a2bd24bfd63d3f5236ca8b2fabd0ae30506c885deb0696317929f3c8aa27b6320ee241d434ec50f2d2423d7c958c6fbfd04b059b3e98214faceb96ed5e3b8fcccf169c7873fb87c1c236539cd1297cbc9f8c3e66408666a678d80ad6e29b85df490fa0e83686aa3261cfa5e123f3fc7dab946691524bef770da4952ce4702d1d854996d9c2e30f8bd88accb0ef4917f3d5f9aa7cc51e566b9f94a3fdddc7640a6bfa0c7b6bdbce57c7fd76102dac7de2761aa971c949020cf11981d55d5a283a1b9943b2692b3a280b6312e32ed52d4f50a38f366b91cec8167f6fe4769f1403ab0750671257194b62b856ee5459d095298001e381d36df7e2c1a5c10241ed4c278d3d477bcbc1973728d7934f9ecdb0ead0d26ee993ec91199bccca33fac5881ff093880b727e2226658ad44c4edfc74b0c3893cd281923724482e1897215d3cad17f1b27dcaba869971f7e24adde068943faa11b45f88cca96997291126523d7ae9f956908a0003e93b39d1b88dabe66ddc777629b8a6202bc0adb7e97f754b0546d5bfdd2a13ad7b316d199b10694de28503e77d6a514e376bea64 +expected_shared_secret = 144bfb50c676e6c8efda24b8f5c94e9305dd281e3a6493d877f3face684df1bf + +comment = Rho leads to frequent rejection on matrix expansion +entropy = 319c51bcb76124b92f39820a5653c0ecfba79ec91d632b0488f4020e5df4e37a +public_key = 2a278678a38ca0034edc7b238f66c60b9ac1f309147c4cc7c78c393ec196c5b04c7906cc476b6931c494d0e4b11187948019cb75b0abdba480d61b6a58f4b8d9158486a7b94c05521fd7a1d0e8ba9c5a9612a8351f1b82c6db939ec326f34c13ba5497d7632e076c363157b156a289486a0b8a1b01a7154059149093a59cbe69ab6d8a67673b808fd217fada63f92402261327f84cc85ab50cb93517f4f3697e7b7c684064bc474ee617363f11711e4a7d5a422f68834abdfc685385877444cfab3b42a5e7649e0893d953b0db408bad47a6d8d061b884551e8031d4d2c207c93ff984b71a46c8c6b8174f22604c4a6d2d1c125117a281d37c2e001bdd6c42c3e3b90ea3c4386a7add997018a7330b0c2745f075ec10441870a890722d003d252923ca79ec870291329795072ed804a8045a34651191e824810b4c70b8a00e2c1504ea929364bef4027597f12a5c392889295fd6526f3d36572470a6b48188602093aebb3feb5b54db342bcd70c7ac881da4874f1d058dc3db26fd736acf9377ac64803a4b37743c6ea55969e13579872a6237d374adc29b5eb11a1d9b3aabc0377f550555d367cc7bc0c1b960a877a80a391aada5486c620f58182090436a8e26ac140292e547031ffb16f33c2a3cd2277a50903ebc67a22997d599a0037bbbe73057ef3296c7d3271cb17b13cc844b2aca8cbb1329b4886472747c026f63a1c4131c97dd8253c2a05e9a414b78c3c4fa2a6003712512310ab9b19090d7cf127b29aaf59923db8f33150fe2c34b0ddb8d3989513fd7b4a10495c9d86927b2cb505863b7bb3640912a39d0903db082ee47c0e8a01ab22b256682bbf6bb69b4b2394fe7aeaa939f4b624906b0c1b67665e6560f82c55b6b188aa7762ddd224e9648cc7c2c2e08589f948cc3f2f0b09150879a47a0e8bc1782c5befd0734120069e83814e34c663f115802b220f5277798076863e54ad0496aaf55baf21b5dcf60aa6ca42ef46c3c30052d7b78acd9e40a7079aa437908495c2506549750704577695f70725ef3eb8e98d88683501b3ac08ca8e5b4364c8c68eb5c7e4c690db96ee7194e5cfab7db691a67914c3fc3c219c56e52081f9ccc592de13ee5e266df71a350a63f1a63aa4984b2f4319e3399b058b4b56528bd14191e0657a76476392e9a5d84d83e87a3009b800004f60f4b4ba8d0bb2beac7362e762b417824e1539a2c39be5db8013060c76cd6453e313bbfe87a350982dc04ad7da459dbfab6c3f52b5a779c33047ab4f9ca16238d0049200d394cf44b92caec54659221e2e6b6078ccebb35b6bc045aaa331c8f29b55f3654e51b0ab20c16eb331843d2ae43749f5632056e101cf2ba7bc2921647aa0875f099cb7ac083ea662ecb0be57c383554464ea40f1248802fb9a48ddb4ba409b6db621b5395720b215efe32c47bdac84c5aaaf05c61c4dc2781a87b00710202fabbb077cc93602df8868756334362d3564baaba98c6c80fa15da5b2c924b8c85c918fa0d18bea758fea9b750da0c37751370b4300a1b6a3d7da6566375155793a97269cf4f87172832aee156ac1f18fc1179003637b3aab85db0b7b4b152b4fba7f990964d56c2dbae99d070419690a7b4293c6f345000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = e60755df5f91c38cab8e8769ae6c40bac77397480afce10cb1bccb30c8b8729b1bcb2d6be360089e8edbaa14ecaf528c488704870a6b9b299fcdfd910431cfb7da36eb755ad9fecaa91754a28ef2461886a0fea6c757f8e5298e047d5b61ded088a8c04787d32650a9124ade453b9b233832d699e5a71403ac186aec624d25ae3f8154c9b7c1a3723847c9b6e9f97870e81a6fac4888629e3b81e7df3d8a56f911d1559ff6f5fc15eeedbab77b70231d9e4a640ba4e1fef23fbcd073ae4c1793ad824b5c30287f24c52522e6d315e2d90c7fdf692c795b7634c3d935c98012075e0d263e917aa5c9f05ea049e1a8e8009b65c26d53017cfe5d2ca2212a78a5039e12e2b0490c2238dd693978f1d75551539834a954dac8f745a1fa48218eff905a592d0548bd927a5104185934f16c8c46dfe581f6c6ceeec019c73d0a0c041dce578ec5919b9ccc7f5df84822c4f5e82c0e020c6a9c326fdd74626da86fffc3a1067d3081d3c8ab58b3613a9d0f3013eccf6b3e5bc34bef9da1672bfd11d9b51222d109e5d3c66244d9723a4d4e1be1520a15d58f966349fdeaeb587790e2a0d87647f2445b8673be9045940b01647964e3e611433fb126e5619f8cc96a7f2f6bcfaed300592389ff60d40315ab87fd91215249b911166e648708b3c71f412c2b06fdb3fec91d287dcabe7c33b96318381fcde852017cd911bfb0e9bd09fb481af1494ab51c9057d77cdec4d615207d7637c007d2f2515bf532b7402a496d0687a82cf6a603348501585fe9fa987b47e06393f377832f16a6e3bd2022e45a81174a12de22b2a5af4ec78a55c2ca1488c564af9becdbcf2f7b635d88dfa14caf10fbe1ae4fd89c4d57eb04b35b810529b3fe3aa10d202b14e0c2417b1c2cb2adc02474fb4bc74d813dfec562e17c43fcfc1a35df1008c6bcf73a71e67525c78da2b0c5480edac41f839f8f67bddcc14b92d5a04412327a9e1cd34d5c3f5ef6cd1a59af4526d05996fc049a39db14dafd81d96a8f1b80d77a4f330747dc0bcec5214992dbe7fda726e4d0413ddac4ad0f583018a378c844c56d9ea0329904945cfb4f55cd0e0f4ff2358eed74675791d74cb7ab3ece8eefc771106dc4bccc7525e3118b8fb13956125402b310596c5ad0eea3ac8ef75f8b63bbe11ccdf7aad66d05ec052ed9b54becc2fc7ae185c9c752209d29c76bc02d1d05b693e12e660f18a326cc42a4ef4b6dbde69f4c4676c4bfbfd1bf3dd75c262e2f5ae9b4db247d3e824d1d87151c40a7ab56ad5fe9deb8ab40137860e87fcc972e12f6eca84c284eda1b925a2dd4b36eeedac18f1052f280ba55ce11f55b0f45443b4943fb0fa7354068259667defec383e380768276f97af4a0bb7dd2ef1669e69345d08155a0ea23846dbb9397cbdd023d5dbfc4a544572e82f21ad601f31cb01def894978cdb210b3617e65493f898bd6492adf5acdfcde3474f6aff97a86497b9fb6bfdc51882d3d5a3a35c4c80ca1c21fa3031a3985c7a2e34eadaf1ab6182c1a471721ce2d +expected_shared_secret = e3f0f3e54c7a50d4047b6fafea1311637c76e6a426940afc55a432bb7a23956d + +comment = Rho leads to frequent rejection on matrix expansion +entropy = 00ff48b3769ffaf4e91c1c9110eb8ce9e2cb99f060b486b37035407d2f4ca517 +public_key = bb3c06376046b4f295572947b7fc5597b38596655f25f6603255aa19ea7f9fdc5c9efbc5b1343b9d214923121da4fab101076d9144b2881ab988092fa858a407db97248516981a9d4c336df1395c8920496f487c60d46a97368103bb9af9b62162ecca0c023b7bcb71086c1b1ba92efa1b0521b472539b0a87030b7477bdc4d980be20ba45c0aece03c49de971a6f9c8f7522c1a4a6df1225e836640966348a777bb325c4f4b972d484a74c1c743ba88b7d9a3305755992eb5723cc8280aea6ed64b827a0518e7b4cd2cf56bcd97023195a7aca9486ce2b50e35a967da1f8c39c9fcb895cd9895e116b6f58555ae82609fb703732452dd60274ed87adfe293b5a2be5554ba0c455836c98267e77ba6f5b5dd90134e126c703cc1648cc827754c9c2928073493332b6394511e1499c0818866fa0951f8c1400fc51cb9eb6cf37b4a3eb3959ed2af6995c480844291766a66d81713aa6351555068324f84262c9460cbe041598f519c8b387b442a6d6c873508ecccf6b2ae4e89bbd1306f962915a2d759e2e8184df59620d8bd60fb2464ba40188666aad85279423cea249db21b34525b55191375c2f19dfc811d3b77ae56b9366262834c2b1dd500ac17828bcd44c024e90e06e9a7a9607aeaac2c93d48236d114d352859d9a559b9b6e003cbb9a07c65d0a9f264288083609434ba7ab3a826a821bf2db0306a84f386252f7c56011b96fab3b3fe2ea43536a3cd39c2f11d1bc62e03365211e82e4b5287740aac771cd772575c17f0c712c6e1485e8f4cb8e11a89fc4a0296b567e835b6f18946cd3887b56bc4bca9327c52239ab34925c2440ac7cfe6644c9c8058f840143d782ec82793a234e9ce9a2d2f7c96085c6899436cb9c97ba4bc3187b2ed5e622c212ab557bb828e196e0336474e1231ae72f16233ac7f844abf5434d457aef124963c85c25b7414df98bbff69008c27b9f25ab2d9990faba0bd9c00f7d27944f718fbbc1446b3a0e98611af4c22e4ae958ee993f8abc59e3c41252b160de5407a498a0d4f90505da3e90a4b2f8697e99ac7e7c769250a5bc489a74b44cae15a59be7f5922705ad8deaa41d4cbbcde7919c3360e2892914640d19765edaf3203ec950035550072a53b379982b3a3d1d18763f9b1601854679965ba34b1b073809ba675e09997a8519510780b593638dea00cba3598855125ac71c91ad671bca1499037b7791f32fb82134319b1ec041475a238bb5c4ccf3524d613c8aaa096217b5afcd2c4803720b549c8916bcbfac990ada5509c9362488d66f80b2556964a856c06b746a6a27877c0a213bd501b939796ef0cac630705d44e66a1d3c2517f940bbfc711ea1c5dba3a491b61fe4649428c6007052517004416b0201f2440d467733d923277d54bafd729d84e2440270a259c14d88a4564fc9941152b591aa644fc93abf08371ac162b9e180c0fcb2783653e5137a9faa04ba137113697b11e419dbd708f18b2fb5f20409448f31906c2a557da57621ad4242524a8f9f754e199a2b62e87132a33af47166dc614dc7034935c4b21b7c102d71762239c03084bf0e381524a94b6c22a7e499baf0ab6c9bbc8573909c8e99ab09a44e6d3b017dec2cba8b60c134000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = d388adf22faa385735ac4630979b0d692aab8fc502ac7f8a0e3561400f8d04a4447cc9ad1003d530ad2f7b5da076b02bf291aa837ba4212d43bfc514ee60a422c07471572340d7fd5fd127dd82283a4e0d145e294841124d0dfef27579119d8a9eda24bec0aedce586026d1107568831363fee0187f8a0bfaeb384bc9ec4282d03acc461e26c4b2826b15943d95d96ed7cb72c53665e19ef8b4641f6eef759a1d7fe860cf72c342b3d3e2fc784269460e0a1ba6c394a9c24db5a4c5f6ac523a155491d149806d73550b2b9f8f00074dd06ba24188a3bbb5f3370f398011899758365850054928429a7565ca5b9935f5e1b2600a779152dac16e78486a716a393cbb917f060c83a5a0cd56f1ce4de12bf088cd5e80e540ae97a2ce2b8ea35b3a7011116c7131aef928c23809b3ab4a464497d4be034543d5ff1112c6ea13242c4b60503607b9f4de544cb49c4580518e15ba51c12518312cd44dfcf39a4c544c71a84cfce3f70b789e4814ffb36c1e0767f15ffdc82ae5f0800bd8e2a973b8f30f34ffc792c9f7db5a91c2e0e02461ecaeaf2ae5d33e879f01475e102f85609acd1a8f0b1fc57739c331c25bf0caccba793b659d90483c220bd9cbf0691c5a4f11fa0c87fd630243a9f6e9d6082017dfc84b6ef1cb1fc793d14aad856fbbe051c724557eac7c8f123fd50c0c8368d48f153ab93da02b09fcbe5a91eaf3ffc9a7837b1e68170cd544057afff19163d3ff479b1d2be4f834a5b8ea082e2e37d9932936e5b3ead4ac83201a504ef4bbb6621349fb473aa38bd0370ee39105c5b635c1b149e263f5513867abab92c00c4019e6206600829f1b3ac1c849139cd4e04247801b2d126bfe94c6c019916247ea2fec03598aedc84197dcf7db900653fbb5236c52b640f1b489d79ccb4e4d062e77b6f9772218f64b02b3c29044c62279f11755791d8600758850cad537800e77d7727a63802e3a256031c94f3cd3f7cd20e10a781a29c2f699a3b4425ba4198d3e9fb3e5fcc726d99bc735ff16e2d1eaed171fe4ed00b0fccd81a8d08dd5d4a6c72bb8909ab98c35e0efaea3e9a4ed31ab0c6ddab06444150d36637077275796802b792354567f2af4dfe79bbc095f2bf801db578ce720e8e4fc9ff772d016bf400e5d330560aa5d91760f3dbfe7c0a175f7d0e730665ac079b4aa29f9b51a20784bee6020be8cd3862b3d992863d25a8215e1169f5eb4cfda064cbba34e1344009b461334490f7261c9a6a4457fcfe7b8536c59a8ee36703e8b439feafa9b4536119b863a91805706dbeb6e79a9aaa8d3c959acd75ed03cf0137546141fce29dc5723db5356661b62a5e2addc6cf479cbb4b6214e44b0674381fcf8d23bff22ab413701d8613cb03e140e85e6c00f75204a6fb1ed29ce15ec90cceaed7e216876b5e5b21b7e99da01f6c2c6318591e57e188548dc9a98e14a61c472d9726cbb09635bf99b32fbad21e4777804565d749b380924d7d5de3ec6be5b4b2cd2b784abc179b478c9237e111ce04f99706bd85c7 +expected_shared_secret = a8006ea55b49d054de26ec8780ee0928650ba04f33699616396fbd980d9bbd72 + +comment = Rho leads to frequent rejection on matrix expansion +entropy = 4960ccb1276f96d7aa55885b6ae6f90343d42e1391e8241b5952931a979837e1 +public_key = 1c5c222e297e1951c5424665e24b2f8c0a98fe5988a202b02db7021b8caf6f390469cb3a3a44b1bba8028572290ad3987c84380706046d3147f2a098f6c11912d204ca7830b49946da095d77e4b55fbc763df31a6731b9bfe871f8f383d3645a44b18e8b59bf1841c48da75a66a1322a70c186d7751853949a83af71494384221876695a35eb526b3431b4c02a00503d962c1e35898cfe9666b5b71aa88309266ac0cb7c50121707c06086e4d7aaa918ba75f2ac0502a43d985eaec44c081b7aac733c065b2af38807477501dfd6a84436bf9609b5ee21c78e2c5ea1e2053853b0ebb570fec357fbd227123683292c58d082b4990c7b8a9b8a15b1a72017844b572eded48d2f902621280cc4d0174e0a04c712b558184ab893bb70b39f7e92b5c3ac61c4e0a4070a78a6b0bed6170a0e07606fd15f0dbc553c64672ca3b8c30821d6973a5176aa2a0343fa15a75d26953b965d64d94b6e3c5873fc2ecd13199f9caee6672847a87dc7d31534870502c3a0b9493aaaa5441099b29a2c0078854e13f15e1da411cd086a12f587ccd03038c049e8ba7532db25d4a855a1f7696a0737c1fb5e2130a4f3ca0ae1a45429a44ee55604e31858db353241d620818a5b9698556833398878825f22a2f0b739d39c07242aa2d349002979929af37c74457683f940e503ab5e475035921abc92b5850b39f6d2052f811a869c11aac93fb6e063e7b495a958670e276e6e64bb63268bcd01064a782ba3443c4e0255e3db3e55ba7082438bc303c94146bc67270a12265eec0637761c47ef5c19fdd22d4685c335146998a4ab70e6b3a9f63c7f95257cb7a7ac216c480568056a825ba6b6a25b084a604349bc4fd668a0c6bccf84db88fbd504aad20b68b67ca7d7c9881b948af06ba3f172456b250850aa03580de5312bd85b9ff9e746fb26c8e3da128e2ca463bb010a6872bfe975947b9b00bbbae5e53cace8380d1c3b34e71b35517764635f1c29be58b9aeb4704b2bd58f81a7a20ed1a0a505a994b0a8e71a72431991541c9b39d4b7de179df2ba5dbc12af93f057358301d701c3fbf119d1f450ba9900c483546e3cb55716ab5f193dcbc6c175697d9403816b263bbb71930f55081d8c945db976ff8b130ef1164d6bc8d0d1b2244a08b5903587932bbdbb7d60a29ec8016c9cd30ec7b81b1bd527b59c063c134340d35495d89f3d46728159874b8cb8edeab232885d635c1e46f4653c70c95aeb0370da4529d319a812c9b9d210f8655222ab13dae5c0f9bc3b6b55a23edc15b132c937c0833beb8058529a1f2a880d7b198c947c65db8a0423848720248d7cc937346bf0e01996032106192c58131335fc52b6817c97250d71f613a0217fec98b713a08998b8932ce850097361f077683147740a8a18cb16367fc1cc8771bb50fa550c667fa28822ca407399634eb42a79250483663708819c55fae2c4cca04ebfbb7582bc84ce27c2796955d334af342589ab196b3d03ba7b58bb209017c69a95672138b526245137265948239476496a6100d9ec7092d931f8009bfff9a7dc22908074c3e41a8e6ffcc199fca488753321467850514ff99606b7a8b975c03b05e3c031a99da72bc953db617dc41d664cad9913000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 852e70f6d10dcba613c39fef87c4147fbe2af99288ad6c18b6e266dad0746ee662ad0926f4c0ebd669b27b893777a545d12744de0ee34da7b38568eb1809245f9a03547704e353ba537f35d5784c37ca5cbf3696975aee1ead6b376960131f6e73250307390b74a10645cb38c7c16a7bff98324f994e6e3a8d7a0c0ceac903e8be98892bab7d7691ca83233d61a31c2295a134682176787a40a263f9d8a97c9b262ad343f3823739bac811f95014f6403c0bd8a7fea4064454333e8eb63dfff6b3a9afe291217b0b0178c075cf04ee3a0895606c422e24b634237c1ee72784e14af8bfcc232ebdbcd2b493efd28c9a849bf47737e20948ae7a399907b0f2a5ac9ded63aee710a30f76327f3e1ad042dc12776fef148daa0acafed5598650eaf46dd53998e6c38ed318ce56bd35ed18f99a34fcb4f427b3de31f4fd0ce2bdce0f80248ff2370e08cc2eec3e6a71783aba779abf38a8bcdac9abb75d80625bb4420e2bca3cf4d8867bab62d6b884ae9e6f98099458158947e1169685b1a6f7d6f554bffab3dad8488e0a159232f3777cf85d9dd4399a89f1610943bb7279514e0fc3737ef8ef9ba12a4db6d11933db6f57c48b54db03470b0deb7dadbff48d75ccdf374f8bab3b7d3752c8dc4b513070fcd884d94e435e63b4b40c15abf109ccc5d9ab51c4d069685550baeacf37a6736daebad595f96e2f82c5c458a27e129af4dde2eac2a5768f5e4a4970a0bc68bc4d0d32fbc275d1aa988ea425838297722b826852735c4931b97e145be9c6b399bbf4e970c83e98bd5c1be7942c6419b0819e600015ea82ca0d55894b0ace32f24b2652424b85b0f86755f1f8db64138a704cb6ec6f3e2a4a5e708713398101e0cf8d6029ffccdddd03d8a8074792232622e00384ee5b9db3535d7ebb14713a32806861877ed3ad5b293980b68f0408eedbbeee9bf449698f0ecee6635f0a8905d378d083f80a482334d30443c139cf5a1e2ea7048cc4a1829ff36f9e0f674ca22d794c2d7e9dd3cea60318788e56b3e6670215b82acdd4c9534fcf5545eac516261dbe4bb2e7fc38face7c59668487507ac122d295ca90af4035760c9b89ec44f432e8977583ea2da6a21249f667fbbb5c4307bd3f2e47ddfc8aeacb54bc33d1365ca3b6f75c0b50917e2c84849f1898a3e1c76ea67b21143f39d4002026b0e2686908bb9fa502a88c7b5c747f57c13b9704452c1ceb14a5342e40cad9987bfb32c769f110d3d39cd41178e248d51fe7d7f1c55a5f64764814495cf92a4155640a4d3411a74597f4c8571dd0662ac2ccf0ec3a82750c0ba5c3745247b7f09b62dd9c6484a1e0a0199555078d3a750784c96be465053f3e024189cfa2875b3763971b48b5c8ecd155f879f494d9be7f4e27417a6fbb8843200eefceb4334341f8a5a0e98769cc977979b405fb0efccbf442008f7cfa18b28b48ab56682a91d8362b6b5df54db3dcdfa25d4740a13ad8dbe014b210ec14af156b34511896e64d08f37b2cf2a383466351270118846b6fe505 +expected_shared_secret = 8da6007bf6e536286b9f65fec6f014680d193306a55d37978cb56b245e256eb9 + +comment = Rho leads to frequent rejection on matrix expansion +entropy = 456be124e7f43803de5f734ea016455d68164a7f054c003f4ef49e46f42dd8d0 +public_key = 0cc2bf4fcc4e0ec002da4250cd5320095843f29795b36b634ac922e3796ae428c894b1703332b83d9759027588f1ab2539180b75da984246a745ab595c46ce9852029995997ab27fa2b94e165025e7e7061f2cb35a907eb6ebb0e1d2a29e139f179078dbe13abf1787c3282fe45a1578e5752b6950e7428ff2693c6e6c4ad9b960f024a7e1f41783f7112489112af688b762819b222e1d6246717b730aa9b224ea64a1a45ace60257522505e69bd1b2235f8d71f8ba5b5ed425ffcdba742379a7e1c28af1c8b35994324051d7b46a6047b77762c158fd5977e57bd4f398d4f1a70175897de6c8a3ff6ae90373065233d7c4a0e5dcb8b0731914b37cbdd29148be2649f055df6bb82fb398a630a6c556c3fc442ad78e24bd1406a35d82c5f582610bbae17d118b3f0347bd84f7b8a6deaeba8c698c456502eff6203594966c1f7413a056064d09bdd273b0ce56e506c0cce2267df24a13d7a0cb5513273f37438b568c569681314c3b6db28e05478e075abfdd53cd9291614c2650dd58b40f66b10e3a5cd11ae650aac35821d5ff612d1662a3714962b3411e5996e3ca3b839a58898848ebfb869e9b214635109129c333e931b22d34c63c96a74c3745be124c153512c060ccc6a36d244139f106bcd78808db7cd0dbc3e5b452ec753a643107a5f946b8f319a0fd28bf86c08bd16cb0324c44a0ca5165174f4681b6fe85b21791bbe1b11874270069839213b5829aca7861ac642e4757437742898416e2988c3277f9ce35f82218e9eb72afec300b9e59bd1b10349994bcb34c9fd2b31ff7482ac4c75b693af46a581dd85cf33d21e600bbc2921ba49053cd5d28595799fe23541a7d6b4e4e6b59f761e0339157d5a272406be1a776b3eb2c3d33055626712b304c4e651996f26866dd8a99c607f0a044a4ed4c04eac8122114eb6f567e1133a7d385b4edc71d19655668a86cd64503f0bb1cfdc06d9d387e55296c4a76a71b78e64daa58440264a8a6e73d2bb8c028ec970c3fd7535bcd65110967cff563ee9c5777a465003fa7ad97230c2c76bfc41b5c9d26d9a7c3605905fcd99b36ad5c6ff585513f633b26617f144a3dc4c70cbb40b7c3b8d0331014fbbb7f3c59179d226dcd4758ccc3cab8679085103e8949ea10c796204ae993750104a2123ebb902aa8902b6241be505a9e3a6734191734bba77c969e92a9c0894367dec1f0d50ce5046ad6f3aabdb138f5746a737082bcf6b8d0777b4bce1a9a35b2e0d794ef713736b4966d1322594eb8e90a5af2b42c2d7874296401f4e6a66c088a73580362031c9b0119d22dc9e6b649ff220919d42167f5ab863603d474051e3c424a0f8516ec0652545c6bf0831cd8aaa992c120d2477f791ba1ff56ed2bbc2e39266cf618580b7b19aa94755869d7834a7d4a87e234c25c0e595cea31a8715bd76d3bf5e6badfc4a758d7bcb88b5a018228c234836a0c77bed231a64249a064402d5f0b66276113022b3bca4486efa97103560751b108a5a10579c73c1e06b0eb117ba5a635b459e2f3887734b83dceab3ce9a7dc758265471b795221958359ff3ea282bd2c099436fe3d3c5b2000cf0db36a63123e9c897249130d1d27bba527eea241d8c930ff80d000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = b931ab298f4492e30329ab86e3d92e6241f72c568f8a2744d493c2b02b8d5d41470f0d73ffc08deb1812a6f4143f97afee2682f6d4809a0ef3e97ac2ae4468a5d436c5549f751b440167f86cf238270eb8c2e3d3d9ac004fb9ef5245d32b4740fe79543c073b41c8a1773f11b41c04ea5eaa467758660c17a6b38cf19b151e9b6c68fc35708be261a9e7cc45d771853132a5d7059e3b6b9bc94755f451452f444377be5821aafcddb7e708fb80f31bf1a89e1691009e1e36b09d754870e24fdc640afb41ac6c4260b68dece256aa9467dfbd29a25ab901bd1dbaf2efc055263f06780a73fea14bafb12f14ea2b6516c97b1a9f56713554b218613510ed7637940272b502ef32c3f99718efa3fac323207da815c6c5d04823dd28f99049ec50fbc590f519d843e0cece45713e42ceffd48dc1b7a739124c698acffd4fcf1390351af06ac1212be3abc5f8a51369c57b0108fc593c5d7185686c6a27363416e53f1d578e7066456e6164c030328ac53c2ea6fbb6ff508be8c2f973d3a43476831c94a7e85de88b71fa77be26168f82ca3620d1024e2bf998340271a4e2df0654ef1b6c9d5a8d95ace50a5f5ca3d321a9286210a21ab97d64066390e287d85345d22f6b42d597c5ca8888c1f871e34a4d1d7e89380abc284afe3f1f7784d47f75c674354825791191b2cbf5607ad26931bc0bd05ad2113d5c93c9e0e71a8b6c69ae4df3383baf71877bd3274de23d68ae57d54e3679b40950c73fcd38c1b8ed7c58f887e5cbc74bd388f77b72875828667b143571f6d0b69cebdf828b49d6f4a6d9dbbdb2188e1b0b30eea6a5b9970962f00f8b8440dda64629988de710a3e086e6a220d27358272b680a91195115741c77ff04c0bed30a2c47422664669aee91d263a196ad48dc24bd386dd9df5724965f2af73bb7a406bf9d17f3485f140b52fdbb06b9153bd96cf0be8ed4c0024571f859c8492ed4d970e700e11360d4cd51b3cb29decc38944a895978824ee94ee6ccb6988337755c07491f43526db47e557636740b393d460b3434fa70833c490ff59aa62e0fdff9a0e664dea7425ee586c29c7648a3ce8ebe5b441f647596af140a87d9525643bd97707cd910e17cec76ed33f4dec0c5222ca182654c8b5ca12d5801ea4c26bc7ab9877d9f838d8455b59c5590f4c602887e219a12077f9639be7a6f5d227d64540f3636c46cbc1461e665f677b0183c5ce13f77d923b368d05030b04c16ceda5d511fd0db061ef3b626e50767cce8a5cc108486e941b7912d944a7a0e0acdf050eab2f600c242c250bcfdb93ab9218a4b495457dddb959e0a8f976bbe147674d5ee92ba71491812ed10fb7de3e607d6ae67344e0a611a6e82a1b66e0528598b30daf398c98d5370e6a1630b7d10d98b12a1470fff4c04a1859415595362e29c3245164a2f1124189c3c0e7b0c875c658fab040c5e0ab690193e3eb1951f24ef0f39bf51fdacd68b65b445266b758dea04de3b3d3137c9445351e9fb80f394b76f24383c49c747e9b15814 +expected_shared_secret = 46f591e3c6491c7e12d58a7d06ea5354bbb77337572b70d94e4badf7ce394e08 + +comment = Rho leads to frequent rejection on matrix expansion +entropy = e8ac9e76377d67d84f85a142383e777157805be0d0f679ba89cefdfa61583780 +public_key = f8569c9dd09912b200bcb155e7f388139675afca87b0aab4e4e2535207b4d1123062772bc8aaa028597d15f02f1240b3a4aa96c1b344b0b892bd52b3856ccf6ae94028574f13c09418eb998f741c1607461bdb8cf4094c795acada2c015bc2b5f4da99bc85b6715b6bd57aba2d016220ba2db3a9ccf6524474e0c3cf0003376b2aec2b031cc4a224b66e139397e338a8a1ca0ad7c8a8356b09078588955157fee40e4ea1177f7c13261427eb047d14a826fbdba1cf607547a93a61c8a5ba200abcb676deba97fab023f5234b46c99cbbb38f27fb68b0a2b89937be4f61b3bad5446b74542b52048ec9310b1a2c30c25c569a2fba55be118472f6147dd65b171c654e8c3acc53637a2f409dd14b99ab1a772d755bf34a43fa745f7d2a55600a8873a5cf852b1f6356bcbc2a70d134471c7720918528b63270e729472d1093ef72629c521e49508a3e584f81250717f73909e36e231b0883d9c474ea0dd64400d26317fb8569106983b4bc3d0818987adb741d547fb15235811819493c1a92f665352a92495acb6981aa5fe83fbcf620045275017bb652ccce8b748eb9354bc374c131a74854f9a2bba3173b1c4004607a2c975e3ca635737a7f5bd35c8798174f6bc30473c5e700b42a96054de8237b1927f999351f370f1e241d89083ab9cb09a9e908fa82a0a3ec9f37375f30eac10e20ae566b4ebf811513825baa99c7a9265f73b2833808a52a755bb106afce71721e71c693f29b402b8e483000e1a6375ba0848881c817b47d3cf8a2d64a757eb80e02109a8e0a873eda7333e7847902a4f4c44e533a8a8039516549aa7f172579e063d73999eaf47c13d73749796dd022cfcc9522738127a1c984d9d3755c29bfc6b52c08297662e24ab77790c056101bb2916385bf418222d752408ad1843cf6bd80353a2068ca714c082ef86503064274f94065926fc59c107ec5594b365606b20bc010946f60c7516c4e59c33a527ca3229b2cc35459bcdabb9dd8170b1b319571b535d514f37b3de62a906a05bb90320b88b989d3204511a2151bf39425a1572c192d8be2b695f18dff4a7ba7206d4409c9e51c54f5797ff9055837d2459dc85233d3c95a597f7596580a83ca3cd6ced5278c24142f90b653280b54fba3159147cb08095422d4765112030f5a696a628d8a67b90d27762665274c338540d7a32894523bc53dbfa760146b32edb938461c14792216a4b94615615afb151604f31b518c37ccd502709325a2013aaf22ac49a67350067f405809addb023e9a13d6734ce5e71f802a147c191536eccde7a67295bc86322a7fb83308f40a5517b61a790a8fccc469dfd752a45416f352b6eab11f0623551b49a5ec2754a674c1847bcfce66c9f80946eb65a419c06747c2a037a492d11947afac79db877af9750a85652f6b06447216bd69418a86169614e27b3579a8b3b669f8eb8b84c252574c856d91b081043710d0abca178b215854f867c5b0da0266977fa1e75d29d560015755f64b867f011369ab7189a916207c99deeab286e635b4aa6521da156c310cf4a592926b33f49062c94129a9547ae24a7e0bfb6d4f67bfefaa68cce739f46815afe593e8ab3a63a90797c01aab7a5f0e73a2d589000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 87147134ba6c085c2b878dd751b77273438b4e9efb50696b22e725bca466abff4ba40a150b68401f043b73127177e579be1d727ad37ebb79b2f5d3ba038d4a8a6b74633f31bffb103290c0694beb9c4cefcf47fb2f33ffb3d8b6126665cee64c6eaf385a816167d149a328df0efd29c4bf324e4f3769f8d7dc784da38bedcd8a653a42b0738661d3799db5c9a8c65b88849d07b27c5c88032a3b090026fa2d818a4e26672fc81a97769e432b217df4c551243354131100947f91df1cb442200a08eded975c39b74da9c22dca588f8fe63cbbb6470e3b029eebfb5ecef2825e834fdcfa2337f55571506498dbf2c97fc02baecd0d14ddbbbb4bf48eae0de95d42cc8b364d6703574a0faf12f72df2482b78b005d800e31bf1492f4250254a0a48990505300d90baf577191d8cb6161a4b39d18c84515f26216af074d110bed4b2af846ae9b13fc485e55f9a72f7347efb147045f27c914a415fffa32ab9f8251a03fc7efef160da5dc25e5b5ff12fd5e999fb7e55c9014a9866e2018d09a4e5b3a3c1c833985e3bfe3cf484a6910248794e636822c40f6a7ba6cc35baafd7557e1000da487574bc7f252c9b82b19febc1455de0b9b79ad1f69931180b47367c8f621b46fc09d8a6d43d91078121956eb44ee1f1548f8d3513a300c626aabe660ae38fc0625ad42afbb5786694b747c65fa38292cd5127f20d8ef0039daeb8963d8639a17a64012357d1612910591faf05e842e23f14faa4b01cb657bb4a4cec7a11d35cc2dacd5556ae116a1dc53a82d1f9ce151a41dd05c953407669f86730f9ffb68478179306d56009f2e937e77995937ff72df576c552672893f1f4021d1be8511ed04d02278c9628b0ecd3182a32ffcd9e37ab0795cb161b50ecd0f97aaa90a9b4af816dcc21ec5f1f54e7170a4167dd2017325888732138e854aaf7e2eeaa964d974cfd3fb810386937e92ad92cb4fd0b730004918aa6eba5b64d1df55f9c2d0d4c2db8188918b7812a71592d4a0924fa67b62e3feeb78106e491cbb7ac9d456c3bcd747db26ebd3b822944bbacb1e742578b35b4d6d9f49efca4c929276ca6015739a0b4a369a7961babe2ac95b3df89214630218182aaff57be9268367282e4a040accded4cb93170cfd765535e26d2ffcc4e6eb6832ebe880497dbe5edc3c724b659727d5aa9b067719b6a9f02616504cd3eddf0d56e33766856b4542132560619866958f8aa54d434d302f9280208fcd3ff42bccfeb450d6ad4f0dad91208d357b2174fa67df22ea7b4b3176843bdd5e581654fef45c16017fee95b92e5a1f33cc6e3eb1db250e7c6485d368f8fe9e53f5c863edb436d7ea007af06570d3725f07213f24989a637d9481ee38e26a4713450d122849990892bb2f95abb6c402053a9d41bc8b9cc9281bc6a45e295997a1523942f125c3f899f9722397dd1678d3d30e43c20fb0f57ba95e6d825adb66ad7cd23c7a921709b921bf1bdf0c22838ccadc9866c61880de260f32aae94d6fb6e5310e72ef8d881c3d5aa08 +expected_shared_secret = 05c30333e58ef628d111f6aea0cd8eaefb393f4e1b9ea8ce21c16decc506a407 + +comment = Rho leads to frequent rejection on matrix expansion +entropy = 2fe6b9cf4510f212839e348d671b3345da68a477f57513ce363414e87299a717 +public_key = 4af3214683995edbbcb52acd7830454cf669b608c3cda86752d97e95c16c99b258ae01735c94a7bcfb585f451d58a0673103b203e32f64dc94b301363cf1542202074458b6d6e8cd0076327718531ba40f2543a1a91b0fbbc76a93ba4c6685bba5560a9d6c6c42897fff8594ec665e311ab39edbc99580c35b35796b0c3b0d89b8658a1b140979ecd28e87f135b5b781374a766cc18f1fc03a7a3ac7f5fc0c639a2ffb43bbfe74c709b303abb1432614bb3388baf38980f18a141d502797674d76bc8159a8062c79146f24973d090bd70390961ba5ef62a5575abad1219e5bd2c3a063acca14702ee58a32a593c5236bbd4ba938a339108c8cabf2a08516408444584ecc4124991cba6219c7f031ece14288097ae7ca9fd370a52ed7835388403816bb1bac26d56809e9ea77a788c8d6bb215b0caeda1717884913754c42190cbf10387e56f92bf46209fe448312d930cd735770b6ba940cacd71a04d1692044a1930b0c11b701c851a26c2462b0451930180415de6a1addc504724042bb832faae8576f2316fd718657d7ba8c975f6584cc91c9cef5609a433b6cb1f08476363687944bc58c888a00925cdb862df89cf96b5a9e7948c53a51d02001e0a97bcf4735d99554bc86106f0970869a4470794e20051723f40ec64625ade826bbb9bdf962a0190c708c0946d96263ae580e0968b01d03c31d494bc002737d990bd0252662bc34337b1093b97d084baa73eab8636615a832b7df2a9c6196495ca7422ebc208d6048e16c2390c1c91325a30f9ba64b06911fe41b5ce35f62c1567029018d34775b6a0c8f70081e5c12d0c73dd6693b34e29c6c669fc485c6b5004fa06a7fc2d2c995bc15b477a1f7463d12016613b24332e4729f8784f9024c2b4c2e91a9055cda9347f7cc02f532c3e80620fbb124f0b8da57abc6e421606b2422dc450c5b97ba040d781a0ab4ba5cb7998aa5ab8a0681339dd4b8c1eb77ff830a4e865f36897899d003bab7395f5b580b78b0046014181c640341aa0a5920b1609245f140bc7a31fa942157569096495affa32248c4a67ff5456fd8189b5593412539173c6fc898118b2b98535401ccccc1fa7945eac36bd248cd081925c941937213263c81274bec5773abb1c4607373029c6fa59723b893fde7b77124929361467aeaa1a86278e6b3c47a68cbc28781ad199c68bc09f3538f2933aa011b800f9609f6887ca4fb3857f869c1ac3147a842359065b6a59d999465ebd4228735a5c7f984cc93928d4c7c44ec4d90d55d66709ef68827df87abcdf433f79342ad4152e405ae69f56689747ecbbc0b23d55c5f86b5a699a06df3573d8715c6e667bab949da615dc1f9620dd28d2eb1ae6674506ddb212b315b7c89b050e48fb76a4946b7572e6a187dcb4130c80f38328037e2ae7477bcfaa71efc3531b2438800744116b96a0f48a1e549a33d19b0a05c206baa07345ac3427578650a97ea1150ab66cacbe848d39c0c744612b4d0738075251f7bb508113126a6b0e93b67bef50e07843c271614a4dc8799bcbd633a1879195f570907c05310fc91ae2e6a7ef474c6cc1112653589b32393d1bb6d741c19d616b6a93c2adcea5762d35aa285702882463b1d5cb9de000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 738318f855b7a4cf13603f7cb528da3e04dbf38e61b3947e9c98d96d4733e6a2096a06afd90b4ce3eebdad11c4635d9e1ae8e058908df28e936cd049100ce5b69a29f80ab7e827c3be492bd854d20f9b0788fd3c933f3827add6ddfceb81a95f116d48adbdd6f543bc312fd5fea9f1fff44f97ac89b1695ca27f6afdd4a01eb80182830f4e1fe457f1dd7ea64c496f49b4904e47be3919a0d90da460ce60c8a6d66bc8d3ff55a8a580899eed0597981b9118c7deebbb746d015c8e117814f9abd649d6616bc075239cd7301413c4815eb880f7162666f296e06e4df2349272058d8f13e7255707830e98acc340195c0f0b61080fa8aeee33f1ef7a02e3faad19f1ced92c3941751980f5dd3c33b933423ec450f16543f480b6c3773764cd09a469db5d4fda16c64a0b80105f796adcefea0cf17fb41887e29d56b86d35574aa8a04992160408b6c30bb6370ad3b2eb0b8d772ef1680f1160e4fd3a6431ae5eef86ba8a4550b9344e2155e7606f211e85160642e83a923c76989d5f131986ba424c2d007b22d3efb868fcbdcf0b78a41b59d34c9fb24d3d65b9fa3bb87e36601ce99ecce01cc44bc120e983aa0142e6a56a3a6a19ca75c73185d48bb6179f8dece198e59ab821dbb83c429336e81f90b562f3da63c3fc910a13b8bb04a8e53ec067377fc1f1db752e9b2caf3827870e01f5f632734658a2c69da353959e5f00574d595bcddc551bb728bc13267acb7cade43b21b244a54716ba3b765ae331fca979948ded2c7fcb9a773d6bbd4509536d29b730712dec068353fdcb9d267b5ef0f905f34823a21a1be3df2657a078e678f6eeb6e0ab1c65c034b329421bcbc8f505a58a78d250e1a003d13d928cd6d305842dd127cfc805b02280d6f6146446b551ccbbbac16a4f1316359e5c2b801a31f674ec5a48287d7818f7e8e56f53c77a0004d8cabb530f95a54477fe5ed63dd47bdbc3d3d26194d9a488a909fbd4a3ec97163c7b8fd0467c6bc20d1cfd03046200baf232f6f5a6798300b70c197f1f616d12cdd17691406636fb1094a2e3e4343beb84f9a67146921397ae9be4160c1c81886db504591122ae7c90f1131572e54152ee1a203f521405bb928af9441a63fcb5445c5e9b2afce13800750babfeb6fa88994a8330d8d51061642698f02380d853bf2a57a8eace6b1d52361820342d00bfffc2dbfbbc3c0a8699c5f80fae249dc1bac232383b6eeb243d9e960809fafa5bea564fd610ca7c399c4dbf5000e4386f4700a561450d02d92d8b5ccf428306a9e57eaff931b31a4ca17e4d6a179db2abe53452560649f5b8f1858c0f66bf64fcd440b6384dff5e62f8983d46d924d85a4b449543ef8d5e0c023353aefc8f552e186b84378a1c34375cc28d83a62b04addcd057f4d83b42926f811b2f9e0bdf9d59cc1f65dbed5835b60404c048b386a3d09e0e7700735fdcb124c4238e1874f99703a685645cbd5cc3506799984d0ead93cfdcb6507d0cd757d2c0f1e350b17a1258e65965c2c6c092b6d4663aa3 +expected_shared_secret = 10198ed9166d13a1ca423fe3b36244be9b94fe16deb306ad742f505ace69e1d3 + +comment = Rho leads to frequent rejection on matrix expansion +entropy = 86630b4f72820d19e9941784183b3a0d770609becd6fe0dc463cb6edac432d59 +public_key = cab527e162b7b5b390723c83ffc170e3e153b16285676101d66999fab321e9577d9f284fc3531e50715e790a2714e404232640de9bb0a4649e344ba2c33977f20c4488463a0dc58c1f71055b353a749a54db7b9dd1321d1f2812ce8a90a503a1e0e36ce0ab91309424b896bca7d39575bb6129e0460282c76b3937313839ad8672d4a13ef0f9c738c3c473f38be4a84de989c745576ad6f3bf7933879f69b8d72b93aff64c3d29292a794db4a140029519b99abd78017e5d84c578369a71089ac7b93c97a114e74a62c98b0b7ad707e60b0332b82af5d346f8373c11c83bfe543d8fb10cb9f128f1509ac3e02ceef44e52070305853fab0831bb05bc4ab8b311a2867a051b2e43a8254c787fd437838160ff13b752255e52a466b8543865dc61a40681b1e74eb7504442e943f99b7a4a695119628dd8603f9ce29bb9ab9202cbc52b78bea806d0d2305b442943c3d812e2d2cf07f2c2df778c6d6794114189162c537a9540a0bb75660548ffc56b1a5598aadc5055067f87d545f87b5bb232ad6497bf5f68110d16530bf80380410b67a47b081587fa78acc0621e70624605456aefd9ae2849c715a89a00332779216a6a8b3418196e23e76f919c6d4476b4ca606fa212258bd520e9d9162b066ac4e12568b532d584cd091606eb9a2f91882daaa2815230bc21ac33e8a8408be21b13c1cf90ab1e6f753843f6b5fd3446f93a2072cb3a94d5090e870ff2d788a94c912837899c2b04598c0085409acd1767214c822cf3579637c8beb94ff9b6327ff47ef5618e70a5bdcc76c287551ee2ac24229507b0d87b779cc59be8cc4d30ae0e161ab62a05c7eaa9a209152f37c798a2b1c76b2265dbcf930b131ad88c65224c4a5a2d1712c2a631c2982bca5afa6029e52824920c3c7b3093988d998001bfa23d9b01c91b111cc0fb7accb88d34f34bb7829192d21923d15faa81267e284b7aa18df181a02932a56dc4662f19148d055a91f8a3d97407ab9257108b7447e24a24c12a65fb1331dc2d06f60561d7bac9c993797255340c6770025f776270742c88ee4a899609304d75b55dd2c303b97cff2871cca3bb9cc8400b930087571dbb4c73ea1460bfd34595650098f38548906c2a8154b4017626a6b8a1db4b2a221c010937fcc8c06d6c7132688e1f2bccc869ca8f881303a52bc6313149b6450de00728808143f438be904c8de5923d8a02482a3a201b050d4b1735867eb8e7bf11d5023668c37c867d156ccadb2c383e113dace4a090aa9c1cc530cd17a94fba6c6ef062eb357e3293b343b169c6e169209b0faf0bbd5e42c3b6c077b1728ebb2a1e44d431f7c34835d9b0021871aac86d0782448d08236d94c0f69a46090b6c5916339baa15222a0496600dbf012c20faab5c7b7613c85a5c759d178c6a9b1596d291ce6b975363e47331b16735db2fee1027ffd018d8f338d712b2a79729fd20392c837fe40b3bb0ec9f11fa566e426637149d9041088419575db0734d854d0a0c769550a8dfb80da3cb9f4a7ba9b4c84e45b3457007ba2f380d19098d4f915023ab00e0872dd6485e1b365802d0326bda7c75e7346b001cfdb5710d1746bfccb0946151abeb7122baa4b79c4f6cc10828771cc916000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 37abc2d961d3bba2efa196b62a4f9acbcd14137a7253a9b30fadd1455c22014f3542558291c55a8a00cb44aabb2d0726210b887933dd24955282fb51d17d1838b6804186de8130529c251621677d8464131c99dc5de3879df80b5130df5409f0d75526357ceecb0be3bc1709ffd3df917e38680bc53017f934179ba3467674d8231f6513c64f4f06507a2e3d10a4f2e145d759a23897dcede141e5b13b235b274074eb976f84edda05d507b23f248dfc3ee139f4309ba099fcb250d7c4d0eb61ba359fec9ba74186c5956f118c90417931aefd5adbc179f58282a1885679f21d2ca69a30dadccd896b2e84b4497c347a17a9e3bfb9bd8804c3b3c7b689e1ca00d3d32e1efa17edd4c9c8a9c8f1ff06d991142c193489e1de0e4bce1e989491a0e1eb2447fdf301b5f72a31601a119315af7bb534a088707920f8ec8a951f22929f90e601e231b7e5b46e930d19298afc429fbc0a68a6227757b14fe547caeb56826e008786e5cb4d01feb8ffa890612127c17474a50671890c5ea51460973b3944b66295b917f0bbd0c188e37e6d85d3a2aaa1f8e0045a2d954fd6d22a36ea5f6283652feb40a694e5e46d1953de2e17a090d60fc16dfae7b0d0ab5bccb33ff90d13860be15cd4f1e4c12233a009537920f4b4738ef1e5d40c67e9aa6b07f921ed1100a1e6138c779062ffce429167c4f204fef3b6912f3b35eb44c9efbe164ce5c939027d8e9bf77ae311a6df1fdedb4b5fde5aff35dc94bf023048507371ecc567a1a7ffd9aec53e2301e2c8f9660890c61693fa638cb62d94fb436709c7e619248a8ddd71104d4b45f15c1878a847aeca848f7826e319856c09c4418b9ca0893b983734daac815a97985e4529cbc455855122f8754ced61b89d43df961bd6ffb1c6a7a74ca4a88bf7c2bbe9ff412b8f2a41294503425a3c39a64627a41d70499ae7cdee4fbc33f042e7cf4fa04d7f60452d6ed80076dac04c7fc2c8c9d79d7f7ac8f125b3b7b12dc36b6a50f9316ef24843594ff5d0f42e6bea4fd893d7f59d5d219f119cd682438a917c28166ceb2e96cb5d7e096889543fa145ca760827f9734171ca2c46f49f195e38784bdc6890d953b6edc4d04c4cc635b34847563edb6371e1cf168b47a506b324e66783890f5e21780a94f3d0a9d3021bd426a6e8c5c748661cb11ab4e4101db18f077bb973207634a674c7940863cb87481884a173aab7d5929b5a77127299868c4dc275669a1827a16788a0adaa52e85f52a349ebf4bd8f864d052e1b6978605a6d368dac7cdbdfb13f90ea6d2039e375928d8b9fdda278d896d847faa28a9a1723b16af26110922c76bad4154ce7807e5a8f7720b7b28ff4e097bcbc70bb8f7bf25a565d8a81b81f7569ab3e3d868abb474845bc2e6850ae4c3caa887524cb34950f8434baad75e7ce00808f1381d93d6f6f6d8d85c86b55678e5bb819dd1283485f4e1dab73819d8882e5149fec4e34357f881bdbd0345a6868e520c6c51bd9b355765cb129248cec784e7658e33f8929e0d4 +expected_shared_secret = 2bb1532ce907d285b2d2860eb9bb5070a41ae73585743b26b948cccd1731ce66 + +comment = Rho leads to matrix containing zeroes +entropy = adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6 +public_key = 0d849d09133648875d99c8a2d199343e2069be06914b183e36f76206920fbb9294e3f17787c4595ab553ffe18287896cf6452e149cad67b901767a6e37740624d12b4657072571b9ce524780e2374d1b381e211159eaa9e8f5ab21315e3ae48041f50eb75430018199290325406bb65eca0088fc5e0b72ae2522a1e65962afea8cdc2c1ecd1a8efdf38d12ca5d4bdb8ba4d50d5de96f25034707aca01a296e63033a58200f32079cb8cab973026934180857d054dd75371700ad89102434f2438a823048900ff4fbaca832065ad99fecd12a742c286c067a93ca6de6e85304572a4bc2729ee2b421a41316c0bd766087eb2a88d50cb182559da4492a0324afcfc519e0c1c83336913881cdc9504ead243878caa6783557eb26599fc56fa26c6209f31222b7bda6db9b50341f5741b6f029a00440bb1af6b4e07a46ba9626d2a3475fac7bfb2047a9b3139c225c36bccb085a3b60c51a6227230df260d8f47ae6598ae065395e5abb6d5478ee97a9eb1a369ad367b075642997513159a1bd426c19542c86da7de7d626c7828dff7c9a6b53006ce03cd54c4f709c231f70829593358ab2515bba53da61c71c9b5b1df2029fe3404a6a1b7bab3be1299577c86997e48d38a17242e75847a23a8ad5a7511bc87a0261a8ab0e07889a53323ccec92e497c930dd57e43f39fd495b5cc2268cadc2918cb8ca24aa28c110b84c5b2b075c2effb3d44b6351cec34503c94e8aa016ac837f504aff5f68def8c8e0324754736950f28bc4d38bb6115584fb681b1b05f8f8ca69f924d25ca3f7715c72fcc1706f83f8538ac14b79581e103cf385dd8962d012309ce7774c687ace4d8372d1ca7acb1cf8f27545c07b6204140737316cf8971b3448127434156c9a4d35352dec27dfa82bd5e72522517bed633a3686ccb64759396db9ba279a5e967c5284814058a2ad44b8b1e9a7786ec1cd7f63a7ef72bc1f5c35ceba1a0fb934a2a547c86a6e00a51e9f89ff8eb68e3a48e7ba03418072cf0fbcde0bb15a6ec0ae648c012203bd6d83e3dc917b7914ca31505e5aa62875aa96c4b4c5cbc5b368b18f68264cab71332a38680826895d339ca656d358a0d40db12ec43733e60a287ba3998e7aab76972ffdb3139b30abc0ab3a089a6223a04c92a9880b89daa915130fb21ef6127fbe74721677d129793fd035d6fa2a1f1719a710a5030abbb917bc659b57f166304a0474daed828e8145423a87abfb36822d8211d9508a6d53994eaa9053c1a69d03dfda68593b1b9ad2b3cc4591067658f8d62347e022205823942c0981ce6846bf02fa16a8b20f39e1a53caa21a8f8ab4667b00c040228b262724d7a95e1718af48ab870675a4ae537d364378560b4dfba04146381f4977647a333df3e718ced96d66051c3f5c2fadc67f29596c3687948f455c3b7b13e2789b518866968788758c2a172b0de0fb370722571be5259c76b06c101250a49b542375a97907d393328afba0dc21948d96861b5cc8059b5feaab36aed39a1180a2bb11ad797752edb36a5cc98ca13c4e90e48f91404212e9ccd4a76569d661735bc9709b0aaf7b068a09b598c96557ec2695755c53a7a70509d0294a55a1707e040b2a8564a623c5ab9094000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 37fa90752936a8099c78fb7599926bdca1d3ee985af00c51add7e3ff7b282d26b1690f34cd3a8997ead23c2ccdceb07ec9df81ed6a8967b848c406340dfbfb9bfb223b6dc849ca5b1969f7aa519a011e33cf10e641fec3c0411d22508a18bfb316946ff41be61a16a75bff04d87c44f33bb3ff9faba915ef3e94ea4bdf1a6a296bfdaeb3dc50aea22c4ddf77b1b53b753f3c228876c6aaeeafbd5c59d748b5e596535995e075d5e47370e5b0b570408b1f8ca0bc0c6d60099c6a465c5e6600deeca2dffe0eec616d97d9eb534671251956505e1c546975c8f125ef2a50192d5106be103fa8b475a407a1a0452310e8b1d78c1147640e3873ecc21811678c276185f24e5c6742423a8778f5a2d74a3fb7ce6862c5481a079f7574864e23886658b2108891480a481b64fa372d5d628948c202a4232bc0f8bf80ce2eb4f90fa47b6ff1dd55a6c02a41f6a7c68ee7f83a2fa094789ea8bdfc70126de68a61b5f8ff5b92601f97ebf53b3e196fbd595dad44490722147737f54d9e69835a98d42ec10cf1524dff2a267156028a60bef51cda83abb1f5df8a5672aa336c02d6591aeee7a4313b4e6dc2e06404158a0714bef56df074cd290fa8a16daa8a1fc8f49ec7067be5bb5856f23afc6b2ff72a2a64c967c374a7917c3552ad54124633285b5f0cedb49795a20116b692b8ed2b49b0d421eef3c51cb99f7aba701b0387059f34f71b12d8517e7495eb0433b69340bce1c755449f1d08789ef7cf9d0bd528c262178af413d4f40cef52392b87d805a4d88677b1b8275640b066e46fdf1ff25264fb5f4eba7e9e1fc2965a27108bc32dfc4ce565b98577f0d1bfe37471d11c3afeece6a411b33ccee3692f32c22f077401135713e33f5f868ac1852120c170336581521834e762070b403f49e08e52ed0458866fa7df50d8d3b5fa8e33e931313aaeca6bafee1cbfb2743762314ce70fd9fca8fc34b402ee5a2ca330f60725d5b81a6d35e1c41f6d8c88939859e3f48c654dd8b9cbb4e9e0afb8aa3344f6abf18b6f5d011d8905e12f4be7e7d4081573649d157d4cce8b7b2c5e13875e0d2c7dc4bff5e9d436ae112338390acd59c7b7e5a086cd3b00817a1a377681a73531d4f1efc7ebaaf6d528e984d9609c81714efb89b3f0bab8505bcbcdc5535dcea227d3507d38cf72133c252f5b425cb800ab6198ef3b33391bd5043ec17293fa73eb8f3f972e64c5dddc851f50f5c48175117e533c87903f2d215a27c01f6050795109d200f5e39793554b35b2a339695bfc55d1d32a06336749c09f0ece1e197dadb485e2d544823e013cb84a11cf44ac7fb4f74dee147e4fb805059fe67fb1eb7daea7be1c5e7a050236ea8079a6cd1578715d8510a53c03a94ffde8a21507086d007145080e07aad2e7398cd98305536e6f3a0a67f83b16698232591337d0cb465bb13c3570df161e97f6e1deb3b6548aa7ff4a30d145f64f2571bd7f748f3044afc5a8d3e2f01113430ce83dd59b0a627ca759551a635a68838246af6c304ba843 +expected_shared_secret = 359de9eb5f1a17bf7215b7c1ab7cc320d7801f826f917755a79f413876973ef6 + +comment = Rho leads to matrix containing zeroes +entropy = 3983da6a4615805f6d55c14ba582d59a40e646c7ae77f4835a51afc6c37f11f3 +public_key = 40da241478b798a39e11830b402803ee9c4decdca918a7276f2168cce60092c29bba4cb8f532bb209367748599501572dceb9560ca00bc841e442a41e15b590cd63fa7921b344018f1a223e9e44ec933877c330d2b72531729ac91746e26c61381c80d98003265c306040c85fb95be547a46e3c01671401a42237da688795dc8c9acc86208c36911295ad22b05a2717d810076b63b632eb254491a414128377de53f941cc7ea1018bd83cf7e6a76d85211af63cf2ec856e636a9210b04a24abab1355478d132805802725345c43a981c2cc3fb0318db62531a045d2ef57680b547bfdb9d5d356464592f47c2360cd249e73a0f59fb470f4491a9e55d6fa9a982b97ee235adbbd8039beb9f07ac35ee5cc6243897f5c81bd9db5591c7225e90587279b35c5a1c075ca5b7106510559eec9ba2d2e7143c01afee598283403a6d7597a38b01bf1c02582035ba743e1aa20c49983779ca8279bbb53d5115534916184c5edc70ce4372bb25c48a2355c22a5b15e7563554e9a0e6f5afdb3aa3a1cc5b32b67ffc13756d65309dc95d561c91d45a1fe57a83f9c4ae8716bcd8708efceb851e4c3cb3acb4ebc7993d1056a485bacdb50694a81d12dc098d39a1f407468e215f6e055498d215f6f4bb8471121eacb2a324635a07864199a0199b0b6276a8a4e5b9ff0ab9ad13474ea6b2ca46b2c41027644a416771cafa07a1ac28519bbc0888f3878262c871b138aa109966040447484b3a999b7b4a75ad185475ac46ed92a373070e03a90f8e1ba97a91b5ace881377a51c24bb1fa85451cc94c72517f3d72024e7b421666cd3814066ccc5d70595efa756bc3760688123e9c3aceeb270a30a23261ab23e30c7f0785a360e8a0bbf5401450114f80580b03ae0b503419a25861331d58c11ec1c21d47ca9dcab60a56a5baee20417172a4535bb6de18b151bcb4159aab3fe69a31d5adf64c530726677db07dceda5d94a7427c189344027fe819c50f10ae70e550e154bc7e5a698c324096e9cd1e78053c6a05c7c11e9b2b532d19a87dc08dde0c73f0d3357f732c441462c8476e5dc5881d55465893438e60350175178213c0b1d8b503782d786b63c1e66cd3837bbc4c891a364b42130c1864c675097f65b6acab701de01124ded8aef4f70479eb996c5558cff287ce1826ec962bbf554abb282442a1bbcdc210ca389c50105eb253ae05c1477ff0523c85a294e084504616d7f75ce624925dc0c00b9c3f2f1363d2b05cbcf165f365390376b9d1817cd24560604c1512720b09d25a82f7179b74399fe46db356253a8320b393b068f064db6a353ada951411390171b47dc29bc4f05a2bf99aad4087ad54be6602bc7db23ae34b27d594b83e798f22fca1fdb56333374f892487e7289cfb01be4b8b03f0d9c2a589ab101494517264b6ba494cb0490a1871d301483a4c647e5c88be907c7c92abd813865606728bb95aa9058bba6cb3953b012cbc2af7a4770eacb6f2a7b9e8e94833e0592717be06517e9d33389b993a53833f9ca20699cc3dff64995ef914c05bbfe154951b7221fbc779740b86cf59ceb353233288911b1242c579c508149ed71052aba9bb79903e23c75258a445611c9deb185efb25524bd6000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 06f9463d5e9d8718bd3f56e92a41b4147298b758e670e938ccf1b048a6facc0709e58ded8fe9a88a11ff81007e066c6038388b7fe0e5496c02edd8c28509f584b9d58604c7a01f3196f99d3bb5fe1e9a6d2ebb47b2d2e0da69071b0f4af22dcc830745229081c266780c1c5dec5af5b74b9a2355274ee0d0b0243ab75a5f59f09dfcc2bf305f5df0ba6fb24c01c9bfbc38749681dcd401ef1f38d2bfc29ae990835c48a80f56b0869e84f7524f7d469ad2c63aee4137130575cacc87dc8fada26c4b2195644b54db3ebfee1e4fc3f13ab744dabfa044ed7cd099ac836b8faa41e510d3995c129429e2f4c8b188b612ef32eed540915294be069d64c662bd301381a430123a6ac2dfcf2c6ea4eac8dc5b066d7cca6af8f399add96abb2154b9167f57fba21a145288ee90a4e47595738d7c32be27cb1b0e5e16cebbfcf5323bd0b719a641ca98bec4b148128e3fa11963070eecc2329efbe9bdfed16df4fed34cfd03e65a59e20bd3c7b8f012e88b8262473c7a36d00a381bf37c15ee6d709f9f4f0042080d4f67cb6f4777f92a2f0a4b07bff9e925a7d7ab581ce46f055f35c1963d283e4a210a59dad5dfc7a679cd828ad96382046816848b1789ffc84babaa60991082418286bd281947c7b664543af16b8ade454d3d8ae5b416f82cadcd7eefc5b135bd6ed577e8d85848419ea73c3e0ad7276b3ce8773e9881384b9d48ddb6eee9d9aba7dd2a3e0ac8972e301d9cdb0f25893c90e68f2d1ff8ff892c6b59bae088dfbdea3135e74501236e416a01c770bb3c77c3a634a29ee6d99a0f954171078c1eb44d76612d25d7e51fe3756df2c87482a709384825f52dce92884f8a3ea3ebbe219e0bb36327660b1b7c44583bdd924bb4ffd6baa933034e92a5feaa13b3bb8e8e4c0a54ce58f4a48ce0c8baa273e963d74538c55d2414891bcea9789764247e64897c25a8b154d2ef8d1356a77b8a5909c9a53d45d2e4d7362e96edbddf27bda011a439bfefcb09bd46bde933b5375bdcbabda95933f859c0c43cd60f21186439701b7ab4f19c8bcd63ab3adee01ff5c2c47867297297ff823c814bbba614e87898bd0bad020c6f51440037a687bbb96c558ddc0f2a250b836bbb36d88009a2575728eabbd15e3dd14b47c00586f371e8e7d964d2cb7c7acf1bdb0077ef2f79ad0c20e6134b54a8add35540cecb4a1db7bd8bec65467745c2dd4763d7c67d9a53826c42f67176354d472bca647540b404c0e84ab05e4d474dac551f0624ab099d24fefa1066f495e0bda8439291e4c18718ba9ee97c16c385309c0d9505e51ab5651470148223603cba76d767ac5131a13f097a537eeba099a18144692b718cfba31b748a72b69f03d8226bf5f8ed7b5ca93b40f7e64e5a56e6edf2829b61e96283518594414603e7acb8e5cbeee0a8e9026196afd72dd3448ede9819a89a580992060b1852af4e2d3451ff7518f18c75c4e4c453f2d7dba5cdd60f5f4686b5e2ef272ea958867501a3e29a9746bfb41f42d08ab860d862b6c0f4c0 +expected_shared_secret = 9cf796413560833a3c2e39edb3f4f4bbe551109a4c0b9a25c42777d7d89361c7 + +comment = Rho leads to matrix containing zeroes +entropy = 2676b8426b9d6a30af007094bb76d65d388c2b3da938215dd6f6987206400e13 +public_key = 13c4781290679e16c822f2246004c38ee6ab27fcc694e665ec690515542eee6350d4a13740b417d1b91883537b2bba248a61108a818d80c5c67b1c3265c124f9e56be2a13129121e030aced4585189d58978cc3750815688763bdb44a0ee46c678999081d42ca342b414cc00539b6d19645ed18ace96a46c2453af3af9b73ad649febba71e40802e3871cb3661c2c7c1480b9e15625fb61c322f0141268583f4c9b19950018c70a55ed500625cb207e9219d2c9cea134c6f32a606393e94923e3fa5729ad2264fc8667d140d232a3b68a93caa9098fe242f99305a0fcb3413ec8b22472e66754edbec064e89245301bbf48a8994d36b4093401943a427cb5388132d3543944e656ae51c72118821102322a8f7246368b5d9e4756fd45d5886477e476e641b10d0f196cb6638f6c30ac2e6ce57230d4036cb23d14e8ba30d66e92656090199f1652003af17393b1fa912df25b6fba7bb3fbb5037915e46c8217cc88142e14622f028fadba21455b00ca96b2d039663f0aa6d48b0b5b3672203b76330ca4a14434b877cf83a818e71b97b77a4eb99858542b316c809f1630f9bba7e00a265ef2b6b2aaa45611726e1ea7d96a50f5cab524b138288f74b8575256fd7504740a256e1bf34318733f6b7a53aa30536bf0e5079e5b0395189262027cbd497c350b1ad89f4aaf88b219de48801c7bf97486824a7b7bf723f516293f2f786a6989a35c192eb8b009fd37f950cc6e08592a1350c680952e92887b5759249cc70bf477277cc18a9e95da3579bc4bc42761c505504372eac4cee71b4d82c787356983380666b3718b288948372c11fc855b3950e633a70762490ca13c11c6b824478a293f5161c782c4ffa5fd0a64b5522c23979b2434ab52b783a37098ba2da100da063dd3191c29c12bab3927ca721263cb518924483091070981a902518df41ac1280bfc7ba2f2703cfe2f8cde65427818215fe57b68669ca97c977af38845433295e770c4bd4cc308cb203d823c84639cc9496d31424ea778b0f215430437deae7b8c6906bd4fcb589d251b637030f9607e9bba487fa0fbeb9545eaa8353c738a9f02b78e19774b84ab8144f20e39c62a16032d924658262c75b91e5a471ffb95ca40b5c1d388be8b55e09f4980a274ef5a5cdf5137c1afc0325913bb1ac608a210ae92220f4a47d8ec6806dc6b5efc67ccd677d5be615bed15cd76625ee4300f1e8aa9330952d49aed6b14c8550204d2c3c61828cbf36322fca4faa3190a6635e2f0809f45b5064929c14e0762d62a3c8839663fb8b9a135b715440d81836bf40a6cae8333d4496e4703b4ad50482e8ba9f5163838271bfb66d1fb462d51418e2792cc7370f7806d0ce7b7b4a66af2af770f5a253c46001bf82988a4c0c008b8bebe64bcbca680d3136e48bac4f030cb495095af7cc418b3acaf95bd6b636a4f92dec211c4b2b4e8bb90969681c61ac380c16ce7dd0aa3236957415b29144737c5b9124575872950a23c5315bd3b0ccf2a608e6a0d3659cd1053938cc1e68c131095cca20c4b2b358c65192b3d812cf73e820f89ab1c5b4c4c2270e7b465e2253c179d312bdf77f22252d3332cf685abeac1c4026f95e9b9b79c5a3842a49b4ac59000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = b812896d14f191fba331fe20ae245f968a421c46ae8e3360f380a9f0a00d50da4247b232f5181ea946b494e9d99f82e7fff27d8ccbeb6fa8dd5e12f12d2afb02004f2bf046f23115aa3f7e9e5bab06803c4df1d6a0bd935c882721d09a3b5c41050afe0ae3706fc83f87c49fcc22ca331fedf7787ab7ab0ac9f04fe405f21d3384b1f377332feebd65e11d7989f56cf7430ae8441072a4a8e9c8be24a4a1fcf380dbc0a8543d2159de861281493516d3fe7f0819da15d259aa2159c37d325c884217a03c83d8f4d5c1b9f2af4e734aca05ed1d3951d3bd5c021a4e81069678a210ee5f5c9404b52ffa495ebe6b05cd02cd84ab3f3795793e03d26e83a647921c2c970170c0ecdaca8d2e5c469b1a3309e46dcc9122623b6f41771131db303eadbd7b7df5c86bbd6ab0060df29c95a0c014da4939271a98c12ed92a91d8b3a37e2236ba269e7df73f7df2fe447a20bfc56e6b9249485cd71a9fc83af54946537872649949b49f3d98425453fce02defb6d09790322afe334c53ca802510a87f543264e5bbce4665564d23695a08161e28db4c90bb6bee38c00c5d3cc2e403e225afe39ed45ca3c23a35e64769486e4e38b122e3d1bd2bc8d1a38f689e5ccf26db07c8b7c14b19431686ef783382d02080b9221d2a15b41db02a63db7b5396e4b516d241ea0ba533c6f1c90b67d0e6bb2bee066015dd7c42f0226809fbd81a8a56630b93aecd63bec94c168142bc64f0086e02ddeafe7615192575e74e174cf7e2c4df95b55ae810d5cd5cc706605800a0417bbfbe3097890621721939e01e51f46dff10e0777bb93e0b87e8fb88c5100b47ea0c1f356fe669ab2ede1f6eab8a52b45815f9698e86baf38c35ee99f5d3613be4fde9febaa6c33f3a493a37eae52530b8ff0282671a01a13ab74b547c4bd7ae87666c20f857bc4fdd2eeb15a09722cf158083d7a31cc13dbc53e0fd2b2957f5032761e777474f17188835bd79090087ffc0ebc01af02e4d0e0be1d532eefee9ff92afff8cca34286cd6e9c03b2c41b2080484c725afc5aa3c76d4c807e8c5beadf261061c4df268b4d4e6e24ea68f2fa085153d37be084e9d69d2bc48c819f898ab482c0b80659ff473e8b186cd5304c62b4b3f3b714c628478b8a29cfc5be37773cdcc4558986d29578b5dd087ce0d989a70616d380c3c5f68410b3a7a0fd247b7a3d9c9dec0e8f13fb1fa1e6cc579e31a202afb994d6fb4e40e6377dd2ba3247e5150db44d4515d31296f00bd2ff2838d5070821396ffcfb424bdba4ba3e9bcd2e02fe85f5feaeb0106fd8270a47aca634101102c08dae778d40d070d1ff0542414d71a7dcacb25536b4462014e5093710ead409aa1ba2c21c1716cfc4f1091aa39b41c28ac9cd3293c00c853a267cab452473fac0c84bbfafb4e2754a1c1ba244fe1ba8fa356e78f89a94501e068126acf20ba176586adfc0c03535eb6fdb1ddd41c6272d0e8c49f039dfccd737c284351ce14b2f7e0d01639d502d519fa9cfab9e41632b79353ff861303508f +expected_shared_secret = ce303d3ea30cdad19af0a9f428943317278b22f4c7c229aaca25d0709b23e6e5 + +comment = Rho leads to matrix containing zeroes +entropy = 319c51bcb76124b92f39820a5653c0ecfba79ec91d632b0488f4020e5df4e37a +public_key = b08c45bbdb5d4053b675fc7ffba8cab1f105c8095a0a209c4f16447198cda9d73c62bb98dbb3c86e8761978bb77a5c7a28f03f10d8558cab3c71d498429786280383f944b75c7139e533bcf7019fbf953dcc00c884446e8bc3ccf75b3dee9190526662b33527600296aab664ef58c5890111c4d1c04262ac22985181c80f3906cf11f38af489a75cf5596757a8ec56cb3d3a7c2594441113c427f7b43a019ce1bb1756a9223b8b15c3cb649e93497fb34ed17b7c4d185ea1e9a5a6dba569f1414aec8bacd1adb784c714a7b2b89989bab281eff81ed093373d5c6d3f36ac3952aec99ccacdb0634928668264bc70303fad4a746592778568570ff75585422bf3cb6a6960946432928a0b39e5bb017840c7c4d99b8b25a0c76349766b0d39f7076a839abf883252743731b53c3f650a32b0297e806addd02999d61086362322c840d8dbcd820ca008e5ac150b7932f081491415c1c3300e0976e7f9c14fc045be34983ca26b71690d216989a01b03b6930fff0964fdd98b2ac6bbc408d0731a501ec87a93e19096fa3161870bf7964ab5d6a5ba764ed8206815d83045b24db9a9483bb776dbc3ad85435d7cd449248c4058e3568bda4e41061ee5f0bfb0e29867491bf796140e8a2194572c23f75922c4ab0014c9ee5a98663ca78741a4b15335d14a3fc92a24b05b5233a43914b274ad531e94656309249f79fc93c13652933529e72690e1b8b7c6a21c756614307229135977fab1727a497617c695b9299d81358354c9962d231183d8512adc5f10e56a053610cb042cc4fc2e485099b973b320c090a4459f8dc279beb9568f840932c77d28ebafa40ca22bc60adc785449800c8fb71e80ba9a67c4383049b36fc89f0248a688298453e480ec525dd45803dac94ac380c468ac2c85015560965b7c7838e59a8f90cab718246dd4a0578fd41438e09716d3530a3272618b191c521887ca38aa8c994c93820f78673f5cc95ca93e3eb976946b8785ec3f12641d41f60db3085931aa365970190b93c37625332fe92e4532519d8825c46200e8b576592ca557794e370144d378a62e5c54cf6820f1671934db0b6c47ca8d302bf18a8b82152926853df7d255da51cc7a19657ed77377fa4eb8b2a929b46ff18910d1832b71842cffc3849a66107702ac7a86630769889fd90d8ea22788805876321ca2158ec7bc878c568822c0bfa03c10c9f5b5a8076357c6b934b75617a20606712b0e8cce40f4ced0d17defa628bab4751e56b3ad040be6e3264e6011fde7c4cebabee0701c6023c218d07b47ba4ec811b286ec3031f5254302be6b776666897b3062649252c5f7c1bb0dfab6b4f13155c91f318963109421a4a33306eb0b66da38fdbb541bbb3e2037c1a0d4493e0878aba23e7138bee255b3423009ecc8920a3a4b86932167b1affab27a8821598851bee698665a2130816b66b7e81842819ea1560a0c5292be2cc7d5428aaf3b7ef5002d5145aee9a82c9d44bdd0842adf54b38d9213e904052905adf3255828147fb64960c9167b17126d61b05007c759c938cd2086695e0636b25b69312a70235b6e201c23e2f9a9ad696716f53333d004fc663d5c0b0776f875ad988aa6c6230218cf6806353409000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 87099f26e8493f157e405f8cbaf679f5fb0aff16ff9e2c2fa8c263c6819287da7484cf93e0a6cca4d0a94d0f710081c0bfab292981dec83558b651abca873980d077e9febdfa82398896e88560e805948d84ea38cc77554e9421dba3a85ba24f3328ffeb4de0bfd1da900412a71903908e3b8cacf00ea86f21e4eb124167b3ec769a8a22498ec6cf26cd4b1470e95c37b3716462929ddd9e247d3f23b98b3efed529066532b8f6042ee8eb6ad00233329e0b634e300ec2932fd6631b1bf14d7e992f54b985b51cf1b05f5ce7d9f7458bb3b530fa3feb7ca1a72dbb8c4b01c0f03d8b45e550514fa4fba32705c95316960bf50d64e3f07c48bcdc31265f0fadb5f348799fe0364c93765e2bb4688704f3027e69689861dbbd65bba05f158fd329c5474386f9ad7afb65b297004664ebf3cb7ac1e8a34e33ba15ac0c92e7abedbfa96fe4c68ff6d7a4d1dadcf56824285883d74370e2840cefb887b7b934fec461c50781dfcae2bdcc9983e0b34c3be81a0dca5ff0ac834f5bf71b4e6135c79c27a525bda87c2c1c05e5e2addbca7c43e49ad11ea240cb09bd77d22e7e9d0ccc4d638feff6fe9bc04300202313197a9a53b99e67e96aa72ebe3200758c1f17b05c0b793dba17278f3e79563a532161190eb3a0724524b210f26038ccf08d55c0bf29b95917c0bf97df6872438b25d6d90091ada34b46ff2df784370c8bd3a523687902dd9a1d70f9aa9b1a06dcf4a1fdb740ac3a0c25c3840bba2e5c6cd1dbef9aca23d5f29ffc00cec2fd9dbcc187cd2d3c690f436e6265f8cc6857b3ddc1cc1415877d83d80337fc4c4e38808b9e05b14173497330077fe4c38699523491d4a3248e5dc4c401a3a29054c924c744f7514b7a84e91ca6cd2cdd5cb51c4ab4f2dd4aa0027b294b299896b558754264ab10b0c0306465ddd4e88f2e42b580801746452467558d3238d21a74ddefcbdcff5d79886b101c57c0d4d1bd4af284aef20f558928ae0768a07f397c5f9f7f334a446755a22549cd7fb1efb14bab48513e52c454e57c381518ff6d3d02278abc01bd0d54d53e77d361bef85c33efbbfb295bbe3aad332d5131e8cb5cd90a960bf2d429524b45abd686ef95882ffe6751da4f750a367fcdf0e807fc204834d6957ba8fbcc0e9e3d4922c45085aad54b08934e0d909b334d3952cd479931c75c5f4aa1ec286099bedbe5ec17123384e83dab7230ccf5fca4f085ff348197d837b752c2bab7f0fed29e6347624c51059a48dce7f4eebe03b5bf9b15b13ec85e8acdef861fbf93f17e377e950dbe9d6cc96ae83e94a3c5848dbc2ccf6090882f048a174bc42107cf9bb0df711551e2d550e74d2d416453be7fbdae5a24ceddc7dbec4329b4a67d187461ebcbd9845c5ba04967ee59da4bf822460053383935cf1bb1766a7ea5568f16ccf8400d9a73fc86a7570742d76d4f52d20ec80b8ce2a937d53fe88f60bd3deefe27642fc7cd7d79cbc59fbadef2ed189edb3239a948aae68bb2bccbd42c872dabd7a261625af4fd0b92c1 +expected_shared_secret = 53865f61850687872fbe708ccf896f7f24ea01283510faf76481abdb0cc17e89 + +comment = Rho leads to matrix containing zeroes +entropy = 00ff48b3769ffaf4e91c1c9110eb8ce9e2cb99f060b486b37035407d2f4ca517 +public_key = 0674c3adf498654b7d8078c405881705953d58fb08954a73cbeb43d564894eb48e104763d35563358693f2f2442ba8a01c38af0d94be822a1bfb7560e75abff623401fa043d4f10f8cf688b20c56cd18867712688c992f18617331631527cb4c7b0a526aa488b5122553e332280ca64deb0c0ad36db2267b633b3f8bb8a83551000e1ac17f7b426813caed005892a7077c4bc02f703befabc0f6b324b1422ec290ca42f630bd441d1f119f1c633b2031cc759322a4d762265c5e642462c0b38ae5339747a62062e07aacf8aaae3725424c4f30f38e1c727f40e53788c68bbfbcccd8db7364388a46a366b53bae89f09d64c7c1955357e256586dd5cf508967cfc97b0b481267566b7eaa00dff67158f81cfd8a406dd8c0095c2c6e4c9e03a466ec79232885145ab0a321149879a25c77378dd1e231be71519122b4f1394e1998081f271840a245e1774012d508bcc0830c5901cfb7cbc178875fab73b4aca397d13da45b9e93342d4f5aa813048d46e0b56c8a9ad7194fcb6046da9b9d16d56da6399315c924f18c527437c9fb03ac3774ccb272614b0cc55968ad346187a5f1716a944fb3946783a6511a6997cd482ead064356f843bd6b6379f6c662c9c655705c6265c8702729c3bbc022a8828312bbc7c7b90c373448a59cb67ca2da3771882130043488eedb9c91b39917a1629918580381972c34a0e7abaf372527e1902088e1354c5353c900a0a16536435124a9e51369bb46d226170a064e91e85dd6d987956820b1446a6181535d3ac8a994341ca43b0cf06a83825a85a5ad192582554864561c5bb2915287a502c39b8b54abafce465abbe7092a83384fd35d91d5604c7a4c14395cd57713baac0d7f906ac9274a8bbb34074b3f96fa8fa23831ece3975f3011a815bc7a4c1a96849d386511e61a9ac187024eb50135aaaa0ae2347a804e55e4b3d3e3c678da9e5997419c836948370d1af0a1c1c15d70f4711e825244b1521345304af589877b64afc28ac625a237a3226e1873101345e9ebc060a255fe0862de4800097a89fbe07aac5c1cb983049c369c8f0924c8320df70ac9da023cba2b1e40757a3323833d12229ce607a63275f305c3b8bb830dcc9f63bb479969cc0cdc30afc75a8308cff8e59d5b2a20d46b200dbb7d80e011bb726e33c968e3ba8809771269a096e85260828c1fb0a719fc638442b2935ae4cf82a2c27bf471e48264ccf912d4f09910ac12c19077a8f52bf3b2c8fb4ac7ace2ace1250347c3beb2d89299673a6328c8483805be327079f8552af16117d12550042b7eb635cb0a8c0d370ab508a7789235fb81bd60b882c8909140eb487c5acb092c024a9c6c8556b832c36bd0dba31565b70c35c2ea4cbf7a1b42d2d7184d37b3bb180b9e1078a793b7fcb2bbc97bcd8bd7cb3c0758f398a482565d185abfa4310c3a84b77b9280e7a6222098aa627497fd13abc2130ae6d34ea6c626fec532f1eb4ca97266eb95a728434ea1987e7e666ad09c0f08c6c581dc733f962fd04780a7565355083b12a56a7c4ca774b3cbf4cb762949631d8bbccf7b48e2ea459343a6beb3a2c38b64990a01971579014b41a3a90c06eb3bf83c502388a5bfbb0c9be9beee4f3c26cc000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = f557aae24c7a8527f8a1ee03310c78172826128ca814882e33e4af6612c938d174209b287ae8a53adeb6fa0aa25fe6d19f027367239cfb89bf0dde0f99497ef7d7477bd332264ba237ec0e1035440029fbb5064ddcf9bfbd136e92f1b35a0a2cba8405ba42b8ce36cd2a686bde2fe338a013c230b1f1a99113c01babef6881f471081c9b9fe25f28c0fbf828c243284e6be4c0feb138729ac4a6d6b2869493abdb39a08563b2bbabcdabc3b349f74708b714f7e11243d90a69f68585b21de1cf742ed7637fdb5248cb5fee5a3245136e85dd5042163f2417e58a634224db95d004a4e9665ce10dd120b80df855c5ca5e464875752a70857511a705be5f3edda976ce536a5a83d5173c194d0a9ecc24f83a6b6c12bf06521f9494dc56d3a85df270518bf930474d9fbc3c77b61a1799db7146d5865d3d71e84a64e52deda9e16cb73ca1babc487a5b653664278f6256954397300b150b9159e5ef19c71e45fdc1919fb99508606e180305f7bf11f9c772e49e7a0890cb5b0264749035c3725e3f6dc99710889f8501b71872ed3674557e5fbbed85f819fdd9f6d83f1c40a04afeb67452dc3a44c77a90bbe770ec918557923e61fa704b3c08012873a0c672e511241612de52cfcb8c8e129f3b81f3ee76d99bb42398eaad6a1028b0c618b6c0c2afc7713ccc226d4c853227cc6864dec677e39dea238d79066f427c2cf7e9597b8b5a0c59536ea78485511b3c804be288c57d894322dcc2ebaf11d2da207c71381dc654a7458cd22c34703e0b720163ced269283a7a3a50f5e31868ed996227f49d8f0e02e6eca130356cb125f948eeaa0aaa8c324401f5931298fb20fb0ca6cba46bb98b02575e7abd822838467ccbf1d80868ee866bdbed1f7d84eb1604abe5f88a39041a18d301967260f8589cadb4e35c39cd50fbbd6a3922234732f25231ddc0df32fd80289fa8ceaebb0d19ee014200b3bc9f896e1e2585a0f6ece96a9983cdebd5738fa4b10a90536d820ba5f91b3fccc8e77a8bd01a56721608d402e4171cd91a56ffdf9236fb75e7041903a327bb2f8c487fdac2e369a4895b5affd68bb2967c2bf4f46144e6bfa796731ffa338eb9acc96374f2db1429b5568e79cf9cc077e74b3e048894c3b0686f4f071203c2ac7dd94e029ad9b9d8ff680d8bd5de38491c43ae7917c18b4cc50cb9793dc7da034cae15b8740b519d8c673d276488b8bc9c3c6fd127a7e9bced8385f39538ae500d76283779a4de8c360a976bb237822abb96dbde0408f9f9ecaa639af81c941460ea2c19541ede082e0635fba083de29c5d460079d6ba038e961745a0837edf37f7b0548c65fc6f8eae8706e54056b6b2819b79231139da08c6f66a4455be50ad702f1469770e30ba9b108b84d77d30e0fd4a220a4f4bdb7d07878ec837553f4210385c760fb7f180c943a965df8b3118e3423e28f6172a2c9f9c268342e1a0cc63e158c51abfdd23efc929b8dc17274063ac8c3e4a9f1b3ac373f7f279257fdbdf044e14861f4ceb75bac6710 +expected_shared_secret = bf9eb969821d6b129da2e353e7ee8619859fa2e1480599b3546f305e56c7be7e + +comment = Rho leads to matrix containing zeroes +entropy = 4960ccb1276f96d7aa55885b6ae6f90343d42e1391e8241b5952931a979837e1 +public_key = 80002535317ab0223bcad8c9d0c6876dd03beb06403e50606a33937515359663546cc0bdb16a4a9d6ccfa0315882739380c591e4b3302d807f76256f441b99acca228f17c904f88143840648971cf03735ae9ab070b6c4057c6865c88964748d8e1c5fe919037f3853abc58a3950cd307c39f8db6b9c6794d6d921da4b5ea23391d916b7f2bc8b50061eed220e901495c9744da194790cabb66a3b34eb020af87532a7967a5ab190f1898cd402c093e4c0a7967460d5b0ca0bad973ca86e533435536366370388178d28349aab06090ee40291263c16d26551a03fac734b0f17c2ecc693bae40475f7cf5edc778060186e5811a3dbac9d34b9f478c2b7e1c7654938cf8031e433ce38c47dd5e9aedabb6eac802123a82c6aeabaabd76a254c451460639fa646d87576ba154fe0b024eb114af1d2b17e245c442ac9a82bc948db520ce2c887d57f0621270b819aeea5422129372142ac87c1762e6b891af95a47912029d09118f97c5a67628dd2997c669523c542393b97f74c4974395a857bb9b47b39d22b00d5e946365a2dda868934e514b35954ead55a76d812cf619113719b322b72d6d94187ca4d3a26847437b2195a1a034b530ec0b8c7e1401be0308237094abc79fc9c92d79675f590347d7b706361556f2c00277289ba296aad73c9f3f654d1893062735869255c68357a97558f0af74a44879ccdf7122ba5bfc5d21d805430432abee64c7f271a930db3aaf5f78d8889b59e654c18ecc915db8df2eb7930426bf64b62088406c4b5948b984d29f149ee897c1bb8664a8617183a3c477994aee870d1089cc77079369200eb944a79f5aa8c5315da8a7571a6ced0850b2a71a9ba6221cf14be48935e12c8a4cb7630b1661c3504885a065ab5e3c1f78327c779122d772cf64c4b3a63aeb7b7b2c11cbb8ba98e5c340b8634bf743731f0942b8c333261a8b9e5d60c91a707d3e4035e30bef3bb6089e5017d154279b89303a2a10709bc8a44ae248827c477c7568013db462b34e8a8d7731340f7658486c3e83631e21938c4c560e00b521e76695d09844a0a35a6b758e711687debafc31532d2d6a41e512e3ca5bc88770fe49a794292c0437017082c5d11b8a6fb36401fc92aa5ca7cab8b550fab6a74119b5ffa8a14069f58f81231f2a646eab240fb56e0bab328c4637d3559c9b7351f4c7f68eac27618a874790f0ce75e7c32333bf534d0512fdc837d7fdcb49762cb3c8529b8538fa725476e0939394c9eedbb73ccaa0a8879b2c029b9dc350e911278720240ee262830c41440b89e18446f195c7fa50c8a94b02ceb5c93d2eb27f406b80e758da7f99eb320cb28b2aa6465b50c6c42b9a77390b521f3e2830f789a3882298c649722748edfa9c8ff2b7abbe61aeac3171cf16ec0997952323d11bc29fc1a76e022cf2a07300e3a87fbd47047c1504e8516c4e2358113b8ab8078d6466ca802ba3141287181777ac12618081892529a0d5879f4ccc979286ddd4c3112145dec7a711548214d62b92c238e82b4cf1cd6b78cd94d6490ccf69005d9ea13efb1cff0028f6c1543c501255495118d76137fa4c12331800c5250a71a4a8ec01a30bbbcda5a038c682f2b85b6885714f6ec2e27fd000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 7a47d5eee9259bcb9ff2d28b7ecb9b5cf70cc36298f0578b0b8fa211f51453fccfbefa32711bf6e83b796bb7927185afd4776069ced5de3731a1b4783db069092607bdceda88782b7c7bce5f77bce5bc70aa9edec73634c6d55b6c7e66a80a1628cc5a0ac5a83141bd060c5e790c6d1e2d604b948df39289825258a575d559e1c06090ca398332b5df350870abdbf17a5aff739c49c50bdc1f92df4555f4ac757f5e98e43b287873a6ee4f35970785b7e43213d5d49078504d0f2d376d590440eebce8e86cd12a5f1669ccf0be6e8eafa396ec1407be8a02198a287649865cd0b6c149403f6d4866bf117e2f9b5f3353ef662b64381acb92bff6208dea2c65f49868404a02b5286dfaff50472d24300497d8b673098a8ffa09a3633d91853491be3e925b18a6f81d757da0585c948afd41081c654853f3c7d6befd41ebafa1a2393bb1415e312d0930da60f010775d4f86076c19f2957da96a0ce4903b9ca5f7ef18d33c681a4252e58e2eac4a1d292ab9952b0339313cf5ede08f000b3bac1344fbd5a23ce63f810c993285816e42a2c13b35ee685863d691bc1dcf61ecc4b2ae54a2732873c065170609aa0654279cbf77f790056f337f45d9ef3be9b278565decd4f86574322da9d37e4e6afa7165cd2b5d1d96fd6a27570e1797ca8ec1b64db363ee5bda8d756ae024ae1061826d90ffb68440aef1aff662c801255906fb040cec10e4b34353193e3476612ca6467a19a2635ed3497cb565b8d765642a8cccbdfb2fabea1e2a64fdeff5ad9b8cebd9505872132286731bf566bb8caf5016ff4eeda1fc612593cf812d69b12dcdfe5ab34d03a8804feb9f79683f3ea44da7293ae812f68d6a21cb0b66bb610cedb2976531e6b174d8a1cb46dab41d87c3ccf4e23c5f0860f0cf118fa50cf8429d239d80d81311e090a2533f88c707a64ea25cbaadecf72eb202c647fc1bf3bb76cad5c05a305fa2e67b4ff8fefc82d9b1868aea7dd7aec33d60a4039c08f0f10aec4826d3e1b8e0b845082fbb95fbae30293a92d5ac73856a72ff52040b5f5844b61af07de922d65319b943cbfdbcaff62390f3b162e64956320aaea0e2abbbbfb9678e15ec9dde1509edb4643d997b25db8ffe372ac7845dbf2a0d703340cba5bdfd9225526f249561a16e21fb899a71293750b122fa22e23424aed5a72bbce45995050f6940a51e495931fcdbb289bcab11607eb21a18f35ba5fccf786f04d536c165d4d3f5055b661a31f43deb64575aff3c2b61556c20ed98939517179e86902083ffec6d42c6f744487cc4fda790e87a73829b8849990a4c3c0b5ab5c0ea8f0567729bab9f2ffb6f032403ecca6e4bacf608851dacc924ba6b8051bf48aeeec8c5ca87b56e3cf440521e72f569ec80e07a8683fe06f4a584e7faaeb2ce6c8031755648755c75475a2d83941d96b269dfe365cabdcbbf207e79e00075dc4259f96cc9fdb3429418072c93ab4f9322246b3db1f436e579d1f541306ce036a8effa25efe0fd0b2a208d340cfd70cb1506 +expected_shared_secret = 43e175ccf07fb358c9b4a6117c15c327b88d4d8b95a645fcf1ed096f0eaa17d2 + +comment = Rho leads to matrix containing zeroes +entropy = 456be124e7f43803de5f734ea016455d68164a7f054c003f4ef49e46f42dd8d0 +public_key = 6cebbc9157cd2d0228c6385f0d9aa0f99335c9cb777e96b597551a0a644a34d3a419b3ad5351876d93490598a90f31a3a2a227119b7cb397988c8971a0459b2c811ebc8a19a094457c118f6db50b7b1ba6de5aa85e316f71866d759cab439c71d90691f1d27da41779f2c3380c600196133f15938125583ac7650eedb0b069004073205b49943a4fc00ab5ec5e68ea5299b95b303b1cb08b687c0b533ef3a98a7b0c3b6419a6cb825874c4ca5688dc5cc5ba5c49448b479b84baba1344a29493fa3828e953b3ba64b087ac9f5b9a3f12cc6cf9942612606998207a852b35f42ab80f1ac8bada3f107b37cc6c1b8df40391b1afafe848a92853c9b32b9ecb758b88c8f76a9b5e866e8c359f3fa29019f439eb0c9b5d4b2a516877de0295fe7409dc79caa4da5f6a87a26f9265581cb6d141c3d0e597f385bc77f966ae1c01cf29cf0bc536ddb0a8d75c8c5db79e967c899b46bdedb9528f596de02c120fa2702f73b3756aac59a750ef97ae2a7213ee95797f2149af542b992405c9d79e085521d2e303c14146180904f41937cf4180edc666d70238030b4b6572af377693677a5762ea7775c34b9314c10489518525cdea77cfe8b24233dcb477e9cf48acce10911dc9517587b409742b06e3142ca7a54f36d6ba225bb933632ff06802779563fc43a231a11b42b91feba135d7229f1d29781eeb65d93537c58525c4e48b85083b3226937acb2c7bb3941f95664c254c18bb9f91f54f69263a1d590c64f51f0d8789cb60cc9682082bb399fd87279fe4039c9bc69202a309faa488e26a4e3a5d64ea4161b9a8bef9997346ba46da3414965c4ac84ebad1c2f067a3ec5a0866e4a5a26a7403bbbc447c3b13e9c282ea36307c83a91b25b8b565155146fb5a5146e01c21f4aaa3dc7082e93a2dd95e7364b6a97cad2b0bc27d0aa3f393195250118f9c635f41ce82cb1c8ac2158b3101e3f44132a271a545240938bb56d11520e2474678391d4abf7200b775b27dbe81970ccc517542222a67b693d151ecf5485c198838a2cea0060da6285c6f0321472710d62a78c42c9edf07518704157cc5669c3ac775635e09356304819d718abeb0603886c67d8c0c523691a22b987af137a18d20ba3af239de79cb85672d8ed6beb818c5b09baea6c456ae3a4a7481343aa890a94a15a6502399a0101da2448f55666aca18d0259d95838135097273ab117a60cecae8108dab28d6945cd0a30099645892737c3238974588bc9b4384615917e8ec0c10076b2249a42f1841252533376830f1c2bd85456f4e8577f7ec1bfc7a92165ca5a83b85ed4c0dd0652b0ccc9bf5fc6946f710b0bcc42c9529de51bd99166eb4030bd1c394cce0835dcc311cfb6e3c951643f5736045baf1c3a7f11603cc168b6a47ca7eb909c6d9806543380c603a09d435f7695e6b117b75538d92fb03fbd92d05c7461b113eb5dca813c43efd7835525a228005076b969e9446be37c707ae0025e54863fcd72462b6aed873850cbb92cdbb209246945df26c6412cc16214155e57bac92562c5c14e1da60f9e036172cbec09caee2d14242d16b1b1b9659a7705a59b23fd93e6eb23442825473c820df8342bc33177f39451149340964c3ccd2000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = e4cc5f39086d1886cc8362e6210515fec1d8474263af5d7eb7b5ac9c1bfc65109de928c818728fc17548bee754bf8df9f972fc2f5943291e24d0911a1963bc3e4999b6de2add2e5c15b3100a83be4647f3fadba3d61022970ce43a6d0cf5a84b387b5d05847185cc862eb6b71b5a8ef9747a12e399866b3839e73f3a73e38877a1faf8b88c3283f22f6fc2dce6fe43118ff68ca6cb9e88471dcad4ab28c657e30462f64a34a108bec7e3b6eb988c6bdbdf4a300d476c170879ecd62ceed6b530575bcae1f23da95ae486b3322470523429052a3059eb75b699a9941a028da267b970eb0a8d444296e421abeaac7106f0a45dfcb30a69d5336ea98d999e65bfa6a2cf43bd302512f086f8441d92c11937b2773b1cf33b82076a64b8327bf2f94f7ec3e83037dc543bcc8bfed37e3a2ef05e009745cf504f2e261fe194c256292d86d935c7c971dc4c32653fe88fa2dd822fc37b644a3d5dfbe5a710551adc671f954beb44da64c06b9f5a0fb78c1d1b3f94dd2c0a41829fdef6395da7493d18423b52bac69b26b2773d0c4242d5172722780843911f864959c14c4bfbd83ae4c19602460428f9f111e43fdd3c64f9eed410da10348444e6af25f0f83970fb23f0f5515c68041ad694cb9ce9621dc504b564a4757dc4d8ead6db23a889fea5a7982fdf403e609f51758ad7bb78dc6b69a53e32b808fcfa44b547d7b23fdce81ae90070e8cad630ea8000d8f840af81c6feb308b8a5135db80c2963203e9a13d2c5b4926e68b8893113c309c3bb4cb48f06fb87313d414b9fac19fdaade98e1b396d789381b057a293de05fd96454f4394b122de31d72bde9b39a3c171c4e1a036d7d94b8e59506dd16aa28596513c3a0e6d2618fe8d39671c28f33630745b3e671c872a01035da1624c6516b57226aced46e63c0a5c6f791f188ddc8b0c4637695b1b711a92ee422225f5509d9a53e894c959438fdd81f692b930ffb29bbd9b7418c97ce03263877390f86bdf59b617622d181061e9f146c6c355c7d8c16924f99d9b135174935fbb63b09d06734e41eacdb7c55f561da81126487732cc6ae18a1d8df377f865fde5db3289f0a77359550ff31b7778724449db57483c59a94bdcfb7680476a9a5a38cdac1c1033be8c1f4e6689bc7551a7d01912bc00e804b6e9e6b4e84e096b9ba4f07f0d67a3baea5e2fda3224387e298a144c06d78f26948ee7c88c11c121b4ce69ff2912c93ee7cd96ce4faf7ed6412b3ac238c05c9378dff1051e3a48c16a3daa8597ee0ee83fc0b95e2346f5195a2d8af8df16c9608fee9c1fed1d5ba11f31513431d304a3382f18c9ffce39a7c637caddd67153c18ebec8138b7cfe9e08c9a7844e879424531f47444b1cb48bf2cb4c92756a1c03f1d37d1f6a2a22967e5a719aae38732dd5e37f795591ac91faec146131b354ec31fc0e0f80d02c79cb6f40f42f3ef1d0ec6ad1cb208fd6e56ace109c1e5a82079eb7b6a32d358963ea06f7234221e84b67c716d7e523b502de542fd468b130b9ce5ee +expected_shared_secret = eb7106b4bbabe9796e68f15931ea311dd171561dd000bba4a80cbb13c17e9709 + +comment = Rho leads to matrix containing zeroes +entropy = e8ac9e76377d67d84f85a142383e777157805be0d0f679ba89cefdfa61583780 +public_key = 30fcbc7549ba7ccb22607740c4a4ae9c72a7c9d75f27120e6551a24baa69b07859abfc0a3f81ae50b410cb4b13f4d3174acc7a36b3cac768430678b86030a92506bc3a37bd721320f658bbd2798bf78135c8a29c5c3b7eabd292aa278a0f58620a89c8b502b3cf9b0ed7d3606f612651f28f5d39646b5b6a16cc57b4574b42fbc5dc6b15b92723ede862ee02cddfa891a7b243b4b8ccab0969ad050a35ba05a8d650c2b19a77f8c97b9c15386233cb543063645dcf1c976d79999b5b16e095724e872c9a799246e9c68388573db17fb137a936aa3629e68398851bab14cba8d1c0be8c213453863a470b6e4a640adab4c97375d72422c1e55d6c892fd117999c9b0a000b7a51064505b237055882c3733020fb6375e48d1a07454cc6b2a7c40bba61c10062a9c1957037310aa66a1d560a61d2e2362d912ca5953e8c3a33967b6121b9a888ba87c388bf1b80064b8b75fbd6afc7dbac45d45cb3d9410aa9c56ab369cb4b3ecbc43942d344a3a6785049b78329610a297512bc9a2920bca6aa08e44467572c2d93b513fa83c97b1a29c161c00bac6484659c67e74ead90095d19481fa476bce539459321aa258da0e2579b06cd91e88bdd297447db2f5b836d2c3613d25a8cd00331948a93cfb6bcf5e374f9f623f571b330ca63ce6210c7d229d27256ffa9a32911aeb77024ccaa5145ab493eb29a2e2a134f7bae4c39ab6a162bbac174ac12b1df51bfd02c159eab2dad955ad3a978f85449a9f7b253a74b4c81adbdfc3efd90ca2d7c8b63e574a09bbda6599f98761ff0c1b14ad429512a46e3c1392a800594f95cf3603a760cbcd6c7ba86ec1c9c74c232f31a56f8a3cfd29f05914ad5220bb4dc23900b55ae5607e00022fc0002dc363ed67c5aa49abeed31994e3440253b82dc937ec718273e25293c01305f4c2c47ba47a5558c17fa2f9640034eea6e2f2955189677eca2af91aabe48fc93ad497ed05208d8401d921a5aac231964fc169673289b270ceb9c745ba2b07dd402d3961c2653c27a697087a58a184a9d8b4a34e355063da16bacabaab34c0f6a35ca4500b7e7ec51af92480f726b034b6246295ea017ac5d7586d2b17d074c7ddb3cb5e9597c35692e405a900a535958fa713d0ab6c9466baab305e83597d167783e22b7099bb913d932672954724631225b6b7c1b717388746ed51050d26f4ab89c56e12697a9ae925c5d91194097da004b7925a90cbb849a2e8e250532fabf1c9bcbdb15a5f17395cb93c7e374461c254ca69c3567c01468aa02d3e445a1dcb194303cdc3c580ebabe6d95aae182621dc52e18055050274f024ac6a5180a49dc0fa5033f07295d00b70a5a93be6ac1a412c4217fd177a8c433f4b26cfb14303d42a705984a27c305e1f08da46213da399eb658c14eb03209e601e38887f2c5cb2aa4384a1790ed16a19032cfa3f368a9c1218abba6b0b606baf73d58b4c771baab5481ae971188a4a323352a2b0f0c3e45e808e88b2ab20942c14496abacb28c313f246b807ce73d7b09a612382ad295c74bda7ae1249dcfb534143acd4ac6a68f7573bf256a946395cfe4463e76bf8b0263559b9618a859f46bc3aba5ae34f903038a1df1e02603801be7c53f12a5000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = f28a06a7b862171162d64f9df3702b7336c47af5e15b1ced699164ae57797974e7fb78276e883360e2b51016d72d69164becd785570d9906641b0650c34bd1c556013688dfd9f2858c1a2151465e5ab51aa40c595ef4909b9c0de1eb7d4ae92467721131e5ce21f7365788798d18682a8035e14d2e769ca10589531ec5243e077a60abfae9bd0c03d8ecd7c4717c90137515c764ae0540a99fb2bb4057342eadca362c1b540d97d59408b2131df36a950d0a257eea95796f9230d649961d1cee9bbd30d1b88bb3680075a4c5976efeb95211e184db3665c7e184a912bcbcd3ccaa249c722b89c35d7374256b5490bfce5a449c2ec93793f0426c4655ec82f5b4492d44cef93e55802eb64d3fefe0d3b450c9b72df7bd85997c6c6b94033102091d4829ba10ec59dd5ca88feb328c39748d26bf44c5b5310d814c4cd9a1291a041169b0ad0af9dad279dd80a5f465bdc74c5060c2b226dcc04f8d8c03cc38a4eb1437c8500c9707170bea771fa27343b0efeb485c0c2b0b5fdd2d0e9c450a05b9d7f554031125e336484d235643f429c015dadfe10d050734e2dec4b915c3350277ab2bfc38479dd3f773f6d54a397eb7825a398e415664ec884dcd6d958c5794d53ed9f8bc8d1de0e48a12ba149626bb1bda6710b48e1803347412298db17c224f8279dbcd311a4e67711fa0a8de2f7d4234ec25952a415c96f4d3a92e8b9dd6d37d726375145d0dc68afaa08701ad5af5a9a029cff366e01f6bfc1d63069d8c2b00f9db8f1794d714b36e6e783b6a2fcbed61d16eda97803602bb0211cbf5b8895c2a451407fa4937369f0deb8807759b16d81f215b69a257e207396df441eee6f8069a9637cac41aaf6155dfb45a7402596370faeb1ef9bf633aa5eb96a207cd3ade1765a597d4f277b6f7c33b36e816d2368a19af20df4bcddc15381f2d8f04e4650157ec4cc0943ee080d24bd771bb35c0f8269be961249ff8a5a315c1ec1ed4ffe5a4210b5455f6d367c2df5f0da09d20eba91c6dcf63b215b39dca326fbc4649d7862b56927b41db2217459c23a9a9b9e83d79fd6f34295f3853eee312bfd30ee31d02fe026eb56adb6135fd51a8c9da35c171dcf5c999b1ccd78de1b9574b029cc0a845b196330a3e32309d61294468cd40ac3d51011eec5e1af1e397c0f6d2355e4a5bf69391e7e90825c524d76c688bb8cf495d2dd70d316996d3b0fcc8d1008427413f0498e63d5001e4ec571bc0e68c37947782e48d71feaccadbd1d99888bb6c4f22e9eee0800c09ce8ddee3af45272b4d9a3ff372ff1a7fc3f5fff8fc2eb3cc909fe273eabe09983223dcbe0cdb6641b5c905be7bab920a21ae6f43beacac025fe07ebd3d5065d49dbd0ba5d603f2c534b6533049c62628bbf3002c0da4da81f1e0f4e957565d79c4b1896b6de04393629fb453512f1e1d39b1462ce7f693ab482224dd376b0602dd2fe0ac592d7d0fb92ec5657af2317255ae3f757b01aff57e112c61f53b850d41a0d2964121a33d15db32dab2ac7583136e +expected_shared_secret = a39c5a7a5e9f4aa4a81e5463048c7028d0a2df5491fa678d38161dbd3a08825b + +comment = Rho leads to matrix containing zeroes +entropy = 2fe6b9cf4510f212839e348d671b3345da68a477f57513ce363414e87299a717 +public_key = 92a59b6806bf4af964b370a7a5c3b2681cac9561bc4f59c0f32151e25ac4b1c80452e7cf2544824ebbc8d33ba3ade7ab1a585a98a51cf8632a02295284f2acb78373b0078081a291477510e7f6569751cde2106f8a064a24ec6a921103b8e5b820410f15e51ec7a49de77799b16c58d0c350f83a5aa63a286220c9ae97c2455780d917b2a7d6738735be61964574805f848c1d0a689060e591d60c7f057c92896a71e5109c07c0aaddd3622b672109664fadc3304118afc71644c2b7844802529f38b9a2212301dc2d2e589e7577ca2454a7fb78bab8165ce4f94cf8f121eec4531afa5fa02251090caa9425aac327af64601fdbf19feba983b0f55a22616048c646cbf08091b315dea5637fc8aed7b4418e09a70dd90ae1004d8162b5d58c24eaf7cfb47b26ffd98c48870c583aa2a5a6b5385b51e5f46236081cf9317c662498cce911b1c736e02503650761fb528d33d6708a4bab573456c2f01a52a024996a80ae0311dd56aa532709be25ac0e9b7862205e300253bd31210974b44477c3d0c62ab02b1f7d8bc910e5ac0ff29af6c66f05c48edd4601edb547ece62f8c4944af201221886da1f36cfd937e98d6a8bb606507c5099a76bc91a38812b822da60afa0d1606cac59b267ad4f47782a882a8415b9cef663ca89240c474ea265adc9f71eab97cd8215c10a32cc45287ed53180e0982fc6aa3db2b0cef48640992a33365454761ac072f765e84a46504304d775929222a6fe7a3c790b48bcc255ff189b5391add20c4581e4c59d09744a56a1941734fd24a81a968322b33da31234cea9387d31a9e9374cc4203a608285de5996b62143aa9a4dfa5a2cb0066d2bc4be6885587a4408bb3103a24b2561729021458b77951c8b8564ef0a08add70c3b7a1afcd3b4d5d3be685ba1439aa66a2393531b86a707576da189ec3885f5756c851abe689024bdc2671d926ca511b7c3b41e03c79c2b3caba27bb31f5a3184e16055c8127ba7b0d87216f81318a0d88f1665996a6b47bc7808daeb799935ac67653c59e23178da6a7cf40f9ca22246ac56db9417e5062d487c1b9ae3664109a9329567bd8c577d8cc0ed65cf1b6887ec3836fd16bff20a7671cc37b0921129b410a5e22b01d3477da0230ee5018a571f7519610c4badf145c5c4f5a29357a17f245f24e3bec0d22937457c38955f0aaabfb4d80bccf57909892e120546868b9b556289cc5594c7cc083e808f66e20d9c855d4cc936db566a4ada6e46b680df8b91898a002d9494a30127855c4cb843a8080205fee96f101b9c06104191d0bf92273fb0cc6f089a202984c0ea1c46d1f3b037b7c9b557af96e89784d990a66a1634888dabe6058d03c8b857605621a0b031a52cf26385a55f72d36555b87c5f2a36fdd4a72820ae20e90025a077e82c20cc7a8ce4f64c12940976d34e49b1200bd2b11b94bc5fd379f88779133a2f6453797f5c34a7b916f4f3bdc8c10de83b08312ab49f34cbca4917311401c7581a3cc02cbfca9b1da3cccba54c1ef7992335b25e282ec7677698c8ce94a1846443b1ea9261ff688f467212977493b27a43aebb681450ad64f31e158a5cb98a9ed43554c807090c22a1f343605bdac089362c0e2bf23a83000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = cbfe4560b3b067abd9cc82c2c40676f02b730c5280fb13645666b719e7d9d5527e029f3d75a3024502b338be060364a41981db3c7f52c59426b43fa835fc2fccd92a26c903adb74de93c2dbdf590996ebf1a9e2003e77cc896e2afce50d15bedf3fbcb65675f125745fcb1804e25ef99b6f792578520e82e599c5e83a500428b191bd93798b73645ffd10c9beb3abf33535bf149a3471f85f55789e3f73b55425185449c60bdf62c01a8fb1936f50db5d436066824b378902a81c5edc3b74b3bac3c58eaf3a993b3b4c1f2a0027cd7156b7127412294214fc7aae635edf26f6e5f8034464abc05f4059de6cabc5e4a8fb83a8c25bc88e7e9bee1a8cf312434410ead60d1b482399422621006ab52127df15f7385d62480bb0fe494843775aba4049ef94cceb78e9dcd3318608d3fff2e75e29769cfd8df0e12a77ba6db5f54d69be74a2b03d62db822a8cad7f20ad4655bfd73c62064d23fe521d37daafcf143f693eab811d28da6d0929be3cdf61a56e487289c02151f11342756bd419553186ce79bb17d5d5754752bcb72349b65cd64b8fc6066656a9cedda0aa9a09f567cccc23e547cc9ad86f636233be7815dea220e29863d830d0ef9b0a13a62a56237e2c6f443e61410253957ce3b0f95dd422012e1b84d32ec17f534f56641e7fe92ed181d830b4d0f3245df6ad891c26bfa116d40460c497d8fbcb6def0ee530ff4422d132726751d724cd84f8dd19e286e0a4d891af0e4a913352b9afecfbaf0210077c5be9ee7f5546700754f7f0dd2c2600f113c747d2a706009a8838a7b2b958324842f8fe3933b8e522d63d772a3bd0d5186342a20ff3a5e7a5728fcbb3ec18d0c90e5fd2430359affbd9648d1ca2400a55a99586807bf18041fe7af6f51120ec366c99fd4994f20e540e31caa71d5f95e60a921cc62db1fe6f9219a7705edc1a7015e7ec126a22f7ff0c9bb4aa3a1126d83ce4987ebbda148fa5b3cc07bd7c78f26699486a3dc690920fd21d75fedc4b631841b634641594fbd98ce2d8376b179da29f925a31589e04c74c4fea00db64289e30ac9e58043955ccabd9515e0c2a88e6b50dabdec8b6f574a6c44f4a0ba4d00478396852263376574706e5f92220492782df64becc8149b24feaf808c85723b7911961051468d38bb94421a18364e2c158035172e9368810d2f68f64499b6b407bf775223a3f345223ea3c1c5f456f48983d994fe4da62d0eca318b130bc8ade488a900b7746633187bf12a598f6f144c55738d4831f0ff3802a6a8f742d7a9f64f95f2401194ffade9def6f73fdc67b386115c9d905719808f41e2035947cde0bbbb44d92e51258822bb4e4493a7a4b0ce64f8620b3c54078985a3dfd4cc2b3b5ec3fd870cd6ae095c39049ad69234966c5f1f70140f88c75f11f03fa25c3d673e5ddc14f79f567bdb29a2fff88e11660327559bd0d2511d21a8ff1957c0beaeb1a26f280b3f1146be891b39ce13010c77b775d11552e59dbfabbb64409553d3da222902d0ac1e78b21677ef +expected_shared_secret = aa50a536b37f28e5f80904269d0555a6172d717433bf9a680e75e98af3209a91 + +comment = Rho leads to matrix containing zeroes +entropy = 86630b4f72820d19e9941784183b3a0d770609becd6fe0dc463cb6edac432d59 +public_key = 89f5b871bb5473b52efb4ba5b2a8317c7255790b7e96937f9c95466431a268b0bbb12aa639d418775a56d3595231262c6602be765498dfc0b5cd404a630cbf46e06cb235ca7064a8b7e2471fe34ec3db94c8ea14abf797d5259ea7236391c3b7ddd3c3aa1745cc6857dac8a42693274507985c32bf65535d6644463753c00e18ba859b86b654916c9b14be78a5d11a2fbcf9ba9225566b600b0edb3637a18319027aa494a9631c6958221703579d75b9cb09d21c34409a3d2b342c05bfa4b82b19444612395bafd8ce0bd772b303bdc37c1e57a26c6efca874fb244ce314f63b6635c7af1be1a3205498204505a80138bffa0e79b60f58675965578719813e31b352390ab04376b45344bd8efa65fea466e8c78d45680be0e1381ca5af4cb666749676b2eb1e02d003dee20f4298b720aa6895a80a17f242a983c97a43981122043d444a5af3066816c7a07c7c880b2b2b8958323711e5551c91268b1ecbaa3342418b322766334d5d4691e0111d56e48637c012bd04a9b06524c30752fb7834a2506db7ac7ead1b72cde45dc793cf875085f67a055f6cc0f7b703e29c578d0329dd2a01ff05ce9b1a5a8b993621611fc51356b5d4a55c4a6ca3b5046d7b9e305494c93177c2e78ed1bca1110c7221ccb07ef99b3aec74a8f083ee5a897d55515a5117b1c244c0898738636e577ca59d16cd1c44299d41c311a8728ff38bc476b1027426bea27795396e2bc24e0ca43e17cc8e63bab9463b42bb6812e7b840a9943ff11210aaf11568c85978816bae1457ff364923c846548b5908b2737514c625c8c11a0898924ba682b3c8c30437e8b23477d06d89d39f590c8e2561c698362e99224450217cd0a393ccf870a84159273083008345b2973e98d78089317f7993c299b7c64ed3309b5b6594a236bb8c1c67cac692a2a1746987ed6ca84d5a5a4003b1b1347a9846656a36034d7a148cc8157afa6c915a05a81b1d88568fc3f62b9996062bb99e43447bb22a5b29473a728c929d57b6ff774f5364c9f4145944b979bc549c1d5b0e9e676b2d493f799875762360ab9bb4b322484bb78fa399bcb889c08c94638d95518bb8742bb2a801233adab5bb95903f355126629aa87477b19d3135af8695f3da81df3559d510a7da3cc364939c8b507c99096630601d60999278b731824642c6a018c22c82a60bc9e0203e0b8139dff977c2a903b812a0a6c79c9bf21618b4ca7a836e20346f64483c277750d38b0a204baa8b258db85b3222a5cbbeb599af8ccb19c649ae048d97153b5a7c974738a08c1c653292496287682670cf30197142dcce7fac5694f58bb9e23c9b496f0a939636d6522129038e99179c8cc37697c83e908aee62a1fd266a613853fa12180407a222682b49bb41c9c23c55c63cc7d115da6cb53bc688fa178f632b0b9042631999b6de6165322a817ee3037bd33e6d6024174439119993e1776ccf6862e104019cf739ebe62e0dd10628dab37946c0f1e762ab4bb94fc993cffa89ba245d7e48055c43a8819c4701bcbf44044210c451fd4c5a82231676ac2941278ffd12c686bb21547a1e832a48cf991bca13433d4a55fb485f04546c8a3201dec55d1889942d1928250867ddbf1a9138000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 0802659cbd143028c3d5f499c51d88e361522a2a6c353f8bad088b1f0a6eb02f94458508a80aa98ec29952e405f754a77ea9cbc07ccc41ff66fff5c4664910a6363da480ea8f0de3e7bda007593199494e6be43c713178b791119adcd4fa712e077eb46b39d1bb073ba7f39b56885906fed63a0d6a1be4bfc2d512a17ae327fea8f1f8ddacc103fd8a1131908ac348dfd01372968ce3ed40ae90f747be9294f8e3c356f425dcc5002e9363189969f3316774acfe7982361e6f057a322d667032c5e1b235cb44a7e7be4cf46d3f6b59154ba303abd608e75e55214ac4993683dcfb5f4cf3d99b31b43a054325cb6fc3614b76ba18c6f40ca3a289c6ed338a5ede7677f6a57cc4d1c0ba121feb6cd170419a7c9b85c63233ede2db86d8a52018e2f00ca1ac31157154dbb539cb65090b2eb3a5ddf6195dcd25a2c3c8ada060d2a9fcf43bb1e67ac25dcbe67709f00abc94b9ffcf754fe742addb0b928df78122f0b86a2a3b7db85db4a9596f53048cb0bd2e849b97f99f1dc4deb86d4333a891f1e5e205637a31956cdf6442632618e97b8e2f71f0d97a88908925fd1f19956d34b67b258c49058c9a162626066731ac4c8272682c6816e7a513178ab4468772185d461ea5db42ceeff258be448ae8337f1c8ce44771bb79d6e7736949db9b68307388c7a28781a0b0180bece5e0f21d99309621d6ede5031cd791d591b7296f8fda67af0563598b463e19aed4576c369dac22c7e74ef6c1be036a74e9483bdf534cbfa78455a84568a7a2ec9a43b0be67ea16758cd60c999cd72a8b14dbe544bc142eae6ebe838091602535a127f7c1d6ddc92c07f5852158da2ccc90551edac0f043a951e5c47259001c8fe9ef8a9af5d4e40422dd8b0244468a5a9f0fc62e300f0b80069993cb0b5fd6555c5feb71a9e07fa121c82dca7d9df561b967436dadf5752e9cad9bf587a3e6c18d6fcdb00aa21e6698617ba0166b52f4406b7b184abf053a713e55e4b6d5148651fb29ce1297554a254df7ed1c97c2e30e6afb19289f1e8c94831211af2fcf6e3cdd67a04a65c19ceccf08e80f649b5120f6f6efa2af36c53884ab9a5fb5ce24971b9c907a130605bd996e6a7e4b8fa852d421c5cc46d05148957288a98ede63b556c96b6056496736b1f1832463e5ce4ca602eb3c2e86712cf4d8e44942554d930ebfa9eabaefe29358f23939948616c5ff831f162826732c25c319155808eeca9d7cc5e3325b01bffbecb7520a72b3b71e4c50d959f45b6a79789dce902ad29e3a66373bc1b40a821c6f0e6057c9427f30f3a7cad672542aba0142ac6b371fc3da667a5aaddfecd70986571b49bec52c59eaceac305dde821d248da99058e3a23df496fe51cdcb45501b02cf5338df7fe762990c2a6dcefb23dc1e5a257c14962501ab1e479881ffe5868e00074cb8fafe6477b16530854da6223153680571865a6ebc058e64c11f09236886c736592e73a41de2c093e88348631cf31de6440ae21bcbd045166d3af8539d77f2aa1b202056d23b +expected_shared_secret = 9f4a910d1fcff86f96149e88e28cddd95526ee64c491291e72a2719f97b2beb9 + +comment = Rho leads to non invertable matrix +entropy = adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6 +public_key = 947895240c96489219f575bdf7b6305fe7ba4db674f8b57be7d17947b73ba481a51737962bd0ce801254d54bc9d6d5bb184609d844501eb81ad43007fd3513e7e6aabde15bfec8b74ef67be8e4b61b4358d4828914033d65f89915e6c27e5676c98423f0d2508c343e049cb8044a4a77666a3475a52a4c73f38acd49519486e511ee7b8797b35fa8301ba8fb793f6906304842604b5608fba93f3505a765ba5c329289fb4a69347501c686b5d126ddbc58f5b8c5bbf044a1a58926d77ee9a7bb0ffb69f1986cf10719b2379130872b8c6640ab856622eaa08b298adf98115e68615d9627f339c4f08ac67fa464ab5b4824ca3765e33a16f7706ab7c1deb31b262a3e14870ee4bc30a746171f3c998fc73663320ea3475564c25e9fd869f1e3b94ec15ea8f355e6944b874c469e96050b0ca62985912a4b87c4aa5434e4929430b06f220737cabcb771b6714497cb07b319e57165449bc7904201012fac808013836dde3555ff6462a77125a6a0c6f4aa0822006ba5357ffc494602d87866854ec8b646ef5a545430bbf155cb4e9c36ce2c42b6e48fc26296b2c1415cdc8d06c38ec4c37f9e16afd6fa232fa396832a26c7562fd55b80bea977fdb5b7a5f95e221401a932687e535b0213056297391d36b0cb320cb3358e1ff19a2d239a8f5a75cf40a5b4130ac2972c1a5b9e4fe799394c23196805459336deb36367b6b2c81cbbdc56840ee0058ed799c5c735df07a99043201c2427a4699f5ccacd3c86299e458f3783628258677126556c485406d0678d030afb082b88676745189800fd9d6267b557a3936e262baed80ce471997b0147b3556a8f74760e85391300ae4f84c494a09da042422f196dc0ac3a65687d33ba4219788037a14fc4087b585842290593dc853c68d70c410b98117249654c3332685de518a3beebb5469c4d2a624855124025544afad7a26f5234bba21b8e772c0a58572608857336a9ad070b6b01990fa4bf797902d0765c83604ee4767e11e4bf45ab7dbc9ab7efc180789070380badd67b96f0c90cb95a4152144956309cc0ea6771655ef11579dd703caa09c1e314493b758e8a12a8e7dc8336c29a2a9198873b2065caa6c8ec545c03827b39b210544668e9884353791348bc74032d4a7a00396744813baa1a83b0d1139ceb18c75f6cab6b13cb8722647a730f67219096b50375a105a5dbc960142648fca49aba468ad77a031334ae650ba879a859e80901a70fc2d80083c2b0786a589f1b65e0f83527b60d298b8b93a177901b78c61bc6ba296a342a412f1c48250340a0bb5e2b227b42451aead12b196540c9f001907a40bc68821b040607f918d9199693395d4f828de0502c8c601b2a787d15dabdbc764ad9022cbcc87fbc4a84c22840a39cc610905423a5c4211abe722b69ae78803fbc56b5f3671491495ea9a7b067541954650582a1a6358af04419c4d2acd16910a03a2c04a1ac3ac6138f162d61e6258c863427a8937b65c183734b533c4bf0e52c3c06cb5422c2bdd063e405d08bd7a82dc731c2e526a5d19156b19b68db05421c5d099334bba29da2d953164c6cb5c6860de4adbd60525dc96e1d261786d79f09819d680598a900c42c3042e336828a17000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 2a7190d8db048ee0963d59eeb251bed93d3223db4415e438d40fa06cfb65c5dbc9cdc219a8e007434870fa10c8d64f0aa3e5016c67378b670852af5615e23b612f08d0f83d26d4f48e108b6e6a639649d618245055270d7e6f47c48152ce42effa918f74118dfabf87a497a412a0cc464e99d2460e0dcf6a16b99e8f35224894defa85a02ac162e122a4389a7c85668781c6d682422bdff1edcb442a73982c4512111c54545fc8cb65d1fa2ee1ab685cd047aed9085af1144014810959fa49e7c08ef15bb7c97e8306e7a28404c9c26e21b053e9fb6ce86a76b13fc28df94f3719bd55dd281ad1b8289f8c53175838fc406a7d705c4a91a2a0053507fd7176c1efe28bbcac57f555504f5b2ad0a7e8e9d941fc80080f6615130284e428fa18740af5fdfbf848b4c772e38347ea7cad57a72cf02e41b114de1380238a6fdd35d20e1847e92c64a84039fc3564a7ff85ee6c4a7f5b05fc90f95cafe52747b34e3a9ae91b28c659f4941f2c9ad595700c31b0dedb53d6a2d4fead5d754637e89c4aa7175f17882aaf775d850287460e4971dc112c498000f4da174aa4f4f3f3202ea9e119cee357caf9c1fa9623fd1033df981c09a010dc44a71a7d43d55c328eaf205586b225ca998c066623993046eaf93d827a891f1e997fba4008db106e430ec7528286b2b2032d299acf11fd3f8fb57aa2cbb2642412546e09fe139b377ce8f6e1890be4a23f50de04b5c93b701a8679ea102f90f4766d603a164aeb7270ca85faba085f15eabbe1c89ff2edd4b50227503cb31c34f645323fd38c7bffec6a825621579b565339624b434abc090ccc4c1227bc63d4bc1a6e2535cb5b299ef03061f9bff77052fd23984d7d6f63d986cf310474feaf338791b158c542a361c9c222f4012d4981247f4cfcdc3a2cdbbeebf9aecfb97e29f9c328be170d5da3539b277d3f4295c6ed3712627b5176b7ad1d2aed1445ef2e47e46d251b74b906f6dc3c3d9f54968245845f2fcb33522659508bf54e6358dd3cc43c2e097b880371c6cae243b11f36f8c34ade6ff113da5ea0868c4f8a5d0eafa3fd5ac8f5bfe776f5f72791d654fd845d0ee6c9d28fd835dba5c367af22ef2232526bbef604c163417542bf6fb768ce2c29000ec626cd56acd6f3dbd18b5485b710e4456f2a01c25bc0af5aa330a5f9d45bdfe985710351c167556acbe0fd0b7bddbd3a86dcc7d7ad63130f33b651afc897a7fb2a724c205867c4dbc86d53e68b1679626c750fe5335853a3489821e52402d0b1ed47c69992179c663ecd914e77b0c94e870ba17929d53e567d444e592e580b23c160933fe3024a49fa8656236d3917192c44b0c5a30d79a121ff12411dd6b3d443a5490276dd379fa9e3227b1756981b1cc0ce44fbb939de802d16ef81bbb98ad6add920c42d908c72b7abfd6e946dc16598272be95c72a05658070a211801b6ba7b04248898272e6a348b26e93207185c2d57600493a313ad162561da704b75b52388d84b240993fb3a4900a2951bd380589fcb +expected_shared_secret = eb34705a8743c042134c4f17ed6fe334ee260a7e77223af5bf77788ddbe5cac6 + +comment = Rho leads to non invertable matrix +entropy = 3983da6a4615805f6d55c14ba582d59a40e646c7ae77f4835a51afc6c37f11f3 +public_key = 33e5bf55f1b014715eeb1340e17172a3414c573732bed83d3318b40e32a5f4fb064a8988dba93c5f1aa8249b1d0d0393ec765cae519961c109f607306b8322125b0eb6bc000a061b2222b58faa86fa706e27803b02b79aa4e9b26e37130cf14b903a70bf042f4d72c091297179f3a1567b1cd98bcc4be1c38a75139df8c422769289fa73562a8429e88dc60571e933b22d8a9471cb7bc11a6b74e0b62643574f91413e9913229584dc8936016cc5f5560a044488183a53822c77f5b26ff9f2c289e7c88795301e095efab2b84f90350524549c855dd9928dd735a0da461450a31ee2e3b285698b5049000b58344e393a33ec7b114acbb6c69ee40b62b986a7a70a6bda64ac03423517360df820cc2f5a0e279b30fc77a41b220d6ee3ccdd4802ca3447d5065dbcbccc0b3a79e932c1225acc8c02c906c49586037e6a16c5b6c64e6e6c338937ca94c77d9cdab427a258804768e739ba637725b7f98ec064b645e23710d50e1a563719b190d8127e8d8557165a7e61770008621b211c1ad9f004a97556d41511d2a8a290490a0f6b289d3c35cb8830f5f6c4d60b9cbda14b50677c210b6539229d44c7376159c4d4f4b7e1557e1a25a51f6456bbb983177599f7f1ced0b15c751b1046a1015b4acaf53c8e43c7ae7a14202a54a7e3037027fc5e8736a4d7d9145a56cf65b862f03b3a9848c8c2704295f328a6cc83cb17774cf20f9db1162fe604c77100ece175ac3a9f3f297c72b7a3efda073fb6397e0aa8fe60c9e5d26281699c911632d055434ef4792a87c96d17228611828c0282ac82abc3041fc902c09a1c918fe20a0506788a31cd01583847373db827b87b7c29c519ae2071185910b4f586be80488ee85a31c63857fe02a11bb270337b6b92a32103197f260b0929e289f9c9308056a7539394c0071df82591428bb8a2b734db430074f9749da3bcfc46163c3b5f31430e4556b91efc1f62aa912361209746909eca91b40ccc815c1274762b9c697cb7659dd200a29a641db2404b954a1c17994d5b3a49af157f7d645df88863f145734d7262cbf8a640d2b31e601124717c6f456db325b1b4b344bf3a922f624df598756f8a2c2acb0c4e62140ffa4cacf4c6e03828ec903acdecada6d0074b2364057584b3f0530bb587666a88d2e354ba68bee404227d7a963d8bab4c7545b95a984d117ab3f576fb1ba4e912b468889762009eeb83949d39613ae7054d9c76ea556ee4a8286bb489e4da9e4bda4db0714104da37fe1777adb632c57020164331bc29abeb356344081e3907c467657ea53a1111d45ee2f416f945396e6c63df328575808640ac5b1d5a711a5523cb7a18263224ae615840f9c448274409369b2d66b135e57648f07333fa326045681dd20cd9bac300c834ff582c1be9223f427bfb13731b27175c1028f55736ea50a7adbc819c742c22328363632f1917cf5c89441b841c3532693c3718a1fb693b28c103ca3ab9690502965f907b82cfdb4e0fa2884ba7ce8b0768ad36a32ff60b4db45edf64a5d02018836a8230c6a2f8a037b72261f4436b987066bbc90f65f2c940635cdbf1b4c5a853a1113c86010bb7b558f9a773cab0434399874e01afe167908045c34d3f452196000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 0b52af120747b8cc02ce11b70f30e159c9f3028f0b44757f23deb9b62ec75c61d64dcc774729b5ed59c23cc809a88d075021e7799b50024bd9ebdd3ccf710f17dfa89423d20542a44a97ab3bda0bc0825f76f8f481a52e66c344c024d0350e4d28b49bed05dfa166d8a5ec175e43a2a535abc6dc4decc1cb9afd9f05634d5054fd7b4c17dac997a70798c5c712b276e56e2af4543f9b9e5ce362d2f5f7c2f5af150c9782af88ea561161a6e5892c6a7d22a367dd461971cd801e9c5f2e2fdfa70f39550d06157e66e0806143fa56d5a9667e038d0c818b2be48de10408c67c948ec5cd1c543fc92d76fe299af65f94edd82f0be2ab3cca31272592549699555dc08e1de7097e20b83fe3eced16446d90f79ab46ab702804cb3a0358c927b7d126799f52c47e613a2730680713e8056135a26bafdd8a9e38d8c30e628a090878037da0afd82b9fe89a601d3641b6514b0450e3792fbc60d3e78c7316301b2e3dad4422c85b4afb1d1af20de6938a1d8aa2625b637ebcec8754ab5b66aed8b13b669c81f986d158cdd9bc82db0eaff8c80895d9289e30f0595131bb9aa1e77fbba451c1988117e2ce8b4e3cfa6f0b5c00d894753a9c93d269d477b1c86fbfaafb1dc083c7ecf3c688b36b4107a2c800f17d14acaaf795fe9ff913f702d188a204a26a3c301e44a84c5e32e9c8efb7236943849dc442bba5552fb34dd7e7c486959fdc8df5d380b199a9d637c1d11091406b3e3d2ab587794eafef76f6302c1356813109acf1dbc7380f6eb082a2e5cd4e53f93dc277372230997a0858229f9ffec2691d39f748dcf1c911f8d49d281bb9299582e1dabcac1119a7bed289a1d5ca9b471542be7e5bae58d275061eed3ab92dca9e444061d641f3e128d9d44757b350bcf673de1165abf6e10f87d101562eb6585baea22583fd8193da19f15bd88ee614523305e2d996b04db09aa3ddb422c7b9dfe93237e3c85043469916763bd58132835795d4c6d01682fbd877d132589ff21de3e4882a927971ddab6e2b31a01f3c32ea60f506bab44f8ae74cbd33e551cd7d52791155f390b409f169f2fb2166719265c6d4fab72abdfaf530842ca86e6f2d6a04ff0c96335ea20564f6328f4a10caa1b9ae6a2873a966e2d2ad2819f3e398a493d878bfea76b4372d2b24b93edc9f1e2438ac6f3fcc1944ab99c3729c3526bf1069b866f7b630c5b6ba7e10696326bc0096aca3a6e526e484b8161716b7377f9c5ac7401a850374c3adc7057d0f783eed9c98a3004ccd529a5f0846bb6cecf98c55470a7b55d3c1be06cbe3a3fba17f118dfd68aecd0ba783cc7489b7ea3bb8fac98e70c1e8f047deefc3760dbcf6571305eb1cc3f88ae3fba08359217ba391c1990d33b89174a5e896d655aa36909a4fb65495651ce122870b5e870edbc4b0dc9d72dfdb873cb219d1d7b5143993c01ab6929baf37ae6de2d920eeb333eb55a0a32a1a9ed2d4f29f9dca34969b268a9f26aa6c0d8378aadb5f206beb4f607f308ab64a9b1669c87fb74a55f +expected_shared_secret = 4ef9b4bb13acabdc211c3e0860f1b2dbb4ad467478f8fee194ac57a869a4a8cd + +comment = Rho leads to non invertable matrix +entropy = 2676b8426b9d6a30af007094bb76d65d388c2b3da938215dd6f6987206400e13 +public_key = e1b4c439d04b5c35913283bdfad965fd4749a9eacd65d1182e83b448bc3d8f25b525d57db01394cd2b99fcbb6b3140c46c9685916cb4d572a78f59af75342188156fe6b991a7780ad5366104630700d585a6b93ef15a8025b8a32c57681ffa88c1850fca4b65928970549aa668477547b30afea83bd3cb6efa038e451688d6932d342336fa074565775680790404770a520b0845a7a09caa5ab20326c8db671541305ef9264e0074505804ca2b7bce041b69c20d0c67a50bb46e57cc920d4405e4960ed1b20a14fc8fde1626f7607a77cbb9e7835f1407b83ef53c66e3145d764cd297badba3c290957180f650844c31feba01ed2631cad26057fb610f302636500e3337b073e33b50fa647eda24425021c5c1c8eec6163ddbb6419aa3be57bffe37cca885b8456652f7c00ea65c78d2db431a28883577679485611a9cb77f95339436787f1369110203ecb1859fe49662bbae39b6bf736266e1670940780db319c969570c719499ef871e87ab61cf435114551295ea4fba96ca5939ace7a9b712635c09667a2ca87a241380edf030abb8290d1856b520aa75e52fcd3316ecc31a8c71136480c41e7c6074207be522155d66a70d73c913a62fc4f77202203c3fb58171706d55455adcf115314b71ae00745764877d44321df625916a5eb5a39bc915a7adb5c16835817ba9438d8772273038abfc29104909da051dc542719d19007a786189e2cc9ed9268486068a1a531c108659ba37383a9585440dff07116f4b5fe9b1a2dd73320b2051216009a498c2c64b59aa539244e487464475918075ee807ee8bc9bd413af46f80717f31365653b1173693f1c5992b45770c515323c74296a0ef3e8b52be344f1000f22971ac19233f25a4c0df631a2d2b14fb5cb85d6ba9c55a5dcf42be1f18f9be91134a64c57a723f02a13d2e4029d6baa6d0aac1dd5cd6d483c3b7bcfe7f69202d321d4423962a304dafb930cca0671eb6ce7a0754866827a94af22b26985e264af1278cf481193390a2e870b413884c3da9928caa8ea5595a4c4aa2d4a6f3a9956e87c87ce699f04640d2d699a4ff314abf653674b351c69367a7c6041b87aaf8a47ce07857244b71c16112db463dc3239c3908bbf715b86a2b7edec09080c1840a2687c4b57854238a2555d9d2469e798cfdbc6ca06470bbe3659e1949df3f8a6ae42822c8702271029689b4ae1573b66f5541177ac5e05118d4364f43c79d5d2cde2567811617b06965cae7491aff33d5fb4bc24fb8a69f4c0c651cd53084938a56e792c29d941abfd448a38830f9b482b26fc0f5f8a25a2c570c51a62e605cac0a0b19d3b3d5478bc879896a3e01d5e6a97a8cc876bc96ff3040a81c87afea285a35b3375d5b8f95665c1bc6896e46b09d4a5b13a48eda54cfb168a74349887a93ed9e5a1f40a5e37e2a97823a2aa7c5cb028a3e30b19d4b94857090a3e8276ffd45eac0240dde5a80f46ae14f184fbc29804726ca50462ee2583cb92953b22839a27aaac963013b13c1d1847130c96371202b8027f3df427b03119e5e57284f4751ee76cffe81f315932174560dcb211dfa13ee9d242dff22934550227ac0f59698bb700b97bcc95fec45cc65b12e25663059565330c000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = d421883017a28b1b0fb5cbd2e19168a0405633601a3ca939f5660877863828dcd366e6602ebc6b7410fdbdbb148fd9d9b5f803467e0bf26a4b3c84f2f90aed4f64d60ba2862eeecd9bda7f4ddd0c031c231f5727a9681845774573711afe23605c2aa64a89753f8aa0c4b51209c3117f111b82e70aa6c55826e12be53216d299b1ff18d2fc2c8c207131e462d614a92171bfd0855a2319ed6a4812d6385a3786a39b489405fded21cf7a9e5d581900c3f04a75be593d4ef5955fd7419813f65c3d672a8be0cf12b42f19d3775a489090cd8cbd07f2f5ea5d4895e15c53737f43dc934d2252873554ba8f50bbbc4a6964c746c34541eff210290c3b128129b2f8d7e033ea6c945d666c4baf45883fc724da572265bea46d6036f029a7d25b9adcb0e88f290c553378a940bd0425caf60374cfbc4dfc54879b95f7ae4331a8789c2086dc4ade9c580bb8eb2fd07f3170cc5306136d715600e05499fe6940aac16f82759065a153bdaf51335affd893c296bdfad1ba11fe4b10b49c2b2bb54444b613d6b5c4fcf458ccec4ae711f840c5bf7c75e4f808e5da7d112b735345d7b7cda8f6aa8489fda2790d096dcb9f8733c7f589ed047e9a56e4dc0c5adea121966be8a1215eda38db95efe2ffd6356209fabedcdf2ea4cad4b0b180ea2522d98cae0f09f793f037dbedd5f03d12db9016bfd79e07726cb575981da69f88a8aa5d104e90ea53ab57fe27b291bedc7acd5aa4449053a7ac8012fcf9899bfc423c0018e539321a986d4011f9beea70ca0e984026277290bd9373da79389341c90f1ea64de20a5415dfa16b7857df261e68d515c497dae0a6fb5b21224f0b2a3125dc3fee9395316d4f269154f528f5bf3ade728f8cb9d27147751304ad1239b955c911ef2f61f0c193365ed6305d4c0bd97c9b2f70e3f5f60fb9cda8128bd7cd6e6aeb1e7909881a6a35d34df4224b0db7631df1a497a0dd699a086aa8efaeef0e3cb582a71deabab97bfb77fcfc2067652311604d56ef3999c34b72793323607c59febf9b41816d03a4db06afd9c19444abf09e1126a5cb19842c9316718d3cfc48e52a0181521008cb90607a18548c6521520d887935c0d789942ed48e68c28905b267c9493e33004056ca159b823aa7e42d9b5104ccf165b0a8e8dc19a3db59b415049b1d82aab62bc6f2adfec2ae128c8b79c0c9d750ebd0517b6ed61f8345aea60c04968896da13f84224fd92d9c56862adb73c0d5c3ee8fff1c05a4586446f0a74ebf39898adec7f07a7ba97c138530403f2523d85931e406d476c8569e0877f73aa37cf41f0448dd2ebc89556e79bc9a081e7f34586cd7cf2f960ce8156a3e500e63fc9d652f9af37bcc36117449b06f67caccd7b9f94782d84791990497761d503d07fbb50e1891dad302f20b16bad86e1e31f7c03a9172a6f079e244314551ca5772d43ae75b4c3e44aa362f9a950c7007a7e3d9758f8ba2664add4e37cfbede8066068b449a100db9e35386da603f7abad9fc85d32090ddbff01052c1601 +expected_shared_secret = 96b7761b785b1423456e7b84f37464eac941840ce73cb0e5903dda9c4c43a296 + +comment = Rho leads to non invertable matrix +entropy = 319c51bcb76124b92f39820a5653c0ecfba79ec91d632b0488f4020e5df4e37a +public_key = a58974c8174cf998b681737830ab9132c2b925ba0a9dd7573197a72997cfc9fcb9b7fb8f7f7b881b280e43b1719fca705a209516981c2e88a617625beba7acc5a2335aa57daebb02869339b907cdcd2c4aae01a57a58702fd0883732c9b334bdc6a9bd8340bd83d5b0cef4ab2da156ba283005111360695be97576dc880d2e2a32a9e666070666e4f46b14f2a52d7006c94803ddd872b02bb31ca08901c42834d95a79fab04d8c08bb2bbb0348261f8426cc16720fa188458a4224b92dbfa067c3b518cd74a639119555844df56c0cf9023259d97fb326c45067c18adab10a881fbd4354f348139613b8f5e911b969aad197cfbbf4c1e24616b8f0b87e4206e2c46201b99da006a3c8a704ffe6ae36e3a7c07373dca58e1aab2bb6cb62a3ea5a248450df074dee89511e837b66b409061abdca119d00047252668cab621d0ab82518c66d41d951af924cb6b0189f9654a4a7b58359bde2e5ad4ef729e3d35ce95a589b237f03d10604002debb248e80a93957830c2a06d483c9f062c59b7313cfff647a80834809a3f6198658f792ecf9cb679a53ed41519b5b91015005cebe8b343d16928b9480daa3b025c68c8e9cdb7276bd588c8af8296eaba9a6ff44ff257a4542077e70a73a959738a48c007544d7fab9e87d25b04a01d27a8473ce83a6f91b3c8c9cd0493c35aa01fb38613f5d1932ee81e8622ae09f30cf5394e6ecc849fa881a555a1c4a7931e91100b7b26797b643a3a5773648609b5013f565ec161b657c653de89266a34aa6d80b35450bcafda7fbf1c0aacd8647508bba9e9b2ae6675149a9e042b6378c76335857f0bdc2b2a93c2e23b6f89d743415b71371c9e61f4590254508da401b0d8789b66c6abf2bc31a8560f988586301f54d6123dd8a4e7a41e9246ce3cabb721db810ec54ce806be4b203b8ff6574b397f8e933d930c23f6a128f1c17f017c2c2b22bbf52b4741a8c2198b6a2aac6836c09a3dd1115074249e26180c850567c33fa55b9a23fa365cb8c425eb5523dab4243b3cfe3a7fa7e75aad3b206a32a11282774745bc96c566b05562a6696efc789fe8989a6fc218011c4cbf15b960401b4e4937c752aeda715ee0e39225494db1a0acd61c704a62bf903cb6219951fb568934f2bab9595895390eb5dc3ae6e32390a942875826b453b42bd32045c5cd917a01e283812ec0274de627c1061a8208c7ea0a4b5d71004c77419fd080e662051eb2692d7676c5f319f728169db707e4b9c538f9c7f3d823a53199fc9a9f27f8a183d62247529ad152cffae14bb2d33e15dc669df777ec06600723a7da656f7d4463f0694e46649fdfa1446306377541aaa7e3948b83b7b39522e0eccf544859f1459375db295a879f97755b40e514f6a22d90f20f22674cd071a5454275af02c461152f79b8a247f69a56aabd6a4275c9757ef708ba492892473ca461730bc069a5ed103eeeb21ab5d5b96e868f5b64bb5f18174710bed8108742c25f6fa5b598a81c8a509454d8b6b3744a0e85a64ed9c5855c3014853d4836565419adc67b6566968c2d82bc4bdc424737894f48c19f60079df447b82573c2d28ac4bb29c9272580776b43d21474e52e09ac2255b95e3b3c7ff02442dc47000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 2363ea527c82054080a7e6dbfd16d3e96e07463bc44815397c970be5db84d68b72bce2772578c82f916b29fa0ad068e9c383bde469fefce18c63557db19ce93f1c302a9fa6d1d39faf7b4b5774b045f825ef9139cf113b531a12ce15c7c24393092eb886df18e295acfbcad1ad8edb5d20be0a412afa1857e722a20c2740d1a3ba0b101e7ce331933057f0b1cc19161344c87340f2b78510dd754395e6368e222bfd9413df061a3be812022ce2da08bc4de3bf6e657a3a80200e51f82fb098ba9770178dfded93c3772c4aa610648e7b5b330ea921c1547cae8d2a0621afbaeea92f43435bb40020776f529a7754e7f318f9968bb74057f371eb11013daee9cf8128046e492517b16ec8722d993b345fb0d0c7eb615d1e558acbb39f74e08572bd8ea2503a319767899889196a0a42f26e7434e359594a87f0fdd68149028bbe8bd26e3b912e95776884e83dcb3da50659c54c7f49832996faa3de449cb61715b81f75887529c7e8e98f39eaf3af683b5fbb150f7dea6da5867e0aa9b2ab42ba7ba42fcfdcb076690255d5ea8260c7b106738a63e887fc6993ad0bc93d1e6e9ef893981ae0540200ca393ecb5f7b90394dbf15bd33afdfa499199eb2c3ccd93a0e54fc2211b705640e87475c24e5524bfd5a80fa0ce6cf9db8d263cc203e52e6bc5891755331cff855b04c98fae0b416c61a8e38f669619a44b455752ddcc94fe1bb5608ace3029ffdf881e09c49cd7a1e397efd9f47c2c598c624cab914ead90bc50bbfc5c1aaf42362c48d4c2feb42f95057502f30a1a9d9baf49199d05c89db7cff332c24c7cdac1c3317bb884c4ab041580d3c50a68d3444ea0046850473ebc5bccbbac4f94de8dcd7453ee15e001242214cd26548bbbbb0681e4169223a7e0fead1299152476e9eb86f2a84c08d5308c61b9af960374f407e0d49af22d871a7fa048aa386fa83bdcda6bf1fd27996d597802595cb0d85360ad1717b9900b3f6d68ec680693de41eea73607de43668e55491b9e2670deac0ea38fc3218fb4797ec037b5c5075f7a65bb958a8eb551de7c0886f8d5056c1711cdf2c705be5d879d4dd45aeb3d514b09864333b6c8393fb37c4585018c8ed0d952df661c4808baf4ee3b2a93248e0ce1ba65b04d2ba5e520eb2520039f76c637749751e504acc792dde698b04a4b0b9e2f90c98ba8beda3c1a26c6941e509bed0d4b44809e27c982d1373f89a6a5cc60c3e4042f6182fe28d2d1a034f21ba4a007fad040aa2e0762adb6bbb92a218d3d18919714acc77ee1c281de78743337fe9a0d788d9993b91808f7aae1e88193f6fe8422c0876d225d724bbe5b3967f0fb2c2e4e2aa98fff8a8d82be444b840294f51fbe7972dc8b4cdb701b733b465002c1e49fbdede6f4137a2d4d12235f3f9e7726ca176e4229ebf382de8210a68280ad795199ff82740c5ace14acd100cd39c29a28bdc49a8ae8393c832416f52dcae1f3c24c5a9afa613f8d2df09eccfa1194f39d69cebaa778572f42b1d8537c9364cd165f05f +expected_shared_secret = e02c8542d46fcd5031c0efe0464fab43d07337181fbc4ab3d58bb7bda0cfd7bc + +comment = Rho leads to non invertable matrix +entropy = 00ff48b3769ffaf4e91c1c9110eb8ce9e2cb99f060b486b37035407d2f4ca517 +public_key = 82600ec863a0a0831fc05c3ce85c3ee9417f6c993412227e7be59aacf03cd9231c2e0aa9020c2d17510574e2a1e89a9905722a13b23d3e8561fe37b034916f0bf61aafa00bdfb1321f798a8b0c61062b9835f389c33b18169a156c11917d8949e9f1c8ca2bc0e3803674436f62798295982b6b3933b09378cb837c5ad440cda657c68c76806b96dfa865e0352bd5290b91a42fc74b1e47033942b07632093b5e717b9b90120ef389b8b2c4c7bb324807251b26c779327f4b776644a55e17e4a67c1a3ac2457636a057cb29329dd0b5d0f3295d128394259649e5b735ab80b3738495a170dc9880be07ad06c2a60cb7a5791295e9c03f4ab96fd287097df52942352cc31c9ff50683ade3c0a4015216b28b0b695b2cb62010aa19dfaac2ad2231dce54aeaf75197db12c291568d5a9a8147280cd956d9d67f7bac1296025801f36eeae79a2f71065f01759f68b30d521333baa96a998dd1946f90380174450692fcbc0e56a31fa238cce178a8b50477831f0b203da58943af694caed2cd3b2a6f58ab3ada92cc5a1860e0f9845f5639a1f555a7d1045d5a07b428b5f2db893dd3a80936759b73642aca1ec7b1535eaa36dd695707b89a9062ca107178673ab34d31cca4944642babd3e79045d4bce48c8b7d46c522291a6e81330f1071258219b4245cd5e381686cab8a9e10120e625516c1299c184066a3bf60a1dc8535398c43a8deb7546000ece3a429003982940bef6870be1585c58423f419a042c30289c80b6f5624458ca8da2713c564282aaba77670c73be5c7bf0e58d1948beea9a97750a06bfe472d721bfa1e54b23a35cd5672b4e84677179579a29723d5003e7a44a8e691cdb015f4ad123d13a8da615a3f52763d334a6a07258ff127e15ab23b0f29e3b4061914b8349056d45f06886051d6ed5a6974bc4d38a7282b837f18082759530c20689f838831a937b7ee74d4ec64b57693c72a778dbf73ebaac041c4b846f78585a81971289bd51a3359035ab12222a3af7bbed6a64a856601af10efd0b23e3d06df7d243b04ca8c07a0e2d0b883c997d74fac67957469189a1ac592b83669f2f638e0976c373fa354045799824bfcf9c45cd408343239ed168b8e25b831d2c200be6303e93103a14549ca30d9f8a0e4b976870801d6bb50d2ef8914371414bfaa56e724582d14879634bea15ac530983a996a31fc9578d88cb242b63057802e7bab2cf2981fc2a9aea2cb173b873e1569a73356cef7476b9fc3a0b18cd978011dcd8b6e0b3c0769069dd94a6f39c940f6a5764d8671208271820c444d1c2ade4043677b1a9d7cc04871981838284c85850d416b7d2825ae95f79bb95f6262bea8a37e240bb02d6ca8fb03ef2d221ee818454222c4d4b998cf586d3434024b304b6ca68b478c773955f2933921e882f15c3ae726547f9a019de89b8335ca3e7f74fadb8ade6c061106c335e85311dd3208724381e28cf3636ba7f784da2718e857467e70a6682e5891473002e176adb848a96b26641e89463b488c616ba0cd4206583804ef8ad9ce3668129157077922bf00999b711af0973ae169ce7f81157d298fe033a7d547cd5b617cfb908a8db40cce2022578006549c05c594a8b13ec66bf000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 4cbe8e1ceb4f29a5a28a605625ff03b2ab4a82f81154af1731b0b930c6bb04af7bff3d7c2058c5788b389cd258851b6d3a17b9667d12a8fa61ba7c98b573dbc9cedc3e03a8f53b96214a4e1dd1d38f321d7e3851531246fcc1a2a1f937a101eace805aff3877438dee254bb7bb8b7ef71f2a202d36f532f2bb37f236021662f7eb0473be940f1b63f74276ac8c8fc8e92f805119e240b1df416dbb599a1a6055eef456d7ddc920fdf2277c6b72ed23e3b4b77d604974e7c10290214ed8aa9d592c2f0acee64a5a06ae2d95cca227c23e48abec08b22d9ee7ad35b0fa799b4b5f4cc0effada3f23fbf30a50ebef37ef6f30f6aeba700c6b8d10bf3141dc87e8c118d13bf23c9fcc8aa7473d2748d7dcd88fe5c2311d69ea29c6f5beac3b0d47fb5563b3c57277ec69e6fc2b91342e79b70d976c4359c00e0d08733701690dedd6f93a2fc751fcb020407d9d53ac454fcc8e0204da5e9e5e5f48cd7f3d787a95cb37e01f9bf9ee87e174e4367a0ce9f4aaae125a631d55e13e3cef3e6913f3203b9239a9ab31f297b6aeb5e0044d05fe3f620d3494a95b19bac5c782321651443716ee815ddb9bde2fd4cd0f274feb208dcf50e3a8f68971b69e847e21b948394bae8be37dfd645006a27aae0c4301a0801adf533e5229c6af3d9f9196e38869f68f71ecf720e837062e13ff754c72d101ee202b023c105765db30e5c51c06679b8cd504b83525a3e4a277eae5b2e6d59156cbe11df8792c3563c74076f93357917a1855943db2d68d89dfd53041143014142361d1617aedb76b1d536ba5b3ec8bd008e8d6e709565e02fb4eaca108623468071c9efd3de94d0a380f7b84788c7d17a5ff7b158531cd2fdd72181dd98f2c03aa872cb429e6f2f5474f27f6533d0a24f8a78178f280d9232e3215d89978ed0e0e00cb9b90ae09132bf14d9e0bb23e3f6c1a2d3139d912fe0b2dad2adf2a4a06f392db783167a332db072790324f9fffeafb3efa8547186ff8c198fd47fe91f0c2d513a91cbf36dff2ee65234b9ec53412f44c32d3bd856478507d293761cf61b9f9ab82a1c54d9952124069865b94258d29a2752a3c518f2c8407e022e66577281aa704fe6628282896ce6b7e8d642c7193f6cba50e8ac0b2ef48992649dc8180632a4f9b393b6ec5c0ff2ef5e33d5550c445ae9e60ffdf7adaf9375d3111c9d896d8a4673cb25ec0d05d2c8564137998e43f7dd51f7b7a438d1c09e02e6caf1aeeec2819ee801992b3326d45739263b66d5d7e483c6fc00bcf69b969421844a0042038907be2e853d965f26f3f5d543230cbcfcd7a5f3ddcaea581869cbac5828be28c4bf58c45f539e6681091f9a5699c9cab2f17f0862cf65454513977854339a81aad65fa1a631a4ac1d9275bbf46b11d8b62c9417bb2f5c30502665ebae8784f281cddb3dc0ce1e76d61f8420aee5419242dd5e09949d18d3fa1a81307b51b6b8a30473076e8041f46847b91278ce78bba4e7bdb2b1aecc7d3e3bf6c01e61ff59d9e1e9eb7ff7393d9005dd6 +expected_shared_secret = e572300d1bb28e65f38527a8007b312961b7c6cb204572fa0c7f53531c6c98f6 + +comment = Rho leads to non invertable matrix +entropy = 4960ccb1276f96d7aa55885b6ae6f90343d42e1391e8241b5952931a979837e1 +public_key = f8111cd446cb2c44753cf29cacd39a7c9cc96af28545c40a6cc64f5974810ae45a97380302375de7c95b44318815776f80397c4608cbc22086e9fc06fed87c6c780ead85a8d5a82f0fc2ac28366f229566cfdcbd0c65ab3c112b70a908a85660547719e8304d513912a215acd011918cba5423e9094ccca3ef073832c3b81863242c864a90f1bd9e6359d9c72dbed85e76a926f6a84cc4a4839e5266aa9020f445ae1062b3751a438fec3dd862a8d7831db1c84fdb9102872b2c55b28e6f00623e2a971eb4982842392c10bc3e786a5ef5be5a69903728196c028a0ae20fa5921773f35c296770c8cc63a48844022a32e6d928ef042e0537876d3b276ad42ee7585b8dd38cfb58492e28488b0488330b935ee8701bf05372abbf4bdb1ab7da67367ccd8df4469c13355992a036d0a0eef51045a9b40ddc04c492c784a945e99c2a8ca52b99734e3116caaf2330ff4195bc2776ff8644d4d510f1d7cea4682b1533b4c567a1f0d052ce387237b92fd14246adf34ab4455f97f579d3e746bd97313ce10e4a331bdc8a1974481289000b39baacf9c757dcc357b2ab4756309849881289d66f7692a084dbc9b92b671ef115b979b26a8873480977ee621faf6b6a506b2fc2570ec44a9d5eda9d46f2437749367eda6af411ab661162ce8809e2c6999cf26ba5a37fcfc009f60b7dd857bfec86a3fe095df844388c31ab44c26b090c4afe58052a80bb39e614eca3c07e7871811b19b45224e7db6cd077aa4dd366b6755623453fd29b42af2732db855e0e829a9b51714f362b083bacc9e68eaa8507b0127b40227b9de014dcbb93b8db567343c1c1807d5f81b64031c364210531008976aa1daa866579aab9a6e1baa049624487cabf044c0e576902373ab2c0ce00f22a0bb61b38f98f4bbb5bb4018f6ff8a815d4338447bd133a610ebb10365276b2d0a473281c64e8c3677741a1a0c360a8797a3a4dfa06ca5bf50658600de1175822e27f187b6cf7198b8427750246b8db6653e448a16b21ab2e343ed4d55287341155a7b1b9d92cfadc26e138c3e784c03bcb6e36a1acd0e0ae04d78cef528b9636ab4fbbbdec0b7ec5e3c94c808f90646b7f833867b654fd9415d4b971e67920432103d00928f0f3af9274bbac2c5a7bd7cb27d2b1318b840b899257065026a576931735600698e2d49b136c641e080e034544325780fd683ded1caa11052fd89b5d18869f8a8024d4657e4870ced241974d2c8f6194886b509bacd5ad2ecb8cb2850bf55200d2226602a640e8812eb26a4cc0a960979ccdadc5b31d98cc59283df09a6c2d5b7f6ab703a6305709d10cd968826c6a019a264210c699030804db419c5ba4460b25510cb43e16e36eba7b74449612eb73662c79ba481816598045f601be5da995f02229d5d130f6688a57585c959c69cab00e462512e6129afc9bbc5845c9714a3cf14a1061b46139c79e02849b6114b80a75828cc946a5f00096a4a43d065ddd5897f3756d0bd208b4f8685d2a165442c132a74f78da6370422d0b01b812c009da680ae91ca0fc56bdfa36a32a6308c8eb32ccd23ed3eac3c9a029186a73c8d63e8fc92a5dd42905198405c76a2ad92f9a21a2b62b11e8831b4062425c62000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = fa75f5533fef3b994435bcbd3d2080030cf8b04d5773762f1ca6fbce54d86af4ec2f36fac7b3f249f4bc11cb376b23e70a7ebd39da39d9377ee63a7c02105ff9538d6752482378b4140266f13faf8c7ee695dad10b590b40ed5627ac417e8399dd398cd7413587f7d5c530801c6c3d7a33838cd42ab4d4d47d263f4e1366c539319faa0bbe179e069a4880f928f7f5107298b1bc2bf75e6f9d135cd9c96e8fd1483e3f9211bb73fbb5623b9ce1154cbe01797b4d69b9940c20d4fc5b1d1e103a9fde78aa11310e9ec3cf57bc2f41e3296c42991e03b19938e2c57efe6579c192b66077b4da4a7bffb383d23d7315ee81794f2c4f74c4349904190a73eeb1eebe03ea314f708f9f103b2862f8a4a05aa8aaef91818e6deba42b60a9957e5261e01f7c68efca04eb61fa7ff86996b69a2d7e293a6407004bebe90bb481daf560e446338ed6ba259e1d0910ceed2afc7dbb520629e8cd92f1759803bf0a598ae25254f054c4551009f9f331d24c9e443b3942ce662b28c5dd5a6f082ed5aa2725ac7a9e3abc6e57d9d8603052015944ee9d6d55198a5fa9d9fd953ab5afb63eed2e0e6d01983a8e2dc19708c404ce6a7092f2761b8dfad19e0d4dc657827756a99932c88643c6e3adb0d272b9cd877079754fcc2e60c5f222d7c751914621873edd16289370e246bf6e63ca7442b54f7d6198c99deb20e635367fb3c187063713d4a6059ce5623fd8203a73b62c2476605107a64efa177e435b5c7bf6b7c36627e1192a00d6d376612bef6560acfc270257ea0b561af6c2e4738207d60197dc1126c89ad7416e45af6022b227f9e1c4beedd248c8fff802675e21b15f06c3aec36400515c4bb9f4ad2e878ba4eba2658c66f4f38cdb2c73e71de1796290133857e90965bd334628eb83ac769cf63fa9a59298d089302cec86c2d10aa03c6d620a1e735176665435479ccae37a168a0827d7f4d8070d98065ad0bcde435c9e9e9d75e71ad0e40d061a2dbb2a3262e18704649a14310e545e8ce93be3b33fc442d437acaa3b5bda4f770f5eb60f56b0fbd0e9a4820f3c464cb900be522928d9a3a29573b07884e19da158b317fcdf047a2307d0066f16a3a4e389f0166650937ff1df8c4e637e24e2d50f4d2b731e7befab3b0c33ab81b4b031174a61be15d992315464f99d292696bb1536ddab0195a140beb68e72eddca6220d01d4fbc77ef3d743ac1dbe06450614d9255f13e60417624dde40a25515f19b52750c1fabcd7f128b472d80337c469cb8ff95bbd2875ed03efe8df9aeb677146002c138edb668a22c1e1b671cdf636a725de9bfa9c0e12035939c8136b8da4792eda4e82f29d33bf3f67954863eb993e51344ffc4d144d651219de292bef3f3763e2aa061264b11016b6bd4586f46215eee237b8b616a260071004e253c7e1424d01c4b71bf53e085f93c6917a028e6f5134e2c04bc8d9a371083180c3d95a709bf56f79dae2be4b1df4db2fa14b075ca14d0cc7875fee90f8ad2ef73fd4bbfa3422475bd9a7b8195 +expected_shared_secret = 0749d8808bf77c517e622f26abcf23f7c40144b37bab16c6605ef1c97636689c + +comment = Rho leads to non invertable matrix +entropy = 456be124e7f43803de5f734ea016455d68164a7f054c003f4ef49e46f42dd8d0 +public_key = a86b5b613c6c4c869dd552a711040a0a205a6a9b7ee5c7607825a76206b3db25aa6a0960da259ec279960a5a947106b51a299792707447856085a12397e60cbf91713a6c4bc56b03531081b0b38b0866718c53bea1220f3e5c3a59c74f10c765148c595becb9aaf0ccf2e429575889b462bd59678f860a5e501aa758674d22842cf65a3f8dbbaa7da061c54073a92cbed742163df301e3675c5ad96b26b12651fc9507b7361a8bc0cdc47e7f38c1ad80456ac3443bab147e86924ec112adfc9f1c1b81b478740b752d030537c817a727451668d9ba1fe092d5e116c20262b722b6f895b78e3622c00596ac8b5d4ec11b0413635e85637ecb9a87516cb8c46ef2aaa6fdab62860160c4b29e23f921ed3a381711540cfa5df115a700d40c38b99efb870c6ed14f2261b17ac21900a427528cbff423b0ecf29c2a901baa9c7ae3d438c145385c73b0961c4e9dd5cb48c2ba247a30b9691dd8fac963a5c46ea44de03274896c8f36e57f84dba494c473af0a64d97533b223a32f8078d933bc6db125c2e7a779e0676e09648cf6b85c2968b71146763b7082ca2fec33884d6704afa71f5723617f83737cebae33b95be2393cf1f104c093b4caf26548704490b4aff5d6175ee4c7a3c0718436bf996003039aaaeeb18e92e341938b7a71609082b18995aa042e628f18e8c6f67b67770597772259e0e7b1025c29ea809beb994483a6863d038f6b9bb814a5215d299ad0b0b577d70e7c946be6c93ee257c68b1653ded84761b3a6104814a265988bea5a6ae96951f1bef6f53f50aa78c1f655dec149706ccc561a846d9cac61a339c3c279a290829f972a1931ab5ddc4893f71127d1a96796a24152a5d56016bb5c9d483b9b4346a8550784a828a3b53573e61104b6392d0bb246b8116d8f78021bd012c322c8b0d8392677afb40b36e49c0211449a2bd841e44b72b25b11cd099bf4ca292af2722dd9ca2ad3c36f4377ee54986b737a6a0b87817384ae9964244b140689b2d2db0deaccbe9f63b182164b89c932bdb22e6127303044b91eb76572e19785747e6da01c20318bc8092a7dea7ecfcb638e0584a6e00ccf243e06c577b784704c3b448e22a2b2c9c1dc0224c7ca798567b1c5f3a7ba660af4028387f2c573a52a28a3449c26342f214923e3932f3bbac2819329b83a2e89b78d93afc3c134be3c5fb8c67617666c22c71c4cb99063898f65b41117893785f376d2330b3b5a2fa946374f8a1a2eca1645d255c2a28fc8d7734fa10c67979e5950a1b5e085e2d52763326f3dea8b783297d509333947b9a47a9ce9caa0fff56637a54ffa6a00ed942e0d382ac6c834a7e40859f58d3ae991a9e359e91530bdb75c5568330236149e71040dd9219f5c24cf35c4e6a670e0719b2e738969f509cc55bfb6ca08c68c28165bbc43598ebd9744a18820b5947f0b41a311846588187c0aa669843bc6f4620cd1c62f1aaa90f93b7537828b42f59c153b9ebcc9ae1168b2ee7b2f10c062bdd49259024f4fd51c8994acd60478cd3a00593c403a3279877801d3c88f65b7bd83b76fb54c49bdc8af3cb4b2717741bce1bad123cd062211e74782f4620e9130a9950423afdc98cf0519a643a265e4c6ba4142557d000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 0d6a627804b6e54c49e39e098b20c978cfdda91acd2d5d883111b0fe855460e981f041682f419dee54cf5b7f923c2017b1012f0b3233d507ed065e96ba51f92f70a38aff0ce071110bb0513b22262aac6ffc1287c63c07f312ca2310293a56e85e429bcf3b8662426c086f388312513825888762fb3aa87a40653de37f48870ae16c19ec088bba8911e944b41a8cd595e2fbb680971981b5352a9032b28fd3bdd63ea4a72b5d999d6fad88e19aa84e5d60f173283f7597b682f4616bcf532ae1cd5e9e5e231c6bcb1c9d5fd0e50d54c53ec8a4f1162696aa72c02a6fc97e80686886b84899a7ad7a1ff6468031dc403dfabdcd793bc31a3036d5937f5af337f806001f4ee79dd889e72f5585636205a3a906c01588150d73571ffaffb9775970af6c98a17f1a6a6a0161de795ee20fdfae34fe40e4423012dcb1cb918144225716dc32c6d9d453a148f3a5999b6df6748a97429ab5b8c6007f2595b47fb52030ffaf99735f22657fa8e93f31238941436b76088a72dc6a133f96f0461eab8ad3361f59d4539090c2dd4b05ef665786de899af3582a8a41400b0421c6c646050171f6c2c8231e7fd295f855d2236f6b17f36cd998b47542ad2a73c1751883175a71ad2695b7b372b71ac8cbc2729ab1f4b76eeb8187777404ff81e46aa3a246cb0c9dd3b7fcc443f6a89df493b64e770aa8507253aebc041587b3b9e365688138518d2e84b635c045c9f7e50e62fedc9a42344bece5e21e05c52baee9da1e5fd50ed674aa83845343894439da9188a149b04d7110900fd3a6bd950be022cdf91e6bc896125a10e64ca3e55785aa5ee668e42f338abf50690c61cf19481b1162cfac86b4f8b8800e3c65e82e94e987e37986a3669e401f199021a98294018a602801c07b51faa641a34183ae5a101189887189f072943a712f74b3710a98ec0a992ae4ad1d4d56a508ea3d0762d1b004f399261f2fd836b97740f4d96e3a939ec8854b711ee358425943d218f92a7e07799215ea2e4e097448f7d75e79850560fff7695c4b3f1266f60c430b602db4cd75983e3e252c541f5d39cd15253441f76534cfa94017f1801797503b9d1518fe4857a27e79c842cd3909eca55ec46d9652ff448ae113134c7d24a506987875e9aa17841c9453ff951aee63372957333e8af8ad72ca7e8bff5e0372209fd0bf11881475d0900c643b42b911ed8da750f4d0afa53d13c749bedd5c69a006dfe44a736a44232de96075b6db454644ed3403bde16116a670d7e6c60e03e25a72711ba7b17e5b65bb8af376eb71df16f7d48af1a903bb6eeb599d8acd74d7990053b39d4c81887411927689e20b51006a582fa0c0416299c850e75a81fea3f4dd3d3985087fa7b5f163827c89c2737a86bbdfebc4240c166acd4fefdda881f76be78a079295033b10b5e2bbd9590e3354d86c2532e43b9d1ad7c66766d2faf2877eb0ad087fe52fa1ea1a0d5661872735badad7ee15754168059d5f527c6b188e6dcee930e09718f6551da8475df376ece9e890 +expected_shared_secret = 951e3d8eecad130865f9f89c27c36ea8d091b6f3c00e35969f92bfc4f91d657f + +comment = Rho leads to non invertable matrix +entropy = e8ac9e76377d67d84f85a142383e777157805be0d0f679ba89cefdfa61583780 +public_key = f486c7d6766d95f2b7296a07c8c7b767c1057548a18263a4366040c003c50084bddd31af425b261083ccaac26948ba1882739732bcc1e73685b52287148526bdfc47d8822d1d5853c9447b21f200592937b9229b471646beca2cca630502e167b7c861d03cbe302600c6e1806f6040cbe518e15c0eec4395ec1a47c44c8456830709a3be9d05cc5cb3266f616f9f8a7adf9b2a04bb623f801da0c8c0cb4b45c16282c412c24ab90c7471b554057b6c0623481a46a0aa53dc167c15ea8a723c81d9d56691b060bf00554548c34f1c603b17b705a72b2c3091ac134d192806635385a5ec9cd28a3bb56b83cd2b153e00b66eb58d8580a47e696aba9abd36b19b3cd47a0dc4ca2d6b7ef106a3b94b349c665b295433f4ab8711a01e2de8295d58b20eb2ca49c23d595c96c874a2749087dafc044c0b8bd5b340ffd12fec07640099753d4c993fc69d986210dbeb95bab40f6ca0096ea866ef216c6b2657600813052886452c130e7c925940564918a5266531af820d0e69c10471ab3b74585f2cbaa1b27274589fea64b2172b4020b4619b6953a9d56d022c7bf937650ee5608b15988b3377bbb617c4016c1ea3a7afcb9665d995eebc2b0ce76c38a0b6bdf9436ad78bb97852ffe8a618f3c82dc4afd81c99a9512777094b12564ce1a469cb49045a90aa3d2c20fdabbc5bb4940d30360f17a66d58b7a3ba7920c102ccf8b30f03621ef722776b2fba0164b3426d514104a6689286649862b7cbd84011008ba69c6148201b576a7b4b58a53035946a0af9646251b8c1cc7bc4c058ed8bbc53c91ef74cc06e1c32a211ac42570b7a7181f23552c762118a9c0f4862687a502c232b9d43224f5fab525f6186332969b246082c44cae7236e38865e4dbbcba87c12e90b2b970097c0e307dda00d7cb98574915a03d25384d4584611c837e19ca906a80868b382940d909091527b0bf261be5ac0a9ea151b8979ae46f2453b420d5b6b1fe02605fb8bba1e065bb9506e1be7c471a9b8083734a110aa6aeb8340338b14aa71189cca4ff01777e7a251b7a0cd1cba9a9a7b9ff3953fd9c87f5b043f719f692a9f4c7352a0756393e50f0592cac59bc21e198729f23b4500d0e620bd02222a88c5688ac02809315cce210db4169fdd1312c0dc85baa25f3d48ceab80754987553fcc7806827441b590cf9a8d5c590b2e00bdbc9b4ac3d2883f6cbf9e047407858b99ab6577a66b498b0f18628d16a389a5f5a20e1b0ffc228eef287a36968ed913b8fd74a34de23ede7743da2311fd10c46eeb84c38986bca7536ae8a3a42acbe5dcb3fe9432bdab1f3d1226a99148d01219f3e68f68d7a689e39d7502b6e13b665cf0235af1489bf4ce8619624eb4509c7639ec411fa223793b4cbbc990256b390fe23a2624977477428ec39835809343023c1dfefba3aef98e7aa15ae694861ad54e0c74a6d8122ab181c9d23397902c99b0dbaf78a463682294a2eacc1cd36c8fc1ad2e282a72fba0bc179520ba2b410acc977b9f2cdba3213175204568dc249571c20fee0874fec364eaf210ad31b6018c2d841269bdc95ce753cf6a765af4bb9deba17253985277f71d2563a585a7573d31c87b80913c0a38d3905a41de6fdc47000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 068bcf0833a0a08f1a1c9128e6575a62ed3f2e075c4444f2b4584b18e4af26b4e84f16b697141c2b000847dc2916b8718608465198935e67d873335d065b994e2946244d3d739b1d31ee6b8d54c5bb04fc9d7d6d22496a869e5331d5e293a712408207fabc35004b13d3ee3aca54200182249642c5e9de88bf5a489cdfe6330170c0b2cbae18f65043ee306db39d333344c37fa76ab05675568a5dc576290abac1d6f28f6ee1d800a3c638b91cd40cb02e531c88c0a3328a176f872386082f07b4a782f79d0b2cb2df14a62e3db5a30fc753f25db235588652c51b251685ffc1090ffff37671384482d4ad055f0d51a5f00c1c14e67824a29ff8910d9e9295f633b6e8dccaebb2da47cb628a246c6a443b87981453e4ec64e7d0df499f026977b039f73d5edb354bdb536896f35a5431ffed50861551f5e6114da8782d3e1530858e516fb623dc3c0bea0c8981bd3091af72555ea18ba409bfe2419a60d769999d82f7bf588be754496143ef980a3995daa51e370984e212f41681fcf6f1235871389fd3b52e76537b84af594f5405fdfab1d90c79a302c142f88affab1f4d524a139ca894cad46f270270f2d8024d06582492fd1502a65e7b70ba0941dd957808206ce00c6be60d8fedeaaa0149f17ff0b3b775fe59317e769024c91ec83a191cd72481e3d90361a4dbf59968a33a56ecde8aa618a8046e0c021c6954f983b489bba80d15decb9955e118899d98c1df865355f5b9ffd97c52c097474704088cd2dcc01f303ec675d87938d21cacba1fed2483e144bd6bdfaf5a9a233238313489e1aadb82a060390adbbedc55050ff86f967b4b7aefa563117556c4ca5ce9ec3db571b5d2c9f5fef63e731c86b0ef3d84239641fb082063ee3c3756006b306754124f9b964dfffe718c72b93999255fdb3c4eea7907a8bfb5936801e799d499269226df5d9d3232b5bd5dba5c2ad9b03826b961535044dba6640b7da63a9f639a834f7311e7d9ec4a1591d041de4f080416acce59b2f1fa4f4a7654368761bf1025a2de5f02cfbc2150685f3e457aea26ba25ad3b828f9dc07d33a55450a0f0c6fc3898dfdd7a43488ff012cca26828e5a1dc5a0d605c59afcca1cb0c76b3c20524eecca2ba2afc939204bf06adf3a5c0a809641cd83bc1c5991c9d16696a4e4e6462ede7953d2694ec9ce865523b1faa9ec4b8d5f737ab31bd929c45ad6292a6926e1c62c7d48cbdc6c6e30f289a539feeaf84cdaf23330c37c97de3ba6dae06b737e2a51faaf0363a961cec9aadb8c74779e242572fece99801eeacb7e972931da610b75a3ab2f7803b8f3b9460f1ad39385e9bd1fde1b46b676132f5590c6cefad5450de5c52087f7f5dc79ae1ea8491dfb8b2d205361eecd231f3af8d95a12da4ece84d6985325f4d948eccfd42fca19014e7af568175879101da556d615b3f4d81e0a4878bb32ae24eb4fa91334b214b379f6deeeeca45a89ac0d16d533707ea5e4b5e0c06be84656e5475c4257eeaa3353d4444cb88e499ce7f5a2cb2 +expected_shared_secret = 5a7f85e2ae8e79a1b178cfb5f38cdf9e240b9997584fe9c432fd63607139f08e + +comment = Rho leads to non invertable matrix +entropy = 2fe6b9cf4510f212839e348d671b3345da68a477f57513ce363414e87299a717 +public_key = 029b98bddb329742ad26390f48a7c0f624c336e5b71727a4cc29c06e1a2968d864e131b79e5365dce048453ca51bd8718427a35c63ab784ac5476627ced945b656adc438a5294800b6b62f62320adf193b198998a845954a2488e0ca4154a442b0012d44b7b24fa5a6f03a8efb739ccac77b8b54cd235ac65773223f3709d0cb8195671f9ed7b324a11d920332d41c9ae0c0c30279721c80c3a2423cddac9311cbb39f7512d8859074558942504d9c087d9524bb21f5cad2826688e5bb86b91c1f120da1808a654348fd3ba11f3b20bc7612950c392dc27cf6a4aea8f47b841645d4860cba4b3a865c46c0f259af1a60c43141f548308088353617bf95427fa094389a3a6d2df6ccafc7384efa1cb0ba2ae5a2a8d89335d1eca833ea026f9a08c9e2586239aff1845fc5fb6472d0056770a0cae059d81812b8c679c502b3527ab21c9b142f89bc4092cca0a6c20bd1a22c29b773b2aca72ab0a9922d85a8bd676267e9d6452235c270698c5a7a13a1640e5d20c1abc844493ca3634c1ca0813e7f73532388c1e059c414c24bfef16654850f9673afecf630fff9c3aa0a56fab46eb5cb436f4ba94f046e5d57a2d1897680631128c42dca353861a7aceb79267a48b429539f51475414c66bc66a1e8155435df18ccc2993d5e93642354921e9b2205a6270e34b4622c9c69915ba80c9ff994263a11c46a95b8f5c43de1c5221b0745fd2ac0ad5696e5323935a688c906aa2050f89881d3d21605c9564997b66c6452e333cc33ca839db53c17192796e9213b0d7a2ed796e7b2842d9aac2398c3ad11abb5cd342eaa2c6468b70130a5b8b2aadfdf08a2c39732708842ec03d62f60c59b28b81f726f078a06df43faeac927d8c52d14664bde5200bb55cfb06478ffa9b62db67f07565a5673393a388ddca18b7d7978f338d93f37d24a38ef8786e3ed14109421e5884c18da611cb7b62d745323611ade1527fd841a4f3e7122bec4c81609be78b1e1aa274b06193a9291bfcd88ad0fcb90c69c2d4b4073f89a733729d3adc79ad93138b8116fc05b07d7ac6d1645e3a7ca15569b1fe923115133892279f2da7be3f96a3a4417d3b929fb4d842ac017368bb461dd4673da34583f71dd89963718a487db15dba89b26f57b5843804f4f77467936157a504bf106fffe93b82a5be0396161be988c415666b1a26823755274310b8c07d2db27b4e0a7f62747b37527b4b3c87c758603adc3b240a359639634480834de99a6efb12cee23625d563cf969adafba20feb785ba71a5278cbe18a112c673e3332575fe982c6fc853ba675a610357dd2275aa0c6ebf3b5a66a38d253b13b8a21170647c28a7397498d9473c463b7b4762939af5a8dac0066e9f14b8e7534c21342d4c7cf4b539d766a350d882b70c29bcde61f854aa75d427a84780220278716eb8ee1698fd5825cf206a0797552e2f18d3ad062d283719dd61d160681d685ac3004c0c9802d78ba41e8404436d8563de6174e911ebb16a4ffe945034932f335467b250bd95b1d80966aceba882f2858e2011f9be167e6e3c70b234da466a28f8140c9581a9755b5216882f0d43bb70751ffa702eebc7dbf12450cfa3b542777c35b96077cc1cc2c5fa7ab000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 9d12c628e857d6fd5a1932a879dcd28bff777cd6132e14fa17480771b09c7f325a9127f610aae2bacacf515132f848a943bd40e75b894d37b55018284ddc5899431636325a5e86a79222196fee72545b368cc998059b0d88587ccef6e6eb833d05e08123f9b18c13ce6d456f4995340e17a26a9c3eb97930dd207d5155fca9a160e5e8c3f8b7259637721391d9f0787a34af39b136f306400b4805befbbeac25eeb533678b6994fe71ff8691c85bb2cfaea77efbd0299415a4adbf6cff3f4e63cced78154525b5b3d21cc838a5c89f42a1f7c2e2847c8cdca0351c47c1a6fd3e0b20d2d24989b931e1bf6f9e3d015a1fd3deb195a959a44f87b168976b71ec5096a92c0708d96ce00930abd77f4dd101c64106671656f668a07934c89353ce8b27e76007c7d7aa159939210295ad05377625b6dff8744332b834382df6ea2254d523f415928831a46077488f925dea5bbbe4ce007852ea26353de810a78d79be4da1fa41546739b74ae5153d692b14693ede93e2e5248a9244a35a7b64acf95290d1547d6e4e1d63c653a0e52c83264d7349d209147c97c9971957336f036c7195aab3e80afb7189542c45194024e349ab7f62c9cb2983e238a8c76f4c5ad6dd07516d29fec6f38579abcabd1c04005c4106b22c45d27b7786575b15ba00be22d752d6dc7e689aeb21ba9980c63476e742b1f780e6f9e220ab09a5952126ab01a59277a52ba8159d3f25dac39df888ba0e920cea9cf8d40525f79f74766f62bfa2478afaee5240f30a106fde661789d15780bdfe17e15cc033e179735f1de3aa82089dbfcc9df71253bcbc99cec3c5cf163abdba2b8a37e8321666ebf0639e9b240a3fd1cdffd249b8e0f04228ba21b777b8cc76c1942656ae9ff36410564a9d776b82f1e61728e71fd88c1077fa74d08bc2d5cf59b82163e122bceb5b05f6bc493ee02b111af667fa67bd0f7464d8738d6e1b47b282e83f3d83b1ed5c32e1534407c6976e280fafca2dc950597dea6efc162139cfd2bdb5379ddaf6c2d2ce876801bf5dc8ace9bb766be0452105861e99534f84512ecb98ddaa2bd2938e371385deb1623a13900eb624f734cad7047790251bffe4af673e7caa5595138b8dcf15bbea0acfb745cf84e98053ed593fc1103e80fc4ccbdea7cd3049c43dc46a21d68bf194a101767570d6ecf7ce087dd34a526673b6b959a9dd83e809ffe8984d5d86fa9c23c0a47ef11359283ebae3a1c5e6cd9f61a73a2a875d0d8fa1a801d31826ffbe79179c9b32f1ecae0097350b44918242aadc9ecab9bbd1e889a113d9cf1454163317684e0a99318d66f6435e373eec3ad87789afb0f7dae49d2b03610b5db9788e2b3e0c96474baee4bfc166d3f5580c7654ed4b19c325503898b38eb24aa30e4496eceea05954780dd389939b87a4eaefaf86ce855d1d1708660add4c70d30f7d14262aec22a294987b2b850390b799c67ed354bedbb86bb8c1a69e38313d4d52ed2619b3c482f2e16153263b3e6b7863d8cff75fbe549ec30da553 +expected_shared_secret = 5e36034b55f986e8e39485c2de5de7f5bc816322c6f36ce00b8ef8d7513edecc + +comment = Rho leads to non invertable matrix +entropy = 86630b4f72820d19e9941784183b3a0d770609becd6fe0dc463cb6edac432d59 +public_key = c30b1c077bcd1dd852cdb9736289bb441013f7132a86664c31990bf601cffb845d39a9a95f4b44e285c537cca542335e77b8ca7ac4037c56822d524f74b76f2a113693a63400334967f9a29008ad53f01921499e54e8c315b47788aacdaae2269957010f4652c48a19cea9b2a32406b4ab4128e150beb10e0811b2aed3c95c89639a0ba3ecb689a911acc463708b733d3b724c63b100f62c1863c2771cf7c6aa215e5848687546446c75a1b3d56d8f07b3a8f8bf79dcc360010fc833056d04a80132816a63122c591cae5a4c26ec119a7cccf7f74db33c8a83c379f8f3cc75e85a8016529157aeaeab503e7b9734c8801c309ac580b792433f46451c8bcc0fab6a9ce7b0a2110a933d62cc55f953a036b3bcd3a9078c01b16bb6f78c9f14aac2949617bd6c0a99f003ed2bca0a3690ad444d314a1c44f1638db6c31a3884823a92a28aa3eb498452895733d97aba3c3c7d26139843adea69b3730451fe75aa74f6a1dc87988012318cb172b37843bf1385bb400018416344a4c61ed9436e142d9a512d63693c46f47e2581a97349bbe6f463e5ec806f2bbe56025932eaae009591ec6260c83202b4574f6274414e998d2999371d39855d7b52544558a0da3456191950f96f0995313bd06ac4371207f606781870244b3994ac91a0030b9b26072e121322c7b3a7723527340606c9657007b70700739b278da9a14759024537aabff70bbad9bc513e5809677bb170d8886b2176b9999fcfd5c5e260475d315445d9a6a53b8c7e5919fbb6209d2112074243c16c783fdc571dc842eae4379378827721030cf601b92a5f06aa877b8070e0b3a44762786645cca13c8e5c84a5010290459a3637d7c240cb8b1cf0c58a649c1b33cbd0c62636707d321cc93960a42807a8a4fa9f7c889a4c6ba672b14206926849257bead619167c8cc7c466186821bbb8c67618c6c0d9064e71519902280534623bac0af20259304a46b0352f0b62707d7645b1ba5817e41079893b1ac00fb14480bce6bc19b337a05cc79e96ca15dc7686b33e2e85146224b96266c8164b4f17ba6c3070960ce26630fc454cb25b51e935c507afed34b029838822a0a77a24bf45e9b9047627dfec040e648738e05a62fbc972e4c1b4218300221ce3dbb3db904e82bab6f207743422b453f728084501ae7b96c26534913568edb18446c409613b3ee4f52af5b466c9ea7af349bdc5eccfe9a510f6fc24226687a9e19f6a925b8653209fe4a932588cd52bc41e48404e369394385d87a5b28b80b971836e3c8929547a6e002d5f26dc4417f0850c44ca3905708aa40556b426b6700d4e9126b8ac7081d291fd7569f0b08f789b8556864483ab668fb781db2837e73c20891928e1eb3d29f7a9a294641696a1fac1c4bd526e1fc73c78c01ceacc4a5b707262307f8aa28f61642d71d4aefd205a5bd414150188fd679636ba5fdb21740fe3738c5bca69ba72d1f0871244b0fd430605253499d351fc102280987956e287bfe40daa05a6d6179ddc75aebe5076f18a676ee71658283752ba79a2457fbb107c1f7b7540513df0119b40fa2342b64b2aeaa21c94905a5c68f222c84ea63e9c0b0afc55bc605a46a8179edcf8882ac203302879a33b000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = bb7e0dca6eca3ef57e945d921c2f80875556f7786d6bcca1312f86b3bea6d0f0a73f7d6036a7c38c62d4e356961ec6a28d8026a2d915d9721ef815147fc09ca65a3394aa5dc14c08d41cbe932337b9a531ddf68df20b6aea297194ac398f15919830e3ee6c20145c0aae7a2cd276ccad7b5c414212f0c0ae7106333868938a6a00da19377d996c7796d400606007dff30fe554a5fef86944d43ba047a00da5c2c2a1aad053aeafcc75a1e826a417b4c320e60a68e63dd7b54827f5b8b0063a00043f29ce8975d95bd418eb2ed29db0d9263c67fdcc153ba9b5a33279becb7ab193c2f257bd660fd7012712be3fdc2e52490ade145e8e030ba1ee5368791e6f3efe00deb34cb454cbf7fdae3a507261d9fce66ab58998ca19380187e3455d425977a8396cee3442935e24347aed45fba9b323a289f1b98691e35017ecfd7a423cd8d0149432a2063e0786c2f912e1134ebed188511c905a1a9890cd55d496e8441ccf637b4d660d93c7a46c3e17219167c3b4740878ae35766470b5eff3c6b1fc8c30e5c9645a94ebd48d2d40fbd4baf9d822deb26c089da84043340a564e6c311bca18c7a2c868831fbb866d89652556b53297b9c0040e98a692fa536af4c9a7aa09321ca27068ca66c665b1121ee4529cb3e6d899964de759ab915b0d2c571c5aa76cd64df4a4e55d9de59eca7b4379b30f8559db41e804a18b8771f594b9bee3de9ae98a003430aac58c141e6f0b7b1e5e08e27d1127b682882be055ba31e280dbace7878ae60426626ea4c5bc034a9206e27f578edd17fa6c33180b649bc7bd437b2c86ef4e0f4583071f99090b95db1e415d21ddd88a910b1fd10e3a04e391d947558a6619683ae070be04cab88300614839503f088e2f04cc4a7d091af9833a4f957cfdc574b1c994673ea14dce6ad89adebf5130d266c1440b3f544eea380ba245e21651f1f2aeb2b3d578000a87683dec69ccac18b0702d3d030077981076766e7e5f3ae1174eaf21bf03662c6bda5fd209da19ff6792c0bbc5d210851061dcdd2e4794d2c3c0c531e92a2c4a23556878d3e890b65289a6a02530bbd40ed66db3bb220aeb71fcc3c0b5d5b3afc71377746b22ce636dba028bc052c219783d468fac1d4eed555c1b4676705c8d27aa8a09c6fd8640a6f7b6790ff173ac39b5f3c709281df4274cccdc1e3b690ac0a77f7ece34cdf3216d2b6058baf5f649ff5036360dff99334ff06a366785c0404c584f623801190082fe5cdf88f9cf41032681e8fd6b84d127add01d4b2286af648b83fe69aa8d109c9320bd40621cf75adff8603e3da00be36f03ed7925f19b2e913d756e952a9402cd4fbffc0428cd7eebdd7fc7d3b4cde181b16b26811cd53d9f5d85d37c1670b957d4b3d04fd06567ac68d3f9dbdd45d182619180cf9292e86f42bcc213e94900e0c759e051bc0e30ffbdb91a2493913dc8b81ba4c3e8ba0e7277dc38dc91eb2b27823dac71b6f1c47e2a04136e2c0474fe070e2e4bf8e6fc98e73143ead3c5f778ce8a4efde4 +expected_shared_secret = 5b357f714a293b6724c0dc2e2c5509676782a9dddb050d88e6efa0a6d09d20b7 + +comment = Rho leads to a matrix with unusally large entries +entropy = adf510dc0e997af14f96e4863f316475be59850bc861ca0d1b057d6b94c3b5d6 +public_key = d7dab73b47cd1ca43c7e036d41c94f8f31a0de404fa38a1da0992933d752acc0407234883488a581e340bf5a8dd7112099259ebfdb0cb094c8d592485f25729e1844870a3d57d63fe9c1295fc2c4a374508f359a7e9b062348c6c807322f1a2dc887a20ff1b8e951b103698492504dd86babc01339f5b0c9bdb01b65514c8df3a61abb7941da84b8005648fa0e5b094e54e56a56e8c840371349820dc3f48ef0fa488f180f57b5c0ad663512467836d6765f6517ebd0172d886430357baec25c709b3abb9c01dda27e2ac7c17cac7511726a39050fe92399e14780e3288ae775612b2c4baaa032af561d0356c43175c6263c5d9cbc62f57194c9f76fb5293e86d9a95a641325013dee98067d513525eb5d2f7cb5783915d0917faee635bcdab95a61592fdb1de202c439dba37a235e3888134249044519732701111385b9c91c2fc96b039d6483c6d1bba2223cb0f612c3f7c6dc62bf64a04b349a0fab73290acbb15ce1cfaa15c68d896493e67dd9a518782b35fe141a4d70bf33e97a616c51193b711b04a40c9634bb62726f748572155667146d311016880c670067c653e9a8dc0bc32865adbf41ba99f19b2dd9ac7998bfc8679c689a05a5038042885742a68ef84c429984588995a6cee077c3a099caa7a5d3761cb4411d1dab8fe7258c75903ef515b6b0629ff659436ff687e6625d2080671e0cbe0cb624bf8b367e780452ea3713804e083aa6e0c7adc15618cf223b3587a364320d56c58be8f037f89cae0be209ded78cbae29ed73767ede6793f0051cd5692f63661a257ccd9d859a92ac08784070bfa7ede4577e7ab1ff6c7b159089b8dbcc5ba56357b2659a7a04c8748a86991b2b775c2015a4c12341ebb419e1244396c233c161495366104b8e29979e571c9614fe10c868db56cd934c5b2d04986a70be8dc25d61cb6f0054d5e4000ef72557b712658d962b1e673a07222d59bcbc4e8339bb5b37cc1c2bbd38780f8233843ad420782b4951c3321888fc3b488897c8bab046f79cc456bba9f666ba261284a1285bf1a9a9d274d9b87788c225c0ffa20388183f35817e5825d450a1eee881f94a5a129e688ce6664021356580190a3ec5ed220b8a5878068ec5cd485816f8c1ee05c3c23ec0d0aab7f73aac249142d8992678b38410d41be710a285d3b593a8245e514a870c3c348fa45f99aacc464b399ecc0cb3c306c273e5f4c671b806864120a88c07caa53a550d52c5641203a7927b40631e21344a9337da2d128dbbb5f97b68b8e57cfbb1a67ca7741c60c2533e49ece409b0492a2e81523e6b6ad655a6dd1870b5de3690de3369c898b557886c4877ad1d67a1583bc70502b32a44afb9b60f88838eae005e2703ca26355ddc479bdf1a93756af16b7789a3221fed9a4e468b710035060752e884c56034b768d0a7106a4bebde7622bb46b6649195301192c498bb555c653c42f6d84883be82e8fa56ea303caac534014b6bbf38a9f73283e5a40b36e36c9d8b1a9856aa7d9913b22c40cb103b74853c53c3ab4ce895388aca8584449fae927b16534f48b3aaf350030a8460c8572bcc527f1f62bf1c5a9bb8ccf3ee66f66dc19286782911a6765c72db77ac0e976a2bc114a1b11000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 1a2dd390e05984bfc0f55ef96da5050fd9bb03891d4d2ddea46c463aab28fdfaf63d4b2e0c9af992e4f1421efc26ae86c2b296f6851bbe2e898b8bdf4057e875d4a98469b7d2646edb86a5eb5259341e0d14986a8ccf93563bc6ac067f8ff6997c2e7bbd897f02e844f180769fec5af9d6fa017022cb0af622b6e4f7a69d73ab01d3d09067b118d51805e1b6413b7a9e0ef292a6fca18a8828912a2db675f0244cd63d9340aa3ca00dc5d70c915b0061664b1e1d64d3d4dced3ef739302f1063442569efed0dfbe8c019c27823a3aabd865a47600ff9e24f748302bfca1bb60faf4105889a548be9ecaf266d8f02d3aa4997202477a70ee71b6e79dd1609acb4dabab72a38448758d8debf55369c5d3e0870ca193018e0ae6d0ffa33b93e962598b43e89d5978a9d55a608b98ceae5e897363f8a9e253acf8af560c57e07c4c4bde807620b6deb76d581bf92b7f514509446f5c4e4d09430b1855e62854988302c931b9e624644a636ab8acaec56d7673b26852c692e8325fa1b6215f24ebfb388ad1022fedc0bef272c87e10dca97df1e63f1a0e9582daae0f49e30c6acd119f7c4eef59d47443f491df846431cfbd23900341086a304589f52de1d862c26af32095e922b92650c68facfc13892430d428f626fba00cf9501e1e4646e55f5304c806b5acafe100084d7635702139725561522632e7e3871effe883298a7264a411484cdef78f9e721c0e5f3937f2fb7d40bb91620e473f9b97adddea69b3ac682e8aea2513b985fbae268176c1bff90e401a31e729fe8b76d13b5c8c85ed833d9b076b5e11acecbf0e96edcf8ff562255124edbeb5b9117cf486f30d7883aa353b9e433a77ac6912cc8e5093c12385ad926be1d0893afc7e64fb9ec55d3285e01a3ca63f3c07b95399bb4411c3f820f53d8350d1979ee9cc6bbf2d7c92d0cb2fd0a1de910d92589cf1aac29992489bc179676c31ae768869398fda50ff14860a1b4dd3bb2e4ba8b2c87aef7ee00d375956a62dc1e5d548a59f209448e62c4b1221631d4776dd5192154d637217d31feea1c4cb3ef1903b8987f4c184cf3d6b5355ad53c7bd3e0ae5373d9971115698214a93e12b98489cdd75028cf22c1da41096daca95854b35d8bbf7d0d4ca2727aa511eeb6cec5352ed487bd3b00b261cbabcfa9f082ba7300610c6f92725d532a86e00b2ed1929a8be7a342c079835a2285569dca92a808049f170fba39d990884ef39ca511aaf9a713b8d78973b4f4a2fde7ca8b6adbdc5a70241fe3ea7d005b33e48cc9fe6ce5bc2bae0746827e548332adf83f8aa707e703fd688c494136d8dfa50961a9e5b69b542ed6ae0e70ae159df95dd9d4789e284a675fe048585214047f7f6819f7f011141d265de9fd4c04f4ed5dead63fa4c8938b2f42108d263d5394d164b3254294402cbeb48663cf1ab2c296d6ada107e8aa5b505da49af96e1cebc6b302faa148216d38b9e8130cc654974ce299172cb875742e62c32c063ffe7535db2726f65fc8f600d4dbb1a20f +expected_shared_secret = 54c35602dafe572b99aedb7069a59c4f7818c860b27a947347657ac1954d6454 + +comment = Rho leads to a matrix with unusally large entries +entropy = 3983da6a4615805f6d55c14ba582d59a40e646c7ae77f4835a51afc6c37f11f3 +public_key = 47340db6d04313d3a689b357566b9743cace5d5b906a39249f1c2bcdf335f37aac2565932631ac318bbb7ca75db36ac198ac6b15a02173049721d10f7521a52f358f35f3719269a695a4b0fa03b32d8a209aa12a5d786d8dea4ba05498ba222eadd647dd5a397e655ed309883d76326231a6764a7ba4226567022d70fa20cc53a045cc5a1fc54abe0189a4a2b6bf8a969d61706944bc59c6add2992b6e562e9732973d32b97956203dbc523803ca0a462ae118633483cab85c645ee3ad51682c0596378dea5e93bc7ab652648cf1954745172a75c2bf6a3177a7841b089b6ee911149871a9d987c6d499b6e0c4d15c9b74685401b680d3e112d6d70bdad6a3f9954b0057335ca36823328ac4e124d55b9932d548f58b85a32844e9f0260d8a4339285ab46152bbc05a967c5f16072f16178687b0bc06b621f5a4a14ef86b9cf1bade0185c5c52b3f2c407479467e5516ab9a1128260317605d4db250e8f4b59bf28a6ac2606d280af28664b75092fdea1fe9374976722dff579728e121fc1944891c586625a880a7bd154aace3e919b841b1f5f8c0fb841d1eac1fb18002ece216d42cb401dc1681836c1198653456c9392944054200a3b95b986a396d443a306b66018b525fbbb042e662ec108f6b872749d3287440c12bd07d1061a524a01ad7342d74f8a4b76222c5a439eef4235d51c9494602f6624dee256ea7fc09ceba9877f9332bf195c43502ee43c75e78720c306c2fa47f4ef6b7d69038dbcb8272b334c98cb665b306c04252fad3559eda4b96c14bf50b78d4a9a37081a2d61cad33b3b9418bba25409fbf4a5bb3c775a43b39520b37b5b82191b4983398858bbb0c6c8031b9736a5f76cab0e647443cb6d983a5e0a6c27756cbf471baa17870015566db8c8a51aba969e976a1c6cb2be166f20680893950ddf09cf8e3827a2a884a7a65d61c7c70a522d17ac0939625fe63958741255b012712e76fa8da809a8cb447d730d4097bd3e86471019dc8897bfc82c3804a76a38919f7cb50ce79bc13ec4bdda215bda9789503aa822c71ad8107a35818a7cb055b303338e465933565b94950c11836e8e33ae8093b0aa0c5d5d555cbec5eb4190eecaa1525014e8a341e9400180937afeb126c278a5bc4713fe9c417c50c1e47c8756fbb6a6b265bdffb4c1456c5b7d7a895b6932dd9a55623341354549283ccfb36abb3068b2db7348bdb1172318357bac12422ab93a32b453bcc0faa4e8e595b05a145e614aded6bb77278bd78907b828b18a22aabea48bdd69cab061522a618cf39406f6c78cb983354384415d8b857cb451e01b24f489a3133070d775307fb61a0f6d56d1255c4d4e18c62e57d8422080cebc919b81e67c4304cdb560ab16d929413af650a53f870e8017e90096452ca3ea648ca644010d34bb79c5898b775b197189a55840f43371dd9cccb7b4a28a66309a515658f06acdddc47042acee250a37632b42af51adf1c0666902fe0acbfc8f59127753a40161de4ca07a5c8bec0d8ad3141487da4a842147b9de945e4962699033375548d680b88ae8354d6114efe284517778eb9b7957eecaf5b4165424a5f82f100d02b7d39968b98f69c2cea1a0b39394f49265b492ea8f4000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = bc07d2caff561b4645e3878d1de0730a88c05f46348526829a396f05a0a00603f0e2fc79e13beaacbe903827c20d9d687f3fb4eb2a8e9335459fb21380b8bf3734518778d8cfae9524ead1427c6a2dc379ddd2e985e2977bb63e932ed59c83a8b9a593e2adba0cc5f106620fc8c6c4cba5106bfdb4105def0c1d7b6800327cacb964e1d4ebbddfaa15b279115a1d05754c0c8a715fc2fe5aa09af7b96d5a93e758458aa5af8cba03b942f4d3c0fbbc2a45d3f7af5818d67219a72f4f538883ee2d3e507e2dbf4f7748446443bb71bfbb4eff0f57d8154d29f5cb26cfb52c51b676e9b1ac08786d5f475cbbfb49697a748b7902a83da49d285a48c7e9cae74b66a30b02a353a287b40a66a0663e7a71adab7d03272f2ec32d47097d4c303396db3e7b7a947f467a70646777cda227d72310806107b5dc16cfb36918e88784524e3a46c30242a40811593aa8f72c742f885a9623534753b2bac5e29110a1a854646abe1c0337251e85987aa612f3a095409a5a632af14acd19491577223c278b18a9c3ffa7f72ae49b89df6dc45ebb2803ece96cfa94ef9ef5b24fbe686ff90d130d3ae953a4f9ee6581a346b0612f84cb6ccad4fe94a53602817d67c61a9604d288319f5933f4a97dcc6ffc36cf14db593fe27f873be712186a6695d949d4552dab37e36e2e0ced229ea9dccd6d3bae22f9fb888ef400b594ec08a15972e8d2478e50f11947b52bf384c731b0e50dcd4ba116abab8af3b880c54badb11d83b4266d3e5fc25c2c8dbbba12fee2fa5c2017987f31277a67ac702b8dbe110894a8c81011c7c662ce9ab96a2e25cf5056a3e202dbf6bd5bef2347537f7811637e932d13ce02283d48d032c284b6cfb84fd813b6c3421017a7527eafcd3fbc5d4324b5351b30abcf1b366f424a8a0b5edf6bc1f3e8702b03eff875687c6caebd7bc15f1118696cc63859e3aab75aa9acc58484da7f2bc9a120844e4830429c0eee2b2324890bde302bc93f661edd9c04e1183528482f9950654e8c267234245aa9482d94e90e00e929b65431f986e7bb34524cc41f4b4443646713c7abe6c4131a2d67f3bf42f0a7f2eddf82b5c08a94d99a0a7d14c1b0b375fc158b7d4276eab22efb438f0d0a9b30e9dc127026181e42643af8da0b24bd10a532069392724948ad722b25477b481006fc1fd030aa62b217e6695dd4c7ad34dbfb75aff1df5774b061a4ea8526e9bcdf9679405c0d2e40dca00c9e80840e832fd663596dc55f602d094253893405a02d4414f119d23c4544cf832888db5ae8494dd2e8ee357753515d929b8a37b5b45446ffac20fb204b5c937f6344c453ffa449fe839b4afe1da61301057338fe29df93aa962a7374a2ec181ffff9252c8af5c3f75ebee02fba58a76066df4c6acfd5d1c18390652eb2f469d35dd708e63a498c08c5241b2717333904ba0e6e0845dca8c9608f28bd1046805cf7b220498145b23cb18184a259458dd2fbaeb1c383005a0d289562b0a9daf7d1e320aa302fd3d9a02c65fa901d46d4 +expected_shared_secret = 7e1b4195e9cb70e6884d3d00f0b3f0a66b4d8c00ce112e1e79a1dd236ab62b26 + +comment = Rho leads to a matrix with unusally large entries +entropy = 2676b8426b9d6a30af007094bb76d65d388c2b3da938215dd6f6987206400e13 +public_key = ddabceea01649d9c6588d68c05e93cb6959fbe348468cb6e7f482d2b0507a097625325a7ff5740086bc203410414845a177c578698b313842dd2737d79806fdc8aa4ad8b91b514b6aab60885a49be68ba60d05891dd1cb47c1850b0105ec15a95c93136f22a170e346d2256a0cea672941335423cde35492967759b4317981c34fb0d759a2b08aeb411c362b2630c4b8ef342cf844206d7a5a3934bdfda95ba9fac912fb1844a0bb62041868ba0e3660a5551951b39880eac2959b5028eaa765492416ecf7a05102450eb20eb2a28be460972066b41ac87abcc28b38a7c92d91779e0c7cc8b42f107b48269521edf0c558a1b767536d295c3a7e60b9de6a8f299563be7c4d33d33940234af8c7764b181fb7b5af1dc88e4e830725533656520af7344e4ab40f6df34a90a898c672b854021d0631c1b1e9999d8176b22a5ce829a240642e19472e635a83c5086f87872f72a62e5fa038481a6861141227666f9203675db45a444c6310518d86a9221c9b6bedd753bb7914f7995e39031963ea056536a96c9b14598c95652091dba9210168467d7388b73770aa905052645eaa877c6f8a45acbb775d080521479314e214a5217835667dc2cc67dac17b0103b1049a03585b30631c6dac53b6d4056e5877786b295fe94c8804b57a027609bee938a8812666d12345e04c92469463443fad1c2188c951cfc6a06c3b8c3ad8856ef26a67b7841428a1f5b69a3fb82cad843a55645b78219d6de824701b0b1f192d4f816f45032b1cd5b465d33b3a9cb2fb04cb271a3cc74a8bf7ab6ac7a00e8ce6a0486c660680219c6ace0917b31595584f4756c9c5273ee36c37d25d5da146e57613edd34795b9cf61bbb7ebc441d575631215a87c4070159136348854c297cf3ca44fb2814448e30eb2c555aa2393bee966ceec0221a278f048aaa6d09b1d801aa0fb369ae4480f051329390af222712c61a59f98a31a03ba90c1a6c34c1c98c0be7bf59fd717ad9894786acb1cd081405c66a2e79a1fd77cad853761461c99218aca3cf4920703654fb9529c106f41a78b259294709bbc91679d0442bb383c28d64683ebdc7b94f4592c8ba2c1126c9dba9377040d3a124176fa33a3905cbb96764bc89a69480b74e38f558b422ef22e390bbc76e048c01129c97c26125bb2f86c4bcd274816265d8c41167223b0a22406d2a193ad3b1083b0cb75f9542e55b9aac02845f59618b5aa580b5b2bb44c192a906ce61b8c368278618d8ca8409fc02bb9b097acb208e3c2a9b651a316b70cafe6b9bdb32ad794b4f018b66ce55639e5558f5a3990475794bcaa06f17093d490fa583e6fd9596b40958359a30f813b940b1e1e4223d3857cfea691eeca944de845c2fb502e35a5f1a3750454593fe1c41662a3b3da407aa269c43167acc98f5f3c662d6177d3594d0cb800087c6a525c586d86c12e941b046625d90c8ec6dc8a5c546abb19a0b585aef39379db926691124265103bbb49cfc4e9100c803b4ef68a904273a6c899e48609bca003bcea9cf82203d52b5f9b65c409ba9503b3b16c7077465aae45d2cd4ada79ca43a9e99a124b7c9fa24a323f6c6bc18b81d9a6161191561f3776740b539479582a46bd913ad73e09000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 79efa2d537baa2b87a787317162d3dbcb40cb3c25f540ddb91aea6cea9870bbc5a5f86f8900b913fd4154bcfc7c8a463b9b66118c502ddad539186fcb079664f44a5363cc8d80d6a4c09f28cf8952157526cfef7bad2fc2cb69ff03ac39e37d47faab64cf54f63919303badeaab9e59df7040511ae335c5230e46e00a666b994d647d11cb032e7ee235b5e18b1894621ae93ee129823334580381b857cf0360196cb75180410f9fe7558d0e189502a5dbac5b4f0597cb3d1d201f89de26f7b4ec0d200a418a26cfb82cd4496c3ee22f6eb60f3ad2e1af981c238da13063d1746d65f77ce0ef30894468b687b31443c7acacfc3b3878fc9ec56878e7bd1a9f72ecb1706a4e5face0a83282cbc2bd15c89afbe3c97dfaf395a96ffbe1a3f75af03311afc69dbc01b11ffed2aeb8906505e910105806febc6e1298fbb5c0bf501232b888b7e8b285953d250b866a20cfdc7833a732966b3a03485ae2852d0a3fbeec6dfd0ec8015db5de69e55f091e956ab4392834c5128417105541b1145b27175fe35efbf3102277b35e42bd83aac25e25da6c55c28a03b9e2a8135871b4cc49fbfd5598c9eaa2482f249c0b6332a6999306be55921a3016499bc63a072a6e9eac894a3ec209177d07208d0d271c47f8065d0facd2e975011944f7884088768fdc053cf86f31f6d348222c06467fcf8ce0d404a2558e8cc422521a4e249549037d3e8a29e03a9a9bb511d9ffef4c5185a380d874732c9e862a6e8fa3fb72b213dab2ad0d91b047440b1d334660067566e6d2e14765d8fd0a45b9b8e8566419a6d7138e5a106c31b1278d50027d152bc8658d7045cb2297bb8382585b38be2d5fafaa7e8c867c74be013793874f181a9798193dee26fd5812eb469d1b842a969cda65d3440c67b00e6d1c3ae8630165499c1b4cf3153fb5731916ab779a2562ec62637d747d61342d832aed330e5cd794de900fa507d4b5fbdbc5f3ec1aa69d0319b3644d46d9502d435c1b5a329c0d3524611a145e3024595e91c2afd577a422d59d4d54a430f439534003be467b6f018736c4bebceaf7c83c799c2b7745ce7498dc84b9e455b96410dba1a0a5720fe703b7c0d859a42445eee7ca3353f294438a7d463fc3e98f4403f93b5fc4add88cc22db7bba150a2988639ba96cba8e2a0c980c9bf8cebdb5beb262d79e86cceb774750cd9a192ae93d85e60722ec6590beb7df8e4d036837c97dc05c7964dab00034683a576da5b51aa8a0622edc27975978c7daf1b942285572b09c170dd332a99bbf703d84becc6a96373fd1c0b355f063e4c2c6e59f5437802676000a819b9b99418df893b98a8e6ca22d95da2c151fb24a3a0e5944ac4ca6376e6c281b275589a3907c0473282967a121f1792d09a15e9d71e71e73f9f627ef0dd478061cf053af434b0663624c3bbafe0f37d7a32504e9c686f41bf48e287aaa8fadb73fece907f26a9576611ab2176a58e5c1f3e98ec0248a15774434c2a81c7a8f57f9950b83c0d3770d17c4e57582387d6f19bd +expected_shared_secret = 2522e72d308dc9d7d701e0b024af9e15627572f13573b27c406fa750df9636fd + +comment = Rho leads to a matrix with unusally large entries +entropy = 319c51bcb76124b92f39820a5653c0ecfba79ec91d632b0488f4020e5df4e37a +public_key = e2c1184862562b91806efa62f1b72a8ec43e70663de1f66a59687ae0cc1d9de1ce69244fccb0841b4b1de2e964e29408094a1ac0a9b4daa836e94454ebb942c6e9ac66f39abae73f61a99834292ada3c824bb53c8e67912a07377da92e63087f8d947f59d94a842b7aa8832b2c3c1aa957577f55027e76c106f86946f036804671b0e0416cf62e70eb8194d88030e2b38585181c4ab1fd8165a821bd68dc8fb3b403016ba5fd129bb9d23182029c4a292433087632816c009a237a608e65cbae17d688a326bd6c1ab4634576fdab2322b983f29c3e63b31303cc386bc90641c84965572c49a91f4e8258764834f38ca7f869cddbb10674d4296e5205ad805ac48462d3b31a9e6067fc0a27470aa593b896c3c319357b9bdf0632bf0786fadb0ac242609462a06f82460ea75762a678fcb07c350649d13c24c9e33200c9ca0e9bb87dd2c8578c7c4e27b1b75681a0b6aec6a55e767c4e14820f2ea609a16b862d5695556b0937f53e0ae370086c8f771295b1a09f0003a07bf512c4272f7241752a6603f8f51ea9a088e5263a59eb0b13b87a1d2929c2c29557681f180261f46c294de4aeaf380ca5f79efa2c64ed3131272ba489494ddbea14c69c46fd6346a7ec9f72d89559435e139a67bc3240bca29b3774127dd85d53c20bef719724612c462bc598c54738c87a00a9cb8c4b44e4e7ad4573afd9324fcab820cbf2091fd83fea52adc1b82b3f6c86369aa358498197631a20d40c790c2ddc66b0871c1ef882305bd978055bb934467d3ffc0359c2b31748cb19f615a63262fdf695f555be1ac432126b08e4a97acc18b8606ab6adc5cbe4589389e1121d737ba2b3a84d02bfbaa669f3a06b1be13fafd42a1773c830749cad35456e956c0ee64a5fcc46f1763c3b0c0d3de5c296a28f61194ae72979add8c7ce710d4ee846af81cba3e18d5e459addea9fb565b010e9ceed5798155227dcab155984635d7539d68c9f0d30537ce8b573b6bef1170540d0c10528737d6a5b219b2d96e5709a721b40536ee3c416fcec0bdba013b0fc0e786c9765d312692a80a5c9a3d65a6662788d194722d63b4bdcaa700e4c3daeb911e4d45674c3720be35269a21c0717a4c3aa2f3e1ab4f20a885cac44228138ebb70bb4548dedf8678d2163c339c1a9c719c2f1a51748571358c1451b0ced7b90109c98591126fbe57e1c913b5a935eff14450a22c4a108108b99b6efcc9bfd8438b5024677144885f1886ba068a6191ae17b9ffac1087bc94badf510095baa7167a7fe245a89a2a627d2631706a15d5aa081d037a4101b217c1c45fa0d83dc790447121cd9a533592cf8ac424de8770b45307f0aab484467c4acaa82a5669f7621e8ca42ec0b9222766b52775173b288ff5b01d70a60a853aa44917b8cd09a4b666138e91a3206c97877c96d690957b58553018f55f168c1c51bd9a48ae762a65dc73f366c79e77c42e793750924bcc1472cd5e552e20868a42047593842619c2e0fd40a3c7bba9557bb5c71185430a0158b9b95d04fefa266005141ffb4ba5160a5eee1499c09b11c549bc88cc501dc94a0a5828ee8a776a2a4aba3bafd410cc8354216cc3a93a457e9847af39b898b04b60a0c661a72a2df2b000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = b0e578cabf9deab616e52934955f42eec74bde5ea98acb022c427e08232142dd08f9120eefe5f455c8f120e672cb68f3a146c3aa457b637d0901fe2b4cd45e8b208e06823b8aae09778cd00fff5bed5232d219a2c33645f2dc30593e591f697118a8472eadbce05c9fbbc5d4b717b880065173cc0854182555376dbbe39194e4204067358808c890e5fe96028921fca344e3500b615f2201a1c4e4d13dcc889cc9b1ac72429074c21a52f4c78ea2c467d65cd2c9ed682f21f31b27af4eb5cad33dd633185bf32e726fe6e57b03168803f693bd85f5a9f2c3ec6944e9ded2b8f3270a89139ce50ba6ded6bc6b0be8893f44aa5856acda60dc1c4c0834d45574ecb6183d6e59a183c0125ff45c718be2cf85b5ce6daae6e37336ea63856561f1bd4404df725d5ed9263038d1c623b2e1aeb35924b79de474407168834891af783fe5d83a631eb14d7cfa949d698ffa45e7d8c46ed4abf75cc666b78526c9b95ebb2920c77c56227eae6c893b57f9f463ff2ebc9acddb2f7ad543c5b2259047a4cc87ad05c08bbf02e8bb267bc490c4b67106fb598d42135c927fef3397f4c3f6838776787f23a9759dd3214075e79eb3929932becde84e82c257e4638a19e1e3312cfe09d4ac681d653d749c8fa6efa6dac35ad59399f1e233540fa354681ca55db90007039b7e504e2e4082aa3e4d672019741aa02a281454d4e1c73a1c7d0b5449c2e143ceaa3b18cb9a74a89f1ba74963dc5dd4155a356211277af3a267947700a2cfd84a605ab02d37bd6faa8a26b50f7b3d9bdc79913272c31dcc0f0183d05933a9f233504ddee2dd851529667ec5174a3d23bfca197538ebacda36bc29ca675384c0b3f45e4f67fb66d8dd4aa57b7da50ead391e6b663af173e7f4d46139f5d0f4cea84dd32e4e718967c6b93617271224f2fb3a1ca5febff5f26c4edc60e9acdd9e464ebb4571dced645814e1038a50515a7e06501adb2de19fec4119dec7548c41097964c3151226153ccac24abd1415579ba1c37c805a5827332d97ba90713829fb30b7b09b275d75bc10d4a26b33980a0ccd4b00844d9f379551bd0170ee895286526ea9625a72b6cb8decd9cf18e57262f8102a025025e8168465a65a7c7e4d5fc8742781acdc16171085d51dd5ec9f4f71f58cfaf4557a55d07e7c164ccf7eb427145c7f9a800e9bd9192ec0f74d19fc17d3881b1d55e8600aa55abf78fd1e226d9dd6e8da2bea15712f5f43325d4b9c083d6e37d35c043f2bc8c796ade072555263331bee7fffa54e2099135ea363575847abb770322376cbfd3f1b7980a1857c55fc82aa80bdcd701c7b7d66221f08492efb5438a04d041b485bcb61f6fd306e96cfe758d99ca1cee70b200eedee86145fe37ab7aafcfbb2df694361fe9923e754187c3277cc895c4a53732ee118c7b6156b55b30847a6e828b7069a5d4be623abff66ba87bff49294dd9b1f698ba445d610973d052a80691c9968e3179aa3eea5b0bccb3cf674c5cfe7d2c14d7b6daa7a4813abcd56ef930099 +expected_shared_secret = 1cffb3d6d9dd9cf90d79fb2c5c974818c5bd6f32ea4d44c302337c4cbea44334 + +comment = Rho leads to a matrix with unusally large entries +entropy = 00ff48b3769ffaf4e91c1c9110eb8ce9e2cb99f060b486b37035407d2f4ca517 +public_key = e8014b4f4687bb6670b1c2a29ba577100943d5b926cb396423663f710328a8b536403530eee05006e7a7cd679ea44c29146494f1775cddd3b43ce6a903283f7890979ee98842d5a76f93777297abffccc0b8faace8f362c081aa435c32a5c31773bc046e61921f1a5707579fe36067588a0f32e2cbf91aa3ca6b38a0e12ffdf8685874869028775fcb7d7fd7a1e37c611316515638a510a13e950960e6f39395e436821165e734837ed575ad510d4fba6c3ad67e039b71a9b6c2a7ac240ccb3742d65b4b1c50a6a1a496995da77921ce33624fc48135e88c59caa47b299605ac1c79009dabb2062e375547ec907590b9bec52c86a6b9e394ba5f02401e4545c462c5f320939075b516c4a5dd0aa5d879456449a115125369584a609a83df8685ed2ab45f038559dc6b0ea170b09680e7e747cc7246b6c182d9199941847d9c1168a84400da2a98215a9e96f6bc869035a8822b27d459cb52147d966e0c354b70ecbe46daa9034074019acdac30055d8a1a02741ed8e602e2cb3185ea44c9e61fab637188554c8b12cc5abb9073b35108f59f6832112ff23b00acb0936594c00c0534a8c4c11cae4787092bf497b60b4a44116156e8368c0c950f3677f6424690803ee92373ed5c13d84c355bf041edcc872965816d6723b344244d0a54f8ecb0f1703ac251293503baac445996a1c9bd6ab851eb52f042692a2b10e4b9b44dc9625973af03fba67a3a93ff849dbea64739f643bfb803ea8653c2b9ab9639614000994bf48a8024c4e61c8a07a5c79b19540084bc7664ad44122e46ca1fbd517c8e68aeb3d835e53846848742a9fc2a4058047969bc11a773e623462c7bac66a34c62db861ef64dedf23c0b7441f6b75b4e60b86fe309b1b7746d558987f6a92cb8513792360ef76cb6548f0813ae8dbac418c25a1d95b06c530d79c6751e7569a2027f8a5354de3a70752764fabc632f3a1bf2473e8aa2a5cf815b3856a89afc122d98ba3f74185a3b2c09049601e23ee226329f024ac2692adccb2018b22a592a450b4a5819b2a498738d29f7145e534e527c859f05ad96cb963314c58a5a6b050ac6ead9adc4782859e3383170cabe4871cfc17a30ea4ac55cb998e77e1a26662a255f99f4ac7b98723341b2c7134adcdcab12a473bfe001127bcb01f84df31384af06171776263085bed1aa3374da7136648608b569a88663d2122e84b4b946b35c1f24a836e924202b7c7828c15507b17f906bc0e4b28c230134d90655696edde11a32c7a70303aaae3363e2a6947b4bccefe9ce62953f92521029959096a8910e71c51b69a0615ac790341c0ac3a574a79d34c11b4a974ffd7cccb05995d4089f8186b545b80a166982cb53123ef644e82897c77889ef91bd8c5a4ed1a4a414389d77307d53487940fa32782061e8458e0c601c884321d121b48ec04bca78c60d39b0c4bc9291945ae18224ec73ab7a451b9cb511bae34a20e326a497cb6ce46b5848c289da630f497ea3975eda79489f18a405e91bde288379f291f538c1a1426cf1634bc033098bbc9958f7af6e408354314e7221c37c1610bf904cf9e7807ad327f0f316761939674867ec7223f06a245711b0d47832b1a699badc8e1217798c0d000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 3159aa52482f4262cee553f9eb6d853d091a507831f5ed1af37b9c55f217eb1e87e8b0dfb653932c27e9e9f2c4d45cf89e9cfe9ba0d5175be56b7fe3751a4255649cfabdf0cbd5a8704d58511acf6e0580eed572561fab262b24d39c3a430a4e54fca969394037df12fd8cd71b7b6ec3d8f7345b05d4c16c5871b686690cee9804012a3379bbcf720f405c3c83f59aa391cefd8b00a73b41147d42c8b7820b0e779c44e032209067349fa4cd35e83850ae37ee73f96fc6bc5b71ff9b0462604b4e07be60cc76903175b045b908c9b8e7e94c6bc7c48ffd49698873913f9132025e51614317d27a874e319d802923804d1ce1626420d5794bbbe5e077cbd7fa3d958fb2d9608a3d41f605908d21fc7f942e3152337115a28b661f76405620b056692bfcc066f370449628f8e31b7453e5b7b10702f7c195dfb779fb3253f86acbaf4444ba9ce01c9b043133a233030247f8fc44d5b8c9b024ee83c186a62ba9fa5a3e45389217884a478f238d6a9b8eaf3d87b7b4b4375d4d5226dfb80255faab42380365b5511567978be9726d21178eced7294463a348b1e976d800b1114fb8230115b28e51f628a31aa8cf2e3253a7dccaa37f975fa2b8d32a6b6147033cfcbde33ab8857e3a6af95e4cd0db62fc020f55c2d6c9204a05835e2cf878c66502f572016d95b30c45c2ef6048471ad0cb7fe14250dddcb4014c392c22fb1dce1adc8e02f416d3e9b417f41c1b4065b975de472d0e9fd5b3a012ee9bf6311345b4968f6f18262bfc2a38d56d911f9efb981813f77a8a8d6af0618e015b8b005e7ea957f89f140192c7442a645ea7012b5ea2ba9f8cd2fea2ad3e41c6a57582237d53444fceaa933d61eac36d03a2865bfb7f12fd8cf451edb5050a35a75c95dd328296dc32daf61622ce0cc457c5968414b634b3e12a0ce45bbd733e3982c087a037d89cc86d546007bd92eef33949d19dbd4daa18e59c7ea3572bf3155a9a46af527347f4f4dcc2be3cc285d65f2f86c681a137850431ce8d2f76e295e74bd0b3c88f1b68885522dadb99fe1c8e40d938c9610e466770d62c34e9393241907d9cd7bfa470cb8fc149306d9450a7a1887d03cddad3fcdeda1ea54d3f126bb29a1ac3d7c5a60ead90d74ccbf1a75b4289a74a49e0a7c4006ab76a83915ebd4a95a471525444dd2c3e748b1bd347774e2cf01f90f05a1672c58f4f563e4da083e95e0fadd4ba57acebcb45611a3923da1d0d73f5c9a55489fb0097e123694e413460252892a0c6317dcb56efa834f7a51db4a413976afcb30ab4dafbe737f43da11c1b08a2472cdff3995dd7d23382b866873624fedee76823d37ec230dee2107258993d5b802fadeb89c9469a33c66c91567ea92581e0c2c1eaa2e2a4696b024c7c6009687d07769438a8b2ba75a7bfb32841dab8acfb8cbd4d1e26c5eb68bc49bb394b178e6f89dde843f4e2c5353b04390c245a0bddd1aeaefb87528b719fe42b35ad2a89ef34826d9e23f95b1bd3c3b24f785985e10dcaf0eb33f5f71f5cbe55 +expected_shared_secret = fd9e333ac811ae8be12c052c65131e3a7a32ce82e39055012ea564e10acaa85e + +comment = Rho leads to a matrix with unusally large entries +entropy = 4960ccb1276f96d7aa55885b6ae6f90343d42e1391e8241b5952931a979837e1 +public_key = f6513e1ec8234bc145eba3446eec18b3826b2ae709792648e071a7c4627e4ac7716db5b1d6040ba7b8ac39b347ef721a99c879453846e1aa591b8495e19003df973580d4192cabb72ae2b1f498bae9b3cfffc8bbce09122cd1910a406574106810dc556894777f35316c992f3b902186dba411ca3462b927688c81f7269b7c2770de5aaf90c81f752a3ec77942729a68fcb38a62946c601c945249bf0e280b66764ba71a44134ba84df1400bebccc61456fdf3bf50aa85e8e60f491ac1c1317d831ba5db6601133883fda81115c67fe4691d9df01fd3732b336bbc3899cf067b9e3905294902ca5686480cc94eb4e98260408b4dd060cf4b5344380c89d564b31158ce098ce1e06b91446c4189c6a4d89aa7e81befa900b250a7060406e25725e09399963c5e3e04219d390e6c28983e335646485023312c4d5bcad9aa7ee683b935d71af1908703fa2c9d66c8b6c55049b3319d39c047b5824d04975a9034e8ca1a9e1a5b0bcb222c5b5c848818d14503c31270d4f8446d013d4ecbc250b72dc25934726b426afc85631ca1065ca6e957ba00f1176a6a45b68a5e93274423e642451129ce83b7de439963c0c4e5d8b25f3b74fc053151610b4263725fe51423e886bed19c534165b4cc90fbd67256839b9371290af9853c948251c768e157041ac91fe6649bd1b1855dc417624b8ca0d798b1947c720b3414db56f01500fba30207322ede05612bb6505818a9a68538c9eb98f2b0a83dd38b765891f0d01f1db768d2355fc6b7a47414527c92ba104637072a72a6c0ce74772664e68660c9c0c28347315b17273a6846a79904a04b90a60c5b15973630209d9460365529bb72524404b3d9cacc013b0a7355a7eb2172d317cd356a07e5a341bab7c33db5a48fca4b1600443df6bf441983cc05125f6aa94f114a8c3ccea3f9c498c1126c072f27e97555456114f6bb3244c4698c3f6091864274a16bd82aaf0711eb8c4fd86a11b35b3b8b0528cefc253d7906b6b05382e37428253ebda5b48b6a068354381b24348dec73c279010bd32e41431d139a021a398f0e5c7fc1a98863f069b9d42a96b029455670caa89e0b867781f73fb7549392124485cb032a008d63812f832cab899a8d5d24b403e76d17d6ccb56c729e15abb2e04e32928c9b8971be6a4c70b15bee620eef375489347df7c622d9a803a86c2a9ec5a7a0554ff763912bcb7f57eb8b8633cf6ef39556162eadf8c285b61a53f4837c8c9ef48c3a58b3b6c31b8227c98df0b9057d452df2c258da8a1de1b99449c0054c48a0bc61a2336323367077cee252d366661904b12ea6215b3ba55aab06f60a517704a4046312731325df563cbed805e2c7b2a5848fa1cb97e17a2f926664c2947a2fdb56ed1b3c5e084a680073669b2b9e888ee010410acba461910795958e7c0c98294865cc700315e86a5c54912dc2affc2469244912d8180eab244332a00b7536c4cab62345872dc31ca3c0d2078d07beda4431f278aeaf2482cde53afc56352a894dfe3948fc14956917a4dc836f54369eacd4af052b4aa6b60af5e86bc868be275abd1118a83e5acfdcd4c92a3c2e2b13cce7101a9d303339f0b2dd4a282499579b803ede0b26c75eb8af34000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 5ab063c95a541d1be3fa0744e0db7e0ece17b6b47cca0fa41d08e7969fe87de63f319f80b9a31ff01e203de6e518e62e6133edd108e5a3e08d3f8ae0556cfd36b399dc1ebf3b229bc5013d06d7550512280bad2b27657d3ca0679d9fc62f0bf875dd0b326008a89b4f29e97211ee7ec75108a9e4a320a34daed15fd7ad394a1747e4e35bbe4f1118703c330aea81bef3e3883fd41c3efc3423ab46b553c7587894ad64db57bb0fe4d289d54c8ba78d40683bdf6330ccecbacd3f7f41541f1f2b1a7626d3969df6586b4214c02f921451f6adc04f5e8de1e3beda82e4aebc5e06abb33f4cd8a3b3b5741617b6a385739133cf5b77dd5607a5c8721d5b51c6c0b6df551a5b440082093f49f31910a04e4226b9ae6f41383672e0694bc4075207034e39c40668aa3174cfc8a75fb1a474485e9aff01f3572a5c7e4914e7519344c8ce7b81377d8c2af66bebc558359601b21beb984c1f00564d46585b4bf02c958c6b348642be25119b12f34a6e5755588f649837ba53c0efaa4c6c95d109a4ce1f761c1dcecb84cce8376cb1c4e34ff932408ccd2d06f20c5397f6277bf9c3234b20cedd45afecb7e87793d85af15909546c6ee41987f36d85865c8c1e281e13d9575abb9a9f215c08d89420535f73643dc584707deb7d5275252e862393fb6493f9e126c651b7981f26af8daf978153fa4476d615183bf147629fe36de7cceaa670dab930ba8a684b0bee24b55961ea556123b34e29491704d2122e46bed0f6fd50601e13a5d46c907b915f3b8e695e0bbf474aab6e082d156e79e59572731b48338892f2268dcbb8fc21cfd537979278ceb210fe3efd052365fa249c97e8e596ae6225839e5b8b296770f3b42240b8727a0a730534d0f42f8c6ef148fc04e4285e1aecf060c3666fc17a1ff794f584b26b0b1c41f0fcca249935cd411a151932b09402016a99832850b3f56c4846145738f709f5e11e28a90d9137e4e43f03dd1ddb6565c67c2a138aca59e8aebcfa61984bc7ac13a60ddd2c1f0fa84fcf9264ad5049c888b9f555e024f0fa685474e083025da168e3b9c4ad91f074e7e711f84bb808604114e09d1ceb83b697cc0f045b5089b0bf7381ff2efc08e7316ddb7eb7be47a1d82cf533ea898e668f0da124d2e87fef2b558f877b50b13a08641c74e2726b19fa7c0f33ab213f403c328ea60d08c07155ca0c19bb75f7f6716de89e34c20f9d15ba8aebcb98e9b6461477f56f9c65ea7e8744a4d7306e216f806ea8f9f1dc45781c1adba44319031fb9e81c6d33bb317d959bc53a677270f13d96da19833965aea9a18172f6f975bc4d03036b1239e7c315ecacec35cc0f788be1220c0497844fe7c989fff5ef7fcdf89c261a0fed3915cbfae94b1fba22827daaaaa0f968f1ac71e9772aed587d607d5d3f57c1500b6e08760e0b971c1999d01553bf87f55fbad96ce61d0750d75180623543f40e5b0cee74bb429edbed1b4c2a3e1aab86c8dc7381afb0b9e7d4151a3f76b7dec4199b97304d7b3845788e19126e +expected_shared_secret = b4b4634ad37852e19175ccfb5eca50093291da8f76b86be7511379188bc20d92 + +comment = Rho leads to a matrix with unusally large entries +entropy = 456be124e7f43803de5f734ea016455d68164a7f054c003f4ef49e46f42dd8d0 +public_key = b0abba905c1559715f25f720b7b745a52332355154e60577e598c754b6346b335b0195ac305268bae78bb4617807ca4666738ca81515bb041d43a4188003c52ac4ae4b3808d8c755d3e99d00537249d39d4cc02ed9f98ed4106895666c47538f79e30f5104adab1540a1fc58d1a857a1a4611257be37e0327491aa4b543aa6322ef7816a5c9a55eb3bc8604b15540b62c3405b861a84218211c20bc3d35a8a506b0153306fa98b9488a7841d85197c170f84c380098077e42cafdf1913df369f37f3291ec47289710c57f152b74572c23324f83618fd281f5e41976e77097a570a991b3bc623ad6331a1bb34673b1c328319758ed731ca2981b50a5a2cf8c66d31b10e88c95ffc27c3b6aabe8b207e6cb4373464b1b83f4a5a9806449bf7fb622360bf9f098b56729c5738191d57492b377ca8f989a87922a7368d724b07b7e36133620fa0735d60f5be8b51c19ed1655de5108681cb27273d511c643b7867516c2982a74f62e4cb759bb1f5f0808cc90e1baab60365722293bb07841803076504d00e6fbaae853749fc322e3458810ea41d832b35bf05a10e62a4ff8317b506b9af7216c445663c9061cc62914b0b72b5989d7d9c2b761c2fc5a28b5839bee5596c0de25c10a15776447e17770edb666249a2310962152059c5ed5738741a29e899072427891fb53606ab8b5dd06c005d239adb7bc368b10b74508c45c4aca726fe59c7729cc1ad617236e1b75c760e47815df33297c084429ca371c16c5761c9a23ebbcc2cb43ae9734ba9495d5a86a89e75aef50b9e73470d8d9974cf27a961c0cb2c180ff36140818b005f05afaabc86d8b8bf5c2a62f0632ebeca0c9c567514c9311ba6216fb13f1603c77656cced520d977ac75031044c8790d1b4c97dd38b2aa43dd8808a79e406f8e01503db8f7b51cc1e4265ee830461f41cec398251ea60d2c573ec59b4d28b09dc9446bb972f6d134e2e192e987153b39538e1f631bd81b2e65c2c5c68a96d1b78360889efa4c692b7cc374160e8dc485f47a676d77706e047d3e717386bb49cd942e4c05374b3a1cca148535a3ff1085102f4a7077b5f9c7b1a9ed651edb32691037f9388b672a662bc247beed215d51b414d3530c6b0631999663fd7c0e5da7e411c32c506476fd08a09d499ba3c27bbf6a804cc7e8be5c1f3f97d7aac085dbb3bd1076a69db89bc990efe59b00ca943ef8560642176e926af342b48e8002f6d1aa99b58cd013b03e0d285455786b54a4be3c581419730081361c04697b1b2c07df068621213c8ca6554b5982d5a1aaa113ed9343a56101aec68b838a37ef2c8a15d0504c672b278556b40c766c2066ac995caa32676da182545773881545cd58b71d3d7a02a209bc7407f420a830513b9d9d6c93c56571e42c8bf154afa060667a46d13cc542429c9d1a35be012cd3c9abc2bb7484fc89a4a83a20f7c2bb088793dab732ff370cbab614aa851fb77ce176b8f806c4f2e6068235b93d08c39e96badb37a457e8a790b2b8ef00b0b9e941592373fd2caa3ec3477c6c440d0daa755ac0ad2285754ac64b0852086112b0c9794f1657916fc173209a40425afc9b19946c529ca95154f24ca3cda5f9547c429836c377123c6ec000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 925fde875ae198cfea88c4eeb3a0091897e25a793672df1de3f24ab4fd3edb2cad0b07e698f35dc97bfd1d551fcace3282c8c3d8131857d96ee9986da7b79a02ddc6cfc9fb7f2b809a8e5511b1c1256dbab33e7606d8a5fc048b36f6ee53c7f556efadf94494595a549ca260ac9c45bf9962bf406610ca58dc286a9eeccc447a767b6db3ab009f5848558acea4503de747d72d43218babd6f68c091b4581f4e41f2e850047f5f543a02407e7331202b0eac7bed180061bb53f4dd3504ccbd3f298d96b43bbaf8f0c2545be54c59830e1f343ca88bb9c6812c66bfbb59a6d68298985767a73d34fa69b52cea98d95d8305f97c4d4fd643b56c60fe31e3c2ee7e938ac2e4a5da2297e670931c1dea5fcbe9cf118c62a76a461495f10f640fb416ff7bc2478c0e8a1356bb840345f3d43476bc4cd990eb7f7cde7ccb96452d055397ee402be2ce395a29a4f4061ec3d85b99f086341441022435b636028a1a04c5d787abe1c24a5a55653b7063b1cacdaee40ae0de77b4034b9ac0e860a90c8834b352c71e353c02b1f46b135fa68fa7a5c1c719896987d79f3174b8d0b0c28ed64cf9f2907924497e35bf519d519a9199a4dd68025992c6f466604bb2ec3d7b13eba76e4803fb73bb125b83413998ae86691a0b35c0054e1418898f435ab26cc12a12fd4dcfa9e80887af7ebb6c856a7fc010cfcaef9e1c5a4dc24a91a622fb7307521faff0b8e8e966b7b6ae849ccc75d31c8d700a3b6a9c3f646b2a88d1e9391c2ddc6c9ff15db961874c87dd94bf0165cfc8f719806539a8beb8e28350610461b1252872f0f3ac273b3366abd78d9fe8868dca1a5eecb683ab8b50ced8cf4a5ed3b721e0fe6b205fb191985ca745ff5dae0010493f8296b6586e1c96f7f23fcb4ac4dda15eab811107c977aa0a16439b06986a9027640cf7a01051934dfc758215d22c6f06866d5b871dfdb6ed240a73dfde43f7f89c0ce6909b54b0a633a25f7253c10906166f81ae91a1419028d6182c1f277dc7872b824c7a5a22bc7afc02afeaa9ba4c271ee68882397e6cec34a955cfc672f4e6f5ed870a35ebce97f34542cf0a162938c91922230ee3fe9ed9a166a790ccf450b80cb5f483c3c6ae5b2e52e907824b45e69e5ab38226cbd6519de995e1a62a910fd45ed189540e0b4058ff01edbc6ba4eebd58d55c0e33702de299eb53d6518254b8471f282779533eaaef90602e52373be8b519c56a2f6fac0953c0f84135715c5674e45d15804fb94d9e0525ab493aa625fbf73ebdf74f0a1246e1eb0e4e2e261b24ab81d8da6e1770634c747542450cf0a2af23507f8b6766a16dbb2e67b2c94859228b91eec6c59f5a271902b340320412ae947398ad102073f8b9b8c021f81f786622c3483e61f812aa76232e6f9453eae044c5e918e6e4e0e18a78efaf6cb36f7b75929d0036c44edf928d6efe1ddc87b96288c7c624655d302b98865978ed7bc779c800e6113a0484dd225aef29796c8ba300b3f48dd566fd877dfeb5d25f96da5d07e643c5d +expected_shared_secret = d4b9a0f77a52d4f8b9c95951257348d1931725c27eede694ecc09204a931daf7 + +comment = Rho leads to a matrix with unusally large entries +entropy = e8ac9e76377d67d84f85a142383e777157805be0d0f679ba89cefdfa61583780 +public_key = 038c5d80656805b427d0b9167abb3697444af88a0f3eb48bf658be44f36b01233902291860215084ec7bb3e170e517c65c623ecf4a488f69923f9045ea18334d5c8ee847381b5a8903a6233796b1def36e46d343cd3547f4a757d82c262278432bd555fb5430e7f936affb453ac1a031c70cb1b3a8f3762dbe226461501d13d10052fb621be30b8ce63ce93591979863816397f0d198a6c534b55213d778ae7bb1a20ef1809ec37b08382c43e82b4a758458d7758d23a350538b3e524d27c9074d1cc4e3e1a17a6b06fd71178c5b18803b1c439b9e903a0d63018d2f765fa7426a0684793ea789c30435657b9aed58886cb8788e14426ea0295da18293024eb1a39eb99a20619a3e2db48a93eb90dbf42b84fbcec1f0b9571946b6f150ef5a672686a30e52be2d536bf3664550f60c99a89b81f3c911784d8a371ebea0b97ff50e2af68f822a72e9a76cf473bcc1cb81fe2a03051771b1c91f1e1a444ab6119c0a83b25a434fd598bc767315881aef9cb4d4c51ceadbb3b1a1142e0b87d5826b161233ce253d2adc9a00bd00e3cc21fff09abd919b54e09ba6b505601a358e50593dfa117eb2b8d7458745a25e7c7321cda0c432aa5bb41aab60eb3dc7e03ce4017b245809a534c3dfa49e97f4474689901e814a97fc0892ca04d0c00e3dfc836b36bbf74256e77525a031160fb3bf8ac31502c049d0a264140104c7488e36a46d23a76f4535b5902677cb98a5abec57b9357b0cb3b36b68349b273a2f8396e6c8594b4a32f0aa8a622378b3ca0426f44443942c02162907b2651ac2168fd1279b040192716bb584211df4ba36cb363b8c3adc39b410977ae3cac26c21470426837a43b821f65d8ee1950c87b4765a034aba1a35579f4148b8c2f39949812cf9d850d5e25be7713ce62ba31366737c03ad45f23e9b226d1835c5ab01c081063dc193630d72821cfa2a56d16108c40ffc483177d075b6a7a1bbf5cac7da0834d755acd10b9b9850a7c97d90a1061ce94efa4b0c0707339dbc7f160a45eeec022815a4494334254c08ade388c07c34e3a07e51ea60fdeb9b20b4b9afdc6c3c2b63e872aac9b2a90b798bc2dc8d585c69c1b33c1d51372c583e835b9ed561c218a2968c044051f8a969a7b2db6a7031d20cc9e024bbaab4385a3ae13ca264c25f6c5b4170b5c0da13044664a10f335ae9045bd6319abe139bb2b8b635bb06e2f48427e256a16a0f71f119230a9acfb19f0fe07c71828063f42a844a5c703aab9a844f689944ead511d8c97127d99429fc87ede190e0fa002261494076b7a10496dbe12919f585685733ae780eab3ac168287aae3842cfb637a94483f68170f6a3092d51b82ef10496a6374572a527aa7a7d1a99315953f625842ec0bc8851180b98cbe411453027c9b8a4a07fc3bbe32b897fc09e5e65a0457556a8b28e5b7c8b28db24e5431893953c912c195ca52db5d125c3f595f2ea75a63b6c83c8cbca257824ac60ce16bb5be02b30488974a22a66d37b19531e3cf17b59bb43d738cea25326dbd6355243ceff3caae98446927351ff623260472f8c7a715016ca5480af5cecc001c6b65f41221b16bfa61863e225709775b5e6393e4b71920c0c539c6bc5ec5c609466000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 7c06bbeca8b58423e2ad420ec36064ed42c881e3655668f8865a2d643ecd1a4eecf915b6c64b37c98947f06c3ccc8e00bbd16017c246db88cc83f12c887aaad7db61b4d567c285841689169c3f928f1d178a0ddae50d8c46cfd95258667d6239c300595738defd2e806637ca46baa4c6c7b97f1a9b47d53cba9ffe074f88d104c4971d250d085b1800fcbd91584d8cc48e145fc81438290d74765e7ee8c1605e8048b37b9d22b050791fe008b9b84b7f23b0f49955e32c0eef78d7a3a0b2effe8b37d124e19d4cb6f6914204598a525239d9baa116e1c9c39c47f9f37f965941b2aef8519782c65f3ad3a6509d1e31e7efb67db21911e4edeb1f7e9c37b3f852c81d63a95e4775e3f2a8ff315a214680adf44d290e42ebab8ca95bf471140b9d7e03f5e9f97864289a0ae8c9a105e00409f714e413b69be366303b4a138ed51264ab0e5cca5f6dc9387c6608109e8859893efa3bc7384e9f418468b1078807dadb768e254094039d1b807d67353c8e0b5a03d28b8e41ffa0eb3ce0837a132144597908f7a059a097b79a1bac323757324e907b445d064e25c378d2069e7c5d671036871e4fe36705747635e40c6e835319e3ff81714cacc44515d671b703c5581dc76afca0b881f37c1ffc93f2e4afab1e8ac776ca883f3adf7f9ab99396f7e19541c26342a7d5618958523b81871326c357ad84ccc6d3574d97cbd875524e7b08a102263d80f318a48e510c22126568f76936c904c231700ad042d73137eec741c827a082de4a45d296745c55b8367719dd08b8295e38d8d3894b9f8e2f9b483b266e1fc71d6374353ca7d9ed1c6b73ab5a42f6abff7b2ba8fd484d1ae6928b5ea92ea3577be01dc1e88abcd0886eb771dca4d36e91c45bca4807c89736b7d6a927cf64b22c5f323077f5488f6044976f310b4b99f7d486335dcca60571157ac0e480a4dba79a826b4bac3dcb7327a33b16381eb41e1d39915e91a58750ceb71098ec7f1a2d7e44d4bab75bb7482eec277df206502c497eaa345109a145a4da6bed1900b680ad12fb028d33563bfb204ecf66e6ead587c5fe27f8a2eb0e27471925ea0f35eb9d5e53ef801eba3acaaa7790b105eb6128ace992668181c1d7cf203afdccdfefbac67dbd97cad05d499239df84e4cf7372117932c973957e5c70a8520f822be430758990296877df62069d818768513d14df0568be8e63e123bdde35036dcc69a98197f52dfbaae5e5e0cee4a48c67fdda605dad8a27651625c2b35e81dfcacd2a41a6d17f6d7067a67faf2479b3868673b248270f4a2d8ee26de9c787ce966ecf186c1401ad9d3bbf2c43b1d5de32bdd77f5433f4325427254a13985d733ab0863e62a4f3d484ab3f5d3b88f23049079143b058babffc8367cebdd9d2468d7af782979a3ef12841370da6ef2db03679e6bca0db72166c361adfbfc02234119abaf98d4fea8ddc6e8490c2fb5a1be4806a61bc7b36884cf4631cfd53138a23fdda11e597aed323748314282672473a1819ef2b9488f6744544ad +expected_shared_secret = c9d0cf3edb1172344364afec3615ba98477ce9316f92ca46ca5f42b73553a9f5 + +comment = Rho leads to a matrix with unusally large entries +entropy = 2fe6b9cf4510f212839e348d671b3345da68a477f57513ce363414e87299a717 +public_key = 7dd722a23522b0d8cb522a67d63a75af305c05f3659bc496f1c47e410582a0e58bbba80751bb2f5ab71414051627f46a78f9708e3139f8950b999378df4709a08b9b511982ab1b2cc4d51d177578ef263c8e12752f914733023d9e8068d4fc1aac34106fa72197f6b4e4bb26ab29ab64d7c848f98ef5557ec2b35edea70b67c084193921d8cb52e132a24372be7046aa2af66696007e2e0830df1c7b4396bcc8f27aca46932c463b49db0ed88882f3a45901a4b96ee3b74e78afb8dbae7bc653be895179f208c27c6ecd60c26e54152aecbc13bb5ece39840574c56fb39fd2385c76d62c59a41b3311702d5a99e366467b6c4f6c252a95db32e5096e61d1ba872924d358b346dc099a485c3df72a94e437a82a6cd778888995c473c203e091309ba42511950c19db3acbc5987259bea952b5a549839f197d7bf64ca0772cc1dc89572a0e04690fe651a79ffb3dc07388c30c06711c6b25572bbc83ba868a379d54c6439754bcd67c9b0364ab3790967a062948084ab33a80ac5971fa99830aa7d1e9263e7087af67ab6a83ab34f405dbd72b3fe46e9f2114e26cc6643b6d3adb9de63090394213e72b64ecbb2242266139579ea9cab2e51868ef82ababaac38e7ca0b9554d665365dd8b0b58f3020cc9218b866955f54d9f7b9af9634ab995a0b5e234fcc78cd1594e1cb8a845ca0cdbc82e3fbb35414c53423b76875ab267a702d51710149061e7655a0168695053aa61b990fa9439883640e7600345033ca90678925b1d632962deaa0ef5642b870610be3387eda90cf608254dc2b000c06632331680e12e9b277597d07633a31f6445318ac7b9cc1b087cb58bddd30a07ea6e1b1429950b7e7efb1a6b88b037c92cf987c904268ce39cba4bd3c163f5a8bdb9698488152a18b02bc98a83fb6c28a55a018b48979660ad5b42281b8745a4bdcb02cabd16735ab1523916adcb031e34ccbf4c50bf61bb7d562804d4104d3f6ac183f447e6608acb0bc40a34ada4897e9a91c542571877931864b612cec01c88010cbe039d42540835422f5900c944c7025ba3365543536d093a68c27abe1175bc227faa590f8fb8ca9ab1a87366574422379fd8659fe5bb5ec76e179666adebcedc7b54f1aa9388b2907a4ba5c48441ad90499c64a57768631d4a961d88976c816adb897da7715a100c75099cc122f3b1df183385673a3bbc98cbb0ccb0b090b3517993815e3f6b26b984bdda32c11947b2fa5411004c2c41f2a646036b86bba618e72be7f97ec6369af5ca2ab2dc9493d9078a0c8598841385205177c80a3be42a31d1166b02cd1dd2871148033c794242962e8645ae2e4867a3e5c74f71a1d978379ad45f7fa5c70066cbfc4cbfbe05cf23612b2dea551cc52dd90a8468ec771ff071371544e96400e288a82e9c9eefe807d6f4903ac567741abeaec9707533b38dd8c4366bb33cf86f77272478e43a2d8061293332c8d805a4516238d5ad1934a9683655674aa6b6d91610d4c82e966d74c41dfe7ac18e993c22d59b2d286a0b5272cd44988510b9b342405757a25731729e934c58c601f5c311a244a24dbcc772088a20dac4c8410167304fda18445f6c6126b9645d4042d6033419d246968848e1f5000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = 83ea5ed982570cd981b7430de924469d4e2faba68e03261a74f5114ab8c448376cfcd1b9cb3e72bb031bf0fefe772bc40888abc6acffc1d335d46d267acde2cb89cf1b3c67a139796d6a5763805d5edcebb81070b44ffe021b6c2b3c6c3d5dfb6d9e546930223ab0139990c6c5d6257520fe394a3aa30c6a71d47f415ac86b68eb8c83b131a3c5cbf051971fef5ef3bda355d3868e71ed8a0e2c6de8a759bc0c9e760277cc2c04c783d29d1ad3d3385accb85cc88c39bc8348f84dd8c714c5feda50b0770414a333136d6678be6ccbc5df488bafdcade883fbb310c99cc648493aed72680fe1e43c0cf523d3dd06417d29dd97c98ce53089505d36a476c0ae6d89b165c3ff6b2c62ba954fb81ac5782ae648a6802bc057c64fabd3726559ba79de9c144aaa525f6a840ed55abf21b37231c6c4cbb0110fdbcd0004f6f4974ec644c33a8aea34ef4a0a146f7502650c3def5a313d2f309cb428880502d3bdf39196a99bee296f9231d87972efd1159d3cf59bea05f0d0373a0e218ee5e0528e1ac7132440980d1153b9423bb2e099d05fbc8241ec1f316bf0add575a69982f546e99c64457c12ac83951ad46a5f024f6a61c91b7d3853ba1fa41d5a95f6ca811610ba3f32addf011ea4091ef217cdd126ec5e45cc40ec6f1292602b16c02718419646370e5b2c7c55c1128fc5d6c767cc75248b79e2379d40f91a8617e8a3db43c42cabb5cd39a7a7969147f30344c4b03de7034b12d8a1c3639697c97c4483e4191ca0fa81d8659f40e31b899b4ef4610644b1314ab2ef14b8dd8dc0082826fe65dc17211572cb14fa376f1b1784a00033c8dcddc44d6a1128a200eea668b6516ba42585cbb2e2be2a42148120013d0a9378ed7c185071fa8fdc09102164c63a665fd09c08d34104c9abb64e394b2e2a00dd834f7c7f5de16f6c02906ae37acc923dd76e530c78f2143396bfc371d14e6c48bec072b6b4e18eeae967456beb3f897a06eae17de174cf09be1435e691350632c0b1eac69dd66549c1d980fb147fa295ca6f21b5dc398e63a7c4263c75b55c85b4f38fbd7cc0fad84aba90dda1f2c9ca88d88905602096162486dba1ed0a8caa6b897c99e25934152a35fd0d476de09fb211abf36565af3744f3fb737247f5d8f172fbf438ed04422a6b3e17bdfe2cb0f09a1d57f1f1a113a768697f23d61ab288f15abc760feb0f5c5d4d5c0b1c891d3dad6089a3b7e54516b8f9755d38430312cf17b21efeeecbfd2719b62480225b9b3ee8940b1f1784ed5630d152635a1233acdd16e5489a9a15eafa7bec99aff25b18d9cac1e726c9e424773a7083f213cea53dcd310b0037aecbde1d584657f32cf548a6872c6f5a1a3a70d4db29ee3773291c94b00b5a596e1691f7752e246ca0960561cd233ec7d5f54496d34ba65b359a856315f02d16c990cdf3db2051b17bf283fed1b808ac79a9ce8250c806896bf75f2cfe76465c09360aba4c9688acea341fe755363abe41c0cba3ebad00c6c7bcc3f7ce091f87079f60094b92 +expected_shared_secret = 4bb6a6b27596869efae3d411c69c593afff99b1a703ee1f4ff3e0e7e9756e75b + +comment = Rho leads to a matrix with unusally large entries +entropy = 86630b4f72820d19e9941784183b3a0d770609becd6fe0dc463cb6edac432d59 +public_key = 59b479b444b510d9b6d89b7001b237f4a34c57509f69208c7e6b956144bedc8b2d19b12c1baa725dd106f5418ed943370050808ed2636fa634add059541a7a8c7976b0990e59c20c00343d1c37bc3ab587e312991bb88a74227651b340346c58bbb174ac18c204f37445681bc5905354d834f86016d0921219fb467d829daf24901815666d664b8c4aae307485cb95885b7cb9125a14d4d988d3a42c0816ba7ef14de9b622e08871988b8c02d857626b65065551d5bcc81112384f979cd8d2b9ecb55c6afaa700e92e3ecbb285c01112a19cbdb90b8af135b235914c901e2314902a43c939d065481128f83ac801dc2fa69c912f2b69189736d72414df12646680c9c858a9afaa28b994531960b0f2b82fc6b9c6f10706930786ab5c6b0da61ae813cdb7387c27324499b111c6ca5767056070e608cf421af52cb45a842da82560dd86acf45a7e70245e0b535f7559a9fceb9369c44032c09302438cb4670925c7a831d52f083a7919e575be844d9e6a009957c15e6c5f84f050cc4801561876f9f483ded505b3c77a4a97788358801f012b59d716fed55975f8abd3464420d849d89c16dd2a95c372cf631a93a8897ddda2a038070adc2a97b5538778c0215cea399deb8279b2ade6c5ab84bbc8c6e181c091b7002a4d5f395bb60c817e03966b63ba76e88fb05b79d126ab0975c995b5bb2ae6550af78d80b96af40c9514f945d72b0c9602412242c81b60b2df97999fbbaec0404056195879535041231803aa7cf064b5fdfc8b86344d65eb30e52cc0d5b86947b8051ea93008d789914493b58abbd5395b657560f5823c387574db554118d06b26ba14b9660b4b390f8b828ba8a852870cba24a114a68094cf0168b721af8f0998e599b5db2135a3e9360b5754dd49155eea830f0035c2c116dbc9039cf69034c505ed998f8460a170eb5f09786d902664c8135ad77101d0b802248b6f3165a847b5c989131d7ee3135cbcb48b3cabfd100074c00f2e7bc85d4c84bec8980a6920e6f318a4bc805900b548fc7d98316c1b3c3b49f6c5d90595ff7a7b56465385620544aa3f39114e53581e851849726023d953b5df56b87be98854b253a39297f060449fc1c02725c3442a4ed8624f7f6abf3854cf04166b24c3b5a38358bae933ee4777df09720415314b152efc0b175b664c0c0a3521cac1817314d1e69fe03b351fe211c4c44639622a73a4547ef52d46b033aa52a79182baf49a8808fb259c048a04cc03f8a1038e9112eb30965c797f90c277b3549df4f757526351bd1a100767b4bcfa7489c17cb181b707986b9af85e766aa1f99b08aa2a7bc8a385d294277cb00d705b4ce2583e61c16be2b18445d051d7f0cee51703db3162bdd328cf0b0b24a424bd830c6574091088ab746a291c737e8cd595d1b51f9646c7813a8991f89c168489d1a3b61a82466d98ac9de55b4d5aa020243e638328fedbc93d341e1fdc7eb861bba3783a57c86a7184aaa7d5051b7018f3f18b40b69fd7780ae9609194db70123801729c561e973dff3a7ea5ba9045b24e5fe5bc63ea858c687184a8276612c80ab600cc37699583b9ffa8c5a1b7934f3c12873522dd1c4f976b73121bb79766803d247de1dff18807000000000000000000000000000000000000000000000000000000 +expected_result = pass +expected_ciphertext = d4e89c9a1b36b648551ac2180f2f59158514568358f66a6fadd88492a0e1c122d1d7806287eecbcc8e8e6a463dc1c909f13842f734b9eb5bf690291c9d5b7836de8f4a28b8242c21131c53ebda4002b329a1951f469168ce0199f0a1d2edcdf3e6566f9e638e5a1095025cdb591aeaed8bb115ca3a1f1e9a8e911b2b9d3838608a27e50018e9a99e65b04adab67a75db892676c28ff41f118286f0ad2f5b650baf9441470db659e262e64cbebb4e808b1e7cfde0ff5c1ffbe1336beb42155fd9cb1cef90f306f5aa2f121b30b4d6091b19f37243cc15df2a0a16c4b5f70ffba99456f535af0eb0df80771150ff28c7925da7293878699c00f5136c340d1d06460b0ca7223f37ca553be904ebb7a7f41daa8288aa244202247eb8c35b7bc6d1dc8b95c220319532dfed22dc5d0f2f77a4bba0f5ee599420a94c446d89e3e8532117bd8ed0f7d9cb1f0a58a92bbf30a9d7c16d5ebffe16f39f682c18a8fc2ec0a551370c0e3ea706259f52333f5e86a83fb60b9ee3776f08e3f85ae4ee66be8c653cbe25e316e6ad33415a13e5139f53480625f09f593a598d6fd864729362efc3d09f5b171b0eff76cf860c8fd80583bfcae3bd7535e0270d622c2c09886bf9fddff6dfd045fea3259d26f17500b6b1e0b5068dc06a510da4809fabd615221f672f6d1d220c22dc080c9dbd7544ccb3369deccb76287c77e1a2af0afe133cd19325e6a77a8bf96fae6dc0381bb303815df4de480a9f3f97f1baab7774d7d5d9eda6c5927692fa2277934b0ebd30b4e7785f0c61a44357f49adac4430fdff3af956904b789c2dc9bcf87eb4cf93c48256ae13e90a1bcd713f77446593837b81baa6fd7050455d69a16b429018390a47e6e881467b57a2cfb043ce5a8cb114c4bd916ffe353579b599994efae24ced2dcf1a2923a0d0d8e771e7c230d887e596b80e01d84c908ec9fe81270f12e2f9ba2d783b1200fdb106e9d340c21667b722564a0cb4603dbc2193d3b455e06cf8c1d8fdf3e7ebe16a47f0181407f66c214379a5f336545818782835f6be2e9ad89f180ae0747067cdaff1f3b9386debdf3f057cd02f6eb00ecd656838e2ee5bdb99d6260c0447707d747bb6ff33ed65c2b3e22074ff25a7a0933be3e9b51de95d99e02ed4204f5ed8a6ff864e2f04266c9392c6feada8805ad44dffd5abe8d4262ddf6d2b1b4099367927b0bc075cf1d1d802f2d10b6d31d7f8c48b043340cae34b5b7c2f1e9b5043a0c2a977c51ff038171f8c81f04b284b2ee262befb6a54bdec146b84dfa116542bd13123ea79e4a660e44f3d23a0ce35ae4eb7b45611f87ae836081742d3cae6c65a0f93514bfe118cbbe7011e2a9502b197ac4bf31fe17016e184657b8dcdd62a223d1bd88b98aa0bc200ca91e123fa956b3d804b2c0ea139f934124f8d0c3f4412d8effc554f8364b0f351a789cae775b241cd6aa6d15251cbd28f0f85fd4f2a48fb467444f2f759ab6048d33c27832cccf9cc45fffaaa17a6f5e4b766f861529cb1a0641b6d3854c11 +expected_shared_secret = fc501515ab8bf04e3cdbc78c032524d6b9ac385122bd2324b11a2ba812158fe6 diff --git a/crypto/mlkem/keygen768_wycheproof.txt b/crypto/mlkem/keygen768_wycheproof.txt new file mode 100644 index 0000000000..9aa9d9ffac --- /dev/null +++ b/crypto/mlkem/keygen768_wycheproof.txt @@ -0,0 +1,499 @@ +comment = Official test vector 0, seed: "061550234d158c5ec95595fe04ef7a25767f2e24cc2bc479d09d86dc9abcfde7056a8c266f9ef97ed08541dbd2e1ffa1" +entropy = 7c9935a0b07694aa0c6d10e4db6b1add2fd81a25ccb148032dcd739936737f2d8626ed79d451140800e03b59b956f8210e556067407d13dc90fa9e8b872bfb8f +expected_public_key = a72c2d9c843ee9f8313ecc7f86d6294d59159d9a879a542e260922adf999051cc45200c9ffdb60449c49465979272367c083a7d6267a3ed7a7fd47957c219327f7ca73a4007e1627f00b11cc80573c15aee6640fb8562dfa6b240ca0ad351ac4ac155b96c14c8ab13dd262cdfd51c4bb5572fd616553d17bdd430acbea3e95f0b698d66990ab51e5d03783a8b3d278a5720454cf9695cfdca08485ba099c51cd92a7ea7587c1d15c28e609a81852601b0604010679aa482d51261ec36e36b8719676217fd74c54786488f4b4969c05a8ba27ca3a77cce73b965923ca554e422b9b61f4754641608ac16c9b8587a32c1c5dd788f88b36b717a46965635deb67f45b129b99070909c93eb80b42c2b3f3f70343a7cf37e8520e7bcfc416aca4f18c7981262ba2bfc756ae03278f0ec66dc2057696824ba6769865a601d7148ef6f54e5af5686aa2906f994ce38a5e0b938f239007003022c03392df3401b1e4a3a7ebc6161449f73374c8b0140369343d9295fdf511845c4a46ebaab6ca5492f6800b98c0cc803653a4b1d6e6aaed1932bacc5fefaa818ba502859ba5494c5f5402c8536a9c4c1888150617f80098f6b2a99c39bc5dc7cf3b5900a21329ab59053abaa64ed163e859a8b3b3ca3359b750ccc3e710c7ac43c8191cb5d68870c06391c0cb8aec72b897ac6be7fbaacc676ed66314c83630e89448c88a1df04aceb23abf2e409ef333c622289c18a2134e650c45257e47475fa33aa537a5a8f7680214716c50d470e3284963ca64f54677aec54b5272162bf52bc8142e1d4183fc017454a6b5a496831759064024745978cbd51a6cedc8955de4cc6d363670a47466e82be5c23603a17bf22acdb7cc984af08c87e14e27753cf587a8ec3447e62c649e887a67c36c9ce98721b697213275646b194f36758673a8ed11284455afc7a8529f69c97a3c2d7b8c636c0ba55614b768e624e712930f776169b01715725351bc74b47395ed52b25a1313c95164814c34c979cbdfab85954662cab485e75087a98cc74bb82ca2d1b5bf2803238480638c40e90b43c7460e7aa917f010151fab1169987b372abb59271f7006c24e60236b84b9ddd600623704254617fb498d89e58b0368bcb2103e79353eb587860c1422e476162e425bc2381db82c6592737e1dd602864b0167a71ec1f223305c02fe25052af2b3b5a55a0d7a2022d9a798dc0c5874a98702aaf4054c5d80338a5248b5b7bd09c53b5e2a084b047d277a861b1a73bb51488de04ef573c85230a0470b73175c9fa50594f66a5f50b4150054c93b68186f8b5cbc49316c8548a642b2b36a1d454c7489ac33b2d2ce6668096782a2c1e0866d21a65e16b585e7af8618bdf3184c1986878508917277b93e10706b1614972b2a94c7310fe9c708c231a1a8ac8d9314a529a97f469bf64962d820648443099a076d55d4cea824a58304844f99497c10a25148618a315d72ca857d1b04d575b94f85c01d19bef211bf0aa3362e7041fd16596d808e867b44c4c00d1cda3418967717f147d0eb21b42aaee74ac35d0b92414b958531aadf463ec6305ae5ecaf79174002f26ddecc813bf32672e8529d95a4e730a7ab4a3e8f8a8af979a665eafd465fc64a0c5f8f3f9003489415899d59a543d8208c54a3166529b53922 +expected_private_key = 07638fb69868f3d320e5862bd96933feb311b362093c9b5d50170bced43f1b536d9a204bb1f22695950ba1f2a9e8eb828b284488760b3fc84faba04275d5628e39c5b2471374283c503299c0ab49b66b8bbb56a4186624f919a2ba59bb08d8551880c2befc4f87f25f59ab587a79c327d792d54c974a69262ff8a78938289e9a87b688b083e0595fe218b6bb1505941ce2e81a5a64c5aac60417256985349ee47a52420a5f97477b7236ac76bc70e8288729287ee3e34a3dbc3683c0b7b10029fc203418537e7466ba6385a8ff301ee12708f82aaa1e380fc7a88f8f205ab7e88d7e95952a55ba20d09b79a47141d62bf6eb7dd307b08eca13a5bc5f6b68581c6865b27bbcddab142f4b2cbff488c8a22705faa98a2b9eea3530c76662335cc7ea3a00777725ebcccd2a4636b2d9122ff3ab77123ce0883c1911115e50c9e8a94194e48dd0d09cffb3adcd2c1e92430903d07adbf00532031575aa7f9e7b5a1f3362dec936d4043c05f2476c07578bc9cbaf2ab4e382727ad41686a96b2548820bb03b32f11b2811ad62f489e951632aba0d1df89680cc8a8b53b481d92a68d70b4ea1c3a6a561c0692882b5ca8cc942a8d495afcb06de89498fb935b775908fe7a03e324d54cc19d4e1aabd3593b38b19ee1388fe492b43127e5a504253786a0d69ad32601c28e2c88504a5ba599706023a61363e17c6b9bb59bdc697452cd059451983d738ca3fd034e3f5988854ca05031db09611498988197c6b30d258dfe26265541c89a4b31d6864e9389b03cb74f7ec4323fb9421a4b9790a26d17b0398a26767350909f84d57b6694df830664ca8b3c3c03ed2ae67b89006868a68527ccd666459ab7f056671000c6164d3a7f266a14d97cbd7004d6c92caca770b844a4fa9b182e7b18ca885082ac5646fcb4a14e1685feb0c9ce3372ab95365c04fd83084f80a23ff10a05bf15f7fa5acc6c0cb462c33ca524fa6b8bb359043ba68609eaa2536e81d08463b19653b5435ba946c9addeb202b04b031cc960dcc12e4518d428b32b257a4fc7313d3a7980d80082e934f9d95c32b0a0191a23604384dd9e079bbbaa266d14c3f756b9f2133107433a4e83fa7187282a809203a4faf841851833d121ac383843a5e55bc2381425e16c7db4cc9ab5c1b0d91a47e2b8de0e582c86b6b0d907bb360b97f40ab5d038f6b75c814b27d9b968d419832bc8c2bee605ef6e5059d33100d90485d378450014221736c07407cac260408aa64926619788b8601c2a752d1a6cbf820d7c7a04716203225b3895b9342d147a8185cfc1bb65ba06b4142339903c0ac4651385b45d98a8b19d28cd6bab088787f7ee1b12461766b43cbccb96434427d93c065550688f6948ed1b5475a425f1b85209d061c08b56c1cc069f6c0a7c6f29358cab911087732a649d27c9b98f9a48879387d9b00c25959a71654d6f6a946164513e47a75d005986c2363c09f6b537eca78b9303a5fa457608a586a653a347db04dfcc19175b3a301172536062a658a95277570c8852ca8973f4ae123a334047dd711c8927a634a03388a527b034bf7a8170fa702c1f7c23ec32d18a2374890be9c787a9409c82d192c4bb705a2f996ce405da72c2d9c843ee9f8313ecc7f86d6294d59159d9a879a542e260922adf999051cc45200c9ffdb60449c49465979272367c083a7d6267a3ed7a7fd47957c219327f7ca73a4007e1627f00b11cc80573c15aee6640fb8562dfa6b240ca0ad351ac4ac155b96c14c8ab13dd262cdfd51c4bb5572fd616553d17bdd430acbea3e95f0b698d66990ab51e5d03783a8b3d278a5720454cf9695cfdca08485ba099c51cd92a7ea7587c1d15c28e609a81852601b0604010679aa482d51261ec36e36b8719676217fd74c54786488f4b4969c05a8ba27ca3a77cce73b965923ca554e422b9b61f4754641608ac16c9b8587a32c1c5dd788f88b36b717a46965635deb67f45b129b99070909c93eb80b42c2b3f3f70343a7cf37e8520e7bcfc416aca4f18c7981262ba2bfc756ae03278f0ec66dc2057696824ba6769865a601d7148ef6f54e5af5686aa2906f994ce38a5e0b938f239007003022c03392df3401b1e4a3a7ebc6161449f73374c8b0140369343d9295fdf511845c4a46ebaab6ca5492f6800b98c0cc803653a4b1d6e6aaed1932bacc5fefaa818ba502859ba5494c5f5402c8536a9c4c1888150617f80098f6b2a99c39bc5dc7cf3b5900a21329ab59053abaa64ed163e859a8b3b3ca3359b750ccc3e710c7ac43c8191cb5d68870c06391c0cb8aec72b897ac6be7fbaacc676ed66314c83630e89448c88a1df04aceb23abf2e409ef333c622289c18a2134e650c45257e47475fa33aa537a5a8f7680214716c50d470e3284963ca64f54677aec54b5272162bf52bc8142e1d4183fc017454a6b5a496831759064024745978cbd51a6cedc8955de4cc6d363670a47466e82be5c23603a17bf22acdb7cc984af08c87e14e27753cf587a8ec3447e62c649e887a67c36c9ce98721b697213275646b194f36758673a8ed11284455afc7a8529f69c97a3c2d7b8c636c0ba55614b768e624e712930f776169b01715725351bc74b47395ed52b25a1313c95164814c34c979cbdfab85954662cab485e75087a98cc74bb82ca2d1b5bf2803238480638c40e90b43c7460e7aa917f010151fab1169987b372abb59271f7006c24e60236b84b9ddd600623704254617fb498d89e58b0368bcb2103e79353eb587860c1422e476162e425bc2381db82c6592737e1dd602864b0167a71ec1f223305c02fe25052af2b3b5a55a0d7a2022d9a798dc0c5874a98702aaf4054c5d80338a5248b5b7bd09c53b5e2a084b047d277a861b1a73bb51488de04ef573c85230a0470b73175c9fa50594f66a5f50b4150054c93b68186f8b5cbc49316c8548a642b2b36a1d454c7489ac33b2d2ce6668096782a2c1e0866d21a65e16b585e7af8618bdf3184c1986878508917277b93e10706b1614972b2a94c7310fe9c708c231a1a8ac8d9314a529a97f469bf64962d820648443099a076d55d4cea824a58304844f99497c10a25148618a315d72ca857d1b04d575b94f85c01d19bef211bf0aa3362e7041fd16596d808e867b44c4c00d1cda3418967717f147d0eb21b42aaee74ac35d0b92414b958531aadf463ec6305ae5ecaf79174002f26ddecc813bf32672e8529d95a4e730a7ab4a3e8f8a8af979a665eafd465fc64a0c5f8f3f9003489415899d59a543d8208c54a3166529b53922d4ec143b50f01423b177895edee22bb739f647ecf85f50bc25ef7b5a725dee868626ed79d451140800e03b59b956f8210e556067407d13dc90fa9e8b872bfb8f + +comment = Official test vector 1, seed: "d81c4d8d734fcbfbeade3d3f8a039faa2a2c9957e835ad55b22e75bf57bb556ac81adde6aeeb4a5a875c3bfcadfa958f" +entropy = d60b93492a1d8c1c7ba6fc0b733137f3406cee8110a93f170e7a78658af326d9003271531cf27285b8721ed5cb46853043b346a66cba6cf765f1b0eaa40bf672 +expected_public_key = 6dd406b49b9ca035467fd26c6c0b824bea310f435fbe8bbbd3430b5c39889e6b117e994e2f08823a33789ff858b72715323c6204a241d9835ec0da85c5884a8a96210219099c8c383c182632280356c1b4f298405258a170e81624e861fc1082d31867a9037e3b90b0aeeaa064d27020da7ba79398fa92a963a8a294e7720bd4cd9ea213f08063079c4d55b094bebc4e979444f462b967972e61206fcc80337911b02c7396bc64405ffc0b77cccd2ebc121a734037cb90b77846b2359c30a451beb20a6d72c238284e5df2ad1cc1a33fd5a104965c86251a596360d541240a4828231a827a0168b6d8ac7e27328173886453a9c91498765c2bd9ea9f666bb4a1d60f992538a1a746df845574f99adad23b9744afa81c7fb79a32b175706454438f46b8985132b8e1cca10c2b0fa011eab2428b88cfef9378a5228e55d7463dfa5022c998abd6354118b5116b3bc1004f0008134b85a1cf2a9f409a10e14b6d06c26d8e355864c35bc71b60d5cac33a513efdf6b9bb83bc880983682c8fb8a81b6927ca52e93835956795488181a8cd82b1a50dd18a25f35e2643cdd76c282e7018bb99624f031418fbc8052c4179b43a5998be9a20cd2d8a883b313ec282598202add6471971c88cd9607d3a8052519930bc5bc71ca4652352b4d02620b8d983b9849ce8b8935f1a4decc3250de7b0cfcb49eb7b74e0b5792ae97633b092081c3c6bf58f1b242ca07610c3387098ac3f0f9043901c614590c4ebbc64ce1971e824694a999cbcc430ae923a1432b6a4911162213c429481394a27006b9d48c0ab5801823d756bfd8c6919502d613594aec81f5669bd4e8495292606959292467ccac7f688333b3f48a39fce5c42c9c2653886a5adf4747cc943b2416348f46df5b58e4916ba64e9664a4baaa3e0a9652408c8e5076c226c3a7932c42a846949a2a26b4e2c452f86cacfe5c201ae1321ab5c2cabda557648a849241f077a799edba3582202cb27763047219f5546cf18819322b9c63974b322b949baa491d97c70f20545886c87086721d3ca2aeab441264b516975ed0c6044a425853528424532e4d721e85cb0bf65c26082c790765b062916fac4a0dcecbc2e900c6f600270838e2df20ee0a907e3613dcee049c445640362c980a292f123c6c9b5918f21443c996016c44d2a124c5925a8e0c48e89bb167a129fcbf67adb89903e1249f6028bc176bacc722366139858e583eb582ada714e79b5ad1bc1a6f18754e100624620968d0702e080befec425bc16b650a307802004c57590897c87e65347f32c324569051d798bebdb421eb28b2d1a0c662444c7db32bf97845d7225c7539f457894eb87606fa85b5e804053fb6ecdea773566c006e540ee65101d99bf314181d666680985c78b103dd00a040dc69cff389fea7c18e48a363b943ff042b476dc86be953a5925076cf749a62a77a9406165d31dacdc3a677b9114d8bf84b43f59f647fa4023535140fde04285921184809c5f193a7df45f62187854061a4d6754da528f3b71a134aa487d9b5f7cfc6838108b8b95b51f5540c9ea5f29990f7be07efd502461033f103723093a16dd96c098977f81330249183cf35a636841bd1a9b9796f13f56be785d942d7eab011805cf3504fce325b6a5ef1aaadbbb11c662b9d2 +expected_private_key = 94b49ea42526935245c45a7d580b6aeff8bbe0f5342bb8bd2550212ad5935f45cba7caa6df914007fba79e9946c9433a86a2c4202bbdcea008af78975e6619d3582787530dbb7318a530b7b5a27d24258c7ccaaaf505ca92cb853a5818d4269be812becf169a05e71eb957557787c2f3b72315281dba87476b157a06095a30d52b388ac22840755b43440a931df8a709dc435b415a7babbb04ccd93cda00ca1fb090646b1d6514813368a794d38c907163b5917496b018c519b160c5144d6424495626e3a5ab9ffb8d8d3168d77599a88a1d12c07d86498d88dc1af7fa7de15073fd4b62801c1a902b215e7cc3eac350bb63adeaf9c7594844795a9a6274aa3eca0cd10891f05795a77b30add76b6b1a35338b8156690ca2ea1c9c3b602b23324925314f726535b36dfb355225d37e7c85be15a5976a8a6ad4e2c35d4c45acc954368ba6df88a47dbb8c782336f7ea507a6c2d26d952dc03b4bfb89872644084783ab493cd72d3befc2c803b692729638af69b03e6db9b82e678a42969fbe770fef65723f77da6437c20b203601c884a9b9e08c0b1ddbbc1a66517dcfc76b3f125f7795e5ddabef0cb00119778575513e05ac38a7901a0e8c8794685c0f274050097bc50168818a74aba5d71980f5c76279ec0214cd51efa8a21391567fa052e6dc0cf9bf216cff9287c80693645a53d71b3d7509f6a432d51b2b0aad129b594278da74ffacbb713357d735a744b7c65e482b7e172c67a5b4edabaae11222b8bb6b4564ab4fb20c28b4981614b69bb188db6056607e089f64803d89210c7e604266b00548a2ae27996196a6d6f762c27b22731f7942543ccef3856edf9ad1b1b1652a33c3e038dd9b2cd9a4612ce174315e67b26dac767e50e68508d104bbae1a2b89b78266d27b109f90bce1581a8b8888c90c1c4ea5fc1f009d5073780cb4545087c88026b9b9abddab923db52620713c8b5ac3301e8715ac39d13084926e841fae41a7bbb7912e10680a78c0c363a251720b2d69467b6cac5d894f862595072a7c9b14bfefaa2fdcc75cc42892cec6184b52962b9b73d663b7d76c1ea499d538bb45a4caecee0c8eb93bba5ec1a8c936156382b10102e3211b2dc15663412805f60590ec33dbab80d2a3bc05fa8af5145644f712e004c20f799650159c40dc952c9a54c27e816c3a6a95efbab24a31f6c402300f9baf88a46644b4df8a24979e80dc30425b9e75a753a36510b87c5fa95cbf36e19a12245876003b54d4e008ef7ab9d83c5a2406014b5cc33b6167f4c452af45084b7412ec19556d82b0a6a90c1aea60a72312d8a7a8e5060189717094ff950af2b503988964f0aa227c523487471d3bc905b6672be20bc714729b7a71478b07a19f777dec546c624723af7b5f6c142274ac5652a7c2d7abbf1171f2bdb12f1ecc876681a600806d6fc229e6a8f6424419187bd22e49b8f27486db25371c169b3f61e81131b57659b1030a959790ba5d6424580b1f588326db9cd01a260b21b8c42062b883854fb173ea7613764d41dd6b89468c7ba6c4236d1a0436b945b8b340983023139293fc48c07659b955453bba07b0eb4e2a91f594232a47c65c66e1c5c8279f179925c55ee3a0b6dd406b49b9ca035467fd26c6c0b824bea310f435fbe8bbbd3430b5c39889e6b117e994e2f08823a33789ff858b72715323c6204a241d9835ec0da85c5884a8a96210219099c8c383c182632280356c1b4f298405258a170e81624e861fc1082d31867a9037e3b90b0aeeaa064d27020da7ba79398fa92a963a8a294e7720bd4cd9ea213f08063079c4d55b094bebc4e979444f462b967972e61206fcc80337911b02c7396bc64405ffc0b77cccd2ebc121a734037cb90b77846b2359c30a451beb20a6d72c238284e5df2ad1cc1a33fd5a104965c86251a596360d541240a4828231a827a0168b6d8ac7e27328173886453a9c91498765c2bd9ea9f666bb4a1d60f992538a1a746df845574f99adad23b9744afa81c7fb79a32b175706454438f46b8985132b8e1cca10c2b0fa011eab2428b88cfef9378a5228e55d7463dfa5022c998abd6354118b5116b3bc1004f0008134b85a1cf2a9f409a10e14b6d06c26d8e355864c35bc71b60d5cac33a513efdf6b9bb83bc880983682c8fb8a81b6927ca52e93835956795488181a8cd82b1a50dd18a25f35e2643cdd76c282e7018bb99624f031418fbc8052c4179b43a5998be9a20cd2d8a883b313ec282598202add6471971c88cd9607d3a8052519930bc5bc71ca4652352b4d02620b8d983b9849ce8b8935f1a4decc3250de7b0cfcb49eb7b74e0b5792ae97633b092081c3c6bf58f1b242ca07610c3387098ac3f0f9043901c614590c4ebbc64ce1971e824694a999cbcc430ae923a1432b6a4911162213c429481394a27006b9d48c0ab5801823d756bfd8c6919502d613594aec81f5669bd4e8495292606959292467ccac7f688333b3f48a39fce5c42c9c2653886a5adf4747cc943b2416348f46df5b58e4916ba64e9664a4baaa3e0a9652408c8e5076c226c3a7932c42a846949a2a26b4e2c452f86cacfe5c201ae1321ab5c2cabda557648a849241f077a799edba3582202cb27763047219f5546cf18819322b9c63974b322b949baa491d97c70f20545886c87086721d3ca2aeab441264b516975ed0c6044a425853528424532e4d721e85cb0bf65c26082c790765b062916fac4a0dcecbc2e900c6f600270838e2df20ee0a907e3613dcee049c445640362c980a292f123c6c9b5918f21443c996016c44d2a124c5925a8e0c48e89bb167a129fcbf67adb89903e1249f6028bc176bacc722366139858e583eb582ada714e79b5ad1bc1a6f18754e100624620968d0702e080befec425bc16b650a307802004c57590897c87e65347f32c324569051d798bebdb421eb28b2d1a0c662444c7db32bf97845d7225c7539f457894eb87606fa85b5e804053fb6ecdea773566c006e540ee65101d99bf314181d666680985c78b103dd00a040dc69cff389fea7c18e48a363b943ff042b476dc86be953a5925076cf749a62a77a9406165d31dacdc3a677b9114d8bf84b43f59f647fa4023535140fde04285921184809c5f193a7df45f62187854061a4d6754da528f3b71a134aa487d9b5f7cfc6838108b8b95b51f5540c9ea5f29990f7be07efd502461033f103723093a16dd96c098977f81330249183cf35a636841bd1a9b9796f13f56be785d942d7eab011805cf3504fce325b6a5ef1aaadbbb11c662b9d22cedad700b675e98641bea57b936bd8befce2d5161e0ef4ef8406e70f1e2c27c003271531cf27285b8721ed5cb46853043b346a66cba6cf765f1b0eaa40bf672 + +comment = Official test vector 2, seed: "64335bf29e5de62842c941766ba129b0643b5e7121ca26cfc190ec7dc3543830557fdd5c03cf123a456d48efea43c868" +entropy = 4b622de1350119c45a9f2e2ef3dc5df50a759d138cdfbd64c81cc7cc2f513345e82fcc97ca60ccb27bf6938c975658aeb8b4d37cffbde25d97e561f36c219ade +expected_public_key = f5a35b4ec7538b62289dd1204db91ac492b610538c93eb5f2637ad97dc88f0035ff3cb735cebac9be7ca78a4149cf10b6d93283050167e737596b711a9f32a0f6909975055ce6632f4b42cf9a2361cf69047b5bde1868dd745a82cf473ebb30d86a71793364f70b1255b1c2003f166683c936a7977df156a84051e69b95e02616dd3090dd38086ef3bc12353bad25377618965c2810fca929dfbf46f20360fc847818cf90dbc044eed16b3b9052c5c70a5a430441e53a5527a689f49b35ce82b84d6057c5269fb60c710c5731f431a970b86431125910277fa7c310a2285117b47b95054e4174a1eb11da3e3c26ac25619d36712b11b2ef7405bcb943dba10d50c0436b50de5b04d96488a38f53df37895ac20c10d959d81a29fe1f319ff871831d93c54654172a02e65599f9d820ab037438e62714be6c7d868b66ac03c31c8753a062318ca36b6e59d340b9696d47c38f115104765865353a05c8fbc4b0a62a96577e94c17094de259006f169e75b8919bb4c37df6787b59bec8fac999a90b73123a5cc8772ad67585c879ebe05b5c06afdb440adfbc4ad400d0e634822a843e9b165f2f0bb748e231c0e0ceeca8806046b5dea7cac614a5e2cca3767556448785dbc739caa9c58fac291a0bbe96e9ad36a4a1d9c96939603bcd76a81c040fba27a5a39a1c387cac9d1b086e512468d378e96039aae2622fe5483673850d411ab64b892f2c29853822eae76feaf5716a660b55c2020dd3323a150ceef9ab79925d2bc09cc6faa31727a5912a7f5e9051f8b94d8866c4da173d3f2a388e6c44218338cb85702cba2f602c24e1788158b0129e7c15dcf2cc6ed55c54b456cacc07d179b432a5aa63e8ac59f0b6979a833d99c13aa0c56cb65928032e2f30583fa6c038748ceb77a91c631dd09b575f13126f1447cab00bc9c85fc7601da44ac5fea5adcbb599a409bb1a67b24ef438d750bf87a8814df22449c9256da1286dc623e81546c283b80cc88c48f003678ab35380a6da551ac7041cd5112d59d15a80032c28b61a1bb3b8a7267adf4662b5963468b3bc5918418f980cd7db3946c5a67f864dc1f3adea12142fb71fda590e070007662b5c3b8b31af169a092a2e466aa01ae879641bc4d1d62523ccaa3ed436cc089b2621456114215d1a9eefd1016dc81d5320956fd942bdda40f3a033e5170ca6a2c57ce17eafc97aa0959cf37b92e789636f159faa827ddb895553540d52a61edc1b3dceb22a7231c48037cc78594718902333d0bc4fe6b29352991e2ba5d31217457007057b9d3c07c39b7c7eeecc222d4415d6d9272ec50b81520bc607592947c86d2612e434c22513235536cd08f10022b97675b89f1de58130eb6797380f6b68773dfbba0664bb7caac84f7b06711587c6ecaa383505f62751c8346bdd502a58e9326e4a0d2d29226f794ad0064b2cf0a56e6a67c18b331f5537d2fc6c3aeb52a5c3313118cb7d159b8372158c1a7bfdcb65d426458edbcf8797383e272d3b18bee68c4d74e25751ab1ce4567d66b714cd62a8e9b886baa812a9f50739e30f296791414727d55003bcb52ab6bb74cab215b348ad06f974192cbd61576baffc815999ab8556583024cdbd1c4398f4a4ac60e8cb68627382a145f91be9d78fd51ba5e3fcbc3155b62bc07751dd +expected_private_key = 72408d44c2be6e83c803da2846d852dec1848ee41504b5c91f774f6e512b51f71dd1520203c486f63240bab4c1dbb212299753b8627f9bf2117cd6a83be4075a385782ab804a420972eb25bc553eb981aae7d7a715111338529f6116c10b10bbc20b31c3161d4bc1a5f050220b5584abd6a546ab51a9a10120ecc131220502697e9d61bdbad346fc43824135692204b49b5b377b870b7b28c86946077a215acaa11abd851eca479988bc69ccc9975eb42a33523c525434bc594217912123957dcdc18e410a6d6a811bed8a0b4135b56f4562f343aaec34396bb0556d7962679a76934b016b4b4bacc14650c55c3aec9bc2e85b548b5d3eb891b6596f0c44009bd0982d98bf81ac77c8da98264a719cd8568e48279df9c8e9552b94aa773b43a70742c75f041915752551347f00447d72d934bec553bf1014f4276015e0b4db77cdf8c546af05861804a5b7d92838744511ac6c8be55e883acb7775b98c4b4c9c8789aee317f8f02b4127a6ae879d02c13772a003928041c53351d8d70ce59b14cab5ca31d717f69129c8fabe46582ca5298ed156209c25bc57870eea34255ce1b4c426211f957d74876dec169c4c516c8716b3ddec6c3e610c31f0c52e13650f0b1c70124dee27111a76abef82c8fd3172d554121e6a87e9d3b58e11379cb812b7f4b95d46104934ce75c715771204d7c46aa9439836453bda709cef3bc1c9341994f25c48b5c80fcc8a67e316c431bd302b20904456b3283e9ba1bdde494ce9f8a3f0b432dca69d0ba9c43c703e1616272cd6b904d5b6279c55a539b7e46a601b28493e38a2cd9ba66d997c8c5c3b7631822c529fa48835f8a08f322615e96b9087c71c9f262b68851f00486489d25c92221c2759c89440ce733614b8c7a06f26b374cb4f8a6a7d67da521eba7232c0a4c066886b8450755896cff77a369bc8fd4b3b5b0731452a908acc68366b8edba66d09f212c9330c83990ab2db7095d708b6c3589bf929fea31534646537d2ab023887fc286f00f46f8a360476998e4fe7315f03c234929247bba2a05297a5e01aa9cc6158458e2302513274a2e3359d66126f5fd44d348ba2b634642ea26c6cb616f64a2d2c819abaa48bc565ca0ab67e6cfab1129a0144c10a003b44bd3879b4e62e0ad3a58bd86a7030be34309f3309642b017b0aa03ffab4012b36adc49a95ddba67cd81306ef6bb20b546bcc55eac2b815fb38bae991d6ae7aa87d42ecbc740cc816a3ef42e9d204ca0177cdb30cdcb870386c320ff51b137578b029125ba518a5b887d7b9050dff113468608f6335ea81a59b87cb753724ed0e159fa4709ac018a31194247a6a9c65443a35ac36e11bfa6a8559cf20e50116ee5fb3780fa03dcaa77846b18c04894e50486acfc3b8feabb8cf860d79c2734a700ab731739244580653699b51b7fc440b8cb1d6bb1360291bda5b11aeda3c77a25b40f96763a372512561e0d52848fd6a3a8241dea49c4c24692cb43aa22067072fac2dff7898f298cbae17f9ca68a132321932295161a1f31c178932004d17854d7d9c69f6640ee216747102280191a5695433763b6cf3b86756aae22a37f9f6920c361c2ac68a7e11c8f5505af2100651595bff5a35b4ec7538b62289dd1204db91ac492b610538c93eb5f2637ad97dc88f0035ff3cb735cebac9be7ca78a4149cf10b6d93283050167e737596b711a9f32a0f6909975055ce6632f4b42cf9a2361cf69047b5bde1868dd745a82cf473ebb30d86a71793364f70b1255b1c2003f166683c936a7977df156a84051e69b95e02616dd3090dd38086ef3bc12353bad25377618965c2810fca929dfbf46f20360fc847818cf90dbc044eed16b3b9052c5c70a5a430441e53a5527a689f49b35ce82b84d6057c5269fb60c710c5731f431a970b86431125910277fa7c310a2285117b47b95054e4174a1eb11da3e3c26ac25619d36712b11b2ef7405bcb943dba10d50c0436b50de5b04d96488a38f53df37895ac20c10d959d81a29fe1f319ff871831d93c54654172a02e65599f9d820ab037438e62714be6c7d868b66ac03c31c8753a062318ca36b6e59d340b9696d47c38f115104765865353a05c8fbc4b0a62a96577e94c17094de259006f169e75b8919bb4c37df6787b59bec8fac999a90b73123a5cc8772ad67585c879ebe05b5c06afdb440adfbc4ad400d0e634822a843e9b165f2f0bb748e231c0e0ceeca8806046b5dea7cac614a5e2cca3767556448785dbc739caa9c58fac291a0bbe96e9ad36a4a1d9c96939603bcd76a81c040fba27a5a39a1c387cac9d1b086e512468d378e96039aae2622fe5483673850d411ab64b892f2c29853822eae76feaf5716a660b55c2020dd3323a150ceef9ab79925d2bc09cc6faa31727a5912a7f5e9051f8b94d8866c4da173d3f2a388e6c44218338cb85702cba2f602c24e1788158b0129e7c15dcf2cc6ed55c54b456cacc07d179b432a5aa63e8ac59f0b6979a833d99c13aa0c56cb65928032e2f30583fa6c038748ceb77a91c631dd09b575f13126f1447cab00bc9c85fc7601da44ac5fea5adcbb599a409bb1a67b24ef438d750bf87a8814df22449c9256da1286dc623e81546c283b80cc88c48f003678ab35380a6da551ac7041cd5112d59d15a80032c28b61a1bb3b8a7267adf4662b5963468b3bc5918418f980cd7db3946c5a67f864dc1f3adea12142fb71fda590e070007662b5c3b8b31af169a092a2e466aa01ae879641bc4d1d62523ccaa3ed436cc089b2621456114215d1a9eefd1016dc81d5320956fd942bdda40f3a033e5170ca6a2c57ce17eafc97aa0959cf37b92e789636f159faa827ddb895553540d52a61edc1b3dceb22a7231c48037cc78594718902333d0bc4fe6b29352991e2ba5d31217457007057b9d3c07c39b7c7eeecc222d4415d6d9272ec50b81520bc607592947c86d2612e434c22513235536cd08f10022b97675b89f1de58130eb6797380f6b68773dfbba0664bb7caac84f7b06711587c6ecaa383505f62751c8346bdd502a58e9326e4a0d2d29226f794ad0064b2cf0a56e6a67c18b331f5537d2fc6c3aeb52a5c3313118cb7d159b8372158c1a7bfdcb65d426458edbcf8797383e272d3b18bee68c4d74e25751ab1ce4567d66b714cd62a8e9b886baa812a9f50739e30f296791414727d55003bcb52ab6bb74cab215b348ad06f974192cbd61576baffc815999ab8556583024cdbd1c4398f4a4ac60e8cb68627382a145f91be9d78fd51ba5e3fcbc3155b62bc07751dd3dbc65b722a8982d058e27d409f04f744551ecde9015b62607cf67bb8ececbb8e82fcc97ca60ccb27bf6938c975658aeb8b4d37cffbde25d97e561f36c219ade + +comment = Official test vector 3, seed: "225d5ce2ceac61930a07503fb59f7c2f936a3e075481da3ca299a80f8c5df9223a073e7b90e02ebf98ca2227eba38c1a" +entropy = 050d58f9f757edc1e8180e3808b806f5bbb3586db3470b069826d1bb9a4efc2cde950541fd53a8a47aaa8cdfe80d928262a5ef7f8129ec3ef92f78d7cc32ef60 +expected_public_key = 25949faea67e908040a25908a7e33199d586f22a3cf5a7ac49ea41bf83452528c7f12118e0685b09d30947ac76f4f72e89bbb7579bba13d3cd4e262fcd385eeca8b780d7b6d3343ca7ec1958569c49808b97586c263903989928ab9b63efac00b27037637897556b8aab33198c144d226ab9284541400138e03a31f10cbf1cc4bf633c3ad70c65218c1b18770c91d139971574dd90317a421b8bdc56c02c2564b2496793a27a12009ecca141aa337e911f0b448d913394ec1abbb46a568ba749f0fb0a2c4562637a220225a0afac0e9a53ca4f506391d7483932814dea886c89879237a95c03684cc0c2d2701b40e5b3a340316159cbc56bae84130f2fa830501257f8a8948f482ad194ccd4f6ba6c01bacc4c1b9c3188c3d002f8f18f62393b373396f6c510308b6754b8ca81f53d5a1512ffc3428a6c2a543a61fe1193a86b97b260339fb43a9f0375b1c2c62ddb4c1f6629db701b2d2a50577cc7d5d55a30766400842938d83a6818a128310d16648614a6b6df6b5d8d9a8d0ea4a127f4233b9a50ba539f5f01b62513a5c7bb8ead8463c0a346252c94f753a34751b078a06dd785ac6532c2730caef7249515514f8e18713c2a72d8949de781c698e708deb35448ca1df99b8e09ac4faf694ca71b7bd41bb7024c0435424831424f680a77f13506a56c97b6966afac4b90fe60bf5e7507e6a7093c47b5f8ca47d86c767455d645c502d82cf5b1ccd8880758bea855dc71b1c98494862030202c06b935125654ee498a7e7f37254084aa1795484fa77926c8b438592f4d7baab58978329cf12f461b1f93aacc7117980774e12355af27e506a2ac63c4abfe585b2123e2404b9ea9753fa101604663d07e153c07b743b23c56b86a91ca34111803a1f5865e47807c012a81885104495499884b495ea3f457a2ae1363221b2a94be84e27cc9e8bca44f8fbb92746821782b3b92b1bfe87127f34076bd4acabf60e4f9b97a8f63008b584d0221af927c67d616bb9933be9486e38d7befda11a27175f670600041a6dbf0c9a4364b3ffd28eceeb0c8077c3aba19c6123a20ca72c0776aa8e21a582168591c7c1eb146ba820c9ea1aa3374625c8744612bcab37250ffb34a89d305c35169660dc9b09f7c960a4c4450b1a2e56088e8605fd75a35eb620c3c90b93fb001e03c006a15b67136ec1c354d405a61014821fa9590dd212cc6095dd011bd8801a10f08f15da21c14cacfde606ca02b7e2e1483e3514cc6bc88c2987587458d77851e476aea14a94c176a4eaf865d58c033ba2280ec0521bc53dcc3772d48258593a5a1f9974228652b8cb4a08296eeae869c733a316d926d400cbb09a2daf532da06522da9694cec2a29cd4c87f6a6c837c6ef6182a30548afdb807bf447953a3827db3122bcc7e33576a33a943492a61f3625dcf412793996c664a4664b3666c154f90b40c3ec514c4b1a2d265a23b897177342b76c69637d52e356620f468480472923313a658683566dc8f8fc1079f248f9d8ac67d4ca703339ae28a86edb4bc21db231dfa970249aeb1e2138bd4791352151520a73b0792a0e77d4967bc8b46740cf5599d4056f382c9006b79938825dfe2806cb6afe7523d940792782d978970256c691434f939b02c14f42b1874087ea68917c2f3e31315e22581 +expected_private_key = 548a01803a231ca63843872abf16b2c4b9ab7407a093b354f8882c6775bacf2931de0a501c5a7ea7ea5c3baa067290b9fca059d69cc6de9b772cc058470544b64b11abb77f490746384b83283740f0702e17d046759b61e75030f187c2283045b22b4f9e222ca44980dcd0a42e5704504bb3e097cdf93a99f057ab21e3ac305666710c3b4c1b750aa3ac0f00a6f592770d8082f6157addb170a956456c7616c856657835970578b35fa87d8f79c2ae54ad36823c6a13a4207453ff324f17d13d43a400a2102b6f6224e6f2132bb14a32fa3f10a446d7944428b66e0e0a04b204c5993c03c294927c60540f836572793c8825376332b64d109bb7273147a878ff0b0bd2808b62104515d0824c90a4e249b4ec8c0f6b572bb621b7a74089de4b49eac5a3cfb61a5d6b420779a29e1c5ae98ab30e01a0b45538c9a14ce61c4dffa27a4e462757a3bdf00c0206c5bf5233132c47b7111771daac633e22132ae82cbd616ec92b4e9d1c88e7285b84d9a12e14897a020c06832e9cab42102ab999838a93a77141d12ff068ac13dc4c685328c7036ccfc2087bd92ca5a675cfe40ae4c32b28eb770da04234a456eb889ef92a93a0d3ada8061599d99cd8a96880a2b5e440766a9c81e7a24f14c295283c333a0576b49c569c99450f8714160c4cc49828090bc2ca390094e14bd6a3011a5c038f0927fb4bad38440ea9f96fee99141c564a91f9c86dc72498f89d05b047461699fbba62ec28698e273e2b8436a6eb8c9c094d3404853a45137881c691352f6240abd2298488299331cc03b1a3106f242d2871525587888e448d0f45a61480bd7e377dd5b63e143093fcc8bdaa563264baa458649ce7fa5826e4b9b49159e7541d432143c5093a2a5bc5b835535fe7395ec556bd467a10975ce26304bb892d056a6ea4c5ce08d033e9334cf7f6750cb62209ba21f6b147ac875c3f1195d9d991e333c7c25465176b8a566a71451b8305f35d831a36c57c64b664c707f3bf08b54ff3847f1ef0ac4b32ba7d563af40228b2957b8a95063a65bafaf86609b4bfe1127c029c2eb224465e1c178c74cb5db4c0c2aa46456761ec4a528ab2bb8f92c120a1b78a9517a29c8ee408ae7fab4fdfb1941cbbae4c3630f407a2c23c4d10a58a8e64546727153d61766d0242c5132236f637b7323905f4a7811c1b8019a808946c11a54f8ca6c16e06ad9a685edb094616a80383a79e482c611760c249988547194266000722743346d13c80f72117c25cbb48490e05789c6a5e85ecbfbc73669f249c10a12eca037dfd15994cbc450eb40868abc2fea05b5058429b6b04dce2c4e2630a13dba2bec9be9c30b9f90b45a97040a1f227200ccb4a4413c8b0c5b169830d451bc7993eb3d5b4d914a02c3183b7423d61101b0e3ac0a2a18673126f69511f27ec55e28b975e22a8ce800c37473cac71788a42cd39c26c176c9c255c4355a62c0b84cda33819a1ab6c07bbc4f2847aa23a600829cd516485dff565de9c392791b84bdb4580326f5128556d160100622affa2756e1cbd0a0a1f217a0c198a6dc043b1c50813bcfb3c2488a5c02c79393b65f39990b610274fa77b814ba93784562e0794c179549ea0927d9b4a25949faea67e908040a25908a7e33199d586f22a3cf5a7ac49ea41bf83452528c7f12118e0685b09d30947ac76f4f72e89bbb7579bba13d3cd4e262fcd385eeca8b780d7b6d3343ca7ec1958569c49808b97586c263903989928ab9b63efac00b27037637897556b8aab33198c144d226ab9284541400138e03a31f10cbf1cc4bf633c3ad70c65218c1b18770c91d139971574dd90317a421b8bdc56c02c2564b2496793a27a12009ecca141aa337e911f0b448d913394ec1abbb46a568ba749f0fb0a2c4562637a220225a0afac0e9a53ca4f506391d7483932814dea886c89879237a95c03684cc0c2d2701b40e5b3a340316159cbc56bae84130f2fa830501257f8a8948f482ad194ccd4f6ba6c01bacc4c1b9c3188c3d002f8f18f62393b373396f6c510308b6754b8ca81f53d5a1512ffc3428a6c2a543a61fe1193a86b97b260339fb43a9f0375b1c2c62ddb4c1f6629db701b2d2a50577cc7d5d55a30766400842938d83a6818a128310d16648614a6b6df6b5d8d9a8d0ea4a127f4233b9a50ba539f5f01b62513a5c7bb8ead8463c0a346252c94f753a34751b078a06dd785ac6532c2730caef7249515514f8e18713c2a72d8949de781c698e708deb35448ca1df99b8e09ac4faf694ca71b7bd41bb7024c0435424831424f680a77f13506a56c97b6966afac4b90fe60bf5e7507e6a7093c47b5f8ca47d86c767455d645c502d82cf5b1ccd8880758bea855dc71b1c98494862030202c06b935125654ee498a7e7f37254084aa1795484fa77926c8b438592f4d7baab58978329cf12f461b1f93aacc7117980774e12355af27e506a2ac63c4abfe585b2123e2404b9ea9753fa101604663d07e153c07b743b23c56b86a91ca34111803a1f5865e47807c012a81885104495499884b495ea3f457a2ae1363221b2a94be84e27cc9e8bca44f8fbb92746821782b3b92b1bfe87127f34076bd4acabf60e4f9b97a8f63008b584d0221af927c67d616bb9933be9486e38d7befda11a27175f670600041a6dbf0c9a4364b3ffd28eceeb0c8077c3aba19c6123a20ca72c0776aa8e21a582168591c7c1eb146ba820c9ea1aa3374625c8744612bcab37250ffb34a89d305c35169660dc9b09f7c960a4c4450b1a2e56088e8605fd75a35eb620c3c90b93fb001e03c006a15b67136ec1c354d405a61014821fa9590dd212cc6095dd011bd8801a10f08f15da21c14cacfde606ca02b7e2e1483e3514cc6bc88c2987587458d77851e476aea14a94c176a4eaf865d58c033ba2280ec0521bc53dcc3772d48258593a5a1f9974228652b8cb4a08296eeae869c733a316d926d400cbb09a2daf532da06522da9694cec2a29cd4c87f6a6c837c6ef6182a30548afdb807bf447953a3827db3122bcc7e33576a33a943492a61f3625dcf412793996c664a4664b3666c154f90b40c3ec514c4b1a2d265a23b897177342b76c69637d52e356620f468480472923313a658683566dc8f8fc1079f248f9d8ac67d4ca703339ae28a86edb4bc21db231dfa970249aeb1e2138bd4791352151520a73b0792a0e77d4967bc8b46740cf5599d4056f382c9006b79938825dfe2806cb6afe7523d940792782d978970256c691434f939b02c14f42b1874087ea68917c2f3e31315e2258194391b7a41175a41c15cd995ebc69c83b29e4bcea6c186611dc4a79578e37f4cde950541fd53a8a47aaa8cdfe80d928262a5ef7f8129ec3ef92f78d7cc32ef60 + +comment = Official test vector 4, seed: "edc76e7c1523e3862552133fea4d2ab05c69fb54a9354f0846456a2a407e071df4650ec0e0a5666a52cd09462dbc51f9" +entropy = 66b79b844e0c2adad694e0478661ac46fe6b6001f6a71ff8e2f034b1fd8833d3be2d3c64d38269a1ee8660b9a2beaeb9f5ac022e8f0a357feebfd13b06813854 +expected_public_key = eb14cbcb226951857be4b3bc2a1b578b148e824a2414412a3d57c8213793c418bf2e0803de4a16eb9c8b5d53718d38ae40299b89793f14741792bb10d9c21d5f06633aa3cf1cc78d0dc99983076f8756b2f96b2095e0b812160fbb9494038a88057671dc692f14a956d5e6565ff752d28237c70b8f8528cb1a04cfe5e6495bd3b46a3264fd7364e0d54f2ad27dd27b022efb3d3a632a7f99551bc3317250207f2658f363164a9631a34b468e9b3c9b34b27a3a02fcbacc516469f69b3a51554b93e05fd6dcb098e8af8a3681ce89548ca311e2f5421ca1496a532366435cfd56a26a245ba68655db99cd113c1ad1170bab16a22bb3399e45c6a9ba45b5dc5da04a426c635c844744c557af7e49ca12437cf455b302c037bab4954627a2363020c4ab5ceef5aaf2e352ded62fd6a52acb70c84723a527ba34f179204b26ac10692822ac66cc56bfeceba65c33295fb805c596a48a0c59477405c21ac3edd2c27e56c19bc84d710584ade48647c681746038ac74ab73591fde872ccdfbc3cb1218fe12acbfec9248c00e19424b1fbca70fc5193151aae1415416ba2d7faa6a2c745cdedb94295438bb182dadb77182b2be5bd1ce0cc028b7eb71ba8cac8585cba3ca01620b63fc91bf3c210f67c65c92f893fc616158c104a5799720ab0fd907798f0678746475c8502029865dd653209a39c0c362258a266b1b244a4f42b4adc1c6bf602fe61125c3b989c018c0a0e0c73e35abc97c9ee695cd265909af82548b865eb4238376a6ab53a6baef185799489f64e200fb542ec3d1b42e8b3960e02730936d620360ff4570b4079b369a83629b599e7b27ff48c37f727a4f93bbb2d4b7e1c73fc0d6668e53c1efe0a0b547b1f38c51f4001654f45bf0e5766ca1c662f2cb99a6bd42a17f89c80a4db03c990a81ae9487e1a52c13720266083e152061aa08c03a7a703de58251f129546a42282515a3e27195ca97ceb39b00566cf4acadaf320d5c88c75ff310f10bb5ad738d38aa47c945235e1730b6cc227a194dcb04ce046a22c37319d910060b594bf8a64f2c4b8f26000031948046721e6546893a341ed2c32804149954e3788ea5054c51a43da89f9c789eda6727bdd4be32b15d47b9c327ec68422813b00950bd73c96c7175274a5ea8bc128a7c0993031b4e8a5d3c074d2d1abde8239d5af58c06509b24109c84297e3feb447fb3926dc19f39211119c4597711a222b341cdecb0698580e422a951db2305d4a7a871967db945a60439de206955c371ea52452f865da438130d2b8eab3669a97911258b08931a2e36c6c390b6845e8076a0d621d7692971ba71bda0b8aaf7ba0ad3c4f05ac23621a146c68bbc501854062b924c3a64916a1b9b19ce5b466f8672ede621ea987f83495106dac22ffab6f4a5cca797587126ce50589f68a2084875bbb505c7ff46922eb496da260e3719cdb2f23950455dc8d36e3932518bc11bfcc067ac533360b86550b6ad09e93dbb092be410721d48bf56b3594b93cbecfc785a5852b598425e4c4cdcc7cae1907adea5772276b2929b9507db5c06041e5f9846506055417c6fa091652a4a424bf6396d46365bb40601e3a55801b93a1ccf39126ba7f025a2467f6d44de229c527f6e4e7071cb826cfe76fea483d9163eaa84f6afac495a +expected_private_key = 944ab695c2345bb67894d451ea2a5c92561a5467c769352379950879899c9cac9d05e89cb2729b2bb47724923fca357623c69643569d66912b2f9b3249908090d4c5f68388a6141163c931df430d70290950b07de410af913c0e5a215c3059785ef05b824545aba0b95e7279d1c5726b59890b82131d5c62e8b3be33b8016ba0c321c248a5293c71eca570c9536f958b84663b1dd5bb6f272c3e201f014aa3ae05640ed92200274d45d9bf4410ce8ea72d680ace1eeb04cd8b002de72795db60681bc9ecd387fcea796ff7726fb29877f895e6832eb7eb179a5956499ca3bcf3283fc8489d494a88668e6614b1f49824f12a448b31a42861190ce3a9f73c6ffa25622d7a504e0694bb7c75ee71cc8e718ce9d57ac86a11721721e6181f157c333ae098f8a6823f765b60f0300f4733cf65240c779569620213b8a331731a7b31937104becc0995ef57255261ad9b246009f855ca82af2001b256760c1543074d70b3c578279b35137e16ac2089a4c60038b8671d308964b68a2211187154746c27f59c8105981c8c7d0ad58717978c01a66b5ee1697188bfaac9b927822c940c5380409f38459f5b302cf7dc9d6bd823a0308b0da45c35d541d2346bae4173fb0c677eec26a94c4158b28d4d7b4b0f62a4ab06bae0b42208b099a174bb4c482c7c321aaca49c4a517114a5cf408750e8588545134f83a67769cc6e0b413bb800c04093184625a7ee24134a721d5fb1571cd82dd1d7c5f9103e0c2c4416cb775aa28df48643084b391dd2caf39278e9a31d2254871b170ae1b60a4e39b1f5a8473f580c7153caa1369d8e9ca381660a57ca8d2523202816767ca8cac0914c16f1cec8ea4ea5da930e0403e7a876c390ba31fa250d946a2eeaa479888011db7942f7676a120338357bca38c4c95088a4a0884b8b4c14e9c09e831f8aa658ed77cc164124cb281f61856bd6c965b6b6cd60b1b1034888f3970555443f0f5cc29c800f578806beeb4730ab9af4b9beb89502ab48761e188cb9aa95ba06b28cf4b89c200b2145a4339a53406b6790a518f54902eba0230a8c2a45447125b7330f12645d935e00651cb4996e395543b7e643137abf3df59e042abd6fa11927062d73d0a107ba6fea0908ff6759a972c11e864ee7393254051bda558d4b272e6cb2c337747a7ef46f5ac872d5d5238521c09e21495ef98b59c22961e5a4967370efc4865f06a72a41464d37ce4dd1803bc117888b681d35195c857a47b764c6799a86e27327eb0403931e29f90fee8628aa43b333615bc0f251707024ad41a24e3c4f15b99e72f536dd989c0325225dc682e3611640d99c1552506e687e18a883f90882056c14385bc08be82616d811a4fb2dc93670945b7efa17593c4b7bffb76f9a805f5230c50b065dc77b409ca8cc0b7190aa61614c528af2d1ac130c19e4362e85a40693a87c00935a887b9b58699777453d8278c445bbc8d225412bda6fdf026207e3b207613d2ed74c085707edd555fe4c00b40b2a83aa219cd643f1d83ec0fc21bcf94fba6a8262d959c9fb345f2221082c40a1501c46c55082db2709230b04090558cb6d6815173525725d8cc0bc93c881c99a16041757d6a05ac71a15e887eb14cbcb226951857be4b3bc2a1b578b148e824a2414412a3d57c8213793c418bf2e0803de4a16eb9c8b5d53718d38ae40299b89793f14741792bb10d9c21d5f06633aa3cf1cc78d0dc99983076f8756b2f96b2095e0b812160fbb9494038a88057671dc692f14a956d5e6565ff752d28237c70b8f8528cb1a04cfe5e6495bd3b46a3264fd7364e0d54f2ad27dd27b022efb3d3a632a7f99551bc3317250207f2658f363164a9631a34b468e9b3c9b34b27a3a02fcbacc516469f69b3a51554b93e05fd6dcb098e8af8a3681ce89548ca311e2f5421ca1496a532366435cfd56a26a245ba68655db99cd113c1ad1170bab16a22bb3399e45c6a9ba45b5dc5da04a426c635c844744c557af7e49ca12437cf455b302c037bab4954627a2363020c4ab5ceef5aaf2e352ded62fd6a52acb70c84723a527ba34f179204b26ac10692822ac66cc56bfeceba65c33295fb805c596a48a0c59477405c21ac3edd2c27e56c19bc84d710584ade48647c681746038ac74ab73591fde872ccdfbc3cb1218fe12acbfec9248c00e19424b1fbca70fc5193151aae1415416ba2d7faa6a2c745cdedb94295438bb182dadb77182b2be5bd1ce0cc028b7eb71ba8cac8585cba3ca01620b63fc91bf3c210f67c65c92f893fc616158c104a5799720ab0fd907798f0678746475c8502029865dd653209a39c0c362258a266b1b244a4f42b4adc1c6bf602fe61125c3b989c018c0a0e0c73e35abc97c9ee695cd265909af82548b865eb4238376a6ab53a6baef185799489f64e200fb542ec3d1b42e8b3960e02730936d620360ff4570b4079b369a83629b599e7b27ff48c37f727a4f93bbb2d4b7e1c73fc0d6668e53c1efe0a0b547b1f38c51f4001654f45bf0e5766ca1c662f2cb99a6bd42a17f89c80a4db03c990a81ae9487e1a52c13720266083e152061aa08c03a7a703de58251f129546a42282515a3e27195ca97ceb39b00566cf4acadaf320d5c88c75ff310f10bb5ad738d38aa47c945235e1730b6cc227a194dcb04ce046a22c37319d910060b594bf8a64f2c4b8f26000031948046721e6546893a341ed2c32804149954e3788ea5054c51a43da89f9c789eda6727bdd4be32b15d47b9c327ec68422813b00950bd73c96c7175274a5ea8bc128a7c0993031b4e8a5d3c074d2d1abde8239d5af58c06509b24109c84297e3feb447fb3926dc19f39211119c4597711a222b341cdecb0698580e422a951db2305d4a7a871967db945a60439de206955c371ea52452f865da438130d2b8eab3669a97911258b08931a2e36c6c390b6845e8076a0d621d7692971ba71bda0b8aaf7ba0ad3c4f05ac23621a146c68bbc501854062b924c3a64916a1b9b19ce5b466f8672ede621ea987f83495106dac22ffab6f4a5cca797587126ce50589f68a2084875bbb505c7ff46922eb496da260e3719cdb2f23950455dc8d36e3932518bc11bfcc067ac533360b86550b6ad09e93dbb092be410721d48bf56b3594b93cbecfc785a5852b598425e4c4cdcc7cae1907adea5772276b2929b9507db5c06041e5f9846506055417c6fa091652a4a424bf6396d46365bb40601e3a55801b93a1ccf39126ba7f025a2467f6d44de229c527f6e4e7071cb826cfe76fea483d9163eaa84f6afac495ac5dbd68b3a8c148b2e7ac049bb986e14dd1cebfa1cbf3edd6bae85a4d2dda082be2d3c64d38269a1ee8660b9a2beaeb9f5ac022e8f0a357feebfd13b06813854 + +comment = Official test vector 5, seed: "aa93649193c2c5985acf8f9e6ac50c36ae16a2526d7c684f7a3bb4abcd7b6ff790e82badce89bc7380d66251f97aaaaa" +entropy = 7ec408f52c9aa723d0c41d9987682a5f4ce6c9da7cd0215af60bbaf5484ab353a08ccf451b049fd51d7a9ad77ae14a81569df8c9bd3a8f1ebea86fdcfb823082 +expected_public_key = 86b5c9a75157e73ccc2e138518ea98a246145dfb6bac9b2ffc333c0ba5806047ca9ba8ab797937000270e773c9863709e59786f8ec948ed27660aa3758e33f59140e527787fa74a2ce22a4a8f3037a26903665cbfe8a0677ec273f590d64c97f69f396db78448535746b43296bfa2bf0a251bf986a524074c1f96077f5219cfa9124d1458520993f627aa8b7b6a0f191683233e0ba6bde24561a666fd10151b0c52c9982c301e0970c3363de27825a5bab078848aa5cb75a90c1cbd24cf67a68f3417780cca947131e4573934f9959787b6320a4b47bb311048289e2c915e35344e3a144e2708893138a15a03fce3816945464c229c587093b5cbbb519767fc65c078d6c684b8b81c1f9cc2b3ba749fb3074623e3c9124a8e1a513510357656b37087bfd02773fb59157eb885e1501740483f3ec070bd492dfc217d7db99cd7c9d57b937297634c3494deb585b8c93cd4eab1865f8a9c8bb15dfe583c7dc0427274f8df3c693fc351289964a89a3c745967231261d949552e0809ba9b7c5d258af579a4515981e991d93154bcaa170491b06752415b1d52bc2a98b7f39c5b91a87eb759a9a4537218156746930a347a5026911adc0412f10a7a7c200a1514d500805c10a276c327e4899aa3f9b95d1ba2347e0140184b1235a719e6c4a3011576235215d77084034771129c33199b70774b2130898a0c69d8f39c3a50b273c665dcd8031b4454d144a4356b9c2b16641311856cb65466991b06d1a8a74a5aad6b5b935b65dba8374ee690cd1c701a5a28b41732b5f88a9ad919a7fa563bafb529885488f544e1240b3cd673f94ebbc91b4757444a302578aa953161993cc918216bc56ba53ea17664bc5b543a38c3516d4063c35695791d8821240bb749caf98896c4718a9db33c1a7e9b91b9b6d06fbaa58e507f8a105e2f71f6095621e354b3dec1f9c979ed7b3aab56b4741110fda601fac78c2edc386669118a425c634157875f61adf10c43d2184d3252edeb11a61eb67a349405ec74b9fd307558a887efbbb46c904f9469db491605a3582be433bed57363426055cc4852acc0317f24d89903a918875c949556a6a458fa3cfb5797d6a3a68ee9991d97a38e16b9a727c5b2e7b5e5a0029c1513d5a1a98eae78713785bd4322261d90109a0806e565ebd9308849cc6708b536c83a2fa35995c819d99b850251c1d50ea902a053c7ca31faac37bcb1b40d6123cc4d52002909d0ac566f7d75dc89998036aabb267c5aa70184ab4cffeab018f195f62879be0a51b42b843caf7c494c181c2f06866cb2287a00349ebb136747da52a3c4a3c581798c413929ce3e698fa594f019579ae329a22d4af66f27b46453f22e61aa6ec5d7d854ff6d3c3d4117be2145b5c2ba7a57ac968a5ca43b461f808167fb5a76a942c95145098b95cd46439669c00366960e2162ab613c5ecb151359b093c27c04ab230fa7c0074684996f44939c81fc31373c8231bd0b6679991a32a031002b257b2f31101317b3e2b6b28b8911e3991479444c6086110b7a70125ca71c6659c970f94d0942124c17ce3ad50d5a7019146bf51b012d1cfa0f59b220a795dc6b3d7896aac680adad383ec46762b669d35909a47c12dc8ee619e1a0c8915822d574a243f67e14104d4f021cf95bf33271c9bc9 +expected_private_key = ac65af9fc8b905d09638374e58c551da08ac4ef86a8ff04489ba462841a85d907ed0c70e1a790297ab2df7d6cdfc5c6af513144da105dda2c75f00736dd91564a79668e335fbdca1c9d31592e73d60066b959a2fcbf55474f9c21bf058f021457586766fda4fad521f64940d4932b07ad8ca7e1a06662730ea6c15aa1c2f9662552313176af04fa4a98962101492566adb8bbc3ec04f9cab9ebfe5860f886d57a2c73fa050a3607a8c0998754b417c9c5ae2fc3f829cc3a2ebb1e927ae87b68c6db355f4c661cd000d10d6bc31ca1c249a9b3931a4d1c57904dc6df923839d9a90aa2b93a87c44b5f82e6a925d22e679428064ffcb9621067b75477fb7d51a1d3b9d9de4051cf874ccec12976562752cbfcfc59f56c2c60b8b4610a9bb36e9019b974502407d57289726ab8a38d7a6c880074a5686619abfffa5757dc79e1449408851502beb8196f493f4a724b9d681645a07b193586c5c05d8d10e2c968bd251b88691c368dc18cf8270dad3c22bf5093db4cf05668f8c6315c0ea3f55495e784ccd6055ac451363fd77a91686ad77c5af53141eb5e7534fac4de481741e48b414302e4743789e250c39c45c0a15cf42e7b3631b6a8c0971c8a34b8200bbfe11004ab06bfc5949c3615b02947c73e7a0717c6b60f2679daa21afe4c55768a08e70105868aa6ab4aaa848c79bf125883907b9daabe367afce273e2c168aab02acd27855e2944b67b938170a9258f67397770136e466758c260ccb7da226b5a95692514727fd48953c62959c88c8784a8a52131c4ba5a6d757b4311048b602b554e8ad509b0c12b0a64553cd4270ca92f36cec227e16a217c769a2bc1aa6c356a5a39c69f4963ba6273db9232f1d8a28ce65b5b9058f1b8a164ab0380c42a8eddb6c2b8b19f26b557c387e4db9aeb92c4d7d0a2ca1e35f97e05cf590bc511ac5efb2357e70525bd027b36c6781c4b86b0069e7b89c8ca643fb9990ecab2cc5a8a5a5b2b0441076ce934d96bca9ffc10eb6e7bb093675e97b68894bb030581d89123642c1118364115a76ad1c181eed4b691bbc15df182dcde00c71f8685b71883a184396d3475cbbcb674360dc14c42dd6461514479c85557194a97a654c4be7620fa84c59db5057a0886d760460cc4a3a713f4fd4bdebaa93b943c48e6348053703ed818fdd9cbd62e246c0b69a265aa381822d6a474c5aa530aa5306a0c8572c413718a278194367405789e1f749ab4a02af87b362067f3da12ec01a83acec26a390cb5419b351bc95e08c7338fb933b81476ea950881275a186c9e9f99dab63634e6b7314188bfd686d74ec203b71542b62b1c0c7712745940f7b9237551467470e5b1ba2f8e34cf585adbaf980317c9db1147382946c12223c3a45973b879a523855bef121151bce620216dedc6c3457ca03951ff45b662f79a1a7a5cefe9a846dd5774c7c2a22f842e4e465a94314e036bb55a2787a1a0f0f111143872dae74af706a369ca54259b80578bacd497700871842b98cae2ac3b572f98f145cbaaf54569779b616242060b30b2a482daf335c9a502cd318296958c696f7080c7a3926c7b62f36a5dbfb87ea0518358155e8e94390b6c0f808b91c166577037d86b5c9a75157e73ccc2e138518ea98a246145dfb6bac9b2ffc333c0ba5806047ca9ba8ab797937000270e773c9863709e59786f8ec948ed27660aa3758e33f59140e527787fa74a2ce22a4a8f3037a26903665cbfe8a0677ec273f590d64c97f69f396db78448535746b43296bfa2bf0a251bf986a524074c1f96077f5219cfa9124d1458520993f627aa8b7b6a0f191683233e0ba6bde24561a666fd10151b0c52c9982c301e0970c3363de27825a5bab078848aa5cb75a90c1cbd24cf67a68f3417780cca947131e4573934f9959787b6320a4b47bb311048289e2c915e35344e3a144e2708893138a15a03fce3816945464c229c587093b5cbbb519767fc65c078d6c684b8b81c1f9cc2b3ba749fb3074623e3c9124a8e1a513510357656b37087bfd02773fb59157eb885e1501740483f3ec070bd492dfc217d7db99cd7c9d57b937297634c3494deb585b8c93cd4eab1865f8a9c8bb15dfe583c7dc0427274f8df3c693fc351289964a89a3c745967231261d949552e0809ba9b7c5d258af579a4515981e991d93154bcaa170491b06752415b1d52bc2a98b7f39c5b91a87eb759a9a4537218156746930a347a5026911adc0412f10a7a7c200a1514d500805c10a276c327e4899aa3f9b95d1ba2347e0140184b1235a719e6c4a3011576235215d77084034771129c33199b70774b2130898a0c69d8f39c3a50b273c665dcd8031b4454d144a4356b9c2b16641311856cb65466991b06d1a8a74a5aad6b5b935b65dba8374ee690cd1c701a5a28b41732b5f88a9ad919a7fa563bafb529885488f544e1240b3cd673f94ebbc91b4757444a302578aa953161993cc918216bc56ba53ea17664bc5b543a38c3516d4063c35695791d8821240bb749caf98896c4718a9db33c1a7e9b91b9b6d06fbaa58e507f8a105e2f71f6095621e354b3dec1f9c979ed7b3aab56b4741110fda601fac78c2edc386669118a425c634157875f61adf10c43d2184d3252edeb11a61eb67a349405ec74b9fd307558a887efbbb46c904f9469db491605a3582be433bed57363426055cc4852acc0317f24d89903a918875c949556a6a458fa3cfb5797d6a3a68ee9991d97a38e16b9a727c5b2e7b5e5a0029c1513d5a1a98eae78713785bd4322261d90109a0806e565ebd9308849cc6708b536c83a2fa35995c819d99b850251c1d50ea902a053c7ca31faac37bcb1b40d6123cc4d52002909d0ac566f7d75dc89998036aabb267c5aa70184ab4cffeab018f195f62879be0a51b42b843caf7c494c181c2f06866cb2287a00349ebb136747da52a3c4a3c581798c413929ce3e698fa594f019579ae329a22d4af66f27b46453f22e61aa6ec5d7d854ff6d3c3d4117be2145b5c2ba7a57ac968a5ca43b461f808167fb5a76a942c95145098b95cd46439669c00366960e2162ab613c5ecb151359b093c27c04ab230fa7c0074684996f44939c81fc31373c8231bd0b6679991a32a031002b257b2f31101317b3e2b6b28b8911e3991479444c6086110b7a70125ca71c6659c970f94d0942124c17ce3ad50d5a7019146bf51b012d1cfa0f59b220a795dc6b3d7896aac680adad383ec46762b669d35909a47c12dc8ee619e1a0c8915822d574a243f67e14104d4f021cf95bf33271c9bc962e0447f7b5ae8a806b741ca5c302230b555c3786c11f3eb43894a8f45e3f7b1a08ccf451b049fd51d7a9ad77ae14a81569df8c9bd3a8f1ebea86fdcfb823082 + +comment = Official test vector 6, seed: "2e014dc7c2696b9f6d4af555cba4b931b34863ff60e2341d4fdfe472fef2fe2c33e0813fc5cafde4e30277fe522a9049" +entropy = c121915bfef6abdfc177dae2f5a24218f9abda2559afc6741b08e0e61ab433eb84ef52db5eaa6df8ec3a0bc5ffa730db0dde8c5f38f266d5c680a78d264a7b96 +expected_public_key = 05eb362461c4a2e81885084505c3862c3b647d181805205ef3e4ca5c30c46a0c21eb97700b70c2bee78d862b3e19dc1e0cec0ae6998a7b3c4fdac39a950027fb2a3bee027a8e54b4a5b981bba01badc0b5ba6a36a2913f1c1a046036960790ce2cf2583e6c62a778290f242b49606ecf24b3a0dc023b22ad8945a0b8dbccc9356475b36b2a990d7435b12e1536a21079fb7802b998488e690f763646c3b66adfbc8161855b20ea18afd87229d05e60372694e4c4c6215344da04173559d7954b029555e6ca4356f6cbe325a39431a64df06e75c63ed0e40bb0cba6ed68bc7211b02f1165c370ada1e0acf4ab61c87cc32f7017b4a26ff8cc0784f76047316af6398ddecc0c62e9a37fc4ca685017b33aacf597767312192cd330b2f3a84e0bb858480a63a607295a39f61510dc2c6998614013f45d319858da8228fe5bb6eaf3b03aa60f4b721a3f046d3088671930672c61c92d6005254372d8081be322ccead06cdd472cc5a481ee385096a5b8ce64b57781cbfc4457e917162da007bd7bad8e3803e05b08876842d9e6a0a545407a5067ede3510ccc4478c040310aaf46051454d855d1a5521e2514af676846650e0043bebf453e7488b6db8aaefcc16e26a75c52bc0ef3c80da3bb39f73b9852b54d9c606363438c45dac4ff1a1913d81b9a80544177ba7db6503a04a5405299f80a83fb7135fde04f8cecc0962461c0e80298d219531c9cbf00a3bb5b84908b5a807739a63485128512c0478084c8964f9064cd4514ce92c30454ac25b48919b719c5a853010a2eb712b80975660456562c4c448c39162ca63aed14af7f28875149857f9b8965bc1d04cb8ee2e67c14a493a3822fcd0a2dba2677e719b8f2c8bd09431b82ba56007584beeacaa1f081d244b0d771bdb0c8033b18ca9597443ff8cdf754569dcc2dc4d4c212e2bbee88925ce73034e19167cc7ac46059cd3b9ebbf6bc3a476f08438c61971af139a248821002480f42c2b9c0979ad3bc6868565ca3fcbc124a7548d53f56b51c9f8aa387b59b07638c7aa45704420b3c24642035a7884cb42f877260c29697809aa7482e3fc356d8ca061c1c443cf24c4535bdeccb02c3e3b8b1d90e5b47bd11615caf849da5811aa743b9bd7810c470187e81af9bdb4d1307303f615ace2a58e7ecb3be260e9f7c1e10eb3a84f207d2e75a30c7c741ea45fb04a9473c1425f80a9186a7f2625ea6abb4aaea3bb50602df23acf8e452cc01a909ec9034acb47b969d904213f0a79edb7766d0290005c954a1da0155f7318be854fdb038d019c1904b714f0514ac331c3813bd703b45076365be4b47ec510a9f585907bc0f461a6befe13a2667593e12134a86ac139777a50ccdad16b6891a0871621b387684b5226368400164b29109328f672cadadf7648377cd11c9232094165bb1cf12f694f940c3cd784c84925ba74c8a49dc27cda4c553c85334a860a8a55d8a75969977ad1f505b9b20ceeceb24a262c707843310f39434390ea5315a67491f0592bf722a1c2658c8a720991b26561e14b178c3a1028003cab8b69f60828f47b876d43d3f193c3820804068a5cae76dc3f27f5f1323e6a2797b9a13c86713a83ba9c161899cf295cfb4a4aa443f32d16b72616a0db4d3849fc41a7a6ba87f4af757a0ab1956518f +expected_private_key = 67a93bb27acd00c9b95aa03552809c38a08480dbaa67a9584a460345e20e5f381c9a82710ef1709ca51393f916345719bd3144b3121a8608c0a48017963387f7a31c5febc6b6749e6bd9be3c58a9a77b53d7762f5854a3467a85941ca2c03873c0458b940275e5ab85b83a5c2027894b92246dd8632d68a310fbc6d214381128528b375fbb8c3c7923ac6a8c7f9e37c2ea4c6b72e3451922761ac274b5cc8569ccb93917a748e93c190320e3f1381e08cccca70903975ae25689c12709c8e9096b16a26e4439c2552a088194368b36efe3871a6a1cd54ca0c70974ac936e45dca01de296a14c7d20652999e61841dcba6c0171fcb406e14a95b0c02517447bb9370996176bfdc5beb4316c0ed34a13431e34ab27d9dccd3ddaa49d314659bb8d89325099d0b06931796ce65c0628c817393bb1870f19a10cfe3546d8bbc2509058327626f490a1bbca6fbb653ee1c3555203353509ab14b64cf8a29c32b17096805b8d751848dc4494279266f2cc474228b2b703cff81f0f29152f4570151517995262d705afffc08dd413c12f37b605bc32ecc1292b9ac99e4a34f911c8db990ecc9a3dfb37517446908b91b1172a3d4f547b3aa642709ba40c3939734545ddb6b45c66a1a3e58c6d1929e5721bfc6a6021a635d86c8378d4a0ba68ce385b6b7fb983ec4a95c8b20b3ec750b082bf2cec89a6f8c2881650e5b71a0135c865bb3fb12a4c2c3c917d655a2997984c8557ecf1943436a9fecc5c84808e38701cc26a251f458334f59bd40bb0d8f82e74071a5ae3c9439541aee59c6e46a5852834ce5712b3665018154c5339467d606af189ccf20c68c583c96d969815109cd3ecad4f5ab0a8bb8a7b68359b0319078a7405821c2709a615864422ba0a3970c8ea138ffc1522b1a53ed1c71d396a0ed6b782c6552c70216679bb4761a600634276d553cd703897c6943a859112caf9a7ac99517c23ce6457aa069b6fd2775efb262dbc27b02fe6923d14b047a25cdc6b86d20a55d85108ff276f121a352e098e5d4cc3ef92b3a1c4a38244621b055d5f812189f6941b492330fb1ab0a442a656655455b38b522ded5640cc4136df6cbf4c4b0651531cd8c95280e2af13fc57c977bbd1a8bdd253096ea98c3ab33a516448a8301a4b141ae213bad2f640b2d5846c99a25884360f604333197816ba9dd1d0c427c5b8d3a6b434207b8539ce5092ccda67a755d6a6d7e8bb6bb02af1ca7283e797f24a1042d29b64262f29b0482b840bd70a3d6d54205df412dd6490e3dc38c1236758f65e461b11ca480b476875c692508e7bb90c430797e1917041642d88506c07255aa92ea32508462c2f4a1661c05114c9361f651b7c5ff70b42659ffee71f58cb79e445536b8948142cb4ec16cfe5b21da659c2dce452346323f1632c37f128a6525f40e03d6c073e05476252b2b0483c4b87c1c1fd8c972cf651eb9684fafba3f862c8619c089f01277c14be7cf7790712ca1e8877a48909efa31d814c1c21f4a151b886076840546419a1c8b6ca4466389a3f6dbb69e8494d7b25a4e9b234a8d928a26b946ff305b8a33b0bf8b3eb992d68c312b4074788e69d1a5a211c3b55f8c654ae778fbada1d75fb2305eb362461c4a2e81885084505c3862c3b647d181805205ef3e4ca5c30c46a0c21eb97700b70c2bee78d862b3e19dc1e0cec0ae6998a7b3c4fdac39a950027fb2a3bee027a8e54b4a5b981bba01badc0b5ba6a36a2913f1c1a046036960790ce2cf2583e6c62a778290f242b49606ecf24b3a0dc023b22ad8945a0b8dbccc9356475b36b2a990d7435b12e1536a21079fb7802b998488e690f763646c3b66adfbc8161855b20ea18afd87229d05e60372694e4c4c6215344da04173559d7954b029555e6ca4356f6cbe325a39431a64df06e75c63ed0e40bb0cba6ed68bc7211b02f1165c370ada1e0acf4ab61c87cc32f7017b4a26ff8cc0784f76047316af6398ddecc0c62e9a37fc4ca685017b33aacf597767312192cd330b2f3a84e0bb858480a63a607295a39f61510dc2c6998614013f45d319858da8228fe5bb6eaf3b03aa60f4b721a3f046d3088671930672c61c92d6005254372d8081be322ccead06cdd472cc5a481ee385096a5b8ce64b57781cbfc4457e917162da007bd7bad8e3803e05b08876842d9e6a0a545407a5067ede3510ccc4478c040310aaf46051454d855d1a5521e2514af676846650e0043bebf453e7488b6db8aaefcc16e26a75c52bc0ef3c80da3bb39f73b9852b54d9c606363438c45dac4ff1a1913d81b9a80544177ba7db6503a04a5405299f80a83fb7135fde04f8cecc0962461c0e80298d219531c9cbf00a3bb5b84908b5a807739a63485128512c0478084c8964f9064cd4514ce92c30454ac25b48919b719c5a853010a2eb712b80975660456562c4c448c39162ca63aed14af7f28875149857f9b8965bc1d04cb8ee2e67c14a493a3822fcd0a2dba2677e719b8f2c8bd09431b82ba56007584beeacaa1f081d244b0d771bdb0c8033b18ca9597443ff8cdf754569dcc2dc4d4c212e2bbee88925ce73034e19167cc7ac46059cd3b9ebbf6bc3a476f08438c61971af139a248821002480f42c2b9c0979ad3bc6868565ca3fcbc124a7548d53f56b51c9f8aa387b59b07638c7aa45704420b3c24642035a7884cb42f877260c29697809aa7482e3fc356d8ca061c1c443cf24c4535bdeccb02c3e3b8b1d90e5b47bd11615caf849da5811aa743b9bd7810c470187e81af9bdb4d1307303f615ace2a58e7ecb3be260e9f7c1e10eb3a84f207d2e75a30c7c741ea45fb04a9473c1425f80a9186a7f2625ea6abb4aaea3bb50602df23acf8e452cc01a909ec9034acb47b969d904213f0a79edb7766d0290005c954a1da0155f7318be854fdb038d019c1904b714f0514ac331c3813bd703b45076365be4b47ec510a9f585907bc0f461a6befe13a2667593e12134a86ac139777a50ccdad16b6891a0871621b387684b5226368400164b29109328f672cadadf7648377cd11c9232094165bb1cf12f694f940c3cd784c84925ba74c8a49dc27cda4c553c85334a860a8a55d8a75969977ad1f505b9b20ceeceb24a262c707843310f39434390ea5315a67491f0592bf722a1c2658c8a720991b26561e14b178c3a1028003cab8b69f60828f47b876d43d3f193c3820804068a5cae76dc3f27f5f1323e6a2797b9a13c86713a83ba9c161899cf295cfb4a4aa443f32d16b72616a0db4d3849fc41a7a6ba87f4af757a0ab1956518f0c1d832af7b7282d8bd81a2237107ee60d81e28eb64d6a153ae0eaa1a25797c284ef52db5eaa6df8ec3a0bc5ffa730db0dde8c5f38f266d5c680a78d264a7b96 + +comment = Official test vector 7, seed: "aefb28fdd34e0ab403a703b535296e3a545ca479c1d8148e2d501b3c8dd8b1034bd986f13f1a7b4671be769359fd2aab" +entropy = d86634ecf96cc2603761e284c0e36734cedec64e7ff486469e38539c71141c5a99daf37400cfe59841afc412ec97f2929dc84a6f3c36f378ee84ce3e46cd1209 +expected_public_key = 89c28969078e11664ca1554eca81b9542bae2ea8cc12b44e81b3354818141af0b494543d4674160a086f7e8755a87258e7e6a6aeb96955286924b42636e04583f74184133d8acb9067925f4969642f274085f70fc12361ff96c3130b143e23797f2a3a6cc757c97454cc8aa5d9c062f9254f4cc7335b44cb66dc712b4677c290ccbba08cfc3948c535be29f44736a23b4c8ccb3978404e419a08a67aa555becb48bcc161cbc5492b55e3498e74bb515c28a7a44a3afa0148ec3411d82a1ae103513074a13938a5fc17dfabad006d90455b4b5e45079d7bbe956c7a18a8bec9a64c1db72544cb00c6997d545ac7e3bc5c6565885536af486417e728cc99c78cfa12a1f7697f1ad26efeb7262800ac4e0121e766aa9bf0a74ae635074c62fb6ca79975761419b12a985ed7a2c8788c9020462fb5764c087681be1595a5ea4ee7234aa2d22f4119b559a536e0da0e8d0b2e493c2b5bd576459994acd684a81a0955684818e1b88e348446a22c9143a4eefc7d8ec678624763d4548fe2451f078582c93c986b0417e1aababdd76dc0532e252b59e47370e81951ef75ad48c223316a40237152e3508ec164c7375594f73b5f0483c560f52f250aaef28431e9d1b2b9dc650d2371bbb7c8360c72369755bd8696fc5c83fca76a7fc02eff54ca60579caef6341385aeee34c7182445bfdb549bc59f70b76368da88d47386f75968aba093e8f42dd3c7cd68c8028a90cb0c93cb44d42ef9d15e6ca978ed5b88914c4e20768028f2c927a33433d33c5e6a45a6c5ae8c252a83e68ec121347b025865f26912b89a9da7472b75b9aba75581852b97d27ea7c9c5c7e8bebc0094c01947f43a2c6501c97e43231310167eccbc4c3a2022839584a12ad5b51b4cd308c94302e58c70eff7b24faa051cf548b5a73ab4254179eaa038ec95d4d4182d2971084cb33a6ca1106076dfa76ec0c4b3bb5c7266a481001cad07d12051a77e31603bf47c62dbf959c89774587111db1b038ae834e0a08c27f2b772a967179a9bada1ac12bcb8fd3b06ca44b3f11a6762ab51a9a0b67fb83def8c9a712a1469b719f2557e5a03c6bac808d0e0aa304955a3e961618920d0bc2347c74ad6725a9a855d1d8456d2c26addd849e59b7ce7c85765064ed6d63039e368e9f18d4fa11e16f8cc88bb3ffb40b4c6269996da8a6b5586365292b5b1c78bf4161c171e2fc7a6a8293a96d61d683275eafcadfed74473e30a1026809076a1025398b745be723a78e008c85b558d2b76392f5015d1024c171c0fc6c7c0c0e631bef57166e660269231c3216fb08b6cff0a420aa413ec1285b7b5ae9fbb15f9fa6b8af29ec061996a7612de524c7e0724766bb51e1264ab50c3a095815645b1d1021060b90c96555e8a001044d16cffd7719858065efca6c2654ea25506f0541fae242dbb154e420c0dd4e13a79053b431b7c00768bf0f781810a0832a2b814c5517aa1a0949523e12aa35893912256a7370bcd9faa30788b631b87731cc5c831a26e8f48ad7cf9c935301aa8cb006ac59fd2ea5bdc1736b2a5523ff3c4d8f429dc037292e863a087bb29cc2732ba30bf11490dbb1f3adb3448d6110a774b25d242602c250999ce69d1b32ad3702602e6d28fdacdbd2a03546764c4fc1c62c0efb3462c7c88ab8d94e20b +expected_private_key = 0fcbac2fd83a9eeace0215c784e20260f0991b225897e94ecf93368b79565b478731537eac74550cd599d5268e03a25cf327606686ab8864677907a3c3555018b478fbe125498652d5259a31c2b4649c14c89bbc5758a9b53c64e95bc9ce30c306372d431cbc642c0d60e25136c3919f3bb48b280b9d5ca0b21bb4e1510ac49aabdf02c9fd66420b475d0731918a4a5d3c7a963a468fb7a86c128988ec36c34f475f2b87791f5604863ba6dca297ee29238ba79eeec5096e9b336cf0b24dbcc9feb8bfd77ac888554472d7732e7492c231302a073680c684870b86a05592355baf2620b51ddc7b17c9328d7a74da6367d9ec2b87e9221c297b5398cfb55c10e8a68323aabbed806c2272c192fb180e7a5b958a02dca5c55654a43c74216b192522bc2a2dc05bf865062cf56839831ebb837a3ed8c7368c15933730667b7463ab7026848bc9ba14616b2e88e17aca4109b5db56510b408465523307619fca752919b947eb40e5e8c19a7b4a9099734d648daac8c81c1c628c895400e245df8a324899273efb441b564305ec48ab305c69d37e846ac9b77a2917915e82286ddb397936769be7e37fa7f27a003090c7f2b9b395a41370b5a38c07c2d8314627267fa06bfc416d8ac1155df645c6150bee70c4cad8c6a5c564ba2571c9bc9bfaf0c2d12578c8198d49e1414cba5749d712556a537a4131f3f085f9047735482e23342b218101ad30122113060cca4196f778c77cad2ee58b6f23071a85b79c1215f0a7c8745abcdb768c3c26042d09a9a0355a5c45745d1acf52c205b949acf581ab75cac74f2364406a43a74269645166fe167642900d169a1e84929da4cb361e80c42dc702a79364f1d664528b6cec667bf230078af06a0b48466dc90b34ea7101512e37d8ba3a351d7023aee652351ae514b8d217faf09a07654b0cba1850041d7206cecb05c8f6703f762c97dbf82255daafcc3608e8891e3ad8b3d4e18dbcf6a1c2e74cdeb87d15236d70943daa722481692890a548d7c69a14fcc1155202ca4941c3900b57a452f281091a94781c64a9583c8d302c21484cc6159b88a931aedc4291e097982eeb0528c152a43b97dea2a0b36922fc60c226b61068c792f377b9f655940d73702d41bc515086e8f9266c53a4c15a35907cb2fc2a2f19bc5f974034677a33b648322cc9bfcc6b947b5346df2044249623e53430895295327c9b35f59ecd4a9521f4b93a4c031a624c12f40ba17b9f36908e462b928ad452ec74b84f9b5c1c69660038c85d6743f8a5a65b3787b5640d683b7a45009a1efcb5e50a35244c9431f21f1b6826311673832ccbc1794fea917268f5323726698f67bdb41bcc012218929649c972149393845dcbac7fb58582964405d4adeb814037a39e512c3fcf72a22ab70e21fba3822b493df9983866412f0439e1a613914042c982739031949b2780d8133e13e632fc4281de567a333c5d8ad458b848ccd65bc87a8b6b29134556a6780eb7b02e4437ae69c09e304210d5cce3ca3dfef261a809bc5dc44787a20afff49f3e0156e7b428ae1cbd3292c9d818844d4767342708e4016eb9bb0f7099876c26729f443e7cb3b9666441dba01c8397953f586e3da45789c28969078e11664ca1554eca81b9542bae2ea8cc12b44e81b3354818141af0b494543d4674160a086f7e8755a87258e7e6a6aeb96955286924b42636e04583f74184133d8acb9067925f4969642f274085f70fc12361ff96c3130b143e23797f2a3a6cc757c97454cc8aa5d9c062f9254f4cc7335b44cb66dc712b4677c290ccbba08cfc3948c535be29f44736a23b4c8ccb3978404e419a08a67aa555becb48bcc161cbc5492b55e3498e74bb515c28a7a44a3afa0148ec3411d82a1ae103513074a13938a5fc17dfabad006d90455b4b5e45079d7bbe956c7a18a8bec9a64c1db72544cb00c6997d545ac7e3bc5c6565885536af486417e728cc99c78cfa12a1f7697f1ad26efeb7262800ac4e0121e766aa9bf0a74ae635074c62fb6ca79975761419b12a985ed7a2c8788c9020462fb5764c087681be1595a5ea4ee7234aa2d22f4119b559a536e0da0e8d0b2e493c2b5bd576459994acd684a81a0955684818e1b88e348446a22c9143a4eefc7d8ec678624763d4548fe2451f078582c93c986b0417e1aababdd76dc0532e252b59e47370e81951ef75ad48c223316a40237152e3508ec164c7375594f73b5f0483c560f52f250aaef28431e9d1b2b9dc650d2371bbb7c8360c72369755bd8696fc5c83fca76a7fc02eff54ca60579caef6341385aeee34c7182445bfdb549bc59f70b76368da88d47386f75968aba093e8f42dd3c7cd68c8028a90cb0c93cb44d42ef9d15e6ca978ed5b88914c4e20768028f2c927a33433d33c5e6a45a6c5ae8c252a83e68ec121347b025865f26912b89a9da7472b75b9aba75581852b97d27ea7c9c5c7e8bebc0094c01947f43a2c6501c97e43231310167eccbc4c3a2022839584a12ad5b51b4cd308c94302e58c70eff7b24faa051cf548b5a73ab4254179eaa038ec95d4d4182d2971084cb33a6ca1106076dfa76ec0c4b3bb5c7266a481001cad07d12051a77e31603bf47c62dbf959c89774587111db1b038ae834e0a08c27f2b772a967179a9bada1ac12bcb8fd3b06ca44b3f11a6762ab51a9a0b67fb83def8c9a712a1469b719f2557e5a03c6bac808d0e0aa304955a3e961618920d0bc2347c74ad6725a9a855d1d8456d2c26addd849e59b7ce7c85765064ed6d63039e368e9f18d4fa11e16f8cc88bb3ffb40b4c6269996da8a6b5586365292b5b1c78bf4161c171e2fc7a6a8293a96d61d683275eafcadfed74473e30a1026809076a1025398b745be723a78e008c85b558d2b76392f5015d1024c171c0fc6c7c0c0e631bef57166e660269231c3216fb08b6cff0a420aa413ec1285b7b5ae9fbb15f9fa6b8af29ec061996a7612de524c7e0724766bb51e1264ab50c3a095815645b1d1021060b90c96555e8a001044d16cffd7719858065efca6c2654ea25506f0541fae242dbb154e420c0dd4e13a79053b431b7c00768bf0f781810a0832a2b814c5517aa1a0949523e12aa35893912256a7370bcd9faa30788b631b87731cc5c831a26e8f48ad7cf9c935301aa8cb006ac59fd2ea5bdc1736b2a5523ff3c4d8f429dc037292e863a087bb29cc2732ba30bf11490dbb1f3adb3448d6110a774b25d242602c250999ce69d1b32ad3702602e6d28fdacdbd2a03546764c4fc1c62c0efb3462c7c88ab8d94e20b2b757ac0425152bef72ed852ab1eb44f4359499407bb6a020ff843a31657c5fe99daf37400cfe59841afc412ec97f2929dc84a6f3c36f378ee84ce3e46cd1209 + +comment = Official test vector 8, seed: "cbe5161e8de02dda7de204aeb0fbb4ca81344ba8c30fe357a4664e5d2988a03b64184d7dc69f8d367550e5fea0876d41" +entropy = 0610678ff4dc3128e1619f915dc192c220f8fad94da1943b90aaec401683a492da1804ddb5aa9b1c6a47a98f8505a49bae2affde5fe75e69e828e546a6771004 +expected_public_key = 764b51d1dabf923518de898c5e7cb5e0066fd69522f5889dc05c41a472c983583333132052a1c93a464120b325764b8665ca42555b98d8d6a93c88a0a383ab51280f52873f2be26e12c131677027c616711d478342cb424b0463c88161ed84bf6e869abe9cb915d13534d2756dd72343359e9911624dc7c6e828b19d6cb178c43a5ceb9360d2939df2744accb4dfe8aa5eca35bf87c6ba265fb4ab7c4888516ec91e52c4030f5453e6bc9103b9c19cd83e69048272855b11b8af3edc09b04ab31179bee59abc76726fbe9612d271b7010844f62535f2f30d8417c35f17c1619b055fab6a0f5458568c753310299fcb335a7697e7cbc9b9eb1b14ac2d0ddb765b266b6d68bdb5b0236895328540b20f91bbd2910625e674b33a4f8b6c1b4f66c4130c2e973ab72d809282ca63edab71268c02a9d020bfc805410aae2dd4b699448a56049d1e9a58c5fc2abe159dec69c5027099a3b57d3a2560ce24a6f5017d32e00f3078b792309384421878cca555b7065d57537c804e10bac052788769b7c1121a78911a153fb56a365a2f97b070d7b61724d0c4d14c295d78be57a8aadb873d3af6b74d020b8654cf48543de8ca22371a48ded585b7073ecee0c44eec27c85b5a68f6b454b0cb10692039cc68ec2c2bf892804520c71be5b7badb807b4059a3d87d32548ba3e4b698ca150d784a8c2c35a67a8c92c68ac0037888b65a4c9800ba7a1ec050627af648fb61c87cc55b8243545aa514cbc550a8804c8598cd35786eb8c6b06077a1e2d4344e4a6baa789c305b6326e0bbd4402dbe26cec08a7c1a19457bc2677f15b984a74fbc52cdce48618d50c47400011b392908ac2cf08a579783a80fb2990cea90eee90b7dd81e6cc9c961372d8c720d7eb223d5a6a16d4571c1a93213b32289934f7b30a63527c6399920086940b7696503e623e63a050f4b69810b6e6f6729e5782b572221f596a09a1879bbb46a62a955043a30a2aa3e62e02ce1ab6f3d03693a8cb653e361d8783ffa37274ae06a3f2292f1a6557182006e493ff2653437a64dbea950bf6a8ca8836407fb489d42a6f6257770310f28715bc6411c81486cef3cb9ab500558f070f4a15817f8c177d63cafb176caf3b2b1cb7b7254c18fe15111fcab9e9a9682f41c9fd247ec532ccef514860a3fed330255323dafe46eed198041d732538c9424d43fe2f5481650470f08906791b2bfe65a445bb26ac87d9bd04aa648a54dc13a137b60e5c2779fe4b5a866620dc2829d42384aea9ab1552fca920f8929b7baa059dea53e6a5b3e492a6e45b5ae11f6ad24d035d4246a0cd53436687a0204a1de29aad2c8b53ad4b938a57c2e29555219544ff64115cba2668b54c6ea8779146980b58a2e669124a81ed4420c87b0601de23e3ccba915faad0c2b47ef6238dba9449274c64ccccd85e91712470e8f9a2866720059a8501c7762c0883cf9827bfd62bdc0882ee03b457be2b2794b8becf74ec0da4684282200a294c13c8a9ff376c1187911121bdd886f27514846f740b72aad5544cbd97a7e208635480acddf404fc067c82a45b5c97829f06abca5201429e9a516f66e65d07075cbc0c60c2a9734baadd68f421617fbf9515b569fd08bf3aef948095de1afe74bbc3bdbb45fd8f92eddbf0c682c81a98f930f6165 +expected_private_key = a5c7981510819ea27d27a945a0f6619d730dd196b6f3a158a4c48acfb82d1c348540160b0cc665c43c4c0e4567b46867ced06d2cf228d0b64706227593db7392395b7ea95360105c1bb05472787430654aa03b6e894c2add2a0467ea51b9486f3df18274c0a2079459df3b9aeab15d203b466ea426911572251b0c8fb51a31aa142bdc4142e393d3c527c841a03f796e0cf7cc71dacb47456fdd386527bccf6e43013eeb755924a22e3a55f74a8974b38e06908349fb3da5887d1a041c8acc6f07a75198462353942267d7600d5243095bb012d2a70be0a3fb2bb599832f8aa68652846ba501bab3aa574ad08bc991c8b86717b87a45041657d0264f35f0c2b70324eac43d591202cfdb9a7d357489f70f86d6308d3382cf9139106cb28d947ae3bc389ef18b728c1568436b3ef80644009a80f01ef550c794011e44f2812ef507bd55820a872b90e797626b8ef2d94012b4cf639bc5c8a7b87306753f93cb12e46a66c4b2053c037b87c51436cc83b884f7634a6950c419684af3b78d41006467105f753194144539df45ac7fa46e71815f53d2304b474a434b02517b083b058aed078dcf86746313bd8108148ea34658613560ca722a126dda147af8c5733705bc8343331bacc5b5b80e424ccf6114955056329a68a2a6403d65197c21da02a390c41ef713a814a798a434145b9e3a5c31a9614cdac8a8bcab6b5274490f5c45b2a307f492c28ff40ee39c2068a5826e8466542559e9409ff11b463e9a4eba0a2172ec8ea6332d3a5bb66531b670c52cc2f8b651b513e60a9e64795369e0c2cf56a9921669299b6b5399537e112ac358112810abc6945bde69aada92552a10219a630e26e4ac7d9b5c7469a960ac64a6d127971296c53a15df4c847d061e69cc030b9cabc6e58903c5adc88882cac147f2888263ecb6ae97a9b2aa245f131e2e2939f5c8bb8ffc012cb578b9babf90db062502b1923ca88b35c424fc6524128fd1d7b5ca719f5a9a538a51a97ababce07b006eb701ad8490b74462f93648fc39a2004db6e951b4c8219ce49395891594353b92b6b496d09376fb28711d87221851a5fdab80cc52a6352c062f06c80f891da2a07573b42bf0f6cd5d6b63fd4b1c5bf2572fc8460385a642e6290fb79a9b1cb18cbcb34bd87f7eb595f0598c67709d72011fbdd07a0eb6616a88b8e33571bfa7597be4cbd6976b93e32c2c088de3ab59dcf2234e553a5b2ab143c46df13211e816aed6d02bf6c13fa7f8b282237f249aaedbd3a6fe8771014c1b811c05fe86102c0b0e7e9b961c1000c82408d8a8aa381552920803418c49e1662c7ed8c3d35763c510585a78664ea0012a8a02f34b2bd7e96ee5c298dc296537c985577cac3e310568353ec2ca8eeab4bb1ee2393d5b3cdd25305b148fd8ab11f60b5871e9c9359a46a5da003e98b61d82c51cd9262764301c86268db87fa6273f9fa3c35b1c1fd822aaf2f74edf73ab5af9175070bdd7d5cc7600a516726c3e49348d138d19836391a54954ac4a0c029b1441c37965422019c2ca49cfca81317a211e22ea2297b865da163a0ae2a9dc25701e71847a05754cb733620a824f090d591c51c345420e226b8f3b846fd356e78b87764b51d1dabf923518de898c5e7cb5e0066fd69522f5889dc05c41a472c983583333132052a1c93a464120b325764b8665ca42555b98d8d6a93c88a0a383ab51280f52873f2be26e12c131677027c616711d478342cb424b0463c88161ed84bf6e869abe9cb915d13534d2756dd72343359e9911624dc7c6e828b19d6cb178c43a5ceb9360d2939df2744accb4dfe8aa5eca35bf87c6ba265fb4ab7c4888516ec91e52c4030f5453e6bc9103b9c19cd83e69048272855b11b8af3edc09b04ab31179bee59abc76726fbe9612d271b7010844f62535f2f30d8417c35f17c1619b055fab6a0f5458568c753310299fcb335a7697e7cbc9b9eb1b14ac2d0ddb765b266b6d68bdb5b0236895328540b20f91bbd2910625e674b33a4f8b6c1b4f66c4130c2e973ab72d809282ca63edab71268c02a9d020bfc805410aae2dd4b699448a56049d1e9a58c5fc2abe159dec69c5027099a3b57d3a2560ce24a6f5017d32e00f3078b792309384421878cca555b7065d57537c804e10bac052788769b7c1121a78911a153fb56a365a2f97b070d7b61724d0c4d14c295d78be57a8aadb873d3af6b74d020b8654cf48543de8ca22371a48ded585b7073ecee0c44eec27c85b5a68f6b454b0cb10692039cc68ec2c2bf892804520c71be5b7badb807b4059a3d87d32548ba3e4b698ca150d784a8c2c35a67a8c92c68ac0037888b65a4c9800ba7a1ec050627af648fb61c87cc55b8243545aa514cbc550a8804c8598cd35786eb8c6b06077a1e2d4344e4a6baa789c305b6326e0bbd4402dbe26cec08a7c1a19457bc2677f15b984a74fbc52cdce48618d50c47400011b392908ac2cf08a579783a80fb2990cea90eee90b7dd81e6cc9c961372d8c720d7eb223d5a6a16d4571c1a93213b32289934f7b30a63527c6399920086940b7696503e623e63a050f4b69810b6e6f6729e5782b572221f596a09a1879bbb46a62a955043a30a2aa3e62e02ce1ab6f3d03693a8cb653e361d8783ffa37274ae06a3f2292f1a6557182006e493ff2653437a64dbea950bf6a8ca8836407fb489d42a6f6257770310f28715bc6411c81486cef3cb9ab500558f070f4a15817f8c177d63cafb176caf3b2b1cb7b7254c18fe15111fcab9e9a9682f41c9fd247ec532ccef514860a3fed330255323dafe46eed198041d732538c9424d43fe2f5481650470f08906791b2bfe65a445bb26ac87d9bd04aa648a54dc13a137b60e5c2779fe4b5a866620dc2829d42384aea9ab1552fca920f8929b7baa059dea53e6a5b3e492a6e45b5ae11f6ad24d035d4246a0cd53436687a0204a1de29aad2c8b53ad4b938a57c2e29555219544ff64115cba2668b54c6ea8779146980b58a2e669124a81ed4420c87b0601de23e3ccba915faad0c2b47ef6238dba9449274c64ccccd85e91712470e8f9a2866720059a8501c7762c0883cf9827bfd62bdc0882ee03b457be2b2794b8becf74ec0da4684282200a294c13c8a9ff376c1187911121bdd886f27514846f740b72aad5544cbd97a7e208635480acddf404fc067c82a45b5c97829f06abca5201429e9a516f66e65d07075cbc0c60c2a9734baadd68f421617fbf9515b569fd08bf3aef948095de1afe74bbc3bdbb45fd8f92eddbf0c682c81a98f930f616553b9d62e64f9069d9fb94ea2c0806459b201531f4fddd708d162981cc1fb3757da1804ddb5aa9b1c6a47a98f8505a49bae2affde5fe75e69e828e546a6771004 + +comment = Official test vector 9, seed: "b4663a7a9883386a2ae4cbd93787e247bf26087e3826d1b8dbeb679e49c0bb286e114f0e9f42f61f63dec42b4f974846" +entropy = d322d56d8ef067ba1f24c92492b9c56df3a6ef54a304adc1b69913766a1ce69756047447b810cc094d400ab204cf9ae71e3afa68b88586ecb6498c68ac0e51b9 +expected_public_key = 5a1278bf11b37fbab1db212359473012f3b545301ddc833c69a75afe16744557b5e28bc0ee895da16c2c5dd34fe6783949d555e580c1be7994bb008daf27a47f554932b87222e82ec670490ca5139ff49d5ed896218825056a8639b31d3ac8550356a408a01404c6aa9c2b7284e7c7c27036256b7902445dde00630d81930f4ccc518b9efd8ab24fc16a365b8068c90f7e09bbd23c2a6ab12792d245551a9894f704042501c8fc49eeaa0132701e29a3c97834530a7c61f1b8440822cd1bb6b11dca2a5951b4deb0b1268c2f5aa8cf76a6bd0be3013a37ca1a903ac634405ecb3714bc54610baa63bacf0a263d8cb018b03b0a286083998a7e8b2a573e570179712130a19f9ebc2337d43926f9c96460996cc03199d81a0e19259da696fecca7906931a787a5c264826099a3e03339295b587e7a4efec6a11aaaab057aa8689473f1f211c6d85499c46746bb00ba687a17877e6650c678d13861337faaa7045a16b8eb7173e7c08b6394b5f2b99ea3083ba175c55d350fd61b73aa790ca6f479fd4b01282b6baefa00a1946f6dfb855ce7bd50389d42856823301e01a228ac754cb65a0e323a0943b75741cb498cc499c8649b6bf87e991507194983aad1b57994b7d79bbcf2eb3b5f8734ccf3cea2662e95d486989144aea22c94c363571ac7dcd81f577645cf19b313f849b422afed963cdb701395020c2d18601a40a42429896aa9b0b1c10c4876928aeac59862414e143722a0b94746abd157343d15bb9fe500763b18c61b184407449b1b5ba8fb1554e4bb58ab99faaac9cdc3b698e64179b089b786204bf95eda86474ee799440478348989c91c3462446724340cd2376c682907edb58c85a4ce3ef46cc5d0ca345590ab14844b224735dc05e0e66ede94258f395fe867ab9d8c1b0fa80743002a15da197614295dc358f40758c9cc05e45bbc659b93ed611aa58845d94acc7aa75deba56d4d83c640c252975bc3165254c92957b78c9583b370ad785f2c16cd5cb9913839939c7293e6b956e23cc5d14cb3ab2a2e94f179bb076355157920085236f60b84449d43ac89c2b46dafa6b784438f3510bfc48357a5681043ba7428583bb5e912b08786562579df58a41bdb82114344b3ea3574b997f8564248210d4e50ab2277100b9a5423178b1f138e9d427762253cffc3cd095cb53a776f4fe015b5168b1a9759ac4acc77f90c69b307192b7b866753872a69813b1bcaab5cbb8126d8998e78d99f5a527992b89495a28e3fa83e75337ca2b896172ac244ab7e30761c8e3a00890046e5f599eeab65bf1a4cdeb5791cc10ade7197fb5bc754233f3b10c9ba2240adfc61c05231c36a6cf71aa752ab3c95c3756ef9373b677105d11f86e68036348bdd181f27407e344bcd297cb02bc44f077976ed588d6a846c2f839bc9bc4872617bdc17a7baa97af9a9322ff015956678e8d622cfb1a11ed929f29bb1f094c17f49417c09c1c443369123caf8701199c43bff97034efc6999424144c9395d9063bb153c0ed82b1c5659bfb23d4cd2c758a26b6c448525060f686bb14873cbf5046b3a3033c5c8081027bf5e3c51f6fb6a1d54a77c46b0ea4299a9da4ab03b95f9d3601f553d46800f661e2c9a7e548ca42e385cc6a0678f9e9d268ffce02c4b465a46773432109a75 +expected_private_key = b04c33b257b199352a85b55624f1a1a42b2ab72c4810b839b2bb2f51a502cd498aa258373eb3bd43e03973d129e4fcb61df58986809ec4ea4333659f03dc0fab236cd4e815d3f9524e90a28a3a0af869735b362fed9837855429700cb815c43a6e650e54d6267a832dc0385696274e1e73a12b5960a8409a4b4564de909b797771b4839782526fd69abf516a73f9eb8130f41cd6103a6e67c6724186d1c709d3d90141b1bc1c028e28324de4846bcc6837fc243c54dba144c40fcc6223fd19b8f54c11bc0982ffd366530abad387946e1495a3c05d9cfbb62b28778905ab7d576610a74b3daac9767a051b153af7c6bf0177a4074397be410411cb33ddcb895091990dfb85aee15e9f288d01ec5628034a4adb01da09283493baffd36d224b1efe096289a2afd427b82f8b04ea44319f4a16bb07bd21026f2ef550b919ad01cb3744b37103eb54e62400e03367001510776698e28b4fc367a77f1b4690cc2916e8ccf1fa55aa3495014724f1e66ef7ca8283d917b501c931274d9808a8103004176bb69783c094bbbbecd5b90ea14e7cdb9768498b22332283f6a079991988ac6a85bb591ef299bc57027b0ca9932a41c14c193467374f133bb8539c2d5164ef11b70b4a2cfcdacdf6841cd835c4f4e174be3c26b55770acf4137666a431d669fd5775a71749922c0b223abe36284fc880c3aa2a41f45a4a299c647d6738585287f7a47b88ea1c6c088c6207646d99cef5f56a2e02cd3ea85202c7725dfc99d04b2d52600f0f89366a3a83f8dc74e4a27fc58a622061a6332403ae8cbd0179149b841f5e0ba193ec237ac57a4cd5528c10545cb75e35a20c3ce63950c09a7b0810b84124f3a00c9ebb67bda9b2ab42113e631123b4a85897160637a32eb856d55c2905f7c655d40c84e92e773056d2392d43e33c4f9256dbfc7aa0683802d04d218139f829ae362c1f48096fe47b09756c36873cadc5300cea8094e6f8925c1b81ade69fee5420b7e94555286cdb596e08caa81f758022b3a949059ae91aa9b78a825703cd53d1235800681dbc7657a777bc267637ca2954c09344110a05e2bb90a83f95990986fb559bb1282778933631701393b705a5c122ec3645c1b364367c83444d30fa438eb3a478a0bae14270cd49556399085c566d9e6c467dca66a3f36370693ad5f86a9932773ae5064e9bc73ff7979a5510c88198beea7ee2aa494eb046e4d70a3f9ca0f88b234f6918f7eb41db97a327654836510276e0154e7a4dfa088b8acc5f02f598d1494bfbd07c3132c5ef6c3b466606b3d93da2e69c96744095435fcacc2d24c3016002b5c4b988877ccdb9233c490a8b121ba7821b529de85e638168b0565d50f735d1cb54cba91cfc1b9eff882a643121e877c43b6147a2a8266196346859ce53340208253ca419276b884dbb3b7a30ac3de983c75ad73995a0b62de7563ec9a4a715bcdf376dfb6433de691c54e660f4aaa4b184015026b6189415e66c90dd32c0b015aee63b5d8b3cb9ea206e45ab4938bc86fc54c7598c6553c29ac34b2213b90afd144c8b4629a560382778b28d666667caaad49633a8f985730318eb033374b5cbebacc7f453ccd8e77c5a9abc12da1bc1733e5a1278bf11b37fbab1db212359473012f3b545301ddc833c69a75afe16744557b5e28bc0ee895da16c2c5dd34fe6783949d555e580c1be7994bb008daf27a47f554932b87222e82ec670490ca5139ff49d5ed896218825056a8639b31d3ac8550356a408a01404c6aa9c2b7284e7c7c27036256b7902445dde00630d81930f4ccc518b9efd8ab24fc16a365b8068c90f7e09bbd23c2a6ab12792d245551a9894f704042501c8fc49eeaa0132701e29a3c97834530a7c61f1b8440822cd1bb6b11dca2a5951b4deb0b1268c2f5aa8cf76a6bd0be3013a37ca1a903ac634405ecb3714bc54610baa63bacf0a263d8cb018b03b0a286083998a7e8b2a573e570179712130a19f9ebc2337d43926f9c96460996cc03199d81a0e19259da696fecca7906931a787a5c264826099a3e03339295b587e7a4efec6a11aaaab057aa8689473f1f211c6d85499c46746bb00ba687a17877e6650c678d13861337faaa7045a16b8eb7173e7c08b6394b5f2b99ea3083ba175c55d350fd61b73aa790ca6f479fd4b01282b6baefa00a1946f6dfb855ce7bd50389d42856823301e01a228ac754cb65a0e323a0943b75741cb498cc499c8649b6bf87e991507194983aad1b57994b7d79bbcf2eb3b5f8734ccf3cea2662e95d486989144aea22c94c363571ac7dcd81f577645cf19b313f849b422afed963cdb701395020c2d18601a40a42429896aa9b0b1c10c4876928aeac59862414e143722a0b94746abd157343d15bb9fe500763b18c61b184407449b1b5ba8fb1554e4bb58ab99faaac9cdc3b698e64179b089b786204bf95eda86474ee799440478348989c91c3462446724340cd2376c682907edb58c85a4ce3ef46cc5d0ca345590ab14844b224735dc05e0e66ede94258f395fe867ab9d8c1b0fa80743002a15da197614295dc358f40758c9cc05e45bbc659b93ed611aa58845d94acc7aa75deba56d4d83c640c252975bc3165254c92957b78c9583b370ad785f2c16cd5cb9913839939c7293e6b956e23cc5d14cb3ab2a2e94f179bb076355157920085236f60b84449d43ac89c2b46dafa6b784438f3510bfc48357a5681043ba7428583bb5e912b08786562579df58a41bdb82114344b3ea3574b997f8564248210d4e50ab2277100b9a5423178b1f138e9d427762253cffc3cd095cb53a776f4fe015b5168b1a9759ac4acc77f90c69b307192b7b866753872a69813b1bcaab5cbb8126d8998e78d99f5a527992b89495a28e3fa83e75337ca2b896172ac244ab7e30761c8e3a00890046e5f599eeab65bf1a4cdeb5791cc10ade7197fb5bc754233f3b10c9ba2240adfc61c05231c36a6cf71aa752ab3c95c3756ef9373b677105d11f86e68036348bdd181f27407e344bcd297cb02bc44f077976ed588d6a846c2f839bc9bc4872617bdc17a7baa97af9a9322ff015956678e8d622cfb1a11ed929f29bb1f094c17f49417c09c1c443369123caf8701199c43bff97034efc6999424144c9395d9063bb153c0ed82b1c5659bfb23d4cd2c758a26b6c448525060f686bb14873cbf5046b3a3033c5c8081027bf5e3c51f6fb6a1d54a77c46b0ea4299a9da4ab03b95f9d3601f553d46800f661e2c9a7e548ca42e385cc6a0678f9e9d268ffce02c4b465a46773432109a759cfeca12dfe978bf0b7ad7271487cf61b2b8f7c60f389f33fc18439a95bcbb6356047447b810cc094d400ab204cf9ae71e3afa68b88586ecb6498c68ac0e51b9 + +comment = Official test vector 10, seed: "980d0ba7c8f8b23d0e948a6029ff2659810ea1360064663a8994d0333c8543ee5ff5d6d5c9acf446e61dc464f792b9d3" +entropy = 2f1d8a3bebb34540324b9485fdf3d5be3b858f544abc3fc641b5728cafab03ba8d6c42e7270ee2b77b6045385f3d175984a0e260363166c73b0c70c971644363 +expected_public_key = c4a90087866b29244c3641310e94b8311a1303465975649288713e79ca67a9085c8f7449c0bb9a6ab196245b0da028cc1765a8ba0501d5e360cb3064e11554f3fc2914f1260509073b67b4a0570d7f708ca7c435ea987762f2a5a23cae53907fc9db26942136d72202d0a0bb10b65d422091abaa1c21d152dad59c25d20c016237634741def8ca26b9cce3097ffd896f1bf08300282fcb7000c7e1956673223902ae5b43bc63b6806c469a4ebb8bd34b057b375e725b07ee856fcc0453379b96f89888d21a7bd5ec91f837b90a2c334a97ad70d87bdcc12892d588d06655f6103e033547cf5933ec237b21b2956e5921cf10a0c55a70e4a24a57b93f6fcaab2a44bb079987eba57223b4b9deb60ec6464faa4058283b8cba6956c792ae8ff9184e93c2e2152823c15412c102518462c2691db1c64412eb1ec6d75d47c82fc5a9214670b3297067e30c6d9ce0cf3eb314cc1a4cf35342ae419513ec2bd47182c4ea52626a56f7831dbdc5719f532a5a421a7bd5a115c2195d0532e7c1c0ffe40166404137a5b45d7b2cd31752e1646588021508293fb881123f61034318700eeac429500905179b283162ed0b69590541eba0848decc94bd18c888170a4c030a89305fe97a2b0292390a3b1fd6aa22909cf0134a2754728b6fb5180276b7d65c2fd530b4ff48cc7c7093dfc2b418b97762c42bb0980c7f41d9651c69387173a6718038010f50b79b233187bc3a0f7c770e50abc62e8acbe297c58c58055387bc7711473d81ca97b6a6e6504870c0de1d806e3603ed0b04d01dc62529434014c5068c3ab3d4a909a079947127a8a2746cc8126f0212e21a0318ef273d5e0be16253848413c5cea22853c6e63b675cfac1d6590004a2bb3bb4974e79aca0dd927607a71d4b4c9980a86e5a2b5a84bcd2e694190491060411b332aa7e7766a4c693b00eb9d68f34e5b0564de24377d3a6d45f72d82ec24fb268537c07b81aa79b5b28ef5a657e0f8b6b2f3a4279abcf06ca2a79401312943d1d1086d91b1ad3030d0c0bb21806cb87b56ed391e6bc6aad974034664b4902336d6e45a7449cb656207d59367f2b142746636e44726f111603b28670f47113d28ce6bb11f464b181cb3205febc13cc70d3fb35924a641a1117df5cb65fd9a69c71bb800fc22a6bc47e52756c23533a3a494733b74d9689d64a849d048a2ffaa62b24ba53cc76ce8489d7515834ad3a2ea920e4f2275f4f7bb361866647c04c573bf47e6b54cd31810c7814ab5cd27da1905fc5976286b781787d2db606c036a2616af7946935713ce2c7ac3fc4972abaa2229c4c294e7a70f97bb6d119be54553eebab1c80c8da7459258e44a234357a1c9cc46412794116123d21db27455063672245460ebc8b6b1116b34f2401169ace16a514534154e798ae3155809b651ca963f854ba501407920765a14f826dcfa4bc4f21766b05bceac55e6854f1ad080d9b2538848a8dc7857f10c4c843c46b172adece3707e01c03059313bb96bb144996b127a16006db4063ca1251f550836e167adea545b3a0c55c0ac5de3fcab6e8242c2c5c09313646117a95ef46536dc74d869301335a2f9040484fb0c9cb85a3d034d55b03c66725d000c47537e0d5ae249eb884b67dadb110119f1d0a5ea38cdf9f2e0e27c75a43a +expected_private_key = a5019e7b82405cac3c8f45bec4e70e20590bd7e543d465ba702cb1447c0f114cc44f404a31b091c638347cf5a464106a2f92a0b4e600a3d86ab9f57efff088d1887865c695c3aa29ba08356da1b4042146e8817f2bd56bc014071b896d5b2cba9fa124cba45e294a0f30fa01e4eb18262059cc987c64f9185aaa12d7ea1f2780308a91a3b2f171d9c41d166872bc7b070d44af8556a356b631a6eb2e804cc09c531eeca476adc8143eeba767298bf29c19fb2496e0c573938babcd749ee2d02e9817a3ee5a687f9324e7e1082892142c04ae9715c4a6980d73c6a54c16beea97a659da476e49c1dd1b8292e04321783e0a66a36267673e92c2c7463668b1742987405c1621f94b87ce88aebaeb7bfd787116b30a5b64a7e8956321463b351a9753a0389937b7aed431a5028d309cbed2d8ae67f859ce371cd1b3cb11a8a70d3b9b92e15530a260d1874118ec505fd451897712ae4104e67b1d2bb2676589aa4e8833e03b017aeb2666464c87ba809f2ba29106b49647666fc58c712b5b8127882df3723e74a9b9e4b0e5a96bb325144111c75e96a13b5566e8258e36d34a76096f9b013236b3036bda5e3d431aad3ca33e9a0916d8cedcd3466c75c1b5603a3e724c60a796e0844cc0d79686f086c510ca0cb11c2e936ecaba446560aaf0931c6a82298bdc7fa82aa6a0b32d361b3335cb83dda38417720e9e745bb9ca008908cf6931ab2b4a7b78036704153359dc4fdb5742ab3c39a346005374cf3107b95cb771ff1c9592d59c810a93e3593169ab26de85077dd79a3b3aa03c332a9d177d7ef88624c285a90099d1d0209a0bb0c425ce6ae9221613b2cd596aa77ba2bb98a385d2898d504d68117ed06233e69c43b541438b3274b579c1a5c27b0d85159836aa48907f768c97b6b2b19f475655022691182b2d9c80aec12eca0890c9e47bf764684ff1a94d1083d85905212431afe09342004b44a090cd71357d2431c923b3ce08bc836b3edb82ab2fa3c508867eae87bf2768ad61d4894b123b6f861db52b9b3eb77a8c99839e9108704c907e258f8d8001567078037aa1ab87b03a46ad3a0a30c753b8bd790923b7454f84c67ab6bbbcc105edc36ab6ab67c28c1d3a54bd06f9c09c12cac8483e015301db6650ca3228abb8353d2b3d95fa5d99e96bcab65b37dc8a1e958f7395391bcbb4a944aa955bc2176aa6600a0d40489d0534423776184c85057ae00e9636bfbfa76c2d329625747968f53d1eb26cf4f95d6cca45c60b2da0f1899a7a1fc651c12bc2c3a2ca16d8aba4e05c0cbcbb2b72c48ef55403462ab49cf6576d8c358a865de1f795cc0629f4b13837b6b1704250b8e97f7a116fb63a0dbc12c955b49a67094cfeeb0e8c7b23abe4bdabb787d3e45ead108a96d3206a4977aa128866e596dfca9d68996d82021a4380c0991561ae40a96bf490dd5538f0718098479a5763787939453a7a87a359643885bc5d6149ea048b5ef1adc65c78e4a9c917160bdc625352596034b3558f98637b33061f769cbe341f9c764238318882caa978996d1c321a92838d109c187011bf84d17fefa0271eac7d5ec90743130234e79089f5b9a6f0267813939b5a3b22321376fb1792d8bcc4a90087866b29244c3641310e94b8311a1303465975649288713e79ca67a9085c8f7449c0bb9a6ab196245b0da028cc1765a8ba0501d5e360cb3064e11554f3fc2914f1260509073b67b4a0570d7f708ca7c435ea987762f2a5a23cae53907fc9db26942136d72202d0a0bb10b65d422091abaa1c21d152dad59c25d20c016237634741def8ca26b9cce3097ffd896f1bf08300282fcb7000c7e1956673223902ae5b43bc63b6806c469a4ebb8bd34b057b375e725b07ee856fcc0453379b96f89888d21a7bd5ec91f837b90a2c334a97ad70d87bdcc12892d588d06655f6103e033547cf5933ec237b21b2956e5921cf10a0c55a70e4a24a57b93f6fcaab2a44bb079987eba57223b4b9deb60ec6464faa4058283b8cba6956c792ae8ff9184e93c2e2152823c15412c102518462c2691db1c64412eb1ec6d75d47c82fc5a9214670b3297067e30c6d9ce0cf3eb314cc1a4cf35342ae419513ec2bd47182c4ea52626a56f7831dbdc5719f532a5a421a7bd5a115c2195d0532e7c1c0ffe40166404137a5b45d7b2cd31752e1646588021508293fb881123f61034318700eeac429500905179b283162ed0b69590541eba0848decc94bd18c888170a4c030a89305fe97a2b0292390a3b1fd6aa22909cf0134a2754728b6fb5180276b7d65c2fd530b4ff48cc7c7093dfc2b418b97762c42bb0980c7f41d9651c69387173a6718038010f50b79b233187bc3a0f7c770e50abc62e8acbe297c58c58055387bc7711473d81ca97b6a6e6504870c0de1d806e3603ed0b04d01dc62529434014c5068c3ab3d4a909a079947127a8a2746cc8126f0212e21a0318ef273d5e0be16253848413c5cea22853c6e63b675cfac1d6590004a2bb3bb4974e79aca0dd927607a71d4b4c9980a86e5a2b5a84bcd2e694190491060411b332aa7e7766a4c693b00eb9d68f34e5b0564de24377d3a6d45f72d82ec24fb268537c07b81aa79b5b28ef5a657e0f8b6b2f3a4279abcf06ca2a79401312943d1d1086d91b1ad3030d0c0bb21806cb87b56ed391e6bc6aad974034664b4902336d6e45a7449cb656207d59367f2b142746636e44726f111603b28670f47113d28ce6bb11f464b181cb3205febc13cc70d3fb35924a641a1117df5cb65fd9a69c71bb800fc22a6bc47e52756c23533a3a494733b74d9689d64a849d048a2ffaa62b24ba53cc76ce8489d7515834ad3a2ea920e4f2275f4f7bb361866647c04c573bf47e6b54cd31810c7814ab5cd27da1905fc5976286b781787d2db606c036a2616af7946935713ce2c7ac3fc4972abaa2229c4c294e7a70f97bb6d119be54553eebab1c80c8da7459258e44a234357a1c9cc46412794116123d21db27455063672245460ebc8b6b1116b34f2401169ace16a514534154e798ae3155809b651ca963f854ba501407920765a14f826dcfa4bc4f21766b05bceac55e6854f1ad080d9b2538848a8dc7857f10c4c843c46b172adece3707e01c03059313bb96bb144996b127a16006db4063ca1251f550836e167adea545b3a0c55c0ac5de3fcab6e8242c2c5c09313646117a95ef46536dc74d869301335a2f9040484fb0c9cb85a3d034d55b03c66725d000c47537e0d5ae249eb884b67dadb110119f1d0a5ea38cdf9f2e0e27c75a43a9aa64a30bed5aa8300772066ef577f79bf4813e3315a15f2c28b2665e4dc7e2f8d6c42e7270ee2b77b6045385f3d175984a0e260363166c73b0c70c971644363 + +comment = Official test vector 11, seed: "6c029462ca42ed520f10a579f52687101105e0b90c6e7bfa582a4c112b579d5ad0a0abd38f72abcfdcaaf5893a112bdc" +entropy = 31beda3462627f601cbc56f3ddf4424e1529c04737ef0ef2af6d7401f653b8a1812083bfa3b670e3eaf9b443702fb6db16ac1197656bbd61a8e25ed523b8d1e5 +expected_public_key = e9718a491b3262d206be72a9ceb000e81b6be6668d14a124bb49be524abb09b91942a60ed38b1974e36376a7724ddc7e5a993ea9c25f40b80c766cc57e807bd5932603403458b84703ca58f8e57c451227128654df4537fce6a57bd1bd6fd8c5be1135b2c82cbfa4b96d577575406f92538034d22d6198a9cd000fc8dc8988f95608c1974c4359ada14f7dd4870c63bf79886ab2d4cad1c89a8fe232fc1c8c515b7d2aa9cc35759ef583244ea767916478f8415fdf7b1cf85a80f4d6960298b977a7abf380709ef904c1706ee3f51abf415028321e4fc79fb2e15454c47b3572bc09c62c0dc466efaa759f116e8ba4717f91220f125656ba7c52338ab1facb0fa6a75ce61f3135911d5714fcda7a5a271205547018cc0607c5aa7104a4a77266c0525579f054ecc6c62522068e79352ae7a1c3265413459939764a4421caa937c8f9b2b276a2c77ce7814fe9034783b8aec29881e2563a63780cbabbcbe72501d68f1b72c6ef3c5d84a4bd7cf4a84686682fe36a151bcb3bb76ce5fa67ae545c9621bed149be06aa2e72f72d1b24b086836b525915b93a49d90cb3c45877c54204a605cc27f1828de6ca1e95056938a6c9651eb3b4a9b09c5aa9fc4401215d9ea9015a996f9a7b898cea466ca14f0065a5b1f374d422b4a277a011f3b3e8143b053507bee829e582528dcb3c9e950f39d17ad0a849c701779d070e34cc606c84a596650b7776a468659344446bc19186b43cbf042516a7b133065393c83b85313c53b71a5bc4421a91694beeb39760806d3b910aa8ea546f53763b656c99ea50a179986dc3786a554b819317fb58564dd69428bb1d7bc45a642a8ab9cc013f932a67222d1fd42b455930b8147d6175c66330217246c400c4b619b922182101b2d8165f93bee58757c14cbfc958552137b904009fcf845321841f8648b8f9e58d1572119b11cbcd59480246a46e255adcc1649817a052736ed9c18a262c36f7c37918db789ab177ed39add0850a509319888073b54bc3ed81000c780fc87ac5c302235a959b1164b491001b92811d4aa76876065e841b276a27b868822fd1da7c3fd1831d88c9f5d891ff610caf264fbc9280b8d4085251774ee20c23576ace6215b3eb8c1610ca2405115e89421418a7610c05bb526ffa39918e9558c6cb2618a612b6d38bf8a2569b4c3ae902a4ac744ed4bca8ed783c4eba450470aef5ec5370b87daa419145298170d64caafc2eda7c989645b9285a3fbd16c16e0c1e3fe085a6bc05248426ef106e7f6012e80882682660cd05ce49520785ea66325078f9a91e5ffc3ba0833de333326fecbcd8878f286064cd1b672f210133e30d106c61af9a75a7fc64fb5b1e1a1649fab356c0f26b9062c5dceaa7cee502c750a93187a21c11b1b7fcaa45f8b857d38e18287b1e878c7ee59e07966f3619bee70253d77065c02926bfd9b031260b5af95846573ad09c42573c8338609fd3e5c0b50092b17a83128a4a9f1a6a232252884504846b3b7df82981dbb036f6a57c5c19136789af9690a978145ea6adb74132ec55840965083f388877a93fc01b006fe4cde4012a1814b327a12cca8991cd18027f4485b4025b5583747fbb37916585261abfea163b617347acaf453ae235166cdd8afbffdaaab9919f0cffdc75d8796fcc28 +expected_private_key = 7ec737ebf52eb7905da8b3c58508928dd74462e8968a1265bb3b9780649210c8202e2950ac11863bd78af3123ae9899ceff1992608cf5bd1b4eb0ac1c13ccaab4ca89a869424bc1af777cfc7d90a071273f5aa5df310493fab17ce5b6477c773d8cc81d995509ff3a40ce80e734a9e8968b7fbe79a9900ab85f7b442077a890688dcba0bd5e64ae491ce5d39b554e6b82b7602a149a686c19fcee21b8e3b1792e7529f2307505c77ed84a63a68258e832bf0f118bc05c91a6b216ebcc051b90143b9748b365ec841b6098c4eece8aa8231bc24b03e732a0ec55aa5b0e3231efb7c7f0ab21e2544072c22b6b4075049b63fba05c68a936989baa2e55ad1846fd1e335568b01d4acc869e710357708bdc25db545447e41727224545ca8c16bca5458eb24d746a12e170ef191cc8dd840e26910cd9484b4e40d0c7446959a521618b9bc472c8001ad0d1c8428c43c0fb3230fa9b17694284375a0e1563fdaeab6cad367c9949c4723802d6931f0c212b03004675652b958518d31c8d4b06dfd99820702319e668dffb5c88622170b0c0eaba56ee7b77ef5d7600b9c0bbbea5b99e05a9443bb81a68c22c7904a1755d4c80a47ac148ed13c3981c6bf4122a7880fdd597429a32d6046981146743ae85cc8c0ccb715937f29c933d63ab475c2c5483ce07acc5b8bb4c7456398a9236d02bed9b951f6d43a67ea06f7fb803acc33e9552e7150c34003a2e2e11bfc0badfc537eb2b69122352ffb62b285b6cb0935adfa0385dda074f7a63adb76bcf4a80aa83a1c32f87be3a786537acaa32178b136c8bf817ac1cb1e25b44654266f4b2b14f33358b9b75a2d916d78e89d3cec68b782734fe052449598d847b2a02c3056a64e72c5a3b34685e9fb2c0037736e0a21df39a356310777a36fce908c243a4a50216b6199cd63c7bdb18b95fbe4615e9799757176fa4a88c93459bc3030e09889ede148890cc221362472586e3c026b0dc10ba5a823f07acc1c693e9bf31518b90359b7aaec54473552835b3590174109337b6171eac38de29bdef8095da13a8f7014b3f531fc152ca5eb19859673d52067e28c7513141245376baf368b07627fb1b844fc033361994ffb3b39822a2a2de17597d16601329866f42c3697a6f5132dcea2140b871480e50523c3c5227537a5089fb6742cbfca55ba9c307a321abe440241e34151b2c2aab6ad55817b115330c0b15891fa35bf344be7d93ad44bb27962101982902427242f5b06f85204e738aec7a333a15001252004b21b5e6fa95a41a4456f74c9522657a9a40f8c4a162f4951cd5bb8a4f334f45a3a73266e1c386caed53ab52b9a4dfa173b96869fba6c72987f4b328a0e56a08c96a00d78854d6762ea2394c2a102162143cd40192749cfbc5031739711f1ea8c37db5b635bcfe9b6396e2902d56bb135eb8975e1b0a171258d39a7ae84aabd46baf4dc2a6ff18fb6002ce232b7a45a532dd54d3da8c580d6cea4209098930477d207622a7cdedc2e72c24eaf5787d4b2b461889d23ab93a4ba327c371eff58cff7f65738886abd046895834aa06a6cb57973f1011353fcc1452b015a324c406515e9290aff4356fb393b57f4066077b2152819b6a69de9718a491b3262d206be72a9ceb000e81b6be6668d14a124bb49be524abb09b91942a60ed38b1974e36376a7724ddc7e5a993ea9c25f40b80c766cc57e807bd5932603403458b84703ca58f8e57c451227128654df4537fce6a57bd1bd6fd8c5be1135b2c82cbfa4b96d577575406f92538034d22d6198a9cd000fc8dc8988f95608c1974c4359ada14f7dd4870c63bf79886ab2d4cad1c89a8fe232fc1c8c515b7d2aa9cc35759ef583244ea767916478f8415fdf7b1cf85a80f4d6960298b977a7abf380709ef904c1706ee3f51abf415028321e4fc79fb2e15454c47b3572bc09c62c0dc466efaa759f116e8ba4717f91220f125656ba7c52338ab1facb0fa6a75ce61f3135911d5714fcda7a5a271205547018cc0607c5aa7104a4a77266c0525579f054ecc6c62522068e79352ae7a1c3265413459939764a4421caa937c8f9b2b276a2c77ce7814fe9034783b8aec29881e2563a63780cbabbcbe72501d68f1b72c6ef3c5d84a4bd7cf4a84686682fe36a151bcb3bb76ce5fa67ae545c9621bed149be06aa2e72f72d1b24b086836b525915b93a49d90cb3c45877c54204a605cc27f1828de6ca1e95056938a6c9651eb3b4a9b09c5aa9fc4401215d9ea9015a996f9a7b898cea466ca14f0065a5b1f374d422b4a277a011f3b3e8143b053507bee829e582528dcb3c9e950f39d17ad0a849c701779d070e34cc606c84a596650b7776a468659344446bc19186b43cbf042516a7b133065393c83b85313c53b71a5bc4421a91694beeb39760806d3b910aa8ea546f53763b656c99ea50a179986dc3786a554b819317fb58564dd69428bb1d7bc45a642a8ab9cc013f932a67222d1fd42b455930b8147d6175c66330217246c400c4b619b922182101b2d8165f93bee58757c14cbfc958552137b904009fcf845321841f8648b8f9e58d1572119b11cbcd59480246a46e255adcc1649817a052736ed9c18a262c36f7c37918db789ab177ed39add0850a509319888073b54bc3ed81000c780fc87ac5c302235a959b1164b491001b92811d4aa76876065e841b276a27b868822fd1da7c3fd1831d88c9f5d891ff610caf264fbc9280b8d4085251774ee20c23576ace6215b3eb8c1610ca2405115e89421418a7610c05bb526ffa39918e9558c6cb2618a612b6d38bf8a2569b4c3ae902a4ac744ed4bca8ed783c4eba450470aef5ec5370b87daa419145298170d64caafc2eda7c989645b9285a3fbd16c16e0c1e3fe085a6bc05248426ef106e7f6012e80882682660cd05ce49520785ea66325078f9a91e5ffc3ba0833de333326fecbcd8878f286064cd1b672f210133e30d106c61af9a75a7fc64fb5b1e1a1649fab356c0f26b9062c5dceaa7cee502c750a93187a21c11b1b7fcaa45f8b857d38e18287b1e878c7ee59e07966f3619bee70253d77065c02926bfd9b031260b5af95846573ad09c42573c8338609fd3e5c0b50092b17a83128a4a9f1a6a232252884504846b3b7df82981dbb036f6a57c5c19136789af9690a978145ea6adb74132ec55840965083f388877a93fc01b006fe4cde4012a1814b327a12cca8991cd18027f4485b4025b5583747fbb37916585261abfea163b617347acaf453ae235166cdd8afbffdaaab9919f0cffdc75d8796fcc28241e5c7b836862d7482d507973ae3fd8dae96eec4ecebcedb68fbda75e04b401812083bfa3b670e3eaf9b443702fb6db16ac1197656bbd61a8e25ed523b8d1e5 + +comment = Official test vector 12, seed: "db00120937570d62331f4c3f19a10465231eff46465cdee336a0d46aa1e7493df80f18617f9ffd0476cf7784a403ef4f" +entropy = cbdff028766d558af4466ef14043a1a9cf765f7748c63cc09dceb59ab39a4e4d8e9a30597e4b52ffa87a54b83c91d12a5e9c2cd90fcac2c11b3a348240411a4c +expected_public_key = 14345d52853184aaab60195152259d9b643d864c4ec5fc4978c657c3365ea81212eb91339aaa4bfa87a197a04d46a7b666837f55db6f16c095db449e9baa879ae14016ea4f8ba975da26cfcf59401237accb908efd17146e9439b1473bafa07703f2932d5c598276b59b419402d681d87111f70c20d2710e10a407634ab216907d7363af0bc4647dba208f9c6744d71a8a1c1a99082a3bd8a843e4ce581412f04877edb1709d1a9623c3c428eb111a1189073c9a3d34ad16aa1f1551a07e6880147360e60888ddd5b0956036951021af4699c96382cc0c16b3f0b960135391c6692b0c556a5b9ad2f8a5ed0cb0baea2406868ac6f7a5a44b722721535e098fe832c9af148ae027604c47ce4d3214a1bc974675289ac7bfb9a644db30235a664417c57a8a46a86e18a10f81b87f4b4727f7234017088f447f28680b0600ad1dd672f0ea19e38a39fcf964cccc64528c97fa474ef3aa6777676b3db443d0a2042c744555049c48b2bc2577738a698bc58910f55b0ede555b171838f6086ca365aed981aa5354561411990707bd3305cf4d10161fd3124156691daa5cf3795653e2aee1c4ba021b0edd0809b14905e46c2cd0bb1e165c8aa428b180ea394e6c92bd6873e12328e5e1916c94c81393172df3815127b937b9646a783524671fbd8b5f01395178c6a9ff42c47d8b25fb37a2d1da975f69c7a8286504faaa6ad5b05307c2d20b4f27640fe59b1ef407110a317cd72023828192b131cb9af96899a69b0f51125b2828f29493a997a33023661bb7811c4593e4e579f8b17d0cbb6037d9273932af4eb235f7d01dd398b70752a925968adbf56cf132b85680abffb937c35425c244345e805bdb608cb0666984775ac1852690908cf2a60214f6a888004aa41a44831537e55a5dfae7b2a4448fe6c562ea66764dfb5fa508b6738c4f52f10d4a852d38f5354981cdfb7a851a675c5a01c2fbe886192582d1f08ab37753bbd81ba6d848949731c99ba92278a2833cc11ac3bf603512bd6557f9684eb980c7588424db0c1e2bb2bd09196a7da29d79208da50c4a0c839284a44d8861706e991edd099e0b1467b88948c89778787c26dd4436fbc4bfd12b0acc00ab4d85b613bba4f928bbfcb04e2eaa51b81845c3a710bbc8458027a4f055061d0b39ad28482646aebc5458d0e70d396c99a0b456837376110488f49a83f48372327467ab87870d11b3c1e6c112ab3d6d486a99bc2b9b368a0695c6c6251d6bea5b56fcb96fc23475719b8cc82806875cad772e4716332ffb02189438e27097e565159e4b1790558273ca887fca2a6e7226c53879adbbc07ac1072e6aafdd2a1dd89677842041f33c447204a3fb91c1e4935111ac739cdc9fd6f2ba8c0c66dff5552f3b2bdfdb19d4f65cb3b23777292cf97cc54bfbc41ed041e53318386173d229b9288c5d68e87d0ce2032d481c46b646ef71940d97af370732533260c6ac943272866bb2bc90ec64424c67b1c877f5d2b35c39656957bbe40c53ed88c4124764b726a5e24aba7b0c866a52385c85c241677f75487d4156c85db639ad741e0412438bdbceb6092fa14501fe1c5e95d90833332debc0441554a8cb5a8f7826b047882b415b78a0c2e966ac7c67b03ef5106f0a751017b67cc52a3d0e1586c74513d2b5f13260 +expected_private_key = d62c6ce5e7594be682a8167743106a44482e3a79ce257635773513f0b0bf77a161c8274a705b93d2eaa899d8c0126ac8adb7b3bbb5891711380da1a9de0541e4160dccabc13a165b5c54178da95b919457c684b9cef81e97637c73f22a3ce9295de79bedd83c3ff871087b9412301863e291b04779457807abe4687368c84b3408e26aa30bf58bbe4bbded32adb03607598714464222524b3c2cd4c15f98a2e6695463257bb8fa9a84131a64d45a57b9a539094b5e957496b79008878396d3b9b2ec41cca75b66fa6d069a51af611d4bc03e20cb12a216072d7834d996ae99e1cc6522a42b48c54282cd0ae8cfdd1b874fbb4ec17434ad584af5b4561bc1597aab63390b60fe7c052e57846e1a8c4f6c6758798b70503507554946382fa6e2004a616a40dbc2b0c596c2cb2873c38e6ff82ff159ba93563d23671dfc433949d3705f398b3752680169657623937a8c357864c39d82c16da5c1ee407fc7fab357c0b114965e89815409964ccdc54cd8d5b17039aa9283a59e746a45a2800e4806064683c292b425c18f73aa2f720a6521a050c5196bdabc9b094895b9527759c1a7210958e11a3411b05e67097fce2c11ed024a85a22684b51edd652ded89c23e1440ca5616bb754361c549776222b8b297f8f4bb7f818d3b29b16c369cc8ba9d91e6012bf006999c7057aa2a44c30237314079b2a55c63990c3ab657cb80d41022651097ed680d200195be82a9b9d08b24f039bffc42c66459b0c8889dda6714b63762494a5e6106f34223990772b1cc12dc660f5be62eb0a15c16d4a0303773d768c7dda7b749711f7c12720c150d30ec6b625624e3f94861483be03271d8b05780ab62e0294a8cb193238530b49455718c872428bea1d84955f54a3bb619dadc6106ea3ef27094a085634624377312648ac46559d7a7dd902497aa9f22879d131a08b9223a05e5b76a00807225b304480f6105cbec8a11cea18e8910a9bba691047c95676c9e2dc7ab76537691dbbee397738c613e1fb00a79f06698c10ec26c97dc00b82a54af572a02801aac20983311f42bca18699a2684e4b5aed83c7ad89a1705f1605a87cabefac499a56058d8b02bd597743524a90c3686d9405e33c3d70880b6449d41a76f83e23759664f1f301d3935998d690a7167afa11a59cf8b87624283a738c0d221b1b55453504ab64fb89824351a49ebbcc291465af92f50d7b53874c1190a766dac5e70706f88097be4500942534df5e5887c48b234c11992f32bf3f2867cc055d7d6c3a4d25d2a141be7d706bc1203814667552888e3bb13221a10dc3a4157d811a7ca23088ba5aa1a3fd60c0c6af29b3b52aa6da319d8e359d842c6dc65c29eccc0523115d15b19a7b90d1090c5949cc66a004f0a0513132640a284a87384c7ed06782607584bf5cdd8f099acb0229cc9588b024b0f3b5ba80b962218b3bce4c0f542bac9e8c235362e33ea30d789094fe82fbf64569907755ed7bfd00c3f6f446deb00a27b37bb92e454aaaacb69dc854532c718c85508ac8742c7180ea805a78999111915bd414275e92d75c1953c10968c802e4aa6429eca0a5ef49fb4046ed2c93914400b0d882b67c275c483037e859c8c015114345d52853184aaab60195152259d9b643d864c4ec5fc4978c657c3365ea81212eb91339aaa4bfa87a197a04d46a7b666837f55db6f16c095db449e9baa879ae14016ea4f8ba975da26cfcf59401237accb908efd17146e9439b1473bafa07703f2932d5c598276b59b419402d681d87111f70c20d2710e10a407634ab216907d7363af0bc4647dba208f9c6744d71a8a1c1a99082a3bd8a843e4ce581412f04877edb1709d1a9623c3c428eb111a1189073c9a3d34ad16aa1f1551a07e6880147360e60888ddd5b0956036951021af4699c96382cc0c16b3f0b960135391c6692b0c556a5b9ad2f8a5ed0cb0baea2406868ac6f7a5a44b722721535e098fe832c9af148ae027604c47ce4d3214a1bc974675289ac7bfb9a644db30235a664417c57a8a46a86e18a10f81b87f4b4727f7234017088f447f28680b0600ad1dd672f0ea19e38a39fcf964cccc64528c97fa474ef3aa6777676b3db443d0a2042c744555049c48b2bc2577738a698bc58910f55b0ede555b171838f6086ca365aed981aa5354561411990707bd3305cf4d10161fd3124156691daa5cf3795653e2aee1c4ba021b0edd0809b14905e46c2cd0bb1e165c8aa428b180ea394e6c92bd6873e12328e5e1916c94c81393172df3815127b937b9646a783524671fbd8b5f01395178c6a9ff42c47d8b25fb37a2d1da975f69c7a8286504faaa6ad5b05307c2d20b4f27640fe59b1ef407110a317cd72023828192b131cb9af96899a69b0f51125b2828f29493a997a33023661bb7811c4593e4e579f8b17d0cbb6037d9273932af4eb235f7d01dd398b70752a925968adbf56cf132b85680abffb937c35425c244345e805bdb608cb0666984775ac1852690908cf2a60214f6a888004aa41a44831537e55a5dfae7b2a4448fe6c562ea66764dfb5fa508b6738c4f52f10d4a852d38f5354981cdfb7a851a675c5a01c2fbe886192582d1f08ab37753bbd81ba6d848949731c99ba92278a2833cc11ac3bf603512bd6557f9684eb980c7588424db0c1e2bb2bd09196a7da29d79208da50c4a0c839284a44d8861706e991edd099e0b1467b88948c89778787c26dd4436fbc4bfd12b0acc00ab4d85b613bba4f928bbfcb04e2eaa51b81845c3a710bbc8458027a4f055061d0b39ad28482646aebc5458d0e70d396c99a0b456837376110488f49a83f48372327467ab87870d11b3c1e6c112ab3d6d486a99bc2b9b368a0695c6c6251d6bea5b56fcb96fc23475719b8cc82806875cad772e4716332ffb02189438e27097e565159e4b1790558273ca887fca2a6e7226c53879adbbc07ac1072e6aafdd2a1dd89677842041f33c447204a3fb91c1e4935111ac739cdc9fd6f2ba8c0c66dff5552f3b2bdfdb19d4f65cb3b23777292cf97cc54bfbc41ed041e53318386173d229b9288c5d68e87d0ce2032d481c46b646ef71940d97af370732533260c6ac943272866bb2bc90ec64424c67b1c877f5d2b35c39656957bbe40c53ed88c4124764b726a5e24aba7b0c866a52385c85c241677f75487d4156c85db639ad741e0412438bdbceb6092fa14501fe1c5e95d90833332debc0441554a8cb5a8f7826b047882b415b78a0c2e966ac7c67b03ef5106f0a751017b67cc52a3d0e1586c74513d2b5f132606ad1d739f1598a16c608a240cd13dfaf8263d74866315e2898a3431cf19e46858e9a30597e4b52ffa87a54b83c91d12a5e9c2cd90fcac2c11b3a348240411a4c + +comment = Official test vector 13, seed: "bd26c0b9a33e3b9b4c5d7ea32d5bd1fc371015be163c86f584e49bfd5362c8d8341161cd1308115b2a03b7e5eaddd418" +entropy = 4c04310bea66305c6ca8ba6b8f61ca96257a67663afc11761f13fb5c7b324b6b8aec87a9a79204cee2986867a2906eb851b734b8b22b91d6749b1a5f07c44e3b +expected_public_key = 8bd98be4597242c95c9641b194a093a928b8d3b30f33c10ba326943a8b704c09a6dfa55f700c488c38a3334716cceb6585008a853162e40a544c0a16878328f47c4e67b5aad276a2dec4c320047e2eab345cc14982b96d1d13566da409e93072377a1729546117a04ce291a2090b60030a35d5b360f9f871cad52f37e63954da0e0a8675abcc3717972f89469978730607293267cac89e3c96a98576c2351d8756429722a1278a173a75114baa4f0eec6a12b09cafdc99fee2c1af7acdae3c747b94b06517464f654adae25888a15cb4c5017076c9d3fac3b1560dd9112d88b2bcf31b15ac420fe5a698d52ab41ef33fa6ca8d8cb9b94d58648f39a138974e8016a972308c7b040d2fa32bfd1096503a3a0e84b9941188a6720e06e6641b896d365190369766995826b72122d780477581bd69b348bb6c5c8f65b4d84ac3f0768ef6645e422b3ed7e38d0a423409c285d0e21bbca97be6707557bb0027e755f9a81912d04b9ebb374bd79411b2c283068670431f2de58d346bb525d192f128c9316742115275e9214def7a61da509b5848013b304216f783d77c3f57b76fb8dc984f05ab557709dae4691b519c44d41813e4b61e6664af5c970ae7a810714217745af087bb00575b18081921a854b7d953e29cb1de704e6578283292168ea73a03e2082b8b641c819649270011861a7b301dcef74e9b116a86f717e30ba6c5398e34390072e20c82f570fcfaa2bd8847a7187052e6b9d0d9bc9fec0217373bcc7b8d38245e40a1597077bb00a408e9eb2bb451c31a746d2aa07fd6432cf176382b6665d45343cf32731817023ee046577abc342bbe25416daee417f2971a8ed4c839126e996a8db40a55bd424c0e534cab677fa1c6b692d2b7e322a331305f75289a1ed102ed604722737e76501c7e7acc69842d6ffb2d31d1003c3b3bd8f4458d93b0270cba21db21a7d16e22e18584e68ea5b890ee839de75b68d60b25d5452bbb91658f3220aaab200ee7a8f070a5b5aa7fa30a768275970012324fe01910e8647945ae6f8b3a17d08e5c36af468a7f6308751c4141439b567eab03d72538ddf71debd2aec5db13537a2b0130b4c2f6662182bd08eb750eb681fce77981a3012102c45642bb8a44ad5cb27cda8369ec28190f64987eb600101aceae7a807158cc8100555a82644b3b513d7cb283a363c70a4ea090241c8a96ac562e7fb3c38f3515c3a68fecb271713729fb77a1a68695fcf995855749c1f0ae09f90741ec332e7602cadb69e55438b9d8ccc213119627410488145777907d280ddb7391d2ec9f27371277c266bb1b14f6eb8d46b2c8bccb0c68f3beb2d87b07044904d5b08e84305b0686f923985a49acdcb1a662d1a08948c9b8d95883518d0ad3933976c464a41c18351216d84066d71164a32d41886a153703c584b747555eefe8309f0810d49c0df8c5512b245f637c9448c47e1456995e922460b8210c7ac1063047c3764077288a1345c23ee0c8fa6865fdd52acb49614207285d241c14114db55cc0c92049f3537abff81b8a30a02e5ab013741b36d92191691b3197cce8d2328bbb6ff61932434899ae01412b231b0efa18d8381555866091c77981e753f8a2b95e8095765ef7a13bd38f9fed3bf36477916cb802690a213c83f6624a067a5e2c +expected_private_key = 212393fa68c40d1153ec29801f4472db30b8e6516647cccc6a160bdac4299d515717d46bb4248673d11558d8af5a6373720a9c96a4c51bf12ac506cbe51b560ab742ec684ddf86cb08121bdd412e2476842d051e3182c415c49b7184c9322242f70b63a960576296a8af5451f5d474019c47e1822e2b1503d30cb8ea20b3cec334a2114fc2381d910a98e633716ef9ca2f7939c7033bab756371d6c2e906061df822113c57dd5992c8826adecbc9ae381931473558ac94fe8a19c9c4bea3dc40defbcbde234a211623f8d80bdefc74f657a797098ebbe2b6b57438c2253f89d13bcbd5c0c4204def79bb37859e36e920768ca7d0651a7ec9bb63336698acbfb6c9a384084defc1bf5d9c050087b691d40344e107bef0241bd99463532a05b795f820213392cb16d668605ca86df134c03c4a7df581f8ca7daf732f5aa75146457163c3abfa9c655f966a607a69aa1234fd1ca2a97213f280a10e84c4aad26c0ea2cba6773d63b39ef7350f6d284830ec3275e5bb9a318b03f87cd3f3bba41632c0f9a1e65989b74b91b23a82bcc22d617aaf8b14c10d0037ab970b8cebbec0cb866be5057964b7cae6c9b3084a696602a25961dc53558c065d6d8b25248aba262b1b635322bb82165a8cbede60bbf6b72459d47b64a964b3c32ca563ba5aeaba8ed912d81b2e733b4b4587a99ae5037dd21dfc9aca5d869596e36547c0336ae774b8ba637622a597c05dcd43b092d938429886c708448b24a45a701ce9fb9db54c67bb531bcfb82ebc15c127409b02a3350d6168f1296784b86f7310b9160681f0133a66356843401b9c0414d7f687aae41a36857ccd3b26bf8c11def30769e30630169365aa3c3b53cc89d9cf47c2cc6c166f197c9e5c5b2408b03c41b0613703cc4872be78dcc4b28089d7118ca1186baeac1355d5b9d4e45515897ae233a26810356a373dcbf6cd5f02cdde8c468be006dbc67e60a69908d1171d4a5ec1643b87059cac80c259788eaf195f4fbccfc4c0284be822f94c2978fa119371291657b927f8b332124d61d17e21a36485d2c3f2893865f305589a8d048b06fba7bb9f087f96d5785678a7f2d16c892cbb2273677ed0cb70f5729af0a0403b0bf0608acec1ce32f2924535c16e8423be0c8854e439ea395dd792399dc98aeeb7493b64965858be35977dc053b3c0b3788fb4244cd3b49e40934f90b454c983da38b2b5c88521347788f832e9c64a6cd012511234275c9f6c251442a87b496743333a161d8c04e3d78be3097942aaccede09b9cb673e1fa261be71dbeb5c4e1049b2b2a00311acad4470f8afc85172476b949aefbc0110a261461291b5ff7a74697c88ad40c82770fccf68b9ad5382125879e637b7cebc1aae95b03219cf2488b2e3b2e51480c8cd8022c2092470236fe6042dcebca24cb9ee9379386d80e54c232dec93b99b694e99ab5e41cc8cfb8928d5c08edc7a707044b49b8a131986a3f37bcdbcab5255b64b4905a93a719d01a32384a87543b6ba1a22db75c9baad257bc8b9d8b78641b394c7ae064087454cfb17b307bc35a97cccb842602990747d60f30d220ed3171ffd7a2b77049dc210e2377607b817f24c011dd736d7918874aea4b8bd98be4597242c95c9641b194a093a928b8d3b30f33c10ba326943a8b704c09a6dfa55f700c488c38a3334716cceb6585008a853162e40a544c0a16878328f47c4e67b5aad276a2dec4c320047e2eab345cc14982b96d1d13566da409e93072377a1729546117a04ce291a2090b60030a35d5b360f9f871cad52f37e63954da0e0a8675abcc3717972f89469978730607293267cac89e3c96a98576c2351d8756429722a1278a173a75114baa4f0eec6a12b09cafdc99fee2c1af7acdae3c747b94b06517464f654adae25888a15cb4c5017076c9d3fac3b1560dd9112d88b2bcf31b15ac420fe5a698d52ab41ef33fa6ca8d8cb9b94d58648f39a138974e8016a972308c7b040d2fa32bfd1096503a3a0e84b9941188a6720e06e6641b896d365190369766995826b72122d780477581bd69b348bb6c5c8f65b4d84ac3f0768ef6645e422b3ed7e38d0a423409c285d0e21bbca97be6707557bb0027e755f9a81912d04b9ebb374bd79411b2c283068670431f2de58d346bb525d192f128c9316742115275e9214def7a61da509b5848013b304216f783d77c3f57b76fb8dc984f05ab557709dae4691b519c44d41813e4b61e6664af5c970ae7a810714217745af087bb00575b18081921a854b7d953e29cb1de704e6578283292168ea73a03e2082b8b641c819649270011861a7b301dcef74e9b116a86f717e30ba6c5398e34390072e20c82f570fcfaa2bd8847a7187052e6b9d0d9bc9fec0217373bcc7b8d38245e40a1597077bb00a408e9eb2bb451c31a746d2aa07fd6432cf176382b6665d45343cf32731817023ee046577abc342bbe25416daee417f2971a8ed4c839126e996a8db40a55bd424c0e534cab677fa1c6b692d2b7e322a331305f75289a1ed102ed604722737e76501c7e7acc69842d6ffb2d31d1003c3b3bd8f4458d93b0270cba21db21a7d16e22e18584e68ea5b890ee839de75b68d60b25d5452bbb91658f3220aaab200ee7a8f070a5b5aa7fa30a768275970012324fe01910e8647945ae6f8b3a17d08e5c36af468a7f6308751c4141439b567eab03d72538ddf71debd2aec5db13537a2b0130b4c2f6662182bd08eb750eb681fce77981a3012102c45642bb8a44ad5cb27cda8369ec28190f64987eb600101aceae7a807158cc8100555a82644b3b513d7cb283a363c70a4ea090241c8a96ac562e7fb3c38f3515c3a68fecb271713729fb77a1a68695fcf995855749c1f0ae09f90741ec332e7602cadb69e55438b9d8ccc213119627410488145777907d280ddb7391d2ec9f27371277c266bb1b14f6eb8d46b2c8bccb0c68f3beb2d87b07044904d5b08e84305b0686f923985a49acdcb1a662d1a08948c9b8d95883518d0ad3933976c464a41c18351216d84066d71164a32d41886a153703c584b747555eefe8309f0810d49c0df8c5512b245f637c9448c47e1456995e922460b8210c7ac1063047c3764077288a1345c23ee0c8fa6865fdd52acb49614207285d241c14114db55cc0c92049f3537abff81b8a30a02e5ab013741b36d92191691b3197cce8d2328bbb6ff61932434899ae01412b231b0efa18d8381555866091c77981e753f8a2b95e8095765ef7a13bd38f9fed3bf36477916cb802690a213c83f6624a067a5e2c9510a2a0b4fcbd414fc61aff04a8df579660d14b13c40ec0470c45f639b65a588aec87a9a79204cee2986867a2906eb851b734b8b22b91d6749b1a5f07c44e3b + +comment = Official test vector 14, seed: "e2819ef86853bca1b9dee7ee1c1619988964f9a913e635aacf0d96ca6e0300d084329dabd8f149e24176d22757404260" +entropy = 38a0d5f41d7dc1896efd1b45b0485634cef149828751b96087a0a6dd81b4d58aa2acf359556df4a2abaeb9dcee945829beb71185b4d6bd18b76e5668f253383a +expected_public_key = a6bb3b93c181b651918a25235e22779cf052e1d30e6852557ca32aaf841834b423a9e61cc24b5231d7590f863e814aa19f123c0cba97cb3773740871ac23868731748355a85f03b275b3273486142153be4920bc9ee77ab5c05d2b96228906586ec831ebe8cf6f9bac3631b7cc904dfc768b1a717274b33f70d08b6a79c4aec3597e1c9664c9472b6c100c1601f27bc0aed37152e20b327b5d32646f2980bd780c8f476715ac04bf1e03c2d4a31da23b14dc0233c1a2c2d983627bbc845f023e349ca59626a99eeba5dcc12e8b82076ef2295238667308451c2052c6f9b127778a3c656213a23dc7e25660443183298753475bcaf667a9483192c6bf553b7e50b44a84a4b881b0365fe513fc661a03689581e045d2f921444c6a76e6344ed8a335b6681ccbc7b42b50b9b03558c64da65088f60b136882012135a8a659355503918ba25da1c167b9fb9f771b5727493c921338c1acccefa80201039d28c968aa3a40c2a28835f63bde23b9722a245ee3c859997f45e10a11f1906c1485b0b51093f51819963393a692ecdb1dda2c88a6133f69f401b124cad796217c818152a528f7d073bfcb9eaccc6cc8825ac4612533126c1ccc736db53f648201ff29a6c3f77b41e01de2087986f237200014e5fa540735513400004b5925cf64b0ffe9575e27ac19ac5644f355231bcdd70348c4507c80780f1d51abf6ac4c5e2957a94325a3f64e83a0a192516f6cbb40b8abba5f8b85bf2aa60e44b46585bf009a723fe1a44fc97543f269f670c593935bdf87a52a1a31cd2b9ad92807407b5851b49eb1a2318611cacaa7710b6764a7e57f8962bc3fc483a8393640e602ca55526eb1be56f2c61ce802b9592f24c14aaa75aa4b002ac9b81fc1327b2a93aa889c9eb178bebdc91579ca7bd30796cc324447892558d2c052308946a451ca49816c06aad39603dd3841ef03ccc1075df164739feb342adcce87aa12f550200ce94765eb4f291a5152941b4eeaba91c3a59257c03017c0b7e0003b07657ba60b4256a8a4b205d7646813246385b348ec157dc6eb3be4546d7eb85c29512840018968743d2ce147f071c8f96c7436596337d69f5074485bf4a288833f2855787f8a18d874c5a2a41422157f65b62b5e581c2181a7023698fdc1ac60a8340a34b29f81b03dc35da2b453fa61293070b1c6db57f3040c3af7766c69b84d624dba1163feb0c71fab6582473f93c8753d67b0259a2eee1c847b1b8a73455a74fa10c3a4c21a35ad20fc36d563be9bc55350f565e4076670f0c77b3c4aa2a06f7bf2ad1bfc4fc8721618454d640189a6f8b3d6c71086dba68b213f4c51100a6037e717147893cdae20a97759204b2c684d8206fdcb10df575799aaa3de388cead4446dcba8e14368f7202520c71e453b41cce426be6c1e29ac475c45742ddacf7c520da15780a9056183900559129e5e3cbb3feaa288b25b6fc69bb8b164c1db8e24391172a8c23859545e98a13725130e45c3d1cbb5d6f5c0dc275608163916013e6e466c29502902c97d3bc33dd006abaaf2aacc40c046e55951d744e31887155a3fa880058a8767b35684445982767c697540ce339a0f4c29c2ae42b5dac5047c12c22bcc155a63a8610db945708cb5425ce0c3c651532a43d32473f236519d54fdfe0a815d +expected_private_key = 69e774db244d05192a2e064257f3a7b9b08941a2018aca28c610b8bfab59176bad88b9a7781222cb03aabe6a4c2937be24645a28c3a7931240503769edd1865f72b44c4842114980ba64a59a647438c5476a700d0dc4a63277c4dc73a3dc9b59bfeb0ddf0817612ab73ab14378e93fa4982d15131c5016b36a639e4f689e9b6b2d2bb2501e130eedf72afe4861ae7cbe7e717b4c4001b78bac719c6afd40969392cfb1d918794b4988a7c03a23c8c5a751ed2c39d3e18474b43cf8b7814a5932224141fd543871ac102bb0a349153eb4a13ad57ac06602bfc6c1b4425284ead058572a1c7c0cafdc6756555b2033d2ce67f9155b16726625928ea26d13e2c0c0a66988eab99643b4cf23ac68724ce635188dd8b3f2f421e8e8a9f838b707a16fbf27445a7555cfc052982cb002130ca3500cc428aef14281564997d5f37d0a1c411cf73d3d2082e4c26c3bb7beb9fba2d9ec631f8953b3d03075318b4b720b4fb5b177d43c11e8979c640639136fa20b718c0846404b2f0604c55ca82f519241d811a697000dbce1c743410e92922e83446410a93150178a4a2b52123174db128b2eb97df4e8a617d5876ab9977daa8b7845537db0a2b6e0599c0cc165438329d1251d6aa09d5b30f27040082a135c2b831b7722c416072c655c4d511e1fdc0284932849126d49b5a03b3593894bca250b0d198601a02900c9406d8f5b69beda735a3512bd355dad587bca7330364031573b44eb9c2bd103bafb7283c1b923ac3a41f0607d4b7b7e1e681aac9b4090538b6b7975b9c5c64c6196577b7861cc88ed6c3365aabcc9b97a6a318a39a2ba8b17376509a563b58dfbf4584e6b00d56bbbec309164982d1b906635a146c04bad613c02c8e2c2d0597fc285779c628f3e290a84d8710745c444410f129a140358991d601fdc787faf4506c6003e2130c2e03b3ffed39ca3b9bbaaa34abae794d4266e59a80efb44528b2b234d70025767a5dea09032767722c61e53423417458de9e809a42257a27001e9c8ad43b775bc853d8475abdac86811d568e9e38747618aff0b0901283a3913b6595cb2a85b6d42101dcbc90146ab85ea5449850bc9d8b1356f820ef365731f176ec0a0a5b7f35d9848c426f32d6a37046574a93cfcc043614e8708026621a06ac00582da7b64421d4f50aaac1bb10d6bbaea31808712b891344b7b865243614cd706c2dc098b0a069fcedb89ecd67de8319c92f3aa0a9b92a1fa256302587a5859408b5cab563ef1814cea386becd756db669fdf87a003ea1e7654cab281220b21cb234ac1c4b459ee48517bc838082191de35b265d5264119c05cb500a05307c806ae8246128a8194f61024f5b2b7c410689150c0a8f68e1b3a51dfaa834b7c8ed989b351e683af7ba73dd91e9733282fa2559ac53aa2819811190b5827000d98433241a3da2b77f4e588b0088e3d3318cfd049c4777f7b08678144618e2406b9b6b72698888c4529b7e3b272e92620bb36792266c3da4c9c403d1d49650b5530be017c3b99c068890f2705702440aa0bfca823059822c18981a03b16670e127386265487665aca4c171e023621a853965a629757148e37833d31e453dc9b20191c94230833a6bb3b93c181b651918a25235e22779cf052e1d30e6852557ca32aaf841834b423a9e61cc24b5231d7590f863e814aa19f123c0cba97cb3773740871ac23868731748355a85f03b275b3273486142153be4920bc9ee77ab5c05d2b96228906586ec831ebe8cf6f9bac3631b7cc904dfc768b1a717274b33f70d08b6a79c4aec3597e1c9664c9472b6c100c1601f27bc0aed37152e20b327b5d32646f2980bd780c8f476715ac04bf1e03c2d4a31da23b14dc0233c1a2c2d983627bbc845f023e349ca59626a99eeba5dcc12e8b82076ef2295238667308451c2052c6f9b127778a3c656213a23dc7e25660443183298753475bcaf667a9483192c6bf553b7e50b44a84a4b881b0365fe513fc661a03689581e045d2f921444c6a76e6344ed8a335b6681ccbc7b42b50b9b03558c64da65088f60b136882012135a8a659355503918ba25da1c167b9fb9f771b5727493c921338c1acccefa80201039d28c968aa3a40c2a28835f63bde23b9722a245ee3c859997f45e10a11f1906c1485b0b51093f51819963393a692ecdb1dda2c88a6133f69f401b124cad796217c818152a528f7d073bfcb9eaccc6cc8825ac4612533126c1ccc736db53f648201ff29a6c3f77b41e01de2087986f237200014e5fa540735513400004b5925cf64b0ffe9575e27ac19ac5644f355231bcdd70348c4507c80780f1d51abf6ac4c5e2957a94325a3f64e83a0a192516f6cbb40b8abba5f8b85bf2aa60e44b46585bf009a723fe1a44fc97543f269f670c593935bdf87a52a1a31cd2b9ad92807407b5851b49eb1a2318611cacaa7710b6764a7e57f8962bc3fc483a8393640e602ca55526eb1be56f2c61ce802b9592f24c14aaa75aa4b002ac9b81fc1327b2a93aa889c9eb178bebdc91579ca7bd30796cc324447892558d2c052308946a451ca49816c06aad39603dd3841ef03ccc1075df164739feb342adcce87aa12f550200ce94765eb4f291a5152941b4eeaba91c3a59257c03017c0b7e0003b07657ba60b4256a8a4b205d7646813246385b348ec157dc6eb3be4546d7eb85c29512840018968743d2ce147f071c8f96c7436596337d69f5074485bf4a288833f2855787f8a18d874c5a2a41422157f65b62b5e581c2181a7023698fdc1ac60a8340a34b29f81b03dc35da2b453fa61293070b1c6db57f3040c3af7766c69b84d624dba1163feb0c71fab6582473f93c8753d67b0259a2eee1c847b1b8a73455a74fa10c3a4c21a35ad20fc36d563be9bc55350f565e4076670f0c77b3c4aa2a06f7bf2ad1bfc4fc8721618454d640189a6f8b3d6c71086dba68b213f4c51100a6037e717147893cdae20a97759204b2c684d8206fdcb10df575799aaa3de388cead4446dcba8e14368f7202520c71e453b41cce426be6c1e29ac475c45742ddacf7c520da15780a9056183900559129e5e3cbb3feaa288b25b6fc69bb8b164c1db8e24391172a8c23859545e98a13725130e45c3d1cbb5d6f5c0dc275608163916013e6e466c29502902c97d3bc33dd006abaaf2aacc40c046e55951d744e31887155a3fa880058a8767b35684445982767c697540ce339a0f4c29c2ae42b5dac5047c12c22bcc155a63a8610db945708cb5425ce0c3c651532a43d32473f236519d54fdfe0a815dcfbe9649d9d1c384baad67b91b2f3e21f2fadd6bb582a0b9cb016051dd82c75aa2acf359556df4a2abaeb9dcee945829beb71185b4d6bd18b76e5668f253383a + +comment = Official test vector 15, seed: "669c4ef8a051ce201da65fc4bc34d398ec1f806276fc5d987ad71d93bc12dc8f107b58be6e8422a0795c88cb9a0e7488" +entropy = 97b5665676e59e3538ebadaa8cd50df1f9fda1502d9894c616a946078e56b621df05318b5f655efe36f1b678cf4b875108a18db2fa312261caf839f84bd956c5 +expected_public_key = 8452a77401c4e343bdcbdc985b70189ea976e3d65c47649593c9cfc112a4292238302253118cab8ec52060305392e6a131f0445a0bb4e11a1a8d7465e704b3134c3807d9be9f8b2abd57a00758685392592fa0b01e116410706a669a0ec5acb524d1561a265e307c24068b12897568490458121c572c2cc43b2464f2703212641202a40b27a41fafc4b24bea9f26711f28b1050645a38757708ad607ff6763f14c15a2caadfc2bc4d23c576e5cae6a20b10cc9cf610a5931ab4c59ecbe67ea079bc3911a96b24b86a0d6b99cf85aa44094b0f6c55924776c4e1bc9cfc88a127b8195145da3515288f933da602f1a2747a6856657b2102774bc1946163b534d02a1ce2e641cd9fc7f7d48b6f643ab53045bc690a249433553845b34a5953c873c1c686c83ba46acec4e91046f9e7590196c9c24a747c6d986b4b414c223a52a6c88475405232c78ab3aae8861a45a817ebb16c3a3070b8e842527e965013244fe50907bac3883122393340b1e06728fa0400791b1dc3ba103c8aadb6cb0328b5efbc85694164d0934c207b63614cca28eca71e5f63a58604599eb6d1d248a37ebcb17335713c4c9a0500fbf893df475cf7c19792fd56fe0a7505de0158f34603e0071b2aa0bdc8a12376a1313f571d33686d505660c4bace8ea40820918e05bc15b381b90d9b31bf52e1b18c422c3935d04140170542829cdcfc883bc344606e75a2ee7af469c5a81daa1071771fff275f2358472b409b1ec31ec887fd6e76ceec6812d40ba4469b3eeb028a0a6875a19b7aca51465cc3fe78566a3eb1b98c621eb3bbda4e7beb5f2344b64013ec233fb5714bc68b767da8b60a6b0ffc8565369c19877c16d7c70f17b85f7a228d28a5936968915d026cf683c762714830c1742ab4dff789f1f43782622a070a4ab52633efc52693b695dab939bc24944733905ae86801c4577324c625159b141c5a1014a6e458b71a959001839c461e17a3ac46da47ab687d2342ff63b83d3331510c98ac484f44b7fb6a31f6926cf047982c400008bb3b0d1ebba3cb2345613680531b0708a64b937c88b2985c01a10eea22fe5022912f9ad2bc667cea16b0a091f3fa9bbb9b8c30160717b21cef9d74458241beedc215d44900cf40709f6671f221d39c804eb6756c812364df0503355b8b01102574ac3f07234bbb1b658ea822d52a452545da3544c041c3a3f89ba30005a992b432178bfba078686a07971601f8b12c22b23b69c05a89adc2469287f052a6d4f58798e10a464db4aa71ab30a94854d1b8c16893b432a8dc2859c66a168c8c5ad4d04559056c4588b0a8755013e378545b47efbe90ca97552c9b8711d3281cc7b9057f78a68a59d5aa642d1e9233de093df5705d8639d702097f0dbc98451a46905ae72d876e1243546590599fc5923b37b4cf0a3f7cb47dfe8af00f6a999127a256681a5705bf5100d7096713c49149c7c561c0783e048cc3444776bf8997671970535c2cac5360c9b53e0d952af348a28e4826db9810f07110a48771c2c9b21da3ca719c7a5407b92020aaa0180b4d6b3ae42a1c09ca38fa59d1ed02a3a0079f2e922d0b36d9795c1fa42354ca51ddc11a315515a45bc7e1e21bcd3287e18bb0ac3f8119a88d1fbce1d3419bef67b6694d9fa1bb309cc61c819176964dc +expected_private_key = 48c78cb714b9cf88a8b317a6fbb681b8f47d56524122156503823b600236d3726edd9087504705cb4698a1515dc0d80b3f87c63d575170f45d121a848d897c3c0063dfe9b2d616a96552384fb72d6226a193f90e15b364ae667c34ba27fdd0ac0debcf450578c6d182da365d40786522c37b54e0126ed7b3c6bccf28f40770f23736b394210b67ebfa72f6b27799fb1f6e48cb7407261a86884621c529974635b35f5b4c530e68bee8cc213387b66a4127d01223180067a2ec24b2ebb579f74bfd5417fe995bbf816737722912b5b4dbb4c938d0686d1c2a44880fa7231944c195fbd67c67e60861d169ddc41f8150b52a68c14425190be2abbcf5babb734aa03538899678d4290738cc63eee611e4344ea73b9c41f36c712a4c6c72422000cb93e144f3c588a2299d5704cb347b90b2905cbf69cf1dc5c670909c478094e88c01bb3b3e4fe246f8dc3c62da37bb13b6e2046911d85d5790869fa4a54ff16794620480919c0dd74b9887bb5c125c34d76b3527a42a46b689fc4c57571af13c44b7d30a041028e97c0a1e50621567374de7a4207acd4cb18417c7984645cf4f2b5a5434be8f119798c0760229301e14431b0b652c643c0ea0ccaa13cbc6fa6dc8d348b908b78343978fd5a0eee90ca5104184f33f107837b3ec667eb207000570dd33856939bc8ba671b3731edb2a94596a8f2f37bbbf5048087091fd2ab164f5c6a8f92f65239f08844ed4f605e3bc1bf780877eeb3f4c85bf696c691f85a947461331aa33b15973ab4923f429c7913731bc025539232217f801ec7078e2f0af3ec7494684bfc40b4ff31798467746f60bc9bccb5b1e397dfc6165773a965e55034dd1094966694d7806f2f505cebc3b3dc307405431fca21614089c633b522510a5fca73462b32fd69200dc614c5e88454f181d845b19b8866259a2372bb3361b9abd5aa278b1773057e26108bb020a9610bc19af13454df46b4fb5a68c3e7aba6e7197ad63439c7252cf9507e32072e437296883c93902250165a1aee8be0ce6acc2029e10e97536eb958b691ae3e3aa9996986805c6d1f6356d26c1e63c550381b292fb1b95e183ca933d5be1baf6294c4b248b4264724712b2a2816ed3d09042287eb8a17ad6c86255ac492f53a21ebcc19b3c8bb1e78f58ba98bc8aa77f6a5cb90c0456e1cd663137e11185536b02d8708644539701b193ba52258064b289d053404bc78a397ab86895baf1934e8b2f6cc3ae48869be7422e581a6ff748519bc30bc96c716b0a24a02679acd5151cb2a0fa127c81ea513c3ccc3b84a34025522486ce424bc04c860edc5758aa990fed372db324614fe91589d78acc88c43c2643d540a509f090ebfa6214832c76ca982faa1ca4465f9c14ab4e6459f072558946ceba113b5fc7024a364970c72933331a6a4b0d4196b9e6219595e229f3e28fb2d5c6c4c041db226ab611b04c3a80fb5a7f15e08df3347def02663aa39409ac4e8c8bb0934b46b6a8816cc70c8c0b11a7ec1cce57bf5baa30e69207d7e59c9e386d5cf7863c133ba1b510f5e06c4876ba7849611bacc369b039efe173df6b8a22469e1f200f2aa53ff84390b88302d9f9915c4b8257754b3423097e7c6b8452a77401c4e343bdcbdc985b70189ea976e3d65c47649593c9cfc112a4292238302253118cab8ec52060305392e6a131f0445a0bb4e11a1a8d7465e704b3134c3807d9be9f8b2abd57a00758685392592fa0b01e116410706a669a0ec5acb524d1561a265e307c24068b12897568490458121c572c2cc43b2464f2703212641202a40b27a41fafc4b24bea9f26711f28b1050645a38757708ad607ff6763f14c15a2caadfc2bc4d23c576e5cae6a20b10cc9cf610a5931ab4c59ecbe67ea079bc3911a96b24b86a0d6b99cf85aa44094b0f6c55924776c4e1bc9cfc88a127b8195145da3515288f933da602f1a2747a6856657b2102774bc1946163b534d02a1ce2e641cd9fc7f7d48b6f643ab53045bc690a249433553845b34a5953c873c1c686c83ba46acec4e91046f9e7590196c9c24a747c6d986b4b414c223a52a6c88475405232c78ab3aae8861a45a817ebb16c3a3070b8e842527e965013244fe50907bac3883122393340b1e06728fa0400791b1dc3ba103c8aadb6cb0328b5efbc85694164d0934c207b63614cca28eca71e5f63a58604599eb6d1d248a37ebcb17335713c4c9a0500fbf893df475cf7c19792fd56fe0a7505de0158f34603e0071b2aa0bdc8a12376a1313f571d33686d505660c4bace8ea40820918e05bc15b381b90d9b31bf52e1b18c422c3935d04140170542829cdcfc883bc344606e75a2ee7af469c5a81daa1071771fff275f2358472b409b1ec31ec887fd6e76ceec6812d40ba4469b3eeb028a0a6875a19b7aca51465cc3fe78566a3eb1b98c621eb3bbda4e7beb5f2344b64013ec233fb5714bc68b767da8b60a6b0ffc8565369c19877c16d7c70f17b85f7a228d28a5936968915d026cf683c762714830c1742ab4dff789f1f43782622a070a4ab52633efc52693b695dab939bc24944733905ae86801c4577324c625159b141c5a1014a6e458b71a959001839c461e17a3ac46da47ab687d2342ff63b83d3331510c98ac484f44b7fb6a31f6926cf047982c400008bb3b0d1ebba3cb2345613680531b0708a64b937c88b2985c01a10eea22fe5022912f9ad2bc667cea16b0a091f3fa9bbb9b8c30160717b21cef9d74458241beedc215d44900cf40709f6671f221d39c804eb6756c812364df0503355b8b01102574ac3f07234bbb1b658ea822d52a452545da3544c041c3a3f89ba30005a992b432178bfba078686a07971601f8b12c22b23b69c05a89adc2469287f052a6d4f58798e10a464db4aa71ab30a94854d1b8c16893b432a8dc2859c66a168c8c5ad4d04559056c4588b0a8755013e378545b47efbe90ca97552c9b8711d3281cc7b9057f78a68a59d5aa642d1e9233de093df5705d8639d702097f0dbc98451a46905ae72d876e1243546590599fc5923b37b4cf0a3f7cb47dfe8af00f6a999127a256681a5705bf5100d7096713c49149c7c561c0783e048cc3444776bf8997671970535c2cac5360c9b53e0d952af348a28e4826db9810f07110a48771c2c9b21da3ca719c7a5407b92020aaa0180b4d6b3ae42a1c09ca38fa59d1ed02a3a0079f2e922d0b36d9795c1fa42354ca51ddc11a315515a45bc7e1e21bcd3287e18bb0ac3f8119a88d1fbce1d3419bef67b6694d9fa1bb309cc61c819176964dca19c2c9c907b129d01cc44a95949121c39534cc98b6d105e60fe519a000cc2aedf05318b5f655efe36f1b678cf4b875108a18db2fa312261caf839f84bd956c5 + +comment = Official test vector 16, seed: "9debccfe818f6b5204db4ea09c03ec9a19dcf1629c1527685b8a29776bb1daaec45f8abf8f0adc9a8c8bd6e2df6d8048" +entropy = ef99224a03a85a46ef115474ec5b5d620da6795d6efcca4c9135d19958a9de62df7d92dda83e6b2ef4cce08c9134563063068a196d7b1a1a13623e48ae12528e +expected_public_key = a16730c3d8a8484295a1d995716a3bf93c7270671afb7886f397af65f5bac1b1a1a49084d1a672a1f98bca762287e90410ab01098c74869b42479c2cae5906ab354970c05cd256514f5c2e763230b6770884e7b700544977993df1f57969e0265fac4f474b76648b36f5711163638069820232b8a64f16bde83557b0540405d7987cc39069923dfa984ca4045999a77483e04fe6eb0be954a74c13cfcea79ed0d8124b01b740a26ed961b2bc496cbdc539a10b8151e0078f66751fe78d2f3a5100761c8beb514923a7b4f3ae208766fd852222dc31fc1a59a883c401459dc73468eb35af61d28ec1da147c882cc7f5ad5204bd8da270e4c91dc37baae1811cff4cbf8605bb48ac8585094327a8c17527bf5b3968aa268e152b6896a288a9722183e199f608cd7a412ca949113e87a956e4ad12737d53c3be4752533bc755f7a1c4b07661e988210ac72131b4496941893a9c6f1180ba622436eeb02f3a3a090c00b1ffd310e811a7a8b87984d275d76b0f99abbfa45cc5096a1562a375f0599d9698b18012a84a0628601c731ce1ce6824907f1b16878a75418c2fb0751202fcc988779be2326e2e5228c9493a0e628441b13d58b3c79df34b7b53c7be816cc7368f2f31c380296250b33269158c4f9706d75b3b5536adfe5b0bcf514899287b4b637bb4249db25a0413533d628597ddd745a7f5270d136763e48a517ca62e116913350e7361580cf77bcdb5b607b38d49e1581654a61ad9602f4415f484bccbd833255a29d2e76262b401f7fa5a1e68bb136771c41b29333b653602b79a2aba21004e8a257df7362163b6512eda4e1376aba1facf04d1aa56c814000d718b5b504f1b9d2e627b8a678d0294c5e3b186a67c082b90abb1c839232912c39c3e02717a65e24a185a5d96e99851eb538a4ab872148c2d7bc52ec4270f708690d0678d43c783ca194b4aaeb6f2156297355d7823e0f80890608768c65073e04e7e5b45acbb1cb6446483e7c315a0a0c2066f080a53818a4ec0e4973f630f6822a437f6684fc9431f20a306a055f9906435172699b3cd0d46457be26560f692864a97f80b493093270b5225980287f1f5711b355f9ccc018d670ed8ba64f10ba98b0068e7714074e14736087819ec2cbc960fe6939a4e9a4de2045b53e81fbb845b0e546de6b34ee9e91ecf0c9f74c569dec949d3ea11785639126bbd45137021e9670735488e46a325342a2b4a959297816d1ac731cb501d628bc09083ab5c4dafc09a36c7c70f2885a6622bb7162aa2c999927a1fb749bae280237db21418e2cec419990288b813e80765b47e4c314171b849e570c7533cc5bb77cb9f10272926c382fc0796f39924b6971fe6b54638c4cf25318e146aa02769e64c47e4da2d5264b282b32933d8c74242aa73c15875934e99d6c570572e03c54e47726e3b0416d3737a29624169778970e99de64bc2b16039ae97c7472a41c9a6c6fd45bd7738cb662505bb26a307a2cfb9680f5cac086f9bbf7799263c0b5367032196f1bd842534601094668a33bd339db59746d63ba6007887ab750f5887453e02b22c3148bf6c48c806a94cb7bf23568789a1260c87af0548c71881401c565268317756a211b6955ed03c49e0beb46c4ea9ff7be444932e61d464966bffc96bec0647ab34f2 +expected_private_key = 953b6e6f452ffab6b9e27b707f600992e228f5fac92680aaf31300154b218ae51a012a4cf53840cfd714cb63cb4c7aa0e8ea6e50803ca370bb38c7205d9365448b38308868c83348acc365be62b4fa763ecc5112a48558e57230d92b5869d77d99a5c0bef49819500b333300910117e05b082d15368ae529923c6bc9d3594ab33c91b81549829a2ee55ad152493e80aa80399f770899ec05417a698e6493aa647691fedc92854c23702caafc8ab3a3194ce8437b8e2a7f69454adf3170c282972abb93cf152dd85587f6272b0b71590c81b3a9f680d19445fff0c395310a17f55272cc3e1364a9aea7a67af4561cf10043b7b7eb4ab0791a8d62814f4b6536cfa69ca0493fec1a53d58709fbab9c87578d83c9441d62c267e7aa4ef0afc7106c9f834a5a13206c4b58d7378af90b85f7e05237559d6d7819f455aa01d68bc297a8dd760a0df971542919979218b4861a49e45aab12be67080d197c25ca53483d781ba27893d23baecd393dd1643dc2a53275c84a19900b364ccc94a8ba3b5768f8dbbe08a7b08fd2746bec62c98c5e5198695b12048ba5c98753aaba88bfbbc6c8de490afaa8343d334aaeb72532c63d60667079b41b6a287b04c797458acd9104c94e96bf18137b0868737dc00a8e2164e0980b9b2135dc7c0e80e1b930c22874fc2cdbe0b5542732e8fa80e407a1a6e5af0aa3168a963587379aa3e6a2b082a8a35604bad827bd6aa1fea76a608100ddc40b17283eddab2335b8796dc1bb57887787a4273c4185867368be581f6e5767bbf0580f07b003556ecffc3ae336260fa0a80a2c9e4c9914144551c89a9d68373ed9c7afa83c75c6b8affb54187d3b46abdc61d9e070b5584be7564f932985ea4c739cc906732a7cf79a65f0f7b0682caa5d2070b3e0699b1bb3ac0b38caf22ca4db9472d06b02954e36c0a3d8890473588c77e43990da1c7103985761ca711109bec0b805607d732a36baf897e93c6d9a988b94c67a4592b7583126fd452ff0b45a033824983715c60478685b9c2d013d41b47eb342a05fb76232554df30990d6f1b37ea9172020c66fac8f415615ebe07833a2588ef622034074b214ccd9395648071821d1109daa87c0e00cd9573254538ec3b8459ce56578c09ca66a508e88c4dbf6183a268b86fa4b7733a8cc89ac81619af8f56d8adb1f665a7ac413005be730aa41cef2b06a7fba535552c8cef73e90a8584a8b799c323f61faad4b8c25d06cb883493147069eb1c9c8fb262b699693d0601262e9ce5b383a0d27c1572c49547bc908c003490827343a690859a15b20119975c35aa991183052f117b53d06c5f4683d19ca5ba6f5595b8b269d96c1b3524cc8fc6eec750ca33b5518603f59b50741d246642bb88ef61a8bd4c54f48af3f573d4cdc5143ecbddab5a281400721544e16e35ea7a05f161003a6c3adaf690189bcb074f546bc2033b1e8b00d56cf32e0733dc81d05eb358d148a91faca963b814a9c5fdfdb4de79b729dfc26c3d9b48a4730337b0bac8c2a3628268159979f6b10aa9ab90adab98b9c0928fc4e3570ab01f02d5a64c5f605596e3498ea532472760f61cb2eb734c174e48237c656636645886b65c566bf95d927a16730c3d8a8484295a1d995716a3bf93c7270671afb7886f397af65f5bac1b1a1a49084d1a672a1f98bca762287e90410ab01098c74869b42479c2cae5906ab354970c05cd256514f5c2e763230b6770884e7b700544977993df1f57969e0265fac4f474b76648b36f5711163638069820232b8a64f16bde83557b0540405d7987cc39069923dfa984ca4045999a77483e04fe6eb0be954a74c13cfcea79ed0d8124b01b740a26ed961b2bc496cbdc539a10b8151e0078f66751fe78d2f3a5100761c8beb514923a7b4f3ae208766fd852222dc31fc1a59a883c401459dc73468eb35af61d28ec1da147c882cc7f5ad5204bd8da270e4c91dc37baae1811cff4cbf8605bb48ac8585094327a8c17527bf5b3968aa268e152b6896a288a9722183e199f608cd7a412ca949113e87a956e4ad12737d53c3be4752533bc755f7a1c4b07661e988210ac72131b4496941893a9c6f1180ba622436eeb02f3a3a090c00b1ffd310e811a7a8b87984d275d76b0f99abbfa45cc5096a1562a375f0599d9698b18012a84a0628601c731ce1ce6824907f1b16878a75418c2fb0751202fcc988779be2326e2e5228c9493a0e628441b13d58b3c79df34b7b53c7be816cc7368f2f31c380296250b33269158c4f9706d75b3b5536adfe5b0bcf514899287b4b637bb4249db25a0413533d628597ddd745a7f5270d136763e48a517ca62e116913350e7361580cf77bcdb5b607b38d49e1581654a61ad9602f4415f484bccbd833255a29d2e76262b401f7fa5a1e68bb136771c41b29333b653602b79a2aba21004e8a257df7362163b6512eda4e1376aba1facf04d1aa56c814000d718b5b504f1b9d2e627b8a678d0294c5e3b186a67c082b90abb1c839232912c39c3e02717a65e24a185a5d96e99851eb538a4ab872148c2d7bc52ec4270f708690d0678d43c783ca194b4aaeb6f2156297355d7823e0f80890608768c65073e04e7e5b45acbb1cb6446483e7c315a0a0c2066f080a53818a4ec0e4973f630f6822a437f6684fc9431f20a306a055f9906435172699b3cd0d46457be26560f692864a97f80b493093270b5225980287f1f5711b355f9ccc018d670ed8ba64f10ba98b0068e7714074e14736087819ec2cbc960fe6939a4e9a4de2045b53e81fbb845b0e546de6b34ee9e91ecf0c9f74c569dec949d3ea11785639126bbd45137021e9670735488e46a325342a2b4a959297816d1ac731cb501d628bc09083ab5c4dafc09a36c7c70f2885a6622bb7162aa2c999927a1fb749bae280237db21418e2cec419990288b813e80765b47e4c314171b849e570c7533cc5bb77cb9f10272926c382fc0796f39924b6971fe6b54638c4cf25318e146aa02769e64c47e4da2d5264b282b32933d8c74242aa73c15875934e99d6c570572e03c54e47726e3b0416d3737a29624169778970e99de64bc2b16039ae97c7472a41c9a6c6fd45bd7738cb662505bb26a307a2cfb9680f5cac086f9bbf7799263c0b5367032196f1bd842534601094668a33bd339db59746d63ba6007887ab750f5887453e02b22c3148bf6c48c806a94cb7bf23568789a1260c87af0548c71881401c565268317756a211b6955ed03c49e0beb46c4ea9ff7be444932e61d464966bffc96bec0647ab34f2e4174b6e7542fbe80ab2bc06dfb802f691aff147ff90332d5ea739216c18d872df7d92dda83e6b2ef4cce08c9134563063068a196d7b1a1a13623e48ae12528e + +comment = Official test vector 17, seed: "8098ae7a92c10f707d405f7dea02c2efbef44efa132ba8aefe81bd45e543ecec74f10920ae48a40b0653d63532517f2a" +entropy = b12f6fd965ea9c5b947db80fc60c83d5e232dca82e7263027c19bd62e5a6ff550f6aa3e88f7fa8a96067f8cdaeceeac90c2d0b5e277e56e9c405ec9420c30252 +expected_public_key = ad735e9e838da63ac7a3e1cd3e574db17c2601d3927cc2a9d228a05f5c1e51a63634383ff5e03151f43c66a07be9e992aa65ca4ca17b1e021e06b261ccaa89b12a4916a5a4e39826a94c86bcba9fc7d65ff04549db70b300b1cb280b3a41e82b6c8b0a4a3c5e40eba59fd18f004ca3e4c15bedf22e099c99a3d114eb0c5988ba02873b9581107a23e54a8e51ae62375a887929f7333d4d763e23b20a246785e07700bb16c531692531433eb6a6594d1464bca7348022c1d4219cd8aa6614862c42376c3a0c4674181983f2a2ce8b7f32659ae87accab6023938592e188a3c1015e98720eacc9aa837a49c4617a850c89e1212478f3c6bba51c30a64a8a1c225274c92ea953872342a96ca3235ca7a9467be55250796126b30694f71b2f75b56d84ac89c4b635118145c7b8967de515ecc719e35804194b7ea9304636283cbf72339474ce1da00106110a596725574747dc07b3f0c7c527aca703cb23baa080bb7a4cfc1009b3e5aa89659121e365fd6cb6fd15afed70779a978b3ff50f915b6c16a350141721efd61085189c3265530c1a17491b317031b4e4667eb8314ad34cb7daa50566a9812377cf24076fc3dc748fd58865b1b02dbb831b25b7b7383579376fdaa6c8a5323230025a4bc66977f6a458374faeb14e47f70e654c42c94a5fc5e386a57abde3f29349623e4de92f900527c165870fcc26a2f95fa1850f2c940fb7b87686e253dd54b6706a84a0c70e3ab04ca8446efb77609e9815a261af5a135836064d44a485b5e850f10153653838e5874b76568516e847a2a9b186e8a50c34c2d2b0839ee58024211018b0a13fc781623cc313b30c26a258106941a66b3cd9481aca7c7e3ce3202f098746c42c58f4c7dbe52fb5f606fbf31b9b5022e691cbef1464f6942aa503147eba081817ae28581ecdd867a96195db320bd2d91c36db01ade9affb6b00f86c13e2e252c988300b05afcd007470cc3022e96af0768dbebbcf62b53345b213c1544491f1bc75ba96bd73be57a2cd6874511b44bf2dd27f4fc87c167815fec59f7a043f699ba4d23400886a7214160c23dc96056bbcc7007a0049435c534b66971e6e5c90effa6645c45031c0c905b9887700181565b53165bab605a51bcaca0dd0c308a46432794c38f21e04172005f4348211c63a40cffd7c32bcd57fde852fec793cb7013e74504721f6bfb7637f73319f75b08e3c25777c969c6ea000c9b79d6f16a00cc4b00ad7ca4f8704b2e54d9d27524f6b80a6d51f85447b22c29af0036c6ba486862c8b4fb03f26042a0e195a3e91bc303770ac844e77805e41ec6aca920ff3a1a3abe81b598c193723b20c8685590131da89c0ace08a592489791911c92c7e6ed55f642caf918173f190b2fb8cc0cb2139fb6caa259b5a4634cfd0a532b719903e32831489a2d390b4c5a5066b4ab5a3316441b162407096a0bc0342599804752fd4f21c45923705a7a04012ae4a900c01d584f9f41676c36681994c2f4037bdfb84a69a81fa561e5be05777b571922988eac714ff249926fc9cc4e93666e198308a434df74dff3c5a440948437a7c500582124574ae225f52d322d0909b5e946a5e22ac8f774f69c48b7874417bb1c0b93cc0a90d2a9640377808ccc2673495c4839fda0d1038b27befe3d22e2b727a +expected_private_key = 87c0b4d44cc9eb48c126c5877ff87929b08485fb81e479139c3299c70c43c3fc8c238a81d4e61e62a33db2499c866b7107d116b7fcb1b0530a7e758a8d487d11575079265b3158302a23732bd07330071bd7cb7199476c39b583a2446109e99fd5c95be21a292cf37490906e84a82605b8455825c82eca4b7e218644460ce581214c78ac4473688bd6a9a826217490ad791b7835a85935782847981ca97b6dfe88b63701cfbe3929a2dbab1628155506c353639d153656b90c5aff36baedf1b87da5bce2a108fb6c3b29e77dae803a0dcba48ac6882f6c1194e88387f30a47c27d02c37d988346a2a29584a55cb5d3c44c05a18619a4fd412babc31a046221b3994c8f22ce272c9e6e948c3d043295f413349796c38911f8dcadeae47351c15e9a1743eb65bdc7471f37fcc93cec867cd4808ecb281fc17efd004dd64ab432d664864b43f8a9b1e763529ae2c413abbcf30a4a478a30a0104d802037c4a8af01b534dd600e31a1630ff13b2f730924cb790166af3b7322baf4409cbba500c1bb32894e65445f04e4b4b4933de51267635037faa44e2775caa4212f4e0600e51069aba662c86145e2117347bb1748d63e412550c004237cf02b02aabb18d8533d19b1a879a079b31d529aacbf5258483c80738b380c83119c12b23cdcbc7d027506f3705ce1316dd24594a4bd32d10382f8ab47478f23763898398d7430264203a76b0c4455237f3e765ea5516388595ce9e2bce2dc2258b5b96c782865fb5354427a2d7806123b0cca782b1c329411c6c133934ba4a959da88a072bc6e2d63a007572e36b82c5643564bec47bc8953d4aaabd146ab5eb36e33f825fb9ca01e223253c320f76c98f810ca52a2c604622f7a60378809a59b19680aa69eed2003e272b8a1f3c8a55bca129640c5a00d187bcaf465204c73cee66a2feea414f02859c9988356d26665196674d25e64cc5689965cfdb2c0e47a531ce32b3daa9c649954342a3f62253fdf826aafca7dc85a7a8e15161435212d7a4a3bd4b57a2ccca3506999d407d9b6abcc97209fa97454b0974dc2c7cf3c3fa40306cd6239dc450536974a8ab773374504b9889cb42bce4ef4606bdaa559346f18d087bf8b7f0d9b21b0c9b75b5903194b0744a1c47483488eb4c1ca2c83d8198cc6a523d9329f6582863cac2951268c01770a8081c1c26587d7610088e6068e020e10472c825c395ac6783f074efa8597feac3734399bfa247e4e1531eac70fe49355e44b3ba5439ea1e65eda94485fb710124bb968490f1c8b68e87a4c4682156fc06a33275b6b202aa0d508b3789aaca627f0f0c19026cec38a95f7547d936b255be7a7525c97ab4282714c32a23c4723a82298f2ce90fcb4761b9eee869e4d3484ba2b222dc28bc612b1f41607cf57781990009f29617549c0b2179705a34916db154aa3747867c3ef6a0693bba5c1d42e14b3247b41059f92607a60afcdecc1c6f3839db943f5ebc4d340aabe21269095b3f7d9bde9ebc21de788794b63e1098cc2903a83ca2027e8bcb78b855fd56fcf16b45e47994aac71fc815c521ac1a1b697a18569ac2816f52640cf9059c4eb95e6fa1b32b77bd7cbcb6ab384de74b6a2708400e980ad735e9e838da63ac7a3e1cd3e574db17c2601d3927cc2a9d228a05f5c1e51a63634383ff5e03151f43c66a07be9e992aa65ca4ca17b1e021e06b261ccaa89b12a4916a5a4e39826a94c86bcba9fc7d65ff04549db70b300b1cb280b3a41e82b6c8b0a4a3c5e40eba59fd18f004ca3e4c15bedf22e099c99a3d114eb0c5988ba02873b9581107a23e54a8e51ae62375a887929f7333d4d763e23b20a246785e07700bb16c531692531433eb6a6594d1464bca7348022c1d4219cd8aa6614862c42376c3a0c4674181983f2a2ce8b7f32659ae87accab6023938592e188a3c1015e98720eacc9aa837a49c4617a850c89e1212478f3c6bba51c30a64a8a1c225274c92ea953872342a96ca3235ca7a9467be55250796126b30694f71b2f75b56d84ac89c4b635118145c7b8967de515ecc719e35804194b7ea9304636283cbf72339474ce1da00106110a596725574747dc07b3f0c7c527aca703cb23baa080bb7a4cfc1009b3e5aa89659121e365fd6cb6fd15afed70779a978b3ff50f915b6c16a350141721efd61085189c3265530c1a17491b317031b4e4667eb8314ad34cb7daa50566a9812377cf24076fc3dc748fd58865b1b02dbb831b25b7b7383579376fdaa6c8a5323230025a4bc66977f6a458374faeb14e47f70e654c42c94a5fc5e386a57abde3f29349623e4de92f900527c165870fcc26a2f95fa1850f2c940fb7b87686e253dd54b6706a84a0c70e3ab04ca8446efb77609e9815a261af5a135836064d44a485b5e850f10153653838e5874b76568516e847a2a9b186e8a50c34c2d2b0839ee58024211018b0a13fc781623cc313b30c26a258106941a66b3cd9481aca7c7e3ce3202f098746c42c58f4c7dbe52fb5f606fbf31b9b5022e691cbef1464f6942aa503147eba081817ae28581ecdd867a96195db320bd2d91c36db01ade9affb6b00f86c13e2e252c988300b05afcd007470cc3022e96af0768dbebbcf62b53345b213c1544491f1bc75ba96bd73be57a2cd6874511b44bf2dd27f4fc87c167815fec59f7a043f699ba4d23400886a7214160c23dc96056bbcc7007a0049435c534b66971e6e5c90effa6645c45031c0c905b9887700181565b53165bab605a51bcaca0dd0c308a46432794c38f21e04172005f4348211c63a40cffd7c32bcd57fde852fec793cb7013e74504721f6bfb7637f73319f75b08e3c25777c969c6ea000c9b79d6f16a00cc4b00ad7ca4f8704b2e54d9d27524f6b80a6d51f85447b22c29af0036c6ba486862c8b4fb03f26042a0e195a3e91bc303770ac844e77805e41ec6aca920ff3a1a3abe81b598c193723b20c8685590131da89c0ace08a592489791911c92c7e6ed55f642caf918173f190b2fb8cc0cb2139fb6caa259b5a4634cfd0a532b719903e32831489a2d390b4c5a5066b4ab5a3316441b162407096a0bc0342599804752fd4f21c45923705a7a04012ae4a900c01d584f9f41676c36681994c2f4037bdfb84a69a81fa561e5be05777b571922988eac714ff249926fc9cc4e93666e198308a434df74dff3c5a440948437a7c500582124574ae225f52d322d0909b5e946a5e22ac8f774f69c48b7874417bb1c0b93cc0a90d2a9640377808ccc2673495c4839fda0d1038b27befe3d22e2b727a2006a70fa33ff4a65b00553734c5bd8cca0a65eb3a115d96b8aa90f8fdc5f8f40f6aa3e88f7fa8a96067f8cdaeceeac90c2d0b5e277e56e9c405ec9420c30252 + +comment = Official test vector 18, seed: "d5f23808871544e9c1d6eace2028362b48e225312f77663e9f78cafeb512b908cd9e25875d61a16ec615f4b8ff826856" +entropy = 9f52af92ca165fdc38788f2b59ba02e01c8281ff7c1e60504688043a5fe814b04f3029e1be4e1c0258c3a22ff5b50b2674cc094ba7018da2a61569845c17d26f +expected_public_key = e0b9190b548bc164bb826874c1800980dab529866b951c01c20cb4ad363c681336b13105fc338b1788afbff321bd981974c33d98a35666eaabe3612e61839d6ad65490d71ae992111719aacf12a060648667e34d09343d93db88abc69e0e098a63749bdad39f8c6b93d75990b0731621cc04e6e2061e93cc4b51209ec92abb303bc638c52ab2ae40d746cfcc43b7576a240540bf410c14744f80a442d0555d474192bcd9b187a56691b63965973c7793668682852f91cfbce70d6d4832a1855cc4b83a847734c24019c508b2d29539fd1a114f787285e197b51bc092f80b559446f1076f02e984a1b27cae7aa1d0b50967939aac74cf2335ad421021e3225d94fa3b09148e60c20e8454c68a8022043206b7bb1e799c9b69286509a188db29a9ebb078420a0844c858cf4b11f9b4959934002be0229e714350451b9c2775a5cc8c45b07e121290eee32a73d46f8d7c55311a8c29027356139f153cb405fa14064c5c31060d7a964b33d76bcd4809d21b34a2f7806486bd2835b7f871164ae496d4264f89fb4eb15b7e5a7232b6c68b11351a41b09bb0c92c8437534d2b4c0ca2538023b29df93d93c98136780ff6f82846cc2868664322ab28dcd7279f68994ba5a5ed406d4d717d16c14dfdda58db1524f7c53f3cb170d45a411b07cd64f001daa0ad1bf63a11550c0c154d20f5096db44d1ab0a1c9d66581891a9314c18f778330a0936e7a2f3e19c18f7bc87cf078627770dfc5a2fe71b27eb8276863c3295c11e08703ef4a4ff6b3a1871c7b42c43a6eeb6bd1526aa95b7dcd6b38edc207c630bed1768ce9505544e9053e5c8cbf6a181a1a0f48c8a98b59c3adebcc3a5c99e61588834024cfc71c9dfab1df558711b311404a739f79b45b1a8a7633081a27a08c3c16478c9d24c1229723addcea225d39bde7851345b18b1b08254181b01623347a9a57f5d902290b10476083949556663309059815626c3ccb5302b978b2ce82af231934ffc7732352b990b21b69210f2acc048387b95c346974c2181148078154416e08564d664db3045dba82c9a7934de51ab5c1d7346a391baca48209c8c7235309943c1cb9cab4771c7eaf59321b510d430c88473ab16f54ae461a5dc613c6fec61a5e899552e835eff57fc34b7992755d178a0365c52b3f020ab40020ce21b45717654634606dfb2917fcc266193e2e5b2c4559cc5652aad1121cca0711e26c23eb33c1f7d389f2d742f384725d3268f8159f8c463585998289e58369fbb883caae21b87139e52d7ebb92b011cbe6426390458247c45f06f2519ab35b35675bf93325351617ad3ac470f73d3d3985e10277a647c96a6c56cc2346563cc496db232fd742aea3adcfbc506ca8cbada7b040a04f6e329fcea77bec0683e1a87c396113639159d9ca52a5a5484d2839869a2e80557a6bf7ce2ee295a464aaf835c542457d021c65c2b2a457c771fcc47f8b1056c8b7aa61d1843a40c4c9b083269b2e89fa3ba5959f89972805fa4b46e35abef0c57d875c54804de77071f1219195bc8b4f7c18a19a7953573e7f4157ca03be2852461a784e736110157ba3f83a6947aaa09e9bcae730b9b212bb837627293a485ed6b42ca1cf26792676c1f4bef1609e71524b877f53fd3133bf71ab13912bf37c2cd7a359eab035cd +expected_private_key = 4dba785b32456e16a8e9a20fa7536f1b4555a9b403a09738657a148361788d3c358a7baba8b4c58ac979c4f786e588ae245cb0c12c284f848b89585f76892fd65cb906d39b385a04d2f5b2154abd1e77ad9501abac73237780b33c601fac50ba3fc07e8525819593b7d7e69fdea46f14f1128a475e4784af38985501dca6d20bc8dc1c5c7740b33804358f71b6e97b2a0e7350f7608321736083dc54e0253c6e5c5665d0b7e68355d4e98daa753c1abc1429b397da773b043459e5aabd093a5b0210502bc2cab250041997861286924aa0a190307431719588cc2e6fb68711c964fc20393c73b7c967c603120a3cc11b2efca3dd6616d0e2c835fa92946a40c4cc2f4655301ecb09424286b3c7a07ad3c6ea37bf6132aae2d9a335e34b6c816d93cc7ede020ab723b272b70f494834ccd93bd7800bc39919dea4be4c585f827a4351e233026760dc83377329ccbff180a562ac50833c0f861e795c00ee74b584f693222b28eefcb445f19b06154abd0110c6a017ed525b5fa30c64e60663573b8691ba68e2bc580157f1c66ebe388aa2747c50919af644acd903a801a5c04a6a2eac686c89835cf59a791ad5642274a0f78244491670c66c9bce24ba5cf6b86967aefe6728dce8973fd29045db844dc80022297cf530c8eca4808f603a90a840ad70a803e6a0bfb44b38616816073c5d7ba26a64048f81a3bad3a0c9cb0672c7466e38824529298a7c0d82940540c312f429411b403f64e419cf720e1f73026184cee538b27cfb91f16186dcd3904ba6a34254155b3cb3157937d5618568f46f283c7c0e88696324a4fd77c3e6fa5b5dc0a13116274e5792fed69eaba973730a79878103bf63934d179143dc23ed39585d40c06a99aee0f4462f123b8a6b539dea9e05117b08338dd6754398e7496f612b4d892ca54a13ec9b2dc7022cf779668809ad6db97a6e8b15ff0a862e664d292c4af549195a23c19e2b9fcdb9b4a5b9ae517873ccc644993196de5c2716d58d50e7cf11558f44a16580c980654c8ca581671121cb2f8cc6f90529c9754cf0700b30943eea1a7b05f0bc8fdc1cf776b0cf2c2eab927dc83197a4071dabfc07f983bf4d2c613e087976eccaac031b88420ceceb6df0350f04ba61ab39cad4c6b2b32503d773a34514b7d5bbb9d5e7bb6dd9ab5bdb8f34a9880c49ab5c40970c435508e26cba50705c6538686249d344bdb7c820a5c8869b371b8fe13922a5af390bbb7b809c392266541671c75cc2b7a7248d0234fca16da64265e5c70257d770d2e9982d5a1c6d19bf0ba48b53ab900fc8280c754c14774939b83c63592a12f35d198194679942ec227b46cc8f353a0547e929175c3585107239aaafca151df3c835e770921e5c9b134ca7e27a18c7656bfd6a4fd2431ce1743576e575dbba8905f4cc38108e3cdcbf0155b5300a100958aa99940bcb473ef64b05baf55e91952c46851d313b0990ebcf2148cf28130cf49c8d080841fb81384e73367c792a11099f5b898416946826714e252457b23a3a1e33a36ee2612372cb2c04030840a87f96a31913a428cccdd2817b38372da4637f46044f2218c28d525a57d9c0cd2864fd43aa5c9a003a09a35ba786a7520ce0b9190b548bc164bb826874c1800980dab529866b951c01c20cb4ad363c681336b13105fc338b1788afbff321bd981974c33d98a35666eaabe3612e61839d6ad65490d71ae992111719aacf12a060648667e34d09343d93db88abc69e0e098a63749bdad39f8c6b93d75990b0731621cc04e6e2061e93cc4b51209ec92abb303bc638c52ab2ae40d746cfcc43b7576a240540bf410c14744f80a442d0555d474192bcd9b187a56691b63965973c7793668682852f91cfbce70d6d4832a1855cc4b83a847734c24019c508b2d29539fd1a114f787285e197b51bc092f80b559446f1076f02e984a1b27cae7aa1d0b50967939aac74cf2335ad421021e3225d94fa3b09148e60c20e8454c68a8022043206b7bb1e799c9b69286509a188db29a9ebb078420a0844c858cf4b11f9b4959934002be0229e714350451b9c2775a5cc8c45b07e121290eee32a73d46f8d7c55311a8c29027356139f153cb405fa14064c5c31060d7a964b33d76bcd4809d21b34a2f7806486bd2835b7f871164ae496d4264f89fb4eb15b7e5a7232b6c68b11351a41b09bb0c92c8437534d2b4c0ca2538023b29df93d93c98136780ff6f82846cc2868664322ab28dcd7279f68994ba5a5ed406d4d717d16c14dfdda58db1524f7c53f3cb170d45a411b07cd64f001daa0ad1bf63a11550c0c154d20f5096db44d1ab0a1c9d66581891a9314c18f778330a0936e7a2f3e19c18f7bc87cf078627770dfc5a2fe71b27eb8276863c3295c11e08703ef4a4ff6b3a1871c7b42c43a6eeb6bd1526aa95b7dcd6b38edc207c630bed1768ce9505544e9053e5c8cbf6a181a1a0f48c8a98b59c3adebcc3a5c99e61588834024cfc71c9dfab1df558711b311404a739f79b45b1a8a7633081a27a08c3c16478c9d24c1229723addcea225d39bde7851345b18b1b08254181b01623347a9a57f5d902290b10476083949556663309059815626c3ccb5302b978b2ce82af231934ffc7732352b990b21b69210f2acc048387b95c346974c2181148078154416e08564d664db3045dba82c9a7934de51ab5c1d7346a391baca48209c8c7235309943c1cb9cab4771c7eaf59321b510d430c88473ab16f54ae461a5dc613c6fec61a5e899552e835eff57fc34b7992755d178a0365c52b3f020ab40020ce21b45717654634606dfb2917fcc266193e2e5b2c4559cc5652aad1121cca0711e26c23eb33c1f7d389f2d742f384725d3268f8159f8c463585998289e58369fbb883caae21b87139e52d7ebb92b011cbe6426390458247c45f06f2519ab35b35675bf93325351617ad3ac470f73d3d3985e10277a647c96a6c56cc2346563cc496db232fd742aea3adcfbc506ca8cbada7b040a04f6e329fcea77bec0683e1a87c396113639159d9ca52a5a5484d2839869a2e80557a6bf7ce2ee295a464aaf835c542457d021c65c2b2a457c771fcc47f8b1056c8b7aa61d1843a40c4c9b083269b2e89fa3ba5959f89972805fa4b46e35abef0c57d875c54804de77071f1219195bc8b4f7c18a19a7953573e7f4157ca03be2852461a784e736110157ba3f83a6947aaa09e9bcae730b9b212bb837627293a485ed6b42ca1cf26792676c1f4bef1609e71524b877f53fd3133bf71ab13912bf37c2cd7a359eab035cd631e1de2556ae65d57e600c21e8e355a4ed586d667177ca0b7545cb5a23d669f4f3029e1be4e1c0258c3a22ff5b50b2674cc094ba7018da2a61569845c17d26f + +comment = Official test vector 19, seed: "822cb47be2266e182f34546924d753a5e3369011047e6950b00bc392f8fec19ea87c26d8021d377df86dc76c24c5f827" +entropy = 851ea90fd3854cbf28fe39fb81f68e4b14345cf0d6eee7ec4ce772513df8410d1c0ec046899a777655233e4e1b5ca44e9afbdc67964bfd5d5e3dbb45e60d03cf +expected_public_key = f1390e49f3b488ac39d0e43292b70042c52355eb48b841887ea256055a688fcac5a71c896414ce75f57bba12967215c50d4b5be692b6dcd1ad2190a3d785c19e283f87f784a03c8f52a23e150734fdd7bea2ab6d122c928606bfb60570bd696d9676397ac3aa1d062ee1ab3922a2c9b5b02d14557164149c62e8029b139e6950b3f8acc9e8c30274b69926c1658f7836f479c8cc70138b829848c7698b179643b7550e9193d6fa87350503c2b69136b08cc298b5c335b1ab95054d13c9260625e34c6c2fb8186e1916c137ad9907c8b2ac9d88faaaa0375236751a47918f96477b7ec01819f8ae1d72951e21608c87532a9428bdf4cb5658440cb025ce3b271652961bd935624b9eb70047e63184b9503adcd057b6744fe42908cfa325e401b9d0db5ada201f5d64350d392c4fb842823895e15720dd7785c7f5986f15cc2565a71f6ca11b854a293c9ce6c9a1f4aa3917130308f2a2aca964790baf960aa12de3334d146e64db81ef09563c9667381424c809441ee989eec93597e7c5b558a89dfaa976f6934cd18b8eacb6f2f54e8f748e4bdb69b0764fd59352575066dc242dc0f1356fab4467c8064fd23f8823148b77a4acc642eb2c181fd5ca251b323561191cb15f2ff0784900a15f67014b518453c4c3663528ffb53271e195c27533fec8c3b159ac1bf39c6fdc69dd5a5fe5872ffb6b2271a09966a5c738c48e63e141d65315051610f0f5588ac97f14100027b144aa23774f199d0d9a122953aca8782a4136820ffbcc1f2692bb919b674aa1f4d679e8418e8597c74d60c5c287cde6d44492411222636b03cb661ad66fb442193690a5f1d6b80a947442a46bdd239fe3989e6da86949474e395056a5e6cb42b25343a7c73b650d843527444243852518a9034b9efa7a6bb8505bf605ec238ffbc08cbee35a94845d7319144b381819d0928c27023b727656ea843140649c03098fe74c717aabe91948ea7698db0a86d34296b5e50dc0a9949c8ba07f64ce60da2b6e62458da229d52c08b9b696a124a8cbb791c0d255d3e4a69ed2c242000dc6476b4555552deab63ec19fe8783151daaf78e561e1844886d4418e7510bd025299b1c83c7ba22f63335b9823043336da897a44fc6a28b44c68a49b436b0dfa406be642a5bd303bb0d633685364d80440cd7189b6b34f6535101979ba9d251474fc91bf2497670bad0da78ab3c13eeaac864572a2f919546a57c719bcabc9dc8215b492d53118c2d379e879234a700638370a530577700982c4334673aa5d71db98627384e8ca876e24b5a31575ea3c334d3c7d3abb6d8891b4904b8f5db93d0531caff25be53e28c45c94758e309b83abc2ba66d98d3bdbc53b7d06592f2712663c777db60aff496a217e82d8272c3a218ad8c8b04ae7c66be35c08e3a955fbc18edd07e8e68a806fc3fe218b87f87bc332b86c2625d8ff01c9ff6214b75a20cc465f847511030b47ea664a75b3d4ed9038a9c747c6872de0a57f3b76c60585ade64570a21cf8548a5be4996bc22b3d16a7bbbd20149034764b820892b9394581697e39f9b35077eaaadb06702968a5e5418983110a97d4749d3160ddb2b9c587767fb56b9ed9bb3d91cbeae141769c2128e0acadbafd72fca96aed457caafaf51dc8c30ceac70cb4621cd4d7b4c +expected_private_key = ed55584416844e1cb3c75acfb3771013d1aaf1fb3ca8a5b718a8ce02a15ae26bacc7534f8b084a665b0608780e532a161686b07faa83884c6a0efb490a8a3fcabb50add21f58ac43ef4355246b1a661c5937562fa6067e7aa66978e4b36ea1431ed41e4e4282d4003d5bbc06cdf7af225b6560c44f43a278677abba8c6b79741b3ce7c0d0769ab407c9b39c032f0e42d1866addf2115e2f3336384c61ce9319cc92ac1350b264cbc4059b94372631c8241ca376aa6f76111537018c01d1346019d628f1f00cdf828b48c47cbf958989b846ed893bb0b6444bc2a35c6443f77d757a0cc957716373460a7a94151cc548f0c78aa5a323581c192d00b4d96219806a04b1a0ac829002b7fcbc8cbf8a8e3abafd3dc2164d03a24c19d50133e967c7668aa8b81977b400067fad2ca802a76716b95e3d28be5603e4977c33d3ba5df2446f6265827464641204ed972286b58567ba129bec0cd6f1644c4032edd6239309aaa259a3d997b1ecc535f17d773ab1c5350e3c82c600175269700a56b0d4211dd02c13d4bc7c54238f40163441702613a1de34ba9b0b42ef0a29300098667e8003588577e64b031139dd2180db113623fc4b74e946eef86a1a6bb52764c6c12911765e37a685400888aa9140a3adfc48712688435258d56337fb8d8a9e1f34bd2e818ae3b7480f500fb6bb03bd50019c33bd37b060bc2c45e8a2267d18927c0af66076619889ff6b1769fe59e5f131f5fe40db2815bb6886b7bca9da659935db493ded9a808157e4151b04c153e673333424b7aa939559e4ca973f7644a813b8d9c1db8c87cac6365c0e008e329403c69490976cd3f006f3138114a6b3e6b3c4f054451e5bbcb7d232f285a2ef5202b81740053512f8e4b33fda87ea61042d1f9736ed58e9047c8744735a728b636dba7abc33b2de0b1572a28b23c25a8668cef9291990a499bc8935f955e1cf0301a65be870b7f01f06099192431f3436aa5aa6564c4689c1d2e11540355138c91ba6e0182b6daba0e7a177ff320c6b04977d47da0d51672eb96ca054ad2d4a0f72930061775592aa40e9c9418ca611893044460495d8a46b242201886cb52e38d91d25d7fa8262290628d91323dd2a51f8c7a33487232f4934133117699028381751d8594fd94910ee4115389c57262ba579220567a7b5b42441a641fd6630d7bc06802878c76bb9ea576965ee45acb90ba549a01b6e873a1d8c741662067a116e64c8897e83204170c9bf2676ef60c20f3450804c7a1b80725da17f9db18f715b7894ccbb53321cf01755d168d19a96356ec07efc62d9a8c3a8ffb15500433f915137ac42a474b8e43f283bdb2b46cd62d509a5aee8cbe23b74cd48079d82293bfc9cd931289a0aa27d8a930beb2000acc2019e3cce107a18e9c4408c516fbe19e45459ed77231851b88b6b73156ec820a4c097072c2fd61c83d23413ad510662894daeb238992138f98185042b53a637aefa83378b026fa7bc314516b25d343f0e0aa7772cd2da27f8b39a8becb44923792a7d586631b2ab963ae537768e45961f5f96cb42320e75738a964168b9403d5b3591ac5679a61857c818b2a486bb299019c7b03beb50d2d40a17e84712aac01f1390e49f3b488ac39d0e43292b70042c52355eb48b841887ea256055a688fcac5a71c896414ce75f57bba12967215c50d4b5be692b6dcd1ad2190a3d785c19e283f87f784a03c8f52a23e150734fdd7bea2ab6d122c928606bfb60570bd696d9676397ac3aa1d062ee1ab3922a2c9b5b02d14557164149c62e8029b139e6950b3f8acc9e8c30274b69926c1658f7836f479c8cc70138b829848c7698b179643b7550e9193d6fa87350503c2b69136b08cc298b5c335b1ab95054d13c9260625e34c6c2fb8186e1916c137ad9907c8b2ac9d88faaaa0375236751a47918f96477b7ec01819f8ae1d72951e21608c87532a9428bdf4cb5658440cb025ce3b271652961bd935624b9eb70047e63184b9503adcd057b6744fe42908cfa325e401b9d0db5ada201f5d64350d392c4fb842823895e15720dd7785c7f5986f15cc2565a71f6ca11b854a293c9ce6c9a1f4aa3917130308f2a2aca964790baf960aa12de3334d146e64db81ef09563c9667381424c809441ee989eec93597e7c5b558a89dfaa976f6934cd18b8eacb6f2f54e8f748e4bdb69b0764fd59352575066dc242dc0f1356fab4467c8064fd23f8823148b77a4acc642eb2c181fd5ca251b323561191cb15f2ff0784900a15f67014b518453c4c3663528ffb53271e195c27533fec8c3b159ac1bf39c6fdc69dd5a5fe5872ffb6b2271a09966a5c738c48e63e141d65315051610f0f5588ac97f14100027b144aa23774f199d0d9a122953aca8782a4136820ffbcc1f2692bb919b674aa1f4d679e8418e8597c74d60c5c287cde6d44492411222636b03cb661ad66fb442193690a5f1d6b80a947442a46bdd239fe3989e6da86949474e395056a5e6cb42b25343a7c73b650d843527444243852518a9034b9efa7a6bb8505bf605ec238ffbc08cbee35a94845d7319144b381819d0928c27023b727656ea843140649c03098fe74c717aabe91948ea7698db0a86d34296b5e50dc0a9949c8ba07f64ce60da2b6e62458da229d52c08b9b696a124a8cbb791c0d255d3e4a69ed2c242000dc6476b4555552deab63ec19fe8783151daaf78e561e1844886d4418e7510bd025299b1c83c7ba22f63335b9823043336da897a44fc6a28b44c68a49b436b0dfa406be642a5bd303bb0d633685364d80440cd7189b6b34f6535101979ba9d251474fc91bf2497670bad0da78ab3c13eeaac864572a2f919546a57c719bcabc9dc8215b492d53118c2d379e879234a700638370a530577700982c4334673aa5d71db98627384e8ca876e24b5a31575ea3c334d3c7d3abb6d8891b4904b8f5db93d0531caff25be53e28c45c94758e309b83abc2ba66d98d3bdbc53b7d06592f2712663c777db60aff496a217e82d8272c3a218ad8c8b04ae7c66be35c08e3a955fbc18edd07e8e68a806fc3fe218b87f87bc332b86c2625d8ff01c9ff6214b75a20cc465f847511030b47ea664a75b3d4ed9038a9c747c6872de0a57f3b76c60585ade64570a21cf8548a5be4996bc22b3d16a7bbbd20149034764b820892b9394581697e39f9b35077eaaadb06702968a5e5418983110a97d4749d3160ddb2b9c587767fb56b9ed9bb3d91cbeae141769c2128e0acadbafd72fca96aed457caafaf51dc8c30ceac70cb4621cd4d7b4c87f3829eff562789b3e19fafec92e4b5f95b45f3786f12d9c24915ca484a49ce1c0ec046899a777655233e4e1b5ca44e9afbdc67964bfd5d5e3dbb45e60d03cf + +comment = Official test vector 20, seed: "81401db81138d6874e91b7c11d59596e4ace543f5a3471b6fb00999221765fec3ca057abe20f03b2d59003375fd71fe8" +entropy = d304c9389cc973477f169788abcb9d511f843219d246a9b587822f422a70c2386590a2e5c7ed86cf2c5c2a898662bc9a81418720bbb632ef9cf0b845ed052d73 +expected_public_key = 2d7b0180596be297a4631abe0d48a046dcc99c8912b8255fc45592a2a61230652bc7c450a674ccc3abb27395738d177e7579afdcc30e74e7c7b5ac5dc235176343cfc4920ed8d9472e13c9b36a6d38bb44756bc31fbab62893656da065901303700a14b2f785d98896ae97953ba358fd53091012b97498cd7516b0e1898e2f6803c5a13d70f5bec346917249940ba35e3ea954f6ca13c343a09cfc02d8e66852c1ae0ff8b22e7424f53b1897ea11268a6b866c09efe8694031754ed1a2a147c0086283284133aa6c324e0b0570469f09e0901f25213ff9b113147990b54cb241268e0b6c7a3a90c638b7c483c71ac1344bd65c988736c4756e0b71111bf5b810fb3cc4187363a94efa020de1c3cb9a005cf472bec5685322faad5bd1cb0f240458b56fcc5a6167f22577565dac1ba9b984c33c348babb70506b87926540547389b805ba01e4443b5d60b9a407f8b060fcd96c4b717baaeb72400eaaa9853b962e8a0c8d966458cc4cff31e960c447c6b205629419478360cdc945d6b9a55504d853c1e51364e7a9aad82b64fc37a02e4139b9e6c392dc83c04005f6d1299d990a89ed68acc31b5d1d224f2c8b3cd5280a12c6e088cc2f9d3c59afcb9fee458af5135c9b4b477d878f34723e3912189d2764f9366ab8752c9248a5684296ed46f404a1739ba72d5d652c614860d41898e45b72bf66d587089fcf49e3b94cd26999d7539c32bdbac0139b20988cc7b578ed880048885355f193ddb1690b9092aa2a86af03a41797120be84334ef25c2e70bfe8e0a658f03435b65787f38bc9452ddc584162955f8b8560991c407fa0c12d770e80fa4a2cf7b853708bef2a44f959b9d05b6faef83f6f41a2454257b0157c55047ae7d0cc17079e118c8a4ee3358d877251970eaf86684ec70858a94bbaa4bd2fd1895c2223320ccadce636c2156471b76c48d53e6a6c12a1317c39c48bf3a0aa0dbc8afc034b43398b9f1c56d407a4b7c2bac134024df6ae9800b230e2592f529f79f0ab048867a349684b242bc4d2284a6106dba36de7b3a114b6353b479d014a69e33acf5c465ced6669b22027d6657f12379abbd248c6967834239e2d3a0211b73a77d681b61892877b7e102a53cb4602e3dc1704ec92a9e260d9817c6393062bf520f7a845fff19123a1662fd241090ac81ee1748eea878d53969fea20fb95688fcb3d235910f154bd09a75556d890409cce0a20c6cd2a59664bc4ecca3d4725910d210db0c848ce7242cca945f1568561bb90d9a4c3dfba83074a16fb3ac934c865dcebaf6fd90d5b458c22542ded5111e77c12d8656908557649e9155a8472d5213b46f739f095b5fd4a2418074ef7db9385f19d6630aa29b28881aa3474b7ac352c5dfbfb20fd7b8a0b87cf3933547cd498256a9e17733ad6967d7b9c7adc64a951ec5c8ecb75b9190064f3a862d10cb5707215f456caa10a2c240619925a140b6cba878a0d40283efb9e1562c227d716d2935e8d96649c06ae9465aebf552d68da1e7991bf987a4dff4371049a0dc9e56f110779d562959f278b069b3c7712af29027aad6109bb0c3201565c0b0892a62aa74ca7bd6b48039066a95dbca4e76a3a323612269546b18ba1bda19c123c24504ecdf72189dfa1cd24ebf011a3bb66d35f78633e1ee7b249ff +expected_private_key = ffd8874d8b37c946409d69cb03529b7d1a43ddb24792d4773cc723643567671b8e0fc2b903d302679a530118ac453b0541a2389c46b38f317b43130972271d8146a66593b8fe659db570c941f1abb4f295493085a85277062c3d4db168e466015ea506b5b8a805a435ef6812a6b68afa9372776717c1042e24e7a10a842182e7c40c4cc547b98fe007a1d98804ac5bc3c31b6511425a558c73e5b1935c7a664ee224955b6d67ca54d47b04e1622716a27b21f12a2eb27c16d26a541cb0c1ba5a1a8629b7f2222b84cdfed9cb6f666b41c92fd0b074f42b5d2ee72e8c5443f34c5dc2920da165558af074e3ccae84c1cbf1f70624e1a3a30a7db045a2c4a79bb1a4b0f01187bbd8b29a8c60b07068a72264d9b305b5e391521bb945d53ce1d65436441932ec5867549408b47f28d3bf37d7af0df432ccfc3667f4ace969542cd626637b570fd84210b3ab5456b23b8b339f4885e9a96bb17ccf1ca4a962c5667d0c3dfb356146c04bb8391197d54d0f4202f160824d900b27b36bf8abc7876ca331c2c3a8a161d98523adfc1ef9d538c9203a6729cfcf6089f7d72f57093ea3a34113749f23ec21c051ab2c836679b0210a549f2678c7187691de949994a25769d4647fd992be411e24e302c07569cf26c11f3942ca505391a794d42c77da0a324b05908aeb9c70b88b38a95f371b1902e06d071457bbcb382ae4c36f14ab3a747a30cb7e9d35791879873a0333b3fab967770465a056de9c4420662c046aa8ca32093ae23abd80406fe60bdcd1725daab0e50931c575a0c9137fa61442b1101b05686d398a6fdc0bbbbb25a073e99c3702b9268ca91420a1198b5c54501a03c878b6827e6d586ab42c2fa47258d1255711654968fc80e1364886f18e98fc10eb85645b399788dc225b1a233fe564604a86397a4483c102203188df667961bac9ef19b99432475c0a2c9978c81cf5314a2b2ab37479549b14c8d70ed8f0c6625938ca4a92bee5a7aadb286e507ee8890772c3353e35c2de8696041bcc8b81997f8c7800417c91c32e9b8b34b62a25e5c2af2854cf902269c3c5b50a5209dc1c63f8835b3a73137d855c69f9335fc66efb985933f4a66b084aa58909e658998a15ae8b087120f59a00426cf9a327dd48467f8c12cfbaacea7bca7407060c42950cf9543cac1edf9c296d978a2c36aad92b665d6c9513b59278ac1cc781204e555e27f81e976a74d3055a48035203472960e596c7c4c2d0158a006d884f40681c6610f1124574eb9ff5323e10480d0e306f1e398ad1e6cf8057024d072def4719e3a6be9aeaa07b56077be495a635c67066a2945376c9836ebf4c413a05a9b1348c31329884bc7d820a6bad7a63bd62518878a97fb525332433573973df74a00ec02d50198a2b1306005335e6a51191505fb244999cc333bcfa4e7845b766b050cf66607982014d28548a4454f86a06e9321c82781478cb938c709ec5cc81ea1a9269543dc8ebc6d253be1698990c81c587d7263e7445baf53316c23eb8863d151a4e5659928ad704c1c7b2bd2a1987907a05ccbd2f0c78232a10653452e3dabb7598ca83d37166791ef11a2524f371180984bf72a6e2291301606b7351a284a1a62d7b0180596be297a4631abe0d48a046dcc99c8912b8255fc45592a2a61230652bc7c450a674ccc3abb27395738d177e7579afdcc30e74e7c7b5ac5dc235176343cfc4920ed8d9472e13c9b36a6d38bb44756bc31fbab62893656da065901303700a14b2f785d98896ae97953ba358fd53091012b97498cd7516b0e1898e2f6803c5a13d70f5bec346917249940ba35e3ea954f6ca13c343a09cfc02d8e66852c1ae0ff8b22e7424f53b1897ea11268a6b866c09efe8694031754ed1a2a147c0086283284133aa6c324e0b0570469f09e0901f25213ff9b113147990b54cb241268e0b6c7a3a90c638b7c483c71ac1344bd65c988736c4756e0b71111bf5b810fb3cc4187363a94efa020de1c3cb9a005cf472bec5685322faad5bd1cb0f240458b56fcc5a6167f22577565dac1ba9b984c33c348babb70506b87926540547389b805ba01e4443b5d60b9a407f8b060fcd96c4b717baaeb72400eaaa9853b962e8a0c8d966458cc4cff31e960c447c6b205629419478360cdc945d6b9a55504d853c1e51364e7a9aad82b64fc37a02e4139b9e6c392dc83c04005f6d1299d990a89ed68acc31b5d1d224f2c8b3cd5280a12c6e088cc2f9d3c59afcb9fee458af5135c9b4b477d878f34723e3912189d2764f9366ab8752c9248a5684296ed46f404a1739ba72d5d652c614860d41898e45b72bf66d587089fcf49e3b94cd26999d7539c32bdbac0139b20988cc7b578ed880048885355f193ddb1690b9092aa2a86af03a41797120be84334ef25c2e70bfe8e0a658f03435b65787f38bc9452ddc584162955f8b8560991c407fa0c12d770e80fa4a2cf7b853708bef2a44f959b9d05b6faef83f6f41a2454257b0157c55047ae7d0cc17079e118c8a4ee3358d877251970eaf86684ec70858a94bbaa4bd2fd1895c2223320ccadce636c2156471b76c48d53e6a6c12a1317c39c48bf3a0aa0dbc8afc034b43398b9f1c56d407a4b7c2bac134024df6ae9800b230e2592f529f79f0ab048867a349684b242bc4d2284a6106dba36de7b3a114b6353b479d014a69e33acf5c465ced6669b22027d6657f12379abbd248c6967834239e2d3a0211b73a77d681b61892877b7e102a53cb4602e3dc1704ec92a9e260d9817c6393062bf520f7a845fff19123a1662fd241090ac81ee1748eea878d53969fea20fb95688fcb3d235910f154bd09a75556d890409cce0a20c6cd2a59664bc4ecca3d4725910d210db0c848ce7242cca945f1568561bb90d9a4c3dfba83074a16fb3ac934c865dcebaf6fd90d5b458c22542ded5111e77c12d8656908557649e9155a8472d5213b46f739f095b5fd4a2418074ef7db9385f19d6630aa29b28881aa3474b7ac352c5dfbfb20fd7b8a0b87cf3933547cd498256a9e17733ad6967d7b9c7adc64a951ec5c8ecb75b9190064f3a862d10cb5707215f456caa10a2c240619925a140b6cba878a0d40283efb9e1562c227d716d2935e8d96649c06ae9465aebf552d68da1e7991bf987a4dff4371049a0dc9e56f110779d562959f278b069b3c7712af29027aad6109bb0c3201565c0b0892a62aa74ca7bd6b48039066a95dbca4e76a3a323612269546b18ba1bda19c123c24504ecdf72189dfa1cd24ebf011a3bb66d35f78633e1ee7b249ff699fb2f061a75f111f4a7a60195d9045dc01716b6502cc107cbcedf122e8f6196590a2e5c7ed86cf2c5c2a898662bc9a81418720bbb632ef9cf0b845ed052d73 + +comment = Official test vector 21, seed: "30b5de5b73681ec08aaa03f6f2d2169525d25f4042a5e3695a20a52ca54927b85f8bb948fc21df7defc3910b28674994" +entropy = 89a6e3be304a3518fb82b18ca730f0b359cd6ba90664a493fb4f8edaf965b9c3b6591121e25d64010c25a18676033e1d7278ac5f2d0b43a31f3a4156ae710465 +expected_public_key = f3576ff861541032094855b18cf574d868b0eb783ce9011f28fc14c486b122cc80093897bfc8ac1082421f99767bc42b0ff41b22dc7b50d5556041338e6c4368ab190e92608f6cc69d8b33f1ab04de68cf96d9c5882c97cf28c30b86924aa57849954369c5427c876a9b1ca341e8522e1357e60a4450b69f150658715403d1e1c957e5a914b9a3bc4c45489053306329c7984e76f169c8639de4080db1671ed01a24724a101df89e45b5b385ca2ef663586ae58d9b33ade9738f84482e6e28909e7641aa673ad772b125161a316166e1717fdbdc8d02b2b2b6dc21805619d4facc40e9a21bcca9d4da71220a4631e95b25e960192a22a39b904bbb02f1184b79a97b3cc16b5e4b5eaf278913b7a195f3107342a77a68cac90c1b5a3ca9b354a6095c29c09c5ac2b44c6cb28a250834d5f2a307ea3434977d0087017ca2692b79008640b770b41ee2c2c77bcc2605f1857368c8e12983afa8633c870115a3818d6bcbcee864a8db694f4b77bcf63a8aec407a45716af6358065c30b77b68c2198b2fb558f463a7477b9fa7680f1e65706a888b8740a87cc7e7949156f896c182b53e464721e46a258820201887ce9b83d43250b63e2ab29900a115084a6e66584f767853b2e684c547d97266b36b6838aaba73298dab79c58c88f1b51113ee752736b7566eb5759cc4dbc37551135bb3c87b1a6c83ac5a38dbd78106ec0c5e9967a6d81139cd516027c25afbb6c47e3802d56079e6265c4f21f1315a96ab994597214b814cc53e8566330cd51fb4045f605df1c7c9c255166651de6041b7fd85c7e376e28076ad352051c65494a1054c30930621c53ee8947dce3c55bd686f186cd5aa21afc17664d36a2d7f5008ae83950b93ae510847552a5c2f761207b0f478c73c4d6313c8acc25b13ea64a72ee3334013cbc0a855b55e88ea17466534786b6176b9053ca9d0494c6b4a940b70b68f40bf570c461f11795952e69f21ec4562dec99448263188ef44e71a1681d626cac69c6b56ab51ae656be1ca028672d97d044e43577f26329d50851b0f8a4a1b6c2b673ac6418ccd58005ad400c27d274dd4732e56b5d7c0b6ee731a99e15229f7295c153aa3a873c20c23a35b6137c824f6fb021a0e28f98bb3be8dc07a5b038dc89944952913af7a39a9b00f1a038a628686a735dbd4c45e0b8bcdc1c1a902cc4d0571cbd589f507a0c0dcb81bd39811e723358d6320a3049bcc90d776562eb34877978c9929548286a85efb85f7c6c76ff255f13a0cf5e70304f1cc838fa398fb34e26ca662759c8f3657125dc2aacdc4615653ef074a784500ec60980be4aac94b0c7a9012dbe73cdbf1687a684ac63526778926654a4ae4cc779a600a836e3273acb95a802051f18af32683f52363572583fdfe30287b2632874cb04832f55e0944712c86d37420137c56f6251a1352ae37a0c3fdb885cb561e63a493a15beb5e3b123aca6b6b7294d8002e7ec758ad2c22d336aae3c067703821842cba2dc0b1b7a45cc0a48202a002f927122c040f84a884c1334c1e17347108b91c055d331c0b170c6f06048b40ca0bed838ad963fb8747ca714cf1d3267b701132046699798421acc06a3bc1ade172fc62123235c2d8dbfe40dd56ce5de6756cc4b6afdf64050da2eecd9953e893c53bf7ffb +expected_private_key = d32cbc1116ac88219f9af2c33beb59bb94b372f97815278f0fab2c690c94b8f209dd1575bd7c0bc7f48aa133bfa068cf1af1612c3325b8d08963bbc66d938f46843fee424357e535c2259ed958a75ca6203286190be53a9b46373f8b41cb38c1cae2bcb91898669a872f1a8d9cd21227e42ed655569202cc6b494cc6a6bdb08731cde417f48b86554ccaf953b8fb70aec727085510cdbaa7cd2a0ba853928886332fb1e3a419c49b34ec90fd31b716252acce7a79d05cc04074d69ab3cc9809102261a2191a086231dc70aa583e86912e5beb2c1a22e841f39db531d5c26cc333834a20480d6b1ccf19a654149045791d33b414696375dc3c7b0644626e8822c5325d52ba764f2361d853d244416cb9a5bc0540e1238ccb53438c90a196a45571f743894f060f6031fd623abebb4afea05190dd9452c981352a78e09579f05e24db2033aacfb10d9335986e8542d9480bf5603fa932d2d0878c3753e6524a809324ad6f169d7fb6d9c0264423a632996abf297707d8412a6b86160b69980e18add1c372faa406f540c00ed0a75c3544811759c3b5026e6c19102b7160883ed002de5807b5933934fa01559c4a790230ee93c215bd75aff117d0f170b4feb7aef5b007aca616e688161fc00cb037c8232cf2dca569f01a2e1dc2af7ecb6111181f2ebcb1df27c6ea84251d8a2b6b6582ef915e2b8c7f8fb6be8844478fc570b8054a067b34120b47fc6ac68125cca8514db4540b7796c9fd05523e7014db34b8ec94d5eb66c9f5cae2f838191d2234f43c72262a18deba17ab495b7f0529d89b8e1e407bd5a185eaa2444d20c6c9566526b8707b13bb0cc8d9589773db90952a5cd78e43bdc68cfa4401d7912618f456eb4f97ac1b49ab948592976233f962b1916531fd1672bb69be320a2985b38b80279572488c5f86bf3d55fb9fb90449b66fc874b94292000466786fb7e393765c7057051999711d234b4d277419320e0046ec0925b41d6b89c62133bd2734e296dcfe90bf6344219a6a22d2cb50c75bc02b07fd0da11fe0a0a0b9aad76001d5d7c8fede065dde87d5d47821e756a926638395883879a91b94c6164a40895476269917caeb12944dc956174b6cc5154944571a6f6553f604d3212728fb08af6e8c0ea00265ac0c5464595b31a9131871d79298867aab426d009480c0befc08ace14991399079cb62de9e6bc80c88c3339640fc667ec837b691c3da4556a952b3e63c162ec911101c5a49b35475ae68634a7b0cefccfbee608cd4c43c8eba7a8f957db595645c64ecf08b50c7438bfbb415c27a45ae940ad077e5a533825d998a9095a735b5d23887b0048af49ca85f18395c7d3cd06bb687c92cda9ac9c03a9333a866a9639803c76b5b189294a269f389abb5010789d410b88215c554008cb10274f781ed6b0be3903576cd16934c4b6b65296c477aa174043f06792f3944efd0206e34042d827caffd2989b936b91694825c4bd8b10c0777b11971cc1efb93ec1b3674afb4fd07568ffe89c707b5785c140d51b433b7942d88a6ef9bc9d091472833004005aa803a050ce03b2bb551f62fb1fac6649d3e14f0141b2eaca73b700489b73a8d840834a7802a96864610b10f3576ff861541032094855b18cf574d868b0eb783ce9011f28fc14c486b122cc80093897bfc8ac1082421f99767bc42b0ff41b22dc7b50d5556041338e6c4368ab190e92608f6cc69d8b33f1ab04de68cf96d9c5882c97cf28c30b86924aa57849954369c5427c876a9b1ca341e8522e1357e60a4450b69f150658715403d1e1c957e5a914b9a3bc4c45489053306329c7984e76f169c8639de4080db1671ed01a24724a101df89e45b5b385ca2ef663586ae58d9b33ade9738f84482e6e28909e7641aa673ad772b125161a316166e1717fdbdc8d02b2b2b6dc21805619d4facc40e9a21bcca9d4da71220a4631e95b25e960192a22a39b904bbb02f1184b79a97b3cc16b5e4b5eaf278913b7a195f3107342a77a68cac90c1b5a3ca9b354a6095c29c09c5ac2b44c6cb28a250834d5f2a307ea3434977d0087017ca2692b79008640b770b41ee2c2c77bcc2605f1857368c8e12983afa8633c870115a3818d6bcbcee864a8db694f4b77bcf63a8aec407a45716af6358065c30b77b68c2198b2fb558f463a7477b9fa7680f1e65706a888b8740a87cc7e7949156f896c182b53e464721e46a258820201887ce9b83d43250b63e2ab29900a115084a6e66584f767853b2e684c547d97266b36b6838aaba73298dab79c58c88f1b51113ee752736b7566eb5759cc4dbc37551135bb3c87b1a6c83ac5a38dbd78106ec0c5e9967a6d81139cd516027c25afbb6c47e3802d56079e6265c4f21f1315a96ab994597214b814cc53e8566330cd51fb4045f605df1c7c9c255166651de6041b7fd85c7e376e28076ad352051c65494a1054c30930621c53ee8947dce3c55bd686f186cd5aa21afc17664d36a2d7f5008ae83950b93ae510847552a5c2f761207b0f478c73c4d6313c8acc25b13ea64a72ee3334013cbc0a855b55e88ea17466534786b6176b9053ca9d0494c6b4a940b70b68f40bf570c461f11795952e69f21ec4562dec99448263188ef44e71a1681d626cac69c6b56ab51ae656be1ca028672d97d044e43577f26329d50851b0f8a4a1b6c2b673ac6418ccd58005ad400c27d274dd4732e56b5d7c0b6ee731a99e15229f7295c153aa3a873c20c23a35b6137c824f6fb021a0e28f98bb3be8dc07a5b038dc89944952913af7a39a9b00f1a038a628686a735dbd4c45e0b8bcdc1c1a902cc4d0571cbd589f507a0c0dcb81bd39811e723358d6320a3049bcc90d776562eb34877978c9929548286a85efb85f7c6c76ff255f13a0cf5e70304f1cc838fa398fb34e26ca662759c8f3657125dc2aacdc4615653ef074a784500ec60980be4aac94b0c7a9012dbe73cdbf1687a684ac63526778926654a4ae4cc779a600a836e3273acb95a802051f18af32683f52363572583fdfe30287b2632874cb04832f55e0944712c86d37420137c56f6251a1352ae37a0c3fdb885cb561e63a493a15beb5e3b123aca6b6b7294d8002e7ec758ad2c22d336aae3c067703821842cba2dc0b1b7a45cc0a48202a002f927122c040f84a884c1334c1e17347108b91c055d331c0b170c6f06048b40ca0bed838ad963fb8747ca714cf1d3267b701132046699798421acc06a3bc1ade172fc62123235c2d8dbfe40dd56ce5de6756cc4b6afdf64050da2eecd9953e893c53bf7ffbd3413880d082f26986fcf452a84a8da934ed06198b290ada1789e74d9081a9e7b6591121e25d64010c25a18676033e1d7278ac5f2d0b43a31f3a4156ae710465 + +comment = Official test vector 22, seed: "e335df8fc0d890588c3e305ac92c7160ff199e07c85760a828933750e3fed8c83b0dbe802234481ecf890a32d7a2884f" +entropy = d569b935ce015c85f792f8f7fb0d83c4f53b492959361dd4f75fb764d656450176eae84d11c4528382828f7a689a0d5cff87b8ca0bba97feacb39b935a8788cb +expected_public_key = 4c376ba98c3a0415a3bfb0ab42d0a3d68cb171109c5f83147c33adda2cb07c62a9025b44523b0ae4cb8a8bea5e550b717ca6c8271997cfd6c5ed76aa44e43da2a02d35610787f22966298ffbb45fd78a8d36eab454675d6951a70472caf06640bc1b97d6760e74b41c577855bc0756abe528eb4894e8776f1e739da45a9f84c9bf3c72b43262525b547f75176ab2e12d8ea808d3b0355766bd69d964eb3b450a96c835d7b238220febd62443b03985731333c54382d20200e30e4cbb2b607ac998f20def865bdf47ce78ac3dbc1abe33245d6fa7583b31b6fe7b6ede7a8ec776b20f7bbe7e376578f0933b761bb0952161123d61282cd6c80cdc8a85f9632aba1a8ef5925e410bb80beabc67735d07e4abdd587827745a3220a24a7b3902416befab3073c2cb1fa76ff04315b653b3e7c18343391f92015939829dabd0289b5aabc4cb5335d963ab842865bb7c38106eb1274eccd0140b415901279e8719c0415517b5101394f78a48f565317909371a3154d291698b0bede17052f30786dc2d46e71edc438c288cbd44445f993926bff0a8ca1a033b656c2362a659eabbcf37b2cb5916940aa9b3e850e51039c08c8588347e1099a0d8380ccc4b8cd0c87218bc24f09126a82a3d530a75500254510ac765cc1de612a4ceb14db78a7141109f947b4329158f87e4c8b41a92afccc9eb749d66a71159db90e7a36642636af22cc0d541ce52db7ab44baf30560691a637c93193a11a00efec075289953fdc9df3ec3390342aee44c08d661632fb0303681e1f89ce1300b0c1a36e63e5a45886a4c76534fa78b87a75cf96ac66205c28766ba5eef7062363c19091c61c543d5c1b8a547372515722ee515e8ef52bf8e089d93377e2c8458e626d3391953d658cdb05c7a40077f4e19dc0b132be719014c12b0cc242466112e94809630b63fad12c99d271dbd38e5afa54c894542b940415354203a0c8a785ab94200ee0cb976991c642257d9af6998b61ba27b236fdfab86f834fb2d47cc0904b9d6acd2f8311f0d4b8ad81a24f712d92272587220e8023a8bc13bd17572d38851778f319607752466cb0de7c5c12103fae4c57d953b96be93262ba9cb05405a5d2a9e012b21a22a2ef33a385c898c80aa9663565b63241a1b206f3379abe8262cfa49ba05c3b43e9485e60cd38d66eaed114ef81afd66b2594baa361d3c3b02069b1a164bc387632e24c82a91be2ca390eb585e900173699a8b26b8916e52bd643645d3225df38ba50a50ea013b4b2a86ee1f76278e27f5a4142f034004b567f309c52acca3c7530162ed744a67481ca338861ccc3e8331e1c67886023743719493cc3caea51438e28ac4ea06b906789a65220e3c7407c874c6322be1f9b627386081753ad618a8dcc013395f20f5017ae2b57ba908617490460d5a67fae2660a56c4c4d97babda0bae0f494260877f7077af2536b2ca46e297c61dd8422bbe515519210dabc02e7047b13f16607ac15e4950574c43bf8c39a2528addfa2782506635e5626967a1f30c02fa3442fa93250571a8173999a88dc27b43c476468a6a4739972dc1b68493413a2743b9b563283cc886916eca5887796a4f833aaed6639b9d531efe5cadf9225573a23664c9cea086428dcd19ff40a06186a41fec0723953781475f648 +expected_private_key = 818b55fa5ac30a81891f3a3643924b2b046feb6765a61cc81c9059d1f82f6a0067a102825c88a530d15f0dd95f0b4742d29abe7044c62d45a05bdac46130305e3c3417d67f60b92edeb6b2a398119ad160ee3cb0fb52144435a5bb5412c0512dc6121bf6e72d0f87a3834ab5338196fdc950a3cb1b7354c4e50369bd4364cee9066a221dfcd580f1b914c0c335f547748bb19264b7879f206a9c610573b8676bd0bdfd777a2a0ca5ec891a1317c5289784de114e84c53b983778bf8933805256c9a9bd05a11af8f5ac271ac3f1e635eb9a8263c855bb230f58ea3b7e8287d76258aa57646b97560e593944c4cb3567a2c382a795c991f69bc2df2cba8837c9a3b58a9dac5e4d84b50722a144737ea38b14be51c41cc55c53340ed158ab4a0b0f0a2612962b89cc2aa8b29198f2e04b0f0cb586f271c6414f31a71a45eccda8c597c38415d262571bf0a7bfa17115e0c7731c70c2d01c492c85de16c511102c5a96973c724f3b58b504eb65f56116aa7779b76b2554736d9d6176dfc6ba007a590a311d4b86a7a6251fffe6086ab3319db48c4dcb91fe680f45a9480241242e4ac9861b62860837cc813fadf00751c8021f7a1c4d7a1e5f13bc3e8462f372cd7498197d172eff98b1f8bbc37974b025295a80e3525d282fba8467f8079d78fa6068e23bdbb3349a31506e474ea228c3927a554d7747bd3621a0343cb155bc786075c3015c3692c0fc65b194a12152a14153a03d5147b0cdb423a3b50ed6461813f9ae1fd63ab7a53031dac2d0f87cacd1cb81461c8c08bf367c4ccae7626343469d417acc705546293498035195240387fb1f2e7c005de000e530b9e21cc7dbe463e7d24adeac1127026843b87cf6fc1bb94674399b0636506b1acab72f623adef866f883762b5b4509cbb2be142c5c550046e10d29fa431f9b7d977253928a8d2d4c33add899ad736b40cb4fc656be02d90bf8d393d632a1ab509c432511f1ca16b01139cb0627f6503bba75440414af97a04bc5239567c060ef94c9ba7221d4612eaa640bdbb8b72e32a4668401aa79421ba68115261a8d94878c90a0468510b247968b7463ff49a0578044c5e9147f0739f6a17b18828bdcf56966b1caa125cde7ba6dce939e56d350e896ca6219a6b8947e3909361754593fb8a85e742cacb74e1d45704fa4cfc91c142453ba5c08558de1321ad6a6a2804769a0bf69770a1264ba5148b40a3a9be3c513a382cfa3c244c9a138ea9cb8da7627b350cff87ab064a079876893d893250ef59f369c41f9ea40daa5a5984c19ce06cf9bec2947932133a4157bb8cc3c72a1fd25715962a9c88026c018b7202885224019466540c9eb5482a87e665157be7722bc64133c827c20b97d9e692342f23fdb1b75ab2ccb6fa5973820b92ef1bb45c2b5ed1330c1417ccfb39fc6301b8a749d3613b3803a6abba20990151305cb32ba6a5b558265c2e27d8d49aef3e91819920db20360355919d5f641922233a1c24c0045172cb10f9564a029f07578a48a4d215248f3ac7a912ef8e56e366b03c567ab978c750d85454c68a5806ac38b7b3395f19fe78a001c5867d3e90e9b54bd63954761ab7f4a57b1fa32b65f285742c1207aa0684c376ba98c3a0415a3bfb0ab42d0a3d68cb171109c5f83147c33adda2cb07c62a9025b44523b0ae4cb8a8bea5e550b717ca6c8271997cfd6c5ed76aa44e43da2a02d35610787f22966298ffbb45fd78a8d36eab454675d6951a70472caf06640bc1b97d6760e74b41c577855bc0756abe528eb4894e8776f1e739da45a9f84c9bf3c72b43262525b547f75176ab2e12d8ea808d3b0355766bd69d964eb3b450a96c835d7b238220febd62443b03985731333c54382d20200e30e4cbb2b607ac998f20def865bdf47ce78ac3dbc1abe33245d6fa7583b31b6fe7b6ede7a8ec776b20f7bbe7e376578f0933b761bb0952161123d61282cd6c80cdc8a85f9632aba1a8ef5925e410bb80beabc67735d07e4abdd587827745a3220a24a7b3902416befab3073c2cb1fa76ff04315b653b3e7c18343391f92015939829dabd0289b5aabc4cb5335d963ab842865bb7c38106eb1274eccd0140b415901279e8719c0415517b5101394f78a48f565317909371a3154d291698b0bede17052f30786dc2d46e71edc438c288cbd44445f993926bff0a8ca1a033b656c2362a659eabbcf37b2cb5916940aa9b3e850e51039c08c8588347e1099a0d8380ccc4b8cd0c87218bc24f09126a82a3d530a75500254510ac765cc1de612a4ceb14db78a7141109f947b4329158f87e4c8b41a92afccc9eb749d66a71159db90e7a36642636af22cc0d541ce52db7ab44baf30560691a637c93193a11a00efec075289953fdc9df3ec3390342aee44c08d661632fb0303681e1f89ce1300b0c1a36e63e5a45886a4c76534fa78b87a75cf96ac66205c28766ba5eef7062363c19091c61c543d5c1b8a547372515722ee515e8ef52bf8e089d93377e2c8458e626d3391953d658cdb05c7a40077f4e19dc0b132be719014c12b0cc242466112e94809630b63fad12c99d271dbd38e5afa54c894542b940415354203a0c8a785ab94200ee0cb976991c642257d9af6998b61ba27b236fdfab86f834fb2d47cc0904b9d6acd2f8311f0d4b8ad81a24f712d92272587220e8023a8bc13bd17572d38851778f319607752466cb0de7c5c12103fae4c57d953b96be93262ba9cb05405a5d2a9e012b21a22a2ef33a385c898c80aa9663565b63241a1b206f3379abe8262cfa49ba05c3b43e9485e60cd38d66eaed114ef81afd66b2594baa361d3c3b02069b1a164bc387632e24c82a91be2ca390eb585e900173699a8b26b8916e52bd643645d3225df38ba50a50ea013b4b2a86ee1f76278e27f5a4142f034004b567f309c52acca3c7530162ed744a67481ca338861ccc3e8331e1c67886023743719493cc3caea51438e28ac4ea06b906789a65220e3c7407c874c6322be1f9b627386081753ad618a8dcc013395f20f5017ae2b57ba908617490460d5a67fae2660a56c4c4d97babda0bae0f494260877f7077af2536b2ca46e297c61dd8422bbe515519210dabc02e7047b13f16607ac15e4950574c43bf8c39a2528addfa2782506635e5626967a1f30c02fa3442fa93250571a8173999a88dc27b43c476468a6a4739972dc1b68493413a2743b9b563283cc886916eca5887796a4f833aaed6639b9d531efe5cadf9225573a23664c9cea086428dcd19ff40a06186a41fec0723953781475f648e6eec2929feac2a86c9dacfa6214e2e353fda2d547c3829f5678025ff8418a1a76eae84d11c4528382828f7a689a0d5cff87b8ca0bba97feacb39b935a8788cb + +comment = Official test vector 23, seed: "fbea1bc2c379f4f8fdcb0de260d31cdb064c9ea9b1d6dfbe91b3692add1d34dec9c9ffae7bf5e72ed2743ba3f9f2e43d" +entropy = 5cbb141c2763425c274f7404fe530d9116e08c33f9f200a20b011cf563a28990fc9ebbe336dc464489861db8253606971bd0a9008a433ed17752d04023781552 +expected_public_key = c8735813347c3c7c05f81a176264a5ff791d9801af88047574008c870635457126b4069071242c24dc0977a8c13d43b889d27f08984d9ea657d241922bb12aa28a1408825b02663b970778bf669d585a975abba6bcf8513c11bc73a0c33897991c3428a5cb4dfed155b9a2909e6597dd8cac1ad62f9cfbcb27088860512859761885c5b6c5d89fd6b18f9e324ee8f80b4c507626762a22f4cb7f4527527896aaa97a69b8aa4fb09b16cbafd73a667e9cb085f7ca36067d4f740694e6c83c671071762fbba26a640c86422197894caf01b0af66960651998073ba7fccd3189148187ba22dd2661262766399a6b8bb943aedc590fa048816d1b9d827ca80935d30e1830c8115b18b754f20acd7a376272c119cc8210c9aa112d604b2022326f51ad674aa1579c081f12df04a9a2b4571fc1c21a8a4ae2c701eb2ebb0ce65cd2fc22fee530fb3daa6d82b3d46e33e9c918f6d33abaec34f45391245453ef4d128c4c068227a6511800d69f6a31a1421e2d322f897145961abea377c9393acbfa72ab3c3aaf7f04ddad50077e7c36ac46e083075265c58db4b7b47da253b8a9361c08a1248b53098c6b797622e228939f110ece18c02ac613e00b624c61eff4524f92c1ea632553d9b90cd886fd2c364b25c877459ba6de0ac8cc2a8b0f2c6d71a051f8727c2892d1934857eb995a8d728b9739872ea472e6602f2c39484d290109ba924933d6ae52c30eb4d80935f0d2c87d4dabf07582cae3c2f21692f0825c079ea6700065a6086b197582b76cac90a58451d7479965475ac8a6af662c7d23055c404246264c97bd23d280b43cdeb59be0cb31e04474cacc4a1453fa10a9e1e4050f97ca3e9ab31e561ab18cb3af721570380023a9349ed6bbc5df66bb243928dd3a4b5e113a0f99725c9c8bf673818b89030db28edc536c9620a1625c8a647bd3d7055039753e11c4b1be3ae79eb565e6367690b5338c554cfda9369e9b1ba75651a0234d2325ed82369bcd415089692547b325ef28189482714c80dcdc5bff72a6152b70ac2f16707c63a42830dd6cb88ee646d882338d3dcb202408fc5210c71d1a8ba02b8c2ab7e06e43ccd85ce39a215e67914369c749c3978778592d9e34b7671283dc787446b5b70a32c4c1ca4613b01a5d0bfe55016b897130d1bcfb49bb5f08c5df9f15b6d531b06c53a389500675aafca9700fbc310fff968300360ab631ad95649f0bb47e55b90b2593d9a60bb0477ba848c0db9f8bf6c774cf8348c65695b31b921e4439e976b4306a47069c25e4a7515866c0bd77b44c7881121025cd2f28430383600e4ba0bd28074b7bbf2a2a3bd62a73ba240d644ab1f89ace0c8a83ae62f642237de265765458d6744273e4372add9cf5215bd39fa516575bad72034288ca3e0d3be57dbc7ada731f5f13fc0252bc5a9213f502c342a451b933d3060a2ad8a9c13013e3d93455327c187547809fa57faa299a843a251f8368a715508c32aa57a42f9551520433f9675add0359c5997c341464264986fcf67261d16b7a6989ee33730754a2ca0f66b6c98cb421c8e4b36002561b1a5550b93b144d5552afee236357c8093932829f864963159a8e7ca992b8fae006190b55c6a4fc08ad10190d2a178865abfa35607e1a88b47ec8ea71b102d7f1567bed46a +expected_private_key = 91c087e623025864c3c5d9049e865c6226cdd2b39f8a1578eb69a864ccb2fa155db32702def5b50e973495997e18c6c21756568802a4bbb86c5018016fcb0655b09e6a4b39a8ba2d70e32bbb255bdd296c998a21f5716d49968dd02a9c4f4cb9dc72c874c232011225f8e8840f7589c2d285c1e72c8588c0a33a502a385d0527186cc6809185408e9c7fe6262725528a439332f93a5ba2943e6dd7b30d79a25939a4c0802bf57c755a5a0ebbdc8390f8aee407a541c46cb1530fe1642215556d20ab942ddbcd1627826648acc3fa1367db0b45075470196b46697d9ec6974f477eda553f80b701e853398c69a6e4970a746534928631e6b811e533a4d1e89cdd6969bfe0c861d2cec3e16d0035bb50573ed61b5dbd45c8c5b223cef4266c5a6daf104949eabd27d3319bf12a7aaa4e5f636732b28e902a1098972977d98c00a267225b84af1c8c404a52472b8d1a793e370b17a9935ee590331256620e302e390474dd6a17d17a50291b6bb940bc43f89fdd22109a72c8ecf9acb1e67ef6a423396225e6acbff2880c35673135c5183ba37df968330ce992dae04e9455267a195a41893194bc51c67393251a11ed3c0829d99a3d23ceaa387208e00974e73178459bda539bcbe89f5eeb05ee21be3b1159018a3262120c21d4972aba1a1350231d3a646ba70fa5b641ebea1b130470a5ec7c40627035b03d15696be1313b458cc9ac8460cf281a6976a9d2ccaeb9fb157300b4289a55eca386d3d8a7d16c21102aacf361578010042c3a6397e2cb2ea5224141a1d451b38fac14d7b64bd7b72db17408b0a8906cec108bb926df54299261b6b5c6a636b395acb651ce6b6018ea9c92c1525de1624b5570f7000466cc09a909cf36f34687265b61db6bf2882514705fb37346385cbf4df33b98686e0189bddea7268f598db1b6cc7b32792d5546e242a807e760ece7080392823004453048c6f743b87c1670c6d10e3001008a24590294bc9ac899bd588197530fef9c2b85ac66520a195c77a7aff61672c8cb74c07d43a2bab7a764e750663091a005c9af8cc4b55d502169d4293e79b365f60085b1cc2f4900541588819b5edcaa3b80253178639f63a3091701c7e7b04e95435bdd2114bbd3abefb23355591b0ff102bc94b56b338083b82328712733f2762c5b1d0845073cb3b46aa28ce2cb282a4347f2118a6e062d7e8524147545488a01378a853d489c03eb0c6527307fb0ca5f7aab6c328438d33cedc10733ab8a68c7ab88e0b06fc51c92c557fd59488b6245796b7dc291728121bc7643aa5d56c483186cb55086d7e8654691cd5eb97580f0a553a2613c486c0b9566a6f05f9d2b82b57345aeec1368cc126ac53b9e794be471c16a498b743c1848a14d53478fc341a0ada42bc2e0717fb6965737876468515195050d64079d624da1596f88819fdf95653b8217f9885d151821a9529420ac95dd928fc429674025882c9758226194615304f1f5caaa456182c1bb11f0a02b6c758eec4ab6441879a42450a024559697c4494d8aac2f7045342234cd8081c0077c9232e66838460ea26274329988af3a82b898c4efb033ff4101f302a898e84bcedcc45e369cd1bb7f3517280d6655c8735813347c3c7c05f81a176264a5ff791d9801af88047574008c870635457126b4069071242c24dc0977a8c13d43b889d27f08984d9ea657d241922bb12aa28a1408825b02663b970778bf669d585a975abba6bcf8513c11bc73a0c33897991c3428a5cb4dfed155b9a2909e6597dd8cac1ad62f9cfbcb27088860512859761885c5b6c5d89fd6b18f9e324ee8f80b4c507626762a22f4cb7f4527527896aaa97a69b8aa4fb09b16cbafd73a667e9cb085f7ca36067d4f740694e6c83c671071762fbba26a640c86422197894caf01b0af66960651998073ba7fccd3189148187ba22dd2661262766399a6b8bb943aedc590fa048816d1b9d827ca80935d30e1830c8115b18b754f20acd7a376272c119cc8210c9aa112d604b2022326f51ad674aa1579c081f12df04a9a2b4571fc1c21a8a4ae2c701eb2ebb0ce65cd2fc22fee530fb3daa6d82b3d46e33e9c918f6d33abaec34f45391245453ef4d128c4c068227a6511800d69f6a31a1421e2d322f897145961abea377c9393acbfa72ab3c3aaf7f04ddad50077e7c36ac46e083075265c58db4b7b47da253b8a9361c08a1248b53098c6b797622e228939f110ece18c02ac613e00b624c61eff4524f92c1ea632553d9b90cd886fd2c364b25c877459ba6de0ac8cc2a8b0f2c6d71a051f8727c2892d1934857eb995a8d728b9739872ea472e6602f2c39484d290109ba924933d6ae52c30eb4d80935f0d2c87d4dabf07582cae3c2f21692f0825c079ea6700065a6086b197582b76cac90a58451d7479965475ac8a6af662c7d23055c404246264c97bd23d280b43cdeb59be0cb31e04474cacc4a1453fa10a9e1e4050f97ca3e9ab31e561ab18cb3af721570380023a9349ed6bbc5df66bb243928dd3a4b5e113a0f99725c9c8bf673818b89030db28edc536c9620a1625c8a647bd3d7055039753e11c4b1be3ae79eb565e6367690b5338c554cfda9369e9b1ba75651a0234d2325ed82369bcd415089692547b325ef28189482714c80dcdc5bff72a6152b70ac2f16707c63a42830dd6cb88ee646d882338d3dcb202408fc5210c71d1a8ba02b8c2ab7e06e43ccd85ce39a215e67914369c749c3978778592d9e34b7671283dc787446b5b70a32c4c1ca4613b01a5d0bfe55016b897130d1bcfb49bb5f08c5df9f15b6d531b06c53a389500675aafca9700fbc310fff968300360ab631ad95649f0bb47e55b90b2593d9a60bb0477ba848c0db9f8bf6c774cf8348c65695b31b921e4439e976b4306a47069c25e4a7515866c0bd77b44c7881121025cd2f28430383600e4ba0bd28074b7bbf2a2a3bd62a73ba240d644ab1f89ace0c8a83ae62f642237de265765458d6744273e4372add9cf5215bd39fa516575bad72034288ca3e0d3be57dbc7ada731f5f13fc0252bc5a9213f502c342a451b933d3060a2ad8a9c13013e3d93455327c187547809fa57faa299a843a251f8368a715508c32aa57a42f9551520433f9675add0359c5997c341464264986fcf67261d16b7a6989ee33730754a2ca0f66b6c98cb421c8e4b36002561b1a5550b93b144d5552afee236357c8093932829f864963159a8e7ca992b8fae006190b55c6a4fc08ad10190d2a178865abfa35607e1a88b47ec8ea71b102d7f1567bed46ac74f3b7fa6e2ef8ce99508c89cf3c71d666ab065a262581a5fb01b2c9b9444fafc9ebbe336dc464489861db8253606971bd0a9008a433ed17752d04023781552 + +comment = Official test vector 24, seed: "7e87fb886bc3c7c9fc12569f465d2ecd12532e76cc27c65644c8d3dd603b0cb2d036c5974e675058f271d5c82ad7a813" +entropy = 293abb6d1c207927945417cf84883ef010823e11b487ed55239e466e83696d0cff8563038aad865a817cab9ce98846ba75be9363718ecf5fea538aea90b2a558 +expected_public_key = 04a592c364aacb2c89689106aba29029c58ddf7050a2c78787358571aa506570288e747a4204c43e8c6020aa3e2d77b36c3440a618c55f3cae6d43b979786e6a181d4107cb723bb6d0729ce3eb98e7a979caea9508563d5a0b7a7ba55b8985b71f3c489b370d37a66ce048a9dd27ad17b38c66880491985b2af8916c547e9c6cb16b506170f29304c4393e8274ee254a3f13c6b0e31105442bf92799f21774be9a0f64970e6ab581626115a1aa3ee4da7936504d036b75be6046e5778f58caba93f8640bdb24982c17ba3445f2ab983b685644b596ef66acf739039ad0a3cd61bb80b000f7e8bf53f60ebe235c0bf22c7873aecc6b3ae2f3b2cc3bb47d1b88423a188393c43c4999c32a886807cc4262bcd5a588c5e1bf8ed6a6ea9910c19a6042679926f314e7c7c85bf550482735e7fa088c857ac1578560a1a2f7e831223cbde33a46632b7e24d400a82a8c7307c23d6ca25075b58e727673d7cb5554042cfb9b7f95b11a55a9fd63b1b9f0b60f6931a0ba1ad28b485753446b0005e8710d7189bf438407b8ba36a1687a48e550fa37cf4c6b591afcb0af6b8d2ea5a97b6c1729e7ae22e28f2082a5e653b5babb0d147a8748f2606ddcc7847c24f0d32771b910ccba85befcbd2b89c5035b2062e6b9bb40828902b82e12b752d48d52b7a6599ac014731e8da091cb30186c849b61954dff867899e5bf27428229376ac7d97fa03996160964abe56d3d0278f9f91fec6bc821fc822949ad5ec8a9d728b95b19052ad9442fa0527b3935f4697cfa3c7413ca2e81b32a57f69479e89760a46d710032efbb662f9467f0d03c806b619b9228135076fa235d502230e56669e2354c1b412ecfd01a429b5c76b17ae2ab99c73b4110957aa38c22c8fa39c00261c78aa571b953d868690761655ff700803a477917ac8a6105cbfc220a30a0cc1466d7598b2058b3899c567a71a66d5c9da75085686aa4ad4015100360c6102c84c336c13b229ff599dee4cb2c90a1516682330722da110f42f7c0a4f23a2089add65438dc66246671be41e7766641b4c9139777e08cb4d5b953e602931a7db3e1ce70d765516242ae8987454b898f19c5103bad39207bb16771b5d4191abbbdca9b5bea711081ca6521149b60975e02cc2250a355897960a8e203ba148f8be76452420d2134b607976f7809ce97597d8ca57337fbbd6748c03227607fa082195b49753c43047b95a020c7d195b01dd3cddc4c091916c37e447acb606f2d232c37c9871831c1fb9a8d00717762f18e62e7995a7393e0a82617da4674078d8f10065a28649e53377a88bb0f996d84fc83e9496564344d65b73ab96c4e887107d6c14488e604dfa15e55004fda8b65ae19006ea7c8a7471b354a4e746703d5c79857a02ec222b78b966ecf161d97ba7cf39b37fe173485a0156c3712a6ecb14e629899da9163709b672a243d1b87e15c0ad611419d85522252bb5a02ab725cb5eaea5bda73976d534a881b8c32c5328d117306fc5217aab89cf51c6174489ad241d1cb261d449f24a235fcd46fc19a8d14a4281906236738a060061a494947bd91604431b1a2871080616ee2e915863b2bf2d9cd86743b0cc12a5d21c6c745b34247c17f9447579fcb9bd38af3b64cc94782e299e1d98e68f8bcefa20d1e8db8552516 +expected_private_key = 817471e55466b5babf92a2ad879c9c951ba60d230add630984b2528f9aa07ff755d7d79a2f9ab53d8986fd90895d5401dd97ad3f7a922516279b5858f2087e6491b7bc42b8a52a5952f23622d5603a0a3152990cfd6ab9cd863345d8be5e295c06b79332b0ac89282e61e5534fe0aac95aca140398b64175235b94417b8799a4b6d6933a8b815bfbdccf886664e7b8c5cb0b999bdcb2bdb288d569666c421e2a950d198158c0d36ced3a74d9032ab7a2b9f276be025296a773266e516826480e520b844eb69710120373a94705f9030ca200a7f85a94db1f55d46081570925a476099c3ebdb32c532a6d8f16be4de6416d0c30d450808cd3c08131a92551985b92255282be6087703f182156a13cd144aca3924fd15492dfd253ee5c9e78853590930521e843a0e37a26994197b3161ee1a60861c344720286b6566796787b05cb8fd76a419c364f1830fe2bcd3a2970e2dac1dbbb3803f8053591b29bf64c2dc660ea9938200738e2c0c318b77ff86749c43c72f9667d80d462d549bdfea30cb0d9641b29308a461df72914b4b40213b62e68b161f83224c1a45472b5464f97c6d6371c69ca0d520426db8c1e938a934d50ae0b03be706b74cb8c674ea955a4d8ae1f6c0b56263041fca1871a5799921c45d9bbf13c01f0a9c5d973086b33acf923a2721c8b2fa7b058bb2e64f43bd80260b6bb19f26a4f55d53e7ccb1bfe3aa424976132c3b4b3a00908e722557a3657d285c8580ef45b76a207cb31a71402ba1ef280048378b80dc3312f78a74065b2dc873b22d37990e465e425b992722a25009a93a7a005d91b9460ab7c2336bd303883a151e829234c964265e42fbf8252cb89858d590cf0830e59c54021b83da94884a173be6bc454ad5a719252beb52a4f7544a7fbc03ce9091e9acc0568306e5bec2ed942b39a8455fa341b84571ac3fca43c14563f91395d117ab021c8f141a4ec7364ba4abdd8896bc6b281c751a66c767ac960ab52058335e14e7fd8a4e1d44de2670f9bbc67f682a0657530eba11c31381897d989bd392fae02d0afbaa5afa1748a80847af4b326f970c6161e15b212a1c66003a4317348374e66b29fe87f36d01af5f1c75be11bfea21dd8626765c46f0c153d0555b419227d50da5232810d8517b1a5e4147a52ad07012d8da23829f39a40c70d565937c58a11b1a25b27c8207246c4e1b40230e39e4f089d43d562ef954f332b7ea6b36ea28a9d26eb251ab562c0e44bd238874e93a4d3b900a4b2b08a0b68c2b82c0cb56325548da3316279672913d2021d742c3619823c4391e64112b5b77e8d707f9c1a37d3464cd5f96543f720a0cc6c9631458cd9cedea7b6fcaa76d1e60c44f74b986a772cf593ae712214e21179519c39fa533a724fe8177ea59b1123e831e1dc561543a7e559697572157b60499c4c615d02099d34b0738581061a85b2dcaaf13556208b3e5af388392490fc338dbc55bbf7d25f49f61bd7363cbe3841aafab88524b0ca3381f5b22dc84c6a112979c3c39e45157c0749c04b022f83f53733a21e1f1842e0e72f78c6ae1e337b53215ae8563b16d99ebd6225766185a0d92f9a28bbf4e2b444b7c8225148f601d014bbb8839b4b04a592c364aacb2c89689106aba29029c58ddf7050a2c78787358571aa506570288e747a4204c43e8c6020aa3e2d77b36c3440a618c55f3cae6d43b979786e6a181d4107cb723bb6d0729ce3eb98e7a979caea9508563d5a0b7a7ba55b8985b71f3c489b370d37a66ce048a9dd27ad17b38c66880491985b2af8916c547e9c6cb16b506170f29304c4393e8274ee254a3f13c6b0e31105442bf92799f21774be9a0f64970e6ab581626115a1aa3ee4da7936504d036b75be6046e5778f58caba93f8640bdb24982c17ba3445f2ab983b685644b596ef66acf739039ad0a3cd61bb80b000f7e8bf53f60ebe235c0bf22c7873aecc6b3ae2f3b2cc3bb47d1b88423a188393c43c4999c32a886807cc4262bcd5a588c5e1bf8ed6a6ea9910c19a6042679926f314e7c7c85bf550482735e7fa088c857ac1578560a1a2f7e831223cbde33a46632b7e24d400a82a8c7307c23d6ca25075b58e727673d7cb5554042cfb9b7f95b11a55a9fd63b1b9f0b60f6931a0ba1ad28b485753446b0005e8710d7189bf438407b8ba36a1687a48e550fa37cf4c6b591afcb0af6b8d2ea5a97b6c1729e7ae22e28f2082a5e653b5babb0d147a8748f2606ddcc7847c24f0d32771b910ccba85befcbd2b89c5035b2062e6b9bb40828902b82e12b752d48d52b7a6599ac014731e8da091cb30186c849b61954dff867899e5bf27428229376ac7d97fa03996160964abe56d3d0278f9f91fec6bc821fc822949ad5ec8a9d728b95b19052ad9442fa0527b3935f4697cfa3c7413ca2e81b32a57f69479e89760a46d710032efbb662f9467f0d03c806b619b9228135076fa235d502230e56669e2354c1b412ecfd01a429b5c76b17ae2ab99c73b4110957aa38c22c8fa39c00261c78aa571b953d868690761655ff700803a477917ac8a6105cbfc220a30a0cc1466d7598b2058b3899c567a71a66d5c9da75085686aa4ad4015100360c6102c84c336c13b229ff599dee4cb2c90a1516682330722da110f42f7c0a4f23a2089add65438dc66246671be41e7766641b4c9139777e08cb4d5b953e602931a7db3e1ce70d765516242ae8987454b898f19c5103bad39207bb16771b5d4191abbbdca9b5bea711081ca6521149b60975e02cc2250a355897960a8e203ba148f8be76452420d2134b607976f7809ce97597d8ca57337fbbd6748c03227607fa082195b49753c43047b95a020c7d195b01dd3cddc4c091916c37e447acb606f2d232c37c9871831c1fb9a8d00717762f18e62e7995a7393e0a82617da4674078d8f10065a28649e53377a88bb0f996d84fc83e9496564344d65b73ab96c4e887107d6c14488e604dfa15e55004fda8b65ae19006ea7c8a7471b354a4e746703d5c79857a02ec222b78b966ecf161d97ba7cf39b37fe173485a0156c3712a6ecb14e629899da9163709b672a243d1b87e15c0ad611419d85522252bb5a02ab725cb5eaea5bda73976d534a881b8c32c5328d117306fc5217aab89cf51c6174489ad241d1cb261d449f24a235fcd46fc19a8d14a4281906236738a060061a494947bd91604431b1a2871080616ee2e915863b2bf2d9cd86743b0cc12a5d21c6c745b34247c17f9447579fcb9bd38af3b64cc94782e299e1d98e68f8bcefa20d1e8db85525167378ef967195c977d43a50d03205044006715a6a8a8263d717f40170b49e6bd0ff8563038aad865a817cab9ce98846ba75be9363718ecf5fea538aea90b2a558 + +comment = Official test vector 25, seed: "ad1424e804f306c7ff513da4c1e8d445afca7bc942fac5c0b335733aaf70693712ecbde26ea726ee0f9fd9d52a83b1a4" +entropy = 74d87c7556f2671f2d666854a4d6e073e69f35421e6e1a428cccea49c37f972ce1fb7456ac0aa1b97068f452cba64ebdc138bcf5d36b0a0fada2a3b374141eb9 +expected_public_key = bfd11fc259a2115806f9f68ab15859a763a49d169d615b4999714d550707e8a0c0a93c8db2fb5e4de7c93111206f052a7d7a5e0b5632d94c7a87596d24e950b361a185f065fa96435f312745164693fab8d3a741c56c6f10d8be52c06a5d83cb1bd327e5b28db12291d907a2888136b6fa3a20a48990c6b6c81499de2bb12d19b591234d55c4549a3861626167c5a17cc2a4cc9f668df0707d26795de7f771bc614b994b574fa309a1e1c8b4a0a4ad6240286bb78ba701ecc430269a37843149e1f1aab731523359c735694f09298e2a1a08c6ec273b4a1d57118b20524fda18190c2029da4095ead53212f609a76a343d5c68ff17ce6b92b340dbb8cc6c03ae4b29df243b93233af6b95eb5a7a8b8643b0cf5a8114152b8ea54f0e3668511ceff536d888baef85a62299c641769023b7b92088546f338448c1977804b71781a554bca5f13c0480b42c5a6626904516139abaa54b429e7a0502b17a5a2727a7f230d63c5764dd497f164b24e5ba3a626785ad1b917a6b77b175e64323783c9791832a7c442b895eb338e6a29ef671d4d7c0230668c14bc794cf11340229ac905891cf1c51ef62b6a4a0553331f7f581054da45c370bf606126b39492e4a3b8592bbe0359bc017557379471ef922367d82635d8494c88bd38a7720669a1f9145367a92090fc5df15c034b82cdd9b7cb9ca76e74b2069c36987556012bf0746424677f60ade29c9cb52c6d9cc2052394691d7306952c65ef498da41279eeabccc66b3a41747a8b447d7ee81116eabc04f4b776923c93a28ffe888652fc34415baaeb6854d4732745a4bd5ba61c35678780063ed874c81823ceae41b9684a05410266f7ecaffbfcb5285472e5b02fb8c15d126410f0ba3ba8536cfdb65d23797414a55f2620be653a98f33c95690714fbd3418c6893f8693908d41d6d69a744e63b2b0c190e3b1696a5c8b1cbbaa4719a0bd184f896c9d8f926dc933ba81b2785c05a51b22a95191f43dc23b42c050dc9133de2b003a5b6f1a5730f490454c58af291cd8d46acde69842df79353670a54e2c88cc693745516ee64c2afebb95df25ec0608ae4aa9c89215d471bbf68dc6530fc0fee495fdfa09e98ba8d37f9636b270bd1102579eb7f1bf0b911cb79f03537168867eaf60d77d48be27bc935b02662929dbf2263270670e0601e5e43008bcc07f06451e54755fcab421d584bb603008c9909caa61cf99a4b43a93ea8a3440991ba402c9a8fc51f90584c55eaa450b7a600342e98420d728a8b6344659f2a0263140e69ab86bdc6b20b3aa0920b90c70c0108358c8a92b27635154af9a0a76080ee593ce3d37e40fa33d0c654aa77171f822e0082c95cb60b54a6a26099443f671e863889f35a0b9597b3442a71fa704f164834fc9c8e2c63847c9992cd73c1bfe7abd3d75448d21926da0938f92b9133a92e426dfd2634a677878ea9820f5c26a2382fdb1c4b8ed59db74b4490b87b0dfc35f5b22112e5110d494e53c50d3fd6c64cb485bf5ab37f7a1b709122c7086d3fa56fddc966db2c53e09b976f986a334290dd8c3c7e6582c4eaab182766ff70503b03b4e68261cd0303f7a83732795cbf84a04d78a541a0929691c94a094b7b8f92c5d5a3bc95122a6a7968dbb1334a712823d470766b3b9e7b55672d02ae +expected_private_key = 60e93beb5544294bbd612141956430cff041e0f969e954a48298c7b5f321b9e1b70b7c796a753cc5bb93722b20380abd6b8aac4f0b102ddab380b88ab9dc040fcaa8b775882a673864fb757a3453273627df0690c90000b54112dca50235ba14fea59a764736a018a091b822a636ae7934a33bc5c15a7b77e1e53289c9757ec75cbbb792645325d6755d79b972ae993c9e3413ac040b3bcc85c4f98a2e185bf4ea1d19a4737dc78547847b7ef385d2a07bfe272764cc873be8cb1286a0e7c83539d2b9bad5a17f0893ccf41e2b5cab8f66706955c5e168a99e9820a8402cb25a434f1a149f0148761014d32a51bc73a8cdbcb104c29be554b2724107ef314c25d082c7252e0ce68833a47a619a611b08394960a64d8c22c25aa1121a8033605c9bf35221730b15e6269cc25febcb8e3336870b3c1c9d3a89de4a9042758f517b55f85133b403c501590a0f53542239118f93874b319be0d063ad82144eca6156051424235d785c92ac00c412f8ac0ff5b88f056142f8a0934734b09ba14c00089bba136279a5fe462082ab4b0709a6db3279f8e9544f3909ff78b264399c2ed129c803b341d816eae96bc531952d55059ef0233b0c18e1f7aee5498ff6f11dbe801dfe193bb61b870008ae57483daeb8ca7ccb460193c68a509e8dc738ff227fda89b21eba0053992a4d3a1f8767c0d3f3419838c8c7a2c0b3d68e737ba77221c68a8570948a322a143e5a03888c08a1bb7c42e9db9111819ed94523848bc32781a881a468d26aa7fa4acb926ab8695b24a094b8ccb0423192cea88c1fac818a6b0ca19e423b7afcb51b121d48ea44037963ec1a325dc0bf7555977f468feb49b8346338db983e512b2fdeb35a300495f437cba88c36d01536f7a56bc9dabd1000b77751031102caba7182e2c440919435a14bc1ae1b354499324862885c9c301b7258faf778cd0a4721f26ee32c5dcc7a7283dc10e3cb04713255d0044bf1d9234f5180f32483f7079b2c0558b95c622db01be885b2580931fc8617b6940ddfd54cb327712da02f90a6a8ddb6ba17a31fb1d7231d94cac2fab88a43b0f56968fe2b724fc8a97e1a371c96a9a17a94fda08897ba1edf959f37029a84e707ef676b89fcb5e94b8997d95542e26cbd28a7d01b1fef76b1c91ac327874c04f01b2d6280fdc60cead3587bc0aa6ec76f064b3263b2419bf3120aa7791053bfa6e089f6cb8bb020b5c5e2517d4b2f34ec3c4237af98dab3f4d44ae161773ed53f391a689d7b38f01155fcd080869656e15baf9a2a6419b38c2ec39112b4216fbc5d94771fcc4369eb90aaccf3a752020e24f97c30c4c67632180e9b928a0941c23c03ce588f7d841aab91b74b7959bfd8b5b042294ebb094b523dfc425e9ef70bd2e2bcb2937eedba0ad018737ba91a3691030c1a6e54c0bd4336a4bbb7c5dc79057ef5c574c04dfcf9c8407cac999a54975b1a45519075ca167b8285b2d554eb81702e30626897413051aa546bc63a42723bb95f0dcc525944c967d7a5793c34c7638ee59608c8680f2418b648b7450b09c31bebaabb956e1203bfb3d377373b5483c93378f15dcf2959d0e02a15e2277b7ab78cb2ba78703f13dab307ba1b663c86bfd11fc259a2115806f9f68ab15859a763a49d169d615b4999714d550707e8a0c0a93c8db2fb5e4de7c93111206f052a7d7a5e0b5632d94c7a87596d24e950b361a185f065fa96435f312745164693fab8d3a741c56c6f10d8be52c06a5d83cb1bd327e5b28db12291d907a2888136b6fa3a20a48990c6b6c81499de2bb12d19b591234d55c4549a3861626167c5a17cc2a4cc9f668df0707d26795de7f771bc614b994b574fa309a1e1c8b4a0a4ad6240286bb78ba701ecc430269a37843149e1f1aab731523359c735694f09298e2a1a08c6ec273b4a1d57118b20524fda18190c2029da4095ead53212f609a76a343d5c68ff17ce6b92b340dbb8cc6c03ae4b29df243b93233af6b95eb5a7a8b8643b0cf5a8114152b8ea54f0e3668511ceff536d888baef85a62299c641769023b7b92088546f338448c1977804b71781a554bca5f13c0480b42c5a6626904516139abaa54b429e7a0502b17a5a2727a7f230d63c5764dd497f164b24e5ba3a626785ad1b917a6b77b175e64323783c9791832a7c442b895eb338e6a29ef671d4d7c0230668c14bc794cf11340229ac905891cf1c51ef62b6a4a0553331f7f581054da45c370bf606126b39492e4a3b8592bbe0359bc017557379471ef922367d82635d8494c88bd38a7720669a1f9145367a92090fc5df15c034b82cdd9b7cb9ca76e74b2069c36987556012bf0746424677f60ade29c9cb52c6d9cc2052394691d7306952c65ef498da41279eeabccc66b3a41747a8b447d7ee81116eabc04f4b776923c93a28ffe888652fc34415baaeb6854d4732745a4bd5ba61c35678780063ed874c81823ceae41b9684a05410266f7ecaffbfcb5285472e5b02fb8c15d126410f0ba3ba8536cfdb65d23797414a55f2620be653a98f33c95690714fbd3418c6893f8693908d41d6d69a744e63b2b0c190e3b1696a5c8b1cbbaa4719a0bd184f896c9d8f926dc933ba81b2785c05a51b22a95191f43dc23b42c050dc9133de2b003a5b6f1a5730f490454c58af291cd8d46acde69842df79353670a54e2c88cc693745516ee64c2afebb95df25ec0608ae4aa9c89215d471bbf68dc6530fc0fee495fdfa09e98ba8d37f9636b270bd1102579eb7f1bf0b911cb79f03537168867eaf60d77d48be27bc935b02662929dbf2263270670e0601e5e43008bcc07f06451e54755fcab421d584bb603008c9909caa61cf99a4b43a93ea8a3440991ba402c9a8fc51f90584c55eaa450b7a600342e98420d728a8b6344659f2a0263140e69ab86bdc6b20b3aa0920b90c70c0108358c8a92b27635154af9a0a76080ee593ce3d37e40fa33d0c654aa77171f822e0082c95cb60b54a6a26099443f671e863889f35a0b9597b3442a71fa704f164834fc9c8e2c63847c9992cd73c1bfe7abd3d75448d21926da0938f92b9133a92e426dfd2634a677878ea9820f5c26a2382fdb1c4b8ed59db74b4490b87b0dfc35f5b22112e5110d494e53c50d3fd6c64cb485bf5ab37f7a1b709122c7086d3fa56fddc966db2c53e09b976f986a334290dd8c3c7e6582c4eaab182766ff70503b03b4e68261cd0303f7a83732795cbf84a04d78a541a0929691c94a094b7b8f92c5d5a3bc95122a6a7968dbb1334a712823d470766b3b9e7b55672d02ae16fe956be4601573d72306a251f69bc2181253e2417e178341fd6553303ac189e1fb7456ac0aa1b97068f452cba64ebdc138bcf5d36b0a0fada2a3b374141eb9 + +comment = Official test vector 26, seed: "7c33ca0e987226c8524dd56c811fa4d1ccf9995b1e4e4dd5b1481974e88cfabfbf6787775c2611cefb27ed4403ea9b46" +entropy = 013bab0212d04ecd54b478daf72748003a25e2cb060ba6cc50bf95c292b8206b9da0c5da5f195b80fbb99c2e8b06926074f3f604b3f6195b5a5b9737876bba72 +expected_public_key = 12422cea108045d2888e2c29ce0bcd454b95c09730d6c4698e779987523de0e972332544c34350d29c7bc030bb6273b9f1c98c3a63170abb2641c54dad64790e83387c51aac922814f834c4745409273ab00051b2a819eefc9a048f222626409fa7b3f8d27a0dd754f9372aa37eb92f6454fdbe3116d406b571203dc05201c31a52ba8b2b95b191a7b7b55e743c4ccb80a710863ab741b727f176224012c539af2bd062ba6be7a42eac08c5b6b420becbb41b55454ec1f41347ccd984f11767bfc82665286a56dd31598834b37ca6ee93658999798ead094298160b7e6c76978370db3180273401532315168a161e087d4c6086846a3b60b80103c1ad814843bca7ab329c7914982ed32bf16507b3024a16f231281a732d3d155fa60260064919c484c1741874ba96cfd91aebe5c314e407a66d7cc4c846176d759618654ac2a52fe69c69a375ecf625e2889abebf395fa20561ba6300a72a2091356fcf197c866ab5468a3af7bb3de755836d9784f7c0949445d83b3358721c7db3c09b5120f7f757bfe3366ae4365b677255ea680f27c310f768e56f1aab8792259340bd6b984406148a254bb605a291c0946c83b1e9c5bb3f879a787b9106f98809e94bdc23c062d592318f9854df04bcc343d64387baf398599bb352f82b1f0a5b530e824cfd69d7a4a15cb5624f70cbefe1c61302b8fca337d70d1900dc817837619fa893208da873c350f02892097708cc637093eb25bfb4b3c793331f0fc73c5446cb11276824cbe419378a224a683fa0d17c671fb8c4bdaf18c20c53a21a4bb8fba9ab7a1b7eccc81946bb5fcb15e1d08ada7761a55d503dba912b73765ff93a6ab642b5fb72ed4f16657ac448a1957413cae547ccd76d9936c860c70c5635c28754421af13448959d67cdea3997ee923aa326129b5397c15ab90f95832f263e080a42460cf9f081152aa59cf17263d008acbf146f34a7808257689a3148e58a0a0117fbb47bca97810a42a7e0f734c0a17745afc6ade752080b39f3267399c20b1fdfa195437b83ef5125405aba8d2ca42040371c541a5fc339772948a21b7efc30c909c7938779bd012642441083150118ce431baa72e989425210945a7c47479f4873e3c3ca6698ecb2a050415066d0bbe5e240222a2884b3cc17bacc14164be0d21330456a279547579f8a4e9443d913a154210a3fd1a1a263186445a8e1b884bbe8b54d0196affdc47544c8d10a69378fa139bc8a422c44c5568555f9080f170bc6e97284f448e6c23885d603a732c469b376a762b5068e29e80b74f994588d9822f3e81ba6ffc273a9c905d0910062bbe94aa1e0c8c3424303845779f8c9b515dfa0864578a66da8ad7b56da2810c11e1a2888b88bb55b8c096a145b62ad9d2c98e003658c9729d7b82550527411a9c0b981f3479251c1774014749d211687dda83626c6bfcd5b08f8075954bc10f48623838a736e38c1143b9472b4df5d30d37f0bd7c727a2f16a3cbe0015dab5a12e27a63f7aedb841d6d9bb1a79a5c3e903c9e374da62a298c549b9842b77c33aab6b4939aeb55704cb610d084950c41b746afd7157613618f6f1574ba51b36f7828af0aa4f79c0840ea3d679013df619046e935e0bd96ec59643250a0b38f9779b0142a9e546eb525e72ad204d1eb31a6 +expected_private_key = 3a756d6dd157aba65d60721c41eb4edbec38834c22e9ac88f03119b472bda0961d1f5c3268ec6492f92d5d066dcba69ce9c20311e1c15fa81fa5014c6c956f88055fc2d35e6b295d05d6167e4375bff23257ba72c0f97f452b609f22b57f7c27f71a4f259938b5aa18097399a0d32c3602203bb6769015495b4bb7317c9e99c966215c58d3455efcd36003826c2c7b1bb437a66a968dcba35dad7098fce9133110a109c2b91764719ca25866c98550082e88f29e78b38b40a53c4d626fe63390a290b54389624c597909d79fd6a658e2166704c386eb1c8e951b4c7619b7b79349c3f59505809b1095405949cc55c109a1108649552d5f83a970083bffeb6550893b5c5106417b0cf1e44b6b05a9f9093e386c9d43f14d4cfbabd3b17efb49aa2c571ae99197d2e4b7d58775962570d528b8ebb8032e8065bdcaa391837d483a27239a4a8c0b8f13013f4aaa6bac0ca86e532523d9620bf9c2c3e2aed2365e90a1699a4cbf454c4d2e2c4273e93456142f737c8b3697b9821039142c3e25b346d020c829850d6ce2649087ab762c25baa2639c8c7a852bc76d456ee69747fe561e267844a7e51ae05c5820f0c2b880b05cc935a3bbade2c6a4881cac21938a304c4cd2c1cc1bfabd932b777cc459bae4be75389862464367c6318a0521dd62c5f070a139a95522d10d2e4134c06522cf52834562a208b22a95431014934f51ec49f5ec087d1435db935bb5223c3ec87bb7f7427a458232474ad9cc222b422149977c7f366f48b0b14ab260bd0a8c04623f9b12091ae049725064d0bb4a249075816aa249718f1a7768c3469aac7182d2f01d6373038d7c4ca24802693a354c19c66dba1c05eb180ad04c1fb095b42947d16b66139384c71206bd0ba9ad9bbb5dd7593d08616c214fd9013e792a5b4930122d1c571f1315d235562c167d7546c8ef7536a929982f6a55ce7209b0d5735f69ac6c52a824e508d2481a5be01075c54d8743bcd76767b69b5e350989e629c97ac1982a75806126245fa692def22b15a29499c82ef7f993eb3472f850527d900da2f513a9366a4fa978038b9e46752dbb8084fb12cbc591008d692544078343e9ad67909dbd77c18bf18f02607210f4a0f5dc749f8b0bf371309027968968678b0135af65138c5544abd57ed8a646409224d32052bb14bab4d51dac981ccd838b4a513a36a351b81a0785ca281d7106872583b8babbd62a5787bab8ec9019c7009130ec6be4e25d9992aa1dd13da9c1a7f1ca27fd78968741436003789b8c781c599c98d2465c7513cfe85154d7a655216e5b3b800deaa6b9dc7c0d998b9ce2b99da6afc27a5ef6c152eb16184d91cd038cba69835ab3500ac2e87368f37888ba90f219ce9da24109f0b3e1894db5f640a17b0e705195a350a61ec62b2c7a216231c530f557d4c5605346a6500b7c1484012fc87dd4526823c447b71a726d65753716b30c212565dac474ca3acee664218285a5c4a726f681e98619e2a289d08895bea26bd6a3bff3a5c5c1ea894cb6440d075004f879b41a14ebb82b74ab0131d0b3348742db7244e750ae2b7bb57f8a95379502827880f8a50ecb1394db2553c07627c113a300078db1bac7b5007812422cea108045d2888e2c29ce0bcd454b95c09730d6c4698e779987523de0e972332544c34350d29c7bc030bb6273b9f1c98c3a63170abb2641c54dad64790e83387c51aac922814f834c4745409273ab00051b2a819eefc9a048f222626409fa7b3f8d27a0dd754f9372aa37eb92f6454fdbe3116d406b571203dc05201c31a52ba8b2b95b191a7b7b55e743c4ccb80a710863ab741b727f176224012c539af2bd062ba6be7a42eac08c5b6b420becbb41b55454ec1f41347ccd984f11767bfc82665286a56dd31598834b37ca6ee93658999798ead094298160b7e6c76978370db3180273401532315168a161e087d4c6086846a3b60b80103c1ad814843bca7ab329c7914982ed32bf16507b3024a16f231281a732d3d155fa60260064919c484c1741874ba96cfd91aebe5c314e407a66d7cc4c846176d759618654ac2a52fe69c69a375ecf625e2889abebf395fa20561ba6300a72a2091356fcf197c866ab5468a3af7bb3de755836d9784f7c0949445d83b3358721c7db3c09b5120f7f757bfe3366ae4365b677255ea680f27c310f768e56f1aab8792259340bd6b984406148a254bb605a291c0946c83b1e9c5bb3f879a787b9106f98809e94bdc23c062d592318f9854df04bcc343d64387baf398599bb352f82b1f0a5b530e824cfd69d7a4a15cb5624f70cbefe1c61302b8fca337d70d1900dc817837619fa893208da873c350f02892097708cc637093eb25bfb4b3c793331f0fc73c5446cb11276824cbe419378a224a683fa0d17c671fb8c4bdaf18c20c53a21a4bb8fba9ab7a1b7eccc81946bb5fcb15e1d08ada7761a55d503dba912b73765ff93a6ab642b5fb72ed4f16657ac448a1957413cae547ccd76d9936c860c70c5635c28754421af13448959d67cdea3997ee923aa326129b5397c15ab90f95832f263e080a42460cf9f081152aa59cf17263d008acbf146f34a7808257689a3148e58a0a0117fbb47bca97810a42a7e0f734c0a17745afc6ade752080b39f3267399c20b1fdfa195437b83ef5125405aba8d2ca42040371c541a5fc339772948a21b7efc30c909c7938779bd012642441083150118ce431baa72e989425210945a7c47479f4873e3c3ca6698ecb2a050415066d0bbe5e240222a2884b3cc17bacc14164be0d21330456a279547579f8a4e9443d913a154210a3fd1a1a263186445a8e1b884bbe8b54d0196affdc47544c8d10a69378fa139bc8a422c44c5568555f9080f170bc6e97284f448e6c23885d603a732c469b376a762b5068e29e80b74f994588d9822f3e81ba6ffc273a9c905d0910062bbe94aa1e0c8c3424303845779f8c9b515dfa0864578a66da8ad7b56da2810c11e1a2888b88bb55b8c096a145b62ad9d2c98e003658c9729d7b82550527411a9c0b981f3479251c1774014749d211687dda83626c6bfcd5b08f8075954bc10f48623838a736e38c1143b9472b4df5d30d37f0bd7c727a2f16a3cbe0015dab5a12e27a63f7aedb841d6d9bb1a79a5c3e903c9e374da62a298c549b9842b77c33aab6b4939aeb55704cb610d084950c41b746afd7157613618f6f1574ba51b36f7828af0aa4f79c0840ea3d679013df619046e935e0bd96ec59643250a0b38f9779b0142a9e546eb525e72ad204d1eb31a6633bee89571e8fc16151491ea71234ab83289426559f90c67903a36e4afaa6f49da0c5da5f195b80fbb99c2e8b06926074f3f604b3f6195b5a5b9737876bba72 + +comment = Official test vector 27, seed: "54770ea1252ea2857d6635151194f5f520adea8a41e409ff498d40c271359858fe2b084d5b96bee087b8e8f4dd4e00c5" +entropy = ccb073c4b90be0ad746e26fb093b60c70110bd1dcbcddb566a8cffb7b3caf80e71600a8982c350df524cde514431ded7aec23576530894bcbf0ec0bfef0bb64f +expected_public_key = ace2af54375d684a6cb1fb38bd9c803a158483f91175263779e75b6d42734dc72fa02bc3b09630a0f79e2f95cb067c7dabf42f409a9635d55106e91e32341aaa4808df6528c3ba98886184e0195e3ca09d9cc525980cb5a2e9027c6a88e9042bf77653b9dc02ad3cbb04f594bae08da4683dfc960708d85e39a28ad6e6a7dc81a2f0f8167633901298628b695cc1868756a97d80b1afebb71eba5969a1086de4d611f737af56a83c7378c6e5e04e79a8967514cc668bc8fb7c7a1a671e29d55068e34d883a8320438ae7a44f01db1d4dd07304081d684796a9257154381ec44562a8d005f3dc4c94d5ce9e36705132acc8876142194da54934095c2d5725a10e376432b17bf7d1b085d342cb3c633a085e950248ccc9c7ff350efc341d07d0ca06e6bec943353c479506691f2347a29ccb34ad09c929692ed98640e6b8560529cb17030ebfa4c769fc7707c75d86c234edd78e7b3010fe86bf71748cc1c5b00023944774200b2163b403b8207093dfc959b6aa09fe6b98f6e83f972a50abf113e9da2fb9fa10d0d05789ccaf05c448854249ba8973a19c537dd69d3f39744da89debb58705ec90ea56cdf428087d8333b16b1a9e59794d49a40b513b50867979230243b27f3d784932e1caadf8b58fe11bbea62da4875d004a73fbcc90b566ab998a45099194d449cc60b0562570648ad588b213cb99a01283706878287930a71b68b43f87023d2f49829abcbde6a37a941182b78b8cc1b93982c7a24457a9e1683d2bcc97b4259518e0102760100e1c26cdd85022a04a91168486ba3413613ddd6c42ccb563379a08096b287b41a011fc9594d132e33957f2a5bc1db4c57b4c8d9d3135476095ded35b2fdc09d8f996e332baf7939efb1032e529606677bb1144374c41c08807c9c0868b0c32772f18b755d7bc5c5b12f8eb9ca9dab589185553b74408301062c90b2d68504f0718d42a1989f050f9097889aacdc175cd7e6768d626a8c9aa1b0cd6cbe91b10af1a3e507575b47b6ac8c2b7c801a81985a81ad4ac04b32d0dd880d43b3d36857738369b7898b231b24ce6e9944526b9ef370354e21e38f6aaefacbda63497a85327a2112a5db95179c5285d805698209f2a1b67a7730405b02b3507b4e4b65298734f5eb1b66bcb68f9369abc01c7e4545568d432a685a6e038122253987edc55efaa3d926413dbdc43f9908df1925031f45d28712734fbcec3724653b019f7d5698da7b0c3c90eece1a1be3567a253a143723b9550c8f7333ddae88208667353a6184853a85a99c0c463189eb5763fe59d678349f536c56d014cd92b56ed2aa6b0518f1221a49fd6588650057ff00aa29b93f182b3437386f1f846d2a3c60cd900559425b2b7a5ff88cfabe24bedcc825552577b5c12e4856ddcd91b0713526098b5fa555f105a0f1219110347af9016254951c3cb5c7ebe602564242276399b0048ad8d370b544b1cb9789694c7753ef2cd4ab51513cb33f38bbb10c83c9a1a5fd1489d97476d9bb314849581d688c3dba01662b539c50b0db8e889a4654e6af708a64910fc503cfa0abc21b8abc233ab978965059c41d1123a4bb90306aa09263b25be885f4db186d0e720e97524464c7f1b57e338a864d6c447ed4e29d88c30bac7d2d0cdbac43e9f4176f0078c715acc +expected_private_key = 0baa531a985251b6b10153c8fce6938a280e93f9ace7a56dc7f44fa8bb2f88c09290888da8134a0fc43ccbb75b50b6a724d6812183acf876036dc252fc893419280314c7611750875821b2f3ac4f1c20b06365709bc07ad4161c94c41930568996f8cca58c4a0536cd5668488715593e66621f96c87a2178a36438dd4c390ca0532d30b88db712cd3c50d30baa91c98cf0bacf32c60c81468307ca35b47abfe59174e53467cf7b1d376758f1a5926fe225f0078ff288ae24d23241709e471624285c4fbd35a333088dd643cf6cb0ab6b27c8b679792ecb8ba4c28cd8b09677f0a7ebb692eca6777922c4ed6c20402533cbb9a3f1e0c10250209ef128a626b763b30b5e49c4c4691e3a13c2c2601b6666aba1d099987990bd1bb00ab5806390ce8088cae30a5b20567295aca7f0191cbdb4795e78bf150c7954f9a49880c218c23e59014620e18f18c536da0b7807b0c9e11b1e341c2e7e5ba799653fc669c1032aa014cb79769361b01091b5e000cbe100933c6d05714481f491b2355e72638831d0c4f4daa18c6b4ae6e825e688cb812490fa13b43d306e5bc857fbc18a61923f6b685e5fbb5be9c1871a9822ff07caeff40318482144143cecc5b0c579c84fc949ef359f0b24b20fc0a9f3300a3217a8058469c78b7998744024e275cd1c70a96a75fd86019ca031fec081dbdb796a56186d9a1df8c098940527d34a1df2db50b5136b6737829f0cb1da3b131ab238207a011f02bcd346a0a7138ebe3ca2d78646d7f98d5a886a24b83f8fe84ae81627011a2633f1c159c3870f7c69126b3c31f50d356888f9077fc207168cb075e0940fb7a0becc556de78089ed512a39a6adcda9c3c5126d874b50c163ba7b091656e52f9813cb318c87abab12a3f8996a4cb446d0793055ca177a1bf455cb956443e56c160f4788cdc6b008c086403bc910332d3e3274f9825e9964484d7a52c91c275e153a496801c0e6c8084b25b53c8eba77a9412291df78bd39895dfed82fd3c92947a1beab598d33da8344c88a9e073e28549fc939cf5c6978b6f74ccb23675616899fb69c5eca0c6b68090a338eab57a222fbb5a482837c097bd40141659a2a71d81e3bd38d60d0a903592b768b0ce60a7044350a75fb02f19482138603a9d8cb89ba6a32d37a15549548aace4636047d66ca4de6cf7643c2a5939478a39873820578150172f965d4dc6cc6d7adfc360568a53c97d268900b7b20122e50cc5e460304927333beb7bf73446064d76c3af1274b503203804774b00f02534772ccb83caa8475651460b156a7238da2a9847d445f55687a84baa06dd69d4a637efcc1c09f81bb97b541fd77a96883869731ac776913ed6c02ef03183b27b4655639509b1e8bba74837375628152814448f270b6dd865c888180aa071a2ab42740e93f05b32a9c85a069420be2ecc5335738f9d46c90c5af1625779f3a329dd693706618afb300b5c7099c220126c8398fbb8f32a2a35888bcaa187950365f022585c2e08243f53122b6c5ee9a95b84151afd10b2110135c2a940bb8370565bcd8739609c44f4aaa7c5c266c6ef7cab87b351236702e327b3e53555e24abb670ca6e505df0e0aecf7513f7e36374988dace2af54375d684a6cb1fb38bd9c803a158483f91175263779e75b6d42734dc72fa02bc3b09630a0f79e2f95cb067c7dabf42f409a9635d55106e91e32341aaa4808df6528c3ba98886184e0195e3ca09d9cc525980cb5a2e9027c6a88e9042bf77653b9dc02ad3cbb04f594bae08da4683dfc960708d85e39a28ad6e6a7dc81a2f0f8167633901298628b695cc1868756a97d80b1afebb71eba5969a1086de4d611f737af56a83c7378c6e5e04e79a8967514cc668bc8fb7c7a1a671e29d55068e34d883a8320438ae7a44f01db1d4dd07304081d684796a9257154381ec44562a8d005f3dc4c94d5ce9e36705132acc8876142194da54934095c2d5725a10e376432b17bf7d1b085d342cb3c633a085e950248ccc9c7ff350efc341d07d0ca06e6bec943353c479506691f2347a29ccb34ad09c929692ed98640e6b8560529cb17030ebfa4c769fc7707c75d86c234edd78e7b3010fe86bf71748cc1c5b00023944774200b2163b403b8207093dfc959b6aa09fe6b98f6e83f972a50abf113e9da2fb9fa10d0d05789ccaf05c448854249ba8973a19c537dd69d3f39744da89debb58705ec90ea56cdf428087d8333b16b1a9e59794d49a40b513b50867979230243b27f3d784932e1caadf8b58fe11bbea62da4875d004a73fbcc90b566ab998a45099194d449cc60b0562570648ad588b213cb99a01283706878287930a71b68b43f87023d2f49829abcbde6a37a941182b78b8cc1b93982c7a24457a9e1683d2bcc97b4259518e0102760100e1c26cdd85022a04a91168486ba3413613ddd6c42ccb563379a08096b287b41a011fc9594d132e33957f2a5bc1db4c57b4c8d9d3135476095ded35b2fdc09d8f996e332baf7939efb1032e529606677bb1144374c41c08807c9c0868b0c32772f18b755d7bc5c5b12f8eb9ca9dab589185553b74408301062c90b2d68504f0718d42a1989f050f9097889aacdc175cd7e6768d626a8c9aa1b0cd6cbe91b10af1a3e507575b47b6ac8c2b7c801a81985a81ad4ac04b32d0dd880d43b3d36857738369b7898b231b24ce6e9944526b9ef370354e21e38f6aaefacbda63497a85327a2112a5db95179c5285d805698209f2a1b67a7730405b02b3507b4e4b65298734f5eb1b66bcb68f9369abc01c7e4545568d432a685a6e038122253987edc55efaa3d926413dbdc43f9908df1925031f45d28712734fbcec3724653b019f7d5698da7b0c3c90eece1a1be3567a253a143723b9550c8f7333ddae88208667353a6184853a85a99c0c463189eb5763fe59d678349f536c56d014cd92b56ed2aa6b0518f1221a49fd6588650057ff00aa29b93f182b3437386f1f846d2a3c60cd900559425b2b7a5ff88cfabe24bedcc825552577b5c12e4856ddcd91b0713526098b5fa555f105a0f1219110347af9016254951c3cb5c7ebe602564242276399b0048ad8d370b544b1cb9789694c7753ef2cd4ab51513cb33f38bbb10c83c9a1a5fd1489d97476d9bb314849581d688c3dba01662b539c50b0db8e889a4654e6af708a64910fc503cfa0abc21b8abc233ab978965059c41d1123a4bb90306aa09263b25be885f4db186d0e720e97524464c7f1b57e338a864d6c447ed4e29d88c30bac7d2d0cdbac43e9f4176f0078c715acc3217d034b472a846cd317681c0f36feea187bd40e546dc4ad69c2e67fd9d830371600a8982c350df524cde514431ded7aec23576530894bcbf0ec0bfef0bb64f + +comment = Official test vector 28, seed: "cd6cfe94e9c0a1cc4ffdcd2d7876504be5f50f1d1ca5cf93482943465b268276056f2781f4de805c138976ca72621387" +entropy = 2e889f44e28901e9ac7ca6b2fffcb124c8979401b17064d7e1d51a7e3c3adbfa0e145e44aae52cfc609e6f47fd7a6f6af877190ff52256d0ac5b05b89c3f449f +expected_public_key = a9c823efc5c946dab44b5b2068d61f00e7b0d87ca67706343927bfe4c12d20d69c4a5ba892f97eeeab7b5a45742cc4ac4d37219ad72ac312051d31b8385ca2293415a13bb8983b8457b8af9dcca9e6322094ca68399ab77dbb9f6aa7ced5f224641c3fa07507da9a08e0d180d52585dfb3b2fc95cdc733a573a888d403cbbb71c120baae2a195278370bf33299b9b2684accc5288a3cba1277fd3999839a6ed29bb91d71a528bb2e4f953778ba23341cba4b9b3c17f9a8366212af3b722397419e24874b163470b3b2b7f24ae62258983b6161c6773b5ac90969c03d01cf4669b9d1f46e05705d4f676d464264d7549e1e2c3290c9b2bf5a71132057531714bedbc7a91bc0ad56254d298908d33d588951333b3cb7924abf14b0d70652c45aa62cc3062d851e45c866c6200df4e74a9e559b9e6ab738f2b0da9693ccec3d968a866f0220ca95b7c6e8b04ec41d39c17eafab77444aad4ca3a9d6b5b5d4611a6c074fdfb01f7df68ad2440efc5588f3b4a5c4106efa3b9b6bb35c327465c7b656d1c1c6409993fd91cc20172e53190dad63ce02691ac326904cbb6424c906bd091312c1bfe6969ba6aabef954b5c8d439da5064a248c92988961fd2254479946dec829c76cba61690e3c541648228b59805d7fb2adb6aaba70718985279452a2fb1414e4704ac3dc84d3eb767101c8f4feb24bc8148316609bf963afa826a9b87638424052067ce8fb393d9ac579ab1080d1c549fd5103312a1ff9988dfe7805ed906fe9228e25942d49484a4510e0ff9a4a54a22cba6be945126ebe461c5940a74e1517c60603b2651e8371973da7051eb7197713f5583ba51b92a9eb3179b45a8a8a5099b40c29f59146f25a563291364f236038c79b784bf09524fc6810f91b777bae252e5b723e8059c06157653e335549784a15553ff9a7a29407d87725aa6b7a2a2669cc776bb810672967cb5b8b9a9ba751a9e69a8ddf796b1f324348712ff0c23f49a1debf210c027995b8a7cc5b288c4c74218e5086112237128cc57f4bfeddc21ed23bad00c58d835b5a3f0c8fdf1001e0ab26c2cad47d5caf2252cafd3520e36ae21119e56fb456f277132059ca18623bfd994878c794545ba4a04436d804231f430b12808fb01647fa15d94b975bb6798ab7c3f6355b9bd50bc1ca00ee76342c8609be0bc893deb398b65a453ba08bef83b805b61945229d98422f59c27e86022da5620d737867828540c20b097076bc6c03e5435aee1b9af19958a7dfb921da414280429da389eefe23fc9578b714b4f2e5b19b792903ff45aca045bec0b3d83c204747a2e24971b440c10119941d9316f45a87c4ab2ac0f7c4bde9bc8ef73a7f42513be3420c56720ddb984cb173587462aed9996d2a848d11344eac02351e6c5a18cc7ae813bfdc50d5b143f4d07ac72a213a0577f9802043a585d95031d017b319358a24b06b7c2ea19f22b6634146cc0a123a8051c51e6ad6a956b1a935ffe00bc65c44a60534d1375570bc036edfbce66255f523bb377b2256c29b870da2c870868299828f6fbbd8e0a109386b8d743a6e7a38384d5933e64565a037b9f520ecf8466f2073eeaf03d1b606f947ca2d2ca49e4b41de9011ffbd23920c0d2d0cb20e3a9c63bff3e047504a8965639e8fd0db690ffa1e791fd +expected_private_key = e0c2121f06048fbc565fdaa305202d439ab3a81b31fa257aa6f4273547c1465610ae51c2c1c8603aa36d1575754a86c9194b1cc6a9b8c9f77ce6484c5198a193ea4369293798943f7918142f849c8d7479eb0588e6e6b4abc4ce81a406642414eb4137c2da905ce4ad2b750e7d966d34a3b1bfa8ca5c8070456b1f6d5b71e582c9e1e2bf9dc37ab60a09e797a43f66b27b04c13c034fa6f594264c9d7da884c762b159d775f7750a1862216e8bc992c9b2e0d18513f409df8b0811ea89d2a69b66d34e59bc93f5c7bde25140a976a3195541ee22a7edfb7f9d647616b31399b6c924022f036225af7c34e6d221213ab5f7a20b908325835266da1b456f5649b895bb032142fc5c700cfac4c2a44cf1f96d57b8ba1ef2c9332a612e8bb9043559b5567090873d3f9450f37670b473a96f812ce1d71892e43c9fe61fa594601a27a98ec817dd822c625b98e0fa8f2d5a311a87a6c23b4dfdf44d7511373e64a4a18a833d654a946b0da9694329023086013a919971cc4c8a45916901b45c25c28eb6051600644660796935e65a4700496bc32204201d5c8708fdeccbfe949d1339947c6baabcc67ec901659d220fa4d1a3da1a4adc2b1b323bc4cabb6065d9032ccca3dd3c8689c9a35810bcb30b99b3f55cf2ac8258c5b85c696a372c7aab5b0dd62aba06804466fa4c22b2ca0e09b7d47c4644898aacf6899c79b5321110f010cd40253e40c5920db980a57c01b55c506a6662be1253ff171412820272613940704f63e70340414322b69b60b50bbb4459c1d6a0f25065da032455598edf678505f54b51713209565fc4812ad5f8a05a926340fc3853719146d049017475a09a1fd2d47b35371d715c455debb3a40a8a0e83247b6b8ffc05b2e857b5d8b201e56c109dc155b720b2528301c49237f7a629234231fba25c75d600bd360796a68991bc68cafb5b0b7c748ab7039d8c4fd1b3b4de76c193123e50109ba70956b9556f245ccd4330b888d43a84714e8cf17e5713b5ae5a9fc3a331718c227ef4bdce131f31028d68529f06a218ac32317e9b7634c572513974da2bc3ddc4c07f2c6b8d3aaf5734b5d9e691d790b0fa67cbcf36c0372c056c268e0c243132db5de7365310f5732151b80bc98a2bb76f9e8c616fb1c90a5b83ca5738bfa9cf1fb96242998a44d667a57b517a834834ac0f2ac00e91b32e4e7aab452249d31575bc96c8652ca8e4c3c0d3277a60f5ca7beb80b563391a3b8e1a1a97c85823928877954c28d052a2c116bdc325b687d26d1ccb3386cac9bd4c10c3ac381e056f9060c89e25a910c78e677964d153b74554c8f38939f881543f820b6f11989589302eac53111a45f7664616999d7a64aa26e4cd74539dd496a1f0fc530415b16faa4ac86341c5400cb1bbcffd2707be12c31acc9b5c94b806b71dafab1eaaa087efc1419cd2978ec1b973336d27b69af2fa85f6c33b73770c0f6b85d855938ed8758e6aa5724b8c0d457b29a9394a3528de99cbd7a875bb5b299c8a6dfe416104a59aa9e958e3828d3c651b5a9a7e81d7738374692033c4c68254d5170204f83a9b8520016466fd9189efbacaa23ab8f962af7d66aec2e27e468b9c326711673839541262a9c823efc5c946dab44b5b2068d61f00e7b0d87ca67706343927bfe4c12d20d69c4a5ba892f97eeeab7b5a45742cc4ac4d37219ad72ac312051d31b8385ca2293415a13bb8983b8457b8af9dcca9e6322094ca68399ab77dbb9f6aa7ced5f224641c3fa07507da9a08e0d180d52585dfb3b2fc95cdc733a573a888d403cbbb71c120baae2a195278370bf33299b9b2684accc5288a3cba1277fd3999839a6ed29bb91d71a528bb2e4f953778ba23341cba4b9b3c17f9a8366212af3b722397419e24874b163470b3b2b7f24ae62258983b6161c6773b5ac90969c03d01cf4669b9d1f46e05705d4f676d464264d7549e1e2c3290c9b2bf5a71132057531714bedbc7a91bc0ad56254d298908d33d588951333b3cb7924abf14b0d70652c45aa62cc3062d851e45c866c6200df4e74a9e559b9e6ab738f2b0da9693ccec3d968a866f0220ca95b7c6e8b04ec41d39c17eafab77444aad4ca3a9d6b5b5d4611a6c074fdfb01f7df68ad2440efc5588f3b4a5c4106efa3b9b6bb35c327465c7b656d1c1c6409993fd91cc20172e53190dad63ce02691ac326904cbb6424c906bd091312c1bfe6969ba6aabef954b5c8d439da5064a248c92988961fd2254479946dec829c76cba61690e3c541648228b59805d7fb2adb6aaba70718985279452a2fb1414e4704ac3dc84d3eb767101c8f4feb24bc8148316609bf963afa826a9b87638424052067ce8fb393d9ac579ab1080d1c549fd5103312a1ff9988dfe7805ed906fe9228e25942d49484a4510e0ff9a4a54a22cba6be945126ebe461c5940a74e1517c60603b2651e8371973da7051eb7197713f5583ba51b92a9eb3179b45a8a8a5099b40c29f59146f25a563291364f236038c79b784bf09524fc6810f91b777bae252e5b723e8059c06157653e335549784a15553ff9a7a29407d87725aa6b7a2a2669cc776bb810672967cb5b8b9a9ba751a9e69a8ddf796b1f324348712ff0c23f49a1debf210c027995b8a7cc5b288c4c74218e5086112237128cc57f4bfeddc21ed23bad00c58d835b5a3f0c8fdf1001e0ab26c2cad47d5caf2252cafd3520e36ae21119e56fb456f277132059ca18623bfd994878c794545ba4a04436d804231f430b12808fb01647fa15d94b975bb6798ab7c3f6355b9bd50bc1ca00ee76342c8609be0bc893deb398b65a453ba08bef83b805b61945229d98422f59c27e86022da5620d737867828540c20b097076bc6c03e5435aee1b9af19958a7dfb921da414280429da389eefe23fc9578b714b4f2e5b19b792903ff45aca045bec0b3d83c204747a2e24971b440c10119941d9316f45a87c4ab2ac0f7c4bde9bc8ef73a7f42513be3420c56720ddb984cb173587462aed9996d2a848d11344eac02351e6c5a18cc7ae813bfdc50d5b143f4d07ac72a213a0577f9802043a585d95031d017b319358a24b06b7c2ea19f22b6634146cc0a123a8051c51e6ad6a956b1a935ffe00bc65c44a60534d1375570bc036edfbce66255f523bb377b2256c29b870da2c870868299828f6fbbd8e0a109386b8d743a6e7a38384d5933e64565a037b9f520ecf8466f2073eeaf03d1b606f947ca2d2ca49e4b41de9011ffbd23920c0d2d0cb20e3a9c63bff3e047504a8965639e8fd0db690ffa1e791fdd1756ecfaeb695001ac490f36c4638151bee98d367fb7adf0e06a470844068af0e145e44aae52cfc609e6f47fd7a6f6af877190ff52256d0ac5b05b89c3f449f + +comment = Official test vector 29, seed: "265eb2de7099e4bd5614e5de7f0c2a05c78ef3e8e2dd4ae4cb70f3e5e59c8d1d88248303f07de0c5508652da66b47222" +entropy = 174aaa36410566dc15a5e62874218d7abdde0b2c0f30d877bb80b1abd5f5a0a450a7a2354f7e5cefa6f4a4e9a1c411eb9364506e9e1204a8acb3cb77fbd2c4ed +expected_public_key = e71b4ff986bee57636f904c856ac93e0c18775864b7b932af200251b0328f5b3caa38116c5a187305622b4a152ca337ed7a3690c31161862447b847f5639c5851133f627b5980572023b4acc37c32f6b70b3555e0ec4c5809c9582407a0e59a866991564ca55b21a48ee530676a435d26b749c1264f9e58c3fc619d1a23ef5f6300e96665eab70e7350852115f5859bbf1a8308977648ae5cf5a55c9fb42801aca4f0592254461a632a94a9c3a7ccd05c8b7c3b09666be54f072cdc58d8cba687d609d1f021115085c340153ce63a37750acbda01a6944a46cd16cad098464a109bbb611a83346ce6b59a5f4ca3cbb4394daca06e5708459cc777534eb80a620c308dd779b074c11f31679ae98ae569bbe79cb04bb127208e24ba008bea28c5db5ec18f31c50712171e27042651701c3004e057a6865d54763843d27873220c174c57154c9a9705da162e8685a035b34e15c411fd1b7220c57265c2ba7579f4bd9ab1461650e8027c0ba79f2ba3f14093cab6015d8cc092905a6b8f09dbfd5743818489ada2bedf88ce592396074a79824457f7caefe334fc84869ff43641821ad60e80407649edaa8bdc2fa877eccaccaab8a1f35a1573546ac382222c193bddb31275b84374cb4679a5ffd803eff07987ed085fbd43e45752dd9a32f5ec03e7b74567ed9674e1070b026801e99ca27ebc0ed24742530507e19b97a09877a1b511da3b9835268ac35ae44187ea14b996dd96c35686eb98a81f1b2ad90a80d0c989b12813e7df2b34573b876289e7c79481c7247e637a60f9b2d3fc129c379a759756408636048565cbeb24c2186a875606a43d20bddd8b9d70781b1848be54a075fe978a3e112a567223d21beb3395921d1a100c578e7ea0455949b7b420b6494688aeac00697ae1914084eab375d86243b50a948874dc973b7670c8f9173228b64647e58761442a2cc90165b188b58025f8eba65cc654575a1bb3823a1a29633aaea1763f24486aacafd611c28774c98d89b3ce8a696e29f62775b5d5c50847c3ad4bb968c441086aa070097508da888b5b202e5a3b5db579943f0861a5b6e2d58415019182262c444fabb77679e019cced4e0a3854507fcd0935bf81b0e8500dc6c0b3c154ecba94d166407c5dcc67bfa6aea8b4ef0c53859ba4416d5c1975c1feb6bcad8076e6b020a62b077f0141deb5ab5986b386d51cb7e8c779654af5e5485a969467012c572f62daf788d1f58bf9ddb4bc6e04b00218cb671ce8b2515b072b76cf253a4006ac5437c107a077f162a3984586978ceb3752b1fa1a2b525961f96c63d7207ecc4c0268a354afb00231b1cb6eb4e4a694524448e7a043c22a5bc1094b23d3c5d0a9641f909a778eb64bab84feec3a53730405c92130f756050771999e469cf07cc8c308ece9b827d7558bf882630556150a602d9400e3d4abb229a9d8b8132a7f0c0c5475bb852000b63228c490472b42488aac0ed647b1e834f248534fe2195adf6952b83b6705593a1e53f0315613d2596aad44e27a26d632b9c71e9c9e5a6ab733c7e81e54db3437d894a19b4710a3cd5075602b176ec369f5116638775574c74425789154b0bde48bad6e52c91c451c87b48ec406674a75b0cd39d1173c3f411ad1efdd8bf4be2afea69c2327bd070cd1432c8d219 +expected_private_key = 25933617206ae881c4de291b4f269f2e51897ff29d3c6803e1a4c58e53051e879f1af333393c75b366cfe2e84cf9cc930d1928298897480571d7050751601bc119b1071412efe8873ad325bc00420d13a752d33087bb6f884628def98f4fd21d01113219203f93419875c91cd33c7976b7a45f510f70e6002957ac49b862cd35640ce84e6b989201a74eb76422f88b31c94acfa811605a32634199be1639a50b709e89683c5cb0c975d627b76223ea48a2352c8bcc254abc60812a6a5ab7747ca82073d1d31fef708866a9801ad067a6da0d848c409861c350db559a0ab1d91c9be0c149d6c241a13849d9eb2da4b9b9b30b348217491449a43ea4544467824ff954c4869c8dc0b2ba2744c8d38ba584cb78ea6f6188bcd090267ba46882f16964aa003e2c60105415f937cf13b9cd00456d3545bc5e48b6ddf61a14eccbac23bb1d071bb14361b4c9acb7b48805b7890c3676b550238391b388260cb0e2567f725b0382c7174440d82ba8a6d226d325cdd1c26abd510abb195b73d203f9db7db44abba87581a3c57f079b44a9455e3fa16ec87a0cc14368569b35517272220ba7760a8a0508bf0033031d42763fe89b611366b8b93d2d523d5c872bb99bbb099515a5911f1182404b7b4ccea91462c6a5abc16c64f55ab38a763a03ba48e0268819b6df8ba88704ab4c7bcd8f8a150ca434ab0632adc522a49c0e45997375d69901416792f845fcbc1a18789b22870401d6872374b15c851aba4c3cf5a8930d34c74fd444a2c87f90d9353cd77361e26c99c8027b50504bc5b3f2bc27f3978822113e13d71e19e3915a9a4f0646aef6d513e155b41237b2ab08bdf38322bf4c00706c0f22854d080bb8ecf58cc9b75d19a0185412a74b3c7d61a04dd8cb07bb37156c46221a7183beb9321c58a924048ab86032f54815da1bb33ad4312391c1a6778d9070b1a4542aae231aac97bb5e1a1cf42792c9921313c07aba3a8c15db5d1be417c3888a2e0921a7aa1926044ab865935a2738b4378484b44471da250e41925e976beeca9f93d191b0c85b487badfcec4be7c7683c508412e096ae888bafb97cebd3266ef7397004cc56741f53683034fc3160522e6bdabad190c51f31926aa94b2f2a4506d69705623e3047176b46169ab8a715b84848bb4fb9830be744cad7591dd8d128c1a40f8a5b2829a92177d73cb1f319c0f45557a69ad790c87a6b8314e618444081c221c07c4ba5c1c450b8080db278770a0c110dc386fb8411d4b983503964f7b6afa10ac5154ccea9e6222b4a70e5175f125b0a83010474311f8ef84fdf3aab6d508b313a93c29675abe12cde50bd4b5b7e13c7228d9ac9df569cc1bbc995eaacbc2290b0293a2bba70ae8757c5a7ce84386093e02b3201573c56bcc368a7dd404371453c38823ba4752edb663e5fb99c5e91ca9ba94caebc9d60a6318cf62168a86c0c419cad1bc4fe514a745bb2c81701b89ba371cc1f10b50d95086d99778383108dfed849a1f74696464aa1d67f7f40bbc69c1fd907696d6227cf20750d68a3d36c600448c91a523a16e5c84b40819bbb2bfabb2cb03b658fd0656f410752f52bfc9bba4a3a8d09d5835b1540f5dc673df71540f560e71b4ff986bee57636f904c856ac93e0c18775864b7b932af200251b0328f5b3caa38116c5a187305622b4a152ca337ed7a3690c31161862447b847f5639c5851133f627b5980572023b4acc37c32f6b70b3555e0ec4c5809c9582407a0e59a866991564ca55b21a48ee530676a435d26b749c1264f9e58c3fc619d1a23ef5f6300e96665eab70e7350852115f5859bbf1a8308977648ae5cf5a55c9fb42801aca4f0592254461a632a94a9c3a7ccd05c8b7c3b09666be54f072cdc58d8cba687d609d1f021115085c340153ce63a37750acbda01a6944a46cd16cad098464a109bbb611a83346ce6b59a5f4ca3cbb4394daca06e5708459cc777534eb80a620c308dd779b074c11f31679ae98ae569bbe79cb04bb127208e24ba008bea28c5db5ec18f31c50712171e27042651701c3004e057a6865d54763843d27873220c174c57154c9a9705da162e8685a035b34e15c411fd1b7220c57265c2ba7579f4bd9ab1461650e8027c0ba79f2ba3f14093cab6015d8cc092905a6b8f09dbfd5743818489ada2bedf88ce592396074a79824457f7caefe334fc84869ff43641821ad60e80407649edaa8bdc2fa877eccaccaab8a1f35a1573546ac382222c193bddb31275b84374cb4679a5ffd803eff07987ed085fbd43e45752dd9a32f5ec03e7b74567ed9674e1070b026801e99ca27ebc0ed24742530507e19b97a09877a1b511da3b9835268ac35ae44187ea14b996dd96c35686eb98a81f1b2ad90a80d0c989b12813e7df2b34573b876289e7c79481c7247e637a60f9b2d3fc129c379a759756408636048565cbeb24c2186a875606a43d20bddd8b9d70781b1848be54a075fe978a3e112a567223d21beb3395921d1a100c578e7ea0455949b7b420b6494688aeac00697ae1914084eab375d86243b50a948874dc973b7670c8f9173228b64647e58761442a2cc90165b188b58025f8eba65cc654575a1bb3823a1a29633aaea1763f24486aacafd611c28774c98d89b3ce8a696e29f62775b5d5c50847c3ad4bb968c441086aa070097508da888b5b202e5a3b5db579943f0861a5b6e2d58415019182262c444fabb77679e019cced4e0a3854507fcd0935bf81b0e8500dc6c0b3c154ecba94d166407c5dcc67bfa6aea8b4ef0c53859ba4416d5c1975c1feb6bcad8076e6b020a62b077f0141deb5ab5986b386d51cb7e8c779654af5e5485a969467012c572f62daf788d1f58bf9ddb4bc6e04b00218cb671ce8b2515b072b76cf253a4006ac5437c107a077f162a3984586978ceb3752b1fa1a2b525961f96c63d7207ecc4c0268a354afb00231b1cb6eb4e4a694524448e7a043c22a5bc1094b23d3c5d0a9641f909a778eb64bab84feec3a53730405c92130f756050771999e469cf07cc8c308ece9b827d7558bf882630556150a602d9400e3d4abb229a9d8b8132a7f0c0c5475bb852000b63228c490472b42488aac0ed647b1e834f248534fe2195adf6952b83b6705593a1e53f0315613d2596aad44e27a26d632b9c71e9c9e5a6ab733c7e81e54db3437d894a19b4710a3cd5075602b176ec369f5116638775574c74425789154b0bde48bad6e52c91c451c87b48ec406674a75b0cd39d1173c3f411ad1efdd8bf4be2afea69c2327bd070cd1432c8d2191b1b0a8682caf72df2e0a48513a7358edbc77a615d6be6fe2a7145be66b7c50950a7a2354f7e5cefa6f4a4e9a1c411eb9364506e9e1204a8acb3cb77fbd2c4ed + +comment = Official test vector 30, seed: "806bbd111f27c2668318387bd0830f65ec21a51af01985ef48d03d64e1958ff7ee5133a4ebf6dbf36329bcaaf65f40ea" +entropy = 351fe4313e2da7fac83d509f3103caf7b4c64a4d458fefdf636785ac361a1390f072d9b5a99f9c7a0a011e4dc10f6b600d611f40bba75071e7bee61d23fd5eda +expected_public_key = 8518c8d8dbab01f270c3131ac1586bb783b35db82f3c24ae2b767e2c4a7d15c2a86eb19fdfc41113a7501367cd70d73d0f63705487ac4e0bb1c84001fe6657610c7d64fa3df4538bb6069128c4597ec9b291938ea5d7cd46897ac2179b52f1cac91b6c36f37a59780e454c50c5dc354b56a43040804de2394bea14c2d385e082c5f181228d62307f5a6a1aaa1eabb84f90f34310844df95a4e6d423d8c993fa7f390e6984e482024c2968254b54b7d3418d6f859e295665262246e1bc8cd6c9b726581cee69140f85c02024c5b59aa0711813d66433aa384b2a4a3447939378a1e6a98936bf04ad075981d93c53e9635b5e285f96755f8689b5ce5429142af6fa02edeb1a719b272f6b0a6211a5b9807ce6ff368739b51d4d9480bd884c8b456569027b08a3cb928645d450c6264c5fce2a2de2b241f965034a08716649a3c71020a6986fbc8bfb5b4a2cb162749264cc1e44bd66223f3db1b9bd2c68744b52ed7bba0b9773df128883110d2cc4757dacaf7f4c90fe02884e1a581d89af687ac79444c9d801d156325590a3a24441b7c2c893b777386198c16374329e640b6a439fe5bc71ab3ae195575a71cbab773ae6f0b5ab2d750d222a5d36b86ea2aa2006c54940a5f843ab708d19d5937643309c12d522dd479c3b2d57dd5696d25615abbb573fdb62eee5c6a6546cb1fb188f356800ff4177c69b636cbbf9ee9a7c7d512ca156490c96b347a5bc2cb257a061452dab5fd15bdf5026677f14967b6c825d03eb782cd0422bd1078b7781624dc318a33b0c437d6c35997a22e30496e876762ba5dcf5146c5188dde6c684c265a8f05031904572f7554123832c78767ff4b5ff525680c773ab3ba1a93776897d57b0d507b9391712344326f090b3d964df8c293b6638fa36815c7cb9b7962956f903f62c4ce3d7646ebc1a8ec04a815191cb4bb085ec8693f2188f490731c087c23a8bc7cfb32fc019d106934b2d17706526cc6f787be424bce5b26329591c47402d57548110ccb42955c422323addb4987fb0f3441558964bf14021a54277ba14c5773a10b81c1427f51173f5c6cbe1b7575a4b6766ac355bc443e479a2953a51f7010f7b04b23e0ca93d08836432e3ae5a1a6bb62f5476c07914f88532cecd00ceb340588ab675f93c286e7288da1c6ca3621ad6a4ae1fc64aa15b27a7c3eabc120e7460737585b5773ab18e23ee185c900ecc3b765983cb807e2f7047e6c999c6716e26801ea938302abc312aa797535358196b63309846675bcf1b33343bc3d4d172db81947643a84fd2173fcb0477ab87b57b55899a308d51311c9ba6916f15947d707d88b9228d0488ddaccb25455cf782b7a18264e55c9b6798f39a53f53240c82fbaf461364cd5202c5c94cdff23e0f731624e69310e5b47964b2bfd3a59a5b0d55a026e260731de346f74938abc607b4f579b8b200ecebb633614a46983e60e442a4914c93fa62219025e4a99d71032f0b00906126365c467e0a235570a544a7640f23800cd5f2a825479a632343f20801f1774f0e8b7db96a860fd40a43cb7abae76039c6bc80b94ec315ad49e9904908a20cb444bfe219452c464eeb2914ec19031152cacaa00dd541fde81ecaf1f339e468be45459e708bfb464d0c480a1becdbc021a06af7aac4772545eb +expected_private_key = 719950ed1960ff6c2d7d59bbecb83aabe1ccb569b76cd9b053389c552cb6bf847cf4fc1f18a03e66f02cdb284c15d656151644f78caeeafa8b12cb7c616256c032ce6112735a74285d66a90f3a745ed8733c195f6b1b9b272897520a02fafcb958a9669990b73420bcce373acf5a1c86a555c3c48f78166c0fbb023c49608592261060884b408c9fdb1f4b023506d3516956b02637af26fc7b1d9345f8b54b5af96997d39fa32c01ab64a6ab7491d50303b4e8a134086110d220462395b9d89d9651205aea9e1b88bc80c4c8bac44af4f1886ea788a0b259dda78116051059853d2cd073ed8cadad9ab04f7175d57c3224e953509588e788713d5a6714d0aa48e972f4fa55f16579d9bc6988f562ccf1286e87aa785929bf8266d7e340022c0221736c3cb372b85723042382092545a45032eb727bdc750449c786145acf42b85d4618b0d6f009d0224a816620f1db67f59713090b0849559a51b9589532ce2dc25df8f09aebda932073a2ac2115b12c5f94c64750220d645b34c14ac1b2208565377d61426d7f2a25cbd969a2705ea330b676ea6eefcbbc6cd40da9c0716d147b398b7d469a919d83baacca80f0e41414382804b0a321362e14e766db2450f599963cc2899e1048d839754858910d12c23f99158a9a3149362690a9c5540133e5f217a7b66b0d627321c810f7d1639cca948d708616047f85ba41cee9211df72731ac0986d1c3149854b71683faf68179799b12c031a2a84574b9a67c96a708355f7a86bfabe63ddb94b6c048359481ca7a45cbaecbcf34407d8e378733f812926599df5c156a94945fc7911db26bef17074470a7bd6b60f771cc3f396e847195ce26444b641f91b468fa1670d0184942472667aa76e42976fac48e78da72ef0c207fc7400f92699b46345e4c9972a35daea31adbe87980438de4f211b005c8dcec1a6eecb56d891677f9006c49385e8ab20a19b74325a9a95083bc711537480db30719815352616b2c5721979bd4267fb134188a75b9cb303215a76a246d8f69acbd173d069b2b99b727829aa5469a0212c006a88aa4a6b614674674fa75500aa294711c178b741b0275280bda27813647a5dcac3a258991db4bf436c23f37c697115143a2755fdc199ff32b19209d7ff904feaabff7383884c1bae3c0cc20d019066653b99c1cafe366567c9238785b0f0b4d1432a9e02ca2d9a3b37d84646b157684d7ac720727af4533749a9ff99bad8f3877dbe5cff9c75b38c4002178ce30773ee36a14f1497ab386cb36420f04d85c8312ce25b357d3108226925f6b85c7a3729064f81aa66336163c00506bbfc82030f4f33a5be7330926bb3f849d1dcb09f5cb814ba8a722506d0a037e6eb26216aa3c4d4c05d5cbcf0358501936ad2beb3563c341e2315de6d68404acab0149bafa84491ab67a2dd82972220b0df528da7c4d441c8cdaf508cfa2c0224932e7e5215572aa433c9212022899e43a93cc7c8f4aac6ed5acbd0162e4da4b897b7bdcd72a0b2a2354f61a6c211089c11e476715f3369859c3021584b6593b5784344d53b40da0725a90804c45d02f6eb7670071660478c53281b5e290bfc77ac46602b530b1300628a7a4f20ce227688518c8d8dbab01f270c3131ac1586bb783b35db82f3c24ae2b767e2c4a7d15c2a86eb19fdfc41113a7501367cd70d73d0f63705487ac4e0bb1c84001fe6657610c7d64fa3df4538bb6069128c4597ec9b291938ea5d7cd46897ac2179b52f1cac91b6c36f37a59780e454c50c5dc354b56a43040804de2394bea14c2d385e082c5f181228d62307f5a6a1aaa1eabb84f90f34310844df95a4e6d423d8c993fa7f390e6984e482024c2968254b54b7d3418d6f859e295665262246e1bc8cd6c9b726581cee69140f85c02024c5b59aa0711813d66433aa384b2a4a3447939378a1e6a98936bf04ad075981d93c53e9635b5e285f96755f8689b5ce5429142af6fa02edeb1a719b272f6b0a6211a5b9807ce6ff368739b51d4d9480bd884c8b456569027b08a3cb928645d450c6264c5fce2a2de2b241f965034a08716649a3c71020a6986fbc8bfb5b4a2cb162749264cc1e44bd66223f3db1b9bd2c68744b52ed7bba0b9773df128883110d2cc4757dacaf7f4c90fe02884e1a581d89af687ac79444c9d801d156325590a3a24441b7c2c893b777386198c16374329e640b6a439fe5bc71ab3ae195575a71cbab773ae6f0b5ab2d750d222a5d36b86ea2aa2006c54940a5f843ab708d19d5937643309c12d522dd479c3b2d57dd5696d25615abbb573fdb62eee5c6a6546cb1fb188f356800ff4177c69b636cbbf9ee9a7c7d512ca156490c96b347a5bc2cb257a061452dab5fd15bdf5026677f14967b6c825d03eb782cd0422bd1078b7781624dc318a33b0c437d6c35997a22e30496e876762ba5dcf5146c5188dde6c684c265a8f05031904572f7554123832c78767ff4b5ff525680c773ab3ba1a93776897d57b0d507b9391712344326f090b3d964df8c293b6638fa36815c7cb9b7962956f903f62c4ce3d7646ebc1a8ec04a815191cb4bb085ec8693f2188f490731c087c23a8bc7cfb32fc019d106934b2d17706526cc6f787be424bce5b26329591c47402d57548110ccb42955c422323addb4987fb0f3441558964bf14021a54277ba14c5773a10b81c1427f51173f5c6cbe1b7575a4b6766ac355bc443e479a2953a51f7010f7b04b23e0ca93d08836432e3ae5a1a6bb62f5476c07914f88532cecd00ceb340588ab675f93c286e7288da1c6ca3621ad6a4ae1fc64aa15b27a7c3eabc120e7460737585b5773ab18e23ee185c900ecc3b765983cb807e2f7047e6c999c6716e26801ea938302abc312aa797535358196b63309846675bcf1b33343bc3d4d172db81947643a84fd2173fcb0477ab87b57b55899a308d51311c9ba6916f15947d707d88b9228d0488ddaccb25455cf782b7a18264e55c9b6798f39a53f53240c82fbaf461364cd5202c5c94cdff23e0f731624e69310e5b47964b2bfd3a59a5b0d55a026e260731de346f74938abc607b4f579b8b200ecebb633614a46983e60e442a4914c93fa62219025e4a99d71032f0b00906126365c467e0a235570a544a7640f23800cd5f2a825479a632343f20801f1774f0e8b7db96a860fd40a43cb7abae76039c6bc80b94ec315ad49e9904908a20cb444bfe219452c464eeb2914ec19031152cacaa00dd541fde81ecaf1f339e468be45459e708bfb464d0c480a1becdbc021a06af7aac4772545eb2c54df6e9020e1e44b11b471dea97a382a2fe8d1042565bcd51ef21cc0884d68f072d9b5a99f9c7a0a011e4dc10f6b600d611f40bba75071e7bee61d23fd5eda + +comment = Official test vector 31, seed: "ad540a9ce816d6fb1661e5483c44f6fdd00c9e7bd1a8ceda4b4c4d3697d4f78ed0a56954996ccb7da96ecb8f5cb15809" +entropy = 9bc5315580207c6c16dcf3a30c48daf278de12e8c27df6733e62f799068ad23d5a4d0a8a41c4f666854e9b13673071ceb2fd61def9a850c211e7c50071b1ddad +expected_public_key = 5e55633267468551b3ee117792c80c1a802230ac805f769807976c06399b97b3c93fb83bdc136cb3cba70bb4ab5f11602e977ed051115508668c244a44e09569a13507d4009ab72b16cc3bc615c12ada7c56d50ba6307d00801bedf8526f0a9366869a4830314d162f63ab8f51996663c1138641275e164ddf60c7708a75376bc235e16d5c22033de1a149153d1868679e1825f638967becab5b9644a6e201906771a703b7844cb5cab61748d202d38b5b8f03cc45626027895e23d0c1c1b526c6d519620436ed593b58732164a39639c813f6032eb902b05db15c5d8825c8b11815768d29522536698a751bc1f9964dc579358adc57eb83a0d2201b9b9354b1b39c6e7008d5f3189902964973af9a9c694eec1298d68d3372783d34700b0280d692998b49a9bb76293d7a95363b317670352a71822f415b1c97742934713c5995fe5ca9642c3ac18b73c43357d4d497b3905df7f58c6566621eeb25dda29d97b598970684c5780f665243feb854f9f566177200f9331ce353cd1a23cce8aa4529bb667d1b9e59b1a312a7c6ff08871cd95c6934419f475c1c08395ce1a3aff83dd14784303b4ba7751054aa59f5710e4ac6039f3168c1b601a5278562b525abb11e66193dc9d34446bbcc8163578cb8065f89b9f43407f79246cad2b6b8b40f16b839a060a95b76855237bab2fa315db48e40842f8306125fb04145356bc50b00e3389dcca26ff048af5a730ac573b5b80331d2597c4188227682075bc0000186b8fd26a383e1bce5c19f13b18cb21602f2160dab202bb07b63d925b71708095daa662cf25dcbecc99395400a79842f5c40e79b46b5384ce730439f537bbc8a8608f61520e120ea9843456118a0a4cf36384832b12076044c65f06c8f8cc31752469c8a1e33dc529ac05485548a6e075f46a089aa8446c0d465bd43cdf0343acc9668fba2a7f7191a9d29be7e9300cef33d13a11edb2b409de297f30b8a7b077fd4ca4d1ac74b31092aded0503ccb5818d1834a734e15b74d3fe550ee49773a800d86f129b4e0250ea1c43da3a3b802b0757c6401ea090f98a28291621341a9d98c67bb001e46e89973f40c1c4950b0e34f07772ba6379fb6a93ecb57369b48b3aca26ef815c615b4a97ac2190fd2b15e83aa10545fb859635d084a57b0268ff085d9ea4b7ee1763b914e67b33dc46037f39815a1f8c58663c88662b91bab0db6758288c682372a269c64cf3ab5c46de2c8f0f1b7780a068948b9480c6af10251453c1fe213855d74675cacc7b162917730ae74ec7a8e7673a7d0887edc175791309ab28e6ccc629bf79c6d69b19269a19488b7b88a45a199841916ba4a2a1c2456a108a5cb4de1b15356ca737369668b0b5c7bc10e22377d6b5fef7515b4f348015872e3518c2676079b8a06de8b53bd189ec9766c04c084e74c6e747c783ff3a99b930547a72fc3a179cbd62b52d46207e79e37d65c9f3c4839d1afc167ae4041671e2c1bf3324d875b78615067dfe11653e6bd4dd5414579ad8c942081db4f1a10b0e1054fa3d79af6a285f2107d4232700676b8a007057d15c923a7889f115762b4c242392ce7c4438c68c6c3fbcccae4a071e404c24274f5066deaf5359eb3382eda6d6338f166acd09e376826299b77b781250c2224486ef23d424bdd +expected_private_key = 4da026f053c3ec1712c7f294dc891e26196894a1b620f97429574edee9568e113feb564d89a1883d5a0329929ca57ac001925c8d616791842dcd291627d61c7c2c3f842b547f074f46f082a06bb4282323a291c3cc07904079125cd5a854168d83ba8ab6b160b5e1881d25403b297c73048e3298287f51529a8ba2deda6b4d7665a373171b03b1c0baab6482c50ca3a028d485ca8491b1b73767ec9ef8874a54d4ca414895d2e49fb2ac0cc80c9d248b97ddc51d00a10ca3324fa8a6373a99c5dc1bb7a389cd9a3c6931fc7bee05abcba579251b742f46383afb48faa514319b8f9a0491f9212da443acf9b9ce5b29a6e723a4eafba5c1a7b3e017870fb35dba8a69f1f7995ef2aff817907de5c66899824889a760ca4a38a57b3afa880a3524e138b37487b2ee7332d2689f99a5a3748020fbca43ed6045a5aba65f6c67783cb74c217ba987ad381938b4a651b6908fa4f18e6d073a6992160438ba3c9547e4557e1e724192414c912648d25907bd8b069c845465616969161c483927f5d610c815638e242323465839d36a8149bad494b71f1336a3f0a954369d4265b6cab935f06694c482b500cb77bb32c4d805a295a692648a31611b206d06c2e86c61675577053a747bd3a748f452b480028edcbeca8a10eb843ea8a71e21e9b822d80860764d8c5a77ef0222f8004c902c832f1a344758776eeb99c3ec8b24ccbc03f5bcbe59027fb424e6c580cc3b41c041984ea552bdd6396d52867887430a2534a44ba544a0b285c061d7d6618c76945a5c3b29bbbb09a724b1ac53e5954f66708c8c0b2d7da57c62fc8b80e73d737741f9141f7164b4eac08822a4c340b5b74cb5c2d407b9d63365c55c14c5e6ab43a8bc68908c34074a9bf4816e000ddb464656c379fdd829b6961c22e5345674243ca64705212d52e616664587f90947feeb4366a7aba98b76d9f79a1ecc4bf50571a07cc57e0cb1af828bb26263a8a898bf3b7b0ed07988e82dbe3c0405d46b1cdc37600570fc37ad9b2237e3032bab1a0ae420b6f011a653987305aacc8876ac4d014b7e619227b8b35ba2616c9575506870fad2585549a2f902b185d7a61139c027912ee2a00ee460328b16cceeb259149a0881f8152d563bc0243302d29fb98cc57a45369517640bf0bf63a555a900269878c4ba567f8d376176d6941d34957e1373b7520483394c3606089d14aee0917059227bd848bb22e088def4194bfcb36eaa81d4da713e37be79e52f51ba2c32f05d06405947838625e49f5f6bcda5e683d014a12fcc0c81601b52f80c39b6659606a8fea82c62e061a939cb4451869922083268561e16381b026152170104e11f30b2399f4097b94078adc66f23f85ba6651e861237700bcb1ae92e2bc652cbf19bc0fca0d7f7577c9c96dbc9b8b07b917f258c15661da17621db1287ebaa7714a54052fa660f034f227198ea14c2467b46cf9877f4e0c29962992b560a7db93c8ec13343f734d86bc548246a57473d1285463d0942f288245d933ddab7a09766a9f8c178ef539f9ce9a0e97364cac0366b5b08b4c1b081e01d198c2aa5288617a50019eb3a40a300af538119d733f2544d18b9094f387a3f4c17baf01523f1455e55633267468551b3ee117792c80c1a802230ac805f769807976c06399b97b3c93fb83bdc136cb3cba70bb4ab5f11602e977ed051115508668c244a44e09569a13507d4009ab72b16cc3bc615c12ada7c56d50ba6307d00801bedf8526f0a9366869a4830314d162f63ab8f51996663c1138641275e164ddf60c7708a75376bc235e16d5c22033de1a149153d1868679e1825f638967becab5b9644a6e201906771a703b7844cb5cab61748d202d38b5b8f03cc45626027895e23d0c1c1b526c6d519620436ed593b58732164a39639c813f6032eb902b05db15c5d8825c8b11815768d29522536698a751bc1f9964dc579358adc57eb83a0d2201b9b9354b1b39c6e7008d5f3189902964973af9a9c694eec1298d68d3372783d34700b0280d692998b49a9bb76293d7a95363b317670352a71822f415b1c97742934713c5995fe5ca9642c3ac18b73c43357d4d497b3905df7f58c6566621eeb25dda29d97b598970684c5780f665243feb854f9f566177200f9331ce353cd1a23cce8aa4529bb667d1b9e59b1a312a7c6ff08871cd95c6934419f475c1c08395ce1a3aff83dd14784303b4ba7751054aa59f5710e4ac6039f3168c1b601a5278562b525abb11e66193dc9d34446bbcc8163578cb8065f89b9f43407f79246cad2b6b8b40f16b839a060a95b76855237bab2fa315db48e40842f8306125fb04145356bc50b00e3389dcca26ff048af5a730ac573b5b80331d2597c4188227682075bc0000186b8fd26a383e1bce5c19f13b18cb21602f2160dab202bb07b63d925b71708095daa662cf25dcbecc99395400a79842f5c40e79b46b5384ce730439f537bbc8a8608f61520e120ea9843456118a0a4cf36384832b12076044c65f06c8f8cc31752469c8a1e33dc529ac05485548a6e075f46a089aa8446c0d465bd43cdf0343acc9668fba2a7f7191a9d29be7e9300cef33d13a11edb2b409de297f30b8a7b077fd4ca4d1ac74b31092aded0503ccb5818d1834a734e15b74d3fe550ee49773a800d86f129b4e0250ea1c43da3a3b802b0757c6401ea090f98a28291621341a9d98c67bb001e46e89973f40c1c4950b0e34f07772ba6379fb6a93ecb57369b48b3aca26ef815c615b4a97ac2190fd2b15e83aa10545fb859635d084a57b0268ff085d9ea4b7ee1763b914e67b33dc46037f39815a1f8c58663c88662b91bab0db6758288c682372a269c64cf3ab5c46de2c8f0f1b7780a068948b9480c6af10251453c1fe213855d74675cacc7b162917730ae74ec7a8e7673a7d0887edc175791309ab28e6ccc629bf79c6d69b19269a19488b7b88a45a199841916ba4a2a1c2456a108a5cb4de1b15356ca737369668b0b5c7bc10e22377d6b5fef7515b4f348015872e3518c2676079b8a06de8b53bd189ec9766c04c084e74c6e747c783ff3a99b930547a72fc3a179cbd62b52d46207e79e37d65c9f3c4839d1afc167ae4041671e2c1bf3324d875b78615067dfe11653e6bd4dd5414579ad8c942081db4f1a10b0e1054fa3d79af6a285f2107d4232700676b8a007057d15c923a7889f115762b4c242392ce7c4438c68c6c3fbcccae4a071e404c24274f5066deaf5359eb3382eda6d6338f166acd09e376826299b77b781250c2224486ef23d424bddbdcaf7b417da8b8933279b33068f6fda313826c2eec500b224cbe046abeb37a75a4d0a8a41c4f666854e9b13673071ceb2fd61def9a850c211e7c50071b1ddad + +comment = Official test vector 32, seed: "288a5f2684d862a86d2790afddddbac6fda934ee7d2e6da1508bb550838609e8107312b28e00a6c01706374ccd3aefa7" +entropy = d8b907b34d152ff8603b73051f772daa71eb902c47b7e2f070508269d757e02e36b817736cbc5f7b1dd6eef5fe6332fb1a598f3871e5470d440fd2ea631da28a +expected_public_key = 420a3005a17c7b4a08178b83f8540601145b102970b3fc29f30a4ca1a8a5bc4164051931ed68a59efb2b50d549bdc1a65e9909f5aa690b0235d32b1c6b2886ce2959fa189e2ce24224e99255863e6d964d4f422c02646a461bb5abf86f4b4c0975765a5b0ca01081677334af26c3467da771cdf40ec4293608801cad9c61d5f80839774eaff772b139051beaa65632120f00171ad020276a1fbf23517582149ad2c73450b11315ca4b244e7218800350aeb5808da774030635bc247508144740634ac4a078a5af2816e9206a645287de06263277242dba12af2a82ce13ba6787c5ac3020e5d30cbb92452985ae41027056f492bb1a5e23332698240b5038302e552c5acc0443a8795804126e15369ae96cebd7c9765233982458ad6520550baad77bc74296badcd4cc37240d0163caf8c806a0ccc3f4125a0874cdc1c67e4626c9c753453fa37b208caf5f523388d6308248b7688c80f6c925895670a1397880933af0152da1e54f7a7b512aa87499f7a718e62a7cc5bf5687add09060426b0d3cd292ab9b8372083ee462182872815cd740fd69acdd24615110bb618ca1ef662715f028864ba0872b8c199abe40f35f91906a821b8ce0742f931c661c65aa2445371a300e68f23b767382f3701ce685cea5f59c50e82e45234169c3bbac814ab9d68f83842c513a8faf475590b3bac2e3a4685b8f71208357d221ae41310e8454d315670c3a3409a2a95258b9057b42def7a7c6f588f6da61183acfb18a7cedf138c7984b50a940f17c687e5a2f83451d94398f4c82c93a375be195b4b219232e9a766e77040d3b9125e70fa4097d807a6d25323342508f2490a59702575d64af146088f59802aa2cab3537a8b4e92a10ec447bd89f9fe738d92a5f83c2861628601e42bb427b87c2153d4bc44b19413b79baa5ef55325ba8a42e1a88548155d03ab116e47ee0455f0e5a71bae3a03ef476f77a9a9cc6526df1adbea64930b6995f60181544356c0982e957c5e5186f321b9467d05dd5970a96e226c89673e50a056e7c0a8027aca8a5cd93723353ca1991730dfea1aee943cb0d62537cb5ad88c14f52a78cb6228ef4750eb7db0aa831a4202b178ef47446a06a17e7caf5274f384b36832a07ae0a66069bc59fe439f7b6005f064d865b550505210768bd636c61f0e7a1bdcb3c3065908d51302ee234a3fa113a1a1a2a618750075a6ec277cbdac535fc1524a62e3c0601aad1c46026ab6b8495c1b7093f776f9e6b3b533267ab99801e83bd18570166387f14ecb4d279b86cfbbaf90649e5c514e432561f850497d47c2bda1bc2c398b306751991392c399df6f408ff836f989c41cf76234b9445d9f81f4aaa987c1721c0c726efe44c311a589abb5e0afbc4add9bff6f87597a52e16a53d6c3551b7e6be0a1958a89a739e0717f0a86be0385c5ca433b68ab9506ba3a6e00debeb1ad0519e228b5b2d9aa3c9b4a2bfc8b35bf0a04b5a9d0154aef1a9478df4c8a0354f8878331f76c8cb6851940c996109113446367497cc73d395b34a9c7dd9621c9bb277bbaca6d976c3e65fc3fb4588643ab523bb35f551f1f30d0cd1c40d14b09429215e0c5325bb2b069b85c9e0bd9fa841771aa7c9709046b442990cf89513930f122152632a3c3d7c15c8018e1c23aa33cb89ad +expected_private_key = 1f83902bbb77a97b032277079cd0ca70d09d57385ce5c1b3c08b80ed95b2bbe70c101cc1912b71b29b87dd08254b593d616a31ff4957c7c0c325f82024f6a7b125b0ff799fff47afa6a9a7055382bca08cbfba71ea1b530bda5a4548922c90c6de8927494370efa6c96780086bf585ae6534dc05344dc1941ef793eae214312a371ecccea680c1a166ba97e128064748269922c9a19cee4b8a669abd146491abe31a57b724f3a173740269a33309f651c934e09a564627896150addb8ba181cf2503256512b0dd5588f4372781f35cfc0328c0dac842a1b3f418b6e8c567f410568f2c6be8eac9bab558deb08389ba08bbaa50e1ec5dce044efe5830743402402a167a9369e1d281d37713eb656662600840409c4fb971c0fa7771ba53b6c13ebffcbb85aab3316a3a99a9ced8bc4596932b3d052fbb13a5cbfb762ad7a08ca4aaf33862b6325baddb0e56d395e8f92ebc7347e847956b471695c978dc2431ef7286c0e0a880f7871bb05160209900c0c403da599b988a8ef0a716a9535b71002b3bcdade60053f5a8bc66419fc907f1ea718b7bad6bb76fd3f710e6778587c36ba5e4c2d7796185bb72c5fbb839b6c91119ae6c954e9b66c3edb500d884428be2c7cb6a6c86b807a6059739e23f70433d8a7a4aa768975aa6b0c3924cc8827cfc731a464121090a685820068019197f489315a2274a7133422b2968830271fc94b1c775c5a21e3b07bce543b32f00b7250cabd0d04a2529347848830c975261a54717324533ebc0ec627f2064ba693a9bf9a16fce87a8d7270759a06c00eaab71a5cc25034120445334a39d63baa2ab3254d77a921209750f6869e6971d05da1e1bb29cec9cb7b4962370e5c139ba472a75114b28bbb8e7069c5a8201b730db571c1ee0b10e1c42b4a97fb7f7ae54670d12859d68199443157ddea85760445895e7175ef8bb919c7213f427301c4f6561afffb0b03cf1ad05613c52dc5ca71a74545abe77d239576303bc9678272873d9b28f4a4aacfdb46940f59b0a82a75642a0cd794d63d03d43f65e753a6aa2b58e0cc664a48ca3d8a3b18c7b05cf8293d3e23fdfda93506c831455b648e2017fd866c87683ab307c6fd9cf24212509d777f34b0618776864ebae9fa5318e739692c5aa86648d49778b67f81347b434ccfa990ee9a79de94c94054e6e4a8a152b5f4757b89f075a27ac464cd1801d02ab64bbba4f932c0003458ff73011282bf444961c54c5275408c4f79c3c553424aa4aa13a53d59b1b785c0ffb686fda185d5438af5c494d98b80381c821c493bc0e7797cd1995db681ec9e18859a9229c497cc251af12d9cfebc6a19c599c9d364e587c7d32245145a60ceeb54cc7ec5b541b71dae959c800a747eaab53f8cd24365c91f53b7b0b9d3630361d41ade4c82c85e04d8ba243763b3f9dd65d60921f962337a3421051d36889253a423939abeb0ad962ce1e1a9931c960d9f4948723ca17a731adfb4834615693f622470225cfa7b036b931a2240564cc35e59a7acae48707491576cc1410a304e0885534f577692c5a237344a5f674ec7c45bda3242d70b004d5ab620ca2b1ac0a56c0cd5b942529b054e0f840e3c1837e0053539b4a420a3005a17c7b4a08178b83f8540601145b102970b3fc29f30a4ca1a8a5bc4164051931ed68a59efb2b50d549bdc1a65e9909f5aa690b0235d32b1c6b2886ce2959fa189e2ce24224e99255863e6d964d4f422c02646a461bb5abf86f4b4c0975765a5b0ca01081677334af26c3467da771cdf40ec4293608801cad9c61d5f80839774eaff772b139051beaa65632120f00171ad020276a1fbf23517582149ad2c73450b11315ca4b244e7218800350aeb5808da774030635bc247508144740634ac4a078a5af2816e9206a645287de06263277242dba12af2a82ce13ba6787c5ac3020e5d30cbb92452985ae41027056f492bb1a5e23332698240b5038302e552c5acc0443a8795804126e15369ae96cebd7c9765233982458ad6520550baad77bc74296badcd4cc37240d0163caf8c806a0ccc3f4125a0874cdc1c67e4626c9c753453fa37b208caf5f523388d6308248b7688c80f6c925895670a1397880933af0152da1e54f7a7b512aa87499f7a718e62a7cc5bf5687add09060426b0d3cd292ab9b8372083ee462182872815cd740fd69acdd24615110bb618ca1ef662715f028864ba0872b8c199abe40f35f91906a821b8ce0742f931c661c65aa2445371a300e68f23b767382f3701ce685cea5f59c50e82e45234169c3bbac814ab9d68f83842c513a8faf475590b3bac2e3a4685b8f71208357d221ae41310e8454d315670c3a3409a2a95258b9057b42def7a7c6f588f6da61183acfb18a7cedf138c7984b50a940f17c687e5a2f83451d94398f4c82c93a375be195b4b219232e9a766e77040d3b9125e70fa4097d807a6d25323342508f2490a59702575d64af146088f59802aa2cab3537a8b4e92a10ec447bd89f9fe738d92a5f83c2861628601e42bb427b87c2153d4bc44b19413b79baa5ef55325ba8a42e1a88548155d03ab116e47ee0455f0e5a71bae3a03ef476f77a9a9cc6526df1adbea64930b6995f60181544356c0982e957c5e5186f321b9467d05dd5970a96e226c89673e50a056e7c0a8027aca8a5cd93723353ca1991730dfea1aee943cb0d62537cb5ad88c14f52a78cb6228ef4750eb7db0aa831a4202b178ef47446a06a17e7caf5274f384b36832a07ae0a66069bc59fe439f7b6005f064d865b550505210768bd636c61f0e7a1bdcb3c3065908d51302ee234a3fa113a1a1a2a618750075a6ec277cbdac535fc1524a62e3c0601aad1c46026ab6b8495c1b7093f776f9e6b3b533267ab99801e83bd18570166387f14ecb4d279b86cfbbaf90649e5c514e432561f850497d47c2bda1bc2c398b306751991392c399df6f408ff836f989c41cf76234b9445d9f81f4aaa987c1721c0c726efe44c311a589abb5e0afbc4add9bff6f87597a52e16a53d6c3551b7e6be0a1958a89a739e0717f0a86be0385c5ca433b68ab9506ba3a6e00debeb1ad0519e228b5b2d9aa3c9b4a2bfc8b35bf0a04b5a9d0154aef1a9478df4c8a0354f8878331f76c8cb6851940c996109113446367497cc73d395b34a9c7dd9621c9bb277bbaca6d976c3e65fc3fb4588643ab523bb35f551f1f30d0cd1c40d14b09429215e0c5325bb2b069b85c9e0bd9fa841771aa7c9709046b442990cf89513930f122152632a3c3d7c15c8018e1c23aa33cb89ad61e27e954728e2e2e230c94ff009417d7372938e2c29c38af22184eed530fa1f36b817736cbc5f7b1dd6eef5fe6332fb1a598f3871e5470d440fd2ea631da28a + +comment = Official test vector 33, seed: "4635dc5bb92ef98cdb6220df0dd717c7f8158375eaa2b78fc3f0b58e9c9653e92684cad3461d9158a481da3d14694c44" +entropy = 684a29e4e5480a5f2533e1526b5fac8cdf5927f3d85087c71f928c59690eb56575d12195ec32a8686d0600e45d4a7f54219b0d7a3826d193a51b9156ecf2edd6 +expected_public_key = 63992e0d6a8f811b3f0d30807456c84c8bbb008d3b126a31424954cbc6cdbce91e25b19928f4a41b1371447ba3d173915580bbd7899e9adca37b4b5a21e715101717710bc7eec56ec2e58002127d1898bc55f8a3be385d607b3ba6561991ac6f0913617303830da25f0cf0ac14e67abb8097d17b0ad1ea8c6c267adf51a15a9a363d7aa5c8ea535a89115c984ac5d6bfa922c6fc44a3b35cb667f939fa6b2676ba212c17bcd25c82e8172f6a7506e8b77d82cb21d7066da93a7eb3cab8e881a24c7592bc6b656e459af33a06fc2846d71221f1da641004b68bd65dc28a59036ca678508614b15a93e74f89b8af58200d50e718dab1c41c4556cd47b43f14092ca47397243983406e12e423233c90cfeb661a32ce65ab464db58c922bb693f56553961868b064e17a11162a7f0e3ab0b0aa76b8494ba394c902c598c23721dc16c51d46b8258c635763776b922fcac747985b94c006696f18ba49d0c5eb0525cad1349745691320969b6bcff69c30851b41e66aac3353c6894ab0097b4ec49783cfe4960d61a6f94b317d488d2d04a8b42c7fb7d89d52d89b2de30336333c50895348870bbc311611f27845c7775128a9cc831966fccc06292d86b582a18c6ab2fb3cce03701ba91047227a9fcbc6f16130710756c5dc288ba92402b5b7dc90c39193737c206f3f8230261852f1694258d47c469c7452156e70634384825bc52b03e90720066b609a4102862433e2621987e23af51121bed807810501200b776f847ff615c0f594420dc29ca6573276559c1c84b0723569dc2a76728909d9d1279a8c240a3979b0b44003687a412389581b8ebf0ccb06c797f7f5815ccbb434132ed5f1340e2c669430b13a709f7d1612af876454f06ccb7841f84c60f3806d5e423cb34b23bba90ab630403a46783329707388a1f4232785d4723c993cc62284d0e35242e52cfd6981268b86f598b11472900f83333c48627d402abba59c6740b4a40abc3200b5d9e13010fb4dd6bb503548c777256e0729905a89bb386459e0b885b6e3017c94ba93c7518f017695f5bf5b99214c8555bda863fdd11d40053c0d652696286d2ba14d569915e4532132527ce1b88122640ad668a20964476db20afca5ca663c6c17156ab3cc8e4b723b3a5209d2d10767da52b2443764f91a7f3aabb35137ee18a1f744562e22385716892ca77d518c4bec578e0f1145b3241c1831bf782c760f9081a1191812790531648954163b10e6a1f02b2b9e17cdd439c6707aab0df09236ba33d9b271196a398ff0b2c9521e57b6c8833489c5328f4866c14d2cc1ce037400dc610b28cd99150404a175662102f9617205c1cbc24b5716c7b9b0e8635bf960be5b632a976156c64078cbb23eb86b7be9a2d3e12f5b56406cc51796c66a6e871deb601cc767c0b8e45744346de60bb160808210506c5779bc275940e000314f30555677689f23009a583cd6f9779c83530e5b2a5a0a771bf1376f0091c627afecac104fb2ba251c074e359e5fc44dec244ccb78423532a7eb27c8313a341dc1431035162838835c85c677a420b67c847dc6605821587c8064e0bc2f4fe6a6b22113e73519125b92b3a66f15564666023ea99273d0d5657cfe1b1b3bbf85039a8189076a3752784e23d8a802023fd0743eb03d989a6968 +expected_private_key = 8b78635ac351c94bb6b1d2b861e4914dcba415f66ccc465b370578e136330a2c5cb0ca2857e1cb733a75e5cc4fcdf7a12580017f1c0ff484401cb23318a98000637b3d065608678103940d8ba75ccbe58206c130ed62bbc0132317b6556a9c2ae8f71a43712002d795ca52007782652d291dfe535f75034b0d624277527a6ef623168aacfbf721a9e8753195b82eb9855467322aab0ab1701546c470ad139944b6736e1c97c9768370846b45693aaed9c80a7b53b863830df61fe9600ad5717bfa2c8e59e30c8a20179b27b59341c855677880330afd1a227b6c6313e17c46e87d109a4aec4c1795908db6046598483159907a667378f80bcb84472d5a748043b1bac10ba5bcf61b07a2b13b12c347f3253e26c25ef0af6a003a67b0bee98a7c5a489c9ec9ac1f042c6f2bc7585cb01bb4b55496a93de903ec974398e277ca7cc25e3265a879420ea0bd8451716ac21f1bb806c12b3488d408ebf18b89b79b1f8c09eaca235f1c165f9504ff987139590f9977513ee037249b4e25e51a296526ba76cd3295895a571cac279bc65642cba501c8f131eb52b5c7cb73b17757440b1ee4e9295d404177e542bd744aa587738bfac0ef3c1fa0f19b0a5c5e28b53c2340c7fa061ad354c85ad26993087b61ac2002795d5ada7a3e6747ab8110367c824988ca705b818d7a921dba33371405ad235b18e463a8ac88180c88f071579fa5ab6d904a2f53b03f7c7ec39c473632369f984f8cc66dbd1924206a6376706ca36601be7b16edd17e93cb9a0437b3615374329b0712794f5058790d88182be4863293133a83aa00e07c8e79c6f12c33fa9437ed984a1392903da89bd43184db6c8dace3789af5cbba092010b889ca98af99e5b0b3d4399bf61266e833a55a85e11784708b98efab223a27aea1a16e76a73c2027759fd97a7db870f9fc79afc89435d092db556e0a738c133b259f86c98d78a43a49744f306da8cc6c9098a5a9cb091c9bad94970f03b543d669a9aa4944e0c08ddfcc1d7d485fa414b0765a88f175ab6c94b12a2177dcd4998e6aa263ec3fd5baa2466ca04568869466887f7bcf636c7a1f084277532841f51c3edc5c1873bce0f07a8871740c4aa82bb5ab164916082b795eb0660be32da9972840c927b7bb4061343d56757258ba4c91624f21da11cb265b00b9aafbb1665679c86eabbda12b74f1c5917101d0ea2bb293c71ad5b556369378a8d5b7297c9731705dd4493dbb173ad01458686a93287b6da0a6923b913989b69612a915a03a0962379bbc466a03f5517aaa0c0b030c6ca420636b2ee8821916e9c7f2ba228bb2aeabbc292f6c07ad85c6f43ca90d42629759536046394936c3ac5ab979d5cec1a1cc19b5c17edb47b0f47f34d616027b29a12725bf14b62fbac4f2cc6eece89ca0467d4868c11c17299373687b657d132c55785080f5b87f0e3c1504673825b98e8a0aa35f2c8d84f41b060ab43a930e7be1c9d04746169bb4ab403ed8c74aacb868b4a93f1dc55144738e2736749ac64170ca7d0f0348a9550ee494466a49617b541068f2c57ad4108ab813db58526c7647d55c1cb657ccd1143343aaa8421c23bd0c822f763b6a82b7d0041648a143bcc43163992e0d6a8f811b3f0d30807456c84c8bbb008d3b126a31424954cbc6cdbce91e25b19928f4a41b1371447ba3d173915580bbd7899e9adca37b4b5a21e715101717710bc7eec56ec2e58002127d1898bc55f8a3be385d607b3ba6561991ac6f0913617303830da25f0cf0ac14e67abb8097d17b0ad1ea8c6c267adf51a15a9a363d7aa5c8ea535a89115c984ac5d6bfa922c6fc44a3b35cb667f939fa6b2676ba212c17bcd25c82e8172f6a7506e8b77d82cb21d7066da93a7eb3cab8e881a24c7592bc6b656e459af33a06fc2846d71221f1da641004b68bd65dc28a59036ca678508614b15a93e74f89b8af58200d50e718dab1c41c4556cd47b43f14092ca47397243983406e12e423233c90cfeb661a32ce65ab464db58c922bb693f56553961868b064e17a11162a7f0e3ab0b0aa76b8494ba394c902c598c23721dc16c51d46b8258c635763776b922fcac747985b94c006696f18ba49d0c5eb0525cad1349745691320969b6bcff69c30851b41e66aac3353c6894ab0097b4ec49783cfe4960d61a6f94b317d488d2d04a8b42c7fb7d89d52d89b2de30336333c50895348870bbc311611f27845c7775128a9cc831966fccc06292d86b582a18c6ab2fb3cce03701ba91047227a9fcbc6f16130710756c5dc288ba92402b5b7dc90c39193737c206f3f8230261852f1694258d47c469c7452156e70634384825bc52b03e90720066b609a4102862433e2621987e23af51121bed807810501200b776f847ff615c0f594420dc29ca6573276559c1c84b0723569dc2a76728909d9d1279a8c240a3979b0b44003687a412389581b8ebf0ccb06c797f7f5815ccbb434132ed5f1340e2c669430b13a709f7d1612af876454f06ccb7841f84c60f3806d5e423cb34b23bba90ab630403a46783329707388a1f4232785d4723c993cc62284d0e35242e52cfd6981268b86f598b11472900f83333c48627d402abba59c6740b4a40abc3200b5d9e13010fb4dd6bb503548c777256e0729905a89bb386459e0b885b6e3017c94ba93c7518f017695f5bf5b99214c8555bda863fdd11d40053c0d652696286d2ba14d569915e4532132527ce1b88122640ad668a20964476db20afca5ca663c6c17156ab3cc8e4b723b3a5209d2d10767da52b2443764f91a7f3aabb35137ee18a1f744562e22385716892ca77d518c4bec578e0f1145b3241c1831bf782c760f9081a1191812790531648954163b10e6a1f02b2b9e17cdd439c6707aab0df09236ba33d9b271196a398ff0b2c9521e57b6c8833489c5328f4866c14d2cc1ce037400dc610b28cd99150404a175662102f9617205c1cbc24b5716c7b9b0e8635bf960be5b632a976156c64078cbb23eb86b7be9a2d3e12f5b56406cc51796c66a6e871deb601cc767c0b8e45744346de60bb160808210506c5779bc275940e000314f30555677689f23009a583cd6f9779c83530e5b2a5a0a771bf1376f0091c627afecac104fb2ba251c074e359e5fc44dec244ccb78423532a7eb27c8313a341dc1431035162838835c85c677a420b67c847dc6605821587c8064e0bc2f4fe6a6b22113e73519125b92b3a66f15564666023ea99273d0d5657cfe1b1b3bbf85039a8189076a3752784e23d8a802023fd0743eb03d989a6968672e53b28d579974d268132187e7bd72238639c6f2ca154d50d98c74096ec33075d12195ec32a8686d0600e45d4a7f54219b0d7a3826d193a51b9156ecf2edd6 + +comment = Official test vector 34, seed: "5da2c51b4acf488c8bded5e985cc4702e4a7bcb248b5ac18aaba529f7f9cbf30efa776e99f76d5c1686e94f50fb57dae" +entropy = d76b3573f596eb286ab5231feec7499686b13021be36cb126c7ebeb9d7030daf248c0a21ea0bb6d6f56f12300e8584d8e9a34e0e6f52227281151ae4c305fb8f +expected_public_key = 192042d43a4271e44d1546306137a4427130c86a2025bcc297eb36d3c44e7cd4b0b1c22005fa702ac12569bccccaf6ac9256a1693c8b677c5ca243b9c8556cb3a268165596fd0470400ccf5e3b56714792f7a87b9e03019751425695ad70e4ce0b2769571901c6c2003b58152fa9757922bd28a094771b0cb1dcc73741b14b402e8ab86dc0f647525c131e9aa1a9729075ebb3cdea4d31f6c3b23a5bcbf74a3c653d4c015ce5f65fd1042a137453462b8710704bea463204c463273bb71056378850ad28f37ede664e38514dd735bf9ab9b95d367c54d84ff085650ad33ebbc982a329c6fe3a516ef387bd0a0417c2655a5476f51a68cbdb4aebc53f00c11e78e5ba6692a516c076330c20d0a09f167bbfe1c956a619825a8305d1aa9ac5736e6d24145924b2409a8688b41f33a181a9e4858325140a797f2ba81d50f21af88650cd0ba8e662077708551a947c97c0a3355852a77576ca5b054d3b0b9fd973dada618bd02fff1cb59eb56b12c71b24bb1f02e27282d21281493ac7d07a20b124aac30b7bcb8c2ff24b2c927d3d62ade0357bbf7c1281fc94da2b21d10a5e5ee07a3fd9cf93e34615b871c8da7db5441020d0522c12711e1963be54739bd43949999083115988a09c6020ca88124b35c34ebfb0743b494b2666ccf5b5235968275fabcf9a054ef92833d8ec816d68c07fc53634a02ca192a411c87dd1f17ffea094b6868638716cf593b33483591e4049e4e7c65c8618b242b17d6021bf0a70c7c59bc81c34f5441b063b9a1d95481e6529602b95f874bf1c649d95a072e70a52e9252e1dd1bccdf64332345355f7cc48eb7dd1aa2f2c31ad1fd58b8b3a711d113c270a90aa2c5c79958f3907ae3ba071aa6144b88ba6c5575bdcf5331729a65d8acf3db97aca4191b72a2bc1433fb3483efff09698c291dd868275dc5a86d06d97305ba596515e434a8d956b2b73b3c00821ba055aa7541e4f35896113acfd9320fa91585f3212cfd5b023a77d7c5c0ceb746723c2c7d7417bfb740e4bfb2299b29f987698edfc1b8d7b33de2c80d0cbcb44f05b1ddbc667005b6e4335751ac281022cbcfac0a55226fa69cff845007b9a16d2b6bab3135b325b12c263a81fd423120a6fa639910159b693406411a289863736557a028bbaa23e0c984f04543e61916d9bceb4f64fd48823a4b13e4f83b43d443f62ecc72fd304f71772cce318c1da9a57a67502a1119313b93c4a66d03c2316c2cc5c2285b1e80c413b2f29c447dc975923d9100bec9db958acd7850ab0777d82814929121bb87a6f4f07880510331ee6171797bdf23850d5fc1802e432b2f51b3cbc37631c9729892b6a09baf6717e6ec39ec2b3489b33baf257c35b9cbeffdc1a1334380fc35df386116baa9bad3a0a8381c4fdfc4b1b98836f23ab923175eaf72c59d9c500e10944fb0fd701ba5142b3cc358bfaf2732d643d0b135c8f991b0c73789c465a7e1b3ea6804b5ab9ab2e42ca1e91158019306855a5767893bcd17e92a41470d721f6432448fbc370c64c3e330d83987f3a9479f000c75320a296393e253a68e0e1c05969784f5612adbaa2662459b09638202b74d8d5cbd2b01a915ab2ad06b08670546d8b76877b8b2eaa1abb3132e55d8bd5b08678bfa4243430bb4d059b58a4b0cf0fd26e +expected_private_key = bddb6a1bb704f8b530860b719752402098c84ae4809b01c8ec7583a66a3f4bc290bf2173abb41868225606d54991f5b547c2254c74391717045997a57ba534a97b3605e1ad9f7c6446ac08bbfb1999179bb8f67731a63ce1c717f30b57fd17bc00605e8e14127eb0c26e324aabd45138484a51a15dd2464440178ca7e966d4d58383f6bf9bb2a971729074781a8d978965f9a51eb2729ba8c308474d56089f2cc869b523c41c409507a671f0f3621e057662454d49c49a398343d64cca74b7822d773373d5185426b7b3951256154a7b78cb1f5049df0371b840ab21b83944fb383cc84ad9e24ff42b2731276c1d26b6120534438b029c4ac7c0739453c2860d32acd75229c63a23a7201c303032bc0a410319035d38a3c9802d41a56a8c6c2496db10441a2bcd13a81f90cda2564cc9e4020a47595a30994888b383e996115aa282eac3e3594447110c2d07774f9312d796c6b74a7634b6c0da2291458a35d3022bee048483461cfeb152e1d2ca9195afd1f9aa82131804d35e739299c539b913c54a0c58683259b3137aa464b9c6e03b0eb751999b6c5354d6171c78cbbef1b456ec4c88199764a5761d18c0849c1b0a263ea401b86cba549c712e4a251830f7b6ee16b2bfabca3ce018c3833bb881385c272dee151ac35a2c9561b3c1266855219b0c6b485e669fcbc49b24c50c6c3237aa6b116085085405115e0422d956beaff9360b58bf915654b9b887ad9733f425a5c6990b3f0223d8099bc0e95c6a5702cf5667209ace08fb4697d02dc45caca8074185f54ec4641b35bacd2f0b770fc215fdc171c98baa7ab6c0450ba6e47a838575a528f7be221c3c91f02734269a9425a2edb76cb6d077ed76040a716d39c9c87a58ad8867954c752367a905aa158e0a9019dda50a6213c260f7bd8a0a6e8cf581fb74cb17283f3a1a8aa9a0418c79a948199365a6a1045238104280ac704b33791e156a2377bc83e9b9c86d0a3d2aa3287272be6431bb4e598232312d10d03bcb13b4d838a9a624566c6a25fa44a0934ab6cc333e6d52af3ec26a6fb97615cc3c77102d1a315486bc69c555a3e8271660222a406022e8d97251308a90a15f748153c1168cb133593c1641e164c8a06cc008059c55449413c2b28667b99122ac42b8bffbc15fe395003249c676db7589d2896e7405bef8ac510782ff204454c8a0390c332ceb7a5a3123eb1a1ad0470096058358ba779df70106e24990da77aaf09705110993f16a2320a941d8865b387236cb8528babbf2d9196c15898bf71040d3ba500cb7b1ac85df11003a058d838c2652d4577306023c756ae9715136e91b20699fef425e48953fece15baf27489d929876803eb0b5764e6338bf5970c2f35d1e815bb5b0b1bab630138859b729923343c3d24922a8522e38e19868b8a4585acf14b795ff3a609d93b1a5ccab08f877c5b71ea78c2819113fb3632d5d995b02926663f2ab8e3a73dd6ab93503192e0243f2593618e3a809684bb6a31674e77802828fefea3a50fcaeb1088f7edc036cb84329c988d965071e97c1311643bb1ca2b43cc57c84cd5ea9109ae36de2801cbdca3bb6f977959578954ac17d303841d5726631663f12816edab5192042d43a4271e44d1546306137a4427130c86a2025bcc297eb36d3c44e7cd4b0b1c22005fa702ac12569bccccaf6ac9256a1693c8b677c5ca243b9c8556cb3a268165596fd0470400ccf5e3b56714792f7a87b9e03019751425695ad70e4ce0b2769571901c6c2003b58152fa9757922bd28a094771b0cb1dcc73741b14b402e8ab86dc0f647525c131e9aa1a9729075ebb3cdea4d31f6c3b23a5bcbf74a3c653d4c015ce5f65fd1042a137453462b8710704bea463204c463273bb71056378850ad28f37ede664e38514dd735bf9ab9b95d367c54d84ff085650ad33ebbc982a329c6fe3a516ef387bd0a0417c2655a5476f51a68cbdb4aebc53f00c11e78e5ba6692a516c076330c20d0a09f167bbfe1c956a619825a8305d1aa9ac5736e6d24145924b2409a8688b41f33a181a9e4858325140a797f2ba81d50f21af88650cd0ba8e662077708551a947c97c0a3355852a77576ca5b054d3b0b9fd973dada618bd02fff1cb59eb56b12c71b24bb1f02e27282d21281493ac7d07a20b124aac30b7bcb8c2ff24b2c927d3d62ade0357bbf7c1281fc94da2b21d10a5e5ee07a3fd9cf93e34615b871c8da7db5441020d0522c12711e1963be54739bd43949999083115988a09c6020ca88124b35c34ebfb0743b494b2666ccf5b5235968275fabcf9a054ef92833d8ec816d68c07fc53634a02ca192a411c87dd1f17ffea094b6868638716cf593b33483591e4049e4e7c65c8618b242b17d6021bf0a70c7c59bc81c34f5441b063b9a1d95481e6529602b95f874bf1c649d95a072e70a52e9252e1dd1bccdf64332345355f7cc48eb7dd1aa2f2c31ad1fd58b8b3a711d113c270a90aa2c5c79958f3907ae3ba071aa6144b88ba6c5575bdcf5331729a65d8acf3db97aca4191b72a2bc1433fb3483efff09698c291dd868275dc5a86d06d97305ba596515e434a8d956b2b73b3c00821ba055aa7541e4f35896113acfd9320fa91585f3212cfd5b023a77d7c5c0ceb746723c2c7d7417bfb740e4bfb2299b29f987698edfc1b8d7b33de2c80d0cbcb44f05b1ddbc667005b6e4335751ac281022cbcfac0a55226fa69cff845007b9a16d2b6bab3135b325b12c263a81fd423120a6fa639910159b693406411a289863736557a028bbaa23e0c984f04543e61916d9bceb4f64fd48823a4b13e4f83b43d443f62ecc72fd304f71772cce318c1da9a57a67502a1119313b93c4a66d03c2316c2cc5c2285b1e80c413b2f29c447dc975923d9100bec9db958acd7850ab0777d82814929121bb87a6f4f07880510331ee6171797bdf23850d5fc1802e432b2f51b3cbc37631c9729892b6a09baf6717e6ec39ec2b3489b33baf257c35b9cbeffdc1a1334380fc35df386116baa9bad3a0a8381c4fdfc4b1b98836f23ab923175eaf72c59d9c500e10944fb0fd701ba5142b3cc358bfaf2732d643d0b135c8f991b0c73789c465a7e1b3ea6804b5ab9ab2e42ca1e91158019306855a5767893bcd17e92a41470d721f6432448fbc370c64c3e330d83987f3a9479f000c75320a296393e253a68e0e1c05969784f5612adbaa2662459b09638202b74d8d5cbd2b01a915ab2ad06b08670546d8b76877b8b2eaa1abb3132e55d8bd5b08678bfa4243430bb4d059b58a4b0cf0fd26eb86d5b13bb8b72a9fb81245ab712f0d10f0e2e09b222143c420e3f2c3acea27b248c0a21ea0bb6d6f56f12300e8584d8e9a34e0e6f52227281151ae4c305fb8f + +comment = Official test vector 35, seed: "4d2239e84b052109a78dbab6d80c51a86d38248105970476b74a0b78b9cfab6283e30d5a406fae1c7f54f8bae1110ee4" +entropy = b87439fde81c9e39eebe7cf741c685785532c1dd23e8ef868b9ce7a541010f3d1646460817a0fce5836bdfe124a7448e7adf7b8ecc2652ac6d280e986682df71 +expected_public_key = 38e84df3c6a2dc2389897c3745183e08c1681b5b9f57c16aa2c12778528510868964122c1747662cf97d8b0353bf23693a70b3b2a7c8cd5c5508a227261cb7c3022058e318d3dc39e320770724351ad78010eb423ffbae6714999226895ac23735a9119622bbc0811516d617353c7f769628925bbd49629fe0aa333d1909a16c5c27604b7db0b4e602ab27987df23c3718630ba4c2846444b83fe914d840cc8ed79a85b645a32809ca069ffbb8b3201131cb129db9282b73174f8d4a14a37393552b109d2271edda8d968ac3ff67aa3374a2355c2ec895441873325db71c91020e91f19347d965f1410f606862f69643216b869673b5a70583fd1218639b5036cc11d051a13d219f3969c817326d2b60ba5c13cd8cbc9313aab478833d73716a2a48438fc529084c241bcb4fd67179d1f5494b4bac2b05a5767b9647ec8829a500d1365bca7b8ce7b75bfea0c68f8a28edb7bc4a3817c0d32c4e10169832b9abe271cb0b473aac2c3dd39ce895551a297a61f47162d97c41f051d48b62e5a8882da62fcee16eacfb89b98a12ab626e69d77ceb3b6b02878ce346ae5cf754c3f6097e0b5eb7ac80b9b8ccd9418f63e545d01c7d17a71e45ea3a6d927484d4976ca936fe392cf2052535c201de9464008c932617cad94085c5816aa41973a8d21610430ac4b3080dd480169258e65b53e340759bfb70d68b15b868c4098847901a6b255938ecd15d5ea94232b2971e3bcd56205fc6f0425f50ab880821f56c7b25f51f2412cd7fa023852cad04f2704d4103d4362e965473add3563d9b36e5097c982506865454ba30af132bc17c807309723847257c697c525e27cc570a88a1688134f4193db67eff018f54751e578483a77a119210106fd03066c403b3303ce54b39493323c4334d4a7a20aae04d8ef529a15cb7d0900fbc4236c717310246c9cba14d6874beac61b566593b5ec5887272b914ea655d254d595824288a666f10c7da583f933052f43b0b0fa59248b0584f193ad548a12a845fdf14a73a0a37adfb4d1845afe6b56ea50b00a5503cb542c254a26f456aa3286b0126350272638ef0b4a3abc56fc8d0aea2f7396d97b64c56817d58c32103996db88345d377fb7b2644fc99a24258c50730045b897ac908f7fccb81bc2b51c286899c8c499c1757c6b0a6ac0a8482159d564cdb746037a1224ca72177f79ed19a398040426664abfbbb7b7ba99906e7982b665a551881e0f02a97409a3e2acd37fa96a4f9293f786a11b21e1f0bb22cf400da06081bf68111a9bb64469487d4cbc10578106b381b8b054ee29339e1830dd613e19a9baf9a81c2b9ad1d121a47d40234bc9d4b79c2f5f165bab5a2db68c59c0737e0e4786990a92476aea44105f3c77feefc342b458e4310b9b110a8b2c01593b512f069944828a3f6a219354bbdbb1c344f24aa0784160ca704bfd89c4933b6123c4434cb9a6ce16d3f042f1fc571db728119f6a33e4a9f6981193d60be6ab916818b8e1ff9a1d1a59de8824f808043a1949a5520b675d8834ef65c1d47afde2710c6b63998d43ab47a681f0a856d166c24494081e076d5fc05b541145d3155e232a5af0ab96ecc0b09c2c41e285d350500a4f8bb32e99b4b05d558ea7918a7881bcf516457ad2c3ab72ef2e04e3a4acb85a987c2 +expected_private_key = c6389f081ca0932ab66f658046c1278b38bc42b5c4e1a7c7a51b09d8a159773b67aae1c2aa8666000c6e6a014b5c0369dff147688ac6fd48c73d783e3025c92d782a479acbde8a7548384b763a868c46178345a773a9852016b9fe765db0bbaba5751e8056b7564c53fee8040d3c0125115d323c62a3f0a2b518330b6cc4abca84f62c792d07c1e1a0bbbd7c5b9a698cb683981f8828ee69912600311a0281dbf9c6c9e69daa26a446d136e8b0310f236d7a5a49b2bc616fd346c3462ab09544998c8d5ef641e7b48c35ba7a68f25414f703fb02b501c69c58a9b798c8c76923272ed9bf432208bab30f2db45e1cdc56f6ec11792a33ec1a62b3fc992441527e63328a46003db49b7dc07f73f705ca0220de94bea4967213d612b5a03b2c16a9bd4c66e0ac893263169a87aeae67843944628e6374b5518bf40919840b8e6c64172be3a35ee5a29777c035463380203072ea50e7daa4f906d01c502560621137b91649c97417cc2d3e1677006226d4621073cb1aa213525199bbbfa78f1899a53cb2b8d00819869867a41b2f48c615efe2c8da15a4e6965bef0c4207a499a2156ebfb611478182d85a71c9f8776d28051d1a6e4a104e54615992e0595ca9b0cb2a0ab0159575863f3145b3401498949502b2ea4392c77728215f8700c93f5846a1a8126eb6b72248bd1047bbe62aa58737268428509e53575f945735e75b42db2ba2f21b24c990a847241d2c3533b10d50847c85d98143fbb2eb5138accb055a8b8bcec8afd7b5697306165af982190821a14301ef0a90c3d829ed9035430725a99c67745ca415600d10d7c29b228998d7402efc1f0d0476c4d74c34754af9a1aa1213c9a0198065378de2d023eb73b3a4bc5801d98213ab7040cb63318b8395dbad6c7c604760ca679b301ab08ef1a948a5a83debb39651310b368c736a56977f78af0916364f278a4e3973374213f7a28ba70296d1916fc65cad3b33c4e1597f818cbc489ba970680999c373dbc246740c07d97c5e1ea5aa1d627757f4467e84ab9c5bafd9ba484f1212706788cf5ac1829c7ff0a66f26c30aae327bb7e167bde95fb5829340b187162a5fde3a7cc6a0a05fdb6f26902bdb0c6c4f75692e67ab1c8b1b46a40e53fc901dd892a3e612afd1cb2cd52bc5b0c3191137e602b0a5872d3a961ef7168990b634f438b744375d75995943caaa47e3cc5dc634432b6cf2db29b637a5e22559a59971be46004fe2a40f7c330610377a5b0eacf79d85f3c86223a4c90c31c2495314748601431fa1f49abff2575410af33f7367c5540084b75d6736ecaa010290839ee2456ee16bbcb57c601f26aa104916254a689c24cae98296e4bcef8770ed7485511f55a46c75592c88d6f76005356c397eb1e61caa04bf55a05c8409e644055759a7e60c1c8210221fb97780b92c2c8aafb6b94c259a9ce6291e18a801a82456b93c221a625129a1720328f11574a5c35c3650a7b57619c61f47ed6319329f118f4c31358a26a7e9191cab61012a71b27b47fa13cb0b2c959d913a2f4bbb3d106ab695a4c13d41256a0b442f0428de78f90609a11b8cbb475083712539e1ab034903c30f6b73bb8229ed50f901b142a597e7fe48b38e84df3c6a2dc2389897c3745183e08c1681b5b9f57c16aa2c12778528510868964122c1747662cf97d8b0353bf23693a70b3b2a7c8cd5c5508a227261cb7c3022058e318d3dc39e320770724351ad78010eb423ffbae6714999226895ac23735a9119622bbc0811516d617353c7f769628925bbd49629fe0aa333d1909a16c5c27604b7db0b4e602ab27987df23c3718630ba4c2846444b83fe914d840cc8ed79a85b645a32809ca069ffbb8b3201131cb129db9282b73174f8d4a14a37393552b109d2271edda8d968ac3ff67aa3374a2355c2ec895441873325db71c91020e91f19347d965f1410f606862f69643216b869673b5a70583fd1218639b5036cc11d051a13d219f3969c817326d2b60ba5c13cd8cbc9313aab478833d73716a2a48438fc529084c241bcb4fd67179d1f5494b4bac2b05a5767b9647ec8829a500d1365bca7b8ce7b75bfea0c68f8a28edb7bc4a3817c0d32c4e10169832b9abe271cb0b473aac2c3dd39ce895551a297a61f47162d97c41f051d48b62e5a8882da62fcee16eacfb89b98a12ab626e69d77ceb3b6b02878ce346ae5cf754c3f6097e0b5eb7ac80b9b8ccd9418f63e545d01c7d17a71e45ea3a6d927484d4976ca936fe392cf2052535c201de9464008c932617cad94085c5816aa41973a8d21610430ac4b3080dd480169258e65b53e340759bfb70d68b15b868c4098847901a6b255938ecd15d5ea94232b2971e3bcd56205fc6f0425f50ab880821f56c7b25f51f2412cd7fa023852cad04f2704d4103d4362e965473add3563d9b36e5097c982506865454ba30af132bc17c807309723847257c697c525e27cc570a88a1688134f4193db67eff018f54751e578483a77a119210106fd03066c403b3303ce54b39493323c4334d4a7a20aae04d8ef529a15cb7d0900fbc4236c717310246c9cba14d6874beac61b566593b5ec5887272b914ea655d254d595824288a666f10c7da583f933052f43b0b0fa59248b0584f193ad548a12a845fdf14a73a0a37adfb4d1845afe6b56ea50b00a5503cb542c254a26f456aa3286b0126350272638ef0b4a3abc56fc8d0aea2f7396d97b64c56817d58c32103996db88345d377fb7b2644fc99a24258c50730045b897ac908f7fccb81bc2b51c286899c8c499c1757c6b0a6ac0a8482159d564cdb746037a1224ca72177f79ed19a398040426664abfbbb7b7ba99906e7982b665a551881e0f02a97409a3e2acd37fa96a4f9293f786a11b21e1f0bb22cf400da06081bf68111a9bb64469487d4cbc10578106b381b8b054ee29339e1830dd613e19a9baf9a81c2b9ad1d121a47d40234bc9d4b79c2f5f165bab5a2db68c59c0737e0e4786990a92476aea44105f3c77feefc342b458e4310b9b110a8b2c01593b512f069944828a3f6a219354bbdbb1c344f24aa0784160ca704bfd89c4933b6123c4434cb9a6ce16d3f042f1fc571db728119f6a33e4a9f6981193d60be6ab916818b8e1ff9a1d1a59de8824f808043a1949a5520b675d8834ef65c1d47afde2710c6b63998d43ab47a681f0a856d166c24494081e076d5fc05b541145d3155e232a5af0ab96ecc0b09c2c41e285d350500a4f8bb32e99b4b05d558ea7918a7881bcf516457ad2c3ab72ef2e04e3a4acb85a987c285441cbd71c18717e9de7359b920a9a3bb7f32e619806f4e4718c585085be6241646460817a0fce5836bdfe124a7448e7adf7b8ecc2652ac6d280e986682df71 + +comment = Official test vector 36, seed: "ee762f5c9021c36446706a88ef16312f4a12c725cd7afff1484337c91eda8e89f7007f3705747d29907b3fb7500e5074" +entropy = 056661b38038da4fdd7426f32a81576c73ed84843b305168a374f934e27a4e1b79238a80dcfd7c992d84b2dffa67493e669243d4fa38c46b090bdf86bc548411 +expected_public_key = be390596bab505e51b3fc147af616e0f94506635a758964b3e7cc067b80827db21dc87450fe1415ee41fca8a2b56b355fff13616622fd1a19a7cd98f5084610d1ac9f1b8a6e78cad9281a0afa5a7c2a9a87916710ec9c5b3544b76b4808d01399f219b745962536026c79841f11961b63c10c99074edbcb4ed786f7e8c3826609533e5bb4cb80f3e515299eb757c217da2806d26664f154c0cc2b4a644b224933502adf5a66f5b54cd45a71589219aac65be0623cf5b4c0df17e72cab64b91bfbd903d75e164e2a0c9e2c997f36a0b432177de617f5e6746bd82984bb9375b4a0a12e96d06045a3a984667d03d8c08cd980b59cb2b0983b13f9c53790fd43653e78255882f9b0c980ef6b062789332a6b67b2b78e9e370b78181531846b9980a8af905fef403f47b891a6b440ee71cc5d6bf3ba5c7b087a31123ab61ec9f2d0c89e1eaa7dac36613a15f147938d32673402164b001975d9c4a8ba5ce84d20b47f26eba5909183c6fe1343d062389b9b99cedd21e30d5841fb68f3450a47f4c4be5e8c413c37ea4d5ad629141d7430938158cd04492bba8aedf7477ed13a0b97c8217a300dfcb22de05449547626d21409f491098162d7ab477e3ebaf0e15124f449f08e47d8ec6847a0ac839bc5d237b3d509a8b5c44c8fb6705a467a3d4d9102ff2b6ed976ca9d856e9f257d5d586c7d8a4c2617dca73aaa65719a21538d9e6997c5637df8c5a2ab98a169a5ba8f708bba55f2c0a9463c9b4ef0c9822fa64ecc72c8bda4030157bde5073fae6a6e6f036121125dfc5a9dca1504a1225e6da9db4d0665f6413386153ae25be78b3410369bbdbd84a86c6c7bc924dd70005bec0c54e07b4adfa2daeb8265dd98bcb8968a2f683a3b07633aaa0290550665c01fdeb22398aba31140fa7494fd6a0087194673f51ac7d759d649a2fa4d7520fc67138f445287b681f5c3d1678b497129bc6624163e3515c8381e85c173d6a4cc0038dfc2064a213c557931e2e7138fa1a6bc3eaba08965bd803bd5759332cb1bbc4c41337bccca153905990970c261cf63a53204b6f8cb228d4234f08837425a82f1da9be43775df88a20a0381f70044c76b3524b437cf365cb131baa14ea6f24502336762c8e126afd009e1997b8b3bc20c246070df7b33bc9a7bdfa8ccd576925968915f186ca4a5a4934528dc75282e246b0824ef7118d39dc1f07449a218836d47cbb7365b677ec7d6222abaf33068b5730d9e674cc008125226cbc5382a76a9823db1b42976c5c90c23bc02eb7b874dff93699e6035a838b22a7126aa42d62682505f9bbc77143dca061f5c38e99652fc2e28e30ca8d62127af02186bd9c95602992e20baa636ab050ab870b11c52da19b3a68b7a07a8cfbe7bb016a2537e50464265ff6f065d7a8c30f659998a35d79032f887b4629d07bb2dc895f09ac0387cca9c5cd1aebc08a687798721f24ca43c2c5ad42d1b6641838efc2a72ef210bad10218846f25da336a4c00c4a29eac8a608f2261b8c76b18f10b7aba755771376dc7b876152f9fba5370262919511d4ad50d76aa5cd6566c29225dabb3b668608d9de5bac08320cfc3570a0ac8deb4bbf3d941f9325aaf546fc368af005caab7ac6a7dd70d90506ddbb5f53a83079aba0927bd52a68e278d3f01ac19eba6bd +expected_private_key = f75196a57024be817edc544dbd552f6b42ba121c2b8ea95e55017856a10c5905a8bb2590e63b449364802c6b438fc19eefc875017acf652a8f0d6ab0f7f5aca1f1833ed3551d37419d906d2b55123ec14d5f109abcd9382e990628bb30d882cca8665957346c3a08553c870d32f77e66348ca9dc321960b7d50b09de64178411439c021899f2b8c583762043a4508c3160544ed2264735c600a6ab43c8515532130583298a11450ae3b7c99ff559a1d33115dc2d2489934518bd52fba1cb9a019d918464b59cc90941599253957364dcca9f95a08035f8be5bd36db6b19f1f191a6e4b7fcd493b7a41c90bc76fe882aa0f3b39b6f454785c5dd1d106c80960bbe5846d90bcde837cd277a039dc22427b86a6658f97a60101665f3f69125445647f3bb2d3125c80d89aae6096a01c24902321933909a8a2925faa1e7407b3c90c8a53d958c1c83465e557ab620e53509ee8c960b3c547fea08d4ffa215742113ed9661b57ae1b30ba5768645c632de76b96161a9b6c34b8da48b75d176c2c849aad55c6680bd0863273c345c4c7379cf3f873fa5953f53b9a026a4dc120c96e279085566c7d090eba276a0928693e639b5564a59c08aeafd25915f5478dd86e938a11529bb9a2b0b83487c696e79f1fd034ef000fa502328184be42b8959d9c0683f3bc20e71902423ab14a4744e162f6a2b474dbc4a6f21fc0432ca7422cfb253d0f952be9c13125458df8753f5d551caa38bcca1625b533051c5226c8768335854e7477064320cb765ab9eb311a1859b4b5a006d918bd8508a971205e6902897cf95e0b652e09030794b46fcf7a784560c0a18b8e6334a57ec177ba56a8bb9a857013c6b9998975379bb04b540015a14a76c658f856becca363cb37997bb85b185aa0104063696f1020bd1b443419989798826e141a24a3533494391fa233cf848451cbd609d014508fe137534c42d6f22ed2cb82363c847865aa243ca993b14992572cbf5535845cc708bb09a1e8a7834c200d8036768755afab53aba85813eb859ee83efea7563ee4bc158599f0cb04033393c829aedbda289ed852e1eb1feda9484777051f967e048041ba3c313a1414d463cf3ec36801aaa1aa540deab122ab530ecaca30101a1089087311972b338b045a1637189020c3030e63f707feea9af844c7e1b20b4a5348c1a432f341bb9f598b8c0c2f6f55c4d2c2c22b187430748f82842daba92283dbc4bd20636b6754b20a7127f01fcfd4013a1155e4746dbf3ca1f34991fe7c39ed99bdf5760d39db8e6c428f2de8157be0139415aea96bcf6fab633f2257b582312d3c7acaf6a5f8e55ad699672160ca01246545059e58502e28199cd0f5505adcb91900a283f0b059f33d1a8b352010a3c815717fb3a9482c946df0c74a526353d5c9ecd2590c5050996393a02286841580ab599bfbc8838a53301bb11d5fd492af40ba26224505969d88f6b193ea42b0348954180e17124ec2c64b962a92aa9c3fe2d72f94301531c4aaf847243702bc8f9c37d64b54f20ac003b844c52417e1436d2e75ac09c313c83b8575e791a7c95d0412cc61521a6826997561485dec26ad7baa8e065e9a279add7301c5c74c5b95c1b6915ebe390596bab505e51b3fc147af616e0f94506635a758964b3e7cc067b80827db21dc87450fe1415ee41fca8a2b56b355fff13616622fd1a19a7cd98f5084610d1ac9f1b8a6e78cad9281a0afa5a7c2a9a87916710ec9c5b3544b76b4808d01399f219b745962536026c79841f11961b63c10c99074edbcb4ed786f7e8c3826609533e5bb4cb80f3e515299eb757c217da2806d26664f154c0cc2b4a644b224933502adf5a66f5b54cd45a71589219aac65be0623cf5b4c0df17e72cab64b91bfbd903d75e164e2a0c9e2c997f36a0b432177de617f5e6746bd82984bb9375b4a0a12e96d06045a3a984667d03d8c08cd980b59cb2b0983b13f9c53790fd43653e78255882f9b0c980ef6b062789332a6b67b2b78e9e370b78181531846b9980a8af905fef403f47b891a6b440ee71cc5d6bf3ba5c7b087a31123ab61ec9f2d0c89e1eaa7dac36613a15f147938d32673402164b001975d9c4a8ba5ce84d20b47f26eba5909183c6fe1343d062389b9b99cedd21e30d5841fb68f3450a47f4c4be5e8c413c37ea4d5ad629141d7430938158cd04492bba8aedf7477ed13a0b97c8217a300dfcb22de05449547626d21409f491098162d7ab477e3ebaf0e15124f449f08e47d8ec6847a0ac839bc5d237b3d509a8b5c44c8fb6705a467a3d4d9102ff2b6ed976ca9d856e9f257d5d586c7d8a4c2617dca73aaa65719a21538d9e6997c5637df8c5a2ab98a169a5ba8f708bba55f2c0a9463c9b4ef0c9822fa64ecc72c8bda4030157bde5073fae6a6e6f036121125dfc5a9dca1504a1225e6da9db4d0665f6413386153ae25be78b3410369bbdbd84a86c6c7bc924dd70005bec0c54e07b4adfa2daeb8265dd98bcb8968a2f683a3b07633aaa0290550665c01fdeb22398aba31140fa7494fd6a0087194673f51ac7d759d649a2fa4d7520fc67138f445287b681f5c3d1678b497129bc6624163e3515c8381e85c173d6a4cc0038dfc2064a213c557931e2e7138fa1a6bc3eaba08965bd803bd5759332cb1bbc4c41337bccca153905990970c261cf63a53204b6f8cb228d4234f08837425a82f1da9be43775df88a20a0381f70044c76b3524b437cf365cb131baa14ea6f24502336762c8e126afd009e1997b8b3bc20c246070df7b33bc9a7bdfa8ccd576925968915f186ca4a5a4934528dc75282e246b0824ef7118d39dc1f07449a218836d47cbb7365b677ec7d6222abaf33068b5730d9e674cc008125226cbc5382a76a9823db1b42976c5c90c23bc02eb7b874dff93699e6035a838b22a7126aa42d62682505f9bbc77143dca061f5c38e99652fc2e28e30ca8d62127af02186bd9c95602992e20baa636ab050ab870b11c52da19b3a68b7a07a8cfbe7bb016a2537e50464265ff6f065d7a8c30f659998a35d79032f887b4629d07bb2dc895f09ac0387cca9c5cd1aebc08a687798721f24ca43c2c5ad42d1b6641838efc2a72ef210bad10218846f25da336a4c00c4a29eac8a608f2261b8c76b18f10b7aba755771376dc7b876152f9fba5370262919511d4ad50d76aa5cd6566c29225dabb3b668608d9de5bac08320cfc3570a0ac8deb4bbf3d941f9325aaf546fc368af005caab7ac6a7dd70d90506ddbb5f53a83079aba0927bd52a68e278d3f01ac19eba6bd065fb6156acaac591f1bf3ce71c4a046be8c6c55eb9a84d29569bd2b144c73e279238a80dcfd7c992d84b2dffa67493e669243d4fa38c46b090bdf86bc548411 + +comment = Official test vector 37, seed: "d882ba69ac8bbc88715f1c6387531f53273a5dab87e66faa8221a7f628d2bdeee1cbc59c0e08d0add84520a3a70c1389" +entropy = a1b52d871612a1c611ae0944f9e71858f35d3bd14f20e96a931720668bdf0a6b1f135cf64b6403e103afae34da038613e2853bbfc36baafa3c6a95347193f37c +expected_public_key = 99315a88d083bf5196f65cca4541bd4ce3526e514dccaa8ed176ba58014bd0ac486056240ce06c6c182040606dd98978d6cba367eb0ec18401ed348743780ddbd277f2ba22e1b34208f215f8f91a048ca497ec37a7663587ac85f221810e64acf87478a101062535287250907d0854b93a9d4bb39cd5788be361c00faa87bbe078b26353a51b7bdba58d17e5496efb263df826a59296a13535abd799cb931fa5886e35476dfff97e82870653d5c4ba09c2658a9a22838ba0c6aaa4ab7b19699b8b27243c42634045506762ab1817534f419591b04622c650b828b3d4a66d9b163d09847bd172ba8ff452759184c07b11183665c0185e0a089c957135dce64bda52338b6492a27a1238aa567f017dffa796de84532fd5bec8fa800ff4c5e34791cc5aa02901b73885557cba188f72ab5a35b489e98ab377691033934029118a34af7d176a436139aab3ac127a8f510c8719936e8676caac2211c8292a42f274c7fa85c542b21422c5790079f34a26f0678c005818bf4981a2b4c7db780c0bd43ad55c0acdf1ae0e0761d7527813076f3174a1d49c74659a453e09c2b4468de6f185d5f3c04f2b7e59e05317586e743285e6817283ca11faab44271a4667912df262c0c03843730acc24e80e2ee0251cca86a83853e6251e3036714576b1c171a112e7a15ca215f63039aaa7632ec77880b89ef8a45cb0b3746202ace1d7221fc98afb73a28a6ac2ae443f16e6072d6b3da1a3be5fac533a9175a5f176fe131f021795f8880d320c6096ab63f53525d01b32a2ca90e1a9138e4ca72502785976bee4e566dc0cc1f3827733b0a7d00cb58b6b89c5e26d2da00429a2450e269da77c46b5c954cee6bdc0339ba357a9b9951802a255b74a4f4ca1297d124056147a0f8123eb903071546d2c22723367308601a22f199f9588734fe1241450a45fd7395df965f46574a030581cc714a50c08da03a51b367b524a2ee4e56752db9b66d9c6b07702ec23bcef798d68300859383c5baca9d8f08b71409ae5552209b5237e697ba55328a1693af7fa0ba27020de2c35f643514db292c061c8e2085d06c101644c94d17c07560811c093afe61c6b4ffb970382ce9fd25f76c6728108842b3841dbbac62504185edc32dfb817c45878189a7ac02859eca77ab445797e030e910243b121a859a05d8caa3c32fa54d033714d20a771c7cca73999f6d91d4db4683a9543d3c978f1d56816d75590642cd4aa7d9e9c709c6cb5aea8832d7c84c576afbc837b6615b8290078e2c0ac9a8ccfa8338b36649b9f7c41d0064dca53b8fa1793cbdc8f7b75306f19c4127a214e5532884274646b91f49a1e36a3b42cfb90b27425d2645c5acc2482289d0b4b84a6359007f23b9f528718e6c499590d6bb2a5bb674e89561ab1a48e3988927ac41d05ba143799214701b2f6d708d365be84baa60df8bf7d969a425c93452a0277f218790c80c60b4b59fc6131e7865d1135ac84a6655507c1d98f6665c932093d61fa578e7acbfdf49f2e15c138bab4152c005ecc44fec299094a285ff50b09388b6ac3972911cfb8ecc9f0ea58761741ed23ce16fc02af5a341f65043f0802c0353d987c718fb72d3d922cdc861bb6a8ae003197c8f9c878a367c021db7e9273fe2e03a2716683dab6caed5c770f6e7984 +expected_private_key = f8fb5ba9d24c8681558cd13593f0cebb335b6f65bd5dda6de6d19e09f15165051f981ac6472b263cec43883a79149707093066fc129ae148b04f860c2df119f8a51056eaa5dfd89bfc564226e56dc391ade1cc2a1df58edd4572c5a147bbe21283b97f1b213bc276a471b63a7df1cdc86c7a69a34ed17a425b37aef969c1cd079529ba29a2e2c3412c5615e23523f3124c00c778752bb9b3677b90885cc21b0e257bb7f335fd53928b737d19da3b3208219e6c898e96b45f801135a09a1425a0986c597e2b4042c1a4e6d7a4d0e30e729c73f2bbbe85b579c3c13a34344a7403b95d425936486c3b602804c08ef6f5ab22c400b9523ea3345abfe666023bce6a1b63a872c33e3aaf0ccac2c40a4d5a48107d0c7ab09001ea67ca6f4c1fa7137d259c860d032c396bcbcb4177f82439852463b640855ce604f91c8f2e4a0899b2102c6059dc077d5ee6054355c546c2148077b8defbc313c71f1a420dace126b16c21e40064e2522f9e224cc8e3526b1a99a2f4a81efc2dd3609043246d461c7c1af025b56a9c7e72adea57584cf044c2f0bb60352c32400d1631c034572ee46b71edbc0334031aed7bc26af543028c3918109da52a6abf3217a2219c0607ba9edab5b4daad5ec7948393c4a670c340688541aa713b596843e5ccb9616b54e92610539bfd39159fab36d4928ee9cc8b1291ac0134257e242faeb595100ac113ac416ff517866021b550b6d063512dc37477117d025964c95c13535c2f09a96740037fe1846efec4446ec03f93fa6b6fd8b539f0196444a61823b08cb74b7520618c08324f0667f142beb3a34c2c5286b3d159fce3b046079f07e558ba28a8893a8c94f9711c227fac6900114c8bb6aa5369b059dbbca008482a1843b62a1b06c68c6b2f40bac6f02b6cac1633055a178a396ef35f59f1a76543953d3b07e2b8be217c5d5b1a82f9c080f4119d22275958026280bb8c96626c1d0baea6658a29546e09418aaf85a121f8647cb4789484bee0189b9ab10852c397a2e25b9b15b71ef17440dc3554db740289ba05111979614aedcca79699021f4bc3a4c68b39d0256d88cdd7a24e3ac31dac35388720671a12a765d705f8429d0891c3e0d8062ad45a0b882bc53016dfb007d1c550998963d7e12fa51c7361d86156ea3a8ad7018c627a9ea18f9d3787ab3b88a27b3f9443aa87ab75eb1364a4c66c50e8170892a08fd15cf2913749d0c61305c4de45a1ba2550009726a0873c70049705009dc8327be3610f61f9bc60a26d14dc0c3e67cdae4b5ac0d5a0638804d6c6b4ceb351f0c19f0974324cfa28fab704b4677aa3f2bf65686c22100b74cb9ab5f7215452cbe8d6909754304573a9314b3c8362cfc34c6302b3cbd5dc482e76576fc5900b367016c03a860a88744928cae55413231ca8a5008d210cd2e317d1bb6bc8624ecb83002e66092d8aa77fa0c6766532178a8cfb532c70f1114e5156e91486c3c7658e2a22cf0a77873c944a5a4bd70ba1686146e18b328d30813c9850c3003698c5afa2082b3425c785200596592fbfd7b2ad5568f9d278fa24c523251bfc966a69ca882e707426563d2e099295305fe2e2a96f968a92e9423dc4a1f6662f68299899315a88d083bf5196f65cca4541bd4ce3526e514dccaa8ed176ba58014bd0ac486056240ce06c6c182040606dd98978d6cba367eb0ec18401ed348743780ddbd277f2ba22e1b34208f215f8f91a048ca497ec37a7663587ac85f221810e64acf87478a101062535287250907d0854b93a9d4bb39cd5788be361c00faa87bbe078b26353a51b7bdba58d17e5496efb263df826a59296a13535abd799cb931fa5886e35476dfff97e82870653d5c4ba09c2658a9a22838ba0c6aaa4ab7b19699b8b27243c42634045506762ab1817534f419591b04622c650b828b3d4a66d9b163d09847bd172ba8ff452759184c07b11183665c0185e0a089c957135dce64bda52338b6492a27a1238aa567f017dffa796de84532fd5bec8fa800ff4c5e34791cc5aa02901b73885557cba188f72ab5a35b489e98ab377691033934029118a34af7d176a436139aab3ac127a8f510c8719936e8676caac2211c8292a42f274c7fa85c542b21422c5790079f34a26f0678c005818bf4981a2b4c7db780c0bd43ad55c0acdf1ae0e0761d7527813076f3174a1d49c74659a453e09c2b4468de6f185d5f3c04f2b7e59e05317586e743285e6817283ca11faab44271a4667912df262c0c03843730acc24e80e2ee0251cca86a83853e6251e3036714576b1c171a112e7a15ca215f63039aaa7632ec77880b89ef8a45cb0b3746202ace1d7221fc98afb73a28a6ac2ae443f16e6072d6b3da1a3be5fac533a9175a5f176fe131f021795f8880d320c6096ab63f53525d01b32a2ca90e1a9138e4ca72502785976bee4e566dc0cc1f3827733b0a7d00cb58b6b89c5e26d2da00429a2450e269da77c46b5c954cee6bdc0339ba357a9b9951802a255b74a4f4ca1297d124056147a0f8123eb903071546d2c22723367308601a22f199f9588734fe1241450a45fd7395df965f46574a030581cc714a50c08da03a51b367b524a2ee4e56752db9b66d9c6b07702ec23bcef798d68300859383c5baca9d8f08b71409ae5552209b5237e697ba55328a1693af7fa0ba27020de2c35f643514db292c061c8e2085d06c101644c94d17c07560811c093afe61c6b4ffb970382ce9fd25f76c6728108842b3841dbbac62504185edc32dfb817c45878189a7ac02859eca77ab445797e030e910243b121a859a05d8caa3c32fa54d033714d20a771c7cca73999f6d91d4db4683a9543d3c978f1d56816d75590642cd4aa7d9e9c709c6cb5aea8832d7c84c576afbc837b6615b8290078e2c0ac9a8ccfa8338b36649b9f7c41d0064dca53b8fa1793cbdc8f7b75306f19c4127a214e5532884274646b91f49a1e36a3b42cfb90b27425d2645c5acc2482289d0b4b84a6359007f23b9f528718e6c499590d6bb2a5bb674e89561ab1a48e3988927ac41d05ba143799214701b2f6d708d365be84baa60df8bf7d969a425c93452a0277f218790c80c60b4b59fc6131e7865d1135ac84a6655507c1d98f6665c932093d61fa578e7acbfdf49f2e15c138bab4152c005ecc44fec299094a285ff50b09388b6ac3972911cfb8ecc9f0ea58761741ed23ce16fc02af5a341f65043f0802c0353d987c718fb72d3d922cdc861bb6a8ae003197c8f9c878a367c021db7e9273fe2e03a2716683dab6caed5c770f6e7984ced77d358342759291c2bd225b0bd82d659d28a24bbc5eda8f47975b780cd1291f135cf64b6403e103afae34da038613e2853bbfc36baafa3c6a95347193f37c + +comment = Official test vector 38, seed: "6c3aff39f5d097096d882f24717718c8a702382dc4aaffd7629763fda73c163cf084807bbb0c9f600cd31a7135f48aec" +entropy = 952b49c803d6d6fba69f4375adce8594847a00bcae2179da49af2aed0423250262d7033947ae42ca53522a65fbafe18d3bc3e0cb66164e9a094fe4b44d8977ed +expected_public_key = 2e7240107059c16c3eacf4a1a8342b73911db6a51d3cf12bb168229a1b29f7c334d0d1ad99932f21babfd8153bae937fdd2393d9748518f12689ca7627a1041d868094aa7440c6724b4430ebd20776b602940c9d1fcb5a109978573434da891962b645002508e46992c0c148f5a039609826baf5834ba7271c443b69dc5110c4b7089068d16202cbab2e1e4525738a19c8315fae806fd139be91f4c1e192a2c04983291340dad4018a8a83c27a57c622408f933a51b7618148b16375a80e0a901f10aaf6e7803cb2a693abcd4ca8bafb942086f42f6b743937098e3d2a607f212f766603c9d89accf7ac584491f230bb1108b1465b865f824215d79fed2525d7e95c7976946e22a9e6510afa2a9e8af29ddb65c47be8820561661050b70ef3b7bb249b7fd0cedd688c37d7a3de667626c2b389b38be066089405703bd51fa32199e9c83d5265bd62a2aa2ce521b69973a18777e32151d3d5ba1983c8659a79ac978ffa15ceab733b49ea8f7a853d4b06cafdfc64c9d00e55d814536171496037036a078d026164d7b07e3277b7ecaa770b06dd291b9ad29241c3bb43553bccf66a1dd81fe2e2bf79f1a21e1539d0bc517a9ba8ede2c39deac4cdb7c65ff96048461ba2e350017095a35c1bfa25c242b000affc8af29495a2d349133c343d680eea815cdcd89c4fc283cd5136b89abd473b4aefe2228f4cba5e0c10ec7a1083833735f081034aa7bbf20c11319ca263b52262096e505c45805e73619e2ceb242e559883d20dddd4120f0c9e49f4995376284147cc2d2a96a046bdb3f56b6dc1889976ae1ed732eba43af5941831b2202d6091c16b680001a82d98ccccec212b79b5a884756c75cb2545316fc072d903c670864d5a13534e545d836276ee594d3a7841e5f91d6b738d97e73a7274671d6470cd2719b0515fdd67c6e4969ad213254502c5ac9ba23c264a375237369b46d0c45745041a20511459d3321ee9b395978f2c575ebe1c6caed03afc7027bc457e03f527b0ccbaec71850e0955f0a2b54d9bce69b6c8fbf90850168adac411ad5c973b578424c55ce01b3ec2825b0085232469968b8a96fe7b9f26846f789323a15aae6397242a712cd26b0465bc038a4aa30dac42c0036c062c21c3a4178a0c92b8992cbd54a6044b789d943f1eabb0bb24c3d0d4c067251779374579b27c84fb435e6c745334485fba84676750a27c520f79366d008e4be93fe8a958e8d06b8ec323bfd5bd01e86b1f13302eb17aa3aa8fdb3445ae5775111b2124e2a35021c04945661b2c510a29264ad855836c7d8eabc069011f8814934bb4b32176c0b59b04c5fb6cdbc8bc41b0bcfef4423635c0c7ac43e4d5286c74920ef37c951266b92074d239b2bd0a0d6c096141fb6a718a213a3387d75b927ce176169738abe0cfa6b68d3b064157c3cb03c5793a7400c1960351b059e43a7f1b28ae5073780cc606f7e40aeb458dbe95a31c23af7e760001b0bd601647ad1805c4329e46f490575ca928fa908b5a30fd31520c61c9f1cc5ef18578b350a929164de33b008338180ce41c45327152090a91b8c9b3928c2629a48d78abd1992720e841a52ca91a15a1c7953d18b4ba1f990af34ca408ba2d449f94385651c3b4c0503726cafa118167110e848fbed995526b458d362061a1 +expected_private_key = 5b47b61ce23572623c431a498e378c6b71a5cdccb58e225310217f6f2b1b7140b97349b965d9c95332a66d7a9879f24c479851a0ea485254755db347bff9a06d00502ae3a910c06771aacc0a51add07a291496ac10e2899b6562dcda7b6b9b7eb516335d222c43498859d87a44cb8ad589a06e609fc5798ca06744051533d5c6154608c790a8abd776cbd2984b57e1cf4e0638c77915dd89249d3c0775b45cc159b44bd32f49a51a1e398763e35dbf5c6ccb100929c9b91047a1ab98a140e00f77f5076310c33179a8c80449591c4156c244eb8c8b3009328139c18f8c59e1961a2b91c840d552c2e4b3897265b16c28de6abb72d218ef713a1d179cea38561663c9bf21b68166aaa45748316877a9a5bed6f5230d3015193aa5a9e1b34dc6576b57692b543fff321b14879a24728de3d6a297c06ac6cb28ec3482da708abab28fa815272624af6e26a879f65c6432812470c52de01edce20681db43a967069dc9bb34f9c540a21b8d7322a3675fee059f5f655cfc480ba31255e899c48a7c25588303d67055434702ecca24d31a9d69796df408328912ada084ab122c6ac53c3c349c105270c9aeac73923614ea9129ce4c9fd8d78bd33045d8557ad3d0a698b34a7c073b93783670662f8558375647747905402a6aabd1698d1d3b430ce8b5ee8665771a34ca73b2dee04497c997c9e74044230690354b7af23bd94aa02cf599554391095c0d53f5c1db19ac33189b2b9aa3c48bc4e09bcdc5029bd3b45a370c59045abcbfb257ddf30085da053056c17dd0b5ddc6494524875ac189e6c7a7cd483288f03abc155bc2022eb427b7d5093f4616c124b7c29a0043181c7bded83de7592511e3617a75652d4568d7c7b3ab2b7464c514ce6ccf54fa8d73e61834e534966620dc59196ab44b736151a27c02e065a000611542fc296a69a24989331ef980f708142d7274ea863669a52039b59d48b90bcc75ce4b434f5751cef621cf3a29873c003a57276128e70bb4aa5de581834946741a8134890491d37b6051959739fa8eb81c6947141704683124136c1c382760e13f00c59ab5bcbcef98b973831b91ba87fec02216619f012859faa6b01b1649786b626348182398226cf794095681d1c25800b18bf33cc71123898ad2aee46905a8118916ba8651328a051697f8041667789c874394e96a0efcda8998d420684217952496ae9117c6c618513c147148979f5c8bfef8c7ca1836430c3cfb66b17cbca63ed1a2157961cee600617157aad986b5021f4f69c3bee6ae181a076c3cabf076903bd59814352f4ee2c04a138ae0eb018a2193ced58981caa3bb032317499e6ec4bc5cfab8b389467ef295dbe7305bd1cd099364d7596b1801008ed734d7775c5606af0f1a2978733dd7f55556dbc5fbaaca5a95bbc287b6d3a43aa9b78ad10a025f46af233512b126230cf928fac14d753160bad961bdcc4d5e1b4edd241609a0adc6b3c6cc9660e5371d6c1655b4465f16d535adcc54f8376371b758cacb81d84a7b3e6b8754b430c0753982a89d5ca8b2f4244aabe0bf05f75ed0b092f332aa83808f897ba21906af25e68a88b61a357a10ece1977199203e465ef9bc020e145f6421abd11b182e7240107059c16c3eacf4a1a8342b73911db6a51d3cf12bb168229a1b29f7c334d0d1ad99932f21babfd8153bae937fdd2393d9748518f12689ca7627a1041d868094aa7440c6724b4430ebd20776b602940c9d1fcb5a109978573434da891962b645002508e46992c0c148f5a039609826baf5834ba7271c443b69dc5110c4b7089068d16202cbab2e1e4525738a19c8315fae806fd139be91f4c1e192a2c04983291340dad4018a8a83c27a57c622408f933a51b7618148b16375a80e0a901f10aaf6e7803cb2a693abcd4ca8bafb942086f42f6b743937098e3d2a607f212f766603c9d89accf7ac584491f230bb1108b1465b865f824215d79fed2525d7e95c7976946e22a9e6510afa2a9e8af29ddb65c47be8820561661050b70ef3b7bb249b7fd0cedd688c37d7a3de667626c2b389b38be066089405703bd51fa32199e9c83d5265bd62a2aa2ce521b69973a18777e32151d3d5ba1983c8659a79ac978ffa15ceab733b49ea8f7a853d4b06cafdfc64c9d00e55d814536171496037036a078d026164d7b07e3277b7ecaa770b06dd291b9ad29241c3bb43553bccf66a1dd81fe2e2bf79f1a21e1539d0bc517a9ba8ede2c39deac4cdb7c65ff96048461ba2e350017095a35c1bfa25c242b000affc8af29495a2d349133c343d680eea815cdcd89c4fc283cd5136b89abd473b4aefe2228f4cba5e0c10ec7a1083833735f081034aa7bbf20c11319ca263b52262096e505c45805e73619e2ceb242e559883d20dddd4120f0c9e49f4995376284147cc2d2a96a046bdb3f56b6dc1889976ae1ed732eba43af5941831b2202d6091c16b680001a82d98ccccec212b79b5a884756c75cb2545316fc072d903c670864d5a13534e545d836276ee594d3a7841e5f91d6b738d97e73a7274671d6470cd2719b0515fdd67c6e4969ad213254502c5ac9ba23c264a375237369b46d0c45745041a20511459d3321ee9b395978f2c575ebe1c6caed03afc7027bc457e03f527b0ccbaec71850e0955f0a2b54d9bce69b6c8fbf90850168adac411ad5c973b578424c55ce01b3ec2825b0085232469968b8a96fe7b9f26846f789323a15aae6397242a712cd26b0465bc038a4aa30dac42c0036c062c21c3a4178a0c92b8992cbd54a6044b789d943f1eabb0bb24c3d0d4c067251779374579b27c84fb435e6c745334485fba84676750a27c520f79366d008e4be93fe8a958e8d06b8ec323bfd5bd01e86b1f13302eb17aa3aa8fdb3445ae5775111b2124e2a35021c04945661b2c510a29264ad855836c7d8eabc069011f8814934bb4b32176c0b59b04c5fb6cdbc8bc41b0bcfef4423635c0c7ac43e4d5286c74920ef37c951266b92074d239b2bd0a0d6c096141fb6a718a213a3387d75b927ce176169738abe0cfa6b68d3b064157c3cb03c5793a7400c1960351b059e43a7f1b28ae5073780cc606f7e40aeb458dbe95a31c23af7e760001b0bd601647ad1805c4329e46f490575ca928fa908b5a30fd31520c61c9f1cc5ef18578b350a929164de33b008338180ce41c45327152090a91b8c9b3928c2629a48d78abd1992720e841a52ca91a15a1c7953d18b4ba1f990af34ca408ba2d449f94385651c3b4c0503726cafa118167110e848fbed995526b458d362061a12fdb7c7e39ce1625c20a13a1c91aa5909d8b03b064d00877dce2415020370c7262d7033947ae42ca53522a65fbafe18d3bc3e0cb66164e9a094fe4b44d8977ed + +comment = Official test vector 39, seed: "cf520b92a2e3677afd003ec1ec6ef136a709d78f828c9c0dd4946efbd451c5faabfc83ca66f9d3d17ee4220553b7a69f" +entropy = 3c815e57e9233e975fa1630208aab206b71ae0db37a7a8789ac683d9f9b2d29801c8e376fdb140ee343106c093af7cb149b316ba79446ceb4e5e0cedb9b164f9 +expected_public_key = 45fc2d1bb1872a743763f12d29d937f3f2a41d257531c1172af59c90806c7e5a15972a8cb9dca049bc92700a72b4fa5a739033437c946ee062aa86c12103b557822a08084be63c4c74d1b92608c3b02c6520b2991f8499470114fb659f89a937a25897faba6c0dd142d8d4868ee3c6483128241b287cba0ae49430dd6a28d1339605a4b750e6029f73baa1fa8ce6219c36a40e5542ab45cc781a613fdf416502743df8cbb3c4b864d0b448a20c0b0942a829601f2b131fb038587a99b80ef44033061b2e4b8f9a12c3c03193506b62aa1c7ab08569c7d0a88c8a098f87061ee41000fd202e2c3af4e625b34787bce55f74aa58eeb9124de7089e51a581893354b36fe035ce5fecab74018ee6209b75fc2702429c932abf71d89b8c82c047d77725cb6ed98608f2ba0b3462c1d428352c6376f6269d9869aff4bc821870b63f2284d296677b6145683ba6282c12c72512ef015eb19ba86b3571be7438f17311655c118a530266bbc6d9d10636b6347c630607864949dabfa558522c100f6c7941a076109253b5ffd76328c99590f48b3fc7ae7a5847cc958fa5523f540ab54ea0a302174e6c401341759c121b355c9280d2ab6a84f9028634bf7e3ca90679aca188667d5086df35b88d95b262e8478561a414b627f43b0fb8731d3bda73c6396594694a9f7024cfd55d3ab88342516cb34a922e6835eb8c067bd35ce0b3711d7bad2d7529464c493adc40d8ec8679c903e8984850034ef4a828d3fabcae9474f7278cbe79c8e5c1c948b94798d4c68da8255237ad8b0b38cd4a8dfde5abf6b2cfad98a677a8c40e208206774661490c3c212d23327a46a23dd6855275b78d29830b23900b13c638e31b4745a917d4fba95a04956c371212e475271ccf94f6295346118806316ec01d08454b0cd922d6f1a3e4a651a7a931f380042a09244bb39973ec5872c28c8d41c4bcc72ca4409a363c49995c45c7909522128c03814612214a5eb01527b67bce4463202cc14e31225b36a7d7d10e26966beb389877ac0062f9172c0517ca8676f5a44a10106fe75a31a4aa86688c075918a4d8a7461dcc1ea1193913c259e3b44c2d976ec67613468358886a9108acc7d0c6a25f5a991d7c53b8638c24a585f07aa074b5a2cb514bf7178e14112c8b31727a38bdd20a5ad087746768957f837179d50d25f6697f4a88d056451a593e385b74de8a01cf0244e70ac9ae36b2d76cb91e5419165c6507d141148869d6676f28645653bc78c96b9e7f382cb0c6768e2968c513c7ab076928781a6530cd3ae3286b0c681743a58d9c524be5120c880605bc139f672e30174095932a000800d58a926cf40873c44ae6096940a3bdb6e7966595bb3d23c9915bc7e29aaac9f0344c9b6bbb25cb0aa084f616332197295163989e1448784082c327075dacbb7d912025e4786710b0c7452f827aceda11a73ada09c3e54b404419dbf3a8f8b6096a73528dc50fcd230155a97a614663174683d1095d97b7c0e994764df2095ab7bc029b7dda3799e5a88ed825cf1674aee01bb0c17a5c84b8ac1ba061302ba9cc20cd46f769e1021c03c43ab07bab1bb0c7f3426d252a15ed5a27854ca7b177a6f79502789842e229637fd32a677f68dabfa371062d8b8ce9dfe0d90bf06044ac3a840ceb626b16e134 +expected_private_key = 2c021f19322a908456f1677d31dc8a4a2a734a2571d19c421c47aecc507c3c53a931113290b693afd1b7ffeca87cc90b0419c48bc4359d64146d9932beec78766408f59216c692228fe59b768c92f4d5a3ccfa6a35599da2695766d754c1f682ab13c8966997f37a74985551c36828224c177d3a3ade3c2c20a907c830bc32906df70b021b47c38c606ef951acf7c1512ac15fc0d761c9057a7db1ac6c56198f9a8ed2f67a0f159a5ee6612109254d57745736cc3cdb634f5658fb684d805888fea8582135bd4890343a545e4e0a6f0c130b8539125ab06358f8bcc0a4b44a7a4903d018c960ca45779bb564a30cf1b340b4c317cb77da50bf899c10b4676f3c295b90e93c2540a9e17c3bde560f351c81c58b545306449585718e9199a6302e3b0ca1e737c07a4b7e21ec154604590d415f4b82778778905360cc2e49be4b08c94a744995f18959d4492f0b7a3f53a98f9a8d914863b9583d866712fe583fd2677e8a3b8ba5341902178824f4c41ba21cbf7a4b666acb413c31cfa744b9a5405efc5b53a2c64481270484134753c1b0407e23b95850a8c026843643e42b329bcbb7422df5cbb968b04f39210a4ec959e1b5c9cb32a180588b9baa690f7459b1282d9e9200bd1a0e910a3efd948c3bd0af04d866edc61c866b48d7aa22e6fb5025c6892c66116e271b998b888e0481abda592c8b36f7464704fc22c51b5ba995928fe03594a8073ad790798aa304579822255e61d11557092bc9b5bd4c94068c60b2940c180831c5167487b7538c9ab47dc268215c8c7f324563d3973fa73bbaf07c771b15070d880478d2693535425fccae0f8272cd7224f3795a70241d480425e4a74922309906e1c11c5107e9f34fac3536354100f911234d55769b763cf2408b9812aa6b7c2601161953cabf0733cd3af819f5158a136621fb159db3dc6c3f3220adb8acaa8cccb7cb2ee583b9909c903ff43612d178c568aa7e9217e345cf4daa9aaf17cca1b5a4a5a73ce9b0581e73bcc019bce2b68c8c273dfe588ba0861c5a73a6edd9bbdd66935af04e5ea81a55d62c9a8c51b3e6a402587ff4f837c16380aef5640f333db08a6cddb425cb4189ed773d8adb91e2708f12b78a0105bffee30873c1b6d5d5469f6464705741ec4310a8185a1553372f6091c769109f19527e95a6802c2a49127077b21126e7531a5941298bae199309cbe00d97513bde1ac82292ca1a76957d20a306932f83994a00f21d89519e16138f0477667f338a67450e1248a682142a79d9ab6b58b88754362a32af3402d062a554ca8a40da0481ba721a9b023da71987b744c6b9ab5e80830f8b7200241007f0eb72ae3694ee92814df4b1db269f4404cd0c77a844d2b751f5a0bd1cb93d61a628098d0eebc941827f77139831575b98e47b7dc3676d887b56d0ad96bcaa1f280049776339cb3fef6489dbd26205530cb08c53fb0839b49909864ab06b2c3fe15957dda96ccda90c51904df02c6a1e5846f892a1683838b9760ab900664a1a039b6a1c75f9c4b05340ede9881f48869dc881da0191e24bb5aec448ea052e57e69edf254575fca87a1b50e6d39520630688b04328a70ca1a871ffbcb0a8823dfd4747dc859b45fc2d1bb1872a743763f12d29d937f3f2a41d257531c1172af59c90806c7e5a15972a8cb9dca049bc92700a72b4fa5a739033437c946ee062aa86c12103b557822a08084be63c4c74d1b92608c3b02c6520b2991f8499470114fb659f89a937a25897faba6c0dd142d8d4868ee3c6483128241b287cba0ae49430dd6a28d1339605a4b750e6029f73baa1fa8ce6219c36a40e5542ab45cc781a613fdf416502743df8cbb3c4b864d0b448a20c0b0942a829601f2b131fb038587a99b80ef44033061b2e4b8f9a12c3c03193506b62aa1c7ab08569c7d0a88c8a098f87061ee41000fd202e2c3af4e625b34787bce55f74aa58eeb9124de7089e51a581893354b36fe035ce5fecab74018ee6209b75fc2702429c932abf71d89b8c82c047d77725cb6ed98608f2ba0b3462c1d428352c6376f6269d9869aff4bc821870b63f2284d296677b6145683ba6282c12c72512ef015eb19ba86b3571be7438f17311655c118a530266bbc6d9d10636b6347c630607864949dabfa558522c100f6c7941a076109253b5ffd76328c99590f48b3fc7ae7a5847cc958fa5523f540ab54ea0a302174e6c401341759c121b355c9280d2ab6a84f9028634bf7e3ca90679aca188667d5086df35b88d95b262e8478561a414b627f43b0fb8731d3bda73c6396594694a9f7024cfd55d3ab88342516cb34a922e6835eb8c067bd35ce0b3711d7bad2d7529464c493adc40d8ec8679c903e8984850034ef4a828d3fabcae9474f7278cbe79c8e5c1c948b94798d4c68da8255237ad8b0b38cd4a8dfde5abf6b2cfad98a677a8c40e208206774661490c3c212d23327a46a23dd6855275b78d29830b23900b13c638e31b4745a917d4fba95a04956c371212e475271ccf94f6295346118806316ec01d08454b0cd922d6f1a3e4a651a7a931f380042a09244bb39973ec5872c28c8d41c4bcc72ca4409a363c49995c45c7909522128c03814612214a5eb01527b67bce4463202cc14e31225b36a7d7d10e26966beb389877ac0062f9172c0517ca8676f5a44a10106fe75a31a4aa86688c075918a4d8a7461dcc1ea1193913c259e3b44c2d976ec67613468358886a9108acc7d0c6a25f5a991d7c53b8638c24a585f07aa074b5a2cb514bf7178e14112c8b31727a38bdd20a5ad087746768957f837179d50d25f6697f4a88d056451a593e385b74de8a01cf0244e70ac9ae36b2d76cb91e5419165c6507d141148869d6676f28645653bc78c96b9e7f382cb0c6768e2968c513c7ab076928781a6530cd3ae3286b0c681743a58d9c524be5120c880605bc139f672e30174095932a000800d58a926cf40873c44ae6096940a3bdb6e7966595bb3d23c9915bc7e29aaac9f0344c9b6bbb25cb0aa084f616332197295163989e1448784082c327075dacbb7d912025e4786710b0c7452f827aceda11a73ada09c3e54b404419dbf3a8f8b6096a73528dc50fcd230155a97a614663174683d1095d97b7c0e994764df2095ab7bc029b7dda3799e5a88ed825cf1674aee01bb0c17a5c84b8ac1ba061302ba9cc20cd46f769e1021c03c43ab07bab1bb0c7f3426d252a15ed5a27854ca7b177a6f79502789842e229637fd32a677f68dabfa371062d8b8ce9dfe0d90bf06044ac3a840ceb626b16e13486bb11e7d9c1368fbba34ce3a2f169c2464ef5fbc11f73843c456467b6cdbd4e01c8e376fdb140ee343106c093af7cb149b316ba79446ceb4e5e0cedb9b164f9 + +comment = Official test vector 40, seed: "197e5d562de7e01bed4fc597db28dc6efdf0179f3a5bda5f94caa39d67bae730540534d59a7a06c8448f628da8b7859f" +entropy = 588760826dcfbd36d9abe6ae44a669bb3ebba6a218eab69e30f18a3bd536576e0e860576285483bb5fd36e2f944d32c4317bebc1e441470c1372046a790d79d4 +expected_public_key = f6446774b30fef5b426f563962cc29ff78ade42b497dc3b970f1b848b1141d7a5f45a37c25b125aed61863f22732a06128bca08efc8cb176ab6343239b572e1c8c138d829810227afaabb81cca0a73131155377730a120558231e8f8a598a2b730578edc7800b0d6c5627530ee92930eb2b40a9888cf648263b688f0a12e08f004f4bb449a25282029cfb73c32f8d31229d0a58e6aa08698517fbc5f619837ae3331cf763631d305e88c8f85413e9d5420cc282bad24a783011184011a79a3b305db5b3032b75c55907ca5c7f839320028305c439c39484895212b1e87925999681819416dcbc7ead45ac2b1262154bce16866c04561eba2c9ec6022b07a57a67c7b901b5da3bb8025c7585c86bda0810c442c39374040236a82884199159729834663d3b1967df9955de3a387d93d50f5001924c4fe433d016bc2b6614f2d3ba72fda226864ad6ba5b8c31681dc104348ec2b29c39fc9f567cae17bdf1c6e215c92effc60e2d6a3a3106bced0bf301b542f7987b582b0780b6d398631eb8559459b1db01a0443100dcc731291c737499c2f86452394c0b6662401fb57a4db232e40d1b0f2511ee1eb15dbf7b603e2a67808c064fc5103fa7c9c954fcd12bc619582f82590b323698a328cc14acb87c217e39c309421c7e6ea15ba6c3bd8587126c5aa02c26308c9912d7262dbb91ac2c2cdbb9cb009a3ae10761771740b2e6558fae775deba7a66086859270ec07b584334900c278002d8a47d01547dba3036336616a8c12415b86a1423a6c9aab5f085c7fabb6355b3db4023e47c7917c10c284333110bc978b2c08e16512ba95a07237cc35c97bfa51bb1b25e30750e65664377ba49200aa6e935b4c7451e547859edf03bcfc6904df05220c02f5e576604a873ee82b7693b962853b5522a5b0986348da63df86a64671737c17201ed556e92acb56f065eebd31bef43ca85db1feac395e19110a2f0c5b90459838cbf779c27247709765569e5a649bf160301003169e4ac2baaa4c4697f25869ab99179f9f792d9b19df0c148df7c6b9aa20e63426697d83a6e33b35f4c7e798175bfd73ce60a050146a3d893c4dc9b2fabf5960bd80fa0679433bb33bb91915e93c1eb2aa16cb13e0b9870fef99835a674b1bb76946bc4064cafde3063498ca30aeb3983f5cdb3a6b9c4970459d969f4d8b6ba27755b6ca8fbca178dec28dfeb2ac03318be7002a9a4cd7b1749a7fc7f09a6b560740da89baab8130872510c99630f3b588069d50a9550c97f8198b7a46148fa7ac1580632db1ef49528f9125784a5bb2757235fe44e74529a7ce88e91543b2ff81d9ed78e2647aa07033cf3422d34942e7830191b104c7ed56b8951a9c8706e4cb33cb0b918387b869084386420c13b09be75d2a5e9276246b674e96bac7782541e1ca441e53ff3b9c702cb95ceab628d1617704a448ef743e8b811fe52c659cbaae22377f28646c45642a9886628c9b73c510bbfb645d4077c1d8b954bdc8b707b7f6bc4701bb1af0f28b88dd282b78b7ee96732521aa6180b6021aabb415839dc3a1f6f545c1320c58b965b62993abf6a10c18a22ce6a45539685f297b1f04a130465845d189d17552e2f4917e924cc0d2dbc2ddc739f6b876472eb12ce233ccd402ddef61523fd6fee69a88f34a34c +expected_private_key = 47a7741316be87861aec518a9b38146b43aa54a98f47e242866b8d79f731d98c754b572a2a9170a7eb4b0d73b38d6665d1e43af0b61ab95cb54879707805bd787913ee369d231c600b76949bf86366579ab62724caa1beabbb02fc945bf007cf57a225afa67393cc58804a15016a12dfb90d5a52be41f907b1f2c4fe93712f555b0ae896e85931020089642a23e4c38581d4c40a46aa8ddb3c26db0e29fa5f7a12b6ca32cd2ab6b50327ad0dd8139ad83dce676ab2dc0c2774c86a2c72a5fa2d4dcab588a66d6551c040e91ae045698ac0a1dfb95048c545d08654c1b560384561ab07bd8c61182f99c79a2267c961ae66434321e8501d474ad84aa71286a948c5ad187232cf72576f167d63992f62d3423ce75577c2052ef84019404b0e1706ba704fe3d116a518293112b8b80708c094bde829ac38e362a404beb67026ea6782362035cae099302c5660931ce31b93b665059633699ec44c28c2bd230b1942421f12388900081618bb29e315beeaa090a06ac7feda567fd1a12d1a41eba931c279acdb875d9ddb7cd9a6adbfb32239e843012a8cb91776775408316b056fbc42758772c1e53ec0344479c2791b837a6a34aa77710d35593a55e57572fa99711bbe5a83454bca7990e834ba285a09aa11666cb2b2f39704904354687d0524888cf6461ef302139b042540138e322453619b3dd715b617230e08c4585478f9996798e9b47c712f82ba45857551ea4c79b4a0577938666403174e84585e684783d33f3b701420f66d48473fc6bb627b399e90697e760783a3e09d6531cc524568def8507f0437314488af7376bf2a6bacf783b632197d8565f9456d04a8476da8cd6c988d26a56d29479a2dbb85afc18dc81a8611bc4adaaaaa440471b530053adb874db67102b6a64ffca8bf8487e18b2f7582b71fd78d85f819c24b892741a83e67585b6b1ae5ab6ad1f5cc02ab78d0ecbe01087f46ac9bfca464a4b9ca817c3a1af5cb0a6a3f1dd3a2ec06774e805e001b44c8194660a280d0d59bfeb35ebe9c943e626b98e488f8984275401bdc4959993345c38bc801b95d56bbb47a2b23f5f1223d5a0e2a827d4578948cfc5432627c9586275679202e3c970fcc980af56757912080072a4af234dd030ec481a6ed8030921691d6126839635c6b270497ca4a87d4bef47cac60752383712636752a4aa18af13bb36ef445fe653628704e4dc2cadd62839f9842f9b2c264ab4ff648c59d15708f55ae4a396d5f4bc75d20603c03cdec4252facc579a0cbd1f64a734e8350f03aceaa2734de2b486f6b93c36ac11803e564070aba97d2309078fb43768f98ef5d03b09fa10ffbb0beb3b5fe01310065508100206a640b93de87bd94a634907730e30800803b233b95d1cc7cce49c08ab143734347f3459a5be0230f9481d50b4b835a91736d6a7b351c8082a4d080967b43b0553835bf52943a380051f48c27823c5aa0b20b7b733dcb004b2a7819beba4b3fcb1f991789c2c57ca01b50523214af309fdf421187492c411c14128744bf4a83599a30b86194473c2bc9222fb4ba34108689aa8065aa24ff3559a76f759768c81a8cc5aa2a6792f3033b2437b05068bed096475d9280bf349f6446774b30fef5b426f563962cc29ff78ade42b497dc3b970f1b848b1141d7a5f45a37c25b125aed61863f22732a06128bca08efc8cb176ab6343239b572e1c8c138d829810227afaabb81cca0a73131155377730a120558231e8f8a598a2b730578edc7800b0d6c5627530ee92930eb2b40a9888cf648263b688f0a12e08f004f4bb449a25282029cfb73c32f8d31229d0a58e6aa08698517fbc5f619837ae3331cf763631d305e88c8f85413e9d5420cc282bad24a783011184011a79a3b305db5b3032b75c55907ca5c7f839320028305c439c39484895212b1e87925999681819416dcbc7ead45ac2b1262154bce16866c04561eba2c9ec6022b07a57a67c7b901b5da3bb8025c7585c86bda0810c442c39374040236a82884199159729834663d3b1967df9955de3a387d93d50f5001924c4fe433d016bc2b6614f2d3ba72fda226864ad6ba5b8c31681dc104348ec2b29c39fc9f567cae17bdf1c6e215c92effc60e2d6a3a3106bced0bf301b542f7987b582b0780b6d398631eb8559459b1db01a0443100dcc731291c737499c2f86452394c0b6662401fb57a4db232e40d1b0f2511ee1eb15dbf7b603e2a67808c064fc5103fa7c9c954fcd12bc619582f82590b323698a328cc14acb87c217e39c309421c7e6ea15ba6c3bd8587126c5aa02c26308c9912d7262dbb91ac2c2cdbb9cb009a3ae10761771740b2e6558fae775deba7a66086859270ec07b584334900c278002d8a47d01547dba3036336616a8c12415b86a1423a6c9aab5f085c7fabb6355b3db4023e47c7917c10c284333110bc978b2c08e16512ba95a07237cc35c97bfa51bb1b25e30750e65664377ba49200aa6e935b4c7451e547859edf03bcfc6904df05220c02f5e576604a873ee82b7693b962853b5522a5b0986348da63df86a64671737c17201ed556e92acb56f065eebd31bef43ca85db1feac395e19110a2f0c5b90459838cbf779c27247709765569e5a649bf160301003169e4ac2baaa4c4697f25869ab99179f9f792d9b19df0c148df7c6b9aa20e63426697d83a6e33b35f4c7e798175bfd73ce60a050146a3d893c4dc9b2fabf5960bd80fa0679433bb33bb91915e93c1eb2aa16cb13e0b9870fef99835a674b1bb76946bc4064cafde3063498ca30aeb3983f5cdb3a6b9c4970459d969f4d8b6ba27755b6ca8fbca178dec28dfeb2ac03318be7002a9a4cd7b1749a7fc7f09a6b560740da89baab8130872510c99630f3b588069d50a9550c97f8198b7a46148fa7ac1580632db1ef49528f9125784a5bb2757235fe44e74529a7ce88e91543b2ff81d9ed78e2647aa07033cf3422d34942e7830191b104c7ed56b8951a9c8706e4cb33cb0b918387b869084386420c13b09be75d2a5e9276246b674e96bac7782541e1ca441e53ff3b9c702cb95ceab628d1617704a448ef743e8b811fe52c659cbaae22377f28646c45642a9886628c9b73c510bbfb645d4077c1d8b954bdc8b707b7f6bc4701bb1af0f28b88dd282b78b7ee96732521aa6180b6021aabb415839dc3a1f6f545c1320c58b965b62993abf6a10c18a22ce6a45539685f297b1f04a130465845d189d17552e2f4917e924cc0d2dbc2ddc739f6b876472eb12ce233ccd402ddef61523fd6fee69a88f34a34c29253478090cb4d580bc2a912645bc685061e5d4437b3811eda69c865ea9923c0e860576285483bb5fd36e2f944d32c4317bebc1e441470c1372046a790d79d4 + +comment = Official test vector 41, seed: "f170583cb451d8a45d105457c02c01a33a40350616ed8515bd49067142f61efb00f07857e4fff3fe11e7164c648c76ed" +entropy = 47550e9edacb6ddce3d9ab81f6b61080dd4f2693854acb05e0ccc7a4fb6390fbf89d7d99d5c3e0d10d6ef9af054d842375f695abb28e3b8eb495100f04306e92 +expected_public_key = 5fd557f7434fcb61b199e793c5e763764c48df412acb7c756e1370cd117f8c10cafb39cbf0c8c3f5dc8da1855203d02b39647856b55c38e944617b8348d16a8221962a42398fb61978f40328c83a0b49bc843060d1711e289434db4b5b0838cd87949df5ac0727d8a528b8b5bf30ccb9e37a6664050cc5880d34c13ca42c1779b8d098c5e0876627c17a79b6bad44a9a38c56883d97cf2d2b114a1c4f1a502ab4a9b7b5398d9e73e543b860f87062e27a9fd1a2035185f0d98857b0759bf1c39a41984c8c1a1a9027944417f84cca0dd4206e9133f6eb6a989075d004accd9f57cdc928cd455443f0222dcab9a8890004c2596efeb06903b5d0af33a88f14fec760fc074a3dcdc744e9864e7ebc608a56002e483e60b8202b31377dc7f5a486d5a060733fca9836aaeeae05909c6b6b0db4531271fe4f3548bd5bff1e92160321218f963081c518874c0cbb792fda4513f7902be6547745a0879ba6ccd7c0f73b123dc605bc7995bdd14b018d8278c8c3966aa87a24b4a4bd3abafe0c8173c028df14daad39c288943eac139210392bed70c38d7af7439697be96977d23a27cb6e7de7b785673c9d1b33a081a9cd417129430c6c6300c496b04e1796c9c781e4211915162de147501b7bc55f8913c66c5cbd209ba6d115f753ba739417c8eb182200113ce17c935a0622dcbc674553b9dabcda17bdbfb4865d58143c149512cc2e74a2b508f67be8058461252d95042f8b7641e1d85161521b81a616a02110d7ea3bca4723d003a4db1673d64273b34c9432ac981a0c01dc8b8c0ed5a05d20c5331831ce56014ab0732b301ca2f8569fc061ddaa95d63667b9acc7a1ea656f821d55a31b41f32dfb3b66ddd5cd2155438db6923069430b61c85ab309bf56b0ecd990427c1b7d93991e783a647b1dd66696659b5c926485e1642854f0839033138a3a54c349c138977275e71e0fe985493cb85e0923095804037462ae248780006d0778334f664262e88498fcbb22d46d4f4291bb90afbbd40fbf2b302415cf195542dcf3375e78602fe1067638ab995b70e6dbaf7b75bc11701207e489f361512b590a860401a3facc1ef1375d8b64e0e5c7f863786d3984710c2f55ecac578c41170194d832929075671b814fabf45c6e2bcdf8c0cbe2954c5a414e3f8878ab68ca13189d97f316517abb4c5187dbb03413da654e650ec1cca0bc9472bd4bcc60ca6fcdcb26e77a025eb70ec0e60e20b19d30fc261ad11d3c0c56ace53de82c6a38ca5d59e9c24568b7cd15a0531315dec20d9cc957fcf8958e3747471a8d944a6678f6ac8a8763a1759b3dc83edd18ceeda5036c31a897b65612d2b176e9648352899bb2869f48b1e70c1ff04864487258526226a7dc64306b6838f4286b9a81a3193f5c9c711dfc5b9fe79bc6cc14c934591f93860b66511aab061295af186b8ceff5772fe50dffba4f5256522b5c7c55a6ba9b13b615fb3b3bdc4b159a1c84c85d717824a0573cbf219fd9b2a32ab66bf8a498a04aa4e22509a5057997b74ab5a1b27b96656bc194af08114551709a41142b715c6e167e5ba5945729bfa702c236073fdddb4ceada972810253d642ec094333c028b0af40ce2e29993369eb7ddd07164969a62466b80918873a4ea56cd80a8e559fb30f6cce44f1f8fe60a +expected_private_key = 35e4451348cfb9a06f1836296178b6af41a1c0196f26525831c081ea779e6b8c4b3f150afe2963aa756968358bfcd47d76415ed4294f02a843f89b87d6803bad504a9165b9bedb0c946058965b64bbf953e719160b53552c100d251cc9c111837e0a7c4c043ba0777e53b39f658b41b5f8900d4721268a8ab868b15a12c3b8f41316dcbe117ab3a027b8fc2cbf3566569a130d6db132ddccc5eed69a392bae8e4a7bd6c9708a48badebaa79fa1ac1e729eee0399803a374d3733ae501f1a846cd2f5166dc31b4d53750bcccf937b1ca43c3a6cd5601eeac251f9aab8b2489e22ceff436f1142ccd1bb17dfc75db6125a1a433325a5599fd23b49bbc3d1b9195b984303735f9f2646efd050097ab23a8aa5569ab744a934c2991ba046cb012467d39c3936eba9cfec4268e1a0eea559980133b4121f9d5a603e092c199818c057b7c841a7dd00af2c0ab3637878a9ea90bf377874fa38bf290fea6131345340857a1a53d4bdd9201b99fb628d975a91001f907a2e9ad37c9b99b8af915070339fdf76125d9556b1716cb74a9f18092afd887880526fd82cb002ca49e879c50e33af2e747104674eb1f30859e3c22f3aaebfd30fd672b6ab855928c4085130488540c8cbdb832ae25249f46b7178af9769a4b359664ba48da4a746c215c58ac2752e43835b5c2a9ef0a3fca159d29038cd60cd60f5bf508521d3d59c4f083653264776501b4fc62337fc37562973a1f9bd9532b4bdb25c21597a11e17096b155cd43c76874c44f25c1aa1bbcea897367536ecf4124feb6cdf2360cd5a082ac03b5e94232dfb44e1f124fdf65a4bd03b16ed729884065d77135f1f730a7a91fc2eb43271c0b2bfb8e615c07df54041917a95b0544e8513e8c6060d14c0fb802c0f2680051341960654f3594c9972c08664b7bd30b2f031827307b95fc525a2632c2456041b1286d6f175bc0b41942e8b8be69bb364a11ab4cc199f20aeb516ced1acc1f4b2b91b860331677290c643bb9a00b4b65644592c5ca5bb19b25d2a7080cc32b08910c137946a3fab6c8e31a1e97a4735a5c0a239b073c6e056053cd6498117497870718d35235019b3ee6050dcaac31a27167fe35ce57586c364c13bcc7587ca066c6e05673e2ba0186281d94843df10bb3a93c05025c0c691a0c41b229a55b7b506724026c4f1b48313788a212b0c951783ec9447e64314e878734ab59401923ada0586225c7a5c00a5f97bb76632dec47c15c06c7c20090c790404b3044136c79f46181cb1123a7d3cf969b72f6cabe063a35774a60863267b1ba34b93a5d3db25fece84a02429a9d142ed897320bfcc114391bcc097a078b04bd9356113b3cb993c19384886df182e37ba659d5b8bee24445411e318cbd092b8f8e53c63bfa3896a2cdbdc66e27f25c83fa85c260a34fd6cfe6872172f1361aa125e6c5c6c902cdec68708c14c175e910cf002ad647a317f78f52f76bae006a3aa51780d37a00aa20c6a532281719c5ac88641a9d15549088b5a4dda23f443335abfc5c2f7c5be2a142740cbfd612a83af271af0aacb43833b56295b51a885d798825c3a2c04b399c528530ca24117b6e762c7b6527b0509b5963b68560015db4d4895fd557f7434fcb61b199e793c5e763764c48df412acb7c756e1370cd117f8c10cafb39cbf0c8c3f5dc8da1855203d02b39647856b55c38e944617b8348d16a8221962a42398fb61978f40328c83a0b49bc843060d1711e289434db4b5b0838cd87949df5ac0727d8a528b8b5bf30ccb9e37a6664050cc5880d34c13ca42c1779b8d098c5e0876627c17a79b6bad44a9a38c56883d97cf2d2b114a1c4f1a502ab4a9b7b5398d9e73e543b860f87062e27a9fd1a2035185f0d98857b0759bf1c39a41984c8c1a1a9027944417f84cca0dd4206e9133f6eb6a989075d004accd9f57cdc928cd455443f0222dcab9a8890004c2596efeb06903b5d0af33a88f14fec760fc074a3dcdc744e9864e7ebc608a56002e483e60b8202b31377dc7f5a486d5a060733fca9836aaeeae05909c6b6b0db4531271fe4f3548bd5bff1e92160321218f963081c518874c0cbb792fda4513f7902be6547745a0879ba6ccd7c0f73b123dc605bc7995bdd14b018d8278c8c3966aa87a24b4a4bd3abafe0c8173c028df14daad39c288943eac139210392bed70c38d7af7439697be96977d23a27cb6e7de7b785673c9d1b33a081a9cd417129430c6c6300c496b04e1796c9c781e4211915162de147501b7bc55f8913c66c5cbd209ba6d115f753ba739417c8eb182200113ce17c935a0622dcbc674553b9dabcda17bdbfb4865d58143c149512cc2e74a2b508f67be8058461252d95042f8b7641e1d85161521b81a616a02110d7ea3bca4723d003a4db1673d64273b34c9432ac981a0c01dc8b8c0ed5a05d20c5331831ce56014ab0732b301ca2f8569fc061ddaa95d63667b9acc7a1ea656f821d55a31b41f32dfb3b66ddd5cd2155438db6923069430b61c85ab309bf56b0ecd990427c1b7d93991e783a647b1dd66696659b5c926485e1642854f0839033138a3a54c349c138977275e71e0fe985493cb85e0923095804037462ae248780006d0778334f664262e88498fcbb22d46d4f4291bb90afbbd40fbf2b302415cf195542dcf3375e78602fe1067638ab995b70e6dbaf7b75bc11701207e489f361512b590a860401a3facc1ef1375d8b64e0e5c7f863786d3984710c2f55ecac578c41170194d832929075671b814fabf45c6e2bcdf8c0cbe2954c5a414e3f8878ab68ca13189d97f316517abb4c5187dbb03413da654e650ec1cca0bc9472bd4bcc60ca6fcdcb26e77a025eb70ec0e60e20b19d30fc261ad11d3c0c56ace53de82c6a38ca5d59e9c24568b7cd15a0531315dec20d9cc957fcf8958e3747471a8d944a6678f6ac8a8763a1759b3dc83edd18ceeda5036c31a897b65612d2b176e9648352899bb2869f48b1e70c1ff04864487258526226a7dc64306b6838f4286b9a81a3193f5c9c711dfc5b9fe79bc6cc14c934591f93860b66511aab061295af186b8ceff5772fe50dffba4f5256522b5c7c55a6ba9b13b615fb3b3bdc4b159a1c84c85d717824a0573cbf219fd9b2a32ab66bf8a498a04aa4e22509a5057997b74ab5a1b27b96656bc194af08114551709a41142b715c6e167e5ba5945729bfa702c236073fdddb4ceada972810253d642ec094333c028b0af40ce2e29993369eb7ddd07164969a62466b80918873a4ea56cd80a8e559fb30f6cce44f1f8fe60a286de7dc142efe935e84b0aeebbd32d050fd9d8b008a94e59454b19ea401611df89d7d99d5c3e0d10d6ef9af054d842375f695abb28e3b8eb495100f04306e92 + +comment = Official test vector 42, seed: "44a6774b2cac02dff210ff861a090561a453db311f47b6fedb81811872d5d9489f5fc4103010139ae53fcaed209dc9be" +entropy = 610afb64be8cc1df288cfb016ee2f44c6c07113de7f6fee071fe0c3fe31c6215cd292e4c5f9e1a55e0489bceffb204d672a6215f4f3980a646d9f880817c52dd +expected_public_key = d5f135d06aa99635c9b53244e1f898d8494b681312bfd243c8ea5b7e71ccb7a5386e477d01fca3ef4122a63934843450a446caff55184d052923a393fd887df6b045659cc282d1424b19b17cc2a2384132eff067a0347f88c6b392aa56a3519a440438d3f90f6941112124c91fc31187ab0ce6752d9b336a1e230f97837a657599e253b7798c912a66a48314447c352b84590941355c6bd1c0951374105858a46502ef39cbb58b8e63a64e2b99c4825912155695893a62af6745e76058d551a946161f25f1b8fc045602344a7f342facc50e9565c1d59a459d34233c1921ceac6e0bd936b496c8fd6a619d8b0649eb458f8943eac97293635092666688db559d255ce9f280227755c3605d6ed007ca718527227fa1f40dbcd88792801d8db6b2374a23178a72276c790f902d7e969f2686c9508186788905e77132dd909397f6b6bad3ce77e8cd4c4a3b9686cac35abc86d57e911cb58b0c997c1935ca64918370809d3b1b70cb09641878e7c0a141573030aa2b687761bf43ac89a81e73376793ecb32db53368ec9e079172e9aa482fd8652583b9155683da3467e4546f26ac98371487527c37b6646ca582017892a188fb2440ca7240c3c22577230b59ab8ec038bb95cc49c2a2f59a4a22c0c482713544fbca9d7404b3a6ad86e8764a601b7084289858bf62a2828d3091ff015089726ca23b1ca0f87195ba1abf80b01f101f8584c15289196744500000b431a60267174f2cc56860bc5ab4ec20d19ba8ed47535eb42fe1d33f2980ba211805a3618f2ff64d1cc634caa6b40fd23615538366dbaf41971d8b5857298c1e406a293c1b8b7f4a499a97be8cc51b5382020ea9c7cf809fa7323134290fa461218f4a6f495caba2d1511ea48b7e0905b0465f7a6711f2716b17dcbb4b9a1b31933d7d3622315c79f3f11a93c8058fbc01c4839a808a5d2d45b99f7918faf52db1d81d669c7988ba7eb8847187ac7b76404b1a139dc4e4917c9b4e29833fd9fbc36e4bba96e25bde691ce0c369ace7183c762bd04785efcc6b614165c014a0fc4b64b24b3b46418ac5b6b7bf69cbc75090b69aae46b4a12feabd4e134bcaf14922367b50f17976c6705e175ff34612cf7b086ed733deaab0ca815a53c99b2985963db89bdc284d251340b0e3ae20990ee93344dea18063db6ef4374a331244ede00b46676475937a9472c82e124b1751a9e4203becc77ace092b055abf0892637b39c3a9a011219c88139277b8bb73b9508142421939380acfc2b81523c72e923609a0505e2979e086ab85f9663e549f3350a694458ce7b02bd8716c0f8b8946a21d99d97632952bee898989c1adeb710e15bb25b0a22be598a65465bf2b899719d00f9d16367e9436803ba8c17b6b3bf62a10a017c177125396bf6745163fe24c455319cea69393ccbae42508156167b28a1d1050bdefa5a789bc389031bd86e72af5f5bc80a215260737839654998295d5aba8c11a5417b55d67201243393b7593400d46cca1d321c027bfb09cb08a1738c88b7d47e876ef7517f8d96cc1c93b9e93b7062227a55996fa958a684aaeda89587b015a6b336dfb610721298ac6ab713f3a2e37b2aa7b1ccd2a876f03c72546b861e351a73036f4b363137340efa7764c439f68d3c8e0723683aa8254a66284f447 +expected_private_key = 03a941a829c025261f44172acf806bea5b216b58bab845328c36cb925a5169d6b1ff141ba44010ff2c1a446113c443c6d98ca879e673cccb84d5519067619edf59c23798b9b6bbcdc0d49df5f4b21563ae54e287dcccbe4c53c62918a6a213c460eb8c92377cb57a1b6d6467d40297fb90c6907b6be5b03db314c3ad5b2f46999743ec7ff0b055af2b2753695395c6157c60115e183dda398d136806b7017bb4fb4f36b7653bd17cabd1bffeecbaf2eab65b853c710820818b05afb86388f327fea6c3562a027c610afd9c0bbb23a571489120c2baa0d7aeffd196b2dc8b40d4016fda16062512a64462fe806d5959c49dfc0c9b2955e6480b7af0011edb2d44c6a43d08b5f469656cb9396c9c640bb077cc24ac0f293bab4cbadd998ecdba31534408b74420cb432826cb5dc8224c48159626053096063841153f723761f83315629c945778a24f826a28a90a5854ba7e80c48e44929eeca17e28304babcd0af4198962a045292f09ab5b7197a685a67d07ec9769b69e64ea1457fb8e1a70b23ac4a797132b021244944143e936c6e5d840494b674fdc9aee84a091175f8e3121150b1375e028d0ab6b709a443f14c56ab67e3a8721a4b698eac9615fa12c0e5277e4a412508446ed4999687ac5ac626ccf5468f3e944b8d099fdc319337c85e5024a0798556cfabfd47a40146691d32c0f179b5bb3c3088f2cb29e2b961b630610d1528fab952dc75d23339c26a38f68421c12c2360f369abce128cd64551ca29455e02aec7c359cf9182f5642f1bab42814aea8f2844af15670421e0e113063b4b8c614487f6b6236dcb21e48613c0635e5f6a6a6e070fb665756f98156c65a6f407e1014bd6540a92e8a09ef6c944db876250b951d16332251c5bb6b79f88928adf6bef819a241068b08337136b8bdc33476fddb0292b68ede75490db193e267bbf2f8459fabb17d10bef7018ae895995200453065ad45457e3e86a12c554db3617a99613767598031c86bd5815585444dfa41cbe068034fc0a1cc2636d010230870776d2645db640b409a292acc909aaa11d0d05a1b1469ea2673020bb7ebc7381190c271e2cf73d37f61f12c8389843b0540117c7ab924c140d1409f701ab0c0596103a1aef3c93a2a79be19c7870abe83232a7de265a1a1280d30490ff50c414a006d8a403c50948da4b1054b18be35a8f9252079c5acb2104bd42ccb51617839e07380fb3a62b3a5080295bcca410215ab5c30a89b727363185363027bb1a6b09fe83233d79e4527371ecc8b879c81a25b3e6e088d2e786976396ef8d6c383495b52eb69bb718dd7facf5f120303ea259fb2bc32a5269ab45e6bd8ab9f9456a68b869a4c13a0b6c98dd1bf276572efc9a31591acb33b9945919fd20495db284bd4ba7c66620754e58396c0a191f20304b545aa2279cbe62d08eb4c82e60569598147f9910ef70abf792d375420bb999e4a9cc28db0193a124d0cc78807a54d13933b25b350a16c842e4b31337bc7734104fe564c20f27ed6ab800717baac4a9c954c6ec5238bcdf309c6fc497a6a9b9e4973d7d44ea53b90db26912ac7796c327d24d3705db5bd0266b17b145fd8ca77624c8eccac1c209073b2a639d5f135d06aa99635c9b53244e1f898d8494b681312bfd243c8ea5b7e71ccb7a5386e477d01fca3ef4122a63934843450a446caff55184d052923a393fd887df6b045659cc282d1424b19b17cc2a2384132eff067a0347f88c6b392aa56a3519a440438d3f90f6941112124c91fc31187ab0ce6752d9b336a1e230f97837a657599e253b7798c912a66a48314447c352b84590941355c6bd1c0951374105858a46502ef39cbb58b8e63a64e2b99c4825912155695893a62af6745e76058d551a946161f25f1b8fc045602344a7f342facc50e9565c1d59a459d34233c1921ceac6e0bd936b496c8fd6a619d8b0649eb458f8943eac97293635092666688db559d255ce9f280227755c3605d6ed007ca718527227fa1f40dbcd88792801d8db6b2374a23178a72276c790f902d7e969f2686c9508186788905e77132dd909397f6b6bad3ce77e8cd4c4a3b9686cac35abc86d57e911cb58b0c997c1935ca64918370809d3b1b70cb09641878e7c0a141573030aa2b687761bf43ac89a81e73376793ecb32db53368ec9e079172e9aa482fd8652583b9155683da3467e4546f26ac98371487527c37b6646ca582017892a188fb2440ca7240c3c22577230b59ab8ec038bb95cc49c2a2f59a4a22c0c482713544fbca9d7404b3a6ad86e8764a601b7084289858bf62a2828d3091ff015089726ca23b1ca0f87195ba1abf80b01f101f8584c15289196744500000b431a60267174f2cc56860bc5ab4ec20d19ba8ed47535eb42fe1d33f2980ba211805a3618f2ff64d1cc634caa6b40fd23615538366dbaf41971d8b5857298c1e406a293c1b8b7f4a499a97be8cc51b5382020ea9c7cf809fa7323134290fa461218f4a6f495caba2d1511ea48b7e0905b0465f7a6711f2716b17dcbb4b9a1b31933d7d3622315c79f3f11a93c8058fbc01c4839a808a5d2d45b99f7918faf52db1d81d669c7988ba7eb8847187ac7b76404b1a139dc4e4917c9b4e29833fd9fbc36e4bba96e25bde691ce0c369ace7183c762bd04785efcc6b614165c014a0fc4b64b24b3b46418ac5b6b7bf69cbc75090b69aae46b4a12feabd4e134bcaf14922367b50f17976c6705e175ff34612cf7b086ed733deaab0ca815a53c99b2985963db89bdc284d251340b0e3ae20990ee93344dea18063db6ef4374a331244ede00b46676475937a9472c82e124b1751a9e4203becc77ace092b055abf0892637b39c3a9a011219c88139277b8bb73b9508142421939380acfc2b81523c72e923609a0505e2979e086ab85f9663e549f3350a694458ce7b02bd8716c0f8b8946a21d99d97632952bee898989c1adeb710e15bb25b0a22be598a65465bf2b899719d00f9d16367e9436803ba8c17b6b3bf62a10a017c177125396bf6745163fe24c455319cea69393ccbae42508156167b28a1d1050bdefa5a789bc389031bd86e72af5f5bc80a215260737839654998295d5aba8c11a5417b55d67201243393b7593400d46cca1d321c027bfb09cb08a1738c88b7d47e876ef7517f8d96cc1c93b9e93b7062227a55996fa958a684aaeda89587b015a6b336dfb610721298ac6ab713f3a2e37b2aa7b1ccd2a876f03c72546b861e351a73036f4b363137340efa7764c439f68d3c8e0723683aa8254a66284f447029a2e12c3e6aa668afb5be8a82576813fac7b8e61c5a88aff94ecc2770c585ecd292e4c5f9e1a55e0489bceffb204d672a6215f4f3980a646d9f880817c52dd + +comment = Official test vector 43, seed: "49e1855588b6235df2a400c4a70aedf8ab17b6e5e2891aa745f132fa2e7ab0c8117c1df37c39f5d57624eb77c2b4a091" +entropy = e1953800acaa85ac02a906c72cb8e8d704e8d27820345f88f71e89c1f549afcc8c64c049c6dfc0f1476cffd520b055756162f7ec94243de6b14ac0b9e5fb366c +expected_public_key = 26ab73a3355199a1833a1268a37a087ddb57ab621046db1f407c804c488e4196048ceb762b9024c2157e7dccaa1a762881280715a1467e766dccb159f4780a39bc4f4a59715700070318c2ae03706b639f79a8a81af34fbf6c9ace4843151ab5c3cc81af08ce392335e4fa913052119904745ec68cf3502f4663bda74522ddd61a318539e10a853bc90a5b06aa12018c6bac4a8123719c567719cb723b420540ebcd84c2787f37a76c6c40fc983436c26f7fdb14df17062be752af2c1f1cd1026856500f3831cca75eff7a08d4d9c819d295674550c1c951ff9a0155856c3cc143824556c09025d55b0db7192d969926c18912bf5ca8629401b8c53e23832cefdb369020583b360595541f48573ba1557fd0c1058a8cc5ea7ca7f092b7dc7b4b04490fa4e72a37aac0e33b1746aca327258d9d29acf140c5f70b8f94a23195d60d30a498259c6f9d06bd69f82398953b4fd39adeca972851431b59c9614b7867cb1228e2519ac130f003903d801f70bccd776a9b916684cd89cd71723ca732a21fecbb90d547646b987155cf5425abbb2406cdc1821afa8da120a540d1c3af175032444e1fd85f43f47903665be922636755b5e75a90931c66e89345f57ca4a032959bdb4521cb62bb1377dc5c99fbe36c71347b81a80b6b7251fac3732475009a719f4374bd5ff01cce4601e761a754e05756968f33fcac4d6a540d93951d0bb4d0d838a3112872020c2dc67718888dbf408941b877eb6543432675c879aa85f102e608aedf267e32d333ca9c3860f907f17b553580aec75902ec304e6c7996ee34061b40a9f4f8ba2ccc55775490dc9c2a6d5c0134e809bd305d7445c9ebf7b89f9604146b2e55a1090597033bab2a25a3886dc524f4908adbe98dc2d74386806ad641712d9c23a19562e4ac7f57a86fc98663e455bd963c4e63d8471b504c14eb718d8bcd6475cc45687f55099f8fe2035f3812f081b6df2a174999765cd69433e5312be67698346fa1030a40943f8927b2cd8a1e2cf2514333bce85a89a6a99d03c4a5c0b847550972f9d1448d1819b3582b99a50ff97c124398cff30967013c4dc4d374379b4e8b037eb0e570aec147a1c99cadbb651bfb576ad61bc5449c5737bc4ba4a01f24aad80375acbcbaafeb564665a192211b4d6918260c1251eaa1014c6f41427465609310d8b665c6763639c71ad48019905cc0874be438023936856017b5562a9ee79686bcb55e04a38eb9b3bbfc07acd4865860a77af3b5acf7db344f139f79d5953778124c2c92d29cbfedc21678e54861eca5cd350fa09b1365fb74435316f37386b9b510e2bc585da30a71ecc7b9913921ec8d8fba2dbc97807b693b1e306832507cac90410e0576611ba79c1ca9c0b106d0147680790ec5051798592d3035aef57a0174cbc70b435710c51695852841907d41a8180123a4d911787b674acb513c84047bbd5851c3e83a8a046062c06bd84397858241c95b8d8d2a2c53038856247506065a70a5a29b701bae1b488a68c2bf02472d86bcbfe263e7820902102c612747cd60344957a871c7774a0980b70b56f7bc45f8e2bd2085af080cb923b55640bab2aa2c30f206ccbad17bc9f58c1cda80399962268f2ae99c43bbc1fa7d8949cd772a745bd9ab018fd3f6ed02f32cd2bf845923 +expected_private_key = c842401604c8c4c78d8417c804c2723b14733044aa2755897f65987951218361a07aa84d6af8a956454036b79e145c93b9d4b862146bd4db824cabcb61fb91bc306f851c9e93ac266e3c9e9c939be422b07e512d28503a6efa9d3ea8861e39b1ad481b8ad1805a8c0d48179aa1203c2ed7bb59d5c8ef651281c77f83ac7b49eb997965b161db025b47ce6e2c09edd41f5eab1c8b7b4d20783d60c90dbfe6ac387b629be10351868186f6a0bf68905f8c1cf34303fb577c25212919533c7044697d9425bfb76bd9d367f43b2d3613351d95395f4c2bae63b2a4608c69364f41e85d542a08f35b940fbc3b48f63360b50aa88259c7cb4634e5a34300c5957a3644f6ae381389b53210110329fc61519113c17e64782239941cfbb11a647b814372e313205844592cc3c17319b41ff21a0bda3f5acac3f18bad085c8f27b7758b7519316653ba9c253dc94ccad37f98d00b9fe67e2a13662c77921e4a9a86c8089682811e53a60b1089a1038483e615e6eb109a3b7636e02a44c2c3a81b96d84336cf594d24172be1bbb9c7b3685ea45e45b81d731b9b75ccadbfdb768119b20a0c346156cbcd5bb107a00a0e3c6e949b9db0b4ae21026c915908c5f38413c648edb20623f35b382b0cd5f4a8d7062bebbbcc9e809bdbb5c84042bce2e81bb0d795c6786af95a7e7b0629f7978a03558f98709a86319570273bea71986aa92560260d022569d4c98a85bb98aa198deff63dc6bccd1e6032ebab8caee5cf4717b17d89125c67a8a472c371153a4fc9045fd3304a74b983936060f42c80454a005342c1318a284bc5b9a71a39e748a94739536b517dac1619c00db64c81001acbc2793f9f29b42214442fba962f331d48c300da2186d21a4de61c4b5948c7edd1b9fa5865caf2280a81b9f7171137d6a678c92745b1aeb9db686ba84d65f6beabe332ff036bd113161fa068e74032ca5736d3ea3a01f1acfe067dfe5a5b398575bb9b148ee6155be2b4b67b348420ce758c5855102fd06a1fe8d347ef1b073f064f1f7926be5b2343029e5b7468e93b8abec6be231b6bee714031e04ed23c6da37032ecc00374706eff7453dd931d80029382f17e82a85ad7a8b25ea97d1d2aa21238b25517008b0400281168328b02869889f7f142cbf1ae8ddba5ef2713de649aa9ac56229494db211b90b96ae3b2829ae528c634110a3bcd355a243f3654295b0b79b9b7d43272321959b3632313aac107c8b7aeb83172778b7b199e736307fdf5ac6aeb40cfe750b7227f46a00b9000880d405877b63ff6c616bf4a51ca11c863a79b0e099308b42cbb7997420008268a3b762b9a5e181da14a4a92a5b55e7950268a9a83402889a98835cb9562a5a627750a5348b3398b39783009a081a058bbabcc7740af00b8cdbb4e0842c7f14b47ff4cb424b6252ccccee30398023a9b50b4bb4a2c1ff0a007a0a54eaf421fc2113f0353c7a1da6cbf3c7f5b448b86534fce3b3b82c3b82c3420bca7c865aa22461b3d95522e9792b37b78c5555a62a3439f3ba7646076111336079bb8352a286e542094bb58b07cb832e2b288021034ed4934469b1723e57e57e358942730196140f47658258a761edcbdc046c08bb89726ab73a3355199a1833a1268a37a087ddb57ab621046db1f407c804c488e4196048ceb762b9024c2157e7dccaa1a762881280715a1467e766dccb159f4780a39bc4f4a59715700070318c2ae03706b639f79a8a81af34fbf6c9ace4843151ab5c3cc81af08ce392335e4fa913052119904745ec68cf3502f4663bda74522ddd61a318539e10a853bc90a5b06aa12018c6bac4a8123719c567719cb723b420540ebcd84c2787f37a76c6c40fc983436c26f7fdb14df17062be752af2c1f1cd1026856500f3831cca75eff7a08d4d9c819d295674550c1c951ff9a0155856c3cc143824556c09025d55b0db7192d969926c18912bf5ca8629401b8c53e23832cefdb369020583b360595541f48573ba1557fd0c1058a8cc5ea7ca7f092b7dc7b4b04490fa4e72a37aac0e33b1746aca327258d9d29acf140c5f70b8f94a23195d60d30a498259c6f9d06bd69f82398953b4fd39adeca972851431b59c9614b7867cb1228e2519ac130f003903d801f70bccd776a9b916684cd89cd71723ca732a21fecbb90d547646b987155cf5425abbb2406cdc1821afa8da120a540d1c3af175032444e1fd85f43f47903665be922636755b5e75a90931c66e89345f57ca4a032959bdb4521cb62bb1377dc5c99fbe36c71347b81a80b6b7251fac3732475009a719f4374bd5ff01cce4601e761a754e05756968f33fcac4d6a540d93951d0bb4d0d838a3112872020c2dc67718888dbf408941b877eb6543432675c879aa85f102e608aedf267e32d333ca9c3860f907f17b553580aec75902ec304e6c7996ee34061b40a9f4f8ba2ccc55775490dc9c2a6d5c0134e809bd305d7445c9ebf7b89f9604146b2e55a1090597033bab2a25a3886dc524f4908adbe98dc2d74386806ad641712d9c23a19562e4ac7f57a86fc98663e455bd963c4e63d8471b504c14eb718d8bcd6475cc45687f55099f8fe2035f3812f081b6df2a174999765cd69433e5312be67698346fa1030a40943f8927b2cd8a1e2cf2514333bce85a89a6a99d03c4a5c0b847550972f9d1448d1819b3582b99a50ff97c124398cff30967013c4dc4d374379b4e8b037eb0e570aec147a1c99cadbb651bfb576ad61bc5449c5737bc4ba4a01f24aad80375acbcbaafeb564665a192211b4d6918260c1251eaa1014c6f41427465609310d8b665c6763639c71ad48019905cc0874be438023936856017b5562a9ee79686bcb55e04a38eb9b3bbfc07acd4865860a77af3b5acf7db344f139f79d5953778124c2c92d29cbfedc21678e54861eca5cd350fa09b1365fb74435316f37386b9b510e2bc585da30a71ecc7b9913921ec8d8fba2dbc97807b693b1e306832507cac90410e0576611ba79c1ca9c0b106d0147680790ec5051798592d3035aef57a0174cbc70b435710c51695852841907d41a8180123a4d911787b674acb513c84047bbd5851c3e83a8a046062c06bd84397858241c95b8d8d2a2c53038856247506065a70a5a29b701bae1b488a68c2bf02472d86bcbfe263e7820902102c612747cd60344957a871c7774a0980b70b56f7bc45f8e2bd2085af080cb923b55640bab2aa2c30f206ccbad17bc9f58c1cda80399962268f2ae99c43bbc1fa7d8949cd772a745bd9ab018fd3f6ed02f32cd2bf845923e3ec3671cc7675a321af8584a0961101c04a432772431e77f5740ba3b2ef488d8c64c049c6dfc0f1476cffd520b055756162f7ec94243de6b14ac0b9e5fb366c + +comment = Official test vector 44, seed: "df0e41d2f6f86c1f79d31fd5878e7ab434fc0af3a0d5f47d2ab3fef31a42bd949b0e3629df9f575befbb62e829e51dae" +entropy = c719f9b2d16399b7326ce4eca30dabefe8fdaab18e9f6df888b0a134ef355570e40771856eb77e4633504899fcb86c6a3d433d0b8d60e26f07bd61f1d4ed69bd +expected_public_key = bac16e6e3c5e5d9c8ca207a5c77c7883b917fe0463d3101962b802549a87bf39b9bc7a30a5b654c9c96b14bc61506371e4768429db8f7c0a6204903b9bc9311c66b907c5825621b7ebfb52f6c7cf75c169c17129595631a2fa95920317aad4cb338329adc69c6795158558638c474710c78763e012240cbdc2e586adf93c028522321a94cb766f9e983fb5110a10476ecba92fc0c120cc83632409940db249ec569ed5740471c86623b06962910307781349f342c759886f7c376ce708091019fc407eeae76409387d151c97cf7270319143471a84994bb596f9b5e1a78d33428740fcbab415c575e478db4b4e30771802e409b8c1ad4ecc9cec1b7396e664645cce83a40d512684e0b2750d8445d2180be5b4cfc09bc9fffc8d6e49b49d68c4d849b584512cbb55283722ced5566149811545609a4c5459f523c1c76667859760e690385f65768331b7654c30b8c0b26f2b8089a3c5b4f21eed42179c54ae61d22736512fa3aac6eb018946a47cd79acd545719c829b304477541ea92b10a1ccae8b36ba83d5ad83083fcb51df653ce899227c52581699b7150456cfa1910212f7678056a33755ddc7d0648164aa297f196057060009dea8d87e86b6abc0106a5536d7c83933ab12e294b4f50870fa0bea16ab49b88a60ba7790549ccc0e6571e81875d5632dd8a5627e48e0395bb4c243ed9d53cce7b591949408d2c87a5e295e3c3231f4132e1117b835529456a53d3d748c16280f4d597573685b04780f611094c665c66164a1323c290ba8c8b1031b142a3b53062ad5c59d8d112f9926e5aa591aba711ee2ba1509aa09b86c60a969020d74e238b849374bcae7788fae61296d5ac7ad0927ee30912c4287e3981b7851d5823295076365196bfbee4a3cc189020254f31b06fd8d70c43a94cf380c01936465a334fa59b3d39296305dc8b775269ee204639bb3a30ac437936cbd734a5c6477b2a451eaa0159e571bb12473b77698621d5247eb5012f608c6f070a67551f6f63abe87ba12a56b2b2dba44bf72e01c9a2c490579d2c103ce91a841c4f4b3aafddaa0cc3d33d31ec3ffb4a3f9ab87f93494720d386bb13cc482a4adac46395479d1421aa91216bbf56bcecb89f11588b4085a62ba0a47ef9a184c2c9346525ce006ca4819857fac8b1498c9ca1222175ca5b01b6bd502f69f8977a0b3b04987a1897a8f2f20dcddb098ad070d15c15c099a5672c17087c6b58245bc25c382ed3bfd5ba9b8e48932a27546a089113f37e8c85971fa10d465970d61446f106cca6200f85eb2de2947bb4ec57e58c1f7be6b6fbc025a4a41eb05c516578ae9ba4c197b692d20976116ba35660cc5b612b616269a837012230b65f2913e5d0362d0b510f1272716a4dd2832d3bacc914929ff33354c01217d8a0745c9263b5d80a4f497d99d98a4d895b59a59a1dc173ca6945fa54c398f351c8c3ab8d66cb8971a68157ce3ce82104094fc83c7306d242f1f0497180842beb8e126988c5a830d2a39c2711b033490fe1d53e432c7a453b4ceb05a5644253797135231228f246bc6a1445efc16b2f2bc674327a62ec32dbc209f2c4a5c600920d2856dc34549bc4656f7953e697cea6f2891fd65321f89bf2d90cf3dfc681c2fd81792135e1938ca482ef3c253d8976201852444e +expected_private_key = 0c9c633ff39d1c6c29f8356aa02981dcf189d6535e2ac00750c30b111a88b21024e4823e7d543614f30112f7c78f1679dab68b71aa992538658fd0c8e2984abdc09647453b3fd99dd860238cf40c9112a7dcb57e06540148ea4ad6f97020474afb65c5c67ab4fdb1515c6592941b1e38d4097155bd194b5324f464dbe678ece9b5f8f57822f87ed7f3a6b470ca3fea3314b4bb404cb66e3bbf8f2953f2682cdb65cfb47906b3962443775796564d75cbb4b9bb24a8a98d7723269e8204ba89782f974ae591808e97cb2468252c8539c2454041c9232f33b43ed8359dd6856c98ba4fc09e92f9a4ad497f8f1159e159b5af795ab09c20aa753931f47764b6cbab6968c7a779802b469abb1e7f677a0a485ff5cab2f028112ee8c35152703bb14127b33fb00a0ce21cc607e49a73544029baca215a67091a9ad89a408794c4d2da78557b1d31686c6b4c3749958efc60891f12c9e0b7c19613823eeab1d8f672089339e46c16daf0c3b7d53727605c26a723518a2651d8762ac373817bbddbec1ebca2cf91fa2a66896c55a4c946a791e5502ff19aa21cb132322bbfd127c10d87563028bc49b222e5401acdc81991828e4c111a54566e5724b40a452c0f4632b7b85f0445c881938134d516113560b0065beb409fceb25f796c0ba0ab190fac0214007916ca93c2abb11bd88553aa34c3c518bfec423728c86e529c300a1f70225f2f683911040ff9405614e1baac070e0e90337e134e3c93081514a937f9798ea7b57b3a3a0b829a2697b0778c802116c067a5c368576395c43d33882f97c770519c16426284e19bac180a2a6cb85d65b1a115316b08541dc231c123c184e82c691f20749a4b92f2d1040d09519df7678ac282fff9cf5124acbe04388ccab61bf71b87ab3b830a3ef6700a68b06770012424031e89a895ae81c8aca9169d6495cf01cd8ba0c27ae132c16aab0ebc4b13abb37d67ced10a0246e87be1233ff09a6802f6371858972d21b48d410d8cf3a8a1e664f62028cf851a134037142c20e8eaad7de32581b39b5d93221cf72124a73daa2b61f3d7c8f25a973a815b351206800bbcba60ac8c2a86a7758b38339751c23ea5523d84ec982a260256c69af739349d206ce9c9a70dbb0a950a0b63815994a6878711578bc22942914df8489ec5a09258eba796e8a6ff5483a71887e55783a94201e5b88898870e67d32eaab132519624f4b28f22e80903e591331ca792c0cef824bc62168be6eb8f7ba299bc519b0c370509e38377f171761521f8fc882d1b8d0db3c2109a43d1754f75529f7b071b7492b753688feef12fda217ccba484ab79192b7933781811986430bcc010b50a5621ec15dc7bb545cabc77c336892a0df4436e732b905d70769865cdee0a9906438e9d921f521862a3227bab93202da0cd19f6221bb68fda8155ae38132cf2a30a4a5c3dc0b17df0016fac3bdd56cd9d06cc8f2c6b4ac41207fc1aead0cd87506caf5c043941513f0a4abf725818c7686f0745ece93c23f2951ee263f51a3fb3630076dca4ea80a156dc6b4248246f638024b8782c9757e076ceaf18cc27284c321ba91766454640ad32d97e65650b39c9b23fa80405f8cec82abf70ea4fbac16e6e3c5e5d9c8ca207a5c77c7883b917fe0463d3101962b802549a87bf39b9bc7a30a5b654c9c96b14bc61506371e4768429db8f7c0a6204903b9bc9311c66b907c5825621b7ebfb52f6c7cf75c169c17129595631a2fa95920317aad4cb338329adc69c6795158558638c474710c78763e012240cbdc2e586adf93c028522321a94cb766f9e983fb5110a10476ecba92fc0c120cc83632409940db249ec569ed5740471c86623b06962910307781349f342c759886f7c376ce708091019fc407eeae76409387d151c97cf7270319143471a84994bb596f9b5e1a78d33428740fcbab415c575e478db4b4e30771802e409b8c1ad4ecc9cec1b7396e664645cce83a40d512684e0b2750d8445d2180be5b4cfc09bc9fffc8d6e49b49d68c4d849b584512cbb55283722ced5566149811545609a4c5459f523c1c76667859760e690385f65768331b7654c30b8c0b26f2b8089a3c5b4f21eed42179c54ae61d22736512fa3aac6eb018946a47cd79acd545719c829b304477541ea92b10a1ccae8b36ba83d5ad83083fcb51df653ce899227c52581699b7150456cfa1910212f7678056a33755ddc7d0648164aa297f196057060009dea8d87e86b6abc0106a5536d7c83933ab12e294b4f50870fa0bea16ab49b88a60ba7790549ccc0e6571e81875d5632dd8a5627e48e0395bb4c243ed9d53cce7b591949408d2c87a5e295e3c3231f4132e1117b835529456a53d3d748c16280f4d597573685b04780f611094c665c66164a1323c290ba8c8b1031b142a3b53062ad5c59d8d112f9926e5aa591aba711ee2ba1509aa09b86c60a969020d74e238b849374bcae7788fae61296d5ac7ad0927ee30912c4287e3981b7851d5823295076365196bfbee4a3cc189020254f31b06fd8d70c43a94cf380c01936465a334fa59b3d39296305dc8b775269ee204639bb3a30ac437936cbd734a5c6477b2a451eaa0159e571bb12473b77698621d5247eb5012f608c6f070a67551f6f63abe87ba12a56b2b2dba44bf72e01c9a2c490579d2c103ce91a841c4f4b3aafddaa0cc3d33d31ec3ffb4a3f9ab87f93494720d386bb13cc482a4adac46395479d1421aa91216bbf56bcecb89f11588b4085a62ba0a47ef9a184c2c9346525ce006ca4819857fac8b1498c9ca1222175ca5b01b6bd502f69f8977a0b3b04987a1897a8f2f20dcddb098ad070d15c15c099a5672c17087c6b58245bc25c382ed3bfd5ba9b8e48932a27546a089113f37e8c85971fa10d465970d61446f106cca6200f85eb2de2947bb4ec57e58c1f7be6b6fbc025a4a41eb05c516578ae9ba4c197b692d20976116ba35660cc5b612b616269a837012230b65f2913e5d0362d0b510f1272716a4dd2832d3bacc914929ff33354c01217d8a0745c9263b5d80a4f497d99d98a4d895b59a59a1dc173ca6945fa54c398f351c8c3ab8d66cb8971a68157ce3ce82104094fc83c7306d242f1f0497180842beb8e126988c5a830d2a39c2711b033490fe1d53e432c7a453b4ceb05a5644253797135231228f246bc6a1445efc16b2f2bc674327a62ec32dbc209f2c4a5c600920d2856dc34549bc4656f7953e697cea6f2891fd65321f89bf2d90cf3dfc681c2fd81792135e1938ca482ef3c253d8976201852444e79836213a513bd4cfd42ed281304e3ee4560e4e0c60fa53781f83d5bd2bbea52e40771856eb77e4633504899fcb86c6a3d433d0b8d60e26f07bd61f1d4ed69bd + +comment = Official test vector 45, seed: "d3c9ebba6eb03ccb5c9b9d2c8d7f0cfbbf50841e24396cddf0e56525b38918c2fbe6c34cc1b93f7bcd4f4d5777e1a488" +entropy = e9acbb774be970206c3a738e243b420805a509fa59fa902044be2f0d013650d2ded5edaec5de3bf5b4d7c2f2e18e87f499c1968993eff196753db8045e2c8ba8 +expected_public_key = b873b2397a7c7ada2f4b0b589ebc97c50174e4317ed5d9cf2878c924937bd258bacbfc83283a218d443d8ee43f8cf3c64459b189e6b3ad100a6c6a3ede9916f89b8bb67cac332c0519f502a4c427f5c9af1a16a59a2122521a0c624a20149765e986339ed63567cc29cff15d7e8ac026c96f08d6ac4e057db4e66361b18ccdc3bcffc300a996ab7346232db7310662c75b39ad7aa080b23763ece54960397b8de836071b8914d56f95a681accb8fcb9529e5e4cfc2ec0601f7b0b291524e180aa0a69fa74ac2f17aa88162c481f51543a5a527da5c42b59f9a72b14dc91574b51e5806ace3f022d1f19e3eb621560478bb70beb8407719a01e16313d2f0c785e3b9886f679acfa465ba974676c0689a149ac04996f4132dc4974f2fc322b56115a64b0b5dbb8dc71869cc655dd61390b032f062b024bb71505640a41cc6174b68870da11eaeac28ad061f3abccf4e12231655eaf9285b205251ea69371d90527793495835715ac005868a78b1cae80025426848c4ae869b52034bb266e1b97480aaa7a31e384780442d9933fdb750efaeac0bfa802e5314d28a17d374caa05b46121e16362e8341dd923a66872df3c942177b58951c40ad1641f53a53d8708ebcc22aac67ef262b6155007dc6880a1f45cad3a5312b282055b1e0b181d9b396591fa78dfccb9d6a92d5cf8189c14c68cf4238654716f0a1e4f2542cd35a7e4e2185814c1f5b16d8c423213c69d5958c46960b8df589c185087ec5474df3c5112b5bb6bbcc6ab7160abdc2ab28801d775caafa049479a837cfc8847763559ea86239889385baa43a2848b489087fb43aa20acd7ac05606767798500f9271271e52032f21fc2a82d8d15bf774771b69c570ec488053743dc5398c4363aeb3932a5c54d16f45a033386dbe3b2d0a851116c2cd2fa4671b95cf7e60bdcb4976a2393647b714031870b1a6b2d486a5cf2a8093b7b948c9418f3a27f6296ea12336b8a6dd5a5715ce9a70dc6978038369a10332e3ab6c2971961d5c66441abc3290113b21c46e96c509aaf09e658d9b77928935b9a122e42bba23f920b58ea48f3f19a7924128669c09e135f772c275e55904400495153a691794a8d182ee1314446371501e87c41a944f850c9cd288cc2ea90a4e27864c79e554cc5924c4ca9a217dca424ee8b76e49993ae4b085e9809eae27401eb9c6c794a67a31705876243478f86d5b9f9cb3295422816526439950a412b4d1d28a70c6b9794c959be155aadb39e00b418efd0664b08843d20b71c547f1468c5fdd92b9d818336282f34f19b515946a7961b5a9319d9444cdc1aba840cbb57272e4da4ab20facd5fe4958a57c3c812978fd772c2862dea8b60b30a601b692dadaaba0f361cff27c5c734a42265341641b861b7899cb311e7e0acce396bce2809f24289c5361b91cba88493991987c0aca3b070411481e154104c15780abafe725dd3e1adf00bb0eff4a29298ac10c63fc0669df6379294aabb4588aad2087c9c16c9afb654f0c9c213d79cee1a843a84742d574de252a4f24795e9aa631d5198f07511160300a2e02a402b4cf8aa556ce67bd341307ce5a1eb6609efea3f066379865489701783b2c95ee6967f0893d44d76104bf396577fd719d69eb306117f3abd65385a87af12d1bb6d0433 +expected_private_key = 2ecb7caa911a2f615a13cb82e5a8be85e1c2bcf06c71b9696682532639b57a91537e470e8514390949cfadc80b0e5c3ee3eca869e22250560d8896b5f6eb0fc6ec0a6d01760c9108b7a26cd79039bcb3cf9ea0432fe0581626cfedabc12f758b407c8e9dfa373f45c377fa6d41a7205a7322b737cdabc8114df437e864c4abbb3dd084964f971b36e24406a7a7544a260d917c0ef95ccf33b1833bb6d4232bfce37b96004ed7779258faaedd9abaeb5051d8f605eb85be0f9599ff28b40587488fa376729685a8336c0dd213f55447e2c4895111b98e73bd783b2d08960abce22f6f894ae5456577a81156c66f6f1bbebd9c04d1ac43b77936f13060d3305a3893a825781e47928fc492adc16b31b2669882fca10581603b400f297b7fe7525d20e82958099b2d118ed3a14a8a915731525c470b7852a9b0ef04b4a3b0b65b4c5d7d486366175540a91e752993ba979d8a446f94088c7c3a02fd5c051f900a141957e63cbd71aa012db60a02b3872f3a623218a6b1f628fe8580e8725d9fb647f128c2519a8a0cd0649671616b462b83904ce621c95ff44697ca71ce930eaf0b28a6448a1c6b38c14800427683b71c954e49b6a3b978417b78ddb1a1b9729b89160b4c7ba49f312e23632460913d82d655d6e00b5b17a635827d8a0781e12a68c536ab40909f46a7173fa9cc9990371dcbc0b8a433436133ac123a73664a14e1409b4476ab001c17f26ebe968ed8c6a9d491b92f234499435e2df615c849be5f6422c8bc9de8f148a7c0713d93642dc852b33652287010f02b1d7b77972c797add3a38651b4c11ea968ce53f10d38df4160101fb0ee557bcf5b3328e12150a7c0d769812abf2ad2c1c7661844e6b34b25e7a30ec64b6e7d4282f48344bfc6f33ab3c428c76705cb9b1e9637721c9ee60874017013374082892b4af174749041c606b3f6690146bf1b0c8d2844f80594f265a8fb639e209c9b7fc418a230aaf340bba34c1c66b7d570918ed6caf8f62768620058cc7cb4fe1c762aa96a5015b82216e204c5821022caa84af9b12b9c9bc683747a2724c88e650539779742edca6a6a6c5f5d68faaf73d4cc7aab9b105f3a1b46cc96c915912e807aa6c841f6be63812062ed1d07bc9164eccec7e6662056313cc32f63c6181cf3343adc9073888d5756f508d65025bf6490a5f6b164a942466e60c4410c72aa69d2ca10459b890a4cb22a7613d44e70ac96aca21169f932a6134d27a6c05582e830c0ba137df060c6249b360831cc6b993e3d455c2e61694b11b520c64078bb552a65a3bab407d46c0ee173bbb52a95c7cbd8612380fc0cf1655c8e691bb0493103ec80a5fc92b4951a0d78768504284ad52580f16247b3c44af0a397f28ce3d0c0e4d34cc48b26b3998b060f2a9a013889685446b6281b3341c08e8300a013390a881a3a4937b412bf4745b069acbf5315b9955aa4999ba827bccbbf776829291a9067272059104522d69d1834886bde76c078a6061305833fefa710ebbc0dd0729493a285acbcf2708cf93ecc76b85691e20bfa4379c8521420c231f68429bb5c76e69378f6ef3475fca5760a5be829c2b4fa955e0e0931423b0a615194c26225bc538e2db29b873b2397a7c7ada2f4b0b589ebc97c50174e4317ed5d9cf2878c924937bd258bacbfc83283a218d443d8ee43f8cf3c64459b189e6b3ad100a6c6a3ede9916f89b8bb67cac332c0519f502a4c427f5c9af1a16a59a2122521a0c624a20149765e986339ed63567cc29cff15d7e8ac026c96f08d6ac4e057db4e66361b18ccdc3bcffc300a996ab7346232db7310662c75b39ad7aa080b23763ece54960397b8de836071b8914d56f95a681accb8fcb9529e5e4cfc2ec0601f7b0b291524e180aa0a69fa74ac2f17aa88162c481f51543a5a527da5c42b59f9a72b14dc91574b51e5806ace3f022d1f19e3eb621560478bb70beb8407719a01e16313d2f0c785e3b9886f679acfa465ba974676c0689a149ac04996f4132dc4974f2fc322b56115a64b0b5dbb8dc71869cc655dd61390b032f062b024bb71505640a41cc6174b68870da11eaeac28ad061f3abccf4e12231655eaf9285b205251ea69371d90527793495835715ac005868a78b1cae80025426848c4ae869b52034bb266e1b97480aaa7a31e384780442d9933fdb750efaeac0bfa802e5314d28a17d374caa05b46121e16362e8341dd923a66872df3c942177b58951c40ad1641f53a53d8708ebcc22aac67ef262b6155007dc6880a1f45cad3a5312b282055b1e0b181d9b396591fa78dfccb9d6a92d5cf8189c14c68cf4238654716f0a1e4f2542cd35a7e4e2185814c1f5b16d8c423213c69d5958c46960b8df589c185087ec5474df3c5112b5bb6bbcc6ab7160abdc2ab28801d775caafa049479a837cfc8847763559ea86239889385baa43a2848b489087fb43aa20acd7ac05606767798500f9271271e52032f21fc2a82d8d15bf774771b69c570ec488053743dc5398c4363aeb3932a5c54d16f45a033386dbe3b2d0a851116c2cd2fa4671b95cf7e60bdcb4976a2393647b714031870b1a6b2d486a5cf2a8093b7b948c9418f3a27f6296ea12336b8a6dd5a5715ce9a70dc6978038369a10332e3ab6c2971961d5c66441abc3290113b21c46e96c509aaf09e658d9b77928935b9a122e42bba23f920b58ea48f3f19a7924128669c09e135f772c275e55904400495153a691794a8d182ee1314446371501e87c41a944f850c9cd288cc2ea90a4e27864c79e554cc5924c4ca9a217dca424ee8b76e49993ae4b085e9809eae27401eb9c6c794a67a31705876243478f86d5b9f9cb3295422816526439950a412b4d1d28a70c6b9794c959be155aadb39e00b418efd0664b08843d20b71c547f1468c5fdd92b9d818336282f34f19b515946a7961b5a9319d9444cdc1aba840cbb57272e4da4ab20facd5fe4958a57c3c812978fd772c2862dea8b60b30a601b692dadaaba0f361cff27c5c734a42265341641b861b7899cb311e7e0acce396bce2809f24289c5361b91cba88493991987c0aca3b070411481e154104c15780abafe725dd3e1adf00bb0eff4a29298ac10c63fc0669df6379294aabb4588aad2087c9c16c9afb654f0c9c213d79cee1a843a84742d574de252a4f24795e9aa631d5198f07511160300a2e02a402b4cf8aa556ce67bd341307ce5a1eb6609efea3f066379865489701783b2c95ee6967f0893d44d76104bf396577fd719d69eb306117f3abd65385a87af12d1bb6d04330c2e803c2872400c49e1bb10232946ab939319e84ff32cd354dc15d082cde5a3ded5edaec5de3bf5b4d7c2f2e18e87f499c1968993eff196753db8045e2c8ba8 + +comment = Official test vector 46, seed: "6b3996e8bc6f52879f2b7be012c44ad555707cb7e5fd8abb3457a298336d6fdc9eb7853008ff13201d5969a315c7e493" +entropy = c1b3cbffad4b306f9af0cdd3028876486dbe858875c9b6497fe20172a986c82b1c96249919cedc2369d8d739ab125e0d2ccb82dfebcd90240a545cdfe07511f2 +expected_public_key = 0846c63e2c3018bc8733f05f8ce3b614088a787669205ac9889bce2d3b523f366f4bf811f004666b2b654431b135d97a70a00fb9a3928c1a4a2c7285f6f7b19bb766bbe6b966b4013ec06833ec6f1118a772c2465d81b77ba740b7ea33129218542a41e2f1b10f42bb42396e9a6c5011351e783641aa692a982272d9544ac93580fa6a51b8c7b6a4b5b1ce3b58f1d901855bbb2b68b988953ab63607d988999ed96e5a4b963497a061ac69bd90c4eab7c0dc17820b6963b0293d4ca30d82f5997a877a9aa71c5c7893c1d153ac6779d0a88190b13df828bf3afac9d7ea392fea899ef844535187af673972399a5fa31034c02d70b57b97434ecbf3b1985c86ec75b23ac0afaa67225f12a257b78341966bfd2569670680e012899c112ad3873aaaf26d2f4a5c8cc133c92b9a446530c169b6b87b118d03329374a71ada1778a2035986ceae200c763a12b6e2b2fdb672b4d58d8be640e61576f2cac617a5ada5d1b874bbac9d272ee4c881bbdcca1c9a84626012b988395eb5a4a48bab1e7551b6cb57ea7b627138c3ac252bda1a83ccfaad69e38ceda6b149c1b3ba295fd5025c63225ce88ccdfbfa6b3950cbcdf96e14dc0962745a5fa32d10525f71d895a2085620c89024d922359741be366ce9038aa3b260320a456858a7b8d01bca12316e9c6d1782bedcb590a1d2ad9ada0c26d3818652ce6f3b6403c94dbcd1424d090e9deac559472c9ac19cbb26c16e8b27db9140a1161ea96a171728689cd6b6ba0c8002ba6c46719a1a0c175638770cd088ae29a7fa958209788ade14354a1b0880f05ef7c15a6786be063b357fc7521973abe4fcac0a8c26f3eaa052959e2f973709c9c6bbf4c889c8b76c0ac81353b4a4dc81b7d316f75accdd1911df10a7e838a7c2023ea1eb0a956abb53fba02c48396807229f492966796805e04ad62b8107493aab264a5beb32f5459c06aa6e7f79acbf171899a911fa910dfa6687b2c28c1d419a4817abcf656ff669b587b72374f3cc20b92858361d21bb85a3b9aba157100875c993b54ccbc84db2d72374bcae29c5479cc95197e625da047447ea5797551595853651912daec4891e68901bb67faa98bc5050bb50e913645874fb7a0e51c816acc88a7f8a4ad383170a583a2e17b0d5766e12dcc827386ba8d868ee16b2fb892aca3941cdfa7a487c13af9787a309779b759cdc037c13e839314803bb10a3ab19b7fae477c8c322bf05bd3ad9cfb0b241371c85ffcb607748cb518a6c896830b191737ba289b15288ab59869e22637c57019818801ef9a6b7160ac1b5b4d7519b41905e6687b3fa7230eb88a3c9530813561308b68bd2b740e7aa08ca72cd6468c008ccab34ab99b6773c533b3914b19b2b80bf7e783e7bd9366c8962e7f3410f34651ee606eb737e6c9c5f6d306af7348ce955228cf02d15b8abaed16994b56260221beb1a29be5596e204b9ce111127989bd2ab49cf27c976f74aa7b084fa6b8400a25f3c36213f7c2d160045d865c75aa14542f5a4e4d1459b5676491c6a3fa0a2f0319ca1a63a401c9c3a14c94f0016a9a69e64c522aee93e8b96b4f6691322242b20353e0d8b995a6a9129e961ae7349f92c92a90b833e82b9fae1ad459ad417635c409c28f9ef936ae28d221563e30f83162cef01b482889e +expected_private_key = f3ac3178bc3e6b8002eb20046ee3288f9cc63c1abd0b14a118d52e2c9a998d4c67e2014415084f520945f55b985adac8c503079789aecc491eb7ba540f32be8823a4a837786be140d260cff5d46186588f4fe2419e0c4ba1b619567b9d8206b53ab1289640520f2259f5d6854871498b23696a321813d7a544e77fb3100b34c89af2c63856fb43bb0a74a6073958d1199b4098386984847962b353b4d81aaf4cf65349c8197db8c1b29a91fde5af1f9749a96b3b82c567207a81a163347919aea565304b4820369799d352ce72415cf1c692537a48ab603b9dc741a08a66d874bf46daad570b6f1f4133067a1d900ca87cc25e91c4ce1c84b46d3c5baad46fed227268f1a9dba968eff27249b3c6e4c7c19e8a13046a2b45bc24f4304a80c09d37ac289f924f33e97181b8393eaa82a6fa54f2e76dd88791b5c3773707046c362d94ea547c3050ab251953464f4e540764b08103a88e448446f6b82375c15e3ca9a98798639b83638ada857bdc1e3c6705471975c51b8087a26348babefd234d27d6c055d3aab7560b28dcc13d343a79530ac868b5f6ac83af04b8d7a20b64dabe9de32a5c1b2c2acaccc4588c1ba26f5462aaa5c1bdbc36467f346a1ab5c5840a07bd33ceb44093659bb0451c4c87ca4852172dc0bc3674b4275078cd2b9a3afd61bfe454107d092e5840c4968c547adc723c1970cfe705c5d33e3a4533f0028655c6ba44ab22c2a4c85a82b4b6dcc09765124e43c985459cb2ab1519db1ec6f348d017a785484802d90e0222ca2313b4fbc465dec0cd4f3a5675e33cf0db79145867d5f0b8f340526c8a744929728ceccd146b6e66d03f660aa4e2e15d200b5960f3a03b571bb2e59160048e498c15379027e07987ddd841bdaca79764bcaa1c9843fccc65b53695335d9d4cc789e062571665da99b4e10368467aa551775c39c7c9dfe7624e8940f294c8655503f2f970071b40f6ba3544c64c41887184828be6057a9e972631604901a7870733580c6ab8d4aa18b49cb4d567577aa8b0ca2490edc68b168583b8b38415d32f5558996cc911a9470951430c36f71712f1c579a12327c41c441c980c286b71a31748ea54df2a557fd1701c3173944b7b40117ef9cb08a7d03d45531b8de4c753f697ec4b4303448c260b0783c81ed599425d9b16806828bf795c8cf65a95f366bb90110cc75d3e6064bee17cf1497f36c48e68b46ec07417b2a876cb556c705c7ddc387d74f2b0aeec9070d227af09a324495f551680a474328d379aac253a6f4c42c865a183d7c2f4f8ca94a92388b1afbb5408cb1c0fcd3c945e2923acdb7e16a45c03ec3298b3c44e9c1e75d049b2ebbcf2f29a2d3b7fc68644530010e052a0d357809009cd786604a39898b385b70ad7b3be011ea83b93d4426f4f20a3d0836fc6fb532fa14536285013050c16d01c5752884e49a82a4a0bdbc8bc2c7598d548278703ab4c607a16b1bab64052f40a06d3915cd03825f12c069d956f2a5662e05804183932b5216ca66274214acf5c01a7f4c77ebf522db776068f94151f7ac33831259b53bc48e99c50b260faec0b7bd3cd4fa9b5a5c2588cf098fce5aaeeb15fe651355537953d9b8580313b56336f0846c63e2c3018bc8733f05f8ce3b614088a787669205ac9889bce2d3b523f366f4bf811f004666b2b654431b135d97a70a00fb9a3928c1a4a2c7285f6f7b19bb766bbe6b966b4013ec06833ec6f1118a772c2465d81b77ba740b7ea33129218542a41e2f1b10f42bb42396e9a6c5011351e783641aa692a982272d9544ac93580fa6a51b8c7b6a4b5b1ce3b58f1d901855bbb2b68b988953ab63607d988999ed96e5a4b963497a061ac69bd90c4eab7c0dc17820b6963b0293d4ca30d82f5997a877a9aa71c5c7893c1d153ac6779d0a88190b13df828bf3afac9d7ea392fea899ef844535187af673972399a5fa31034c02d70b57b97434ecbf3b1985c86ec75b23ac0afaa67225f12a257b78341966bfd2569670680e012899c112ad3873aaaf26d2f4a5c8cc133c92b9a446530c169b6b87b118d03329374a71ada1778a2035986ceae200c763a12b6e2b2fdb672b4d58d8be640e61576f2cac617a5ada5d1b874bbac9d272ee4c881bbdcca1c9a84626012b988395eb5a4a48bab1e7551b6cb57ea7b627138c3ac252bda1a83ccfaad69e38ceda6b149c1b3ba295fd5025c63225ce88ccdfbfa6b3950cbcdf96e14dc0962745a5fa32d10525f71d895a2085620c89024d922359741be366ce9038aa3b260320a456858a7b8d01bca12316e9c6d1782bedcb590a1d2ad9ada0c26d3818652ce6f3b6403c94dbcd1424d090e9deac559472c9ac19cbb26c16e8b27db9140a1161ea96a171728689cd6b6ba0c8002ba6c46719a1a0c175638770cd088ae29a7fa958209788ade14354a1b0880f05ef7c15a6786be063b357fc7521973abe4fcac0a8c26f3eaa052959e2f973709c9c6bbf4c889c8b76c0ac81353b4a4dc81b7d316f75accdd1911df10a7e838a7c2023ea1eb0a956abb53fba02c48396807229f492966796805e04ad62b8107493aab264a5beb32f5459c06aa6e7f79acbf171899a911fa910dfa6687b2c28c1d419a4817abcf656ff669b587b72374f3cc20b92858361d21bb85a3b9aba157100875c993b54ccbc84db2d72374bcae29c5479cc95197e625da047447ea5797551595853651912daec4891e68901bb67faa98bc5050bb50e913645874fb7a0e51c816acc88a7f8a4ad383170a583a2e17b0d5766e12dcc827386ba8d868ee16b2fb892aca3941cdfa7a487c13af9787a309779b759cdc037c13e839314803bb10a3ab19b7fae477c8c322bf05bd3ad9cfb0b241371c85ffcb607748cb518a6c896830b191737ba289b15288ab59869e22637c57019818801ef9a6b7160ac1b5b4d7519b41905e6687b3fa7230eb88a3c9530813561308b68bd2b740e7aa08ca72cd6468c008ccab34ab99b6773c533b3914b19b2b80bf7e783e7bd9366c8962e7f3410f34651ee606eb737e6c9c5f6d306af7348ce955228cf02d15b8abaed16994b56260221beb1a29be5596e204b9ce111127989bd2ab49cf27c976f74aa7b084fa6b8400a25f3c36213f7c2d160045d865c75aa14542f5a4e4d1459b5676491c6a3fa0a2f0319ca1a63a401c9c3a14c94f0016a9a69e64c522aee93e8b96b4f6691322242b20353e0d8b995a6a9129e961ae7349f92c92a90b833e82b9fae1ad459ad417635c409c28f9ef936ae28d221563e30f83162cef01b482889e5818ac8d7a38c781e3a0bc43d088e6d391d1d67d9639b260bb6f58a19a57150d1c96249919cedc2369d8d739ab125e0d2ccb82dfebcd90240a545cdfe07511f2 + +comment = Official test vector 47, seed: "730b65ece22de27d573ce3aea7cb021c415df210d228808d91d4f380070ffcb0778b683c71d4853deb569c822765f2a3" +entropy = ff7495b8575b5a98e4fd21fb4c3e58cbb60f14bef21aa74cf8802e3153f14807bdc370460375a778d1a31d01c42b66367ed8d9e8f84551002f552f0e52102b5d +expected_public_key = 964435fc16be2cd2276b7bc78ee8b5c963af2af4673a93940b429131663cc124be5a706bff5c157dc17dc5cbc2a11418dc4b8a28c841c5a831b1a2ba989a20fdd17dd06706ceabc0d20714d5595d54216e9fb6824e3272de0a1e262aa246494152b1cfd95c970f38aa35fc0337b26e76c77a0a76bc2c57b80757550b11807a423b85e32ddb537ab6d4694cb8b9ed58b11c9a6acc746749c21011a66dbd7896329c3a31d0a7e1e78efc93574cb7b051d79188ea4981dc6299eb9bd1bc1a133a41565305cd4a09fbb10934e7a3d132bb0eb83559c484ebc92f7cf93e445020b7187e2705a2d1a8386c008ec7f22fe172088360cd3fd160e7020b6d0c747ccbbeddb1b84fa7549f625dbc064621fc2e13f720188c200c1ac1f10394fe4117018b9640632fbed570c942575ff61a7149a51f9993b90827ea2a08c32a330747ca27ecae452154ce1a6a67a8b63676998af929e8a7a9d2ab709e2162a2e0bc0721bfc7e49c5b2c9ba975b3bd881aa3782391f5cee4cc1835c83732c84f54b373eb18869b2c90e9f986a0ea345cbb020333893b463671c95e6aa07193d06f7e62bf4361cd0009b1e528c85d147d0e650cea7b0c67f1b4fb754bf2f1a7b9cc621d4c34682a6195776bbb9b2cc866cfa94c368a2b4b346c75a2a6bfe946cef09416aef21b15d3c72b7cb408141608c058e506271380841656963174c70e09c1f593acdfb9bf4a3a9387b693f882495149c62a77595574c0bc745b51ba8338c6361a293402e74df74a7a70b49faa1ac4d66b89fb6c31dae59f318b610f00bf4f4a282f752a070582f2f3c141e168f6fa037f23945893766215b9ee9a3a1de662060a5b1fd34bc8dac56c0875a6f82ecf8863c1692dc2073cf517cbed3c362a853beef1a8cf2247000cc4cd8176ce980d683b8ad89b3eaba3b962624f5ab3695fa10a88055ddd664a2ba0749e439a39c6999496999be3ba7bba2ffe06388b1a6c83068ae70a1c6f8a36e788b8aa148933c896eda61efc86cbb7d5c9cc96c9f137c6a9210347289010979bc1e16700a610c7c990d685550f537ab0c45b2bc57e5ef4c08b2220961c6e17e95e2e4482a4a94da2e17b6854ce57c263d69429e1566bab646fdb216e0444cd8fcb7df4168ae66223a0ccad971583b5917c4805271a17b4a1e17462815cb39332699ac447332a3f7acedc03541e93a822a96089d6a1f47a7df35cc9b659cf419bcd2131b98aaca67343cdbafa3db35661c38c0ba1e18043a4c945067adee46e428a16011abfeb58c1bc8b2330288b57cc319389921857c9d015a0471128c34cbc13417db24b91a3567ac299cfa6d4c2f1123661a3ce0996111d340d9613b966955c6a758fa7f3556f6716e5ac7ad3a93174b2032a983cc0c73c0de302f9f83a0de89a1fb576cd3b41505b5ba712c387730c45399b8cf0b0e548cbed984e7bb5095cf7263b05cba437ac6fc369ebca85e0211715133bcc314723d79c9b93abac57ad3d3a5e77f2986a3539eb795a5b4967ac7753115b916236a97900870b658b9d4b3e35827e1aa9adc3500fd9ba18fc6b03465903858c61c1259cf485338cb700eb731f31643b469bb259210cec78c158e3290573c5228518e4697f19171d8f1a3a633448fe9c83bd28097bb29a168db5af1d1b354b6881a2ce509b +expected_private_key = 37f7089480382622ac6687b4b15bbdbc1a9ad7467e8ff4cf44f0614de74b9591b9c5410d2d7084bb57ac27963aafac148de80dda6232f4a0c634d677a80c226fe67063191c05a54afc026080877538f63df93cc6fdecbbc0a9a0a4215488da1a2f7b1ea8f8b917f32f397b94c80170bcd423c1f1ba4c736449f84bafd6711b0070dae72de1ea3923435fe15a4fb35ac98d6379f0a44c200a37704b5b269ba3a555961aca5e2cc1518fa4bad3c23438e06952c9317d198b0c112d79a89560dc3361f5732f820ce4d16ed448ac2ed221c8ea3601602c27f640dcc394a7ecb5079978cf52b80de15c3015839a44b9ee36837866c5c8e9579849b331e53dbc049e46dbb524c2090a54ba793c845420a7c2c29e78a9b8c83c310d780f74127c02a59ab68c1b29952dff1196d0940edc338df3e1c1c8e34fd0dac4d5596f97a2afa98b1e8be46bc0a96df412639ae5b52229086229b5bc79ac020b61a56c04091c10cf9940f798a9c50ba1f5fb30bfa947f20b62a60215c5a88d23b70c0e299c53f49a1ed511ac5812558133d9f195e1fb5d77314559ea79e63a88e781c4224155abb5ca91f089c0c609cecca32e549b0cba167d9307a3a64681a815a69c5d7e787751162483e7701437034f0864d8d53201fab9763c7921eca6f11247e7ea364298c1c3ab893549572bec45c1a8c3b88659cfd526810b23f2095aa6c1424c7178187109f83063b52547b9c731f9933622a33c7a8b927a50191593488f9a0d12331017919159c7a027c3956fe109393a167a6475cebb49224736847319d161490ec52396d7babfb638bdea29f50c9ce37314fc858455f63fcc70cfcb751df12274feeb45a124ab1b997c917a550c3469a0c185eb0238ffcb4dcbf751e12ca17a71b807b1446ea7180ee302e6998ef8d12a857c84ffc377f5e42fd41238a54345229916a715977025b3b4a6060f778de7d426a2f95927335cb202bf4080b8510cc0da12c4eaec4bbfa42997e21504b8c5d32604f1d66e8d55b50c393f973acd37a236db595e3ef08239c42fb5e9243d967181b9b94f4521c104a8aa726dec057abd419bc8c6cf350c91acb78b0832144f409f78992652e30eed7ba2375b3245d877c8e8b873f0427071c956633495381a2c642b15282b9945c758910fe469cd091b4458218105da96a479be0ac6b3ba155d359b2815916e93e9bad3d431945b852e519df0129174b24a32cc9fb8a62de96733d153a799cb8fba3c86b9101cf3d4a97bd3b699467991a57129607c27274d3224cd1848c17f1550be47b71a119873045e215bb817cb92c12a7bdc6347df8b64dd686873d800b4672aade8af56d2995546cc37c06f9212a54745c5597184ea85cedca7b980386fb91b8ae677a035a4547b5848879c2567c8cd6ac285f6f2460dbc0b73f5ae0993c988418c234895380c556042acd15a6c015a13ebe16cdea4be38528a9d244230a0ab053c568e31c64d06a3d7bca0e5207b7669811a3512f8ac6887137b0b7627d2401ccd604ae786753fb6568cb522b28712211208c1849d1f75cc4fb951d2aa081ada952998b0b0e938b77359233a76c135897e91059cc5639e978c12c6bbfb735fef4bcb1d60180df21d964435fc16be2cd2276b7bc78ee8b5c963af2af4673a93940b429131663cc124be5a706bff5c157dc17dc5cbc2a11418dc4b8a28c841c5a831b1a2ba989a20fdd17dd06706ceabc0d20714d5595d54216e9fb6824e3272de0a1e262aa246494152b1cfd95c970f38aa35fc0337b26e76c77a0a76bc2c57b80757550b11807a423b85e32ddb537ab6d4694cb8b9ed58b11c9a6acc746749c21011a66dbd7896329c3a31d0a7e1e78efc93574cb7b051d79188ea4981dc6299eb9bd1bc1a133a41565305cd4a09fbb10934e7a3d132bb0eb83559c484ebc92f7cf93e445020b7187e2705a2d1a8386c008ec7f22fe172088360cd3fd160e7020b6d0c747ccbbeddb1b84fa7549f625dbc064621fc2e13f720188c200c1ac1f10394fe4117018b9640632fbed570c942575ff61a7149a51f9993b90827ea2a08c32a330747ca27ecae452154ce1a6a67a8b63676998af929e8a7a9d2ab709e2162a2e0bc0721bfc7e49c5b2c9ba975b3bd881aa3782391f5cee4cc1835c83732c84f54b373eb18869b2c90e9f986a0ea345cbb020333893b463671c95e6aa07193d06f7e62bf4361cd0009b1e528c85d147d0e650cea7b0c67f1b4fb754bf2f1a7b9cc621d4c34682a6195776bbb9b2cc866cfa94c368a2b4b346c75a2a6bfe946cef09416aef21b15d3c72b7cb408141608c058e506271380841656963174c70e09c1f593acdfb9bf4a3a9387b693f882495149c62a77595574c0bc745b51ba8338c6361a293402e74df74a7a70b49faa1ac4d66b89fb6c31dae59f318b610f00bf4f4a282f752a070582f2f3c141e168f6fa037f23945893766215b9ee9a3a1de662060a5b1fd34bc8dac56c0875a6f82ecf8863c1692dc2073cf517cbed3c362a853beef1a8cf2247000cc4cd8176ce980d683b8ad89b3eaba3b962624f5ab3695fa10a88055ddd664a2ba0749e439a39c6999496999be3ba7bba2ffe06388b1a6c83068ae70a1c6f8a36e788b8aa148933c896eda61efc86cbb7d5c9cc96c9f137c6a9210347289010979bc1e16700a610c7c990d685550f537ab0c45b2bc57e5ef4c08b2220961c6e17e95e2e4482a4a94da2e17b6854ce57c263d69429e1566bab646fdb216e0444cd8fcb7df4168ae66223a0ccad971583b5917c4805271a17b4a1e17462815cb39332699ac447332a3f7acedc03541e93a822a96089d6a1f47a7df35cc9b659cf419bcd2131b98aaca67343cdbafa3db35661c38c0ba1e18043a4c945067adee46e428a16011abfeb58c1bc8b2330288b57cc319389921857c9d015a0471128c34cbc13417db24b91a3567ac299cfa6d4c2f1123661a3ce0996111d340d9613b966955c6a758fa7f3556f6716e5ac7ad3a93174b2032a983cc0c73c0de302f9f83a0de89a1fb576cd3b41505b5ba712c387730c45399b8cf0b0e548cbed984e7bb5095cf7263b05cba437ac6fc369ebca85e0211715133bcc314723d79c9b93abac57ad3d3a5e77f2986a3539eb795a5b4967ac7753115b916236a97900870b658b9d4b3e35827e1aa9adc3500fd9ba18fc6b03465903858c61c1259cf485338cb700eb731f31643b469bb259210cec78c158e3290573c5228518e4697f19171d8f1a3a633448fe9c83bd28097bb29a168db5af1d1b354b6881a2ce509b172cf4f8dace8a96b8f70da966080a5e3f132873ca7544343377a99b65e8147fbdc370460375a778d1a31d01c42b66367ed8d9e8f84551002f552f0e52102b5d + +comment = Official test vector 48, seed: "5522a5a891a9a9b5514f4556afd8df40b9cec63a01492f0cb8a1db073a285a963e4a9ff2376c88662f7d8d241f8acf17" +entropy = bdc3fba1c32751139fc45bacffb3ea97f26573d804a5f27a459293d95190ed8efd5a08f656a6eb8cd20679930a31caa6a6331c4b133a6838c223ef9f769f6246 +expected_public_key = 58718343322db0162d26965d5e946b700ab88d702fd5a1376920b5be702297aacde28588da91c719d40c1fab0af109742ac26c456961338c44c93c83ab58581635499545cca66160e15a35ba4931e2b91fee68a8734acbf72755e8d452d17215457161284435eb6a7a2933c8d146a12679143b80740f68ae052087eeb988771a8fb43b34d6ec79868a0670551bdd19cb5313892bcac9e4fb500d3375ae471a3ed551b2d9c76142b22607615454a910f8578e44b448aa9200d805cf4c15eb635013bb80a65593ff578c794066f05abddb850ff976c74ed6acb4c41064fb5eeab479a13ba57dcacf7f02421603194a3cb549f08c0d700790809ee0e585dce4088f96a740320c57d5a632c8bf5dc173f0f841173aa47ca42004b808ebc2a6a1770ad9dc06027557f80420db47b0158a1d1ff32007fc058875c4f5d21fabb67bfe8909e10b51bb35c76d0605d0e6a97e56cb93dcc58f722d95f33008b0a237b711420a20269a7097396a4a98be20b8226e103cb1136ea3fa39d438b305b63fa049c420cc378392b9f911bd7800bbaaf2bdd7586780c7078dea622df51c7190841585bb16bab9a0d83625d55826e3949ae018e7c4703ca082466b9a078393c30a4f6b7b1fc775c9dff7cfb5909cafbc66ea946e6f098f881b3039c251fd3ac142029e8728082f838a202cc3586672cb6285b021c41e3c16f5787ce6e319d849483fe40d989c246f7c36c11a991234ae7fea68770c79d8290aae3bb72ba014aa1279fd13977a49b0cdd494ca00c610cc2306059b695686399c1590f274f735142639425dd88026f8be0f260cd66672a12b5c7b5c7323408a2711677f062625eb8f3541098d079c13208415dccf3ff72d1999721db3c271f7521dfb0f129b3cb6885310a0689166a3b97b09610347ceea5579650720db621db20eeec24eec2144fb523ed2d30f64b9c6655928b3d06e1fd9b088ac8b7c964213e5674757c7bd48a3d066355f0249a50548f430c55a6ca0471953eb7c67e140aaf6322b7741225931622db114ed46b9ea997974c9ae2f54b87125ce79e8621d712688b50c7a49877d52091643a4a43148550135f27bb30ea131521583f5b79255309465f4b9f2233027855cc0e7c93bb33705136c88392cca717254640c540573d3a20032c9b297eb5b02c954c744c4c6143a56eb48f1d15439f885803ba5acb524f3d54bed37145cd9173ed92a00f724273787cf1b89c788184de0905bea74fb331ddba00cda70c1547c634c706a8447145489752b0633628ba4f5286851e1b5ffb8a7fa2bbad3f92c542ace74e67aa07b467e70b6a7d3056592b36a7a37c6c7114c610721e9c6ea933742e43609c41f6f3803e99a8d5a27b069bb73c892bf07524a8b2989633c96ccf33791ba29f3d575f249c640093046d1684fbc701ac633381bb349bb7d351230a8bb1a22223de3850258ac7043b887770a307c3746002cada2826e47f7694ef51f94fb9e3645aece6273298592bf00c0fdf14c07d8c9fca401ff351d2e35491aeb55aed9b1b0ebc2424cc729ac7eb07630b8b11d0e47c323d6b3c0ba12dc235d5c310ce2c7bc1f0a8467d627568a185855750e12717760355a0b8a756468e95406d375f6a1289b8cdbfed9f6518d7031c57fd3455d4544735cf52680424c90f14f +expected_private_key = 5e43bfe8ea443466ab6b087deadc672e7aadc85521d549b978b054a9b8949e519e3fc3a653607d794491341039713037d31c9824eace39e7127a974403441e25b714fafba4b98041e85b2fd8d8acc2a69aea9c80930306b46baf5245a505d48e293a77aa4174d1c095b0b4a45754a4a94bcb01d4543bf7c7def2ae2009408725c58bc76bde03abef3c4ee0831d3c6b2632609707b3b861f093e857902d52a2a48619b1ec20dde7a923412f79c22389601473076965959b2aa3c79dd31b98ca9847731c89b0929ef5174cc6b92972ce2c07c8139a62c901216245cfc92b2da158079e1c93c8e08ff438a02ddca4ca948f47a106d40ab6a5b0afaf52052f237e44f0765b3436271421308611845785e257cae691c39fb8c80bbc1c5fd687a547b7e8e3aa1d7c15a918984b6b359cd24711cbbbb95716ea54a8d3511c5dc983fa1b019e0b0d7de90c3c0a9e7652c18e72cad6f9c510e64f0cda8cbd86502a5880ee1536edd16ab36bcfd859ce879b3f5d6a0d90630668b7385c8599ecb1849a4942d87a91497129e196309156c9ab245f4c637080c963f9648fb2ba6f32d2566f88bce680203dfb827438295f8670c9bcc34a98497851bdb0e631ea06accc26373809986da62fa714012d2579d5d61443330e3b882c800b6c9d02c98e9859a4022db4a09510fc91a3b95bcbf73b3a09311cd13e52b61733e02dbb400e8a54a30668311ac02fae2b55fe05c95ac43875d92f3c2acb3d4a6b53d363d5d75a697061055a3a788bcdfa051edf97c3515ca920ebac9e7a998bb598b8436bdb63550e416d2aea5057562a901b609b129d92b27536e02c26ec6a3b2c5f6b733d0529330e9a89600b089dd30a0bb52530a3062be741b09818a78b4fb9f274b7262ca23b3f2a40542caa64fe38a6ed06beb5498733a38a7fd0b5aec2673aca2b07e00909e68d40aa207fb179cf7a60a9e13719635a15cb221d1cc88b921e950c94cee17d60f80ca5b4a656f501d7136d1245207479a1da42c26c48664297562a0bae0e7906e9d853fc7c490e4078b5b3b226b37101a31b5d05a26f1ca1f231a853f23f59d86a3fd269a0256eebd02cc0c6b77f1b1c613114e1084d8d1cbabd0c7702f43d2ee01db985382c562f1b7885a7015edf59bd8988b5bcea1cb04639bbf5b119e6293f908245455070da3013d2b6e2116776694b44e3a7e433407099a51940870b336f547677665c7066e181ce266ff0e508268731bd13afa2ecb4546276a5dc50772a6fa38541af968ae5c59e2d04c3b6002c7120a6a970ada2671590411552e48e7119c7b7f7ac97429e9b7cc0b5242df277cc10e7c48976266643a9b2308cf1799324780743f95e65851c03599fea7129d5552b86ac35aed10b5f00058a8742c02a3e4f6cbf5df61c66143ebe933060c98a4bb55318566184601bb395625fc86e4bd47377b54459b45e50c145596b9178d57d01bbbaa9a63bf444889fc810f1e40e07d289e0b04a58f84348463b9fca3176aaae6c1c119cf679bacc6eb685b9f443c2a9e304bba0adf3888b42698ac1f68f1626439e796e1967c7bef581dbabb6c22c9c16029e18d8493a524fc2a41738a25e735c665e79ac423aca37b5222d970358718343322db0162d26965d5e946b700ab88d702fd5a1376920b5be702297aacde28588da91c719d40c1fab0af109742ac26c456961338c44c93c83ab58581635499545cca66160e15a35ba4931e2b91fee68a8734acbf72755e8d452d17215457161284435eb6a7a2933c8d146a12679143b80740f68ae052087eeb988771a8fb43b34d6ec79868a0670551bdd19cb5313892bcac9e4fb500d3375ae471a3ed551b2d9c76142b22607615454a910f8578e44b448aa9200d805cf4c15eb635013bb80a65593ff578c794066f05abddb850ff976c74ed6acb4c41064fb5eeab479a13ba57dcacf7f02421603194a3cb549f08c0d700790809ee0e585dce4088f96a740320c57d5a632c8bf5dc173f0f841173aa47ca42004b808ebc2a6a1770ad9dc06027557f80420db47b0158a1d1ff32007fc058875c4f5d21fabb67bfe8909e10b51bb35c76d0605d0e6a97e56cb93dcc58f722d95f33008b0a237b711420a20269a7097396a4a98be20b8226e103cb1136ea3fa39d438b305b63fa049c420cc378392b9f911bd7800bbaaf2bdd7586780c7078dea622df51c7190841585bb16bab9a0d83625d55826e3949ae018e7c4703ca082466b9a078393c30a4f6b7b1fc775c9dff7cfb5909cafbc66ea946e6f098f881b3039c251fd3ac142029e8728082f838a202cc3586672cb6285b021c41e3c16f5787ce6e319d849483fe40d989c246f7c36c11a991234ae7fea68770c79d8290aae3bb72ba014aa1279fd13977a49b0cdd494ca00c610cc2306059b695686399c1590f274f735142639425dd88026f8be0f260cd66672a12b5c7b5c7323408a2711677f062625eb8f3541098d079c13208415dccf3ff72d1999721db3c271f7521dfb0f129b3cb6885310a0689166a3b97b09610347ceea5579650720db621db20eeec24eec2144fb523ed2d30f64b9c6655928b3d06e1fd9b088ac8b7c964213e5674757c7bd48a3d066355f0249a50548f430c55a6ca0471953eb7c67e140aaf6322b7741225931622db114ed46b9ea997974c9ae2f54b87125ce79e8621d712688b50c7a49877d52091643a4a43148550135f27bb30ea131521583f5b79255309465f4b9f2233027855cc0e7c93bb33705136c88392cca717254640c540573d3a20032c9b297eb5b02c954c744c4c6143a56eb48f1d15439f885803ba5acb524f3d54bed37145cd9173ed92a00f724273787cf1b89c788184de0905bea74fb331ddba00cda70c1547c634c706a8447145489752b0633628ba4f5286851e1b5ffb8a7fa2bbad3f92c542ace74e67aa07b467e70b6a7d3056592b36a7a37c6c7114c610721e9c6ea933742e43609c41f6f3803e99a8d5a27b069bb73c892bf07524a8b2989633c96ccf33791ba29f3d575f249c640093046d1684fbc701ac633381bb349bb7d351230a8bb1a22223de3850258ac7043b887770a307c3746002cada2826e47f7694ef51f94fb9e3645aece6273298592bf00c0fdf14c07d8c9fca401ff351d2e35491aeb55aed9b1b0ebc2424cc729ac7eb07630b8b11d0e47c323d6b3c0ba12dc235d5c310ce2c7bc1f0a8467d627568a185855750e12717760355a0b8a756468e95406d375f6a1289b8cdbfed9f6518d7031c57fd3455d4544735cf52680424c90f14f268b6356f92c57da6dd34494b927e8764adf0ad519612ef0d1b8951e50966c2ffd5a08f656a6eb8cd20679930a31caa6a6331c4b133a6838c223ef9f769f6246 + +comment = Official test vector 49, seed: "1853e72329353b3f89ae6a1b1ef700da8ed3c10d19f9e61ee9252e28ebb0e15802ee43083a12a0b7527088832605e3ab" +entropy = 447f6076a627bbc5ad7773fbfeb14b4ba9ac43a0f8b99fb6dcd5e452aa3c47ec20a7237801f470fcc2bd9fd7bea8322859b850f7882d362947432913dd068c01 +expected_public_key = d8279f9a0681cb98bc38cb551320031f46262799c182b0355eec82cdb58d750596a4e6bf1213490810415a4b347e13c9e8514890a0995843936be342e81c7f4971bf9b75925d61ac8c961492a85d83fa8e33c12fa37ba08d7c681c521ed4060481f58be673007a081321e01e21419e232283a01cb1a4481550dbade263382eb93b7e42470b265027a933c480cda340a9a4065b4bc47990833786456aaab5a81c0a46e0076b91ba5bb4d4abe21c6ab193b3a3671c18479db082a706768a63109d2c4224d71c7c95755ca24b056c355e9c22cf5006662b3218edd4b317b19962cb514af123245b152eac41391cb432c6caf9295c66da4e5737ae3d60023f46aa7a604c64a6c403306ca4b96fc2929aed5b4ce7e6c631b473d7d61cbcd19826ab82c0c58880d77ce8f9bcdbf59d645424baaccce334809b43acb99248bbd966c88793a273ae857946902649f97b5516fa2ea2a84fcfbc054653852d8421b6b78c289b49080c8efaf85df195ab5562a03e7099c43c439a25ab41390b86db4f57188f002129f3ea1ffdbb9e9c688ebbb26e0d7ac6eea395b698a134f70f98480e87313b79444963557cee82534e9c1cf10b74718caede3bcbd98a68d9956facd8a45e2184c16b14048b9d28e8bfbf5ab43d1b650ee8cf13148caf451cfb144656052cbaf82e2f765c8c9c66c23b0cbae0257d6000f247200ab87f93b5167478a27b42ad7681b6919529bb1430dfcc809e171a334b33a0527a1d9519c18130971c55f6ec172b86248059830fc57c7356c9bd8263f7d571d0f7bd87d2a1686a7c41db9306558cbdf39f0176959a188b4d457b40c152b7ea09f6860d4d945e78c45eb68b579d48774eb26ad43bc1be3c0ac327c80b4c1115c2cb58bbc24a18146470abc223ad51fa10eefc311f1ac02af4c7432210233a4abc408b1db484e7885d239c0c2b9c4952e577a8ebc3d6a7684e711e12db96e1f988df423a395301d2c15fe2f1abf708bc64147a30e2717f7868ff602d50fa9a3d0b3a0097259ac52057dcc14319c438e113da967f6dfba4279245b72cc86cf724c81769dae271e18c0b6cfa84b916ac89b12a1f8b05d88527ad40346775cc832713146806a2b2884e35628169bc12f67811b507bee3bbebca81ab93b5d700aa92898b3f5cb6e9d345483ca3743457fad8cc5bec2a8e7a22a41ba8b67641ab181d42abaf94d0055206b648c81361f8486408b610bb3552299316b5c0b7d301d9f1c3d55621859ab2ee922c59b11ea9f2a1efe277c534128f2cae6b598c0fa059efc2c24e8a0c2337bc2c57a0bc64a7fce190c656b529d21244eb66a900288b5c484bb033020b9b9ba3019b72387f2746b3b893a1427882bc3135f0a17f8271f9c8480eb60732672d44336b32f851a283224144c480aa302c05836edc1ac4569a6020130b341466322d17811229441c4513a2e8041c85e035113992f16799dfe8c1eef3aff8ca2f341628808a81e8b66ee5ba47ad0863c735a904565f036a85fb1203058137aad2206c303f22d3027e732542a342caf3376d6b065a745e31e865fc2243da31ce08eabbf8183b4294700bf8928da8ca78bc08490810c39747fd3851211b22f26451f6772e0c75659133e8d8c063cd3044da1719855fbbd9796314b11df8459ebd2d92b7fdc94c4c +expected_private_key = 469963001d4d93da7cbaac0acdfc833c47601ae334dcc0022a9220138c16b9eca73ad1863431a34f593addca4f0ea393fc4595d22a7cadd0a8d89827086a955400abad84226541114cfcb3e3a240fb600dd6c0960a7976175c56b0b48c66721e13882e3aa5784e12869f0c8518037955f876997975d27a7c92d4cf005ab859590504c768b02576a94263c87c4bbfe1afb09b8c0a5c067776a0d96a5d12925b44ab3d3e57c6971b0a86617f65a16c7e9b42c283577219409e1ca4de08a92dc5b4e8e87051680c1b24068dda801fe871e0b28ab0611bbb97cd49bcbf159b7785830bc9d302c0a61ad138277afc2374aa64e983506bd11288f4a20376b50ae1c1233a1acf30af1da67301a5a420aa826db58322dc1c7ad8bfd25c3b21025b565c357b4a0802e615a35a384f1794a0612e030228a865a0390197e7c27f45a4258fe26082c850170cae86721bb5c68cb32153b9934de4cb11528c570af363925ab0fedac79748b3489b7180e81ff6db702d5a100336955ec02fd2b9c86c2cc001833b0ba1b7dbc9699c6556b448324d29b0f6a4028bf48a49b1cf60b4a9f91321aa64ca849848cee2be0a29219f783008417da307710f87cafa2603fd206e5698177e81470af4c608a6128908541183a5b4769e74166349e55b4d2a2a84600ef712c2d1f13f4fb3c91bca8cad209cb5ba0ff578bd6e29a0cf07a972d262a2ea3c4dd44a5d55446c174b345b96871076fcf785cca68545eb6be64bc9be17a7d5914d8a50b286d3a2a8e1a53faa53815acf0237b8bf204c34766e97883071e56539361bbdf29187c180414c83d9c09e30983995aa4850a6b2358aa6240642cb9b0fdb739fa5a93ec60c11061aa8b5e71316a517be2baea2f74baee32eeaa0a75d2030f5e8bbe1b517f56511fd8aa499621a9ef6c88b96a9f33b2b3cf04381b5c97b743063a6286751ad9ee14903c4674b308dd5e28bc700134c43c788b04460db78a0e795e24698553722b4c3a095784828960672cbcafc11af32c918ace0580d5bceaa574409854051a2419f148809147133866f9b651a38622f21e0614f10139ba53724831ff312157146169ea29293d2a3f1250ab9cc877d448ecb53139e6c5487dc2931d45b4a74c34bba11cbb965e1e664ecfca54db7bfe7e61db2382e50076a70a9aa028670a354013c894b729945830b1125aa53f4d352bff33fdbe7c64bf70a4c3acff3680976fb26368693d928122ed5707b453a1dd714fa9c5a8e6534d45b53a2ba464e217dc0461be31c5763715bb66b6f3a4c0e7a3a4cc107602cc3b67487a7d162422468b5cf33c8e5a63f801c2016b15c40398f914cbcdac9664b7601680346fdd3a499d89b5cdb7e77cc8a1215661aa34737149bd0734f7be6a0c20bb94e6a89dfb9b0a9d6c4bfb86408922fdc9650df7577e5a89215c8636d5c376f4596c329158964084200c91af4a7699018c6d139f521204bc521110aa222203774db88ac0ac94cb97720a71411eabee0b2863c35607a617e761298825acd91c73685198be96b84a98ac7295142f6c19bab0082c53a8a50a3a39eec2a34e859cfa2c88c9cbc77b1bdb5377981f61c1fc394d70820336baf21820d44c0956e09a5d8279f9a0681cb98bc38cb551320031f46262799c182b0355eec82cdb58d750596a4e6bf1213490810415a4b347e13c9e8514890a0995843936be342e81c7f4971bf9b75925d61ac8c961492a85d83fa8e33c12fa37ba08d7c681c521ed4060481f58be673007a081321e01e21419e232283a01cb1a4481550dbade263382eb93b7e42470b265027a933c480cda340a9a4065b4bc47990833786456aaab5a81c0a46e0076b91ba5bb4d4abe21c6ab193b3a3671c18479db082a706768a63109d2c4224d71c7c95755ca24b056c355e9c22cf5006662b3218edd4b317b19962cb514af123245b152eac41391cb432c6caf9295c66da4e5737ae3d60023f46aa7a604c64a6c403306ca4b96fc2929aed5b4ce7e6c631b473d7d61cbcd19826ab82c0c58880d77ce8f9bcdbf59d645424baaccce334809b43acb99248bbd966c88793a273ae857946902649f97b5516fa2ea2a84fcfbc054653852d8421b6b78c289b49080c8efaf85df195ab5562a03e7099c43c439a25ab41390b86db4f57188f002129f3ea1ffdbb9e9c688ebbb26e0d7ac6eea395b698a134f70f98480e87313b79444963557cee82534e9c1cf10b74718caede3bcbd98a68d9956facd8a45e2184c16b14048b9d28e8bfbf5ab43d1b650ee8cf13148caf451cfb144656052cbaf82e2f765c8c9c66c23b0cbae0257d6000f247200ab87f93b5167478a27b42ad7681b6919529bb1430dfcc809e171a334b33a0527a1d9519c18130971c55f6ec172b86248059830fc57c7356c9bd8263f7d571d0f7bd87d2a1686a7c41db9306558cbdf39f0176959a188b4d457b40c152b7ea09f6860d4d945e78c45eb68b579d48774eb26ad43bc1be3c0ac327c80b4c1115c2cb58bbc24a18146470abc223ad51fa10eefc311f1ac02af4c7432210233a4abc408b1db484e7885d239c0c2b9c4952e577a8ebc3d6a7684e711e12db96e1f988df423a395301d2c15fe2f1abf708bc64147a30e2717f7868ff602d50fa9a3d0b3a0097259ac52057dcc14319c438e113da967f6dfba4279245b72cc86cf724c81769dae271e18c0b6cfa84b916ac89b12a1f8b05d88527ad40346775cc832713146806a2b2884e35628169bc12f67811b507bee3bbebca81ab93b5d700aa92898b3f5cb6e9d345483ca3743457fad8cc5bec2a8e7a22a41ba8b67641ab181d42abaf94d0055206b648c81361f8486408b610bb3552299316b5c0b7d301d9f1c3d55621859ab2ee922c59b11ea9f2a1efe277c534128f2cae6b598c0fa059efc2c24e8a0c2337bc2c57a0bc64a7fce190c656b529d21244eb66a900288b5c484bb033020b9b9ba3019b72387f2746b3b893a1427882bc3135f0a17f8271f9c8480eb60732672d44336b32f851a283224144c480aa302c05836edc1ac4569a6020130b341466322d17811229441c4513a2e8041c85e035113992f16799dfe8c1eef3aff8ca2f341628808a81e8b66ee5ba47ad0863c735a904565f036a85fb1203058137aad2206c303f22d3027e732542a342caf3376d6b065a745e31e865fc2243da31ce08eabbf8183b4294700bf8928da8ca78bc08490810c39747fd3851211b22f26451f6772e0c75659133e8d8c063cd3044da1719855fbbd9796314b11df8459ebd2d92b7fdc94c4c4c6d304e0494d88d83b5e3aa5761df3b299551a24f28994d2747b2b08945bead20a7237801f470fcc2bd9fd7bea8322859b850f7882d362947432913dd068c01 + +comment = Official test vector 50, seed: "027c3d5847ed4470931141104f25b19ae76117cbb64b224ee424ffb782e9a0e988839e0bded0df666fe8e5fcbb5dbc09" +entropy = 2d5df64d62cb07fe630310bb801c658dbf3d97993e68626745de39d37fbfc2b27b534537addaba4ecf14f02ab317d36cb9f0f50222ced7cf029dff8a0d3d2fd9 +expected_public_key = 41aa7b69158362a41767486ec3da09ab4335fe2a25dd6c07366478cda91c691c5ed9264f771124c1f3693050802f480f5df89d5be189da765337a69c5c838488a0a4ba7880e91871fe346cf3abb0aaebadb211b5acd3b773c9146cf97920e509dc202f79b14734c9777a567cd44a43500b5eb8005bf4c5a387701286639e6d9ac2574b33f2432b3a787039e34b2ae511a27825cba7a8e09b401cfc6123d3b4c42318e7b032331230da960a09f61a6a196dc185bb8bf1c1a6b691a06cb57f12be1e45269c56490e256a83c13352a878c724242ff0681881160ed03166612d69894951d65b95e690db46129d149afba2c835d3b138036931423d2f84ca51179466a1028d1601d5c397cc81b1b5e468869185b25095a0e5b5dd6a421b5c7eceb58c4cf97b7feb114fbc435c78857c65098d3017ff8a58f5927e5ee7712fa0c2962939b9d8c84bb6428b3902881188df17479ec01e4709b7840235ccd77acb0bb3a05995693781fb711d61f2883827a96ddace29a9cd43ec6abd4691be1a758b72a629f6aae1c795981c0d8bf8160bfb3b8f5047e1a410cdd49c6a42adf0bcafed1b21eeb95d504b1a48b1ace228bb5e1508bf05128f0cb63f5597851b9df4caa5b6ac10f7f6188dc41b02761f840caa42871c55205cd09771ac9125d6265ddc56a466249fbd774ee53756035349ca12a48237221bd53d7ff1ac18242442935ba818a3b50007a3fc14a2fa3abe437ff14705df0cb5af97561a608a3fea42a809a7a7d5491453c849dab7acd99636931c007a70d01655c7302f9a26012c494de47839c1ea2951a87ff73968dae83a86f392f021873be4c75d2b0700a3b540f50cf6fb664a4627dda9c75394032f434655755d12d4c781e2324ae00dd61744cef6c5ec9680f379a26284bf9590a33350905e080e9b70547ac1cf3ad888f30232fdea7bd2c184f9e1a9b6835401e737204c5ebf2b28f2b58edd399f873c7849cba8064b8a20c9c391841875b4963bba2097b958d752739383bf26787e64ec215974b45848185f44b8780c0714b9651a7685e673cd1b6230c5d6639ea5629c20659802bc6f2b95df274836241165a524ea99a941312fefc7cdd2fa8016d69b652c3e94e73c70c97f65b3adf14bba2d31916522701d80252e9c7fbd7a17d306a4e1e02cda405f3f07b38eb65824d5c9d8b91f7013784fba0df0348f21b00ef5a325c745a829714a5b9aba16acbdf029771d5415e867590cc5a57360a8969407f0749ab8a08a65e37e70146fc1b7bc40d789eae83761e77749a07859bbc046b5a87e3a92a5368251127f12d27789318f8b9c3c1f79211922c852a0b0e10bbb631599190b49a66937920b3f113185d89c6e37da5f7ce9c12d37c12cc24741cb9a79446606eabe8c9ab06d8963c959955f198e03a0bd127242dbf2a2180281a7b65f54c28ec9c6cafe64881d6456c07607cdfb89e2ca2fb3ba8f8357720051c30952734932b08b508402a6a2f4f9c76b053c12a267618928032b5d9e41990a18c2c04ba7c2868ad9f4538ff1b494707eb9da6b81374d7f9731f9a26089d7033a8c24600944d65871d313387b4101c0aaa27ae19d978653638577bcf4caf48083eeeb57f401544d4da3b73dc1c5c4a047b0a5ea85edac7bec66f4d87fd2fe422e7dbcd02d1455 +expected_private_key = 3c14bdd913cda0f267abaa8b0a30a5eaa527638c01926623b0bc2ba55b0b596a92bad72e92845828e8050f4c2f40873918e4524cea8505208d345783f71202496721e361a582c5445fa31fb662a64941abf9fc203ab4a741c9214c1b80b4ca617c4976c819794f53cacdb3509978a6df5900016278388234cc1a09b804679f36718255b2db60a7eee5bc3bc78bceea8060354b54031c4c76b30a1a8b1ebb697ff8606ce408fba72dbf0856e5b53b1e4a4ecc746cdfc77545b46060974c8a788a1d59529a9aaa571b895be01ed5c23a0d22707d89467a5b9c662767a0d77d5c49adca983ce7401f34526dab1cb9fe744bde8c54c230705548b9ed00b9f4ea055466cde77019324c0a7c9ba404b641a6530ae64a964ea47e6e80aaa4652c9a8b66061103f385479e50a780249a909c92b7913329a478880162d8857d58fa39d3283f5a2a7f8ff6abffe2463db40728d06166627e9c92283fa57a2e46190ab869b6c21fbeac86911284153b259bd2a442070d1cc581fdd333e5990f84ac67f47491df01128f0959ada0891c236e0aca87755289c0e6c8fb136974c97dbb1b8871a4c70aa001fc950f0cbb3ace4ac44f800252f5bd76fc1dc09a3d2f8860385a4bf8d765b49c5379140e0a2801dac947c23803ab6b467f2bb1b019b9d53771418312f51b28db18be216794a0467d79ac8abaf2c90f4b1b3474c168bcbcc1e6ae59c5781296467f2b8d63d5842d67935dd429bf8319bc0b8199cca9d3f78c483b8e0771622ea764fa610ee13c1a188c56d0b5c17094c1b7a45321bb69d99a666a7963268a1d0a0491b8b5cb700a7d86ab9039330edd8bb17cf1ac79355a82166458d2323e070ac109c98d201358f22bf9a3b513b8bba43905d1a790a7b1a11f682583ab4fe0a82f3e316b7c70afdd823c8fb7acfd330b22f378e8597ca5357454a71197cb4039e9a81d7995d14587b479657584407b281886d6a7fe9b6170a056d2003bf898027c275b7c1c3d1d0c157145ba52d264699b969d60aa3873a9606041c20b17c90055b8016ea703539638cff8aa0a219542bf51b68cf153a86149881c087d898ef9c3a089cc70a8656117131aa3f233c73cbf439022d224422920501c07243432aeb925c4023185d3f897a79a983d857c6d1422f9b22234005e00882f77c7704cc74adea4c8f3971e7964ba1a530c1f722ef696828c46946f0b329d909a47b83353330630359eb8e9b7e78abc50fca8c3aa9af967c89f464430c815d1959a21a226a966a6434301fa600a4d129886826803ec49a54a34acd62b50e33fd782937571816421341cd76a3570c17ac9c338e4ac4c51077650b98ae445d236904da694f755c1a5b288275b517b4c9b896c49bbc18933e52d34969b6ad8add604b526488c6397842a54b6657b93386b0ed7d36fd2f448efe43b0a144c33f729df530c8b6340cd61897b3c50b0d8ba81228604f7a4bcd120cd2a7bbba3b4818177c435a2b0c3ad838c6d9bd3903d64b32b8a8da5d93589021251d14c920328c4063c2af3c8c41228355527adf41037e1ac6aa69a427a55354ca9d54025306c16f93154776b4a7af9c9ef2298dba9b669c40bd0601abd410357b8940511beb6c96541aa7b69158362a41767486ec3da09ab4335fe2a25dd6c07366478cda91c691c5ed9264f771124c1f3693050802f480f5df89d5be189da765337a69c5c838488a0a4ba7880e91871fe346cf3abb0aaebadb211b5acd3b773c9146cf97920e509dc202f79b14734c9777a567cd44a43500b5eb8005bf4c5a387701286639e6d9ac2574b33f2432b3a787039e34b2ae511a27825cba7a8e09b401cfc6123d3b4c42318e7b032331230da960a09f61a6a196dc185bb8bf1c1a6b691a06cb57f12be1e45269c56490e256a83c13352a878c724242ff0681881160ed03166612d69894951d65b95e690db46129d149afba2c835d3b138036931423d2f84ca51179466a1028d1601d5c397cc81b1b5e468869185b25095a0e5b5dd6a421b5c7eceb58c4cf97b7feb114fbc435c78857c65098d3017ff8a58f5927e5ee7712fa0c2962939b9d8c84bb6428b3902881188df17479ec01e4709b7840235ccd77acb0bb3a05995693781fb711d61f2883827a96ddace29a9cd43ec6abd4691be1a758b72a629f6aae1c795981c0d8bf8160bfb3b8f5047e1a410cdd49c6a42adf0bcafed1b21eeb95d504b1a48b1ace228bb5e1508bf05128f0cb63f5597851b9df4caa5b6ac10f7f6188dc41b02761f840caa42871c55205cd09771ac9125d6265ddc56a466249fbd774ee53756035349ca12a48237221bd53d7ff1ac18242442935ba818a3b50007a3fc14a2fa3abe437ff14705df0cb5af97561a608a3fea42a809a7a7d5491453c849dab7acd99636931c007a70d01655c7302f9a26012c494de47839c1ea2951a87ff73968dae83a86f392f021873be4c75d2b0700a3b540f50cf6fb664a4627dda9c75394032f434655755d12d4c781e2324ae00dd61744cef6c5ec9680f379a26284bf9590a33350905e080e9b70547ac1cf3ad888f30232fdea7bd2c184f9e1a9b6835401e737204c5ebf2b28f2b58edd399f873c7849cba8064b8a20c9c391841875b4963bba2097b958d752739383bf26787e64ec215974b45848185f44b8780c0714b9651a7685e673cd1b6230c5d6639ea5629c20659802bc6f2b95df274836241165a524ea99a941312fefc7cdd2fa8016d69b652c3e94e73c70c97f65b3adf14bba2d31916522701d80252e9c7fbd7a17d306a4e1e02cda405f3f07b38eb65824d5c9d8b91f7013784fba0df0348f21b00ef5a325c745a829714a5b9aba16acbdf029771d5415e867590cc5a57360a8969407f0749ab8a08a65e37e70146fc1b7bc40d789eae83761e77749a07859bbc046b5a87e3a92a5368251127f12d27789318f8b9c3c1f79211922c852a0b0e10bbb631599190b49a66937920b3f113185d89c6e37da5f7ce9c12d37c12cc24741cb9a79446606eabe8c9ab06d8963c959955f198e03a0bd127242dbf2a2180281a7b65f54c28ec9c6cafe64881d6456c07607cdfb89e2ca2fb3ba8f8357720051c30952734932b08b508402a6a2f4f9c76b053c12a267618928032b5d9e41990a18c2c04ba7c2868ad9f4538ff1b494707eb9da6b81374d7f9731f9a26089d7033a8c24600944d65871d313387b4101c0aaa27ae19d978653638577bcf4caf48083eeeb57f401544d4da3b73dc1c5c4a047b0a5ea85edac7bec66f4d87fd2fe422e7dbcd02d145572be2f5cd569e6229f00014854633f7b278e90af4ea593411909467a03e29cfb7b534537addaba4ecf14f02ab317d36cb9f0f50222ced7cf029dff8a0d3d2fd9 + +comment = Official test vector 51, seed: "450751d4401737459c6d93e6c5f2fbcc4a3af7cd7250ccf404bbb817a67bab7b4c9d0ef4570bfe25cf919da331c31d88" +entropy = 25056d1b8113bb362dd979d98643d7a7ac9c4f95994c0ba060609b6d07002ff3f48a9254dd40b117941fa35a66bb50296327b725525deef70e128ca8045ec451 +expected_public_key = 32b6c92f059443501427ac964fa569cbb074c71053f179bf1963ac704489ebb9936e23950e51ab7e26a98d6031c652701fa4ac59aa7c15d88c0337a067257b8d916db0456fad9622f44a928df6cce84a3e6634c9caca246208920c487b9a666342abc389c14c499785bcb91a95dc868fa20d25b08ac0e48c72e9b486151f21b11731d1bf049174adf279f9020aa98c38372877299c4f54a4493a3b20f8bc71cbc490b363c4162055cf3a5c13650db1154687462fc01b5e5b78c9f603255a24189b808358e17e01b9cf736a77d78a32520b6ddc9c1dd65a00e84b562b607b6ab472d5173ab53a97db08b322e95cb3378d5d088cd3ca6fa4739c6633a27d686abf040dcaa766bcc18d6b8a2f91e51ed6d49aa37aa44531bd9dfa25c116a842e50f53a68bf1617245e8b7da778eb3343d3f2575ea84627c640a6509133f4c5d78151a6695245659955cd3824f264a7df58ec87c8aa3066ecd1b68d848cb758487e647223c0154388912ed028ae364a9fa9a018d8558c3e9b179b66f2488c2be8792b1849fac0401a9756f209889fa637cf7ecc4f2c0249eb5c6f7e0219faa2a9433759ac70dabc7baab623c2023cf7ec869b75bce953ca3316b7a6fa685bdc7c8d467273268a0797b8d6fe57ddfdb03fff7ad3d5b9c80dc1939720ee8810933a04f51b78262910d7e28c0eab06b91980b65056472a293f2361183125670ac2426e514790b945d6b09c9ec354fe7c895a30231d95794f89ee60761ac9b2aaa9a75ef168c0950afb498915b2518e010c3800764bc5a65c0c54b2af686b7d954e77bc4cf8137ab398fe93429dd0ab80fc846d4cc8db2b9b2b4bb36d4c4121639c1e74622e59250701302301b4df96b2fa62736b29caf0866096f842898b2c6012b93b5ac23d1f39e192002ff0b9005fbb8cfeb8930562a4e0aae7a40c5032b8b33d0760d96c7c203920e2439d3ea02372c7f5d80b92259349076ba20c3ad4fd21752a3963cc5126342a963a363c1157f33189732f7243e465b14969f1ca199af45b50851266742151a235a8ba9a595534bd6aa31ccf52b8c5885d571a93d2577c57057e2caae68c9c84f565c72681fb15056a345236b02a1e5b13289388f035a2f8e03402f8b0a44259179a904c94725319acacd28ac1e449b87e8916091940e33861a4a35a8600267f04ffc6a3e06c60858d578bec60ee7716fd4b0225e5cceb5fc5437387522200f66fc880e0c874119c71f462cb4eaa24e67be77ca67278344199b27e2a55b50f372b65345122225d7324ca9504ce4d12bc101639e93b331e3b60e1b520e03c9703a69f54c2b1a52254ac44b86f310a711263a5a9b87a7116ec5654f7297ea76b63f939c1f49ce99d52bc58876160401558193ad98c7c8f4b6822712429679214bb2b6e8b324b58e1f57695dc8968bca7ec3717df12c1279408183b49679b349e2e45686e722c3a57bd9547a65656cbc79aec1d3b129837d84a6975d018c7ab04c88775e9c68839955775fd66ab02aad69b76307f51db2ab33915aca61969aeff14674a557c322af6997b1a8d9c51445884779227ee742986446ea1719808996049038e0d9aecee828ba054417cc3a683a7295066aaee9cb429c4740531990744a987152dca2388ba27e3769c8bf287e54e41cbc0ecca95ce621f2 +expected_private_key = 2d149d32c41889573ccb5166c597c3fe207cb806bd13a8a7bdf86267a93da7110a31f22221a17a5381c367eb1b9cd00810189c1f12358b59adbff2060ed6ac6712c660b51b553402d406bcc1d2444a863b6ff261e17aafffd01baa2b05cd83050ab460ced09bc7c0c2963784b7f9798d837bbc0483001539f0ea65a0574b46785645019b25130095725fb71556add2832ea245e250973f504dc58a4ba3c45cc8259e7906588d688f4f4cc79a1a955ee31e0fe931d16cc9da767c3a48bad09874f7730fa74c349d2163638aadfb59a462e904c5530a0b485541e391b6037041ec6a0560563f186be2ab97a42520a7daceabf1216e16870437cf012a6b6d082bbb23349628af4dd8ca9ea986498a80edfcc2418c3f5a627ba8baadf3739b3c578b2f193f57b72dc2827a2dc379aa31b6127c65352338c012cfcce0af1b33150d488cf47134e06b5ebaf0432c172090fa6671670bf7b66002e135e7c43d938343d5729e22e5597a06209e0793e65417de945b5e1aaeb2740fb1b350c902c1390a97586564fa94120cf7538b21aacc0ac0831b477e37c9e984b73ec91ed88705ef4cafd2f15a50227c0e4c0627d2a6d7875e9605afec339799690bb6f0a5b01141a6976fd51aa7a079827d37ca89726686ba95d6f275a59341fa229b4c163c260c4dbc4587c50ab8f0ac777849b5f700209f17c15251854c35aa23c20d486122ec8145565966f4a067251b96461950ac2171f1996e94517610338b88c091c356804cc691922449db0645a404ae4a641d1482b58e6230c7965c23605d66e96c8f0418ad786801d7530cfa2b5b757e06abc10518b274e3992e538922b717866c7eef827d2bb4c05ffa3322981cd8069dfe028d878a8b7a002472d302253a83ab84adf5530cc5f4671bf5219fe600ba97abd2555c52857abb76ccf4760adb30346c55aa5340b189e1968f72999e64c0b76297d232412b3c9384783457b83309ba7ef74abd50d16ea1c32a2362aaebd02da7790fb8827ff368261cec14f3a2095323502446703783ca9b6aa595d690031297c59b25414455c155924a47896716ac45330ce7069d131b75a57769fd4b4ca1990170a3570160cdbef1c930063d56e3546f09b1cd913c82057c0bb89111e6b1bba88eb8cbcd72078fcbf5059fe25c84bb5607d7b20bd0733fd96dbae2abd9531ddbe3cdd89a926361bb56ea0e5f9181b2c8c1532312f3f9005135c07dc211b824b1e63ac96e64845c35c41e0313511a5d429663796abf2443908d353766d40f47a910fd04a710ba5d6a5b301832a5b6016338d8858b220e8219512b643b8b60ca2a9347ec39638b787fdb44ce72408dcd2504de24af91130abc09b2e7c9bb26b3393ee06fd77019ed3466e019ac92a416c9683da22cafb1a9ad3475af17a15ee9f97446096647578f77fa02e79904fcc008fe509425446ca2a4c1dff32cdfa4ce120230bb5cc9cb49a2e2841bf69a1c49a762ec171698ca0445201c485a15fef2562eacabad3259119c9ba4185677e03aa0470ca848709c4ba0c8e5814416c5678033c819773db36e7a90c65fa82ffdf6921c38285122163bc0744de5c5363c9a973428a6daad20e5a62d37017b464da7637d32b6c92f059443501427ac964fa569cbb074c71053f179bf1963ac704489ebb9936e23950e51ab7e26a98d6031c652701fa4ac59aa7c15d88c0337a067257b8d916db0456fad9622f44a928df6cce84a3e6634c9caca246208920c487b9a666342abc389c14c499785bcb91a95dc868fa20d25b08ac0e48c72e9b486151f21b11731d1bf049174adf279f9020aa98c38372877299c4f54a4493a3b20f8bc71cbc490b363c4162055cf3a5c13650db1154687462fc01b5e5b78c9f603255a24189b808358e17e01b9cf736a77d78a32520b6ddc9c1dd65a00e84b562b607b6ab472d5173ab53a97db08b322e95cb3378d5d088cd3ca6fa4739c6633a27d686abf040dcaa766bcc18d6b8a2f91e51ed6d49aa37aa44531bd9dfa25c116a842e50f53a68bf1617245e8b7da778eb3343d3f2575ea84627c640a6509133f4c5d78151a6695245659955cd3824f264a7df58ec87c8aa3066ecd1b68d848cb758487e647223c0154388912ed028ae364a9fa9a018d8558c3e9b179b66f2488c2be8792b1849fac0401a9756f209889fa637cf7ecc4f2c0249eb5c6f7e0219faa2a9433759ac70dabc7baab623c2023cf7ec869b75bce953ca3316b7a6fa685bdc7c8d467273268a0797b8d6fe57ddfdb03fff7ad3d5b9c80dc1939720ee8810933a04f51b78262910d7e28c0eab06b91980b65056472a293f2361183125670ac2426e514790b945d6b09c9ec354fe7c895a30231d95794f89ee60761ac9b2aaa9a75ef168c0950afb498915b2518e010c3800764bc5a65c0c54b2af686b7d954e77bc4cf8137ab398fe93429dd0ab80fc846d4cc8db2b9b2b4bb36d4c4121639c1e74622e59250701302301b4df96b2fa62736b29caf0866096f842898b2c6012b93b5ac23d1f39e192002ff0b9005fbb8cfeb8930562a4e0aae7a40c5032b8b33d0760d96c7c203920e2439d3ea02372c7f5d80b92259349076ba20c3ad4fd21752a3963cc5126342a963a363c1157f33189732f7243e465b14969f1ca199af45b50851266742151a235a8ba9a595534bd6aa31ccf52b8c5885d571a93d2577c57057e2caae68c9c84f565c72681fb15056a345236b02a1e5b13289388f035a2f8e03402f8b0a44259179a904c94725319acacd28ac1e449b87e8916091940e33861a4a35a8600267f04ffc6a3e06c60858d578bec60ee7716fd4b0225e5cceb5fc5437387522200f66fc880e0c874119c71f462cb4eaa24e67be77ca67278344199b27e2a55b50f372b65345122225d7324ca9504ce4d12bc101639e93b331e3b60e1b520e03c9703a69f54c2b1a52254ac44b86f310a711263a5a9b87a7116ec5654f7297ea76b63f939c1f49ce99d52bc58876160401558193ad98c7c8f4b6822712429679214bb2b6e8b324b58e1f57695dc8968bca7ec3717df12c1279408183b49679b349e2e45686e722c3a57bd9547a65656cbc79aec1d3b129837d84a6975d018c7ab04c88775e9c68839955775fd66ab02aad69b76307f51db2ab33915aca61969aeff14674a557c322af6997b1a8d9c51445884779227ee742986446ea1719808996049038e0d9aecee828ba054417cc3a683a7295066aaee9cb429c4740531990744a987152dca2388ba27e3769c8bf287e54e41cbc0ecca95ce621f20831c75b153fa17d336a79ff6e88ddf485daf7b1b0bcf39d8df15319d52ac67ef48a9254dd40b117941fa35a66bb50296327b725525deef70e128ca8045ec451 + +comment = Official test vector 52, seed: "5de720f2d152bf4e1f96a61e7ae5f1bed6b8548e32638c2ccec9f43b87d1bb43dfcf334f0582984d27e440d519ab662f" +entropy = e4d34e12982aeeb1d62fd488d9b9e28557ed3429292239fb4f76fa9098009acae6c45c7fc62329b13c8d29844405db8ff6860de474bf727ecd19e54e6e1a141b +expected_public_key = 7c6b065ef3308afba0cf3607b2c98d83f76f7c058262b55f7c0746b3c22437f00de9d7cb69f40afd60ae74b0506afb96e30669f51c464a27b4f177666f92459b293dc208a0dac5654a8058a8fabc2d1853009743a598bab2c248068750f01227be5a4f7c4c6948f9167e88894d43b5aa44687ff177de837e2f0537f708a8f73a11fe6632dc285c9026bb23424ac2d1cbce39ac6a0a7686f088d617b096436c9f773e7cc50cea1c08db20c2949a7878d18e7372cae746b04558a8fbe97df0b9a69090449a507e6e1c07a35680412033127037607b2f0502690b47bd300a84c041650dc748ac2c060260c933a0b81847243fb3267f3cc8dbea4cea40790f37cd0373a71ec00634bb3b3b087a82ccb1e1dab77300156d8094a1d61d1f1bb3f977b749c938ab8092d71c93394856ed133075e2bbdd3cc0f27c2a2d34bc0f633f5e55c0a6c989b1e277ee9132f8779923eb2e22f78a1502ba5e55b6d53a05137867c10536e672c7336a3ea1f237263a6046f260ed3871f1d479be589744361a0d819439779075cc47a5a33e18326615134d9f09b68b6873c6ccb682f6b75662cecdf5432c37189ae09faf36735ea01c12f9ce64f4116d509c70e0072a242ff126710d178daae86539226c92d090d9b60dc63539f51b46dbf24cc8d54eda255e0ac19b03d34f5a270b6fda6d6408bcf1d2a46824b5290b8a26a8131402c9aea052d0101759345f86a66a4d238a20c6531d792170c52deed889ac3050ff87c659524337830c205622a989736b788092101933c0073c0b686106a9b88c17958a8711d272392ac448b01507634df4a23846aa9d594c80bca99f17505ac1793f2877bab4f1b211d2985842795c4c1b9fc018dd15b510556ef89b687e6b01701cbce0b56159a90f7b2c6fc1039aa38449a596c087a62b2ee5a7c3799f5a601bfaf8b9c598834fa115ae010f71167fd41b5cccc45146009752f380cdc56453e554cc779604f976fdc34e9f135261eabffbf00afc514f2699aa6a5aba0638542891c6858c7f6c6c4a12e4ce2d89b50b04c33ef262ee8b0d9a7777d3c56c85b1bafac7052fdbaed24303c843110c1892381887eb351134798b9745bc229208b277c2c999570075903deb530bf22f7906b75db35c3b24b04751bf6ed41724058c70988952d86b48519264d25ec2b817894ac370bc081362c841ebaefcd7625a67a48e3ca492d63bb9036a5b9a35d21470586510acf76fcc683035b18c05eca7d0702e0453ae00a8144779117d7c19cffb568a3c0959193d689a6adbac13df43907fd45fbf3313d49425d32ab9d81c6bd9b3486c3636e6e0015152c1cc78c809f3a3ffbc6f0628609b996980b3c43294c0e293940cd65a34bac8fcf020cc611e3e2c8e52f5ae886b8d9480551d012885318e5e6c1ecee0a3d75b342667c691d19f34fc7946e7a7047097f7938516cbb6c7f3abdb85b15e302a5547198ac0b89e7c2bfbf74050970e8dc746cf16bee6147076bb89c5124a89e070a785427cea590301cea7ab28ada228ee7bc7fcc17074063358a706989c8d6c82677287905722cca0a24ff91958c44a3044787eab3599eaf241eadb932b06b151a1a02ba8b244e9262b96144302124dddb5584adf5fef6bde5872a551b6840e3a082a8aa6dfb7232a6813367038cc +expected_private_key = 85b01a4a587bae308d39792b47f71997fc55fdc2746f881ddf7bc215145c56d399c6447ada39230866384bb718ada160a7349747867cf695cccdb8a4f1fbb3e573ade85ccf38924f36482bacb9798d481521a0cae103cc9fc9675184490f281d3516cbee910287758a4c374c0a4313f1c29251b1655522936dc329f540a1fd887f0c775823436df736c367aa3013341e66854fb39a9eb90b23caec3e84690ad531141f39914a77a767a47b60f2868cf11311aac9da94c72e9624d21814cdc99c89a4b35e1c4c63cbb3edea06888162e180503cfc6616b24d270601d0d275c03109dd9486220b66d523a8111b4de5b99d236586a09a4f77a240cacb4a737c770bc4915f55b609075ee68499654baf90622647052a8369872a93114c80c60fca1345e20114552119669a0d3a7188d3326017ce92112f0b715c26b40851683478e5c719c11088f00aac577f5a8763d4a76e3cd00cd9061f021672847ba0d4785ea7b1b28fa364e64c4fb7f718d2352b1fc26858b6552419a4d8e1b22f8c7992e3b5373183d040948777c356d514fdfb2d0c5a636bc5416a799270e5c975c0a62f3a76fb134646b333b75582f7f2c51cf4bd37835c3fdb2ce1ea86306362f8216d27e40ca43a45edc9554f08c604624659aa10ebd29e59a60f7bd66eee447f4398addc73387579148bc4a26b6749c961926fd34296db3044cb0d2d1312ca6a6755ec48c46865a36a6330a9aa5d39167c6062ef1a7c82ca5c0ac1b163b85e43c278312c4304aa127d66576e7218c2d0c850108076109919ac6931264dc2e919ff441875e607a97772feb45f14881fbcb37b4d00b45f416cf56c9501c6598ff9425249740eacca49d92e31d679a4f16c3ccb4384db45e47621719c6c585ccc03355216d43625c08760254ae3cc4aeb1287cd5c3f0911641b05c7036c9bb360c72902325830bd25eacb5a88abdc926e0f205ee857aa66c8c47e434d8bb4a6cfabbd8b681c427846f0e18a2762152b170063b489a3e6b8ba06b00f14a3f2e6ac00725e5724cb629b7a312b3a1221c9460917c07637b71050bb644a38a8192270c857d43ea9304495206bf62b1c4c11b04a817aaa996b2a266ceb8a80aa46674f16207b61bfb484af461b6dad9a9e6c22c56f81bb355a6705310e921239497809012159e78a8a249796c155a9dc7cbfe7384dd092239c29773f6610e536a77b879eef054c5e539a381043c1b53d69566a96d1931b166c6f066cf0ec81e7492a200876d42007724ac916460a1266ab77a327ef1282479685bc43a2718c93a806c3de3a0cb918c7a734cb04759341c5b1496679987aa5db93b70f903a5f4024c3da6fe8bb2ebc27182e1179611c61f8f6214069ab83c7165a46caa74bbce0897fabea9b6b58cd34e7535b0297b4359960d23e4a498cf7610601d92af2fb6163c4b2761615121b62a7900b08d61065c83a69d51253d48399fc665962ad36275ed3774f114a079f13b8bce420b44638cfa6ce6018b58bea422a8287a6680eb21c75456592e8b24cb6c26ec3d3c1dc4a19ca16888e9b7fea1a863b7a0143307530b533269a8b692cb4522ac1aa27b01d38603fd009e1c02017bbb36da2049a2c5045a63081266d7c6b065ef3308afba0cf3607b2c98d83f76f7c058262b55f7c0746b3c22437f00de9d7cb69f40afd60ae74b0506afb96e30669f51c464a27b4f177666f92459b293dc208a0dac5654a8058a8fabc2d1853009743a598bab2c248068750f01227be5a4f7c4c6948f9167e88894d43b5aa44687ff177de837e2f0537f708a8f73a11fe6632dc285c9026bb23424ac2d1cbce39ac6a0a7686f088d617b096436c9f773e7cc50cea1c08db20c2949a7878d18e7372cae746b04558a8fbe97df0b9a69090449a507e6e1c07a35680412033127037607b2f0502690b47bd300a84c041650dc748ac2c060260c933a0b81847243fb3267f3cc8dbea4cea40790f37cd0373a71ec00634bb3b3b087a82ccb1e1dab77300156d8094a1d61d1f1bb3f977b749c938ab8092d71c93394856ed133075e2bbdd3cc0f27c2a2d34bc0f633f5e55c0a6c989b1e277ee9132f8779923eb2e22f78a1502ba5e55b6d53a05137867c10536e672c7336a3ea1f237263a6046f260ed3871f1d479be589744361a0d819439779075cc47a5a33e18326615134d9f09b68b6873c6ccb682f6b75662cecdf5432c37189ae09faf36735ea01c12f9ce64f4116d509c70e0072a242ff126710d178daae86539226c92d090d9b60dc63539f51b46dbf24cc8d54eda255e0ac19b03d34f5a270b6fda6d6408bcf1d2a46824b5290b8a26a8131402c9aea052d0101759345f86a66a4d238a20c6531d792170c52deed889ac3050ff87c659524337830c205622a989736b788092101933c0073c0b686106a9b88c17958a8711d272392ac448b01507634df4a23846aa9d594c80bca99f17505ac1793f2877bab4f1b211d2985842795c4c1b9fc018dd15b510556ef89b687e6b01701cbce0b56159a90f7b2c6fc1039aa38449a596c087a62b2ee5a7c3799f5a601bfaf8b9c598834fa115ae010f71167fd41b5cccc45146009752f380cdc56453e554cc779604f976fdc34e9f135261eabffbf00afc514f2699aa6a5aba0638542891c6858c7f6c6c4a12e4ce2d89b50b04c33ef262ee8b0d9a7777d3c56c85b1bafac7052fdbaed24303c843110c1892381887eb351134798b9745bc229208b277c2c999570075903deb530bf22f7906b75db35c3b24b04751bf6ed41724058c70988952d86b48519264d25ec2b817894ac370bc081362c841ebaefcd7625a67a48e3ca492d63bb9036a5b9a35d21470586510acf76fcc683035b18c05eca7d0702e0453ae00a8144779117d7c19cffb568a3c0959193d689a6adbac13df43907fd45fbf3313d49425d32ab9d81c6bd9b3486c3636e6e0015152c1cc78c809f3a3ffbc6f0628609b996980b3c43294c0e293940cd65a34bac8fcf020cc611e3e2c8e52f5ae886b8d9480551d012885318e5e6c1ecee0a3d75b342667c691d19f34fc7946e7a7047097f7938516cbb6c7f3abdb85b15e302a5547198ac0b89e7c2bfbf74050970e8dc746cf16bee6147076bb89c5124a89e070a785427cea590301cea7ab28ada228ee7bc7fcc17074063358a706989c8d6c82677287905722cca0a24ff91958c44a3044787eab3599eaf241eadb932b06b151a1a02ba8b244e9262b96144302124dddb5584adf5fef6bde5872a551b6840e3a082a8aa6dfb7232a6813367038ccb30cedc4316b63d75b641fbad2f33241a3fc47ab8b3ee1a3ed597e5b04f77c68e6c45c7fc62329b13c8d29844405db8ff6860de474bf727ecd19e54e6e1a141b + +comment = Official test vector 53, seed: "d71729dcbb27d7cb39e9e905025d3e55c8602efbcc483c9b866ebf82326157833169243c14550ad728bd1470f39c642e" +entropy = cd6a99396eb3539ca663a51e42063a3a262cc1c5a5fce1566f0597b52ad9fa325a3407f591791a5db4578b5972093a95bec3b8e70c1d542c9b5c9789729f8922 +expected_public_key = 9e686b49d538cf32a05ab82372f7525df40085b3413f078226b97c234b815ec615b2683f1d9ab32dc0314c6cce6e9620c8e73b1dc85bed5205cde5a44f40427865a62356ce44751c7278a3b236bc2d208c7b383129661810a6a2962496d058ca4875ad234c2df951612e665984bbae791c279ee835b105202d4751f1a330dc6b0bdcc38fdd6458b0ca7a9bda026bd64e80868b87b58ccf2a37ca94cb06279ee77a6731e847487142561863b5f38c5aa4c0158ac28e95012c10a8b8e99ef7db12c05009311a74791c6c8b355e4a861dd3cb6fa085884d7a7e8cd270f656ce29f9bf3b91b798032c16b00f8cd722a1cabfbb25c3002324c56b66df87182504581a76297ee1181cf05a6d89698cc94021b16574264435f2cb137a7a667a4548c96f835cbbcf27805ae37448674aa998818cf26d15a63689777a9b98219ac3b9ecf84203826eae294800f5a07ffa886cc86e7d095f42c471c121a69a1972a7906abbd31003f6c8c0d07ef481b55fe185811084d9a472ccbcc586b6a9a6f24d269ab36126a3f0381b29532d027c2d5e21cc5b9c6ec8303e4b388a6b7216b3e581c0566558107c8b94c599f09c2ecc4b7a824fa3db9a29722317d5bc5d43827f4bc6d3a91f65dca56bc26de9d40bf2f69263cb010a9a24a749c931631ec2d13ea4d5136aa8a97ee019ae1291ea34b0807886ffa323ad3b0f83f82e5d9a2d748945a3ca34b9535d0460a6f734bbeeb66a4e3c257bb079f5d80f6deb0dbec130fe4a182fdb16291403f37a191c381723965c3fd90d9f2b67c36ca3ac141030ab516a01453532aa06b73a91b5ba7d1a308e286fced38f2858801022a453320a857b564179c55f0436b25cb191865de69877b47041d9d0c2c9bc42ca513f207a72ea9a5cc48b573fb402ba8b5ae6d73f2e0b044b8ca67c1031577099b9975fad7103c7f6bf80099bb51138d8a7af7bb509b761a9c6407dd9826b7ff87879098248d779d6f26aa0215084f286ac77c50849ad19f29a32b07ef517000ff71799d6be1d177508bb969d9479c6c037a5a18bf4302720e240dfa603b7f8745144906bb88522505b19336bee5572188853a47b4f8ed8a040b251307299be642e086317e1504784990f2149cb2d89b1a8542e4a19cfafd57ade9a234545142afcb3e544b49df75b0cc78f5aab935752746ee7a7f7936777330a66c1063c50becc4286a3db4aa66cb602553849b5baaf83965ac6bdb19a9e5db8251de0267ea3c0eec342b51505469aa7fe936a5829463892645438a3a182859da136e033b926695421a1891610816e136dbbe36adc08cf00e4b44649410b2a11ef254144c27787e54cc5a533e8e54f11ea94f7e9c2009d25a6248321f04a53c31787c12aca9cc78fcc06b161701852215bc6c29d1779f5c183152cacb583a90399746f75c5bb337f1b580b9029b112579884f792ea5a52187a109f547cda89b7fbba90c66065a33423da4515d13bb5ffa074aadb0c55119065a51239511bb33288f994b121da8913992b979a59bbd64036968621e76ae336096fd6125cdac4f767a883e6448b078dc04b1f2b7aa49a1180c0f3bc65d2a93458291982652063419a9cb7f1042c38f483c4a90e17aca78e9fe10b44687f9aa606cae8888e4c21ab0f7b85eb3d3a2a3d2fe8ed883d1de0 +expected_private_key = ce732e28b21f42f2bbd1b049e6b80264b218b581cbab8c9186e325f7617895e6320fe5c697fc3b82546681b3ca5f4a52f1f7501b652f86d35ccb9756e869795c166362fac89c7b5ad41c7c74c596e2a7458e419cd10c10c890c94fd3564aa25f1ec3a3282607d8b1864022cdccebb1b1e48961207e29264a9ca86c94b71d5382c9c6b8004c818f51a52006706285bb3281618a157c80c2c00905c33316516c17f04460124fd79a1c330417984220334c84d96a66fc8a5556814c58f7826ee86f17319da3f504f0124c3f06ca50792c1e1800feea8a8e8805a54bcb90c52eca144677327f5058cca151617f443dabba304b353f4a5caabf0c179a772582711c033b3f3c1225f191b887d8294fd18914850de6b194b91c250374963bdc7215b07cdaa8001372a21f0c3845979386c27949e0bbedc0b004258866a01ec5cb82fc751ba2f4510e514a3fa09b6aea7e5e45762076b81d781c2ba91dd6f40cf13c91e947a7d7abc2a2aa91a1404d87462b42aa71eb15209a9b0d4990c2265b051163cd2ba8319576758237482f500f7e94b3ff099616225737a766c10b6aeb213b5b073eff93c3ac91bbf2b93ff47c84d7ca2e794990e2db4a7e9ab19cb50cd522427e6a935ce3976490b21792cce5e4b971668c4793ca4954b477703730411df1f5ad2557caef78c914d0c223d836c407936ec58825f3b2a1925a5164b097a94a13d8ad3a27bf1ffb0c08c72b92215cb1b67c7d2c4a7bc7a6a8a054d2a34de69c78195bb149e4b4cebab78f41612db19540385f2f74757c662c2da3c7b03a34a9524e2ab90f5cc21fc0d2ad84bb996e6c73426770ffc1c9942cc22aa2934d97a66037a18760c51b0236ca1b1880a2286ee5241ffc220a4c6ec0e296090874b3ca751dd701086a15f419c67eb4514744047d7848980c036107586d36818e74ad98989c8c02afab4134ee0b545ed707876a613ffa10be7c3f10b758b215827ada9fa1c83b129c6bdc5b621d3a5da7f396d6e29b184a38d8091b6a2c288ee2cae833a68a3cb6b30bac5ad7567c788d8c803a7b622fbd8a253b274b93593115b5b7a5282eaf93706c88c178bab897b7198c23b844219852a60410e8afa85c902edcb9a5e87a31ca84ac6b89a75830566062bc159cb129277af0645d5817c8822e384040f1621d66d41643897df21c1013cb1b426a703f120f21c780c67bb011fb3e8cb746c0b14c9f847dc1235f72e6bdfda1c55bd26e377395c4b17b764a41e0f7312782bf71820dd379befe58901a011fadac1efae549e5933aa9f9c64ce2273c486b56251674d56212c0ad7637854c7b8447a135fb960ffc435ac7553dfe935caa98bf32186817b5adb42375e96c30d0a96df39658ede95912946813cb75cc32b395aa73a916514533857b4c3405fc32c2946cf4f4251b2091b6cbb00ce296459c45e558b5048b79cc4cb8aa01bd7e82320637a62e2038d5b3c0593b42d32a38be8312ab022ebb496a5fc4a991a1baeb660a23988fba329a79dc7144d20b5246466f25af4ad971014970ebe2b36316b86b3585f6b0753711a0bf3952c688b4cf6c8a24c0964cdc1f5c1c34b3c28359ba232840063ac30bdda83f0611042fd8b7c2bb439e686b49d538cf32a05ab82372f7525df40085b3413f078226b97c234b815ec615b2683f1d9ab32dc0314c6cce6e9620c8e73b1dc85bed5205cde5a44f40427865a62356ce44751c7278a3b236bc2d208c7b383129661810a6a2962496d058ca4875ad234c2df951612e665984bbae791c279ee835b105202d4751f1a330dc6b0bdcc38fdd6458b0ca7a9bda026bd64e80868b87b58ccf2a37ca94cb06279ee77a6731e847487142561863b5f38c5aa4c0158ac28e95012c10a8b8e99ef7db12c05009311a74791c6c8b355e4a861dd3cb6fa085884d7a7e8cd270f656ce29f9bf3b91b798032c16b00f8cd722a1cabfbb25c3002324c56b66df87182504581a76297ee1181cf05a6d89698cc94021b16574264435f2cb137a7a667a4548c96f835cbbcf27805ae37448674aa998818cf26d15a63689777a9b98219ac3b9ecf84203826eae294800f5a07ffa886cc86e7d095f42c471c121a69a1972a7906abbd31003f6c8c0d07ef481b55fe185811084d9a472ccbcc586b6a9a6f24d269ab36126a3f0381b29532d027c2d5e21cc5b9c6ec8303e4b388a6b7216b3e581c0566558107c8b94c599f09c2ecc4b7a824fa3db9a29722317d5bc5d43827f4bc6d3a91f65dca56bc26de9d40bf2f69263cb010a9a24a749c931631ec2d13ea4d5136aa8a97ee019ae1291ea34b0807886ffa323ad3b0f83f82e5d9a2d748945a3ca34b9535d0460a6f734bbeeb66a4e3c257bb079f5d80f6deb0dbec130fe4a182fdb16291403f37a191c381723965c3fd90d9f2b67c36ca3ac141030ab516a01453532aa06b73a91b5ba7d1a308e286fced38f2858801022a453320a857b564179c55f0436b25cb191865de69877b47041d9d0c2c9bc42ca513f207a72ea9a5cc48b573fb402ba8b5ae6d73f2e0b044b8ca67c1031577099b9975fad7103c7f6bf80099bb51138d8a7af7bb509b761a9c6407dd9826b7ff87879098248d779d6f26aa0215084f286ac77c50849ad19f29a32b07ef517000ff71799d6be1d177508bb969d9479c6c037a5a18bf4302720e240dfa603b7f8745144906bb88522505b19336bee5572188853a47b4f8ed8a040b251307299be642e086317e1504784990f2149cb2d89b1a8542e4a19cfafd57ade9a234545142afcb3e544b49df75b0cc78f5aab935752746ee7a7f7936777330a66c1063c50becc4286a3db4aa66cb602553849b5baaf83965ac6bdb19a9e5db8251de0267ea3c0eec342b51505469aa7fe936a5829463892645438a3a182859da136e033b926695421a1891610816e136dbbe36adc08cf00e4b44649410b2a11ef254144c27787e54cc5a533e8e54f11ea94f7e9c2009d25a6248321f04a53c31787c12aca9cc78fcc06b161701852215bc6c29d1779f5c183152cacb583a90399746f75c5bb337f1b580b9029b112579884f792ea5a52187a109f547cda89b7fbba90c66065a33423da4515d13bb5ffa074aadb0c55119065a51239511bb33288f994b121da8913992b979a59bbd64036968621e76ae336096fd6125cdac4f767a883e6448b078dc04b1f2b7aa49a1180c0f3bc65d2a93458291982652063419a9cb7f1042c38f483c4a90e17aca78e9fe10b44687f9aa606cae8888e4c21ab0f7b85eb3d3a2a3d2fe8ed883d1de0ee044dbdf6787ff038dbf9c133557169c62fc1ce2580739369aa87df00b496485a3407f591791a5db4578b5972093a95bec3b8e70c1d542c9b5c9789729f8922 + +comment = Official test vector 54, seed: "a7c2c8edb3601396beb2df0657ec82fd5780a2723581a9e03dee1cdb018440439bb1142cab0487c5d136e9af46338ab7" +entropy = 6c8c53ed6f65e6b2e324b84364e10de42d1c26a106d4d1c99eee79c78586fb55b9402bf02481ce4b27a52e87feb92c4399c7f2988d40e942e7496ad15ad2aa88 +expected_public_key = ecd4c65cec93a9b26efe3b667405482e3aa37d48aeea67c1698008da4b68683697dfd34fd72a6f39ec0aa0806ea5c59b4554182f6034b9c5b7cb438e21a14774d58afab0099e478a4ba8568e192c71db7c208b7115d29bf649bfb3d23c2d70599682c549ea28dc16597a43aa6e65c77c432f554b067a64ad62ab71492a1aad6045677c74e3e8773fb8665259abd821bf07d2157c09199435bf41992628534daae814ee4ac64ad89ffa1547442b8cf6f54664c550da5cad0d828174805da5d66f01e584789992bf0a4036d770b6c5b3e21b78f5da2467db42479b478f0570d48071f028110f555857e4acb555b9c7d5b5d913b75d5b393bd4b9b2c12d34027aede4a22fd80abe26a9c93c938c6b1348708d1bda7fe6c55bf66981695487ab81362f50b7376c6a52cc39769b921f575e5d7a9666abc2dd9459a5595e3ad631a0c638c3a2181b649704748141394053849b4f996f9b8a68567b73227b8c9e4588ee4a13b75379d2776a7510abb21941c2b36357e8248686a5d973b946b82e40802290651a073636b367671c9c001ac91ad03b9d6e83721ae1247cc188fc05b0249571656a276eea09b6d3376c208335618b1fc2748655ceef805c39165d0ce9bfed062add0c0a50e43167c80e5301a076c9cdc1f13852a5987aa3cef5e5864a706b3de947d2ac8e8cea0c3f83745bf3185bac9fd0162510f70bd20129d7c5215026114c4b5ef044a8a29a3f01fa02a0a3ce928a65ce8cb566848110994e7ce20ea5c30304d6ccbc7477bb78b3ec527758b7828b836dbb2742af6095a0bb882c2c9d8e162618029c1fb5aaf4b963fcc4a35ab78b0d9942fbdb53d4684ca85218dc27678719ca0d4a8cd8e9bcaeb944b7c0670ab171927c56c35034ad92bb3e6714d0f7c137c2b9a1fc5b72367c35c55d5feb93d1274b88bc558158c5d478c34b68240ad193e95c0311aa501b3c1c44b20ab6ca2d2de1c56b65618ca53f0e91550851bfbc289206d1406b27047fe610ec01a86e8ba94516aa926b99879836dbb27a7056c4d54bbd19a44096d1b3f3e9956cac29e7ab95f175b9d9a0078da633f10a6fee899f400533f0f77102da19fb02610003674828758e23b5ec724c6829b95b8a6750f1988f431e7537ca9d05701ac8ae2034688082c5c20a122c6349db27ab958504fdb4c527b223b2420db7246a4a69b58085a3c1e6997db19fe17a2bc23bcd60b924cc393ebfca864da054ba38bb733b00fdf57ab147b922278fb132c5f5774bfe368dc2b66583790d30d282a248b7e9d43a562ba1892a985b75a7aff961762a05fb35b9420905bb8c4de00a3846e38ca7d71411e89f9e2c9489c597834c7a5315080130648f5347639184f315bff2d580ffd0227c9185adf9203ed50baa43a9174a7ae9b5655f2245a15c30f877bb7dcb2ec184138792738113895a980dca31baf6b5261e10a1d98ab660c066bcb05ac25429775c3bd1550d4a823fc96442cb2770751c812ce67613e48bfbe66a0fdba909317513220ebc3c55fa1364f318812199009af24f9f70c36f81b22b20be53208f0dc44dd3b6abb7236e1fd37c53fb1ee8c86810863a86b0029a58955dc73ec8a436112b5c3a75ceec356bbd91355e4c3941a07e45ad3ecb9ae67e7527f70f6e07a757bd112947074d5120a1f2a1 +expected_private_key = f76c7d8002b7ca65bfe6a59aa3645a8e51afe5fb80145241134cc072a60ad4b72d80c2bcbe1630eeda661cb62e01b0798203a1a287c4b8f725dd422beee6627c864149ebabd84280739193067a2348f2861dbb7f1a0914ba2bb3ac6c80d5ca1f483c8b86c1cf5a2c3bf8f6728555799381a1b1f3cd02e445cbe798ac0361e15335380051294667b9149f38d85a1839ae43d331bf14091c4accbb24c8e8105a9d1185ba880b7e13cd3563aa235b899e7509525280a37162c043b089d5a0bd48b225ebb2d0538f49c8ac3c3b0677d8093cf70b3404016b4686d653ce4715a85953171bb937f5a1916271ad53318e8155269dba4d0a520d057963e70cc01e680fe8408d03d3275c95a2c528190924749bc32dc31b21b58c6f5e4b59c157cab7653c0d146dec9a3f94e241993b09bd62446f35ad7772279e116464fb316db8449a3ab7525b3e89b12b54f14fb19057c39510b072894831a5747782d404487926ad756b1bf81cb416d94265dcacea475fcdaa727d0b5f01b376250b123f717fbb0b1976b7704fe5ae5ac10cd17b87fa8bbd3d824d3b91b567b5c20243677d741ae2cb1c1d049a842b7f9da9cece8931851bb35776caed97c27d395108e42661aa60cc181abb2774c67773fb29b445f3554d386c87d489d895a43ef268af0c81f6065e57e744f719120323b013d35801e26bac2700968566512106f5161ee8528372d45a42b41022239fb0b3cd23c4251927b355719a1f2a0689a4abc508660dbc282706b765ca4bc1887fd064cf8285b1155863e15b112bcbb1962255b362ce8fa4c51c97cfcea7004daa9f746766f2f5487c93b99ee9825cb78ab0a98bf6863a083758e9279245e495ad0a5b86724c1adc3e67d756c1c8647fb4ba32b75a6da3a05a870fc1e12cd279666ca046e064a74625530e742efc72c1d5f959c9d256389c4c63609fa11a8fb5e70e1e2256c8164d80c69fb8f4008a647af7f3ad960265f55cb786e8726b65689a6a751fe045b7d45aecf50605d135a44793ad2c6bba5a59d293528bd94d65f54bae4798eba5b26de8b225728eb8836ad1f373f66a2134b8b429a8457b600c5a3274b0157f66f091ec88436d5667802a15749b4c9c499a36c58fc5a7ccc10a604ed00de74bbf433502c02ab0ed949f5da8b9efb83c4a2395e49413a7030f4f95901e8aa2716a3ebb09aaf61c9384586021301de0f8c085421460a10fdd176c68b4c115c91dac04121924213855ac22e8c98e3643c3d7c3b6c6c4ca964308510525c5aa00c32ad9ba258bc44a9f521a2873bedaf7c56bfc26a320c0fe95cfbe12c0038c1a65b62c18c37e61a2b9194c9ec1db8b9fd036c7c3a620b5c661d8ab0b46a6cd3391e53218e40cbdb082c2207630c2715541b10e3c395bf2a5a15ae8b506880dde937432ecb150f9b3c136881058a750024d9b247232b7289bd07462c051b7ba599c985c6eb08c7ac22135c99e85930113554c59ac06ae298d5935658f513644b01132b4c1ab84677e342a1f4a8a9d5c6a44659805cc8898e563823c8286d54a1cb4b8db866a8f5c74f782784e4b6fbad380c5131fcae11d4ec89df82490b4f1babd4673d7417b9cf04513718f2cd0cfc29707145034ecd4c65cec93a9b26efe3b667405482e3aa37d48aeea67c1698008da4b68683697dfd34fd72a6f39ec0aa0806ea5c59b4554182f6034b9c5b7cb438e21a14774d58afab0099e478a4ba8568e192c71db7c208b7115d29bf649bfb3d23c2d70599682c549ea28dc16597a43aa6e65c77c432f554b067a64ad62ab71492a1aad6045677c74e3e8773fb8665259abd821bf07d2157c09199435bf41992628534daae814ee4ac64ad89ffa1547442b8cf6f54664c550da5cad0d828174805da5d66f01e584789992bf0a4036d770b6c5b3e21b78f5da2467db42479b478f0570d48071f028110f555857e4acb555b9c7d5b5d913b75d5b393bd4b9b2c12d34027aede4a22fd80abe26a9c93c938c6b1348708d1bda7fe6c55bf66981695487ab81362f50b7376c6a52cc39769b921f575e5d7a9666abc2dd9459a5595e3ad631a0c638c3a2181b649704748141394053849b4f996f9b8a68567b73227b8c9e4588ee4a13b75379d2776a7510abb21941c2b36357e8248686a5d973b946b82e40802290651a073636b367671c9c001ac91ad03b9d6e83721ae1247cc188fc05b0249571656a276eea09b6d3376c208335618b1fc2748655ceef805c39165d0ce9bfed062add0c0a50e43167c80e5301a076c9cdc1f13852a5987aa3cef5e5864a706b3de947d2ac8e8cea0c3f83745bf3185bac9fd0162510f70bd20129d7c5215026114c4b5ef044a8a29a3f01fa02a0a3ce928a65ce8cb566848110994e7ce20ea5c30304d6ccbc7477bb78b3ec527758b7828b836dbb2742af6095a0bb882c2c9d8e162618029c1fb5aaf4b963fcc4a35ab78b0d9942fbdb53d4684ca85218dc27678719ca0d4a8cd8e9bcaeb944b7c0670ab171927c56c35034ad92bb3e6714d0f7c137c2b9a1fc5b72367c35c55d5feb93d1274b88bc558158c5d478c34b68240ad193e95c0311aa501b3c1c44b20ab6ca2d2de1c56b65618ca53f0e91550851bfbc289206d1406b27047fe610ec01a86e8ba94516aa926b99879836dbb27a7056c4d54bbd19a44096d1b3f3e9956cac29e7ab95f175b9d9a0078da633f10a6fee899f400533f0f77102da19fb02610003674828758e23b5ec724c6829b95b8a6750f1988f431e7537ca9d05701ac8ae2034688082c5c20a122c6349db27ab958504fdb4c527b223b2420db7246a4a69b58085a3c1e6997db19fe17a2bc23bcd60b924cc393ebfca864da054ba38bb733b00fdf57ab147b922278fb132c5f5774bfe368dc2b66583790d30d282a248b7e9d43a562ba1892a985b75a7aff961762a05fb35b9420905bb8c4de00a3846e38ca7d71411e89f9e2c9489c597834c7a5315080130648f5347639184f315bff2d580ffd0227c9185adf9203ed50baa43a9174a7ae9b5655f2245a15c30f877bb7dcb2ec184138792738113895a980dca31baf6b5261e10a1d98ab660c066bcb05ac25429775c3bd1550d4a823fc96442cb2770751c812ce67613e48bfbe66a0fdba909317513220ebc3c55fa1364f318812199009af24f9f70c36f81b22b20be53208f0dc44dd3b6abb7236e1fd37c53fb1ee8c86810863a86b0029a58955dc73ec8a436112b5c3a75ceec356bbd91355e4c3941a07e45ad3ecb9ae67e7527f70f6e07a757bd112947074d5120a1f2a1e965ac6995d525e324e8252d8e2c2da909a29b24baca8b68daa5122cb539a474b9402bf02481ce4b27a52e87feb92c4399c7f2988d40e942e7496ad15ad2aa88 + +comment = Official test vector 55, seed: "467f6158cb86b724039ff18c47950ae5c49170163c910fc9a9b30141f86e9c06ebcec91497bcd156d95758c9f0c6ef91" +entropy = 2107204cd995f1df14314d5381f8c5440f09a347502e161cffc0a2ec3dcfbc7324c3da70fe850e80aa818301d60c70f3038153866dcd5d179e22db59b8991bb4 +expected_public_key = 8c5785417b65b2e4235cc67947d7b214627d326ac1adebccc3a64017e004499a8887c4a649e443e74720f0b1bedd52b1a8eb78b3ac2d5516b7a3233be9448575209675f4a813120422684191d6771ef2b44d92b2ca3bcdd5f5ac20a63efc237ff9d99bb4f5094afc187ebbad39b8b9ce75902190741640babf653886162645a84262a24b1885c626403f23136707816acf28950bf181742c98347022cd5941b7b69e21b5cfc2b4c6c5f301bd32a2e7882a1e1a9cd94743fc86af0cd26b51b3512003cbe8628d299663da40baef443677033da8b8c21e0a0f12fb93f4d63809375fc877866394a1a5409e2f13b3e5011a2a5877732415281b7b19991e6ee0a470561b6bcb46d87b4086f18ca29c5fdcd622f4315dcfb11db2c6cf136b7b0a870ae89669ad1011477899b8f679e5c9a8413959ca0cbfb3b54ad58c98b94760058c6f1f499435118d9143723da05ba8f13e5cca1813f91ce01092917ba1d798ba3481121026713be1889b58375e5c4f9bb0bcc5fa808e2c00a36ca575c68b1d232778f71bf0927c5f2092d0629588826d02005db9bc0dce456e2b928ec9fb9c7a138e7b1065a2b660c287c3d062144cca71e5c1294442073ad48afc555767f1bebaf550d520659496af9237a22c27670a080f8a461778aa42c6ca9a954c28a658c73847a586fc3ef266562240acb6978e026152b1149b8d426aefe37bbd263a00da05df48375e53bacf9c4c11d4bbb055666ad008736b9c323a9974661215495e032aaec611af0e6a9244c2bfb6f3195d5121edc3c0719c3fc1365c2bfc70d5c6140e6a383714a0931ccdff946adcf73993aa113c90aef03374e251ace73770a350428ec32a9ddb4aed8832526968412863966228644b9af9842c2e967957f10d350a3499876f25d157bb2812501c8dc95365f83bc64b6340fa6cb4c2816b31824d028726de0112aa9ccc9e0b6869099d310aa6e5b79609487e7a20a56ba75c45986f92f5a4d1672f3d99927a1193ba15bf5df2586e823292593c49321bac9044e4844a7a6bcb08309e2520b6acf20e73ba5b05931e29ba43b2000a48c72a5df05ef715cd8865cf16a835a83c271402071d1068a426839ca424cb666545664ea5e7461af147b9d84583285ea1a05a02732031bb0ba40b14c828bb0e82807fc57882b31d9cf509be7b712f56994721b55da921eee8ad45c8b4e99931c9b71b473a89a2d4821213a1acfc453a41784d35b522e93c2d994d083674c71583782128476b04fec71f17ccc65b9c83f52c207b08adb10824a505b6da8a78d4c599a5b09979d9491e1383ea155576730614fcbdec1a8c801b94083a0fb55790b136bc5f37b752f3a6c636481debc5da8892ac1b04ac7447953015e7251838acbb6e24b508578b62d7450c46c76272806ac407112b73f7946d9654a45e943b406776e057c22e669b34a39d92f87928f8689cb8363b5b07b861be5a750bedb4a909605e6e26a489a5a4d9fa7be3976479f8abab955200c479e75983be821e79682ffb18553b72cf0797b2d2117add5ac0abc71cf0e4ca83c26d218295aec75872ba3a8b3ca22a2ab83404a046355fd394bf35d66df46a6124d18b9a4606305a5968c4ccdf6b77a5ef23c5d54c68389e610b30de122c2b2cdcea30b3c780612fb9992721e26273 +expected_private_key = ab150a2298917b1707af1ac0941acc5b6b259d1aae8f878bb0a37089b845991b203ee4c8f1a58cf9d2cc0059ade2db131bdc5fe3049e17f350a805c6f30479be91b12a36190a5332eca4737df5a32fd60cce222b592060add75a62f88d5bf6426fb18a944195f1ecb1babac1dcf20c39339ed45ac8c3ab582382480851107683102fa1914e753731964fdff686f0a354703858c15c99f30a19d9c281ae93004c718d1ca5452fe58183d806dd666792da7a76b0927dc77793396e4508200ef5097e45095a33af5683a4dd1a5f6878c1e6fa85771a990ea16f7a28034a897855769db8e4a9a425860fec7031d09e96b665f57662b2bb86e362c3f9a706e354c12423ac6cdc74973a0767d73e75f5739747433c3451f8e5b85e5311b6e009f79c00cc07ba26b74d512520496b1998a4445c19249729225044cffd51679b495511223417b2bac86cc242241f2b70966e9a7a03c3cc0ab526abf857dc1a140ad85825757d2b5a59b97b7f8c5015da02159d013c1f15491ff4cf64c564e50c389f6c85b7c060f98011a4518cd3b48c2df68c67f3497f439c11f8504e577cf49acfae704a2b093238520292602cc2138762d87536f6285c001d6975a242654ddecb5663ac44228bbe5bd58d9b90426c66802b466b21dc8d7a23893a953033874d0a93626c00b6a4fa3fe9eb0dfeba2f3e789aad8103ca153fbd7218b95547de700ca526aed4f159639c59a7699296486188c3ca111479ddaa747f99ac825c7593911d6261683ce92ee8aabb77f82ab14838db54149194b12791c4991181c66bcf05c67e19f05dcb658d8dfab09c180967311f4e2aa03d9b8218889f87c5a5680299a7459afdd69db27302d9761daa20be37900b971694d3b6aea8c6b5d53a686beaa478f2abc17c1c461807597148719925590c1e482aa05bb73077c017c1010ea576bfb5a63031875a23b0a019d608d64a30d0dcb39d750099d1c7583c34ab1cb1dd99a115547e3e4ccdf2a872e821b2330a5f6b30918226b7fcfc9fb4f37d8103437db12ee073a49d29a7359316f8d922f783797e49b8c2b6146f76c7f8a66838c86364a788d3c4ae67d02ca09391e8547edfe86ca1d131c5b96caf479d9562688d1238c6196526b17844b475149ac3a76865c94993e518941a63a2e4559e81a46c8a99afd2a73b36c633ddc6b32b14723f04a83af89a420a3d04810311a28880247236a3761236b068a9a4edf55317e8841218441eb1137342977215992ba99c1eea7dbea33aa83382b909bf1eaa9030b4386f8baaea643e41531204bc0df8243f81367f4d979bf0125b84eb5d5df53318463102938a85214ad7355960300db40719a2acab9297381a6708391c78a8d4029487c324291a7e4a0945a806e0f24368c7a2af91b8bb155d04c557759228673b548b6a4feb8944b7334bccbab144c84344457b8b794a3d3b4dfc2357be9227f9c4ce8b98003452c1d8d19c7a8332403a41308086346129d3f929b847bab1aa5d88935d816a708c6a5e41023bcd4252569cbc724a53df1b88909267a932186c751339863c8dd49cbe200797186924c26edb976de613cc2c46beb06b39f5c264716a76e67831e4198822d77386592c777a088c5785417b65b2e4235cc67947d7b214627d326ac1adebccc3a64017e004499a8887c4a649e443e74720f0b1bedd52b1a8eb78b3ac2d5516b7a3233be9448575209675f4a813120422684191d6771ef2b44d92b2ca3bcdd5f5ac20a63efc237ff9d99bb4f5094afc187ebbad39b8b9ce75902190741640babf653886162645a84262a24b1885c626403f23136707816acf28950bf181742c98347022cd5941b7b69e21b5cfc2b4c6c5f301bd32a2e7882a1e1a9cd94743fc86af0cd26b51b3512003cbe8628d299663da40baef443677033da8b8c21e0a0f12fb93f4d63809375fc877866394a1a5409e2f13b3e5011a2a5877732415281b7b19991e6ee0a470561b6bcb46d87b4086f18ca29c5fdcd622f4315dcfb11db2c6cf136b7b0a870ae89669ad1011477899b8f679e5c9a8413959ca0cbfb3b54ad58c98b94760058c6f1f499435118d9143723da05ba8f13e5cca1813f91ce01092917ba1d798ba3481121026713be1889b58375e5c4f9bb0bcc5fa808e2c00a36ca575c68b1d232778f71bf0927c5f2092d0629588826d02005db9bc0dce456e2b928ec9fb9c7a138e7b1065a2b660c287c3d062144cca71e5c1294442073ad48afc555767f1bebaf550d520659496af9237a22c27670a080f8a461778aa42c6ca9a954c28a658c73847a586fc3ef266562240acb6978e026152b1149b8d426aefe37bbd263a00da05df48375e53bacf9c4c11d4bbb055666ad008736b9c323a9974661215495e032aaec611af0e6a9244c2bfb6f3195d5121edc3c0719c3fc1365c2bfc70d5c6140e6a383714a0931ccdff946adcf73993aa113c90aef03374e251ace73770a350428ec32a9ddb4aed8832526968412863966228644b9af9842c2e967957f10d350a3499876f25d157bb2812501c8dc95365f83bc64b6340fa6cb4c2816b31824d028726de0112aa9ccc9e0b6869099d310aa6e5b79609487e7a20a56ba75c45986f92f5a4d1672f3d99927a1193ba15bf5df2586e823292593c49321bac9044e4844a7a6bcb08309e2520b6acf20e73ba5b05931e29ba43b2000a48c72a5df05ef715cd8865cf16a835a83c271402071d1068a426839ca424cb666545664ea5e7461af147b9d84583285ea1a05a02732031bb0ba40b14c828bb0e82807fc57882b31d9cf509be7b712f56994721b55da921eee8ad45c8b4e99931c9b71b473a89a2d4821213a1acfc453a41784d35b522e93c2d994d083674c71583782128476b04fec71f17ccc65b9c83f52c207b08adb10824a505b6da8a78d4c599a5b09979d9491e1383ea155576730614fcbdec1a8c801b94083a0fb55790b136bc5f37b752f3a6c636481debc5da8892ac1b04ac7447953015e7251838acbb6e24b508578b62d7450c46c76272806ac407112b73f7946d9654a45e943b406776e057c22e669b34a39d92f87928f8689cb8363b5b07b861be5a750bedb4a909605e6e26a489a5a4d9fa7be3976479f8abab955200c479e75983be821e79682ffb18553b72cf0797b2d2117add5ac0abc71cf0e4ca83c26d218295aec75872ba3a8b3ca22a2ab83404a046355fd394bf35d66df46a6124d18b9a4606305a5968c4ccdf6b77a5ef23c5d54c68389e610b30de122c2b2cdcea30b3c780612fb9992721e26273a3d8a85f38cfda38c66ae39b2f9186ef7bc1e0c98e8976a6cbc6c4875d73d7fb24c3da70fe850e80aa818301d60c70f3038153866dcd5d179e22db59b8991bb4 + +comment = Official test vector 56, seed: "687c02de1041abac7b2c1e6ec2a7c3375552ed5edb10e3a8139c24cc76bda44d719d8121a81d47a0b762b4e9eeb85235" +entropy = 63a925685a8ac5bbd918faa33ac397d1ffbcf99135d9da7c3d6ff7aa4c50af3d3afdb8a246a56ee71465591831c371f2eb87467b0559dedd776ba063ee6d2f93 +expected_public_key = 605471feaa9e92b94016a9a05f585f3c52a993a91a6db73c9ae6364dd2a07b6c2afb449122e76a3b273d424b94343b3bd7e7b1e1366204820819c8ba8970218a22262ca649d8e3223167be77d9a466c860ad7c320b227e873a0d68faaa441c0907805996d64f7759bdeed65cce25b367f02094714be404ca9fe56f6ad99e7d38b5396281314898036493002cb516878db66ab19e09478872c0f76abbe0f754b443b13dd5afe610c1adfc52fb3c82488984dbcc4d9850a0ee4bbc07d0051208c87914a3fa5159c775ad91a552c2fa2ac573787ffa68f456012af600af60183f97cb3e2936ef683fd8e2b5742c6de946b96f825cd0f4807640a532561c70600d4995bf8d2ca543db1eacd68d28b207617c23cd9a57bbf75abcb620d941913e6506aa0123f89c261ce9c39c605646904d22586643f4ad250870afe94dc950913602cc1cdbb77bb9b4df518d1a18ab0c5a25948302c0535908e70f84587eff169114161c3e646740893faaf6b37b42168fdbc494549776d528bfa2c2baf6a00a7498f403347a646c9a58328c59274ae8cff8b82787a29d67336dadd3404fb5509640c29c9456fcf82d4abbcd9899ab108a1fef872617c5ca780970182861c046a594d62757d33247b79e12873493634c16fa70983c9b593814e69bb160120b4129370519327ac2332063992af4370d9871e7a27d13420a6fb16ed9b579d1ca1d36a2094eac96b537109ad83f4df1a1d2e184c309ab65d75a3e409c57578214ea4035657757ab92aa930a76d251a1b87bc6b58f9d900e38156d73a1961c43be2e044314c89ea9601937c0a87d9c4b14cb9e79d83e722cc40b048bec5ccd038304ac0a65bf93b9a787105eb31b5be8845c5c57b9a9caf6243f54438ed84159f5b1b8b246073b1715b0f635e8078991118dfee2ce08887f9680bd4e672d3aa78df8954554d398d1675d785b85dd28a1675944d7597968f22855999f148cceabfabc2358c315076c6b4333a82520a8332543aa100034bb0a6776cd959bcb263074fc28956726d0d99b9d81a7dec14f13ac5ceb5b9eaaecb28e282bb517cac09809073c3d085718d1dbbd75ec83707cc768bc79a3b637d0acb34f37c9c2b4c0eef3233cf91c0bf5a6a9279f6ad136808a9a3515b02e303f4da26f93264c5ab9010a9c8550b9076d6471c196675edb08223672c1a229ad31c05ebc4fab557f46b4bb37dc2b605a87b888a1f475516db87b92451127436eda7922bb45b8b8462122542de969c31622cdd62676a8faac5663a8bc2191711383ef4c1cd7a183bb55cc3c83b566e5514f233d79a2963710c5e5225f7b09b0b6176f451a7f77570b1c17b7ba335511bc3c3feb884e459add3a594dd35662419272499b4e9258dc9aca946ca80911999d455d06407cf9c69e814478a9f5151780bd754a440bc69925155fff0a675e0c322c69174c27cd804279ebd3260feb62c0e24eb63c7a042996c25bc9342c589c340e99999f9c5054ff35c760a43974096c5fd23bb9e51e2483722a132b0277bb24010297c4ba2c58bb286c49ed20b7aae98c5d9b0601f06ee53c1808e07fda53114efc6d36b28b906611be3a29e68a8da76457be5419d70059f7c329aad28692d45892f335d02d36153217d5db379b621e416a54ce8071dfda35f639a04b14 +expected_private_key = f80c63dd6cbda93b6cee719fbad6bdbe1a03f18b3379306ace5625fb38c5edac9c8c94525c85961e14a76082bbd760ccf9b5ac777088b0cc80e0304fbcfc697cfb13dcf1cf777325eb473d11a43da4575b697a860445b02cf75e8b945ff9433a337c754e19453d4bbfd2f07c76e8b7a68b92abc870b56202f7634b9b37902d39bca04653fad9a0e4f0be548abb97c7a1fa18c34cebbae3987f4b3c52a5006629159ac6875276053908b389d931bc7e2871751169b6d81c8d8b5f52854a3e644c5c504675d688ba030e9e78a79e7788522516ffda2ec9946aa9791a634b6ab6d04456003acf348bdcd859567a74a7b73556820f8dfc12e467ae2fd11025e430114a5a60d3b42bb43845721637a69596eb953ab7b3e3b28b3bd9923dbc5189a37e9fe7bd9b763fa905314c0a35387a8e8552bf7135698e15b8d99b0777a0a5af1b7dafc172aa6a4d69202f10351603771876c580a7d24479db0d804b6513a09281f291f2706ab128905663aecb0bb31a41046771449d12c335051a2eb50ca81ace90940a8a6a355b21a9c7505491ea3b48b5323cc567ead909fbdb380fd504c851452bd34f0f65a39ac62d922a3c50a8566edab03358745d701332e4011022bfd4839ae7b6745c66aca80abab8213369e299253b40a7922df02ab70f9723baccb1ad563ad20c5eb8a01ae564be24f40ce91a0f06ec68c0604c74250909d317f8968947a12ea297a279821f1b5377b02653d66897aa526cf51553c268481f7174bd9495da4b0305650358a637a5fc31c99ba7ba304c6811b555e4b1c2f80eb4223c54032d16238861fb650bcba24b127026fba51f5985476103fe1375b94007a06bc2ab048bcb4a78e6d3c748b141be410992733630b8c917f89960273740a595071824a9d02908d52d334373e8a575d5d52e96e5ad0cc95bf2c761ae577b9ef6bead33103e5033e0765d748c409f8a44227b8f55838b38695c5e132f2cb9bfdd7cb8522906e9bc03dda468a04012277417869277e2169c63112e6a8942a1c13aee97300ff4caabf862058b6e7cc16f34c79ba200853701a98d630936a8a595098c8b19820ac91f47451e011069aa688bfbf5ac4ee018c53639a1b0573c8a420c4619166b011e79bd0b843d97766810a48e55d5ce389b5de4a739f77ccc5fb70d52b3ca5d01729935bf7e4bb984576f2acb7466c8248f975bad539b2260568dfa34cf2974d83699761c95405943a7a88374112f8ae79b4d244bf2d683f7cc7a533229bbd8b5e822c8b3449548634ff34bcaeff25a41aa84a1fa1f52f486f89630a7730e4f81ad23c14d6906816a849810951727042ed0782ef26c31281c0aade6c9334a88acb917b781c4f16327196422c24541065b5e80f4374da0853d478625a68f728a20c1c82ca4fcc4d62744fa658059141221a917d6121187d3b621179aa8f7b7cd0904e6e0787f9a5f65eaa78011b6b63290a55542c80a4bfad64677467dd1b12785e6bfbc31c1f3d46db55c0a035604ef658279db3232c675bc0bc97717ca3eb71d4f44caaf1b07bddc90ae982886594f98c41ae7481562cb63d0b2539eec589146735490a4a87b6ec5cc77bfc0810627aa3452cb061a1648ec7cbb4937605471feaa9e92b94016a9a05f585f3c52a993a91a6db73c9ae6364dd2a07b6c2afb449122e76a3b273d424b94343b3bd7e7b1e1366204820819c8ba8970218a22262ca649d8e3223167be77d9a466c860ad7c320b227e873a0d68faaa441c0907805996d64f7759bdeed65cce25b367f02094714be404ca9fe56f6ad99e7d38b5396281314898036493002cb516878db66ab19e09478872c0f76abbe0f754b443b13dd5afe610c1adfc52fb3c82488984dbcc4d9850a0ee4bbc07d0051208c87914a3fa5159c775ad91a552c2fa2ac573787ffa68f456012af600af60183f97cb3e2936ef683fd8e2b5742c6de946b96f825cd0f4807640a532561c70600d4995bf8d2ca543db1eacd68d28b207617c23cd9a57bbf75abcb620d941913e6506aa0123f89c261ce9c39c605646904d22586643f4ad250870afe94dc950913602cc1cdbb77bb9b4df518d1a18ab0c5a25948302c0535908e70f84587eff169114161c3e646740893faaf6b37b42168fdbc494549776d528bfa2c2baf6a00a7498f403347a646c9a58328c59274ae8cff8b82787a29d67336dadd3404fb5509640c29c9456fcf82d4abbcd9899ab108a1fef872617c5ca780970182861c046a594d62757d33247b79e12873493634c16fa70983c9b593814e69bb160120b4129370519327ac2332063992af4370d9871e7a27d13420a6fb16ed9b579d1ca1d36a2094eac96b537109ad83f4df1a1d2e184c309ab65d75a3e409c57578214ea4035657757ab92aa930a76d251a1b87bc6b58f9d900e38156d73a1961c43be2e044314c89ea9601937c0a87d9c4b14cb9e79d83e722cc40b048bec5ccd038304ac0a65bf93b9a787105eb31b5be8845c5c57b9a9caf6243f54438ed84159f5b1b8b246073b1715b0f635e8078991118dfee2ce08887f9680bd4e672d3aa78df8954554d398d1675d785b85dd28a1675944d7597968f22855999f148cceabfabc2358c315076c6b4333a82520a8332543aa100034bb0a6776cd959bcb263074fc28956726d0d99b9d81a7dec14f13ac5ceb5b9eaaecb28e282bb517cac09809073c3d085718d1dbbd75ec83707cc768bc79a3b637d0acb34f37c9c2b4c0eef3233cf91c0bf5a6a9279f6ad136808a9a3515b02e303f4da26f93264c5ab9010a9c8550b9076d6471c196675edb08223672c1a229ad31c05ebc4fab557f46b4bb37dc2b605a87b888a1f475516db87b92451127436eda7922bb45b8b8462122542de969c31622cdd62676a8faac5663a8bc2191711383ef4c1cd7a183bb55cc3c83b566e5514f233d79a2963710c5e5225f7b09b0b6176f451a7f77570b1c17b7ba335511bc3c3feb884e459add3a594dd35662419272499b4e9258dc9aca946ca80911999d455d06407cf9c69e814478a9f5151780bd754a440bc69925155fff0a675e0c322c69174c27cd804279ebd3260feb62c0e24eb63c7a042996c25bc9342c589c340e99999f9c5054ff35c760a43974096c5fd23bb9e51e2483722a132b0277bb24010297c4ba2c58bb286c49ed20b7aae98c5d9b0601f06ee53c1808e07fda53114efc6d36b28b906611be3a29e68a8da76457be5419d70059f7c329aad28692d45892f335d02d36153217d5db379b621e416a54ce8071dfda35f639a04b14aa73b40dedd61e6fdaac86971965c03ab14ae69e8130426fdf830bd57d0974ce3afdb8a246a56ee71465591831c371f2eb87467b0559dedd776ba063ee6d2f93 + +comment = Official test vector 57, seed: "4142237070c216bcbe245a39bd9220533c97651d84832b26727855ad994a0760c52b9319ad404693e4248b8c5ff324b3" +entropy = 6a1aee5e708c1b47f02bdacce4f56c860f74fc7cfec1ef3b58285b1c8ad7fec2230e05b7114ff0395cc6634db1eae8258072d09c09f291e92d6620b177dc50d7 +expected_public_key = 5b668ae6721c79e07ee5d26233936d195b62b192058cfbcb0a5a73ea0154d78224ebe84b7b611ced7256d0726492a4b41d4a8d6b2ca73a3668f93a77294439b0d8ca9a725c5278c21d896ca5d706e5f03d71526cb175ade2606e3c3a24d510b4d9816aa6846a77663a80f5ac0d364747307068da942b15cd2e02a3eed2818f9056d697897b509bd5048b178240c841580bbb77a79423996072f39497869007b19442f401009ba1a039c18f191cca42f9551713cd791c9fb847690cf6247bb752a17a9873e97bcc36b793b6ad827acf418543054698d77693f9c38c84354cc81c7a3b6a43acccc32da070fe29411f17a420521fc69c0d09a6425a20affc98681568b8ccea88e54b8dd9f12aef4b3c10f256eb1519671091984a1dbe972a901bb4b24246d7db01b86665374bb6cb841b3cdb2593ba5c96e32c20936ecbc4abfd24af76158b36a2c752a9bba8946b34c414eedb355a3ccb87431221aa2e936b0bd7540e697142da0817b1b51314fc71cf4017f50544474c572c70bd142c676b69afba4292f5f19e88163f2ffba3b1685073c3bbcac825b095b5d259228a459fa7e866e09735e4cab8fa733d4db6a98172846397883394059c635d23c09fbee3cab350b9976c6a8a900c8e1693c3704e779049cd1221ce767651bc23755a3a49c6be0c314a8c501579f7a447070effe0314fa3687ab92090738434e55280a42f22a66eab77a2932b07e6857a32e31a527a2a909865e053a32148b59cbac224c12468e444916ca375dc204c600899f90ba7c854b3646f2af3981797afc4e261c7a93aabc40a93990dabc82564336d01b2447fd35e8e86a0cbf676cfe6c3d229b256e585d8373d26c3ad66161890325533818f845301d9311bc8035714a722ed9206967123e65410562a745fe28f90d50d772a9cded6354132688ddb1ae6956eadd896cfaa71c44aa925fb3b2c6b7d5e47cbae00a91040456f4023174c73dd8a4d50f9714ad1cff718321677a6962587ba6ca82c341f02a7382be9715b41994db91e6d0b487207b9b660793e62470b806a7444b6faab38f48747484062ff443ae1da9e7ef41f797398f0527406787e00e197ac3248ee4a0e5037cf6c754ab9a24d08936e9d3313b99ac18886cfa9972030f1a40e58b25939a21698c434391785a3a98f0445567a9dbc0b4284d49652bb1862bb76fcfc6abe60831cac9aef6469464319411a30f7601b5358568b014e67a76ea42acacd7c3fc2f983bce1bc0667897b92590dc724b5284fecf7c36b3842c61c27af1a2f2ec95899591e707272bea384cb9c8c9409bb26d743faf196d3b8b33119a379d5cbf6823d4176ca83ba4e2a426745f346a42861a7b5343ad3ac26ea8895f24a379c449156123ed91a4ca701bd789da84ba0ed5c707d373634ab7a65680667191f806b6f62cacb4b40afdd649cc9d1650c3a5e40c8346c91b27ec1b1a957c778ec9c968c670fc84645fc07881c54946b5ab0b6033f45afcc6a61fbb99746f3991f5b827c22972939c5ff620bdc4b131eb393d108c56556719abbb978452ff0a12a1d138c9065c304c8514658193232c832b05b0b21a10483c6faab378c6b1415b75b43796f314542b9d7c87c1ca5fc13a12e8459454d36096c3ba38e979a3d4c852032429bfe1e663e0c256c2e93 +expected_private_key = d809438c90aea78b897a528534fb009d716de8d513d32168a1537489e52255d00f49c424bf5b5db0e15a3a9b9845eccf287776f9700ff5bb7ab9f40ffeab7f148a9633546846b672cda9ab8a37c8f9711b76474e7975ab7e16675a8626f8648b605066a4fb4a5c255a0a39387b03bb7f618c9ed1b37e488d4b7175b593860f6c97d637a2d8761d3b933291b2ccfa6bacc4dcc4ddbca804c7c55edb9fc5abb503036059da4d2929447cab1bb1cb746ab01293a2b2f2638beb06030d476bcd2c335dd5226b7450f8b5b2b130332dc9210640c10daa5faac16c1381c2a0c4aae3174be4faa53ca9cbf29769084715d6f8c163a0185030b0c7c9621336a9875946fbb73bda9774c07615711451f5594a44313878204c291ab7550aaf981409d4d7cbee727ba689400dab7382605f03873f38566421a354b59a3b48bc8f62a09519d932af5800a9a0c6efd5783bd93483a0aaac7853c890c3ba18835d1a2e8f14bd0768cc7d0b951909825c988648f797f5711fbc654380e661bbc41cf89b088e1410f19669aef65fd817564a4a4f40281b5e16a69be2b503495a4b6b680a08a54fe0b80ae668041aa120c7a363e38aaf2156cee293bfd4396dcc503646acb74b9460142e4476807c058d72c9610e3cbb50a29ed7244419c2c258659b3a8a23e7e69a3047298378424b7a12df3cce34f1364732b292b105eee6a487126815bc0013d66fb7099efd4931e4301d570bcf2facba0b433b9a03147242c298052650416651db690ce81c268381032b17c429a8e418b7e2bb63d30b570da588cbc36dc3798c65f81ef05530b9043310e182e88bb3e58356de408898738c9b3c457faca42b9b81ed7c4118869d5153338ef4260006c6be294b528c779bd6c8ffcb16e2aab439d3032b8ac45216282346200cf1c812033a4f9667af842481d807f92245bb322e04343971a656087cca8ce9bd3117013ae816ba745888a4ad51a167a17482ee5b88b0bba455a565b1d97bd3b9beeaeac0b4f2879a727028d4a1c61900d0770f15451a01964366d8a6ad1b5bc520392d43bca270ccf9a72df3d68b955c4bed0352b3f78151c4716512097bc92f2cf0a2560923d01358ab1b5f8b7bc687f5c110b04c6512372f119fb23bb852398a6f599f4d145a8afabaf8ac8726abaee569c4579b494a01c67e232b93080d5df1542dd59f21760a24747e98e26466280c04d1784d9b581b4cabcac1c3dde1ca8e00588e0732f76b99ec844032d99ef65c8a9ef4a661e78a47b0542b3129e850647862132c208cb9b3986eb5b510ea1854300ee966b0d3bc09922260ffc96b894a181a95a41f1bb3acb2572475b3fe8933fe3902c965678b95512289cfbac30a2b159b8f2b3535e40881d81c204cba9080b9a7b23190965eb660754368955c0c7929e9447b92ac78e7867c1b4770596047fa820c03a11caa3c2ba48120e29ad46c289920222c511c9e18343ab20067f926435c6d6b040955f9394601b805e38a751bc8a1853fc05857eae658a8a7cad729373e73253e7728fdca89e347bbfc48a7bafa48cb167111367f40c93bf71ccf208a891c383ba3b593f2663148d779ed82b23f4b6796209d51425e9168cb22224f39f0695b668ae6721c79e07ee5d26233936d195b62b192058cfbcb0a5a73ea0154d78224ebe84b7b611ced7256d0726492a4b41d4a8d6b2ca73a3668f93a77294439b0d8ca9a725c5278c21d896ca5d706e5f03d71526cb175ade2606e3c3a24d510b4d9816aa6846a77663a80f5ac0d364747307068da942b15cd2e02a3eed2818f9056d697897b509bd5048b178240c841580bbb77a79423996072f39497869007b19442f401009ba1a039c18f191cca42f9551713cd791c9fb847690cf6247bb752a17a9873e97bcc36b793b6ad827acf418543054698d77693f9c38c84354cc81c7a3b6a43acccc32da070fe29411f17a420521fc69c0d09a6425a20affc98681568b8ccea88e54b8dd9f12aef4b3c10f256eb1519671091984a1dbe972a901bb4b24246d7db01b86665374bb6cb841b3cdb2593ba5c96e32c20936ecbc4abfd24af76158b36a2c752a9bba8946b34c414eedb355a3ccb87431221aa2e936b0bd7540e697142da0817b1b51314fc71cf4017f50544474c572c70bd142c676b69afba4292f5f19e88163f2ffba3b1685073c3bbcac825b095b5d259228a459fa7e866e09735e4cab8fa733d4db6a98172846397883394059c635d23c09fbee3cab350b9976c6a8a900c8e1693c3704e779049cd1221ce767651bc23755a3a49c6be0c314a8c501579f7a447070effe0314fa3687ab92090738434e55280a42f22a66eab77a2932b07e6857a32e31a527a2a909865e053a32148b59cbac224c12468e444916ca375dc204c600899f90ba7c854b3646f2af3981797afc4e261c7a93aabc40a93990dabc82564336d01b2447fd35e8e86a0cbf676cfe6c3d229b256e585d8373d26c3ad66161890325533818f845301d9311bc8035714a722ed9206967123e65410562a745fe28f90d50d772a9cded6354132688ddb1ae6956eadd896cfaa71c44aa925fb3b2c6b7d5e47cbae00a91040456f4023174c73dd8a4d50f9714ad1cff718321677a6962587ba6ca82c341f02a7382be9715b41994db91e6d0b487207b9b660793e62470b806a7444b6faab38f48747484062ff443ae1da9e7ef41f797398f0527406787e00e197ac3248ee4a0e5037cf6c754ab9a24d08936e9d3313b99ac18886cfa9972030f1a40e58b25939a21698c434391785a3a98f0445567a9dbc0b4284d49652bb1862bb76fcfc6abe60831cac9aef6469464319411a30f7601b5358568b014e67a76ea42acacd7c3fc2f983bce1bc0667897b92590dc724b5284fecf7c36b3842c61c27af1a2f2ec95899591e707272bea384cb9c8c9409bb26d743faf196d3b8b33119a379d5cbf6823d4176ca83ba4e2a426745f346a42861a7b5343ad3ac26ea8895f24a379c449156123ed91a4ca701bd789da84ba0ed5c707d373634ab7a65680667191f806b6f62cacb4b40afdd649cc9d1650c3a5e40c8346c91b27ec1b1a957c778ec9c968c670fc84645fc07881c54946b5ab0b6033f45afcc6a61fbb99746f3991f5b827c22972939c5ff620bdc4b131eb393d108c56556719abbb978452ff0a12a1d138c9065c304c8514658193232c832b05b0b21a10483c6faab378c6b1415b75b43796f314542b9d7c87c1ca5fc13a12e8459454d36096c3ba38e979a3d4c852032429bfe1e663e0c256c2e93cf754f2ee43694865a09ca7beb0deda9b1328fd0abdf30ca5c338e27e8be04b5230e05b7114ff0395cc6634db1eae8258072d09c09f291e92d6620b177dc50d7 + +comment = Official test vector 58, seed: "bd334d7b7eb14e00e68863f2e5551a095f8af10681c28353fd19b9a7e70b8bfe266840860609008a567abc66316c77ce" +entropy = 6396b328b100e4c7f4bcae69875edea1a1982421558c608c13c592bf7b5d0fef1100ced48add211a5c937b8d6079d8e271af3f949edc61f70e60453aef20dea9 +expected_public_key = 98cca518437873f144e7e261e8465b3720582cf7706d684f84e618e8834f35857d4a8bbc303134b5e235dd1b2387a81c663876c5530293f99571b97ae5a299df0c012e9662947089c9f81687722fbdc30ce50689690b30932a8a3ce7bcf6a353bf988dd310a2c347bfe6b30999e69c455b9f472b9bca0216c84265e5d9486f6a7f1f3125c16467ae41b9f85180497b255adb06a406a13a221388e14c0de8cf73b6a952c2b2501644831c3700b7c273b7a3180a7641621f33b41c0f9255efec1025fc46f658c64fc89352c54c264b97e5a91c2386cd3790605127740da2076eab4876e128f3746843205b8328cfcdc65feb92c2d973bbbfc68fd7a46db51641b7830e73589f41d413fb571c37685dff142863078acf00043395bfab3589b0cb435981b84e54318ab46e398389b8e146cab2a9666330ec4c90a652a0f036951519880a45bf5d000d4e40c6b6554cd222880d0b91b67153c43909eb2c0926354d436c2318c593f9fc214b548e17245c0c9b83174a6783508b97ac6a8d8a88ecd278e2e52c3c9138b1685dabba2bb1425075b298cb9120e790afdcb9792c88698cc156ca5a789474992f470b1d554514823e87bcae52ccc872c951b0c24b4a2b0460f488ee7768d56b07dc79b3b4cc321e5878ac0a5c3146aaeb6ca123206b0c7b5aa6e0bec5d0a903ac9415da345af199cab86ba99234c9526e6e8812f6da8001f31337b8498a8374ae527b6032a0cf3142d1d34181a5afd6aa432a588ae1f644f5a100fa593f0ed2753f441ae5677484738ff694abcec58781b06d0213579f827fb4f97b3fc343a445ba3035aee989685e7b20be6103fd39afabc334417379bd666181925ed369680b851a54c41b6546b9c04ca69742b2a814763674abc9cbcb03e96f9466cbeaec698cb5c9acf814e90887f8d15bee556b28f50b739185eb7a5a06e896ed0048bbd905e016436477a68ebbab1e172928ac8fa9a8b0a0d999b135a753a29a47d0136865b0f382572b0697d0fccadc8a77c1b591bd73b639e13f9c21b6f0969b0aba3ea807303377afe0f49421b68d0712823fc448fa9a468fa000d5964bcf9a9e7fc92dece03bf6732a36935b25023b47fc94c15795dd983bb4531e935a19778305d0e8a75c2cc770eb46b6d5759df503bac33f0669c775729c59eb94d48223d763880e8b58473683cee48e309380f7b442e6c83f0eb9bbb0b1ae805b1498471ac1149d578b454041aaa2f5cf13390f10a72df3385c6a8a1f990bb946f4c888e585069b5849882788a1be27da0725276ff9db130519050b74cff69a68534222499cc61f5845a8fc0ac5629e0cda20d3ea2f0046b78a2267fa0187f15721ec53083018772097892be85c1be99480247e6e30aac8fa2c593c630b981e57515e0f7414cfa8b606d931280a950e567c93b319fd23ca1b682fc0b960dd309f80455cabbbc71979c59a025008462c0681465d748ff2a6ae24e86c79922e2845568ceb5063fcb81b78295b93a80b221ae7e14a9a9bb7182c1acf347f2fa73784835f3375a29ed05e4bd120a119cd0fda29f76a1eb873aa88d0cb3c661ff0d5652f2b4604e2bdb1497486687f17b8ce7a096a59e0922260ae99bb7412e306cc0b25940ffddf25214ee4dd4e1aeb851878e2493c05e2bd5a30b5b99d369454 +expected_private_key = ba45541ce7b3de134e6b17030710bcce09bcdba837f23566dbf1928c99cffcb674cab9c41b3151faa3078177b9126c7973e25687452da075965baa804276859b092d9d4095b5e3a27943776da65262511f62a3aa875b258c7929b502ad6cba00e3b38011c943310bb5cb24791a71bc5a2796d6197192d9594936089d88bfe976058ca16c152193838a3d7306b312f8160df15288f9063514a403acb76be298f5c92d65a90a0bcb28a4f438ea447a9c881808a18a2f5c3c1b876b3ae94ed28478fddc1e98a64fd797a0931cc4a18777e5d481d9e92c0cf2b5f5a58635b368cbc8c25dc733550774c0861795939b74e83a23757c212927805663de14a0fa00cf10f51850dbb4cdd7caabd5c09b2818cc0a09a58169e3827969518e8fc7bc8325b45656861a848347a358ef1155e5d43f7910a738a132c8892977075c9a19c1eb6399f2e7bf1dbab593a907bda509ef5b0de35a222fc951a0829a838591a0441294c35ca0b86be6fc02e1ea1b7d4004e5bcbcaa2a280ef37067d72790bb5d59587e050272ddf8b117286fe80c1bbf078e6d259a9b53bd6ff1b43a86b24adb27bbfa3546c179b8f295726ab768bc7fc8dc2a62715030d93581165f1e4a03d42374a31039d55741c9c49a1c807468cc826f0380b90c9c3f319cf1f73811d674b05c147bb2613ba56365ea04872b9244b236b0d480dd0b47b7797a23286269f97450e13791b205c8aa3310b72f3423b263d93ca320ae1ff04fe6e3bb703a6c4fc17dcfb6341aeb485576b53d1cab71d9049dcc68cf86008bdb6152994e70152f96c8ae4a0819102ba5077b26086b2dc6b04b324a31aeccb372cc18976bb9da42c8eba89640149acc544511546c5dd293c3173ef28ca92b85b86188bc6fc09e2725307a2c3802c6086f922cddc62b5989c5a6846496d2bcbf7775a4b3737ee6c6b69cc3373c96e79675cbc781146c7a78824aae4322e1a69dbf64336efc3348e414ecab04010b9f7399310253679b48af3c23961bf345b35172c1d472f9a31274c730373a29154a581631a0916a21259a46efa387b36cc9272b5284085709e46f07babfcc835959d841b3647f51147a013987dd9556111435124101e5d42ff0848bfe2169a49485c094226ec6994cb50ba9f6476fb2a39522a08145b987593f2fe67a2b2ccb036c4e6540145758c6745a389955ce9744cb8030bd85a838a5904198b318a4d265eea61c70e5a34156ba00a53f05c9be7f1ac214f6a75dc8154eeccec7ca6218b34b8e063231c450ea3a8b48f7c97d9c58fed709c350a28a34873ce76f0fc7a4237aaea0804e2d3874d726aec41c3ac8e02706da459c01736b7a5e0936b3abccbebf146350ea2a246c225ba897473817f28c8d6bbb55fe98a48de682a91770edb1bdb190a0efd677a7fc29fc62690668924cb5887f4078179aade85c0dc8e3529862b2760b187b7778a56c6b026769e339aca5f8c948801fddc4acc3bcc7ff548dd9fc12cd7a394c24a7cbe18d3d22ae3b48beb295905b217af384393705107f33b02547822b0a2cb1b57b6fc637e071c0fdba2f87f010d0c81c42db454f5c7be69ac0069c33330bc40532248fd0b90a28908f7471fbcc543fa94403818698cca518437873f144e7e261e8465b3720582cf7706d684f84e618e8834f35857d4a8bbc303134b5e235dd1b2387a81c663876c5530293f99571b97ae5a299df0c012e9662947089c9f81687722fbdc30ce50689690b30932a8a3ce7bcf6a353bf988dd310a2c347bfe6b30999e69c455b9f472b9bca0216c84265e5d9486f6a7f1f3125c16467ae41b9f85180497b255adb06a406a13a221388e14c0de8cf73b6a952c2b2501644831c3700b7c273b7a3180a7641621f33b41c0f9255efec1025fc46f658c64fc89352c54c264b97e5a91c2386cd3790605127740da2076eab4876e128f3746843205b8328cfcdc65feb92c2d973bbbfc68fd7a46db51641b7830e73589f41d413fb571c37685dff142863078acf00043395bfab3589b0cb435981b84e54318ab46e398389b8e146cab2a9666330ec4c90a652a0f036951519880a45bf5d000d4e40c6b6554cd222880d0b91b67153c43909eb2c0926354d436c2318c593f9fc214b548e17245c0c9b83174a6783508b97ac6a8d8a88ecd278e2e52c3c9138b1685dabba2bb1425075b298cb9120e790afdcb9792c88698cc156ca5a789474992f470b1d554514823e87bcae52ccc872c951b0c24b4a2b0460f488ee7768d56b07dc79b3b4cc321e5878ac0a5c3146aaeb6ca123206b0c7b5aa6e0bec5d0a903ac9415da345af199cab86ba99234c9526e6e8812f6da8001f31337b8498a8374ae527b6032a0cf3142d1d34181a5afd6aa432a588ae1f644f5a100fa593f0ed2753f441ae5677484738ff694abcec58781b06d0213579f827fb4f97b3fc343a445ba3035aee989685e7b20be6103fd39afabc334417379bd666181925ed369680b851a54c41b6546b9c04ca69742b2a814763674abc9cbcb03e96f9466cbeaec698cb5c9acf814e90887f8d15bee556b28f50b739185eb7a5a06e896ed0048bbd905e016436477a68ebbab1e172928ac8fa9a8b0a0d999b135a753a29a47d0136865b0f382572b0697d0fccadc8a77c1b591bd73b639e13f9c21b6f0969b0aba3ea807303377afe0f49421b68d0712823fc448fa9a468fa000d5964bcf9a9e7fc92dece03bf6732a36935b25023b47fc94c15795dd983bb4531e935a19778305d0e8a75c2cc770eb46b6d5759df503bac33f0669c775729c59eb94d48223d763880e8b58473683cee48e309380f7b442e6c83f0eb9bbb0b1ae805b1498471ac1149d578b454041aaa2f5cf13390f10a72df3385c6a8a1f990bb946f4c888e585069b5849882788a1be27da0725276ff9db130519050b74cff69a68534222499cc61f5845a8fc0ac5629e0cda20d3ea2f0046b78a2267fa0187f15721ec53083018772097892be85c1be99480247e6e30aac8fa2c593c630b981e57515e0f7414cfa8b606d931280a950e567c93b319fd23ca1b682fc0b960dd309f80455cabbbc71979c59a025008462c0681465d748ff2a6ae24e86c79922e2845568ceb5063fcb81b78295b93a80b221ae7e14a9a9bb7182c1acf347f2fa73784835f3375a29ed05e4bd120a119cd0fda29f76a1eb873aa88d0cb3c661ff0d5652f2b4604e2bdb1497486687f17b8ce7a096a59e0922260ae99bb7412e306cc0b25940ffddf25214ee4dd4e1aeb851878e2493c05e2bd5a30b5b99d3694543a842153dee9e035299d7e268c9492d71188f9fb24bdc2dd20c1ddca647a15231100ced48add211a5c937b8d6079d8e271af3f949edc61f70e60453aef20dea9 + +comment = Official test vector 59, seed: "a0264c58ab1f2cbcb212077fd378d340307accb31f1312137cf84e3d3135044d4eae8bd38bc3e540a0c14d46458f6179" +entropy = a453bcacdd2b0d4646009e5ed451c3c45f08fb827ef733db3c517a9dc1af93e67a3cc8aa3239d4c52ce4c95afdeff6efbfacac10d294edc0e7cf4535059bfdba +expected_public_key = 5e451e4c8c85a192c91df27c17c0684baa6375b17586f8bf1ef12b91615bd08a340c58629cd45f7a392f10a04916c249af956b180bc418b8a95f66b2d0847e79d247b430812d682b1fb91879faab68f25602579bf0d895073780007b7d61940239913eb217cb16a63ea08b29656712a21a32c754953335c29e769df17125d84c32b3250ec96067b975bf524091ee4013a8b67a19a331daf38a396a765f7820a5e3606a734f5ba854d1e6b6e70cb9ee5b00d4d18d928921ebb8048e284a3a05a3df9469ec53195180ac9f869a8e8866d69019e9730fd6e672db024b6ecb4dc55729024033703b6fdb7bbeeecb2345782815843b7b7664627cad52038f98db605fd23d24080f809a276419c876aac69977998b1400395829656c97be262e053197ead738d9bc995145cb2713b5e181223e04497c8114ec5a05384aa31cb84406f93365d7059dd88db8f94a8f068fcd10be96e32a0e926dca518b3fe9286a755f29d83cf667407758141b2011fbb1764d3334f3a763a17cce33c2816ac79ec4cc4c2d842b004c352aba419be87281779300708bb20143a43413a2a55c41e36444046a3c021a4d7818dd146d1dc335c66152866597aa69a44f39a2814a4830e002672731d93b7fe5f77587b782aa279cc9807d6126392f812e83662d49db231dd3060f882d71d2a0a4c94adb3784ba1785187423d7e8a82f379eecba7e6f6a67b568698ac3a2c0b096b015100bf9acfee522a0192e49880439cc1fa9b30fb7a10544e1867b0c34da981ce6e660cebb8853545994454815178c60b04dca7073531aa2a5095f7b8578cd9889f3428a7d1c72b8fb320f304fe5d23a4291666bf7aa1afb5086532fc5aa347dc29279a4484261614f2774c81374aa453024b68d384b01565a36d98b751297477a61780e98135375af8ef68359332826da01ba6a73d5263abc659454f57d83172d0e515d3754270ad84543d995c0534788a6786927b952698abe693bfbb358e9e393151aac991c97fec8c55cc407bf027df7e2a505db531d47344552321107b651fa4e47d4b389c5825e02ca1f42839ada4d7eea2ccb24a74e34672bf1bc4f33c88c3603a3fa6ce87aa5cfe30125f99e81550c19b58a807ba8a586415c2924a6e467ca8bc85a5400f910457e8b9d74a11e2668c0f1a2a1d0389361d09900ec6671206139380ebf9390b2401555ba0a57fca36d2742f569a573096a2b442c5992c3fb65271479291f097cb94589fa15bf73cb9319d93860eacf1cd1bf7d380e03587ce3faaeb6360d79574803b5c49841b74918768efb518ca46b26929f68639eb8fa9f73e61a8b69b004cb5d9d92cf0dac9abc03171444a03409714dc1514931182701c19e242ae73b465af335c8d3588ff468346abf76604b6ef887a7eb8e8b44005bb55af328155af7928c732e7805010cf0a50ec68e29acccebc4a39e2aca10084e2543746be6c81d482f6f3c1fe0d31c6a69329d783a1bfa0b43e289a2f843c71196809ca4b82c75c59c7aa5d311350aa55e89735d9c34e6982d17c033937253d9778ca31a14a9894c5d801415056552c410484970cf2ac86b374644a37976ec4a123c0603ccc01c6c6e994514f13885bceb2f8b0a57073e0f3130daca54c038dc1085402160513337af2b6dd900b04dc3bdfcc90bdb +expected_private_key = 2d80a415a1b29961459e396204e5b5e65540a2a9ae9cd52d867a9e20952fc7565b66151653448353697b09723b17e3b1ef375a3e260a5869b579883fd1eb3a06da5c11e493f4cc9d18381856fb2c36223e7214ad78a178b2153dcde882451776478a4e06b392ce9b9d0310a5a134b42c37312a8932151571d85cb69d9333ff8685569568a0fc4568682ec2f5506f59742601c46db34efb9665b5815574518ff677be1c0991b644b5931b112220c6eee10c37c19316156bcbf354fb661635e42f6b26b07f9552d7b1a65d51c7eb6a132034bd755674dfc14345aa72acbb85d4724b2ba14925421e570543ae904f9bc4016bc0389fb9922cb12a393a24df219290dc506e501003c0ae8cbbc685a25a91147265207f93f190b12baebe7cc7edec476553762ea45e48694ddd172b6787b7d9719e89d77563c9c2ccb77caeb23d7aa9181b82b6cba09aef1851235c7986194c8322280b4192b94262fc79ceace4b894c86814d4929bd773e6a73fb0c7c36c67391a314555674cf415292055bb39319dcaa7b07230204c068028b3ae7a7223df112032d60edd1b6b52ea1ed13b86231a1efb2969a691cef0d219835a44e907bb0cd2ce6da1442af1460f2ab882959e0862bccfcc6e3fc2bdb5eb673b218d6e9c5dc6461d8796945b614c81a68f9cf381d256bc1e63285141814077af5f54c2c6b487dd29cdb1d2ce08f09122d09632ab823cb00d86a57f8933743f347c203894d0043f5692a6e12283abfa1b98b39c6d638132ea4b94644e89a0adc35816be01a408f752b3215029d7661b554bd39abaa906af32f877cd4b28bcc217825ac897d06a4c233462fba602a81321db93279a19bf44131b86035db3c4ca911f1fa30146f9be0333650c3c24a5c85bf5e252413853defb040f8a16f4abb9e18cb3d496a69b356d8206c106864c7464a7a7ec5e998b3fd5b18df1d947e171272ec5aa1137ccbe50ae73ecc106250c0392a41a73a4861acea19257be33cef406b7eac1796f605a709a4bc06bbe40867966e830e8aac19af626a4642a8447276f09cfba6486564079e1aa38d7e179d9634e3398b743a1812f02818e979b4434a4516c2c77672600d5b7d3bb6d7e3253189c3694120dbe2519c62c80558ac1d522855682962df611febc9f33fa27a0787501a42802863b5cdcc6aa81b964cc2c9b8081b63750a6358db5566a0d3229d2989e98199855a2448f54688ed2487b816f5cd651206350fbbb5cdd995a9db37b089caa57ab0deddc9392ea1c0f99031a42c350cab7b6f54c1e4acdd0e28d7975a188502fef055feb5889bf87929b6006562626335b05edfc544f10cbd927ab3c4c9e806700349b9a0099801d5948cff3bf0977a9691a25ac880d593a36d1e5436eab078bd9a6bf25bc3d6b5bdfa02aab06ab5842c440e40d430aad9311015a8767417b233fa8cfc64914533031ab39b845a3c50ce00ba0f1a586053768ea48293044f3a831b456320600404761c7e826a0b111ae37db49b31bb3e9389bd3e354f08879906996df2036ac49b9c773af5fec5375519ae7b8c61ce475ac544d13a5b421b8a686251b6d1c64f8a353406248b0430c8a3a308b600d0c9506d6509aac9a460935645e451e4c8c85a192c91df27c17c0684baa6375b17586f8bf1ef12b91615bd08a340c58629cd45f7a392f10a04916c249af956b180bc418b8a95f66b2d0847e79d247b430812d682b1fb91879faab68f25602579bf0d895073780007b7d61940239913eb217cb16a63ea08b29656712a21a32c754953335c29e769df17125d84c32b3250ec96067b975bf524091ee4013a8b67a19a331daf38a396a765f7820a5e3606a734f5ba854d1e6b6e70cb9ee5b00d4d18d928921ebb8048e284a3a05a3df9469ec53195180ac9f869a8e8866d69019e9730fd6e672db024b6ecb4dc55729024033703b6fdb7bbeeecb2345782815843b7b7664627cad52038f98db605fd23d24080f809a276419c876aac69977998b1400395829656c97be262e053197ead738d9bc995145cb2713b5e181223e04497c8114ec5a05384aa31cb84406f93365d7059dd88db8f94a8f068fcd10be96e32a0e926dca518b3fe9286a755f29d83cf667407758141b2011fbb1764d3334f3a763a17cce33c2816ac79ec4cc4c2d842b004c352aba419be87281779300708bb20143a43413a2a55c41e36444046a3c021a4d7818dd146d1dc335c66152866597aa69a44f39a2814a4830e002672731d93b7fe5f77587b782aa279cc9807d6126392f812e83662d49db231dd3060f882d71d2a0a4c94adb3784ba1785187423d7e8a82f379eecba7e6f6a67b568698ac3a2c0b096b015100bf9acfee522a0192e49880439cc1fa9b30fb7a10544e1867b0c34da981ce6e660cebb8853545994454815178c60b04dca7073531aa2a5095f7b8578cd9889f3428a7d1c72b8fb320f304fe5d23a4291666bf7aa1afb5086532fc5aa347dc29279a4484261614f2774c81374aa453024b68d384b01565a36d98b751297477a61780e98135375af8ef68359332826da01ba6a73d5263abc659454f57d83172d0e515d3754270ad84543d995c0534788a6786927b952698abe693bfbb358e9e393151aac991c97fec8c55cc407bf027df7e2a505db531d47344552321107b651fa4e47d4b389c5825e02ca1f42839ada4d7eea2ccb24a74e34672bf1bc4f33c88c3603a3fa6ce87aa5cfe30125f99e81550c19b58a807ba8a586415c2924a6e467ca8bc85a5400f910457e8b9d74a11e2668c0f1a2a1d0389361d09900ec6671206139380ebf9390b2401555ba0a57fca36d2742f569a573096a2b442c5992c3fb65271479291f097cb94589fa15bf73cb9319d93860eacf1cd1bf7d380e03587ce3faaeb6360d79574803b5c49841b74918768efb518ca46b26929f68639eb8fa9f73e61a8b69b004cb5d9d92cf0dac9abc03171444a03409714dc1514931182701c19e242ae73b465af335c8d3588ff468346abf76604b6ef887a7eb8e8b44005bb55af328155af7928c732e7805010cf0a50ec68e29acccebc4a39e2aca10084e2543746be6c81d482f6f3c1fe0d31c6a69329d783a1bfa0b43e289a2f843c71196809ca4b82c75c59c7aa5d311350aa55e89735d9c34e6982d17c033937253d9778ca31a14a9894c5d801415056552c410484970cf2ac86b374644a37976ec4a123c0603ccc01c6c6e994514f13885bceb2f8b0a57073e0f3130daca54c038dc1085402160513337af2b6dd900b04dc3bdfcc90bdbda43cae3c4da51d69a57eb87094a03cd3a9c3e6b4ed864cc691a60f0509cc6467a3cc8aa3239d4c52ce4c95afdeff6efbfacac10d294edc0e7cf4535059bfdba + +comment = Official test vector 60, seed: "99a9cdbfc674ab3ff2c64cded7d697a6e27a767434a47aff7c3fbf3c6a22d6043d27868955286a13efe3de36d22ec48e" +entropy = 47ca2b77c5b717f423222c2730ca5cb9c856bc951d01b2b2c80bd76ccb5539b78f1481d7cab000e33fa07de8dc9627a85e76fabb4428a3376e66300cf12a0787 +expected_public_key = a20c8da5745f754b89a990746ef771cf07a6d8109998936b282757f344a1b00b851eaac27a9a7fbf480d44262868542128461598b5597b10cd3a2a26e3f941a9a4719ab2033fa1181ed08e3247bdd396a834e43f5700522cb307ff4b150bba9d8b6aab47361a7947b7a04b8d923202ab1a3d6644be06bc6c1e0735d5d92821c5b8e9b9a83c343d0c456b181b6fa566b0e83602428b6cd33405a95abb623a73299c5b4550a7d6c31d6ef81473489bbe457e744b5d1e39ab74d8a051951abd01a6cff3942a102a33080327437635c1c17966834340c26654a3f38616e5eacb0e489141b14e9d1b15b7fb30927715273547999b93ea2a1ca2189f5645cc4889943f3ccd95496b71f392f78a82aa1a21d66382c37154323c0616804f50125d6b0698e5dca3e2d5658ce153bbf57e4b1908c92587b8c863ff4872e9e1963ae6c971c6ac3932bc974b9f15e5743ec069ed203c3624a022f9a7420ba951425a432b46c5e8bb666091d6f223e357ce96c55bf067b3c3f51abe70abd85a73a42233800853031313ae9971d280b3aed18489e75cdc16cbb3ebc95a8c97a768aaa6c0bb0da7943037bf2b4a523e33abf669c262941f326b11ec6bc8ef51b0666268d6d433b5190bb6996f65925a7eb0761eab6906178be9a923d1c61c0b7683cea681648c44608217d6dc86441a8f423a9d1c288b32ebcd049c15ec151e256a322ee79e2c689a23a53b8d473f4c643aedc646401761a7b75f7bd4145e837b756003bab223ff1a74feacc2e449b5dd9b5777d62ff0e20e4b395821474ab428aa2ea219bfa169b95039616598dae0b9282c69ce329b534bc7aea58e17467b1348b1ab2a031324bf835c985371b0f53877dca53570199b23bc4d70a9425a32b54749082e794e10012e9b458205e106da807c03ac3202a4350050815487626bd018706c69a6ab02fcb92621114a16cacfbea02aec424f82fb874800c61cc23bc6618ed75674a70a6c43c4068e2a7c9723a054967e4dab09f337695bbb01053a7c5dbc764a0856d2b75dd4a94a9898af8b95a62b487ec7fa9f00ab75325c9ab8248f1db65fd7661dfb0b8eecdc2a4134103380988758379d0a73b0f348b00b4b13b115e74674aaac2ba8c2a7ff440340b622b5c0bce05cb601259913c488fee540d7c058a28a0c28b856ea800d26a6a26f8bcde7d78298314cea6056b00a845321a245949a8c7c98d9f8821f1264c658a8061a3014249b7e522d586a54ad7a12ad805544247d74058bc9ac0f603a44ac5199bffb69c1570c4076b345064ec00c5ae0d6a2308947593a84ddb6133ba40577b7b245c20b5d04c5d08281ca0aa10da2a358386d2a4c048c89a2402c9150a7419c0a1aa17562fe786f00486dc82a9809dab08f7b16d9432981087b6741269424598eaa99082525d5db0deaf1b96f55b41ee209f57aceb895babc38828b712724204744834303c496b7171fc458534f46892627ae54800fe6f11d06b6af2b6b9259144f769b1f16c0586c9caf01f8491251907fd213aa6c0bce5b08f060124fb99822d964c502ac49c16ce9fb17eb0c91af559947c056af77ca687c4f675c89be35aae91584cf82202734379b56784fc5ce56e3852d89b052367d9a5d375d06ec7863e051cb44929f17a4656a2cb2c58d8d457897a1aa0d +expected_private_key = ca481db6775f3d276a56ca0e60ca79be147e63b6898f4b814c69a06f55111c9824cbc1c109a01a7baa259da651a1a51d60bb358432550bc1aa1cf3656e0667d726c69a39ae564bb99162c824634b8b8a706d82175bd9657ec09a308b51a3b429822667a5135fe4350a8b3ca10e8b03b6da0bbd616ceec0a08476909c6182ef0314b284cc3f43c337307facf7b617348779d7493ae0a25d415124bc5d9134182169238cea1a46a3001a8165713a3e5c16ae03a477207b99c2cc674fcbb14ca439fcc3032e4c2f1e92841d73859c76cfbe245193816d87c12bb3f12763174997760d6887a429a37f78c32cc1ac8facc587aa235821c254a2341b7c6bcf8b52c908836b67d39d63458afa9530fc2748de4a698af346f8b5405dc7b43b05953554021af73c585b6ef248c07ed23116baa18c845571823d25cbae0af57d4f6ab2473b5919cbabdd7b4cccc1be89150cfc585953389172590edd61c3885446b500495247aed57a9fb1140ceb6b29f7f9a9f524106d8cada3432c12468f9bfb9a50b920cde85654c25249350f6760293ddaa28c771963497c4c5230c05862a4391330f54cadc3b0c92b9798f5bdf8b21016725ac8f565466464c2033872684608111248fccf94c61337eb6b1a9017e342c29eb2b148936119797fdb2757bef51a9a2601a00c6f0547b1831b1ca1118cd2e1cdd601a0b491c588cb5ed88ac36ae183848b9f87264cc5b020b2e965e5b89ff74c58cd2b338177bf1350afda9a74516a5845381e5fe132b4089506e8cde6346fcc760759592345927c5c6a97045b0ad3973e806778759b35988953c80b3e7574b7caa225c744372ee3042e07cce978a3f964395d40176aab7905a4bba98250f594c5a96bac41851e09f897df0376a89516040c1f8fccb93d44ab474c56913826c9e2171ef67510b53eb31153fc028b3625aa7a353bbe79cc76d393e209115dd00b5d6c98f80101705544604351cdb87715618343bc3fa227c1e9fa1ea3989390b02c59ec9174e5165239427592a2d973774ca62dbd9410164bcfd95834c11621f7da54dc55c44c594785fb0016448f2cc39a05e01d8581658a2410caa630347c3f0f6c86f344816bd13b3a04313a730f2de9bb50659b642353f6463d2e2a1a78b722287616cdc266b01098b3544632152db3b23938d67c63e51949496e13182326d5b7d70b81d90cc6c5d84d4e5907833a7a76d3850ac4993a696c4b210dcf352a32b4c83dc9114305308129bb4ff73a91d733303bca92fc0083d95d32ca54557a6ff3c42c2bab46ff913e1d39ba3f6092e30ab47f9985c7c439448c92b245259d388e291c04de427f378011ca983b21b2ba8bea9d6eb36001ac4fa5061ee1670066f9252524848973782774cfa795a2285a2669515d4fda7093bc54439753fb6b4e6b781eeff574155b2438e074b332417d751eab1ba1475436e8fc1b670c3928a3553d2bcfd1a59c46ea2542884f91f98a38d42ecc026ebcf91258acc99a50ae1edc88b90c98b74c3961b70759f39b3c20175fa80386376cde2b66dff213151b800921ab6932b45b720932a540c79cca0eaca0a9d5bc841c3acf3c08096c0446326114f05cb09745ebb986ddb76913faa6a20c8da5745f754b89a990746ef771cf07a6d8109998936b282757f344a1b00b851eaac27a9a7fbf480d44262868542128461598b5597b10cd3a2a26e3f941a9a4719ab2033fa1181ed08e3247bdd396a834e43f5700522cb307ff4b150bba9d8b6aab47361a7947b7a04b8d923202ab1a3d6644be06bc6c1e0735d5d92821c5b8e9b9a83c343d0c456b181b6fa566b0e83602428b6cd33405a95abb623a73299c5b4550a7d6c31d6ef81473489bbe457e744b5d1e39ab74d8a051951abd01a6cff3942a102a33080327437635c1c17966834340c26654a3f38616e5eacb0e489141b14e9d1b15b7fb30927715273547999b93ea2a1ca2189f5645cc4889943f3ccd95496b71f392f78a82aa1a21d66382c37154323c0616804f50125d6b0698e5dca3e2d5658ce153bbf57e4b1908c92587b8c863ff4872e9e1963ae6c971c6ac3932bc974b9f15e5743ec069ed203c3624a022f9a7420ba951425a432b46c5e8bb666091d6f223e357ce96c55bf067b3c3f51abe70abd85a73a42233800853031313ae9971d280b3aed18489e75cdc16cbb3ebc95a8c97a768aaa6c0bb0da7943037bf2b4a523e33abf669c262941f326b11ec6bc8ef51b0666268d6d433b5190bb6996f65925a7eb0761eab6906178be9a923d1c61c0b7683cea681648c44608217d6dc86441a8f423a9d1c288b32ebcd049c15ec151e256a322ee79e2c689a23a53b8d473f4c643aedc646401761a7b75f7bd4145e837b756003bab223ff1a74feacc2e449b5dd9b5777d62ff0e20e4b395821474ab428aa2ea219bfa169b95039616598dae0b9282c69ce329b534bc7aea58e17467b1348b1ab2a031324bf835c985371b0f53877dca53570199b23bc4d70a9425a32b54749082e794e10012e9b458205e106da807c03ac3202a4350050815487626bd018706c69a6ab02fcb92621114a16cacfbea02aec424f82fb874800c61cc23bc6618ed75674a70a6c43c4068e2a7c9723a054967e4dab09f337695bbb01053a7c5dbc764a0856d2b75dd4a94a9898af8b95a62b487ec7fa9f00ab75325c9ab8248f1db65fd7661dfb0b8eecdc2a4134103380988758379d0a73b0f348b00b4b13b115e74674aaac2ba8c2a7ff440340b622b5c0bce05cb601259913c488fee540d7c058a28a0c28b856ea800d26a6a26f8bcde7d78298314cea6056b00a845321a245949a8c7c98d9f8821f1264c658a8061a3014249b7e522d586a54ad7a12ad805544247d74058bc9ac0f603a44ac5199bffb69c1570c4076b345064ec00c5ae0d6a2308947593a84ddb6133ba40577b7b245c20b5d04c5d08281ca0aa10da2a358386d2a4c048c89a2402c9150a7419c0a1aa17562fe786f00486dc82a9809dab08f7b16d9432981087b6741269424598eaa99082525d5db0deaf1b96f55b41ee209f57aceb895babc38828b712724204744834303c496b7171fc458534f46892627ae54800fe6f11d06b6af2b6b9259144f769b1f16c0586c9caf01f8491251907fd213aa6c0bce5b08f060124fb99822d964c502ac49c16ce9fb17eb0c91af559947c056af77ca687c4f675c89be35aae91584cf82202734379b56784fc5ce56e3852d89b052367d9a5d375d06ec7863e051cb44929f17a4656a2cb2c58d8d457897a1aa0d6533c524a32345eefdadc74a3c6ad7e981832797faf1068955b79f118dff93588f1481d7cab000e33fa07de8dc9627a85e76fabb4428a3376e66300cf12a0787 + +comment = Official test vector 61, seed: "c799d57b41f28c5c446dfc58a5ac6499c4bcf3c162afd2b09a16549826ec2a6f689e44bafc4acc82f5d6aec23f4a3993" +entropy = aaf6eb40e596a5e3e8218871e708b089240dcbe7fd3641f0e5e41e071ce49107e2f8d320ac3cb0c52efdc753282f092bc39baf4a18783a48ea031a191865eb78 +expected_public_key = db55c6cec7b63c0721aad84d2b6551fa941167c78a0c105ed9e5300a24bb2c8b2265251a38ec2b9d05a0635b2849a81a2a7c6f2660504d5602fd2763046820ca168d70b76e35b9641ce46a44f2a394f496dc32353c1a84302381e8d74ce4294a4a260a5b0704797567ae831d7c4410593cb7b9ab74d2042c84805c3aea6ebd193a927c8189082333b3a5e96857e3970be7daca4c884d7bb0b3b9c250cb4135d0b8c90ae320dcb3c423e8a6de79ad594240ae7aa036e320ad8807ccb7a1bc80c704c9532960864a9528347636b4123337db7e2de37823c6ae084418fdd05ff7e904211924fe5a370537762dfa012a2153af96a46987776d245fdcb9434d66aa10524a3ca74e494c9de919c8e23c3ff77c58cbd1cbaf5b8a69803a32e23959b2a7d9f808689906a0985aeff5a8464a2af64ba053a3c18d89b2cae3814cd712484288abf7655063c403f635d7a2afb9d804e2e89677131bbbf7009c981548036726d25f05f004d605a24b7c2bccc4294f065c013c8ecb242d25611b5c82bcabeb9e578758f2f3ad3f087bb6813db1f3990c867a2e679f47f074fd012e87b3b6f51cb1707b9287d99fdbf43c8e58940109c376789e16c4a30b6bc34c870364192c555b81af58962ae771df477ff421a9b46c6e64bacd1a8a6d00da4d9507212c910ed2c62d199c7e330a11982c514f27aac092a5216b13ad54beebaa4049065a68d8ce9b1c969ea01599a71d633197bc33c2f6f958f72ccf14c7c09d973770f170f1f7bb9e458a00936d8677717f4a17655bc7a7ec56119779f7aa391d2356ae3a97d7ca04971cc2515154e148568c176a659a8decbb2c5c449ccd914d3cb7431cb3a0a400a8c7b59b1cc770c5bb5b64e0932c61783c9979d6cbac042216a0cc5800ea160c8c8556e0721d610fce13992396c382e93bad1514d780cee046525c443fae063c5882a01e5a73658a30864b1d6344a6cc46729bab7810c46f5b480d309a263e30461769a55a2965ba6ba0b44054f211b98c6c2355150acab81881e5ac1e561a4bc4b39f9902d1027e56155f5d71b7ca67415185319ba769f88345611ca2c20b233dcaca9ddba42edb204576bd028a79bfca57c9dbb0a54b933c970de35032b9b51d00c9922abb5106897cb896065fca846aa486d9c27f5b616e99ea0ada711729b75d86669645b9a223959b3c1c2f3ab6536d74295473c4c055aef8c2cd2d321e9e73cbb872698b3a60667bc768014332083139d08c321157cff1481f259ed56a7a3ff1717bb64fc951297c709a4ae3c05fe3910d6507ac947f944b970070570fdc9843a8a5ba564141f80f1654766f93048be6297a1cb76c105a7ba3ada06a42ed1ab3c17542201712f11824766c07bf14685ab0a9f69a15ad6574e59709d2411b37b509de3b7fe5e8b0ac65922df23e680c33141418f9551660467accc0c794a67cc530a5b130b4cf1c28747601d26983764acbddd30e42eb96125956a5870142574419977209a12e09ab3c5e8a22c1c5252527c90987a816b8830a757ec44b12e2e2bcbf19097d02b19ae47cc7bc99189370a1aacef36415ded82fa7a63be809b515f79f06612dabca5768201c59e2c92eba6d13b72c31648ee1d504ec3e89c8d796e77fa9a772499aec973b63e864ce36a29de99ecec9695d12112c +expected_private_key = 90d7129b79c095b3063f53058a4baa74c262a99c822894254a050409215fe67773c26c7a6dcc739d8406a6055b388204604c7b065c0cdccc16fa880858a36d6200c6cec473bf81b245e09c6e5a55a8d8314334c23dc14fd6a9c011a2ca93753afa8609320b1d01fb9a2a4263ddeab8d5a00c40346b8f84afc7b945f521321103a5219b533f52bee42256edd1b9a526013a00ce07d44ebfd66c0bb67775d1acde4aadb7c98731931e54f5c458264894971df5d0ccd93817bb77a2e7d29ce47aba205c0971f34096280cc725a3c22a4ee24a9938cc2fcd9a670272a463c852efc04388ca8ce86a8e9f63273aa208610c2274709c55922ad371c197741af0526218e84c3bcb61355ab94d5c94dcbb4bc08986ac075e01134b4029c8c1d78f829796c1cab0ea2075bc25b797d82a8e0385ef1094d0a2b1731624308487991a7164d8a507f2390f354b4fa3a225d5a46463145ebb57b98724f1d3cabf11ad4fdc00bfa267d8f3107ceb7da37c060aa23e247c28ad0069d30681e37807117ab841f23548caa02212afbc1bc54297202fa549def55ddeb5ba4d10ace2650511366ebe9c1d61fa9d5574c86c0714aa523cdf946e1fd259148a7e2ab5c21884314e3b8082bc210b5209ccb6b95eaa2ef62203a0b707bf9c5db1a155169b07d41c0edb9709744caaa36622f189773ad7a59dc142317454d9c81d55d1c637876f104b6836a6842b87174290125505461eea77d63a8dad03c7941b69d7f66e434922e13a8182fcc35e51c9ce81978e35818504cb32e4a6dfc777227a5484409a38b2a1e2243110e84d024b1fe0e0bb36d4aac0622152599fefa177b294bece391d47553983e420de5462c72ab588b2934680a399ac40ef35a5e8819458e0a7bed1afbb29a446ecbcd4e45a50176ee201526e314cde085afda30226039ceb41a14d87256bf566db30ac77acb80b29b1f9d602e919707c96863304372a353771e1ce994241a12369fbf42bcb4315592724cd5085a589b1b4ca46dc49cd65a1247178151e455741c8b5d7c9cafcb75bf27a5b4ed05b22e932b1e3bfb0c93248400e5485486e0c39fd5ccec680c78e6137be96823deca37c6306d31c9142fc03ec540ac0120ebbe9bd5237583e1972d0c4676708ad35b559fb89bd872428a3e0504350451dd65f58bcb292c0ba437394dae55e6df13a8f41827939016a081935d1788c4807a53a011b89528fb60f386632e725b163e83e105324c3914f26f389dac199a926a25a02624d9a530bf0afafa4c5ffe6a5ef9422e422019ff337d1bc2fe16a07d9a046d183137d477dda378e17a95fc7e02ecddc0d551724a4f36ee7648c9aa771bd15ae29b7259abb63d0983917156ede6557be445735ec539b2199f9816c562842627cc83bcaa659075f5179abdd1a7056d27f7dd96a6813a940a9321cfb1946e95c16836ef028106bc26a3ee450d8e569eeb23b70722bcbf828821648b1668e6e47869afb16c0e4b827c4cec3c4c9948a6c7f874968dc80160a811cd06d58a885d033210341a6f7907f53a82c98468f6bdb7cc7a60107973db0e70f9a387673234d6665019676215ee4597c65a13a2636cee74266f373a4e48bb1db019bf44ebfb0a5db55c6cec7b63c0721aad84d2b6551fa941167c78a0c105ed9e5300a24bb2c8b2265251a38ec2b9d05a0635b2849a81a2a7c6f2660504d5602fd2763046820ca168d70b76e35b9641ce46a44f2a394f496dc32353c1a84302381e8d74ce4294a4a260a5b0704797567ae831d7c4410593cb7b9ab74d2042c84805c3aea6ebd193a927c8189082333b3a5e96857e3970be7daca4c884d7bb0b3b9c250cb4135d0b8c90ae320dcb3c423e8a6de79ad594240ae7aa036e320ad8807ccb7a1bc80c704c9532960864a9528347636b4123337db7e2de37823c6ae084418fdd05ff7e904211924fe5a370537762dfa012a2153af96a46987776d245fdcb9434d66aa10524a3ca74e494c9de919c8e23c3ff77c58cbd1cbaf5b8a69803a32e23959b2a7d9f808689906a0985aeff5a8464a2af64ba053a3c18d89b2cae3814cd712484288abf7655063c403f635d7a2afb9d804e2e89677131bbbf7009c981548036726d25f05f004d605a24b7c2bccc4294f065c013c8ecb242d25611b5c82bcabeb9e578758f2f3ad3f087bb6813db1f3990c867a2e679f47f074fd012e87b3b6f51cb1707b9287d99fdbf43c8e58940109c376789e16c4a30b6bc34c870364192c555b81af58962ae771df477ff421a9b46c6e64bacd1a8a6d00da4d9507212c910ed2c62d199c7e330a11982c514f27aac092a5216b13ad54beebaa4049065a68d8ce9b1c969ea01599a71d633197bc33c2f6f958f72ccf14c7c09d973770f170f1f7bb9e458a00936d8677717f4a17655bc7a7ec56119779f7aa391d2356ae3a97d7ca04971cc2515154e148568c176a659a8decbb2c5c449ccd914d3cb7431cb3a0a400a8c7b59b1cc770c5bb5b64e0932c61783c9979d6cbac042216a0cc5800ea160c8c8556e0721d610fce13992396c382e93bad1514d780cee046525c443fae063c5882a01e5a73658a30864b1d6344a6cc46729bab7810c46f5b480d309a263e30461769a55a2965ba6ba0b44054f211b98c6c2355150acab81881e5ac1e561a4bc4b39f9902d1027e56155f5d71b7ca67415185319ba769f88345611ca2c20b233dcaca9ddba42edb204576bd028a79bfca57c9dbb0a54b933c970de35032b9b51d00c9922abb5106897cb896065fca846aa486d9c27f5b616e99ea0ada711729b75d86669645b9a223959b3c1c2f3ab6536d74295473c4c055aef8c2cd2d321e9e73cbb872698b3a60667bc768014332083139d08c321157cff1481f259ed56a7a3ff1717bb64fc951297c709a4ae3c05fe3910d6507ac947f944b970070570fdc9843a8a5ba564141f80f1654766f93048be6297a1cb76c105a7ba3ada06a42ed1ab3c17542201712f11824766c07bf14685ab0a9f69a15ad6574e59709d2411b37b509de3b7fe5e8b0ac65922df23e680c33141418f9551660467accc0c794a67cc530a5b130b4cf1c28747601d26983764acbddd30e42eb96125956a5870142574419977209a12e09ab3c5e8a22c1c5252527c90987a816b8830a757ec44b12e2e2bcbf19097d02b19ae47cc7bc99189370a1aacef36415ded82fa7a63be809b515f79f06612dabca5768201c59e2c92eba6d13b72c31648ee1d504ec3e89c8d796e77fa9a772499aec973b63e864ce36a29de99ecec9695d12112ce2f60f27da7f318eb94a74b437f8e0bc9513e9bcc38dad99c174c1d75e0145f1e2f8d320ac3cb0c52efdc753282f092bc39baf4a18783a48ea031a191865eb78 + +comment = Official test vector 62, seed: "f7ae036a0176a9de9a036a542dd2840033277c44ae936d10b768566216de9d4395cd42b116873b69d9804ba6ccbc05d5" +entropy = 6500f32c93415cfdbc0bd31d78d5be95cb9060c8cfa2013955b56f8b6868b322393308641a9a4647f230201e1389624a296b55192a9819fcb19ab77c25f95445 +expected_public_key = 7a2912329482f244226ae33507ba8fc8366736352380b346ca39a936190f09576c5188c5e82315e3532f34d41f1b50bccc42c1138802ccd5b50a7846ffa7bcadd91fe757ab7fe30e873ba233e13b21d25461030593433f4f66482d94b916aa8d1b4b8d6786926e9364cb579f52236218f199c3925142b53500291a3164516fabb941f98f0daaa1e2d619c9622d649a0408ac02d5ccb9b787c1f9b196da37020e362ecdbab03cccb63b659c6347104074b1f8254499c8452364726b1294669a3a24ac8b487752175b30cba68860184d5f78b845b107beba80f8750475d059dad57caf827878b926facbc00b54388f24b7b431347e334ffa046c45e234124c958cf66023dca620e1400cd5c08b89554a474d7d04086e5cbd0d051c03c4580d3442a575255c833026bc19dd301a70367fed300ef27779d2a49819a370519c7fc404acb3fa441a931c67a3033799519c883bea134242f35f92393dc134bce15713ddb33e252b991af10c7134a8acd09408c8cb2ada36bbc25224e8867a4138ed9b4daf403a477321614b3ee5c7bc2281441936b0b05513c1525421871d007346bcf52d6e09b756b4529bb5480aa3165e617cef41720167707f35a4415975a62114c7918ad83bbd8905a283d14d22b2400cb29fb1e102562cbee5a9c10929229f8c60a4b153c430a361812e75b244e4c3954a945459f735d45572e83b505030c13867c720567fd681c539d7094f5558dc5a86da79b38049b0a45a1259713af2c1640ee0279bb7191f0c0ec59c2f91184ca70a2e8b7576ce493e32f2c549c4bad6c925039c4c57114075281ac7631ff4d94ee0723c3400cb2d73c184489aa5b440ad470cde548f2f70903d08b9b4cb6db68a5d4fbb049a5a9727f50f9e6c59295c62bed7182ca96d6093578dd014f7eb0b121ac6faf917fa9b47f6650c6c7336d8848dedb92a0f70971e456e9ae625cfe266b1000c4ea6252de1ce20c014bc161fef405ff327cddda37be4919c2a0c097d6995b0eb743ff66a548307cee1080a13841ed12333e62eff081514a5915022c550c6021a27889bb0421df3a709ab2f9f3b0c0f6019fa8810ce3a9c37f53cd651acb4e5bc1d8b231f373b7a4ca6723a9710681016943f29697b09f6abfc1c60e8fc4c201a9ab05c260d2452c83b88423b904df74f425a9b4d116de0d059d96779d61017c2e984c2bccd6159c82dfa5ae7bc63e59304b1105ca054a71d753e7e583742e715bfecc80e51245ff53c16854ae0ab41c581402221cc8834a5f4556a84c19f6172c7c80c759299a42c71bd67040a29185a45c14b91b56a4af9178e0bbb0c4c197549b5c9765a8874686c63445dea7a85d43ac4d0b979b4ca13a80bf8db634a163fe3f4327210a7a128716b9805bc1920dd322b15c74fc722a126069abb8c95bd090f84497d832a1ab72358d4193b6542bfd627a139374404dc1998416f46054d1b4b538e778d6d0507fbf5571bd01ce56362164793e58355366495aec80eea35463c4044b202451b3604d6ab96acc3617acc1015379564d6a5ff1a6ae4d802712a94422a99d90988206776055545172b0282b5162b479d748a2e9d22356af11daf2629036665eed0642044b76775cfd9417ddacfdcb371aaef7abb3c2cfdca88891dbf808a90028d4f12c57e4985f7 +expected_private_key = 0246c2025246911b525e6c3421584bfdbc83d73ab936e76a26236a85215c78db7ddd010c2e038e3dda69b5aa2e9f4997d8589bdbf918be1c046cd518e6958ae6925146009d185b53456b5e16d59257f20cd0f6677535510d02602d5ba5b61c440fa07fabb1b5fbb38437e90522665776892ef205a41a1a2083902648844dc9d65e633266af871481f036a2888d3fb9901355397f37875a4494777c781ec40478d09a820204a4115701d25a74b4bd91676ea6391fa160617c80cd05b0a80e040cdf22b29978ca55282f2c40316a35433dcc8ff7cccf4280c0b11c548b5cc08fa45bd0760ce03a02f25689d0f057fae44cb1574c42e760cb331c2ce4be16823dbb2870592ba844f30dc407298590a088425e023b856e106437c6074547260a856e648cba07e51a23e70d7cc65656b4692ec24277f04905c4aeeaaacd36341c705b504cfaba73201c2745ab06b056f1768447981e0d676ec904698edb230f369190d8c1dadaa5ca59001ee8a68c302f04298dc5700c56b2b577d89cd9a585b239089847cd3e96ca80d928867b27f3657987724ff9031649c246cbcb4673f6cb8544150c9975a13938c89a68cd0b6de5237fc8d2b7a6bb94e0c0856f00b821636801e9ac84f35276065ee4108bc1d755c1c428566a1ca3762d050458dbc7093567a4465453ab8656272a3c03b4a3c55929271437724471d5d4926109c9792ba49d117813948106d27c33069eb3c40aa8370b79e23f35934ac28666fe72b43f722151f3c26c96cc3b6a40d9e1876e55970f252811070fefc00d70a009e4871f136a08515ab239c33e2de638c4260d0c89cfe30b8f8e5927f2c59fea3947ffd0bd636b10876c3c387c00e15469b42b80bfeb8681dc7715c2b248ca6fed92a9399b72d1023f9507229593bd9bd936a0f6abba09bc3367782370b60d9cbd0e8b3d5744101c8ca97eab822fa4cc399b5be3195cb1e3c9260030af60bbe3295c4de898c502543589142cf48dbc7505ec9a9d93cb6dd4c9678c1cc0a082c5631a255142603dcc01fc07c27d628d89f09b473816b5d5171c18a3f9737bd6d3420d4bccbd3a5624a2686e54062ce4696e061c83bc2586f1a618639e51e63bc6c64825eb50d4f88334b29145bacc49e28dd564b7a578217fac230ad00a44f3acbf8753aa572d66e1ab9198cecdf9bc722455bd267faf98424eba4031c3bbec8298a9388cabc6b3beec7a7fbb1c814811117a9d550407c9e6099cea65ece641f69454b6a0ca9bf86a3dd472f7c0a7703c6a5b25464c0b091b29258de673220857878434ea14cf50054fb2e63547e9be15107beb7a78cd5c00cbb1462a0347e72b51a15ccb5c333894aba511295b37c97c7f4c2eb6d97219559b40a67310f457108015ac1b8e3ae15acf85689c4058ec8a0bb18b75615011f2701bde8ba70986b39d3368e1f978675a49fbe8509f1239a1c88f1df4adf0ac8b68a87e2a403373fb808a7b1192371c7e68b80854b0e4335739090b953a2b67999f9878a32415b78c22289eeaaefe3298fd38abeb6abcf5a55bca388004e46375a729cc45926a7c3e3bc8b4e2a2b196aabe5651b642c1cb50f666a1bb6da4d1cce8c6344356a68de044214453d03b5c7a2912329482f244226ae33507ba8fc8366736352380b346ca39a936190f09576c5188c5e82315e3532f34d41f1b50bccc42c1138802ccd5b50a7846ffa7bcadd91fe757ab7fe30e873ba233e13b21d25461030593433f4f66482d94b916aa8d1b4b8d6786926e9364cb579f52236218f199c3925142b53500291a3164516fabb941f98f0daaa1e2d619c9622d649a0408ac02d5ccb9b787c1f9b196da37020e362ecdbab03cccb63b659c6347104074b1f8254499c8452364726b1294669a3a24ac8b487752175b30cba68860184d5f78b845b107beba80f8750475d059dad57caf827878b926facbc00b54388f24b7b431347e334ffa046c45e234124c958cf66023dca620e1400cd5c08b89554a474d7d04086e5cbd0d051c03c4580d3442a575255c833026bc19dd301a70367fed300ef27779d2a49819a370519c7fc404acb3fa441a931c67a3033799519c883bea134242f35f92393dc134bce15713ddb33e252b991af10c7134a8acd09408c8cb2ada36bbc25224e8867a4138ed9b4daf403a477321614b3ee5c7bc2281441936b0b05513c1525421871d007346bcf52d6e09b756b4529bb5480aa3165e617cef41720167707f35a4415975a62114c7918ad83bbd8905a283d14d22b2400cb29fb1e102562cbee5a9c10929229f8c60a4b153c430a361812e75b244e4c3954a945459f735d45572e83b505030c13867c720567fd681c539d7094f5558dc5a86da79b38049b0a45a1259713af2c1640ee0279bb7191f0c0ec59c2f91184ca70a2e8b7576ce493e32f2c549c4bad6c925039c4c57114075281ac7631ff4d94ee0723c3400cb2d73c184489aa5b440ad470cde548f2f70903d08b9b4cb6db68a5d4fbb049a5a9727f50f9e6c59295c62bed7182ca96d6093578dd014f7eb0b121ac6faf917fa9b47f6650c6c7336d8848dedb92a0f70971e456e9ae625cfe266b1000c4ea6252de1ce20c014bc161fef405ff327cddda37be4919c2a0c097d6995b0eb743ff66a548307cee1080a13841ed12333e62eff081514a5915022c550c6021a27889bb0421df3a709ab2f9f3b0c0f6019fa8810ce3a9c37f53cd651acb4e5bc1d8b231f373b7a4ca6723a9710681016943f29697b09f6abfc1c60e8fc4c201a9ab05c260d2452c83b88423b904df74f425a9b4d116de0d059d96779d61017c2e984c2bccd6159c82dfa5ae7bc63e59304b1105ca054a71d753e7e583742e715bfecc80e51245ff53c16854ae0ab41c581402221cc8834a5f4556a84c19f6172c7c80c759299a42c71bd67040a29185a45c14b91b56a4af9178e0bbb0c4c197549b5c9765a8874686c63445dea7a85d43ac4d0b979b4ca13a80bf8db634a163fe3f4327210a7a128716b9805bc1920dd322b15c74fc722a126069abb8c95bd090f84497d832a1ab72358d4193b6542bfd627a139374404dc1998416f46054d1b4b538e778d6d0507fbf5571bd01ce56362164793e58355366495aec80eea35463c4044b202451b3604d6ab96acc3617acc1015379564d6a5ff1a6ae4d802712a94422a99d90988206776055545172b0282b5162b479d748a2e9d22356af11daf2629036665eed0642044b76775cfd9417ddacfdcb371aaef7abb3c2cfdca88891dbf808a90028d4f12c57e4985f7d4bf608793939ecba27dff5889d4d921c583999a57e20a48085ac549573e6abf393308641a9a4647f230201e1389624a296b55192a9819fcb19ab77c25f95445 + +comment = Official test vector 63, seed: "d995d38f934b6e1a7ca77c9522e3d037676cc939b0c8bd4b84394b3dc91a791f09d2d97199258c9943da955e7f7b26fc" +entropy = 7643cef2d62cc5aaeecf754653ea62294cd2208e5bf3ddeea209e3dc45373d49eac9d531a532770837a854b4f5531f6e0c8d6c10183b30d3435498c2dd142951 +expected_public_key = 8e892a62437ce84445f2e82b495c9730fab393dc6f3b36bb2a63759a79ae27b162250076a608522440ac1e04630ba766b4c256341c6ac967b36e6934dc58cda15621827b9558076361192e89708ed88a71826a20e8ec948b9c7915566c70a7c15a72c36ecc7a3cc644eae696022657c53500a0f13a8ae50fdfa432d8d2530999275e5b9c1d341fb34b8a5a7421b7d290cbc3218486b555c92572bac8f1085f058a87fd48796824844553261ca11f06978a03f3a8d68657c22064af83166280af52270e004731d20b18982283e51ca3db7a2679da6fb0aaba1e75a2d283add699a797e1be93502c6823007ba5b9760a338768615b671baedc6a6a6937b9e1c35575776a4a791fec7751079c6683ba29ea28bad199175b9629c44bbf219cd88a19f1089aa551946e58032a9c9dfd29bc4ca3b654f494990cc02bbb8e1280b54ba3920ef98903f171c27a5c0fb679c8e84774f22136e89915a534d973733410a96280a3207407235ca0d81a636a35b9dd628dee9a64a12918d0dc6d4c600989168a163730fab8c78e61a57970c16c813b791a0ee9f625c438ccd1a9429a93062c4ab38da5890188829ad116a6f1564a43a2e4f3bba3712207b65e701995c99b29d691c86bd9844af2471eb5cecd934f764629dc25839c809432e395fd8582cda980359246eef0637b9771fa5853099007f173c8598164da69c8e67a910a50b9940b213547815e0589326b02ff21b89bc4200219652dea6ccd59883e29127e2abe3787738b124d839a67e02195d64989520737e3aa99c6822f2c32249256c45455cbd931a5a1fb27cd56a21e22b51c03217aa387e151631cfa445b2b77ec90ae01828601961ada8a8e6192104f02ba5064c4efc27cf2dc3353fc98f34bb947b21ec5235fba6caffb6bc6b1c09a783ab8ef14c4921a28a3896bac07ae8ba98c117b3624e01ed0496a8c649a38a33fb679bb535a7d1960028ca6c8ba825178e74f0e50b5d74c2a9119b595b863d0375a3da173c63a03d8c60a8d613cc08064588890e3894a9bf4580704038841526ab84e27cabc8fa4cad6dbbde9b53017f100778478b86138fbd6be713a7e695358538bc4cb5a4fff531bff178bb16ace5a295ca0340985f34267a3a931998b29a36935d3b13af0631cd37777689ca0b43b9208afbab88ef886a8672b331224c66c6086b8b15a8eb86107fc0ae260bf08f970cdec98ece9a197751b6996258ffb6dce05306380770dc63498e9b5d65acac5a179d8946b27630525b39c3755c070a120c9f468ab3aa8b1a48848081b888baaa1156bd600733be887abf962c46107c432c34edca8e549977d9a6f7eb77eb9974bb353896e8261502820f599257cd9c2852328b0fbc5c2b98658d67e4a636575a46e074a1efda2cfa50a0594b0a421661d81d95a9ae0ca1c037532ba7eead089961c29765c443d428bf20767d1f08615e85d0c08b0fa5076e297143249283c13486f61a4d9d39780624055d6043120a510d4a686f9b490c74f2da782ab42157a00991be019e093a509c0c00b7c1e6ab611dfc4373c640a2f488e7632be1289666206cba2b096a479b2140c6aa301bc448b13b6839447c4675aa1be46eb6ecfcb4ddf2569b2d79abe93fceaff0f0ff88688c870d19759a41d3d361a0cec73cc908f52bad8 +expected_private_key = 34c91f6ec981b1830501d8969f8847b2c6bd5d5c43dfa044c43b551e610d5675bb7e7c9e393b411e69575301bf4ef4c7fd0b4b59e213905a254eb5540aca856c370dd28899541b725091c23907c04390ad32a56385075f42a7545672544fe177b74c7ed99507e4d95def7c4a9f84c9687b9bc318a23eb452fb7635d5201165a47391d21a7ca732fe9b3455c44ee4e54fc3a6518d51402cd5a2d49429b9c8815cd4b1a22c59ed368ed6c7a9df83b958cc83c4654c5cd040245543431c0d2c9091376611cfdc2eb9181b21c8417e3931aa2b1141c1051cb82aca4bbbe6dabda3356bbf4962c3f883d0578580477ac56353ac7524f3855de2b00967b7bee0668112d51ccbc139fa73374df2685a3cc06838b150f92a64c17772053de2b05cc4d51832b8a2b8428436d99e1f2484b127ce0d861dc8a11ab0b0019e0b3439733b36a7a600f4638d820ba5624b445349a86465e1b25de787207dda0b629cb472d415a42a8ba191b76b5829d4d987a2b0c235521c187a0baddb603d755eb37396cdd57ff76276ccca997b00cd481587cb8728830021dcbb8478a267b744a5bfd08b4acb2c1e726121996e55b60d40f6975637831c392845d6823d4b9092151149992794f4ab29d4164a44239f07c365a87ed9786af7a57ac0bc0d491018007b6bf7705a21b082d1e040a4f4c25e329ef9a8518956044e7683af94728487a4f95305d4e15aad45c040f1cf9c442c519b2aa47a4dfc29063243c21f8b838171701b4b73516944efc4b61fb5bca63c3ed12a123f55b832e6c312e8bc48f145d62953f5901f7530068f2c9c9f51ca8fcb342852936d414fddc2c04f551c827071f99c7c24c991f9c97e10e051694c86789a9442d79092b6547d67af70d8c8b074cdbf854718a882daaca3b8eaad0bb1c2d3e859d3eb03c0a23b290518ef88ce1bb02fe71399ef71b380ec1aec4c7c6bf3830c1b15f7718d0e471d10234393d94fbd3305abd09cdf070a0abc09d7497d2f9b939794b923eb3f28b40904a53a05216a526132d9f3cc64606b40f26434142645d79481a8316e8cb0a9321a4c530a0ad139ed5953168a4ac864c726874e1366ab09a249f251ce5b1a7f5ca60ad66375bfdbcfa3d7ad23a13649c03327d409fda64581cb00a696557945c58e96c1c889be648c4885958adea79ab212a0bb15506bf5635e437ecee47b60032b4273b8c96806639c87031b6e23b71996b4576626124281ae4ca0a8fc081e1c91667967b25f76c4f72624cb29bd0a865fd67a4dbf14acc7a09871bc7adeaab37b298f12b60b6372b741681627e4c8346c0d34392716ec173b1b711b1c0a1d010dca486bd5167223658a5c55bcd0739dcfe30dfcf9bd8aa45b3ca0b5a90243547767a1843e4c87922031819ef9249800c6db8b0270f9cb8f2624adf4199741870b0630e1bb1b325768c79984d5e33283a991bb3c98b6bb8be0ebaac47c4310c51eb565baba36be54f6a3151a104911c38ef78e61f1654ef35b2c836c2321a52fac710d6b03811444de5b8403569c8ce0444ef615dad54ae5649e68ab437c00a2c9ea9b18f59346d8b2a5c6582d763730bbc7f24a7ee7c23607c0683a2826fbb4bad4a58ff6e3bb3122bc8e892a62437ce84445f2e82b495c9730fab393dc6f3b36bb2a63759a79ae27b162250076a608522440ac1e04630ba766b4c256341c6ac967b36e6934dc58cda15621827b9558076361192e89708ed88a71826a20e8ec948b9c7915566c70a7c15a72c36ecc7a3cc644eae696022657c53500a0f13a8ae50fdfa432d8d2530999275e5b9c1d341fb34b8a5a7421b7d290cbc3218486b555c92572bac8f1085f058a87fd48796824844553261ca11f06978a03f3a8d68657c22064af83166280af52270e004731d20b18982283e51ca3db7a2679da6fb0aaba1e75a2d283add699a797e1be93502c6823007ba5b9760a338768615b671baedc6a6a6937b9e1c35575776a4a791fec7751079c6683ba29ea28bad199175b9629c44bbf219cd88a19f1089aa551946e58032a9c9dfd29bc4ca3b654f494990cc02bbb8e1280b54ba3920ef98903f171c27a5c0fb679c8e84774f22136e89915a534d973733410a96280a3207407235ca0d81a636a35b9dd628dee9a64a12918d0dc6d4c600989168a163730fab8c78e61a57970c16c813b791a0ee9f625c438ccd1a9429a93062c4ab38da5890188829ad116a6f1564a43a2e4f3bba3712207b65e701995c99b29d691c86bd9844af2471eb5cecd934f764629dc25839c809432e395fd8582cda980359246eef0637b9771fa5853099007f173c8598164da69c8e67a910a50b9940b213547815e0589326b02ff21b89bc4200219652dea6ccd59883e29127e2abe3787738b124d839a67e02195d64989520737e3aa99c6822f2c32249256c45455cbd931a5a1fb27cd56a21e22b51c03217aa387e151631cfa445b2b77ec90ae01828601961ada8a8e6192104f02ba5064c4efc27cf2dc3353fc98f34bb947b21ec5235fba6caffb6bc6b1c09a783ab8ef14c4921a28a3896bac07ae8ba98c117b3624e01ed0496a8c649a38a33fb679bb535a7d1960028ca6c8ba825178e74f0e50b5d74c2a9119b595b863d0375a3da173c63a03d8c60a8d613cc08064588890e3894a9bf4580704038841526ab84e27cabc8fa4cad6dbbde9b53017f100778478b86138fbd6be713a7e695358538bc4cb5a4fff531bff178bb16ace5a295ca0340985f34267a3a931998b29a36935d3b13af0631cd37777689ca0b43b9208afbab88ef886a8672b331224c66c6086b8b15a8eb86107fc0ae260bf08f970cdec98ece9a197751b6996258ffb6dce05306380770dc63498e9b5d65acac5a179d8946b27630525b39c3755c070a120c9f468ab3aa8b1a48848081b888baaa1156bd600733be887abf962c46107c432c34edca8e549977d9a6f7eb77eb9974bb353896e8261502820f599257cd9c2852328b0fbc5c2b98658d67e4a636575a46e074a1efda2cfa50a0594b0a421661d81d95a9ae0ca1c037532ba7eead089961c29765c443d428bf20767d1f08615e85d0c08b0fa5076e297143249283c13486f61a4d9d39780624055d6043120a510d4a686f9b490c74f2da782ab42157a00991be019e093a509c0c00b7c1e6ab611dfc4373c640a2f488e7632be1289666206cba2b096a479b2140c6aa301bc448b13b6839447c4675aa1be46eb6ecfcb4ddf2569b2d79abe93fceaff0f0ff88688c870d19759a41d3d361a0cec73cc908f52bad865f03add3941d22c80d50659f501f8cca1b448d84462ccb93d5f065889484bc0eac9d531a532770837a854b4f5531f6e0c8d6c10183b30d3435498c2dd142951 + +comment = Official test vector 64, seed: "5929f02a271725cb40200de32d9d03d8bea53b53ac83186c42c7f565ccb1ca508305d470850cf86e9b2c61a5b8ca1c93" +entropy = f8ee95521060c03bb8dacc79f7eb7db640f545f315613a35d447a09e504cb4e13fc3d8392cb53f36ed647364a04e37278a0e0a45b720f4a75c580c9920eba98d +expected_public_key = 61101724795296a2499158c8e1b50e4c900d65c8ae65503932dca40e058e8192cec2a997cf12c8a1227567b12a1b21bb31d3198c85c4878c6ea1967668e3952d04b4123cbb9cd8c77f3a7397a9133d99654e6c56e7465d9b98bdbd624c12e36c62b60b6a32c9086a8eeb9b8919706f4573a33c393f74bb51d5609231f1707e152f23f36f6c6830ef28253c8cb81ec5c27adb02fbda5302212826f0b88aa4b4d72a509e29cb1bfc8177c019c60598e693bce999aabc4621123415235208e7869f62aa7b50a51724c13da2db59d5ba5302c772f2c1820fb0882ef32f73321c17f40d019cad39c3b12c57c3519ca0b38366ac4353b133c39262be6ee47ecf660286f6ca8eb7090418aba0d9833e22b46b761fa2872fb80972b551809c02775be07c796636a2c619fc748b90d28e1e702ffb0653e250c8c3759178c39e42411327a81c7e7887b21915a5cc032c37a11382c4d9186221b1c66afcae8184559910201c8baaacec62bab984e080433b9465e64a2d987028e9d9090cb2c41753742cd77f0998c672441e83d45f2d06c22899c2136362271b731f6ba3965b32e2517463e627aeca0ae5644bb8602f7fc599abc120aa111e2e549a276a18d2a92c39502f6f9519ce76c0bcb514e8084c7122a321479338f59ece08a0acd30f0ad68f2091855d5980219083398a6c0a63c70d3743678a1c0202a69dc526ddb77e30b779c36ac2575704ead94ddf1661a38b2624e733f2e2ae18467ce2c3083b75017411390314ab06abb4d0fb58bff99dc3949e92994703e85fb6b863ae1c29bdd6656cd75d9ba453aa115a32745f2dc1829881a9f4d5cc2cc053ab79b89d107e6054c69dc93f5aa9c8ca6cc1a7583f2e2739b102378d93990cb8280b21a5d5ba8415c48ec17288044623a9631577c16639922978258cee0b6c51bbcfe3f70be07cbafb7c58111cc7f2f922aa023d5ad01d2d31a57e0469ac428b6fb88a97d957ae22beb768c3cb7c9f02f583fa2513db7c580d2986984314e8b346a06501d8972e31ab8ef5b983e9a15e8ffc624d0041fd523570960e09e57d616a06297bb3f9d938f5655628b06c4f6c4fa5f8136f8cc05dfab7389237ea75aef46117bf1b67aa978ba622491260128e743f28f95f533b708f3c59230b23faba96ffb5c239b32b30a65b36fc5a0a76b76f04a60c9c7d5eb78ebe44b736eb56a0812f59d9b5812916246228f2523175242cd1f432f9fb054a8b52d824349dc0756091b2f7c21e2a899362157bf9f631287b90d6c80fb55b1469273f79892435d031b62982c49a1464e2274f815f56f3b6f8c949be11388df1151e7077f603ae592623e4259853a2b90159344b041aa29c8afc5074bee81959102e0c57a761f1b1aa65b1dcb66a18bbbbe12b2b2942a37d13c77c77b2bde758eb1901f74c7d57d373a47737d6e23998e35dcee70983359b4162c7135126e90a807604034d52add3530456b66f0da64453150afbb67d67d9b359137c2420250c279a1c537ab06952e4823f09372198c253d5b71a7e70a1c48b1dcac3a85feaac35a11e670b2840a57f2a7c77b6a00cc80a282f0a1c8160080c702d619a6b6d68c757306c93a5b21ba8185b1a46c79b03c35880a7b265a3e05b2db868482fcdba0367177bbbcad04f3a50adeb85ded90bd59dab +expected_private_key = ab4545850434076342eae8409fe0590c34955e860267305fca05c347bb3e53bc714e3134a6e9b338674a9aabb02f021d1a09a190757f03d573c27687f7e35f2d77294d10cded732218395b344523f1b704b27689dcc286b5c98217f239c159ae5d655436f00517a50c6dc6b7f4f111e7f37a0f319bf6acc7b0e3345c9367b2a2b8d9d644936220c0a817fbb38ceb3469cd55c661e1c58d06807504443448c4e53204dc59c60a5153494478eb4056c9a85967a42ebbc287afda51fdd6b84b285523d41d80a56f7a68a168a4527d902311b18d5e381cfdd578bb7924fe687d3aea5607906815181171a727e4dbce1b678762a8b03c2a2bff1635ca85332ae90f14b880c5ec4e5389b7816ab885c44a8d83c5ef0c4c754c7b6e673d984938d3ca4eb0f5b83b90bec27172ac85154ef27b91623841e188d76b040f958c38c8a112c05b54103e55a159de0954f2477e798a573339508b7c2ac3872a623429777ba3179060135c083e2198d1e0aa01967c39c27372a1a36a92bac3bb13ee3c94b1f0391e2702c50253dd497f16f39bdcb9c68ccaab6312084884b113e70f38555422767f4e613b2e87affc01395fca37df0a1aef74263c1001392732d9d1047cc7c6fb910ae6136c33094526876a113514f2918909532a759617dbe2c97e72176490995dc82b663655df65324b1996a42150be41b2a1c90f03b2a6f04174da1b1cc7fbb024c3c972b9714300c683c28a90f48b01c28607922c3ed25601a609673481b365544b7c36a9550ef20c37005b0e395a268e90ce1a5271e1421b46303b80cbcc81e2894d7569e82c2f5d8c6996c766bc505976628cadd84a3f468c67c209117c8254bbaa1ba584dc2661728a69e959949ed6c9f1b42f01ec8e55614aeb7168cfbb5e16504eb9f585c7789c48e59c17b5975c444bd6e32a6654bce298a605043bd367400c14b1d8e1a592a034543c04a44c85711aa66c807fb07378fb525600c19d9a4a9a8c920ba7db0b1d912a45f2b6d518b469e9121d25cf40499196376d3d92827e1b96ae255aff288037793c7db07e1d15533c07162aacae3255c0cc368e2fba3fef09540952910eac0fb2f3ae376aa666fc97a3e122570ccf797c79ec575835e0be6e808b3cb1b72d8241c3679bf15020b6a63be65b95a2c9147eb98c6553c71c550e37603e6b73c877c94e7b603a22eca456c1409d5aa049673d0ea17c123b1835692253fcb589186baa498f39481c3d0640a4d34931033b30f26ebed6ca9c49ba6fb219d6dc8461937284235a6417cc9c0ca0ad385b04b01c81d5a7b97a34977250e3679ac55c3d76d83b1f7b99dba039dc179147223b5d6c11fc9109dc062a1e4b7c88c710c449320949bb4405b28ea2c04d48c58aabb46edaa58e442f3ab6c9810b6d702855f7ca91af71b0e574bac1040dbe864ddaa76827874839414cf3418d1702c6f368a10714cb25e208c8a5779f639837a07e348841a11714f41399da175c49678307d3634d6b9921880fd43ccb8d7842e5f34ce44a4923e7ce6b671c7a989aa748604d147ce7ac25a1533e80ab321b7aacb8d523a3a6298beb0cfda435d77714993173d080827fb07b7855769eba987696afdf58231f361d61101724795296a2499158c8e1b50e4c900d65c8ae65503932dca40e058e8192cec2a997cf12c8a1227567b12a1b21bb31d3198c85c4878c6ea1967668e3952d04b4123cbb9cd8c77f3a7397a9133d99654e6c56e7465d9b98bdbd624c12e36c62b60b6a32c9086a8eeb9b8919706f4573a33c393f74bb51d5609231f1707e152f23f36f6c6830ef28253c8cb81ec5c27adb02fbda5302212826f0b88aa4b4d72a509e29cb1bfc8177c019c60598e693bce999aabc4621123415235208e7869f62aa7b50a51724c13da2db59d5ba5302c772f2c1820fb0882ef32f73321c17f40d019cad39c3b12c57c3519ca0b38366ac4353b133c39262be6ee47ecf660286f6ca8eb7090418aba0d9833e22b46b761fa2872fb80972b551809c02775be07c796636a2c619fc748b90d28e1e702ffb0653e250c8c3759178c39e42411327a81c7e7887b21915a5cc032c37a11382c4d9186221b1c66afcae8184559910201c8baaacec62bab984e080433b9465e64a2d987028e9d9090cb2c41753742cd77f0998c672441e83d45f2d06c22899c2136362271b731f6ba3965b32e2517463e627aeca0ae5644bb8602f7fc599abc120aa111e2e549a276a18d2a92c39502f6f9519ce76c0bcb514e8084c7122a321479338f59ece08a0acd30f0ad68f2091855d5980219083398a6c0a63c70d3743678a1c0202a69dc526ddb77e30b779c36ac2575704ead94ddf1661a38b2624e733f2e2ae18467ce2c3083b75017411390314ab06abb4d0fb58bff99dc3949e92994703e85fb6b863ae1c29bdd6656cd75d9ba453aa115a32745f2dc1829881a9f4d5cc2cc053ab79b89d107e6054c69dc93f5aa9c8ca6cc1a7583f2e2739b102378d93990cb8280b21a5d5ba8415c48ec17288044623a9631577c16639922978258cee0b6c51bbcfe3f70be07cbafb7c58111cc7f2f922aa023d5ad01d2d31a57e0469ac428b6fb88a97d957ae22beb768c3cb7c9f02f583fa2513db7c580d2986984314e8b346a06501d8972e31ab8ef5b983e9a15e8ffc624d0041fd523570960e09e57d616a06297bb3f9d938f5655628b06c4f6c4fa5f8136f8cc05dfab7389237ea75aef46117bf1b67aa978ba622491260128e743f28f95f533b708f3c59230b23faba96ffb5c239b32b30a65b36fc5a0a76b76f04a60c9c7d5eb78ebe44b736eb56a0812f59d9b5812916246228f2523175242cd1f432f9fb054a8b52d824349dc0756091b2f7c21e2a899362157bf9f631287b90d6c80fb55b1469273f79892435d031b62982c49a1464e2274f815f56f3b6f8c949be11388df1151e7077f603ae592623e4259853a2b90159344b041aa29c8afc5074bee81959102e0c57a761f1b1aa65b1dcb66a18bbbbe12b2b2942a37d13c77c77b2bde758eb1901f74c7d57d373a47737d6e23998e35dcee70983359b4162c7135126e90a807604034d52add3530456b66f0da64453150afbb67d67d9b359137c2420250c279a1c537ab06952e4823f09372198c253d5b71a7e70a1c48b1dcac3a85feaac35a11e670b2840a57f2a7c77b6a00cc80a282f0a1c8160080c702d619a6b6d68c757306c93a5b21ba8185b1a46c79b03c35880a7b265a3e05b2db868482fcdba0367177bbbcad04f3a50adeb85ded90bd59dabb8a3b8cf4709204a2fdb19889b0022ea655dfd58ff27e17d530510e1eef457933fc3d8392cb53f36ed647364a04e37278a0e0a45b720f4a75c580c9920eba98d + +comment = Official test vector 65, seed: "905074033d7b75deb2d06a2f29144eb377b452534c5710632989f02d45312d156557e96d4486020826db200153bc4a8b" +entropy = b8bd0493a882e3a49b4e0f6256fb1fea0912562fd9ba26ec3d6c9cc12c8973abd7e4b5d8021c486b9c3114d7cbbeb7cd49eba8a61bc2bcae1f1bef30a1daf76d +expected_public_key = 657b941f466659fcc971c1174aa4459551848e7a116b751e5e4022c8f2a4b3152a1b26a3096539c9b0bd6a435ea1e33413ac4d5f401f5de8570cc11cd4bb9fac473328d55501702743e2c8d1b97cedc8ad3d55b67d284158ea8bf1a4a8a17a9de6d5669e8b9571200b05300cb30bcec4a58b06f70830c2b32d28992b70427781854456129cbab53a7c72ff557193d3a221d06177d002095bc04e993b8606245416c3b998b01716af3b43a535f7a6bea71270b34ec808ca00e9453ae660b732963ba634f14378b1691a90e3708125cde31bae3d10451a5643f526cb790a8d6e091a725681fb539e9b05bda7b04c48a31b39da6e39e6be624663b6284de9f958c50149ce4090e6a486b68511ae90a0f093297bf090db3c81d34400a40cbe11d74271e23bbb7a49ea875ea7f7cc25516a899198362acc52c8a8ca14bee12bbcea9a6e3509b6887a3d1d4c3b2b4314c4c44f44c96f48b29a8e7b85339037acf131f2692b7e7a49282237c8f37267c835c24883d1a189d4dccb7c6bb1fe622fc31301a6d3612a448084e0a210449b7e15a4fd84a9a538b2d5844dc170c911fc1282bc513e8c18c469a01a548d1ce4853128a03a8b1d369b353c3003b0a29d210ab6af23acd010ae3671493c774efad8b3746180746401d0e5862a3265e7969f247c954955b4afc13fc420143c10263eb1c6dabbbf5a8857a7f3bee7658c8399503c21a9a38ba554132344e214cd2036c2b30d0770cc5dd87ed9b246e7f955ea926965748cb9e58351a938f7e4ac249ca5c970cfde48c0ade051ba873d36a581e0fc50d9583109a79549fc5b32ba432444046ac0a66f3c64ae1498f43b1b36d8082442b5aaa7bbcff2c4cda8c0c4d2c62cf9135a75709ceb5b82ba4ef5716c4986a36bd7b4ad5c3a505869fd34aec2d7caba492f4bc30d232382b2651d5923242bb50df87092ace5566bc5a18fb2925cab467b641df7b5b91142318d120456245f2f0887ff13516d23216637393c469ce1f776cf2426c6577844cb3d4e0a92aba85ffb59979a7c33eaf51ea2bac9862160bf8a85553a3d4edc05da102106f632c91b8d1df2a9b2734185283941ebcdfd788107b307738786d6c0a0e7d4957dfb17488c5d6cc11b83e3504ef2923034a06270563e18a18bb29f48c36a64c132aa626dcfc5a615e4416df76746673e500186a117a27c5007a4b04867213c33739e27058adb23c0de35ce6158c99e59b88b147e2ac05f09f7c0a414c3240abaf65c24cfdb6857eca66bfc58e52472861bab1e03ce70d2115480b443a9bf799379af9ac978d0072f75bc7923816a189da5974ed948b8a709a8191cc9be60ac2a383a7e27cc62543a2a0ca9ea6897d284ae79b595d0893514f75db35c9254b7ac47260785c1b86a98a5dd733d3dc2b947d148f698c5a117821847604151068412268169c86d50be92d77683386025704575177aac0b9d3d3196a610985e860e2f799f480b1331ba346db0c379cb1833223836d88fd4e11dbf2985825c78330658b9a189233bc76b172127bc7a98e6c644d28da7b0857f67157ae2c27659297c32a7eb653697a295097a32ac235a11887388265ecb3b46a75c865c239395300d0f8152cbcba77b4d655c9f1ea4b448fbe32c4996fc298d26cae25d276bcf6e66ba65e3e97791 +expected_private_key = d7e3338b3ca1d6118b7485bf85ab9e8f6c36e158b67d2c3530b0a544b8afaa0a8604710987429d0d1b1eaaba8f06422e992c475dc4cf909061efe673a3547575e8b00ba47d5a158c22e6b2c280b3152165a5a01a43d801e96791b6d99c92c0b0602c94c0b13f2672146a7044e4372c5fa8843fa7974692b0f292af9fc3b5793092c705421e6aa39b7b3eec76694f5555985a94879abf737949bc33cfd1f8563565b2f345b6b3389fe061509be046b3a048a73599ac20466f0707e9b46045352f94507659ba428cc6994ee3375b07d09ad3be1872c15692c7394626cfc01bf5435d7922bf9199533a22cc4ff021a97c571db311485b36e2a3344eb880c67819aea18b09919fbc57cbc11cb228f8c24f38a445c512245c3a5cbc65d20269ee849bc268899981b9f334704499b60a891139d9470a1a147f38470752c4eaec5b14d51817fcca22e7bc1c585cd2189131960a9e9284ac7940b2949707ec7a67f22db280775d8163394a3a9557bd48f50c26f177ffe83030a3455de1196a763f8af156df73ce3bd07ac70447573a79dd04a59e8b40e39c6fea736e14f1b1b67b5cf556c3adb29facfca4e6d8b759d37737863da2a7ac4a645a8f202ad61c17068385c21415f7e14146d896020b89cc73aad60135d5a3b94879184e086f1066a9f56041b6029d1f538fb5b18a7a741e04e2c158b69927a1a7708bcc411988c0c315d0d1bc3a31b0cd473fcd3abacb1bb3eb23224379b5350081efcb8c45584d3b845e2500420453718ad83194130983a355b1388bf246b9fe7400443c52629812fc1125c3800c3f824c0ff95bc24a2e8b306d5e3278fffc585843bbfcd06d2ec3482295717a5111aa7b6475040083106a01491cf981197eeb77d9b01c2be476f07c59cbeb5c4d19a2000d61546a9cc149a149ba8e57cb0ecb3105d94715c7b1ba7800785edba95a7352583354b93cbef98c78bfa946a7431813ec36ac45488b170859c098b7c6813cab2ffb519814c3a9de3c254ed7a144fb6d15b183cb48a9021972233382fc8c388511add6a86837801f4bea0df0103b3a152648bbcda68499352691be0c3e5218a7c22c8ce49790af1bcd4f6717eaa18cb489b446d24f5ce239c79a6e34215e87bcb8461b5b509c895ec22f94c17c3bcc5904d968c469b200d3322b423761e3749556476d925a915971a62a5a330acbd106ad77da7897815cfa31cd44310d44915d762164b6170b2916b5427c694ff3340fb16b73500e92833ecc35bb25db6e652701d85ab215b366a173604c2797c2a9c420e069e7e4b3d1120dbd1c196d105211134478d23cc4428f8f56182ff3a51c7b84f01a08ba157e86b9374fb7c2e7eca3d4b65f4a73472e38c6f7c06883c99c4ce934f9b04436d250ef262c42d4862b90c11f4924087469210a25cf4cb29d139d85d9c904004cb246348c60736d707b2b9b111c91acd3937d9e8934032746aa5025bcec8bf637936448a0dd67a27db2a74b60bba82bcc87d73d4a9033c427a85883613eda43829c7ca3c7a8f24364633610d8199a5ec8038d0b6686abbd47692ada94282c40799ed4bf8ecb65ee7c8b2047c41eb255318c139b89ce909831fe3024bac10b4110ca34f1bd657b941f466659fcc971c1174aa4459551848e7a116b751e5e4022c8f2a4b3152a1b26a3096539c9b0bd6a435ea1e33413ac4d5f401f5de8570cc11cd4bb9fac473328d55501702743e2c8d1b97cedc8ad3d55b67d284158ea8bf1a4a8a17a9de6d5669e8b9571200b05300cb30bcec4a58b06f70830c2b32d28992b70427781854456129cbab53a7c72ff557193d3a221d06177d002095bc04e993b8606245416c3b998b01716af3b43a535f7a6bea71270b34ec808ca00e9453ae660b732963ba634f14378b1691a90e3708125cde31bae3d10451a5643f526cb790a8d6e091a725681fb539e9b05bda7b04c48a31b39da6e39e6be624663b6284de9f958c50149ce4090e6a486b68511ae90a0f093297bf090db3c81d34400a40cbe11d74271e23bbb7a49ea875ea7f7cc25516a899198362acc52c8a8ca14bee12bbcea9a6e3509b6887a3d1d4c3b2b4314c4c44f44c96f48b29a8e7b85339037acf131f2692b7e7a49282237c8f37267c835c24883d1a189d4dccb7c6bb1fe622fc31301a6d3612a448084e0a210449b7e15a4fd84a9a538b2d5844dc170c911fc1282bc513e8c18c469a01a548d1ce4853128a03a8b1d369b353c3003b0a29d210ab6af23acd010ae3671493c774efad8b3746180746401d0e5862a3265e7969f247c954955b4afc13fc420143c10263eb1c6dabbbf5a8857a7f3bee7658c8399503c21a9a38ba554132344e214cd2036c2b30d0770cc5dd87ed9b246e7f955ea926965748cb9e58351a938f7e4ac249ca5c970cfde48c0ade051ba873d36a581e0fc50d9583109a79549fc5b32ba432444046ac0a66f3c64ae1498f43b1b36d8082442b5aaa7bbcff2c4cda8c0c4d2c62cf9135a75709ceb5b82ba4ef5716c4986a36bd7b4ad5c3a505869fd34aec2d7caba492f4bc30d232382b2651d5923242bb50df87092ace5566bc5a18fb2925cab467b641df7b5b91142318d120456245f2f0887ff13516d23216637393c469ce1f776cf2426c6577844cb3d4e0a92aba85ffb59979a7c33eaf51ea2bac9862160bf8a85553a3d4edc05da102106f632c91b8d1df2a9b2734185283941ebcdfd788107b307738786d6c0a0e7d4957dfb17488c5d6cc11b83e3504ef2923034a06270563e18a18bb29f48c36a64c132aa626dcfc5a615e4416df76746673e500186a117a27c5007a4b04867213c33739e27058adb23c0de35ce6158c99e59b88b147e2ac05f09f7c0a414c3240abaf65c24cfdb6857eca66bfc58e52472861bab1e03ce70d2115480b443a9bf799379af9ac978d0072f75bc7923816a189da5974ed948b8a709a8191cc9be60ac2a383a7e27cc62543a2a0ca9ea6897d284ae79b595d0893514f75db35c9254b7ac47260785c1b86a98a5dd733d3dc2b947d148f698c5a117821847604151068412268169c86d50be92d77683386025704575177aac0b9d3d3196a610985e860e2f799f480b1331ba346db0c379cb1833223836d88fd4e11dbf2985825c78330658b9a189233bc76b172127bc7a98e6c644d28da7b0857f67157ae2c27659297c32a7eb653697a295097a32ac235a11887388265ecb3b46a75c865c239395300d0f8152cbcba77b4d655c9f1ea4b448fbe32c4996fc298d26cae25d276bcf6e66ba65e3e9779146fe6c37136273736ccb11df5b6d55debbc087de802404b72a003c5e8c809719d7e4b5d8021c486b9c3114d7cbbeb7cd49eba8a61bc2bcae1f1bef30a1daf76d + +comment = Official test vector 66, seed: "a3e2e511afa7bb560446bdadf67d2ee2e16ffc7baeae7efb8c5455068bbd4e91bf9be9d98b280072faba7712c75b26d4" +entropy = c0407e41ddf48d333978b89bcf2db01e4613425b456249e76a6f25b8a2827bf5b2dca81e3f5f748d23c9d356a2209f6b2d60247b2e45c9808de497f64f124643 +expected_public_key = eb9b77f8c16dce72611902a8ccb81e8cd4c5a2fb1d8fc30ce226bb45779f41073ff3ec0362ba152102cf45d3a95874a551c14c8a621436e248ffbbc4ca3b4033d50efa392dbad9c339745803f845736c30bf309546229ef52788ab223758c03491f62913fb4ca4307dc6b4c7fd9503a701ad21671387cb2cbc728ecff4641e312779c7034ce720554a948a021751d4628890ca7367611d4b9f269c5ccb2381f1f6a01b0634d9c5c954fbb934e4144922ccfa2035892c4cc2a8457300946aba4ffe77868d34c7a90507be43748a366c49d0a927e66610a08cd0152a2c1bada92a05694b6e3d2610acd4579d5634fd2675f2101290e2ba1855252b57a438b50fcb854ea7b6a89b109ea9857c23aa38333428b94ca5a524977d72077b56978328c18980382ebc967dd37e6136360a958d5f00c3b9996de3b97b6468b9f98c3c50f37a9e73ac8e8364288347d9b018d437b3b065c120d26e9033078b5838dfc7ce68f244b32c5b4ac04def068f58fa733e99a418176575ec2ba0f78d4c402d67176db5717023b57f8d26c636a11f49b926d20b277d2613941c3e786b1a9a3c1135993bce22a1de16434a5902c0f101993b65777399828ba52330a2f356203521a3c59b6007c3aa41d198a8232d27c05f8e0280c9076d54d5aebdfbc95c7c06bce24507892641f90d2b774a2d98764c42bcf009799432b706da59bd84cde4892427c0586929c99850c7d769ad9a221c85a4062a62b2a1847454554224c4cc47898574fa66d147c4aedc59ff612f49285db54170508c89e6787a8ce6515cec673d4545970ca8ec486802933e319800fbe46d5cc14c8363656dac0600d895fe383fcbc3614fe334cac0a94c185b73db30cb5a56a8d04cb271b13859862f164f980625d78ac35ed120605cbd69e6410eb05168819440816eebf8cc9ad153cda5bc2efbb00a7563a55856711231cd12873a9a56996c174ae43b5c172a1445bb40cb3deef9051035b33214a61e26852ef3bcb3fb319e1b4d6bd832d6b9bb54b6021d180881d59d2458564acba148b0ac36cb501cc8242919064ee24343f26a87a0696000533a20943445c72b9260b4c8a46a1c921c582600d978c5370b400b2412f73541a13ba0349e66fa4025735cab6402aac51e08a019b48115c49c665f415244fa91c208c6b1f2bb02bc18c47a5aee366edbe3bae1e41a8b405ddeaa22a2fb254a6b70dc5a16c0217e4dfb933a127039b788e6c035df8993ff86923500ba466a81d34a0ada271da4262f33123a1b81a13621211845a167449d93370bd95a89725a56a8452b510a7fd2642af41a4a7856abd9688dd7c85433a868103679a8eb2bdfaa0cb52cc141267e91e2c1e57162c6b4897c9004a3d375c1c8bb87c5ae2cc80c2a107e0f904e5bf8065ac96c9152aeb07322fa181a83a9cba0224c9faa0f06cb67e2787eba832d3f53ac60b7b014d28945361759689c3ec65f8b885eda081443a2afd2a735b1c57c201aa4d273b1302267e5a63abefbcae8e1b2d3883439e2be2436382eb9bd62146de0e446b6e2baf8300575091db145a646c733bf352989938fdd8003218a607739c60da6758bf448bf18a22630b08ac40635382e3bf86d16625c45e12ebeef4308b229c948d425016d674119c0aadefeb21338ba6cedbf7df723 +expected_private_key = d338b8576c1fd9168551a681f9c590095b6b8d8474f571226a4b68ee81a83738bb964356edb663d925960388c92896029a201ec7f046cde497e3384f613a444634aa3c41656c6031d5233720241603612bec1032afa7b3d41242ce374c8b118cf6219fb5e645002530781cb4660403f88287d115baaa07ce95496a7232862282a653367fbbca1e337155a3c8905e368c1974418e735f93b6965fec11ce7b43d81710d727a4c4b434003b9110d013568b7bbfb341212543031c862fac505944b86394554772047b2a864a6675ed984583269362759cbb464e7e248a48c3554b8054ed9342aedc8e221439f812697b691bd5c89b7fb11ec716bff96c97dd73c45b00980bc6b1f69117c2329386518058e97b26626d98196025724baf0c5729109399e035ace9a630cb6d7ca9cbc16ab560da5c01e37601bc0dca7a3af891b80418c0056145c7ac8c176605411a39bfe843cafb4fa61463b20a504e984308f2b82ca7081a97951d0961b2664e2d7b41df902571d02c1fe24ec0ea998609248cf51cf2f81d96a983dbd29bb37b9a7d559c72fc0baae894583a842fcac92d910c7d682dde70a4a7b26e3259b290a182392cbe36b68d2e321708e9c00d8c06dca5043c1a461e76438b7801e8faca17045b272b16999471f8fb42f53a43294124c3b2b7f7a13eee8b195a01871909a70e41a0cedb37f3f733ee259f40c1cd12c79daf90788d78ceaaab9e1d20b7ff8800a17ac28953a4e90b257d099da195b6701a695195bc730389a84a499ab784762631935a5a974398c6988a59822bc6382b9cdc6072f0a6cf65c9dff2309d1a433ac52e6cbab472e788f76558d57986bac5c79b921f06e509db18c70ee88af044b527e221e5a5105a19610f059fbf6009b985190ac81640607cc4fb69d4892b5d9ac12bac26765aad5c874fe3080beff77961cb9e747a8e4b4acaf3f3b81d51a4a755ae8ef2994e8a722dcb5b8014c1ccdc6a79046664c3b75c02b91e0b4c5c250b8eda5d67e9a0984a6052053d22266b2413b98d841e8aa686f4e0aeb8d5b2ed2c8bbddb0374d0ad8cd47a0e6945f0ac352307ac0db224eba29bc09397f05b1308828cd42b85c556bf0a938959fa7cde083d3d0163c21b016133145ae0c47ef73604999e76f9ad19432f82e762ba8174f89a23d09333f7e677f33bc15bf996ae6999ada8747bb0c454412c2b651d2a90382937427ea555b3856d0250ab1e3663b8d78f3d96cf9eb90b5a501129715df5db38086076c4b351305a9718903abf12609fb1bc8a59162e2152f8e0c62241ca5deb5260d71ae162b7ea827a342584576b00dc674a5be149c7744d7ff43a5b04a3ebd38c110630ff656f2ff042eb603403d14f18eb17cf675c995c2790e936cf8b60e758484bc04314e50105b28346829077aaaca72acb46d331e9127b17dcae5e639d2b33b9f3cca468f731bf0b332ba41d196ab77b3c436702078730369cf59144540ea08b5025a4c880c1530f40a852e35f96519c91eaa680d90d25a4256feb1878b48e39143ce43378eb3335d3e03f2a358782e0b54ab56860148dc0fa5cfd149cf26a7260639a347aa72b977b6f38bf29e1472c26b4d7f80e4bb3192de06ec05a6aeb9b77f8c16dce72611902a8ccb81e8cd4c5a2fb1d8fc30ce226bb45779f41073ff3ec0362ba152102cf45d3a95874a551c14c8a621436e248ffbbc4ca3b4033d50efa392dbad9c339745803f845736c30bf309546229ef52788ab223758c03491f62913fb4ca4307dc6b4c7fd9503a701ad21671387cb2cbc728ecff4641e312779c7034ce720554a948a021751d4628890ca7367611d4b9f269c5ccb2381f1f6a01b0634d9c5c954fbb934e4144922ccfa2035892c4cc2a8457300946aba4ffe77868d34c7a90507be43748a366c49d0a927e66610a08cd0152a2c1bada92a05694b6e3d2610acd4579d5634fd2675f2101290e2ba1855252b57a438b50fcb854ea7b6a89b109ea9857c23aa38333428b94ca5a524977d72077b56978328c18980382ebc967dd37e6136360a958d5f00c3b9996de3b97b6468b9f98c3c50f37a9e73ac8e8364288347d9b018d437b3b065c120d26e9033078b5838dfc7ce68f244b32c5b4ac04def068f58fa733e99a418176575ec2ba0f78d4c402d67176db5717023b57f8d26c636a11f49b926d20b277d2613941c3e786b1a9a3c1135993bce22a1de16434a5902c0f101993b65777399828ba52330a2f356203521a3c59b6007c3aa41d198a8232d27c05f8e0280c9076d54d5aebdfbc95c7c06bce24507892641f90d2b774a2d98764c42bcf009799432b706da59bd84cde4892427c0586929c99850c7d769ad9a221c85a4062a62b2a1847454554224c4cc47898574fa66d147c4aedc59ff612f49285db54170508c89e6787a8ce6515cec673d4545970ca8ec486802933e319800fbe46d5cc14c8363656dac0600d895fe383fcbc3614fe334cac0a94c185b73db30cb5a56a8d04cb271b13859862f164f980625d78ac35ed120605cbd69e6410eb05168819440816eebf8cc9ad153cda5bc2efbb00a7563a55856711231cd12873a9a56996c174ae43b5c172a1445bb40cb3deef9051035b33214a61e26852ef3bcb3fb319e1b4d6bd832d6b9bb54b6021d180881d59d2458564acba148b0ac36cb501cc8242919064ee24343f26a87a0696000533a20943445c72b9260b4c8a46a1c921c582600d978c5370b400b2412f73541a13ba0349e66fa4025735cab6402aac51e08a019b48115c49c665f415244fa91c208c6b1f2bb02bc18c47a5aee366edbe3bae1e41a8b405ddeaa22a2fb254a6b70dc5a16c0217e4dfb933a127039b788e6c035df8993ff86923500ba466a81d34a0ada271da4262f33123a1b81a13621211845a167449d93370bd95a89725a56a8452b510a7fd2642af41a4a7856abd9688dd7c85433a868103679a8eb2bdfaa0cb52cc141267e91e2c1e57162c6b4897c9004a3d375c1c8bb87c5ae2cc80c2a107e0f904e5bf8065ac96c9152aeb07322fa181a83a9cba0224c9faa0f06cb67e2787eba832d3f53ac60b7b014d28945361759689c3ec65f8b885eda081443a2afd2a735b1c57c201aa4d273b1302267e5a63abefbcae8e1b2d3883439e2be2436382eb9bd62146de0e446b6e2baf8300575091db145a646c733bf352989938fdd8003218a607739c60da6758bf448bf18a22630b08ac40635382e3bf86d16625c45e12ebeef4308b229c948d425016d674119c0aadefeb21338ba6cedbf7df723a074ed1f76e97d68434ba4af2af0e549204222679e9e643580c35af3cdd247ceb2dca81e3f5f748d23c9d356a2209f6b2d60247b2e45c9808de497f64f124643 + +comment = Official test vector 67, seed: "074ab1a37ba5a0403d8f68d26fb787bc2c90f5ef88f2a6d286c3e6b168abd85d393d8225618608b8eeb301d26af53bc0" +entropy = 334382d39164d1989696a2ff77b25a28af8bead9883b5365eb6fcca7c1781cc9aba5068af837be962f439f233593d193ce5e08f7d66efb3389885927b89d2523 +expected_public_key = 9bd11c902a159f41cb5395be189b1b7e98cc23658dccc7bf9a843a77b2a6bfa27bc941b04f391950d998c607a59b49330811200b38b243060b55e381c078100da84975091f3a0acb06f22ae3fb1b7d756d36f54200a367c109b13cf40f3671231d5b0ce9e5908776768767209f4726c54277d0f8b0e05bb4cd50bb5547a01051c89abc4a352745316c8d85a3187d68382ef05dc96294446972f4c76c7b9b91a4babe06fc634e76ae4b778f939c308f22b8c816bc3fd6b48e168f5dfbc19fd8cb7e4686bf2325cb060638c723364b27c8e3123fe26cf9862f247cc31c844ae77754206b03b497bb3283cc7e38664b23771f709e1d308cfaf5086f25acbd04cbd9f1612acc2712d129c9c195bc024cb057b0766aae7b533e60f04d947947f920470bc37e5eb4ac4fa1c48066877b4456d4ea2a5ee089de38a7fc7573fae5480bea823727132651a85d873378cb97d6f7be1250a94621abf5eabf0114952665cd2a5005af338b36d19f6e4c8f77e2cfb6f24d3cb7a909315a026b5aad50a9cd4baf3308059a91323b1c226ffc76b3565cd9386592476b76057e3477c8b7cbb201ca91546a2354b59328d411a724cbd8b3689efa335d879996fb0d1d2244edb361be4b2489e84086f4a995f20ffa9404082c4e66061d3ef668fc155bce04916c92b8fa46b77a4a9fa82c8c0ca5a5a5245883d25fded230e74b22394169464bc33fd51fb7f2aa9214b1ed546dcfd00ad554aec80882ec170c6ec44794204170d738ef9341d6034920a7aec3b68fac00527b2812d88969c6207f9aa122464a4d76320ead6271d2836e574155310a756cd4249fa7474b301ca978a0653935b7740a16c50df1eb678c1bc3eb451cf6fa35beb903cd89cde0aa58a43bce9cf591286792fb3b5e658b5a32196ea24a4252b093d2ab40884c39a4abcbd19b108b81172e18a84a288aac2982d113454335423148168bb6b9d97494179bba1ec8760be59d06251b94b4baaf82a6481c4a8f33b0fc3164635452e6497f992308688352cbf44537c618000536f9c41a64361ee162236f9227219b8b84a3984c649ea82211207c974f6c7575027aeef57e496a58ce2719096a58e2e31e82844f4d674a4cd9cfcada79afb0c63e634d2514ba4d8604ccc42b2eeb64691aaf23727c93c4abe1423c27b3b7abf0b649334760056e591c32fe812a753723f7c93ef5524c8e0267db177e6e55620715688cd0ac70b2a90e133caec86945bc74d7ea1cb88479a37b45eae4993bb7048e5316bf66b9715591148c9a20a35412c2404bb62c512b3800b9ae104453d95acffe000d3ae85b96d8092532796a03039ba2154f84afa4a402acb673b8799441bc505e836c3b558e1fe2057fa79153e1630d72afd96aa4fe9c0ed4822ab33a559719b81d274ef0a2773e405761a036521278df5ab3617cbd89d7543cfc7c6ad373b2d0b781dc78dd3b2afa34b6565979231681fffb8c62843dcd11686ea59406e23cdf96aed95554e47027c5b6976f5515bc40b0e3a31c556219f89b73c0871e1ff552ca04c33daa4a363794cc7c0e05249b53d20460eaa8ad217787c8c9423a7eb71058b5a8081b82454dc91f77f8608d60caff30a7c42424542a1746f0f10feb3f0fa52eaad4f2d4c36e59ca0a5389566fad53898992a17bbe0a0f +expected_private_key = 9bfc3a71fa83a4070db5064ada8410a770845e818c49b91e09a251e1925edb226ee8ab153f94b2417560d88959113a6bbc854b0065748e6a7db90977ada0216f3c41cff70e5202b306cc22ff8a138c360d75b9cb1bba849c5bcc8c9b55e80647e513c9e3e15f66a144f013822da24266765e3f1125f435bda4c46ef57430eae331e1d54c91960eeb363ca25387d0d441abb930e4a7c329191c5ff7a87996a4b1aa74162611e67b303e284c7098a65069356b55304b11b8bba66c5829647493c09bf62166017977a988333092efe98d9c13a2bce53f8ea2c81a0099b7d5c2b11704971366a5565cc14610df796c604700680226cb165e9acaa6ab507a923b4d472a4b6c9424e7f5a622f87f4f8a1083b4755067a93c285cc0748d241c7051971128cc5af4db5c1f7c144f98b6bf9703f5338628ca22df4b84d10312edda9df71442464a24491a62687928c22455dcc23eca964e9248543520790d813924cb58a0c156aafbcf63906ec5fa891936c7e16b5fafd98026d64ea2012bd75b6c5f376eeb74ae9b29cff7041c650b91a2b852c021562ba33b66ebacf787be40810f22aa43f4174571c77710f775d1719968a5523780b613262f94bc36b611b63f460dc6e02cc588af99f164302276b0386e697469c55928c0e62438c25af90577de0883cf45819262905ed30d9a1a7918b82f9b4a28ca5b8dd1d9ad4326adc7ba69c087765cc6511668cc0be83d510245f8834e890662e06774f389c0c623be3212aae5accedb101c43463b68889ea9a2c21aa0acb5329ff80a336f8914fbc602e2b9ae452647777651ccc4bef70ac06423b66ec5982c861ad9723dfbc834ca6a6433174c1d6c1ab9569265a96ab5d48495d72122763b3a7275b297713f1a729bdc48329b64fff9c45955c6091375d4d77fbac540dacb140666610ec7a15ff18bc741aa69425508d5cf682bafb6d3c9dfe02d80349597f56fbebb7ec8031fe71b6d6c065c4e6b5e5d17abf3b412ded81efcc8b6b1935fb37b467a5cc61f318aed20678800726509baa73bba244030500050d4b23e4ad71349cb0877566ad100ba77f8b409bc8f0ef8cfbcfa3cd1baa1935c9abca798ff6965ec7b53141b6709597bc4f9983766403ed80df4095d59ab482fab7fca432ef5e76affc77f74f4cda522a0085a4917d04167a00b09863850d6caa0621c2d473de0763b7d3168b6147bdb009eb260901fa82013c8c0a3f6c39de3cc49a773d08b357ef932077b5bab86391239b3c366c43010ad15ea2eb1e05267029e5ad8139728a907b98761b65dd6dab895363159b48875fb6aa80882256a04460b2977280688745c5914c089b37bfc949a8f9864afec2e4dc13f6092070eb561d09b530eba2ccd66b87b0986adea1933448066521e28ac2ed9c57ede492799b401cdba8377d593dafc1a0d233004e25877242c30070779d8bc5bb488dd3988004b5a8554861b560ebaa5bfff7c89ded193ea077f421c216996c1445b165b912901b217315636a168c0216ac026fbbd4239858837b02dab5a39d1be6b072468a264661c5e34f42380c66526377c990092434bcb551a744227445c5108fcfc3cb4526d0b711dbd4539cea05a08a78fba723f9bd11c902a159f41cb5395be189b1b7e98cc23658dccc7bf9a843a77b2a6bfa27bc941b04f391950d998c607a59b49330811200b38b243060b55e381c078100da84975091f3a0acb06f22ae3fb1b7d756d36f54200a367c109b13cf40f3671231d5b0ce9e5908776768767209f4726c54277d0f8b0e05bb4cd50bb5547a01051c89abc4a352745316c8d85a3187d68382ef05dc96294446972f4c76c7b9b91a4babe06fc634e76ae4b778f939c308f22b8c816bc3fd6b48e168f5dfbc19fd8cb7e4686bf2325cb060638c723364b27c8e3123fe26cf9862f247cc31c844ae77754206b03b497bb3283cc7e38664b23771f709e1d308cfaf5086f25acbd04cbd9f1612acc2712d129c9c195bc024cb057b0766aae7b533e60f04d947947f920470bc37e5eb4ac4fa1c48066877b4456d4ea2a5ee089de38a7fc7573fae5480bea823727132651a85d873378cb97d6f7be1250a94621abf5eabf0114952665cd2a5005af338b36d19f6e4c8f77e2cfb6f24d3cb7a909315a026b5aad50a9cd4baf3308059a91323b1c226ffc76b3565cd9386592476b76057e3477c8b7cbb201ca91546a2354b59328d411a724cbd8b3689efa335d879996fb0d1d2244edb361be4b2489e84086f4a995f20ffa9404082c4e66061d3ef668fc155bce04916c92b8fa46b77a4a9fa82c8c0ca5a5a5245883d25fded230e74b22394169464bc33fd51fb7f2aa9214b1ed546dcfd00ad554aec80882ec170c6ec44794204170d738ef9341d6034920a7aec3b68fac00527b2812d88969c6207f9aa122464a4d76320ead6271d2836e574155310a756cd4249fa7474b301ca978a0653935b7740a16c50df1eb678c1bc3eb451cf6fa35beb903cd89cde0aa58a43bce9cf591286792fb3b5e658b5a32196ea24a4252b093d2ab40884c39a4abcbd19b108b81172e18a84a288aac2982d113454335423148168bb6b9d97494179bba1ec8760be59d06251b94b4baaf82a6481c4a8f33b0fc3164635452e6497f992308688352cbf44537c618000536f9c41a64361ee162236f9227219b8b84a3984c649ea82211207c974f6c7575027aeef57e496a58ce2719096a58e2e31e82844f4d674a4cd9cfcada79afb0c63e634d2514ba4d8604ccc42b2eeb64691aaf23727c93c4abe1423c27b3b7abf0b649334760056e591c32fe812a753723f7c93ef5524c8e0267db177e6e55620715688cd0ac70b2a90e133caec86945bc74d7ea1cb88479a37b45eae4993bb7048e5316bf66b9715591148c9a20a35412c2404bb62c512b3800b9ae104453d95acffe000d3ae85b96d8092532796a03039ba2154f84afa4a402acb673b8799441bc505e836c3b558e1fe2057fa79153e1630d72afd96aa4fe9c0ed4822ab33a559719b81d274ef0a2773e405761a036521278df5ab3617cbd89d7543cfc7c6ad373b2d0b781dc78dd3b2afa34b6565979231681fffb8c62843dcd11686ea59406e23cdf96aed95554e47027c5b6976f5515bc40b0e3a31c556219f89b73c0871e1ff552ca04c33daa4a363794cc7c0e05249b53d20460eaa8ad217787c8c9423a7eb71058b5a8081b82454dc91f77f8608d60caff30a7c42424542a1746f0f10feb3f0fa52eaad4f2d4c36e59ca0a5389566fad53898992a17bbe0a0f26659f74fc9ec372fe18be4ed6aa28b7cd84ad1c0f0115dad011a11d20fda9edaba5068af837be962f439f233593d193ce5e08f7d66efb3389885927b89d2523 + +comment = Official test vector 68, seed: "cc0c86cc0abf86fa21899be1953913c00e7c46e6b5f730c4e88b3c034012763981d7f14459d3081638080378348856ea" +entropy = 6995143e8eb8a6e93840f76eec844f67d2b5f75b1839a5040337e61f9806764a0f4dff8e56f68440836a072412a30d851ace2c7c6f02d60e7a8420001a63e6c6 +expected_public_key = 8683354b3c3f035586b50b88c4140f346a05ada7ce4beaaa5f096614cc767af89ffccb95124b00e8379efaf76ca381ae4886abed9240bda4710dac62a71017059b07921c770da1ca2d209338536c3a9b5238313bce565fb861bf8ad3a78f030b3f646b34347f1d215e8ec1789d602d92a971fa3c2e892a09cfa68968f96f206a7535766ed7533497fb051c8036b0aa81c2c802fb7333cc6744ec830e4be56ef1e4874371409486c477cc4ee90092d2919f585ba21f32bc973acaef42b4969746ab2618631b6536ec298b2828abf41e24776bf288ca6a4a8094d63c7ceac44854ba9e4837e44b3a7b269d6ccbb6d1712e9ffa937ec5194a3541e3fc9c685102f9a47faa077fecd688d607996e5b60c1715e617994b842b46574b87086a061488bb2445b357a38934b612c16168e662112756bfd764a4fcc5f7b1634f6f28094464d600046ee03b4540c1049bb3d18f783fba2ac5bd36ecde662d9e08e2a89cb754b090db7175277941e5973d010ae08a4b4c922aa99f47f657a49c3b81fcdb54c905a3010405ed544bdda9942bc857b6d979f796c859e0627a5212543477ed791c2adc95fdfac9d21d19750b8b5ddb95f02d721a9304099ba6b2cd0a40c1a2f9dc1649b2318acc93a5fbc52e3f4900bb44d20a7250142ae5f3b77c0720c77104b74c78eb821bd32e260051c499b5ccdd9d716521163557b5e4526acaf09a2beda04994188a5065b4a975b215171eb288024581cffa37d6289813773b29f1c0ef5587f9c98049f548d2a0c3a5c71c1693b5ec8c64ce0267fdf625485dcc4b5553c5736a0d0623cfe20596f984c014aac0380ba9b58257a993b1be3bd2cb9ac25912b36b2c085443074f093510a46cde5441ee3cc88dc2cd636a5ef77310f91cb21abb149db2541407726582b54b50306cab4b5356492c220c138c64b4ab293680e01c2aeb369bd611064fd8955b790222bd5997dd76bfbe50a2bd039c1f14f0469b623c53195a3b2ff068182d951dab05ffce9a6c8fab42886987b7999043c12870965bd463980aa6b35e13b5bf9c25b64920d7788a291a98ebc30d3785783c27e53ca9ae809004f23706e3cc0b9ac0bd571084100299c932db2933cd91566aaa367371b16069a706be664e86107b33b1cf05360248c808ea250fcacaf9096715478463932a1c632cc9a185eeb08583a9309259c567743995af013216b1086815b851655d0f14fcc43682720acdfc36f35806894177ea2144f6e28837cc887e560874ddcaaf60a3580fcc7a5f1733180b1f1202a08182345370cc5c46cd28a507ad846d1d9415af679d4b22ee560c6c1b2499d5b74aa2758da090e62713343b3a8b14c68e415a3f196c2573c5e828a16cea51443104f9cd899ad03c3b727774b48ae61db98feda4c1e029b57f89d1735381166b70450215af92120ca61a8a38e575abf2cfaa54c613031a9ba60275d23178ba553a3ed7179aac44fb3607e93c1c57c7bad6854533844bf3d6a9b95a966f891612239cf6cc41df1a859afea9c0cec6d2679cd7c71c2cf251dc9759666c871853a1012294022fabdeb2269b430397f337b3f416e528748903ccb8b24c8fa28197244c0ac3a0345e699b247c863e9a58d8caee564224faa36c70ecd281b67eb98908468420b38f3c24da9290ea98b24 +expected_private_key = 5e484946337e3f4135d738b0862b69f7b247a5bb0812d56201300c53bb87b798b2b551ccea75a87f002d7de7878ed08e976a2cb62b4aa559bc36816e9690973f608b262612f89b5bc784365e33193fe9013c05818e0a7151297ea53c95089388be203071d0335535436c799f6d3aa3260a9c8c9c9e36f79f13135c3dab92914137c33773660aa15557c32b7a086a5a1cfd125dea60183ecba94da22f0f3a18dd2131bc792c4013b7bf84a7840c976c53117653c4f947839d8cb35538bb97899418688a9e062f9fc17d77450d85261aab01bd9ee77e917966bd26bd3d3990aabc8561cbaddc5a22f8c80d99453fa7350b2a022e4ca48dea6c9c07309543611abfc7cda76aa03e51acfdf0cc73921ef2d02f45990aee50ca77b93f14e4bef44576134391f7b67658e1cc7876713742267a556ea8f562bd858b24e04314b025ccb5be0650642a23460c3c65e0d6cb68232cff709204b7b7cab0741807100a712686b982f632095d7730dd9385a7a26c23741474e12cd8fc259ef346b5f287eb01b046104ef8415372b47da145ab0c5c1774626b5dea7d72db4c62fab14c03ca51384420690a799194e8aa05bb914db21956bedc948299baed7289c884ab9833c8669422adf51d4e1a0466056eeca478f11ab55ce2ce34430addc889044a5601357ea6a5b097b54252b046fa83c0211c236953954c36840e390d2707848c0b879aba2354ea200fca56cbb86c0c2269a81c790b966893f782aae9a4bd1b02fa85995a757ff2083fd26347c97711e07560af77cb59c7cd64f7cdbc880ad26a7bd7fcb9b210710e581c49453a3200ac08554a641068e6879ba6665ae9f281fc14c8fbfcb0cac0081c1a06db017d80048b324248f699825a489d0726893e109127a0ae802cca29ac56f6118d209a54cb842c9a8c539e43b9681cb868018c95d872c532a10a77bf52a796d33187fb8aa3fd780bd2c4b30fb7394dc64b0fe05b81128763a1325bd00eba411247b1c22a1146feba1b255c51f74999dd29a9453151bd9869e3d548347b93c1b798fe92a053b88c80d7afa5c561d31435d61251253b9a4c2b0f42830c81e990006dcebddb7002240ee8e276d4e31c2d249b84414f3997b9c4f5c0698cb2a24c48e3605f6d704e5db734ead12d62634dedc68ed6a1248273bad5ecac0651978b098ffcc148667671d4b59ea6095b0b363c31299e5b90282f914bebc66f6291338bb7600c8310b83963336952ec33854ed7c979b71f30188180b11bb66314c93242ecb890123c9f2aaa786acbc7dbf560cfc1625d06c3828998ed51b79d28c583bb38719706d1d67b9ba5a556cb9ee1dc4ff2c53c33969f2f97bb93056729f65fd90aa2d7113edf611c521761be671fe37baada7a2b4a114dd458a19966a2a42914d61b47aef5abccf8240c88af752b51bcd0a3788c2aa38aad8dc00d835476c8386dd3a8628b261f1d6b2b9f771842c97da7bbc3d03696f60524be6476430044f6a8aa48c22901f750dc55c1ea7813ec3518b26b3fd0657ea6fcb6be94c026244a0401593664673faa680f866e174143b0cc086fdacc1f7126c3e941f090332d8487d5e66061d5311c9b5c8edc39bdfc34948400a9a3aff3a85a8683354b3c3f035586b50b88c4140f346a05ada7ce4beaaa5f096614cc767af89ffccb95124b00e8379efaf76ca381ae4886abed9240bda4710dac62a71017059b07921c770da1ca2d209338536c3a9b5238313bce565fb861bf8ad3a78f030b3f646b34347f1d215e8ec1789d602d92a971fa3c2e892a09cfa68968f96f206a7535766ed7533497fb051c8036b0aa81c2c802fb7333cc6744ec830e4be56ef1e4874371409486c477cc4ee90092d2919f585ba21f32bc973acaef42b4969746ab2618631b6536ec298b2828abf41e24776bf288ca6a4a8094d63c7ceac44854ba9e4837e44b3a7b269d6ccbb6d1712e9ffa937ec5194a3541e3fc9c685102f9a47faa077fecd688d607996e5b60c1715e617994b842b46574b87086a061488bb2445b357a38934b612c16168e662112756bfd764a4fcc5f7b1634f6f28094464d600046ee03b4540c1049bb3d18f783fba2ac5bd36ecde662d9e08e2a89cb754b090db7175277941e5973d010ae08a4b4c922aa99f47f657a49c3b81fcdb54c905a3010405ed544bdda9942bc857b6d979f796c859e0627a5212543477ed791c2adc95fdfac9d21d19750b8b5ddb95f02d721a9304099ba6b2cd0a40c1a2f9dc1649b2318acc93a5fbc52e3f4900bb44d20a7250142ae5f3b77c0720c77104b74c78eb821bd32e260051c499b5ccdd9d716521163557b5e4526acaf09a2beda04994188a5065b4a975b215171eb288024581cffa37d6289813773b29f1c0ef5587f9c98049f548d2a0c3a5c71c1693b5ec8c64ce0267fdf625485dcc4b5553c5736a0d0623cfe20596f984c014aac0380ba9b58257a993b1be3bd2cb9ac25912b36b2c085443074f093510a46cde5441ee3cc88dc2cd636a5ef77310f91cb21abb149db2541407726582b54b50306cab4b5356492c220c138c64b4ab293680e01c2aeb369bd611064fd8955b790222bd5997dd76bfbe50a2bd039c1f14f0469b623c53195a3b2ff068182d951dab05ffce9a6c8fab42886987b7999043c12870965bd463980aa6b35e13b5bf9c25b64920d7788a291a98ebc30d3785783c27e53ca9ae809004f23706e3cc0b9ac0bd571084100299c932db2933cd91566aaa367371b16069a706be664e86107b33b1cf05360248c808ea250fcacaf9096715478463932a1c632cc9a185eeb08583a9309259c567743995af013216b1086815b851655d0f14fcc43682720acdfc36f35806894177ea2144f6e28837cc887e560874ddcaaf60a3580fcc7a5f1733180b1f1202a08182345370cc5c46cd28a507ad846d1d9415af679d4b22ee560c6c1b2499d5b74aa2758da090e62713343b3a8b14c68e415a3f196c2573c5e828a16cea51443104f9cd899ad03c3b727774b48ae61db98feda4c1e029b57f89d1735381166b70450215af92120ca61a8a38e575abf2cfaa54c613031a9ba60275d23178ba553a3ed7179aac44fb3607e93c1c57c7bad6854533844bf3d6a9b95a966f891612239cf6cc41df1a859afea9c0cec6d2679cd7c71c2cf251dc9759666c871853a1012294022fabdeb2269b430397f337b3f416e528748903ccb8b24c8fa28197244c0ac3a0345e699b247c863e9a58d8caee564224faa36c70ecd281b67eb98908468420b38f3c24da9290ea98b242ca3d8ad2dab1dd8a2f4320658fe6eacabf70d907920593919119cf3745163360f4dff8e56f68440836a072412a30d851ace2c7c6f02d60e7a8420001a63e6c6 + +comment = Official test vector 69, seed: "6d5a7cc326ecf3983c4e7683f45263a37f692f3bcd2d920e1fd9584350119e74f9a3f905f70d3e20318c1413de2a0dea" +entropy = 995eff7e0d195c6d0533f3dc194d47e60f9ad14696144cde694d60a95f3e96b4b28f7e7a15a005f92400ce33db073d49b53871594a88fc45e0f94207b5f0f2dc +expected_public_key = b147b4694b12c461130f3126f8f71673e4643b2147ded2a7270ab360f6303dc05b03a314bb776c488318686069c3a4c91cc62435e829a6a8621ef5cf838311a4278d7f453ea5484d32f94c2e9628f5532ff93771dae106c8ac9cc80ad07d306b1da78463a08226657680e5acaba6819543cd96194aa5973d4f7b8682b13a07e7a5194c91ec95a2d671a2627710a4c78aa107b3707942d0c78f3eb2b3a58b7833fcb0fd7785e349a2f0027aff079b62a68e3f425122f7bc0a0b4c053a6696f90a67088f139b2a39f542d6439091e4c1a0824734d8b6e5e6483f48ca738c39a5bc2016c0746cfa9c1889297f5377d614acff2833ced20abed0aa6c7024221b73d53610575c6d91a262a5e834abb63cf74207437b31b1e989ecd7416b2c4e7bf807b5f8973006877e204a42774c93a1b394e885cf727b7fd286def2b4c8d5684460219c31b1b225aa08ac2ee1da3922e935e981b3b5e2c3d044a784bc965a580d3052ac48000ef6183b94b0a870e65207ba8029c0bd34a10443e5706792207fe2224da533d307c3e3077e6e1cbad064b0399abc6f445b651864f18b42e1a518fea187bdd08072e47588527c3b9a5eb244ae9e910f93c92b69faa7250bcf38e68e9c3a2b2b733b18032f37673907097a4cd65a9b396db4859312d59113e07b39746c52126ea697a69929b1b625b5ae1b809ce9a811d13cca70971ae8bd6ad223206691af6897f136cb451699e0a19739d52d60cc89dfd654a320a79b2c7cd55116843239d6847b8bdc1efa29cdc0a979f0e3a8f225a16fcb7996fc8ca3e79fab55b93dc2a395117426a17af4d404151814cec80e856b777eb35085f1ad14285078803c2d76ac1d25c3f8609aeeec4adbcb64136516a2077cff4c13748c5d1fe6386782688d944e0027a2f8c9af77b79352ea5523767cbde4577877af1f8017e4db244e833e99dabd0fc70824bc3c50a38275040446a5c74406873ba0b5bfc2570a406570b424727379e5c1c39ec194a29a8aa249844bea2a078c1c0f25a400d6bada80731a00b87bb5a19325b4e79b78af0bbb2c52c3db38ae552ca972c3927291145438115a952bf2a85e78f6141e1cae8516b056e614b7015017e71d54268ab9919b7eba09d196768d99651d60a334fc443c8ccd9064a420263a68531f0e86cdc48776a3d44b4726916273a0d3002de095526257bc5e6246dcc10814d1907885207a53241a184ab7e40d87148a336a33262a4bb0826b417abcdf957f68737adee682194115348ac58814661765bb321254a874c4a3c6745cf984528c2b9726ac35441015233219e169d0ea761425c06513720881b330185b48bc271b275dc024419d8761eb23801eb704f6326f162656713acc2915a1a6f877a583c8372cc391ebcf2cb22873c5bd22c58c80640cce759b2c09b368ab4ab504c613493479b7725a18811837213f9237734577af09c4be0b3fe07ab78b712b0683060be76920cc5fc56993e56c7b46a543ad675b2d13357c008911320e0d292268768b8370c66ce757af191bb703cb5732113acb8f02618eac98693224abccea04e7b3157c03b27a3cc4f0b880dc4877ac35077c1c2d5584b971261d2c4bb767c75907827ad7370f4074721445e155a3a1624cb4aca373de6947f148ca7e2b3c93605e706eddd992 +expected_private_key = de4627135b3976b8ac07c0059bb28d09e98e3428228c1786c2e8a1d6029d93cb9eed217d09b03e9a7561af7441e4271c7b6c8c862c5a93e955a05a87b01a63d9e8a334b26e1fc0346051bf31d078860a9afe939f4a90c2a395b2b6c205475164e36a0c2930cd26e26420470b0d068e36971a978b17be984a418a3cc5c6b62ab00d6dca5657f71e08b215edfb88a5b6751eaa525dea4b0bd41430388e0cfb445da3347eaa375b86858f19c81b73a4bf88c2f807638d808f78535b9fc6c6bc0c1402e16f0b784f9a22a30e5c6c1932c2063bc558a7b2636c76d5c0cb77e6c5518b3b31d920a23b2bfff3ab93fb03b3386f670b07655989c5185d5d393631e9acee701dad333379a63efbcc636bf2b4fa05b84a375559079c5909651e481da96b01a771befc7bc407db7d9f94b819a468d443a7aa8c9b4741266875268602336c1b1160a4ce5d41c57fb915335c87a72a7345316373d921a6d0ca09606154199c4f06c244a7c568bc5d82449149f92ad3350b51d3c474e77a3a1053160570c876132434aedd92c8961b95588910102c62ae1a75479175cdd666ab85478ebb6133920e9154441f1383b0f147137614dadc823f1848fa478b1f301d3f745c647c216c741dfd3b3195483f24f1a5313cb458273ffeb559689004cd534ec1369b0c68a873651f7413037118c6f98c538dab9c1ec649ff2301a03a650cc0c138e79d15f9079a639737e840a7dc720b173bb329a34cf65418495e4df2805a491a4c96b47d452725850ca8eb3944399f9d14157fa46b76f0891525461113766dc025ee1c2e735198c3db253a2b8a566cacb81b65a1c9473c6c6da9743d780685cf83cebb441cdfdc9fba20a9ce2943759c4d08c57a0e74bb0e1888e94723169437aec19aec1a2a46c81ae4645de32bb18f3527f4dcb8221a0f7be74f3f5a8cab0609be216465819fb858232b008a855c9e6b54439a67aaffd9701967bc46a274d1d6ac1d45cee7c54cf49669e89a44ffd7b73b2a12327a85bf5938e6975b949c03ef3a1d824ccde033cb175a3356c8a998e4c69d94630a896606fc1979dcb5c172a54eea2e99d5ae331bc64d708fae45c514a2544843ca59c3c122947bc3660da7357ac0e33f55485e79eb3117d14c42ec5c56653e0dd1a4e8205fe571823098ad8d9844a25b92238063a92040c500cc0bc2b25b493e4cf69de95c87b03b773a796d13f42014847727345888eb06d9251aede24d03e292cb452a3a38a0a461c8b4f9cd9f87b09bc0ca98e62e5027595c24792f818865777a346004fe3b5b587452648263aaf688154526d591acadb74520f3627d7395ec7b71dc3c6e8414985d591a05c88b6455870c48b12c576d7b328b88795295c051ca6293b0fb4dc61ab8ad34cfb114a4c7e44ab4667d4b1948c83c28baa424b19370afe997d8b08e447a2eff376024f5ca54dc8ec0972b96f057acf5a6b0d32869fab3e1797ee2571b1620a076082c4ba6799c27b07fb073092a7a2f7aa110635cb94900e487a6664b318f54956039c57ce509ede489faabac96cb11f58c87708a8ed3408a526701bfb8507d67415fe64e7d41081ac12c21f3092af02810c604f02c4064e348b4f98f6be65d87650eb147b4694b12c461130f3126f8f71673e4643b2147ded2a7270ab360f6303dc05b03a314bb776c488318686069c3a4c91cc62435e829a6a8621ef5cf838311a4278d7f453ea5484d32f94c2e9628f5532ff93771dae106c8ac9cc80ad07d306b1da78463a08226657680e5acaba6819543cd96194aa5973d4f7b8682b13a07e7a5194c91ec95a2d671a2627710a4c78aa107b3707942d0c78f3eb2b3a58b7833fcb0fd7785e349a2f0027aff079b62a68e3f425122f7bc0a0b4c053a6696f90a67088f139b2a39f542d6439091e4c1a0824734d8b6e5e6483f48ca738c39a5bc2016c0746cfa9c1889297f5377d614acff2833ced20abed0aa6c7024221b73d53610575c6d91a262a5e834abb63cf74207437b31b1e989ecd7416b2c4e7bf807b5f8973006877e204a42774c93a1b394e885cf727b7fd286def2b4c8d5684460219c31b1b225aa08ac2ee1da3922e935e981b3b5e2c3d044a784bc965a580d3052ac48000ef6183b94b0a870e65207ba8029c0bd34a10443e5706792207fe2224da533d307c3e3077e6e1cbad064b0399abc6f445b651864f18b42e1a518fea187bdd08072e47588527c3b9a5eb244ae9e910f93c92b69faa7250bcf38e68e9c3a2b2b733b18032f37673907097a4cd65a9b396db4859312d59113e07b39746c52126ea697a69929b1b625b5ae1b809ce9a811d13cca70971ae8bd6ad223206691af6897f136cb451699e0a19739d52d60cc89dfd654a320a79b2c7cd55116843239d6847b8bdc1efa29cdc0a979f0e3a8f225a16fcb7996fc8ca3e79fab55b93dc2a395117426a17af4d404151814cec80e856b777eb35085f1ad14285078803c2d76ac1d25c3f8609aeeec4adbcb64136516a2077cff4c13748c5d1fe6386782688d944e0027a2f8c9af77b79352ea5523767cbde4577877af1f8017e4db244e833e99dabd0fc70824bc3c50a38275040446a5c74406873ba0b5bfc2570a406570b424727379e5c1c39ec194a29a8aa249844bea2a078c1c0f25a400d6bada80731a00b87bb5a19325b4e79b78af0bbb2c52c3db38ae552ca972c3927291145438115a952bf2a85e78f6141e1cae8516b056e614b7015017e71d54268ab9919b7eba09d196768d99651d60a334fc443c8ccd9064a420263a68531f0e86cdc48776a3d44b4726916273a0d3002de095526257bc5e6246dcc10814d1907885207a53241a184ab7e40d87148a336a33262a4bb0826b417abcdf957f68737adee682194115348ac58814661765bb321254a874c4a3c6745cf984528c2b9726ac35441015233219e169d0ea761425c06513720881b330185b48bc271b275dc024419d8761eb23801eb704f6326f162656713acc2915a1a6f877a583c8372cc391ebcf2cb22873c5bd22c58c80640cce759b2c09b368ab4ab504c613493479b7725a18811837213f9237734577af09c4be0b3fe07ab78b712b0683060be76920cc5fc56993e56c7b46a543ad675b2d13357c008911320e0d292268768b8370c66ce757af191bb703cb5732113acb8f02618eac98693224abccea04e7b3157c03b27a3cc4f0b880dc4877ac35077c1c2d5584b971261d2c4bb767c75907827ad7370f4074721445e155a3a1624cb4aca373de6947f148ca7e2b3c93605e706eddd992de62eff56f6b49a156d065d85eaf0aa21ca229a20fa4e1372a410ab1c4ab6e7eb28f7e7a15a005f92400ce33db073d49b53871594a88fc45e0f94207b5f0f2dc + +comment = Official test vector 70, seed: "f68fc0314dea88f66afaa76e6c9b6804b13d4876924410d1f526fac59a62e26c560b125b1d0f8b461f1fc2e351effb4f" +entropy = 3e809ec8dd0fec0d911a4e3fac20f70fbb128c5de94dc7184ca7310ae9157a98d8128601c28b1def8d393a0db283229f7c7383152a814e7cefe8ef9d9768c473 +expected_public_key = c0c8122855031d7bb0ca735042bb43b8ec6ee13061046acab9b873b13519c22678ace2b59f92aa4e8269844b1de5e3426d66c0451a8d78cc07e719033a536c2bf4c7397c64c6478be5f42a06413b8b44111ad9742b8b020711446d63cdd64490c0917557b884eb429b05dbc0df7acec032adbba55d3e104f7bf391cba28b903a07712a8da3a1a92f5682cd650a628573844032a307704fe77af738696e974181a85c5ca1c14f7546f8713701115883480be2cc686625a37b62292367b5e1546f4189592639cda4cc20974c6a87c0377d15b8ec5c84b70233b64800b79c62e536553b43263532c6bc2b726970cc58bb20f0c0bd35b317d9b66b327bbeb5175d9611985ad799ebb19ad0587aeb856c288464d983256649827de9af0fc79afa1aa5817c06d3447a25ab3eb8248167ba60a4462ed47c007107b1eecb630ac4707b837f24d26da46bcda77c4b6ed5b4118b79294744788b9a9c21b168565d9398b41edb91517493f5fb48ae5cc04fb95bb13a8fcdb8615262408ae25c2985189ba8ab99643624b70557a984011474586c357f1c7551f0bb069336fe85bb903040f48c4a111113507055f2716d37ea6a6ffa48f40584914c4738397430d65756f298aad345671077da8a4173728364a493bdca944b1879b114166cc3b8293937221257c2e78f8f1c7794eccbf0368ce34921a2ebb01e32a92255a676e77c39564b575aa5d1f9c7d1388226d636f4f12c5636b2e2f712c59ca583a811bdfa56448c013cc820f21a36c3351aec3c2c6f01243ff47bf17181ecac752108c43a97729c6b9472270fcef5a7c08665f7aa9faa55b152163e8446c1bee5082192b5eceab269ec13e7879da3768bbedc0a104c5e9496c63e9507881a4c8e758211076653f369e58b59bd7cae5b9a64772c2a84329e43f492fecabbb56514cbe70970f361e6d3c6595065f6cc668c64bae7d587fa8bbad129136d5c9b6f757a51e653d2754aa0e35307845a55b80086d5a0e86302d306b9ee1550419b495d424f701a098220897fc47333d5a1e994c8584a00d79804e4989a1cf02dcf9a0ac2ac52be1090bb149778235ff6091075a5360ce095cb705c81e3be126984f51aa471f90ff98c21d3989fd936502a8a2b38c4a2320a618df751c7099d1063495a6a5936c744a094cc1ff1b04ba8b56b0464e852bbe06176034cbf5239cd2c687facc2cd37329adbec3a77b4842aec40be902e8af72fa5805345668408cc7b6073097391921e765e4d76025fd5c78e246da268a4db21446f2cc3273861d2081daacc2cc775631927b709dc1fa8993b1e92619590c08940342219682af351495b2e0aac74786c897fab196abb609e216997c2c7b283bfefca4b1f2b1b6e98991bb32424321ab7d61e4d13c44dc93295a75f6145bf2d4b8f1a03109bd7038ef4b16fc15f44ca6ea3411b68400eb20c46c11cbb98201d705a6cf4f4b792aaae80d97a6ab830576aa651142793fa7da0b8bedd877217d54897375ec285849a79268babace85176842c601ef8c740a21c2c5321436a21cb968ecb5410e811912cb0962f713322021516535907914b86e9411d27cf164b580528768ad37b57300dc201557bb0a142d9416ed7afef52d284175dec18f24979ef5ba8eddf7caa3880aec7b42a147e75f0dd62b3d0 +expected_private_key = 84d7070ee80107976bfd1b0db6cc33f3c98178817d8460b63dc012311638aa43b253a705bc994931bab38a62c5d1dba793b8437bd600a8725d36aa898e353d6b955b80f8578f855bcee194ce2c6e4c6179ade8176e34578fb24b6d60c395b674a7a8a4c72550f83a09d24582f94125690428a4e76972b77a53e852ff3718a440b67d6521ca699e5a8c434dc47a38032129bb76bcb4c810028938fc94f1741a1fb26ec95252e259b8f9176bbad8763cb63da6f295b460cde1479be8d6b9e3c49ab77845c21c8f3f88741759461e339f76376ab81b4f07e7bf0db861a4ac5b24e09d4144ac900b43cec07f1dd2cc4f7c976eb0baa4d8637bcaa70946391109981e978ca023313b200092d26ccc823ebbaa85b8ba1680636d0be656f01769555b058af7825fa00d10a38b0a2b127a773cab406c1d4310a0882889759f20b44aecf68dd24416d9491cb523a1afb1a1ed87b28e5589f4059132603e228b185d426f49031af8fa21b11cb0f37c4557f94b2f158340921f95091128c5616f54105d47253f150ff335081d231f5b308a526b9506b03e0b5c6a88394f0c9c6e7c2b475c7508a3a8b1e0d571d1c364784cc8a7ca7ae6c2b24366a0d2865658d42a8495b24a16c9a9d8b1ea77332a1058dc292ec02c4723fa7204e93eefc24f10c4877425975cbb6142026a2aa649fc6c77e8c72dd3e5b0d9e9495a02c251b12b7ab51f6a9853bfd151a4873cab4102db62676496a8b38c8038e4c6d988880a6b2774875a5fe69693d9726af64a51d77a03e523bad8b2a6dbcea137a051d19e81059d07437e38db7891956c5b2c8abe282b5a02a5530c56a7b4b46daab256588b04344365313a3ad94a2d7aca4ba7072cb9259e2676a5c86215b24faa159bc18bce05451c69d2699a056ed3f6a7f2bc7676f11bb06cb72dc53d7ea6bafee89797b57445f3ae11262543a2882b863cdb455d5ea03eba56946dc61d798a76bdbc4ca7f2a102c518224a2091211ec4d251ccfb08aa2598065a79b8b61a56e925031a579ac5bdeef1a6e0b1381fe180db008f19e775e030052a624b91d1550fe5365260150ccaaf228acb8fe471d2c8b4b27bb57d62ae9ad9ce15a0b72ed98b8a619cfdd3a17ada37cc455d77640ea327088e9c33d4281b65dc9a27c68d27088b1f2a5fc586bb0993753e62a67bc3886048274ac267a95b42aaac3e60c2699321a79301acd350b92899a2c0ccc4703b243660a39c5901e3b6bb146c588dd3431c4a5bead8aa29e04f8fdc0d04783751707cc25ac359952abe7384f839b42d9c9982dc66a21c7fb5cb7316748423e25005d389bcd56fc498080f88cd75ec974ca9ce9f2ba995b50eca85cf09612fcbdc492ccc6d0662a59f8cc0ff3355f17424abb6c774a377b81c12b9982f60777926ba0b860123434cae8f926e902a5e633019e3c62087a1bdddf2186768baf91656d903c4f1ca88163b8dca041823bb6ee525583816cdfafccbcfe63dcae0b93c46a14fb72114194cd084c208921925e7c55ec807ee6c0a8ddb71c4ab3bd5836b7fa160009dabd1e5498d005718548324b0339ec71ac4a75c81f522dfd92b64e3676b337758490e068c3cc747bc004da30cecab9c542ffce826c0c8122855031d7bb0ca735042bb43b8ec6ee13061046acab9b873b13519c22678ace2b59f92aa4e8269844b1de5e3426d66c0451a8d78cc07e719033a536c2bf4c7397c64c6478be5f42a06413b8b44111ad9742b8b020711446d63cdd64490c0917557b884eb429b05dbc0df7acec032adbba55d3e104f7bf391cba28b903a07712a8da3a1a92f5682cd650a628573844032a307704fe77af738696e974181a85c5ca1c14f7546f8713701115883480be2cc686625a37b62292367b5e1546f4189592639cda4cc20974c6a87c0377d15b8ec5c84b70233b64800b79c62e536553b43263532c6bc2b726970cc58bb20f0c0bd35b317d9b66b327bbeb5175d9611985ad799ebb19ad0587aeb856c288464d983256649827de9af0fc79afa1aa5817c06d3447a25ab3eb8248167ba60a4462ed47c007107b1eecb630ac4707b837f24d26da46bcda77c4b6ed5b4118b79294744788b9a9c21b168565d9398b41edb91517493f5fb48ae5cc04fb95bb13a8fcdb8615262408ae25c2985189ba8ab99643624b70557a984011474586c357f1c7551f0bb069336fe85bb903040f48c4a111113507055f2716d37ea6a6ffa48f40584914c4738397430d65756f298aad345671077da8a4173728364a493bdca944b1879b114166cc3b8293937221257c2e78f8f1c7794eccbf0368ce34921a2ebb01e32a92255a676e77c39564b575aa5d1f9c7d1388226d636f4f12c5636b2e2f712c59ca583a811bdfa56448c013cc820f21a36c3351aec3c2c6f01243ff47bf17181ecac752108c43a97729c6b9472270fcef5a7c08665f7aa9faa55b152163e8446c1bee5082192b5eceab269ec13e7879da3768bbedc0a104c5e9496c63e9507881a4c8e758211076653f369e58b59bd7cae5b9a64772c2a84329e43f492fecabbb56514cbe70970f361e6d3c6595065f6cc668c64bae7d587fa8bbad129136d5c9b6f757a51e653d2754aa0e35307845a55b80086d5a0e86302d306b9ee1550419b495d424f701a098220897fc47333d5a1e994c8584a00d79804e4989a1cf02dcf9a0ac2ac52be1090bb149778235ff6091075a5360ce095cb705c81e3be126984f51aa471f90ff98c21d3989fd936502a8a2b38c4a2320a618df751c7099d1063495a6a5936c744a094cc1ff1b04ba8b56b0464e852bbe06176034cbf5239cd2c687facc2cd37329adbec3a77b4842aec40be902e8af72fa5805345668408cc7b6073097391921e765e4d76025fd5c78e246da268a4db21446f2cc3273861d2081daacc2cc775631927b709dc1fa8993b1e92619590c08940342219682af351495b2e0aac74786c897fab196abb609e216997c2c7b283bfefca4b1f2b1b6e98991bb32424321ab7d61e4d13c44dc93295a75f6145bf2d4b8f1a03109bd7038ef4b16fc15f44ca6ea3411b68400eb20c46c11cbb98201d705a6cf4f4b792aaae80d97a6ab830576aa651142793fa7da0b8bedd877217d54897375ec285849a79268babace85176842c601ef8c740a21c2c5321436a21cb968ecb5410e811912cb0962f713322021516535907914b86e9411d27cf164b580528768ad37b57300dc201557bb0a142d9416ed7afef52d284175dec18f24979ef5ba8eddf7caa3880aec7b42a147e75f0dd62b3d066f161d27dc34e1a2f4b98b14a2b221d7eae26a593bfe432487d9994cb480656d8128601c28b1def8d393a0db283229f7c7383152a814e7cefe8ef9d9768c473 + +comment = Official test vector 71, seed: "a229218b0d51f58d915df549901548fb0722f352c7470900e7e4d8399205764a319bbddbd06c00e8c5932722ee5a404d" +entropy = dbf1c465fff3d9f783bd9ee61a573715e45691147b8904439b5ffaa64f94ff7bb6d75eac6c76ced1b0a025b40a55440712ad8424672e761e9bc400d63812006f +expected_public_key = 80b3b92647a1dbec6bb883a4b2160e4dcc84c89c6adbd955cc055933d3238e325fa826acef899a555873a5b9c189117844202c65e40eaba07d9fa94d421bafe8f3a5e3346b6b93cef8b75628e4418e2885660b1d3df32d1bd50cc50757c5227928b32e0c567872e66bcb58128b15c8696710a7b33bfda469128996f6979f896b93d22910383c90d0d877a56b4b7c77c53c99128719c2995497dd36877276a25fa8b74a4947e223215a314a075585da457daaf17c41711363950ef9013a8ad95f9e07635546485a3568aa502d608321061a6999057e705c46b6691183874fa9ea38bc392f718c99ddbba59a1865a135207a00058a408b6c61772ce777456c92b28a51ce823f7524a26639ac64aa49d6903cc2b2b5b60b59643bc950230362caba6abb5ba4f6964331b1f62099cf385be3f5b43c2b8402006bb3386f5a16354e45118f0b759c3363ab4069ec2c4c15cac4e07a24fab0c682548337d157e6ba213c7801dc5a0a7045a442b4939d611469746e9da665e2e910b51c56b77a035900b25490216c0bb53e04173b3bc454a7a17d77283ee278e7d30496301480c8c1af6b3e1dca213b174f968c8a45a3ba2044bddb1492bef2af610b4ed2481ae0823df53282ba7750fbc7a764db58e3789ccaea778083c27ed101e3c75be5486249f9818a08047f97447773c7dec3ba7c59aecb5778a09cb7f1182b2e0a01c182a1bd13ab7d72af97f96f564607a9a970b35a6adff275c35c22c2444ad6e997d821c065ea49080900e766c0079b7acae7bc7cb3b31301656fd39591e0bfec2c33f05a0dd633bba463781f1c519d902342bc12bd16c1ac8305ea9769e489073297784ee45f99b248670749c728385f601fc84c1ffb298bcc447537785226bb5de712b7bdd04a0ce39226919105f06ecf6bcddb0cb5ec3b5505b5a169b05480b2587ce4934d2b232a44a6683920a81a6038c59497c9b47faa62f4f2120b15c360616e6573bcc5a23a88887b50d1a7dbaa429bb00a9f87b63829b1b641922425016c979db571ba0f1a139267bb362c68f47689715cad6636402049c2b5c616c321cba6e43c1c1a48a0e141cf3a71c0099bd183a5c0e59bca9a2fb637c1b534cb6687493eac495acc7c5fcc4898a52e44094fb1b7014a15c88e11a9e7244ee53c2d5b16708c233ed37859268501630a296d63c094f563f0e559c59453abf05a93722aed5ac0c3cc6a0be7890f8c3191677c21f70c8153ced3e2bd96a4bfdce27f86b809d8ab04dfaa837fe030f420b845d23c78cc82a2d7c440897c91c3b726b4622445899de72bfa263b93c3cceaa8500b4b0c240046387b25bd98b5901aa670180a2a8b27de424f4d804a68dca2e044430d701b67e9b4af33c60fc54bb3a94a8b8604fa5882a401a5647b8dfbb20878e4b4094136bd4b5bc14288463c2e87f0cdf6d9497fdb5f42f26d2f9ca2e048a757a59b440c2c5642232e714d11fba959ab9ac52126bf689864ac98cbd1a633baa3ecf75c09c4c6878994cdcb3e882798ea02aeaf39915dcbcebfe2ba14e620f53b3d83ab58bbf99509033db99b0acbac29fb4674c95cb94982ac398c2771a8ab6da1ce9b0771e3d5c2e7655b4bb99ebbb57adbc7a540f228114639b811c5c1d3b614daf84266bc4c312fa43c4109dafde79000ab39 +expected_private_key = 47318b2cc6a9d8bc6ebe7c12489017c03214325b61a2a8541fb783c448c3a31c1d82ba7906b09e3512af8d00d0706a3d391281f0315044c9c4f92b0ad72c60e18637577b942a442589cbb466ac344438750b86cc86b97d16339a9db0365e6696b183041543b031c9220e82bfb89c21a5b0a0d301109568b1c00b2b878c9284375949c88394f141abc188ef7607cb8151bae654a7b7bfd785b44bbbb5c5a68ca5f96bfe5abf179cb83a58aee518202c9119c80081beb38caff81f5ea51811f13be9491f431b127783227bf9b691031145d6a144213fb4f1c89c38c00c81abf075c4415586bdf28b946380c948b94d7a0c3a793100842230663f4eda9174dc7214884e0f552a50d16dfd0a5ddfa7920b0aa50437bfc735a546f5b0f4bb22e174b061bc80e91428547576b6205490ca3934c9b15fcb69611a1639974478800b2cba3d5243a0e2762be2f87035295fff40b56be37ddc71915434c4af6472c1e5c519506e691703c49c715b50b360a5c2fcdb79f59c7ade27380f9905eb7aa6f5042c6a32bae657c699eb85a53395c0303e87e89800131f96969bf45b3f574a40ed813268603a24f1c3180607814914775350b88a1fa7e1034c9cb155879668950ad5950803abc0cc58bdfc408fc1f2bf7d3a2972aa66b58844c048150c0b8c89aca3bd3269474875bf10a94d2b9ea3687ab9547ea59731b73a8849ac7b7c4b946d70b8b87c56b81b77024503ba87485ba3655f669770410e89fc84925b87c008c3cc13c7b9447d82fc2932a1c641230725a422b6219d9bdb5ceef17e121132e6615075e0b26cf71e91a1593210a09507214716a3405b2503ca5f29d4479914cd10b3457aa62a6bb71bd08736e1519e69f709b8c8439b4441bbab5d0911bc6737ca742747ca592e5ed734a8aa1b77450a9d4188e05422bd9240e285865d530e718c6f1a816153cc27414446bba8129a1716171aa60ae086ad09951c2b9aa2744e0153cbd4ec9d1736908cd78e7cd75d0333434715c517633ee6603f7993083724a596069f3270c071b6bab955844a081a896096f76059b9738d819ca3b6588d5f578058d28d2d0710b2bb2e307a5f9e18533713c41e172a99614a97c00ac0a83a25526c399cc9fa9b74cc4774830c8e754231b04274c90c526dea7fe3d203688114e7a90d3ac02ae69a139649b754581bb56825a215c3ba282a26c036e5d5785c07c62956b612fc37fb73a7c6ebb506b998d54979ff29781cd09ccb64993299745b34b6d7f897c0e05e1a6966e6757dbee29af2eacbbb7701dbc39294db584c7c3a7841112258951d88145cf73404a17adb8cc4d11788225557a83b652f95053e8507093b2a8b00ce77e7bbbe83233dc18880f2274472c05e646b90952fe92440d164092a058d69c96869d8a83377a2da92c2d668607dec3cbefc6242b49a9da97c19c2067722c8d309cb898593b08b5d8138bf2fd1c59081614f764acb392d7feb205a85270dfc1129929cf7b53d41031c92944972b8bc9a9c494ab384996647e177a87a101c45c747660aa4a38088a5f7919ca46dad338576463a1c1425a6c4409e2ba8217827ae83bed4e6c80ab528a6bbc1ad58c868b995d9f72c77e84173c9ca80b3b92647a1dbec6bb883a4b2160e4dcc84c89c6adbd955cc055933d3238e325fa826acef899a555873a5b9c189117844202c65e40eaba07d9fa94d421bafe8f3a5e3346b6b93cef8b75628e4418e2885660b1d3df32d1bd50cc50757c5227928b32e0c567872e66bcb58128b15c8696710a7b33bfda469128996f6979f896b93d22910383c90d0d877a56b4b7c77c53c99128719c2995497dd36877276a25fa8b74a4947e223215a314a075585da457daaf17c41711363950ef9013a8ad95f9e07635546485a3568aa502d608321061a6999057e705c46b6691183874fa9ea38bc392f718c99ddbba59a1865a135207a00058a408b6c61772ce777456c92b28a51ce823f7524a26639ac64aa49d6903cc2b2b5b60b59643bc950230362caba6abb5ba4f6964331b1f62099cf385be3f5b43c2b8402006bb3386f5a16354e45118f0b759c3363ab4069ec2c4c15cac4e07a24fab0c682548337d157e6ba213c7801dc5a0a7045a442b4939d611469746e9da665e2e910b51c56b77a035900b25490216c0bb53e04173b3bc454a7a17d77283ee278e7d30496301480c8c1af6b3e1dca213b174f968c8a45a3ba2044bddb1492bef2af610b4ed2481ae0823df53282ba7750fbc7a764db58e3789ccaea778083c27ed101e3c75be5486249f9818a08047f97447773c7dec3ba7c59aecb5778a09cb7f1182b2e0a01c182a1bd13ab7d72af97f96f564607a9a970b35a6adff275c35c22c2444ad6e997d821c065ea49080900e766c0079b7acae7bc7cb3b31301656fd39591e0bfec2c33f05a0dd633bba463781f1c519d902342bc12bd16c1ac8305ea9769e489073297784ee45f99b248670749c728385f601fc84c1ffb298bcc447537785226bb5de712b7bdd04a0ce39226919105f06ecf6bcddb0cb5ec3b5505b5a169b05480b2587ce4934d2b232a44a6683920a81a6038c59497c9b47faa62f4f2120b15c360616e6573bcc5a23a88887b50d1a7dbaa429bb00a9f87b63829b1b641922425016c979db571ba0f1a139267bb362c68f47689715cad6636402049c2b5c616c321cba6e43c1c1a48a0e141cf3a71c0099bd183a5c0e59bca9a2fb637c1b534cb6687493eac495acc7c5fcc4898a52e44094fb1b7014a15c88e11a9e7244ee53c2d5b16708c233ed37859268501630a296d63c094f563f0e559c59453abf05a93722aed5ac0c3cc6a0be7890f8c3191677c21f70c8153ced3e2bd96a4bfdce27f86b809d8ab04dfaa837fe030f420b845d23c78cc82a2d7c440897c91c3b726b4622445899de72bfa263b93c3cceaa8500b4b0c240046387b25bd98b5901aa670180a2a8b27de424f4d804a68dca2e044430d701b67e9b4af33c60fc54bb3a94a8b8604fa5882a401a5647b8dfbb20878e4b4094136bd4b5bc14288463c2e87f0cdf6d9497fdb5f42f26d2f9ca2e048a757a59b440c2c5642232e714d11fba959ab9ac52126bf689864ac98cbd1a633baa3ecf75c09c4c6878994cdcb3e882798ea02aeaf39915dcbcebfe2ba14e620f53b3d83ab58bbf99509033db99b0acbac29fb4674c95cb94982ac398c2771a8ab6da1ce9b0771e3d5c2e7655b4bb99ebbb57adbc7a540f228114639b811c5c1d3b614daf84266bc4c312fa43c4109dafde79000ab397537e68ccf14e8b7e57090d8f648529dc461ca3950288879e88116acaf57b4a2b6d75eac6c76ced1b0a025b40a55440712ad8424672e761e9bc400d63812006f + +comment = Official test vector 72, seed: "6960f21c7350dcf41b4770c551dc8692d8ba2c0b6e162c589166ff22e7a1ac0f94c2f48504a5f7eb0da094df427bc98a" +entropy = 1f7cfd2b70863154e8a69d1758532e86c20cfc763d67c758bd10a13b24e759b5273b38bddc18488024ec90e62a4110129a42a16d2a93c45439888e76008604c6 +expected_public_key = 03a20a0337040adab8bd449e0beaa93b07512485ba33f291af1a44540bd04af4a3dd2a09f6454d7304d0944674a580551061ba5f88217aa57c10640dc1a97396f138c1a32cf40b0bd9286f88c4087f9084a9012d248c63efec072d77ab0e736719a23a913b7b8b62aaa5bb40be97cbbc1c29edb283c776aeb9b032e2c2691aec9ce89617b84b09712b40e2b713e566c714e0baa75957d6ba5062ba76471357252b72ac66ba97e10921ca2313a232a6ba908dea13645b5617938381fbcd748a11f61cbcb615c458d056f0d55a449c4f544c6673322ef106010cf139d1c586aed5a5dc210fff7a60f3138c34a4244398b692c567ade5beb55c1edcfcbd93183e1ed0c2aff5bdab67b51e39a58bdb8388d67cc1ec0d7313b7ec8a56cf3c9b73214c4ada14592794749b6834e9b81a2ba47de929e9ac7856b56549f40f38f0784ba0cdfc195952d3155222bceaba0e3c233ff7e19a65822437217a42721f9c060ac2cbb9c4e6bfa9fc3014d8add7b4bdf78291423511f9874a07e06a82b6369fe349e08333c7f56b7b7b808a0b4e888a95799a2df4873944cc43eb958b1508c66e571268e79a69178793e7a4d430507e1259d01c86f999c16772cfb7b4b330114ff55a51ee5407bce95a6d27875a91773420c24f8734b3023e9db777819ca2163c431de46f22f38398d46ee352b815b6b07e1a242b01a4230b59ea8c7b0c3c3dbe2b7c77b4c860660daa04c452e391c710722c67bc0632c072fc1e5296a2e70932d4d38efbb96bd636bb41260a7bf27cf5e71ce3708e6884cf0b8584adc3cd3b5c5ee1003a13731704472a203c8f9b49534309bf2b60cc3e2448e02b5a46d889ffd78fbe722a709a2d5b5c8a7d805bcff44052c553cb990ad016079bd87db7573eb1d431d1e549edc8ab56a0bf52999f32555e8ef2b03182bd8d812cca638055a73b548c8b432a2a7d4a6a074aa212d50362d1382747ca8dbb95e03945d95b995d6346d7db47b24b86e4f774f3767db7996335b789733cb251f9b1edd04f8f8cb7af4c947af224dfe0af6a42c7b65120b9c18abe9161d88cc5c4780fd74403cd177f7160281884a11cf686f0f523f39cb7ad39b780f13a8ee83c0d646f9d85babeb306d53a7df53ab00b5a1aa8c215914a48222940fee10d1939ba5c93617690cae113a59de071c969436b3771fc50b2f4aa641a4c852922380a420fcdfccb81816f4b474a2ab293a4d97b2b280cef031148ea7e4c9c0db7e7cd0e50b203a6b7519c3cbc8062c9b60b8b81cd956463b8180c67f34be4868e3ba94b9f0226d9f010d9ec5ef0bb62c865c807184b96526d94170af9474bbc100530f7c77e46b98c2aa41f92a48d8027c855c7f84684389bcc8e7c67164a204bc5c0c90828faa439fba235b6f20785cc8ef4c090a708bfbbe26e1933886cc96ad9b4562a119d4c66589c85bf0e55606886206734142d432c1b032e0aa93ee3731f069a8cc069a03b95a8ab873b447a04ead3a32be3054af834882bcc581712be18539b805577e50ff5d982c98c0b0dfccc96a4c6429281068c8429997dc17a6600f0736b8453e3d77636faa8d0ca89f9193bb34819ca1117ea368ea23198ee11345c613993ec052992954099bb9a086057df0c5465326e1932aa50da74aa8435d9294fd6b7c05a153f30 +expected_private_key = cd28aa8c74142a0508c2534d5adc64284806bb2c653bb9783adc640e9945c253af86f57c19b42c6697ac85d1bfa46b5231559c11f5a0da9b2bf43c40001d4e6c00b81237343e15a41da190cf8940b641a4b42b72d9cc8bac681369dc07d80aa62f135b0f956355a4a68e575f34393c42bccea68a7a63c269a5821557299ff63b9f0161368f6084132c8b56984f4d1626d7436dae2596e1b24a86562374b066d2483a1b354fff9766845480ff396f6ad089b724b0f15a34c2288deb05a8418909803cbfe2f3c63c30056f358fab798f4e385eb0e35ed0c38ade7382787a2502d117ad0bc6cc0a4746aaad23345f10074b21970c18eacc898472766b2313472dd3348c82f69b7d961cd35a8c61984e7ca20ae6382f04a977a72b532a1395707cbb7cd595e0da0202498058e59f22e0c340c438851674e3ab1e0d872fda3baa7f87b67f449e6bb461bdf1cd771475d5b59facc30181599ddac8ce68dc2de5741b21422fdd512b39d9633adb202af3941e323c9326297cb58086c3282f722c4d50b94b32153ff30b91f07a811a9d9e07b7667846806b6f7071ae29323156b668f831a9f79ab7949cb363dcc8d151349db4b5ec1266e7f5af98105c95c0a4d47648aeeb01fbe1113948b407fcbe199bc2cdba40257745d765c6a0766012f19df41a770e96cc95d3cbc70549f7e61914a73dc71062f2a3a377ec26ded59e0cc85b11a74f43c3237c7561cb7046c0e660b5bb0ba0634ff2b211438a9b9b906f241b04b2439f29a3cf0ad9128d683f0c2c26ca050978cc179872b1664a751458c072106fdfa07d97105188278268b0481018782f361d08555fe5799a0654398285b378f7a9f143ce20673184c75e8b662085899812912fb8a60485921b2f7b3feab95cb7aa327d8b9dbcf7c7256a131270b731e33f8f555cf4f8b7a1e6aabb4c83d2938b7b21beb1c3b3cb3bc08bf52fc1f5715fa89ef8e205d85862f6a2cf420592aa24568fa0b8dcbb90d0b654c7c82c7411b6c3e219f46c352aa034c4fa0aa4fc47daac204b351497727b96714359a66466f6c4cc2b83bf6b87785367c7116489d6c5feb975e41c4bbb2a3d8fda920021c523227a438374d96032f62c41b17422584ab5880475cdda8b7f4844e5420c25d97235b0acf71012adab59298bc80052aaf1807e8015695d92184741bad318ba9ae27c306a2e42c80512534963b70b9d0b7f5ae70326c33e7d43249e8c9ce386947c167c8f33c88947244989c45b4858203249fa5a136734153cd94f1ad467b5043f7ed77f58d34490d1b5f9e323f3e2146011921b8a9f94e419bb85ad965443e7f4a73534457be43ee5f677a63a7738762b799600fa0b9cd328ae4cf507c1d9845eda77c30bb7c39c618afb402cd9b016f0092cb61e8be13a18925ca122a142409b8dc637a364093cd76925a194aeda21c61709255ba2de330693b888a6c2c6f0c39fa5b4c7fcfbcc198b3253c0abc5ab5edfb438ed3a82b72b5f54a39d21c37879480c4a648f182a94ea566c598ba4cf697140a20fdf4cabbc540b80e8664216a6e880553899964a7b239d00c68e720706512cd2a58b9c49bc0acb90283b506ca196f7855ed69ab21f059a11fa3fc4670d03a20a0337040adab8bd449e0beaa93b07512485ba33f291af1a44540bd04af4a3dd2a09f6454d7304d0944674a580551061ba5f88217aa57c10640dc1a97396f138c1a32cf40b0bd9286f88c4087f9084a9012d248c63efec072d77ab0e736719a23a913b7b8b62aaa5bb40be97cbbc1c29edb283c776aeb9b032e2c2691aec9ce89617b84b09712b40e2b713e566c714e0baa75957d6ba5062ba76471357252b72ac66ba97e10921ca2313a232a6ba908dea13645b5617938381fbcd748a11f61cbcb615c458d056f0d55a449c4f544c6673322ef106010cf139d1c586aed5a5dc210fff7a60f3138c34a4244398b692c567ade5beb55c1edcfcbd93183e1ed0c2aff5bdab67b51e39a58bdb8388d67cc1ec0d7313b7ec8a56cf3c9b73214c4ada14592794749b6834e9b81a2ba47de929e9ac7856b56549f40f38f0784ba0cdfc195952d3155222bceaba0e3c233ff7e19a65822437217a42721f9c060ac2cbb9c4e6bfa9fc3014d8add7b4bdf78291423511f9874a07e06a82b6369fe349e08333c7f56b7b7b808a0b4e888a95799a2df4873944cc43eb958b1508c66e571268e79a69178793e7a4d430507e1259d01c86f999c16772cfb7b4b330114ff55a51ee5407bce95a6d27875a91773420c24f8734b3023e9db777819ca2163c431de46f22f38398d46ee352b815b6b07e1a242b01a4230b59ea8c7b0c3c3dbe2b7c77b4c860660daa04c452e391c710722c67bc0632c072fc1e5296a2e70932d4d38efbb96bd636bb41260a7bf27cf5e71ce3708e6884cf0b8584adc3cd3b5c5ee1003a13731704472a203c8f9b49534309bf2b60cc3e2448e02b5a46d889ffd78fbe722a709a2d5b5c8a7d805bcff44052c553cb990ad016079bd87db7573eb1d431d1e549edc8ab56a0bf52999f32555e8ef2b03182bd8d812cca638055a73b548c8b432a2a7d4a6a074aa212d50362d1382747ca8dbb95e03945d95b995d6346d7db47b24b86e4f774f3767db7996335b789733cb251f9b1edd04f8f8cb7af4c947af224dfe0af6a42c7b65120b9c18abe9161d88cc5c4780fd74403cd177f7160281884a11cf686f0f523f39cb7ad39b780f13a8ee83c0d646f9d85babeb306d53a7df53ab00b5a1aa8c215914a48222940fee10d1939ba5c93617690cae113a59de071c969436b3771fc50b2f4aa641a4c852922380a420fcdfccb81816f4b474a2ab293a4d97b2b280cef031148ea7e4c9c0db7e7cd0e50b203a6b7519c3cbc8062c9b60b8b81cd956463b8180c67f34be4868e3ba94b9f0226d9f010d9ec5ef0bb62c865c807184b96526d94170af9474bbc100530f7c77e46b98c2aa41f92a48d8027c855c7f84684389bcc8e7c67164a204bc5c0c90828faa439fba235b6f20785cc8ef4c090a708bfbbe26e1933886cc96ad9b4562a119d4c66589c85bf0e55606886206734142d432c1b032e0aa93ee3731f069a8cc069a03b95a8ab873b447a04ead3a32be3054af834882bcc581712be18539b805577e50ff5d982c98c0b0dfccc96a4c6429281068c8429997dc17a6600f0736b8453e3d77636faa8d0ca89f9193bb34819ca1117ea368ea23198ee11345c613993ec052992954099bb9a086057df0c5465326e1932aa50da74aa8435d9294fd6b7c05a153f3082f68b15681cca5c2852c18d6e88bcb102a059c1d21936582adb71790cc0a335273b38bddc18488024ec90e62a4110129a42a16d2a93c45439888e76008604c6 + +comment = Official test vector 73, seed: "53df46012cad4a745b7a3c06e18ca95e0b839fd8161e3025749a0887549eb0ed6a44eeea08bd6060d6509dbf7e9dc864" +entropy = 3a19577908efd37697b8edc7fdaf47d1bd3ad01a1b77faf794bee5b9c3192a6fa3729672816f3eba84c9638a79676eeac0f22c8a48e0c5d50a26ff0844c66b99 +expected_public_key = 611ba36d3a65c0d17cb22b7f3a682b593595b1c682d521a16dd621a05a7d22c9b2d29c9bb75cc5a8567ed3a545bad39e2c85cec0f83f37c6aaf101bec273bca5d606a5e76fdc183175a233c93373e956580a522badd22d97d71199c1a7b4149e652686eda541e69187a2abb68f89ae9492443547cfde7b5d609b4835911d154c33e49248c4cbb244acbf03e93e52e71ed87a75cbc43c3f505422c1ac31c014e82009d4b13bf2cb7dab16896a320fe6c0476f37767ccccd80850dc94b410b983fbbcb484dd09b44a817fd95686106c710d983cd2bbc11dc4ae59091a401a6941bc704142c792c407f7524ede1a71a726e2f921b0626768307c31dab514a783febd67b50e93479d2c7d1787142f591607b7a5626a718d502b37a6f5b8766e8175c6ef276934a12ac1107aa3362840513d3f5c02042ae681181dcab30f6810389db07c3fa1790345e786031e3196bcc01c22bd064b2f9c439d7b7a7b7633232aaa4d88e0288cdb791049b8a8c64883637098def7c88fbcb974554af0f3c51c70a758176215871227869766452871602093d6949e1d078691537d9d7030b36926147aff8151cfba202c0364795122d1d748a18289cdb33982900b38ef9aaa5d10d146985c757ce5cf82ae0a2489e0c00c83550d455a03fc885dc7a5ebcd71529ecb0ca13ce1259186f9b0ceb4b90789aca0762c8bee063780801ce365540f440b0aa0128103ae0f5b4a5d9b98ff3aec5793e8fd046a7e15b517c5c4164105e87c593db19b85792b6c705e615c4d95c38bc4bab4f30737a20241a3189eb38865c6b60f6341dfb931626e729ce39313e122687862bced934ccf88411730fd066be831542abc5b15a1cb2d3f0aeace904cb419754d9a5cfa35d72e570c8d3b0bde5a5b18201f14cca3e3564c16769757a2daa89b03dd993ec8b7c9fcc63098478af1890346a8824a4b142f88759f382292ac404f436bd21282d6a3242417b36211c84b75f388151f087186cfc01e59383e8218039db15da50120aa1c5489743bc42335a774f8494a4244acb6677b22a46224df7bdd8a9292ae58e07f3068cd975abb51e44631172535e52c910b48748a190c50d877903a4c7b9f4b18993669d254ef566058528a157428111d43d360ab54343adebc2a3636720f1e0c8ccfcb0fc3b71b55353c2682946408cad171fb711cf0b3ab561ba6722647acee4b8daf0aee2c43352609dc617549841adac54adfd3319efc715dd917ab2b887dfeb49cbb6323acb566e43638a5c9b6f865da4157cc3f866066a551230a335510f55733ca4f3a6329aa0830894e06a05ee578c45b3117fd07d62718a9842ced5f49710f7b15741ba5b06298c550b96bc6fdb0561926240faf09012e2cb49c66868e27ea318aaac50bf882c5bb8e674381a96645b7a7dfa936201933c31955e24912e436528027b39f74a909aa5ef4653cc23c5e448be6f81088fd322fbb1779be52ad60005c2f57241932ea3b435c47a39e6e0477b989c00bd5ea71ba671d8a37dc64d36216ccebb14e6dc7420c362926b555598b92f6a78061423a4cc8961d57733982fb8c78573c35584185fed801ea674a7fda06008517b42d1a45fcc50416883d0963d3b744edb5e8548c3b3dc474f7843c49a8dbfc939c41af7f8ec6c8354aeb0c67e05eae0 +expected_private_key = 8dc4a33d0a013d102a7ed6a5303693669033816bce0c8a83594695531999647a48f6708c65220be4d9a60f013201a36ee053796356b26e3617126c3d0a354d2fbb82312a372ffa37b939a7bac8ad0e127f18eabc771462fc57b542a73bb7067fde6bcffe4982e6db3394264d34dab222318856ba8b6919c5a0a667866c0d2166b69ae04432c044f289bfd7255542cc7946b82c2db388c8b656f234a3b607c2f6611acc3a5a12c8111e42138abca9b8dba79921a177682c2ad1138b133636951f5aa77a52b7554943af52f7b53d0b84ecf44fd77018f7062e564c5e58753994724242d6b3a8f8a66df518f7e13a0a5c1c4b253dce12ae197342f5d72c296498bc9888ec347f528958aa689c8ddb81870184c9e2254f918b7465354826870300790044165216c8bc279ae93854381c28cb438bce444b2258afc3a84cd4f91de8373f877b30137c4ce4664e4d330bf763b344489604e97f4c9c24ffc226d07c5824ccabe38cae22487ea2ea0e89920f304bb911b401f45735089512dca2298ea1a57f643cd7524a3d6c9f055b25eaa62fbda318a7b8c8dc9c5cea953ad5170c0452a7bc04469987712d0522256a1ec52961561175c32abe93dc5ed37289b9d4cbd3966911fab85fe47b3c68692cf5a845286baef91493e15c6d23437bf7517ec5cf609c8628d82ff7cacb54d4a5ead25c85f59ab51151f9350247782459b598a2089a85f2c9bf66797e863a4ca0732268a4e40c57009d0c7d1ab1ff46b78e350dbfc19fcae823bcc040183a27182abde00a966a6075e68c011aa62eef913024ccc85b460098facc9c4c81d17c577bc009b8f9416d225d156c4e75b84691a90948d31883b1b2ab3635dc357ae867b2496983cf9595423c541e3c17947042b3d141ef825c99862302ba911c67619434b3f9cc489e8c8abae92af1ec3045c895edb41f745aa1f3d1a625e47eabb49432129a5608571431c4890c8fa5769563b8b1f9ba3c1b77b034f568038865c90304a4f79f65f74c17fab9e6b52236cb636ef5b686271f955a9e889b7a1ea1a010828aea1a838de1723f0149cf172f48890161c34039e99b36185f068b5707fa476d650bf149479b8c928f93089a4b941047b5b528135685797e0b9e65f595d9016a614393cfd630c6a217d0a03091853f606b238ee13c92c2b5d9e19b2c57638ce82a3d767639e115838b8eeaa5a47b7b686ea05cc088abd47a10ae593ae39a07f55cb4c1347acaf7cf59422182749e6aec39d62ccb876094ba3cc0b871c57a03a00ad67c5c1c6ef911c6dc36b13cab713be1a6610caa46db4ebb86b76572a0bd60adf163b325c89b506c33cc343c37a2bca7cacabd90494f044b550778677c2ebee76e03622705556b509c204087b5c5e5936c0153857691c3149521b800b76c43195897067529a4a87d68e974ed57178b7980eee227e4150af1234025757eaa3b645064202d632eaea3943b40cb10922bf569ab2c44867c411bc8240d110134d78143d3d44b450056be166b57921fe64a44f80968a1941d91a971e10c347aba369702b1ed542984f28b6254bf61d94b69f015b0e32b05e8897502238fd21d87978eaad45bf5997654b40a903319ca64095c9297611ba36d3a65c0d17cb22b7f3a682b593595b1c682d521a16dd621a05a7d22c9b2d29c9bb75cc5a8567ed3a545bad39e2c85cec0f83f37c6aaf101bec273bca5d606a5e76fdc183175a233c93373e956580a522badd22d97d71199c1a7b4149e652686eda541e69187a2abb68f89ae9492443547cfde7b5d609b4835911d154c33e49248c4cbb244acbf03e93e52e71ed87a75cbc43c3f505422c1ac31c014e82009d4b13bf2cb7dab16896a320fe6c0476f37767ccccd80850dc94b410b983fbbcb484dd09b44a817fd95686106c710d983cd2bbc11dc4ae59091a401a6941bc704142c792c407f7524ede1a71a726e2f921b0626768307c31dab514a783febd67b50e93479d2c7d1787142f591607b7a5626a718d502b37a6f5b8766e8175c6ef276934a12ac1107aa3362840513d3f5c02042ae681181dcab30f6810389db07c3fa1790345e786031e3196bcc01c22bd064b2f9c439d7b7a7b7633232aaa4d88e0288cdb791049b8a8c64883637098def7c88fbcb974554af0f3c51c70a758176215871227869766452871602093d6949e1d078691537d9d7030b36926147aff8151cfba202c0364795122d1d748a18289cdb33982900b38ef9aaa5d10d146985c757ce5cf82ae0a2489e0c00c83550d455a03fc885dc7a5ebcd71529ecb0ca13ce1259186f9b0ceb4b90789aca0762c8bee063780801ce365540f440b0aa0128103ae0f5b4a5d9b98ff3aec5793e8fd046a7e15b517c5c4164105e87c593db19b85792b6c705e615c4d95c38bc4bab4f30737a20241a3189eb38865c6b60f6341dfb931626e729ce39313e122687862bced934ccf88411730fd066be831542abc5b15a1cb2d3f0aeace904cb419754d9a5cfa35d72e570c8d3b0bde5a5b18201f14cca3e3564c16769757a2daa89b03dd993ec8b7c9fcc63098478af1890346a8824a4b142f88759f382292ac404f436bd21282d6a3242417b36211c84b75f388151f087186cfc01e59383e8218039db15da50120aa1c5489743bc42335a774f8494a4244acb6677b22a46224df7bdd8a9292ae58e07f3068cd975abb51e44631172535e52c910b48748a190c50d877903a4c7b9f4b18993669d254ef566058528a157428111d43d360ab54343adebc2a3636720f1e0c8ccfcb0fc3b71b55353c2682946408cad171fb711cf0b3ab561ba6722647acee4b8daf0aee2c43352609dc617549841adac54adfd3319efc715dd917ab2b887dfeb49cbb6323acb566e43638a5c9b6f865da4157cc3f866066a551230a335510f55733ca4f3a6329aa0830894e06a05ee578c45b3117fd07d62718a9842ced5f49710f7b15741ba5b06298c550b96bc6fdb0561926240faf09012e2cb49c66868e27ea318aaac50bf882c5bb8e674381a96645b7a7dfa936201933c31955e24912e436528027b39f74a909aa5ef4653cc23c5e448be6f81088fd322fbb1779be52ad60005c2f57241932ea3b435c47a39e6e0477b989c00bd5ea71ba671d8a37dc64d36216ccebb14e6dc7420c362926b555598b92f6a78061423a4cc8961d57733982fb8c78573c35584185fed801ea674a7fda06008517b42d1a45fcc50416883d0963d3b744edb5e8548c3b3dc474f7843c49a8dbfc939c41af7f8ec6c8354aeb0c67e05eae0104fbf09445794c0ea0654f5caf70ee09d51c8386d4e1f467b10633c710ac2a4a3729672816f3eba84c9638a79676eeac0f22c8a48e0c5d50a26ff0844c66b99 + +comment = Official test vector 74, seed: "deb963f8b1d8fbdf499d564ba8d2d47915bb402da02f17031b37b4039a842afb9b7e48f37200605992bd2429427a7a4e" +entropy = ae0f65e29f38804a6759f70f4d01e2aaff7fe1c91ebc4f892dd0de3ab2e68ea5e03ff73e02a217659f53d8c47556bf3d8c94040f630d63605e2d0f923579370c +expected_public_key = db0a138c9442fd3a7580e68eec01077d31525465babef901806363a2d664ef8c1908a30491e336e27b0f8690ac71c30adb145805a15fc654ab8982565eaa96fecb93a2ec7ebb697652965fc5ab837f6b7a20e224e4361977b71c694a88e5252f608cac97e97dd7c80a5ad10d62681b57162269f7b8d812af039226ce2a7930e43007c0b3ec6a4cdb3897ee85796d051cb053881e1b9706a572ccc75d0ef32f92610c40db4553824f1a352fefd979a310124b9456a9106367ec6a50db6fe0b057fdbb00a46028c0d6a638bb7f2139ca6df68f014c4e1e0b79670869353912b5d67edd4b77c70c067aa76d174cced6c7a901c65737082276188cffe28bcfaa2604447e68d490c0f11cd22b8c351c2d63e7a01ee460bc408e174bc4a6cb023492c6eed42f5d85244ec883b1b49b8e3584f27835f21b6b2e6060e0671f289771d124168e196edacc1aba26cec9e09fe7367f46893c2ea3677caa3005e34e722608a3b64a3b987289952dd695a82de89b9034390355c5e33546eb833f602cb9324c095bb4cf66c05fa0ab98d69bbdcff155c3169f3df2a575901724b678fb080b67f32240ab8f0198cb43176f6ffc93fa602748d591f0b2acb9aa67a8d8b15c27140c320b0ee040e737077a8c9fd6a20dcb865ff51c41808757b0ca750c502a356b1c7d821f1bf804ae2b337819c5ea89542e079045c887ba6550e4f05693f5c7012424d37a17e2294669c0538ce69a1f1c1f121784e3c3537424bbc4d73cf1a685f03a24c4ba8fd603b328d2a07fa2b714dc1eed17693727732ec7be2b02c0614caf3d42b222061ddcd758a0674133e6cfc5362f855b717695acdb971aaf16320690606c1c42238856d757b5d610bd64427f04c97abe1bc6b0185116cbbb2dca28b5d7a9aee205dbd37e92bb36311c8936d958aa1744ca67332a600d8c719377273c7fb0029f27c75817746e1058dd196de71b0e4302682da21b4ec1beca3cbdf690509573959d816cf5fa034ce01d6a4ac477e3bfea75732678aea6c0a5401c623dc225c7a9a7ae6a572f738387181913cc71b9379a5a2bbdc45773c6a1167fe756e13731f47226bc678331312b99428b07b2122b2b9dc86b01c5f090ff632fa83b598863c0b42623549ca831f66bdbbbb1d4747d56a97dcef9c81766a3d90043c1a99ce5e81105e9113043342a539de446a7c5f9c4b46a8cadec388fbb8bca527d90a56c649200cb2a7f968611934014f9a7b6faf3015bf6494ef72fba0c7ba40c499357acc96562c65b9ca7c53231045e35771947172118eaa02cd95f7137c93e2159d9389607c3011a76363560a97df950b0329258b0126c7bc10e4081ce46b7c7b0af0752b038386e9afa2d0a7543d85ab909376b618c0a2d33875d264b76941430e81c48832f43270160176ed5938492a06cc08392237caa8487abd3c83019000bb6671784109c7bc4c2a0362a5b5122e620aba511c49ca42d75091b3b1abaad9b8162bc27f182ae310872e789cf05f6c949598c41c3b73a1a9cc0808e68f95c8ad8392f021f77c79618685db2fb1d04a9a8acb8441ccc764aa3b191736f5a24ae31c23428390c1c22c6a6052664db63b94960a433584036c05e031a07823a03ca153015fb2665c77d8fcc529f21afde0d4f32cbfa399f2973d812f516c86b +expected_private_key = 38bbb649e7520a59ac57783e32a5022489365713cce30171ab46ab219b7e81369af44bab6f5badcf613e963938a0829ace625bd8594ed3c0981c5963f68874aa87685599041c4c296b4cc181e57667d499b2f961f44773ca958193e97988d816d702078c0147e41390f503921f139384d75efc91cd08544536b4c9c09bcc2914a807e090d98b5c07c1a4a0c16ff0eab557e5ccc1871ba1a36ff66b1acd113facd6bd16053f22cc85634a3d56e564e30862aa1409d48aaf92643b62009f8e206c2c8bb7f357b9432a8474349c3e1679f1d154cfd4a373665a86c481b9c3163308cf3a1a265a6313d0068ba2181ae5e5a1114995005c8fb574c4a7da80562953348a80bc23cd90c37a2d166ee4e895f2a429aff3c9eeeb869ec9982d367c5809396987a2efe93dfda2cf45e774cc3541bfe655a7280af9b7601fa5183ab62682465fdb273ab435355b84563047bc4c6204aec310d4b91e8b849182c16a57605a6f5690d3804d8857379e11b324977f30b461954a17cb16c4dd93761224a47f4c680373c51de251cb69a2c737cbb1f76d7278033ae86480c7776cc7ca02393f333b6cc00c200ae58922756d3664a30d7b262302672c27a7496746f8f56797726340c734473522fa880819d76a004a480f48b74f7c6ee1998741d39fec12759670b4e8057aedc67950b929e200526ba5a27e0bbb67570bae100b77d525af70b7b6143a7419a35273c14b492e1e42c5b5918a62f3c829a50c1fd8715b030cec454c90c72e6509ab1936ae7490c6b62a6720a840aa714f7b6b0134335c75c44a421598b790631e2ca497e256be08910b69c01997bcd20591d1967ef5ec5c035b0c1f19a01bc0103de6cafda45db70950cf551da2442741eb7233b36396c124c6365a83b66d9cc896ff448f54194fa05267b8154895173075039143dcc58062cbbb1946a917abb184788052920d1428c856bafb3461a463627ec7430671ce75bc2adc95622eb2925a582a15e487787389bcf14dfd84801a37bc39136cc1a49cab7cb924772606d48d3941bccd3221eb418b12a6342ab6c357f273795339bbc720439aa9cd5a478122b8b01769edb013686c8e872a4e2c049a755a8f954614665c61d5d9aec7d67cddb779512a308ba3cffd5c4bc642c091226667c40957c17b3c92bea102143dec663b6155464ac7a9559c533a647c5a106c38972a26beab45c2f04c974c9bb860bca64615b6f0782305c81862abc973d280088bac791876d3172d4e340f26452f60009a49989bec107b680b62cdc12751f9079ed07c28143a405a600a974230b20719b0953da3c2da574ce2c31786c77600646e25b3c305f6507d91084a836366c273d62c526e0630f9b483caf335d6bbb5bcf4adeb4143443a07055349cfb690948487f7795b67dc2e45430e7a5c9564cc84cac0ad0832480aa844417446b9b086a493b7aa163b76a50f35b7384bd054147a8621674843c3040ce06eaec68b6ce8a2c5b42390c76350e10dddb35c9f4c4a1cc148ba08601f92b2fb12c9088922c3463139239a62e878e4db61a3529a8fa7905a7a1aaf90216dab5026469b27d4122af5561bb91d111a721a78587eea259a4c7f6b743574398e30a119db0a138c9442fd3a7580e68eec01077d31525465babef901806363a2d664ef8c1908a30491e336e27b0f8690ac71c30adb145805a15fc654ab8982565eaa96fecb93a2ec7ebb697652965fc5ab837f6b7a20e224e4361977b71c694a88e5252f608cac97e97dd7c80a5ad10d62681b57162269f7b8d812af039226ce2a7930e43007c0b3ec6a4cdb3897ee85796d051cb053881e1b9706a572ccc75d0ef32f92610c40db4553824f1a352fefd979a310124b9456a9106367ec6a50db6fe0b057fdbb00a46028c0d6a638bb7f2139ca6df68f014c4e1e0b79670869353912b5d67edd4b77c70c067aa76d174cced6c7a901c65737082276188cffe28bcfaa2604447e68d490c0f11cd22b8c351c2d63e7a01ee460bc408e174bc4a6cb023492c6eed42f5d85244ec883b1b49b8e3584f27835f21b6b2e6060e0671f289771d124168e196edacc1aba26cec9e09fe7367f46893c2ea3677caa3005e34e722608a3b64a3b987289952dd695a82de89b9034390355c5e33546eb833f602cb9324c095bb4cf66c05fa0ab98d69bbdcff155c3169f3df2a575901724b678fb080b67f32240ab8f0198cb43176f6ffc93fa602748d591f0b2acb9aa67a8d8b15c27140c320b0ee040e737077a8c9fd6a20dcb865ff51c41808757b0ca750c502a356b1c7d821f1bf804ae2b337819c5ea89542e079045c887ba6550e4f05693f5c7012424d37a17e2294669c0538ce69a1f1c1f121784e3c3537424bbc4d73cf1a685f03a24c4ba8fd603b328d2a07fa2b714dc1eed17693727732ec7be2b02c0614caf3d42b222061ddcd758a0674133e6cfc5362f855b717695acdb971aaf16320690606c1c42238856d757b5d610bd64427f04c97abe1bc6b0185116cbbb2dca28b5d7a9aee205dbd37e92bb36311c8936d958aa1744ca67332a600d8c719377273c7fb0029f27c75817746e1058dd196de71b0e4302682da21b4ec1beca3cbdf690509573959d816cf5fa034ce01d6a4ac477e3bfea75732678aea6c0a5401c623dc225c7a9a7ae6a572f738387181913cc71b9379a5a2bbdc45773c6a1167fe756e13731f47226bc678331312b99428b07b2122b2b9dc86b01c5f090ff632fa83b598863c0b42623549ca831f66bdbbbb1d4747d56a97dcef9c81766a3d90043c1a99ce5e81105e9113043342a539de446a7c5f9c4b46a8cadec388fbb8bca527d90a56c649200cb2a7f968611934014f9a7b6faf3015bf6494ef72fba0c7ba40c499357acc96562c65b9ca7c53231045e35771947172118eaa02cd95f7137c93e2159d9389607c3011a76363560a97df950b0329258b0126c7bc10e4081ce46b7c7b0af0752b038386e9afa2d0a7543d85ab909376b618c0a2d33875d264b76941430e81c48832f43270160176ed5938492a06cc08392237caa8487abd3c83019000bb6671784109c7bc4c2a0362a5b5122e620aba511c49ca42d75091b3b1abaad9b8162bc27f182ae310872e789cf05f6c949598c41c3b73a1a9cc0808e68f95c8ad8392f021f77c79618685db2fb1d04a9a8acb8441ccc764aa3b191736f5a24ae31c23428390c1c22c6a6052664db63b94960a433584036c05e031a07823a03ca153015fb2665c77d8fcc529f21afde0d4f32cbfa399f2973d812f516c86b0f353d6a29813d354471eb8b4c38df93939eb3b1db80ddd1cdd6558a9f2687a3e03ff73e02a217659f53d8c47556bf3d8c94040f630d63605e2d0f923579370c + +comment = Official test vector 75, seed: "8e2995f1b3e43853b18916bb1212aceb05898e2b177a87abeb928ad7184e59695c56b2cccf5db80853c28a525e327d13" +entropy = 6084a235f79dd093ef6d185b54e69df33dacee73a9bf2f379004421a10e3a79d9f684fb055ece19459eb464e91e126a7a6e3ed11ccee0046da234d964c985110 +expected_public_key = 35a0c8ea287462d8cf8841cdc9016796500e61e89eff672e87c667f453c8ccd148b94c9a9a3765649ccc6e1c05e5350218d091783b6c7e4958a0807e73e9839992c8c36a87891b7ce5d7122e38b5cdd745feb1058fc2827b882df77cb564323746855392247b054527ee862abc91a557c431e55b81d23b1c1a94992ef540e07338fa944d24b17ed4e693eeb8224a0c5307202457c8033aa4651b2b30f85a9bd8070d1b11675fe240a1009dacfab21d50036426a6dc9c3dfc05cd1612ba91da51bd5a0f7ef9b235f1b3b2641747ab8a380b42c060357bf259548cb80788cb41da4c7d3c4b9401925588920df255167240f6b092c1329799f0039b74cbd549b2c053a71d4641071a3a95a460b2b3a8ada727193267de555e6ce87986ac06e647c4b7967cdbe5083c4b99a1b44b5df58959c48beaba0818608fd4046ea0c09a28416c6a97a1066c0650ca619d14a056252d38539f1c2676b69cc53502487389648fe596783baad0d7627cc6ab2da5b6788410b67285841a323e04d037f25e103b38b07672248186c969b04661ac6b2753c5429eeda389599b78e84608dea89556a9510627b29e13b1713a1442158561db8f435bbd6234a420618985dc4f71f0a5f15762fa16084f178e0e76bfc9ec5c35fb52e52301e6809cbb287d42b7591828afe605cfcc93c337bab78b55237b075a8bf08c48c15087e82600655234fa99f6987da7904ef50a1599867d56760ae1d70006925ade67157508289f137def9b9714f4cb72a017ee6a6325f9418f3a0ea3a8762c55987ab406dd9a6d248a33eaf264774aaff6f00607f37bc20041d3a170e07407792a43c5407fb3622ccb065b74bc1a54f86af9f7246d288fee725a6fd85e82477483f778d5388728c4565467a9ba3216d92089bc1c742a20b03bb526b73573cdc91aa8e085f1eccd1866280e791bd1e43d4843a440e050e2967daae26686cc2d32f512332cac82095ab0005133023e75c9c92b0388bc8b2822a82f93fc3520972e2e0a062a388931092bfa8758f251895c641186d1b40f6a332df3088bb24381da133ce40d3461a7d87a93e702472e49ad91cc013c936b02a96c4ce14c2b23ac79869c6d139c8d85b58da27c6eb4c4250bc3ddaa56dbbbbffaf452c09074e013a3c7599cd5b8a876076523c6b0aefc6a503bcee0fa76407b779db92453f7aaa4e58401cbc6f3718a3352013e1383b4222572118878c99289b91b02d929dba06c6deb6f4c2b0459f86d04fc8d287b6a676b17e45997027568bf7bcca05c3d394c1557873711174242ca50cfa30bb3d715d1400807cc5ff1049ce720be3c360febccb61dd7244f4352b655a517485ab13b413983cc089749ac7144312966b2c67ad50096bc176142858881f09e3a075f8fa6bf638a13af572ba026a172b23317a01a999c8c1ef478422cbfa9802f98f2856bd6a11f8584c532807771c19c411a2900c5a57c9b8e44b4c07b3be3477baa738ab2c407653a309d7a82cfc6b86a1b59ad1251e008598e453e04e3306c1877dc703869da25a9b91fec80aaf4f30b4d0a83e2daaac73990f05a9002d6ada0409450454291e37112a9ad97147cc89999dc89a30c809757933c5d0356f329bfa3823d34197b7d9e60e307bbabd9b3e8272a0ef1b3333269a7af6a5bb8740bfa +expected_private_key = af361347809757c2ae0c4a60393c90222c394cf136e95517552721ff136dcc234d64715a1ab43d15708187f89a6830791e0062cd43253ee486ac54179d320fa6a8bac4d0c07b7158a1eccfe52c4847403849982d73288877d04eaad37d392aa487597f80f19af7444e5a82cfbe51609ae515c1b320b6c75aefc121d5e2904a0185654a418e5c7a379b41838ace149b45c5a4040dd239ada846102a6bbc811ebed4710b2393ecc4bb8c6254dc815d2667831f962887a74eb883a5a8642e0b427450d01321246a8797b7be1211eaf64b0c706eedfa17cba2b010626112ab6b2b2b928df38ccbd9b639b9c6ad090e92da98b5c9914549beb6a9b5505579a56943d210722bf590d63c1ed56534a96552005226c34cc1ac32572d2ac0823bce348086096525188088df229536bac34a1c95083309a0971f31d975de0598e4e009d24661b2a79dfae85343b94fb1bc171493ad77d767e0814837348616205652eb4f98838ce536691de8c3af0a4970eb0c3600b4605841bcb0884e08bca3198b04b2afa6f575229c56462b9516026d32d2ce33a4b1add3b411371ea6516765f457613ccb50f94ab9395f6fbc94395a6c9c104ce3b79171a83a49b22add3a915086b804c3b42301bc1f14630ee3217f059aef485c019a4248b4a78a516d75919eb2b15bb1e5a34cb6b470ca7a797ba1b5193cb4565497f98bfe30a7578044867897c332687d925c8bab05d0c35693f557f541b571d6ab7e4a752b80267b0329d7558fe4bbc54c8612aa95c03f81641a129b1793160dba78c4e0269e9361087328a73c67c0044217a25c2e05b64a1b8ebec972606bc220b1a456d8ba86a76ac4a3c06429cfb6035ea50549db887a5f6170ea282bcc295a2ef000f571038fa97b6bd98fe0399ece3755d4b55e16261f7fab678c394c83676cb9f080bcc915c8b1c67dc998d7097074249585e31c5b30bd0250abc570531db43f546c2e05983a7b5219127809987343cf722fc38525b2ecaad2ca703679cbb7500420f83960d7505bb7b7b59a8b6f0c876c7a53d893a10468a516fa7a6a08c04d3259ad003db768559e173df06a08793b10e5a1a46145b6f0fbb230ca504424b4e9617cb3f509993567b4cb94cb2cb39811bc1eab31b5f5691ff4108e5a6eaa9b15dc2aa45fc4ad26b9ca007a7c2a680acefa88f12790abec7e3da1c13a355c1c669117070a7e1976f6859921e273f53632b4144b58e0a74207100d2cade0c8a0410814d40a4234843a44978d0d4a173be52434760423235f5d7c8e1f56c8181487bba930cc9272acd524eb6c9d71d753fe62b0e9ba33a478b7e82b36d9690607550aca261085a08725281b02e531432b35398b7ed1355b8172776926bfe41880df90af6951a58981c708724deba6b6c2bb8af1c0009c71a0b82ac0d14cb0910a8ec3988251dc9e93f17e067608115c85bb6c47d33a2a9359a35beb47c3a04ab65537f59bc1ebacbed4b97855f753a954929b6449a4db7d2098cdfc04008873004bc535bd5c74dd49247419601513c4e8125731307bc858845896a67d33902afa4b58b50be969b947851bbd791d66887cc6e92e19a2b92ba6bcc2825c4239ab2894b2467547ff3a63bef65e35a0c8ea287462d8cf8841cdc9016796500e61e89eff672e87c667f453c8ccd148b94c9a9a3765649ccc6e1c05e5350218d091783b6c7e4958a0807e73e9839992c8c36a87891b7ce5d7122e38b5cdd745feb1058fc2827b882df77cb564323746855392247b054527ee862abc91a557c431e55b81d23b1c1a94992ef540e07338fa944d24b17ed4e693eeb8224a0c5307202457c8033aa4651b2b30f85a9bd8070d1b11675fe240a1009dacfab21d50036426a6dc9c3dfc05cd1612ba91da51bd5a0f7ef9b235f1b3b2641747ab8a380b42c060357bf259548cb80788cb41da4c7d3c4b9401925588920df255167240f6b092c1329799f0039b74cbd549b2c053a71d4641071a3a95a460b2b3a8ada727193267de555e6ce87986ac06e647c4b7967cdbe5083c4b99a1b44b5df58959c48beaba0818608fd4046ea0c09a28416c6a97a1066c0650ca619d14a056252d38539f1c2676b69cc53502487389648fe596783baad0d7627cc6ab2da5b6788410b67285841a323e04d037f25e103b38b07672248186c969b04661ac6b2753c5429eeda389599b78e84608dea89556a9510627b29e13b1713a1442158561db8f435bbd6234a420618985dc4f71f0a5f15762fa16084f178e0e76bfc9ec5c35fb52e52301e6809cbb287d42b7591828afe605cfcc93c337bab78b55237b075a8bf08c48c15087e82600655234fa99f6987da7904ef50a1599867d56760ae1d70006925ade67157508289f137def9b9714f4cb72a017ee6a6325f9418f3a0ea3a8762c55987ab406dd9a6d248a33eaf264774aaff6f00607f37bc20041d3a170e07407792a43c5407fb3622ccb065b74bc1a54f86af9f7246d288fee725a6fd85e82477483f778d5388728c4565467a9ba3216d92089bc1c742a20b03bb526b73573cdc91aa8e085f1eccd1866280e791bd1e43d4843a440e050e2967daae26686cc2d32f512332cac82095ab0005133023e75c9c92b0388bc8b2822a82f93fc3520972e2e0a062a388931092bfa8758f251895c641186d1b40f6a332df3088bb24381da133ce40d3461a7d87a93e702472e49ad91cc013c936b02a96c4ce14c2b23ac79869c6d139c8d85b58da27c6eb4c4250bc3ddaa56dbbbbffaf452c09074e013a3c7599cd5b8a876076523c6b0aefc6a503bcee0fa76407b779db92453f7aaa4e58401cbc6f3718a3352013e1383b4222572118878c99289b91b02d929dba06c6deb6f4c2b0459f86d04fc8d287b6a676b17e45997027568bf7bcca05c3d394c1557873711174242ca50cfa30bb3d715d1400807cc5ff1049ce720be3c360febccb61dd7244f4352b655a517485ab13b413983cc089749ac7144312966b2c67ad50096bc176142858881f09e3a075f8fa6bf638a13af572ba026a172b23317a01a999c8c1ef478422cbfa9802f98f2856bd6a11f8584c532807771c19c411a2900c5a57c9b8e44b4c07b3be3477baa738ab2c407653a309d7a82cfc6b86a1b59ad1251e008598e453e04e3306c1877dc703869da25a9b91fec80aaf4f30b4d0a83e2daaac73990f05a9002d6ada0409450454291e37112a9ad97147cc89999dc89a30c809757933c5d0356f329bfa3823d34197b7d9e60e307bbabd9b3e8272a0ef1b3333269a7af6a5bb8740bfa12e89c47142418c26396ef0174c02f69dc00022d56494d31af935490edee63859f684fb055ece19459eb464e91e126a7a6e3ed11ccee0046da234d964c985110 + +comment = Official test vector 76, seed: "9218943c51fd2de47e509aac67eff176795102f37d7a2017e3afd768fcda7877af38739b00fcdf227c2fd62eb635942c" +entropy = acd1c0217fad5caa4235544dd9de153ab1880ccf4c76f16f236fae4e4bfda04cf03a8abb0a5010f400ae5722a75bdf5a2f6d5b546b34d73857cb1bfc7e587aa7 +expected_public_key = e4749bcd8577d50a102352b869402efde59f5fb54bbee919e7d4a8bb8cc40fb8c7240401113152ba727cecfc8e4b817c5d537df050902bd03df866317006a2aef59cac269813a47fd337a0c5b694f4b080f100089255614634a2b0bb1ecbcc3f1d84cdfb3054fa749736e531c2e673716079cf45c89b444b7d821d892c7ec39a74d39b815c2b9981ca47f5e56840341ff9d23fc877285f9b90fc78bea1b9c5c647ac52d066ad7b8ca2aa01e0729fa22c39d9c3c6cd833c6aac061aab1c1ee6819d2a245997b8580a9e1630112cc6b62c4952215a3281111675f25a10ca0c32bc68c7bc920bfbc7bcd82edfe130b0434afa29b2b9d90ac3f1143b5664e5e51984b52d976439794507d92cb256a1520078972b843ff3dbc6736602f68b289e0850ee845e49586c889ccdc104cbf13470f6f6c0e6766007e5c3a1348166933a45a1a62e0b749ee14a38e11a094bae60a38c84079d81aa655782138671a0fa186a727457d351a8a45b6fe05369f7b158de844e31117ddc47af9fe52075c6acd5f93a31c38ec7f608ff9096c8562e0271a35fa7265a56b24bf31c6a727376d1ab3f600573342e60884f41d355b2336e464b94554b7c108614c3394fbd561a2e74ba7045c0d74032877901e4f8a95c41ce9fc72013c51fa93b5c0b3c3b0a8c90ce0960f510a9f6a453b8b0012f7c2430350b8a4b6143ab5adc7aaa6f3533e230c3062b7caa33b1e9a3bfda7bbffef8341ad0a33ab272bada717a4790f4c99cf430bf114b62854810eab7af582a2ea327a599c490e25795cc5c42219771391b33df4c7fc01524c4c520eb4559c2ea8c38ab5cfe27035c756248662c1e969ef478a2d2419ed9da7125ec32b0557edb5b77e0dab221544e5f7a57a2941b89b803ed1c7d8de65f64a29d8e7bc2020b723d391987f83db0bc35e96aae7b2772b37159a3257ead277532119cf55959fbec482169c5391a9409877c79255cbd1c8d2b8352cba074bc4714deb09f9cd81624d2782de91efbc30882c45631e96e35c9b53f77cc0d268722ba5eb858a1de719a88ec240da229cd7766b9a237641c1277c006a6672bf61ab5dab4c223b7381fd3c16704cf7920b2f11210c969b6b46a152b72598de4aac1665d72a45bf51370de61559f83081dcb6aa49339e489968c80498550afc467c8aaf0c6c1b9085699b801c75eacc3142be38de6f6a64ad6708c426eacc13b09d8bea819bdc200258d31a8d1f308d0a7470dd35161379191576a03b81d70ec58565ca7c4a6bb333338d8113d70f5bef45b6835917e17c2945a06cbb7f2225675252f351593b06a6db504b6e67c6e88763fb06879187c5053029724b3477281cc5c5294b36b64f12a08084eea098489d5cad338a0cfa61231268bb866c2c524c71bd6a467c845ac7a4eac579049734970859a2ea753c6b93ef01532b130a103c6244a17870b75023e0014e6d8433ae5cd2b145bfe253a8bba300b6465fce277e2fabe36d6c8112887cb0a6daea4a54e258cf89071e407594de1bf1f4aa2beb50263dc5d5fc729b632957375b5ce6373d9b93211a66a29736a6ed616ef8538e95c45bf595b2eb743d79436d6385bab74c80d88c1a1f4022e6c3bb3d2294c474c2c554f3be4d7fae86455763b97ec8fdbe9640219b35fc36033966a3525d485f1 +expected_private_key = 31cb44a14c3ff840758055bf2afabad14a723c048d4d20c5908bb781844d574a96a0807c59d5192548a0089396a78b953aa52677b9a111cb012954b674571c5d0c7c5e6488d498290f7665f4f32dba7228ade2a724413798ec32619901215663b2c26360612558070bd06261bbab86b4f96056a498bf37b1b84238c5099ec8f1af4251c0862b861f334eee85af8d364a54f6bad0e44a23a0577933ca8482889a955086ea3a2c94b057c1c20d540cd6d2976126854ac123cd386a855caa385927318825494861079ac84606ac0f1810eb78a8398740be69cfa1777c61a5cc1d758ae28c072d6087c379a567648558ac8a1883734c64361db33cdd156fd371a2abe534b162c6e336143b944dc2309aac106525d6586793a2b3420358185fc787c2cee3875e3425be5627c1d49313413ee498b17e8c295908b718b3c4a6e03024d77f1ec37eaeb7462e09c683cb9b272431ef0abbd0422ae2569fc37902ab90bd2c236f4da66d78301a61765a77e43ace81102c7355749c1463b55f10e26727086d73a1800924c6b0eab6ec905d5b01adc538c9eec7a25989b85f24b1f68b9a22637613e9acf609a67cb20b38bab1a8d81cbd22a5ea8c7587a13bf8eb8a37e5949084c26b4433741a31c502a4c412535fc6a1c5000057c65103027f78f81ddfc4a8843c59f8563bebda15da543be2146a3eb7b521700958bb2a5064923236193d981bd1e2920d00b1cfc504e32495dbb116c5bb7aa21b6cec5c9fc0b1ab73330544e7af5bb1ceb7c159e3509938d0332cf51add245606617dcec688f117bfedc27dc5b8b4884446861b592b720b53fb23cf08513f66c3b51833e51b9a63e297054a8c03f8baa257c64c2c8a265a8a92052c41146bdb3a32ce0b7196aa33564806dac33ac05a20178c2a0cb04000d484f0325c9d16956da0af88f68bb72b7bc6b122a486cc1eb01bd3027aa316c6d7c1ae7d8b9a747443c5d7237989a93ed939d905832e76afae4172d5f70589e54f7b5cbabb536e5f316b3d38911513b400ad83f7b2a3c72a6c09ea3b4f68129ed285fb99442fe61237d61756a2ad78b7790ee69748b79e42ebbbd6b9b0d803a3eb77477609ab2cea5920128356c369878855126c22f1ab66a3a4c202892c8863b609f7926175cf1e3967ea93b7ade7a8e6779672023dd5d81bd4d9345af36a38db17e96b8d85b7c0beb586aefc9fd9ebc585f071c1b9c34fa2283a60884a0cc5ea210887aa677d24192db582f05117fa189c868a3cffe8b2fb584686eb3d009733e1d86c07d6a9893c7e9410b4ca99a4a880b48053878a45340d0056031068a63113be4b51a630016875541e099935ea92b2668ae84c5a183cbbfed619691038973cc07b72adb803cbe26986c827ac75428cf183cd5fe7c9c719378438058f470b62fa977dd658f219983f97b517bb1aed01a478a18dbb89ac1b916419a3b25f388c276c190b866356ec84c33b29022286c08a34d26948c59341a789cfa168adc0c7a73db36a72ec6c2c688c06aa3eb1fbb25b7b828cc3719c7b2473719f4e2b5c4ab8a4fc172a132439e0e3af22a1beae17ba4cf39a155925c62a4c9ca76436496646906630b9349a335a4852c01b018f77da15e4749bcd8577d50a102352b869402efde59f5fb54bbee919e7d4a8bb8cc40fb8c7240401113152ba727cecfc8e4b817c5d537df050902bd03df866317006a2aef59cac269813a47fd337a0c5b694f4b080f100089255614634a2b0bb1ecbcc3f1d84cdfb3054fa749736e531c2e673716079cf45c89b444b7d821d892c7ec39a74d39b815c2b9981ca47f5e56840341ff9d23fc877285f9b90fc78bea1b9c5c647ac52d066ad7b8ca2aa01e0729fa22c39d9c3c6cd833c6aac061aab1c1ee6819d2a245997b8580a9e1630112cc6b62c4952215a3281111675f25a10ca0c32bc68c7bc920bfbc7bcd82edfe130b0434afa29b2b9d90ac3f1143b5664e5e51984b52d976439794507d92cb256a1520078972b843ff3dbc6736602f68b289e0850ee845e49586c889ccdc104cbf13470f6f6c0e6766007e5c3a1348166933a45a1a62e0b749ee14a38e11a094bae60a38c84079d81aa655782138671a0fa186a727457d351a8a45b6fe05369f7b158de844e31117ddc47af9fe52075c6acd5f93a31c38ec7f608ff9096c8562e0271a35fa7265a56b24bf31c6a727376d1ab3f600573342e60884f41d355b2336e464b94554b7c108614c3394fbd561a2e74ba7045c0d74032877901e4f8a95c41ce9fc72013c51fa93b5c0b3c3b0a8c90ce0960f510a9f6a453b8b0012f7c2430350b8a4b6143ab5adc7aaa6f3533e230c3062b7caa33b1e9a3bfda7bbffef8341ad0a33ab272bada717a4790f4c99cf430bf114b62854810eab7af582a2ea327a599c490e25795cc5c42219771391b33df4c7fc01524c4c520eb4559c2ea8c38ab5cfe27035c756248662c1e969ef478a2d2419ed9da7125ec32b0557edb5b77e0dab221544e5f7a57a2941b89b803ed1c7d8de65f64a29d8e7bc2020b723d391987f83db0bc35e96aae7b2772b37159a3257ead277532119cf55959fbec482169c5391a9409877c79255cbd1c8d2b8352cba074bc4714deb09f9cd81624d2782de91efbc30882c45631e96e35c9b53f77cc0d268722ba5eb858a1de719a88ec240da229cd7766b9a237641c1277c006a6672bf61ab5dab4c223b7381fd3c16704cf7920b2f11210c969b6b46a152b72598de4aac1665d72a45bf51370de61559f83081dcb6aa49339e489968c80498550afc467c8aaf0c6c1b9085699b801c75eacc3142be38de6f6a64ad6708c426eacc13b09d8bea819bdc200258d31a8d1f308d0a7470dd35161379191576a03b81d70ec58565ca7c4a6bb333338d8113d70f5bef45b6835917e17c2945a06cbb7f2225675252f351593b06a6db504b6e67c6e88763fb06879187c5053029724b3477281cc5c5294b36b64f12a08084eea098489d5cad338a0cfa61231268bb866c2c524c71bd6a467c845ac7a4eac579049734970859a2ea753c6b93ef01532b130a103c6244a17870b75023e0014e6d8433ae5cd2b145bfe253a8bba300b6465fce277e2fabe36d6c8112887cb0a6daea4a54e258cf89071e407594de1bf1f4aa2beb50263dc5d5fc729b632957375b5ce6373d9b93211a66a29736a6ed616ef8538e95c45bf595b2eb743d79436d6385bab74c80d88c1a1f4022e6c3bb3d2294c474c2c554f3be4d7fae86455763b97ec8fdbe9640219b35fc36033966a3525d485f12fac52ca60594e514333ead02cb1bfa5cd1d9ecda4a0b25ccdfc47ad3f632a85f03a8abb0a5010f400ae5722a75bdf5a2f6d5b546b34d73857cb1bfc7e587aa7 + +comment = Official test vector 77, seed: "542e20078add5296050af150360f057f6b9ab3ba835589dd56987de805f900b906505b5390a0d86cba28038992dfc59a" +entropy = 241191401a63afa750f05662e354dddbc683c776ce3222beb83e3cf913d7ed7ca59b3bd23b49a95bc1fad20070fec930b6060bd827d742b077092e422268e15d +expected_public_key = e26411e0cb6648d36c6236468793848aa4b7f4510377e0a24bdccb712bc98cb21ceabc08101328d3d032cfe9c82d21372924c69ab5a402e9b3d88c87e9bc5c90335e5ac231a1b87ea3c2527b82445d7c8596b10a609616e4da431c9593b91a1aa21a2e436a359a7a5901902a6b516d562363bf95890501af4c5946626ace3f276af8966709cbb9b666b9842102f3077978e4872307ac65ea11002cbe4dd0bb83677419b89c9e0c9847fa6441c86b8b601663e40357831d1b3c21b4a8985ed50e546c2917f332d4acb59bd64d9be88efb981362458b8d868da7ec516ea9c807a29c5d51385781302072c1f3295da2559003d4265cb330f43ac5b774562c182be83636fa034bdbc3cb25ab6c8c21c69b873329321533a788287a40c1659f457c5e6e15456da54a7fdb18c8ba246447606f2aa340a48b4fc667d7e67efec47910e05c3da4463b75359668821711530835357b6a8ec62a3e7817c508c79754063f7110362be73416a46533341cde577c17a75b3316ac59575eb1a1575ec0104ee77f70941e91786ad457832e1493466a3faaa55911e9bacef8ce49f579f1753b5138797ef827f0bb0821ea69bd9c43abf2181d0775fb64b8694c74f0323600fd3e5f1bc5cbdacdb2329928247e4759747c02cdd924cf1c93bae5c37be8c3b9c7e09b4660c3b9901ee33b62350a695d799b52743d5158c015cc609e891c87f9ba02616ed2d3a1c14aabef101b4b42ad5c47916481bef01b11b9496819ab76a428c0f5b8a69ebb24fb5b3407e1c22e2020341575c7098e63379406c9b60b6a1733c171682b1776719db5acbd2ac6ac4b97aa0a3c8c168a5ab389010a01b4dd01829ee4a402e54e633a229a94cf96e01f72ec4054c13335b89bd6e91e965bc324924c028b433074c9705ac4ca2682fb1b385f058d574515319397754cac9f68cb70022882a24242d1c3f1242cabdaa4d68a91ddc8a22c939bdf1539645a912a33c1d11a5849211d831abc2c86834be35bc3500cc44522bf9aca86988aaf580bf45a5ff7f8192e110e163356b8a52486f772204bbbbc19befc631433f081e8556579d288b3b27c1a8209ecfbaa30a82b34eb722fe2be60534e2f625c0ae477826a9e75b7c5aed2398525358bf0ad127c15915133a32a9add47a72270a98f942807fc59f2420e14365a758c534f289160a65cfb34619c7c9b2992083cc699f554bd64586dcf379605581711d607235c944820cc28416ac761498d8b54193a8cac8b815d7b19a21b02a6d5a737c4984f3a888c0b9e3f51b95ed9430327642a082787132e94d6c26b298b77554e7f2237ac286f419266580697fc9316ec1176c4d763b194c52d79b25604974c1bc899560b72094701709797c5183391a268853b9ff3aa277c707906be0b078fd6619050e14b48bc73f877bee69a3ebdabbb8b2198cf51b14b2cc9abe673caa803b419be1c34b6341c2e83d2013152b557a87ac4fb55c5c86ccbba995492cf960479b044b3d6233317677c78a453d4e247ecdab3fb200c3d2a0564c4100a995c4f70597e498cf0897b507ab35e4587e2b875030303dc2ca8ceb41ae2a9725085c12040c8d0cb20ace46f1936725bcabd60d0b880f7aabc887090195d95fb6ec060b5257ac37481faa2eccaef99c0da37285d53baeb0e25bdb9 +expected_private_key = de9a3f4dc6a54e98c850e3af0f7abc5cb5b363bc668f2c10c6e197927c89e57088c4960c46b767e27129fe78c7cae38717e6a2a7fc16dbc1582ac697e8915c90281a0a784c4b75345a13161bc6a586166d4385b507748d3b9516b10550f05782125c10f3761aea2c631afa83870c003950b891d96ae721317b192f21a50f2b2caf49f81177790c29c02216759b005692ccab4281927a46739ff7a9583e9a5eb9a62314e4967f5bb375fb627e5a45b918c801b4b1dac24d55c13aa7fc5cfc104647295650b5cadcac2c74aaac28b82233f64c1c01ab50f16213154d0312c5add25af449cfddf494045000a01c449d1084c876163c83c13321b1f6f87757dc186d4c30ce916240e538f196936ab9bb419093fd593409f3a308827ad9002e5a621fb1387ac06b442970cda9c720ac9049cff1c307806e9ff9209fd0cc52b9517c685c36c45801875dbce490163c91c707755cc8701af04deb9aa0ce460f24c72e5d811c4ecc297abcc4c9ba304c75812196409c19be10c494a8b138a6f05fb5558e7f2cbf6f1694e7d417f73781205b941eaa3ecdf91c71e998f9a8b6b72400a048a77ce4ad17eb265313303cc86150d477e42a39cb4b8c5a3723d03550f4b76d5fb7b524ec2658d374a8c955b0fb3fe878072ebc0201b2328b737f9f19bca8411f35980890d71e7bd9707c917545aa6a659c3c70877134bbb0a1e970e7035021168c4a493ce1c9950456a76cdc05fef147fdd625d2b4bc51b39f3b9bc73a35a06a7485306457544b88c168b22e81cbe9bb0174a2b526b6ba0641456a3cc941569124557d3bc652dc8259ac66552db0ae06cbaedd091c268c2c6f4bc7e948329778cf48c3b37f9a3ed714c5c8e0099036514d9a052631b256fb7e7f7c91ea0311b8db8721d5001ae90991111c5873499bba20a9d08a135abeaa544706dabf7338497c578084e1bdce9155f87417b29313dd39505cc90c45c12c324b5d5af01eb2656d58607724725485465e33a6a64da220421c038f0a625254ad127ac941eb23362649d2049f8ae8c057321aeeaa31e0e98fe3da74d53938f4f900b6a33f1305a383cc12b35894ad498293957950010cf7912174373967c294bb89a90331c828048e3fa862fadc95283025e2f66dca10104be8b9f286c198b8c9f0f24c79a454e8dc0742283cbba84b95b388d8f6912f4b74198aa52ab561ce59508ca6cc09251fa2780ec0da59d8b12b17179320d23b822a3395466dac34384a364d06882592734f72ab0d2dd7131196afd4da54fc5801d85928cf61bb257274c98479ee0c2f65fb985f6c669d948fac153158530849311f0bc51ae72bb8c23ab5fed55e793a4e8489b423044a1b017273a4be35a305e19934b99b45dd2734ad4cb4c5b368c7a32650f306b7148c199a44bcc3a297429cca6015e906204c827cff8c9dcd48bf1b638091f732dfdc570ce6618dfc839b4a4648a52bb8302e32098c26e9a51a6571c9c290005265b6359f07598b10c7674f5356b0365ceacbb55b1a1822811c92c44f0e4bbda4a13364749c5384ca7670acce69bc48b6a0b0b2bae8ac5cc40aca6ce24957167cc0f24dd0caa3a0228c13934fbbb0c205f53d713aa441f5b0feb01fe26411e0cb6648d36c6236468793848aa4b7f4510377e0a24bdccb712bc98cb21ceabc08101328d3d032cfe9c82d21372924c69ab5a402e9b3d88c87e9bc5c90335e5ac231a1b87ea3c2527b82445d7c8596b10a609616e4da431c9593b91a1aa21a2e436a359a7a5901902a6b516d562363bf95890501af4c5946626ace3f276af8966709cbb9b666b9842102f3077978e4872307ac65ea11002cbe4dd0bb83677419b89c9e0c9847fa6441c86b8b601663e40357831d1b3c21b4a8985ed50e546c2917f332d4acb59bd64d9be88efb981362458b8d868da7ec516ea9c807a29c5d51385781302072c1f3295da2559003d4265cb330f43ac5b774562c182be83636fa034bdbc3cb25ab6c8c21c69b873329321533a788287a40c1659f457c5e6e15456da54a7fdb18c8ba246447606f2aa340a48b4fc667d7e67efec47910e05c3da4463b75359668821711530835357b6a8ec62a3e7817c508c79754063f7110362be73416a46533341cde577c17a75b3316ac59575eb1a1575ec0104ee77f70941e91786ad457832e1493466a3faaa55911e9bacef8ce49f579f1753b5138797ef827f0bb0821ea69bd9c43abf2181d0775fb64b8694c74f0323600fd3e5f1bc5cbdacdb2329928247e4759747c02cdd924cf1c93bae5c37be8c3b9c7e09b4660c3b9901ee33b62350a695d799b52743d5158c015cc609e891c87f9ba02616ed2d3a1c14aabef101b4b42ad5c47916481bef01b11b9496819ab76a428c0f5b8a69ebb24fb5b3407e1c22e2020341575c7098e63379406c9b60b6a1733c171682b1776719db5acbd2ac6ac4b97aa0a3c8c168a5ab389010a01b4dd01829ee4a402e54e633a229a94cf96e01f72ec4054c13335b89bd6e91e965bc324924c028b433074c9705ac4ca2682fb1b385f058d574515319397754cac9f68cb70022882a24242d1c3f1242cabdaa4d68a91ddc8a22c939bdf1539645a912a33c1d11a5849211d831abc2c86834be35bc3500cc44522bf9aca86988aaf580bf45a5ff7f8192e110e163356b8a52486f772204bbbbc19befc631433f081e8556579d288b3b27c1a8209ecfbaa30a82b34eb722fe2be60534e2f625c0ae477826a9e75b7c5aed2398525358bf0ad127c15915133a32a9add47a72270a98f942807fc59f2420e14365a758c534f289160a65cfb34619c7c9b2992083cc699f554bd64586dcf379605581711d607235c944820cc28416ac761498d8b54193a8cac8b815d7b19a21b02a6d5a737c4984f3a888c0b9e3f51b95ed9430327642a082787132e94d6c26b298b77554e7f2237ac286f419266580697fc9316ec1176c4d763b194c52d79b25604974c1bc899560b72094701709797c5183391a268853b9ff3aa277c707906be0b078fd6619050e14b48bc73f877bee69a3ebdabbb8b2198cf51b14b2cc9abe673caa803b419be1c34b6341c2e83d2013152b557a87ac4fb55c5c86ccbba995492cf960479b044b3d6233317677c78a453d4e247ecdab3fb200c3d2a0564c4100a995c4f70597e498cf0897b507ab35e4587e2b875030303dc2ca8ceb41ae2a9725085c12040c8d0cb20ace46f1936725bcabd60d0b880f7aabc887090195d95fb6ec060b5257ac37481faa2eccaef99c0da37285d53baeb0e25bdb93eb856043b822df9d60b55fccb537afa3cacca9ef50433bde1dd9831e534d192a59b3bd23b49a95bc1fad20070fec930b6060bd827d742b077092e422268e15d + +comment = Official test vector 78, seed: "6a85a61dd08c0733fcbc158abb49fe0b0d96a50dcca140a2e9f5a254f1901985844613b1c656c0cb0112620591b88ad0" +entropy = b9a6b0c05677e957d41a34ba03bd06f2a9092e31f63389397d7e70fde6409d18e99c0e7b82be89bc3c1eaee6680aa4efd394e40c2b3f30523c8117f7c26a8969 +expected_public_key = fb262aa9a031e49084a6127b8410a5a46cbcabe6b18f607c97d4af6c6a598a089bb40c1998d16cd307895035b15df2c34bfc05f634813eec780c96b83fab557075cde3b64eae6ba98b65106e729b81d11c926404e99164bac5b546997d2a842f6aa9ce1f6bb7ab7551a06a3649e1caf7872ac675cb8981a124ca05a318bff9a234853821a3036a86404b0f056491a5b20ae09dedb123df8b4e9eb612a00207c6ccbc580373b0921fe2831f50610340865232c60660655184d8a0867a47811b88bcdc4e6dec5874839919188f63740588ba97405bb1ff2925c1553188c0137336948f7809dbb96d2f910a9c0aa95d49267e543057976e3dc7346cdc7560e68911b8829d37bd0eb20dd5e2b0eb1538a98a76a68798b5469f9dca82a08648a2da13bdc1a9b52a7b6f345626bb691aeccd14ec20f1c252b4fb2595474b2dea0edda47b87cb51f020072d489a2e79cfcf9a12b52bb4f626c35ba4c0888c7939f38e6126484a7932f5d6a029e1ca5cea27d729065d7137bb518c1885a299b58e1f6446fdd8449e58a21453cde7ab683bec6d84876cee590d1ad93852885db721b85d4061dca1327179acdbfc329416b23234572901b3f63a2cda36aa65b17035f449af2b404691957c30028f053989c501d8c2cf8a8cc0c04aa59f3b19a98777f814a18a0753a7180264e59f2be7c9f0266b8dc481cab4833be8b3b599818aa930571748d41657256015f68a8c887c23205a6655f30c51084925167bb75c98b8a25b7579bdf40a912365164814794bdb0b78824fe9066cc63473496ab9cea06248d883d1846fc8084d59f05277aa3eec0c3186d68bdceb6c240cd0128a6bc1361467b861ab025309c82183233c37b35e8af1b464331cbe7cc3974a48a8e015a491677567472f263e31188966eb556151819cf52772053936abb0d0a48e99357e558301dc8157a8a7853212828269786919a8f9032e17f9b692ba8efaebb602e83bd4b75160541500779d1907b1159170dea870e6f57f5229222e85b178dab32f897bf45510ead084887566942656357b7896570756ab1614994f982841a525c8ec63ccc8e4575df03be2f5cf96505ade252fa4e80fcff664f6fa8c337980251904a9135abcc509db15a49fe4c6d57b41bb6383b3483ca5f5ce11641f9eaa423c0c3254a508d4319dfe72168070cc8c771ed3e06ce74c93240947a8dab87d889f9ad894f37243b25259153324e103b73c708371400ebf007bb5459ee084be938a18d055af7cc7aa98fbb88a156849765936e7273bc385a1bca94a74368168cf26d8806c7901eee2359c8694b5439f1e82c0a6892e4a68c4858a9a00b1496e177d1efb57eb9c0ae382b56626595673230903cc19c79714364cc4b10891823535e21cbcd45c90d471e684af1fe243e925c848565a1989637f7614c900af1bea9049b78e07f00950ac800ef72860e209c192a4aa0b901090987bf15a2db6165516ad0238a40b0bb233a365bbf2bab2f60eeb8a54771a8d8e5279e2740298563aa2868e2df1be582897c7a9a0547acc2d8933aba9cbd5d937073455489a30e8cc3659c03d37240bff084d77f09dee76b60952221ed2c1aa73b772cbcea4d7a1fd64561e88bb90327b7c13c809696c0e4711ce152577517be0a2fb3d597fa5804e0c106a4c10 +expected_private_key = c65b5692b9737bd5bcef94376a685fe08cb59c2b94884b47bb6a4b292c4ef8dbcfd1d9392ba3c464442cbe0879fac60cb733496ffa7116011cada07377eac759172db45c9035532a5a48c18f3343e7fb3a0a7a1da9c75f647648a822bb8fcc59a2e0476fe958cdf968433b46ea296056a8460edc0b7d4430252b227cc38c8dfa639a72759de9325d3bbbdb1a5305e546580127b11332bb666236924ff1f13105176b81a777ebc946bd4b962e8050c0f80be026a513f7c9c74308f8336a9bc73bcabc8353aa10afb69aa502b3b6e9a53ac67f8cd8784be4519ab3c6e8e47212bb59ec3958be442bf2162dda987c602030770555c0bc62b1422367b95a91399642155cd0b17dbb848b642c765fda2400358040d4cd154a68db36265bb525fc90988fd0c04bf0b66ce052bb216d6183b444cc385bb8ae17388d5e8024aa41563653b5f72899cc16b37d642f6ff7385f557c941571a1c73bd9425fef3c343ed9b88bd02a9be5652736ae69949e43b5c9719c4b8e42c9071c10e3d454b3c90d315c93579cb106a3b16bab7163983f5c514b818516bba802b7fb1166679ee03c4c41ebcffc6322db61a7988927dd83b48c24bfe82a4fb1901f70e2c39c411fa65c43d56c02c79849e7745bee15b70e405939b055c2a76fe1021e094b4671a290f5d708ebf0b1155b94fee9b34cd9858d3a8dd4bc27f5fc0627f2a80d6681c11324ecb74639540b72a23083c3758cb29ad40c979b42679e1436fc56b3a7d1115137015e2a2af9a8bef038b6905c8847c16558ba2bc6ea92ad90b026228695d664720c15e6708b0934064760a745ea4a5587ba211312c7203005f838a2d5b7bb09b8dc7aa39d4956d494472f71a268991ca907aacf8048fc98c095798d0ea043c42c437f6762ed3678b6d701560016f405cad66117c786b56b3a88fb5968c26869f73a2227b129553b220f67cae75b5433b29259553ab4375a0aa6766b2aa0ad480b6969201ed21ccda0a39f8b8f565112565065d8d26dbc1a57425a29fe0a606ba826ffe45a69493b08b11712e88a2b4b0371db5c0ec0125e2659ed08275d18277b9c0ca51797d46cafe91951737868483a418427733ee2637b4aa9496c30fecab67b0b7278a76da2da201874711e6928b7a40e7859378c867b9ba81529656200584ea9a5881b657b68980ef8cb201338ac1b856c4ec5b0c48a80bcd6676c0ca624f05296e59155d5587c2c20bfa1bef1005bbe9840db205d9658935a67614595bb3fe48e52877fc5ba639d023f54d534c58cb90a0a98bd1c2e9e940fdc61193d4753d17463d7eb8c9c6575e0f6845b5c0a5bc69c5f90128d3078960671394b75c5c72eaffc1e8ef4afdb395ffd40a2f6bc75fb9b79e1d8756705b710b0bac1dbb4ac312fff30745590739c08bb25cc9ec62caf1226176c161ece62aedec392a3591ec2ac80e92571c1417be7d82b2f9a1990d50dab78c1dee631304ab5ac57274846a8fdc6547b224c72e0781b233ff8a6c876eca3a3e060a00b560f661042e85340c4a8257660c0592a429c7b81b5137d410b5492864e156dad292dabf59035fb0e02247e6c6847cfd86b6958c74209a8f389041e5389ebf5b9b633b7fcc08cfe14bafb262aa9a031e49084a6127b8410a5a46cbcabe6b18f607c97d4af6c6a598a089bb40c1998d16cd307895035b15df2c34bfc05f634813eec780c96b83fab557075cde3b64eae6ba98b65106e729b81d11c926404e99164bac5b546997d2a842f6aa9ce1f6bb7ab7551a06a3649e1caf7872ac675cb8981a124ca05a318bff9a234853821a3036a86404b0f056491a5b20ae09dedb123df8b4e9eb612a00207c6ccbc580373b0921fe2831f50610340865232c60660655184d8a0867a47811b88bcdc4e6dec5874839919188f63740588ba97405bb1ff2925c1553188c0137336948f7809dbb96d2f910a9c0aa95d49267e543057976e3dc7346cdc7560e68911b8829d37bd0eb20dd5e2b0eb1538a98a76a68798b5469f9dca82a08648a2da13bdc1a9b52a7b6f345626bb691aeccd14ec20f1c252b4fb2595474b2dea0edda47b87cb51f020072d489a2e79cfcf9a12b52bb4f626c35ba4c0888c7939f38e6126484a7932f5d6a029e1ca5cea27d729065d7137bb518c1885a299b58e1f6446fdd8449e58a21453cde7ab683bec6d84876cee590d1ad93852885db721b85d4061dca1327179acdbfc329416b23234572901b3f63a2cda36aa65b17035f449af2b404691957c30028f053989c501d8c2cf8a8cc0c04aa59f3b19a98777f814a18a0753a7180264e59f2be7c9f0266b8dc481cab4833be8b3b599818aa930571748d41657256015f68a8c887c23205a6655f30c51084925167bb75c98b8a25b7579bdf40a912365164814794bdb0b78824fe9066cc63473496ab9cea06248d883d1846fc8084d59f05277aa3eec0c3186d68bdceb6c240cd0128a6bc1361467b861ab025309c82183233c37b35e8af1b464331cbe7cc3974a48a8e015a491677567472f263e31188966eb556151819cf52772053936abb0d0a48e99357e558301dc8157a8a7853212828269786919a8f9032e17f9b692ba8efaebb602e83bd4b75160541500779d1907b1159170dea870e6f57f5229222e85b178dab32f897bf45510ead084887566942656357b7896570756ab1614994f982841a525c8ec63ccc8e4575df03be2f5cf96505ade252fa4e80fcff664f6fa8c337980251904a9135abcc509db15a49fe4c6d57b41bb6383b3483ca5f5ce11641f9eaa423c0c3254a508d4319dfe72168070cc8c771ed3e06ce74c93240947a8dab87d889f9ad894f37243b25259153324e103b73c708371400ebf007bb5459ee084be938a18d055af7cc7aa98fbb88a156849765936e7273bc385a1bca94a74368168cf26d8806c7901eee2359c8694b5439f1e82c0a6892e4a68c4858a9a00b1496e177d1efb57eb9c0ae382b56626595673230903cc19c79714364cc4b10891823535e21cbcd45c90d471e684af1fe243e925c848565a1989637f7614c900af1bea9049b78e07f00950ac800ef72860e209c192a4aa0b901090987bf15a2db6165516ad0238a40b0bb233a365bbf2bab2f60eeb8a54771a8d8e5279e2740298563aa2868e2df1be582897c7a9a0547acc2d8933aba9cbd5d937073455489a30e8cc3659c03d37240bff084d77f09dee76b60952221ed2c1aa73b772cbcea4d7a1fd64561e88bb90327b7c13c809696c0e4711ce152577517be0a2fb3d597fa5804e0c106a4c10306aed2a804a1c9bad4ab9e59f6126ad7c8633cdd0c2dd9d4c6f639d312ed47be99c0e7b82be89bc3c1eaee6680aa4efd394e40c2b3f30523c8117f7c26a8969 + +comment = Official test vector 79, seed: "7f4a56eda151e7b097cfb8ef980440fff707affba91867c89522ced6c5ff3bd7f5f00bb49ddd615d9361a7e4efa42851" +entropy = 28a96c71577ba00c94f99fe965bc595a26db2b3ca6ab5cf8e443cdd8462b17929c35d165453e5fcdc6f9df64526d9de698f2bd3e6bac6c7fdd86601b9ba5f4a5 +expected_public_key = 5226aa8edabd5a4a5a7cf6633a394b756ab38bc652ebc1bdb728c74ec316d039ac982b118f1aaefec04e48448d45f72b319289691a93a20283c3cb1fec992364ca83226332107704d3390f71e1883b46bc2f31b4242744e0847e72d5645586ad0b8c0fe48ac04a003045ac2d2101b52c7c1d494673bea69766a5adcb38ce3a978209471b5d7095a720a4c1971d94970884f11fa90c5c8b7009e2e1769b382004c93a2d9187b23929d941468444cdde233db3791656c860705b714e3aaf076921458b8dddd61e09ac461e96a1b1e9af19ac6984129b6c8ca9d4e39d70277b5d9a6a4b605f5e0454ac05729c2691e87a8d79353289678490a822c41c52a2f56b91a35f89918aee8935ef2bbc48485bd747cc5c59066b7577739b669ad21a5561018f021663f5cf48e08f39881d221552c846ad789810030326c8530dbb369681c69cc00c2390fa857a37ad81623eed4262db69929353118a0886e6c1ca3d36c65898968eb7c187b7b866f18a8bb369aec780e0033ebf1b0df846cd60633a461c569683598c7744fbecc54282725e337cec503d12a87f9cf5ba6587baf31b852bd45a871abb81e88c8b8a56d324c87a777beaf543ba153a222418bbc57d7e1325fc2a075608988bdc44e276af10ca2d7e52b045514080597a0ff73732789d0f955f93ba77e8034900251416b43e291984cad36c53c947cc954a8320c11424be43283a6dc586a9fb39b2927867b79772dc1caa16234233adb5ac819f1a172da5194edb997f924a827a85fc7c7a8281c98f7a9cee443f68a2aea6001de7c7475b46b55ee8991dccc6527b5fa1393c9107c4d35a073ce29a7ea205a9279b62f5ce21f3aab0838b42e6679000cc4c182504a2a4e81757b7f6a183428786f09c76c69e2d7598f1e5049cb57738daab6972abf6d8bfd2ac7137493bd2b8b5f997519b2026ef38623294b91999a5419356bfe03e338194e471926fe5842e79740f416adae2a24f441ba4a0c08acc175f347ee3b614664496a5e51c01a55b1d2a3e8486cec4c3ba461970868502a0f9553d776514857bb8a872c7f736ccb432b1392e99568b51b9c9a56c441ac0ccbe785693722f90d63a0f78c8ee777236ea43de2583d0e093ec8bcab7c8c6ddd8254258b7a5732939d953e491a6bf310449083986b2a0f236c5b9a300db22299146b9a0943115845f3fe98045ca844bcb1132e0bc98cb54746937b1479dadac5a4f9320dc572ba81cb250f13869d132fa259604a76a5dd56a7543b96c3096d3046389a917dce53cbdd9ab04a65b31c6c5cfa23a2ad53faea3bff3985fdff9ca3e3965989c072f4659ee8914ddda0acf30a64a1a823b78561d5a9304950ea3056f50b82915c71ae0b6883ef319d061464d8050f37c24c62c7693f204dd4b4d74b66dd7526fdbd707a3490769764adbea61c09a2d7f464d7e932705212d6a9151b46c2ed93a7b99c1148f679d622419a4574310ac20941b3e51591ca5d53cff51a6ed2c081ee7b4bc23c8ba8b1aa2924406618715731b1cc404929a38911020fac6647c24306e349f1ecb4e2f530e8f200eb9c0a315606a3e130498f96ad5865ebb4cbb55265e69316a3bc96e51745b02f4a593b796b5951f48ddd5d61bcb3f79106fb3f881087b21e528bdc627a8a1fdbb3b1ff5d83954f7 +expected_private_key = 52d431d74363ba07b7ec47c2a5b98157f616b8c7b7d3e68ce3f2a31365bf4e21747203c5edd758000a8c09d38a83457fb7b015bdb187e842b46cb9bfab29a917435431184219339df7cb81018a81b283814ff8b15e3a526ac35185bb45c7a865c45ab0ca1c7c5cac9e35f753d378556a62c8aac92f0ff59651c1abb789970a32c69d153b14a687fc2a56b9e0c382ba4f907a0bef79bddff781776abd042044a1c84c4c80ab9ce9a76bfa6374e9cee06081e3661a09cc3272331936cc85d6b2319cc7873227303191c36842b61013c0a41082b82034a2e1bfc8c47916859eda53033d5427741510e842265ae36d530a19e5d7365127bcab5b506321abe2b69de823b660b4699f8859de76899098159c211cffe51c7198cf1025bf9ee69236c913b16aad84aa4c381a577b6c7a3403627b323f11ebc1f304747f47407db9a8c9e4b866082597f28b6ec272ad2140a43a52188b061650bffae19761ba99ca724b71191b6dc5b16450cac50b247415370d5b207701aaec3a13cb477983f180388050175658ccb4714acb603b6b3aec340dc6c164fcb81331ec194c382fed024e0d962b056627a5b05a00b5511d78badaa489f8bb3f3c5b484f9c1450708b89828ef24b815eb43a6b8b127bfa49acacafc46434987bcaf5f91a926140bd56504fb4525ee1921b63733db2986dc133078caa44518871ba12894a553bd024fb731a0ac44ab80199394a2385bc440515877cb69b73b0c847e40adf238847608908c20bf7e1b86fa84781371d4cb52fcf2cc30306c8d98c679d4cb41eaa0ea8b395c08cac6df2348474a9504592ecd34a93b3262c9751e42193719b617355c59a25679d909a5e756c8db03e3b174e1a063edc733b9350b4f738618648baeaec5b76376d05329be6e706e632bd61292755f361096cc4565573562053b4402c42c85b5299b1cca0b9cfec4605d63665f24561d8c1dcfa896d1c6d8918a3e6f2a8d4224ff97503d1ebcc8d5395f0a64d1454623890bb7ac6b87b29333096535118cd243c52e49cbc0945385e38781b9bcb6b220a66d96d426b9a1f4c4c4d0349ce2bc790732247ec5d98e43bcd37cd94b652bfca7b988b063bb102ea0772df0aaec74c228261b4fa7a49f3b329f2c7c6d04c859c9816d5ba2aabb85e52dcae066b9af4d9951766041cc783dc672dde42558f50473bb43bc1f93bc6ea7d33f46ac4999cd33698eea603c7da265ad713e48691c8b048b21134c9998da19060cfb6ae31cb5a3b7387f2257fe94bb3ea4c963d01849fb021741395f1862085f031b6b05a7834551a6c8f0ef91397a29e12db6d776b05c7f12c8b260cf128c02e48a9f403a487ac3a6c0888c5299414aab1d7283252f62f465867a851be9a82c9a79a25cfa727c632727c765d4c496d466942147a8a7b65aec4ba84e4e2745671bcb207654b087a26f93ac77c82cf34a7c2f86fe8f48ff9a0b663d79bba6b2b8908b32fc145e4f65c6a8a379a99c9e68a10c278130a1969e0cb708d0ca6ff1669d8756d1d530ade051aba3a07903b5d801456315057187758351588bed222785c9fe83a0fb4c59245cc2a72b309767348eedb7c2097b457bbac8aa96a67d785803744e149b3f131a85226aa8edabd5a4a5a7cf6633a394b756ab38bc652ebc1bdb728c74ec316d039ac982b118f1aaefec04e48448d45f72b319289691a93a20283c3cb1fec992364ca83226332107704d3390f71e1883b46bc2f31b4242744e0847e72d5645586ad0b8c0fe48ac04a003045ac2d2101b52c7c1d494673bea69766a5adcb38ce3a978209471b5d7095a720a4c1971d94970884f11fa90c5c8b7009e2e1769b382004c93a2d9187b23929d941468444cdde233db3791656c860705b714e3aaf076921458b8dddd61e09ac461e96a1b1e9af19ac6984129b6c8ca9d4e39d70277b5d9a6a4b605f5e0454ac05729c2691e87a8d79353289678490a822c41c52a2f56b91a35f89918aee8935ef2bbc48485bd747cc5c59066b7577739b669ad21a5561018f021663f5cf48e08f39881d221552c846ad789810030326c8530dbb369681c69cc00c2390fa857a37ad81623eed4262db69929353118a0886e6c1ca3d36c65898968eb7c187b7b866f18a8bb369aec780e0033ebf1b0df846cd60633a461c569683598c7744fbecc54282725e337cec503d12a87f9cf5ba6587baf31b852bd45a871abb81e88c8b8a56d324c87a777beaf543ba153a222418bbc57d7e1325fc2a075608988bdc44e276af10ca2d7e52b045514080597a0ff73732789d0f955f93ba77e8034900251416b43e291984cad36c53c947cc954a8320c11424be43283a6dc586a9fb39b2927867b79772dc1caa16234233adb5ac819f1a172da5194edb997f924a827a85fc7c7a8281c98f7a9cee443f68a2aea6001de7c7475b46b55ee8991dccc6527b5fa1393c9107c4d35a073ce29a7ea205a9279b62f5ce21f3aab0838b42e6679000cc4c182504a2a4e81757b7f6a183428786f09c76c69e2d7598f1e5049cb57738daab6972abf6d8bfd2ac7137493bd2b8b5f997519b2026ef38623294b91999a5419356bfe03e338194e471926fe5842e79740f416adae2a24f441ba4a0c08acc175f347ee3b614664496a5e51c01a55b1d2a3e8486cec4c3ba461970868502a0f9553d776514857bb8a872c7f736ccb432b1392e99568b51b9c9a56c441ac0ccbe785693722f90d63a0f78c8ee777236ea43de2583d0e093ec8bcab7c8c6ddd8254258b7a5732939d953e491a6bf310449083986b2a0f236c5b9a300db22299146b9a0943115845f3fe98045ca844bcb1132e0bc98cb54746937b1479dadac5a4f9320dc572ba81cb250f13869d132fa259604a76a5dd56a7543b96c3096d3046389a917dce53cbdd9ab04a65b31c6c5cfa23a2ad53faea3bff3985fdff9ca3e3965989c072f4659ee8914ddda0acf30a64a1a823b78561d5a9304950ea3056f50b82915c71ae0b6883ef319d061464d8050f37c24c62c7693f204dd4b4d74b66dd7526fdbd707a3490769764adbea61c09a2d7f464d7e932705212d6a9151b46c2ed93a7b99c1148f679d622419a4574310ac20941b3e51591ca5d53cff51a6ed2c081ee7b4bc23c8ba8b1aa2924406618715731b1cc404929a38911020fac6647c24306e349f1ecb4e2f530e8f200eb9c0a315606a3e130498f96ad5865ebb4cbb55265e69316a3bc96e51745b02f4a593b796b5951f48ddd5d61bcb3f79106fb3f881087b21e528bdc627a8a1fdbb3b1ff5d83954f79bb3963cc1c5cf2b2d1c6ca76226328ab765a79999ccc71fe98d5bf3b34f51b19c35d165453e5fcdc6f9df64526d9de698f2bd3e6bac6c7fdd86601b9ba5f4a5 + +comment = Official test vector 80, seed: "09fc004519bcf85b20d25d314a0dfc79e00cb6262a7dddf9c52473641afb8cfa0f5dd5f53558184caae9ec34b459e98e" +entropy = c08ba2ef8c3a0a043afad931652d7a19e6e8cb670f840de5f1fa03309b2ca9ec5fe6141a25f7ab9f875f79e0a82d6ea5cde5a017ab637d5fdb7c42646a1d71df +expected_public_key = 724abfcd15255f0a5efb7783d909031ed02c52a203de570873c7a7c556202d53a6c086899802bdc877bc6a813ab59b781bb95f4fca9ee76028aecb9142a992dd7180bc1c15dbebb66765c5abbcc5ebf764d5234d89a378d5925fbaf63a00e35d568804b973450a045e55c7c5f4907fee390fe6877963e386bc20cbe929c3d247611e346eae401acb972843dc204eeabb043644eea29ba2c1a160b98f0d28caf0677ab2aba362b7bfadaca4e1197f54f03ac8033814a71e1cf407972b3f1d9a986637a972b46d3ac46509c053efbcb9a475bc4055265961c79e1374c2159bd2409a84f22755a1b32e4b604783bcb2ac49a27a5b0b07ae346ac38f54a2943559f02270bbb19508e903888aca4bab72e332285837b9ebb466e5cba74d5ab6bb3b2a0fa26209a97f959c905bb4b058ba8abf30a5a6c190a018a9803ac29d84ba710b30da9a0844cc1a1478c289c32737144812355e0d7589b9ab765ca3b23353a350876f05081f3e4b14d8f66c998b81f458a394cc68c3b7bfd37366ec93113db928e5f9bf0e9aaaeafc619e332a7ef3898a66020dfc64f671879691c023409b53686770f8148a2b6f7b62b6aa42981ea0cea7753599585034b9ad99c9ac8b12872b1a47a088bd8afca2d42093928a4fb770198c4cc50b0214c4c94fc7b62b5e636423c6adb553b138591f6372ca6d53343ff7c70782a2ddc4801b262f220a539181c13f3c3e8e0a0d7191a43a54ab008d326df803fd8757f88ac9bdc8bc75cb83517ac71ff8613b3ba713377fdad2199bfa332b8c22c136350adb9553e3643d0c45413782f3bc9e941965dc051df98738cf50113ab422e4a22759ca016bea6fcba390ed64540112842f5b1373a2847107a43403b4aa5ccae154b9c54831e3911239b79f1fe997bae30a542560fe6647a2e7c4916097fd484c3d040456ea2bf8b63dbcdcc8577b7aed99c05fa28d468272876b614045095e918600f7c94bb0944f62235c169b58789ae8bc3e6f677ca8d238602399e307553e235d11836be120b3bac41b0a668e0841ab11f49e27aabdfc27afcaabbf542911b6a220cdd626d819c44c72556a3946df86c43d1b8693944d399a3b5b1309b9780e34330ca387cde8e4c9b2d0775a962f447828d6295873cc1629777fd93c062098b6149a3e7c383e2c33cc3fe7730537416fc1adb6c09f4caa736e4c796d2a97fa3807c9eab72993b4b876136b856c7bc75ad054288ef491effa872247a99aa39a9c2b7602027d65a169317cafcbb77c37d89ed32489e3c2557998a06689b06ab96615bb5752d439da446354cb0640686aa794444a806c31d721b8c6b820810a5afc00932a885107b5f968b5c8ec98207293d8851892a01dfae4a99832326e3863bcda75190c4a487b46e3914b702017b1b520ccc30a5c475fb2da94ea217f76556bfee825076533973bad3ac7305b5c764cd040d723617090af4a7811e9ab206c6a331a647d9385a5e7d8bad6c89b390b617018c4a0691d262429bba173598b37d7c245452853506437e756a399670ad8e292b0d820e3567047c82870e82236389d99d678cd9b49526aac30d1b830b12f4e62407a59c8f88b7b5d088a2d08b9f114c3f158650f32c682ea6a76cb62d3ad7357cc617d597a3dbbdf515f6852d71220768859d599bbaa +expected_private_key = 28ba2f24db8e2a5b21092964f1871e97e10f2727c8b27916a5068edd27670d26b91a93332157ac686205e23616eb0271b081b51923c5996743cc114f3ad310cd6791aeb05f77960991513ec655533921a8d14cb2589399ebf18f7ba89bb7d6cd2d7336ece1b7b63b98f26a49d356578ce7275ee67677d1482e1bb3d85b88325bae0a00cfd1288c34078d73965442b7b140705f0fb76ee3d0921112c400c7a4d1337d6a3a8cdff9af05c64c079c64dd143f1fd56c28096313e82d51836a2dc1b0f37a2e00545f802b417a9406e55420b4d71fbc2210d05a771cdc164ad50932ea40a876051828236153b4e1715edb1453045721e89a60acd0066227704b8ab991e8a06812226bc59943c0814c847a1865c19df4b7fa13ba3ef95543e724ef854ccb28bc1db49b75c1aca3649f848bc6f32c139aa79197543c628238adb755f4da6bd67130772b4790b28c9f1544a4e9860e875e68c1cdd9cc0cf17451434c7c53f3a9be39849720b1b80a836ba4c531d49bad16077e90203c9120c23239cea972454b08a5f10812443ca75b913df98dbe29c3312157e156311f67354d414aa041833f8454aca5b3898b3572e819fb2c4cada43c9c5191d6f7aed8f310cf77ccaf0c478686952e71a8a8173d0c223b04462b96c04ea7b218a13519b90cbe3be8c32b276f90d349acbb6362706dcd54aad0497a058ab0138a8e57d514d5d431043184bd1a07b77c3299ba6c7205938eca8403f31a1c605a942b73775a1ac11c40d81988e69c15079719aa769b5f618052d5290d84714ca57418366c15b74da4e98df96abdd19884ec1703f7978c4dd72b48528789d7148f16c23ef8bcd1f353cc4a76e7c238aeb1035424300f529acd46926874190556133021a6a9283ddfe02edadb7de23a4d141b0787539b68110b4882a51f95403865becea06e2d7a1c1f534fa3366bc1ab387eb867477b92f00c0d09615bfcc1138137cede4098ad57894ff74982d71ba2eca6a0f502cdc9c89bc6a44bd84fd8b62bb5d84332faa830e2a732259945028d2830a8aa866f92c24e46d164c4f4658791c11f0703d906a82546c75f81285c24597bba4b1be3972f069d6b383d61cc32b9b66604b7cdc4bb39058c74ce770f04f758e6124543e13d2365a915802f75e90997b10b15e650aee33a291c87030517b6c29cf10670d2dc5c8889aab7518b4dc86d86e25c52acc4db175a5957118f983c3a4443b33803a3161ab24004b7a789778c8414a8aa8c819468ebc28b68afe5333f7e666d44b5a961533280b0021bd3b24e2aa51ba58f2f45767a5722e918b1204656a2b44ce628a3a84125f918999a6311cb3569431c7b0d6b58adab6a30f9473b3747e33c7a2a9baf87b709353a77743949277147928273f112b5e618167a5715157b49ced69a2492203a08730ed07b7aa14bad136cfa969dfa68c28af40b9763872ed1b05d4161489bce1f473d4cc067a86258f6b664d2436d4856166cc60467887f9b97439f607d336114e46b2a2964c228a18eb532cc4c6813dfb841e60c3baa59978234a06fc95aaaeabec0123230ac33bdc48a4452403842bd6158c668f28f20bb5501984c5d3992594a9238e03798d178702b86973350724abfcd15255f0a5efb7783d909031ed02c52a203de570873c7a7c556202d53a6c086899802bdc877bc6a813ab59b781bb95f4fca9ee76028aecb9142a992dd7180bc1c15dbebb66765c5abbcc5ebf764d5234d89a378d5925fbaf63a00e35d568804b973450a045e55c7c5f4907fee390fe6877963e386bc20cbe929c3d247611e346eae401acb972843dc204eeabb043644eea29ba2c1a160b98f0d28caf0677ab2aba362b7bfadaca4e1197f54f03ac8033814a71e1cf407972b3f1d9a986637a972b46d3ac46509c053efbcb9a475bc4055265961c79e1374c2159bd2409a84f22755a1b32e4b604783bcb2ac49a27a5b0b07ae346ac38f54a2943559f02270bbb19508e903888aca4bab72e332285837b9ebb466e5cba74d5ab6bb3b2a0fa26209a97f959c905bb4b058ba8abf30a5a6c190a018a9803ac29d84ba710b30da9a0844cc1a1478c289c32737144812355e0d7589b9ab765ca3b23353a350876f05081f3e4b14d8f66c998b81f458a394cc68c3b7bfd37366ec93113db928e5f9bf0e9aaaeafc619e332a7ef3898a66020dfc64f671879691c023409b53686770f8148a2b6f7b62b6aa42981ea0cea7753599585034b9ad99c9ac8b12872b1a47a088bd8afca2d42093928a4fb770198c4cc50b0214c4c94fc7b62b5e636423c6adb553b138591f6372ca6d53343ff7c70782a2ddc4801b262f220a539181c13f3c3e8e0a0d7191a43a54ab008d326df803fd8757f88ac9bdc8bc75cb83517ac71ff8613b3ba713377fdad2199bfa332b8c22c136350adb9553e3643d0c45413782f3bc9e941965dc051df98738cf50113ab422e4a22759ca016bea6fcba390ed64540112842f5b1373a2847107a43403b4aa5ccae154b9c54831e3911239b79f1fe997bae30a542560fe6647a2e7c4916097fd484c3d040456ea2bf8b63dbcdcc8577b7aed99c05fa28d468272876b614045095e918600f7c94bb0944f62235c169b58789ae8bc3e6f677ca8d238602399e307553e235d11836be120b3bac41b0a668e0841ab11f49e27aabdfc27afcaabbf542911b6a220cdd626d819c44c72556a3946df86c43d1b8693944d399a3b5b1309b9780e34330ca387cde8e4c9b2d0775a962f447828d6295873cc1629777fd93c062098b6149a3e7c383e2c33cc3fe7730537416fc1adb6c09f4caa736e4c796d2a97fa3807c9eab72993b4b876136b856c7bc75ad054288ef491effa872247a99aa39a9c2b7602027d65a169317cafcbb77c37d89ed32489e3c2557998a06689b06ab96615bb5752d439da446354cb0640686aa794444a806c31d721b8c6b820810a5afc00932a885107b5f968b5c8ec98207293d8851892a01dfae4a99832326e3863bcda75190c4a487b46e3914b702017b1b520ccc30a5c475fb2da94ea217f76556bfee825076533973bad3ac7305b5c764cd040d723617090af4a7811e9ab206c6a331a647d9385a5e7d8bad6c89b390b617018c4a0691d262429bba173598b37d7c245452853506437e756a399670ad8e292b0d820e3567047c82870e82236389d99d678cd9b49526aac30d1b830b12f4e62407a59c8f88b7b5d088a2d08b9f114c3f158650f32c682ea6a76cb62d3ad7357cc617d597a3dbbdf515f6852d71220768859d599bbaa6d029bb2121c788b5b6ead7226df664490dae362c4befb615717d81c656b32735fe6141a25f7ab9f875f79e0a82d6ea5cde5a017ab637d5fdb7c42646a1d71df + +comment = Official test vector 81, seed: "e3c41cca6f04cfe7732fd54de30cc5caac93e2f80e76aed7d24a962a3969c1b6a311459a3ec3e510e3e9b1e4291d4d7d" +entropy = 0e3b30e102d707538c2671060f603bb0b8a014103f132d63b09ece07e4a4c75b11eafeca9e810796c34e8cfce9d59342884456007b01ddd12edce6d10ed87e4c +expected_public_key = 30e92dbf312758b73beb83625df3b8d5c47a7a334d4e140915ca1401d461d7052e9ff05f73a1598dc9622c324c1c8b5de9b0386ea3cd95b86d80085588ac69ae310be6b5b5379202f4f14878fbb5508907b99490e4191b1e13a6890a9209f0a12910a3e096747eba94a337af9e609da4e8a9f8003633ec099983b8e778ca3d72bca1c19b4fb4a0faa4459ea06782367580b7aa49ab74b60c4cef7ab3bb9ba081227a7e1ac2f5400f8f7395f96567403b2401a2abb0b70e92e6ca2102c597f496cc8881d7b688861c7988363112155b5b88271072a7a7d68b76036059ca5e402532ce8763c52ca237a334832832f2a49be3907d15852fced4675547796d3046535390d44580c24bcc3d67a50cfa2ad8936d46121a7f60179be7aad0746e8a2c8cae124d27181a374493da6a68d47387a44460b39a45b2619f1d29b08ba4495230470b87bb926279eb760b9041632317c4d7a19e7753458dac07eb73331d808ce318555e1a2828da2f1d101cdc9b8363990b85064f63226c36c71061444e17a28c3b56332bab4bec2602f5c31394c870dd21030997564de52602c2628c41cb7ac2388ef35371f870a21675ac522660268a1802a2e4ca4c7152a9776410910175fd08c5e0307f4c2a61c877abbd2185ce58738fda15335aba2c77a804f94077a777fb49854c7a78462263e435a1d7b4a5205ab879438a91eb60397704cd937e66c7310625a6276182d86894ef9750f1817d85709bc578092d3b65f5c84514361264909dc2147ae6f3a577097e64bbb2c679c845d827b1ac393497575e385bb39563e125c3a3925a21160201897072f03f45d6ba85db7eb1d5b8ec7111dd785ebde07056653507e967385945389493b95c0a95827583f01dcd473fd3138887d3472e18b24c1b7e2c837668fc6917175471f3caa1323a34432b72c7b68f658868a2ae87306109b1053ed2bcedcb7037ab72d8c2bf48d29a0822575cc91ca1e5698286c9b19a7471a5b652f6a900659df9183c76417f0fc89d743aa635791d588cae6f650f3d314d65a6ae81a935f38b964f290be7a1a75f256776f17383f9bb9f9203415622b60b2a152a7ce3420cb49c3592ab8aaec009a237a12c2c04abaa08a382622dc84a053c94881664a97381ab88ca41846e82c02e00c6033b4721db29b71fd29069297a2cc387f2aa5336816c66e75b594bcd144171c3f7ac6df8a9a10a71f35b39a3da7d53571cb33860315288c2f7843e855d27db6f27b38940f973b2b063eba12b3a8b73d46c6781ac87f44c91e982cb27e534161212b367ab74a318b0f41e7a060823f17814f9a6e4f5a9093a6379fb0291d99916b15abc596550f152bc79703f1b0393b720cb85a510d4c9557acf3e620cf994c0bf8c06c2606041e7c3ce6044879a7612c3a2fa587b1b7676b956291a7ba5a78527a163ae08696c7c881076189bc1623c8d360c8d85c287a9c0c6965d0fa315e2037eed604084416fe31b2f01c7678311ada765acd7f70de59a9a85a8249205c78cac786aac9a0a0a7352b18f9cf936165a9c39d99aac7c175a5025f1c66d04354480175fc3249930e66c9d06aa50e7adfefab6aa9c205c1507a8f40512a45cebfb2b39f3330a962ed717408e0934fde42a5e1cbf04c80f37d7dfc7eb53a785194c4a1232e61c37a5 +expected_private_key = 2f766ad78a0112b8cd4bf28dd0f589873553bf114f19c2719f61a32cbc85c71975b911237bc6aa6acb32b613cac9dc80c85493faf63c3e337c274542ab4729d02abc5dc07309032c7112540522575d663c89714aa7a456410144d7c2bc1041c03d5a56e08cc7e5663c01f52e5077288bb8cbfba21b4a8a19c055691e05c22f94c62c3cc2b6a9c155e2a4eb2bb9d95b8c9d5a6394d05af87b038c210d9faa266cf07088b3cc7ab56ff3366fbd595b3c790b5497b34b94a72d8153fa13b40be96b51315ca4d22be3828c3556843545c47b0254266a802a44bee6e5a19a446472322c6aaa4cf47218ee3c99247564c552c93ed589ea8bb2c637bcf7277d5b5058dd80342815b2e8864b4c330920a82ec76b4a7bb893e0d18278f47f84743223a67f2983ac8c4a1845a61259670b02d6053ca181ba4c1bcca05b7af2a27c59c1e4e38da723b787aa2f36c71e3be05039183bffea6ab3bc779de2273326b327d42517b6c6ed8c7f96c6330d4c39e3d2a7b81a538693329abbbb5947b068c3cf7b45c173c1ba9964c86ed91d0bf64e209c1910c218434311a50a2128d52754148159891e00475654ab30b9693ad507b2e19acb7fe6b14f27c09c6b2570b861926683a285014631c2d7cb8c0c10a25d073d3c067ab819b9dc27971825ae21cc2e50d377e3396f0266a5ba598bbe9a868b0b6cad2ca3a8cb503778967bb930d90795719b237238c1f831007c690186949c600c6f587ac0d81c8334c57fe0c59db3e2815d63c26c620fdd75836261644d99327a334ea5a40571f0cda39ca716d2bb894a50bc4cc84d6621b60509dac77ecaa39b9779a3696749ce83933eb70c1e85bb2dc3421ae9a0ef40ac2d83a1fac16c6dccb0aa16aff9a94bb6d125665c3001b845e7f20e7c90a3db636950b0836ba008da33500fe47fd4a81df0e268c62974bad02a6d3b2267f917e2046df3c1883187683f030a28a129902083ce26730438b0dc0042998c9472f5a7fdba371d74481dbcb9bc4cb281e7cc1dc4455823ae1ab8b233e83324544913dc261b6274464b656bcb645f87b0cf4512af443959e67c47d679020c2905d45e21da586ee8291085a8a432ac6afaac594081ec298dc13175779b8635fc8eae58982258759999a57b704a5b040245d282a9b6c9cbca838399523f26695f60389ad42f6512783ae65a0c25b7258674398839af28866671329109a58e579c026549f0b7041dbb6623665fbc9a2ede41c0436635325912366ab1364b5a3162c4b8c2a14480aa6bf165588b8d26ea968291cabf66a4e26722f87977dab7807a2c65a26a9cbd339bac0b24e6b46e0a8082be95bb7a41b1b8b670ed3105eaf994a06a6414e9abe2a1b608c29c94b846012a0fcbd6959ed411d8d0c70a32559c68c74d94b2a9707b9d9755e3c69ac40782e97a1f904a32da824c7459b59b174a9fbb6b41947f47b3361d5558d831b2b444818ffa4c17f4bfcf8b9c7ce451f4ca99884c13f85c24d3cc4740d2567a54ab0583a175759fd7e197f3000a39717bfd9c768248518d50791cd84dba795e85388dca21507bc669ff0b906bf515f38c04dc838d0d1357377b1601887ae1b0a0c4490d38a871910c695c50008e5a5a30e92dbf312758b73beb83625df3b8d5c47a7a334d4e140915ca1401d461d7052e9ff05f73a1598dc9622c324c1c8b5de9b0386ea3cd95b86d80085588ac69ae310be6b5b5379202f4f14878fbb5508907b99490e4191b1e13a6890a9209f0a12910a3e096747eba94a337af9e609da4e8a9f8003633ec099983b8e778ca3d72bca1c19b4fb4a0faa4459ea06782367580b7aa49ab74b60c4cef7ab3bb9ba081227a7e1ac2f5400f8f7395f96567403b2401a2abb0b70e92e6ca2102c597f496cc8881d7b688861c7988363112155b5b88271072a7a7d68b76036059ca5e402532ce8763c52ca237a334832832f2a49be3907d15852fced4675547796d3046535390d44580c24bcc3d67a50cfa2ad8936d46121a7f60179be7aad0746e8a2c8cae124d27181a374493da6a68d47387a44460b39a45b2619f1d29b08ba4495230470b87bb926279eb760b9041632317c4d7a19e7753458dac07eb73331d808ce318555e1a2828da2f1d101cdc9b8363990b85064f63226c36c71061444e17a28c3b56332bab4bec2602f5c31394c870dd21030997564de52602c2628c41cb7ac2388ef35371f870a21675ac522660268a1802a2e4ca4c7152a9776410910175fd08c5e0307f4c2a61c877abbd2185ce58738fda15335aba2c77a804f94077a777fb49854c7a78462263e435a1d7b4a5205ab879438a91eb60397704cd937e66c7310625a6276182d86894ef9750f1817d85709bc578092d3b65f5c84514361264909dc2147ae6f3a577097e64bbb2c679c845d827b1ac393497575e385bb39563e125c3a3925a21160201897072f03f45d6ba85db7eb1d5b8ec7111dd785ebde07056653507e967385945389493b95c0a95827583f01dcd473fd3138887d3472e18b24c1b7e2c837668fc6917175471f3caa1323a34432b72c7b68f658868a2ae87306109b1053ed2bcedcb7037ab72d8c2bf48d29a0822575cc91ca1e5698286c9b19a7471a5b652f6a900659df9183c76417f0fc89d743aa635791d588cae6f650f3d314d65a6ae81a935f38b964f290be7a1a75f256776f17383f9bb9f9203415622b60b2a152a7ce3420cb49c3592ab8aaec009a237a12c2c04abaa08a382622dc84a053c94881664a97381ab88ca41846e82c02e00c6033b4721db29b71fd29069297a2cc387f2aa5336816c66e75b594bcd144171c3f7ac6df8a9a10a71f35b39a3da7d53571cb33860315288c2f7843e855d27db6f27b38940f973b2b063eba12b3a8b73d46c6781ac87f44c91e982cb27e534161212b367ab74a318b0f41e7a060823f17814f9a6e4f5a9093a6379fb0291d99916b15abc596550f152bc79703f1b0393b720cb85a510d4c9557acf3e620cf994c0bf8c06c2606041e7c3ce6044879a7612c3a2fa587b1b7676b956291a7ba5a78527a163ae08696c7c881076189bc1623c8d360c8d85c287a9c0c6965d0fa315e2037eed604084416fe31b2f01c7678311ada765acd7f70de59a9a85a8249205c78cac786aac9a0a0a7352b18f9cf936165a9c39d99aac7c175a5025f1c66d04354480175fc3249930e66c9d06aa50e7adfefab6aa9c205c1507a8f40512a45cebfb2b39f3330a962ed717408e0934fde42a5e1cbf04c80f37d7dfc7eb53a785194c4a1232e61c37a564c819d9bf66855f6ae70627f04da8378547e5867e2eb9759fe0971efd601c4a11eafeca9e810796c34e8cfce9d59342884456007b01ddd12edce6d10ed87e4c + +comment = Official test vector 82, seed: "373fdde922cfc416ed96b444e445bdd0962e8989f6c50adf9912a89937c57217d3600b06c95440448e3f601ae69ca5be" +entropy = 2478f7d3de6041e7e5cd11c5e2ef483d1aa6218eb126444091535f6ae532fa7311136e2681df2ef881b51a092a9badbe72c9772c169808521c47149578621e28 +expected_public_key = be0aaff4d255d72c6e8424c2d5d23f0aa4c28094691ac4bf0f56a51ea4799810cfb024c151c35cc3c6cc90a41ab964370c2bc953a84a73c87a02813de34b933f233da28643a93388f944c033236372fa6e6aca085b598123f27122a40074a4af57684d46398e5d58b13a863b0b984e224a7ad52c1c4eb26909451dcf2a15dcb11ac4ca38d93ca350078138e0ae87f1390fc9045eea420260c913c6b54dd93495f31aac32350cd03500da308fd8ba0777c999cb4982c91e569a1c52396edc506ac7cc43264a05cc880191501860f1a32f7760ad3b17ff693508339fcfc05fae095c6a96c1e6864baf147186bc22dd882620e5a5f4516df92b8b715394c5677d0db913efb25459d6c636442a8ce22899f8943957bb2b281a8ed14bb5d0ce6de3086ea8b6165798619b2ecbfb22727cafc6409e23088c6c940c23e86a603788c07ba89d6badcef07d79174acf70c55b7b30c067bd8202a1a70998459c54384196f814515ec9c7f360061270090ef37ad32115242c2aadc0121e1a08623038b311982c669de3dbb1c7789530191b07a947c9637bfa241ed35aa1d03c81f0d70f8b95112a3b1b08b25c34dc7e1d577fd30a808ac574decbb51538c2a017287e62128f32afb0f7a73ec8831e6b975007592b5c652fa636c7315baa474f873a5da2e82fd146268dc951689ba83e046c0f4820447c3b3e6c78cd240bc4d21e0a4660eb1c69402b617b83057874122e203bd6313d7874a987f2987599cd4d7946e50665f7d9a80651cc8dbbbc4df605f48274fba0640f8609b6554a7760856259c32df00d3056aef65436a285583cfc9d9a644f66e382d4907c6d78aa461a2b6ba8887c238f81d31e796a675ee8b7a598afd5d79a0587965420a2e9f2782b71331737680a499aa759824d11acf1a001f9a5865b6568ed8a1f4f4cc38f74c24e231965e9830232924526baa377b2ee933a1fc4677ee74fd98a0881628315aa95085c7415a1a51a98406fa345a69802ba71cfc885816ea30fadea0232b13eafbc24b84347124bb41f8c663506665ce4c3801b09933c19675c1f9ce54c418207b69215c91b10451730de65a4aab6c97804ad33c50233f83599133510bb334d9c1f4b7970087700ef45500ccb31b7933fe74a346aea4c9bd409bc5a186f00bdca67cfa8d041dfeaa56547a71c35cef1b664629ac9d4f431cfccaf62a781a4bbb2adca7a7914627da380873977e6e1a11fec0938a3a886e9b328a8a539557f6c700285693266742f779bbe2e7a0603060673c7be9591be19a57a0cac91cd1c61860a86356b90715886acac2306190cff686883a61e56140f64ba76123c1b07614ff5c8a4b402cdba738ab68b749c1151da62c30dfaa3bf826d4848c4910c9ea20669735cca4df583e0c5412b610bce816fd17ab9c203a7ea42081901c8cd78940f090efb49718ac90ad6a101093580c13b5ffa0ac0d7b094d913a9ddfab03f835f79173e966746c69a0228d06a2c363e94522ec68312cd312eccdc688c4a88f6a5b7c3464cb7ec842fc1377359a162032c8c504105461936714f451481d8a4942d1715b6a65583999b96b0c47a914f2f721f5ec6315c91b009e714f6518bfdc75e828256f25740c91e7efd93a5d7db1850127df85b8f086dfc57f1f62a86d6ee7e45aff3f27bc1 +expected_private_key = 6c33b8ab2b4febac9ff7dc3e4a689f468a4f08d5c87ef8a142b4766e24073df336efa5a0d6fc17b6bb2c615658eb04aa9035560ff7979e27c65a85ca6b1b9bfaaab23d89c6a825cdf7e312f81066d516be72680e5a665830f74e371bc411ba86f00704dcd3c40c8c1295d6b52aca51ad41732032535af95bef907127eab1eeb54899a36961793ec47b91d9725643664082c4375f4843b0031b815c8dffcb7f25d4414191746d5aad14093bf2c005df655f69917baa956721b4cb8b8b51531a4a6c0ca50f8ab21dfc7cd9f81d730157a59b971e4b4a0fba8ef49754a7c2be0325c8bc623fd2a94a6cc4226677260ffcb64d75167d63334e395df5ba4505495cbc8c3a3e40ab68796d6c646775339c29683a21f921a7c6a79d39a95c876f782a27a6365908381d793b537d1a681cab5599817e050cccf7803bf9a90ccc4084743c96069183b08702979c9dca2b9d9bc26e1de849976aa1465b29eb260ffc64478c39945a9b402520172cd7861c5a0cc089a028c8200208b3e4d7b3a91cc8c209c5e1d201278b01cab34126c701bfc2913df501f6d73d9424cf1176b8616c04c10940ef9832957585ec350e9761505162aecb28884f659ea23125c382cf24f383f9b09feee8aacb981df21a6bcec26e2a67493b919fea06170c18b79e5a01e6e89516707bcc7ca353727825514aa0d52504606013e53ba916bd133814c36b98fff15f847b7383854f692450aad28231f2bb4fd839d2b532066114da65be8cc5073f9992e03836ca3a623c301999a56fb00332d1ba8a26d599d0f5a97975814be81fc9dbc536d1c165a131ca3c55d04a05d7a53fff1299d3860cafd8bc6e3b97e72a595d294303a12994510f74887fd1d7bb18da70bfc5bdd58c1f6c1cb56f5994b7f2225ce0ab29e8cf3dc851f1aa5bf2ba255f7215cc71c5da95115d6a98a2317224bc6de1b2c79353bc5c3c046a7a0933a73419f7b117b88f3a53777143546cd29014e15e37c33770a8a9a11bc2f38777e400132a812a984908b3d2b87fc465b564045e79453c0666e3682a894c269551afe25286fcdb681cb50b260b4327b46c2d0699beca103965b0a218902eb4680c1b8c3ecb2011a396b0dca97d56aad231168fd9a7cf177b85b7729de4a4bf035482aa7758aca9e1f36bc9033ea34c6dff91091e8b36fd2a2c6b1094a8338ad540c8f53cab80d73e7dec3977452915b616d0f0bf9e842663cc477cdb5dc94579d6222d1b647ef4d358c5435d3d0799242b66818a683e8c5651b0b26ce4909f8656ff35cd7ffa1c5988074ffa32df093bcda32aee2003825593b545b44190787c4c8656d85cac293f615811ccb35eb0413f44b1722e0a182f09481712ac68e3c9d31085ea77946a54baa91c8ab8e814c5b94206070c0a6037bc02a292082018933a5ac32141180a6dc760c2c9aceb3b1a1505464150a732664aa51b02a721b63759379a638bbfd07ff9a7a84e071fda70200c61894a8891dacc375c120a35e0a4f296a02845477bc0484fb5bc539c3b8bea3ed2511d480b1dbe76c640622b67a1a8e000b954057322cc005f88284d6290a5d720e32b5f6cb6b992bc182d66a73b5019572867640343f267133b060545d4b2be0aaff4d255d72c6e8424c2d5d23f0aa4c28094691ac4bf0f56a51ea4799810cfb024c151c35cc3c6cc90a41ab964370c2bc953a84a73c87a02813de34b933f233da28643a93388f944c033236372fa6e6aca085b598123f27122a40074a4af57684d46398e5d58b13a863b0b984e224a7ad52c1c4eb26909451dcf2a15dcb11ac4ca38d93ca350078138e0ae87f1390fc9045eea420260c913c6b54dd93495f31aac32350cd03500da308fd8ba0777c999cb4982c91e569a1c52396edc506ac7cc43264a05cc880191501860f1a32f7760ad3b17ff693508339fcfc05fae095c6a96c1e6864baf147186bc22dd882620e5a5f4516df92b8b715394c5677d0db913efb25459d6c636442a8ce22899f8943957bb2b281a8ed14bb5d0ce6de3086ea8b6165798619b2ecbfb22727cafc6409e23088c6c940c23e86a603788c07ba89d6badcef07d79174acf70c55b7b30c067bd8202a1a70998459c54384196f814515ec9c7f360061270090ef37ad32115242c2aadc0121e1a08623038b311982c669de3dbb1c7789530191b07a947c9637bfa241ed35aa1d03c81f0d70f8b95112a3b1b08b25c34dc7e1d577fd30a808ac574decbb51538c2a017287e62128f32afb0f7a73ec8831e6b975007592b5c652fa636c7315baa474f873a5da2e82fd146268dc951689ba83e046c0f4820447c3b3e6c78cd240bc4d21e0a4660eb1c69402b617b83057874122e203bd6313d7874a987f2987599cd4d7946e50665f7d9a80651cc8dbbbc4df605f48274fba0640f8609b6554a7760856259c32df00d3056aef65436a285583cfc9d9a644f66e382d4907c6d78aa461a2b6ba8887c238f81d31e796a675ee8b7a598afd5d79a0587965420a2e9f2782b71331737680a499aa759824d11acf1a001f9a5865b6568ed8a1f4f4cc38f74c24e231965e9830232924526baa377b2ee933a1fc4677ee74fd98a0881628315aa95085c7415a1a51a98406fa345a69802ba71cfc885816ea30fadea0232b13eafbc24b84347124bb41f8c663506665ce4c3801b09933c19675c1f9ce54c418207b69215c91b10451730de65a4aab6c97804ad33c50233f83599133510bb334d9c1f4b7970087700ef45500ccb31b7933fe74a346aea4c9bd409bc5a186f00bdca67cfa8d041dfeaa56547a71c35cef1b664629ac9d4f431cfccaf62a781a4bbb2adca7a7914627da380873977e6e1a11fec0938a3a886e9b328a8a539557f6c700285693266742f779bbe2e7a0603060673c7be9591be19a57a0cac91cd1c61860a86356b90715886acac2306190cff686883a61e56140f64ba76123c1b07614ff5c8a4b402cdba738ab68b749c1151da62c30dfaa3bf826d4848c4910c9ea20669735cca4df583e0c5412b610bce816fd17ab9c203a7ea42081901c8cd78940f090efb49718ac90ad6a101093580c13b5ffa0ac0d7b094d913a9ddfab03f835f79173e966746c69a0228d06a2c363e94522ec68312cd312eccdc688c4a88f6a5b7c3464cb7ec842fc1377359a162032c8c504105461936714f451481d8a4942d1715b6a65583999b96b0c47a914f2f721f5ec6315c91b009e714f6518bfdc75e828256f25740c91e7efd93a5d7db1850127df85b8f086dfc57f1f62a86d6ee7e45aff3f27bc1db315cafbaec2f8a0142f45affff65289e826c9244ab1cb03f9f65df3e3cbcf711136e2681df2ef881b51a092a9badbe72c9772c169808521c47149578621e28 + +comment = Official test vector 83, seed: "16bef67f7ac3a755c59c816478b75fcc16ce5844db537791accd1ebd49d2824b105fd2e970f728c8f0cf16e439a9ae2f" +entropy = 9d405d3ebdaf35fa8722de431b669722acaaea2fd10b814310b17f78b66147d16ceb14f7662be0c42779459f69a145c0e2ce9f0bd9a0cd1bf32ed5694cc9ae32 +expected_public_key = 690b34b6586039100e84215eddb39ad2d40ba9f80165623122a2c5faf3437ab0376894ce67397d32a67c3bfb9761850c1c68ad988348725c83a378143d504400f995157903b9d04ee43404ab2cc7c35b8e0e09cce4559945f5640450703f81c35ed332746162f7b8328f78bfc3359e7c1b4fcf06155fc745c70245ffec09eca957c8475c62b05bfff288a5e5a5c78206e48c3ef373658859c3d9636786980578c07b764641d6a87222224557d10436fc72b563883ecb0934e50b6ec89429d7792ec0bfcda416fc2ac323a58df3fbcdb6e023140478868055251b1c09fa023e240e109869c1d2967f598a529042d9859f97cca2e85a635418707b3aa1835b77df93ae4dc53f228083de6a04bdf58655c59bf57b107987b88cbc001e010b9c2458bdf138288190f955b62c7013dd5784c809a7b1a29f8c3c33f0311a555306327392ddd44ec8f72fd5893f56f58baf207f9ee98b7e31092f761c390763a8b57409c7c5c665a913e20c9b62a5e80646364aa8e3b95030fb2fb289991b8637ea57c7b324a25e0389ce979b5e816ff841456261bf042c85dad84f80d788076b7c69cabb8e389a72657d7d63949657b934a468516c36674194df1ac3f595a294c28d24c26e1b1b5af5b542e025a182868e1555442e0b0d064865ed5cc1665074e55aaad601779e591e1ed2ab07cc551437603d24ca743218fa846822b2857f871fa26834e0422746a6c7dad256bc0b4bfff21bd7309482d7669f8857543a0436140ec684c959d26f2f827a84b37534b7aa3bc0a08163689f01141b511e7d11a316d2aa7d73909e889dd000c20e38667da048278b5ee87188607b4210642f5c38866fac1549637c600c8be8c60c11aa394e8344b6c6536e687ef6dabac397abf1ca7486f6ae87d8a3dc8070b5687f7c6a73225b9233685c6b703d33677998c24e40a72894193cca1c5acbe4a133d85a6912587ad4ad522214974cbb1f877e16164683021ea9c335d41b000cf52a3ed45b2d95b7e2d061b5213db4c6bc36d76df5db9ee6984d31bcb1f6757de7e51871f1ae7f388c5134956d3286a49bba39967889c9a424772bf5dab014c94893a4c8b74ab099687919243c7633caf297b2b73ab15df419f6ec22d15a95553831be379ed0489749c495e3b6b8e190049a8065dba8933fb21ba3a751cff289a2e2772b06a4687338ca88c0eef1488b848afa1041f4f9607eb18bc0650055803041b728f2f1922cd984d228096ff29e71f097921423cb82254c40a615240a2482a3f5f095f5b399a8f9addeb6b726f43e3af64d09038cafea26686caa2ce2194cba660edbb083f92dc2a51142bbc922958c86c62ce7a4b3a4c95240d72244a912c3c193485208cddc4514495b35863cfc6cb41fa721a78080fd7ba72669ac6b29accd3b832d35ad70f7584e197d695b78c832000c1c337fc019f0aac04b2149a469420c15b2daf5281dba5dc3618e0135c043f139cc74b14e7451fc11328f06b73f124766403541131d94506628c30b7ba68564179faed9c9d2a20f3b61793a33a65e92b699a47fde974eecbace22690273a757da903a886778002d283a819cb1ea2d34b8462dcab57c85653e363629d9270738434ab1bb46bb71890031ffecaf8fc027d2dfa2a4ad271dd702f055836f40ca137e5d0ef9 +expected_private_key = 2220bfa6a447db5013ed5811b45742b6e95c723a35851518e04b1b619c5607944c341a1aca4c0eb297bfe3990d514aba3de30867d646cd76a1ec1176f1e84ee60704b0e04366e27ed0f321bbf42322f5289f5167435b880851b48de717e40a1b56387d4705815701bc2b80c55f33b3c20244e0e27ffcf43c457a3674000a4404b4157cbefa05c54f50021684059939a3aa088dbba13be56047df450afe33c8742abb0cf48e0b1c24e8719eece41ec4a3254836b4e45b4eebbb43d398a813bccc0c42cc4e437050740c892b657765b252943896325e3f4c45887452847aa315ba8c811b39254a5c3ee64f65823fcf2a92e3198d2981289e021530aa4cbd210fabf51094392e25e755d778a02ca145fff47165711ab9397a0f9b3def26bd0e5143c23a815c8582976521d63bc74d8b42b95280cdc77de3528628862f44d475f49ac204c87d2647414a4a136a094b7fb923bfd3496b187592e81b8168bdffd9522f60bc37052fc579cb3f7a398dd677ba14a3fca1248057a59a58531b7a1f1773735a27612520b03121390cf624d46927cec7c7d00ab13dc2ba6445236bc68642ec9659d7bba40aa692c40794bc4bf5f13fbb617e711a54bd825329ac6a9af2a88a54a600c0cd6754b4a3accadb397cabf2af41463c00512d6d206d011baf6d833e4abb8dfbf736df8036278a8125389c3b99940881760ac150967464483242dd52358a075271fb82d949af57f345e5dc46845a94a37893613a76b6e7b4d0db0edda213302677fb73c493a349704333278b201b6baa8315731a348ded27283dbaa05e057c26c35d68a5252f1715337a1543895dfa4c395f9909b7b1283b450b71730292c32dcffca05221b14849aa5f94888e2a3fd33cab3b380f8093742247ac27012e8d7a6b8702983dfba43601677679568a8051925133fbf6550dc318e387c3e3176ec9c3cad6a739c6ba5b72fa587f000ca8f06eea003cd05970652b0f3f92b8bd4aa1570b02cab21d2bd0a9937a499943ce285b32706589c11cb662461444629f5c755b4a09805dd5659127bdcf5466270a5cb6328fdd0583e701aa98d34095506284b63a6f7b39d0b31fedc43e20e4bcb39b99d82515e041627fc5402290be758a062822c26b750463141d9de8793b385f556a3a3f74bd8ab61f69304ac4082e08f2cd05e5beade17d2c87b9535a084a6b0547389d08f548030b1dda0137d170039e082c5583bc83695aff0898f7e19e54204582989556b924df35a00c518ab95cbb466b5ba0d8aef007a8294294870902e74152832365fdb79508b69e45484139b4342df8c391864b80e807b9dc8ddcd4463fd1a986986b81a62d79aa9565308ac1471f09d09a23f24e4ee5522b00265770674c61348fdb3bfdd539994b20ff22b210162961b56dba538252610fa607372db1317497b85307b61d890a62b90e4dd37246763dc6093af5f4cd0dc20081ba4ce2d6bbdc969580607022c590a1687004b0730af71c60590d1a6b2a5e51c742d2cbbaa826600055f4811287a062da1696a22808507aac327a9194c5c6d49c823557100c158e60b845af953539a855d217c5a77599b1783f7488aa85f222df73b837e4b8d1006a8fd6b5b06083690b34b6586039100e84215eddb39ad2d40ba9f80165623122a2c5faf3437ab0376894ce67397d32a67c3bfb9761850c1c68ad988348725c83a378143d504400f995157903b9d04ee43404ab2cc7c35b8e0e09cce4559945f5640450703f81c35ed332746162f7b8328f78bfc3359e7c1b4fcf06155fc745c70245ffec09eca957c8475c62b05bfff288a5e5a5c78206e48c3ef373658859c3d9636786980578c07b764641d6a87222224557d10436fc72b563883ecb0934e50b6ec89429d7792ec0bfcda416fc2ac323a58df3fbcdb6e023140478868055251b1c09fa023e240e109869c1d2967f598a529042d9859f97cca2e85a635418707b3aa1835b77df93ae4dc53f228083de6a04bdf58655c59bf57b107987b88cbc001e010b9c2458bdf138288190f955b62c7013dd5784c809a7b1a29f8c3c33f0311a555306327392ddd44ec8f72fd5893f56f58baf207f9ee98b7e31092f761c390763a8b57409c7c5c665a913e20c9b62a5e80646364aa8e3b95030fb2fb289991b8637ea57c7b324a25e0389ce979b5e816ff841456261bf042c85dad84f80d788076b7c69cabb8e389a72657d7d63949657b934a468516c36674194df1ac3f595a294c28d24c26e1b1b5af5b542e025a182868e1555442e0b0d064865ed5cc1665074e55aaad601779e591e1ed2ab07cc551437603d24ca743218fa846822b2857f871fa26834e0422746a6c7dad256bc0b4bfff21bd7309482d7669f8857543a0436140ec684c959d26f2f827a84b37534b7aa3bc0a08163689f01141b511e7d11a316d2aa7d73909e889dd000c20e38667da048278b5ee87188607b4210642f5c38866fac1549637c600c8be8c60c11aa394e8344b6c6536e687ef6dabac397abf1ca7486f6ae87d8a3dc8070b5687f7c6a73225b9233685c6b703d33677998c24e40a72894193cca1c5acbe4a133d85a6912587ad4ad522214974cbb1f877e16164683021ea9c335d41b000cf52a3ed45b2d95b7e2d061b5213db4c6bc36d76df5db9ee6984d31bcb1f6757de7e51871f1ae7f388c5134956d3286a49bba39967889c9a424772bf5dab014c94893a4c8b74ab099687919243c7633caf297b2b73ab15df419f6ec22d15a95553831be379ed0489749c495e3b6b8e190049a8065dba8933fb21ba3a751cff289a2e2772b06a4687338ca88c0eef1488b848afa1041f4f9607eb18bc0650055803041b728f2f1922cd984d228096ff29e71f097921423cb82254c40a615240a2482a3f5f095f5b399a8f9addeb6b726f43e3af64d09038cafea26686caa2ce2194cba660edbb083f92dc2a51142bbc922958c86c62ce7a4b3a4c95240d72244a912c3c193485208cddc4514495b35863cfc6cb41fa721a78080fd7ba72669ac6b29accd3b832d35ad70f7584e197d695b78c832000c1c337fc019f0aac04b2149a469420c15b2daf5281dba5dc3618e0135c043f139cc74b14e7451fc11328f06b73f124766403541131d94506628c30b7ba68564179faed9c9d2a20f3b61793a33a65e92b699a47fde974eecbace22690273a757da903a886778002d283a819cb1ea2d34b8462dcab57c85653e363629d9270738434ab1bb46bb71890031ffecaf8fc027d2dfa2a4ad271dd702f055836f40ca137e5d0ef9c8d853e65b5b118e28b7cb6f0d5d6f282e0ea20fd72f3690a6b232b20a8a55ec6ceb14f7662be0c42779459f69a145c0e2ce9f0bd9a0cd1bf32ed5694cc9ae32 + +comment = Official test vector 84, seed: "d0611f9ae5be4da5d7eadc9109944348e716cb3daee545721eea8c892e7831cf2e54603146454cbfd92387739e9a78d8" +entropy = 9a86490f0615f3edf789cb0654066e9ee339cc59f968281f3b89213f83c692edfaeb2ef44d2f608621e831187ce79b2d2f4a20f1568bbe76b0d3d5af36111714 +expected_public_key = 44bb530c48419abc7578b33d6db56c76179e9da3808ba4c8d7c227ba5c64afd5c87e01c1ad12a294758f45804719dc7369950e9e6398bfcb60a7819585a689462346aa5968dfa83bbb3b8a51bb59311c9d100a4a0c7586056201ffc3cbd92c3a42d6851ec064a89227b4d1551ca7af6b5b3e892b4e44571669412e4240a08c42551dcc50086389f9e0c0290956b5ac58844a84be308d0a5562b57b5cbc594ceae87910a13167f27ce63b822f201af5e9c33bca746ba7c5e8541fff17324228321c7a0ec976646a6b5615f80fb56351d319b31960aa8823426682a610652652994d4a78c25659b533f5b40e6236a6e704cd891502e9c2d1858ca64c94d3734ac0bbcab2db2f9e03450e721a38c82a4c26a487f006e1966fbf8063ab115e74f441837506559ba5b7266f62b17e4d959209b657193689a0354149880d08434fbc282713118d9daa89c52186ea918ce2c170d8380e45a32e9f710cd6f89daf91c9210b767d743f61655a9702051d7c8a46f17a681b136c0863cb62430d084d282099d1636c04d6b1ec212a74046d2d8108470123dd751db685a1a1fb3a3b2c216f51302fa13ad73b919a439d424a4ad9e12994d1963b3c0e0316739ce50a1a7c23d65acea61423a5792321a84ad2e1b3f5b595f11637eaca77fc753260e04cec9ccf55d70d4d567bb78749efd005c9525f6e921f0630c25cb9a129781b9b864b7556272d5b4164e340d9464bf192979a073384f6a5e52aa0b6b74d43faa5412c5914524974161afcd91660705659dca87ba482d67c8c1400b069e66a19905b331243701ac8261952c5b736b25290235669fbdcc254631294fa2e97c440d97a0211c35c2ff4b6009aa66e27cc09bc09307c7b3794a5d189892ea60b2b323e95057ff355114ab48613e2760e00baeb82b0a763067e216aab899e7ca06e195a5e92486ce8911bfd5c7d956318ac3b029436a9d88c56aae2a3dc7b382f2c5e7265a037a827761447fc59a40a3c8693bc996ca786fa7ac1bbcc6aa404a1bfdb3d227c6abe42cfc463c2f1542ae418cf4b38cc2c1595f9343d41b4a1967c7c94a7a0ae91cec8235705805af096cbefd0cad6dc0bb5130907d64e76e4be957a117d121d66071598112ea7d02b9648cf53e57af9e7cc3c9803aab327d87c53e41cb9bbc42368d332e0a963c3385c18936ad7483a5f4292b625c844c2282f25af0c86984ddc09371ab555d57de146664faab59dfa514f8bb8d397a987bbc8dbe147efc2a34daaa712baa1e36c9c5113a7f47ba8c4a83db2dc79ae93688af7c480dc8adf0b12d7f5453e669be2d805dd6961454ba8b40c6efa961e53da19eea2243c998b504c8ab9eaa2db11b2f9b591990040954a1567074e69154ad6e618d0830d3b554fe4c99f48b51cf6609952cc9693acab000c335b98126b4b45a9f317f80a6049558fe9d855a026aefdc649d295387c530e075ccb32aaa202171c6f6907a4a2202a9c5fcf252d98328f12f927e31c596047140af9b177e0352b120954d00529a07d6b2bce5026a6d7cba01231a85ba39b1692694788c9215b69fcd111fdc8934a1ba24cc7890eb479aef01ff29161b0a7ad921bb72a8b495ffa74c62c880bf03f0bc175eb865a17ecb56e0aea501bef8e12d3025185ba4cf8edd1b0f297471d58c26516 +expected_private_key = 7934a9fabc835bf9a77bb807332251daa00876e5500d2c59f07485ed01bc934911a336acde5527dd166476ca1d1aa558cd88cd7bd17ce1791958e851991867c0525c9472a953c8b04a730e2e132c6c26811cb86f3234229f4caa2aeacd2e3c840e97b8f1805b94d7317b08354bcab64887a4e6a98ffd90a7544562ceabbcce6489c6e8534119c9589c405d7a96de3230094a459549b6f37078f2c01fc9080f049464b0a969eb742419147c8b39b8065a769d400a17bb25de51a699b69d54ba460d33ac6a6965916829b7a578d0b24bff786cef9963bf961adcc20f9a0cb1c159865a344a0e36879c67852df50aca08a46e72a4a70c027ce283de5bcb219808f2635bd7540915c5485ab70358cb017882b12acb4426b22b02605873f2bd0da59a658075136cbe15418cca0a11386aad43a52e3c5ac97f36bc7f648808c260643c325cf456e6166eeec74ee8476ad62c73d7d334ac279d84b66b6c8aac217a813dbb3dc6007317a165e6a1657d0277c1e683beccc956d973c7624e959724ff9275c1aa2bb5aca75159721b8c6d7b299c7acb4704c654335982e83ab3724ccab3709d20601c2a943d5bfbb3d384a7e83a7793905301b1704cf49992077b19f0204f3394717c9ab9a173113004fd325edb797a30155d0d2a1e4984644f245f5b495b56a98fdc487b29b4a5c6dc4e3047a8da2c9325f1705613705628458bd525fb333087cb4b967a61a994cbefc504d18c1b8a62898af32bc454a57e264722897d5dc71e32c2495ca857e1a234ae61c77083ba9b780342d7cfdff8b7ec1257b79cad017113a3238510c5683c3a8c396986ed392b0122c16e34a7249691ea7a931c44087fa1731746c1f3855bc72414fe3484d85b5e2586b6231b4bcf27831ea7b57070a815795f43e90b2112b235f5959ea253db76192bcb11d4e16399d40c5dc0a15d98c3b3b0289f07839f7738aba3281d45aa0a9ca1d349a64e79246c2c7770227f1e1cc74db8ab7ea7b0e60a9dc0e45443b30ca656cd6a8897ab105bda51b02179936f04374554a52992710f2a70972479462a2859736c2fe4359a474939ac3531b2905f90bc38860b5615abfb1a1327814c01048bb93c9725c7c3b0547921975766a97e29d529e4d8a090c36820db0fec33277cc679cd4a51f7ca05f204bff20acf63ec403ac7ccab951a8ec166c545abfce8734833274f724e77e68137967da75515e3c270ce79838839721bf3a14c952085071d6b3a555ce62d96e7736a583f44f726aeb921caa340d4bb788d63645deb2621629dff8a2c51d23bfee95caa7756f1884a0cd263039c37f7415e83d4908507c1b17a7308cb329d829c86953422b8b2f1786a4b86b980751255339258572a02ab22ad845632f859eac223e1245ac3533d359246316a3cc1ac58b4e6386592859547171ce05dd7a76bf8e93901eb7f40114175ac45e0b35109ac57be844c52d31a7ba60a24f30ef0e45581242c02e020ec86af106836b3dba8071bb8e8574fdf208100982e55f4b0dca72521440a2aea68c57b2039d14b21a56274972eccac7eed41c4b26cbe2c973507f1cdf4e618077406ccd3c8c5118545178351522485730b1a1ca7971b01766b914e835244bb530c48419abc7578b33d6db56c76179e9da3808ba4c8d7c227ba5c64afd5c87e01c1ad12a294758f45804719dc7369950e9e6398bfcb60a7819585a689462346aa5968dfa83bbb3b8a51bb59311c9d100a4a0c7586056201ffc3cbd92c3a42d6851ec064a89227b4d1551ca7af6b5b3e892b4e44571669412e4240a08c42551dcc50086389f9e0c0290956b5ac58844a84be308d0a5562b57b5cbc594ceae87910a13167f27ce63b822f201af5e9c33bca746ba7c5e8541fff17324228321c7a0ec976646a6b5615f80fb56351d319b31960aa8823426682a610652652994d4a78c25659b533f5b40e6236a6e704cd891502e9c2d1858ca64c94d3734ac0bbcab2db2f9e03450e721a38c82a4c26a487f006e1966fbf8063ab115e74f441837506559ba5b7266f62b17e4d959209b657193689a0354149880d08434fbc282713118d9daa89c52186ea918ce2c170d8380e45a32e9f710cd6f89daf91c9210b767d743f61655a9702051d7c8a46f17a681b136c0863cb62430d084d282099d1636c04d6b1ec212a74046d2d8108470123dd751db685a1a1fb3a3b2c216f51302fa13ad73b919a439d424a4ad9e12994d1963b3c0e0316739ce50a1a7c23d65acea61423a5792321a84ad2e1b3f5b595f11637eaca77fc753260e04cec9ccf55d70d4d567bb78749efd005c9525f6e921f0630c25cb9a129781b9b864b7556272d5b4164e340d9464bf192979a073384f6a5e52aa0b6b74d43faa5412c5914524974161afcd91660705659dca87ba482d67c8c1400b069e66a19905b331243701ac8261952c5b736b25290235669fbdcc254631294fa2e97c440d97a0211c35c2ff4b6009aa66e27cc09bc09307c7b3794a5d189892ea60b2b323e95057ff355114ab48613e2760e00baeb82b0a763067e216aab899e7ca06e195a5e92486ce8911bfd5c7d956318ac3b029436a9d88c56aae2a3dc7b382f2c5e7265a037a827761447fc59a40a3c8693bc996ca786fa7ac1bbcc6aa404a1bfdb3d227c6abe42cfc463c2f1542ae418cf4b38cc2c1595f9343d41b4a1967c7c94a7a0ae91cec8235705805af096cbefd0cad6dc0bb5130907d64e76e4be957a117d121d66071598112ea7d02b9648cf53e57af9e7cc3c9803aab327d87c53e41cb9bbc42368d332e0a963c3385c18936ad7483a5f4292b625c844c2282f25af0c86984ddc09371ab555d57de146664faab59dfa514f8bb8d397a987bbc8dbe147efc2a34daaa712baa1e36c9c5113a7f47ba8c4a83db2dc79ae93688af7c480dc8adf0b12d7f5453e669be2d805dd6961454ba8b40c6efa961e53da19eea2243c998b504c8ab9eaa2db11b2f9b591990040954a1567074e69154ad6e618d0830d3b554fe4c99f48b51cf6609952cc9693acab000c335b98126b4b45a9f317f80a6049558fe9d855a026aefdc649d295387c530e075ccb32aaa202171c6f6907a4a2202a9c5fcf252d98328f12f927e31c596047140af9b177e0352b120954d00529a07d6b2bce5026a6d7cba01231a85ba39b1692694788c9215b69fcd111fdc8934a1ba24cc7890eb479aef01ff29161b0a7ad921bb72a8b495ffa74c62c880bf03f0bc175eb865a17ecb56e0aea501bef8e12d3025185ba4cf8edd1b0f297471d58c26516f69bd52cb1d071f1cc7720f949d44f66f40c917eb30f3a4b0eb519ecad2d03dcfaeb2ef44d2f608621e831187ce79b2d2f4a20f1568bbe76b0d3d5af36111714 + +comment = Official test vector 85, seed: "fbc38d7614d7718e931edb850d2c6f0c5eea9ee889b3e25bd69ac255d5b91e885d93e808e66bf9c88c655dc594da5792" +entropy = 6dfd9b575872560c7bdc2732c4a28dac4db04e535eb8e402c3dffd145c09ce47a2985c1c4d203778597947d710dec806e36b0cd949fe460ef141213bfc525e5b +expected_public_key = 9eb92fff176a27197eb4ab0171211dc7fa954c652698c50105b5c2e9f7a2a887bfb40880f8624e1fc67b1b43a51139ac6025b9eeb60925d424bb82c58b4b617618c43c99b07fb14e5b86538d29700e1ccb4f53a52bda2ef566b20d8cce1d7616dc81398d14abd03964940c794e6100da994d5bc0bcf28b04a8971214e7ab9285515ef09a7b486ecae5c84655c9ee15255b715c3b784d9c243993171c604a3e29450728396e7572228610bb9ac04b06577b3636c137a24e2139b48db005553152c6b040cf0b2408248675eb90afb66d6105537a316c7c989746f43c3b284342e2cdb5f2183a16ce71ab39c67797112b0b907c00f6a47f17db08d924826d526cf88234a25676d82449f93b2859076978860e499a0de134a936e35f06a7802456008c23970818318aa2b55a1762a9394dda7a49ebb4b38469410f5945dba2801ac25ba39a2df819b0db194b53c4247fa5065ff99f73e71d51c22f51fc262dd2809ebcc6879b0d90004da5ba7cc9462f6c822ac8fac8ab95b769a465cd743ba2babb26958ab9c3494d329a0c736c28a9cf84f5c90c5a0594485a9b339212d01bf6910105d44109b09bd063b4f2f3b903c94dc650812ae5cc87527754d476ffa82f34f39b5462006029875712cfb1da648dabace5aa1590b5ccea82c20e74795c71bb70826ef4d0bba580a447693a42d8af3256c64ce327b370ce576b6343f2bf8fecc76e1434d5e448aa8a3b326584ddc56496704be54108f8572170c2bc39680598017641422bb81645959b8092e82a54c68aff60b78be78107e7bcacb241b09913461579b52aac5c6c8627cc033be2273580a523d4cb7979cb65d7056643856be187ddac112799559a87168aa96a18089a6c547e87da949c62b8ea876aa0192af409bfbc354f05dc08fed46904a2688fba59fb71b83031a19bc8a6350bba93552be0c01b73c89964563fe588a5b76971dacba69868b588bb2f9076532d6a8fb4316dda4c85c2945a2a29b6ead3900e50abef2b44375ac36bcb0e028a20cce58353c827f1d53a9a0510e3827cbd1383a6d18c0d22c374e2b6061c2197a6cb094ca9dcb42f0418c24a9cb893c45423447cd5eabb0b9b410c9144013543e5c3bad525377ce8073d4a5f4a22bb24874b7e21523cca731265572b487e3b42ae581a617437348c290f00ad09460aa0c7b6a1a53128e4e01b3c406a296cb35ca0bd0d1917dff42a4848ab3bc28a2a28044c719ccaac45c513ca007653bc854dbdb79181157aa17220153ca3563b21be77aceae06bcd02531ff5b7f5453db0119364dc4e97ac7a495287815b5eb512129643aac4f42b3af35afc1207db0a3194302fef097bae37bf382c154e78154b3407bbd90bb2143bc285af1ea0b1b4fbcd3ea373a077c6107ac2800c89f20544cb7a83baf26ef19367724b1c989c39bcb4337deabf7d531fe2b3327f4ab0f6457c5f3869590c49664923993cb2b0103b8e8a41cc5793acd192a047972978a2ea1b9e354cb135f2ad8928574b2c14fbc1a4c02715292c9052b69ab2a8329c02938bfa0994c209f816a24eb13f4365af2d20240ef66f9bf6b39d54ab5d350c7cb3cd6f645379815aa3028232bc89bb89bfa2c62e351a3c6401b7b384ec61a83f9056f3665e523a0c28d48e778b0314c1ec2a83ee9805d0 +expected_private_key = 46f47850e2b9aa4a6d209125be58806002c278a6295da7a4ffe85551529f17d83b358b243f2a622f353eb6138cc6380f8ad3340d7575e865a6cfd34bf473a3da8b9fc961cd921452d09b3209d041d6612576c573b08422715160b891a3370268468078f5464d7e5b84b3a3793f0c7cb2a0a13df37b9763cfbf054c768b1e65a00e8366b406251f812c5d428853d0e00f7bd58a8e348275461c1336c2ac6a39783a35d849aa9a847f37f50be0b95f617bc7adb28c0506c16ea3ce89aaa28a9252f0e228d0fca732289d05d9395133a82d8cb76db2023924273b39cb52b5a846f338b96c5b6f3acb41c7265a0c5b13094231f05943d58875ba7c2a6889f16107d325ad1b810a0b3c9e8928169d440194bbb90f771796856f9878158a432eff742fbfd5acaf59521e361f448c0bebd805a1b4435d0761d0448d83e1201a506a0b0a4980172d05e88d7d87b42054680cda74a386027aa4c3c5193fb1a893bec2722d55ab9b840d99cc81408153b383345192649eb99825bb4b1957326c4791a2722951c0ab67472f4841c20c23926c3c331f24c360e81977c2791ff3171c2c489b68c923b65d8ee6bd2d510e6ae97fb771bab401bc1a42935f38a0fd43ae2f8a24d8fc3f6e15c2c6bc800b73ccd8e91c592452484b44e6b2a624881064526182950349c78c7d58180b1676b5191eb6065c50596232b9566e4b8f0635a7d71927f8eb8572e62d57996ddf66cfed2147dc3451e95c034d6b9145bc0d30c915d66b1cce367406212f8bb40755091c9cb0306a490ef5336e21f82c1b7b6ccc8980da28a348815112f00c57362eb163a36e016d60f020bd12b6796c9a88a8af4e833fc4585652e76f2ff77deed799757c7f64e07ee6e6a300dd1cbbc840af561746d279beaa71dea5318aa3cb3c4c63c4a91e0fb60d6dd6abf1fb24d1b078de9413f1b0bfd8916577c4cc9e0b0c332625a5fb705e94babbe0659e022234586529a194012a6e9e7650c504c380436e1df83e5c5c9e22f79f394bc0f22a0acf114b90829b43112fdd617089c8b9d872b70d7027d74402b65058347b56074ba33fb91998e5a559d46622f5423808c8236317767a32e4772ae66ca472ec7828d682d045835ebc5e0089b0ff955dcfb9605214a3e5087f7ee57d5369abcff1be00c7bbc5b5b25a0c1d853424123c98fb330318432d324bbc7330342224baff909849d65e1d08a77e07d07cf16ce6f64fc71374eefb66bf9c742e518f2e30c480f82652b81c4ce7bf42593b990980d94062f96a7178258f31e2b90e86241c04b7b44057bf4700a040b6c0b08e4e8a6bf1cb1eef738f51ca9beb9c19b94b1cc623704a6c2455009f48b4cdd0f4a5d7f06320457670db92c7a4371743593600022da4600c56296d336a52e98888818ca10282d4767010a7abdf81bb6752048b5b163da385d7c5cb134108ecb03398500c1612a1bd563b21a0bc7b94c9719a75bf3b3e02143bf04a7e3d9b0070c4b449cb9594a1a8bbf871e595178bbcb611b466a8677905443abfa1601a9664c5f54f36dcc1ddf35381f586b4aa4566c02be610186df8493a30479f4c72aaf049a6666e806b13fd77c3b738721f81218b48984ef374babc0156f94e9eb92fff176a27197eb4ab0171211dc7fa954c652698c50105b5c2e9f7a2a887bfb40880f8624e1fc67b1b43a51139ac6025b9eeb60925d424bb82c58b4b617618c43c99b07fb14e5b86538d29700e1ccb4f53a52bda2ef566b20d8cce1d7616dc81398d14abd03964940c794e6100da994d5bc0bcf28b04a8971214e7ab9285515ef09a7b486ecae5c84655c9ee15255b715c3b784d9c243993171c604a3e29450728396e7572228610bb9ac04b06577b3636c137a24e2139b48db005553152c6b040cf0b2408248675eb90afb66d6105537a316c7c989746f43c3b284342e2cdb5f2183a16ce71ab39c67797112b0b907c00f6a47f17db08d924826d526cf88234a25676d82449f93b2859076978860e499a0de134a936e35f06a7802456008c23970818318aa2b55a1762a9394dda7a49ebb4b38469410f5945dba2801ac25ba39a2df819b0db194b53c4247fa5065ff99f73e71d51c22f51fc262dd2809ebcc6879b0d90004da5ba7cc9462f6c822ac8fac8ab95b769a465cd743ba2babb26958ab9c3494d329a0c736c28a9cf84f5c90c5a0594485a9b339212d01bf6910105d44109b09bd063b4f2f3b903c94dc650812ae5cc87527754d476ffa82f34f39b5462006029875712cfb1da648dabace5aa1590b5ccea82c20e74795c71bb70826ef4d0bba580a447693a42d8af3256c64ce327b370ce576b6343f2bf8fecc76e1434d5e448aa8a3b326584ddc56496704be54108f8572170c2bc39680598017641422bb81645959b8092e82a54c68aff60b78be78107e7bcacb241b09913461579b52aac5c6c8627cc033be2273580a523d4cb7979cb65d7056643856be187ddac112799559a87168aa96a18089a6c547e87da949c62b8ea876aa0192af409bfbc354f05dc08fed46904a2688fba59fb71b83031a19bc8a6350bba93552be0c01b73c89964563fe588a5b76971dacba69868b588bb2f9076532d6a8fb4316dda4c85c2945a2a29b6ead3900e50abef2b44375ac36bcb0e028a20cce58353c827f1d53a9a0510e3827cbd1383a6d18c0d22c374e2b6061c2197a6cb094ca9dcb42f0418c24a9cb893c45423447cd5eabb0b9b410c9144013543e5c3bad525377ce8073d4a5f4a22bb24874b7e21523cca731265572b487e3b42ae581a617437348c290f00ad09460aa0c7b6a1a53128e4e01b3c406a296cb35ca0bd0d1917dff42a4848ab3bc28a2a28044c719ccaac45c513ca007653bc854dbdb79181157aa17220153ca3563b21be77aceae06bcd02531ff5b7f5453db0119364dc4e97ac7a495287815b5eb512129643aac4f42b3af35afc1207db0a3194302fef097bae37bf382c154e78154b3407bbd90bb2143bc285af1ea0b1b4fbcd3ea373a077c6107ac2800c89f20544cb7a83baf26ef19367724b1c989c39bcb4337deabf7d531fe2b3327f4ab0f6457c5f3869590c49664923993cb2b0103b8e8a41cc5793acd192a047972978a2ea1b9e354cb135f2ad8928574b2c14fbc1a4c02715292c9052b69ab2a8329c02938bfa0994c209f816a24eb13f4365af2d20240ef66f9bf6b39d54ab5d350c7cb3cd6f645379815aa3028232bc89bb89bfa2c62e351a3c6401b7b384ec61a83f9056f3665e523a0c28d48e778b0314c1ec2a83ee9805d010e01965f9c196d2f5f90ce3ce8f552f8a0d76ba8f5345365392febc50560012a2985c1c4d203778597947d710dec806e36b0cd949fe460ef141213bfc525e5b + +comment = Official test vector 86, seed: "1722219cb5db47374eb0af0232c856a57f026f1cb09e5a5799f4c333dd422ff6a0a67c4da502faae727fb2d45dafcf35" +entropy = 6fca9f4e384d8418075cc064c70730801bdb8249899d456a77130d5beeb3662cce7683f8a03d3cf04e46970ff7d6a12494ae12558346dfc8fd9370bf944a0102 +expected_public_key = 5c405485d51fb10cb0f150b9db466c53e070f5849049d225047bc47aa15f630a6d62c5b179906ee6c067fa3384a4c22748f984eb31ab4cd69083da31a5b45f586560371bc99113c44d05828fa7687aa649b261beb0eb4eebcb8548139bbd6a0a844ca1e4e59f3d7c4372ea8632b278a7e68b59032012c5518a8021bd5367557077c9c1b4a50944ea1a834bb61004b2cba7f6401a57839a3cb85b326449a25457851b4a2bba2e2187f040745fb608079c8b59d2b191813d51c5c3f329b1f5e40771e1b33f63ca400555ce5351cffca2ddd268d7855151618587c8b037e7ca290467e4a7c2c38290b84ab8dc4a839f57102dd559114092165b13b130b41bea2f857c84ae45c1734375a3ea91021014d29ac58f12bd5a44b91ce986e094a66089479dcac23a6275b864195df24f2d4a97f1b26b508c3a5bb89b9f0a913867c1294c252d5022d9fc60ffeb3ff3c29b2dd1aa97f22271c5c8e749cacea39f2c637ff4a235882747ceca1d95e093966462ad401510ec112026bf0fbc106270988b2c35cc7269da693a7d67052f9156d30c916ad6552eacaa3ac2396bc56668686ea8a1578e46658a71b4b7365ae56a263c783973c1b63100b1aff4c3feb64856a781334c6e83519e541511b4d581914c697ff31239dac56662a145316ac4d14e522480782c4ec52b1a2b8a85f657217ed11426a2a606c01c17171fd10824c07042b189225d40919aac5cbe05b031689b1ea61041f6091d961a8910a205e62ff21909c6b4095b270d87c9727a2b611118c84aac033ea9cab5f40efad6117f2160a56505fd775d3f415aae9271a9b2b1fd1964edfb772a9c4875f06826a49c26e93f0b1846e006468de71b98ac6fc0f81ab146236739c9a7b6c13952089d621936e8b265b50dd4016547a2abd52339daa0b459d265558a1d9b61c73e49346396b6155195c9c3a437614e68e23143f09fd28857aaea50aa808600f5c5ca33c5963cc00c4b1c1ce2609486ac4f1b2ddb7b06acb62398a32320f315dabcaf5d4a833e2a01a6e7c971ca15e40c459ef18db8452aabe1584412b4c4dc52e6004ca56b5f48555041cc828a7a6da77c435f05574e5c25efc3c6057443eb77993c987cac2363c3030d88e288f4d08966e624794078a39c53ecf273df178cb022a5fb025a2687409a785cd6c019f5761b0a3087ae91844a69c2a89c1a00b1caec7c1f7a67425b87be02d80b67ca6c7dc3b45bf425dfd33dc5a13e7531907ed6329593c333466d9628668b98422c985182f8c0952cbf5052225363398e516d23678b5320a9cca38e21c6be86822c4fcbb9094277bce80992858c5498c6bcc57db982c196b1a78c317975544ffdf33e57a30dd29a5ca4a22a918746fd9a84ee1008db920432e39b6ff182c930243cf350c6f486832a807a36c8a9242a5c39140eaa7a45bace0086a86fe36be28acec756b5e9a47225638659b250c52b564751ce8c42c39bd1046d2b6cda70b7951707b63073f0eb5ea3fc5229f816ebf4007ce97307c6607b4ca17ca30330570d4f39bf76998147060cc04b33d4b91294f85f4a717ef9c288e3741f70fa5823ab8329f56d9d0b05c996701a050a387362db09427d5587e7751131953146ea3591818f0dde74e33983c010419218b08822da9c3c62eae1f2284801b3e4 +expected_private_key = 8747252c693a0d6c06ab66071b13517e1c45abb370d26aba3fb31641a170b365c5f6235d1fd688d81c72716a3921420d228a7bd5a1c48ff445c47489b8116b7ca14d3ea78b20a7b5e579c5681187a2aa8fc900557501003fb9bead185ba9e7939f247bf1757ea66a4392095ea90239a3c67a8ca70186047d9a6b06b8887fae01ba8e556319a003934c88ddeb05f9f3b4964a6545e8443f57383a2bcdafd96c794b399296615bcb9c59f8703595709724b6a4bcad06e116f4542c4322072e3c6713015b1339512419b4daa8c87f5a8bff481964a8ab8a101943230f9527a10a604df6275e1ef18fe54a57d7544402134ab77802333897d4769ac23093f9b951d735b5623452c90270a0896ed3a81bf1191e451a4a67a4542556af78f1690982360ff1bfcff66386827df93bcd894ac8c996be6e0a29de70ccd459b9de46acc9e8043bb82d01c40e5785845ff4b0ddb8184afc5e52a72e899093669a9eb110a100a1159241bdd40612a9b1955b1752810764e7b68d89704a61442adf68108aa229e406cd10b6527a39a6b46068685b5e802cc25614492dbb6e06ba2160e930733956e7b29ab9981d4b477cd4eab880e56eb711b278f540ac204a996b32fd06b8bfcb7729660cf5125fe1626199f6285da628faf491dce2ca3bf285902350d52c0649339f31ea3ab764b90701bd647194fb27383681c13470b8d5ccb61dd74c5f666ffea7b0714c469c4803107235599c998349b5be7ab9e9dc6f01e928593939270411ee2490f16c54ba672ee03b710978760b962319bab3c2fc67cd9c2e9d4c153a8717826bc4c3d6c7444c051a61a06a2c87a1207a20754e9d7725b91077766871509ccc93f5a1fc1c20680263082801f6b81e8f319b92110f2da22f0d8c251ee4531b127c44b378da6a0d26f55de3285190ba1357012e42521cd1855252147d1abcb1582422f55091b5eaade93194cfa0be536343a282c4a948c355984cd20a7ca454ba034ac7355b02730107a71b3986fa01faa38d17e07494fb510e5526f690bfb27294fbb963a0606e140a182a9a247029abdff6bd8e876ec92207312432cc2700ec4c6a4a7037c5b612eeb2099d54872a5884e28981d794c7855590f1f1464017c8724bc92e0b644de92b5b80a573f641e4e65bd6f0396184086d6a5a50662f9cc6241fb7241d194b6d23ae6fa3c59fe60c81309ff7e39f93f72bcb0696edc771a80cc5ffc74138ac9d01b95defe7258bc555e3e28cab6a73372337efa0b4aa0c7d13b312a7313f8b63426c6677407903822aa1acf4acf4a130c4c68dd4dc47dd061ed0a4969e5ab630baa11fa0aa51133c6509c83e603425a385730aa0e07a2bac0754358c812f483f5ca6bef3105cce4cc33532116c6493f19880f693581e08999be24db44b84970c8fa4f6784d50614cdc9e626a31966acf81309ea6a730eb42011663cf10a90a9ec12f3fe133a7d02cfb95cecc6b52cc08571bd03e8315532b7c76c2040b60e9021a24734854b6a3d77cbfd087015410b7322ad5d9b04f651f895ab5bfc25f8cc9703bc67dc5eb5aede41682a17feb1b4339335efaa44a64e8b4eb0bbe17fb00875a06318c1e68c42e6ce0946a59c61700a72779765c405485d51fb10cb0f150b9db466c53e070f5849049d225047bc47aa15f630a6d62c5b179906ee6c067fa3384a4c22748f984eb31ab4cd69083da31a5b45f586560371bc99113c44d05828fa7687aa649b261beb0eb4eebcb8548139bbd6a0a844ca1e4e59f3d7c4372ea8632b278a7e68b59032012c5518a8021bd5367557077c9c1b4a50944ea1a834bb61004b2cba7f6401a57839a3cb85b326449a25457851b4a2bba2e2187f040745fb608079c8b59d2b191813d51c5c3f329b1f5e40771e1b33f63ca400555ce5351cffca2ddd268d7855151618587c8b037e7ca290467e4a7c2c38290b84ab8dc4a839f57102dd559114092165b13b130b41bea2f857c84ae45c1734375a3ea91021014d29ac58f12bd5a44b91ce986e094a66089479dcac23a6275b864195df24f2d4a97f1b26b508c3a5bb89b9f0a913867c1294c252d5022d9fc60ffeb3ff3c29b2dd1aa97f22271c5c8e749cacea39f2c637ff4a235882747ceca1d95e093966462ad401510ec112026bf0fbc106270988b2c35cc7269da693a7d67052f9156d30c916ad6552eacaa3ac2396bc56668686ea8a1578e46658a71b4b7365ae56a263c783973c1b63100b1aff4c3feb64856a781334c6e83519e541511b4d581914c697ff31239dac56662a145316ac4d14e522480782c4ec52b1a2b8a85f657217ed11426a2a606c01c17171fd10824c07042b189225d40919aac5cbe05b031689b1ea61041f6091d961a8910a205e62ff21909c6b4095b270d87c9727a2b611118c84aac033ea9cab5f40efad6117f2160a56505fd775d3f415aae9271a9b2b1fd1964edfb772a9c4875f06826a49c26e93f0b1846e006468de71b98ac6fc0f81ab146236739c9a7b6c13952089d621936e8b265b50dd4016547a2abd52339daa0b459d265558a1d9b61c73e49346396b6155195c9c3a437614e68e23143f09fd28857aaea50aa808600f5c5ca33c5963cc00c4b1c1ce2609486ac4f1b2ddb7b06acb62398a32320f315dabcaf5d4a833e2a01a6e7c971ca15e40c459ef18db8452aabe1584412b4c4dc52e6004ca56b5f48555041cc828a7a6da77c435f05574e5c25efc3c6057443eb77993c987cac2363c3030d88e288f4d08966e624794078a39c53ecf273df178cb022a5fb025a2687409a785cd6c019f5761b0a3087ae91844a69c2a89c1a00b1caec7c1f7a67425b87be02d80b67ca6c7dc3b45bf425dfd33dc5a13e7531907ed6329593c333466d9628668b98422c985182f8c0952cbf5052225363398e516d23678b5320a9cca38e21c6be86822c4fcbb9094277bce80992858c5498c6bcc57db982c196b1a78c317975544ffdf33e57a30dd29a5ca4a22a918746fd9a84ee1008db920432e39b6ff182c930243cf350c6f486832a807a36c8a9242a5c39140eaa7a45bace0086a86fe36be28acec756b5e9a47225638659b250c52b564751ce8c42c39bd1046d2b6cda70b7951707b63073f0eb5ea3fc5229f816ebf4007ce97307c6607b4ca17ca30330570d4f39bf76998147060cc04b33d4b91294f85f4a717ef9c288e3741f70fa5823ab8329f56d9d0b05c996701a050a387362db09427d5587e7751131953146ea3591818f0dde74e33983c010419218b08822da9c3c62eae1f2284801b3e47c3991fa7983d0dd6e7157cfb152538466e9d5c3998a2b8ed862162b91ca851cce7683f8a03d3cf04e46970ff7d6a12494ae12558346dfc8fd9370bf944a0102 + +comment = Official test vector 87, seed: "ac139b78fd16ca0f26d6d7f9e15345c888d857b1910cf38d883339b37ead2dcac30f7cf10176f23ff34b4488eb79437c" +entropy = e58f71bf175c0550a67e00e0f7b3b7fc36bc2707bf0c93044a492626de36301a7f7054814869cf7625e45647bc1547aff288dbb90699b2ad84893f3b755d9722 +expected_public_key = 7e395f02d56d41b5c5889bb6b2f149425a2ac8aa06ff23a82841887de199b56c91846392a026b50e87453f44588ee6ad4a443f54d25ecae39aaf286efb47a760da01b6c13fa178811c47a0dfb14110fc6482543e8a3a52abec3a8d7176aa2868b2d46cf68538c27514222a34371c25fe832184206e5abb699d61426027a942581d0bab075a367793c81b7fdc11e2f6772c8040d271be5d07d00b330a6c874b46d26f51db8f43f22dfcd72613f8c22d15c28a2b384051142c148b07f7362eea4771959b635a215b1351f650342d2a071acb16dd8ab50539096f295e44173bcac20f3cb271a8041e3008a742057ef2fb2d78f8a3a3c252f6d38d8e85bd57a75d45ab4dc21b8033992caa623866e8989f98560de33004d3409f233020899340b2591e1a4a0223a79e20b4b85c632ce7609c0c45a0246251468c1b6c20716315a54520c5718f4c5c7066331fc7e953ed91aa5f3b92e69617b29c256657124242ae8305780cc0caf00c92896929a1648be9b47f86f144a3b12d9dd51f347875e6da935f0bd043abbfdc7b85066a7836d442872c56fdd41d9a3a01d9ac6a12531079f74b273ca129f36a7ae463f6464436e50fa70cbc2756bd25234893b50a2898345e588b819c0955e9c50072517d58b0a3e4bfc9832b727c7f2fa924ac672d4d104a8f3ab81200a624c61eb6aa7b4553aeb2084360f1c03e443ab99acb63ac699443a638ba9b8013c7aca95acebc9ed6b12e8be5a6ccc74efea7cefc7a0f5ee18857250d08f03cd94cb4c455141d7aa2fbfcbe3eb896c2404bfa3580bc63b73265581d87618b206caa9468c65bb1863b18f560413d1b1d392259f37c00f7d89124c56913483513006feff89092f218fdcbb8b118b206b64f2de52be0b553665c32831bb4cba3762991716be65e6a222b30a0a5cb246207352732bc3c8ad7a2c3243c62424af222a922787f7fe44df05299da1105f9ebb0c5aa18b6c6c73f43390af9c2454442110aab4aa629c8f300dd38318c43a25d269885f970ddd8ac1e5918e59a3d53dc8a44873eea97c31f34108b893b634284d69153779230c28b2a1636b6b839a4d91b7e23f0414b111f2e7c1b3ed58613120fec37c78308587494233313950d82ce946778e044c3d245a19c29b09a80c3b55416a811af33032a0068c7a4767f05e9aac3e8b99b967f88d5281a38b072b8c4e194794c40bcd5366714525e846048e55c008cb48b5ea0c61655b8819b08fbb88337e20d63003f2453462598ca66181ace033c707c1ae9760ced165596b2b163e54934540c4f7097bdf14d29ea850b95be6fd42973436144270549a81b5f73192c2c6ac2474686a9a3ee556b6f26a9039866176026e25a60b5864e963850cdc8219d21859b5c5c3714434ea53bb16786dde8036f317c430b3bdb025e6b62c097340f1e961b90e0c5182183de05b293a05b58dcc251d8a2911c6e71a635f5179d06d93d33d8cb332c8b835c0e2973261bdaa43e414153118b66c641f834c949e77fcdbcb59dc27089138a2e07a5b40c7666794fd8e6b97685bc4a3c2a65912c35f50a278bbad765c8c775bacf28181d61530e54ae7fdcaa2681a01bf51c0d7a033d6b005893b98da86005381f1c6e600b1787bbbc13a01210c0764a4a2578d4bf90a24704178f06a4e4b110f5 +expected_private_key = a32b081d2579d7737a984126b05465963ac3d0fc3d471b94e30b242699ae3ee7a305d187d9371af3568d7bbabdc30ca69be166aaa07c67799dce7345b2024ee41c5a6f35733cd12efa19256ddb74440829c6b52aaa25b258bac8d950ccdea410535bb3a44a46ebc44f5772cdad96596980c32a14916cf5c4a2fa8538491f7eea270543abc467344ff098edb4762f658b6b26431b9863cfa7546c1489a25bc9061b8ca0165528241b4bc173bf17b4e7873a5081016a1c55e4bb1e7f71b849274d03e05e866656c126485979ce9660afdf3622e3051f76d02243e660a5a78c663880a7f9765df45410926a86acc7962878b4037cf2960b06f072367b476eb24b8c57924a9c699815bbeb0bb10b2a88b0c63f0171c759d59cea91c5c043a41a8155e462325893685f18c5458a0ac3e5bf2c696c8f07727c090e1d3502d075a706551c54a00a710027c52cbd83fb9dbd7567aca2b6eb809c00838e56b209e0c5aad2e6235e2c157d3659d906452f4a8c60b26f838a51f6789e42c00580e4595a5c0a12b796cb44240a4724c298abff1332bb0970a3ec475a434ec4dc2a4aa92c42e22035a4499c66827c882b542a8fb22b6b6054984fdcbd6a637583145010d89a4654bf0bc0a0c3b86788459b659a539833629c1b585a13134d766c9e8003282683aac1486a934edd3a7511319a7952b5eb7c5947b69ab5c904b2481a7709c95bca352df45e8bb87775a9cb566581c3777e7b975c629c89063c8f0e982a24d344ee8a22221a02c6538154217c453ac0ecd4bb1f820baab94d920765c4ac15972aa79ba974f3b5055efa7fe5bcb454f7ae70e1c017322a20c73ebf278054060687c6301e13b52952459c56bc8d8795044302fc9123921143ec2c73278939826682126b65c7d9bac044ae6cc7ca40f92c8ff28470e41d51895adb53ae30216b1aba552fcc14ab277a872029f3dc8d56794d842ba06770808f1c097787973b0a14280c5fbcc45c102c23821a07eea6c3abb4b52ae116f4b38e4a50cfb849177766495463197bca3197b53ab72b172c163003c9ab89721eff925f56b59373f5abd1430b0731419a12ba80641628d78d712bbb74579c0a18a4cb2aa6edd76fd7605fbf8214a00aa44e486810f3ac6e36345431c23f247f251112cb8a6c76444b1a5277b7c68afd2c49d4a81fc5069b9a004cdf0587a4a193d243bc5f16357e1b1f280706b4c16f9d8b3b6a5815a1597c49076589d5303a5c89ad320cf6042f2f819cdff04b850870e807b4f2b6bf99aa8f3fd16e95b3bedf247cdbdab048586116db7a4530c360bb240fb2964fd41a5128cee9fa6ad434b536345a49bc758d849260b78cd9f3b3e8461cbe906e93b209742c0abec1c1bba9baa05a8fd05637d26548f48512f5477b93d0bd54f6674158b2f6ea0488191eb023a641b175cc689a2f326214793228138d6da03bfe4466dc962fd2a7c57102cf3f96cf3a6619d2f613ca063a35f4515c0473140b8ec3c53b1d9974021616bca2459bc31502daafc861990c1b97ea1ab5ae018ead781a67a075cc4924f9ea364bec33ed167637f0a643c3a810914a49366af69b3cc25938e77422832b7078c6be562513ee3648758515e3c04f7e395f02d56d41b5c5889bb6b2f149425a2ac8aa06ff23a82841887de199b56c91846392a026b50e87453f44588ee6ad4a443f54d25ecae39aaf286efb47a760da01b6c13fa178811c47a0dfb14110fc6482543e8a3a52abec3a8d7176aa2868b2d46cf68538c27514222a34371c25fe832184206e5abb699d61426027a942581d0bab075a367793c81b7fdc11e2f6772c8040d271be5d07d00b330a6c874b46d26f51db8f43f22dfcd72613f8c22d15c28a2b384051142c148b07f7362eea4771959b635a215b1351f650342d2a071acb16dd8ab50539096f295e44173bcac20f3cb271a8041e3008a742057ef2fb2d78f8a3a3c252f6d38d8e85bd57a75d45ab4dc21b8033992caa623866e8989f98560de33004d3409f233020899340b2591e1a4a0223a79e20b4b85c632ce7609c0c45a0246251468c1b6c20716315a54520c5718f4c5c7066331fc7e953ed91aa5f3b92e69617b29c256657124242ae8305780cc0caf00c92896929a1648be9b47f86f144a3b12d9dd51f347875e6da935f0bd043abbfdc7b85066a7836d442872c56fdd41d9a3a01d9ac6a12531079f74b273ca129f36a7ae463f6464436e50fa70cbc2756bd25234893b50a2898345e588b819c0955e9c50072517d58b0a3e4bfc9832b727c7f2fa924ac672d4d104a8f3ab81200a624c61eb6aa7b4553aeb2084360f1c03e443ab99acb63ac699443a638ba9b8013c7aca95acebc9ed6b12e8be5a6ccc74efea7cefc7a0f5ee18857250d08f03cd94cb4c455141d7aa2fbfcbe3eb896c2404bfa3580bc63b73265581d87618b206caa9468c65bb1863b18f560413d1b1d392259f37c00f7d89124c56913483513006feff89092f218fdcbb8b118b206b64f2de52be0b553665c32831bb4cba3762991716be65e6a222b30a0a5cb246207352732bc3c8ad7a2c3243c62424af222a922787f7fe44df05299da1105f9ebb0c5aa18b6c6c73f43390af9c2454442110aab4aa629c8f300dd38318c43a25d269885f970ddd8ac1e5918e59a3d53dc8a44873eea97c31f34108b893b634284d69153779230c28b2a1636b6b839a4d91b7e23f0414b111f2e7c1b3ed58613120fec37c78308587494233313950d82ce946778e044c3d245a19c29b09a80c3b55416a811af33032a0068c7a4767f05e9aac3e8b99b967f88d5281a38b072b8c4e194794c40bcd5366714525e846048e55c008cb48b5ea0c61655b8819b08fbb88337e20d63003f2453462598ca66181ace033c707c1ae9760ced165596b2b163e54934540c4f7097bdf14d29ea850b95be6fd42973436144270549a81b5f73192c2c6ac2474686a9a3ee556b6f26a9039866176026e25a60b5864e963850cdc8219d21859b5c5c3714434ea53bb16786dde8036f317c430b3bdb025e6b62c097340f1e961b90e0c5182183de05b293a05b58dcc251d8a2911c6e71a635f5179d06d93d33d8cb332c8b835c0e2973261bdaa43e414153118b66c641f834c949e77fcdbcb59dc27089138a2e07a5b40c7666794fd8e6b97685bc4a3c2a65912c35f50a278bbad765c8c775bacf28181d61530e54ae7fdcaa2681a01bf51c0d7a033d6b005893b98da86005381f1c6e600b1787bbbc13a01210c0764a4a2578d4bf90a24704178f06a4e4b110f58aacd8940ff6fc27f175342be74d48075f8ae9320cae20a41c879c27c1bf815d7f7054814869cf7625e45647bc1547aff288dbb90699b2ad84893f3b755d9722 + +comment = Official test vector 88, seed: "cc7152849c98d5fed2813275d32069e44824ecb14eaef425ce017448cd9a401c91c06d0f7eed6d22b7bbe8ba6c429ec3" +entropy = e3fc575ed51513e62aba655d24cd9c8f1c6c848aaffa946c49a53ac3ea59e474d82c2f1bf2e6aebde5660fa73356982e12999d8fdafbb3cb186341d0386dead0 +expected_public_key = b5d6022ef207e7629736d614527619e33cb92600a1e39a20b25a5b16eb0ec1070e5d566b28449bfb38936f44721ed428ced5768ee647a771b7d76a30c7e5563b515f5aa89ffe994cffd9277b0695049c355267b3a07c61f3c5a2c0d4ab8df76129c19f44f762b51bc0374a43e6f6c1155901b2430b2b77afc9ba4e14d3658607387dbc2d12b99ec0c0b0c2721af298a6ebc92a7e6b97bc460674931e21f68377c8303b24cae8d5ab720c79c4399414a514254603b565397857a7078b36e24a262cf9070a92c034c76614d5ab455b60b3b3388500946677195cd587942342a6fc91bef144ea412ece186a422b85a213c43fd0c361aa00698458f5c5370c6c553a9c238201754e2b2e2785bb03053e0b414e472087a0276bf2d805cf477378ca34d8f01c21b433f33b49a8b9bcf762451460558fb9c3cd071e654c250df04b6541baa278c1669bb49ca3ab4c78cc92d0137a2864bae0c904e23aa28395edcb435d9c1cf742562d603bc61c521145ca16f69192b137ee372f04402527bc557b754e187355a388410751267561a6b1f59e04190ebc604ff64a2b08b244b57abe84f18938c5a9ecdc972191bba33915c653a84b1a970aac7343ac98bdb7bb877a3170e8b1e8693fa5089f421281b5763865c584cfda6aad7482d00a0520d947fddb173947865fe178f9800570d4b2b9529a42a514a8691c8531a271c18e5f84380c20cd9a992051d29b5be76b2235b511514904e3b284e8854556334515162db1b09894b18a3127982269509bbc5e8758015a5b810569e544bef9398f7d195a50a958dd78bda187cea0b7b2bca04e2cd90db634a3d52b734e224c4c60ba3c8240d7b2755ae5892a09a0e7ea1b2424402c45a0ad59563ab97ed906a1a15b8c4412219203ce6826b91dd00ad602089ebc5163b416c0d02009a7a5440350a00a7b49309ce39ba26df79ece038f23f4b4300c01287a51f5fc619eba04ab1b78e6396bb23c1cb86a0f3bb11f7d31a161a480b8f33734cc63ea7219d76bab759b1ab3405ca61b535b893b1bf2b678849751a6a4f18923ef44470e543924d0c462d8a078782b80241334f547d2aa474d95b8709747162b228993ba15a0c4fbd8bd662a1a2f01cfa859ca723a011949823fbb55947b9c27c2bad547b0e6d29665071b30f3c8c536651e6437c0d4a314ab38a8f707928c0c2b864a3a67397a936dbfb98fab2c0935441b83157d05072891a43573882be97686534c8bc7015ac267b75f0a79c6991cb6c96c735a4bea90acc9bb6ba1b12388f0821a074018909f76944d9295b5eff73e70ac1b0e1644e3a40685305f8a0626b2f05969fbb4cae07c61f6213159b3471654a88ab58ec3a648f2944625820f6592c67126bc085dce216fa708089d4947ab911ac14c00e53782a01580fd967594e0b2b2a3272d590aa70c7a3f419accd33c1b1294d21242c739a3e8e577316c23ebd4b4c4d0577b2bbb12cca71841b54c0b76729320bce26dbfe5bbc017c92491762a6c938d4bb0099aaea190813a3a78e5685d83975050d719d6b6a80ac313d3018d25b9054b5013f832c1353401e6cba3fe527b8d2906871b79836cb35284725e733d8fb60e6a8410e5f61428a3cf9c25fd45802d5699f33205a71d6404704483bd2c82e92ba9457926a45bfa0985 +expected_private_key = d1f46e67cc5aea63ca9ec413938661c2f8156cc79e10a64174774545b597e91a8cadb58deb15b27f343073b071873870bf858b5fa3ac3689698deb68c570406972210c2b9909571a12753448e00e6a0c165a101469828e8f60a16b55478c8899d9a38c1751bf220a60a999b0d2a429b375137db8bc9b85ad5fcc073355ae630100f8fc68ebb8534135590ce22d0a0672ab54936c8665aaf476b50293a32135283777c375767b04547501a53b72a14d3c4de4e001d16b2b2b598a22d784a3711c39db183ac82cf895b242954b41c713bf464464917d6b608d21b67b3519a6df161ad237359e262b95c6be3a8522b9248346785fd0db03cd083a21092f4d91af156b12f4c9c77c11cc0b68adbdb813beb21289743758f8136661704d0c5ca9302a064040334017d47815b7c35363f5c730298670536c69c122cc91cdfd18783efc4c39c8c29cb1023f1488a7469f1cfc1d7ebb3d1ceaadba3b07310000bd89c043290abed896e655cb1f43a1c7335aee30044d9652e6d3b8e394218f63072c7050a2984032c45735a3aaa4108aed8b9a19c13b9bac28ccb123d9987c45b91e89b7a949b5b4ad56abe4237f21dbbc53ab651bd4b703069f82133c54acc1aa415df9961a4785337535869fb758cd04b798907e36197ea428c66aa516f602404e87341e154a0e09c881725cbf00761fd9645b658d97d21f33059e4a898deb0c826d9057ac302663897d71567117fc4416c860775b026e51a52663711868777d542f1224b277ec005f2bbcfc0c84146591cb36caba82692b010de229797cac57aeb64af446a896527bed9b3e55539c0f6a0e9eca5953890b95b0b282c3a4c46a44a8705a54a8806ccc0d3c736a20d34aab118813651d85f12906958933d69679d0457a4817dc83b525ccc63e94c1bcb1c869cb3a0bc46d47084481c2563754aa8f44682b870ed04996cb8886f43b91ac8767ae12856ce5b85f55c8802830ba1babf5797d0da723eec24616a195ac809371d93f89b19c874c840ee9c39e7370ca561b6e91552cea47f1d09c9cf633e7cabc9ef85f89d01a29d9cfca8143bb05c3015b3c6035afdc45ac7b08b5406566bf864657bb3a82322793906462c03c20969f76c2c8c8ea2622a373c3e40164a77055ebae05787965b60a861c09658c32d4194dccd7ab1df87826590890b1785f0385b965b5ab3b870a0088696a783b5c7a69962b86f789bd43588705315258c117c4313198af42e2b7fe39894a86189ffc4e8c6bac5e7a0f03d86d18089a6999972f309a6debb365781f64197165d259bda98c7a920a9e790bddc587e7c08040d649b8b08fbbf36d1904970354410bd77b87889668566cdf4a94e1c65b04d33c269c5152b049850857308ba1310283a976a31db34722e97c97da85d14372e14a8a95bb45c63670bd7712686200d451cafe599ab0d3a183d2b0df7b8fbf0995042ba0ce682eba8b71dc6c0744262c75b7638b51b9c4931d4f7c842328486a799d06027cd5cc75e4b1b6816c2ad66b86ed047ef978184bd344c00aa1200432c5d142246b883b5b85ad5cc8f8fa994f4a790f3b6c201353f77aa9b7e9bb195375060282b7da42ecd36295fa55f8b5ce94b812bc421bb5d6022ef207e7629736d614527619e33cb92600a1e39a20b25a5b16eb0ec1070e5d566b28449bfb38936f44721ed428ced5768ee647a771b7d76a30c7e5563b515f5aa89ffe994cffd9277b0695049c355267b3a07c61f3c5a2c0d4ab8df76129c19f44f762b51bc0374a43e6f6c1155901b2430b2b77afc9ba4e14d3658607387dbc2d12b99ec0c0b0c2721af298a6ebc92a7e6b97bc460674931e21f68377c8303b24cae8d5ab720c79c4399414a514254603b565397857a7078b36e24a262cf9070a92c034c76614d5ab455b60b3b3388500946677195cd587942342a6fc91bef144ea412ece186a422b85a213c43fd0c361aa00698458f5c5370c6c553a9c238201754e2b2e2785bb03053e0b414e472087a0276bf2d805cf477378ca34d8f01c21b433f33b49a8b9bcf762451460558fb9c3cd071e654c250df04b6541baa278c1669bb49ca3ab4c78cc92d0137a2864bae0c904e23aa28395edcb435d9c1cf742562d603bc61c521145ca16f69192b137ee372f04402527bc557b754e187355a388410751267561a6b1f59e04190ebc604ff64a2b08b244b57abe84f18938c5a9ecdc972191bba33915c653a84b1a970aac7343ac98bdb7bb877a3170e8b1e8693fa5089f421281b5763865c584cfda6aad7482d00a0520d947fddb173947865fe178f9800570d4b2b9529a42a514a8691c8531a271c18e5f84380c20cd9a992051d29b5be76b2235b511514904e3b284e8854556334515162db1b09894b18a3127982269509bbc5e8758015a5b810569e544bef9398f7d195a50a958dd78bda187cea0b7b2bca04e2cd90db634a3d52b734e224c4c60ba3c8240d7b2755ae5892a09a0e7ea1b2424402c45a0ad59563ab97ed906a1a15b8c4412219203ce6826b91dd00ad602089ebc5163b416c0d02009a7a5440350a00a7b49309ce39ba26df79ece038f23f4b4300c01287a51f5fc619eba04ab1b78e6396bb23c1cb86a0f3bb11f7d31a161a480b8f33734cc63ea7219d76bab759b1ab3405ca61b535b893b1bf2b678849751a6a4f18923ef44470e543924d0c462d8a078782b80241334f547d2aa474d95b8709747162b228993ba15a0c4fbd8bd662a1a2f01cfa859ca723a011949823fbb55947b9c27c2bad547b0e6d29665071b30f3c8c536651e6437c0d4a314ab38a8f707928c0c2b864a3a67397a936dbfb98fab2c0935441b83157d05072891a43573882be97686534c8bc7015ac267b75f0a79c6991cb6c96c735a4bea90acc9bb6ba1b12388f0821a074018909f76944d9295b5eff73e70ac1b0e1644e3a40685305f8a0626b2f05969fbb4cae07c61f6213159b3471654a88ab58ec3a648f2944625820f6592c67126bc085dce216fa708089d4947ab911ac14c00e53782a01580fd967594e0b2b2a3272d590aa70c7a3f419accd33c1b1294d21242c739a3e8e577316c23ebd4b4c4d0577b2bbb12cca71841b54c0b76729320bce26dbfe5bbc017c92491762a6c938d4bb0099aaea190813a3a78e5685d83975050d719d6b6a80ac313d3018d25b9054b5013f832c1353401e6cba3fe527b8d2906871b79836cb35284725e733d8fb60e6a8410e5f61428a3cf9c25fd45802d5699f33205a71d6404704483bd2c82e92ba9457926a45bfa0985149e0b6b49fe8adba1217c2c57c83f2b8c5f1d92f319e502b184a65869214f75d82c2f1bf2e6aebde5660fa73356982e12999d8fdafbb3cb186341d0386dead0 + +comment = Official test vector 89, seed: "96d9a06f88ff2c2036fa8e914b89c765e4a510b468dee40f914f78858c811857efe9fd0e17c0048e7389e8d996b7e2b0" +entropy = 470b4943f0fe7fd0d8ec5185aba0d1db09d112934e4fb4787e2bbc6b88466e7b8b2809fd40008be70a6b184981101724bc3d5ec5e1956b510b82fd5ad0668a5a +expected_public_key = c55170fe0945513748c0ecc9098a02e9d51e44acc267272633645ad562816d479466b54d2150afb682b4f32265f1f4bced21caf7c7980105b08056cc4192bfe0da9aa5e00864b0a34712204cf6ae82dbad360a7c840b4804826c39a59ae029056c1b2542b6a589eb47c14a70acd1731bb0a4d657656915b91d696b2f92afd82245945c7b77958a5b6a3b6cbb179ab83a0f32591b757e8b68368d6a5ee63490604aae70ea7fb4619c91a455429a6b195214bd28bc717385d3cb8235991c05088c7939bf852125dafc3bc368479165438092b530bb2b869246988b8f85425a2a523ed108c6d2f54358580944d64d801078a4b621f58012f9d8a17a92ab8ad43821e24e2f87bfa844abd0c6b08650ab76d5397f2cb0060b31af689fc8612249d46374848f496b360e733fc991809da804dcbab14030a4bd18cfe37b41cad91a66a263437b7ddc2484ed55acb16ab95a1a8c9345a898e89c37248f9768524c616babd17a8dc7924f37345dcc32de04273c5a0ac038a133ba01ce2481ffb57ba153826a7cc4123570293c82082b6a75fa05031cc7fdbb9031e10ca94aa283aa26eb3546f894b646b9a85afc5df3b513db522efb340287c64492aaaac5fc25547129b56b9541eb0912222c2e60a11b9304692a749bb174cb47679cc294253b0f768a7872f698c23493fd908c9ff95f9275551b947bfe84780f86c1e0bc105f6cb7c9430369b58bbb07b3b0c87d8541618c76a43d52c98a08166e052b4487177ad222e6a002f7fa3f3601cf1ef0b4c02ab550d76447eaa695561118a46301b544b493c368b5b77ab17c5af4543fa6a8c682a46af39ca48046b1529684a53d0e492e1b8596f55334ade15591dbc4b411537c88a5113458f187a6d77278675b0c85bb017416b6e9543fa1b924b631ac1ddc5556127548fa8ce0c90125139bdf13428e2c7805607a44251a5f289be4e3a2c3c95c5b5cbf7c87b4a7d87a39a44b672bbe9af8343dcb062ea3a039e949a7f151c8900484368f1cfa385bd13cf55685bfa4b959f8634ed7c437fc9c044b401683cc7482722c98583de24ead414c1833858be987672c557db87aefe4ce2db8a676d14083462db35862dc0cae95f88ec1f59426fa2e24e9cfc54813be07c98f78a87b9703276b455e15474d7a283d5738d4b639369077e7790dead3336e1467c871a571080004a91162fcc31d2912646a9406902248fbbf28dac4343b081c327743335b9efa4b7fd13d5177064a5b6e8065b64d8c6580b47e6472c8f5139268145ba7a23a02f59acf680692b20ec2dcc087a99be036bf7e9c8c0df15f168c508ae28e33d951740a9b0f0321e35cc01328b7ba860592b566cb369b21f51b7ae583d26652da729f07f5b8d59caec65aae42c7c9cbe73c68504f26670bedc542fbdc67a95c9f2da1a08e559797170ee63147a4688c8e101e5aab48a4d1862506cfcd297c7ea61a9ed4a54fd3a28380292fc1570fa2ae43920b0e940675b60534425c69f35bba714c88b3a6c323090b4c56b7f89963059f8ccb0994373fc1344412f694175c2eabea110e035bee6abf546396d79472eeda164bf49350f54c2e75754f502de4a42721b37974a8266c49b57c6837b38a28ca489f02fa05307d7163b35ba6a4c5024b70ba27db0de8d64bb8b55c83bfdd24 +expected_private_key = 09d0009aa9878c697e2eac9cec9675a9570660346547d7aa8d4548e3aa917e238cbbc10c389445d15714b237566cb44132d6983c9610e779570b74482d5ba2742a1bb51c68142c1680b800f1938795367b6d8a56c32a0d77922c78116643530aac01cfb2692f4bd6bbde615a3335b397487db8a1175a043719ea58d0dba627d7c8511468b34442879cc227e6b39e084dbb68be71cb988766114a80b1979118eca08217540f032966688c99feaba06d0a0a1e701deaacbcff9c2f2948a209ac8ee505c85fe0444b5c70d067100b63cbd6d98f9aab73cb06c97ff31d7aa0ce188707ddc5c07d495b27957b369055650abd5d9b9f75761770920dd0b574a5841c3bbc9f6f1ab0179c118c7a83b2934e950b3dc732c84264c66fcb0df78975fcab5feaba4e6af97131696a0cda1cc9e2c40a266fbe6667c1abb361f063103311a792b95cc525ff872bf3f394ffb48b30b334ca02bb32a901e3478f811505da066de6a5caba425df83c27565ca48b16bb2855a797a72dfd57615d5117b24374c2d306473a349521a8107790d268ac6b5813c593cb9e8621f8c68fd2e8082c491c95c5ac74c86dd37b0a4ea0cb66aa576af50fbdb0a31235bdc9e8107f1859acd2674fc72c6669a3465556f90269cc30b0a8f53563378ee016a7abcb5460d5371b01754bd7373c2314e2a42d98636112f3cbe0638e513b38d4850afd6a1d3d485308181febd88b75f532e4541965e0bc592885fd1c1b3108c33f74725850617b526ad4f2c8cecc19b0a0ade15057c90ab086c26cb014bff92988903bafefa3c4c96ccbcef178f988a40d339db324257de69a119125c52a4147360b1274808299446ee768680170457acef18814559996fa96b418275e031199e0d578e86c946381c369ab839b1a75e9d6845c98aeca24253b3b0f00ec7e92cc6f6a40a4d8b04900ca3e78cc7a5c51886e0901a908bf0a08947e3b524f1c606b055451ab6eda2bbcf832510b3075e2cb0ecd493b71102f4ec69565f96651a3a2c3b738c2d55805798253e055dc8508b98822e6803785130d22e494b50025b0ccbc69667013c4ce4a140c2e9ba928d41d7fb5237da8c5ac0310ef5007b2b0c6737bc17a747c5a2c1f3c1166bc2b0ad7aaab1d870e54694c1ca293665286c4eaa35d34bd6ea7aacea04871c257cf63641264aaa0db4f65337274356f71d02310a57e44d23ec6b4185bc5cb45a65d3b592af3138216332060264a6e53702d766d0f4a0f14f70b75b780688591cc414283a59ad2f84d665354d71c2aaa1c278ab6c8ba902283b286f82761906c9b2796595bf5ac01455ed2b43607207a30c949afb1ba5c50659143c98237279003ca820b4b5963b0882a088ce09c99f4a6368971a7d6885237bce28580e2ec483fa305fffc0aca173a89cc41727a55d4e29a8c410b3fe851b3d58b58c31920759ada529da162cce47618b2f715f3658d71f5455365c67b04748b371a5a96b75f342cc4c031c713c04d2b6cdec0cc92b7596bf4a2a0c91537a0c8174b3456489d2db70d3af2995c4830245120e9411e92ecb2293700973386983a0c6591cd5eaa34d5cc00fd672d20a604e78696d5542646c120e02c8dc5162630e71465accbc55170fe0945513748c0ecc9098a02e9d51e44acc267272633645ad562816d479466b54d2150afb682b4f32265f1f4bced21caf7c7980105b08056cc4192bfe0da9aa5e00864b0a34712204cf6ae82dbad360a7c840b4804826c39a59ae029056c1b2542b6a589eb47c14a70acd1731bb0a4d657656915b91d696b2f92afd82245945c7b77958a5b6a3b6cbb179ab83a0f32591b757e8b68368d6a5ee63490604aae70ea7fb4619c91a455429a6b195214bd28bc717385d3cb8235991c05088c7939bf852125dafc3bc368479165438092b530bb2b869246988b8f85425a2a523ed108c6d2f54358580944d64d801078a4b621f58012f9d8a17a92ab8ad43821e24e2f87bfa844abd0c6b08650ab76d5397f2cb0060b31af689fc8612249d46374848f496b360e733fc991809da804dcbab14030a4bd18cfe37b41cad91a66a263437b7ddc2484ed55acb16ab95a1a8c9345a898e89c37248f9768524c616babd17a8dc7924f37345dcc32de04273c5a0ac038a133ba01ce2481ffb57ba153826a7cc4123570293c82082b6a75fa05031cc7fdbb9031e10ca94aa283aa26eb3546f894b646b9a85afc5df3b513db522efb340287c64492aaaac5fc25547129b56b9541eb0912222c2e60a11b9304692a749bb174cb47679cc294253b0f768a7872f698c23493fd908c9ff95f9275551b947bfe84780f86c1e0bc105f6cb7c9430369b58bbb07b3b0c87d8541618c76a43d52c98a08166e052b4487177ad222e6a002f7fa3f3601cf1ef0b4c02ab550d76447eaa695561118a46301b544b493c368b5b77ab17c5af4543fa6a8c682a46af39ca48046b1529684a53d0e492e1b8596f55334ade15591dbc4b411537c88a5113458f187a6d77278675b0c85bb017416b6e9543fa1b924b631ac1ddc5556127548fa8ce0c90125139bdf13428e2c7805607a44251a5f289be4e3a2c3c95c5b5cbf7c87b4a7d87a39a44b672bbe9af8343dcb062ea3a039e949a7f151c8900484368f1cfa385bd13cf55685bfa4b959f8634ed7c437fc9c044b401683cc7482722c98583de24ead414c1833858be987672c557db87aefe4ce2db8a676d14083462db35862dc0cae95f88ec1f59426fa2e24e9cfc54813be07c98f78a87b9703276b455e15474d7a283d5738d4b639369077e7790dead3336e1467c871a571080004a91162fcc31d2912646a9406902248fbbf28dac4343b081c327743335b9efa4b7fd13d5177064a5b6e8065b64d8c6580b47e6472c8f5139268145ba7a23a02f59acf680692b20ec2dcc087a99be036bf7e9c8c0df15f168c508ae28e33d951740a9b0f0321e35cc01328b7ba860592b566cb369b21f51b7ae583d26652da729f07f5b8d59caec65aae42c7c9cbe73c68504f26670bedc542fbdc67a95c9f2da1a08e559797170ee63147a4688c8e101e5aab48a4d1862506cfcd297c7ea61a9ed4a54fd3a28380292fc1570fa2ae43920b0e940675b60534425c69f35bba714c88b3a6c323090b4c56b7f89963059f8ccb0994373fc1344412f694175c2eabea110e035bee6abf546396d79472eeda164bf49350f54c2e75754f502de4a42721b37974a8266c49b57c6837b38a28ca489f02fa05307d7163b35ba6a4c5024b70ba27db0de8d64bb8b55c83bfdd2429b1bff7f12eda28dfedfbf0ac16e27008c9fdc62c35e53b28a312bdc91c40bf8b2809fd40008be70a6b184981101724bc3d5ec5e1956b510b82fd5ad0668a5a + +comment = Official test vector 90, seed: "d26ce360d399bf7b89dc364aa7ac06bb513eab8f527383e93e30727edc3f22c262aa0ec70257b39edff0630dcdc1b79a" +entropy = 6df4385db978d27b27d2aa5e452e4152b36f097503d9581ac3390105c5727e7dc95fa08ed106ce84660e8a4c90bd2b22634e40769aa0090a101c5dddad45edc5 +expected_public_key = d3b1cdafcac7f6d08082da095a7658b3a45f7bf717d4b80a3a050a04cb23e01103ffb1731b2c35a9dc23c4341976b188f5226459a02d348bc9d2064d574040147b41612914cfc2954e4190905446e5ab8632ec96145b917dfb4a9dac62b18cb0120679e739901d9bca662024335a083911aa53828d6d79c948425422c32ec471c2fa843b54f6731fc401475612a135aae4b146fa829871c0654c075dce41190483c3ef60b7336200a4a39cfb6787ac09ac85f4cb3dbb494727a20acc8a1cc9cc765862b0d402147a08a5e4aa6e679d482786910399bac7a36efa477236b1a01baf452badb3f184d7d6ac6ef64cdfb89d1ce66a059a4659d8137dfb3c95cbc9e8d86e064cbfdfa50c68130a8d82258407bb7b926f7a802b53209f3ab78784102e88fb91e6311d496251f7b574aee5797e881ba1db16af40281586267d826c0f33a0518c26e6533e19ea0ebf29474a131d882a189ac03b835c16c34c9ae7a1c4d9f5159f85b8542284e0409dfb0876fa6488e6519867b5c53896867772210e95399a1733d2e78532b7651ca9704ac063df086cae4aaf65150093f27054f34e2849449c7680ef1ca1a0ac399a01a9b74484a967592ce85086230582518414c247bb7680abfc2a04a35a20a851b73548a8e4cfc2b84cb5ec24108396c28498a6614790d56bf8d1b9f9e40bf574c497218eebc06217c9bd361baa5d0715e666c2d3d299346a79be0bbe4b7ccd49f948a60438514129c126aa1f3875718922c5124728f09fe5437ae83194ddeb81f0d744fd2b9b59fc223e2792501b4932924facc16c1e5444dbd6a823016b3afcb46ef59ceeb49728ac541bbb6bb64b7e196c59910628c8ca22b1138d884842c387b594b544e5d99784b06acc3b5d80ba81cd34739a20af11f7735d645d9ff25c07f8af9b5902524a1953ca2a58d6b796e3695a006ad6c703dd161c12c01b9bc995773c5d2ce59470c765c3f5401cc07885c77bfb3c15d7f766f0ec7cb3f601dbfc210d599093a21c87d82002212b06898a5a878d4ee913eb451dce14a1bc424838d4797ed14d9eea2473b304d6624f1725c820751a9d313cbdc79ac9a26548587fb41371c5f48a4da04d37ab7189685aaa054853f0491a0388ae4b7af4259969e29eaaa2b2eb9503518c7c53ba0e6bd20ea8355a63f1c481eb5e662a0b792014ae4c0981274d902759af794338072a839b05d9d42c1ebb1a3da33b54066d1a63024a3b1d1437b37a83bbe816075cf416275a6f58336905937105e63a1a017f87911cf0b41daa41a5dae3856a606e2a9333176628198b49d2517f54a9182e4ba877760517dc94a079538822251204b4c4a2382cc7889bf84923c09072f86bd1c5879ecc3a37678e6d031568c24012578dde5ca01005b2df71a4a0b0455a03afbe7c366bf1b086973038fb5debd793a303b4c867b611772733f66574cb0d7c303563c389b2f1b46e98945a94b142b2b0d647521f4b58f12326fd86286a448909191bc600bc7578b0169a45c071c77f280c583788f9c2aa1200a73431ad56d23b20471bb67a627a594ba9922b1ffb75d2d030432a954c71235a9278857c3010a8a8906c070b77060fb831842140770acb92e856c8a95e163d5181caad6a478ac9ae82ee27f7256f4d4cacddd43f45cfa4de4dd067cdca +expected_private_key = 96d9c668915384c2847b7991e5f557949c99a3d46a2fc9ae7448a229a89ef7f405c2911777fb1e2f44721be8cc326a80e524486a16a083527e22d51e4ef624b02625fd6a857bea2c0590a3a4e39f0e041b7284bcc501201842345ed5ceb097a5a5f730ee53176f8acbf9e03c6dc4a069718dd64c47e1d17323d29acc630db2da9922804802cc768070245380cec6672f6a5a9d14e4012bb13caf8c320a320ed63b0591087a0c5a76ea29b57d5c997fdb372e9a57e3f4827a2441cc485718a421d3c45bd0426a87589362e52953822cf785802b2c6aa441adaef93dc6451ac68a9867c9b9703abedcaa540146ba6dd8acf7dc317a82a4c1396267032fccb53be9306e20e4713b82842e03b7fa984e5827c441e293352b2e2a51566eaca8d9c4206000655f761729020f7ff9b230d6c4b986bc94551175a8acc7e2a2c174c500666d3cf021a9b40f1a465447291f920865ad16240309b5c838a2ddc5beb8aa11bf987aa9d7c082e8c55c63ab01d0664e545e505b4aae50606136b6b01499a5ba10174852224ac6bd242d5d21758c4342f9a02a3d46a9a845112adccbb73488cfe3055cac398b0245c467b94eb342e1845969d70511bc7100f886308cbf21c13840bc17626ac93dfcc4eb22ba18f62b15b521539901166598f25555c32587637a341017885af1a6d1841aa1c747d918253e1c873c2ccf292bad45805d8946b00dd23cbda03878f66357d175d67a1b743c1e5428ce90661067011874b062e9ac8a0f726b55b76627c53338549c3f2605840a11d5606acd104bfadcb51253af718835826628235878d6160f15033844d76ae946ae6c240053c2ad6c3a3d72e721d9565a6c79b56840cc5a878c6a4033bb9c88dc43b130348082e41c269cc0d3b05ffe356b5695bb01c95f8aa9c30e50cf31f11419e13acffc7192b75948e06a68458db80a8f71573b6edc1513aa5b060cb77b12c62761bc188159a49c95180249b3e35c3100635012637cb9cf17ca9936787aac954bcfc655aec8b4215861a7709f2846a1c14889d0384591753e3f19cad2236dfcb7b225abc430a7b61e6018ab30146d60a6563b2f980acf66186fee70a458750cc62c433e651f447ccef8a773bb2731a866832ae535f0d82e605371f6b35fd6fc1188a52080c609bdd8748c321ca37190321b286c849d35224bb5107d83e2827ef0c63859133852630b237247aa8c100678e43618289239ef19c99aa6b9156704643285bec89f0b0c21f3a091e2063e5d3029f52c33af97529e701298d3961f492e6b731d4e2064d034533f4611fefb64f1899ef563ad71a52e20b199f0d80c557cc8cedba3cd1746d3a6ac2e697637f08a43d681ece3769c8980c76a26adcc585eb1194d28ab163aba5563a5c7985720248662bbc21470022ef4110b33b6b8b744a80ab36d0a9b0a7988a0c98c6a597f8cdc76791c467b0cb53a020928f7a55981b520017bc06b36d10a21433797c15124e0892a81230bd6bb4774d46f73b874602588d3f8966469194041bdee87ac54059458b19724949e7998ae8018755d491bffda76a70a64eff902a4281734a7484037c739b7bf71b658b779cf6370420d2073fb820bea1b1df29c3b12c54ed3b1cdafcac7f6d08082da095a7658b3a45f7bf717d4b80a3a050a04cb23e01103ffb1731b2c35a9dc23c4341976b188f5226459a02d348bc9d2064d574040147b41612914cfc2954e4190905446e5ab8632ec96145b917dfb4a9dac62b18cb0120679e739901d9bca662024335a083911aa53828d6d79c948425422c32ec471c2fa843b54f6731fc401475612a135aae4b146fa829871c0654c075dce41190483c3ef60b7336200a4a39cfb6787ac09ac85f4cb3dbb494727a20acc8a1cc9cc765862b0d402147a08a5e4aa6e679d482786910399bac7a36efa477236b1a01baf452badb3f184d7d6ac6ef64cdfb89d1ce66a059a4659d8137dfb3c95cbc9e8d86e064cbfdfa50c68130a8d82258407bb7b926f7a802b53209f3ab78784102e88fb91e6311d496251f7b574aee5797e881ba1db16af40281586267d826c0f33a0518c26e6533e19ea0ebf29474a131d882a189ac03b835c16c34c9ae7a1c4d9f5159f85b8542284e0409dfb0876fa6488e6519867b5c53896867772210e95399a1733d2e78532b7651ca9704ac063df086cae4aaf65150093f27054f34e2849449c7680ef1ca1a0ac399a01a9b74484a967592ce85086230582518414c247bb7680abfc2a04a35a20a851b73548a8e4cfc2b84cb5ec24108396c28498a6614790d56bf8d1b9f9e40bf574c497218eebc06217c9bd361baa5d0715e666c2d3d299346a79be0bbe4b7ccd49f948a60438514129c126aa1f3875718922c5124728f09fe5437ae83194ddeb81f0d744fd2b9b59fc223e2792501b4932924facc16c1e5444dbd6a823016b3afcb46ef59ceeb49728ac541bbb6bb64b7e196c59910628c8ca22b1138d884842c387b594b544e5d99784b06acc3b5d80ba81cd34739a20af11f7735d645d9ff25c07f8af9b5902524a1953ca2a58d6b796e3695a006ad6c703dd161c12c01b9bc995773c5d2ce59470c765c3f5401cc07885c77bfb3c15d7f766f0ec7cb3f601dbfc210d599093a21c87d82002212b06898a5a878d4ee913eb451dce14a1bc424838d4797ed14d9eea2473b304d6624f1725c820751a9d313cbdc79ac9a26548587fb41371c5f48a4da04d37ab7189685aaa054853f0491a0388ae4b7af4259969e29eaaa2b2eb9503518c7c53ba0e6bd20ea8355a63f1c481eb5e662a0b792014ae4c0981274d902759af794338072a839b05d9d42c1ebb1a3da33b54066d1a63024a3b1d1437b37a83bbe816075cf416275a6f58336905937105e63a1a017f87911cf0b41daa41a5dae3856a606e2a9333176628198b49d2517f54a9182e4ba877760517dc94a079538822251204b4c4a2382cc7889bf84923c09072f86bd1c5879ecc3a37678e6d031568c24012578dde5ca01005b2df71a4a0b0455a03afbe7c366bf1b086973038fb5debd793a303b4c867b611772733f66574cb0d7c303563c389b2f1b46e98945a94b142b2b0d647521f4b58f12326fd86286a448909191bc600bc7578b0169a45c071c77f280c583788f9c2aa1200a73431ad56d23b20471bb67a627a594ba9922b1ffb75d2d030432a954c71235a9278857c3010a8a8906c070b77060fb831842140770acb92e856c8a95e163d5181caad6a478ac9ae82ee27f7256f4d4cacddd43f45cfa4de4dd067cdcab990059e901097d00e0ebaf40c5d5dab009c66798489d357e760478ce884cce5c95fa08ed106ce84660e8a4c90bd2b22634e40769aa0090a101c5dddad45edc5 + +comment = Official test vector 91, seed: "c5856298c3cb6ac9787a0f30938537ab2635b96f6d19cc9522063360e7a5c88e644929d2879180e3e5bcad2422b7cfc3" +entropy = dbacba825728444921b227cdba54446b3f6881b47be9cd02832f78b023b1bee0e15274a8e2bc08fe818b117ba28c5dfae74d54fcdf6f20052f79be333edc8dde +expected_public_key = 112b1dd09313b9a25b7094700639775f89b8d0314eef0186adf7ceabac36cc9292c270717f27caea51b1afe1cfe6b6a1cb1a7da53c6715c9c9b2694bd5a581b733ad4841b229fb7a17bc213b969935c672d0993a94ec170bdc8b7c800e66bc6514f84fbc81c7d1c9417b79a82e5b3980acc792a19c46d13a2e75a3af791beb401f7555793d94c0ee1b9e98a5b6c52777e537bfb287268ca9524a4438ad87a0e85279e474c5be7740b7867d8b04781a2436a8d343f62274e236c736dc3c59d5b326563b9c86798ab14a6c9a0e67b36db89a82af690da7016418ba2d6c435e39095bb81a0e49c01a73a31ec9159844d1a3eb233d16b932919421e6a342473a71de629477183e8f34b2b7c8abb7a3b6e516107cb5229d780b93417f9bc94c38bcaa58f34dd88835308c742875cccf4928122199cd932148f48a94c5c2252295890bb4645761d3c2c0f33ab3e1021aa56b573e9c6fdac37c83f678b97148ce573a244b0487f3cf771bc7b6a13fe53a6ba58854b87a67a6a17d6a301c85f7c061071b4ddb27b3f404dc402ebacb8254a0568d48b2d299bd831188886a65aea5cd8d987f6017a2f4392f455c2b4f9b63e6cc1a27ea38f2588b0f8086d7a5c5e4b05b76d2b8918820cb8851704ca6d730861b512fefb0a76b61401e23b01ea710c5e3b73fa716dfa6408a635423c61372592dbf174d6d811eef7c4d885bca5fe669233a141e43810ad10235cb59f824728bd7acf17765bcd354a493aa60438f07d266d728b640cb07d50275bc2605fa6c964614b2c8143b37b184f3c30668662149bc18c6038706c12f0d31b896b69a7d588d0004497e4808d8c12253987f000168ea758a5b32c195f03f23a07c5a546a6607084cf79e073bc6cc1cb372e385ca827c490a42d900035bf735c6242031b8332bc57765ecce4792706f1cba0c7cc390e7bd3595ab876c4e397c58fc325c9607b0ee39692c31730eb4744e967e7ff8139fd1a545622ec870516b2925628ba782cac845b2429c3cc0ebf7747f414e8d35cd4a91c959d2276404a5df4790f4363104e6a0d1d60a48b65bbd92b417b51a5338cebe36c0f218bf27968c05d99947e9b44b4b5b2934c538f85cd7c8b9e3c31637e14c5c0279cdd6386e20ca89a53671fb2f04249565491ac2f900ad380d1a68b67693b185f26a232aa1b43503398002085713ca4b2f94cbcf6e837b020404b7f519a2b520f93b901943c918393f26061346a0193ce9ba8a48b5c4b01b0efa231eba0528c5b38cd32cd5d22586494734fa746b411759303a51a12ec58b03fc99a1edfb1cb01375032054878a6ec9dc4425945aae387e7fc6cd399c90049854cf51b3db690eb78a0a2db04d05102dacaa9834620aba427b5733bf1d1693643c88bd265af0280ecc66344b81129c491b3998c6c70ccf03257c2d06115b72aec35b4c8774cc7936c578b29fb3b0a5c66709363b73f41b08db919cbe57ad817cbb5df62b7836af6ff4ab8cbb07c9fcb7e3d601b2117e6a7242abb24ea96ca867b597e9e9b45c01aba9b54d2d323df8b38d3d37b72c2790e1041037355f274cceac2714a92955b31c55d4903a85bca55b2bc22c536aab22557d912fe2234423e7bc0894bb5f846a2dbc4a0dbb11c51840059ec11bf6cefa3ab473e1cb0f0bd17ee0bc3c59 +expected_private_key = b1c127d24808fb2b9922332832131c4fd67fe8a1a070ac8d17100bf9f6291efa0bc8114d98f65c8f4abac3ab17b4241deccc37688b881bcb68503b54379838bbc100b5bab306327e7965b694644c470a5148666c7fa89872d39aff60bc533c83f280abfbc26f073331ef40b694ab25feea5b2f55196798b70681caa21537dfb5746c66129775852e5850f57c2db2e8a0e90530a57b387b1c429101d04096c3e0bb6e9af19f83b1b0b74c47bac678b0f2269798573fbca5d8e687965b13e495827adba63da8a17564a3e68037b3a4991993401c1c6b149895ffbc03760c13595035a713140eb7a42ff6adfe6bb371c9af5a686ef858a8fb7a63fa137492b53305685205b08d44a3ac8f8948f2b7bed9cace27ab6265722d8f2950e0c9ade053a4c4ca8e3f80a907a39e33db78e6065fe9dc050a5a730595ae5ea32e38c512edb79dcf345f1d9c238a1732c552ab8db2ccccd11822972896b323cc43aa03633617f82e89d63d4a1003cf9c5ce3379b1d53a63eac57adbc91510316acdc30fd74a1a2e6c23584ad1cb28444f9231661079b0913e20b3278d8a2e8b18556f336cb750694066b6c82c5d267a903b624cd440d8e187d9e438d178c8394706f016b835e1522ab6904f80cc24358b7dd3bb271039acc174164021e8a522fac473054d5b4cb3bc64bb107c6b637cd6360e312a85a3b1e3d2b64436a87e81016acb763a23ca9b7463023148b0c4888bfb18d9441841f723b9436b77b09c79fc714385a3ae97b5bde0a2a0c541dcd2b668c696281389ec270bc6d088fc42506cec85bcb4b611342af0a61b1b9d75e0df43be293cee6eb0413363716ebbc48ec6c361a48b9d871bd5742fef2ab286094a92b508cb794f2f69a8ee15c2d748d8fca8cd2284719815e75b3b0df76298e48280bf530e09a34d166cd5379777d472f0994ba8e5629ea7691fb973f45869635b61b277c375606b911aa1228271c85b047942a52187bb231412b50f5be423476720240e62b9d3cfc5b7af5ce9fb38e03349063741ade945e994a2d6492a92b1250880318b9b9ce845ba29bd3733228ae960663050888bb98a0fdc21d6fb34cfb5c1af6d9b98ed6ae454c09b89b6067401fb30a17dd331a845c713715b5bd4a087bbc14cbbc9d2ea83d0f9b0d56d939d01b7d590b3082d2405a20724e2c44b5123bc1407b11da3de5889ac52b7b7821c4af1303d3959eef3888b8847f3e0695b5b844e8e3c221718a25057e707a50e0159af4462bb1d103b9057ff7fbc1740bae1afa44138aa2b7e3270cf80a6ac745cf701040c97253133ea195648e929e6c6394940b6eceb18844f1c862da6597a46f64e0cb5d2803eaba4a08110a011a32452185a6425d9d44b43463893369514957592f519c22d2b06bdc762c519d5cb84e9a68456ac60aeae85ac6453de2bcc103e32dd509309fdc08e3b3698a193d83d62df74719703bb5f8cc5db7b88b80110d74d6949d00469b840ff7fabdd4c0cec1a097a6117c28046b06b82c8ee8204296428ab703840acf7f3333d742726b114d3292b3154b2c4095b6d465657ec0780c488a0c60443717109363c45777271955135e60b46104bc18bac09a18690b37c8078a22645532112b1dd09313b9a25b7094700639775f89b8d0314eef0186adf7ceabac36cc9292c270717f27caea51b1afe1cfe6b6a1cb1a7da53c6715c9c9b2694bd5a581b733ad4841b229fb7a17bc213b969935c672d0993a94ec170bdc8b7c800e66bc6514f84fbc81c7d1c9417b79a82e5b3980acc792a19c46d13a2e75a3af791beb401f7555793d94c0ee1b9e98a5b6c52777e537bfb287268ca9524a4438ad87a0e85279e474c5be7740b7867d8b04781a2436a8d343f62274e236c736dc3c59d5b326563b9c86798ab14a6c9a0e67b36db89a82af690da7016418ba2d6c435e39095bb81a0e49c01a73a31ec9159844d1a3eb233d16b932919421e6a342473a71de629477183e8f34b2b7c8abb7a3b6e516107cb5229d780b93417f9bc94c38bcaa58f34dd88835308c742875cccf4928122199cd932148f48a94c5c2252295890bb4645761d3c2c0f33ab3e1021aa56b573e9c6fdac37c83f678b97148ce573a244b0487f3cf771bc7b6a13fe53a6ba58854b87a67a6a17d6a301c85f7c061071b4ddb27b3f404dc402ebacb8254a0568d48b2d299bd831188886a65aea5cd8d987f6017a2f4392f455c2b4f9b63e6cc1a27ea38f2588b0f8086d7a5c5e4b05b76d2b8918820cb8851704ca6d730861b512fefb0a76b61401e23b01ea710c5e3b73fa716dfa6408a635423c61372592dbf174d6d811eef7c4d885bca5fe669233a141e43810ad10235cb59f824728bd7acf17765bcd354a493aa60438f07d266d728b640cb07d50275bc2605fa6c964614b2c8143b37b184f3c30668662149bc18c6038706c12f0d31b896b69a7d588d0004497e4808d8c12253987f000168ea758a5b32c195f03f23a07c5a546a6607084cf79e073bc6cc1cb372e385ca827c490a42d900035bf735c6242031b8332bc57765ecce4792706f1cba0c7cc390e7bd3595ab876c4e397c58fc325c9607b0ee39692c31730eb4744e967e7ff8139fd1a545622ec870516b2925628ba782cac845b2429c3cc0ebf7747f414e8d35cd4a91c959d2276404a5df4790f4363104e6a0d1d60a48b65bbd92b417b51a5338cebe36c0f218bf27968c05d99947e9b44b4b5b2934c538f85cd7c8b9e3c31637e14c5c0279cdd6386e20ca89a53671fb2f04249565491ac2f900ad380d1a68b67693b185f26a232aa1b43503398002085713ca4b2f94cbcf6e837b020404b7f519a2b520f93b901943c918393f26061346a0193ce9ba8a48b5c4b01b0efa231eba0528c5b38cd32cd5d22586494734fa746b411759303a51a12ec58b03fc99a1edfb1cb01375032054878a6ec9dc4425945aae387e7fc6cd399c90049854cf51b3db690eb78a0a2db04d05102dacaa9834620aba427b5733bf1d1693643c88bd265af0280ecc66344b81129c491b3998c6c70ccf03257c2d06115b72aec35b4c8774cc7936c578b29fb3b0a5c66709363b73f41b08db919cbe57ad817cbb5df62b7836af6ff4ab8cbb07c9fcb7e3d601b2117e6a7242abb24ea96ca867b597e9e9b45c01aba9b54d2d323df8b38d3d37b72c2790e1041037355f274cceac2714a92955b31c55d4903a85bca55b2bc22c536aab22557d912fe2234423e7bc0894bb5f846a2dbc4a0dbb11c51840059ec11bf6cefa3ab473e1cb0f0bd17ee0bc3c59175eb63c3144108548720ce7ee0f43a9ff3f52a9924efe9f2f59318bb93c86b5e15274a8e2bc08fe818b117ba28c5dfae74d54fcdf6f20052f79be333edc8dde + +comment = Official test vector 92, seed: "a28ead0a08e7228aeff602b16a1e752278b8ed1e91dac67994f5adc372e1d82f95cc390cd97ab9212275e0566c833fd8" +entropy = 690eb71fd7052b906eaec09937a8ed374e0b02afa27c2f14399932be5839fad281c38c2cb5cfafac81b96a810ab749b61806b6d54c9f8cf4bf1be0192423288f +expected_public_key = dbf001bfa28b07e21adc142c75111b9785aa2109a795ab792de4cb7b6298a504200f8850d32cc44e54182761a1c9c9ba591a9fa6873a61025515b068099bb1e63751c5b887d283077f86b733e4344d13310ce12d22322f254a0e92779a87067d19c53c70dbb927e14e1f2892b5273949428eb4c70c49da8aa7fb87048961db4892a6f89f18f0bb69347b9575025a964047ac7bd2c7472838383a6072f8338b23aa07d6b7b221e18d4e3c62641916106694315a2fc5bb88c6d664667680df556c3c046398a88328421f32ecb758bc64cf246815a25922021dcb67c995fc72cc6b46bf5ca9ef3998535ac5cfab70aa54318f9532dcd138a4c03e2ff5024c52bb486ba7665b27610b822975c412331ed6c98e66721daa1897936371113a4f17d96ea735a5cdc019809c3907c03fa950c00eba9dffc69a902151a39163f2931e1c0271d491562e0a87fdf7b7846c31151017ef08727dfb68f22a8585295659ea358cc1b85c9ab4d107413225b8259804b31850eb347e1fd37f5435617a7a07b15321cc204b1a6b7c30d67e91c088a458bef5cb704e6b662189a9c0079e224a94e21502c0f1a4dff6028ef6645cba38c0c86eaf673e9b2613620bc216914a9781645fc48e33cb9ea06182637439f1d1a19fa50cfd3b5e2cb8310229b74ecbaead4b079d535521b8587a2995fa9b8c6694be6e432343c97c16ca23bf53883e23cc38f10c38e54f5639b9fc0943a4f41cd0acc8db40cb12e644cb74b9d4b858f7d6767830b92381a42368476cf2602adb9ed08b35ff5c4d1ea93c94aa75e218779825401d859902d19822e9820d86c7e57562795b89cda97eba773070bbc502884a6f437d7ea7a459c0764cd943e0b6a5b61b8358530459685e2842ae9ab867fa712172207e692a7affa872323779087547c3d8b89f368ce078acecd55aafd5305371a5bef24fb255211b2169f4543927c845a3049f7a88513a682303960c2d12bc277656f15738c4368deb70cff2a32a1d179f4fdca57812cedb21b356e0aa63270788b510e58b4bf613473fe931dc80a9cb8bafe63aaac3913936c8a939c413cca10a1277409250b5da321ee5c24ad3d093c1c7095fba34b81380e5da561bc039e3a8c15ff3982a7938bc16446a3ab2679a50c2e5c1d1a08127db4cea30340b5589b2327988c97b78f003d1315dacb301520a11f9f0b4fb33ce7c0203ff11c6a66136c0aab83928c145f4b968783b131281f2153925dc13ad133fcc5247b595cef0f03ff0da0a429c0de9a54f66c03f1a616c7210b7ed3624fdd27e99f38472867a9283c6b294b0d7014cf9eb62f0d7b051b190f093450453c056081370b45f5ebc4c03808fbb5c6d8b659bd22612c2872de9034b11c6aa6d356b2baccea0f909da0c775969c12fd5bb0c8a9bed5172a9358e01c29d308636b5d668f5b2c9def1380ba23b5c84259d887d3dc4882702b41d99c72c800dd5b19935d7722610741a105c1d227c38c5665cd5a6daaa991a9868499830c1697fa430bf4f95b03004126fac283a167281e4b847eba8487b0032914edb0b67b1e320c25bab50499378115cb07a9000e0156c9c93c1d90693b9c22623a3eb15618fa1c470481c4cf292b7462410d057c2e5851e08e31fd88af2f84b0cf79a88de834c1f17c7a5fa17d329caa0 +expected_private_key = eeeb8866b17cda12a45fcc6f9d05afd103835147647a7301ee071366398473c8103ab3b064e340f4f9866190acede02473fb49635bc38debcff0f34c5175ae0ec025aaf19cccd46d658c2a6ba62b50d1452b09c21b430ee9a3ce05d36a8e1aab2bf0185f35664b4999cc8c0df049c01056af6aacb025708c184534f1172b28fcc94aac2fb7012e20443f11f43478e7b1dd8a5c7d9b5a8818c0d2259c7f710f51003777b060f8db5fe06c3520d35e97f6b5792b0ac3304349387b637686cac1a6e45149173041fd7c3cfff5a398ba832dba04dd7179d0768122a701f4e0bfa48149ff140e2978a723fb985b939458b081e1068ee5102e5f540365e6accbb8c28db84125b21e8d04622412c2f075cb57019eb828616caa245a8b099a01bd86268cf491823e440e984335af59924fac1d43263af725895c717e827532d35c7da9ac1420b46aef13c9f33a427bb5a1bc646f7b54a21760527d303bacb2a21aa39c5577bcd5f416f126741fba9c2cf9401ec20a14e9a7bb927cc8135bbb0c3180696093289f4b19539c58655b8698a5d1339c9490be7c04ad3311fd422045a5027b203407cb5755462c21ac51f523389e803f30e12fa9c0aa7b4a1fdd85c66989af558cba916c9a037ac7de1a3f7f1b5bd3208fb6f28661696ad0db88d10a3b224a5bb5c99ccc96820e153e478ac579c65bec5a3d4b85aff1c4af5bb222e7aaaf9e9149afd11ea5e86990913d2b543913942d148639d9815d4a8908362a84bfb6ad20b8acf9596df4187009e7b773070450010744712f9e7a9b8e9624e3e2b1d6140a9e4789775abcbd2657aa487740314ea1e446db5c09746accaee29783b23ebfb255ba5c9706f1254703c676ea09801762e9fa45d858732ae7218b37107b3708eaba05d2c035fd447ceba46ee446aa324bc184e7b929f7513c16bfde5c5e55c05e6b5041552c17dd223af273cbbf65a44b4b6dabd51b341464a9993effd671481592c5a655d116b963975006b13503baae38332248f58656620098f42f97a813dfc7b4df880e5e783af5d833b89079474040ac05a6a7ec5e9ec1bdb282443c736514514f1cb7455958608a62503428464d89c66b209c417445416a54aa66234b1a5bf1c0c3f7064b6d0a7243e170b6acb01c033c5b1670a3ba6801024c03b24cc1786025fbc56bf04f3b241e4be701c9764938695bea4316adb6abacfb44f2041d2c29bb867379374b211e990f194b872a7b684a212dc179a4add943aabb1e6beb93f5cb100fe342d0781aa80989406571d1b79d08e31ae15b81740a22df02270f920ebfaa3c9d74392cd64e71f363df221134e9be32b6b855fb76e15b5c91cc6c3f750aeed71071a0803987ca7f35882ac31413a6001a6023c0a183961722b6ebba16f5577d95bea2c5ab446ac8e57acc96281a07599a8d335c2c12388bb0cb9f8633cd2251c8a7563b396072d0cf6e7b8e3af2192e5731341214c30708e128914c124973e759d4221f1735386b874905220c41fc731a22b9c665cef0cc5353b799399905f0acb549f13c6fa56fae2907d0353ff2054accec40310a2c4b62aac3f392b014ba88fc90eb868693eac83516336baa601f600518fc820bc8b0e76c66dbf001bfa28b07e21adc142c75111b9785aa2109a795ab792de4cb7b6298a504200f8850d32cc44e54182761a1c9c9ba591a9fa6873a61025515b068099bb1e63751c5b887d283077f86b733e4344d13310ce12d22322f254a0e92779a87067d19c53c70dbb927e14e1f2892b5273949428eb4c70c49da8aa7fb87048961db4892a6f89f18f0bb69347b9575025a964047ac7bd2c7472838383a6072f8338b23aa07d6b7b221e18d4e3c62641916106694315a2fc5bb88c6d664667680df556c3c046398a88328421f32ecb758bc64cf246815a25922021dcb67c995fc72cc6b46bf5ca9ef3998535ac5cfab70aa54318f9532dcd138a4c03e2ff5024c52bb486ba7665b27610b822975c412331ed6c98e66721daa1897936371113a4f17d96ea735a5cdc019809c3907c03fa950c00eba9dffc69a902151a39163f2931e1c0271d491562e0a87fdf7b7846c31151017ef08727dfb68f22a8585295659ea358cc1b85c9ab4d107413225b8259804b31850eb347e1fd37f5435617a7a07b15321cc204b1a6b7c30d67e91c088a458bef5cb704e6b662189a9c0079e224a94e21502c0f1a4dff6028ef6645cba38c0c86eaf673e9b2613620bc216914a9781645fc48e33cb9ea06182637439f1d1a19fa50cfd3b5e2cb8310229b74ecbaead4b079d535521b8587a2995fa9b8c6694be6e432343c97c16ca23bf53883e23cc38f10c38e54f5639b9fc0943a4f41cd0acc8db40cb12e644cb74b9d4b858f7d6767830b92381a42368476cf2602adb9ed08b35ff5c4d1ea93c94aa75e218779825401d859902d19822e9820d86c7e57562795b89cda97eba773070bbc502884a6f437d7ea7a459c0764cd943e0b6a5b61b8358530459685e2842ae9ab867fa712172207e692a7affa872323779087547c3d8b89f368ce078acecd55aafd5305371a5bef24fb255211b2169f4543927c845a3049f7a88513a682303960c2d12bc277656f15738c4368deb70cff2a32a1d179f4fdca57812cedb21b356e0aa63270788b510e58b4bf613473fe931dc80a9cb8bafe63aaac3913936c8a939c413cca10a1277409250b5da321ee5c24ad3d093c1c7095fba34b81380e5da561bc039e3a8c15ff3982a7938bc16446a3ab2679a50c2e5c1d1a08127db4cea30340b5589b2327988c97b78f003d1315dacb301520a11f9f0b4fb33ce7c0203ff11c6a66136c0aab83928c145f4b968783b131281f2153925dc13ad133fcc5247b595cef0f03ff0da0a429c0de9a54f66c03f1a616c7210b7ed3624fdd27e99f38472867a9283c6b294b0d7014cf9eb62f0d7b051b190f093450453c056081370b45f5ebc4c03808fbb5c6d8b659bd22612c2872de9034b11c6aa6d356b2baccea0f909da0c775969c12fd5bb0c8a9bed5172a9358e01c29d308636b5d668f5b2c9def1380ba23b5c84259d887d3dc4882702b41d99c72c800dd5b19935d7722610741a105c1d227c38c5665cd5a6daaa991a9868499830c1697fa430bf4f95b03004126fac283a167281e4b847eba8487b0032914edb0b67b1e320c25bab50499378115cb07a9000e0156c9c93c1d90693b9c22623a3eb15618fa1c470481c4cf292b7462410d057c2e5851e08e31fd88af2f84b0cf79a88de834c1f17c7a5fa17d329caa09bc32a138a2fb5b6072464172abe0fd97e9eabf357c3fa5391d94a415b53abd381c38c2cb5cfafac81b96a810ab749b61806b6d54c9f8cf4bf1be0192423288f + +comment = Official test vector 93, seed: "92877d706daf88ef3412eb143db8cd91bc047a9a43b7acdaa42523560dee4c172697be4332042fcab91135839bf74ab2" +entropy = 32e0ea9089fa928482c0770da545af1bb871a03ce38604138b0d08ea2a10ca2bc06c5bef7b6508409daf847a64c8d30d0974fd3ba7476dc76c46b458a036d884 +expected_public_key = 2df84a0272c13da5a495942ba848ac92d302a98a3e55937b8b1b49fe588be32a540ec90b5cebbd90d1b80dd24d32eb85fc041a7ca307e522b8c5fa9c85bc258c8abb9f2678d29569f313a1e660a2454730261a6766945ce42c140e5181c68461eaf12d1f185c358233b9bb4902fc5089f851bac83ce3f07bd7b185ef08626d7029129703334084375bc5ba27ba023ca6722319a916baad529715661e3a413c8137cbbb206e313906df1ca77cba73e5499f54fc53047741af2341d5623278f76131ab47af10bb4dea8f493b6c0e4829ecf4c425a46d21755e93e5a80d0a927739848695be93444a98a45d02d1131e493da5a0a1117b41d4ab3db35a7a2e95c6055ba70ef159e7aa0dd5452598f91477087bef1396acd48e747b962205af92eb99faa809b4bc47eb93bfd3860102d4adcbfc39be80024550656c42785a6788c7a851b107823a02a3daa4caf25097f1f9afb29416dbb360c4a824e3ca2a30e19f94b805de181d0a028e685c378dcc225112899a6b79869109ca4b094909b21042c179c6cdeb22564cfb6f89135022fca3028caf7abab19a4045dd5a60721c6bb47ac53e40cd932511f2e5473d3b4ceeb44be1a00e090a886d345b13a58620c49ca0893f23058412054ae5069c1014361cfb0379c2215f330abc647114a3c597765fd014c64c8c1b1b45b3bd02be9d5a55b0cacfce297581fb48fe0256f4c0cfc84aae1c542f36730e5f10795c72157c653210686801210418b549a7398ca8b7c70ed007cb153d2a55178ae23a5b095ee2d116b9f3a1a9f19faec40d75256cdf76ab8e393210d3afae375a7bc384799a6efc5b76f287499c6701368b8ddc219a9f2295e6e01d22c4a50bd08179a08044b702ffd786faa088f867b63b951a92751cb0f839cd554a83745444c3bb88d3609a9a4bc2e0bc73108a71cc7534217872539bd6e942cd36a09aa0374a3894d279a1f7c38a56e7c0298948c330b8c3a5b6aec3bbdbb87384677ada78017564a7fe40c2983a9ed3acbce5e29e3a78502952a9540a44975572a1512b1d4284d9bb528e538f43a15216f4b4f2a5208e06c43896a19c416c99c3b677564975948468792edb6532f9b0567f407fc6d6c302766c6d1373bf78a18896188cf20ccec39632269f6a193de5ec5dca85cad6bc79023c691d5682643b6f314827e0b24539e2aa91123b3fe42308f041dfb6c876d079d60a3ef5735ab8a36abae34f4a12729be4a00f753c7e4699572375e6c7b037948684206c08a27ec12b26f7349cdacc3559ac29d5cbc35c310870597e391ac4e4c02991096f37492083bc1c43304bc3d5925843622494c735942dac8904cf195387eccdcfcc8a999b6d1b744a542359e6b167f91022be1660bbd218a6a6861aa17c57152552172f38b43d5281956caa77daf9b94cf60cbf08cd9d9b4c1edb6c4a17bae3b36800891910c280c3e7cbf4aa11f33a7c70e3b419c2b2b9a64709c31878f913fb934d77b4c36e329ba98b44f394631e0a289042061f527d67446d6ab55ce7b43ee1080fbae67085a2a03b36cc9ad9b5b546156c3c5a79b092a67912a19575f6b5546397c15ae334b451c3d919422f28b70727c75fb631a2ab012bd5971b5b2b75f80e14bec0494baeae3c7ae947bd69827e1fb86388052c3bf3f8b4cd25a568 +expected_private_key = b27ca8d40a1cf8aac1a62553ff541ef56b4b4e352e38c0ae8c2cb2240c2d2525adc52b1953a1c239e3add71b5f7693196875babf8b31edc528f3b320e6569997639f1c9b5279c38d5ddb3b691b0228ac4480d45077db55bac24285c5820c49be25632c4aaaa23ed84e10a1256d9cca9b584d423a9fd37276cbfc5953c9284a4097bf71706069ac413ab857c64ebd179eb75496170778afd74180d877c9d69e1956450b1289948323f64227960a0b24b442e78c551c5b35e89b34b018b80bd094f7594365195f44c05bacbb2e0a976a86559bd6b23d220b5c900375c6b188fb353c3b064ced669bee6751d5d22659eb89900a92b7ba84eab58b7e95cb8495191ca0491ef75a3abb9469a7939796c2f8c15ca22283235852b0a96daec403c5c057b5ac91d09cb16e01bb0d078170e0ce9596b913e953c5aa67bd8a2ff20c0261ca814f334244886daa0694368293fd858e14e23d13e66ac89a58867574804786c4c48d2fc003336c002a7776217acfe7084588455a0a85b8aa51c33e99b1cdb75541855577911db00475df42168e7a21efe57402303dfe37ab5bf10200395550a1639da2aa8e358748ec38946bbd3dfc27deb08f4f017abe33a2df3b9b96cac0e8c261e487cfff31a1484ca5e04036797cb4fc87ae6cc72f9ec0835ae2b160b425acfa8b75236d92870e4d43bfa7ea5c98827f95db6dd4200068650e3d8812de827c3f660cf8049933daa52793ac10f57ad8f2a7445927ca6022d5a485f9424662a175b2a6349b248aaf4853be709d42228c3ce3b13990794b9698869842b81649cbd9482c2435886441ed9a7927384371d02005a514717abec398bd183b321134a4de85a1fc9b72f7268ccafbae289c15dcec18bc26b81ec43c6b8a3919625165617d60c33f1e6b04cd5492414a15bbca5ce84284557c9cb481a951fa5df2e444e2c20969f38284e60ff15b0ee707115880bc6d3834230c7d22c7cd69229d1eea957f58b2d47b11ca97c926070cf1c1934ef83f5a26241c7c73959c8a0501c2c1c70671987243635fea56ce6ee292b1d6aa26c4cddfaa1751520fc3218e7e20c13c6a1df4835c7d6c0ba45923ceb2ab40fa7fe3732e47ab652309cdf28091d8d86308b73f90d86995220acdd9c544c95fcd24a77e7c90f2f15e52aab595e11b1ac0799a3ca95e0644771420aedc777a9048fa89ce94780c8f2b903548bd46a2c22e453b68736f5cca6c35ebb027c0c7035678f7f69a9ca02fbb4b23746759660251f6757be3aa1767d7280aa75b60a7a0cc892f70f67cda886cfcabb451a36023c688d7ab5e0a3b5bc88514ced3597a594d0e28c7aa25859e57be9fb12691c047a8a7373fe1695ae742027a8f5630cb2776721815742c66a4ba0c7e7e8b8281144b80288cc7296bfc8625a2cb995b548d48294b2fbca97d375b91203392cc27fe835f62db97b14739f6c8b1880a53ddd388e2636f866416817a110258a098d9af4458a64c68654e97099746b9b9e23adab5653970c00719b54e4a2d2092cd7bd62ad9317357e35224184a4e24b4a58014f666b33e1530365070b73aa6da432d04f2588f34ac1cb3b3f7fb4ab200b459966fafc689cc40adad0c26108859a2943e2df84a0272c13da5a495942ba848ac92d302a98a3e55937b8b1b49fe588be32a540ec90b5cebbd90d1b80dd24d32eb85fc041a7ca307e522b8c5fa9c85bc258c8abb9f2678d29569f313a1e660a2454730261a6766945ce42c140e5181c68461eaf12d1f185c358233b9bb4902fc5089f851bac83ce3f07bd7b185ef08626d7029129703334084375bc5ba27ba023ca6722319a916baad529715661e3a413c8137cbbb206e313906df1ca77cba73e5499f54fc53047741af2341d5623278f76131ab47af10bb4dea8f493b6c0e4829ecf4c425a46d21755e93e5a80d0a927739848695be93444a98a45d02d1131e493da5a0a1117b41d4ab3db35a7a2e95c6055ba70ef159e7aa0dd5452598f91477087bef1396acd48e747b962205af92eb99faa809b4bc47eb93bfd3860102d4adcbfc39be80024550656c42785a6788c7a851b107823a02a3daa4caf25097f1f9afb29416dbb360c4a824e3ca2a30e19f94b805de181d0a028e685c378dcc225112899a6b79869109ca4b094909b21042c179c6cdeb22564cfb6f89135022fca3028caf7abab19a4045dd5a60721c6bb47ac53e40cd932511f2e5473d3b4ceeb44be1a00e090a886d345b13a58620c49ca0893f23058412054ae5069c1014361cfb0379c2215f330abc647114a3c597765fd014c64c8c1b1b45b3bd02be9d5a55b0cacfce297581fb48fe0256f4c0cfc84aae1c542f36730e5f10795c72157c653210686801210418b549a7398ca8b7c70ed007cb153d2a55178ae23a5b095ee2d116b9f3a1a9f19faec40d75256cdf76ab8e393210d3afae375a7bc384799a6efc5b76f287499c6701368b8ddc219a9f2295e6e01d22c4a50bd08179a08044b702ffd786faa088f867b63b951a92751cb0f839cd554a83745444c3bb88d3609a9a4bc2e0bc73108a71cc7534217872539bd6e942cd36a09aa0374a3894d279a1f7c38a56e7c0298948c330b8c3a5b6aec3bbdbb87384677ada78017564a7fe40c2983a9ed3acbce5e29e3a78502952a9540a44975572a1512b1d4284d9bb528e538f43a15216f4b4f2a5208e06c43896a19c416c99c3b677564975948468792edb6532f9b0567f407fc6d6c302766c6d1373bf78a18896188cf20ccec39632269f6a193de5ec5dca85cad6bc79023c691d5682643b6f314827e0b24539e2aa91123b3fe42308f041dfb6c876d079d60a3ef5735ab8a36abae34f4a12729be4a00f753c7e4699572375e6c7b037948684206c08a27ec12b26f7349cdacc3559ac29d5cbc35c310870597e391ac4e4c02991096f37492083bc1c43304bc3d5925843622494c735942dac8904cf195387eccdcfcc8a999b6d1b744a542359e6b167f91022be1660bbd218a6a6861aa17c57152552172f38b43d5281956caa77daf9b94cf60cbf08cd9d9b4c1edb6c4a17bae3b36800891910c280c3e7cbf4aa11f33a7c70e3b419c2b2b9a64709c31878f913fb934d77b4c36e329ba98b44f394631e0a289042061f527d67446d6ab55ce7b43ee1080fbae67085a2a03b36cc9ad9b5b546156c3c5a79b092a67912a19575f6b5546397c15ae334b451c3d919422f28b70727c75fb631a2ab012bd5971b5b2b75f80e14bec0494baeae3c7ae947bd69827e1fb86388052c3bf3f8b4cd25a5687ef43a72ef04766f1e899d25c9a005009c788b5faf985123cfb3fb97975de26dc06c5bef7b6508409daf847a64c8d30d0974fd3ba7476dc76c46b458a036d884 + +comment = Official test vector 94, seed: "bb4c0082ca4044b1ff60b036c9b0e0495d58667156786c530bc69d949a13bfaff53798e456423d7a0e162a60039367d7" +entropy = 6fb2ec719f2a0dea152bf3f64b9d148f8ab8ba88f64e61f5db53e12d59f525574f797c007e4061f95c7d56cfc7ee5c49e849dde3fea8f25e7876df2a18515c34 +expected_public_key = fed53d194419c06b92e51498ac2601869a1024eb0370ca3a420c48a765a5b99bab88a759251cb83259a628603c54a831ac0147f3a97b8329474258b7bd6067476605a2b2b8311252fe54565c865e2dd96ea9e43b23121c27ab02c348310acc38d9d583b0d8105dc87896c238069c689027910f9bcb5d29aeebf57c2b9c78f76866768c0699c6bf743c0b43108c128a5277f39b32c351926369fb8754cd0197eb9ab602f391c4ba564be2c3423005266229a10b21d31a7cc3d40c2e7192cb6628afa692d3e75aace66e7bb1169893c8ee45bda5560e7f79c711d32d52c0c783eb40bf8977c3063cb114b6368a8d1486a86cb108d146a648e080751440f4d8087116701987c328d8547d0573f8c03d321ac07138a60954297cd832dfb989fd99aba8b213e7501cb3d25b384c023f66776efa3ad4981037a54400729634a782adfc24404bbb4f2405a27a8500cd79e8521daee48848e485f53a28de91089d849ebfb54d97d0cfb3cba46a27438f426eea1a0122f2180630864ae46cc5f3a828725cae89331d540b5b3633eebc0228000d75908f21277104d7816f56854c3289ad1a5c72c1655830089cfb9c90b1306724cb2828be679b989a3565758b058ae983c1ea9b71f10553795537d454eed50f50a40274592ae165c846d85527e479e3fa8d8865047bf68d200287c0a5b8a6a78c4769bb3a795979b774713a522dbb723f3628f2f4126b639e3b4c5c4b076d321a208a123d82852aa0db6ff8457e745b6b710b396c8106e635a379e22c59f17df7b7070eaab38d5448e4ab67e6b21078d5b9f9979c6d7365cd1423cef6b4c2b186ac6b792ef9351b6040f423ca22e7a1455a0473273e3b53b92a132d7c44556477907fb41f981a06cac9beeb9655fe90c4fe93cc33337d78294f7c128ffee82b0d4211e550342c599c9932a201f3cb8bb253a0559fd667a3d2cb46a4936f5cf9c4d0d105880a446066ae06841e12f259e4e6220d932633f77f9a6b463e180778d53c37e0bf423717f4d476ecab6bfbda7e461ac3cc9806ff4b38fb80c0ac9b0dcef56e9b27881d1aa0892657b12a913a8ab84037a6c78399f53816d79c6a1fb40f1ce200334a7e74760999f8a0294c3029bb23ee0cb81700b95ba20140cc5de537aca62c9808240e74d508a93263eb14b7d202a31ddc2147747192ba1f38932538241ad1db35caa40097393038957b64e716d4cb3675aa9ea46257bf55a6d1fbc2c356b020073e16ebcbddb3692515be92dba54cb62c702165c74864c3a7ce67d8af92eb78496c4e8eb78b55db7963b016a252a85e655c95936d6006bc07ba6250e458a387bd7bb43a3f5a16cd8733b66565377c1a74d5488c1a0dbfd7a6dfb474eaf29fa80aadc83267d0b98eb7a8ad3aeaba977a0a5e55b8937ab68e385f94db13fbc6c26bc23b0b8ba331a578b99b493d875f206c278a3b4f63e156fd386fc13104d6dc96ae9bb3055481b846183de71eca09273e58c466ea225b1824246c799ab8b045fb844572882299bd6f1b2787e1094bca102fb20e0a274257062385dac60f37a15b0496ed23c465a3ba46bcc0ba9b5b78c93b45cac0151687859b155ad62a8539cc6b872aeed63847ca64797460ff5f477504df1b1894fee3e6bbf8218590936e0102dce8adf459d590355576e1 +expected_private_key = 2735bc066a2488726c89432e56452acb24a2a5407522988c0732ce072128c8d5147c42988f94a8516c77873858394a2bef65b87741c5b9691b6db84e3b1b2b2f851b1305832e4210e5d05710a5bb7195b8bee0cba9b5ba21ba57b962a280565aabe1c9015635cf1a7121a8581fa0a78ab26fc82838b6a405c6fa5d46469136cccc34930664240915ba5c86e67ed9e73f4b123233c92d73bc05408005dcd6cfd62635c3026c990753c55ca8dd385a29b1c79fdb97c0b4cc8f26b28ba573b5194d6bcc065f5b97df702009c43a65eccf452447af91200ef68f18cac25e5c71e62a39fd7a26c6b64b47e29d1e4084801599aba838a3808ed83454b506965507cc6d0b34bb139300d1014168a79d5707c74bbc7b980461249fc31734dc384c9dac4ea6eb4701402084719593b62aae53c8d55719945975cfd25bff31c886640fec37cab3942676c840a453c6751caf16a4743495bcde6528a942a47e7c2d6499b2a872a76e928ef4b0aabbb21604f33231235a7cb47c96d9c976a2aad533a06a24024ad0925007984d99aba3aa8168a8ac92f662348686f756bdc1a23f8537545d13ae9f657caa801788c9368864a05f40af22e33e10705741f06ef577cade6ccbf1d01065565a5b13284690bf611093e45684d6c69fc0f548af852248db6a6e86a2a907c95ce0053fd942a92b024dd18803474b03f73fc022912257454c008d137c5e8404379db2719581af17108a03f58dea58892912c5fab701d28ca845068761f6bab69bbb75584f7d289dd921ab30379248c91106a784738b17cf0044418bb9ce34bcd913bb26d04ca04896109a255a39beba1a2b58490862409e473ca623933ac14c90f64cc74af396c3186917061b5c8c28f3e8b694535fc2c73af9843031c19166d2c8a3a76a2aba45eca36321ba367bd5b176b5c7b8d7b7192c95cf2803e2c3ca5d585c4ea63009c7b850f08759c278f1027c59499526a8b2e494203197a9304022fa0c4e47a3a6fbd8bc59a7c1312a6d19d3063e8078b1a1bff964af48151e4cd3cd87f49bbbe01afa3a5bf46a7f9bc97de729285af35a6a9168683658ee37ba6d9499cbaa8cb44c93beb287ef7cc7b1eb6491154c14fc2027ab49316b70b8237a546090c9687cc70cbfb82208a7f61f63aac1a42961568407343a050b1048967c5334f3542860249ff9c2fac8639ef8c125d0b9fd537fca93c1006a77499658c0286267b910c10b12a6136152bcbc03e782c41b1fe94a000cd974a3a9ade3a3b8b4bb8ed8b403683ab4ea3b84b84c4825f61f99d72eacd894337523c6b6af765bcc99393213938d66b18b2b168d6c73c2eacc42ad22255cd3ac6d75200111c0a6076f02f906b1c96213e80310b8752b1b619e72366f9a0ba4283520333ebf8693f93a7fd6c3560058a8d16cb50b585b3d519e4263b050259a9a0a8823e3cadcd0b81c1ca53820323a9539133c68b0a6cac1fc834b808d9375431f961fe3233c49fc9e88ea1ed0a068a271b502c0a0376a1309f86013b4947bb671c1b048c0905c8ce16d8035c7c05b9cb8755c7d7b6db2907dacc5a91b61b666837f209075e8ac5b86444b49ac878f9b2e18d42e0f791ab7cb7c973ca8e0437f158889fed53d194419c06b92e51498ac2601869a1024eb0370ca3a420c48a765a5b99bab88a759251cb83259a628603c54a831ac0147f3a97b8329474258b7bd6067476605a2b2b8311252fe54565c865e2dd96ea9e43b23121c27ab02c348310acc38d9d583b0d8105dc87896c238069c689027910f9bcb5d29aeebf57c2b9c78f76866768c0699c6bf743c0b43108c128a5277f39b32c351926369fb8754cd0197eb9ab602f391c4ba564be2c3423005266229a10b21d31a7cc3d40c2e7192cb6628afa692d3e75aace66e7bb1169893c8ee45bda5560e7f79c711d32d52c0c783eb40bf8977c3063cb114b6368a8d1486a86cb108d146a648e080751440f4d8087116701987c328d8547d0573f8c03d321ac07138a60954297cd832dfb989fd99aba8b213e7501cb3d25b384c023f66776efa3ad4981037a54400729634a782adfc24404bbb4f2405a27a8500cd79e8521daee48848e485f53a28de91089d849ebfb54d97d0cfb3cba46a27438f426eea1a0122f2180630864ae46cc5f3a828725cae89331d540b5b3633eebc0228000d75908f21277104d7816f56854c3289ad1a5c72c1655830089cfb9c90b1306724cb2828be679b989a3565758b058ae983c1ea9b71f10553795537d454eed50f50a40274592ae165c846d85527e479e3fa8d8865047bf68d200287c0a5b8a6a78c4769bb3a795979b774713a522dbb723f3628f2f4126b639e3b4c5c4b076d321a208a123d82852aa0db6ff8457e745b6b710b396c8106e635a379e22c59f17df7b7070eaab38d5448e4ab67e6b21078d5b9f9979c6d7365cd1423cef6b4c2b186ac6b792ef9351b6040f423ca22e7a1455a0473273e3b53b92a132d7c44556477907fb41f981a06cac9beeb9655fe90c4fe93cc33337d78294f7c128ffee82b0d4211e550342c599c9932a201f3cb8bb253a0559fd667a3d2cb46a4936f5cf9c4d0d105880a446066ae06841e12f259e4e6220d932633f77f9a6b463e180778d53c37e0bf423717f4d476ecab6bfbda7e461ac3cc9806ff4b38fb80c0ac9b0dcef56e9b27881d1aa0892657b12a913a8ab84037a6c78399f53816d79c6a1fb40f1ce200334a7e74760999f8a0294c3029bb23ee0cb81700b95ba20140cc5de537aca62c9808240e74d508a93263eb14b7d202a31ddc2147747192ba1f38932538241ad1db35caa40097393038957b64e716d4cb3675aa9ea46257bf55a6d1fbc2c356b020073e16ebcbddb3692515be92dba54cb62c702165c74864c3a7ce67d8af92eb78496c4e8eb78b55db7963b016a252a85e655c95936d6006bc07ba6250e458a387bd7bb43a3f5a16cd8733b66565377c1a74d5488c1a0dbfd7a6dfb474eaf29fa80aadc83267d0b98eb7a8ad3aeaba977a0a5e55b8937ab68e385f94db13fbc6c26bc23b0b8ba331a578b99b493d875f206c278a3b4f63e156fd386fc13104d6dc96ae9bb3055481b846183de71eca09273e58c466ea225b1824246c799ab8b045fb844572882299bd6f1b2787e1094bca102fb20e0a274257062385dac60f37a15b0496ed23c465a3ba46bcc0ba9b5b78c93b45cac0151687859b155ad62a8539cc6b872aeed63847ca64797460ff5f477504df1b1894fee3e6bbf8218590936e0102dce8adf459d590355576e12c0db43f39b672b2cd912f907cf76a0f6fda925eb2d205546431be0b37b204114f797c007e4061f95c7d56cfc7ee5c49e849dde3fea8f25e7876df2a18515c34 + +comment = Official test vector 95, seed: "121d90e70af6204445d0deb28ac0c108262719e9fd3476aca74bbfde89faf04d8d5f89a624e8a75db80431f0d10ad28f" +entropy = 527fb88c8bd9a4d6031dad15e63878abd2b559e7e08d61f69e8e78fca964ee6ae32d432b4f9f751bde0496c580a181ffed762aa35454a02d3f1f47ee0394c89c +expected_public_key = a0e473a9d639b1299251b46d07c79c0df1ceb995a968b5b707b760d8bcb120f6226ef5b742f34548902a7c73338a8cbf8d6b02a83470874b1ec5845dcfd3a4067c420f8485fae1286a23adb7373b9217c6dc173748870bfd164a16d62a3a6608f5e2b7fe78b92364a4b821967db45ae29aa1b11c0cd67cb4299b32d263aad7a26eeb3a69ba56790fd806abe3935d82487aec3205a856b4981e7f53b8f82a30d13c1b725b1418607b6619b0e8a8870bba6070e33545730182fb5f6f9938ab2ca68c50719fdb472a88384ef210b0c22785367dedfc840979ab758479506064b7971426d70af9a95e7d585dc8b67d4ffc2082bc45a4fa9b4fb9541493c3dfb88fca757eccb50f1a9cced9c046f37062e3879e13958bcf063041e858810b057680276d2ca12a307f511217fd626561587617674319382a4a00ce5e3bcfc5ecb5b3816133910650a469ac663f7a4a742ddb87c4e5be636213880c246370b1cbb8adaab6bb7e1185e1f95c945bb001a0210cf56f326b35051b8dbe85245f9bc6d973b39afb3a3b961501862b4caabd0d55693c201390f48fb7511990571985764be7373a7fc4bbd5e82b31f52494b15b6c2c8b5b593182028bd7ac7a40fb446ea756463c396de29d0fdba2569b9001e169f7c824c8a42d313a15b682bd52004867837344324e2f91a06a4c9f7ca447d6291635257cb0934e015c1937f732c1bba2c13591ccf4add16960b2303476000d984a8fc8036772c3b7c5721261387ae535129a7921a1711c98103161a95ebe16c0e0a28555dc3598cac2d701a98ca249801a4bb10379a5c29a1932acb6f6c3d040639fa98fa7297c6d453e35587488576db9bb2f9d1c37f8260cba3ba90e4b779867ad97db03ff005ecfe3470d2c25d54105ca287a9e0c039c2a2b71a1cbc6260d59a268d60c05d61202ec336cb8285b41a043bf58949df50def5937bee1af32d174e8fb463d03449ba747e92a79a1eac8ded247aa0a50821a16ad4c9f533a0fa24684d452a71df461aee15cddc2185551112682b4867c6cc27c43bf835432cca184840b85886a5d970e9f515f7f97151410c401e9baadf41ce2b8642313c295d28587a327c41c24da18967a6426663642dcf389c50892d6847718365cbbbb80723c1397b90447b197842c96a141bf6cd317bf12bb64c664fd237e886a9f793313aab15f668c91c71149c4b90b35b147f7c34b8ab6948799897855b22283050b113d64a60aac739948844a9f99c448d21c414425d77560670c298f493d891128ab1665d8141d2b1c8e67950a68255b7f9376332b1cd7c6630ac05ae7c127fa7acc35e640e94285e78661b15b21685a36c889a8cc890ce53c36ef23c2f17cbd8c31351beba827949f8707a05324abf05aa71857bcbe690405ab0030e648fcd3bfc0f2ae2c627e04f490bc3ba237059ab93085de218029f056b0f57abd342170f5b16db069073a3c16bb1c0bda5136952919b22ac477ac2489237bb0869656614e4ac248b003799c761b2ba5f2711b24a01419c88937dc4ce745acc16c796e0123a4228ec623a2a4e059b80b72beb1329c9204b6555b0a62c14df0b19b4a157bca985090b428dba8587b53ca2714b2ec2a04d306b3cd5d09045252960a068412f1bd67b83a217049d0685ec3d63d691559a327b2 +expected_private_key = a680635121c694ac4672c809bb3b913e8ca2f659c756db1d7bb2369f41ab4ac9b3f5141216f3c997b00dcde37352d46463f371fec14b26aab239498d44975f787504815552e727329dd78428f5568b912c76b572ad9b3d335a9f5bc0283c76aef8d81369a0ceb4523bdc4bb0607c29d9998962f76b217774d74a3453a61ff1f40f89a51365212f39a07e913824bf36b6dbf6c8934014dd8716e998a982b124aed8b082c3a2998708bc1c4733773b73e0be315203e8e264a032797280ca0ab023a9d81fbf0565f491837cf031e219084b640ee8710589e05e1701870bdb7bf0b0bb539a0b3ab0028447110288c1d7d83f89578413a46b0b04406657b4e7e5a6d04bbb91055becc8ab907ca9647c4b8b144045b6cabcb974a47a35308a23e9c9281c61c556ec148c9a663ad9518cea36aaec71b6995110fc01cb66b75e128478280fcd31a3416a12e28c15ba617574730437da8bdfb86b58d88c789c4f9e23adcee53b170c6a0b80033ad52cfe1a155ea1a568f5b2ef77ab74878e0ce42a1f7c3c845713d17105ab2c91b83836e11b9858a66997b22e8a67682588ca78e6b6d736298ee34b100bce61e0ad921a9f020a7032351daed655d35b3659a96b32db9e68d882fc986da904408a98c469a84cd29cc999b2b071f84c921c585b9b3233c5bedf82637bb1253a4b29b36b42b54751dc629a215656aa1890c0c56e0cb62a3c02252b771d72375a60374bf8d84552080e0d456579930b3f2a2a3b7913c031112fabacaef75bb2da5202d7671359282cb4707b52740d9ca06ab7034b48a292404d26b6cfd08c8b0da61550044069f4cf27488c028001f2c29292840b60b321de5cbdef1ca216838091c3172ed26d141c957dd93bb6a59d9e883640d87a2a85605a9730dd5333843805374b58747c7262d5a65ef442d6843deb731c943269b4a9bf00f39b4a3847840c1bf4b9907fd7b9a66c5da724cec467102f080d4d0bc519d0b2504a05f7207edce7398d009348f64267e01b0ec207780791942565aeb061bf03719d706f87953c4757a75a126ead15c6c9447c02938c3b75a58ab25ce65a5caa21898fa8050319880223899f5546e0d253df7950691b86f8e3115438c3b80cc2e7a6178a96a0f38a0cc47394be36c9b0721580d646a89b9327210d40728f4bc4adbd8b130eecccf528a5a09595f32c0f64e602f6898b8a4c82d79a8ed31c4172a7812c295c93841929b782b334490eeaa38c17cb4e77664306bc7b01726ec656e24311c51b0524c72f0745665d43073604c59ec88df6fc9ee2f2a0476079bcfb735e562f57e2b0e1987a0220c98f0b4cdebc70f93ca709c5c2fac7098a7b866662accdf09c85974d7c88ce9afb01f48276ee320d70c7c0e15950fc0775e13173b60555a470302d0a0047260e5cf85ea2f3c326968d3c308c15eb400b13bcaaa65ebf941ef59a069ba0bd3d00841b6124574303ba8c2bc9f90f107865882c18eba462f6b09eaee05796e43a8647c59c64b7a8db9c0941299280af728b872c303755b682a3ec10c5876f040543bba028e870c02a4312aee9cf2bd1302df80bd0facbd0765a778a7fa2d3a4c9675965d6799fc7bd4e28a4e2a53948790234f62ba0e473a9d639b1299251b46d07c79c0df1ceb995a968b5b707b760d8bcb120f6226ef5b742f34548902a7c73338a8cbf8d6b02a83470874b1ec5845dcfd3a4067c420f8485fae1286a23adb7373b9217c6dc173748870bfd164a16d62a3a6608f5e2b7fe78b92364a4b821967db45ae29aa1b11c0cd67cb4299b32d263aad7a26eeb3a69ba56790fd806abe3935d82487aec3205a856b4981e7f53b8f82a30d13c1b725b1418607b6619b0e8a8870bba6070e33545730182fb5f6f9938ab2ca68c50719fdb472a88384ef210b0c22785367dedfc840979ab758479506064b7971426d70af9a95e7d585dc8b67d4ffc2082bc45a4fa9b4fb9541493c3dfb88fca757eccb50f1a9cced9c046f37062e3879e13958bcf063041e858810b057680276d2ca12a307f511217fd626561587617674319382a4a00ce5e3bcfc5ecb5b3816133910650a469ac663f7a4a742ddb87c4e5be636213880c246370b1cbb8adaab6bb7e1185e1f95c945bb001a0210cf56f326b35051b8dbe85245f9bc6d973b39afb3a3b961501862b4caabd0d55693c201390f48fb7511990571985764be7373a7fc4bbd5e82b31f52494b15b6c2c8b5b593182028bd7ac7a40fb446ea756463c396de29d0fdba2569b9001e169f7c824c8a42d313a15b682bd52004867837344324e2f91a06a4c9f7ca447d6291635257cb0934e015c1937f732c1bba2c13591ccf4add16960b2303476000d984a8fc8036772c3b7c5721261387ae535129a7921a1711c98103161a95ebe16c0e0a28555dc3598cac2d701a98ca249801a4bb10379a5c29a1932acb6f6c3d040639fa98fa7297c6d453e35587488576db9bb2f9d1c37f8260cba3ba90e4b779867ad97db03ff005ecfe3470d2c25d54105ca287a9e0c039c2a2b71a1cbc6260d59a268d60c05d61202ec336cb8285b41a043bf58949df50def5937bee1af32d174e8fb463d03449ba747e92a79a1eac8ded247aa0a50821a16ad4c9f533a0fa24684d452a71df461aee15cddc2185551112682b4867c6cc27c43bf835432cca184840b85886a5d970e9f515f7f97151410c401e9baadf41ce2b8642313c295d28587a327c41c24da18967a6426663642dcf389c50892d6847718365cbbbb80723c1397b90447b197842c96a141bf6cd317bf12bb64c664fd237e886a9f793313aab15f668c91c71149c4b90b35b147f7c34b8ab6948799897855b22283050b113d64a60aac739948844a9f99c448d21c414425d77560670c298f493d891128ab1665d8141d2b1c8e67950a68255b7f9376332b1cd7c6630ac05ae7c127fa7acc35e640e94285e78661b15b21685a36c889a8cc890ce53c36ef23c2f17cbd8c31351beba827949f8707a05324abf05aa71857bcbe690405ab0030e648fcd3bfc0f2ae2c627e04f490bc3ba237059ab93085de218029f056b0f57abd342170f5b16db069073a3c16bb1c0bda5136952919b22ac477ac2489237bb0869656614e4ac248b003799c761b2ba5f2711b24a01419c88937dc4ce745acc16c796e0123a4228ec623a2a4e059b80b72beb1329c9204b6555b0a62c14df0b19b4a157bca985090b428dba8587b53ca2714b2ec2a04d306b3cd5d09045252960a068412f1bd67b83a217049d0685ec3d63d691559a327b2aae8e61b905723fa092fb95b839f6de3670c39ce0498c27b87d20c24e7f64e22e32d432b4f9f751bde0496c580a181ffed762aa35454a02d3f1f47ee0394c89c + +comment = Official test vector 96, seed: "b3ac6503206accc2a92cbc210d020a2654726911d11ce676aa04feaa08af1d20c654e4105883ae470ec3ab299075d420" +entropy = ac6fcfaeeef795b6ef9e062f02bf42975fa01e7d91ba832f74e05269a72684d05aeda108ea4d6c6bc0fb958286850422bc357ca67b83c986048e0d0087fa11ec +expected_public_key = 4d960c98359f5719b20dca6d1e2916f2829e73f79b55b468170b64f2f8b0c788796801c8ec244e1973c7e033b768414c55d43079b2711bda630e678b184a70dd161c4dabbcb91c07fb634620d1450664a444e82d22a0a4f54ac6c7c02d74120b2ce205fe49a139b9c8194341f4295ef126b37f3b22e35792a8853b60eb3f7ed01314491c4451470870a5ea5b1d23442019bc1def547fb8935ecbeba0833228b8d7bf2a4aca52436a3f993f6164666ebb3c38317bf5b48cc7182c00d58d4a095d0fd4c60e4229e77803c4f38f22464c7a4259e45ac71e8ccde6e5738dcc798777317f9847f8357dce21b24ae462d0465f1d58203f3b8590d88deb9c6df4722a1420a9ea0813ec3777a6cb11ca0271292b6c662a870c292291164004299c82442a8dd5404e74cfbcb45175237ae5649f7136cb47b9c6c053203f265bab420eee2c95a5960f8a87c3333785e1b89ff841a6aa5aa964f3a853e512acabb60e29c3a4810df33830134c0e49bc5e1ba41b07b671e1ba6bfda82576406e6da854920a46914c8ea986b1d6a0328d4a450fc0ce698b9d16954aaa0c52b6f2b5ff7b5347e84c3af403e9b31ec180238cd5af96f5c6f0d3644ab51717f7255ad6551f44378294778937cc56b610680704bfb37e3ccc07c5276777e37f36623dec8225388c3a5a2c7026eb902c63260ce27ffe657bce34a47db43667b9293e04ab9677b6fdb0b0a429a4435a9f5624628a2c07bbfa8afed562be4233019524e67cae6f955226437433bc59835561c462071ac38058c145787c242d4b6dc055170675190882792ea49726dc8b2cb638763784d3c23e1791c93a55383a8c4b59643626f8948d228b670312893ab3ce5b123401b1b24432545889d4d124d2b846070c1663b87a3475c01adc4f4df286fc91c76b018c05b5a26a696df86c4b1fbb2ed3050cc9b54ca2786839f854b9461655972fe21c3c98007a693a4d0b8aafa3ab73f1c411dd283cce59528477b6e089847ce6518f29b523602f80ac573618070bca649efb84fc3947d43b229e05682914c153809521ec9b7978a6bd667f59b18f1d986222dc9ab345ad2c7c7cc5799c15297c22c3734df18a218c5bacb364c9136b8e055053567a1856c21b96a1a2723913c98cc364bbd1fc4edef37e1853c523727a6c677ca4c82ac4d49238e1b60c1531d1dc9835c4a96124a0011c09350353aac4568a84293e8666f6016e56c38371489eddbb3df3e53e6767bd01e231eb122f13f59a83a35101844ab389954e8068f6d7128c738ac1774edc6465eae8ccbabcbb41271467c407d36928d9e3174c99665e3a9af0fc1b2733925b254a3aba050ec3925dabc511427c0b2930bca63ba7629366c1ba620cc0d7090752157b5d70c098745e37db7316056c7bb37c024226425107da8ba0e9c30e2606752f31a017e50a0e10c05332677ec851eae14f594a55d07392c23a962248ccee1221feb2c8f801860892b33ef2247b801e5ff55ba97675a71037fd133133840050b8b7914125e9d30165847319eb1e483005ca0bb8338b75eed618c47408d0260ddfb1527640a148f29e64f65fcafc59a8715a8126830024767009bad41a3385c0173be51a35f3825843b59fe06b5fc03dc21f6d925b9f6d92fff175c9dd625bfaf502b4e2870961858852 +expected_private_key = cf8293b02a9a6f579f51066bd6e51abd270104634cfd482823102f2b63b18a8bb4f45a5af4d8202523cc1779b44fd283860bd004307c399ca5d8eacade156af824a988f5ac6bb50eafa6177a95b9752c922bd6a7c4265a6a88b11d0403e47127b1e80787742669e763929483393cad6ef91f18143e9d2b7cd3e028c6f56b91768113259bcab926a082a2a6185a1bf18656448a628258e21a3c6cca23449b4f9483ae9d01bdd4bc674e06566300ad2a215809e547e2626f8d9437baa727f3f05c31e85e4d34643148981bb6a82c3c75099a33a0e7528d45303d98223e1a4ef6536170f53a0c61004beb75fa34b8aed5156e4a538269775808283cb0ba5282607d50661d2a626fac2737c98cf33050353bb83e1c1136f1c26fe48d81973eb974ab1ba4b97c95c0dee065523430cc06620debba3db92888497658bc5c64b98be65ab2a0738f0750022b95a66c583354a63865b5237fe7098d279c53f731f3fcae8689754194a7b888199b89761fd09ff75677b2c500d7359905e76357163834712659f26d0d8c9b47192404975cfb89969a77615d1a3fb404baaa54511ff1b3b08c1577eb274f5b3b0b825434e87f60d18fa73141f912701a99a7c11305000789229a144a0899685596aa646f13573eba0b54dd3205de2c60c3ca1614066474b89f2377994bd14ee0a77e1d4c0af77748c1e623cb8947a98636694c4efaf0ce2bf779c66a317989a335a0071505831471c8d845a5fa4b3e42d195074244f70578124c4c7894ab84584daec8c13a6598524c023ca99f4c0499a68aca3e6827798b10ef9a4639605e2fe8656606438274ac8ed8c87ae0a16ba3b8e5857a7f25831d8b85bc7105828575320c6baba75489455154b31e50074a313ba9ad10b747f39405544f44949dde165070c8271f1ba80e57bb5bd1320c8a1f8fb47354079532bba51282ae3197026e18c46ae6b2ab9940eaba9f1ee421592770c9a9604263a4917c825c084c3534381f22c057592dd97940adb1a439d5128cf795cdd25640fa9229220a1ce4a6624cc9956105465246334c77ffcb9907159461cb1416637d8df34ab4b401413c27b6d5a1d23331f88273222653adf9685a614bec9840355b1a23a0c4ce60b0b678affed200bcb383bec2580c89127b2870745c15570ba1cec89f5dccc47be517bb020c57959e433c11df10810d5b37aa8ab3392b3358793246f11ece238646724beb859c861463c42b5030d9a1fdba3e1d391f9ca5a99df58a7948c66fa2b50864b73a40b52dc7cff031b3a3b21009268cd5cb00a89b44c156333b802ad03b2f07f70f7c11057ce78705ab6ee43681aff0874030807412a7743399cae832f6f3b65df56ab1b30d6967379e10b4ef53b9efb5632a23b942f832a7fa22cde494b0c7393d51ac807a38af119d526a5a3b91068e107812269ec85410aa739c288c20446b68880343f2e12157094dd424a349d1523e76c0acb9c29c22b6346386b522b0466bc8a85b97430a1df80850510c4825ec4f2aab987c4a07f11693e7bbb4662a4890a3c54ebc0cbbd75ca468428e38276e81c43d81a8d0e3bdbebac9aeb89fc9d7870bb88c5c16a137c41fee75640774c4b536bb1d7bbce797844d960c98359f5719b20dca6d1e2916f2829e73f79b55b468170b64f2f8b0c788796801c8ec244e1973c7e033b768414c55d43079b2711bda630e678b184a70dd161c4dabbcb91c07fb634620d1450664a444e82d22a0a4f54ac6c7c02d74120b2ce205fe49a139b9c8194341f4295ef126b37f3b22e35792a8853b60eb3f7ed01314491c4451470870a5ea5b1d23442019bc1def547fb8935ecbeba0833228b8d7bf2a4aca52436a3f993f6164666ebb3c38317bf5b48cc7182c00d58d4a095d0fd4c60e4229e77803c4f38f22464c7a4259e45ac71e8ccde6e5738dcc798777317f9847f8357dce21b24ae462d0465f1d58203f3b8590d88deb9c6df4722a1420a9ea0813ec3777a6cb11ca0271292b6c662a870c292291164004299c82442a8dd5404e74cfbcb45175237ae5649f7136cb47b9c6c053203f265bab420eee2c95a5960f8a87c3333785e1b89ff841a6aa5aa964f3a853e512acabb60e29c3a4810df33830134c0e49bc5e1ba41b07b671e1ba6bfda82576406e6da854920a46914c8ea986b1d6a0328d4a450fc0ce698b9d16954aaa0c52b6f2b5ff7b5347e84c3af403e9b31ec180238cd5af96f5c6f0d3644ab51717f7255ad6551f44378294778937cc56b610680704bfb37e3ccc07c5276777e37f36623dec8225388c3a5a2c7026eb902c63260ce27ffe657bce34a47db43667b9293e04ab9677b6fdb0b0a429a4435a9f5624628a2c07bbfa8afed562be4233019524e67cae6f955226437433bc59835561c462071ac38058c145787c242d4b6dc055170675190882792ea49726dc8b2cb638763784d3c23e1791c93a55383a8c4b59643626f8948d228b670312893ab3ce5b123401b1b24432545889d4d124d2b846070c1663b87a3475c01adc4f4df286fc91c76b018c05b5a26a696df86c4b1fbb2ed3050cc9b54ca2786839f854b9461655972fe21c3c98007a693a4d0b8aafa3ab73f1c411dd283cce59528477b6e089847ce6518f29b523602f80ac573618070bca649efb84fc3947d43b229e05682914c153809521ec9b7978a6bd667f59b18f1d986222dc9ab345ad2c7c7cc5799c15297c22c3734df18a218c5bacb364c9136b8e055053567a1856c21b96a1a2723913c98cc364bbd1fc4edef37e1853c523727a6c677ca4c82ac4d49238e1b60c1531d1dc9835c4a96124a0011c09350353aac4568a84293e8666f6016e56c38371489eddbb3df3e53e6767bd01e231eb122f13f59a83a35101844ab389954e8068f6d7128c738ac1774edc6465eae8ccbabcbb41271467c407d36928d9e3174c99665e3a9af0fc1b2733925b254a3aba050ec3925dabc511427c0b2930bca63ba7629366c1ba620cc0d7090752157b5d70c098745e37db7316056c7bb37c024226425107da8ba0e9c30e2606752f31a017e50a0e10c05332677ec851eae14f594a55d07392c23a962248ccee1221feb2c8f801860892b33ef2247b801e5ff55ba97675a71037fd133133840050b8b7914125e9d30165847319eb1e483005ca0bb8338b75eed618c47408d0260ddfb1527640a148f29e64f65fcafc59a8715a8126830024767009bad41a3385c0173be51a35f3825843b59fe06b5fc03dc21f6d925b9f6d92fff175c9dd625bfaf502b4e287096185885264e085f67e48f00a7a7f82963e8c67176bff839a54fa1008328c0612f98d83d35aeda108ea4d6c6bc0fb958286850422bc357ca67b83c986048e0d0087fa11ec + +comment = Official test vector 97, seed: "59eff60b1ef6185db34ee1e3b1dd2f159106ceceaa79beb74923b4f5623d5bc52dbf5d2594a1f7c6c64d12cf144e9ed4" +entropy = ba2fb9318d4dbe7488057c33e95e6f054583a2800c41bb83083c330a914a12cfe63f8ffda3565c2424c89b20974b748a65a5aba75133fcb3156dfb6626a83bab +expected_public_key = b49b9264faafe731c0dee965ac981965a28ff907ceabac477e2c9b6dc95aaeb0531cbcb65d8b3f6251be17ecaa89a5b57c1198ea66af1f4461b91c360e4531c4d49269896107f10ed1f1070e68cddb2a4e06c387f3126087a71a366a250b450be1567dc957bbd034b66ab65fd4eab2d89b8481ec2427a4af3c1b861c799263f492779053a0128508c86ebd6201c876bbe8ab8053b790314047a1901c9f327207b2130be5bce8504bb03817a380975cd81fe0c0416986a7b74a16a21146636abe4d2b2c5c1223d39265a6845804d49e5f160abfe3ca21a345b5d044afa5636c37b976f2894869bf4500c62ae9941b9b3c3e6064fec351268243fd75bf287cae8aaa9aaefc1cfba1032ad2623a6239a7f834a4826f86132b59ab24efc9c57cba929a64ba90271b987bc08a913298911650399429e9bfc40742df735f7cb935eda73a41f96caacbb34324b29e64348c6063aeb0bcee9066028b3340aa147b09c42752cfd6d491ffa497e17ab6c0726aefe59c2577764a1a996fd879e58c23f1c0ac9e9372b3f0be42c829b7b09acb722e3189a2b3e72124895ccab565dae583c6c76c34c2c0075568379639869325f6e92e0b91a2d4100b2f4aa6486b756cd521e1b781a964a21b8b0c72637a2e4299fe15c1ac275fb077cf42f36453e7603c91a648e09cbf128ed188639b7247584b333003a2175bc587925111654f24680c540b32643b035ff38bb4598785524504ebcb26163d513867d74744c8b562bd48989b3a328374a125ca05fa962ac08b0d22277e578206a165a9e3d31a084b4492c664448aa62986b55fe8c8420816a5a9c035644f592969fd0951b6e9aa57303d1f9927ff6b3de99263e2e11cd8317cfc899a45706746e9850922b9a4f9cde515623f3c48b86379c969969934ccbec4bea3e9796889cbcc56285e9a85f0b3471bf9692f3c72ffd945089b9a262ac1a8844c38c807f7274708aa0587f94a107089a99694fc627291c30fd6b0430eca692db54a96019eaf89635cf54f579a63048070b7f32dd2c32a18e2b7e8400344412e9dc5943bf3af11b4aa6c328499da7c220670958a22bffc89b8f0091c8665b6605571d8a1b5c934ce4686c7c047ae416bc6e39b7ccc92cb076de94001374217e9b8820354351cb377b4f06b7fbb69f64c7b48f781ded2cfee998718d875eb94866e7c5135358ea4ec92849978438c77cec1ba1803bf9933c8856657c953125eb76014bacca8ec9be6290936130d166b187e1463e55cae3ad85e96e81bc574220ab0cd374aa1f657abea849259b4431f1a00ee59b35486beb09302bf71b4c2e840963333b4a3be37f8048d42a0f67c886de9b47611555495248ad4c587577d45775f52135518793ea14582bf153c74210c36b9251609a4b28559ade5a93203725a475971b92beb88a69357bf83f384577cc1dfb62c70fc65401073c67a66af878fd961bacf46c633e7cac0e5092458cbba0c3b69494c4c0c0da6025cd6516c1ab89b3216bb9ba123040051563610251974a0b11be7190504522a128ca3107938f5b18e4441b52f7944b0e54cd3946c57e7ae3475bec06791a9f5a83eacbb12f40ac971cb475610a0e6c546998dafe5c2ed852d7715b3dba61b94849dea30e28720bbcb90c7af7feb0af619a0cf57d173405c82 +expected_private_key = a428a1343429ce9c3dadbb6213410e264426d1cb5c69c68e7f377bcbc454aaf867771258faa622b6367fc5cc46e960682a3984a13230b3d7c25a69ce4ab9af0234a109878e0cc42a9b858dc559ad3fe82c4060539c08828c51b337b7c0ea768ba646a2f04900a235a4042b88e8934d3b62821a13b67a912f162aa80953cb71c396d91b91521b6665062551e0a6ce453c233460789138cb16ac6e598f670c70d6325804cc494466710d984e3ea551f5ec60c5031e94421919f62c301181831b7fb4fc61da443fe12784cf84b5ecf240daecc87d711aad10808b96233d345ba80b0469797dc03583214355e8e9a356e367a593a6898355ad129a8546a0d03b2279021889c118db3583da691a9ad544086540bb2178b2125f00c94ae753038486b6cdf1cf7e5a2202290b4e5ac807eb04bea95678b52ff76c4757c68d2eb9283b8766f1a39e06c999015b1f1d5c3164338aeb432d54b338c361b9a7258981555fc2563e585a6ff60886c32343e0045746e50fe78a0a9bcbb6281abe3474ba50e1267b3276a1327a8f128e2b5ab077618c59902c35488553f745d2a0c942b81c0aab7afd0c869b9b9c66c1847257cb22b018b81b25c468a9bc35a180b090f4bb90c4ec035c0078b799046833cd90f7bc2678cab9b75b95a6b457dca8fcb84937c01479a0b7b6da9643da507a2b8b1ae25373825189729bda8b35fcea315b3b359705cd5b486582379093e64f431309f0389ff899beb4c3ca9689b412a210eb654f183362ab8398b1e3696df7432be662cbe62666471f2c056504a5c1c91017a6326acc7306524058fd0937ddeab972b00734f60d065a1ba8655dba3093d161b99e698fc778b2fe782fa8ec7c62d422e17b24fd107b87a8338ae7af6994c70d959cbfc3720b3174b9658f5d43713cd47325eb926320073f384f04e6831435524b686f2cd377c18363f8e554dbe6af09f93c2ff2a1f4a87159472e7d7a4db9243a1c6a636ad50735b870f1297b6d6b5303e2552a54aa5991340aa40301ca2d6bd9a765b72fbde1c3c44a7649ea350e00cde59628e06acad29888c9b73cf0aa65d44b60f086c21c6abcbd544295317b55ea9ab1117989ab7b7304304e5612119396727943678c31cf2b1779c946b82420a557a8d6426263d33c7f71591c7857e90a7fa05158e315ae19d1046249b3011b22291cae30501d1423674824b852c34c97258ab972af6c5195ffa20b6cf05ba0498a529756f173349bec8c180869293c5967454d01cb3c8edc7a3a776dba54c37513727a69caacfbaad8ec4a529a1872ca25cb4a99c38b225e379ace27485d8b91fef9ceb97c04322b59f533745d23720ae457fa11b3a0b831de777d07f88ed1771fa1d89db9acbc7bac471bd423acac482bfb29de13881aeaaae2f340c1e747a73b9071cc551ea59b03646b65bc2e6e04875754a77025985a026adcd321574ab45cda47134b560219338fc93b0a398d7f85169b4b32c2ec3a06529f8e3a57fd353327b03f87d5cb60c67074146fb460476c92619d9c23ba7a371fd9425cfc6486992959109cfa1c1a75ab9eba4235af63c6f8648ae7855a4eab5c9d3923386996181980b16b02a53060e5a64a8cf3ced087bbb49b9264faafe731c0dee965ac981965a28ff907ceabac477e2c9b6dc95aaeb0531cbcb65d8b3f6251be17ecaa89a5b57c1198ea66af1f4461b91c360e4531c4d49269896107f10ed1f1070e68cddb2a4e06c387f3126087a71a366a250b450be1567dc957bbd034b66ab65fd4eab2d89b8481ec2427a4af3c1b861c799263f492779053a0128508c86ebd6201c876bbe8ab8053b790314047a1901c9f327207b2130be5bce8504bb03817a380975cd81fe0c0416986a7b74a16a21146636abe4d2b2c5c1223d39265a6845804d49e5f160abfe3ca21a345b5d044afa5636c37b976f2894869bf4500c62ae9941b9b3c3e6064fec351268243fd75bf287cae8aaa9aaefc1cfba1032ad2623a6239a7f834a4826f86132b59ab24efc9c57cba929a64ba90271b987bc08a913298911650399429e9bfc40742df735f7cb935eda73a41f96caacbb34324b29e64348c6063aeb0bcee9066028b3340aa147b09c42752cfd6d491ffa497e17ab6c0726aefe59c2577764a1a996fd879e58c23f1c0ac9e9372b3f0be42c829b7b09acb722e3189a2b3e72124895ccab565dae583c6c76c34c2c0075568379639869325f6e92e0b91a2d4100b2f4aa6486b756cd521e1b781a964a21b8b0c72637a2e4299fe15c1ac275fb077cf42f36453e7603c91a648e09cbf128ed188639b7247584b333003a2175bc587925111654f24680c540b32643b035ff38bb4598785524504ebcb26163d513867d74744c8b562bd48989b3a328374a125ca05fa962ac08b0d22277e578206a165a9e3d31a084b4492c664448aa62986b55fe8c8420816a5a9c035644f592969fd0951b6e9aa57303d1f9927ff6b3de99263e2e11cd8317cfc899a45706746e9850922b9a4f9cde515623f3c48b86379c969969934ccbec4bea3e9796889cbcc56285e9a85f0b3471bf9692f3c72ffd945089b9a262ac1a8844c38c807f7274708aa0587f94a107089a99694fc627291c30fd6b0430eca692db54a96019eaf89635cf54f579a63048070b7f32dd2c32a18e2b7e8400344412e9dc5943bf3af11b4aa6c328499da7c220670958a22bffc89b8f0091c8665b6605571d8a1b5c934ce4686c7c047ae416bc6e39b7ccc92cb076de94001374217e9b8820354351cb377b4f06b7fbb69f64c7b48f781ded2cfee998718d875eb94866e7c5135358ea4ec92849978438c77cec1ba1803bf9933c8856657c953125eb76014bacca8ec9be6290936130d166b187e1463e55cae3ad85e96e81bc574220ab0cd374aa1f657abea849259b4431f1a00ee59b35486beb09302bf71b4c2e840963333b4a3be37f8048d42a0f67c886de9b47611555495248ad4c587577d45775f52135518793ea14582bf153c74210c36b9251609a4b28559ade5a93203725a475971b92beb88a69357bf83f384577cc1dfb62c70fc65401073c67a66af878fd961bacf46c633e7cac0e5092458cbba0c3b69494c4c0c0da6025cd6516c1ab89b3216bb9ba123040051563610251974a0b11be7190504522a128ca3107938f5b18e4441b52f7944b0e54cd3946c57e7ae3475bec06791a9f5a83eacbb12f40ac971cb475610a0e6c546998dafe5c2ed852d7715b3dba61b94849dea30e28720bbcb90c7af7feb0af619a0cf57d173405c828dab879de09b58d0fc7ade140393ffb5343abbddabdc118fad519b14436a964ce63f8ffda3565c2424c89b20974b748a65a5aba75133fcb3156dfb6626a83bab + +comment = Official test vector 98, seed: "dddca9dc31bea737d3f474e7560b37facb2f53c803e768ffaade7669ff94b1d4fbd17068cffd5dfdd24aadada4ef6b12" +entropy = aa6dd1e5799cdf7af9c4fc632b3eb9d51d66e85c8e0a21ec98664fc51ab63c7dfda268813efab5204efa60f78bf81d320d01ac09ac06244f7afbd2d80fd356d9 +expected_public_key = bc962535672a8d77c9eaf9726cc1a8b8d87d61b1461f33b7f7f5a003a8657297cd100324fea561ba879ffa75287d9a838275734593abc2b842d9353906334d3f9324c7d00eed794c78310421db45cab6900817348d67490bf1485e85a3dfa255694915d286ab5243b62d3a91f8493f0b19626fb89c0b9109c6e1084bd8c848c06b3472a65a2646dd89be2d922a0d2c5e816652c826854ab36f44809ee56c9f7e26a1dc30823535997a05255756704aa1029b86601e2853c2d34a192a9b2b76b31c69c1a048a76a6a58e48bc8e512b1c767347ae28ae046076c20179d0977d2d54a3f78add2ec6bc06071d9447f0461846fb1a5e91a760112424082c2994a98d07aab29e818fd15134de437c7fbc59469ce8ba80545a4a5bf337fe142b72e602d8a1b3009cc95975759ad38274e234aef0552b8aa65cdfcac975495a84c124f8426a9c87d8db03ce48b0382642cb9e31ce210b774724912b09b16d88ae007ac4542c092f9bbed9c262d823d9d5719b357821d4c245f384fc923cd334b9dff579e324a0bcfbcba61fb7ae9f69b3ab88693e005ee32bd1a6a3ca950a22421125391a060276b07242a795085d0098906969c421cbc469128fb5393b72590fd391dcdfa3cf87b9f7a4c6cc3a1791ae1717478a5280a3b7580bbedf88f0dd7c1c09aa67d6b284334049398ba983bcbacb8c56237bc3efb3fbfdcb358a006457832df7a01efd937e68b3299580cbe1c9f69e165d22683b3721e4189adaaa91846b7717d41baf8d9a1dc76c387f0b55c2552533326597466ecf06aca624fbf73226e471d835b0ee4a24a8f1c5fbe359c61d974a4d57c2f7c49822286ca27116839b784d6782c13b606b87804ba0969c7c47c7a29ce16cecff5514028c3d84944ec8cab4b4acb5b681723511087e25b8ae84f3741a2de6cc21e7a370b35c255c34555f29645d4b420494c4d993ba3f092ee240f1d3691753420891acfc9421c361ca2186b563ed63456096227eaa738a33ab56029976c1125dca790114aeb83aebcf271ed59bbc2e8377301b53d697cfabb4c6b40bae19b6cecd421a1109f9cac7b71c749e60a2005a30179c393d5033cb4f8795de4c98d91538fb9a8cb1654b1e6a82918471470461f54cc71fba50deb3e1221c55aa616ad5262e352adb7a89ca04557a2090fb05704b9521809b8cabfa325892ab46765cee83850586918422212c812373a1c6217ba890b4c5310f7b0d5d8275b884aa9e4914c85023ab53bea88ad4281a7f501a87534ac1d806b0f8691e9f1bc7171001043015b391cfac09b5fa88f840c63194632bd5a012b34b50441ba08c879c44654f136cccbb7114f7b4099016e0193cbbae63522927df4b740b3ca5b32b741ea15a47370b98926a1f90618f5235357e8087443c93444803dd22bbdd5340c876d41f3ac1db59e9ef17db71369a315600fc6801a54483fb015ad3766284a97cbc241ad73461f4b2a0f6645ef428805762a6e57474d29288404ad98fab63ae95e25436626bc66ee10c01e55103597288ac521b463886f863833948455319d3455110b68bf7bc495d1a922191a1a230a5f036c3c4ac05ee2609d09891ce368c01f037d818805a566193a433e924b30f4e86dc76ae2b345932a0e7025f8ce6101884469e31aeacaf4d77e3f1201bc75 +expected_private_key = fa198bb15b4278509dc232002c75a8bbf1853c474c8248b5062821e4d77fd5880979922016d17377f76a89ab9477a1024c9780fb728f6df3295666828143c52fe817b9688c70eba292d2716ab4970840abc4603f597b5fcdeb0144813602242625a067ea48b426738dad0ab986369aa5326dd199c72212c59ab20c8f63429683721a2c682c5aa853b86542698732ab86fe39c340db2d452286fdd599336b9923599b66c144c0c7848c20a6979133fb7b5efa3726a4f44389cb93d6a9c1b7e300cb852698c236ac00b2855861c88bad062a25423362c7774c1626834ee59880762508fb518f926a3f475d01aa8e5c8c4140537091d494af66b0e9426359032a2264af67e63541c2408b1853f87c68c28c8c13417f94d77f6ac3315f23405c233e14f7762c152609ac34842553de175a6fe1c08b44baa9d15cf09a6049b05b69f71df322171701ae91d050778a6754e374878169181a2e1336677889318cb54218ac055491b918bc2553023167151c98b30e1340403e0c59b3252f4d0c85ebac1877798c41aa43c5c7b738b7ce116428c049370ba6665be646b3125aeb947b1f3b2ec5357c7566c13eab148c453d6b2274a9295a06c822df9222cb2026f19603b5602d08d46d4c71384e776af2a441894826e4559f5975c586e47bc0236b4897622ae4396160334cc97aca101805814ae44786d1e445147a4728275c32554b9bd148ae9605e10c5a6b556704f1c17297a32eb311f1e92ee5f160e8522e06554b93b5c796e44086e75d236ca88ecc533c3b348091891e35639bd6cbdb3a408720b6e3a328c4268454169267a5c5348703c412c58846c192e0a162014600dbb351424fa8d0599775bd2d851db4b07438f655aad6402628563db3a435f75d440636cd64041de162d178c923490839f190f106be0020ab63e7b3eb718a4fb59e01057c416c330cc26e485a6d9c72b707da0b297c0a25247d26d40f044844c2db883a5bbfc2b06f1bfbccc6d10b65c9bdbfb806d7a04cd71774dd60bc423c1dfa897a0512365cd54a90ba6ac509298bf6455363583843925281aa405c291f11695cda995a9ac5f742351560b38f8720d66327b4dcc47626744241679247cbe42695b8d81c37c718cad53d1b318f9f900757267c43b982f26639901028f8f636c35091f1ca90a1e329d5cb069a918f45a078f33ab4dfd248390627926aaddff47ecef1718b2b048304cd40e72fb0872b6207856a61bd764034e82bb426747405e1ae5b93c63cb12c7bf09e47e27117d26acbc102b043616e60b714316dfc17306a77800ee87e03e4b74759794ee6943dc274aec1a08197a841e68f258202b1124803064f6e3295dd51ad18949a5a383a81363bb00118a8569a38d138bf8835362c723e999402d3cf728b0e11f647ce2b9390615b9e50487e23cee6f9cefc4a1ce5e83d28d642e3c16934b43931158ccef3832a457a5e833f317918858807ab084f687a394c257abcd8435cd717d1e6b79e78a37bb71a236729839b89a9905b5d935afdc2c1e6c71c597898c6a69765ba05e9784b7849c685ab5b6de3358c6299d8a4b075045d6ee15b639601aa95603a67378157b54889c3021453e373208cd06c0deb77bc962535672a8d77c9eaf9726cc1a8b8d87d61b1461f33b7f7f5a003a8657297cd100324fea561ba879ffa75287d9a838275734593abc2b842d9353906334d3f9324c7d00eed794c78310421db45cab6900817348d67490bf1485e85a3dfa255694915d286ab5243b62d3a91f8493f0b19626fb89c0b9109c6e1084bd8c848c06b3472a65a2646dd89be2d922a0d2c5e816652c826854ab36f44809ee56c9f7e26a1dc30823535997a05255756704aa1029b86601e2853c2d34a192a9b2b76b31c69c1a048a76a6a58e48bc8e512b1c767347ae28ae046076c20179d0977d2d54a3f78add2ec6bc06071d9447f0461846fb1a5e91a760112424082c2994a98d07aab29e818fd15134de437c7fbc59469ce8ba80545a4a5bf337fe142b72e602d8a1b3009cc95975759ad38274e234aef0552b8aa65cdfcac975495a84c124f8426a9c87d8db03ce48b0382642cb9e31ce210b774724912b09b16d88ae007ac4542c092f9bbed9c262d823d9d5719b357821d4c245f384fc923cd334b9dff579e324a0bcfbcba61fb7ae9f69b3ab88693e005ee32bd1a6a3ca950a22421125391a060276b07242a795085d0098906969c421cbc469128fb5393b72590fd391dcdfa3cf87b9f7a4c6cc3a1791ae1717478a5280a3b7580bbedf88f0dd7c1c09aa67d6b284334049398ba983bcbacb8c56237bc3efb3fbfdcb358a006457832df7a01efd937e68b3299580cbe1c9f69e165d22683b3721e4189adaaa91846b7717d41baf8d9a1dc76c387f0b55c2552533326597466ecf06aca624fbf73226e471d835b0ee4a24a8f1c5fbe359c61d974a4d57c2f7c49822286ca27116839b784d6782c13b606b87804ba0969c7c47c7a29ce16cecff5514028c3d84944ec8cab4b4acb5b681723511087e25b8ae84f3741a2de6cc21e7a370b35c255c34555f29645d4b420494c4d993ba3f092ee240f1d3691753420891acfc9421c361ca2186b563ed63456096227eaa738a33ab56029976c1125dca790114aeb83aebcf271ed59bbc2e8377301b53d697cfabb4c6b40bae19b6cecd421a1109f9cac7b71c749e60a2005a30179c393d5033cb4f8795de4c98d91538fb9a8cb1654b1e6a82918471470461f54cc71fba50deb3e1221c55aa616ad5262e352adb7a89ca04557a2090fb05704b9521809b8cabfa325892ab46765cee83850586918422212c812373a1c6217ba890b4c5310f7b0d5d8275b884aa9e4914c85023ab53bea88ad4281a7f501a87534ac1d806b0f8691e9f1bc7171001043015b391cfac09b5fa88f840c63194632bd5a012b34b50441ba08c879c44654f136cccbb7114f7b4099016e0193cbbae63522927df4b740b3ca5b32b741ea15a47370b98926a1f90618f5235357e8087443c93444803dd22bbdd5340c876d41f3ac1db59e9ef17db71369a315600fc6801a54483fb015ad3766284a97cbc241ad73461f4b2a0f6645ef428805762a6e57474d29288404ad98fab63ae95e25436626bc66ee10c01e55103597288ac521b463886f863833948455319d3455110b68bf7bc495d1a922191a1a230a5f036c3c4ac05ee2609d09891ce368c01f037d818805a566193a433e924b30f4e86dc76ae2b345932a0e7025f8ce6101884469e31aeacaf4d77e3f1201bc75919a696301240cd6129f66be58e19d99b0d827d9932785cd9ea3d92f7ba54463fda268813efab5204efa60f78bf81d320d01ac09ac06244f7afbd2d80fd356d9 + +comment = Official test vector 99, seed: "2a6f7386b815366f572aeb6c79e272cc21b7095fe09575f18072c9d677da23bc9c8a4bc393b7524604d299bedd260c8b" +entropy = 195d6c86a3df4c21e3007d7f2768b43c74cb3060e0eca77f0a5d3271542b9a84ae77e0f9f21eabd8c0c6eea7767f4e10fde5c2d79b8400bf96b19014b457ec21 +expected_public_key = 28441cc07c18856568c4fc0eddc04175f564bda148788608b71756367551a5709127668efbd60b389877001b948f2c50ce62c7ed63122daa7c1889400a4175ab959d09ab124bea2c9d3659b8b4861e482eded950dbf57a47c87f79fbc143d20420f4162f711963c47dcf7b8ea7faa329d6a70f601d3a1b15a7890804917c84477d95f916a3761e3d94a0b0d69d9b7c39692b7f4acb9091f87583810ccf67bdf86c4be8f08762f2c3428646a3d33df4b67eb87a2662353a208403bf59334bd9758a9439f8d8bdd45195f2255282a73456d168a2b249e8d180d5b310ba828685b3a1daba2fb88783bb5062c13b79c2b0c3a10085664377eadbb477329567d1158882085850b95697248c6271f44988218777d33823ad70791bd40e29825ed124b963e05d06547c740a5ab7a1488e38c464b53b6f016ba1b7648a14aaa111907846c5df162f61cc62747386915724a3b054e868bc04c934d64b7f2ff461aae980fa806cca7a9c4d7255564b420887946f7a72e4d1384d8222c70330b09c08d9a70aa176529f0685d087b8f9eb464a776f93606b05d0729fd2afa7969eec2662ebb7c7fc821d6b5393707acf25c0c2c81702cb195f8cf730e8a46442e91e18fc7577f4aafd6933450491ee24763bf6786d794d889c3005a323cef2a8863c7ae00998d2e3ccc1f5a6c8a933d5d615ce82af312990969c6288b6893c42142ad87ab483362461b87c641f646410ef5b393283230220a34730397188920b6873f16478331cb22a5a2c73273d865985533a1f8e109dbde719c10c8ed87a831ab65562751ebbb15d3d5b6e01f78db26a54e47943d6b31f916a552ed01a39f96dff820765d6ae52265010545162d509f6ac3f9b7c0fd0ecad4008732d6a9df9449b2017b389522f11870704127bc6d018e0a420dd441ebf636c31b3b63da9c00dc15be0b3188371bbc855254217b99294815d78194fdabcd1970e31e38d37b4b1cc69bf428514f50ac9bcca9125e6473028571be535fca274651752dac691ff8a28c555036378b260acb060faba9573b0b65cbc76b892425294d65658f4a1b3309b424c6865bf1ab307b88022087f97f6882d4360ecd91f3d2513059a784bb256e47670afd5c1ad5c177142a2955b082fd0b546577ca5286e0f1c85af8b0bd5650038609e8ec8344e6ccb6df93a056644cb89294fa19266948e9a561bfa66517a900b67f6be5efb853c703ccb4a296a493c24607a6ac4a749361d8f738080a80ca62aaf658b6a972894e6ca402af3c09d2a6e9c181005e0c4d193361859011173bc8b97755fd1085b52808373b29733a7d0488c5f890364abb9716920c074645ae023679bc9c2b3ad29b9051a94a124a43688a1027c35b90f9303664aa37aa92284f97dbcc7ad0f12b5b6ba38ce0a07130110518c74ea36ca6d6a44399a3983101458f926e0bb3357bac5a294446463814806ad1623185f295d27f2c913c9608314174b2bb8bc03a92db6cc6f044d964a7e3e289ea8f064d9b5c0d0eb43357495d09c0fbc4069903bcdc683763bc4c6acc2517b7c94e3e0265029bff55773421bc6143a38f57410bfb50bf21bafec948548a87667d95439bb78cca2c9da670beb4c816478683b5487a4ce6401ec27a1605f879e2d9c53bf27e165246401cad7840a077934b8 +expected_private_key = 55873ec8c5bac259501e025faed327b9b659b0810e7d43b8bf7a25a8c1a51062cfbc9bbeab182747196797913398db1c1ca41c1cc3a883400a29797ab4cbb553076c204167aad2208355279f504dd9a476985362898b4e423821cc2642c335c3c953c866451cece03098d5a2ae366ddae1a06e05547e1c0c0667cc98494bfa778eebc5cbaccc3038f93b82e57f814799cb7a921fb14042aac83a1b4897bc6a15c87fc94144828966c49b6cb8f842a3157b60d6b3271c3661529d8a93c7daf7b4de1396308c0cbbfc9f984617cbb5b1825c88bdbc4c74c58ef3d54d089613a6a431e3a59acf4201fbb6828db0061f1bc514dcbfe72023cf8102e9834d5d6bba8a354fe04c6008b37f9b07857cda1238f5a562f288f3217ffd1a1bf8b2a0fcf3af0310c84bd6cd805c246c4a227c9bcf963093a9755cba968e7c06cc4f987b516171461b69e013076cb652c2a0b10f1b0fc9d6b583a929fa3905ba4b6b41f19d862c82b5f170277530a278773fa740eca749c00a61735aa1a27719cfb75eb0768956718239f43239e25a316339db665eb9784ab581137d020b992782956522b824b3ea4cb540a4b12ad7c512046711b0463f779e1279bcd2b7238580c72df6120850376db48978dc717cd1424d0b5e7331b76d0ac0b024c6283c8418e5b1a7a297aa483e5d2a65f2181ede32c69cc4b9a8c4c0b90bb17ec06336d2100766aed931876ce45435b5662dd8a5b9f545292c870a16925546ae0cecacfb737647504ea1a29d13e0bc2d060bf7480345051e9379cfb0f901b9a426641802e5522ff8b199439026b123cf9b5827ffa147567912c46c88cef0b41d9526d227a72262c0e3b3157dc4898e07caebc8038142b5172a799b8a6db0f7703730c98e1957fef13d5d7b2a52945eff5c4337b6cc5004bacbb419ba73568aa357f61c70383447c6015a5896b9c0c0a2f2c7a76d940278d736d6b685f4fb3cc392caac1830b439468b6bc73585b4205751e55103099986308702a477588611a990580d88657024fa6d371550141405a8240109824788675d2546afad54628e93281abccae4eac11d200aa5c40a9e440d9f2a40deb31c2688a3266c9e16b60461087da271a1973374c99693c8111f9d458f92ac3208268078b177c818038305ab421b6d8297063061bb36f1318bb2108163a723a4bfc3c2a25f958f28b2b806a15e4310b8852103843c8ac26c7773084f1f82151c52083e69772a049123027916f039fd08713b98039f3b84cc83a8f88b2c19f48a958a443339a5a2158dfd7a08d11983601a1892a8c1152c602edb1592c3ae555b2ee54c5dc6020c0b95626fc06d85d78120ac135fd369de6b6aa902bb015a7bc3ba13a7391960c533d2f1a6278494e78b6a3c5b91a2b1aa2a0752e5c0a30e33cc86dcba2e3232c98b9aaf1bbdf9e825b15a6dc3a741d43a53eb10ad18e93541e224ec5a952d673984990af0d81577d1bc83b09856794d11707faac63a1e49a799224b51464916bc07f0a69f06f26696f5806e92ca4ada050cda48a9c90635a9c68acc753a711115c35488758a68256a32f4964c431d50c0a8c5053d1a41126a952270a309f69931c32194fd201bc3809db548a000558528441cc07c18856568c4fc0eddc04175f564bda148788608b71756367551a5709127668efbd60b389877001b948f2c50ce62c7ed63122daa7c1889400a4175ab959d09ab124bea2c9d3659b8b4861e482eded950dbf57a47c87f79fbc143d20420f4162f711963c47dcf7b8ea7faa329d6a70f601d3a1b15a7890804917c84477d95f916a3761e3d94a0b0d69d9b7c39692b7f4acb9091f87583810ccf67bdf86c4be8f08762f2c3428646a3d33df4b67eb87a2662353a208403bf59334bd9758a9439f8d8bdd45195f2255282a73456d168a2b249e8d180d5b310ba828685b3a1daba2fb88783bb5062c13b79c2b0c3a10085664377eadbb477329567d1158882085850b95697248c6271f44988218777d33823ad70791bd40e29825ed124b963e05d06547c740a5ab7a1488e38c464b53b6f016ba1b7648a14aaa111907846c5df162f61cc62747386915724a3b054e868bc04c934d64b7f2ff461aae980fa806cca7a9c4d7255564b420887946f7a72e4d1384d8222c70330b09c08d9a70aa176529f0685d087b8f9eb464a776f93606b05d0729fd2afa7969eec2662ebb7c7fc821d6b5393707acf25c0c2c81702cb195f8cf730e8a46442e91e18fc7577f4aafd6933450491ee24763bf6786d794d889c3005a323cef2a8863c7ae00998d2e3ccc1f5a6c8a933d5d615ce82af312990969c6288b6893c42142ad87ab483362461b87c641f646410ef5b393283230220a34730397188920b6873f16478331cb22a5a2c73273d865985533a1f8e109dbde719c10c8ed87a831ab65562751ebbb15d3d5b6e01f78db26a54e47943d6b31f916a552ed01a39f96dff820765d6ae52265010545162d509f6ac3f9b7c0fd0ecad4008732d6a9df9449b2017b389522f11870704127bc6d018e0a420dd441ebf636c31b3b63da9c00dc15be0b3188371bbc855254217b99294815d78194fdabcd1970e31e38d37b4b1cc69bf428514f50ac9bcca9125e6473028571be535fca274651752dac691ff8a28c555036378b260acb060faba9573b0b65cbc76b892425294d65658f4a1b3309b424c6865bf1ab307b88022087f97f6882d4360ecd91f3d2513059a784bb256e47670afd5c1ad5c177142a2955b082fd0b546577ca5286e0f1c85af8b0bd5650038609e8ec8344e6ccb6df93a056644cb89294fa19266948e9a561bfa66517a900b67f6be5efb853c703ccb4a296a493c24607a6ac4a749361d8f738080a80ca62aaf658b6a972894e6ca402af3c09d2a6e9c181005e0c4d193361859011173bc8b97755fd1085b52808373b29733a7d0488c5f890364abb9716920c074645ae023679bc9c2b3ad29b9051a94a124a43688a1027c35b90f9303664aa37aa92284f97dbcc7ad0f12b5b6ba38ce0a07130110518c74ea36ca6d6a44399a3983101458f926e0bb3357bac5a294446463814806ad1623185f295d27f2c913c9608314174b2bb8bc03a92db6cc6f044d964a7e3e289ea8f064d9b5c0d0eb43357495d09c0fbc4069903bcdc683763bc4c6acc2517b7c94e3e0265029bff55773421bc6143a38f57410bfb50bf21bafec948548a87667d95439bb78cca2c9da670beb4c816478683b5487a4ce6401ec27a1605f879e2d9c53bf27e165246401cad7840a077934b8cb6d7232426bdbdfdacd373c9190722e7bf342825f7d829185dcc9120588fc76ae77e0f9f21eabd8c0c6eea7767f4e10fde5c2d79b8400bf96b19014b457ec21 diff --git a/crypto/mlkem/mlkem.c b/crypto/mlkem/mlkem.c new file mode 100644 index 0000000000..514e1fce7d --- /dev/null +++ b/crypto/mlkem/mlkem.c @@ -0,0 +1,88 @@ +#include + +#include "../internal.h" + +#include + +#include "../../third_party/libcrux/libcrux_mlkem768_portable.h" + +#if defined(OPENSSL_X86_64) +#include "../../third_party/libcrux/libcrux_mlkem768_avx2.h" +#endif + +void Mlkem768_GenerateKeyPair( + uint8_t *pk, uint8_t *sk, + const uint8_t randomness[MLKEM768_KEY_GENERATION_RANDOMNESS]) { +#ifdef OPENSSL_X86_64 + if (CRYPTO_is_AVX2_capable()) { + libcrux_ml_kem_mlkem768_MlKem768KeyPair result = + libcrux_ml_kem_mlkem768_avx2_generate_key_pair((uint8_t *)randomness); + memcpy(pk, result.pk.value, MLKEM768_PUBLICKEYBYTES); + memcpy(sk, result.sk.value, MLKEM768_SECRETKEYBYTES); + + return; + } +#endif // OPENSSL_X86_64 + + libcrux_ml_kem_mlkem768_MlKem768KeyPair result = + libcrux_ml_kem_mlkem768_portable_generate_key_pair((uint8_t *)randomness); + + memcpy(pk, result.pk.value, MLKEM768_PUBLICKEYBYTES); + memcpy(sk, result.sk.value, MLKEM768_SECRETKEYBYTES); +} + +int Mlkem768_Encapsulate(uint8_t *ct, uint8_t *ss, + const uint8_t (*pk)[MLKEM768_PUBLICKEYBYTES], + const uint8_t randomness[MLKEM768_ENCAPS_RANDOMNESS]) { + libcrux_ml_kem_types_MlKemPublicKey____1184size_t pk_value; + memcpy(pk_value.value, pk, MLKEM768_PUBLICKEYBYTES); + core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__ + public_key = + libcrux_ml_kem_mlkem768_portable_validate_public_key(pk_value); + if (public_key.tag == core_option_None) { + // The public key is invalid, abort. + return 0; + } + +#ifdef OPENSSL_X86_64 + if (CRYPTO_is_AVX2_capable()) { + K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ + result = libcrux_ml_kem_mlkem768_avx2_encapsulate( + &public_key.f0, (uint8_t *)randomness); + + memcpy(ct, result.fst.value, MLKEM768_CIPHERTEXTBYTES); + memcpy(ss, result.snd, MLKEM768_SHAREDSECRETBYTES); + + return 1; + } +#endif // OPENSSL_X86_64 + + K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ + result = libcrux_ml_kem_mlkem768_portable_encapsulate( + &public_key.f0, (uint8_t *)randomness); + + memcpy(ct, result.fst.value, MLKEM768_CIPHERTEXTBYTES); + memcpy(ss, result.snd, MLKEM768_SHAREDSECRETBYTES); + + return 1; +} + +void Mlkem768_Decapsulate(uint8_t ss[MLKEM768_SHAREDSECRETBYTES], + const uint8_t (*ct)[MLKEM768_CIPHERTEXTBYTES], + const uint8_t (*sk)[MLKEM768_SECRETKEYBYTES]) { + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t secret_key; + memcpy(secret_key.value, sk, MLKEM768_SECRETKEYBYTES); + + libcrux_ml_kem_mlkem768_MlKem768Ciphertext cipher_text; + memcpy(cipher_text.value, ct, MLKEM768_CIPHERTEXTBYTES); + +#ifdef OPENSSL_X86_64 + if (CRYPTO_is_AVX2_capable()) { + libcrux_ml_kem_mlkem768_avx2_decapsulate(&secret_key, &cipher_text, ss); + + return; + } +#endif // OPENSSL_X86_64 + + libcrux_ml_kem_mlkem768_portable_decapsulate(&secret_key, &cipher_text, ss); +} diff --git a/crypto/mlkem/mlkem768_nistkats.json b/crypto/mlkem/mlkem768_nistkats.json new file mode 100644 index 0000000000..6a819f80db --- /dev/null +++ b/crypto/mlkem/mlkem768_nistkats.json @@ -0,0 +1,802 @@ +[ + { + "key_generation_seed": "7c9935a0b07694aa0c6d10e4db6b1add2fd81a25ccb148032dcd739936737f2d8626ed79d451140800e03b59b956f8210e556067407d13dc90fa9e8b872bfb8f", + "sha3_256_hash_of_public_key": "d4ec143b50f01423b177895edee22bb739f647ecf85f50bc25ef7b5a725dee86", + "sha3_256_hash_of_secret_key": "245bc1d8cdd4893e4c471e8fccfa7019df0fd10f2d5375f36b4af5f4222aca6a", + "encapsulation_seed": "147c03f7a5bebba406c8fae1874d7f13c80efe79a3a9a874cc09fe76f6997615", + "sha3_256_hash_of_ciphertext": "bb62281b4aacc5a90a5ccdc5cd3dbe3867c502e8e6ec963ab329a9da0a20a75a", + "shared_secret": "729fa06ac93c5efdfbf1272a96cef167a393947ab7dc2d11ed7de8ac3c947fa8" + }, + { + "key_generation_seed": "d60b93492a1d8c1c7ba6fc0b733137f3406cee8110a93f170e7a78658af326d9003271531cf27285b8721ed5cb46853043b346a66cba6cf765f1b0eaa40bf672", + "sha3_256_hash_of_public_key": "2cedad700b675e98641bea57b936bd8befce2d5161e0ef4ef8406e70f1e2c27c", + "sha3_256_hash_of_secret_key": "0a84cc895da138b944accbef3ff1a0004b8a0d8af5d426d2b82ea4c0e585cc6a", + "encapsulation_seed": "cde797df8ce67231f6c5d15811843e01eb2ab84c7490931240822adbddd72046", + "sha3_256_hash_of_ciphertext": "c15158a536d89bf3bafaea44cd442827a82f6eb772849015f3fec68a29d589dc", + "shared_secret": "c00e4ede0a4fa212980e6736686bf73585a0adf8d38fec212c860a0d3d055d1c" + }, + { + "key_generation_seed": "4b622de1350119c45a9f2e2ef3dc5df50a759d138cdfbd64c81cc7cc2f513345e82fcc97ca60ccb27bf6938c975658aeb8b4d37cffbde25d97e561f36c219ade", + "sha3_256_hash_of_public_key": "3dbc65b722a8982d058e27d409f04f744551ecde9015b62607cf67bb8ececbb8", + "sha3_256_hash_of_secret_key": "0ffced333b5d13fff22b81e66d57b6e2a6dba0285fe2a82d5537df51a8d3eac3", + "encapsulation_seed": "f43f68fbd694f0a6d307297110ecd4739876489fdf07eb9b03364e2ed0ff96e9", + "sha3_256_hash_of_ciphertext": "aec80e6fe21e2616352b4c148f9fa0e30986541fb0969df7873b1336b23a8de0", + "shared_secret": "8f50401bc9b1f857fd870902d4065f6cec8cb825db3eb22573c6167442b6e19b" + }, + { + "key_generation_seed": "050d58f9f757edc1e8180e3808b806f5bbb3586db3470b069826d1bb9a4efc2cde950541fd53a8a47aaa8cdfe80d928262a5ef7f8129ec3ef92f78d7cc32ef60", + "sha3_256_hash_of_public_key": "94391b7a41175a41c15cd995ebc69c83b29e4bcea6c186611dc4a79578e37f4c", + "sha3_256_hash_of_secret_key": "e3904266e186b34a397014c95f6d314cd6e1c813348b02e977d0fd21d9bb681b", + "encapsulation_seed": "ea74fbc3c546500ed684bed6fe3c496d3b86d2d6dfaf223969b942e9a8c95e85", + "sha3_256_hash_of_ciphertext": "39fa8e1d0a5e4bb987618734ee4903771886030b2d8bea4b5a9b0cb672ebb279", + "shared_secret": "3221d7b046caccbded38e369625f69bac60c2d7efacad8f24170b10c5d222830" + }, + { + "key_generation_seed": "66b79b844e0c2adad694e0478661ac46fe6b6001f6a71ff8e2f034b1fd8833d3be2d3c64d38269a1ee8660b9a2beaeb9f5ac022e8f0a357feebfd13b06813854", + "sha3_256_hash_of_public_key": "c5dbd68b3a8c148b2e7ac049bb986e14dd1cebfa1cbf3edd6bae85a4d2dda082", + "sha3_256_hash_of_secret_key": "b3fa7958f4b7ccb68712ae948c3f08740c8b89a69e53ad4e9959234e6869d8fe", + "encapsulation_seed": "64efa87a12cb96f98b9b81a7e5128a959c74e5332aaab0444fca7b4a5e5e0216", + "sha3_256_hash_of_ciphertext": "ca9f95c38dc95f51b6b62ec709539f0d1e9fa64e49ce4ad10bbe62868f35cfc5", + "shared_secret": "1d746afc4160c75aaa6c6967f4eee941e09546a039027f05f0f8a483710ac334" + }, + { + "key_generation_seed": "7ec408f52c9aa723d0c41d9987682a5f4ce6c9da7cd0215af60bbaf5484ab353a08ccf451b049fd51d7a9ad77ae14a81569df8c9bd3a8f1ebea86fdcfb823082", + "sha3_256_hash_of_public_key": "62e0447f7b5ae8a806b741ca5c302230b555c3786c11f3eb43894a8f45e3f7b1", + "sha3_256_hash_of_secret_key": "1a3249c268754c86d2e02ba9d87c2b60b220bf2406b71037cfaf6b089477ffb4", + "encapsulation_seed": "8a95d71228acaa5f9ae6f9d9ca8ae55fde296463b41083a39e833e37c4c90f88", + "sha3_256_hash_of_ciphertext": "ec7bb1327a69aeaf626a76d344be1156eac160262128a64477a194805b926233", + "shared_secret": "722fccef7142c46f74eb57a10b13e420d6554e9d18507f660bd1be96d3cebbcc" + }, + { + "key_generation_seed": "c121915bfef6abdfc177dae2f5a24218f9abda2559afc6741b08e0e61ab433eb84ef52db5eaa6df8ec3a0bc5ffa730db0dde8c5f38f266d5c680a78d264a7b96", + "sha3_256_hash_of_public_key": "0c1d832af7b7282d8bd81a2237107ee60d81e28eb64d6a153ae0eaa1a25797c2", + "sha3_256_hash_of_secret_key": "fd6b5d3f120ca009871ca24552a6118917ea882f12f30dc8097f6614d9d36080", + "encapsulation_seed": "90d79d75d0bbb8921cf70d46bab497022a8e750efdc99e5f1bae653275441c7b", + "sha3_256_hash_of_ciphertext": "da36cb6137a777acb4afbc0932811f75ef1d6732031309ae7e2de1543aaf5c2c", + "shared_secret": "ee7c5fb6a63ace944e1eae1bd4b182263d918754c33753b904853551b2b46cb8" + }, + { + "key_generation_seed": "d86634ecf96cc2603761e284c0e36734cedec64e7ff486469e38539c71141c5a99daf37400cfe59841afc412ec97f2929dc84a6f3c36f378ee84ce3e46cd1209", + "sha3_256_hash_of_public_key": "2b757ac0425152bef72ed852ab1eb44f4359499407bb6a020ff843a31657c5fe", + "sha3_256_hash_of_secret_key": "27dbbc7918c31e9ab57808f439c4f4189cc318a62422457f4fed733be959c816", + "encapsulation_seed": "be8a32f97b9a8d596382c02fa2a0eeebc15c083e970ddaa4f2622b91d6718663", + "sha3_256_hash_of_ciphertext": "85efbfd0b096fa921711ea66b17bcf7c9a6240711b38a88830dbd9d716f07195", + "shared_secret": "77cfbdae47854e9e10765cf397eca9ab2bf2b7522817152b22e18b6e09795016" + }, + { + "key_generation_seed": "0610678ff4dc3128e1619f915dc192c220f8fad94da1943b90aaec401683a492da1804ddb5aa9b1c6a47a98f8505a49bae2affde5fe75e69e828e546a6771004", + "sha3_256_hash_of_public_key": "53b9d62e64f9069d9fb94ea2c0806459b201531f4fddd708d162981cc1fb3757", + "sha3_256_hash_of_secret_key": "f4b964b7ab3e09fdf3d91527da06a4d29ef28344709a41739ef56f18bd5b984b", + "encapsulation_seed": "da2cfaf69e25b2a89ff2557bbb6f69e01d8e2e7bb27a7a1ce7e40fead16f33b2", + "sha3_256_hash_of_ciphertext": "379a57a8f19110d5e0d747a2c184877d71f00fea95cd815b4c0e8782b12bec6f", + "shared_secret": "8be7a417efbdd3587c6f82ddd1d29956789d28c2413b8383590c5b80cc53e04a" + }, + { + "key_generation_seed": "d322d56d8ef067ba1f24c92492b9c56df3a6ef54a304adc1b69913766a1ce69756047447b810cc094d400ab204cf9ae71e3afa68b88586ecb6498c68ac0e51b9", + "sha3_256_hash_of_public_key": "9cfeca12dfe978bf0b7ad7271487cf61b2b8f7c60f389f33fc18439a95bcbb63", + "sha3_256_hash_of_secret_key": "a2e37a55c9b80fb423f40585180b011f32402d0320259285b6e278df6c20ba60", + "encapsulation_seed": "511c2ab40782322c06111e144e505328c4e5bfc890a5980a2bbc44aeda4c738b", + "sha3_256_hash_of_ciphertext": "44053f01ecb88811b9ee7a9ddd4234f94507c7cf64b6803b28c54bc605ec4e31", + "shared_secret": "79fcd201101e7e277c1b6cdc4475d63ea1dbc42ab94cf873bf0163c2aab0b5ff" + }, + { + "key_generation_seed": "2f1d8a3bebb34540324b9485fdf3d5be3b858f544abc3fc641b5728cafab03ba8d6c42e7270ee2b77b6045385f3d175984a0e260363166c73b0c70c971644363", + "sha3_256_hash_of_public_key": "9aa64a30bed5aa8300772066ef577f79bf4813e3315a15f2c28b2665e4dc7e2f", + "sha3_256_hash_of_secret_key": "837eb6ce037f235273d7686fd9d01bea14026e0a0f5f943884f18409cc4bc70a", + "encapsulation_seed": "dca92dbec9b260dd97e8886f876862d6effc3b91fcf3fbc986cf56ab93ae79a2", + "sha3_256_hash_of_ciphertext": "02798b5af1a76a2b478ee05c630e62618e5e2d7ee0c411a82ed2bf888706fe28", + "shared_secret": "6c4484b6d7b0a376f52abb1811c712368a9f34bd108ffe7ca31c36a6ec8140f3" + }, + { + "key_generation_seed": "31beda3462627f601cbc56f3ddf4424e1529c04737ef0ef2af6d7401f653b8a1812083bfa3b670e3eaf9b443702fb6db16ac1197656bbd61a8e25ed523b8d1e5", + "sha3_256_hash_of_public_key": "241e5c7b836862d7482d507973ae3fd8dae96eec4ecebcedb68fbda75e04b401", + "sha3_256_hash_of_secret_key": "95c79c2a867b3e8a4e4e545ff626cd49893b8e87eb188ed1516b159a24736c97", + "encapsulation_seed": "57c170e691d7a914a901b9a11c62b8b569b3806427557a9dbac9faa720ec3641", + "sha3_256_hash_of_ciphertext": "cf3b2e2dc822949eb13638299fc2d5102c7132aa6cd54dd7834b13f05a4dece2", + "shared_secret": "8554d6af350f13471cfd45c23882e43dc81d8a094f6299e2ad33ef4c01a32058" + }, + { + "key_generation_seed": "cbdff028766d558af4466ef14043a1a9cf765f7748c63cc09dceb59ab39a4e4d8e9a30597e4b52ffa87a54b83c91d12a5e9c2cd90fcac2c11b3a348240411a4c", + "sha3_256_hash_of_public_key": "6ad1d739f1598a16c608a240cd13dfaf8263d74866315e2898a3431cf19e4685", + "sha3_256_hash_of_secret_key": "1ef733faa4f2cb53cb5d8975aa6797b5f37fd918aeda02178a40584475cdf667", + "encapsulation_seed": "6b5a14e1473abf5a33d44975ca2088bd8fa6fddcb3f80e8fd5c45b9d90c24a5c", + "sha3_256_hash_of_ciphertext": "1706e6983032950b47cb6c8586178b42d515ce929c1434c1a8c9e36d8b4db7a3", + "shared_secret": "f9646f73de3d93d8e5dc5beeaa65a30d8f3a1f8d6392190ee66ff28693fbadfa" + }, + { + "key_generation_seed": "4c04310bea66305c6ca8ba6b8f61ca96257a67663afc11761f13fb5c7b324b6b8aec87a9a79204cee2986867a2906eb851b734b8b22b91d6749b1a5f07c44e3b", + "sha3_256_hash_of_public_key": "9510a2a0b4fcbd414fc61aff04a8df579660d14b13c40ec0470c45f639b65a58", + "sha3_256_hash_of_secret_key": "0bcfa8078582f60e218047d0016437601da8431f34ae6da12921f53958f32819", + "encapsulation_seed": "40e593754e6eddb7f9cf176ba2d5fd1087c90ad377556d0b0f686537b1a3165e", + "sha3_256_hash_of_ciphertext": "f9341d26e39b38a88ddef1708c96ee2068f569a59a4010745730d8290d637718", + "shared_secret": "1ee252e97b69445f7f109187645cd2879f55e10eb8361ab43b3492ff51f01815" + }, + { + "key_generation_seed": "38a0d5f41d7dc1896efd1b45b0485634cef149828751b96087a0a6dd81b4d58aa2acf359556df4a2abaeb9dcee945829beb71185b4d6bd18b76e5668f253383a", + "sha3_256_hash_of_public_key": "cfbe9649d9d1c384baad67b91b2f3e21f2fadd6bb582a0b9cb016051dd82c75a", + "sha3_256_hash_of_secret_key": "09b118f7c4d059baf27284d127d4e85d55b84e4c92bf3127eeb318d2f5765401", + "encapsulation_seed": "c152523abd8248bed40c3827bcf0f8e8127037a55c780695e2c28ea3e041a44c", + "sha3_256_hash_of_ciphertext": "94a8c287238191a107e74e31ec099086d83f198e6b0f3321da4d8f46ce01a0b2", + "shared_secret": "1e1ea5d6a18873c5c7fc8da79093f6d3db5b28fdd0aaa42726ad130c78e9bb88" + }, + { + "key_generation_seed": "97b5665676e59e3538ebadaa8cd50df1f9fda1502d9894c616a946078e56b621df05318b5f655efe36f1b678cf4b875108a18db2fa312261caf839f84bd956c5", + "sha3_256_hash_of_public_key": "a19c2c9c907b129d01cc44a95949121c39534cc98b6d105e60fe519a000cc2ae", + "sha3_256_hash_of_secret_key": "f1c00070780a7a2ac5b57ff3ff765ca75278bb661d1635cac92792f9454fe8ba", + "encapsulation_seed": "ad6466dd59f26b762fb02b19eedf5f79964da68bce0459b91c3a6ee5a7e01183", + "sha3_256_hash_of_ciphertext": "56e0b8ab3b302fae682938a45d9931e092d78877d1f8834bb43cd5c85582a205", + "shared_secret": "24619bb17c912fc992bd8272969cd5b6fd6b030122ee5af9365cac8b38e569fc" + }, + { + "key_generation_seed": "ef99224a03a85a46ef115474ec5b5d620da6795d6efcca4c9135d19958a9de62df7d92dda83e6b2ef4cce08c9134563063068a196d7b1a1a13623e48ae12528e", + "sha3_256_hash_of_public_key": "e4174b6e7542fbe80ab2bc06dfb802f691aff147ff90332d5ea739216c18d872", + "sha3_256_hash_of_secret_key": "f3f3a292f5cf01d6f7266461c9e8cd44bfc8f17e16035ab8d10af8177f389b86", + "encapsulation_seed": "1a4d5dff5847cfb48333e33bb00ca7301b144aa89dcd412ff5a3b1081d775b7f", + "sha3_256_hash_of_ciphertext": "5f878ca21c8c27ae9c41c43aaf1f3a2af62c73296e165c08b88c5b22592867be", + "shared_secret": "a990af801ddcf2009c82fe657fe3f068bae7e6bfc661e3e588354ba7d1b176e6" + }, + { + "key_generation_seed": "b12f6fd965ea9c5b947db80fc60c83d5e232dca82e7263027c19bd62e5a6ff550f6aa3e88f7fa8a96067f8cdaeceeac90c2d0b5e277e56e9c405ec9420c30252", + "sha3_256_hash_of_public_key": "2006a70fa33ff4a65b00553734c5bd8cca0a65eb3a115d96b8aa90f8fdc5f8f4", + "sha3_256_hash_of_secret_key": "7334d4a1755e1e639b3e9eadb5996cd910b55d1de5790469f229231d3bfb1528", + "encapsulation_seed": "34f44ec2092eeaf686f2ea170591a98527cbb03a4fa9477a7aef6b41a54feeb2", + "sha3_256_hash_of_ciphertext": "c2079637916c089b2afb9d6e9c6fa51308ab7720d5c2fca484c34ce614a14fc0", + "shared_secret": "11a2ceaa0c77f0602c4b2be3499e6df6b0339d9de90d04b2b12829f4758afaa5" + }, + { + "key_generation_seed": "9f52af92ca165fdc38788f2b59ba02e01c8281ff7c1e60504688043a5fe814b04f3029e1be4e1c0258c3a22ff5b50b2674cc094ba7018da2a61569845c17d26f", + "sha3_256_hash_of_public_key": "631e1de2556ae65d57e600c21e8e355a4ed586d667177ca0b7545cb5a23d669f", + "sha3_256_hash_of_secret_key": "3d4d2c680a1e6aa83861ad95043ded260e720ae80060320feffa309b4281ba3d", + "encapsulation_seed": "6250c81126572eec2da330271db36ee591f060fc7e53eeefe2e1c476c675fa33", + "sha3_256_hash_of_ciphertext": "2e9d6551050e32e204d7c062a4c18b8abdb91346e9f2c2708776827e0be4c514", + "shared_secret": "7571990ef1ef7e15cc920318fb75fd38c4ceb9abf7a4b1adc2175f99d1a0a275" + }, + { + "key_generation_seed": "851ea90fd3854cbf28fe39fb81f68e4b14345cf0d6eee7ec4ce772513df8410d1c0ec046899a777655233e4e1b5ca44e9afbdc67964bfd5d5e3dbb45e60d03cf", + "sha3_256_hash_of_public_key": "87f3829eff562789b3e19fafec92e4b5f95b45f3786f12d9c24915ca484a49ce", + "sha3_256_hash_of_secret_key": "9aa6c0546cf02085e2b3af65a7d7fd32d0f6d8080e1e7fbff6c39bcf3086ece4", + "encapsulation_seed": "35d470bcc5880872754810dfb3f2796da2fd7f397537146f6488c27804072b34", + "sha3_256_hash_of_ciphertext": "14da42e207477f4383faf4004e58675f0380e7d621421b3c36b877acf3a45d5a", + "shared_secret": "27ba4cb50ae44cd938585e0a4905d76053dd851e5b6af4fd787446079aa5a4ab" + }, + { + "key_generation_seed": "d304c9389cc973477f169788abcb9d511f843219d246a9b587822f422a70c2386590a2e5c7ed86cf2c5c2a898662bc9a81418720bbb632ef9cf0b845ed052d73", + "sha3_256_hash_of_public_key": "699fb2f061a75f111f4a7a60195d9045dc01716b6502cc107cbcedf122e8f619", + "sha3_256_hash_of_secret_key": "421f16805b1ceffcd64128b1296521ef812d3a8f4c5e3875a049f8de456b021a", + "encapsulation_seed": "8d667921c5db401a86fe1c35dfcf164a6bb2ab7400fd6a0b67eafd4a0ed11940", + "sha3_256_hash_of_ciphertext": "b2485ef56c39d468193e387e72794e0ddc9b5404c1a6d90c3b94a5f3e13ba7b4", + "shared_secret": "d17b2738213a98f29ee46747c93308ee7000fa404b9a0c1acf3f89654ca2446e" + }, + { + "key_generation_seed": "89a6e3be304a3518fb82b18ca730f0b359cd6ba90664a493fb4f8edaf965b9c3b6591121e25d64010c25a18676033e1d7278ac5f2d0b43a31f3a4156ae710465", + "sha3_256_hash_of_public_key": "d3413880d082f26986fcf452a84a8da934ed06198b290ada1789e74d9081a9e7", + "sha3_256_hash_of_secret_key": "7b546a42ffe6b65cd9c5b8857c2518f4f8e0bf835c894a68d1743691fc9aad9d", + "encapsulation_seed": "ec750b3939385a3f8df868119dc76f77ca845567ef068de6ada5478a56bc78b6", + "sha3_256_hash_of_ciphertext": "8290f3c4bec7c3b93f3d26e0be3b3fbfdd9c3f5806188fcf0fa1339133f29c7d", + "shared_secret": "954af53b4add522514b34cd2ab96669a76ca13f82aa2fd70826bc8ee790ccefb" + }, + { + "key_generation_seed": "d569b935ce015c85f792f8f7fb0d83c4f53b492959361dd4f75fb764d656450176eae84d11c4528382828f7a689a0d5cff87b8ca0bba97feacb39b935a8788cb", + "sha3_256_hash_of_public_key": "e6eec2929feac2a86c9dacfa6214e2e353fda2d547c3829f5678025ff8418a1a", + "sha3_256_hash_of_secret_key": "5fac243c82807d7357a61023226a7c270525d96932162ca5c09fc8f7b9ec6cb3", + "encapsulation_seed": "74f1d52af09b12c36eb062ea7528550cb4c18a3ce8e4f4ea9fac43ae383bc925", + "sha3_256_hash_of_ciphertext": "f1b10c800a42ae606c72eaad76accf059cccc02299fbd78a5d091f183f6c3f0e", + "shared_secret": "d0bbc576fb1aa43b6e76db0e87bc4ee3fa057c31642b37f3339217a1b041b521" + }, + { + "key_generation_seed": "5cbb141c2763425c274f7404fe530d9116e08c33f9f200a20b011cf563a28990fc9ebbe336dc464489861db8253606971bd0a9008a433ed17752d04023781552", + "sha3_256_hash_of_public_key": "c74f3b7fa6e2ef8ce99508c89cf3c71d666ab065a262581a5fb01b2c9b9444fa", + "sha3_256_hash_of_secret_key": "5c6998a20960109a4c9808f8f8575697b2b8d18c44c7e9dff97585ae43e6004c", + "encapsulation_seed": "4b3a70d85f640d1a2a852fb6fe96704af56a7415a8ee4282e9207bc3a2dc116a", + "sha3_256_hash_of_ciphertext": "e9ef0852ee47744b8c3e12cd728d9017465014eef51edf83a4502cb5218cee20", + "shared_secret": "91fbc37d4749ec6175c12f0d8eb6b6a8621e693c79f85f5cd2f557cafec5e7e9" + }, + { + "key_generation_seed": "293abb6d1c207927945417cf84883ef010823e11b487ed55239e466e83696d0cff8563038aad865a817cab9ce98846ba75be9363718ecf5fea538aea90b2a558", + "sha3_256_hash_of_public_key": "7378ef967195c977d43a50d03205044006715a6a8a8263d717f40170b49e6bd0", + "sha3_256_hash_of_secret_key": "30bd5f16c3f242248a4c4cddc43508bf54535958657bda4dcf105216ddf47eb0", + "encapsulation_seed": "26e38ac804fb5b4d59ddf747715e7e6041d875f99c7b638024b4af82d622da60", + "sha3_256_hash_of_ciphertext": "37843616c8a4f7ea9480740b6624f41650da2bb1664cf228d85d6d71a0624528", + "shared_secret": "d586b441b8eaf7d053cc96b6835f093426677a7c3acc51aaa3ddbb66dd14a623" + }, + { + "key_generation_seed": "74d87c7556f2671f2d666854a4d6e073e69f35421e6e1a428cccea49c37f972ce1fb7456ac0aa1b97068f452cba64ebdc138bcf5d36b0a0fada2a3b374141eb9", + "sha3_256_hash_of_public_key": "16fe956be4601573d72306a251f69bc2181253e2417e178341fd6553303ac189", + "sha3_256_hash_of_secret_key": "873c94f8bee9fe37265d5dc0c5d3bc1c706057c7efb3cd2cd5ca9ba45498d0d1", + "encapsulation_seed": "a319d2b8f114f1acd866478bcdeba6fd164dc4e37b0adfa8d8034afb3e197376", + "sha3_256_hash_of_ciphertext": "cc677a81c73ea5139eed8d85782978d06192715933bc5aef560e737f6d57d0a7", + "shared_secret": "409bfd9102bd4632c6b5d3610eb349fe3e3bc51e73acc78a8e994a070e20e10c" + }, + { + "key_generation_seed": "013bab0212d04ecd54b478daf72748003a25e2cb060ba6cc50bf95c292b8206b9da0c5da5f195b80fbb99c2e8b06926074f3f604b3f6195b5a5b9737876bba72", + "sha3_256_hash_of_public_key": "633bee89571e8fc16151491ea71234ab83289426559f90c67903a36e4afaa6f4", + "sha3_256_hash_of_secret_key": "3c3cff5f49a802cec693efbfc264f6a385210b1eed20f7bc5b07b51839961d14", + "encapsulation_seed": "ff646071b2509e6b75790917e08e4f0b0d9f0116ec6291c0b59eaa4b583ad830", + "sha3_256_hash_of_ciphertext": "6d94a31cff4761e3993308cb3e812a4a7f04f64d02ed3b46b418c2fc16189dfa", + "shared_secret": "5dd151a8015c0b16d79822832ff4cc0da7fd38eb73b7da59bc519d4d2374b808" + }, + { + "key_generation_seed": "ccb073c4b90be0ad746e26fb093b60c70110bd1dcbcddb566a8cffb7b3caf80e71600a8982c350df524cde514431ded7aec23576530894bcbf0ec0bfef0bb64f", + "sha3_256_hash_of_public_key": "3217d034b472a846cd317681c0f36feea187bd40e546dc4ad69c2e67fd9d8303", + "sha3_256_hash_of_secret_key": "1503bc141825d523c9505d34f50dc0a01d7bc91cdaee6b99f4a85a24ce800496", + "encapsulation_seed": "0584270ec26f3b9818e4af074d17b2d51037cc8dfdcbe3b140fa4fed5deebc54", + "sha3_256_hash_of_ciphertext": "a63613ccfd2ecf8aa3adf0103ddd9eeedbde3282443bcf02513b4ab87360cabb", + "shared_secret": "1c729b8e580e124e715f19ea6f2409fc6de741afa3d9919b2b8bf3e54c053b51" + }, + { + "key_generation_seed": "2e889f44e28901e9ac7ca6b2fffcb124c8979401b17064d7e1d51a7e3c3adbfa0e145e44aae52cfc609e6f47fd7a6f6af877190ff52256d0ac5b05b89c3f449f", + "sha3_256_hash_of_public_key": "d1756ecfaeb695001ac490f36c4638151bee98d367fb7adf0e06a470844068af", + "sha3_256_hash_of_secret_key": "a21acea0fd4354eb0c78d47caaf93c9f2434f1cf2d6b2194871ccd98f9522ced", + "encapsulation_seed": "51e05c7b4ca3079781e8293f4eccebeeb2f8c8b4c59468eddb62a21bcb4ab8a3", + "sha3_256_hash_of_ciphertext": "3b322134b37fe8f5d7268fb74d1634ab8b35d456a973f7b0b427fb40a93b6db2", + "shared_secret": "b95ac8b73c703ab1154152b3ac73f054596ed23d3be328fbe20f936ea95fa926" + }, + { + "key_generation_seed": "174aaa36410566dc15a5e62874218d7abdde0b2c0f30d877bb80b1abd5f5a0a450a7a2354f7e5cefa6f4a4e9a1c411eb9364506e9e1204a8acb3cb77fbd2c4ed", + "sha3_256_hash_of_public_key": "1b1b0a8682caf72df2e0a48513a7358edbc77a615d6be6fe2a7145be66b7c509", + "sha3_256_hash_of_secret_key": "3e214f25fbf4d1bb670a87367399e1b2a9da3491cac5a22a2c18dcc44f3f1bae", + "encapsulation_seed": "9eca0fe36c80fc5eba171c3ae66a5b1c923faa50b4521bb055e7bf51005c93df", + "sha3_256_hash_of_ciphertext": "a2cd589c24c4c75bc0a3864dc84a85a7f0f3ac11c8578757f8e94054a7c186aa", + "shared_secret": "8c3851393e5c5997cc95f06da96300f6dd85c041343c98db2e742aaa5f78b298" + }, + { + "key_generation_seed": "351fe4313e2da7fac83d509f3103caf7b4c64a4d458fefdf636785ac361a1390f072d9b5a99f9c7a0a011e4dc10f6b600d611f40bba75071e7bee61d23fd5eda", + "sha3_256_hash_of_public_key": "2c54df6e9020e1e44b11b471dea97a382a2fe8d1042565bcd51ef21cc0884d68", + "sha3_256_hash_of_secret_key": "c6bc9c9e797a02684d3ad8de47919b8d8fdbee09258d084c7a9dc963c80401ac", + "encapsulation_seed": "0c5719261caab51ae66b8c32e21c34e6d86ee4aa127d1b0195663c066497b2e9", + "sha3_256_hash_of_ciphertext": "0cd687f1c3e0d67c46cebf93c1217ddc972ad8662dd05830db350e1292542c1c", + "shared_secret": "4b681fff6a755e1dda908d070f0d9ac610d85c73079c1022fc67d255e36f1f71" + }, + { + "key_generation_seed": "9bc5315580207c6c16dcf3a30c48daf278de12e8c27df6733e62f799068ad23d5a4d0a8a41c4f666854e9b13673071ceb2fd61def9a850c211e7c50071b1ddad", + "sha3_256_hash_of_public_key": "bdcaf7b417da8b8933279b33068f6fda313826c2eec500b224cbe046abeb37a7", + "sha3_256_hash_of_secret_key": "c96e176b19f4135add434d0dd219024587d49fdb649bf470e84d9518bbfa2879", + "encapsulation_seed": "0e59f6f9047c784c1f00b24454aa4f1bd32c92ae7e626549972f86fab90e7e89", + "sha3_256_hash_of_ciphertext": "b38711e358893a864b475f35328b2450fffd5087d631844f7ab0995de2b8310d", + "shared_secret": "bbaa67f1dad879f2fb33bd4ead45aec354bc8f05c7cbea1e433509faac022edf" + }, + { + "key_generation_seed": "d8b907b34d152ff8603b73051f772daa71eb902c47b7e2f070508269d757e02e36b817736cbc5f7b1dd6eef5fe6332fb1a598f3871e5470d440fd2ea631da28a", + "sha3_256_hash_of_public_key": "61e27e954728e2e2e230c94ff009417d7372938e2c29c38af22184eed530fa1f", + "sha3_256_hash_of_secret_key": "8baa58b1d3fab8ec5cee8841c9012506cad40bf58a677adac88f1a6400506d40", + "encapsulation_seed": "a3963ade17d69debbc358dda82c7bebe2c39d25b36813058e7a161542e3f8c2b", + "sha3_256_hash_of_ciphertext": "7d47a21d95483a5845a4fddbb07b3435c29a56b5cf26f5d0abfa21bc39a2f2e6", + "shared_secret": "2c7b983d66978be80250c12bf723eb0300a744e80ad075c903fce95fae9e41a2" + }, + { + "key_generation_seed": "684a29e4e5480a5f2533e1526b5fac8cdf5927f3d85087c71f928c59690eb56575d12195ec32a8686d0600e45d4a7f54219b0d7a3826d193a51b9156ecf2edd6", + "sha3_256_hash_of_public_key": "672e53b28d579974d268132187e7bd72238639c6f2ca154d50d98c74096ec330", + "sha3_256_hash_of_secret_key": "4c72f0a7ef5c3274c49365cca5e6770bc709ef12bdbd4fd7c2eb5faa296cdfe8", + "encapsulation_seed": "97beafabf2c8575586487c7a80e8af5fc50f94b6051c1bc66a5ae9f66be3cea7", + "sha3_256_hash_of_ciphertext": "167b4e8b7517cad82ae0f49795918c4d33c79137a9c3e16000c4c55b30b1d382", + "shared_secret": "bbc58d06cc14f9e96a10acb1789d93b93933f1429cc53a1735b3cd995f086ce7" + }, + { + "key_generation_seed": "d76b3573f596eb286ab5231feec7499686b13021be36cb126c7ebeb9d7030daf248c0a21ea0bb6d6f56f12300e8584d8e9a34e0e6f52227281151ae4c305fb8f", + "sha3_256_hash_of_public_key": "b86d5b13bb8b72a9fb81245ab712f0d10f0e2e09b222143c420e3f2c3acea27b", + "sha3_256_hash_of_secret_key": "c25f2e16a0e6fbf0729e5ee89fbbdd71f00ff9a1abbb00cb47f26e9989eaf678", + "encapsulation_seed": "75461decd34c50d6a094b4a64fb75e5e9479f8f9250d82bb7d729dedeb2d4b65", + "sha3_256_hash_of_ciphertext": "8919940aeb732930c496fa9832b0c09382663accda45be1ee22930c545eb3a37", + "shared_secret": "e045e0391e15a66d6208467078f2ba5e429cc586c410ca6c5f3c032c21761955" + }, + { + "key_generation_seed": "b87439fde81c9e39eebe7cf741c685785532c1dd23e8ef868b9ce7a541010f3d1646460817a0fce5836bdfe124a7448e7adf7b8ecc2652ac6d280e986682df71", + "sha3_256_hash_of_public_key": "85441cbd71c18717e9de7359b920a9a3bb7f32e619806f4e4718c585085be624", + "sha3_256_hash_of_secret_key": "93b65d2df33d3e3ab0d53c1d0a21f3752e2c5962f7d960b888b2a8c495b1b133", + "encapsulation_seed": "2607dcf4fd6ca1c614c21b5e37c24981c32b91c8c3e6955777da8a3f5d9c9335", + "sha3_256_hash_of_ciphertext": "422509b01b8fff9468e867a2b5ebe5d3e27314de5c058b2c79a61ccf464f4df7", + "shared_secret": "0b8584b75838e084839d58c89cb1749e82ec06a0e85464c7546dd96870547d29" + }, + { + "key_generation_seed": "056661b38038da4fdd7426f32a81576c73ed84843b305168a374f934e27a4e1b79238a80dcfd7c992d84b2dffa67493e669243d4fa38c46b090bdf86bc548411", + "sha3_256_hash_of_public_key": "065fb6156acaac591f1bf3ce71c4a046be8c6c55eb9a84d29569bd2b144c73e2", + "sha3_256_hash_of_secret_key": "0121afcc6aeb8be9f1c5b06d5b65cc1c03e9366ed7b85fc511d853c5eee230cc", + "encapsulation_seed": "38c89bbe7145c29e9a831c11431eb9929cb24fb4992db20737e4687d397fd732", + "sha3_256_hash_of_ciphertext": "f1d3b745d86f860e508ad8b6d5c8a72ef833c280ec11e99516f4ead3c42509be", + "shared_secret": "3547a15b5748990a5436bdc4db283738eb7d64bdb6ff566c96f7edec607ccc9b" + }, + { + "key_generation_seed": "a1b52d871612a1c611ae0944f9e71858f35d3bd14f20e96a931720668bdf0a6b1f135cf64b6403e103afae34da038613e2853bbfc36baafa3c6a95347193f37c", + "sha3_256_hash_of_public_key": "ced77d358342759291c2bd225b0bd82d659d28a24bbc5eda8f47975b780cd129", + "sha3_256_hash_of_secret_key": "16e06287bd8d71c78f1657bbd6d5d12c22f6bad7658e68dd849d7751da950860", + "encapsulation_seed": "b2c35e33c72d90182791f0e12a0324f5b216efcab2c8da1bee025dfbe13f4152", + "sha3_256_hash_of_ciphertext": "fdfd351fbb15c92843b44489fee162d40ce2eea4856059731490afda1268b985", + "shared_secret": "852ba9be42763c5a74a75778eb839a3738a8ceed1520b0588f9dccdd91907228" + }, + { + "key_generation_seed": "952b49c803d6d6fba69f4375adce8594847a00bcae2179da49af2aed0423250262d7033947ae42ca53522a65fbafe18d3bc3e0cb66164e9a094fe4b44d8977ed", + "sha3_256_hash_of_public_key": "2fdb7c7e39ce1625c20a13a1c91aa5909d8b03b064d00877dce2415020370c72", + "sha3_256_hash_of_secret_key": "ffdb52b23a9ca4b71ec882031ebcb33a0ecc6731c13c817b24f3a06e48273778", + "encapsulation_seed": "afb7d6dc2b7eb6d84acc080c1be63c98afe7b07786b5801f716444a3e8e64800", + "sha3_256_hash_of_ciphertext": "215d83f872221c5fd4ee4da557e17299dc102c52dba1fc4bc3f8c16805da7f1e", + "shared_secret": "618a8496b8850609c09dd1d18798ee2bfff3ed7ef6f8b8034fffcec98f291d69" + }, + { + "key_generation_seed": "3c815e57e9233e975fa1630208aab206b71ae0db37a7a8789ac683d9f9b2d29801c8e376fdb140ee343106c093af7cb149b316ba79446ceb4e5e0cedb9b164f9", + "sha3_256_hash_of_public_key": "86bb11e7d9c1368fbba34ce3a2f169c2464ef5fbc11f73843c456467b6cdbd4e", + "sha3_256_hash_of_secret_key": "5d46659798d268f1314ad1e7c1735c480301f5877773403966e928bc3fd33d1b", + "encapsulation_seed": "28f5e9dbda122b2cf8f3754fe9e0c73a84ad4b0c093522e0b62cf815d60bbc3c", + "sha3_256_hash_of_ciphertext": "5ff5d6bdb110bac57e58a4e288d056a1384f9823606a42daef2ae82e0b7574b2", + "shared_secret": "cbb8b7a05f48b47d163cf8c2fad32bc586f47f2c2e0911da349f29b1e3286c22" + }, + { + "key_generation_seed": "588760826dcfbd36d9abe6ae44a669bb3ebba6a218eab69e30f18a3bd536576e0e860576285483bb5fd36e2f944d32c4317bebc1e441470c1372046a790d79d4", + "sha3_256_hash_of_public_key": "29253478090cb4d580bc2a912645bc685061e5d4437b3811eda69c865ea9923c", + "sha3_256_hash_of_secret_key": "aadce411f3708e9727e4a7e4e198781e1ef5e8f4c4c14add1e25f5758649e265", + "encapsulation_seed": "b0d713cbef0bb1df70cbb425d1e9373e9f7790fdc7980cc96a240dfc53f1e8e2", + "sha3_256_hash_of_ciphertext": "675039d66fcb631a050a8b24415b50f331350bd6697f9c977eef15c15d4cacca", + "shared_secret": "1eef87404f318351413d52ba8a07cfa5e72f235d6f91afd7fb8ad3e683ce0a55" + }, + { + "key_generation_seed": "47550e9edacb6ddce3d9ab81f6b61080dd4f2693854acb05e0ccc7a4fb6390fbf89d7d99d5c3e0d10d6ef9af054d842375f695abb28e3b8eb495100f04306e92", + "sha3_256_hash_of_public_key": "286de7dc142efe935e84b0aeebbd32d050fd9d8b008a94e59454b19ea401611d", + "sha3_256_hash_of_secret_key": "a6b53edf9efd7fa67a478456a5b6a379876c248f623ea45f4b541a8db00c524e", + "encapsulation_seed": "32bdcdb7059fe27f6409901980c080308951ffd90deffa8317b4d213a5f04495", + "sha3_256_hash_of_ciphertext": "f03d44bd9bdf3bfd486919fec2177b8b685a9981de4cbc2a9e98b7e9b0a528fd", + "shared_secret": "ca2c0bba56645e4fce4b7e38a7bb4b839e754bf2834a302a2614377eddd6ae60" + }, + { + "key_generation_seed": "610afb64be8cc1df288cfb016ee2f44c6c07113de7f6fee071fe0c3fe31c6215cd292e4c5f9e1a55e0489bceffb204d672a6215f4f3980a646d9f880817c52dd", + "sha3_256_hash_of_public_key": "029a2e12c3e6aa668afb5be8a82576813fac7b8e61c5a88aff94ecc2770c585e", + "sha3_256_hash_of_secret_key": "413ae41ee83e17b74ac654c2aca57abe8f8ed0409acf7cc8b301e3d6bb049cfe", + "encapsulation_seed": "4ed7c92d83bd03b2a25b567f17ae55542e2f6a4308ec0f3fe69f8ba5ae24331b", + "sha3_256_hash_of_ciphertext": "e8992f7b7b619c03cb9f0c991e3a9c20f91beb707c177ad4e02a5808d10d8769", + "shared_secret": "9155619e28de6cc0670ce70e0ad270f0e885e5f5f8d6d38426938ae1036d6ffa" + }, + { + "key_generation_seed": "e1953800acaa85ac02a906c72cb8e8d704e8d27820345f88f71e89c1f549afcc8c64c049c6dfc0f1476cffd520b055756162f7ec94243de6b14ac0b9e5fb366c", + "sha3_256_hash_of_public_key": "e3ec3671cc7675a321af8584a0961101c04a432772431e77f5740ba3b2ef488d", + "sha3_256_hash_of_secret_key": "93bf696bf0671c3845c4b246f29701a0978eec5b49de81589009e235903061e0", + "encapsulation_seed": "060ea5d2ed1dd88144a9885e79278590821c22917b55a48920f96b53ebe0e689", + "sha3_256_hash_of_ciphertext": "6634bd840d2dbb01463cfe5b4e3e54d1eabc081cfbdc14d0bc118911ed8d3cce", + "shared_secret": "d1f24383d5b8d0c3c0a6a5f8f7d38ccce13ec179a84b0b09bcda4c9988f3eb4e" + }, + { + "key_generation_seed": "c719f9b2d16399b7326ce4eca30dabefe8fdaab18e9f6df888b0a134ef355570e40771856eb77e4633504899fcb86c6a3d433d0b8d60e26f07bd61f1d4ed69bd", + "sha3_256_hash_of_public_key": "79836213a513bd4cfd42ed281304e3ee4560e4e0c60fa53781f83d5bd2bbea52", + "sha3_256_hash_of_secret_key": "65deb55fea451375ef335e7faac73917d32220fc70c95f371fdb16e712beeb26", + "encapsulation_seed": "10ef9426f8c4a13b52325c5bb4ead4596ecf2c6b5bd2d37d8350e90d4164fdd9", + "sha3_256_hash_of_ciphertext": "ba79883ad64a6f2b256004233d87809a8c390327a23c739334f773507e003aa7", + "shared_secret": "d2dab0b39b7f62de3ca9826f9dd15a4201191a0e0c690d3e52b305a9d3af2d0f" + }, + { + "key_generation_seed": "e9acbb774be970206c3a738e243b420805a509fa59fa902044be2f0d013650d2ded5edaec5de3bf5b4d7c2f2e18e87f499c1968993eff196753db8045e2c8ba8", + "sha3_256_hash_of_public_key": "0c2e803c2872400c49e1bb10232946ab939319e84ff32cd354dc15d082cde5a3", + "sha3_256_hash_of_secret_key": "d37f172803739d074d71a2be32125eb1ba4250128342e34b882fcba38b259248", + "encapsulation_seed": "a4bd30a64cbf29a4e290fa1cc1dfb99e68348713041e4409a1af23c5d80c15c4", + "sha3_256_hash_of_ciphertext": "13d437b2fd9d67ca0699a3dacd977fba5d072fa6b482043d63e8a9548ba6a3fb", + "shared_secret": "6869ca370a496af2dbaa866265d91ba6be54b9686b1b8dd5714f6ba861b0d1e8" + }, + { + "key_generation_seed": "c1b3cbffad4b306f9af0cdd3028876486dbe858875c9b6497fe20172a986c82b1c96249919cedc2369d8d739ab125e0d2ccb82dfebcd90240a545cdfe07511f2", + "sha3_256_hash_of_public_key": "5818ac8d7a38c781e3a0bc43d088e6d391d1d67d9639b260bb6f58a19a57150d", + "sha3_256_hash_of_secret_key": "280e4774d1b2401580216fa70fb24c2c214ac5dc7f3841710a42e14d6aa09663", + "encapsulation_seed": "f4b66a7d3b65b896dfe100b2cad24b175a1168cfd2ae11fd704b835f6bcd311a", + "sha3_256_hash_of_ciphertext": "51eb70249a1abebd5159f1069b1acda2304f25fc9cbd9f4a625b58df448b47dc", + "shared_secret": "502d92b2a7e1804892ffb8ff009987a58f35baa30c0392c83859fde82105a9aa" + }, + { + "key_generation_seed": "ff7495b8575b5a98e4fd21fb4c3e58cbb60f14bef21aa74cf8802e3153f14807bdc370460375a778d1a31d01c42b66367ed8d9e8f84551002f552f0e52102b5d", + "sha3_256_hash_of_public_key": "172cf4f8dace8a96b8f70da966080a5e3f132873ca7544343377a99b65e8147f", + "sha3_256_hash_of_secret_key": "31136804b6c14f3a0a00a3295a5fed8d606369e64d272d432c59d7fe0ccc3e47", + "encapsulation_seed": "1d7b03d3c5eefb8ae5799dc569aa668f1bcb8c86607b089d3530cf61d6380147", + "sha3_256_hash_of_ciphertext": "9b38b66fdfe80acab82bf9577676f6566b4429f78a14f7486b07c96ae7be921b", + "shared_secret": "48eb4b840c0d957f28808e434786c02a8f99d3464ccb3caf91cef4a0f8e70c4f" + }, + { + "key_generation_seed": "bdc3fba1c32751139fc45bacffb3ea97f26573d804a5f27a459293d95190ed8efd5a08f656a6eb8cd20679930a31caa6a6331c4b133a6838c223ef9f769f6246", + "sha3_256_hash_of_public_key": "268b6356f92c57da6dd34494b927e8764adf0ad519612ef0d1b8951e50966c2f", + "sha3_256_hash_of_secret_key": "3bf02cee24670ca40b7280d8047fa147b24c5e286dcae9c24bace9465bb19f61", + "encapsulation_seed": "554f3385b382f4a46314de37ee3885addfc5332bd4038785094e0a832e9e8c2c", + "sha3_256_hash_of_ciphertext": "fe8c3fcee4be152aff29e55f42f2fb1354ae55ccbe38400bc901ca032ede1ef6", + "shared_secret": "f9507f70421be90f21138a1e135329ee8228682cc948a6914ea58624d396df0b" + }, + { + "key_generation_seed": "447f6076a627bbc5ad7773fbfeb14b4ba9ac43a0f8b99fb6dcd5e452aa3c47ec20a7237801f470fcc2bd9fd7bea8322859b850f7882d362947432913dd068c01", + "sha3_256_hash_of_public_key": "4c6d304e0494d88d83b5e3aa5761df3b299551a24f28994d2747b2b08945bead", + "sha3_256_hash_of_secret_key": "5de91ca73756eee74da3cac78a1fb329a02f8587f212bb9bc0b29e0e654a5795", + "encapsulation_seed": "38bf0033b779edf5367d9ebc01c988af90904c560970815837380650e4749eea", + "sha3_256_hash_of_ciphertext": "805ce0ab06c568b614cacbfa4cce5e65929e2846932a90e9418513dd48cf3358", + "shared_secret": "24caabaafe2063f812eaf57c58b6c0376ed8ff778cec1980ee9c3228801a75a5" + }, + { + "key_generation_seed": "2d5df64d62cb07fe630310bb801c658dbf3d97993e68626745de39d37fbfc2b27b534537addaba4ecf14f02ab317d36cb9f0f50222ced7cf029dff8a0d3d2fd9", + "sha3_256_hash_of_public_key": "72be2f5cd569e6229f00014854633f7b278e90af4ea593411909467a03e29cfb", + "sha3_256_hash_of_secret_key": "a68ca31b91491a129af9f280cb4c60c046e7a7ccddf41c9bd98663f8512ca34b", + "encapsulation_seed": "048ea516d0ebbd9f709b47eaac66f344c571cf50f0d01c9466aa061a50b66a24", + "sha3_256_hash_of_ciphertext": "d27a36808f09d6165aefc5d253090027eeff0653268c55a0b3de2a751ec765be", + "shared_secret": "9f734b15fc7dd99bc10d6cc7de5d2c93ac789a5665e508a95d075dffbad25abb" + }, + { + "key_generation_seed": "25056d1b8113bb362dd979d98643d7a7ac9c4f95994c0ba060609b6d07002ff3f48a9254dd40b117941fa35a66bb50296327b725525deef70e128ca8045ec451", + "sha3_256_hash_of_public_key": "0831c75b153fa17d336a79ff6e88ddf485daf7b1b0bcf39d8df15319d52ac67e", + "sha3_256_hash_of_secret_key": "2b983d7cb50880cff761441b6a2c66b7a41642cfd2a8cc297a5df53f0ed1947f", + "encapsulation_seed": "686c921c9db1263e78ae753b1c9c2e7936b8229dca48c0942c56c6bca4f10917", + "sha3_256_hash_of_ciphertext": "0892527da24957468b1b8fab49ad2d7dd6d238eca54624fce6a3c2dbbbe8d194", + "shared_secret": "d27e55f2a1f9ef336c8537f11da9875e03cc7dde8951d81b0740457609654107" + }, + { + "key_generation_seed": "e4d34e12982aeeb1d62fd488d9b9e28557ed3429292239fb4f76fa9098009acae6c45c7fc62329b13c8d29844405db8ff6860de474bf727ecd19e54e6e1a141b", + "sha3_256_hash_of_public_key": "b30cedc4316b63d75b641fbad2f33241a3fc47ab8b3ee1a3ed597e5b04f77c68", + "sha3_256_hash_of_secret_key": "a49a7533c671e533deec55af218ee511c57014070e138c7059853e08c34b0a78", + "encapsulation_seed": "2387772e50059cabda53cb93ba24b19ae529496c03b36584169451525c4a0e7e", + "sha3_256_hash_of_ciphertext": "390b3b6f9a0f9d97ccd452c83bf47416b22fd06b4d8968c44ee6effa7980e68c", + "shared_secret": "ed5903d1cf02861444cad7fc3793b4e1b9b6d0324bf6babfb768bb2f84300086" + }, + { + "key_generation_seed": "cd6a99396eb3539ca663a51e42063a3a262cc1c5a5fce1566f0597b52ad9fa325a3407f591791a5db4578b5972093a95bec3b8e70c1d542c9b5c9789729f8922", + "sha3_256_hash_of_public_key": "ee044dbdf6787ff038dbf9c133557169c62fc1ce2580739369aa87df00b49648", + "sha3_256_hash_of_secret_key": "9e865967f0d1e7d3f6a49f2bb623ced2a7b1408a945e02adbdca35846b70e7b9", + "encapsulation_seed": "155c29c5f0378df0cd0e847a80a07143cf7522fcd880c9229eb9feb1ce340cd2", + "sha3_256_hash_of_ciphertext": "6858db6eafd97259e6d775d881f7a877010179d4f827680426946b9ac4571261", + "shared_secret": "0d301028c1cb31dedc8a702a9e95b7d3589f68a6a1f600af84ae0f543e625361" + }, + { + "key_generation_seed": "6c8c53ed6f65e6b2e324b84364e10de42d1c26a106d4d1c99eee79c78586fb55b9402bf02481ce4b27a52e87feb92c4399c7f2988d40e942e7496ad15ad2aa88", + "sha3_256_hash_of_public_key": "e965ac6995d525e324e8252d8e2c2da909a29b24baca8b68daa5122cb539a474", + "sha3_256_hash_of_secret_key": "91051a381626e9465fc7ab20a1944eca64be461330bda53e7d1838a74597392d", + "encapsulation_seed": "a9cb9a61a3324b1ea5afe693b32784e2871096b2ca14a11acc9577c52359a241", + "sha3_256_hash_of_ciphertext": "42bfb5584610497fbc8080a664139afa534b39a417cb69ab0d2a16c8737eb1cb", + "shared_secret": "354d86b389021a3196b75c6582927b3a005fbfee0951f34d9cd5c8f415fa50f9" + }, + { + "key_generation_seed": "2107204cd995f1df14314d5381f8c5440f09a347502e161cffc0a2ec3dcfbc7324c3da70fe850e80aa818301d60c70f3038153866dcd5d179e22db59b8991bb4", + "sha3_256_hash_of_public_key": "a3d8a85f38cfda38c66ae39b2f9186ef7bc1e0c98e8976a6cbc6c4875d73d7fb", + "sha3_256_hash_of_secret_key": "cf7e797f8f7229a08206034737e54fe46645ab2fabdbfc8662b45a2604876b65", + "encapsulation_seed": "e99fbae8a024ebbbdcef32ce213f6aa942e3eca925e5da4c09975d773b33a175", + "sha3_256_hash_of_ciphertext": "ce7b65856502b280e02a36d906e018c6a23cae99f27ef6d65762c87ddfedff56", + "shared_secret": "3afcfdc446f93a8169024a24fc0383692843cfd6b4854a8e490892fc35aad4cb" + }, + { + "key_generation_seed": "63a925685a8ac5bbd918faa33ac397d1ffbcf99135d9da7c3d6ff7aa4c50af3d3afdb8a246a56ee71465591831c371f2eb87467b0559dedd776ba063ee6d2f93", + "sha3_256_hash_of_public_key": "aa73b40dedd61e6fdaac86971965c03ab14ae69e8130426fdf830bd57d0974ce", + "sha3_256_hash_of_secret_key": "1e7f3f1e5632d1df538b564304f56689742d1f652d8d32f019b45183af68a20e", + "encapsulation_seed": "67a216f37d67f5e74f782f1badbce1cc8c80a6130aec305b421899a4faa0a6c3", + "sha3_256_hash_of_ciphertext": "b6c40fd53bcd9ee1e70bc6783b402ae34c24dec724e63262d8583c90cd10256b", + "shared_secret": "ebba9a8bae936c829c1445c68595da96919041ee3d9b0fe27ca93db691146874" + }, + { + "key_generation_seed": "6a1aee5e708c1b47f02bdacce4f56c860f74fc7cfec1ef3b58285b1c8ad7fec2230e05b7114ff0395cc6634db1eae8258072d09c09f291e92d6620b177dc50d7", + "sha3_256_hash_of_public_key": "cf754f2ee43694865a09ca7beb0deda9b1328fd0abdf30ca5c338e27e8be04b5", + "sha3_256_hash_of_secret_key": "928592604aa44df8f2072f26e9511129f61da0b7f57acb3f6896635a9764ea87", + "encapsulation_seed": "52b19fea232c9154a3e431e9d69cda40013cf2d485c3cd027ad24e645420420b", + "sha3_256_hash_of_ciphertext": "a4b50ad169b436877652a6c64dbbffdd63f53274ddcf58f3c96c3929215aa956", + "shared_secret": "f063c0908deb2e61faa0c4c0f5051b2c8af7265060681df14bacb30f0228b3b3" + }, + { + "key_generation_seed": "6396b328b100e4c7f4bcae69875edea1a1982421558c608c13c592bf7b5d0fef1100ced48add211a5c937b8d6079d8e271af3f949edc61f70e60453aef20dea9", + "sha3_256_hash_of_public_key": "3a842153dee9e035299d7e268c9492d71188f9fb24bdc2dd20c1ddca647a1523", + "sha3_256_hash_of_secret_key": "28ee987bc4ae5a321d2669950dbf87596fc4b35c29f192836005064aa3dadee1", + "encapsulation_seed": "64440adb05db3308b189bf999f9ee16e8ee3a6ccbe11eebf0d3ae4b172da7d2f", + "sha3_256_hash_of_ciphertext": "126b64a28d82d06ca81f7e86d33f4949634924e04528d1142061320eaadcb841", + "shared_secret": "02d2e466e170bf45d3e9d357e2f04c34cda408cf147e9ff7a6e8c715f2c88ace" + }, + { + "key_generation_seed": "a453bcacdd2b0d4646009e5ed451c3c45f08fb827ef733db3c517a9dc1af93e67a3cc8aa3239d4c52ce4c95afdeff6efbfacac10d294edc0e7cf4535059bfdba", + "sha3_256_hash_of_public_key": "da43cae3c4da51d69a57eb87094a03cd3a9c3e6b4ed864cc691a60f0509cc646", + "sha3_256_hash_of_secret_key": "b204cd1c3122b29a3d99cb77e11427fc102375699928c5a6fe816f96bb212627", + "encapsulation_seed": "c8bb46b3a7344ad170c2052fb042b5a3b62e0590562ee82577b1081f6f114d16", + "sha3_256_hash_of_ciphertext": "228dfe300e3fabe4d4e550754ebcbbf72a796209c1d24e7ae93abb79e1cf17dd", + "shared_secret": "6a5b0842c122ab6ee251399492b061d2ab3e40843f4dc01c12fbd5bd545c600c" + }, + { + "key_generation_seed": "47ca2b77c5b717f423222c2730ca5cb9c856bc951d01b2b2c80bd76ccb5539b78f1481d7cab000e33fa07de8dc9627a85e76fabb4428a3376e66300cf12a0787", + "sha3_256_hash_of_public_key": "6533c524a32345eefdadc74a3c6ad7e981832797faf1068955b79f118dff9358", + "sha3_256_hash_of_secret_key": "b9dee52055b1f9a2b25a0c1be4d9f30d2ecd7c5a09f0f5294de2d49a55ac9fe0", + "encapsulation_seed": "2e2b70609f3fe029a14d09d5d659871ac776ce2797a0355f16e2eb68f5613fd1", + "sha3_256_hash_of_ciphertext": "2d7e8fbd6f2257b05eaaa2ca1643c452b4e0b623c9ad72027cca8dd8b7b5b91d", + "shared_secret": "2486c0a6cf17d9635dbca1f8395784cde54dccb7df10fced92183f983478fac1" + }, + { + "key_generation_seed": "aaf6eb40e596a5e3e8218871e708b089240dcbe7fd3641f0e5e41e071ce49107e2f8d320ac3cb0c52efdc753282f092bc39baf4a18783a48ea031a191865eb78", + "sha3_256_hash_of_public_key": "e2f60f27da7f318eb94a74b437f8e0bc9513e9bcc38dad99c174c1d75e0145f1", + "sha3_256_hash_of_secret_key": "68eaa8143a71bd5f6df29b128781e3f2a5fbc5d20534afb223ddcc64bc767f5a", + "encapsulation_seed": "4725dd8fb314bfd8ee23731c2341dbe114606d9abe6434c471b5573e7df193bb", + "sha3_256_hash_of_ciphertext": "b5b2de55cfaea8fe543f67c4f45a69780c3e2d932e56e0b574d9b40b56ddc1f1", + "shared_secret": "85690ee044e4d8e0540ff984775b59bb5134383c4e229e79e37d7d77632fadaa" + }, + { + "key_generation_seed": "6500f32c93415cfdbc0bd31d78d5be95cb9060c8cfa2013955b56f8b6868b322393308641a9a4647f230201e1389624a296b55192a9819fcb19ab77c25f95445", + "sha3_256_hash_of_public_key": "d4bf608793939ecba27dff5889d4d921c583999a57e20a48085ac549573e6abf", + "sha3_256_hash_of_secret_key": "5f9a14a9c41fc228306d79417015408f31bc9c3d97579616bd68a3d3444f9bd2", + "encapsulation_seed": "818d3bb8ebfb32bf464775f7139bac0a5bddce80ec5798595992f9403002cd5d", + "sha3_256_hash_of_ciphertext": "99fb7b7767fa94e74936a6678acfd5a2306b156f90f4608d507768a25403a16f", + "shared_secret": "d179d901a0570bd23aa52570c5c233a2240d4724e81d98c9ceedb74187eb75a6" + }, + { + "key_generation_seed": "7643cef2d62cc5aaeecf754653ea62294cd2208e5bf3ddeea209e3dc45373d49eac9d531a532770837a854b4f5531f6e0c8d6c10183b30d3435498c2dd142951", + "sha3_256_hash_of_public_key": "65f03add3941d22c80d50659f501f8cca1b448d84462ccb93d5f065889484bc0", + "sha3_256_hash_of_secret_key": "e4513cfd1dd2153d30d15b023421cb8e8456e6a40e612847e1713e915a29a87c", + "encapsulation_seed": "c92aa5fb91c980d9cade9ce99d4c75b2ffa7d6a6ff9bd59def1aa701f2a0992b", + "sha3_256_hash_of_ciphertext": "4cd7f0af86623b34c0b137a0516b876daa73ffd65d75871ddc828f86a7e9b224", + "shared_secret": "6d574af7fcb241fed8763b2d0a352870baf85ef686e90eea31f8500c35945ef7" + }, + { + "key_generation_seed": "f8ee95521060c03bb8dacc79f7eb7db640f545f315613a35d447a09e504cb4e13fc3d8392cb53f36ed647364a04e37278a0e0a45b720f4a75c580c9920eba98d", + "sha3_256_hash_of_public_key": "b8a3b8cf4709204a2fdb19889b0022ea655dfd58ff27e17d530510e1eef45793", + "sha3_256_hash_of_secret_key": "1f7cdadf3d4707efe1b7a6173d8f7b8a9f864ab388c3271d79ec424d9da3e896", + "encapsulation_seed": "7e8086a01dc5b3bb9eda25bcc45d27f99874841b97237968495800e007696ac5", + "sha3_256_hash_of_ciphertext": "1ca889a71a087ccee4ee1a178c3c55ce3649583f3db924e5c1003ccabc44091d", + "shared_secret": "b1090cf26276a81c22ef0e4479a4c705fe294d3b892051ddce7eab16495e0783" + }, + { + "key_generation_seed": "b8bd0493a882e3a49b4e0f6256fb1fea0912562fd9ba26ec3d6c9cc12c8973abd7e4b5d8021c486b9c3114d7cbbeb7cd49eba8a61bc2bcae1f1bef30a1daf76d", + "sha3_256_hash_of_public_key": "46fe6c37136273736ccb11df5b6d55debbc087de802404b72a003c5e8c809719", + "sha3_256_hash_of_secret_key": "3177ed170e84ff15fa1e744adc9ce806e431a68f15a7a026c6092bf593dec6a1", + "encapsulation_seed": "bb321ef14d44d8698df879fd52450567657f52a2df8d111185dcd7d4f30a72d4", + "sha3_256_hash_of_ciphertext": "aa9a0ea1823a84bc84649d26e249899437844827fe7c63d4828a5144929fa00a", + "shared_secret": "2fda9fa72321be3a0946d6d914c7ae714b9cc175619ab8abfd1f1fd499e0dc27" + }, + { + "key_generation_seed": "c0407e41ddf48d333978b89bcf2db01e4613425b456249e76a6f25b8a2827bf5b2dca81e3f5f748d23c9d356a2209f6b2d60247b2e45c9808de497f64f124643", + "sha3_256_hash_of_public_key": "a074ed1f76e97d68434ba4af2af0e549204222679e9e643580c35af3cdd247ce", + "sha3_256_hash_of_secret_key": "8f9b3f631d0fb04477846ae09aea725f1cc65b2cdefe2108cdb399c36db9b487", + "encapsulation_seed": "210a423dadd899b810f011794b79aa7f860823ac1962370e791287d3a1afa384", + "sha3_256_hash_of_ciphertext": "a4fb01f55eb2986c1f90cece43330bee1b16d7bda48d617fc94aa14fc540ec4e", + "shared_secret": "23798e8b9eaa0b369842cad83a2bc32206f791229c830d7593b9150161168011" + }, + { + "key_generation_seed": "334382d39164d1989696a2ff77b25a28af8bead9883b5365eb6fcca7c1781cc9aba5068af837be962f439f233593d193ce5e08f7d66efb3389885927b89d2523", + "sha3_256_hash_of_public_key": "26659f74fc9ec372fe18be4ed6aa28b7cd84ad1c0f0115dad011a11d20fda9ed", + "sha3_256_hash_of_secret_key": "5e3f83cb08ff80183879af9ade3631bed2a468e429ad027a5afeafd9a6f66362", + "encapsulation_seed": "bc856afe24213e3d14c3d6f9b89223bbcfb2c890722d770fa3492c1e46d1c302", + "sha3_256_hash_of_ciphertext": "6a4204db4803d26d7b8a769033e047f3b4cb616bf5451b88a1fb3ff219bba9cd", + "shared_secret": "d5c63d2bd297e2d8beb6755d6aefe7234dea8ecfba9acda48e643d89a4b95869" + }, + { + "key_generation_seed": "6995143e8eb8a6e93840f76eec844f67d2b5f75b1839a5040337e61f9806764a0f4dff8e56f68440836a072412a30d851ace2c7c6f02d60e7a8420001a63e6c6", + "sha3_256_hash_of_public_key": "2ca3d8ad2dab1dd8a2f4320658fe6eacabf70d907920593919119cf374516336", + "sha3_256_hash_of_secret_key": "2798448395f6ae3223550e7d5255e6a605b430229f5809b6efd0683a6b9ca402", + "encapsulation_seed": "5fc00f89563e44b24cd67d0ce684effe5731619fd08e7d72e2406eb016afb66b", + "sha3_256_hash_of_ciphertext": "dbd5fc0e1df33ff8af9efd5e281a2b98160f98653803cbd54e3a07292b37fcc7", + "shared_secret": "29d6a229adf49a1139794209307b0ca24be5825b2771809232fb718660162475" + }, + { + "key_generation_seed": "995eff7e0d195c6d0533f3dc194d47e60f9ad14696144cde694d60a95f3e96b4b28f7e7a15a005f92400ce33db073d49b53871594a88fc45e0f94207b5f0f2dc", + "sha3_256_hash_of_public_key": "de62eff56f6b49a156d065d85eaf0aa21ca229a20fa4e1372a410ab1c4ab6e7e", + "sha3_256_hash_of_secret_key": "6766cef3fe644a233caddf208074b58e6e83f8a78aecd00911c29a08f6f0b0f3", + "encapsulation_seed": "ea22a76065db4b565ee1807fbd813b43bde72b0e08407fb867c6a18995025e50", + "sha3_256_hash_of_ciphertext": "4c669e33b0227c9c2040cdacdbcb7d22b9984372587985ed8f860ffc8d037e79", + "shared_secret": "2a56a7a6d5b4c0500ec00a92e322e69be9e93006240889552072482966c54f56" + }, + { + "key_generation_seed": "3e809ec8dd0fec0d911a4e3fac20f70fbb128c5de94dc7184ca7310ae9157a98d8128601c28b1def8d393a0db283229f7c7383152a814e7cefe8ef9d9768c473", + "sha3_256_hash_of_public_key": "66f161d27dc34e1a2f4b98b14a2b221d7eae26a593bfe432487d9994cb480656", + "sha3_256_hash_of_secret_key": "2237f6cbb452d375878b82c474a7c948ff587a5f3ed02bbba1459fa7ff8ef802", + "encapsulation_seed": "e9602b34fe73ad57f4bf6ead99743d645641553a5b9b9bf2e7016629e3e9bd76", + "sha3_256_hash_of_ciphertext": "8a2453a21a031cb8966924607a28882426fab2018826192e9bf833bdd38e0631", + "shared_secret": "ecb62b03f640ae4a9d89685fa0070efa93c24dfcff0d555142f9de25b62f861c" + }, + { + "key_generation_seed": "dbf1c465fff3d9f783bd9ee61a573715e45691147b8904439b5ffaa64f94ff7bb6d75eac6c76ced1b0a025b40a55440712ad8424672e761e9bc400d63812006f", + "sha3_256_hash_of_public_key": "7537e68ccf14e8b7e57090d8f648529dc461ca3950288879e88116acaf57b4a2", + "sha3_256_hash_of_secret_key": "bd8e44337eef01251217c4702c99232c001b33870953473d83a7486fd25484cf", + "encapsulation_seed": "f72b9080a6c051bbdb9b0abc1949034be0f89a9f73fe277ec4d4740c78d04a83", + "sha3_256_hash_of_ciphertext": "6077c60641c03aa8b36213dddf938311ce6b7b8801f967d42713e73249fe7c55", + "shared_secret": "6cc30699701927e07b559d708f93126ed70af254cf37e9056ec9a8d72bfbfc79" + }, + { + "key_generation_seed": "1f7cfd2b70863154e8a69d1758532e86c20cfc763d67c758bd10a13b24e759b5273b38bddc18488024ec90e62a4110129a42a16d2a93c45439888e76008604c6", + "sha3_256_hash_of_public_key": "82f68b15681cca5c2852c18d6e88bcb102a059c1d21936582adb71790cc0a335", + "sha3_256_hash_of_secret_key": "fd483ddc211c5c27f453bca56158e1f8084f075a7b06f5098cc3204427bf8197", + "encapsulation_seed": "f1e5542190db8ecf4b8d617a04fd3783ad0df78bf8dab749afb57db8321d151b", + "sha3_256_hash_of_ciphertext": "5c6cfa16f63b1aa93a2b5edc2f4b14c9782f286f53deedf3153f329a2ae2d57a", + "shared_secret": "250e7f67bb34dd5477471e3a701fb71a8138a1920eb807824380f88a944a6fa3" + }, + { + "key_generation_seed": "3a19577908efd37697b8edc7fdaf47d1bd3ad01a1b77faf794bee5b9c3192a6fa3729672816f3eba84c9638a79676eeac0f22c8a48e0c5d50a26ff0844c66b99", + "sha3_256_hash_of_public_key": "104fbf09445794c0ea0654f5caf70ee09d51c8386d4e1f467b10633c710ac2a4", + "sha3_256_hash_of_secret_key": "73fb93953ae666a9df1bf933ba56b8655ea9e319c0110c78d49f8480ae1aa3fd", + "encapsulation_seed": "74efa414ae171bf60b6f884cb7e5ce12028f49365daccfa23e845d551711660b", + "sha3_256_hash_of_ciphertext": "e51772e769f778067916e81a561ba6f64fae6096a2b4d4b945d9117e7c36e2b1", + "shared_secret": "0210935a18f1add5ebc2e1107bf40a628ef9cf8f6e7cdac81dc0291bb50a5a3f" + }, + { + "key_generation_seed": "ae0f65e29f38804a6759f70f4d01e2aaff7fe1c91ebc4f892dd0de3ab2e68ea5e03ff73e02a217659f53d8c47556bf3d8c94040f630d63605e2d0f923579370c", + "sha3_256_hash_of_public_key": "0f353d6a29813d354471eb8b4c38df93939eb3b1db80ddd1cdd6558a9f2687a3", + "sha3_256_hash_of_secret_key": "8a9edd6278707108652f3a5bc244592cb7a82c24634583ed2d3eb6a176b216b8", + "encapsulation_seed": "0b4c3cffb2ba4380ead13dc0d8acad2356b448a810da1df29f264c44aab6d24f", + "sha3_256_hash_of_ciphertext": "a00c37bd326205575fcbbc100ed54630aa0f2d6dd9e69807d49151ac9a81c429", + "shared_secret": "34169fc520e944f94ff1fa3799db802a4c1b26cb2971bf196259a937ab8362ca" + }, + { + "key_generation_seed": "6084a235f79dd093ef6d185b54e69df33dacee73a9bf2f379004421a10e3a79d9f684fb055ece19459eb464e91e126a7a6e3ed11ccee0046da234d964c985110", + "sha3_256_hash_of_public_key": "12e89c47142418c26396ef0174c02f69dc00022d56494d31af935490edee6385", + "sha3_256_hash_of_secret_key": "bc13b19f01d4cab36dac2154e0fd8fb7d2fa012596363942847f1b0bb3715f90", + "encapsulation_seed": "1c82471dcdfca3a6942061ab4f3d5bf0d197321437c706d9cccccce449447002", + "sha3_256_hash_of_ciphertext": "aed1a4ee810b81cb8ee49ee00e94ff4553f0ad2176fe4d27a09f4e68157fcc3b", + "shared_secret": "b5901e97eb656a09d2dd132528148ad07a0a89f638717eb53516a9ad19aa36bf" + }, + { + "key_generation_seed": "acd1c0217fad5caa4235544dd9de153ab1880ccf4c76f16f236fae4e4bfda04cf03a8abb0a5010f400ae5722a75bdf5a2f6d5b546b34d73857cb1bfc7e587aa7", + "sha3_256_hash_of_public_key": "2fac52ca60594e514333ead02cb1bfa5cd1d9ecda4a0b25ccdfc47ad3f632a85", + "sha3_256_hash_of_secret_key": "2743b7a9dd83a6b9bb5c2685f28b5629b2e31132ac64788a0929557d3449dfc0", + "encapsulation_seed": "46fe60a18124125ab93e0c578f1c02f1bd1301595013001c7f3c2fa56cde294e", + "sha3_256_hash_of_ciphertext": "7a039d19c45cc557036189cbbc63445b3504a689db56845ece99d593f165c6af", + "shared_secret": "df5117706beedfb521f0f021069fe9650d0844194339033de6997dced05268c8" + }, + { + "key_generation_seed": "241191401a63afa750f05662e354dddbc683c776ce3222beb83e3cf913d7ed7ca59b3bd23b49a95bc1fad20070fec930b6060bd827d742b077092e422268e15d", + "sha3_256_hash_of_public_key": "3eb856043b822df9d60b55fccb537afa3cacca9ef50433bde1dd9831e534d192", + "sha3_256_hash_of_secret_key": "398ae3423ba5c6bb05920e83e8939a104c3e4ad91647edc7db1667efe438cbfa", + "encapsulation_seed": "52fb7cb6a633fd2e83f2892bd9441b48fe59ecee6d026f5246fa7f2a5e55ee3b", + "sha3_256_hash_of_ciphertext": "05c9617befed785811fcc44d0fce5ae3a1ec66c4d1217ab42e4b754d0ef6207e", + "shared_secret": "eed6ecb831c881508f99ea115745448a7b312a4fa97f65044ebcede172dee2fa" + }, + { + "key_generation_seed": "b9a6b0c05677e957d41a34ba03bd06f2a9092e31f63389397d7e70fde6409d18e99c0e7b82be89bc3c1eaee6680aa4efd394e40c2b3f30523c8117f7c26a8969", + "sha3_256_hash_of_public_key": "306aed2a804a1c9bad4ab9e59f6126ad7c8633cdd0c2dd9d4c6f639d312ed47b", + "sha3_256_hash_of_secret_key": "88b28cf6fe19424ff82fc2bb096423b71f0cb8cf985af31bc15ceb4ed18a5e62", + "encapsulation_seed": "0f81a5f97082121244403da3feeb734f6084b314b8d94beb11627aa6ad1914e9", + "sha3_256_hash_of_ciphertext": "315ef84926802ecbbb437f8f50927d3a391b55ee6e47dbd19aa9adeebb808008", + "shared_secret": "d6cb77dc96f9ae4bf8b2fc0e277935b3b7b7a59f749ff2c08ad42659dbce386b" + }, + { + "key_generation_seed": "28a96c71577ba00c94f99fe965bc595a26db2b3ca6ab5cf8e443cdd8462b17929c35d165453e5fcdc6f9df64526d9de698f2bd3e6bac6c7fdd86601b9ba5f4a5", + "sha3_256_hash_of_public_key": "9bb3963cc1c5cf2b2d1c6ca76226328ab765a79999ccc71fe98d5bf3b34f51b1", + "sha3_256_hash_of_secret_key": "d8c2492023fb1175a84c19b3ce20f03dd12b1c26b65176d5582c319124bc0e24", + "encapsulation_seed": "31af9345365549ea0360169ed57daf98cc5444799d4c75d9f1f5d615e9df8a91", + "sha3_256_hash_of_ciphertext": "ae36e333ece7ca60c9bc2c4ddd01ca88443fd73bab08502656873b703af8925d", + "shared_secret": "1592f1413331f1871b41ff298bfa669bca667241790370d81163c9050b8ac365" + }, + { + "key_generation_seed": "c08ba2ef8c3a0a043afad931652d7a19e6e8cb670f840de5f1fa03309b2ca9ec5fe6141a25f7ab9f875f79e0a82d6ea5cde5a017ab637d5fdb7c42646a1d71df", + "sha3_256_hash_of_public_key": "6d029bb2121c788b5b6ead7226df664490dae362c4befb615717d81c656b3273", + "sha3_256_hash_of_secret_key": "0f2c7bd16d9289c3c27136df0cb6ebc624e80144cb92e6f0c897f58a53617ac3", + "encapsulation_seed": "774ae54093d694ef40b63b62c73e6c98295f606feb8699807eda1d030ffb996d", + "sha3_256_hash_of_ciphertext": "f8a85f106c6144edf1c7906ec26e292f0390aa9d45a22e67ba2ea018ff565c4d", + "shared_secret": "966f35c6bc47b4525d9af1ba350e8f44ea448cd1d90cf4e9c55ae5878920b7cd" + }, + { + "key_generation_seed": "0e3b30e102d707538c2671060f603bb0b8a014103f132d63b09ece07e4a4c75b11eafeca9e810796c34e8cfce9d59342884456007b01ddd12edce6d10ed87e4c", + "sha3_256_hash_of_public_key": "64c819d9bf66855f6ae70627f04da8378547e5867e2eb9759fe0971efd601c4a", + "sha3_256_hash_of_secret_key": "e85b62236d5c6c691a9076dc58bd5da80999eccc8df973c7d0e7e65d8465ea7d", + "encapsulation_seed": "9f27a47604ab5146caaf0aafe6d149424f8d66e39ba3baf5e6c73b19221b7e21", + "sha3_256_hash_of_ciphertext": "e9149359cc37143b0b565bd413a04f41a7833c5b76012a9263a086ac34071684", + "shared_secret": "aa333af0226492126c6985130ac7df2226a64d6d5c5314ce3f7a99add6696d49" + }, + { + "key_generation_seed": "2478f7d3de6041e7e5cd11c5e2ef483d1aa6218eb126444091535f6ae532fa7311136e2681df2ef881b51a092a9badbe72c9772c169808521c47149578621e28", + "sha3_256_hash_of_public_key": "db315cafbaec2f8a0142f45affff65289e826c9244ab1cb03f9f65df3e3cbcf7", + "sha3_256_hash_of_secret_key": "be98d62e4724c0d960ad4839298d4571f9871033b63bdf10d3b0e589db376ffa", + "encapsulation_seed": "90044031b7597b5e60a4f946b713e8996d0426d2cb013243d9b7d8f8ef159a0f", + "sha3_256_hash_of_ciphertext": "9f9368ba712cfee95f28a808cb2c23116a0c8da3910c0def2ef4e55947d7101b", + "shared_secret": "9535303e6035e30c6605c9e0f10c553dcd73828d8525cb190fea79937e093331" + }, + { + "key_generation_seed": "9d405d3ebdaf35fa8722de431b669722acaaea2fd10b814310b17f78b66147d16ceb14f7662be0c42779459f69a145c0e2ce9f0bd9a0cd1bf32ed5694cc9ae32", + "sha3_256_hash_of_public_key": "c8d853e65b5b118e28b7cb6f0d5d6f282e0ea20fd72f3690a6b232b20a8a55ec", + "sha3_256_hash_of_secret_key": "7a5e854bad628be7b99f524f52a97b0959c0ee67a7a10ad24b970e6e3aeeeb80", + "encapsulation_seed": "a7a31e140891ea37d2b6424b59b1f84f89220f32dcb73e037eb912b389d34a48", + "sha3_256_hash_of_ciphertext": "31b04a4127558df57844413928b29b11547de5afc088d568a962fe080c97f190", + "shared_secret": "0caa79e0054182c15e54159fbe36d9fb09481331a560ccd9714fff81db5615c4" + }, + { + "key_generation_seed": "9a86490f0615f3edf789cb0654066e9ee339cc59f968281f3b89213f83c692edfaeb2ef44d2f608621e831187ce79b2d2f4a20f1568bbe76b0d3d5af36111714", + "sha3_256_hash_of_public_key": "f69bd52cb1d071f1cc7720f949d44f66f40c917eb30f3a4b0eb519ecad2d03dc", + "sha3_256_hash_of_secret_key": "b6ef04e6acbcd1bb072d1cd28412cdb00ee40d04ce5b39442a2efd6756292167", + "encapsulation_seed": "70eb3f791faa91f1f982fa477dbcddeb2c55691c07f93b04cd31b37544c94b42", + "sha3_256_hash_of_ciphertext": "d8fac8ffc3d8dfebe66c219f4189b780d5ba8fe28d5ab79264345639740913b0", + "shared_secret": "744ce1aa5a9c515c6571ad6e2f5985df8434e35e9f714cf3659f184b5db4086f" + }, + { + "key_generation_seed": "6dfd9b575872560c7bdc2732c4a28dac4db04e535eb8e402c3dffd145c09ce47a2985c1c4d203778597947d710dec806e36b0cd949fe460ef141213bfc525e5b", + "sha3_256_hash_of_public_key": "10e01965f9c196d2f5f90ce3ce8f552f8a0d76ba8f5345365392febc50560012", + "sha3_256_hash_of_secret_key": "2b5c6d5fe9b09ab5a027522e699401223ae9d304ac912f1b15f0f647dd9a0a7f", + "encapsulation_seed": "30f4095015ba88b6d969672ca3f438c395dacf7d476ea7a9e805ce932d270a13", + "sha3_256_hash_of_ciphertext": "e8b01628c7d63f16c59e67352399a760581f341ed41535013490502e884733be", + "shared_secret": "726f7d790df4c860a0b2c40de9d62c85d0ff70c704ce5a1b3f6bf1b3e3f66cd8" + }, + { + "key_generation_seed": "6fca9f4e384d8418075cc064c70730801bdb8249899d456a77130d5beeb3662cce7683f8a03d3cf04e46970ff7d6a12494ae12558346dfc8fd9370bf944a0102", + "sha3_256_hash_of_public_key": "7c3991fa7983d0dd6e7157cfb152538466e9d5c3998a2b8ed862162b91ca851c", + "sha3_256_hash_of_secret_key": "72e786018ae9ab8293fa51cb7ca3ff0435e7cccbd5ae02b4680b92c148590265", + "encapsulation_seed": "cf31220f44de862e1719570e1b26e897790159366a385452334fe24cdcae28ba", + "sha3_256_hash_of_ciphertext": "5b2e8a3e38c13b53393c8654e92eeb6251ddbe50de4b3c5203a06977491f2fbc", + "shared_secret": "68f3e22d1b2d8c57bff32160e550becfce535fdcb327394aabeb60eede263213" + }, + { + "key_generation_seed": "e58f71bf175c0550a67e00e0f7b3b7fc36bc2707bf0c93044a492626de36301a7f7054814869cf7625e45647bc1547aff288dbb90699b2ad84893f3b755d9722", + "sha3_256_hash_of_public_key": "8aacd8940ff6fc27f175342be74d48075f8ae9320cae20a41c879c27c1bf815d", + "sha3_256_hash_of_secret_key": "f7399dbf35fcc57a9bff87b0087755faa75267788cd0921b9ebc5cde8b656271", + "encapsulation_seed": "bb5e65669a44e5d5c709bafa98c16ccba6ac2c4ae923334f69a11543eda64f5d", + "sha3_256_hash_of_ciphertext": "aac868f2299bcd272afacf50f1ab0db3d092d33565cffb5645d8b92271e7e893", + "shared_secret": "7f6085840a30c6b1fb9dca782e0c78a2264d54726c04c3127956f131165426c8" + }, + { + "key_generation_seed": "e3fc575ed51513e62aba655d24cd9c8f1c6c848aaffa946c49a53ac3ea59e474d82c2f1bf2e6aebde5660fa73356982e12999d8fdafbb3cb186341d0386dead0", + "sha3_256_hash_of_public_key": "149e0b6b49fe8adba1217c2c57c83f2b8c5f1d92f319e502b184a65869214f75", + "sha3_256_hash_of_secret_key": "6dfa4d29af6a0e8413d5591339c15d2e2cfac3f502f49acca3efb53b53624666", + "encapsulation_seed": "9ddb3aa9c7905d1a438c93bcf78e3e321813580371ab4e1289e2dbf3701972c2", + "sha3_256_hash_of_ciphertext": "ced7a64ce643faebac8ffd39c6a4594732b35f1d6899978ba192b87003d3ad27", + "shared_secret": "96e30641ea4280168da37291a3063342ced8e77b33b5415819938c0bd7264ffc" + }, + { + "key_generation_seed": "470b4943f0fe7fd0d8ec5185aba0d1db09d112934e4fb4787e2bbc6b88466e7b8b2809fd40008be70a6b184981101724bc3d5ec5e1956b510b82fd5ad0668a5a", + "sha3_256_hash_of_public_key": "29b1bff7f12eda28dfedfbf0ac16e27008c9fdc62c35e53b28a312bdc91c40bf", + "sha3_256_hash_of_secret_key": "762a61eb847c017ece920f51d5da7a9036ed8b835bfd7793527321ec635e2fd0", + "encapsulation_seed": "26d90b190a6c3d0d9a86cf66005154e7086749e966e7187c249ccb9329fd3b8b", + "sha3_256_hash_of_ciphertext": "bf49310a35f9ba7994645f12949e658b0dd43d3de76386dc20d08c650522f86c", + "shared_secret": "47e54c85cc0e2503629a8bfdcfe038c3cf692d723d462bab733c7c8e0aa37b02" + }, + { + "key_generation_seed": "6df4385db978d27b27d2aa5e452e4152b36f097503d9581ac3390105c5727e7dc95fa08ed106ce84660e8a4c90bd2b22634e40769aa0090a101c5dddad45edc5", + "sha3_256_hash_of_public_key": "b990059e901097d00e0ebaf40c5d5dab009c66798489d357e760478ce884cce5", + "sha3_256_hash_of_secret_key": "37a044795bd330e4dc60a6d84bc6e99664d1be418b0239661d2ff16d1501573f", + "encapsulation_seed": "7db6d1a129d6123f1f805b79ad3b413012ea86aed42a05e98e7b1f32f9fbbdec", + "sha3_256_hash_of_ciphertext": "329115908d0763110a387c99778e4746861e80367ee90fd821cda9acdb93fd64", + "shared_secret": "8569bd042465a2c4af628425cb102b15ed4f5feee16090e2234f3a884a0fa938" + }, + { + "key_generation_seed": "dbacba825728444921b227cdba54446b3f6881b47be9cd02832f78b023b1bee0e15274a8e2bc08fe818b117ba28c5dfae74d54fcdf6f20052f79be333edc8dde", + "sha3_256_hash_of_public_key": "175eb63c3144108548720ce7ee0f43a9ff3f52a9924efe9f2f59318bb93c86b5", + "sha3_256_hash_of_secret_key": "1993d7639b79f5e4871a7c58a69fec50f96c1424c2c0ee030ac054ae1b88a56f", + "encapsulation_seed": "1d129b27be7384c359d04311fe5c44917d1fde4bfb57314f483ac617edd5ac49", + "sha3_256_hash_of_ciphertext": "8f4225838f2964a986336bacddc40836a98c32cca68c6afcbcf9ef68d9a3760b", + "shared_secret": "c184e0b019c2db772e2c1ca6f97f47478d99cf0c4c5ae1406f51d15815022123" + }, + { + "key_generation_seed": "690eb71fd7052b906eaec09937a8ed374e0b02afa27c2f14399932be5839fad281c38c2cb5cfafac81b96a810ab749b61806b6d54c9f8cf4bf1be0192423288f", + "sha3_256_hash_of_public_key": "9bc32a138a2fb5b6072464172abe0fd97e9eabf357c3fa5391d94a415b53abd3", + "sha3_256_hash_of_secret_key": "3db4ab1393cfc8b1c708cf8efdb1c443c975878898b60182c22af66375cba13a", + "encapsulation_seed": "bbc773ebd2df42c36ae05952d6a64c63a5dfb82ceb3ef4f8d4df3a30ec8c0467", + "sha3_256_hash_of_ciphertext": "f1c85f9530d4471eb1401fcf422a29533738c485a6be25f0b554ebf40b49d49d", + "shared_secret": "6d72e23c8a4cc60b2f14adc788a5c480033bbf6eb111070912bc83ad7b89280b" + }, + { + "key_generation_seed": "32e0ea9089fa928482c0770da545af1bb871a03ce38604138b0d08ea2a10ca2bc06c5bef7b6508409daf847a64c8d30d0974fd3ba7476dc76c46b458a036d884", + "sha3_256_hash_of_public_key": "7ef43a72ef04766f1e899d25c9a005009c788b5faf985123cfb3fb97975de26d", + "sha3_256_hash_of_secret_key": "77431cb18010a604d56fe5a623bed2ffd028a741f176fa09546e9a45a48caa5e", + "encapsulation_seed": "5b17a6adad541efcbf5ae4b0c0452cd2ce32e4f0f8701801c5b63e197c1fcbf4", + "sha3_256_hash_of_ciphertext": "83ddab2e25614544649a1e497b5b21c40a3e154e8a22c270f63cb0c40aa868fd", + "shared_secret": "29e6b1edac0a9aa33066c113167e42c64d70215ed04963d8be2d4c2dcd0f6589" + }, + { + "key_generation_seed": "6fb2ec719f2a0dea152bf3f64b9d148f8ab8ba88f64e61f5db53e12d59f525574f797c007e4061f95c7d56cfc7ee5c49e849dde3fea8f25e7876df2a18515c34", + "sha3_256_hash_of_public_key": "2c0db43f39b672b2cd912f907cf76a0f6fda925eb2d205546431be0b37b20411", + "sha3_256_hash_of_secret_key": "09844e203f4d8fa30728ab388b9d654847febbf5c9cd939cdc11c9c9be24ce9c", + "encapsulation_seed": "61ab87659525de9656af41246f20e1dbe85c24e335e7ecf9493f46168bc14e94", + "sha3_256_hash_of_ciphertext": "a2108ea2c446b566a50c228928893e2e4bde5fafb2184af92eb1314113bde0d6", + "shared_secret": "cfd1b82181543656807880f6e2576f0b095bf84629b3367e9bdede24662ee42e" + }, + { + "key_generation_seed": "527fb88c8bd9a4d6031dad15e63878abd2b559e7e08d61f69e8e78fca964ee6ae32d432b4f9f751bde0496c580a181ffed762aa35454a02d3f1f47ee0394c89c", + "sha3_256_hash_of_public_key": "aae8e61b905723fa092fb95b839f6de3670c39ce0498c27b87d20c24e7f64e22", + "sha3_256_hash_of_secret_key": "3880f7ca8fc33575a7a6d8bb46fec86a3f12e0068630507ed245d8bc278fbe5d", + "encapsulation_seed": "eca2adc3da1fb15f34033405ec08ef2f46163df4bfcccf8842c600ce0bc2026c", + "sha3_256_hash_of_ciphertext": "ec48b3ec403609a0ce2d1268cadda8184ab9629cc5913135ffdecd420eed1aa9", + "shared_secret": "f7331b0a4674969838482b7184fa92e5246f11f5b5e284c3e179effff7eb6329" + }, + { + "key_generation_seed": "ac6fcfaeeef795b6ef9e062f02bf42975fa01e7d91ba832f74e05269a72684d05aeda108ea4d6c6bc0fb958286850422bc357ca67b83c986048e0d0087fa11ec", + "sha3_256_hash_of_public_key": "64e085f67e48f00a7a7f82963e8c67176bff839a54fa1008328c0612f98d83d3", + "sha3_256_hash_of_secret_key": "0bfbc25d9df751f4c30907095eb6d9a75ed07fa23218ad0fffc469f0e55553c2", + "encapsulation_seed": "c4f15bec2d7701339d0ade4835193bea3632edcf89e74992620d9eb623a0d0d4", + "sha3_256_hash_of_ciphertext": "fb74b727ad120c18915dca475f3082cd34ded7ae20a308106384ffb5caa029d3", + "shared_secret": "c89d62938a5caabfd5b30d82ea88aced52ef5f8ec0528e59a654e1f6aff1cc2f" + }, + { + "key_generation_seed": "ba2fb9318d4dbe7488057c33e95e6f054583a2800c41bb83083c330a914a12cfe63f8ffda3565c2424c89b20974b748a65a5aba75133fcb3156dfb6626a83bab", + "sha3_256_hash_of_public_key": "8dab879de09b58d0fc7ade140393ffb5343abbddabdc118fad519b14436a964c", + "sha3_256_hash_of_secret_key": "7c53072fd98ea7bd8c5e873688b1a5650fe7e11c791407ac8c118b7958cf414b", + "encapsulation_seed": "28878249e2ac2b6263422993923a0c8bd05ce56e385ed13c943b03d226856947", + "sha3_256_hash_of_ciphertext": "a1f1579c4ce8eb725e697623321b3d9f55f4b1d0def10b898535ef6614e9923e", + "shared_secret": "204d9272682710b52fb39b1176af3ff737848978770310df0c67996f6cb596c3" + }, + { + "key_generation_seed": "aa6dd1e5799cdf7af9c4fc632b3eb9d51d66e85c8e0a21ec98664fc51ab63c7dfda268813efab5204efa60f78bf81d320d01ac09ac06244f7afbd2d80fd356d9", + "sha3_256_hash_of_public_key": "919a696301240cd6129f66be58e19d99b0d827d9932785cd9ea3d92f7ba54463", + "sha3_256_hash_of_secret_key": "cb1d7301f15951883cc3f287d4dd8fdf5c9b7022f558dff551c2ade5f5065755", + "encapsulation_seed": "17fc65f7fbd7c75ceec421dee84dff5a8cb22764a182db17e0ebe857f54d60eb", + "sha3_256_hash_of_ciphertext": "f02654803493821dd9c2ed23f9e46a36addd5fca0da706bbeeda87a2df9fec4f", + "shared_secret": "76e5f7623e3e867fd12f28dfda4311f7cd90a405b73e994e857f693573fd2b8a" + }, + { + "key_generation_seed": "195d6c86a3df4c21e3007d7f2768b43c74cb3060e0eca77f0a5d3271542b9a84ae77e0f9f21eabd8c0c6eea7767f4e10fde5c2d79b8400bf96b19014b457ec21", + "sha3_256_hash_of_public_key": "cb6d7232426bdbdfdacd373c9190722e7bf342825f7d829185dcc9120588fc76", + "sha3_256_hash_of_secret_key": "a85e24cc2eafdfe40d82f46471112e1359628b9955f3feae9955b48d563ac952", + "encapsulation_seed": "fa0489f3730100609488e951e6aaa15c0f193bc1dbcfcd013bc418d6c507b176", + "sha3_256_hash_of_ciphertext": "17336b9ede3a1c26abe725828a5afbe746035a73dfd4a8fbde5040fbabeb2b8d", + "shared_secret": "874ac966970f29935db73c231e71a3559b2504e5446151b99c199276617b3824" + } +] diff --git a/crypto/mlkem/mlkem768_nistkats.txt b/crypto/mlkem/mlkem768_nistkats.txt new file mode 100644 index 0000000000..68e6b58647 --- /dev/null +++ b/crypto/mlkem/mlkem768_nistkats.txt @@ -0,0 +1,705 @@ +# ML-KEM 768 +# +# Tests for FIPS 203 2023 draft +# Generated with https://github.com/bwesterb/draft-schwabe-cfrg-kyber/blob/main/kyber_test.py +# fa807f3aab65098ca34bbdbc2f9819d0188a6d6b + +key_generation_seed = 7c9935a0b07694aa0c6d10e4db6b1add2fd81a25ccb148032dcd739936737f2d8626ed79d451140800e03b59b956f8210e556067407d13dc90fa9e8b872bfb8f +sha3_256_hash_of_public_key = d4ec143b50f01423b177895edee22bb739f647ecf85f50bc25ef7b5a725dee86 +sha3_256_hash_of_secret_key = 245bc1d8cdd4893e4c471e8fccfa7019df0fd10f2d5375f36b4af5f4222aca6a +encapsulation_seed = 147c03f7a5bebba406c8fae1874d7f13c80efe79a3a9a874cc09fe76f6997615 +sha3_256_hash_of_ciphertext = bb62281b4aacc5a90a5ccdc5cd3dbe3867c502e8e6ec963ab329a9da0a20a75a +shared_secret = 729fa06ac93c5efdfbf1272a96cef167a393947ab7dc2d11ed7de8ac3c947fa8 + +key_generation_seed = d60b93492a1d8c1c7ba6fc0b733137f3406cee8110a93f170e7a78658af326d9003271531cf27285b8721ed5cb46853043b346a66cba6cf765f1b0eaa40bf672 +sha3_256_hash_of_public_key = 2cedad700b675e98641bea57b936bd8befce2d5161e0ef4ef8406e70f1e2c27c +sha3_256_hash_of_secret_key = 0a84cc895da138b944accbef3ff1a0004b8a0d8af5d426d2b82ea4c0e585cc6a +encapsulation_seed = cde797df8ce67231f6c5d15811843e01eb2ab84c7490931240822adbddd72046 +sha3_256_hash_of_ciphertext = c15158a536d89bf3bafaea44cd442827a82f6eb772849015f3fec68a29d589dc +shared_secret = c00e4ede0a4fa212980e6736686bf73585a0adf8d38fec212c860a0d3d055d1c + +key_generation_seed = 4b622de1350119c45a9f2e2ef3dc5df50a759d138cdfbd64c81cc7cc2f513345e82fcc97ca60ccb27bf6938c975658aeb8b4d37cffbde25d97e561f36c219ade +sha3_256_hash_of_public_key = 3dbc65b722a8982d058e27d409f04f744551ecde9015b62607cf67bb8ececbb8 +sha3_256_hash_of_secret_key = 0ffced333b5d13fff22b81e66d57b6e2a6dba0285fe2a82d5537df51a8d3eac3 +encapsulation_seed = f43f68fbd694f0a6d307297110ecd4739876489fdf07eb9b03364e2ed0ff96e9 +sha3_256_hash_of_ciphertext = aec80e6fe21e2616352b4c148f9fa0e30986541fb0969df7873b1336b23a8de0 +shared_secret = 8f50401bc9b1f857fd870902d4065f6cec8cb825db3eb22573c6167442b6e19b + +key_generation_seed = 050d58f9f757edc1e8180e3808b806f5bbb3586db3470b069826d1bb9a4efc2cde950541fd53a8a47aaa8cdfe80d928262a5ef7f8129ec3ef92f78d7cc32ef60 +sha3_256_hash_of_public_key = 94391b7a41175a41c15cd995ebc69c83b29e4bcea6c186611dc4a79578e37f4c +sha3_256_hash_of_secret_key = e3904266e186b34a397014c95f6d314cd6e1c813348b02e977d0fd21d9bb681b +encapsulation_seed = ea74fbc3c546500ed684bed6fe3c496d3b86d2d6dfaf223969b942e9a8c95e85 +sha3_256_hash_of_ciphertext = 39fa8e1d0a5e4bb987618734ee4903771886030b2d8bea4b5a9b0cb672ebb279 +shared_secret = 3221d7b046caccbded38e369625f69bac60c2d7efacad8f24170b10c5d222830 + +key_generation_seed = 66b79b844e0c2adad694e0478661ac46fe6b6001f6a71ff8e2f034b1fd8833d3be2d3c64d38269a1ee8660b9a2beaeb9f5ac022e8f0a357feebfd13b06813854 +sha3_256_hash_of_public_key = c5dbd68b3a8c148b2e7ac049bb986e14dd1cebfa1cbf3edd6bae85a4d2dda082 +sha3_256_hash_of_secret_key = b3fa7958f4b7ccb68712ae948c3f08740c8b89a69e53ad4e9959234e6869d8fe +encapsulation_seed = 64efa87a12cb96f98b9b81a7e5128a959c74e5332aaab0444fca7b4a5e5e0216 +sha3_256_hash_of_ciphertext = ca9f95c38dc95f51b6b62ec709539f0d1e9fa64e49ce4ad10bbe62868f35cfc5 +shared_secret = 1d746afc4160c75aaa6c6967f4eee941e09546a039027f05f0f8a483710ac334 + +key_generation_seed = 7ec408f52c9aa723d0c41d9987682a5f4ce6c9da7cd0215af60bbaf5484ab353a08ccf451b049fd51d7a9ad77ae14a81569df8c9bd3a8f1ebea86fdcfb823082 +sha3_256_hash_of_public_key = 62e0447f7b5ae8a806b741ca5c302230b555c3786c11f3eb43894a8f45e3f7b1 +sha3_256_hash_of_secret_key = 1a3249c268754c86d2e02ba9d87c2b60b220bf2406b71037cfaf6b089477ffb4 +encapsulation_seed = 8a95d71228acaa5f9ae6f9d9ca8ae55fde296463b41083a39e833e37c4c90f88 +sha3_256_hash_of_ciphertext = ec7bb1327a69aeaf626a76d344be1156eac160262128a64477a194805b926233 +shared_secret = 722fccef7142c46f74eb57a10b13e420d6554e9d18507f660bd1be96d3cebbcc + +key_generation_seed = c121915bfef6abdfc177dae2f5a24218f9abda2559afc6741b08e0e61ab433eb84ef52db5eaa6df8ec3a0bc5ffa730db0dde8c5f38f266d5c680a78d264a7b96 +sha3_256_hash_of_public_key = 0c1d832af7b7282d8bd81a2237107ee60d81e28eb64d6a153ae0eaa1a25797c2 +sha3_256_hash_of_secret_key = fd6b5d3f120ca009871ca24552a6118917ea882f12f30dc8097f6614d9d36080 +encapsulation_seed = 90d79d75d0bbb8921cf70d46bab497022a8e750efdc99e5f1bae653275441c7b +sha3_256_hash_of_ciphertext = da36cb6137a777acb4afbc0932811f75ef1d6732031309ae7e2de1543aaf5c2c +shared_secret = ee7c5fb6a63ace944e1eae1bd4b182263d918754c33753b904853551b2b46cb8 + +key_generation_seed = d86634ecf96cc2603761e284c0e36734cedec64e7ff486469e38539c71141c5a99daf37400cfe59841afc412ec97f2929dc84a6f3c36f378ee84ce3e46cd1209 +sha3_256_hash_of_public_key = 2b757ac0425152bef72ed852ab1eb44f4359499407bb6a020ff843a31657c5fe +sha3_256_hash_of_secret_key = 27dbbc7918c31e9ab57808f439c4f4189cc318a62422457f4fed733be959c816 +encapsulation_seed = be8a32f97b9a8d596382c02fa2a0eeebc15c083e970ddaa4f2622b91d6718663 +sha3_256_hash_of_ciphertext = 85efbfd0b096fa921711ea66b17bcf7c9a6240711b38a88830dbd9d716f07195 +shared_secret = 77cfbdae47854e9e10765cf397eca9ab2bf2b7522817152b22e18b6e09795016 + +key_generation_seed = 0610678ff4dc3128e1619f915dc192c220f8fad94da1943b90aaec401683a492da1804ddb5aa9b1c6a47a98f8505a49bae2affde5fe75e69e828e546a6771004 +sha3_256_hash_of_public_key = 53b9d62e64f9069d9fb94ea2c0806459b201531f4fddd708d162981cc1fb3757 +sha3_256_hash_of_secret_key = f4b964b7ab3e09fdf3d91527da06a4d29ef28344709a41739ef56f18bd5b984b +encapsulation_seed = da2cfaf69e25b2a89ff2557bbb6f69e01d8e2e7bb27a7a1ce7e40fead16f33b2 +sha3_256_hash_of_ciphertext = 379a57a8f19110d5e0d747a2c184877d71f00fea95cd815b4c0e8782b12bec6f +shared_secret = 8be7a417efbdd3587c6f82ddd1d29956789d28c2413b8383590c5b80cc53e04a + +key_generation_seed = d322d56d8ef067ba1f24c92492b9c56df3a6ef54a304adc1b69913766a1ce69756047447b810cc094d400ab204cf9ae71e3afa68b88586ecb6498c68ac0e51b9 +sha3_256_hash_of_public_key = 9cfeca12dfe978bf0b7ad7271487cf61b2b8f7c60f389f33fc18439a95bcbb63 +sha3_256_hash_of_secret_key = a2e37a55c9b80fb423f40585180b011f32402d0320259285b6e278df6c20ba60 +encapsulation_seed = 511c2ab40782322c06111e144e505328c4e5bfc890a5980a2bbc44aeda4c738b +sha3_256_hash_of_ciphertext = 44053f01ecb88811b9ee7a9ddd4234f94507c7cf64b6803b28c54bc605ec4e31 +shared_secret = 79fcd201101e7e277c1b6cdc4475d63ea1dbc42ab94cf873bf0163c2aab0b5ff + +key_generation_seed = 2f1d8a3bebb34540324b9485fdf3d5be3b858f544abc3fc641b5728cafab03ba8d6c42e7270ee2b77b6045385f3d175984a0e260363166c73b0c70c971644363 +sha3_256_hash_of_public_key = 9aa64a30bed5aa8300772066ef577f79bf4813e3315a15f2c28b2665e4dc7e2f +sha3_256_hash_of_secret_key = 837eb6ce037f235273d7686fd9d01bea14026e0a0f5f943884f18409cc4bc70a +encapsulation_seed = dca92dbec9b260dd97e8886f876862d6effc3b91fcf3fbc986cf56ab93ae79a2 +sha3_256_hash_of_ciphertext = 02798b5af1a76a2b478ee05c630e62618e5e2d7ee0c411a82ed2bf888706fe28 +shared_secret = 6c4484b6d7b0a376f52abb1811c712368a9f34bd108ffe7ca31c36a6ec8140f3 + +key_generation_seed = 31beda3462627f601cbc56f3ddf4424e1529c04737ef0ef2af6d7401f653b8a1812083bfa3b670e3eaf9b443702fb6db16ac1197656bbd61a8e25ed523b8d1e5 +sha3_256_hash_of_public_key = 241e5c7b836862d7482d507973ae3fd8dae96eec4ecebcedb68fbda75e04b401 +sha3_256_hash_of_secret_key = 95c79c2a867b3e8a4e4e545ff626cd49893b8e87eb188ed1516b159a24736c97 +encapsulation_seed = 57c170e691d7a914a901b9a11c62b8b569b3806427557a9dbac9faa720ec3641 +sha3_256_hash_of_ciphertext = cf3b2e2dc822949eb13638299fc2d5102c7132aa6cd54dd7834b13f05a4dece2 +shared_secret = 8554d6af350f13471cfd45c23882e43dc81d8a094f6299e2ad33ef4c01a32058 + +key_generation_seed = cbdff028766d558af4466ef14043a1a9cf765f7748c63cc09dceb59ab39a4e4d8e9a30597e4b52ffa87a54b83c91d12a5e9c2cd90fcac2c11b3a348240411a4c +sha3_256_hash_of_public_key = 6ad1d739f1598a16c608a240cd13dfaf8263d74866315e2898a3431cf19e4685 +sha3_256_hash_of_secret_key = 1ef733faa4f2cb53cb5d8975aa6797b5f37fd918aeda02178a40584475cdf667 +encapsulation_seed = 6b5a14e1473abf5a33d44975ca2088bd8fa6fddcb3f80e8fd5c45b9d90c24a5c +sha3_256_hash_of_ciphertext = 1706e6983032950b47cb6c8586178b42d515ce929c1434c1a8c9e36d8b4db7a3 +shared_secret = f9646f73de3d93d8e5dc5beeaa65a30d8f3a1f8d6392190ee66ff28693fbadfa + +key_generation_seed = 4c04310bea66305c6ca8ba6b8f61ca96257a67663afc11761f13fb5c7b324b6b8aec87a9a79204cee2986867a2906eb851b734b8b22b91d6749b1a5f07c44e3b +sha3_256_hash_of_public_key = 9510a2a0b4fcbd414fc61aff04a8df579660d14b13c40ec0470c45f639b65a58 +sha3_256_hash_of_secret_key = 0bcfa8078582f60e218047d0016437601da8431f34ae6da12921f53958f32819 +encapsulation_seed = 40e593754e6eddb7f9cf176ba2d5fd1087c90ad377556d0b0f686537b1a3165e +sha3_256_hash_of_ciphertext = f9341d26e39b38a88ddef1708c96ee2068f569a59a4010745730d8290d637718 +shared_secret = 1ee252e97b69445f7f109187645cd2879f55e10eb8361ab43b3492ff51f01815 + +key_generation_seed = 38a0d5f41d7dc1896efd1b45b0485634cef149828751b96087a0a6dd81b4d58aa2acf359556df4a2abaeb9dcee945829beb71185b4d6bd18b76e5668f253383a +sha3_256_hash_of_public_key = cfbe9649d9d1c384baad67b91b2f3e21f2fadd6bb582a0b9cb016051dd82c75a +sha3_256_hash_of_secret_key = 09b118f7c4d059baf27284d127d4e85d55b84e4c92bf3127eeb318d2f5765401 +encapsulation_seed = c152523abd8248bed40c3827bcf0f8e8127037a55c780695e2c28ea3e041a44c +sha3_256_hash_of_ciphertext = 94a8c287238191a107e74e31ec099086d83f198e6b0f3321da4d8f46ce01a0b2 +shared_secret = 1e1ea5d6a18873c5c7fc8da79093f6d3db5b28fdd0aaa42726ad130c78e9bb88 + +key_generation_seed = 97b5665676e59e3538ebadaa8cd50df1f9fda1502d9894c616a946078e56b621df05318b5f655efe36f1b678cf4b875108a18db2fa312261caf839f84bd956c5 +sha3_256_hash_of_public_key = a19c2c9c907b129d01cc44a95949121c39534cc98b6d105e60fe519a000cc2ae +sha3_256_hash_of_secret_key = f1c00070780a7a2ac5b57ff3ff765ca75278bb661d1635cac92792f9454fe8ba +encapsulation_seed = ad6466dd59f26b762fb02b19eedf5f79964da68bce0459b91c3a6ee5a7e01183 +sha3_256_hash_of_ciphertext = 56e0b8ab3b302fae682938a45d9931e092d78877d1f8834bb43cd5c85582a205 +shared_secret = 24619bb17c912fc992bd8272969cd5b6fd6b030122ee5af9365cac8b38e569fc + +key_generation_seed = ef99224a03a85a46ef115474ec5b5d620da6795d6efcca4c9135d19958a9de62df7d92dda83e6b2ef4cce08c9134563063068a196d7b1a1a13623e48ae12528e +sha3_256_hash_of_public_key = e4174b6e7542fbe80ab2bc06dfb802f691aff147ff90332d5ea739216c18d872 +sha3_256_hash_of_secret_key = f3f3a292f5cf01d6f7266461c9e8cd44bfc8f17e16035ab8d10af8177f389b86 +encapsulation_seed = 1a4d5dff5847cfb48333e33bb00ca7301b144aa89dcd412ff5a3b1081d775b7f +sha3_256_hash_of_ciphertext = 5f878ca21c8c27ae9c41c43aaf1f3a2af62c73296e165c08b88c5b22592867be +shared_secret = a990af801ddcf2009c82fe657fe3f068bae7e6bfc661e3e588354ba7d1b176e6 + +key_generation_seed = b12f6fd965ea9c5b947db80fc60c83d5e232dca82e7263027c19bd62e5a6ff550f6aa3e88f7fa8a96067f8cdaeceeac90c2d0b5e277e56e9c405ec9420c30252 +sha3_256_hash_of_public_key = 2006a70fa33ff4a65b00553734c5bd8cca0a65eb3a115d96b8aa90f8fdc5f8f4 +sha3_256_hash_of_secret_key = 7334d4a1755e1e639b3e9eadb5996cd910b55d1de5790469f229231d3bfb1528 +encapsulation_seed = 34f44ec2092eeaf686f2ea170591a98527cbb03a4fa9477a7aef6b41a54feeb2 +sha3_256_hash_of_ciphertext = c2079637916c089b2afb9d6e9c6fa51308ab7720d5c2fca484c34ce614a14fc0 +shared_secret = 11a2ceaa0c77f0602c4b2be3499e6df6b0339d9de90d04b2b12829f4758afaa5 + +key_generation_seed = 9f52af92ca165fdc38788f2b59ba02e01c8281ff7c1e60504688043a5fe814b04f3029e1be4e1c0258c3a22ff5b50b2674cc094ba7018da2a61569845c17d26f +sha3_256_hash_of_public_key = 631e1de2556ae65d57e600c21e8e355a4ed586d667177ca0b7545cb5a23d669f +sha3_256_hash_of_secret_key = 3d4d2c680a1e6aa83861ad95043ded260e720ae80060320feffa309b4281ba3d +encapsulation_seed = 6250c81126572eec2da330271db36ee591f060fc7e53eeefe2e1c476c675fa33 +sha3_256_hash_of_ciphertext = 2e9d6551050e32e204d7c062a4c18b8abdb91346e9f2c2708776827e0be4c514 +shared_secret = 7571990ef1ef7e15cc920318fb75fd38c4ceb9abf7a4b1adc2175f99d1a0a275 + +key_generation_seed = 851ea90fd3854cbf28fe39fb81f68e4b14345cf0d6eee7ec4ce772513df8410d1c0ec046899a777655233e4e1b5ca44e9afbdc67964bfd5d5e3dbb45e60d03cf +sha3_256_hash_of_public_key = 87f3829eff562789b3e19fafec92e4b5f95b45f3786f12d9c24915ca484a49ce +sha3_256_hash_of_secret_key = 9aa6c0546cf02085e2b3af65a7d7fd32d0f6d8080e1e7fbff6c39bcf3086ece4 +encapsulation_seed = 35d470bcc5880872754810dfb3f2796da2fd7f397537146f6488c27804072b34 +sha3_256_hash_of_ciphertext = 14da42e207477f4383faf4004e58675f0380e7d621421b3c36b877acf3a45d5a +shared_secret = 27ba4cb50ae44cd938585e0a4905d76053dd851e5b6af4fd787446079aa5a4ab + +key_generation_seed = d304c9389cc973477f169788abcb9d511f843219d246a9b587822f422a70c2386590a2e5c7ed86cf2c5c2a898662bc9a81418720bbb632ef9cf0b845ed052d73 +sha3_256_hash_of_public_key = 699fb2f061a75f111f4a7a60195d9045dc01716b6502cc107cbcedf122e8f619 +sha3_256_hash_of_secret_key = 421f16805b1ceffcd64128b1296521ef812d3a8f4c5e3875a049f8de456b021a +encapsulation_seed = 8d667921c5db401a86fe1c35dfcf164a6bb2ab7400fd6a0b67eafd4a0ed11940 +sha3_256_hash_of_ciphertext = b2485ef56c39d468193e387e72794e0ddc9b5404c1a6d90c3b94a5f3e13ba7b4 +shared_secret = d17b2738213a98f29ee46747c93308ee7000fa404b9a0c1acf3f89654ca2446e + +key_generation_seed = 89a6e3be304a3518fb82b18ca730f0b359cd6ba90664a493fb4f8edaf965b9c3b6591121e25d64010c25a18676033e1d7278ac5f2d0b43a31f3a4156ae710465 +sha3_256_hash_of_public_key = d3413880d082f26986fcf452a84a8da934ed06198b290ada1789e74d9081a9e7 +sha3_256_hash_of_secret_key = 7b546a42ffe6b65cd9c5b8857c2518f4f8e0bf835c894a68d1743691fc9aad9d +encapsulation_seed = ec750b3939385a3f8df868119dc76f77ca845567ef068de6ada5478a56bc78b6 +sha3_256_hash_of_ciphertext = 8290f3c4bec7c3b93f3d26e0be3b3fbfdd9c3f5806188fcf0fa1339133f29c7d +shared_secret = 954af53b4add522514b34cd2ab96669a76ca13f82aa2fd70826bc8ee790ccefb + +key_generation_seed = d569b935ce015c85f792f8f7fb0d83c4f53b492959361dd4f75fb764d656450176eae84d11c4528382828f7a689a0d5cff87b8ca0bba97feacb39b935a8788cb +sha3_256_hash_of_public_key = e6eec2929feac2a86c9dacfa6214e2e353fda2d547c3829f5678025ff8418a1a +sha3_256_hash_of_secret_key = 5fac243c82807d7357a61023226a7c270525d96932162ca5c09fc8f7b9ec6cb3 +encapsulation_seed = 74f1d52af09b12c36eb062ea7528550cb4c18a3ce8e4f4ea9fac43ae383bc925 +sha3_256_hash_of_ciphertext = f1b10c800a42ae606c72eaad76accf059cccc02299fbd78a5d091f183f6c3f0e +shared_secret = d0bbc576fb1aa43b6e76db0e87bc4ee3fa057c31642b37f3339217a1b041b521 + +key_generation_seed = 5cbb141c2763425c274f7404fe530d9116e08c33f9f200a20b011cf563a28990fc9ebbe336dc464489861db8253606971bd0a9008a433ed17752d04023781552 +sha3_256_hash_of_public_key = c74f3b7fa6e2ef8ce99508c89cf3c71d666ab065a262581a5fb01b2c9b9444fa +sha3_256_hash_of_secret_key = 5c6998a20960109a4c9808f8f8575697b2b8d18c44c7e9dff97585ae43e6004c +encapsulation_seed = 4b3a70d85f640d1a2a852fb6fe96704af56a7415a8ee4282e9207bc3a2dc116a +sha3_256_hash_of_ciphertext = e9ef0852ee47744b8c3e12cd728d9017465014eef51edf83a4502cb5218cee20 +shared_secret = 91fbc37d4749ec6175c12f0d8eb6b6a8621e693c79f85f5cd2f557cafec5e7e9 + +key_generation_seed = 293abb6d1c207927945417cf84883ef010823e11b487ed55239e466e83696d0cff8563038aad865a817cab9ce98846ba75be9363718ecf5fea538aea90b2a558 +sha3_256_hash_of_public_key = 7378ef967195c977d43a50d03205044006715a6a8a8263d717f40170b49e6bd0 +sha3_256_hash_of_secret_key = 30bd5f16c3f242248a4c4cddc43508bf54535958657bda4dcf105216ddf47eb0 +encapsulation_seed = 26e38ac804fb5b4d59ddf747715e7e6041d875f99c7b638024b4af82d622da60 +sha3_256_hash_of_ciphertext = 37843616c8a4f7ea9480740b6624f41650da2bb1664cf228d85d6d71a0624528 +shared_secret = d586b441b8eaf7d053cc96b6835f093426677a7c3acc51aaa3ddbb66dd14a623 + +key_generation_seed = 74d87c7556f2671f2d666854a4d6e073e69f35421e6e1a428cccea49c37f972ce1fb7456ac0aa1b97068f452cba64ebdc138bcf5d36b0a0fada2a3b374141eb9 +sha3_256_hash_of_public_key = 16fe956be4601573d72306a251f69bc2181253e2417e178341fd6553303ac189 +sha3_256_hash_of_secret_key = 873c94f8bee9fe37265d5dc0c5d3bc1c706057c7efb3cd2cd5ca9ba45498d0d1 +encapsulation_seed = a319d2b8f114f1acd866478bcdeba6fd164dc4e37b0adfa8d8034afb3e197376 +sha3_256_hash_of_ciphertext = cc677a81c73ea5139eed8d85782978d06192715933bc5aef560e737f6d57d0a7 +shared_secret = 409bfd9102bd4632c6b5d3610eb349fe3e3bc51e73acc78a8e994a070e20e10c + +key_generation_seed = 013bab0212d04ecd54b478daf72748003a25e2cb060ba6cc50bf95c292b8206b9da0c5da5f195b80fbb99c2e8b06926074f3f604b3f6195b5a5b9737876bba72 +sha3_256_hash_of_public_key = 633bee89571e8fc16151491ea71234ab83289426559f90c67903a36e4afaa6f4 +sha3_256_hash_of_secret_key = 3c3cff5f49a802cec693efbfc264f6a385210b1eed20f7bc5b07b51839961d14 +encapsulation_seed = ff646071b2509e6b75790917e08e4f0b0d9f0116ec6291c0b59eaa4b583ad830 +sha3_256_hash_of_ciphertext = 6d94a31cff4761e3993308cb3e812a4a7f04f64d02ed3b46b418c2fc16189dfa +shared_secret = 5dd151a8015c0b16d79822832ff4cc0da7fd38eb73b7da59bc519d4d2374b808 + +key_generation_seed = ccb073c4b90be0ad746e26fb093b60c70110bd1dcbcddb566a8cffb7b3caf80e71600a8982c350df524cde514431ded7aec23576530894bcbf0ec0bfef0bb64f +sha3_256_hash_of_public_key = 3217d034b472a846cd317681c0f36feea187bd40e546dc4ad69c2e67fd9d8303 +sha3_256_hash_of_secret_key = 1503bc141825d523c9505d34f50dc0a01d7bc91cdaee6b99f4a85a24ce800496 +encapsulation_seed = 0584270ec26f3b9818e4af074d17b2d51037cc8dfdcbe3b140fa4fed5deebc54 +sha3_256_hash_of_ciphertext = a63613ccfd2ecf8aa3adf0103ddd9eeedbde3282443bcf02513b4ab87360cabb +shared_secret = 1c729b8e580e124e715f19ea6f2409fc6de741afa3d9919b2b8bf3e54c053b51 + +key_generation_seed = 2e889f44e28901e9ac7ca6b2fffcb124c8979401b17064d7e1d51a7e3c3adbfa0e145e44aae52cfc609e6f47fd7a6f6af877190ff52256d0ac5b05b89c3f449f +sha3_256_hash_of_public_key = d1756ecfaeb695001ac490f36c4638151bee98d367fb7adf0e06a470844068af +sha3_256_hash_of_secret_key = a21acea0fd4354eb0c78d47caaf93c9f2434f1cf2d6b2194871ccd98f9522ced +encapsulation_seed = 51e05c7b4ca3079781e8293f4eccebeeb2f8c8b4c59468eddb62a21bcb4ab8a3 +sha3_256_hash_of_ciphertext = 3b322134b37fe8f5d7268fb74d1634ab8b35d456a973f7b0b427fb40a93b6db2 +shared_secret = b95ac8b73c703ab1154152b3ac73f054596ed23d3be328fbe20f936ea95fa926 + +key_generation_seed = 174aaa36410566dc15a5e62874218d7abdde0b2c0f30d877bb80b1abd5f5a0a450a7a2354f7e5cefa6f4a4e9a1c411eb9364506e9e1204a8acb3cb77fbd2c4ed +sha3_256_hash_of_public_key = 1b1b0a8682caf72df2e0a48513a7358edbc77a615d6be6fe2a7145be66b7c509 +sha3_256_hash_of_secret_key = 3e214f25fbf4d1bb670a87367399e1b2a9da3491cac5a22a2c18dcc44f3f1bae +encapsulation_seed = 9eca0fe36c80fc5eba171c3ae66a5b1c923faa50b4521bb055e7bf51005c93df +sha3_256_hash_of_ciphertext = a2cd589c24c4c75bc0a3864dc84a85a7f0f3ac11c8578757f8e94054a7c186aa +shared_secret = 8c3851393e5c5997cc95f06da96300f6dd85c041343c98db2e742aaa5f78b298 + +key_generation_seed = 351fe4313e2da7fac83d509f3103caf7b4c64a4d458fefdf636785ac361a1390f072d9b5a99f9c7a0a011e4dc10f6b600d611f40bba75071e7bee61d23fd5eda +sha3_256_hash_of_public_key = 2c54df6e9020e1e44b11b471dea97a382a2fe8d1042565bcd51ef21cc0884d68 +sha3_256_hash_of_secret_key = c6bc9c9e797a02684d3ad8de47919b8d8fdbee09258d084c7a9dc963c80401ac +encapsulation_seed = 0c5719261caab51ae66b8c32e21c34e6d86ee4aa127d1b0195663c066497b2e9 +sha3_256_hash_of_ciphertext = 0cd687f1c3e0d67c46cebf93c1217ddc972ad8662dd05830db350e1292542c1c +shared_secret = 4b681fff6a755e1dda908d070f0d9ac610d85c73079c1022fc67d255e36f1f71 + +key_generation_seed = 9bc5315580207c6c16dcf3a30c48daf278de12e8c27df6733e62f799068ad23d5a4d0a8a41c4f666854e9b13673071ceb2fd61def9a850c211e7c50071b1ddad +sha3_256_hash_of_public_key = bdcaf7b417da8b8933279b33068f6fda313826c2eec500b224cbe046abeb37a7 +sha3_256_hash_of_secret_key = c96e176b19f4135add434d0dd219024587d49fdb649bf470e84d9518bbfa2879 +encapsulation_seed = 0e59f6f9047c784c1f00b24454aa4f1bd32c92ae7e626549972f86fab90e7e89 +sha3_256_hash_of_ciphertext = b38711e358893a864b475f35328b2450fffd5087d631844f7ab0995de2b8310d +shared_secret = bbaa67f1dad879f2fb33bd4ead45aec354bc8f05c7cbea1e433509faac022edf + +key_generation_seed = d8b907b34d152ff8603b73051f772daa71eb902c47b7e2f070508269d757e02e36b817736cbc5f7b1dd6eef5fe6332fb1a598f3871e5470d440fd2ea631da28a +sha3_256_hash_of_public_key = 61e27e954728e2e2e230c94ff009417d7372938e2c29c38af22184eed530fa1f +sha3_256_hash_of_secret_key = 8baa58b1d3fab8ec5cee8841c9012506cad40bf58a677adac88f1a6400506d40 +encapsulation_seed = a3963ade17d69debbc358dda82c7bebe2c39d25b36813058e7a161542e3f8c2b +sha3_256_hash_of_ciphertext = 7d47a21d95483a5845a4fddbb07b3435c29a56b5cf26f5d0abfa21bc39a2f2e6 +shared_secret = 2c7b983d66978be80250c12bf723eb0300a744e80ad075c903fce95fae9e41a2 + +key_generation_seed = 684a29e4e5480a5f2533e1526b5fac8cdf5927f3d85087c71f928c59690eb56575d12195ec32a8686d0600e45d4a7f54219b0d7a3826d193a51b9156ecf2edd6 +sha3_256_hash_of_public_key = 672e53b28d579974d268132187e7bd72238639c6f2ca154d50d98c74096ec330 +sha3_256_hash_of_secret_key = 4c72f0a7ef5c3274c49365cca5e6770bc709ef12bdbd4fd7c2eb5faa296cdfe8 +encapsulation_seed = 97beafabf2c8575586487c7a80e8af5fc50f94b6051c1bc66a5ae9f66be3cea7 +sha3_256_hash_of_ciphertext = 167b4e8b7517cad82ae0f49795918c4d33c79137a9c3e16000c4c55b30b1d382 +shared_secret = bbc58d06cc14f9e96a10acb1789d93b93933f1429cc53a1735b3cd995f086ce7 + +key_generation_seed = d76b3573f596eb286ab5231feec7499686b13021be36cb126c7ebeb9d7030daf248c0a21ea0bb6d6f56f12300e8584d8e9a34e0e6f52227281151ae4c305fb8f +sha3_256_hash_of_public_key = b86d5b13bb8b72a9fb81245ab712f0d10f0e2e09b222143c420e3f2c3acea27b +sha3_256_hash_of_secret_key = c25f2e16a0e6fbf0729e5ee89fbbdd71f00ff9a1abbb00cb47f26e9989eaf678 +encapsulation_seed = 75461decd34c50d6a094b4a64fb75e5e9479f8f9250d82bb7d729dedeb2d4b65 +sha3_256_hash_of_ciphertext = 8919940aeb732930c496fa9832b0c09382663accda45be1ee22930c545eb3a37 +shared_secret = e045e0391e15a66d6208467078f2ba5e429cc586c410ca6c5f3c032c21761955 + +key_generation_seed = b87439fde81c9e39eebe7cf741c685785532c1dd23e8ef868b9ce7a541010f3d1646460817a0fce5836bdfe124a7448e7adf7b8ecc2652ac6d280e986682df71 +sha3_256_hash_of_public_key = 85441cbd71c18717e9de7359b920a9a3bb7f32e619806f4e4718c585085be624 +sha3_256_hash_of_secret_key = 93b65d2df33d3e3ab0d53c1d0a21f3752e2c5962f7d960b888b2a8c495b1b133 +encapsulation_seed = 2607dcf4fd6ca1c614c21b5e37c24981c32b91c8c3e6955777da8a3f5d9c9335 +sha3_256_hash_of_ciphertext = 422509b01b8fff9468e867a2b5ebe5d3e27314de5c058b2c79a61ccf464f4df7 +shared_secret = 0b8584b75838e084839d58c89cb1749e82ec06a0e85464c7546dd96870547d29 + +key_generation_seed = 056661b38038da4fdd7426f32a81576c73ed84843b305168a374f934e27a4e1b79238a80dcfd7c992d84b2dffa67493e669243d4fa38c46b090bdf86bc548411 +sha3_256_hash_of_public_key = 065fb6156acaac591f1bf3ce71c4a046be8c6c55eb9a84d29569bd2b144c73e2 +sha3_256_hash_of_secret_key = 0121afcc6aeb8be9f1c5b06d5b65cc1c03e9366ed7b85fc511d853c5eee230cc +encapsulation_seed = 38c89bbe7145c29e9a831c11431eb9929cb24fb4992db20737e4687d397fd732 +sha3_256_hash_of_ciphertext = f1d3b745d86f860e508ad8b6d5c8a72ef833c280ec11e99516f4ead3c42509be +shared_secret = 3547a15b5748990a5436bdc4db283738eb7d64bdb6ff566c96f7edec607ccc9b + +key_generation_seed = a1b52d871612a1c611ae0944f9e71858f35d3bd14f20e96a931720668bdf0a6b1f135cf64b6403e103afae34da038613e2853bbfc36baafa3c6a95347193f37c +sha3_256_hash_of_public_key = ced77d358342759291c2bd225b0bd82d659d28a24bbc5eda8f47975b780cd129 +sha3_256_hash_of_secret_key = 16e06287bd8d71c78f1657bbd6d5d12c22f6bad7658e68dd849d7751da950860 +encapsulation_seed = b2c35e33c72d90182791f0e12a0324f5b216efcab2c8da1bee025dfbe13f4152 +sha3_256_hash_of_ciphertext = fdfd351fbb15c92843b44489fee162d40ce2eea4856059731490afda1268b985 +shared_secret = 852ba9be42763c5a74a75778eb839a3738a8ceed1520b0588f9dccdd91907228 + +key_generation_seed = 952b49c803d6d6fba69f4375adce8594847a00bcae2179da49af2aed0423250262d7033947ae42ca53522a65fbafe18d3bc3e0cb66164e9a094fe4b44d8977ed +sha3_256_hash_of_public_key = 2fdb7c7e39ce1625c20a13a1c91aa5909d8b03b064d00877dce2415020370c72 +sha3_256_hash_of_secret_key = ffdb52b23a9ca4b71ec882031ebcb33a0ecc6731c13c817b24f3a06e48273778 +encapsulation_seed = afb7d6dc2b7eb6d84acc080c1be63c98afe7b07786b5801f716444a3e8e64800 +sha3_256_hash_of_ciphertext = 215d83f872221c5fd4ee4da557e17299dc102c52dba1fc4bc3f8c16805da7f1e +shared_secret = 618a8496b8850609c09dd1d18798ee2bfff3ed7ef6f8b8034fffcec98f291d69 + +key_generation_seed = 3c815e57e9233e975fa1630208aab206b71ae0db37a7a8789ac683d9f9b2d29801c8e376fdb140ee343106c093af7cb149b316ba79446ceb4e5e0cedb9b164f9 +sha3_256_hash_of_public_key = 86bb11e7d9c1368fbba34ce3a2f169c2464ef5fbc11f73843c456467b6cdbd4e +sha3_256_hash_of_secret_key = 5d46659798d268f1314ad1e7c1735c480301f5877773403966e928bc3fd33d1b +encapsulation_seed = 28f5e9dbda122b2cf8f3754fe9e0c73a84ad4b0c093522e0b62cf815d60bbc3c +sha3_256_hash_of_ciphertext = 5ff5d6bdb110bac57e58a4e288d056a1384f9823606a42daef2ae82e0b7574b2 +shared_secret = cbb8b7a05f48b47d163cf8c2fad32bc586f47f2c2e0911da349f29b1e3286c22 + +key_generation_seed = 588760826dcfbd36d9abe6ae44a669bb3ebba6a218eab69e30f18a3bd536576e0e860576285483bb5fd36e2f944d32c4317bebc1e441470c1372046a790d79d4 +sha3_256_hash_of_public_key = 29253478090cb4d580bc2a912645bc685061e5d4437b3811eda69c865ea9923c +sha3_256_hash_of_secret_key = aadce411f3708e9727e4a7e4e198781e1ef5e8f4c4c14add1e25f5758649e265 +encapsulation_seed = b0d713cbef0bb1df70cbb425d1e9373e9f7790fdc7980cc96a240dfc53f1e8e2 +sha3_256_hash_of_ciphertext = 675039d66fcb631a050a8b24415b50f331350bd6697f9c977eef15c15d4cacca +shared_secret = 1eef87404f318351413d52ba8a07cfa5e72f235d6f91afd7fb8ad3e683ce0a55 + +key_generation_seed = 47550e9edacb6ddce3d9ab81f6b61080dd4f2693854acb05e0ccc7a4fb6390fbf89d7d99d5c3e0d10d6ef9af054d842375f695abb28e3b8eb495100f04306e92 +sha3_256_hash_of_public_key = 286de7dc142efe935e84b0aeebbd32d050fd9d8b008a94e59454b19ea401611d +sha3_256_hash_of_secret_key = a6b53edf9efd7fa67a478456a5b6a379876c248f623ea45f4b541a8db00c524e +encapsulation_seed = 32bdcdb7059fe27f6409901980c080308951ffd90deffa8317b4d213a5f04495 +sha3_256_hash_of_ciphertext = f03d44bd9bdf3bfd486919fec2177b8b685a9981de4cbc2a9e98b7e9b0a528fd +shared_secret = ca2c0bba56645e4fce4b7e38a7bb4b839e754bf2834a302a2614377eddd6ae60 + +key_generation_seed = 610afb64be8cc1df288cfb016ee2f44c6c07113de7f6fee071fe0c3fe31c6215cd292e4c5f9e1a55e0489bceffb204d672a6215f4f3980a646d9f880817c52dd +sha3_256_hash_of_public_key = 029a2e12c3e6aa668afb5be8a82576813fac7b8e61c5a88aff94ecc2770c585e +sha3_256_hash_of_secret_key = 413ae41ee83e17b74ac654c2aca57abe8f8ed0409acf7cc8b301e3d6bb049cfe +encapsulation_seed = 4ed7c92d83bd03b2a25b567f17ae55542e2f6a4308ec0f3fe69f8ba5ae24331b +sha3_256_hash_of_ciphertext = e8992f7b7b619c03cb9f0c991e3a9c20f91beb707c177ad4e02a5808d10d8769 +shared_secret = 9155619e28de6cc0670ce70e0ad270f0e885e5f5f8d6d38426938ae1036d6ffa + +key_generation_seed = e1953800acaa85ac02a906c72cb8e8d704e8d27820345f88f71e89c1f549afcc8c64c049c6dfc0f1476cffd520b055756162f7ec94243de6b14ac0b9e5fb366c +sha3_256_hash_of_public_key = e3ec3671cc7675a321af8584a0961101c04a432772431e77f5740ba3b2ef488d +sha3_256_hash_of_secret_key = 93bf696bf0671c3845c4b246f29701a0978eec5b49de81589009e235903061e0 +encapsulation_seed = 060ea5d2ed1dd88144a9885e79278590821c22917b55a48920f96b53ebe0e689 +sha3_256_hash_of_ciphertext = 6634bd840d2dbb01463cfe5b4e3e54d1eabc081cfbdc14d0bc118911ed8d3cce +shared_secret = d1f24383d5b8d0c3c0a6a5f8f7d38ccce13ec179a84b0b09bcda4c9988f3eb4e + +key_generation_seed = c719f9b2d16399b7326ce4eca30dabefe8fdaab18e9f6df888b0a134ef355570e40771856eb77e4633504899fcb86c6a3d433d0b8d60e26f07bd61f1d4ed69bd +sha3_256_hash_of_public_key = 79836213a513bd4cfd42ed281304e3ee4560e4e0c60fa53781f83d5bd2bbea52 +sha3_256_hash_of_secret_key = 65deb55fea451375ef335e7faac73917d32220fc70c95f371fdb16e712beeb26 +encapsulation_seed = 10ef9426f8c4a13b52325c5bb4ead4596ecf2c6b5bd2d37d8350e90d4164fdd9 +sha3_256_hash_of_ciphertext = ba79883ad64a6f2b256004233d87809a8c390327a23c739334f773507e003aa7 +shared_secret = d2dab0b39b7f62de3ca9826f9dd15a4201191a0e0c690d3e52b305a9d3af2d0f + +key_generation_seed = e9acbb774be970206c3a738e243b420805a509fa59fa902044be2f0d013650d2ded5edaec5de3bf5b4d7c2f2e18e87f499c1968993eff196753db8045e2c8ba8 +sha3_256_hash_of_public_key = 0c2e803c2872400c49e1bb10232946ab939319e84ff32cd354dc15d082cde5a3 +sha3_256_hash_of_secret_key = d37f172803739d074d71a2be32125eb1ba4250128342e34b882fcba38b259248 +encapsulation_seed = a4bd30a64cbf29a4e290fa1cc1dfb99e68348713041e4409a1af23c5d80c15c4 +sha3_256_hash_of_ciphertext = 13d437b2fd9d67ca0699a3dacd977fba5d072fa6b482043d63e8a9548ba6a3fb +shared_secret = 6869ca370a496af2dbaa866265d91ba6be54b9686b1b8dd5714f6ba861b0d1e8 + +key_generation_seed = c1b3cbffad4b306f9af0cdd3028876486dbe858875c9b6497fe20172a986c82b1c96249919cedc2369d8d739ab125e0d2ccb82dfebcd90240a545cdfe07511f2 +sha3_256_hash_of_public_key = 5818ac8d7a38c781e3a0bc43d088e6d391d1d67d9639b260bb6f58a19a57150d +sha3_256_hash_of_secret_key = 280e4774d1b2401580216fa70fb24c2c214ac5dc7f3841710a42e14d6aa09663 +encapsulation_seed = f4b66a7d3b65b896dfe100b2cad24b175a1168cfd2ae11fd704b835f6bcd311a +sha3_256_hash_of_ciphertext = 51eb70249a1abebd5159f1069b1acda2304f25fc9cbd9f4a625b58df448b47dc +shared_secret = 502d92b2a7e1804892ffb8ff009987a58f35baa30c0392c83859fde82105a9aa + +key_generation_seed = ff7495b8575b5a98e4fd21fb4c3e58cbb60f14bef21aa74cf8802e3153f14807bdc370460375a778d1a31d01c42b66367ed8d9e8f84551002f552f0e52102b5d +sha3_256_hash_of_public_key = 172cf4f8dace8a96b8f70da966080a5e3f132873ca7544343377a99b65e8147f +sha3_256_hash_of_secret_key = 31136804b6c14f3a0a00a3295a5fed8d606369e64d272d432c59d7fe0ccc3e47 +encapsulation_seed = 1d7b03d3c5eefb8ae5799dc569aa668f1bcb8c86607b089d3530cf61d6380147 +sha3_256_hash_of_ciphertext = 9b38b66fdfe80acab82bf9577676f6566b4429f78a14f7486b07c96ae7be921b +shared_secret = 48eb4b840c0d957f28808e434786c02a8f99d3464ccb3caf91cef4a0f8e70c4f + +key_generation_seed = bdc3fba1c32751139fc45bacffb3ea97f26573d804a5f27a459293d95190ed8efd5a08f656a6eb8cd20679930a31caa6a6331c4b133a6838c223ef9f769f6246 +sha3_256_hash_of_public_key = 268b6356f92c57da6dd34494b927e8764adf0ad519612ef0d1b8951e50966c2f +sha3_256_hash_of_secret_key = 3bf02cee24670ca40b7280d8047fa147b24c5e286dcae9c24bace9465bb19f61 +encapsulation_seed = 554f3385b382f4a46314de37ee3885addfc5332bd4038785094e0a832e9e8c2c +sha3_256_hash_of_ciphertext = fe8c3fcee4be152aff29e55f42f2fb1354ae55ccbe38400bc901ca032ede1ef6 +shared_secret = f9507f70421be90f21138a1e135329ee8228682cc948a6914ea58624d396df0b + +key_generation_seed = 447f6076a627bbc5ad7773fbfeb14b4ba9ac43a0f8b99fb6dcd5e452aa3c47ec20a7237801f470fcc2bd9fd7bea8322859b850f7882d362947432913dd068c01 +sha3_256_hash_of_public_key = 4c6d304e0494d88d83b5e3aa5761df3b299551a24f28994d2747b2b08945bead +sha3_256_hash_of_secret_key = 5de91ca73756eee74da3cac78a1fb329a02f8587f212bb9bc0b29e0e654a5795 +encapsulation_seed = 38bf0033b779edf5367d9ebc01c988af90904c560970815837380650e4749eea +sha3_256_hash_of_ciphertext = 805ce0ab06c568b614cacbfa4cce5e65929e2846932a90e9418513dd48cf3358 +shared_secret = 24caabaafe2063f812eaf57c58b6c0376ed8ff778cec1980ee9c3228801a75a5 + +key_generation_seed = 2d5df64d62cb07fe630310bb801c658dbf3d97993e68626745de39d37fbfc2b27b534537addaba4ecf14f02ab317d36cb9f0f50222ced7cf029dff8a0d3d2fd9 +sha3_256_hash_of_public_key = 72be2f5cd569e6229f00014854633f7b278e90af4ea593411909467a03e29cfb +sha3_256_hash_of_secret_key = a68ca31b91491a129af9f280cb4c60c046e7a7ccddf41c9bd98663f8512ca34b +encapsulation_seed = 048ea516d0ebbd9f709b47eaac66f344c571cf50f0d01c9466aa061a50b66a24 +sha3_256_hash_of_ciphertext = d27a36808f09d6165aefc5d253090027eeff0653268c55a0b3de2a751ec765be +shared_secret = 9f734b15fc7dd99bc10d6cc7de5d2c93ac789a5665e508a95d075dffbad25abb + +key_generation_seed = 25056d1b8113bb362dd979d98643d7a7ac9c4f95994c0ba060609b6d07002ff3f48a9254dd40b117941fa35a66bb50296327b725525deef70e128ca8045ec451 +sha3_256_hash_of_public_key = 0831c75b153fa17d336a79ff6e88ddf485daf7b1b0bcf39d8df15319d52ac67e +sha3_256_hash_of_secret_key = 2b983d7cb50880cff761441b6a2c66b7a41642cfd2a8cc297a5df53f0ed1947f +encapsulation_seed = 686c921c9db1263e78ae753b1c9c2e7936b8229dca48c0942c56c6bca4f10917 +sha3_256_hash_of_ciphertext = 0892527da24957468b1b8fab49ad2d7dd6d238eca54624fce6a3c2dbbbe8d194 +shared_secret = d27e55f2a1f9ef336c8537f11da9875e03cc7dde8951d81b0740457609654107 + +key_generation_seed = e4d34e12982aeeb1d62fd488d9b9e28557ed3429292239fb4f76fa9098009acae6c45c7fc62329b13c8d29844405db8ff6860de474bf727ecd19e54e6e1a141b +sha3_256_hash_of_public_key = b30cedc4316b63d75b641fbad2f33241a3fc47ab8b3ee1a3ed597e5b04f77c68 +sha3_256_hash_of_secret_key = a49a7533c671e533deec55af218ee511c57014070e138c7059853e08c34b0a78 +encapsulation_seed = 2387772e50059cabda53cb93ba24b19ae529496c03b36584169451525c4a0e7e +sha3_256_hash_of_ciphertext = 390b3b6f9a0f9d97ccd452c83bf47416b22fd06b4d8968c44ee6effa7980e68c +shared_secret = ed5903d1cf02861444cad7fc3793b4e1b9b6d0324bf6babfb768bb2f84300086 + +key_generation_seed = cd6a99396eb3539ca663a51e42063a3a262cc1c5a5fce1566f0597b52ad9fa325a3407f591791a5db4578b5972093a95bec3b8e70c1d542c9b5c9789729f8922 +sha3_256_hash_of_public_key = ee044dbdf6787ff038dbf9c133557169c62fc1ce2580739369aa87df00b49648 +sha3_256_hash_of_secret_key = 9e865967f0d1e7d3f6a49f2bb623ced2a7b1408a945e02adbdca35846b70e7b9 +encapsulation_seed = 155c29c5f0378df0cd0e847a80a07143cf7522fcd880c9229eb9feb1ce340cd2 +sha3_256_hash_of_ciphertext = 6858db6eafd97259e6d775d881f7a877010179d4f827680426946b9ac4571261 +shared_secret = 0d301028c1cb31dedc8a702a9e95b7d3589f68a6a1f600af84ae0f543e625361 + +key_generation_seed = 6c8c53ed6f65e6b2e324b84364e10de42d1c26a106d4d1c99eee79c78586fb55b9402bf02481ce4b27a52e87feb92c4399c7f2988d40e942e7496ad15ad2aa88 +sha3_256_hash_of_public_key = e965ac6995d525e324e8252d8e2c2da909a29b24baca8b68daa5122cb539a474 +sha3_256_hash_of_secret_key = 91051a381626e9465fc7ab20a1944eca64be461330bda53e7d1838a74597392d +encapsulation_seed = a9cb9a61a3324b1ea5afe693b32784e2871096b2ca14a11acc9577c52359a241 +sha3_256_hash_of_ciphertext = 42bfb5584610497fbc8080a664139afa534b39a417cb69ab0d2a16c8737eb1cb +shared_secret = 354d86b389021a3196b75c6582927b3a005fbfee0951f34d9cd5c8f415fa50f9 + +key_generation_seed = 2107204cd995f1df14314d5381f8c5440f09a347502e161cffc0a2ec3dcfbc7324c3da70fe850e80aa818301d60c70f3038153866dcd5d179e22db59b8991bb4 +sha3_256_hash_of_public_key = a3d8a85f38cfda38c66ae39b2f9186ef7bc1e0c98e8976a6cbc6c4875d73d7fb +sha3_256_hash_of_secret_key = cf7e797f8f7229a08206034737e54fe46645ab2fabdbfc8662b45a2604876b65 +encapsulation_seed = e99fbae8a024ebbbdcef32ce213f6aa942e3eca925e5da4c09975d773b33a175 +sha3_256_hash_of_ciphertext = ce7b65856502b280e02a36d906e018c6a23cae99f27ef6d65762c87ddfedff56 +shared_secret = 3afcfdc446f93a8169024a24fc0383692843cfd6b4854a8e490892fc35aad4cb + +key_generation_seed = 63a925685a8ac5bbd918faa33ac397d1ffbcf99135d9da7c3d6ff7aa4c50af3d3afdb8a246a56ee71465591831c371f2eb87467b0559dedd776ba063ee6d2f93 +sha3_256_hash_of_public_key = aa73b40dedd61e6fdaac86971965c03ab14ae69e8130426fdf830bd57d0974ce +sha3_256_hash_of_secret_key = 1e7f3f1e5632d1df538b564304f56689742d1f652d8d32f019b45183af68a20e +encapsulation_seed = 67a216f37d67f5e74f782f1badbce1cc8c80a6130aec305b421899a4faa0a6c3 +sha3_256_hash_of_ciphertext = b6c40fd53bcd9ee1e70bc6783b402ae34c24dec724e63262d8583c90cd10256b +shared_secret = ebba9a8bae936c829c1445c68595da96919041ee3d9b0fe27ca93db691146874 + +key_generation_seed = 6a1aee5e708c1b47f02bdacce4f56c860f74fc7cfec1ef3b58285b1c8ad7fec2230e05b7114ff0395cc6634db1eae8258072d09c09f291e92d6620b177dc50d7 +sha3_256_hash_of_public_key = cf754f2ee43694865a09ca7beb0deda9b1328fd0abdf30ca5c338e27e8be04b5 +sha3_256_hash_of_secret_key = 928592604aa44df8f2072f26e9511129f61da0b7f57acb3f6896635a9764ea87 +encapsulation_seed = 52b19fea232c9154a3e431e9d69cda40013cf2d485c3cd027ad24e645420420b +sha3_256_hash_of_ciphertext = a4b50ad169b436877652a6c64dbbffdd63f53274ddcf58f3c96c3929215aa956 +shared_secret = f063c0908deb2e61faa0c4c0f5051b2c8af7265060681df14bacb30f0228b3b3 + +key_generation_seed = 6396b328b100e4c7f4bcae69875edea1a1982421558c608c13c592bf7b5d0fef1100ced48add211a5c937b8d6079d8e271af3f949edc61f70e60453aef20dea9 +sha3_256_hash_of_public_key = 3a842153dee9e035299d7e268c9492d71188f9fb24bdc2dd20c1ddca647a1523 +sha3_256_hash_of_secret_key = 28ee987bc4ae5a321d2669950dbf87596fc4b35c29f192836005064aa3dadee1 +encapsulation_seed = 64440adb05db3308b189bf999f9ee16e8ee3a6ccbe11eebf0d3ae4b172da7d2f +sha3_256_hash_of_ciphertext = 126b64a28d82d06ca81f7e86d33f4949634924e04528d1142061320eaadcb841 +shared_secret = 02d2e466e170bf45d3e9d357e2f04c34cda408cf147e9ff7a6e8c715f2c88ace + +key_generation_seed = a453bcacdd2b0d4646009e5ed451c3c45f08fb827ef733db3c517a9dc1af93e67a3cc8aa3239d4c52ce4c95afdeff6efbfacac10d294edc0e7cf4535059bfdba +sha3_256_hash_of_public_key = da43cae3c4da51d69a57eb87094a03cd3a9c3e6b4ed864cc691a60f0509cc646 +sha3_256_hash_of_secret_key = b204cd1c3122b29a3d99cb77e11427fc102375699928c5a6fe816f96bb212627 +encapsulation_seed = c8bb46b3a7344ad170c2052fb042b5a3b62e0590562ee82577b1081f6f114d16 +sha3_256_hash_of_ciphertext = 228dfe300e3fabe4d4e550754ebcbbf72a796209c1d24e7ae93abb79e1cf17dd +shared_secret = 6a5b0842c122ab6ee251399492b061d2ab3e40843f4dc01c12fbd5bd545c600c + +key_generation_seed = 47ca2b77c5b717f423222c2730ca5cb9c856bc951d01b2b2c80bd76ccb5539b78f1481d7cab000e33fa07de8dc9627a85e76fabb4428a3376e66300cf12a0787 +sha3_256_hash_of_public_key = 6533c524a32345eefdadc74a3c6ad7e981832797faf1068955b79f118dff9358 +sha3_256_hash_of_secret_key = b9dee52055b1f9a2b25a0c1be4d9f30d2ecd7c5a09f0f5294de2d49a55ac9fe0 +encapsulation_seed = 2e2b70609f3fe029a14d09d5d659871ac776ce2797a0355f16e2eb68f5613fd1 +sha3_256_hash_of_ciphertext = 2d7e8fbd6f2257b05eaaa2ca1643c452b4e0b623c9ad72027cca8dd8b7b5b91d +shared_secret = 2486c0a6cf17d9635dbca1f8395784cde54dccb7df10fced92183f983478fac1 + +key_generation_seed = aaf6eb40e596a5e3e8218871e708b089240dcbe7fd3641f0e5e41e071ce49107e2f8d320ac3cb0c52efdc753282f092bc39baf4a18783a48ea031a191865eb78 +sha3_256_hash_of_public_key = e2f60f27da7f318eb94a74b437f8e0bc9513e9bcc38dad99c174c1d75e0145f1 +sha3_256_hash_of_secret_key = 68eaa8143a71bd5f6df29b128781e3f2a5fbc5d20534afb223ddcc64bc767f5a +encapsulation_seed = 4725dd8fb314bfd8ee23731c2341dbe114606d9abe6434c471b5573e7df193bb +sha3_256_hash_of_ciphertext = b5b2de55cfaea8fe543f67c4f45a69780c3e2d932e56e0b574d9b40b56ddc1f1 +shared_secret = 85690ee044e4d8e0540ff984775b59bb5134383c4e229e79e37d7d77632fadaa + +key_generation_seed = 6500f32c93415cfdbc0bd31d78d5be95cb9060c8cfa2013955b56f8b6868b322393308641a9a4647f230201e1389624a296b55192a9819fcb19ab77c25f95445 +sha3_256_hash_of_public_key = d4bf608793939ecba27dff5889d4d921c583999a57e20a48085ac549573e6abf +sha3_256_hash_of_secret_key = 5f9a14a9c41fc228306d79417015408f31bc9c3d97579616bd68a3d3444f9bd2 +encapsulation_seed = 818d3bb8ebfb32bf464775f7139bac0a5bddce80ec5798595992f9403002cd5d +sha3_256_hash_of_ciphertext = 99fb7b7767fa94e74936a6678acfd5a2306b156f90f4608d507768a25403a16f +shared_secret = d179d901a0570bd23aa52570c5c233a2240d4724e81d98c9ceedb74187eb75a6 + +key_generation_seed = 7643cef2d62cc5aaeecf754653ea62294cd2208e5bf3ddeea209e3dc45373d49eac9d531a532770837a854b4f5531f6e0c8d6c10183b30d3435498c2dd142951 +sha3_256_hash_of_public_key = 65f03add3941d22c80d50659f501f8cca1b448d84462ccb93d5f065889484bc0 +sha3_256_hash_of_secret_key = e4513cfd1dd2153d30d15b023421cb8e8456e6a40e612847e1713e915a29a87c +encapsulation_seed = c92aa5fb91c980d9cade9ce99d4c75b2ffa7d6a6ff9bd59def1aa701f2a0992b +sha3_256_hash_of_ciphertext = 4cd7f0af86623b34c0b137a0516b876daa73ffd65d75871ddc828f86a7e9b224 +shared_secret = 6d574af7fcb241fed8763b2d0a352870baf85ef686e90eea31f8500c35945ef7 + +key_generation_seed = f8ee95521060c03bb8dacc79f7eb7db640f545f315613a35d447a09e504cb4e13fc3d8392cb53f36ed647364a04e37278a0e0a45b720f4a75c580c9920eba98d +sha3_256_hash_of_public_key = b8a3b8cf4709204a2fdb19889b0022ea655dfd58ff27e17d530510e1eef45793 +sha3_256_hash_of_secret_key = 1f7cdadf3d4707efe1b7a6173d8f7b8a9f864ab388c3271d79ec424d9da3e896 +encapsulation_seed = 7e8086a01dc5b3bb9eda25bcc45d27f99874841b97237968495800e007696ac5 +sha3_256_hash_of_ciphertext = 1ca889a71a087ccee4ee1a178c3c55ce3649583f3db924e5c1003ccabc44091d +shared_secret = b1090cf26276a81c22ef0e4479a4c705fe294d3b892051ddce7eab16495e0783 + +key_generation_seed = b8bd0493a882e3a49b4e0f6256fb1fea0912562fd9ba26ec3d6c9cc12c8973abd7e4b5d8021c486b9c3114d7cbbeb7cd49eba8a61bc2bcae1f1bef30a1daf76d +sha3_256_hash_of_public_key = 46fe6c37136273736ccb11df5b6d55debbc087de802404b72a003c5e8c809719 +sha3_256_hash_of_secret_key = 3177ed170e84ff15fa1e744adc9ce806e431a68f15a7a026c6092bf593dec6a1 +encapsulation_seed = bb321ef14d44d8698df879fd52450567657f52a2df8d111185dcd7d4f30a72d4 +sha3_256_hash_of_ciphertext = aa9a0ea1823a84bc84649d26e249899437844827fe7c63d4828a5144929fa00a +shared_secret = 2fda9fa72321be3a0946d6d914c7ae714b9cc175619ab8abfd1f1fd499e0dc27 + +key_generation_seed = c0407e41ddf48d333978b89bcf2db01e4613425b456249e76a6f25b8a2827bf5b2dca81e3f5f748d23c9d356a2209f6b2d60247b2e45c9808de497f64f124643 +sha3_256_hash_of_public_key = a074ed1f76e97d68434ba4af2af0e549204222679e9e643580c35af3cdd247ce +sha3_256_hash_of_secret_key = 8f9b3f631d0fb04477846ae09aea725f1cc65b2cdefe2108cdb399c36db9b487 +encapsulation_seed = 210a423dadd899b810f011794b79aa7f860823ac1962370e791287d3a1afa384 +sha3_256_hash_of_ciphertext = a4fb01f55eb2986c1f90cece43330bee1b16d7bda48d617fc94aa14fc540ec4e +shared_secret = 23798e8b9eaa0b369842cad83a2bc32206f791229c830d7593b9150161168011 + +key_generation_seed = 334382d39164d1989696a2ff77b25a28af8bead9883b5365eb6fcca7c1781cc9aba5068af837be962f439f233593d193ce5e08f7d66efb3389885927b89d2523 +sha3_256_hash_of_public_key = 26659f74fc9ec372fe18be4ed6aa28b7cd84ad1c0f0115dad011a11d20fda9ed +sha3_256_hash_of_secret_key = 5e3f83cb08ff80183879af9ade3631bed2a468e429ad027a5afeafd9a6f66362 +encapsulation_seed = bc856afe24213e3d14c3d6f9b89223bbcfb2c890722d770fa3492c1e46d1c302 +sha3_256_hash_of_ciphertext = 6a4204db4803d26d7b8a769033e047f3b4cb616bf5451b88a1fb3ff219bba9cd +shared_secret = d5c63d2bd297e2d8beb6755d6aefe7234dea8ecfba9acda48e643d89a4b95869 + +key_generation_seed = 6995143e8eb8a6e93840f76eec844f67d2b5f75b1839a5040337e61f9806764a0f4dff8e56f68440836a072412a30d851ace2c7c6f02d60e7a8420001a63e6c6 +sha3_256_hash_of_public_key = 2ca3d8ad2dab1dd8a2f4320658fe6eacabf70d907920593919119cf374516336 +sha3_256_hash_of_secret_key = 2798448395f6ae3223550e7d5255e6a605b430229f5809b6efd0683a6b9ca402 +encapsulation_seed = 5fc00f89563e44b24cd67d0ce684effe5731619fd08e7d72e2406eb016afb66b +sha3_256_hash_of_ciphertext = dbd5fc0e1df33ff8af9efd5e281a2b98160f98653803cbd54e3a07292b37fcc7 +shared_secret = 29d6a229adf49a1139794209307b0ca24be5825b2771809232fb718660162475 + +key_generation_seed = 995eff7e0d195c6d0533f3dc194d47e60f9ad14696144cde694d60a95f3e96b4b28f7e7a15a005f92400ce33db073d49b53871594a88fc45e0f94207b5f0f2dc +sha3_256_hash_of_public_key = de62eff56f6b49a156d065d85eaf0aa21ca229a20fa4e1372a410ab1c4ab6e7e +sha3_256_hash_of_secret_key = 6766cef3fe644a233caddf208074b58e6e83f8a78aecd00911c29a08f6f0b0f3 +encapsulation_seed = ea22a76065db4b565ee1807fbd813b43bde72b0e08407fb867c6a18995025e50 +sha3_256_hash_of_ciphertext = 4c669e33b0227c9c2040cdacdbcb7d22b9984372587985ed8f860ffc8d037e79 +shared_secret = 2a56a7a6d5b4c0500ec00a92e322e69be9e93006240889552072482966c54f56 + +key_generation_seed = 3e809ec8dd0fec0d911a4e3fac20f70fbb128c5de94dc7184ca7310ae9157a98d8128601c28b1def8d393a0db283229f7c7383152a814e7cefe8ef9d9768c473 +sha3_256_hash_of_public_key = 66f161d27dc34e1a2f4b98b14a2b221d7eae26a593bfe432487d9994cb480656 +sha3_256_hash_of_secret_key = 2237f6cbb452d375878b82c474a7c948ff587a5f3ed02bbba1459fa7ff8ef802 +encapsulation_seed = e9602b34fe73ad57f4bf6ead99743d645641553a5b9b9bf2e7016629e3e9bd76 +sha3_256_hash_of_ciphertext = 8a2453a21a031cb8966924607a28882426fab2018826192e9bf833bdd38e0631 +shared_secret = ecb62b03f640ae4a9d89685fa0070efa93c24dfcff0d555142f9de25b62f861c + +key_generation_seed = dbf1c465fff3d9f783bd9ee61a573715e45691147b8904439b5ffaa64f94ff7bb6d75eac6c76ced1b0a025b40a55440712ad8424672e761e9bc400d63812006f +sha3_256_hash_of_public_key = 7537e68ccf14e8b7e57090d8f648529dc461ca3950288879e88116acaf57b4a2 +sha3_256_hash_of_secret_key = bd8e44337eef01251217c4702c99232c001b33870953473d83a7486fd25484cf +encapsulation_seed = f72b9080a6c051bbdb9b0abc1949034be0f89a9f73fe277ec4d4740c78d04a83 +sha3_256_hash_of_ciphertext = 6077c60641c03aa8b36213dddf938311ce6b7b8801f967d42713e73249fe7c55 +shared_secret = 6cc30699701927e07b559d708f93126ed70af254cf37e9056ec9a8d72bfbfc79 + +key_generation_seed = 1f7cfd2b70863154e8a69d1758532e86c20cfc763d67c758bd10a13b24e759b5273b38bddc18488024ec90e62a4110129a42a16d2a93c45439888e76008604c6 +sha3_256_hash_of_public_key = 82f68b15681cca5c2852c18d6e88bcb102a059c1d21936582adb71790cc0a335 +sha3_256_hash_of_secret_key = fd483ddc211c5c27f453bca56158e1f8084f075a7b06f5098cc3204427bf8197 +encapsulation_seed = f1e5542190db8ecf4b8d617a04fd3783ad0df78bf8dab749afb57db8321d151b +sha3_256_hash_of_ciphertext = 5c6cfa16f63b1aa93a2b5edc2f4b14c9782f286f53deedf3153f329a2ae2d57a +shared_secret = 250e7f67bb34dd5477471e3a701fb71a8138a1920eb807824380f88a944a6fa3 + +key_generation_seed = 3a19577908efd37697b8edc7fdaf47d1bd3ad01a1b77faf794bee5b9c3192a6fa3729672816f3eba84c9638a79676eeac0f22c8a48e0c5d50a26ff0844c66b99 +sha3_256_hash_of_public_key = 104fbf09445794c0ea0654f5caf70ee09d51c8386d4e1f467b10633c710ac2a4 +sha3_256_hash_of_secret_key = 73fb93953ae666a9df1bf933ba56b8655ea9e319c0110c78d49f8480ae1aa3fd +encapsulation_seed = 74efa414ae171bf60b6f884cb7e5ce12028f49365daccfa23e845d551711660b +sha3_256_hash_of_ciphertext = e51772e769f778067916e81a561ba6f64fae6096a2b4d4b945d9117e7c36e2b1 +shared_secret = 0210935a18f1add5ebc2e1107bf40a628ef9cf8f6e7cdac81dc0291bb50a5a3f + +key_generation_seed = ae0f65e29f38804a6759f70f4d01e2aaff7fe1c91ebc4f892dd0de3ab2e68ea5e03ff73e02a217659f53d8c47556bf3d8c94040f630d63605e2d0f923579370c +sha3_256_hash_of_public_key = 0f353d6a29813d354471eb8b4c38df93939eb3b1db80ddd1cdd6558a9f2687a3 +sha3_256_hash_of_secret_key = 8a9edd6278707108652f3a5bc244592cb7a82c24634583ed2d3eb6a176b216b8 +encapsulation_seed = 0b4c3cffb2ba4380ead13dc0d8acad2356b448a810da1df29f264c44aab6d24f +sha3_256_hash_of_ciphertext = a00c37bd326205575fcbbc100ed54630aa0f2d6dd9e69807d49151ac9a81c429 +shared_secret = 34169fc520e944f94ff1fa3799db802a4c1b26cb2971bf196259a937ab8362ca + +key_generation_seed = 6084a235f79dd093ef6d185b54e69df33dacee73a9bf2f379004421a10e3a79d9f684fb055ece19459eb464e91e126a7a6e3ed11ccee0046da234d964c985110 +sha3_256_hash_of_public_key = 12e89c47142418c26396ef0174c02f69dc00022d56494d31af935490edee6385 +sha3_256_hash_of_secret_key = bc13b19f01d4cab36dac2154e0fd8fb7d2fa012596363942847f1b0bb3715f90 +encapsulation_seed = 1c82471dcdfca3a6942061ab4f3d5bf0d197321437c706d9cccccce449447002 +sha3_256_hash_of_ciphertext = aed1a4ee810b81cb8ee49ee00e94ff4553f0ad2176fe4d27a09f4e68157fcc3b +shared_secret = b5901e97eb656a09d2dd132528148ad07a0a89f638717eb53516a9ad19aa36bf + +key_generation_seed = acd1c0217fad5caa4235544dd9de153ab1880ccf4c76f16f236fae4e4bfda04cf03a8abb0a5010f400ae5722a75bdf5a2f6d5b546b34d73857cb1bfc7e587aa7 +sha3_256_hash_of_public_key = 2fac52ca60594e514333ead02cb1bfa5cd1d9ecda4a0b25ccdfc47ad3f632a85 +sha3_256_hash_of_secret_key = 2743b7a9dd83a6b9bb5c2685f28b5629b2e31132ac64788a0929557d3449dfc0 +encapsulation_seed = 46fe60a18124125ab93e0c578f1c02f1bd1301595013001c7f3c2fa56cde294e +sha3_256_hash_of_ciphertext = 7a039d19c45cc557036189cbbc63445b3504a689db56845ece99d593f165c6af +shared_secret = df5117706beedfb521f0f021069fe9650d0844194339033de6997dced05268c8 + +key_generation_seed = 241191401a63afa750f05662e354dddbc683c776ce3222beb83e3cf913d7ed7ca59b3bd23b49a95bc1fad20070fec930b6060bd827d742b077092e422268e15d +sha3_256_hash_of_public_key = 3eb856043b822df9d60b55fccb537afa3cacca9ef50433bde1dd9831e534d192 +sha3_256_hash_of_secret_key = 398ae3423ba5c6bb05920e83e8939a104c3e4ad91647edc7db1667efe438cbfa +encapsulation_seed = 52fb7cb6a633fd2e83f2892bd9441b48fe59ecee6d026f5246fa7f2a5e55ee3b +sha3_256_hash_of_ciphertext = 05c9617befed785811fcc44d0fce5ae3a1ec66c4d1217ab42e4b754d0ef6207e +shared_secret = eed6ecb831c881508f99ea115745448a7b312a4fa97f65044ebcede172dee2fa + +key_generation_seed = b9a6b0c05677e957d41a34ba03bd06f2a9092e31f63389397d7e70fde6409d18e99c0e7b82be89bc3c1eaee6680aa4efd394e40c2b3f30523c8117f7c26a8969 +sha3_256_hash_of_public_key = 306aed2a804a1c9bad4ab9e59f6126ad7c8633cdd0c2dd9d4c6f639d312ed47b +sha3_256_hash_of_secret_key = 88b28cf6fe19424ff82fc2bb096423b71f0cb8cf985af31bc15ceb4ed18a5e62 +encapsulation_seed = 0f81a5f97082121244403da3feeb734f6084b314b8d94beb11627aa6ad1914e9 +sha3_256_hash_of_ciphertext = 315ef84926802ecbbb437f8f50927d3a391b55ee6e47dbd19aa9adeebb808008 +shared_secret = d6cb77dc96f9ae4bf8b2fc0e277935b3b7b7a59f749ff2c08ad42659dbce386b + +key_generation_seed = 28a96c71577ba00c94f99fe965bc595a26db2b3ca6ab5cf8e443cdd8462b17929c35d165453e5fcdc6f9df64526d9de698f2bd3e6bac6c7fdd86601b9ba5f4a5 +sha3_256_hash_of_public_key = 9bb3963cc1c5cf2b2d1c6ca76226328ab765a79999ccc71fe98d5bf3b34f51b1 +sha3_256_hash_of_secret_key = d8c2492023fb1175a84c19b3ce20f03dd12b1c26b65176d5582c319124bc0e24 +encapsulation_seed = 31af9345365549ea0360169ed57daf98cc5444799d4c75d9f1f5d615e9df8a91 +sha3_256_hash_of_ciphertext = ae36e333ece7ca60c9bc2c4ddd01ca88443fd73bab08502656873b703af8925d +shared_secret = 1592f1413331f1871b41ff298bfa669bca667241790370d81163c9050b8ac365 + +key_generation_seed = c08ba2ef8c3a0a043afad931652d7a19e6e8cb670f840de5f1fa03309b2ca9ec5fe6141a25f7ab9f875f79e0a82d6ea5cde5a017ab637d5fdb7c42646a1d71df +sha3_256_hash_of_public_key = 6d029bb2121c788b5b6ead7226df664490dae362c4befb615717d81c656b3273 +sha3_256_hash_of_secret_key = 0f2c7bd16d9289c3c27136df0cb6ebc624e80144cb92e6f0c897f58a53617ac3 +encapsulation_seed = 774ae54093d694ef40b63b62c73e6c98295f606feb8699807eda1d030ffb996d +sha3_256_hash_of_ciphertext = f8a85f106c6144edf1c7906ec26e292f0390aa9d45a22e67ba2ea018ff565c4d +shared_secret = 966f35c6bc47b4525d9af1ba350e8f44ea448cd1d90cf4e9c55ae5878920b7cd + +key_generation_seed = 0e3b30e102d707538c2671060f603bb0b8a014103f132d63b09ece07e4a4c75b11eafeca9e810796c34e8cfce9d59342884456007b01ddd12edce6d10ed87e4c +sha3_256_hash_of_public_key = 64c819d9bf66855f6ae70627f04da8378547e5867e2eb9759fe0971efd601c4a +sha3_256_hash_of_secret_key = e85b62236d5c6c691a9076dc58bd5da80999eccc8df973c7d0e7e65d8465ea7d +encapsulation_seed = 9f27a47604ab5146caaf0aafe6d149424f8d66e39ba3baf5e6c73b19221b7e21 +sha3_256_hash_of_ciphertext = e9149359cc37143b0b565bd413a04f41a7833c5b76012a9263a086ac34071684 +shared_secret = aa333af0226492126c6985130ac7df2226a64d6d5c5314ce3f7a99add6696d49 + +key_generation_seed = 2478f7d3de6041e7e5cd11c5e2ef483d1aa6218eb126444091535f6ae532fa7311136e2681df2ef881b51a092a9badbe72c9772c169808521c47149578621e28 +sha3_256_hash_of_public_key = db315cafbaec2f8a0142f45affff65289e826c9244ab1cb03f9f65df3e3cbcf7 +sha3_256_hash_of_secret_key = be98d62e4724c0d960ad4839298d4571f9871033b63bdf10d3b0e589db376ffa +encapsulation_seed = 90044031b7597b5e60a4f946b713e8996d0426d2cb013243d9b7d8f8ef159a0f +sha3_256_hash_of_ciphertext = 9f9368ba712cfee95f28a808cb2c23116a0c8da3910c0def2ef4e55947d7101b +shared_secret = 9535303e6035e30c6605c9e0f10c553dcd73828d8525cb190fea79937e093331 + +key_generation_seed = 9d405d3ebdaf35fa8722de431b669722acaaea2fd10b814310b17f78b66147d16ceb14f7662be0c42779459f69a145c0e2ce9f0bd9a0cd1bf32ed5694cc9ae32 +sha3_256_hash_of_public_key = c8d853e65b5b118e28b7cb6f0d5d6f282e0ea20fd72f3690a6b232b20a8a55ec +sha3_256_hash_of_secret_key = 7a5e854bad628be7b99f524f52a97b0959c0ee67a7a10ad24b970e6e3aeeeb80 +encapsulation_seed = a7a31e140891ea37d2b6424b59b1f84f89220f32dcb73e037eb912b389d34a48 +sha3_256_hash_of_ciphertext = 31b04a4127558df57844413928b29b11547de5afc088d568a962fe080c97f190 +shared_secret = 0caa79e0054182c15e54159fbe36d9fb09481331a560ccd9714fff81db5615c4 + +key_generation_seed = 9a86490f0615f3edf789cb0654066e9ee339cc59f968281f3b89213f83c692edfaeb2ef44d2f608621e831187ce79b2d2f4a20f1568bbe76b0d3d5af36111714 +sha3_256_hash_of_public_key = f69bd52cb1d071f1cc7720f949d44f66f40c917eb30f3a4b0eb519ecad2d03dc +sha3_256_hash_of_secret_key = b6ef04e6acbcd1bb072d1cd28412cdb00ee40d04ce5b39442a2efd6756292167 +encapsulation_seed = 70eb3f791faa91f1f982fa477dbcddeb2c55691c07f93b04cd31b37544c94b42 +sha3_256_hash_of_ciphertext = d8fac8ffc3d8dfebe66c219f4189b780d5ba8fe28d5ab79264345639740913b0 +shared_secret = 744ce1aa5a9c515c6571ad6e2f5985df8434e35e9f714cf3659f184b5db4086f + +key_generation_seed = 6dfd9b575872560c7bdc2732c4a28dac4db04e535eb8e402c3dffd145c09ce47a2985c1c4d203778597947d710dec806e36b0cd949fe460ef141213bfc525e5b +sha3_256_hash_of_public_key = 10e01965f9c196d2f5f90ce3ce8f552f8a0d76ba8f5345365392febc50560012 +sha3_256_hash_of_secret_key = 2b5c6d5fe9b09ab5a027522e699401223ae9d304ac912f1b15f0f647dd9a0a7f +encapsulation_seed = 30f4095015ba88b6d969672ca3f438c395dacf7d476ea7a9e805ce932d270a13 +sha3_256_hash_of_ciphertext = e8b01628c7d63f16c59e67352399a760581f341ed41535013490502e884733be +shared_secret = 726f7d790df4c860a0b2c40de9d62c85d0ff70c704ce5a1b3f6bf1b3e3f66cd8 + +key_generation_seed = 6fca9f4e384d8418075cc064c70730801bdb8249899d456a77130d5beeb3662cce7683f8a03d3cf04e46970ff7d6a12494ae12558346dfc8fd9370bf944a0102 +sha3_256_hash_of_public_key = 7c3991fa7983d0dd6e7157cfb152538466e9d5c3998a2b8ed862162b91ca851c +sha3_256_hash_of_secret_key = 72e786018ae9ab8293fa51cb7ca3ff0435e7cccbd5ae02b4680b92c148590265 +encapsulation_seed = cf31220f44de862e1719570e1b26e897790159366a385452334fe24cdcae28ba +sha3_256_hash_of_ciphertext = 5b2e8a3e38c13b53393c8654e92eeb6251ddbe50de4b3c5203a06977491f2fbc +shared_secret = 68f3e22d1b2d8c57bff32160e550becfce535fdcb327394aabeb60eede263213 + +key_generation_seed = e58f71bf175c0550a67e00e0f7b3b7fc36bc2707bf0c93044a492626de36301a7f7054814869cf7625e45647bc1547aff288dbb90699b2ad84893f3b755d9722 +sha3_256_hash_of_public_key = 8aacd8940ff6fc27f175342be74d48075f8ae9320cae20a41c879c27c1bf815d +sha3_256_hash_of_secret_key = f7399dbf35fcc57a9bff87b0087755faa75267788cd0921b9ebc5cde8b656271 +encapsulation_seed = bb5e65669a44e5d5c709bafa98c16ccba6ac2c4ae923334f69a11543eda64f5d +sha3_256_hash_of_ciphertext = aac868f2299bcd272afacf50f1ab0db3d092d33565cffb5645d8b92271e7e893 +shared_secret = 7f6085840a30c6b1fb9dca782e0c78a2264d54726c04c3127956f131165426c8 + +key_generation_seed = e3fc575ed51513e62aba655d24cd9c8f1c6c848aaffa946c49a53ac3ea59e474d82c2f1bf2e6aebde5660fa73356982e12999d8fdafbb3cb186341d0386dead0 +sha3_256_hash_of_public_key = 149e0b6b49fe8adba1217c2c57c83f2b8c5f1d92f319e502b184a65869214f75 +sha3_256_hash_of_secret_key = 6dfa4d29af6a0e8413d5591339c15d2e2cfac3f502f49acca3efb53b53624666 +encapsulation_seed = 9ddb3aa9c7905d1a438c93bcf78e3e321813580371ab4e1289e2dbf3701972c2 +sha3_256_hash_of_ciphertext = ced7a64ce643faebac8ffd39c6a4594732b35f1d6899978ba192b87003d3ad27 +shared_secret = 96e30641ea4280168da37291a3063342ced8e77b33b5415819938c0bd7264ffc + +key_generation_seed = 470b4943f0fe7fd0d8ec5185aba0d1db09d112934e4fb4787e2bbc6b88466e7b8b2809fd40008be70a6b184981101724bc3d5ec5e1956b510b82fd5ad0668a5a +sha3_256_hash_of_public_key = 29b1bff7f12eda28dfedfbf0ac16e27008c9fdc62c35e53b28a312bdc91c40bf +sha3_256_hash_of_secret_key = 762a61eb847c017ece920f51d5da7a9036ed8b835bfd7793527321ec635e2fd0 +encapsulation_seed = 26d90b190a6c3d0d9a86cf66005154e7086749e966e7187c249ccb9329fd3b8b +sha3_256_hash_of_ciphertext = bf49310a35f9ba7994645f12949e658b0dd43d3de76386dc20d08c650522f86c +shared_secret = 47e54c85cc0e2503629a8bfdcfe038c3cf692d723d462bab733c7c8e0aa37b02 + +key_generation_seed = 6df4385db978d27b27d2aa5e452e4152b36f097503d9581ac3390105c5727e7dc95fa08ed106ce84660e8a4c90bd2b22634e40769aa0090a101c5dddad45edc5 +sha3_256_hash_of_public_key = b990059e901097d00e0ebaf40c5d5dab009c66798489d357e760478ce884cce5 +sha3_256_hash_of_secret_key = 37a044795bd330e4dc60a6d84bc6e99664d1be418b0239661d2ff16d1501573f +encapsulation_seed = 7db6d1a129d6123f1f805b79ad3b413012ea86aed42a05e98e7b1f32f9fbbdec +sha3_256_hash_of_ciphertext = 329115908d0763110a387c99778e4746861e80367ee90fd821cda9acdb93fd64 +shared_secret = 8569bd042465a2c4af628425cb102b15ed4f5feee16090e2234f3a884a0fa938 + +key_generation_seed = dbacba825728444921b227cdba54446b3f6881b47be9cd02832f78b023b1bee0e15274a8e2bc08fe818b117ba28c5dfae74d54fcdf6f20052f79be333edc8dde +sha3_256_hash_of_public_key = 175eb63c3144108548720ce7ee0f43a9ff3f52a9924efe9f2f59318bb93c86b5 +sha3_256_hash_of_secret_key = 1993d7639b79f5e4871a7c58a69fec50f96c1424c2c0ee030ac054ae1b88a56f +encapsulation_seed = 1d129b27be7384c359d04311fe5c44917d1fde4bfb57314f483ac617edd5ac49 +sha3_256_hash_of_ciphertext = 8f4225838f2964a986336bacddc40836a98c32cca68c6afcbcf9ef68d9a3760b +shared_secret = c184e0b019c2db772e2c1ca6f97f47478d99cf0c4c5ae1406f51d15815022123 + +key_generation_seed = 690eb71fd7052b906eaec09937a8ed374e0b02afa27c2f14399932be5839fad281c38c2cb5cfafac81b96a810ab749b61806b6d54c9f8cf4bf1be0192423288f +sha3_256_hash_of_public_key = 9bc32a138a2fb5b6072464172abe0fd97e9eabf357c3fa5391d94a415b53abd3 +sha3_256_hash_of_secret_key = 3db4ab1393cfc8b1c708cf8efdb1c443c975878898b60182c22af66375cba13a +encapsulation_seed = bbc773ebd2df42c36ae05952d6a64c63a5dfb82ceb3ef4f8d4df3a30ec8c0467 +sha3_256_hash_of_ciphertext = f1c85f9530d4471eb1401fcf422a29533738c485a6be25f0b554ebf40b49d49d +shared_secret = 6d72e23c8a4cc60b2f14adc788a5c480033bbf6eb111070912bc83ad7b89280b + +key_generation_seed = 32e0ea9089fa928482c0770da545af1bb871a03ce38604138b0d08ea2a10ca2bc06c5bef7b6508409daf847a64c8d30d0974fd3ba7476dc76c46b458a036d884 +sha3_256_hash_of_public_key = 7ef43a72ef04766f1e899d25c9a005009c788b5faf985123cfb3fb97975de26d +sha3_256_hash_of_secret_key = 77431cb18010a604d56fe5a623bed2ffd028a741f176fa09546e9a45a48caa5e +encapsulation_seed = 5b17a6adad541efcbf5ae4b0c0452cd2ce32e4f0f8701801c5b63e197c1fcbf4 +sha3_256_hash_of_ciphertext = 83ddab2e25614544649a1e497b5b21c40a3e154e8a22c270f63cb0c40aa868fd +shared_secret = 29e6b1edac0a9aa33066c113167e42c64d70215ed04963d8be2d4c2dcd0f6589 + +key_generation_seed = 6fb2ec719f2a0dea152bf3f64b9d148f8ab8ba88f64e61f5db53e12d59f525574f797c007e4061f95c7d56cfc7ee5c49e849dde3fea8f25e7876df2a18515c34 +sha3_256_hash_of_public_key = 2c0db43f39b672b2cd912f907cf76a0f6fda925eb2d205546431be0b37b20411 +sha3_256_hash_of_secret_key = 09844e203f4d8fa30728ab388b9d654847febbf5c9cd939cdc11c9c9be24ce9c +encapsulation_seed = 61ab87659525de9656af41246f20e1dbe85c24e335e7ecf9493f46168bc14e94 +sha3_256_hash_of_ciphertext = a2108ea2c446b566a50c228928893e2e4bde5fafb2184af92eb1314113bde0d6 +shared_secret = cfd1b82181543656807880f6e2576f0b095bf84629b3367e9bdede24662ee42e + +key_generation_seed = 527fb88c8bd9a4d6031dad15e63878abd2b559e7e08d61f69e8e78fca964ee6ae32d432b4f9f751bde0496c580a181ffed762aa35454a02d3f1f47ee0394c89c +sha3_256_hash_of_public_key = aae8e61b905723fa092fb95b839f6de3670c39ce0498c27b87d20c24e7f64e22 +sha3_256_hash_of_secret_key = 3880f7ca8fc33575a7a6d8bb46fec86a3f12e0068630507ed245d8bc278fbe5d +encapsulation_seed = eca2adc3da1fb15f34033405ec08ef2f46163df4bfcccf8842c600ce0bc2026c +sha3_256_hash_of_ciphertext = ec48b3ec403609a0ce2d1268cadda8184ab9629cc5913135ffdecd420eed1aa9 +shared_secret = f7331b0a4674969838482b7184fa92e5246f11f5b5e284c3e179effff7eb6329 + +key_generation_seed = ac6fcfaeeef795b6ef9e062f02bf42975fa01e7d91ba832f74e05269a72684d05aeda108ea4d6c6bc0fb958286850422bc357ca67b83c986048e0d0087fa11ec +sha3_256_hash_of_public_key = 64e085f67e48f00a7a7f82963e8c67176bff839a54fa1008328c0612f98d83d3 +sha3_256_hash_of_secret_key = 0bfbc25d9df751f4c30907095eb6d9a75ed07fa23218ad0fffc469f0e55553c2 +encapsulation_seed = c4f15bec2d7701339d0ade4835193bea3632edcf89e74992620d9eb623a0d0d4 +sha3_256_hash_of_ciphertext = fb74b727ad120c18915dca475f3082cd34ded7ae20a308106384ffb5caa029d3 +shared_secret = c89d62938a5caabfd5b30d82ea88aced52ef5f8ec0528e59a654e1f6aff1cc2f + +key_generation_seed = ba2fb9318d4dbe7488057c33e95e6f054583a2800c41bb83083c330a914a12cfe63f8ffda3565c2424c89b20974b748a65a5aba75133fcb3156dfb6626a83bab +sha3_256_hash_of_public_key = 8dab879de09b58d0fc7ade140393ffb5343abbddabdc118fad519b14436a964c +sha3_256_hash_of_secret_key = 7c53072fd98ea7bd8c5e873688b1a5650fe7e11c791407ac8c118b7958cf414b +encapsulation_seed = 28878249e2ac2b6263422993923a0c8bd05ce56e385ed13c943b03d226856947 +sha3_256_hash_of_ciphertext = a1f1579c4ce8eb725e697623321b3d9f55f4b1d0def10b898535ef6614e9923e +shared_secret = 204d9272682710b52fb39b1176af3ff737848978770310df0c67996f6cb596c3 + +key_generation_seed = aa6dd1e5799cdf7af9c4fc632b3eb9d51d66e85c8e0a21ec98664fc51ab63c7dfda268813efab5204efa60f78bf81d320d01ac09ac06244f7afbd2d80fd356d9 +sha3_256_hash_of_public_key = 919a696301240cd6129f66be58e19d99b0d827d9932785cd9ea3d92f7ba54463 +sha3_256_hash_of_secret_key = cb1d7301f15951883cc3f287d4dd8fdf5c9b7022f558dff551c2ade5f5065755 +encapsulation_seed = 17fc65f7fbd7c75ceec421dee84dff5a8cb22764a182db17e0ebe857f54d60eb +sha3_256_hash_of_ciphertext = f02654803493821dd9c2ed23f9e46a36addd5fca0da706bbeeda87a2df9fec4f +shared_secret = 76e5f7623e3e867fd12f28dfda4311f7cd90a405b73e994e857f693573fd2b8a + +key_generation_seed = 195d6c86a3df4c21e3007d7f2768b43c74cb3060e0eca77f0a5d3271542b9a84ae77e0f9f21eabd8c0c6eea7767f4e10fde5c2d79b8400bf96b19014b457ec21 +sha3_256_hash_of_public_key = cb6d7232426bdbdfdacd373c9190722e7bf342825f7d829185dcc9120588fc76 +sha3_256_hash_of_secret_key = a85e24cc2eafdfe40d82f46471112e1359628b9955f3feae9955b48d563ac952 +encapsulation_seed = fa0489f3730100609488e951e6aaa15c0f193bc1dbcfcd013bc418d6c507b176 +sha3_256_hash_of_ciphertext = 17336b9ede3a1c26abe725828a5afbe746035a73dfd4a8fbde5040fbabeb2b8d +shared_secret = 874ac966970f29935db73c231e71a3559b2504e5446151b99c199276617b3824 diff --git a/crypto/mlkem/mlkem_test.cc b/crypto/mlkem/mlkem_test.cc new file mode 100644 index 0000000000..867d86d6b7 --- /dev/null +++ b/crypto/mlkem/mlkem_test.cc @@ -0,0 +1,192 @@ +#include +#include + +#include + +#include "../keccak/internal.h" +#include "../test/file_test.h" +#include "../test/test_util.h" + +using namespace std; + +typedef vector bytes; + +static inline void ctwrap_decaps( + uint8_t out_shared_secret[MLKEM768_SHAREDSECRETBYTES], + const uint8_t ciphertext[MLKEM768_CIPHERTEXTBYTES], + const uint8_t secret_key[MLKEM768_SECRETKEYBYTES]) { + uint8_t ct[MLKEM768_CIPHERTEXTBYTES], sk[MLKEM768_SECRETKEYBYTES]; + + // Copy all the secrets into a temporary buffer, so we can run constant-time + // validation on them. + OPENSSL_memcpy(ct, ciphertext, MLKEM768_CIPHERTEXTBYTES); + OPENSSL_memcpy(sk, secret_key, MLKEM768_SECRETKEYBYTES); + + // ML-KEM should not leak the private key or the shared secret. + CONSTTIME_SECRET(sk, MLKEM768_SECRETKEYBYTES); + CONSTTIME_SECRET(out_shared_secret, MLKEM768_SHAREDSECRETBYTES); + + // Mark everything as secret. + CONSTTIME_SECRET(ct, MLKEM768_CIPHERTEXTBYTES); + + Mlkem768_Decapsulate(out_shared_secret, &ct, &sk); + + CONSTTIME_DECLASSIFY(out_shared_secret, MLKEM768_SHAREDSECRETBYTES); +} + +TEST(MLKEM768Test, ConsistencyTest) { + uint8_t randomness[64] = {0x37}; + uint8_t publicKey[MLKEM768_PUBLICKEYBYTES]; + uint8_t secretKey[MLKEM768_SECRETKEYBYTES]; + + Mlkem768_GenerateKeyPair(publicKey, secretKey, randomness); + + uint8_t ciphertext[MLKEM768_CIPHERTEXTBYTES]; + uint8_t sharedSecret[MLKEM768_SHAREDSECRETBYTES]; + + uint8_t encap_randomness[64] = {0x38}; + Mlkem768_Encapsulate(ciphertext, sharedSecret, &publicKey, encap_randomness); + + uint8_t sharedSecret2[MLKEM768_SHAREDSECRETBYTES]; + ctwrap_decaps(sharedSecret2, ciphertext, secretKey); + + EXPECT_EQ(0, memcmp(sharedSecret, sharedSecret2, MLKEM768_SHAREDSECRETBYTES)); +} + +static void MlkemNistKatFileTest(FileTest *t) { + bytes key_generation_seed, sha3_256_hash_of_public_key, + sha3_256_hash_of_secret_key, encapsulation_seed, + sha3_256_hash_of_ciphertext, shared_secret; + + ASSERT_TRUE(t->GetBytes(&key_generation_seed, "key_generation_seed")); + ASSERT_TRUE( + t->GetBytes(&sha3_256_hash_of_public_key, "sha3_256_hash_of_public_key")); + ASSERT_TRUE( + t->GetBytes(&sha3_256_hash_of_secret_key, "sha3_256_hash_of_secret_key")); + ASSERT_TRUE(t->GetBytes(&encapsulation_seed, "encapsulation_seed")); + ASSERT_TRUE( + t->GetBytes(&sha3_256_hash_of_ciphertext, "sha3_256_hash_of_ciphertext")); + ASSERT_TRUE(t->GetBytes(&shared_secret, "shared_secret")); + + uint8_t publicKey[MLKEM768_PUBLICKEYBYTES]; + uint8_t secretKey[MLKEM768_SECRETKEYBYTES]; + + Mlkem768_GenerateKeyPair(publicKey, secretKey, key_generation_seed.data()); + + + uint8_t pk_hash[32]; + BORINGSSL_keccak(pk_hash, sizeof(pk_hash), publicKey, sizeof(publicKey), + boringssl_sha3_256); + EXPECT_EQ(0, memcmp(pk_hash, sha3_256_hash_of_public_key.data(), 32)); + + uint8_t sk_hash[32]; + BORINGSSL_keccak(sk_hash, sizeof(sk_hash), secretKey, sizeof(secretKey), + boringssl_sha3_256); + EXPECT_EQ(0, memcmp(sk_hash, sha3_256_hash_of_secret_key.data(), 32)); + + uint8_t ciphertext[MLKEM768_CIPHERTEXTBYTES]; + uint8_t sharedSecret[MLKEM768_SHAREDSECRETBYTES]; + Mlkem768_Encapsulate(ciphertext, sharedSecret, &publicKey, + encapsulation_seed.data()); + uint8_t ct_hash[32]; + BORINGSSL_keccak(ct_hash, sizeof(ct_hash), ciphertext, sizeof(ciphertext), + boringssl_sha3_256); + EXPECT_EQ(0, memcmp(ct_hash, sha3_256_hash_of_ciphertext.data(), 32)); + EXPECT_EQ(0, memcmp(sharedSecret, shared_secret.data(), + MLKEM768_SHAREDSECRETBYTES)); + + uint8_t sharedSecret2[MLKEM768_SHAREDSECRETBYTES]; + ctwrap_decaps(sharedSecret2, ciphertext, secretKey); + + EXPECT_EQ(0, memcmp(sharedSecret, sharedSecret2, MLKEM768_SHAREDSECRETBYTES)); +} + +TEST(MLKEM768TestNistKats, TestVectors) { + FileTestGTest("crypto/mlkem/mlkem768_nistkats.txt", MlkemNistKatFileTest); +} + +static void MlkemWycheproofKeygenFileTest(FileTest *t) { + bytes entropy, expected_public_key, expected_private_key; + + t->IgnoreAttribute("comment"); + ASSERT_TRUE(t->GetBytes(&entropy, "entropy")); + ASSERT_TRUE(t->GetBytes(&expected_public_key, "expected_public_key")); + ASSERT_TRUE(t->GetBytes(&expected_private_key, "expected_private_key")); + + uint8_t publicKey[MLKEM768_PUBLICKEYBYTES]; + uint8_t secretKey[MLKEM768_SECRETKEYBYTES]; + + Mlkem768_GenerateKeyPair(publicKey, secretKey, entropy.data()); + + EXPECT_EQ(0, memcmp(publicKey, expected_public_key.data(), + MLKEM768_PUBLICKEYBYTES)); + EXPECT_EQ(0, memcmp(secretKey, expected_private_key.data(), + MLKEM768_SECRETKEYBYTES)); +} + +TEST(MLKEM768WycheproofKeygen, TestVectors) { + FileTestGTest("crypto/mlkem/keygen768_wycheproof.txt", + MlkemWycheproofKeygenFileTest); +} + +static void MlkemWycheproofEncapsFileTest(FileTest *t) { + bytes entropy, public_key, expected_ciphertext, expected_shared_secret; + string expected_result; + + t->IgnoreAttribute("comment"); + ASSERT_TRUE(t->GetBytes(&entropy, "entropy")); + ASSERT_TRUE(t->GetBytes(&public_key, "public_key")); + ASSERT_TRUE(t->GetAttribute(&expected_result, "expected_result")); + ASSERT_TRUE(t->GetBytes(&expected_ciphertext, "expected_ciphertext")); + ASSERT_TRUE(t->GetBytes(&expected_shared_secret, "expected_shared_secret")); + + uint8_t ciphertext[MLKEM768_CIPHERTEXTBYTES]; + uint8_t sharedSecret[MLKEM768_SHAREDSECRETBYTES]; + auto ret = Mlkem768_Encapsulate( + ciphertext, sharedSecret, + reinterpret_cast(public_key.data()), + entropy.data()); + + if (expected_result.compare("pass") == 0) { + EXPECT_EQ(1, ret); + EXPECT_EQ(0, memcmp(ciphertext, expected_ciphertext.data(), + MLKEM768_CIPHERTEXTBYTES)); + EXPECT_EQ(0, memcmp(sharedSecret, expected_shared_secret.data(), + MLKEM768_SHAREDSECRETBYTES)); + } else { + EXPECT_TRUE(ret == 0 || public_key.size() != MLKEM768_PUBLICKEYBYTES); + } +} + +TEST(MLKEM768WycheproofEncaps, TestVectors) { + FileTestGTest("crypto/mlkem/encaps768_wycheproof.txt", + MlkemWycheproofEncapsFileTest); +} + + +static void MlkemWycheproofDecapsFileTest(FileTest *t) { + bytes private_key, ciphertext, expected_shared_secret; + string expected_result; + + t->IgnoreAttribute("comment"); + ASSERT_TRUE(t->GetBytes(&private_key, "private_key")); + ASSERT_TRUE(t->GetBytes(&ciphertext, "ciphertext")); + ASSERT_TRUE(t->GetAttribute(&expected_result, "expected_result")); + ASSERT_TRUE(t->GetBytes(&expected_shared_secret, "expected_shared_secret")); + + if (expected_result.compare("pass") == 0) { + // Only passing tests here. + uint8_t sharedSecret[MLKEM768_SHAREDSECRETBYTES]; + ctwrap_decaps(sharedSecret, ciphertext.data(), private_key.data()); + + EXPECT_EQ(0, memcmp(sharedSecret, expected_shared_secret.data(), + MLKEM768_SHAREDSECRETBYTES)); + } else { + // We don't check private keys. + } +} + +TEST(MLKEM768WycheproofDecaps, TestVectors) { + FileTestGTest("crypto/mlkem/decaps768_wycheproof.txt", + MlkemWycheproofDecapsFileTest); +} diff --git a/gen/sources.bzl b/gen/sources.bzl index d8e96ea0ac..32a09541a6 100644 --- a/gen/sources.bzl +++ b/gen/sources.bzl @@ -369,6 +369,7 @@ crypto_sources = [ "crypto/kyber/kyber.c", "crypto/lhash/lhash.c", "crypto/mem.c", + "crypto/mlkem/mlkem.c", "crypto/obj/obj.c", "crypto/obj/obj_xref.c", "crypto/pem/pem_all.c", @@ -543,6 +544,7 @@ crypto_headers = [ "include/openssl/md4.h", "include/openssl/md5.h", "include/openssl/mem.h", + "include/openssl/mlkem.h", "include/openssl/nid.h", "include/openssl/obj.h", "include/openssl/obj_mac.h", @@ -645,6 +647,17 @@ crypto_internal_headers = [ "third_party/fiat/p256_32.h", "third_party/fiat/p256_64.h", "third_party/fiat/p256_64_msvc.h", + "third_party/libcrux/eurydice_glue.h", + "third_party/libcrux/internal/libcrux_core.h", + "third_party/libcrux/intrinsics/libcrux_intrinsics_avx2.h", + "third_party/libcrux/karamel/lowstar_endianness.h", + "third_party/libcrux/karamel/target.h", + "third_party/libcrux/libcrux_core.h", + "third_party/libcrux/libcrux_mlkem768_avx2.h", + "third_party/libcrux/libcrux_mlkem768_portable.h", + "third_party/libcrux/libcrux_mlkem_portable.h", + "third_party/libcrux/libcrux_sha3_avx2.h", + "third_party/libcrux/libcrux_sha3_portable.h", ] crypto_sources_asm = [ @@ -727,6 +740,7 @@ crypto_test_sources = [ "crypto/keccak/keccak_test.cc", "crypto/kyber/kyber_test.cc", "crypto/lhash/lhash_test.cc", + "crypto/mlkem/mlkem_test.cc", "crypto/obj/obj_test.cc", "crypto/pem/pem_test.cc", "crypto/pkcs7/pkcs7_test.cc", diff --git a/gen/sources.cmake b/gen/sources.cmake index 11d97be644..e7f67ffda9 100644 --- a/gen/sources.cmake +++ b/gen/sources.cmake @@ -383,6 +383,7 @@ set( crypto/kyber/kyber.c crypto/lhash/lhash.c crypto/mem.c + crypto/mlkem/mlkem.c crypto/obj/obj.c crypto/obj/obj_xref.c crypto/pem/pem_all.c @@ -559,6 +560,7 @@ set( include/openssl/md4.h include/openssl/md5.h include/openssl/mem.h + include/openssl/mlkem.h include/openssl/nid.h include/openssl/obj.h include/openssl/obj_mac.h @@ -663,6 +665,17 @@ set( third_party/fiat/p256_32.h third_party/fiat/p256_64.h third_party/fiat/p256_64_msvc.h + third_party/libcrux/eurydice_glue.h + third_party/libcrux/internal/libcrux_core.h + third_party/libcrux/intrinsics/libcrux_intrinsics_avx2.h + third_party/libcrux/karamel/lowstar_endianness.h + third_party/libcrux/karamel/target.h + third_party/libcrux/libcrux_core.h + third_party/libcrux/libcrux_mlkem768_avx2.h + third_party/libcrux/libcrux_mlkem768_portable.h + third_party/libcrux/libcrux_mlkem_portable.h + third_party/libcrux/libcrux_sha3_avx2.h + third_party/libcrux/libcrux_sha3_portable.h ) set( @@ -751,6 +764,7 @@ set( crypto/keccak/keccak_test.cc crypto/kyber/kyber_test.cc crypto/lhash/lhash_test.cc + crypto/mlkem/mlkem_test.cc crypto/obj/obj_test.cc crypto/pem/pem_test.cc crypto/pkcs7/pkcs7_test.cc diff --git a/gen/sources.json b/gen/sources.json index 3bb5ea56fa..fb7454f39d 100644 --- a/gen/sources.json +++ b/gen/sources.json @@ -353,6 +353,7 @@ "crypto/kyber/kyber.c", "crypto/lhash/lhash.c", "crypto/mem.c", + "crypto/mlkem/mlkem.c", "crypto/obj/obj.c", "crypto/obj/obj_xref.c", "crypto/pem/pem_all.c", @@ -526,6 +527,7 @@ "include/openssl/md4.h", "include/openssl/md5.h", "include/openssl/mem.h", + "include/openssl/mlkem.h", "include/openssl/nid.h", "include/openssl/obj.h", "include/openssl/obj_mac.h", @@ -626,7 +628,18 @@ "third_party/fiat/curve25519_64_msvc.h", "third_party/fiat/p256_32.h", "third_party/fiat/p256_64.h", - "third_party/fiat/p256_64_msvc.h" + "third_party/fiat/p256_64_msvc.h", + "third_party/libcrux/eurydice_glue.h", + "third_party/libcrux/internal/libcrux_core.h", + "third_party/libcrux/intrinsics/libcrux_intrinsics_avx2.h", + "third_party/libcrux/karamel/lowstar_endianness.h", + "third_party/libcrux/karamel/target.h", + "third_party/libcrux/libcrux_core.h", + "third_party/libcrux/libcrux_mlkem768_avx2.h", + "third_party/libcrux/libcrux_mlkem768_portable.h", + "third_party/libcrux/libcrux_mlkem_portable.h", + "third_party/libcrux/libcrux_sha3_avx2.h", + "third_party/libcrux/libcrux_sha3_portable.h" ], "asm": [ "crypto/curve25519/asm/x25519-asm-arm.S", @@ -708,6 +721,7 @@ "crypto/keccak/keccak_test.cc", "crypto/kyber/kyber_test.cc", "crypto/lhash/lhash_test.cc", + "crypto/mlkem/mlkem_test.cc", "crypto/obj/obj_test.cc", "crypto/pem/pem_test.cc", "crypto/pkcs7/pkcs7_test.cc", diff --git a/include/openssl/mlkem.h b/include/openssl/mlkem.h new file mode 100644 index 0000000000..d9173fc0f1 --- /dev/null +++ b/include/openssl/mlkem.h @@ -0,0 +1,59 @@ +#ifndef __Libcrux_Kem_Kyber_Mlkem768_H +#define __Libcrux_Kem_Kyber_Mlkem768_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include +#include + +#include "base.h" + +#define MLKEM768_SECRETKEYBYTES 2400 +#define MLKEM768_PUBLICKEYBYTES 1184 +#define MLKEM768_CIPHERTEXTBYTES 1088 +#define MLKEM768_SHAREDSECRETBYTES 32 +#define MLKEM768_KEY_GENERATION_RANDOMNESS 64 +#define MLKEM768_ENCAPS_RANDOMNESS 32 + +// Mlkem768_GenerateKeyPair generates a random public/private key pair, writes +// the encoded public key to |out_pk| and sets |out_sk| to the encoded the +// private key. +// +// |out_pk| must point to MLKEM768_PUBLICKEYBYTES bytes of memory +// |out_sk| must point to MLKEM768_SECRETKEYBYTES bytes of memory +OPENSSL_EXPORT void Mlkem768_GenerateKeyPair( + uint8_t *out_pk, uint8_t *out_sk, + const uint8_t randomness[MLKEM768_KEY_GENERATION_RANDOMNESS]); + + +// Mlkem768_Encapsulate encrypts a random shared secret for |pk|, writes the +// ciphertext to |out_ct|, and writes the random shared secret to |out_ss|. +// +// |out_ct| must point to MLKEM768_CIPHERTEXTBYTES bytes of memory +// |out_ss| must point to MLKEM768_SHAREDSECRETBYTES bytes of memory +// +// The function returns one on success or zero on if the public key is invalid. +OPENSSL_EXPORT int Mlkem768_Encapsulate( + uint8_t *out_ct, uint8_t *out_ss, + const uint8_t (*pk)[MLKEM768_PUBLICKEYBYTES], + const uint8_t randomness[MLKEM768_ENCAPS_RANDOMNESS]); + +// Mlkem768_Decapsulate decrypts a shared secret from |ct| using |sk| and writes +// it to |out_ss|. If |ct| is invalid, |out_ss| is filled with a key that will +// always be the same for the same |ct| and |sk|, but which appears to be random +// unless one has access to |sk|. These alternatives occur in constant time. Any +// subsequent symmetric encryption using |out_ss| must use an authenticated +// encryption scheme in order to discover the decapsulation failure. +OPENSSL_EXPORT void Mlkem768_Decapsulate( + uint8_t out_ss[MLKEM768_SHAREDSECRETBYTES], + const uint8_t (*ct)[MLKEM768_CIPHERTEXTBYTES], + const uint8_t (*sk)[MLKEM768_SECRETKEYBYTES]); + +#if defined(__cplusplus) +} +#endif + +#define __Libcrux_Kem_Kyber_Mlkem768_H_DEFINED +#endif diff --git a/third_party/libcrux/BUILD.gn b/third_party/libcrux/BUILD.gn new file mode 100644 index 0000000000..0d1ccd9de5 --- /dev/null +++ b/third_party/libcrux/BUILD.gn @@ -0,0 +1,4 @@ +# This is an dummy target so Chromium's tools/licenses.py script picks up the +# extra README.chromium file. The script expects README.chromium files to be +# associated with GN targets. +source_set("libcrux_license") { } diff --git a/third_party/libcrux/LICENSE b/third_party/libcrux/LICENSE new file mode 100644 index 0000000000..0e5db48022 --- /dev/null +++ b/third_party/libcrux/LICENSE @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2022-2024 Cryspen Sarl + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/third_party/libcrux/METADATA b/third_party/libcrux/METADATA new file mode 100644 index 0000000000..f2d29147ec --- /dev/null +++ b/third_party/libcrux/METADATA @@ -0,0 +1,13 @@ +name: "libcrux" +description: "Libcrux. The formally verified crypto library for Rust." + +third_party { + url { + type: GIT + value: "https://github.com/cryspen/libcrux/" + } + version: "cab8aad997a68bfca77f7aab127a120d363de5c3" + last_upgrade_date { year: 2024 month: 6 day: 14 } + + local_modifications: "Initial import" +} diff --git a/third_party/libcrux/README.chromium b/third_party/libcrux/README.chromium new file mode 100644 index 0000000000..6d6f0dda8c --- /dev/null +++ b/third_party/libcrux/README.chromium @@ -0,0 +1,11 @@ +Name: Libcrux. The formally verified crypto library for Rust. +Short Name: libcrux +URL: https://github.com/cryspen/libcrux +Version: git (see METADATA) +License: Apache2.0 +License File: LICENSE +Security Critical: yes +Shipped: no + +Description: +See README.md and METADATA. diff --git a/third_party/libcrux/README.md b/third_party/libcrux/README.md new file mode 100644 index 0000000000..4bf9943de9 --- /dev/null +++ b/third_party/libcrux/README.md @@ -0,0 +1,29 @@ +# Libcrux Cryptography + +The files in this directory are generated using hax and eurydice from the libcrux +library. They are written natively in Rust and exported to C with hax and eurydice. +All files are included under the Apache2.0 license. (See LICENSE file.) + +Necessary hand-written glue-code is in + +- `eurydice_glue.h` +- `intrinsics/libcrux_mlkem_avx2.h` + +The high level APIs in `api` are hand-written as well. + +The Libcrux SHA3 code that is used in the ML-KEM implementation is provided as well. +Note that this code is not verified. +But it provides APIs that are specific to ML-KEM. + +All the code relies on the Karamel glue code, provided in `./karamel`. + +See `code_gen.txt` for the git revisions for each tool, used to generate the code +in this directory. + +* Karamel: https://github.com/FStarLang/karamel +* Charon: https://github.com/AeneasVerif/charon/ +* Eurydice: https://github.com/AeneasVerif/eurydice +* F*: https://github.com/fstarLang/fstar + +When the F* revision is empty, a released version is used. +By default: [v2024.01.13](https://github.com/FStarLang/FStar/releases/tag/v2024.01.13) diff --git a/third_party/libcrux/code_gen.txt b/third_party/libcrux/code_gen.txt new file mode 100644 index 0000000000..ae0f24e1f2 --- /dev/null +++ b/third_party/libcrux/code_gen.txt @@ -0,0 +1,6 @@ +This code was generated with the following tools: +Charon: aeeae1d46704810bf498db552a75dff15aa3abcc +Eurydice: ffeb01ce4cf0646e5cadec836bc042f98b8a16a8 +Karamel: 42a431696cd32d41155d7e484720eb71fd5dc7b1 +F*: a32b316e521fa4f239b610ec8f1d15e78d62cbe8-dirty +libcrux: 0979e5c69127ebc8f24b32efb5eea0c32cf18328 diff --git a/third_party/libcrux/eurydice_glue.h b/third_party/libcrux/eurydice_glue.h new file mode 100644 index 0000000000..48455c2d7d --- /dev/null +++ b/third_party/libcrux/eurydice_glue.h @@ -0,0 +1,157 @@ +#pragma once + +#if defined(__cplusplus) +extern "C" { +#endif + +#include +#include +#include +#include +#include + +#include "karamel/target.h" + +// SLICES, ARRAYS, ETC. + +// The MSVC C++ compiler does not support compound literals. +// This CLITERAL is used to turn `(type){...}` into `type{...}` when using a C++ +// compiler. +#if defined(__cplusplus) +#define CLITERAL(type) type +#else +#define CLITERAL(type) (type) +#endif + +// We represent a slice as a pair of an (untyped) pointer, along with the length +// of the slice, i.e. the number of elements in the slice (this is NOT the +// number of bytes). This design choice has two important consequences. +// - if you need to use `ptr`, you MUST cast it to a proper type *before* +// performing pointer +// arithmetic on it (remember that C desugars pointer arithmetic based on the +// type of the address) +// - if you need to use `len` for a C style function (e.g. memcpy, memcmp), you +// need to multiply it +// by sizeof t, where t is the type of the elements. +// +// Empty slices have `len == 0` and `ptr` always needs to be valid pointer that +// is not NULL (otherwise the construction in EURYDICE_SLICE computes `NULL + +// start`). +typedef struct { + void *ptr; + size_t len; +} Eurydice_slice; + +// Helper macro to create a slice out of a pointer x, a start index in x +// (included), and an end index in x (excluded). The argument x must be suitably +// cast to something that can decay (see remark above about how pointer +// arithmetic works in C), meaning either pointer or array type. +#define EURYDICE_SLICE(x, start, end) \ + (CLITERAL(Eurydice_slice){.ptr = (void *)(x + start), .len = end - start}) +#define EURYDICE_SLICE_LEN(s, _) s.len +// This macro is a pain because in case the dereferenced element type is an +// array, you cannot simply write `t x` as it would yield `int[4] x` instead, +// which is NOT correct C syntax, so we add a dedicated phase in Eurydice that +// adds an extra argument to this macro at the last minute so that we have the +// correct type of *pointers* to elements. +#define Eurydice_slice_index(s, i, t, t_ptr_t, _ret_t) (((t_ptr_t)s.ptr)[i]) +#define Eurydice_slice_subslice(s, r, t, _, _ret_t) \ + EURYDICE_SLICE((t *)s.ptr, r.start, r.end) +#define Eurydice_slice_subslice_to(s, subslice_end_pos, t, _, _ret_t) \ + EURYDICE_SLICE((t *)s.ptr, 0, subslice_end_pos) +#define Eurydice_slice_subslice_from(s, subslice_start_pos, t, _, _ret_t) \ + EURYDICE_SLICE((t *)s.ptr, subslice_start_pos, s.len) +#define Eurydice_array_to_slice(end, x, t, _ret_t) \ + EURYDICE_SLICE(x, 0, \ + end) /* x is already at an array type, no need for cast */ +#define Eurydice_array_to_subslice(_arraylen, x, r, t, _, _ret_t) \ + EURYDICE_SLICE((t *)x, r.start, r.end) +#define Eurydice_array_to_subslice_to(_size, x, r, t, _range_t, _ret_t) \ + EURYDICE_SLICE((t *)x, 0, r) +#define Eurydice_array_to_subslice_from(size, x, r, t, _range_t, _ret_t) \ + EURYDICE_SLICE((t *)x, r, size) +#define core_slice___Slice_T___len(s, t, _ret_t) EURYDICE_SLICE_LEN(s, t) +#define core_slice___Slice_T___copy_from_slice(dst, src, t, _ret_t) \ + memcpy(dst.ptr, src.ptr, dst.len * sizeof(t)) +#define core_array___Array_T__N__23__as_slice(len_, ptr_, t, _ret_t) \ + ((Eurydice_slice){.ptr = ptr_, .len = len_}) + +#define core_array___core__clone__Clone_for__Array_T__N___20__clone( \ + len, src, dst, elem_type, _ret_t) \ + (memcpy(dst, src, len * sizeof(elem_type))) +#define core_array_TryFromSliceError uint8_t + +#define Eurydice_array_eq(sz, a1, a2, t, _, _ret_t) \ + (memcmp(a1, a2, sz * sizeof(t)) == 0) +#define core_array_equality___core__cmp__PartialEq__Array_U__N___for__Array_T__N____eq \ + Eurydice_array_eq + +#define core_slice___Slice_T___split_at(slice, mid, element_type, ret_t) \ + (CLITERAL(ret_t){ \ + .fst = EURYDICE_SLICE((element_type *)slice.ptr, 0, mid), \ + .snd = EURYDICE_SLICE((element_type *)slice.ptr, mid, slice.len)}) +#define core_slice___Slice_T___split_at_mut(slice, mid, element_type, ret_t) \ + (CLITERAL(ret_t){ \ + .fst = {.ptr = slice.ptr, .len = mid}, \ + .snd = {.ptr = (char *)slice.ptr + mid * sizeof(element_type), \ + .len = slice.len - mid}}) + +// Conversion of slice to an array, rewritten (by Eurydice) to name the +// destination array, since arrays are not values in C. +// N.B.: see note in karamel/lib/Inlining.ml if you change this. +#define Eurydice_slice_to_array2(dst, src, _, t_arr, _ret_t) \ + Eurydice_slice_to_array3(&(dst)->tag, (char *)&(dst)->val.case_Ok, src, \ + sizeof(t_arr)) + +static inline void Eurydice_slice_to_array3(uint8_t *dst_tag, char *dst_ok, + Eurydice_slice src, size_t sz) { + *dst_tag = 0; + memcpy(dst_ok, src.ptr, sz); +} + +// CORE STUFF (conversions, endianness, ...) + +static inline void core_num__u64_9__to_le_bytes(uint64_t v, uint8_t buf[8]) { + memcpy(buf, &v, sizeof(v)); +} +static inline uint64_t core_num__u64_9__from_le_bytes(uint8_t buf[8]) { + uint64_t v; + memcpy(&v, buf, sizeof(v)); + return v; +} + +static inline uint32_t core_num__u8_6__count_ones(uint8_t x0) { +#ifdef _MSC_VER + return __popcnt(x0); +#else + return __builtin_popcount(x0); +#endif +} + +// unsigned overflow wraparound semantics in C +static inline uint16_t core_num__u16_7__wrapping_add(uint16_t x, uint16_t y) { + return x + y; +} +static inline uint8_t core_num__u8_6__wrapping_sub(uint8_t x, uint8_t y) { + return x - y; +} + +// ITERATORS + +#define Eurydice_range_iter_next(iter_ptr, t, ret_t) \ + (((iter_ptr)->start == (iter_ptr)->end) \ + ? (CLITERAL(ret_t){.tag = core_option_None}) \ + : (CLITERAL(ret_t){.tag = core_option_Some, \ + .f0 = (iter_ptr)->start++})) + +#define core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next \ + Eurydice_range_iter_next + +// See note in karamel/lib/Inlining.ml if you change this +#define Eurydice_into_iter(x, t, _ret_t) (x) +#define core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter \ + Eurydice_into_iter + +#if defined(__cplusplus) +} +#endif diff --git a/third_party/libcrux/intrinsics/libcrux_intrinsics_avx2.h b/third_party/libcrux/intrinsics/libcrux_intrinsics_avx2.h new file mode 100644 index 0000000000..dd7f4d9c3c --- /dev/null +++ b/third_party/libcrux/intrinsics/libcrux_intrinsics_avx2.h @@ -0,0 +1,218 @@ +/* + This file was generated by KaRaMeL + KaRaMeL invocation: + /nix/store/c9m211bm84ncjmaxx27ki9dymd4qkwm2-ocaml4.14.1-eurydice-dirty/eurydice + --config ../c.yaml ../../libcrux_ml_kem.llbc F* version: KaRaMeL + version: + */ + +#ifndef __libcrux_intrinsics_avx2_H +#define __libcrux_intrinsics_avx2_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "../eurydice_glue.h" +#include "immintrin.h" + +typedef __m128i core_core_arch_x86___m128i; +typedef __m256i core_core_arch_x86___m256i; + +// Cast and Convert + +#define libcrux_intrinsics_avx2_mm256_castsi256_si128(a) \ + (_mm256_castsi256_si128(a)) + +#define libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(a) \ + (_mm256_cvtepi16_epi32(a)) + +#define libcrux_intrinsics_avx2_mm256_castsi128_si256(a) \ + (_mm256_castsi128_si256(a)) + +// Initialize, Load, Store + +#define libcrux_intrinsics_avx2_mm256_setzero_si256(void) \ + (_mm256_setzero_si256()) + +#define libcrux_intrinsics_avx2_mm256_set1_epi16(a) (_mm256_set1_epi16(a)) + +#define libcrux_intrinsics_avx2_mm256_set1_epi32(a) (_mm256_set1_epi32(a)) + +#define libcrux_intrinsics_avx2_mm256_set1_epi64x(a) (_mm256_set1_epi64x(a)) + +#define libcrux_intrinsics_avx2_mm_set1_epi16(a) (_mm_set1_epi16(a)) + +#define libcrux_intrinsics_avx2_mm256_set_epi16( \ + x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) \ + (_mm256_set_epi16(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, \ + x13, x14, x15)) + +#define libcrux_intrinsics_avx2_mm256_set_epi8( \ + x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16, \ + x17, x18, x19, x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x30, x31) \ + (_mm256_set_epi8(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, \ + x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, x25, \ + x26, x27, x28, x29, x30, x31)) + +#define libcrux_intrinsics_avx2_mm_set_epi8( \ + x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15) \ + (_mm_set_epi8(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, \ + x14, x15)) + +#define libcrux_intrinsics_avx2_mm256_set_epi32(x0, x1, x2, x3, x4, x5, x6, \ + x7) \ + (_mm256_set_epi32(x0, x1, x2, x3, x4, x5, x6, x7)) + +#define libcrux_intrinsics_avx2_mm256_loadu_si256_i16(a) \ + (_mm256_loadu_si256((const __m256i *)a.ptr)) + +#define libcrux_intrinsics_avx2_mm256_loadu_si256_u8(a) \ + (_mm256_loadu_si256((const __m256i *)a.ptr)) + +#define libcrux_intrinsics_avx2_mm_loadu_si128(a) \ + (_mm_loadu_si128((const __m128i *)a.ptr)) + +#define libcrux_intrinsics_avx2_mm_storeu_bytes_si128(a, b) \ + (_mm_storeu_si128((__m128i *)a.ptr, b)) + +#define libcrux_intrinsics_avx2_mm256_storeu_si256_i16(a, b) \ + (_mm256_storeu_si256((__m256i *)a.ptr, b)) + +#define libcrux_intrinsics_avx2_mm256_storeu_si256_u8(a, b) \ + (_mm256_storeu_si256((__m256i *)a.ptr, b)) + +#define libcrux_intrinsics_avx2_mm_storeu_si128(a, b) \ + (_mm_storeu_si128((__m128i *)a.ptr, b)) + +// Arithmetic: Add, Sub + +#define libcrux_intrinsics_avx2_mm256_add_epi16(a, b) (_mm256_add_epi16(a, b)) + +#define libcrux_intrinsics_avx2_mm256_add_epi32(a, b) (_mm256_add_epi32(a, b)) + +#define libcrux_intrinsics_avx2_mm_add_epi16(a, b) (_mm_add_epi16(a, b)) + +#define libcrux_intrinsics_avx2_mm256_sub_epi16(a, b) (_mm256_sub_epi16(a, b)) + +#define libcrux_intrinsics_avx2_mm_sub_epi16(a, b) (_mm_sub_epi16(a, b)) + +// Arithmetic: Mul low and high, Mul-Add combinations + +#define libcrux_intrinsics_avx2_mm256_mullo_epi16(a, b) \ + (_mm256_mullo_epi16(a, b)) + +#define libcrux_intrinsics_avx2_mm256_mulhi_epi16(a, b) \ + (_mm256_mulhi_epi16(a, b)) + +#define libcrux_intrinsics_avx2_mm256_mul_epu32(a, b) (_mm256_mul_epu32(a, b)) + +#define libcrux_intrinsics_avx2_mm256_mullo_epi32(a, b) \ + (_mm256_mullo_epi32(a, b)) + +#define libcrux_intrinsics_avx2_mm_mullo_epi16(a, b) (_mm_mullo_epi16(a, b)) + +#define libcrux_intrinsics_avx2_mm_mulhi_epi16(a, b) (_mm_mulhi_epi16(a, b)) + +#define libcrux_intrinsics_avx2_mm256_madd_epi16(a, b) (_mm256_madd_epi16(a, b)) + +// Comparison + +#define libcrux_intrinsics_avx2_mm256_cmpgt_epi16(a, b) \ + (_mm256_cmpgt_epi16(a, b)) + +// Bitwise operations + +#define libcrux_intrinsics_avx2_mm256_and_si256(a, b) (_mm256_and_si256(a, b)) + +#define libcrux_intrinsics_avx2_mm256_andnot_si256(a, b) \ + (_mm256_andnot_si256(a, b)) + +#define libcrux_intrinsics_avx2_mm256_xor_si256(a, b) (_mm256_xor_si256(a, b)) + +#define libcrux_intrinsics_avx2_mm_movemask_epi8(a) (_mm_movemask_epi8(a)) + +// Shift operations +#define libcrux_intrinsics_avx2_mm256_srai_epi16(a, b, _) \ + (_mm256_srai_epi16(b, a)) + +#define libcrux_intrinsics_avx2_mm256_srli_epi16(a, b, _) \ + (_mm256_srli_epi16(b, a)) + +#define libcrux_intrinsics_avx2_mm256_slli_epi16(a, b, _) \ + (_mm256_slli_epi16(b, a)) + +#define libcrux_intrinsics_avx2_mm256_slli_epi32(a, b, _) \ + (_mm256_slli_epi32(b, a)) + +#define libcrux_intrinsics_avx2_mm256_slli_epi64_(a, b) \ + (_mm256_slli_epi64(b, a)) + +#define libcrux_intrinsics_avx2_mm256_slli_epi64(a, b, c) \ + (libcrux_intrinsics_avx2_mm256_slli_epi64_(a, b)) + +#define libcrux_intrinsics_avx2_mm256_srai_epi32(a, b, _) \ + (_mm256_srai_epi32(b, a)) + +#define libcrux_intrinsics_avx2_mm256_srli_epi32(a, b, _) \ + (_mm256_srli_epi32(b, a)) + +#define libcrux_intrinsics_avx2_mm256_sllv_epi32(a, b) (_mm256_sllv_epi32(a, b)) + +#define libcrux_intrinsics_avx2_mm256_srli_epi64_(a, b) \ + (_mm256_srli_epi64(b, a)) + +#define libcrux_intrinsics_avx2_mm256_srli_epi64(a, b, c) \ + (libcrux_intrinsics_avx2_mm256_srli_epi64_(a, b)) + +// Shuffle and Vector Interleaving + +#define libcrux_intrinsics_avx2_mm256_unpacklo_epi32(a, b) \ + (_mm256_unpacklo_epi32(a, b)) + +#define libcrux_intrinsics_avx2_mm256_unpacklo_epi64(a, b) \ + (_mm256_unpacklo_epi64(a, b)) + +#define libcrux_intrinsics_avx2_mm256_unpackhi_epi32(a, b) \ + (_mm256_unpackhi_epi32(a, b)) + +#define libcrux_intrinsics_avx2_mm256_unpackhi_epi64(a, b) \ + (_mm256_unpackhi_epi64(a, b)) + +#define libcrux_intrinsics_avx2_mm256_packs_epi32(a, b) \ + (_mm256_packs_epi32(a, b)) + +#define libcrux_intrinsics_avx2_mm_packs_epi16(a, b) (_mm_packs_epi16(a, b)) + +#define libcrux_intrinsics_avx2_mm256_shuffle_epi32(a, b, _) \ + (_mm256_shuffle_epi32(b, a)) + +#define libcrux_intrinsics_avx2_mm256_extracti128_si256(a, b, _) \ + (_mm256_extracti128_si256(b, a)) + +#define libcrux_intrinsics_avx2_mm256_permute4x64_epi64(a, b, _) \ + (_mm256_permute4x64_epi64(b, a)) + +#define libcrux_intrinsics_avx2_mm256_permute2x128_si256(a, b, c, d) \ + (_mm256_permute2x128_si256(b, c, a)) + +#define libcrux_intrinsics_avx2_mm256_inserti128_si256(a, b, c, _) \ + (_mm256_inserti128_si256(b, c, a)) + +#define libcrux_intrinsics_avx2_mm256_blend_epi16(a, b, c, _) \ + (_mm256_blend_epi16(b, c, a)) + +#define libcrux_intrinsics_avx2_mm256_shuffle_epi8(a, b) \ + (_mm256_shuffle_epi8(a, b)) + +#define libcrux_intrinsics_avx2_mm256_permutevar8x32_epi32(a, b) \ + (_mm256_permutevar8x32_epi32(a, b)) + +#define libcrux_intrinsics_avx2_mm_shuffle_epi8(a, b) (_mm_shuffle_epi8(a, b)) + +#if defined(__cplusplus) +} +#endif + +#define __libcrux_intrinsics_avx2_H_DEFINED +#endif diff --git a/third_party/libcrux/karamel/target.h b/third_party/libcrux/karamel/target.h new file mode 100644 index 0000000000..402a54e03d --- /dev/null +++ b/third_party/libcrux/karamel/target.h @@ -0,0 +1,23 @@ +/* Copyright (c) INRIA and Microsoft Corporation. All rights reserved. + Licensed under the Apache 2.0 License. */ + +#ifndef __KRML_TARGET_H +#define __KRML_TARGET_H + +#ifndef KRML_HOST_PRINTF +#define KRML_HOST_PRINTF printf +#endif + +#if ((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + (defined(__cplusplus) && __cplusplus > 199711L)) && \ + (!defined(KRML_HOST_EPRINTF)) +#define KRML_HOST_EPRINTF(...) fprintf(stderr, __VA_ARGS__) +#elif !(defined KRML_HOST_EPRINTF) && defined(_MSC_VER) +#define KRML_HOST_EPRINTF(...) fprintf(stderr, __VA_ARGS__) +#endif + +#ifndef KRML_HOST_EXIT +#define KRML_HOST_EXIT exit +#endif + +#endif diff --git a/third_party/libcrux/libcrux_core.h b/third_party/libcrux/libcrux_core.h new file mode 100644 index 0000000000..f4d819d9f3 --- /dev/null +++ b/third_party/libcrux/libcrux_core.h @@ -0,0 +1,357 @@ +/* + This file was generated by KaRaMeL + KaRaMeL invocation: /home/franziskus/eurydice//eurydice --config ../cg.yaml + -funroll-loops 0 ../../libcrux_ml_kem.llbc ../../libcrux_sha3.llbc F* version: + KaRaMeL version: 42a43169 + */ + +#ifndef __libcrux_core_H +#define __libcrux_core_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "eurydice_glue.h" + +typedef struct core_ops_range_Range__size_t_s { + size_t start; + size_t end; +} core_ops_range_Range__size_t; + +static inline uint8_t Eurydice_bitand_pv_u8(uint8_t *x, uint8_t y); + +static inline uint8_t Eurydice_shr_pv_u8(uint8_t *x, int32_t y); + +#define core_option_None 0 +#define core_option_Some 1 + +typedef uint8_t core_option_Option__size_t_tags; + +typedef struct core_option_Option__size_t_s { + core_option_Option__size_t_tags tag; + size_t f0; +} core_option_Option__size_t; + +static inline uint16_t core_num__u16_7__wrapping_add(uint16_t x0, uint16_t x1); + +#define CORE_NUM__U32_8__BITS (32U) + +static inline uint64_t core_num__u64_9__from_le_bytes(uint8_t x0[8U]); + +static inline void core_num__u64_9__to_le_bytes(uint64_t x0, uint8_t x1[8U]); + +static inline uint32_t core_num__u8_6__count_ones(uint8_t x0); + +static inline uint8_t core_num__u8_6__wrapping_sub(uint8_t x0, uint8_t x1); + +#define LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE ((size_t)32U) + +#define LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_COEFFICIENT ((size_t)12U) + +#define LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT ((size_t)256U) + +#define LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_RING_ELEMENT \ + (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * (size_t)12U) + +#define LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT \ + (LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_RING_ELEMENT / (size_t)8U) + +#define LIBCRUX_ML_KEM_CONSTANTS_CPA_PKE_KEY_GENERATION_SEED_SIZE ((size_t)32U) + +#define LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE ((size_t)32U) + +typedef struct libcrux_ml_kem_utils_extraction_helper_Keypair768_s { + uint8_t fst[1152U]; + uint8_t snd[1184U]; +} libcrux_ml_kem_utils_extraction_helper_Keypair768; + +#define core_result_Ok 0 +#define core_result_Err 1 + +typedef uint8_t + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError_tags; + +typedef struct + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError_s { + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError_tags tag; + union { + uint8_t case_Ok[24U]; + core_array_TryFromSliceError case_Err; + } val; +} core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError; + +static inline void +core_result__core__result__Result_T__E___unwrap__uint8_t_24size_t__core_array_TryFromSliceError( + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError self, + uint8_t ret[24U]) { + if (self.tag == core_result_Ok) { + uint8_t f0[24U]; + memcpy(f0, self.val.case_Ok, (size_t)24U * sizeof(uint8_t)); + memcpy(ret, f0, (size_t)24U * sizeof(uint8_t)); + } else { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "unwrap not Ok"); + KRML_HOST_EXIT(255U); + } +} + +typedef struct + core_result_Result__uint8_t_20size_t__core_array_TryFromSliceError_s { + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError_tags tag; + union { + uint8_t case_Ok[20U]; + core_array_TryFromSliceError case_Err; + } val; +} core_result_Result__uint8_t_20size_t__core_array_TryFromSliceError; + +static inline void +core_result__core__result__Result_T__E___unwrap__uint8_t_20size_t__core_array_TryFromSliceError( + core_result_Result__uint8_t_20size_t__core_array_TryFromSliceError self, + uint8_t ret[20U]) { + if (self.tag == core_result_Ok) { + uint8_t f0[20U]; + memcpy(f0, self.val.case_Ok, (size_t)20U * sizeof(uint8_t)); + memcpy(ret, f0, (size_t)20U * sizeof(uint8_t)); + } else { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "unwrap not Ok"); + KRML_HOST_EXIT(255U); + } +} + +typedef struct + core_result_Result__uint8_t_10size_t__core_array_TryFromSliceError_s { + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError_tags tag; + union { + uint8_t case_Ok[10U]; + core_array_TryFromSliceError case_Err; + } val; +} core_result_Result__uint8_t_10size_t__core_array_TryFromSliceError; + +static inline void +core_result__core__result__Result_T__E___unwrap__uint8_t_10size_t__core_array_TryFromSliceError( + core_result_Result__uint8_t_10size_t__core_array_TryFromSliceError self, + uint8_t ret[10U]) { + if (self.tag == core_result_Ok) { + uint8_t f0[10U]; + memcpy(f0, self.val.case_Ok, (size_t)10U * sizeof(uint8_t)); + memcpy(ret, f0, (size_t)10U * sizeof(uint8_t)); + } else { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "unwrap not Ok"); + KRML_HOST_EXIT(255U); + } +} + +typedef struct + K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t__s { + Eurydice_slice fst[4U]; + Eurydice_slice snd[4U]; +} K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t_; + +typedef struct libcrux_ml_kem_types_MlKemPublicKey____1184size_t_s { + uint8_t value[1184U]; +} libcrux_ml_kem_types_MlKemPublicKey____1184size_t; + +typedef struct + core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t___s { + core_option_Option__size_t_tags tag; + libcrux_ml_kem_types_MlKemPublicKey____1184size_t f0; +} core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__; + +static inline libcrux_ml_kem_types_MlKemPublicKey____1184size_t +libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemPublicKey_SIZE___14__from___1184size_t( + uint8_t value[1184U]) { + uint8_t uu____0[1184U]; + memcpy(uu____0, value, (size_t)1184U * sizeof(uint8_t)); + libcrux_ml_kem_types_MlKemPublicKey____1184size_t lit; + memcpy(lit.value, uu____0, (size_t)1184U * sizeof(uint8_t)); + return lit; +} + +typedef struct libcrux_ml_kem_types_MlKemPrivateKey____2400size_t_s { + uint8_t value[2400U]; +} libcrux_ml_kem_types_MlKemPrivateKey____2400size_t; + +typedef struct libcrux_ml_kem_mlkem768_MlKem768KeyPair_s { + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t sk; + libcrux_ml_kem_types_MlKemPublicKey____1184size_t pk; +} libcrux_ml_kem_mlkem768_MlKem768KeyPair; + +static inline libcrux_ml_kem_mlkem768_MlKem768KeyPair +libcrux_ml_kem_types__libcrux_ml_kem__types__MlKemKeyPair_PRIVATE_KEY_SIZE__PUBLIC_KEY_SIZE___from___2400size_t_1184size_t( + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t sk, + libcrux_ml_kem_types_MlKemPublicKey____1184size_t pk) { + return ( + CLITERAL(libcrux_ml_kem_mlkem768_MlKem768KeyPair){.sk = sk, .pk = pk}); +} + +static inline libcrux_ml_kem_types_MlKemPrivateKey____2400size_t +libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemPrivateKey_SIZE___8__from___2400size_t( + uint8_t value[2400U]) { + uint8_t uu____0[2400U]; + memcpy(uu____0, value, (size_t)2400U * sizeof(uint8_t)); + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t lit; + memcpy(lit.value, uu____0, (size_t)2400U * sizeof(uint8_t)); + return lit; +} + +typedef struct libcrux_ml_kem_mlkem768_MlKem768Ciphertext_s { + uint8_t value[1088U]; +} libcrux_ml_kem_mlkem768_MlKem768Ciphertext; + +typedef struct + K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t__s { + libcrux_ml_kem_mlkem768_MlKem768Ciphertext fst; + uint8_t snd[32U]; +} K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_; + +static inline libcrux_ml_kem_mlkem768_MlKem768Ciphertext +libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemCiphertext_SIZE___2__from___1088size_t( + uint8_t value[1088U]) { + uint8_t uu____0[1088U]; + memcpy(uu____0, value, (size_t)1088U * sizeof(uint8_t)); + libcrux_ml_kem_mlkem768_MlKem768Ciphertext lit; + memcpy(lit.value, uu____0, (size_t)1088U * sizeof(uint8_t)); + return lit; +} + +static inline uint8_t * +libcrux_ml_kem_types__libcrux_ml_kem__types__MlKemPublicKey_SIZE__18__as_slice___1184size_t( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *self) { + return self->value; +} + +static inline void libcrux_ml_kem_utils_into_padded_array___33size_t( + Eurydice_slice slice, uint8_t ret[33U]) { + uint8_t out[33U] = {0U}; + uint8_t *uu____0 = out; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)33U, uu____0, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, + .end = core_slice___Slice_T___len(slice, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + slice, uint8_t, void *); + memcpy(ret, out, (size_t)33U * sizeof(uint8_t)); +} + +static inline void libcrux_ml_kem_utils_into_padded_array___34size_t( + Eurydice_slice slice, uint8_t ret[34U]) { + uint8_t out[34U] = {0U}; + uint8_t *uu____0 = out; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)34U, uu____0, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, + .end = core_slice___Slice_T___len(slice, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + slice, uint8_t, void *); + memcpy(ret, out, (size_t)34U * sizeof(uint8_t)); +} + +static inline Eurydice_slice +libcrux_ml_kem_types___core__convert__AsRef__Slice_u8___for_libcrux_ml_kem__types__MlKemCiphertext_SIZE___1__as_ref___1088size_t( + libcrux_ml_kem_mlkem768_MlKem768Ciphertext *self) { + return Eurydice_array_to_slice((size_t)1088U, self->value, uint8_t, + Eurydice_slice); +} + +static inline void libcrux_ml_kem_utils_into_padded_array___1120size_t( + Eurydice_slice slice, uint8_t ret[1120U]) { + uint8_t out[1120U] = {0U}; + uint8_t *uu____0 = out; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)1120U, uu____0, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, + .end = core_slice___Slice_T___len(slice, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + slice, uint8_t, void *); + memcpy(ret, out, (size_t)1120U * sizeof(uint8_t)); +} + +static inline void libcrux_ml_kem_utils_into_padded_array___64size_t( + Eurydice_slice slice, uint8_t ret[64U]) { + uint8_t out[64U] = {0U}; + uint8_t *uu____0 = out; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)64U, uu____0, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, + .end = core_slice___Slice_T___len(slice, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + slice, uint8_t, void *); + memcpy(ret, out, (size_t)64U * sizeof(uint8_t)); +} + +typedef struct + core_result_Result__int16_t_16size_t__core_array_TryFromSliceError_s { + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError_tags tag; + union { + int16_t case_Ok[16U]; + core_array_TryFromSliceError case_Err; + } val; +} core_result_Result__int16_t_16size_t__core_array_TryFromSliceError; + +static inline void +core_result__core__result__Result_T__E___unwrap__int16_t_16size_t__core_array_TryFromSliceError( + core_result_Result__int16_t_16size_t__core_array_TryFromSliceError self, + int16_t ret[16U]) { + if (self.tag == core_result_Ok) { + int16_t f0[16U]; + memcpy(f0, self.val.case_Ok, (size_t)16U * sizeof(int16_t)); + memcpy(ret, f0, (size_t)16U * sizeof(int16_t)); + } else { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "unwrap not Ok"); + KRML_HOST_EXIT(255U); + } +} + +typedef struct + core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError_s { + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError_tags tag; + union { + uint8_t case_Ok[8U]; + core_array_TryFromSliceError case_Err; + } val; +} core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError; + +static inline void +core_result__core__result__Result_T__E___unwrap__uint8_t_8size_t__core_array_TryFromSliceError( + core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError self, + uint8_t ret[8U]) { + if (self.tag == core_result_Ok) { + uint8_t f0[8U]; + memcpy(f0, self.val.case_Ok, (size_t)8U * sizeof(uint8_t)); + memcpy(ret, f0, (size_t)8U * sizeof(uint8_t)); + } else { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "unwrap not Ok"); + KRML_HOST_EXIT(255U); + } +} + +typedef struct K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t_s { + Eurydice_slice fst; + Eurydice_slice snd; +} K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t; + +typedef struct + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t__s { + Eurydice_slice fst[1U]; + Eurydice_slice snd[1U]; +} K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_; + +#if defined(__cplusplus) +} +#endif + +#define __libcrux_core_H_DEFINED +#endif diff --git a/third_party/libcrux/libcrux_ct_ops.h b/third_party/libcrux/libcrux_ct_ops.h new file mode 100644 index 0000000000..47354b2c49 --- /dev/null +++ b/third_party/libcrux/libcrux_ct_ops.h @@ -0,0 +1,91 @@ +/* + This file was generated by KaRaMeL + KaRaMeL invocation: /home/franziskus/eurydice//eurydice --config ../cg.yaml + -funroll-loops 0 ../../libcrux_ml_kem.llbc ../../libcrux_sha3.llbc F* version: + KaRaMeL version: 42a43169 + */ + +#ifndef __libcrux_ct_ops_H +#define __libcrux_ct_ops_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "eurydice_glue.h" +#include "libcrux_core.h" + +__attribute__((noinline, unused)) static uint8_t +libcrux_ml_kem_constant_time_ops_inz(uint8_t value) { + uint16_t value0 = (uint16_t)value; + uint16_t uu____0 = value0; + uint16_t result = (((uint32_t)uu____0 | + (uint32_t)core_num__u16_7__wrapping_add(~value0, 1U)) & + 0xFFFFU) >> + 8U & + 1U; + return (uint8_t)result; +} + +__attribute__((noinline, unused)) static uint8_t +libcrux_ml_kem_constant_time_ops_is_non_zero(uint8_t value) { + return libcrux_ml_kem_constant_time_ops_inz(value); +} + +__attribute__((noinline, unused)) static uint8_t +libcrux_ml_kem_constant_time_ops_compare(Eurydice_slice lhs, + Eurydice_slice rhs) { + uint8_t r = 0U; + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(lhs, uint8_t, size_t); i++) { + size_t i0 = i; + uint8_t uu____0 = + Eurydice_slice_index(lhs, i0, uint8_t, uint8_t *, uint8_t); + r = (uint32_t)r | + ((uint32_t)uu____0 ^ + (uint32_t)Eurydice_slice_index(rhs, i0, uint8_t, uint8_t *, uint8_t)); + } + return libcrux_ml_kem_constant_time_ops_is_non_zero(r); +} + +__attribute__((noinline, unused)) static uint8_t +libcrux_ml_kem_constant_time_ops_compare_ciphertexts_in_constant_time( + Eurydice_slice lhs, Eurydice_slice rhs) { + return libcrux_ml_kem_constant_time_ops_compare(lhs, rhs); +} + +__attribute__((noinline, unused)) static void +libcrux_ml_kem_constant_time_ops_select_ct(Eurydice_slice lhs, + Eurydice_slice rhs, uint8_t selector, + uint8_t ret[32U]) { + uint8_t mask = core_num__u8_6__wrapping_sub( + libcrux_ml_kem_constant_time_ops_is_non_zero(selector), 1U); + uint8_t out[32U] = {0U}; + for (size_t i = (size_t)0U; i < LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE; + i++) { + size_t i0 = i; + uint8_t uu____0 = + (uint32_t)Eurydice_slice_index(lhs, i0, uint8_t, uint8_t *, uint8_t) & + (uint32_t)mask; + uint8_t *uu____1 = + &Eurydice_slice_index(rhs, i0, uint8_t, uint8_t *, uint8_t); + out[i0] = (uint32_t)uu____0 | ((uint32_t)uu____1[0U] & (uint32_t)~mask); + } + memcpy(ret, out, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((noinline, unused)) static void +libcrux_ml_kem_constant_time_ops_select_shared_secret_in_constant_time( + Eurydice_slice lhs, Eurydice_slice rhs, uint8_t selector, + uint8_t ret[32U]) { + uint8_t ret0[32U]; + libcrux_ml_kem_constant_time_ops_select_ct(lhs, rhs, selector, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +#if defined(__cplusplus) +} +#endif + +#define __libcrux_ct_ops_H_DEFINED +#endif diff --git a/third_party/libcrux/libcrux_mlkem768_avx2.h b/third_party/libcrux/libcrux_mlkem768_avx2.h new file mode 100644 index 0000000000..f6ce3ec088 --- /dev/null +++ b/third_party/libcrux/libcrux_mlkem768_avx2.h @@ -0,0 +1,4773 @@ +/* + This file was generated by KaRaMeL + KaRaMeL invocation: /home/franziskus/eurydice//eurydice --config ../cg.yaml + -funroll-loops 0 ../../libcrux_ml_kem.llbc ../../libcrux_sha3.llbc F* version: + KaRaMeL version: 42a43169 + */ + +#ifndef __libcrux_mlkem768_avx2_H +#define __libcrux_mlkem768_avx2_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "eurydice_glue.h" +#include "libcrux_core.h" +#include "libcrux_ct_ops.h" +#include "libcrux_mlkem768_portable.h" +#include "libcrux_sha3_avx2.h" +#include "libcrux_sha3_portable.h" + +typedef core_core_arch_x86___m256i libcrux_ml_kem_vector_avx2_SIMD256Vector; + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_zero(void) { + return libcrux_intrinsics_avx2_mm256_setzero_si256(); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO( + void) { + return libcrux_ml_kem_vector_avx2_zero(); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_from_i16_array(Eurydice_slice array) { + return libcrux_intrinsics_avx2_mm256_loadu_si256_i16(array); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___from_i16_array( + Eurydice_slice array) { + return libcrux_ml_kem_vector_avx2_from_i16_array(array); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_add(core_core_arch_x86___m256i lhs, + core_core_arch_x86___m256i rhs) { + return libcrux_intrinsics_avx2_mm256_add_epi16(lhs, rhs); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + core_core_arch_x86___m256i lhs, core_core_arch_x86___m256i *rhs) { + return libcrux_ml_kem_vector_avx2_arithmetic_add(lhs, rhs[0U]); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_sub(core_core_arch_x86___m256i lhs, + core_core_arch_x86___m256i rhs) { + return libcrux_intrinsics_avx2_mm256_sub_epi16(lhs, rhs); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___sub( + core_core_arch_x86___m256i lhs, core_core_arch_x86___m256i *rhs) { + return libcrux_ml_kem_vector_avx2_arithmetic_sub(lhs, rhs[0U]); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_multiply_by_constant( + core_core_arch_x86___m256i vector, int16_t constant) { + core_core_arch_x86___m256i uu____0 = vector; + return libcrux_intrinsics_avx2_mm256_mullo_epi16( + uu____0, libcrux_intrinsics_avx2_mm256_set1_epi16(constant)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___multiply_by_constant( + core_core_arch_x86___m256i v, int16_t c) { + return libcrux_ml_kem_vector_avx2_arithmetic_multiply_by_constant(v, c); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_bitwise_and_with_constant( + core_core_arch_x86___m256i vector, int16_t constant) { + core_core_arch_x86___m256i uu____0 = vector; + return libcrux_intrinsics_avx2_mm256_and_si256( + uu____0, libcrux_intrinsics_avx2_mm256_set1_epi16(constant)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___bitwise_and_with_constant( + core_core_arch_x86___m256i vector, int16_t constant) { + return libcrux_ml_kem_vector_avx2_arithmetic_bitwise_and_with_constant( + vector, constant); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_cond_subtract_3329( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus = + libcrux_intrinsics_avx2_mm256_set1_epi16( + LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS); + core_core_arch_x86___m256i v_minus_field_modulus = + libcrux_intrinsics_avx2_mm256_sub_epi16(vector, field_modulus); + core_core_arch_x86___m256i sign_mask = + libcrux_intrinsics_avx2_mm256_srai_epi16( + (int32_t)15, v_minus_field_modulus, core_core_arch_x86___m256i); + core_core_arch_x86___m256i conditional_add_field_modulus = + libcrux_intrinsics_avx2_mm256_and_si256(sign_mask, field_modulus); + return libcrux_intrinsics_avx2_mm256_add_epi16(v_minus_field_modulus, + conditional_add_field_modulus); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___cond_subtract_3329( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_arithmetic_cond_subtract_3329(vector); +} + +#define LIBCRUX_ML_KEM_VECTOR_AVX2_ARITHMETIC_BARRETT_MULTIPLIER \ + ((int16_t)20159) + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_barrett_reduce( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i uu____0 = vector; + core_core_arch_x86___m256i t = libcrux_intrinsics_avx2_mm256_mulhi_epi16( + uu____0, libcrux_intrinsics_avx2_mm256_set1_epi16( + LIBCRUX_ML_KEM_VECTOR_AVX2_ARITHMETIC_BARRETT_MULTIPLIER)); + core_core_arch_x86___m256i uu____1 = t; + core_core_arch_x86___m256i t0 = libcrux_intrinsics_avx2_mm256_add_epi16( + uu____1, libcrux_intrinsics_avx2_mm256_set1_epi16((int16_t)512)); + core_core_arch_x86___m256i quotient = + libcrux_intrinsics_avx2_mm256_srai_epi16((int32_t)10, t0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____2 = quotient; + core_core_arch_x86___m256i quotient_times_field_modulus = + libcrux_intrinsics_avx2_mm256_mullo_epi16( + uu____2, libcrux_intrinsics_avx2_mm256_set1_epi16( + LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS)); + return libcrux_intrinsics_avx2_mm256_sub_epi16(vector, + quotient_times_field_modulus); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___barrett_reduce( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_arithmetic_barrett_reduce(vector); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_by_constant( + core_core_arch_x86___m256i vector, int16_t constant) { + core_core_arch_x86___m256i constant0 = + libcrux_intrinsics_avx2_mm256_set1_epi16(constant); + core_core_arch_x86___m256i value_low = + libcrux_intrinsics_avx2_mm256_mullo_epi16(vector, constant0); + core_core_arch_x86___m256i uu____0 = value_low; + core_core_arch_x86___m256i k = libcrux_intrinsics_avx2_mm256_mullo_epi16( + uu____0, + libcrux_intrinsics_avx2_mm256_set1_epi16( + (int16_t) + LIBCRUX_ML_KEM_VECTOR_TRAITS_INVERSE_OF_MODULUS_MOD_MONTGOMERY_R)); + core_core_arch_x86___m256i uu____1 = k; + core_core_arch_x86___m256i k_times_modulus = + libcrux_intrinsics_avx2_mm256_mulhi_epi16( + uu____1, libcrux_intrinsics_avx2_mm256_set1_epi16( + LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS)); + core_core_arch_x86___m256i value_high = + libcrux_intrinsics_avx2_mm256_mulhi_epi16(vector, constant0); + return libcrux_intrinsics_avx2_mm256_sub_epi16(value_high, k_times_modulus); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___montgomery_multiply_by_constant( + core_core_arch_x86___m256i vector, int16_t constant) { + return libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_by_constant( + vector, constant); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_compress_message_coefficient( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus_halved = + libcrux_intrinsics_avx2_mm256_set1_epi16( + (LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS - (int16_t)1) / + (int16_t)2); + core_core_arch_x86___m256i field_modulus_quartered = + libcrux_intrinsics_avx2_mm256_set1_epi16( + (LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS - (int16_t)1) / + (int16_t)4); + core_core_arch_x86___m256i shifted = + libcrux_intrinsics_avx2_mm256_sub_epi16(field_modulus_halved, vector); + core_core_arch_x86___m256i mask = libcrux_intrinsics_avx2_mm256_srai_epi16( + (int32_t)15, shifted, core_core_arch_x86___m256i); + core_core_arch_x86___m256i shifted_to_positive = + libcrux_intrinsics_avx2_mm256_xor_si256(mask, shifted); + core_core_arch_x86___m256i shifted_to_positive_in_range = + libcrux_intrinsics_avx2_mm256_sub_epi16(shifted_to_positive, + field_modulus_quartered); + return libcrux_intrinsics_avx2_mm256_srli_epi16( + (int32_t)15, shifted_to_positive_in_range, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress_1( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_compress_message_coefficient( + vector); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32( + core_core_arch_x86___m256i lhs, core_core_arch_x86___m256i rhs) { + core_core_arch_x86___m256i prod02 = + libcrux_intrinsics_avx2_mm256_mul_epu32(lhs, rhs); + core_core_arch_x86___m256i uu____0 = + libcrux_intrinsics_avx2_mm256_shuffle_epi32((int32_t)245, lhs, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i prod13 = libcrux_intrinsics_avx2_mm256_mul_epu32( + uu____0, libcrux_intrinsics_avx2_mm256_shuffle_epi32( + (int32_t)245, rhs, core_core_arch_x86___m256i)); + core_core_arch_x86___m256i uu____1 = + libcrux_intrinsics_avx2_mm256_unpacklo_epi32(prod02, prod13); + return libcrux_intrinsics_avx2_mm256_unpackhi_epi64( + uu____1, libcrux_intrinsics_avx2_mm256_unpackhi_epi32(prod02, prod13)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_by_constants( + core_core_arch_x86___m256i v, core_core_arch_x86___m256i c) { + core_core_arch_x86___m256i value_low = + libcrux_intrinsics_avx2_mm256_mullo_epi16(v, c); + core_core_arch_x86___m256i uu____0 = value_low; + core_core_arch_x86___m256i k = libcrux_intrinsics_avx2_mm256_mullo_epi16( + uu____0, + libcrux_intrinsics_avx2_mm256_set1_epi16( + (int16_t) + LIBCRUX_ML_KEM_VECTOR_TRAITS_INVERSE_OF_MODULUS_MOD_MONTGOMERY_R)); + core_core_arch_x86___m256i uu____1 = k; + core_core_arch_x86___m256i k_times_modulus = + libcrux_intrinsics_avx2_mm256_mulhi_epi16( + uu____1, libcrux_intrinsics_avx2_mm256_set1_epi16( + LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS)); + core_core_arch_x86___m256i value_high = + libcrux_intrinsics_avx2_mm256_mulhi_epi16(v, c); + return libcrux_intrinsics_avx2_mm256_sub_epi16(value_high, k_times_modulus); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_ntt_ntt_layer_1_step( + core_core_arch_x86___m256i vector, int16_t zeta0, int16_t zeta1, + int16_t zeta2, int16_t zeta3) { + core_core_arch_x86___m256i zetas = libcrux_intrinsics_avx2_mm256_set_epi16( + -zeta3, -zeta3, zeta3, zeta3, -zeta2, -zeta2, zeta2, zeta2, -zeta1, + -zeta1, zeta1, zeta1, -zeta0, -zeta0, zeta0, zeta0); + core_core_arch_x86___m256i rhs = libcrux_intrinsics_avx2_mm256_shuffle_epi32( + (int32_t)245, vector, core_core_arch_x86___m256i); + core_core_arch_x86___m256i rhs0 = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_by_constants( + rhs, zetas); + core_core_arch_x86___m256i lhs = libcrux_intrinsics_avx2_mm256_shuffle_epi32( + (int32_t)160, vector, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_add_epi16(lhs, rhs0); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ntt_layer_1_step( + core_core_arch_x86___m256i vector, int16_t zeta0, int16_t zeta1, + int16_t zeta2, int16_t zeta3) { + return libcrux_ml_kem_vector_avx2_ntt_ntt_layer_1_step(vector, zeta0, zeta1, + zeta2, zeta3); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_ntt_ntt_layer_2_step( + core_core_arch_x86___m256i vector, int16_t zeta0, int16_t zeta1) { + core_core_arch_x86___m256i zetas = libcrux_intrinsics_avx2_mm256_set_epi16( + -zeta1, -zeta1, -zeta1, -zeta1, zeta1, zeta1, zeta1, zeta1, -zeta0, + -zeta0, -zeta0, -zeta0, zeta0, zeta0, zeta0, zeta0); + core_core_arch_x86___m256i rhs = libcrux_intrinsics_avx2_mm256_shuffle_epi32( + (int32_t)238, vector, core_core_arch_x86___m256i); + core_core_arch_x86___m256i rhs0 = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_by_constants( + rhs, zetas); + core_core_arch_x86___m256i lhs = libcrux_intrinsics_avx2_mm256_shuffle_epi32( + (int32_t)68, vector, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_add_epi16(lhs, rhs0); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ntt_layer_2_step( + core_core_arch_x86___m256i vector, int16_t zeta0, int16_t zeta1) { + return libcrux_ml_kem_vector_avx2_ntt_ntt_layer_2_step(vector, zeta0, zeta1); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m128i +libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_m128i_by_constants( + core_core_arch_x86___m128i v, core_core_arch_x86___m128i c) { + core_core_arch_x86___m128i value_low = + libcrux_intrinsics_avx2_mm_mullo_epi16(v, c); + core_core_arch_x86___m128i uu____0 = value_low; + core_core_arch_x86___m128i k = libcrux_intrinsics_avx2_mm_mullo_epi16( + uu____0, + libcrux_intrinsics_avx2_mm_set1_epi16( + (int16_t) + LIBCRUX_ML_KEM_VECTOR_TRAITS_INVERSE_OF_MODULUS_MOD_MONTGOMERY_R)); + core_core_arch_x86___m128i uu____1 = k; + core_core_arch_x86___m128i k_times_modulus = + libcrux_intrinsics_avx2_mm_mulhi_epi16( + uu____1, libcrux_intrinsics_avx2_mm_set1_epi16( + LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS)); + core_core_arch_x86___m128i value_high = + libcrux_intrinsics_avx2_mm_mulhi_epi16(v, c); + return libcrux_intrinsics_avx2_mm_sub_epi16(value_high, k_times_modulus); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_ntt_ntt_layer_3_step( + core_core_arch_x86___m256i vector, int16_t zeta) { + core_core_arch_x86___m128i rhs = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m128i uu____0 = rhs; + core_core_arch_x86___m128i rhs0 = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_m128i_by_constants( + uu____0, libcrux_intrinsics_avx2_mm_set1_epi16(zeta)); + core_core_arch_x86___m128i lhs = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m128i lower_coefficients = + libcrux_intrinsics_avx2_mm_add_epi16(lhs, rhs0); + core_core_arch_x86___m128i upper_coefficients = + libcrux_intrinsics_avx2_mm_sub_epi16(lhs, rhs0); + core_core_arch_x86___m256i combined = + libcrux_intrinsics_avx2_mm256_castsi128_si256(lower_coefficients); + core_core_arch_x86___m256i combined0 = + libcrux_intrinsics_avx2_mm256_inserti128_si256( + (int32_t)1, combined, upper_coefficients, core_core_arch_x86___m256i); + return combined0; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ntt_layer_3_step( + core_core_arch_x86___m256i vector, int16_t zeta) { + return libcrux_ml_kem_vector_avx2_ntt_ntt_layer_3_step(vector, zeta); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_ntt_inv_ntt_layer_1_step( + core_core_arch_x86___m256i vector, int16_t zeta0, int16_t zeta1, + int16_t zeta2, int16_t zeta3) { + core_core_arch_x86___m256i lhs = libcrux_intrinsics_avx2_mm256_shuffle_epi32( + (int32_t)245, vector, core_core_arch_x86___m256i); + core_core_arch_x86___m256i rhs = libcrux_intrinsics_avx2_mm256_shuffle_epi32( + (int32_t)160, vector, core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____0 = rhs; + core_core_arch_x86___m256i rhs0 = libcrux_intrinsics_avx2_mm256_mullo_epi16( + uu____0, libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)-1, (int16_t)-1, (int16_t)1, (int16_t)1, + (int16_t)-1, (int16_t)-1, (int16_t)1, (int16_t)1, + (int16_t)-1, (int16_t)-1, (int16_t)1, (int16_t)1, + (int16_t)-1, (int16_t)-1, (int16_t)1, (int16_t)1)); + core_core_arch_x86___m256i sum0 = + libcrux_intrinsics_avx2_mm256_add_epi16(lhs, rhs0); + core_core_arch_x86___m256i uu____1 = sum0; + core_core_arch_x86___m256i sum_times_zetas = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_by_constants( + uu____1, libcrux_intrinsics_avx2_mm256_set_epi16( + zeta3, zeta3, (int16_t)0, (int16_t)0, zeta2, zeta2, + (int16_t)0, (int16_t)0, zeta1, zeta1, (int16_t)0, + (int16_t)0, zeta0, zeta0, (int16_t)0, (int16_t)0)); + core_core_arch_x86___m256i sum = + libcrux_ml_kem_vector_avx2_arithmetic_barrett_reduce(sum0); + return libcrux_intrinsics_avx2_mm256_blend_epi16( + (int32_t)204, sum, sum_times_zetas, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___inv_ntt_layer_1_step( + core_core_arch_x86___m256i vector, int16_t zeta0, int16_t zeta1, + int16_t zeta2, int16_t zeta3) { + return libcrux_ml_kem_vector_avx2_ntt_inv_ntt_layer_1_step( + vector, zeta0, zeta1, zeta2, zeta3); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_ntt_inv_ntt_layer_2_step( + core_core_arch_x86___m256i vector, int16_t zeta0, int16_t zeta1) { + core_core_arch_x86___m256i lhs = + libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)245, vector, core_core_arch_x86___m256i); + core_core_arch_x86___m256i rhs = + libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)160, vector, core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____0 = rhs; + core_core_arch_x86___m256i rhs0 = libcrux_intrinsics_avx2_mm256_mullo_epi16( + uu____0, libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)-1, (int16_t)-1, (int16_t)-1, (int16_t)-1, + (int16_t)1, (int16_t)1, (int16_t)1, (int16_t)1, (int16_t)-1, + (int16_t)-1, (int16_t)-1, (int16_t)-1, (int16_t)1, + (int16_t)1, (int16_t)1, (int16_t)1)); + core_core_arch_x86___m256i sum = + libcrux_intrinsics_avx2_mm256_add_epi16(lhs, rhs0); + core_core_arch_x86___m256i uu____1 = sum; + core_core_arch_x86___m256i sum_times_zetas = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_by_constants( + uu____1, libcrux_intrinsics_avx2_mm256_set_epi16( + zeta1, zeta1, zeta1, zeta1, (int16_t)0, (int16_t)0, + (int16_t)0, (int16_t)0, zeta0, zeta0, zeta0, zeta0, + (int16_t)0, (int16_t)0, (int16_t)0, (int16_t)0)); + return libcrux_intrinsics_avx2_mm256_blend_epi16( + (int32_t)240, sum, sum_times_zetas, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___inv_ntt_layer_2_step( + core_core_arch_x86___m256i vector, int16_t zeta0, int16_t zeta1) { + return libcrux_ml_kem_vector_avx2_ntt_inv_ntt_layer_2_step(vector, zeta0, + zeta1); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_ntt_inv_ntt_layer_3_step( + core_core_arch_x86___m256i vector, int16_t zeta) { + core_core_arch_x86___m128i lhs = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m128i rhs = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m128i lower_coefficients = + libcrux_intrinsics_avx2_mm_add_epi16(lhs, rhs); + core_core_arch_x86___m128i upper_coefficients = + libcrux_intrinsics_avx2_mm_sub_epi16(lhs, rhs); + core_core_arch_x86___m128i uu____0 = upper_coefficients; + core_core_arch_x86___m128i upper_coefficients0 = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_multiply_m128i_by_constants( + uu____0, libcrux_intrinsics_avx2_mm_set1_epi16(zeta)); + core_core_arch_x86___m256i combined = + libcrux_intrinsics_avx2_mm256_castsi128_si256(lower_coefficients); + core_core_arch_x86___m256i combined0 = + libcrux_intrinsics_avx2_mm256_inserti128_si256( + (int32_t)1, combined, upper_coefficients0, + core_core_arch_x86___m256i); + return combined0; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___inv_ntt_layer_3_step( + core_core_arch_x86___m256i vector, int16_t zeta) { + return libcrux_ml_kem_vector_avx2_ntt_inv_ntt_layer_3_step(vector, zeta); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_montgomery_reduce_i32s( + core_core_arch_x86___m256i v) { + core_core_arch_x86___m256i uu____0 = v; + core_core_arch_x86___m256i k = libcrux_intrinsics_avx2_mm256_mullo_epi16( + uu____0, + libcrux_intrinsics_avx2_mm256_set1_epi32( + (int32_t) + LIBCRUX_ML_KEM_VECTOR_TRAITS_INVERSE_OF_MODULUS_MOD_MONTGOMERY_R)); + core_core_arch_x86___m256i uu____1 = k; + core_core_arch_x86___m256i k_times_modulus = + libcrux_intrinsics_avx2_mm256_mulhi_epi16( + uu____1, libcrux_intrinsics_avx2_mm256_set1_epi32( + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS)); + core_core_arch_x86___m256i value_high = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)16, v, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i result = + libcrux_intrinsics_avx2_mm256_sub_epi16(value_high, k_times_modulus); + core_core_arch_x86___m256i result0 = libcrux_intrinsics_avx2_mm256_slli_epi32( + (int32_t)16, result, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_srai_epi32((int32_t)16, result0, + core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_ntt_ntt_multiply(core_core_arch_x86___m256i lhs, + core_core_arch_x86___m256i rhs, + int16_t zeta0, int16_t zeta1, + int16_t zeta2, int16_t zeta3) { + core_core_arch_x86___m256i shuffle_with = + libcrux_intrinsics_avx2_mm256_set_epi8( + (int8_t)15, (int8_t)14, (int8_t)11, (int8_t)10, (int8_t)7, (int8_t)6, + (int8_t)3, (int8_t)2, (int8_t)13, (int8_t)12, (int8_t)9, (int8_t)8, + (int8_t)5, (int8_t)4, (int8_t)1, (int8_t)0, (int8_t)15, (int8_t)14, + (int8_t)11, (int8_t)10, (int8_t)7, (int8_t)6, (int8_t)3, (int8_t)2, + (int8_t)13, (int8_t)12, (int8_t)9, (int8_t)8, (int8_t)5, (int8_t)4, + (int8_t)1, (int8_t)0); + core_core_arch_x86___m256i lhs_shuffled = + libcrux_intrinsics_avx2_mm256_shuffle_epi8(lhs, shuffle_with); + core_core_arch_x86___m256i lhs_shuffled0 = + libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, lhs_shuffled, core_core_arch_x86___m256i); + core_core_arch_x86___m128i lhs_evens = + libcrux_intrinsics_avx2_mm256_castsi256_si128(lhs_shuffled0); + core_core_arch_x86___m256i lhs_evens0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(lhs_evens); + core_core_arch_x86___m128i lhs_odds = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, lhs_shuffled0, core_core_arch_x86___m128i); + core_core_arch_x86___m256i lhs_odds0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(lhs_odds); + core_core_arch_x86___m256i rhs_shuffled = + libcrux_intrinsics_avx2_mm256_shuffle_epi8(rhs, shuffle_with); + core_core_arch_x86___m256i rhs_shuffled0 = + libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, rhs_shuffled, core_core_arch_x86___m256i); + core_core_arch_x86___m128i rhs_evens = + libcrux_intrinsics_avx2_mm256_castsi256_si128(rhs_shuffled0); + core_core_arch_x86___m256i rhs_evens0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(rhs_evens); + core_core_arch_x86___m128i rhs_odds = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, rhs_shuffled0, core_core_arch_x86___m128i); + core_core_arch_x86___m256i rhs_odds0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(rhs_odds); + core_core_arch_x86___m256i left = + libcrux_intrinsics_avx2_mm256_mullo_epi32(lhs_evens0, rhs_evens0); + core_core_arch_x86___m256i right = + libcrux_intrinsics_avx2_mm256_mullo_epi32(lhs_odds0, rhs_odds0); + core_core_arch_x86___m256i right0 = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_reduce_i32s(right); + core_core_arch_x86___m256i uu____0 = right0; + core_core_arch_x86___m256i right1 = libcrux_intrinsics_avx2_mm256_mullo_epi32( + uu____0, + libcrux_intrinsics_avx2_mm256_set_epi32( + -(int32_t)zeta3, (int32_t)zeta3, -(int32_t)zeta2, (int32_t)zeta2, + -(int32_t)zeta1, (int32_t)zeta1, -(int32_t)zeta0, (int32_t)zeta0)); + core_core_arch_x86___m256i products_left = + libcrux_intrinsics_avx2_mm256_add_epi32(left, right1); + core_core_arch_x86___m256i products_left0 = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_reduce_i32s( + products_left); + core_core_arch_x86___m256i uu____1 = rhs; + core_core_arch_x86___m256i rhs_adjacent_swapped = + libcrux_intrinsics_avx2_mm256_shuffle_epi8( + uu____1, libcrux_intrinsics_avx2_mm256_set_epi8( + (int8_t)13, (int8_t)12, (int8_t)15, (int8_t)14, + (int8_t)9, (int8_t)8, (int8_t)11, (int8_t)10, (int8_t)5, + (int8_t)4, (int8_t)7, (int8_t)6, (int8_t)1, (int8_t)0, + (int8_t)3, (int8_t)2, (int8_t)13, (int8_t)12, (int8_t)15, + (int8_t)14, (int8_t)9, (int8_t)8, (int8_t)11, (int8_t)10, + (int8_t)5, (int8_t)4, (int8_t)7, (int8_t)6, (int8_t)1, + (int8_t)0, (int8_t)3, (int8_t)2)); + core_core_arch_x86___m256i products_right = + libcrux_intrinsics_avx2_mm256_madd_epi16(lhs, rhs_adjacent_swapped); + core_core_arch_x86___m256i products_right0 = + libcrux_ml_kem_vector_avx2_arithmetic_montgomery_reduce_i32s( + products_right); + core_core_arch_x86___m256i products_right1 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)16, products_right0, + core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_blend_epi16((int32_t)170, products_left0, + products_right1, + core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ntt_multiply( + core_core_arch_x86___m256i *lhs, core_core_arch_x86___m256i *rhs, + int16_t zeta0, int16_t zeta1, int16_t zeta2, int16_t zeta3) { + return libcrux_ml_kem_vector_avx2_ntt_ntt_multiply(lhs[0U], rhs[0U], zeta0, + zeta1, zeta2, zeta3); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_serialize_serialize_1( + core_core_arch_x86___m256i vector, uint8_t ret[2U]) { + core_core_arch_x86___m256i lsb_to_msb = + libcrux_intrinsics_avx2_mm256_slli_epi16((int32_t)15, vector, + core_core_arch_x86___m256i); + core_core_arch_x86___m128i low_msbs = + libcrux_intrinsics_avx2_mm256_castsi256_si128(lsb_to_msb); + core_core_arch_x86___m128i high_msbs = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, lsb_to_msb, core_core_arch_x86___m128i); + core_core_arch_x86___m128i msbs = + libcrux_intrinsics_avx2_mm_packs_epi16(low_msbs, high_msbs); + int32_t bits_packed = libcrux_intrinsics_avx2_mm_movemask_epi8(msbs); + uint8_t serialized[2U] = {0U}; + serialized[0U] = (uint8_t)bits_packed; + serialized[1U] = (uint8_t)(bits_packed >> 8U); + memcpy(ret, serialized, (size_t)2U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_1( + core_core_arch_x86___m256i vector, uint8_t ret[2U]) { + uint8_t ret0[2U]; + libcrux_ml_kem_vector_avx2_serialize_serialize_1(vector, ret0); + memcpy(ret, ret0, (size_t)2U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_serialize_deserialize_1(Eurydice_slice bytes) { + int16_t uu____0 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____1 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____2 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____3 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____4 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____5 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____6 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____7 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____8 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____9 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____10 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____11 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____12 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____13 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____14 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + core_core_arch_x86___m256i coefficients = + libcrux_intrinsics_avx2_mm256_set_epi16( + uu____0, uu____1, uu____2, uu____3, uu____4, uu____5, uu____6, + uu____7, uu____8, uu____9, uu____10, uu____11, uu____12, uu____13, + uu____14, + (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, + uint8_t)); + core_core_arch_x86___m256i shift_lsb_to_msb = + libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 8U, (int16_t)1 << 9U, (int16_t)1 << 10U, + (int16_t)1 << 11U, (int16_t)1 << 12U, (int16_t)1 << 13U, + (int16_t)1 << 14U, (int16_t)-32768, (int16_t)1 << 8U, + (int16_t)1 << 9U, (int16_t)1 << 10U, (int16_t)1 << 11U, + (int16_t)1 << 12U, (int16_t)1 << 13U, (int16_t)1 << 14U, + (int16_t)-32768); + core_core_arch_x86___m256i coefficients_in_msb = + libcrux_intrinsics_avx2_mm256_mullo_epi16(coefficients, shift_lsb_to_msb); + return libcrux_intrinsics_avx2_mm256_srli_epi16( + (int32_t)15, coefficients_in_msb, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_1( + Eurydice_slice bytes) { + return libcrux_ml_kem_vector_avx2_serialize_deserialize_1(bytes); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_serialize_serialize_4( + core_core_arch_x86___m256i vector, uint8_t ret[8U]) { + uint8_t serialized[16U] = {0U}; + core_core_arch_x86___m256i uu____0 = vector; + core_core_arch_x86___m256i adjacent_2_combined = + libcrux_intrinsics_avx2_mm256_madd_epi16( + uu____0, + libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 4U, (int16_t)1, (int16_t)1 << 4U, (int16_t)1, + (int16_t)1 << 4U, (int16_t)1, (int16_t)1 << 4U, (int16_t)1, + (int16_t)1 << 4U, (int16_t)1, (int16_t)1 << 4U, (int16_t)1, + (int16_t)1 << 4U, (int16_t)1, (int16_t)1 << 4U, (int16_t)1)); + core_core_arch_x86___m256i uu____1 = adjacent_2_combined; + core_core_arch_x86___m256i adjacent_8_combined = + libcrux_intrinsics_avx2_mm256_shuffle_epi8( + uu____1, + libcrux_intrinsics_avx2_mm256_set_epi8( + (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, + (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, + (int8_t)-1, (int8_t)-1, (int8_t)12, (int8_t)8, (int8_t)4, + (int8_t)0, (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, + (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, + (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)12, (int8_t)8, + (int8_t)4, (int8_t)0)); + core_core_arch_x86___m256i uu____2 = adjacent_8_combined; + core_core_arch_x86___m256i combined = + libcrux_intrinsics_avx2_mm256_permutevar8x32_epi32( + uu____2, libcrux_intrinsics_avx2_mm256_set_epi32( + (int32_t)0, (int32_t)0, (int32_t)0, (int32_t)0, + (int32_t)0, (int32_t)0, (int32_t)4, (int32_t)0)); + core_core_arch_x86___m128i combined0 = + libcrux_intrinsics_avx2_mm256_castsi256_si128(combined); + libcrux_intrinsics_avx2_mm_storeu_bytes_si128( + Eurydice_array_to_slice((size_t)16U, serialized, uint8_t, Eurydice_slice), + combined0); + uint8_t ret0[8U]; + core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_array_to_subslice((size_t)16U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + Eurydice_slice, uint8_t[8U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_8size_t__core_array_TryFromSliceError( + dst, ret0); + memcpy(ret, ret0, (size_t)8U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_4( + core_core_arch_x86___m256i vector, uint8_t ret[8U]) { + uint8_t ret0[8U]; + libcrux_ml_kem_vector_avx2_serialize_serialize_4(vector, ret0); + memcpy(ret, ret0, (size_t)8U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_serialize_deserialize_4(Eurydice_slice bytes) { + int16_t uu____0 = (int16_t)Eurydice_slice_index(bytes, (size_t)7U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____1 = (int16_t)Eurydice_slice_index(bytes, (size_t)7U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____2 = (int16_t)Eurydice_slice_index(bytes, (size_t)6U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____3 = (int16_t)Eurydice_slice_index(bytes, (size_t)6U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____4 = (int16_t)Eurydice_slice_index(bytes, (size_t)5U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____5 = (int16_t)Eurydice_slice_index(bytes, (size_t)5U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____6 = (int16_t)Eurydice_slice_index(bytes, (size_t)4U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____7 = (int16_t)Eurydice_slice_index(bytes, (size_t)4U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____8 = (int16_t)Eurydice_slice_index(bytes, (size_t)3U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____9 = (int16_t)Eurydice_slice_index(bytes, (size_t)3U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____10 = (int16_t)Eurydice_slice_index(bytes, (size_t)2U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____11 = (int16_t)Eurydice_slice_index(bytes, (size_t)2U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____12 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____13 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t uu____14 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + core_core_arch_x86___m256i coefficients = + libcrux_intrinsics_avx2_mm256_set_epi16( + uu____0, uu____1, uu____2, uu____3, uu____4, uu____5, uu____6, + uu____7, uu____8, uu____9, uu____10, uu____11, uu____12, uu____13, + uu____14, + (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, + uint8_t)); + core_core_arch_x86___m256i shift_lsbs_to_msbs = + libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 0U, (int16_t)1 << 4U, (int16_t)1 << 0U, + (int16_t)1 << 4U, (int16_t)1 << 0U, (int16_t)1 << 4U, + (int16_t)1 << 0U, (int16_t)1 << 4U, (int16_t)1 << 0U, + (int16_t)1 << 4U, (int16_t)1 << 0U, (int16_t)1 << 4U, + (int16_t)1 << 0U, (int16_t)1 << 4U, (int16_t)1 << 0U, + (int16_t)1 << 4U); + core_core_arch_x86___m256i coefficients_in_msb = + libcrux_intrinsics_avx2_mm256_mullo_epi16(coefficients, + shift_lsbs_to_msbs); + core_core_arch_x86___m256i coefficients_in_lsb = + libcrux_intrinsics_avx2_mm256_srli_epi16((int32_t)4, coefficients_in_msb, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____15 = coefficients_in_lsb; + return libcrux_intrinsics_avx2_mm256_and_si256( + uu____15, libcrux_intrinsics_avx2_mm256_set1_epi16(((int16_t)1 << 4U) - + (int16_t)1)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_4( + Eurydice_slice bytes) { + return libcrux_ml_kem_vector_avx2_serialize_deserialize_4(bytes); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_serialize_serialize_5( + core_core_arch_x86___m256i vector, uint8_t ret[10U]) { + uint8_t serialized[32U] = {0U}; + core_core_arch_x86___m256i uu____0 = vector; + core_core_arch_x86___m256i adjacent_2_combined = + libcrux_intrinsics_avx2_mm256_madd_epi16( + uu____0, + libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 5U, (int16_t)1, (int16_t)1 << 5U, (int16_t)1, + (int16_t)1 << 5U, (int16_t)1, (int16_t)1 << 5U, (int16_t)1, + (int16_t)1 << 5U, (int16_t)1, (int16_t)1 << 5U, (int16_t)1, + (int16_t)1 << 5U, (int16_t)1, (int16_t)1 << 5U, (int16_t)1)); + core_core_arch_x86___m256i uu____1 = adjacent_2_combined; + core_core_arch_x86___m256i adjacent_4_combined = + libcrux_intrinsics_avx2_mm256_sllv_epi32( + uu____1, libcrux_intrinsics_avx2_mm256_set_epi32( + (int32_t)0, (int32_t)22, (int32_t)0, (int32_t)22, + (int32_t)0, (int32_t)22, (int32_t)0, (int32_t)22)); + core_core_arch_x86___m256i adjacent_4_combined0 = + libcrux_intrinsics_avx2_mm256_srli_epi64((int32_t)22, adjacent_4_combined, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i adjacent_8_combined = + libcrux_intrinsics_avx2_mm256_shuffle_epi32( + (int32_t)8, adjacent_4_combined0, core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____2 = adjacent_8_combined; + core_core_arch_x86___m256i adjacent_8_combined0 = + libcrux_intrinsics_avx2_mm256_sllv_epi32( + uu____2, libcrux_intrinsics_avx2_mm256_set_epi32( + (int32_t)0, (int32_t)0, (int32_t)0, (int32_t)12, + (int32_t)0, (int32_t)0, (int32_t)0, (int32_t)12)); + core_core_arch_x86___m256i adjacent_8_combined1 = + libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)12, adjacent_8_combined0, core_core_arch_x86___m256i); + core_core_arch_x86___m128i lower_8 = + libcrux_intrinsics_avx2_mm256_castsi256_si128(adjacent_8_combined1); + libcrux_intrinsics_avx2_mm_storeu_bytes_si128( + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + lower_8); + core_core_arch_x86___m128i upper_8 = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, adjacent_8_combined1, core_core_arch_x86___m128i); + libcrux_intrinsics_avx2_mm_storeu_bytes_si128( + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)5U, .end = (size_t)21U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + upper_8); + uint8_t ret0[10U]; + core_result_Result__uint8_t_10size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)10U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + Eurydice_slice, uint8_t[10U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_10size_t__core_array_TryFromSliceError( + dst, ret0); + memcpy(ret, ret0, (size_t)10U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_5( + core_core_arch_x86___m256i vector, uint8_t ret[10U]) { + uint8_t ret0[10U]; + libcrux_ml_kem_vector_avx2_serialize_serialize_5(vector, ret0); + memcpy(ret, ret0, (size_t)10U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_serialize_deserialize_5(Eurydice_slice bytes) { + uint8_t uu____0 = + Eurydice_slice_index(bytes, (size_t)9U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____1 = + Eurydice_slice_index(bytes, (size_t)8U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____2 = + Eurydice_slice_index(bytes, (size_t)8U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____3 = + Eurydice_slice_index(bytes, (size_t)7U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____4 = + Eurydice_slice_index(bytes, (size_t)7U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____5 = + Eurydice_slice_index(bytes, (size_t)6U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____6 = + Eurydice_slice_index(bytes, (size_t)6U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____7 = + Eurydice_slice_index(bytes, (size_t)5U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____8 = + Eurydice_slice_index(bytes, (size_t)4U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____9 = + Eurydice_slice_index(bytes, (size_t)3U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____10 = + Eurydice_slice_index(bytes, (size_t)3U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____11 = + Eurydice_slice_index(bytes, (size_t)2U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____12 = + Eurydice_slice_index(bytes, (size_t)2U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____13 = + Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + uint8_t uu____14 = + Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + core_core_arch_x86___m128i coefficients = libcrux_intrinsics_avx2_mm_set_epi8( + uu____0, uu____1, uu____2, uu____3, uu____4, uu____5, uu____6, uu____7, + uu____8, uu____9, uu____10, uu____11, uu____12, uu____13, uu____14, + Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, uint8_t)); + core_core_arch_x86___m256i coefficients_loaded = + libcrux_intrinsics_avx2_mm256_castsi128_si256(coefficients); + core_core_arch_x86___m256i coefficients_loaded0 = + libcrux_intrinsics_avx2_mm256_inserti128_si256( + (int32_t)1, coefficients_loaded, coefficients, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____15 = coefficients_loaded0; + core_core_arch_x86___m256i coefficients0 = + libcrux_intrinsics_avx2_mm256_shuffle_epi8( + uu____15, + libcrux_intrinsics_avx2_mm256_set_epi8( + (int8_t)15, (int8_t)14, (int8_t)15, (int8_t)14, (int8_t)13, + (int8_t)12, (int8_t)13, (int8_t)12, (int8_t)11, (int8_t)10, + (int8_t)11, (int8_t)10, (int8_t)9, (int8_t)8, (int8_t)9, + (int8_t)8, (int8_t)7, (int8_t)6, (int8_t)7, (int8_t)6, (int8_t)5, + (int8_t)4, (int8_t)5, (int8_t)4, (int8_t)3, (int8_t)2, (int8_t)3, + (int8_t)2, (int8_t)1, (int8_t)0, (int8_t)1, (int8_t)0)); + core_core_arch_x86___m256i uu____16 = coefficients0; + core_core_arch_x86___m256i coefficients1 = + libcrux_intrinsics_avx2_mm256_mullo_epi16( + uu____16, libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 0U, (int16_t)1 << 5U, (int16_t)1 << 2U, + (int16_t)1 << 7U, (int16_t)1 << 4U, (int16_t)1 << 9U, + (int16_t)1 << 6U, (int16_t)1 << 11U, (int16_t)1 << 0U, + (int16_t)1 << 5U, (int16_t)1 << 2U, (int16_t)1 << 7U, + (int16_t)1 << 4U, (int16_t)1 << 9U, (int16_t)1 << 6U, + (int16_t)1 << 11U)); + return libcrux_intrinsics_avx2_mm256_srli_epi16((int32_t)11, coefficients1, + core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_5( + Eurydice_slice bytes) { + return libcrux_ml_kem_vector_avx2_serialize_deserialize_5(bytes); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_serialize_serialize_10( + core_core_arch_x86___m256i vector, uint8_t ret[20U]) { + uint8_t serialized[32U] = {0U}; + core_core_arch_x86___m256i uu____0 = vector; + core_core_arch_x86___m256i adjacent_2_combined = + libcrux_intrinsics_avx2_mm256_madd_epi16( + uu____0, + libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 10U, (int16_t)1, (int16_t)1 << 10U, (int16_t)1, + (int16_t)1 << 10U, (int16_t)1, (int16_t)1 << 10U, (int16_t)1, + (int16_t)1 << 10U, (int16_t)1, (int16_t)1 << 10U, (int16_t)1, + (int16_t)1 << 10U, (int16_t)1, (int16_t)1 << 10U, (int16_t)1)); + core_core_arch_x86___m256i uu____1 = adjacent_2_combined; + core_core_arch_x86___m256i adjacent_4_combined = + libcrux_intrinsics_avx2_mm256_sllv_epi32( + uu____1, libcrux_intrinsics_avx2_mm256_set_epi32( + (int32_t)0, (int32_t)12, (int32_t)0, (int32_t)12, + (int32_t)0, (int32_t)12, (int32_t)0, (int32_t)12)); + core_core_arch_x86___m256i adjacent_4_combined0 = + libcrux_intrinsics_avx2_mm256_srli_epi64((int32_t)12, adjacent_4_combined, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____2 = adjacent_4_combined0; + core_core_arch_x86___m256i adjacent_8_combined = + libcrux_intrinsics_avx2_mm256_shuffle_epi8( + uu____2, libcrux_intrinsics_avx2_mm256_set_epi8( + (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, + (int8_t)-1, (int8_t)-1, (int8_t)12, (int8_t)11, + (int8_t)10, (int8_t)9, (int8_t)8, (int8_t)4, (int8_t)3, + (int8_t)2, (int8_t)1, (int8_t)0, (int8_t)-1, (int8_t)-1, + (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, + (int8_t)12, (int8_t)11, (int8_t)10, (int8_t)9, (int8_t)8, + (int8_t)4, (int8_t)3, (int8_t)2, (int8_t)1, (int8_t)0)); + core_core_arch_x86___m128i lower_8 = + libcrux_intrinsics_avx2_mm256_castsi256_si128(adjacent_8_combined); + libcrux_intrinsics_avx2_mm_storeu_bytes_si128( + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + lower_8); + core_core_arch_x86___m128i upper_8 = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, adjacent_8_combined, core_core_arch_x86___m128i); + libcrux_intrinsics_avx2_mm_storeu_bytes_si128( + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)10U, .end = (size_t)26U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + upper_8); + uint8_t ret0[20U]; + core_result_Result__uint8_t_20size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)20U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + Eurydice_slice, uint8_t[20U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_20size_t__core_array_TryFromSliceError( + dst, ret0); + memcpy(ret, ret0, (size_t)20U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_10( + core_core_arch_x86___m256i vector, uint8_t ret[20U]) { + uint8_t ret0[20U]; + libcrux_ml_kem_vector_avx2_serialize_serialize_10(vector, ret0); + memcpy(ret, ret0, (size_t)20U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_serialize_deserialize_10(Eurydice_slice bytes) { + core_core_arch_x86___m256i shift_lsbs_to_msbs = + libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 0U, (int16_t)1 << 2U, (int16_t)1 << 4U, + (int16_t)1 << 6U, (int16_t)1 << 0U, (int16_t)1 << 2U, + (int16_t)1 << 4U, (int16_t)1 << 6U, (int16_t)1 << 0U, + (int16_t)1 << 2U, (int16_t)1 << 4U, (int16_t)1 << 6U, + (int16_t)1 << 0U, (int16_t)1 << 2U, (int16_t)1 << 4U, + (int16_t)1 << 6U); + core_core_arch_x86___m128i lower_coefficients = + libcrux_intrinsics_avx2_mm_loadu_si128(Eurydice_slice_subslice( + bytes, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m128i uu____0 = lower_coefficients; + core_core_arch_x86___m128i lower_coefficients0 = + libcrux_intrinsics_avx2_mm_shuffle_epi8( + uu____0, + libcrux_intrinsics_avx2_mm_set_epi8(9U, 8U, 8U, 7U, 7U, 6U, 6U, 5U, + 4U, 3U, 3U, 2U, 2U, 1U, 1U, 0U)); + core_core_arch_x86___m128i upper_coefficients = + libcrux_intrinsics_avx2_mm_loadu_si128(Eurydice_slice_subslice( + bytes, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)4U, + .end = (size_t)20U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m128i uu____1 = upper_coefficients; + core_core_arch_x86___m128i upper_coefficients0 = + libcrux_intrinsics_avx2_mm_shuffle_epi8( + uu____1, libcrux_intrinsics_avx2_mm_set_epi8(15U, 14U, 14U, 13U, 13U, + 12U, 12U, 11U, 10U, 9U, + 9U, 8U, 8U, 7U, 7U, 6U)); + core_core_arch_x86___m256i coefficients = + libcrux_intrinsics_avx2_mm256_castsi128_si256(lower_coefficients0); + core_core_arch_x86___m256i coefficients0 = + libcrux_intrinsics_avx2_mm256_inserti128_si256( + (int32_t)1, coefficients, upper_coefficients0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i coefficients1 = + libcrux_intrinsics_avx2_mm256_mullo_epi16(coefficients0, + shift_lsbs_to_msbs); + core_core_arch_x86___m256i coefficients2 = + libcrux_intrinsics_avx2_mm256_srli_epi16((int32_t)6, coefficients1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____2 = coefficients2; + core_core_arch_x86___m256i coefficients3 = + libcrux_intrinsics_avx2_mm256_and_si256( + uu____2, libcrux_intrinsics_avx2_mm256_set1_epi16( + ((int16_t)1 << 10U) - (int16_t)1)); + return coefficients3; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_10( + Eurydice_slice bytes) { + return libcrux_ml_kem_vector_avx2_serialize_deserialize_10(bytes); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_to_i16_array(core_core_arch_x86___m256i v, + int16_t ret[16U]) { + int16_t output[16U] = {0U}; + libcrux_intrinsics_avx2_mm256_storeu_si256_i16( + Eurydice_array_to_slice((size_t)16U, output, int16_t, Eurydice_slice), v); + memcpy(ret, output, (size_t)16U * sizeof(int16_t)); +} + +typedef struct libcrux_ml_kem_vector_avx2_portable_PortableVector_s { + int16_t elements[16U]; +} libcrux_ml_kem_vector_avx2_portable_PortableVector; + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_vector_avx2_portable_PortableVector +libcrux_ml_kem_vector_avx2_portable_from_i16_array(int16_t array[16U]) { + int16_t uu____0[16U]; + memcpy(uu____0, array, (size_t)16U * sizeof(int16_t)); + libcrux_ml_kem_vector_avx2_portable_PortableVector lit; + memcpy(lit.elements, uu____0, (size_t)16U * sizeof(int16_t)); + return lit; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_portable_serialize_11( + libcrux_ml_kem_vector_avx2_portable_PortableVector v, uint8_t ret[22U]) { + uint8_t result[22U] = {0U}; + result[0U] = (uint8_t)v.elements[0U]; + result[1U] = (uint32_t)(uint8_t)(v.elements[1U] & (int16_t)31) << 3U | + (uint32_t)(uint8_t)(v.elements[0U] >> 8U); + result[2U] = (uint32_t)(uint8_t)(v.elements[2U] & (int16_t)3) << 6U | + (uint32_t)(uint8_t)(v.elements[1U] >> 5U); + result[3U] = (uint8_t)(v.elements[2U] >> 2U & (int16_t)255); + result[4U] = (uint32_t)(uint8_t)(v.elements[3U] & (int16_t)127) << 1U | + (uint32_t)(uint8_t)(v.elements[2U] >> 10U); + result[5U] = (uint32_t)(uint8_t)(v.elements[4U] & (int16_t)15) << 4U | + (uint32_t)(uint8_t)(v.elements[3U] >> 7U); + result[6U] = (uint32_t)(uint8_t)(v.elements[5U] & (int16_t)1) << 7U | + (uint32_t)(uint8_t)(v.elements[4U] >> 4U); + result[7U] = (uint8_t)(v.elements[5U] >> 1U & (int16_t)255); + result[8U] = (uint32_t)(uint8_t)(v.elements[6U] & (int16_t)63) << 2U | + (uint32_t)(uint8_t)(v.elements[5U] >> 9U); + result[9U] = (uint32_t)(uint8_t)(v.elements[7U] & (int16_t)7) << 5U | + (uint32_t)(uint8_t)(v.elements[6U] >> 6U); + result[10U] = (uint8_t)(v.elements[7U] >> 3U); + result[11U] = (uint8_t)v.elements[(size_t)8U + (size_t)0U]; + result[12U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)1U] & (int16_t)31) + << 3U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)0U] >> 8U); + result[13U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)2U] & (int16_t)3) + << 6U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)1U] >> 5U); + result[14U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)2U] >> 2U & (int16_t)255); + result[15U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)3U] & (int16_t)127) + << 1U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)2U] >> 10U); + result[16U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)4U] & (int16_t)15) + << 4U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)3U] >> 7U); + result[17U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)5U] & (int16_t)1) + << 7U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)4U] >> 4U); + result[18U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)5U] >> 1U & (int16_t)255); + result[19U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)6U] & (int16_t)63) + << 2U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)5U] >> 9U); + result[20U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)7U] & (int16_t)7) + << 5U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)6U] >> 6U); + result[21U] = (uint8_t)(v.elements[(size_t)8U + (size_t)7U] >> 3U); + memcpy(ret, result, (size_t)22U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_serialize_serialize_11( + core_core_arch_x86___m256i vector, uint8_t ret[22U]) { + int16_t array[16U]; + libcrux_ml_kem_vector_avx2_to_i16_array(vector, array); + int16_t uu____0[16U]; + memcpy(uu____0, array, (size_t)16U * sizeof(int16_t)); + libcrux_ml_kem_vector_avx2_portable_PortableVector input = + libcrux_ml_kem_vector_avx2_portable_from_i16_array(uu____0); + uint8_t ret0[22U]; + libcrux_ml_kem_vector_avx2_portable_serialize_11(input, ret0); + memcpy(ret, ret0, (size_t)22U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_11( + core_core_arch_x86___m256i vector, uint8_t ret[22U]) { + uint8_t ret0[22U]; + libcrux_ml_kem_vector_avx2_serialize_serialize_11(vector, ret0); + memcpy(ret, ret0, (size_t)22U * sizeof(uint8_t)); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_vector_avx2_portable_PortableVector +libcrux_ml_kem_vector_avx2_portable_zero(void) { + libcrux_ml_kem_vector_avx2_portable_PortableVector lit; + lit.elements[0U] = (int16_t)0; + lit.elements[1U] = (int16_t)0; + lit.elements[2U] = (int16_t)0; + lit.elements[3U] = (int16_t)0; + lit.elements[4U] = (int16_t)0; + lit.elements[5U] = (int16_t)0; + lit.elements[6U] = (int16_t)0; + lit.elements[7U] = (int16_t)0; + lit.elements[8U] = (int16_t)0; + lit.elements[9U] = (int16_t)0; + lit.elements[10U] = (int16_t)0; + lit.elements[11U] = (int16_t)0; + lit.elements[12U] = (int16_t)0; + lit.elements[13U] = (int16_t)0; + lit.elements[14U] = (int16_t)0; + lit.elements[15U] = (int16_t)0; + return lit; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_vector_avx2_portable_PortableVector +libcrux_ml_kem_vector_avx2_portable_deserialize_11(Eurydice_slice bytes) { + libcrux_ml_kem_vector_avx2_portable_PortableVector result = + libcrux_ml_kem_vector_avx2_portable_zero(); + int16_t uu____0 = ((int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)7) + << 8U; + uint8_t *uu____1 = + &Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, uint8_t); + result.elements[0U] = uu____0 | (int16_t)uu____1[0U]; + int16_t uu____2 = ((int16_t)Eurydice_slice_index(bytes, (size_t)2U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)63) + << 5U; + uint8_t *uu____3 = + &Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + result.elements[1U] = uu____2 | (int16_t)uu____3[0U] >> 3U; + int16_t uu____4 = ((int16_t)Eurydice_slice_index(bytes, (size_t)4U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)1) + << 10U; + int16_t uu____5 = + uu____4 | (int16_t)Eurydice_slice_index(bytes, (size_t)3U, uint8_t, + uint8_t *, uint8_t) + << 2U; + uint8_t *uu____6 = + &Eurydice_slice_index(bytes, (size_t)2U, uint8_t, uint8_t *, uint8_t); + result.elements[2U] = uu____5 | (int16_t)uu____6[0U] >> 6U; + int16_t uu____7 = ((int16_t)Eurydice_slice_index(bytes, (size_t)5U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)15) + << 7U; + uint8_t *uu____8 = + &Eurydice_slice_index(bytes, (size_t)4U, uint8_t, uint8_t *, uint8_t); + result.elements[3U] = uu____7 | (int16_t)uu____8[0U] >> 1U; + int16_t uu____9 = ((int16_t)Eurydice_slice_index(bytes, (size_t)6U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)127) + << 4U; + uint8_t *uu____10 = + &Eurydice_slice_index(bytes, (size_t)5U, uint8_t, uint8_t *, uint8_t); + result.elements[4U] = uu____9 | (int16_t)uu____10[0U] >> 4U; + int16_t uu____11 = ((int16_t)Eurydice_slice_index(bytes, (size_t)8U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)3) + << 9U; + int16_t uu____12 = + uu____11 | (int16_t)Eurydice_slice_index(bytes, (size_t)7U, uint8_t, + uint8_t *, uint8_t) + << 1U; + uint8_t *uu____13 = + &Eurydice_slice_index(bytes, (size_t)6U, uint8_t, uint8_t *, uint8_t); + result.elements[5U] = uu____12 | (int16_t)uu____13[0U] >> 7U; + int16_t uu____14 = ((int16_t)Eurydice_slice_index(bytes, (size_t)9U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)31) + << 6U; + uint8_t *uu____15 = + &Eurydice_slice_index(bytes, (size_t)8U, uint8_t, uint8_t *, uint8_t); + result.elements[6U] = uu____14 | (int16_t)uu____15[0U] >> 2U; + int16_t uu____16 = (int16_t)Eurydice_slice_index(bytes, (size_t)10U, uint8_t, + uint8_t *, uint8_t) + << 3U; + uint8_t *uu____17 = + &Eurydice_slice_index(bytes, (size_t)9U, uint8_t, uint8_t *, uint8_t); + result.elements[7U] = uu____16 | (int16_t)uu____17[0U] >> 5U; + int16_t uu____18 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)1U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)7) + << 8U; + uint8_t *uu____19 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)0U, + uint8_t, uint8_t *, uint8_t); + result.elements[8U] = uu____18 | (int16_t)uu____19[0U]; + int16_t uu____20 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)2U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)63) + << 5U; + uint8_t *uu____21 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)1U, + uint8_t, uint8_t *, uint8_t); + result.elements[9U] = uu____20 | (int16_t)uu____21[0U] >> 3U; + int16_t uu____22 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)4U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)1) + << 10U; + int16_t uu____23 = + uu____22 | (int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)3U, + uint8_t, uint8_t *, uint8_t) + << 2U; + uint8_t *uu____24 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)2U, + uint8_t, uint8_t *, uint8_t); + result.elements[10U] = uu____23 | (int16_t)uu____24[0U] >> 6U; + int16_t uu____25 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)5U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)15) + << 7U; + uint8_t *uu____26 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)4U, + uint8_t, uint8_t *, uint8_t); + result.elements[11U] = uu____25 | (int16_t)uu____26[0U] >> 1U; + int16_t uu____27 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)6U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)127) + << 4U; + uint8_t *uu____28 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)5U, + uint8_t, uint8_t *, uint8_t); + result.elements[12U] = uu____27 | (int16_t)uu____28[0U] >> 4U; + int16_t uu____29 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)8U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)3) + << 9U; + int16_t uu____30 = + uu____29 | (int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)7U, + uint8_t, uint8_t *, uint8_t) + << 1U; + uint8_t *uu____31 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)6U, + uint8_t, uint8_t *, uint8_t); + result.elements[13U] = uu____30 | (int16_t)uu____31[0U] >> 7U; + int16_t uu____32 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)9U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)31) + << 6U; + uint8_t *uu____33 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)8U, + uint8_t, uint8_t *, uint8_t); + result.elements[14U] = uu____32 | (int16_t)uu____33[0U] >> 2U; + int16_t uu____34 = + (int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)10U, uint8_t, + uint8_t *, uint8_t) + << 3U; + uint8_t *uu____35 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)9U, + uint8_t, uint8_t *, uint8_t); + result.elements[15U] = uu____34 | (int16_t)uu____35[0U] >> 5U; + return result; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_portable_to_i16_array( + libcrux_ml_kem_vector_avx2_portable_PortableVector v, int16_t ret[16U]) { + memcpy(ret, v.elements, (size_t)16U * sizeof(int16_t)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_serialize_deserialize_11(Eurydice_slice bytes) { + libcrux_ml_kem_vector_avx2_portable_PortableVector output = + libcrux_ml_kem_vector_avx2_portable_deserialize_11(bytes); + int16_t ret[16U]; + libcrux_ml_kem_vector_avx2_portable_to_i16_array(output, ret); + return libcrux_ml_kem_vector_avx2_from_i16_array( + Eurydice_array_to_slice((size_t)16U, ret, int16_t, Eurydice_slice)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_11( + Eurydice_slice bytes) { + return libcrux_ml_kem_vector_avx2_serialize_deserialize_11(bytes); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2_serialize_serialize_12( + core_core_arch_x86___m256i vector, uint8_t ret[24U]) { + uint8_t serialized[32U] = {0U}; + core_core_arch_x86___m256i uu____0 = vector; + core_core_arch_x86___m256i adjacent_2_combined = + libcrux_intrinsics_avx2_mm256_madd_epi16( + uu____0, + libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 12U, (int16_t)1, (int16_t)1 << 12U, (int16_t)1, + (int16_t)1 << 12U, (int16_t)1, (int16_t)1 << 12U, (int16_t)1, + (int16_t)1 << 12U, (int16_t)1, (int16_t)1 << 12U, (int16_t)1, + (int16_t)1 << 12U, (int16_t)1, (int16_t)1 << 12U, (int16_t)1)); + core_core_arch_x86___m256i uu____1 = adjacent_2_combined; + core_core_arch_x86___m256i adjacent_4_combined = + libcrux_intrinsics_avx2_mm256_sllv_epi32( + uu____1, libcrux_intrinsics_avx2_mm256_set_epi32( + (int32_t)0, (int32_t)8, (int32_t)0, (int32_t)8, + (int32_t)0, (int32_t)8, (int32_t)0, (int32_t)8)); + core_core_arch_x86___m256i adjacent_4_combined0 = + libcrux_intrinsics_avx2_mm256_srli_epi64((int32_t)8, adjacent_4_combined, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____2 = adjacent_4_combined0; + core_core_arch_x86___m256i adjacent_8_combined = + libcrux_intrinsics_avx2_mm256_shuffle_epi8( + uu____2, libcrux_intrinsics_avx2_mm256_set_epi8( + (int8_t)-1, (int8_t)-1, (int8_t)-1, (int8_t)-1, + (int8_t)13, (int8_t)12, (int8_t)11, (int8_t)10, + (int8_t)9, (int8_t)8, (int8_t)5, (int8_t)4, (int8_t)3, + (int8_t)2, (int8_t)1, (int8_t)0, (int8_t)-1, (int8_t)-1, + (int8_t)-1, (int8_t)-1, (int8_t)13, (int8_t)12, + (int8_t)11, (int8_t)10, (int8_t)9, (int8_t)8, (int8_t)5, + (int8_t)4, (int8_t)3, (int8_t)2, (int8_t)1, (int8_t)0)); + core_core_arch_x86___m128i lower_8 = + libcrux_intrinsics_avx2_mm256_castsi256_si128(adjacent_8_combined); + core_core_arch_x86___m128i upper_8 = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, adjacent_8_combined, core_core_arch_x86___m128i); + libcrux_intrinsics_avx2_mm_storeu_bytes_si128( + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + lower_8); + libcrux_intrinsics_avx2_mm_storeu_bytes_si128( + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)12U, .end = (size_t)28U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + upper_8); + uint8_t ret0[24U]; + core_result_Result__uint8_t_24size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_array_to_subslice((size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + Eurydice_slice, uint8_t[24U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_24size_t__core_array_TryFromSliceError( + dst, ret0); + memcpy(ret, ret0, (size_t)24U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_12( + core_core_arch_x86___m256i vector, uint8_t ret[24U]) { + uint8_t ret0[24U]; + libcrux_ml_kem_vector_avx2_serialize_serialize_12(vector, ret0); + memcpy(ret, ret0, (size_t)24U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_serialize_deserialize_12(Eurydice_slice bytes) { + core_core_arch_x86___m256i shift_lsbs_to_msbs = + libcrux_intrinsics_avx2_mm256_set_epi16( + (int16_t)1 << 0U, (int16_t)1 << 4U, (int16_t)1 << 0U, + (int16_t)1 << 4U, (int16_t)1 << 0U, (int16_t)1 << 4U, + (int16_t)1 << 0U, (int16_t)1 << 4U, (int16_t)1 << 0U, + (int16_t)1 << 4U, (int16_t)1 << 0U, (int16_t)1 << 4U, + (int16_t)1 << 0U, (int16_t)1 << 4U, (int16_t)1 << 0U, + (int16_t)1 << 4U); + core_core_arch_x86___m128i lower_coefficients = + libcrux_intrinsics_avx2_mm_loadu_si128(Eurydice_slice_subslice( + bytes, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m128i uu____0 = lower_coefficients; + core_core_arch_x86___m128i lower_coefficients0 = + libcrux_intrinsics_avx2_mm_shuffle_epi8( + uu____0, + libcrux_intrinsics_avx2_mm_set_epi8(11U, 10U, 10U, 9U, 8U, 7U, 7U, 6U, + 5U, 4U, 4U, 3U, 2U, 1U, 1U, 0U)); + core_core_arch_x86___m128i upper_coefficients = + libcrux_intrinsics_avx2_mm_loadu_si128(Eurydice_slice_subslice( + bytes, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)8U, + .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m128i uu____1 = upper_coefficients; + core_core_arch_x86___m128i upper_coefficients0 = + libcrux_intrinsics_avx2_mm_shuffle_epi8( + uu____1, libcrux_intrinsics_avx2_mm_set_epi8(15U, 14U, 14U, 13U, 12U, + 11U, 11U, 10U, 9U, 8U, + 8U, 7U, 6U, 5U, 5U, 4U)); + core_core_arch_x86___m256i coefficients = + libcrux_intrinsics_avx2_mm256_castsi128_si256(lower_coefficients0); + core_core_arch_x86___m256i coefficients0 = + libcrux_intrinsics_avx2_mm256_inserti128_si256( + (int32_t)1, coefficients, upper_coefficients0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i coefficients1 = + libcrux_intrinsics_avx2_mm256_mullo_epi16(coefficients0, + shift_lsbs_to_msbs); + core_core_arch_x86___m256i coefficients2 = + libcrux_intrinsics_avx2_mm256_srli_epi16((int32_t)4, coefficients1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____2 = coefficients2; + core_core_arch_x86___m256i coefficients3 = + libcrux_intrinsics_avx2_mm256_and_si256( + uu____2, libcrux_intrinsics_avx2_mm256_set1_epi16( + ((int16_t)1 << 12U) - (int16_t)1)); + return coefficients3; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_12( + Eurydice_slice bytes) { + return libcrux_ml_kem_vector_avx2_serialize_deserialize_12(bytes); +} + +__attribute__((target("avx2"))) static inline size_t +libcrux_ml_kem_vector_avx2_sampling_rejection_sample(Eurydice_slice input, + Eurydice_slice output) { + core_core_arch_x86___m256i field_modulus = + libcrux_intrinsics_avx2_mm256_set1_epi16( + LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS); + core_core_arch_x86___m256i potential_coefficients = + libcrux_ml_kem_vector_avx2_serialize_deserialize_12(input); + core_core_arch_x86___m256i compare_with_field_modulus = + libcrux_intrinsics_avx2_mm256_cmpgt_epi16(field_modulus, + potential_coefficients); + uint8_t good[2U]; + libcrux_ml_kem_vector_avx2_serialize_serialize_1(compare_with_field_modulus, + good); + uint8_t lower_shuffles[16U]; + memcpy(lower_shuffles, + libcrux_ml_kem_vector_rej_sample_table_REJECTION_SAMPLE_SHUFFLE_TABLE[( + size_t)good[0U]], + (size_t)16U * sizeof(uint8_t)); + core_core_arch_x86___m128i lower_shuffles0 = + libcrux_intrinsics_avx2_mm_loadu_si128(Eurydice_array_to_slice( + (size_t)16U, lower_shuffles, uint8_t, Eurydice_slice)); + core_core_arch_x86___m128i lower_coefficients = + libcrux_intrinsics_avx2_mm256_castsi256_si128(potential_coefficients); + core_core_arch_x86___m128i lower_coefficients0 = + libcrux_intrinsics_avx2_mm_shuffle_epi8(lower_coefficients, + lower_shuffles0); + libcrux_intrinsics_avx2_mm_storeu_si128(output, lower_coefficients0); + size_t sampled_count = (size_t)core_num__u8_6__count_ones(good[0U]); + uint8_t upper_shuffles[16U]; + memcpy(upper_shuffles, + libcrux_ml_kem_vector_rej_sample_table_REJECTION_SAMPLE_SHUFFLE_TABLE[( + size_t)good[1U]], + (size_t)16U * sizeof(uint8_t)); + core_core_arch_x86___m128i upper_shuffles0 = + libcrux_intrinsics_avx2_mm_loadu_si128(Eurydice_array_to_slice( + (size_t)16U, upper_shuffles, uint8_t, Eurydice_slice)); + core_core_arch_x86___m128i upper_coefficients = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, potential_coefficients, core_core_arch_x86___m128i); + core_core_arch_x86___m128i upper_coefficients0 = + libcrux_intrinsics_avx2_mm_shuffle_epi8(upper_coefficients, + upper_shuffles0); + libcrux_intrinsics_avx2_mm_storeu_si128( + Eurydice_slice_subslice( + output, + (CLITERAL(core_ops_range_Range__size_t){ + .start = sampled_count, .end = sampled_count + (size_t)8U}), + int16_t, core_ops_range_Range__size_t, Eurydice_slice), + upper_coefficients0); + size_t uu____0 = sampled_count; + return uu____0 + (size_t)core_num__u8_6__count_ones(good[1U]); +} + +__attribute__((target("avx2"))) static inline size_t +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___rej_sample( + Eurydice_slice input, Eurydice_slice output) { + return libcrux_ml_kem_vector_avx2_sampling_rejection_sample(input, output); +} + +typedef struct + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_s { + core_core_arch_x86___m256i coefficients[16U]; +} libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector; + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector( + void) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + lit; + lit.coefficients[0U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[1U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[2U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[3U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[4U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[5U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[6U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[7U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[8U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[9U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[10U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[11U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[12U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[13U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[14U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + lit.coefficients[15U] = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + return lit; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_ind_cpa_deserialize_then_decompress_u_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1088size_t_10size_t( + size_t _) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_decompress_ciphertext_coefficient___10int32_t( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus = + libcrux_intrinsics_avx2_mm256_set1_epi32( + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS); + core_core_arch_x86___m256i two_pow_coefficient_bits = + libcrux_intrinsics_avx2_mm256_set1_epi32((int32_t)1 + << (uint32_t)(int32_t)10); + core_core_arch_x86___m128i coefficients_low = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m256i coefficients_low0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_low); + core_core_arch_x86___m256i decompressed_low = + libcrux_intrinsics_avx2_mm256_mullo_epi32(coefficients_low0, + field_modulus); + core_core_arch_x86___m256i decompressed_low0 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)1, decompressed_low, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_low1 = + libcrux_intrinsics_avx2_mm256_add_epi32(decompressed_low0, + two_pow_coefficient_bits); + core_core_arch_x86___m256i decompressed_low2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)10, decompressed_low1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_low3 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)1, decompressed_low2, + core_core_arch_x86___m256i); + core_core_arch_x86___m128i coefficients_high = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m256i coefficients_high0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_high); + core_core_arch_x86___m256i decompressed_high = + libcrux_intrinsics_avx2_mm256_mullo_epi32(coefficients_high0, + field_modulus); + core_core_arch_x86___m256i decompressed_high0 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)1, decompressed_high, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_high1 = + libcrux_intrinsics_avx2_mm256_add_epi32(decompressed_high0, + two_pow_coefficient_bits); + core_core_arch_x86___m256i decompressed_high2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)10, decompressed_high1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_high3 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)1, decompressed_high2, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed = + libcrux_intrinsics_avx2_mm256_packs_epi32(decompressed_low3, + decompressed_high3); + return libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, compressed, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___decompress_ciphertext_coefficient___10int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_decompress_ciphertext_coefficient___10int32_t( + vector); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_then_decompress_10__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)20U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)20U, .end = i0 * (size_t)20U + (size_t)20U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_10( + bytes); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___decompress_ciphertext_coefficient___10int32_t( + coefficient); + re.coefficients[i0] = uu____0; + } + return re; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_decompress_ciphertext_coefficient___11int32_t( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus = + libcrux_intrinsics_avx2_mm256_set1_epi32( + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS); + core_core_arch_x86___m256i two_pow_coefficient_bits = + libcrux_intrinsics_avx2_mm256_set1_epi32((int32_t)1 + << (uint32_t)(int32_t)11); + core_core_arch_x86___m128i coefficients_low = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m256i coefficients_low0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_low); + core_core_arch_x86___m256i decompressed_low = + libcrux_intrinsics_avx2_mm256_mullo_epi32(coefficients_low0, + field_modulus); + core_core_arch_x86___m256i decompressed_low0 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)1, decompressed_low, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_low1 = + libcrux_intrinsics_avx2_mm256_add_epi32(decompressed_low0, + two_pow_coefficient_bits); + core_core_arch_x86___m256i decompressed_low2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)11, decompressed_low1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_low3 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)1, decompressed_low2, + core_core_arch_x86___m256i); + core_core_arch_x86___m128i coefficients_high = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m256i coefficients_high0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_high); + core_core_arch_x86___m256i decompressed_high = + libcrux_intrinsics_avx2_mm256_mullo_epi32(coefficients_high0, + field_modulus); + core_core_arch_x86___m256i decompressed_high0 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)1, decompressed_high, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_high1 = + libcrux_intrinsics_avx2_mm256_add_epi32(decompressed_high0, + two_pow_coefficient_bits); + core_core_arch_x86___m256i decompressed_high2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)11, decompressed_high1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_high3 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)1, decompressed_high2, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed = + libcrux_intrinsics_avx2_mm256_packs_epi32(decompressed_low3, + decompressed_high3); + return libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, compressed, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___decompress_ciphertext_coefficient___11int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_decompress_ciphertext_coefficient___11int32_t( + vector); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_then_decompress_11__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)22U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)22U, .end = i0 * (size_t)22U + (size_t)22U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_11( + bytes); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___decompress_ciphertext_coefficient___11int32_t( + coefficient); + re.coefficients[i0] = uu____0; + } + return re; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_then_decompress_ring_element_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_10size_t( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0; + uu____0 = + libcrux_ml_kem_serialize_deserialize_then_decompress_10__libcrux_ml_kem_vector_avx2_SIMD256Vector( + serialized); + return uu____0; +} + +typedef struct + K___libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_vector_avx2_SIMD256Vector_s { + core_core_arch_x86___m256i fst; + core_core_arch_x86___m256i snd; +} K___libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_vector_avx2_SIMD256Vector; + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_traits_montgomery_multiply_fe__libcrux_ml_kem_vector_avx2_SIMD256Vector( + core_core_arch_x86___m256i v, int16_t fer) { + return libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___montgomery_multiply_by_constant( + v, fer); +} + +__attribute__((target( + "avx2"))) static inline K___libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_ntt_ntt_layer_int_vec_step__libcrux_ml_kem_vector_avx2_SIMD256Vector( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b, + int16_t zeta_r) { + core_core_arch_x86___m256i t = + libcrux_ml_kem_vector_traits_montgomery_multiply_fe__libcrux_ml_kem_vector_avx2_SIMD256Vector( + b, zeta_r); + b = libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___sub( + a, &t); + a = libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + a, &t); + return (CLITERAL( + K___libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_vector_avx2_SIMD256Vector){ + .fst = a, .snd = b}); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + size_t layer, size_t _initial_coefficient_bound) { + size_t step = (size_t)1U << (uint32_t)layer; + for (size_t i0 = (size_t)0U; i0 < (size_t)128U >> (uint32_t)layer; i0++) { + size_t round = i0; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + size_t offset = round * step * (size_t)2U; + size_t offset_vec = offset / (size_t)16U; + size_t step_vec = step / (size_t)16U; + for (size_t i = offset_vec; i < offset_vec + step_vec; i++) { + size_t j = i; + K___libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0 = + libcrux_ml_kem_ntt_ntt_layer_int_vec_step__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re->coefficients[j], re->coefficients[j + step_vec], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R + [zeta_i[0U]]); + core_core_arch_x86___m256i x = uu____0.fst; + core_core_arch_x86___m256i y = uu____0.snd; + re->coefficients[j] = x; + re->coefficients[j + step_vec] = y; + } + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ntt_ntt_at_layer_3__libcrux_ml_kem_vector_avx2_SIMD256Vector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + size_t _layer, size_t _initial_coefficient_bound) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ntt_layer_3_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]]); + re->coefficients[round] = uu____0; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ntt_ntt_at_layer_2__libcrux_ml_kem_vector_avx2_SIMD256Vector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + size_t _layer, size_t _initial_coefficient_bound) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ntt_layer_2_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] + + (size_t)1U]); + re->coefficients[round] = uu____0; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ntt_ntt_at_layer_1__libcrux_ml_kem_vector_avx2_SIMD256Vector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + size_t _layer, size_t _initial_coefficient_bound) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ntt_layer_1_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] + + (size_t)1U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] + + (size_t)2U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] + + (size_t)3U]); + re->coefficients[round] = uu____0; + zeta_i[0U] = zeta_i[0U] + (size_t)3U; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___poly_barrett_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *self) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___barrett_reduce( + self->coefficients[i0]); + self->coefficients[i0] = uu____0; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ntt_ntt_vector_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_10size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re) { + size_t zeta_i = (size_t)0U; + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)7U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)6U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)5U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)4U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_3__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)3U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_2__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)2U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_1__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)1U, (size_t)3328U); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___poly_barrett_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cpa_deserialize_then_decompress_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1088size_t_10size_t( + uint8_t *ciphertext, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + u_as_ntt[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + u_as_ntt[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len( + Eurydice_array_to_slice((size_t)1088U, ciphertext, uint8_t, + Eurydice_slice), + uint8_t, size_t) / + (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * + (size_t)10U / (size_t)8U); + i++) { + size_t i0 = i; + Eurydice_slice u_bytes = Eurydice_array_to_subslice( + (size_t)1088U, ciphertext, + (CLITERAL(core_ops_range_Range__size_t){ + .start = + i0 * (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * + (size_t)10U / (size_t)8U), + .end = i0 * (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * + (size_t)10U / (size_t)8U) + + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * + (size_t)10U / (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0 = + libcrux_ml_kem_serialize_deserialize_then_decompress_ring_element_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_10size_t( + u_bytes); + u_as_ntt[i0] = uu____0; + libcrux_ml_kem_ntt_ntt_vector_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_10size_t( + &u_as_ntt[i0]); + } + memcpy( + ret, u_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_decompress_ciphertext_coefficient___4int32_t( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus = + libcrux_intrinsics_avx2_mm256_set1_epi32( + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS); + core_core_arch_x86___m256i two_pow_coefficient_bits = + libcrux_intrinsics_avx2_mm256_set1_epi32((int32_t)1 + << (uint32_t)(int32_t)4); + core_core_arch_x86___m128i coefficients_low = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m256i coefficients_low0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_low); + core_core_arch_x86___m256i decompressed_low = + libcrux_intrinsics_avx2_mm256_mullo_epi32(coefficients_low0, + field_modulus); + core_core_arch_x86___m256i decompressed_low0 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)1, decompressed_low, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_low1 = + libcrux_intrinsics_avx2_mm256_add_epi32(decompressed_low0, + two_pow_coefficient_bits); + core_core_arch_x86___m256i decompressed_low2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)4, decompressed_low1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_low3 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)1, decompressed_low2, + core_core_arch_x86___m256i); + core_core_arch_x86___m128i coefficients_high = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m256i coefficients_high0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_high); + core_core_arch_x86___m256i decompressed_high = + libcrux_intrinsics_avx2_mm256_mullo_epi32(coefficients_high0, + field_modulus); + core_core_arch_x86___m256i decompressed_high0 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)1, decompressed_high, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_high1 = + libcrux_intrinsics_avx2_mm256_add_epi32(decompressed_high0, + two_pow_coefficient_bits); + core_core_arch_x86___m256i decompressed_high2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)4, decompressed_high1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_high3 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)1, decompressed_high2, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed = + libcrux_intrinsics_avx2_mm256_packs_epi32(decompressed_low3, + decompressed_high3); + return libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, compressed, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___decompress_ciphertext_coefficient___4int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_decompress_ciphertext_coefficient___4int32_t( + vector); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_then_decompress_4__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)8U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)8U, .end = i0 * (size_t)8U + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_4( + bytes); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___decompress_ciphertext_coefficient___4int32_t( + coefficient); + re.coefficients[i0] = uu____0; + } + return re; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_decompress_ciphertext_coefficient___5int32_t( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus = + libcrux_intrinsics_avx2_mm256_set1_epi32( + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS); + core_core_arch_x86___m256i two_pow_coefficient_bits = + libcrux_intrinsics_avx2_mm256_set1_epi32((int32_t)1 + << (uint32_t)(int32_t)5); + core_core_arch_x86___m128i coefficients_low = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m256i coefficients_low0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_low); + core_core_arch_x86___m256i decompressed_low = + libcrux_intrinsics_avx2_mm256_mullo_epi32(coefficients_low0, + field_modulus); + core_core_arch_x86___m256i decompressed_low0 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)1, decompressed_low, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_low1 = + libcrux_intrinsics_avx2_mm256_add_epi32(decompressed_low0, + two_pow_coefficient_bits); + core_core_arch_x86___m256i decompressed_low2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)5, decompressed_low1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_low3 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)1, decompressed_low2, + core_core_arch_x86___m256i); + core_core_arch_x86___m128i coefficients_high = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m256i coefficients_high0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_high); + core_core_arch_x86___m256i decompressed_high = + libcrux_intrinsics_avx2_mm256_mullo_epi32(coefficients_high0, + field_modulus); + core_core_arch_x86___m256i decompressed_high0 = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)1, decompressed_high, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_high1 = + libcrux_intrinsics_avx2_mm256_add_epi32(decompressed_high0, + two_pow_coefficient_bits); + core_core_arch_x86___m256i decompressed_high2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)5, decompressed_high1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i decompressed_high3 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)1, decompressed_high2, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed = + libcrux_intrinsics_avx2_mm256_packs_epi32(decompressed_low3, + decompressed_high3); + return libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, compressed, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___decompress_ciphertext_coefficient___5int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_decompress_ciphertext_coefficient___5int32_t( + vector); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_then_decompress_5__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)10U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)10U, .end = i0 * (size_t)10U + (size_t)10U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_5( + bytes); + re.coefficients[i0] = uu____0; + core_core_arch_x86___m256i uu____1 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___decompress_ciphertext_coefficient___5int32_t( + re.coefficients[i0]); + re.coefficients[i0] = uu____1; + } + return re; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_then_decompress_ring_element_v__libcrux_ml_kem_vector_avx2_SIMD256Vector_4size_t( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0; + uu____0 = + libcrux_ml_kem_serialize_deserialize_then_decompress_4__libcrux_ml_kem_vector_avx2_SIMD256Vector( + serialized); + return uu____0; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_ind_cpa_deserialize_secret_key_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + size_t _) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_to_uncompressed_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)24U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)24U, .end = i0 * (size_t)24U + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_12( + bytes); + re.coefficients[i0] = uu____0; + } + return re; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cpa_deserialize_secret_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + Eurydice_slice secret_key, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + secret_as_ntt[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + secret_as_ntt[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(secret_key, uint8_t, size_t) / + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT; + i++) { + size_t i0 = i; + Eurydice_slice secret_bytes = Eurydice_slice_subslice( + secret_key, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT, + .end = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT + + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0 = + libcrux_ml_kem_serialize_deserialize_to_uncompressed_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + secret_bytes); + secret_as_ntt[i0] = uu____0; + } + memcpy( + ret, secret_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *rhs) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + out = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ntt_multiply( + &self->coefficients[i0], &rhs->coefficients[i0], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[(size_t)64U + + (size_t)4U * i0], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[(size_t)64U + + (size_t)4U * i0 + + (size_t)1U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[(size_t)64U + + (size_t)4U * i0 + + (size_t)2U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[(size_t)64U + + (size_t)4U * i0 + + (size_t)3U]); + out.coefficients[i0] = uu____0; + } + return out; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *rhs) { + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice((size_t)16U, self->coefficients, + core_core_arch_x86___m256i, Eurydice_slice), + core_core_arch_x86___m256i, size_t); + i++) { + size_t i0 = i; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + self->coefficients[i0], &rhs->coefficients[i0]); + self->coefficients[i0] = uu____0; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_1__libcrux_ml_kem_vector_avx2_SIMD256Vector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + size_t _layer) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___inv_ntt_layer_1_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] - + (size_t)1U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] - + (size_t)2U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] - + (size_t)3U]); + re->coefficients[round] = uu____0; + zeta_i[0U] = zeta_i[0U] - (size_t)3U; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_2__libcrux_ml_kem_vector_avx2_SIMD256Vector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + size_t _layer) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___inv_ntt_layer_2_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] - + (size_t)1U]); + re->coefficients[round] = uu____0; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_3__libcrux_ml_kem_vector_avx2_SIMD256Vector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + size_t _layer) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___inv_ntt_layer_3_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]]); + re->coefficients[round] = uu____0; + } +} + +__attribute__((target( + "avx2"))) static inline K___libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_invert_ntt_inv_ntt_layer_int_vec_step_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b, + int16_t zeta_r) { + core_core_arch_x86___m256i a_minus_b = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___sub( + b, &a); + a = libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___barrett_reduce( + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + a, &b)); + b = libcrux_ml_kem_vector_traits_montgomery_multiply_fe__libcrux_ml_kem_vector_avx2_SIMD256Vector( + a_minus_b, zeta_r); + return (CLITERAL( + K___libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_vector_avx2_SIMD256Vector){ + .fst = a, .snd = b}); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + size_t layer) { + size_t step = (size_t)1U << (uint32_t)layer; + for (size_t i0 = (size_t)0U; i0 < (size_t)128U >> (uint32_t)layer; i0++) { + size_t round = i0; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + size_t offset = round * step * (size_t)2U; + size_t offset_vec = + offset / LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; + size_t step_vec = + step / LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; + for (size_t i = offset_vec; i < offset_vec + step_vec; i++) { + size_t j = i; + K___libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0 = + libcrux_ml_kem_invert_ntt_inv_ntt_layer_int_vec_step_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re->coefficients[j], re->coefficients[j + step_vec], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R + [zeta_i[0U]]); + core_core_arch_x86___m256i x = uu____0.fst; + core_core_arch_x86___m256i y = uu____0.snd; + re->coefficients[j] = x; + re->coefficients[j + step_vec] = y; + } + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_montgomery__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re) { + size_t zeta_i = + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT / (size_t)2U; + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_1__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)1U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_2__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)2U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_3__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)3U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)4U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)5U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)6U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)7U); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___poly_barrett_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___subtract_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + b) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficient_normal_form = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___montgomery_multiply_by_constant( + b.coefficients[i0], (int16_t)1441); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___barrett_reduce( + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___sub( + self->coefficients[i0], &coefficient_normal_form)); + b.coefficients[i0] = uu____0; + } + return b; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_matrix_compute_message__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *v, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *secret_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *u_as_ntt) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + product = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &secret_as_ntt[i0], &u_as_ntt[i0]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + &result, &product); + } + libcrux_ml_kem_invert_ntt_invert_ntt_montgomery__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + &result); + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___subtract_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + v, result); + return result; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_arithmetic_shift_right___15int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_intrinsics_avx2_mm256_srai_epi16((int32_t)15, vector, + core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___shift_right___15int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_arithmetic_shift_right___15int32_t(vector); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_avx2_SIMD256Vector( + core_core_arch_x86___m256i a) { + core_core_arch_x86___m256i t = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___shift_right___15int32_t( + a); + core_core_arch_x86___m256i fm = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___bitwise_and_with_constant( + t, LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS); + return libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + a, &fm); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_compress_then_serialize_message__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re, + uint8_t ret[32U]) { + uint8_t serialized[32U] = {0U}; + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re.coefficients[i0]); + core_core_arch_x86___m256i coefficient_compressed = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress_1( + coefficient); + uint8_t bytes[2U]; + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_1( + coefficient_compressed, bytes); + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)2U * i0, .end = (size_t)2U * i0 + (size_t)2U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)2U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, serialized, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cpa_decrypt__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1088size_t_960size_t_10size_t_4size_t( + Eurydice_slice secret_key, uint8_t *ciphertext, uint8_t ret[32U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + u_as_ntt[3U]; + libcrux_ml_kem_ind_cpa_deserialize_then_decompress_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1088size_t_10size_t( + ciphertext, u_as_ntt); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + v = libcrux_ml_kem_serialize_deserialize_then_decompress_ring_element_v__libcrux_ml_kem_vector_avx2_SIMD256Vector_4size_t( + Eurydice_array_to_subslice_from((size_t)1088U, ciphertext, + (size_t)960U, uint8_t, size_t, + Eurydice_slice)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + secret_as_ntt[3U]; + libcrux_ml_kem_ind_cpa_deserialize_secret_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + secret_key, secret_as_ntt); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + message = + libcrux_ml_kem_matrix_compute_message__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + &v, secret_as_ntt, u_as_ntt); + uint8_t ret0[32U]; + libcrux_ml_kem_serialize_compress_then_serialize_message__libcrux_ml_kem_vector_avx2_SIMD256Vector( + message, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___G___3size_t( + Eurydice_slice input, uint8_t ret[64U]) { + uint8_t digest[64U] = {0U}; + libcrux_sha3_portable_sha512( + Eurydice_array_to_slice((size_t)64U, digest, uint8_t, Eurydice_slice), + input); + memcpy(ret, digest, (size_t)64U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___PRF___3size_t_32size_t( + Eurydice_slice input, uint8_t ret[32U]) { + uint8_t digest[32U] = {0U}; + libcrux_sha3_portable_shake256( + Eurydice_array_to_slice((size_t)32U, digest, uint8_t, Eurydice_slice), + input); + memcpy(ret, digest, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_ring_elements_reduced_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_1152size_t_3size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_to_reduced_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)24U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)24U, .end = i0 * (size_t)24U + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_12( + bytes); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___cond_subtract_3329( + coefficient); + re.coefficients[i0] = uu____0; + } + return re; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_deserialize_ring_elements_reduced__libcrux_ml_kem_vector_avx2_SIMD256Vector_1152size_t_3size_t( + Eurydice_slice public_key, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + deserialized_pk[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + deserialized_pk[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(public_key, uint8_t, size_t) / + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT; + i++) { + size_t i0 = i; + Eurydice_slice ring_element = Eurydice_slice_subslice( + public_key, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT, + .end = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT + + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0 = + libcrux_ml_kem_serialize_deserialize_to_reduced_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + ring_element); + deserialized_pk[i0] = uu____0; + } + memcpy( + ret, deserialized_pk, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_matrix_sample_matrix_A_closure_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + size_t _j) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_matrix_sample_matrix_A_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + size_t _i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret0[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + ret0[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + memcpy( + ret, ret0, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); +} + +typedef libcrux_sha3_avx2_x4_incremental_KeccakState + libcrux_ml_kem_hash_functions_avx2_Simd256Hash; + +__attribute__(( + target("avx2"))) static inline libcrux_sha3_avx2_x4_incremental_KeccakState +libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___shake128_init_absorb___3size_t( + uint8_t input[3U][34U]) { + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + state = libcrux_sha3_avx2_x4_incremental_shake128_init(); + libcrux_sha3_avx2_x4_incremental_shake128_absorb_final( + &state, + Eurydice_array_to_slice((size_t)34U, input[0U], uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)34U, input[1U], uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)34U, input[2U], uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)34U, input[0U], uint8_t, Eurydice_slice)); + return state; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___shake128_squeeze_three_blocks___3size_t( + libcrux_sha3_avx2_x4_incremental_KeccakState *self, uint8_t ret[3U][504U]) { + uint8_t out[3U][504U] = {{0U}}; + uint8_t out0[504U] = {0U}; + uint8_t out1[504U] = {0U}; + uint8_t out2[504U] = {0U}; + uint8_t out3[504U] = {0U}; + libcrux_sha3_avx2_x4_incremental_shake128_squeeze_first_three_blocks( + self, + Eurydice_array_to_slice((size_t)504U, out0, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)504U, out1, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)504U, out2, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)504U, out3, uint8_t, Eurydice_slice)); + uint8_t uu____0[504U]; + memcpy(uu____0, out0, (size_t)504U * sizeof(uint8_t)); + memcpy(out[0U], uu____0, (size_t)504U * sizeof(uint8_t)); + uint8_t uu____1[504U]; + memcpy(uu____1, out1, (size_t)504U * sizeof(uint8_t)); + memcpy(out[1U], uu____1, (size_t)504U * sizeof(uint8_t)); + uint8_t uu____2[504U]; + memcpy(uu____2, out2, (size_t)504U * sizeof(uint8_t)); + memcpy(out[2U], uu____2, (size_t)504U * sizeof(uint8_t)); + memcpy(ret, out, (size_t)3U * sizeof(uint8_t[504U])); +} + +__attribute__((target("avx2"))) static inline bool +libcrux_ml_kem_sampling_sample_from_uniform_distribution_next__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_504size_t( + uint8_t randomness[3U][504U], size_t *sampled_coefficients, + int16_t (*out)[272U]) { + for (size_t i0 = (size_t)0U; i0 < (size_t)3U; i0++) { + size_t i1 = i0; + for (size_t i = (size_t)0U; i < (size_t)504U / (size_t)24U; i++) { + size_t r = i; + if (sampled_coefficients[i1] < + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT) { + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)504U, randomness[i1], + (CLITERAL(core_ops_range_Range__size_t){ + .start = r * (size_t)24U, + .end = r * (size_t)24U + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + size_t sampled = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___rej_sample( + uu____0, + Eurydice_array_to_subslice( + (size_t)272U, out[i1], + (CLITERAL(core_ops_range_Range__size_t){ + .start = sampled_coefficients[i1], + .end = sampled_coefficients[i1] + (size_t)16U}), + int16_t, core_ops_range_Range__size_t, Eurydice_slice)); + size_t uu____1 = i1; + sampled_coefficients[uu____1] = sampled_coefficients[uu____1] + sampled; + } + } + } + bool done = true; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + if (sampled_coefficients[i0] >= + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT) { + sampled_coefficients[i0] = + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT; + } else { + done = false; + } + } + return done; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___shake128_squeeze_block___3size_t( + libcrux_sha3_avx2_x4_incremental_KeccakState *self, uint8_t ret[3U][168U]) { + uint8_t out[3U][168U] = {{0U}}; + uint8_t out0[168U] = {0U}; + uint8_t out1[168U] = {0U}; + uint8_t out2[168U] = {0U}; + uint8_t out3[168U] = {0U}; + libcrux_sha3_avx2_x4_incremental_shake128_squeeze_next_block( + self, + Eurydice_array_to_slice((size_t)168U, out0, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)168U, out1, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)168U, out2, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)168U, out3, uint8_t, Eurydice_slice)); + uint8_t uu____0[168U]; + memcpy(uu____0, out0, (size_t)168U * sizeof(uint8_t)); + memcpy(out[0U], uu____0, (size_t)168U * sizeof(uint8_t)); + uint8_t uu____1[168U]; + memcpy(uu____1, out1, (size_t)168U * sizeof(uint8_t)); + memcpy(out[1U], uu____1, (size_t)168U * sizeof(uint8_t)); + uint8_t uu____2[168U]; + memcpy(uu____2, out2, (size_t)168U * sizeof(uint8_t)); + memcpy(out[2U], uu____2, (size_t)168U * sizeof(uint8_t)); + memcpy(ret, out, (size_t)3U * sizeof(uint8_t[168U])); +} + +__attribute__((target("avx2"))) static inline bool +libcrux_ml_kem_sampling_sample_from_uniform_distribution_next__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_168size_t( + uint8_t randomness[3U][168U], size_t *sampled_coefficients, + int16_t (*out)[272U]) { + for (size_t i0 = (size_t)0U; i0 < (size_t)3U; i0++) { + size_t i1 = i0; + for (size_t i = (size_t)0U; i < (size_t)168U / (size_t)24U; i++) { + size_t r = i; + if (sampled_coefficients[i1] < + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT) { + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)168U, randomness[i1], + (CLITERAL(core_ops_range_Range__size_t){ + .start = r * (size_t)24U, + .end = r * (size_t)24U + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + size_t sampled = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___rej_sample( + uu____0, + Eurydice_array_to_subslice( + (size_t)272U, out[i1], + (CLITERAL(core_ops_range_Range__size_t){ + .start = sampled_coefficients[i1], + .end = sampled_coefficients[i1] + (size_t)16U}), + int16_t, core_ops_range_Range__size_t, Eurydice_slice)); + size_t uu____1 = i1; + sampled_coefficients[uu____1] = sampled_coefficients[uu____1] + sampled; + } + } + } + bool done = true; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + if (sampled_coefficients[i0] >= + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT) { + sampled_coefficients[i0] = + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT; + } else { + done = false; + } + } + return done; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___from_i16_array__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice a) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___from_i16_array( + Eurydice_slice_subslice( + a, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)16U, + .end = (i0 + (size_t)1U) * (size_t)16U}), + int16_t, core_ops_range_Range__size_t, Eurydice_slice)); + result.coefficients[i0] = uu____0; + } + return result; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_sampling_sample_from_xof_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + int16_t s[272U]) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___from_i16_array__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_array_to_subslice((size_t)272U, s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)256U}), + int16_t, core_ops_range_Range__size_t, + Eurydice_slice)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_sampling_sample_from_xof__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + uint8_t seeds[3U][34U], + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U]) { + size_t sampled_coefficients[3U] = {0U}; + int16_t out[3U][272U] = {{0U}}; + uint8_t uu____0[3U][34U]; + memcpy(uu____0, seeds, (size_t)3U * sizeof(uint8_t[34U])); + libcrux_sha3_avx2_x4_incremental_KeccakState xof_state = + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___shake128_init_absorb___3size_t( + uu____0); + uint8_t randomness0[3U][504U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___shake128_squeeze_three_blocks___3size_t( + &xof_state, randomness0); + uint8_t uu____1[3U][504U]; + memcpy(uu____1, randomness0, (size_t)3U * sizeof(uint8_t[504U])); + bool done = + libcrux_ml_kem_sampling_sample_from_uniform_distribution_next__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_504size_t( + uu____1, sampled_coefficients, out); + while (true) { + if (done) { + break; + } else { + uint8_t randomness[3U][168U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___shake128_squeeze_block___3size_t( + &xof_state, randomness); + uint8_t uu____2[3U][168U]; + memcpy(uu____2, randomness, (size_t)3U * sizeof(uint8_t[168U])); + done = + libcrux_ml_kem_sampling_sample_from_uniform_distribution_next__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_168size_t( + uu____2, sampled_coefficients, out); + } + } + int16_t uu____3[3U][272U]; + memcpy(uu____3, out, (size_t)3U * sizeof(int16_t[272U])); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret0[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + ret0[i] = + libcrux_ml_kem_sampling_sample_from_xof_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + uu____3[i]); + } + memcpy( + ret, ret0, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_matrix_sample_matrix_A__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + uint8_t seed[34U], bool transpose, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U][3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + A_transpose[3U][3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + libcrux_ml_kem_matrix_sample_matrix_A_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + i, A_transpose[i]); + } + for (size_t i0 = (size_t)0U; i0 < (size_t)3U; i0++) { + size_t i1 = i0; + uint8_t uu____0[34U]; + memcpy(uu____0, seed, (size_t)34U * sizeof(uint8_t)); + uint8_t seeds[3U][34U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + memcpy(seeds[i], uu____0, (size_t)34U * sizeof(uint8_t)); + } + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t j = i; + seeds[j][32U] = (uint8_t)i1; + seeds[j][33U] = (uint8_t)j; + } + uint8_t uu____1[3U][34U]; + memcpy(uu____1, seeds, (size_t)3U * sizeof(uint8_t[34U])); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + sampled[3U]; + libcrux_ml_kem_sampling_sample_from_xof__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + uu____1, sampled); + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, sampled, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + size_t); + i++) { + size_t j = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + sample = sampled[j]; + if (transpose) { + A_transpose[j][i1] = sample; + } else { + A_transpose[i1][j] = sample; + } + } + } + memcpy( + ret, A_transpose, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + [3U])); +} + +typedef struct + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t_s { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + fst[3U]; + uint8_t snd; +} K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t; + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_2size_t_128size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___PRFxN___3size_t_128size_t( + uint8_t (*input)[33U], uint8_t ret[3U][128U]) { + uint8_t out[3U][128U] = {{0U}}; + uint8_t out0[128U] = {0U}; + uint8_t out1[128U] = {0U}; + uint8_t out2[128U] = {0U}; + uint8_t out3[128U] = {0U}; + libcrux_sha3_avx2_x4_shake256( + Eurydice_array_to_slice((size_t)33U, input[0U], uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)33U, input[1U], uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)33U, input[2U], uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)33U, input[0U], uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)128U, out0, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)128U, out1, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)128U, out2, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)128U, out3, uint8_t, Eurydice_slice)); + uint8_t uu____0[128U]; + memcpy(uu____0, out0, (size_t)128U * sizeof(uint8_t)); + memcpy(out[0U], uu____0, (size_t)128U * sizeof(uint8_t)); + uint8_t uu____1[128U]; + memcpy(uu____1, out1, (size_t)128U * sizeof(uint8_t)); + memcpy(out[1U], uu____1, (size_t)128U * sizeof(uint8_t)); + uint8_t uu____2[128U]; + memcpy(uu____2, out2, (size_t)128U * sizeof(uint8_t)); + memcpy(out[2U], uu____2, (size_t)128U * sizeof(uint8_t)); + memcpy(ret, out, (size_t)3U * sizeof(uint8_t[128U])); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_sampling_sample_from_binomial_distribution_2__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice randomness) { + int16_t sampled_i16s[256U] = {0U}; + for (size_t i0 = (size_t)0U; + i0 < + core_slice___Slice_T___len(randomness, uint8_t, size_t) / (size_t)4U; + i0++) { + size_t chunk_number = i0; + Eurydice_slice byte_chunk = Eurydice_slice_subslice( + randomness, + (CLITERAL(core_ops_range_Range__size_t){ + .start = chunk_number * (size_t)4U, + .end = chunk_number * (size_t)4U + (size_t)4U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint32_t uu____0 = (uint32_t)Eurydice_slice_index( + byte_chunk, (size_t)0U, uint8_t, uint8_t *, uint8_t); + uint32_t uu____1 = + uu____0 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)1U, + uint8_t, uint8_t *, uint8_t) + << 8U; + uint32_t uu____2 = + uu____1 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)2U, + uint8_t, uint8_t *, uint8_t) + << 16U; + uint32_t random_bits_as_u32 = + uu____2 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)3U, + uint8_t, uint8_t *, uint8_t) + << 24U; + uint32_t even_bits = random_bits_as_u32 & 1431655765U; + uint32_t odd_bits = random_bits_as_u32 >> 1U & 1431655765U; + uint32_t coin_toss_outcomes = even_bits + odd_bits; + for (uint32_t i = 0U; i < CORE_NUM__U32_8__BITS / 4U; i++) { + uint32_t outcome_set = i; + uint32_t outcome_set0 = outcome_set * 4U; + int16_t outcome_1 = + (int16_t)(coin_toss_outcomes >> (uint32_t)outcome_set0 & 3U); + int16_t outcome_2 = + (int16_t)(coin_toss_outcomes >> (uint32_t)(outcome_set0 + 2U) & 3U); + size_t offset = (size_t)(outcome_set0 >> 2U); + sampled_i16s[(size_t)8U * chunk_number + offset] = outcome_1 - outcome_2; + } + } + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___from_i16_array__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_array_to_slice((size_t)256U, sampled_i16s, int16_t, + Eurydice_slice)); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_sampling_sample_from_binomial_distribution_3__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_slice randomness) { + int16_t sampled_i16s[256U] = {0U}; + for (size_t i0 = (size_t)0U; + i0 < + core_slice___Slice_T___len(randomness, uint8_t, size_t) / (size_t)3U; + i0++) { + size_t chunk_number = i0; + Eurydice_slice byte_chunk = Eurydice_slice_subslice( + randomness, + (CLITERAL(core_ops_range_Range__size_t){ + .start = chunk_number * (size_t)3U, + .end = chunk_number * (size_t)3U + (size_t)3U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint32_t uu____0 = (uint32_t)Eurydice_slice_index( + byte_chunk, (size_t)0U, uint8_t, uint8_t *, uint8_t); + uint32_t uu____1 = + uu____0 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)1U, + uint8_t, uint8_t *, uint8_t) + << 8U; + uint32_t random_bits_as_u24 = + uu____1 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)2U, + uint8_t, uint8_t *, uint8_t) + << 16U; + uint32_t first_bits = random_bits_as_u24 & 2396745U; + uint32_t second_bits = random_bits_as_u24 >> 1U & 2396745U; + uint32_t third_bits = random_bits_as_u24 >> 2U & 2396745U; + uint32_t coin_toss_outcomes = first_bits + second_bits + third_bits; + for (int32_t i = (int32_t)0; i < (int32_t)24 / (int32_t)6; i++) { + int32_t outcome_set = i; + int32_t outcome_set0 = outcome_set * (int32_t)6; + int16_t outcome_1 = + (int16_t)(coin_toss_outcomes >> (uint32_t)outcome_set0 & 7U); + int16_t outcome_2 = (int16_t)(coin_toss_outcomes >> + (uint32_t)(outcome_set0 + (int32_t)3) & + 7U); + size_t offset = (size_t)(outcome_set0 / (int32_t)6); + sampled_i16s[(size_t)4U * chunk_number + offset] = outcome_1 - outcome_2; + } + } + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___from_i16_array__libcrux_ml_kem_vector_avx2_SIMD256Vector( + Eurydice_array_to_slice((size_t)256U, sampled_i16s, int16_t, + Eurydice_slice)); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_sampling_sample_from_binomial_distribution__libcrux_ml_kem_vector_avx2_SIMD256Vector_2size_t( + Eurydice_slice randomness) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0; + uu____0 = + libcrux_ml_kem_sampling_sample_from_binomial_distribution_2__libcrux_ml_kem_vector_avx2_SIMD256Vector( + randomness); + return uu____0; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ntt_ntt_at_layer_7__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re) { + size_t step = LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT / (size_t)2U; + for (size_t i = (size_t)0U; i < step; i++) { + size_t j = i; + core_core_arch_x86___m256i t = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___multiply_by_constant( + re->coefficients[j + step], (int16_t)-1600); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___sub( + re->coefficients[j], &t); + re->coefficients[j + step] = uu____0; + core_core_arch_x86___m256i uu____1 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + re->coefficients[j], &t); + re->coefficients[j] = uu____1; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ntt_ntt_binomially_sampled_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re) { + libcrux_ml_kem_ntt_ntt_at_layer_7__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re); + size_t zeta_i = (size_t)1U; + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)6U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)5U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)4U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_3__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)3U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_2__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)2U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_1__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &zeta_i, re, (size_t)1U, (size_t)3U); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___poly_barrett_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re); +} + +__attribute__((target( + "avx2"))) static inline K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t +libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_2size_t_128size_t( + uint8_t prf_input[33U], uint8_t domain_separator) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re_as_ntt[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + re_as_ntt[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + uint8_t uu____0[33U]; + memcpy(uu____0, prf_input, (size_t)33U * sizeof(uint8_t)); + uint8_t prf_inputs[3U][33U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + memcpy(prf_inputs[i], uu____0, (size_t)33U * sizeof(uint8_t)); + } + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + prf_inputs[i0][32U] = domain_separator; + domain_separator = (uint32_t)domain_separator + 1U; + } + uint8_t prf_outputs[3U][128U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___PRFxN___3size_t_128size_t( + prf_inputs, prf_outputs); + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____1 = + libcrux_ml_kem_sampling_sample_from_binomial_distribution__libcrux_ml_kem_vector_avx2_SIMD256Vector_2size_t( + Eurydice_array_to_slice((size_t)128U, prf_outputs[i0], uint8_t, + Eurydice_slice)); + re_as_ntt[i0] = uu____1; + libcrux_ml_kem_ntt_ntt_binomially_sampled_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &re_as_ntt[i0]); + } + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____2[3U]; + memcpy( + uu____2, re_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t + lit; + memcpy( + lit.fst, uu____2, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + lit.snd = domain_separator; + return lit; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_ind_cpa_sample_ring_element_cbd_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_128size_t_2size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target( + "avx2"))) static inline K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t +libcrux_ml_kem_ind_cpa_sample_ring_element_cbd__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_128size_t_2size_t( + uint8_t prf_input[33U], uint8_t domain_separator) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + error_1[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + error_1[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + uint8_t uu____0[33U]; + memcpy(uu____0, prf_input, (size_t)33U * sizeof(uint8_t)); + uint8_t prf_inputs[3U][33U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + memcpy(prf_inputs[i], uu____0, (size_t)33U * sizeof(uint8_t)); + } + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + prf_inputs[i0][32U] = domain_separator; + domain_separator = (uint32_t)domain_separator + 1U; + } + uint8_t prf_outputs[3U][128U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___PRFxN___3size_t_128size_t( + prf_inputs, prf_outputs); + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____1 = + libcrux_ml_kem_sampling_sample_from_binomial_distribution__libcrux_ml_kem_vector_avx2_SIMD256Vector_2size_t( + Eurydice_array_to_slice((size_t)128U, prf_outputs[i0], uint8_t, + Eurydice_slice)); + error_1[i0] = uu____1; + } + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____2[3U]; + memcpy( + uu____2, error_1, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t + lit; + memcpy( + lit.fst, uu____2, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + lit.snd = domain_separator; + return lit; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___PRF___3size_t_128size_t( + Eurydice_slice input, uint8_t ret[128U]) { + uint8_t digest[128U] = {0U}; + libcrux_sha3_portable_shake256( + Eurydice_array_to_slice((size_t)128U, digest, uint8_t, Eurydice_slice), + input); + memcpy(ret, digest, (size_t)128U * sizeof(uint8_t)); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_matrix_compute_vector_u_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_error_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *error) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t j = i; + core_core_arch_x86___m256i coefficient_normal_form = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___montgomery_multiply_by_constant( + self->coefficients[j], (int16_t)1441); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___barrett_reduce( + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + coefficient_normal_form, &error->coefficients[j])); + self->coefficients[j] = uu____0; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_matrix_compute_vector_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector ( + *a_as_ntt)[3U], + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *r_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *error_1, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + result[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + result[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + for ( + size_t i0 = (size_t)0U; + i0 < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, a_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + [3U], + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + [3U], + size_t); + i0++) { + size_t i1 = i0; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *row = a_as_ntt[i1]; + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, row, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + size_t); + i++) { + size_t j = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *a_element = &row[j]; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + product = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_avx2_SIMD256Vector( + a_element, &r_as_ntt[j]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + &result[i1], &product); + } + libcrux_ml_kem_invert_ntt_invert_ntt_montgomery__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + &result[i1]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_error_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &result[i1], &error_1[i1]); + } + memcpy( + ret, result, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_traits_decompress_1__libcrux_ml_kem_vector_avx2_SIMD256Vector( + core_core_arch_x86___m256i v) { + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___ZERO(); + return libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___bitwise_and_with_constant( + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___sub( + uu____0, &v), + (int16_t)1665); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_then_decompress_message__libcrux_ml_kem_vector_avx2_SIMD256Vector( + uint8_t serialized[32U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficient_compressed = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___deserialize_1( + Eurydice_array_to_subslice( + (size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)2U * i0, + .end = (size_t)2U * i0 + (size_t)2U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_traits_decompress_1__libcrux_ml_kem_vector_avx2_SIMD256Vector( + coefficient_compressed); + re.coefficients[i0] = uu____0; + } + return re; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_message_error_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *message, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + result) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficient_normal_form = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___montgomery_multiply_by_constant( + result.coefficients[i0], (int16_t)1441); + core_core_arch_x86___m256i tmp = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + self->coefficients[i0], &message->coefficients[i0]); + core_core_arch_x86___m256i tmp0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + coefficient_normal_form, &tmp); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___barrett_reduce( + tmp0); + result.coefficients[i0] = uu____0; + } + return result; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_matrix_compute_ring_element_v__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *t_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *r_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *error_2, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *message) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + product = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &t_as_ntt[i0], &r_as_ntt[i0]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + &result, &product); + } + libcrux_ml_kem_invert_ntt_invert_ntt_montgomery__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + &result); + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_message_error_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + error_2, message, result); + return result; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_compress_ciphertext_coefficient___10int32_t( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus_halved = + libcrux_intrinsics_avx2_mm256_set1_epi32( + ((int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS - (int32_t)1) / + (int32_t)2); + core_core_arch_x86___m256i compression_factor = + libcrux_intrinsics_avx2_mm256_set1_epi32((int32_t)10321340); + core_core_arch_x86___m256i coefficient_bits_mask = + libcrux_intrinsics_avx2_mm256_set1_epi32( + ((int32_t)1 << (uint32_t)(int32_t)10) - (int32_t)1); + core_core_arch_x86___m128i coefficients_low = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m256i coefficients_low0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_low); + core_core_arch_x86___m256i compressed_low = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)10, coefficients_low0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_low0 = + libcrux_intrinsics_avx2_mm256_add_epi32(compressed_low, + field_modulus_halved); + core_core_arch_x86___m256i compressed_low1 = + libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32(compressed_low0, + compression_factor); + core_core_arch_x86___m256i compressed_low2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)3, compressed_low1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_low3 = + libcrux_intrinsics_avx2_mm256_and_si256(compressed_low2, + coefficient_bits_mask); + core_core_arch_x86___m128i coefficients_high = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m256i coefficients_high0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_high); + core_core_arch_x86___m256i compressed_high = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)10, coefficients_high0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_high0 = + libcrux_intrinsics_avx2_mm256_add_epi32(compressed_high, + field_modulus_halved); + core_core_arch_x86___m256i compressed_high1 = + libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32(compressed_high0, + compression_factor); + core_core_arch_x86___m256i compressed_high2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)3, compressed_high1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_high3 = + libcrux_intrinsics_avx2_mm256_and_si256(compressed_high2, + coefficient_bits_mask); + core_core_arch_x86___m256i compressed = + libcrux_intrinsics_avx2_mm256_packs_epi32(compressed_low3, + compressed_high3); + return libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, compressed, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress___10int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_compress_ciphertext_coefficient___10int32_t( + vector); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_compress_then_serialize_10__libcrux_ml_kem_vector_avx2_SIMD256Vector_320size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + uint8_t ret[320U]) { + uint8_t serialized[320U] = {0U}; + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress___10int32_t( + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re->coefficients[i0])); + uint8_t bytes[20U]; + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_10( + coefficient, bytes); + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)320U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)20U * i0, .end = (size_t)20U * i0 + (size_t)20U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)20U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, serialized, (size_t)320U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_compress_ciphertext_coefficient___11int32_t( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus_halved = + libcrux_intrinsics_avx2_mm256_set1_epi32( + ((int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS - (int32_t)1) / + (int32_t)2); + core_core_arch_x86___m256i compression_factor = + libcrux_intrinsics_avx2_mm256_set1_epi32((int32_t)10321340); + core_core_arch_x86___m256i coefficient_bits_mask = + libcrux_intrinsics_avx2_mm256_set1_epi32( + ((int32_t)1 << (uint32_t)(int32_t)11) - (int32_t)1); + core_core_arch_x86___m128i coefficients_low = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m256i coefficients_low0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_low); + core_core_arch_x86___m256i compressed_low = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)11, coefficients_low0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_low0 = + libcrux_intrinsics_avx2_mm256_add_epi32(compressed_low, + field_modulus_halved); + core_core_arch_x86___m256i compressed_low1 = + libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32(compressed_low0, + compression_factor); + core_core_arch_x86___m256i compressed_low2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)3, compressed_low1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_low3 = + libcrux_intrinsics_avx2_mm256_and_si256(compressed_low2, + coefficient_bits_mask); + core_core_arch_x86___m128i coefficients_high = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m256i coefficients_high0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_high); + core_core_arch_x86___m256i compressed_high = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)11, coefficients_high0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_high0 = + libcrux_intrinsics_avx2_mm256_add_epi32(compressed_high, + field_modulus_halved); + core_core_arch_x86___m256i compressed_high1 = + libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32(compressed_high0, + compression_factor); + core_core_arch_x86___m256i compressed_high2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)3, compressed_high1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_high3 = + libcrux_intrinsics_avx2_mm256_and_si256(compressed_high2, + coefficient_bits_mask); + core_core_arch_x86___m256i compressed = + libcrux_intrinsics_avx2_mm256_packs_epi32(compressed_low3, + compressed_high3); + return libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, compressed, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress___11int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_compress_ciphertext_coefficient___11int32_t( + vector); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_compress_then_serialize_11__libcrux_ml_kem_vector_avx2_SIMD256Vector_320size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + uint8_t ret[320U]) { + uint8_t serialized[320U] = {0U}; + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress___11int32_t( + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re->coefficients[i0])); + uint8_t bytes[22U]; + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_11( + coefficient, bytes); + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)320U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)22U * i0, .end = (size_t)22U * i0 + (size_t)22U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)22U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, serialized, (size_t)320U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_compress_then_serialize_ring_element_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_10size_t_320size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + uint8_t ret[320U]) { + uint8_t uu____0[320U]; + libcrux_ml_kem_serialize_compress_then_serialize_10__libcrux_ml_kem_vector_avx2_SIMD256Vector_320size_t( + re, uu____0); + memcpy(ret, uu____0, (size_t)320U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cpa_compress_then_serialize_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_960size_t_10size_t_320size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + input[3U], + Eurydice_slice out) { + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, input, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + size_t); + i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = input[i0]; + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * ((size_t)960U / (size_t)3U), + .end = (i0 + (size_t)1U) * ((size_t)960U / (size_t)3U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret[320U]; + libcrux_ml_kem_serialize_compress_then_serialize_ring_element_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_10size_t_320size_t( + &re, ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)320U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_compress_ciphertext_coefficient___4int32_t( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus_halved = + libcrux_intrinsics_avx2_mm256_set1_epi32( + ((int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS - (int32_t)1) / + (int32_t)2); + core_core_arch_x86___m256i compression_factor = + libcrux_intrinsics_avx2_mm256_set1_epi32((int32_t)10321340); + core_core_arch_x86___m256i coefficient_bits_mask = + libcrux_intrinsics_avx2_mm256_set1_epi32( + ((int32_t)1 << (uint32_t)(int32_t)4) - (int32_t)1); + core_core_arch_x86___m128i coefficients_low = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m256i coefficients_low0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_low); + core_core_arch_x86___m256i compressed_low = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)4, coefficients_low0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_low0 = + libcrux_intrinsics_avx2_mm256_add_epi32(compressed_low, + field_modulus_halved); + core_core_arch_x86___m256i compressed_low1 = + libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32(compressed_low0, + compression_factor); + core_core_arch_x86___m256i compressed_low2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)3, compressed_low1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_low3 = + libcrux_intrinsics_avx2_mm256_and_si256(compressed_low2, + coefficient_bits_mask); + core_core_arch_x86___m128i coefficients_high = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m256i coefficients_high0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_high); + core_core_arch_x86___m256i compressed_high = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)4, coefficients_high0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_high0 = + libcrux_intrinsics_avx2_mm256_add_epi32(compressed_high, + field_modulus_halved); + core_core_arch_x86___m256i compressed_high1 = + libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32(compressed_high0, + compression_factor); + core_core_arch_x86___m256i compressed_high2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)3, compressed_high1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_high3 = + libcrux_intrinsics_avx2_mm256_and_si256(compressed_high2, + coefficient_bits_mask); + core_core_arch_x86___m256i compressed = + libcrux_intrinsics_avx2_mm256_packs_epi32(compressed_low3, + compressed_high3); + return libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, compressed, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress___4int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_compress_ciphertext_coefficient___4int32_t( + vector); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_compress_then_serialize_4__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re, + Eurydice_slice serialized) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress___4int32_t( + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re.coefficients[i0])); + uint8_t bytes[8U]; + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_4( + coefficient, bytes); + Eurydice_slice uu____0 = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)8U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2_compress_compress_ciphertext_coefficient___5int32_t( + core_core_arch_x86___m256i vector) { + core_core_arch_x86___m256i field_modulus_halved = + libcrux_intrinsics_avx2_mm256_set1_epi32( + ((int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS - (int32_t)1) / + (int32_t)2); + core_core_arch_x86___m256i compression_factor = + libcrux_intrinsics_avx2_mm256_set1_epi32((int32_t)10321340); + core_core_arch_x86___m256i coefficient_bits_mask = + libcrux_intrinsics_avx2_mm256_set1_epi32( + ((int32_t)1 << (uint32_t)(int32_t)5) - (int32_t)1); + core_core_arch_x86___m128i coefficients_low = + libcrux_intrinsics_avx2_mm256_castsi256_si128(vector); + core_core_arch_x86___m256i coefficients_low0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_low); + core_core_arch_x86___m256i compressed_low = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)5, coefficients_low0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_low0 = + libcrux_intrinsics_avx2_mm256_add_epi32(compressed_low, + field_modulus_halved); + core_core_arch_x86___m256i compressed_low1 = + libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32(compressed_low0, + compression_factor); + core_core_arch_x86___m256i compressed_low2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)3, compressed_low1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_low3 = + libcrux_intrinsics_avx2_mm256_and_si256(compressed_low2, + coefficient_bits_mask); + core_core_arch_x86___m128i coefficients_high = + libcrux_intrinsics_avx2_mm256_extracti128_si256( + (int32_t)1, vector, core_core_arch_x86___m128i); + core_core_arch_x86___m256i coefficients_high0 = + libcrux_intrinsics_avx2_mm256_cvtepi16_epi32(coefficients_high); + core_core_arch_x86___m256i compressed_high = + libcrux_intrinsics_avx2_mm256_slli_epi32((int32_t)5, coefficients_high0, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_high0 = + libcrux_intrinsics_avx2_mm256_add_epi32(compressed_high, + field_modulus_halved); + core_core_arch_x86___m256i compressed_high1 = + libcrux_ml_kem_vector_avx2_compress_mulhi_mm256_epi32(compressed_high0, + compression_factor); + core_core_arch_x86___m256i compressed_high2 = + libcrux_intrinsics_avx2_mm256_srli_epi32((int32_t)3, compressed_high1, + core_core_arch_x86___m256i); + core_core_arch_x86___m256i compressed_high3 = + libcrux_intrinsics_avx2_mm256_and_si256(compressed_high2, + coefficient_bits_mask); + core_core_arch_x86___m256i compressed = + libcrux_intrinsics_avx2_mm256_packs_epi32(compressed_low3, + compressed_high3); + return libcrux_intrinsics_avx2_mm256_permute4x64_epi64( + (int32_t)216, compressed, core_core_arch_x86___m256i); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress___5int32_t( + core_core_arch_x86___m256i vector) { + return libcrux_ml_kem_vector_avx2_compress_compress_ciphertext_coefficient___5int32_t( + vector); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_compress_then_serialize_5__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re, + Eurydice_slice serialized) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficients = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___compress___5int32_t( + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re.coefficients[i0])); + uint8_t bytes[10U]; + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_5( + coefficients, bytes); + Eurydice_slice uu____0 = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)10U * i0, .end = (size_t)10U * i0 + (size_t)10U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)10U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_compress_then_serialize_ring_element_v__libcrux_ml_kem_vector_avx2_SIMD256Vector_4size_t_128size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re, + Eurydice_slice out) { + libcrux_ml_kem_serialize_compress_then_serialize_4__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re, out); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cpa_encrypt__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + Eurydice_slice public_key, uint8_t message[32U], Eurydice_slice randomness, + uint8_t ret[1088U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + t_as_ntt[3U]; + libcrux_ml_kem_serialize_deserialize_ring_elements_reduced__libcrux_ml_kem_vector_avx2_SIMD256Vector_1152size_t_3size_t( + Eurydice_slice_subslice_to(public_key, (size_t)1152U, uint8_t, size_t, + Eurydice_slice), + t_as_ntt); + Eurydice_slice seed = Eurydice_slice_subslice_from( + public_key, (size_t)1152U, uint8_t, size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + A_transpose[3U][3U]; + uint8_t ret0[34U]; + libcrux_ml_kem_utils_into_padded_array___34size_t(seed, ret0); + libcrux_ml_kem_matrix_sample_matrix_A__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + ret0, false, A_transpose); + uint8_t prf_input[33U]; + libcrux_ml_kem_utils_into_padded_array___33size_t(randomness, prf_input); + uint8_t uu____0[33U]; + memcpy(uu____0, prf_input, (size_t)33U * sizeof(uint8_t)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t + uu____1 = + libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_2size_t_128size_t( + uu____0, 0U); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + r_as_ntt[3U]; + memcpy( + r_as_ntt, uu____1.fst, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + uint8_t domain_separator0 = uu____1.snd; + uint8_t uu____2[33U]; + memcpy(uu____2, prf_input, (size_t)33U * sizeof(uint8_t)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t + uu____3 = + libcrux_ml_kem_ind_cpa_sample_ring_element_cbd__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_128size_t_2size_t( + uu____2, domain_separator0); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + error_1[3U]; + memcpy( + error_1, uu____3.fst, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + uint8_t domain_separator = uu____3.snd; + prf_input[32U] = domain_separator; + uint8_t prf_output[128U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___PRF___3size_t_128size_t( + Eurydice_array_to_slice((size_t)33U, prf_input, uint8_t, Eurydice_slice), + prf_output); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + error_2 = + libcrux_ml_kem_sampling_sample_from_binomial_distribution__libcrux_ml_kem_vector_avx2_SIMD256Vector_2size_t( + Eurydice_array_to_slice((size_t)128U, prf_output, uint8_t, + Eurydice_slice)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + u[3U]; + libcrux_ml_kem_matrix_compute_vector_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + A_transpose, r_as_ntt, error_1, u); + uint8_t uu____4[32U]; + memcpy(uu____4, message, (size_t)32U * sizeof(uint8_t)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + message_as_ring_element = + libcrux_ml_kem_serialize_deserialize_then_decompress_message__libcrux_ml_kem_vector_avx2_SIMD256Vector( + uu____4); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + v = libcrux_ml_kem_matrix_compute_ring_element_v__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + t_as_ntt, r_as_ntt, &error_2, &message_as_ring_element); + uint8_t ciphertext[1088U] = {0U}; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____5[3U]; + memcpy( + uu____5, u, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + libcrux_ml_kem_ind_cpa_compress_then_serialize_u__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_960size_t_10size_t_320size_t( + uu____5, Eurydice_array_to_subslice( + (size_t)1088U, ciphertext, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)960U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____6 = v; + libcrux_ml_kem_serialize_compress_then_serialize_ring_element_v__libcrux_ml_kem_vector_avx2_SIMD256Vector_4size_t_128size_t( + uu____6, + Eurydice_array_to_subslice_from((size_t)1088U, ciphertext, (size_t)960U, + uint8_t, size_t, Eurydice_slice)); + memcpy(ret, ciphertext, (size_t)1088U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___kdf__libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1088size_t( + Eurydice_slice shared_secret, libcrux_ml_kem_mlkem768_MlKem768Ciphertext *_, + uint8_t ret[32U]) { + uint8_t out[32U] = {0U}; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_slice((size_t)32U, out, uint8_t, Eurydice_slice), + shared_secret, uint8_t, void *); + memcpy(ret, out, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cca_decapsulate__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_libcrux_ml_kem_ind_cca_MlKem_3size_t_2400size_t_1152size_t_1184size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t_1120size_t( + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t *private_key, + libcrux_ml_kem_mlkem768_MlKem768Ciphertext *ciphertext, uint8_t ret[32U]) { + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____0 = + core_slice___Slice_T___split_at( + Eurydice_array_to_slice((size_t)2400U, private_key->value, uint8_t, + Eurydice_slice), + (size_t)1152U, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice ind_cpa_secret_key = uu____0.fst; + Eurydice_slice secret_key0 = uu____0.snd; + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____1 = + core_slice___Slice_T___split_at( + secret_key0, (size_t)1184U, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice ind_cpa_public_key = uu____1.fst; + Eurydice_slice secret_key = uu____1.snd; + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____2 = + core_slice___Slice_T___split_at( + secret_key, LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice ind_cpa_public_key_hash = uu____2.fst; + Eurydice_slice implicit_rejection_value = uu____2.snd; + uint8_t decrypted[32U]; + libcrux_ml_kem_ind_cpa_decrypt__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1088size_t_960size_t_10size_t_4size_t( + ind_cpa_secret_key, ciphertext->value, decrypted); + uint8_t to_hash0[64U]; + libcrux_ml_kem_utils_into_padded_array___64size_t( + Eurydice_array_to_slice((size_t)32U, decrypted, uint8_t, Eurydice_slice), + to_hash0); + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice_from( + (size_t)64U, to_hash0, LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE, + uint8_t, size_t, Eurydice_slice), + ind_cpa_public_key_hash, uint8_t, void *); + uint8_t hashed[64U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___G___3size_t( + Eurydice_array_to_slice((size_t)64U, to_hash0, uint8_t, Eurydice_slice), + hashed); + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____3 = + core_slice___Slice_T___split_at( + Eurydice_array_to_slice((size_t)64U, hashed, uint8_t, Eurydice_slice), + LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice shared_secret0 = uu____3.fst; + Eurydice_slice pseudorandomness = uu____3.snd; + uint8_t to_hash[1120U]; + libcrux_ml_kem_utils_into_padded_array___1120size_t(implicit_rejection_value, + to_hash); + Eurydice_slice uu____4 = Eurydice_array_to_subslice_from( + (size_t)1120U, to_hash, LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE, + uint8_t, size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____4, + libcrux_ml_kem_types___core__convert__AsRef__Slice_u8___for_libcrux_ml_kem__types__MlKemCiphertext_SIZE___1__as_ref___1088size_t( + ciphertext), + uint8_t, void *); + uint8_t implicit_rejection_shared_secret0[32U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___PRF___3size_t_32size_t( + Eurydice_array_to_slice((size_t)1120U, to_hash, uint8_t, Eurydice_slice), + implicit_rejection_shared_secret0); + Eurydice_slice uu____5 = ind_cpa_public_key; + uint8_t uu____6[32U]; + memcpy(uu____6, decrypted, (size_t)32U * sizeof(uint8_t)); + uint8_t expected_ciphertext[1088U]; + libcrux_ml_kem_ind_cpa_encrypt__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + uu____5, uu____6, pseudorandomness, expected_ciphertext); + Eurydice_slice uu____7 = + libcrux_ml_kem_types___core__convert__AsRef__Slice_u8___for_libcrux_ml_kem__types__MlKemCiphertext_SIZE___1__as_ref___1088size_t( + ciphertext); + uint8_t selector = + libcrux_ml_kem_constant_time_ops_compare_ciphertexts_in_constant_time( + uu____7, Eurydice_array_to_slice((size_t)1088U, expected_ciphertext, + uint8_t, Eurydice_slice)); + uint8_t implicit_rejection_shared_secret[32U]; + libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___kdf__libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1088size_t( + Eurydice_array_to_slice((size_t)32U, implicit_rejection_shared_secret0, + uint8_t, Eurydice_slice), + ciphertext, implicit_rejection_shared_secret); + uint8_t shared_secret[32U]; + libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___kdf__libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1088size_t( + shared_secret0, ciphertext, shared_secret); + uint8_t ret0[32U]; + libcrux_ml_kem_constant_time_ops_select_shared_secret_in_constant_time( + Eurydice_array_to_slice((size_t)32U, shared_secret, uint8_t, + Eurydice_slice), + Eurydice_array_to_slice((size_t)32U, implicit_rejection_shared_secret, + uint8_t, Eurydice_slice), + selector, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cca_instantiations_avx2_decapsulate___3size_t_2400size_t_1152size_t_1184size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t_1120size_t( + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t *private_key, + libcrux_ml_kem_mlkem768_MlKem768Ciphertext *ciphertext, uint8_t ret[32U]) { + uint8_t ret0[32U]; + libcrux_ml_kem_ind_cca_decapsulate__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_libcrux_ml_kem_ind_cca_MlKem_3size_t_2400size_t_1152size_t_1184size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t_1120size_t( + private_key, ciphertext, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_mlkem768_avx2_decapsulate( + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t *private_key, + libcrux_ml_kem_mlkem768_MlKem768Ciphertext *ciphertext, uint8_t ret[32U]) { + uint8_t ret0[32U]; + libcrux_ml_kem_ind_cca_instantiations_avx2_decapsulate___3size_t_2400size_t_1152size_t_1184size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t_1120size_t( + private_key, ciphertext, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___entropy_preprocess__libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + Eurydice_slice randomness, uint8_t ret[32U]) { + uint8_t out[32U] = {0U}; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_slice((size_t)32U, out, uint8_t, Eurydice_slice), + randomness, uint8_t, void *); + memcpy(ret, out, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___H___3size_t( + Eurydice_slice input, uint8_t ret[32U]) { + uint8_t digest[32U] = {0U}; + libcrux_sha3_portable_sha256( + Eurydice_array_to_slice((size_t)32U, digest, uint8_t, Eurydice_slice), + input); + memcpy(ret, digest, (size_t)32U * sizeof(uint8_t)); +} + +__attribute__((target( + "avx2"))) static inline K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ +libcrux_ml_kem_ind_cca_encapsulate__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_libcrux_ml_kem_ind_cca_MlKem_3size_t_1088size_t_1184size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *public_key, + uint8_t randomness[32U]) { + uint8_t randomness0[32U]; + libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___entropy_preprocess__libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + Eurydice_array_to_slice((size_t)32U, randomness, uint8_t, Eurydice_slice), + randomness0); + uint8_t to_hash[64U]; + libcrux_ml_kem_utils_into_padded_array___64size_t( + Eurydice_array_to_slice((size_t)32U, randomness0, uint8_t, + Eurydice_slice), + to_hash); + Eurydice_slice uu____0 = Eurydice_array_to_subslice_from( + (size_t)64U, to_hash, LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE, uint8_t, + size_t, Eurydice_slice); + uint8_t ret[32U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___H___3size_t( + Eurydice_array_to_slice( + (size_t)1184U, + libcrux_ml_kem_types__libcrux_ml_kem__types__MlKemPublicKey_SIZE__18__as_slice___1184size_t( + public_key), + uint8_t, Eurydice_slice), + ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)32U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + uint8_t hashed[64U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___G___3size_t( + Eurydice_array_to_slice((size_t)64U, to_hash, uint8_t, Eurydice_slice), + hashed); + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____1 = + core_slice___Slice_T___split_at( + Eurydice_array_to_slice((size_t)64U, hashed, uint8_t, Eurydice_slice), + LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice shared_secret = uu____1.fst; + Eurydice_slice pseudorandomness = uu____1.snd; + Eurydice_slice uu____2 = Eurydice_array_to_slice( + (size_t)1184U, + libcrux_ml_kem_types__libcrux_ml_kem__types__MlKemPublicKey_SIZE__18__as_slice___1184size_t( + public_key), + uint8_t, Eurydice_slice); + uint8_t uu____3[32U]; + memcpy(uu____3, randomness0, (size_t)32U * sizeof(uint8_t)); + uint8_t ciphertext[1088U]; + libcrux_ml_kem_ind_cpa_encrypt__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + uu____2, uu____3, pseudorandomness, ciphertext); + uint8_t uu____4[1088U]; + memcpy(uu____4, ciphertext, (size_t)1088U * sizeof(uint8_t)); + libcrux_ml_kem_mlkem768_MlKem768Ciphertext ciphertext0 = + libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemCiphertext_SIZE___2__from___1088size_t( + uu____4); + uint8_t shared_secret_array[32U]; + libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___kdf__libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1088size_t( + shared_secret, &ciphertext0, shared_secret_array); + libcrux_ml_kem_mlkem768_MlKem768Ciphertext uu____5 = ciphertext0; + uint8_t uu____6[32U]; + memcpy(uu____6, shared_secret_array, (size_t)32U * sizeof(uint8_t)); + K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ lit; + lit.fst = uu____5; + memcpy(lit.snd, uu____6, (size_t)32U * sizeof(uint8_t)); + return lit; +} + +__attribute__((target( + "avx2"))) static inline K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ +libcrux_ml_kem_ind_cca_instantiations_avx2_encapsulate___3size_t_1088size_t_1184size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *public_key, + uint8_t randomness[32U]) { + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *uu____0 = public_key; + uint8_t uu____1[32U]; + memcpy(uu____1, randomness, (size_t)32U * sizeof(uint8_t)); + return libcrux_ml_kem_ind_cca_encapsulate__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_libcrux_ml_kem_ind_cca_MlKem_3size_t_1088size_t_1184size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + uu____0, uu____1); +} + +__attribute__((target( + "avx2"))) static inline K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ +libcrux_ml_kem_mlkem768_avx2_encapsulate( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *public_key, + uint8_t randomness[32U]) { + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *uu____0 = public_key; + uint8_t uu____1[32U]; + memcpy(uu____1, randomness, (size_t)32U * sizeof(uint8_t)); + return libcrux_ml_kem_ind_cca_instantiations_avx2_encapsulate___3size_t_1088size_t_1184size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + uu____0, uu____1); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_matrix_compute_As_plus_e_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_traits_to_standard_domain__libcrux_ml_kem_vector_avx2_SIMD256Vector( + core_core_arch_x86___m256i v) { + return libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___montgomery_multiply_by_constant( + v, LIBCRUX_ML_KEM_VECTOR_TRAITS_MONTGOMERY_R_SQUARED_MOD_FIELD_MODULUS); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_standard_error_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *error) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t j = i; + core_core_arch_x86___m256i coefficient_normal_form = + libcrux_ml_kem_vector_traits_to_standard_domain__libcrux_ml_kem_vector_avx2_SIMD256Vector( + self->coefficients[j]); + core_core_arch_x86___m256i uu____0 = + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___barrett_reduce( + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___add( + coefficient_normal_form, &error->coefficients[j])); + self->coefficients[j] = uu____0; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_matrix_compute_As_plus_e__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector ( + *matrix_A)[3U], + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *s_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *error_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + result[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + result[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + for ( + size_t i0 = (size_t)0U; + i0 < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, matrix_A, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + [3U], + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + [3U], + size_t); + i0++) { + size_t i1 = i0; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *row = matrix_A[i1]; + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, row, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + size_t); + i++) { + size_t j = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *matrix_element = &row[j]; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + product = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_avx2_SIMD256Vector( + matrix_element, &s_as_ntt[j]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + &result[i1], &product); + } + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_standard_error_reduce__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &result[i1], &error_as_ntt[i1]); + } + memcpy( + ret, result, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_serialize_uncompressed_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + *re, + uint8_t ret[384U]) { + uint8_t serialized[384U] = {0U}; + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + core_core_arch_x86___m256i coefficient = + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_avx2_SIMD256Vector( + re->coefficients[i0]); + uint8_t bytes[24U]; + libcrux_ml_kem_vector_avx2___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__avx2__SIMD256Vector___serialize_12( + coefficient, bytes); + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)384U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)24U * i0, .end = (size_t)24U * i0 + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)24U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, serialized, (size_t)384U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cpa_serialize_secret_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1152size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + key[3U], + uint8_t ret[1152U]) { + uint8_t out[1152U] = {0U}; + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, key, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector, + size_t); + i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + re = key[i0]; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)1152U, out, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT, + .end = (i0 + (size_t)1U) * + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret0[384U]; + libcrux_ml_kem_serialize_serialize_uncompressed_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + &re, ret0); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)384U, ret0, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, out, (size_t)1152U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cpa_serialize_public_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1152size_t_1184size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + t_as_ntt[3U], + Eurydice_slice seed_for_a, uint8_t ret[1184U]) { + uint8_t public_key_serialized[1184U] = {0U}; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)1184U, public_key_serialized, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = (size_t)1152U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____1[3U]; + memcpy( + uu____1, t_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + uint8_t ret0[1152U]; + libcrux_ml_kem_ind_cpa_serialize_secret_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1152size_t( + uu____1, ret0); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)1152U, ret0, uint8_t, Eurydice_slice), + uint8_t, void *); + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice_from((size_t)1184U, public_key_serialized, + (size_t)1152U, uint8_t, size_t, + Eurydice_slice), + seed_for_a, uint8_t, void *); + memcpy(ret, public_key_serialized, (size_t)1184U * sizeof(uint8_t)); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_utils_extraction_helper_Keypair768 +libcrux_ml_kem_ind_cpa_generate_keypair__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1152size_t_1184size_t_1152size_t_2size_t_128size_t( + Eurydice_slice key_generation_seed) { + uint8_t hashed[64U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___G___3size_t( + key_generation_seed, hashed); + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____0 = + core_slice___Slice_T___split_at( + Eurydice_array_to_slice((size_t)64U, hashed, uint8_t, Eurydice_slice), + (size_t)32U, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice seed_for_A = uu____0.fst; + Eurydice_slice seed_for_secret_and_error = uu____0.snd; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + A_transpose[3U][3U]; + uint8_t ret[34U]; + libcrux_ml_kem_utils_into_padded_array___34size_t(seed_for_A, ret); + libcrux_ml_kem_matrix_sample_matrix_A__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t( + ret, true, A_transpose); + uint8_t prf_input[33U]; + libcrux_ml_kem_utils_into_padded_array___33size_t(seed_for_secret_and_error, + prf_input); + uint8_t uu____1[33U]; + memcpy(uu____1, prf_input, (size_t)33U * sizeof(uint8_t)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t__uint8_t + uu____2 = + libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_2size_t_128size_t( + uu____1, 0U); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + secret_as_ntt[3U]; + memcpy( + secret_as_ntt, uu____2.fst, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + uint8_t domain_separator = uu____2.snd; + uint8_t uu____3[33U]; + memcpy(uu____3, prf_input, (size_t)33U * sizeof(uint8_t)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + error_as_ntt[3U]; + memcpy( + error_as_ntt, + libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_2size_t_128size_t( + uu____3, domain_separator) + .fst, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + t_as_ntt[3U]; + libcrux_ml_kem_matrix_compute_As_plus_e__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t( + A_transpose, secret_as_ntt, error_as_ntt, t_as_ntt); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____4[3U]; + memcpy( + uu____4, t_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + uint8_t public_key_serialized[1184U]; + libcrux_ml_kem_ind_cpa_serialize_public_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1152size_t_1184size_t( + uu____4, seed_for_A, public_key_serialized); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____5[3U]; + memcpy( + uu____5, secret_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + uint8_t secret_key_serialized[1152U]; + libcrux_ml_kem_ind_cpa_serialize_secret_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1152size_t( + uu____5, secret_key_serialized); + uint8_t uu____6[1152U]; + memcpy(uu____6, secret_key_serialized, (size_t)1152U * sizeof(uint8_t)); + uint8_t uu____7[1184U]; + memcpy(uu____7, public_key_serialized, (size_t)1184U * sizeof(uint8_t)); + libcrux_ml_kem_utils_extraction_helper_Keypair768 lit; + memcpy(lit.fst, uu____6, (size_t)1152U * sizeof(uint8_t)); + memcpy(lit.snd, uu____7, (size_t)1184U * sizeof(uint8_t)); + return lit; +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_ind_cca_serialize_kem_secret_key__libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_2400size_t( + Eurydice_slice private_key, Eurydice_slice public_key, + Eurydice_slice implicit_rejection_value, uint8_t ret[2400U]) { + uint8_t out[2400U] = {0U}; + size_t pointer = (size_t)0U; + uint8_t *uu____0 = out; + size_t uu____1 = pointer; + size_t uu____2 = pointer; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)2400U, uu____0, + (CLITERAL(core_ops_range_Range__size_t){ + .start = uu____1, + .end = uu____2 + + core_slice___Slice_T___len(private_key, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + private_key, uint8_t, void *); + pointer = pointer + core_slice___Slice_T___len(private_key, uint8_t, size_t); + uint8_t *uu____3 = out; + size_t uu____4 = pointer; + size_t uu____5 = pointer; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)2400U, uu____3, + (CLITERAL(core_ops_range_Range__size_t){ + .start = uu____4, + .end = uu____5 + + core_slice___Slice_T___len(public_key, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + public_key, uint8_t, void *); + pointer = pointer + core_slice___Slice_T___len(public_key, uint8_t, size_t); + Eurydice_slice uu____6 = Eurydice_array_to_subslice( + (size_t)2400U, out, + (CLITERAL(core_ops_range_Range__size_t){ + .start = pointer, + .end = pointer + LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret0[32U]; + libcrux_ml_kem_hash_functions_avx2___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__avx2__Simd256Hash___H___3size_t( + public_key, ret0); + core_slice___Slice_T___copy_from_slice( + uu____6, + Eurydice_array_to_slice((size_t)32U, ret0, uint8_t, Eurydice_slice), + uint8_t, void *); + pointer = pointer + LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE; + uint8_t *uu____7 = out; + size_t uu____8 = pointer; + size_t uu____9 = pointer; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)2400U, uu____7, + (CLITERAL(core_ops_range_Range__size_t){ + .start = uu____8, + .end = uu____9 + core_slice___Slice_T___len( + implicit_rejection_value, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + implicit_rejection_value, uint8_t, void *); + memcpy(ret, out, (size_t)2400U * sizeof(uint8_t)); +} + +__attribute__(( + target("avx2"))) static inline libcrux_ml_kem_mlkem768_MlKem768KeyPair +libcrux_ml_kem_ind_cca_generate_keypair__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1152size_t_2400size_t_1184size_t_1152size_t_2size_t_128size_t( + uint8_t randomness[64U]) { + Eurydice_slice ind_cpa_keypair_randomness = Eurydice_array_to_subslice( + (size_t)64U, randomness, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, + .end = LIBCRUX_ML_KEM_CONSTANTS_CPA_PKE_KEY_GENERATION_SEED_SIZE}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + Eurydice_slice implicit_rejection_value = Eurydice_array_to_subslice_from( + (size_t)64U, randomness, + LIBCRUX_ML_KEM_CONSTANTS_CPA_PKE_KEY_GENERATION_SEED_SIZE, uint8_t, + size_t, Eurydice_slice); + libcrux_ml_kem_utils_extraction_helper_Keypair768 uu____0 = + libcrux_ml_kem_ind_cpa_generate_keypair__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1152size_t_1184size_t_1152size_t_2size_t_128size_t( + ind_cpa_keypair_randomness); + uint8_t ind_cpa_private_key[1152U]; + memcpy(ind_cpa_private_key, uu____0.fst, (size_t)1152U * sizeof(uint8_t)); + uint8_t public_key[1184U]; + memcpy(public_key, uu____0.snd, (size_t)1184U * sizeof(uint8_t)); + uint8_t secret_key_serialized[2400U]; + libcrux_ml_kem_ind_cca_serialize_kem_secret_key__libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_2400size_t( + Eurydice_array_to_slice((size_t)1152U, ind_cpa_private_key, uint8_t, + Eurydice_slice), + Eurydice_array_to_slice((size_t)1184U, public_key, uint8_t, + Eurydice_slice), + implicit_rejection_value, secret_key_serialized); + uint8_t uu____1[2400U]; + memcpy(uu____1, secret_key_serialized, (size_t)2400U * sizeof(uint8_t)); + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t private_key = + libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemPrivateKey_SIZE___8__from___2400size_t( + uu____1); + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t uu____2 = private_key; + uint8_t uu____3[1184U]; + memcpy(uu____3, public_key, (size_t)1184U * sizeof(uint8_t)); + return libcrux_ml_kem_types__libcrux_ml_kem__types__MlKemKeyPair_PRIVATE_KEY_SIZE__PUBLIC_KEY_SIZE___from___2400size_t_1184size_t( + uu____2, + libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemPublicKey_SIZE___14__from___1184size_t( + uu____3)); +} + +__attribute__(( + target("avx2"))) static inline libcrux_ml_kem_mlkem768_MlKem768KeyPair +libcrux_ml_kem_ind_cca_instantiations_avx2_generate_keypair___3size_t_1152size_t_2400size_t_1184size_t_1152size_t_2size_t_128size_t( + uint8_t randomness[64U]) { + uint8_t uu____0[64U]; + memcpy(uu____0, randomness, (size_t)64U * sizeof(uint8_t)); + return libcrux_ml_kem_ind_cca_generate_keypair__libcrux_ml_kem_vector_avx2_SIMD256Vector_libcrux_ml_kem_hash_functions_avx2_Simd256Hash_3size_t_1152size_t_2400size_t_1184size_t_1152size_t_2size_t_128size_t( + uu____0); +} + +__attribute__(( + target("avx2"))) static inline libcrux_ml_kem_mlkem768_MlKem768KeyPair +libcrux_ml_kem_mlkem768_avx2_generate_key_pair(uint8_t randomness[64U]) { + uint8_t uu____0[64U]; + memcpy(uu____0, randomness, (size_t)64U * sizeof(uint8_t)); + return libcrux_ml_kem_ind_cca_instantiations_avx2_generate_keypair___3size_t_1152size_t_2400size_t_1184size_t_1152size_t_2size_t_128size_t( + uu____0); +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector +libcrux_ml_kem_serialize_deserialize_ring_elements_reduced_closure__libcrux_ml_kem_vector_avx2_SIMD256Vector_1184size_t_3size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); +} + +__attribute__((target("avx2"))) static inline void +libcrux_ml_kem_serialize_deserialize_ring_elements_reduced__libcrux_ml_kem_vector_avx2_SIMD256Vector_1184size_t_3size_t( + Eurydice_slice public_key, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + deserialized_pk[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + deserialized_pk[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_avx2_SIMD256Vector(); + } + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(public_key, uint8_t, size_t) / + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT; + i++) { + size_t i0 = i; + Eurydice_slice ring_element = Eurydice_slice_subslice( + public_key, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT, + .end = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT + + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0 = + libcrux_ml_kem_serialize_deserialize_to_reduced_ring_element__libcrux_ml_kem_vector_avx2_SIMD256Vector( + ring_element); + deserialized_pk[i0] = uu____0; + } + memcpy( + ret, deserialized_pk, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); +} + +__attribute__((target("avx2"))) static inline bool +libcrux_ml_kem_ind_cca_validate_public_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1152size_t_1184size_t( + uint8_t *public_key) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + deserialized_pk[3U]; + libcrux_ml_kem_serialize_deserialize_ring_elements_reduced__libcrux_ml_kem_vector_avx2_SIMD256Vector_1184size_t_3size_t( + Eurydice_array_to_subslice_to((size_t)1184U, public_key, (size_t)1152U, + uint8_t, size_t, Eurydice_slice), + deserialized_pk); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector + uu____0[3U]; + memcpy( + uu____0, deserialized_pk, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_avx2_SIMD256Vector)); + uint8_t public_key_serialized[1184U]; + libcrux_ml_kem_ind_cpa_serialize_public_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1152size_t_1184size_t( + uu____0, + Eurydice_array_to_subslice_from((size_t)1184U, public_key, (size_t)1152U, + uint8_t, size_t, Eurydice_slice), + public_key_serialized); + return core_array_equality___core__cmp__PartialEq__Array_U__N___for__Array_T__N____eq( + (size_t)1184U, public_key, public_key_serialized, uint8_t, uint8_t, bool); +} + +__attribute__((target("avx2"))) static inline bool +libcrux_ml_kem_ind_cca_instantiations_avx2_validate_public_key___3size_t_1152size_t_1184size_t( + uint8_t *public_key) { + return libcrux_ml_kem_ind_cca_validate_public_key__libcrux_ml_kem_vector_avx2_SIMD256Vector_3size_t_1152size_t_1184size_t( + public_key); +} + +__attribute__((target( + "avx2"))) static inline core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__ +libcrux_ml_kem_mlkem768_avx2_validate_public_key( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t public_key) { + core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__ + uu____0; + if (libcrux_ml_kem_ind_cca_instantiations_avx2_validate_public_key___3size_t_1152size_t_1184size_t( + public_key.value)) { + uu____0 = (CLITERAL( + core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__){ + .tag = core_option_Some, .f0 = public_key}); + } else { + uu____0 = (CLITERAL( + core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__){ + .tag = core_option_None}); + } + return uu____0; +} + +__attribute__((target( + "avx2"))) static inline libcrux_ml_kem_vector_avx2_portable_PortableVector +libcrux_ml_kem_vector_avx2_portable___core__clone__Clone_for_libcrux_ml_kem__vector__avx2__portable__PortableVector___clone( + libcrux_ml_kem_vector_avx2_portable_PortableVector *self) { + return self[0U]; +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_ml_kem_vector_avx2___core__clone__Clone_for_libcrux_ml_kem__vector__avx2__SIMD256Vector__1__clone( + core_core_arch_x86___m256i *self) { + return self[0U]; +} + +typedef int16_t libcrux_ml_kem_vector_avx2_portable_FieldElement; + +#if defined(__cplusplus) +} +#endif + +#define __libcrux_mlkem768_avx2_H_DEFINED +#endif diff --git a/third_party/libcrux/libcrux_mlkem768_portable.h b/third_party/libcrux/libcrux_mlkem768_portable.h new file mode 100644 index 0000000000..6c534b5cfe --- /dev/null +++ b/third_party/libcrux/libcrux_mlkem768_portable.h @@ -0,0 +1,5245 @@ +/* + This file was generated by KaRaMeL + KaRaMeL invocation: /home/franziskus/eurydice//eurydice --config ../cg.yaml + -funroll-loops 0 ../../libcrux_ml_kem.llbc ../../libcrux_sha3.llbc F* version: + KaRaMeL version: 42a43169 + */ + +#ifndef __libcrux_mlkem768_portable_H +#define __libcrux_mlkem768_portable_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "eurydice_glue.h" +#include "libcrux_core.h" +#include "libcrux_ct_ops.h" +#include "libcrux_sha3_portable.h" + +#define LIBCRUX_ML_KEM_HASH_FUNCTIONS_BLOCK_SIZE ((size_t)168U) + +#define LIBCRUX_ML_KEM_HASH_FUNCTIONS_THREE_BLOCKS \ + (LIBCRUX_ML_KEM_HASH_FUNCTIONS_BLOCK_SIZE * (size_t)3U) + +typedef struct libcrux_ml_kem_hash_functions_neon_Simd128Hash_s { + libcrux_sha3_neon_x2_incremental_KeccakState shake128_state[2U]; +} libcrux_ml_kem_hash_functions_neon_Simd128Hash; + +#define LIBCRUX_ML_KEM_IND_CCA_ENCAPS_SEED_SIZE \ + (LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE) + +#define LIBCRUX_ML_KEM_IND_CCA_KEY_GENERATION_SEED_SIZE \ + (LIBCRUX_ML_KEM_CONSTANTS_CPA_PKE_KEY_GENERATION_SEED_SIZE + \ + LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE) + +typedef uint8_t libcrux_ml_kem_ind_cca_MlKemSharedSecret[32U]; + +static const int16_t libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[128U] = + {(int16_t)-1044, (int16_t)-758, (int16_t)-359, (int16_t)-1517, + (int16_t)1493, (int16_t)1422, (int16_t)287, (int16_t)202, + (int16_t)-171, (int16_t)622, (int16_t)1577, (int16_t)182, + (int16_t)962, (int16_t)-1202, (int16_t)-1474, (int16_t)1468, + (int16_t)573, (int16_t)-1325, (int16_t)264, (int16_t)383, + (int16_t)-829, (int16_t)1458, (int16_t)-1602, (int16_t)-130, + (int16_t)-681, (int16_t)1017, (int16_t)732, (int16_t)608, + (int16_t)-1542, (int16_t)411, (int16_t)-205, (int16_t)-1571, + (int16_t)1223, (int16_t)652, (int16_t)-552, (int16_t)1015, + (int16_t)-1293, (int16_t)1491, (int16_t)-282, (int16_t)-1544, + (int16_t)516, (int16_t)-8, (int16_t)-320, (int16_t)-666, + (int16_t)-1618, (int16_t)-1162, (int16_t)126, (int16_t)1469, + (int16_t)-853, (int16_t)-90, (int16_t)-271, (int16_t)830, + (int16_t)107, (int16_t)-1421, (int16_t)-247, (int16_t)-951, + (int16_t)-398, (int16_t)961, (int16_t)-1508, (int16_t)-725, + (int16_t)448, (int16_t)-1065, (int16_t)677, (int16_t)-1275, + (int16_t)-1103, (int16_t)430, (int16_t)555, (int16_t)843, + (int16_t)-1251, (int16_t)871, (int16_t)1550, (int16_t)105, + (int16_t)422, (int16_t)587, (int16_t)177, (int16_t)-235, + (int16_t)-291, (int16_t)-460, (int16_t)1574, (int16_t)1653, + (int16_t)-246, (int16_t)778, (int16_t)1159, (int16_t)-147, + (int16_t)-777, (int16_t)1483, (int16_t)-602, (int16_t)1119, + (int16_t)-1590, (int16_t)644, (int16_t)-872, (int16_t)349, + (int16_t)418, (int16_t)329, (int16_t)-156, (int16_t)-75, + (int16_t)817, (int16_t)1097, (int16_t)603, (int16_t)610, + (int16_t)1322, (int16_t)-1285, (int16_t)-1465, (int16_t)384, + (int16_t)-1215, (int16_t)-136, (int16_t)1218, (int16_t)-1335, + (int16_t)-874, (int16_t)220, (int16_t)-1187, (int16_t)-1659, + (int16_t)-1185, (int16_t)-1530, (int16_t)-1278, (int16_t)794, + (int16_t)-1510, (int16_t)-854, (int16_t)-870, (int16_t)478, + (int16_t)-108, (int16_t)-308, (int16_t)996, (int16_t)991, + (int16_t)958, (int16_t)-1460, (int16_t)1522, (int16_t)1628}; + +#define LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR ((size_t)16U) + +#define LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT \ + (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT / \ + LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR) + +#define LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS ((int16_t)3329) + +#define LIBCRUX_ML_KEM_VECTOR_TRAITS_MONTGOMERY_R_SQUARED_MOD_FIELD_MODULUS \ + ((int16_t)1353) + +#define LIBCRUX_ML_KEM_VECTOR_TRAITS_INVERSE_OF_MODULUS_MOD_MONTGOMERY_R \ + (62209U) + +static const uint8_t + libcrux_ml_kem_vector_rej_sample_table_REJECTION_SAMPLE_SHUFFLE_TABLE + [256U][16U] = {{255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {6U, 7U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {8U, 9U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 8U, 9U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 8U, 9U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 8U, 9U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 8U, 9U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {10U, 11U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {6U, 7U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 10U, 11U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {8U, 9U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 8U, 9U, 10U, 11U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 8U, 9U, 10U, 11U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 255U, + 255U, 255U, 255U}, + {12U, 13U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {6U, 7U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {8U, 9U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 8U, 9U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 8U, 9U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 8U, 9U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 8U, 9U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 12U, 13U, 255U, + 255U, 255U, 255U}, + {10U, 11U, 12U, 13U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 10U, 11U, 12U, 13U, + 255U, 255U, 255U, 255U}, + {8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 8U, 9U, 10U, 11U, 12U, 13U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, + 13U, 255U, 255U}, + {14U, 15U, 255U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {6U, 7U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {8U, 9U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 8U, 9U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 8U, 9U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 8U, 9U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 8U, 9U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 14U, 15U, 255U, + 255U, 255U, 255U}, + {10U, 11U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 10U, 11U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 8U, 9U, 10U, 11U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 8U, 9U, 10U, 11U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 14U, + 15U, 255U, 255U}, + {12U, 13U, 14U, 15U, 255U, 255U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 8U, 9U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 8U, 9U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 8U, 9U, 12U, 13U, 14U, 15U, 255U, 255U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 8U, 9U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 12U, 13U, 14U, + 15U, 255U, 255U}, + {10U, 11U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {4U, 5U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {6U, 7U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 6U, 7U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 10U, 11U, 12U, 13U, 14U, + 15U, 255U, 255U}, + {8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, 255U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {2U, 3U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {4U, 5U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 4U, 5U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, + 15U, 255U, 255U}, + {6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, 255U, + 255U, 255U, 255U, 255U, 255U}, + {0U, 1U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {2U, 3U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 2U, 3U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, + 15U, 255U, 255U}, + {4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, 15U, + 255U, 255U, 255U, 255U}, + {0U, 1U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, + 15U, 255U, 255U}, + {2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, 13U, 14U, + 15U, 255U, 255U}, + {0U, 1U, 2U, 3U, 4U, 5U, 6U, 7U, 8U, 9U, 10U, 11U, 12U, + 13U, 14U, 15U}}; + +typedef struct libcrux_ml_kem_vector_portable_vector_type_PortableVector_s { + int16_t elements[16U]; +} libcrux_ml_kem_vector_portable_vector_type_PortableVector; + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_vector_type_zero(void) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector lit; + lit.elements[0U] = (int16_t)0; + lit.elements[1U] = (int16_t)0; + lit.elements[2U] = (int16_t)0; + lit.elements[3U] = (int16_t)0; + lit.elements[4U] = (int16_t)0; + lit.elements[5U] = (int16_t)0; + lit.elements[6U] = (int16_t)0; + lit.elements[7U] = (int16_t)0; + lit.elements[8U] = (int16_t)0; + lit.elements[9U] = (int16_t)0; + lit.elements[10U] = (int16_t)0; + lit.elements[11U] = (int16_t)0; + lit.elements[12U] = (int16_t)0; + lit.elements[13U] = (int16_t)0; + lit.elements[14U] = (int16_t)0; + lit.elements[15U] = (int16_t)0; + return lit; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO( + void) { + return libcrux_ml_kem_vector_portable_vector_type_zero(); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_vector_type_from_i16_array( + Eurydice_slice array) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector lit; + int16_t ret[16U]; + core_result_Result__int16_t_16size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_slice_subslice(array, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)16U}), + int16_t, core_ops_range_Range__size_t, + Eurydice_slice), + Eurydice_slice, int16_t[16U], void *); + core_result__core__result__Result_T__E___unwrap__int16_t_16size_t__core_array_TryFromSliceError( + dst, ret); + memcpy(lit.elements, ret, (size_t)16U * sizeof(int16_t)); + return lit; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___from_i16_array( + Eurydice_slice array) { + return libcrux_ml_kem_vector_portable_vector_type_from_i16_array(array); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_arithmetic_add( + libcrux_ml_kem_vector_portable_vector_type_PortableVector lhs, + libcrux_ml_kem_vector_portable_vector_type_PortableVector *rhs) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + size_t uu____0 = i0; + lhs.elements[uu____0] = lhs.elements[uu____0] + rhs->elements[i0]; + } + return lhs; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + libcrux_ml_kem_vector_portable_vector_type_PortableVector lhs, + libcrux_ml_kem_vector_portable_vector_type_PortableVector *rhs) { + return libcrux_ml_kem_vector_portable_arithmetic_add(lhs, rhs); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_arithmetic_sub( + libcrux_ml_kem_vector_portable_vector_type_PortableVector lhs, + libcrux_ml_kem_vector_portable_vector_type_PortableVector *rhs) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + size_t uu____0 = i0; + lhs.elements[uu____0] = lhs.elements[uu____0] - rhs->elements[i0]; + } + return lhs; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___sub( + libcrux_ml_kem_vector_portable_vector_type_PortableVector lhs, + libcrux_ml_kem_vector_portable_vector_type_PortableVector *rhs) { + return libcrux_ml_kem_vector_portable_arithmetic_sub(lhs, rhs); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_arithmetic_multiply_by_constant( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t c) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + size_t uu____0 = i0; + v.elements[uu____0] = v.elements[uu____0] * c; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___multiply_by_constant( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t c) { + return libcrux_ml_kem_vector_portable_arithmetic_multiply_by_constant(v, c); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_arithmetic_bitwise_and_with_constant( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t c) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + size_t uu____0 = i0; + v.elements[uu____0] = v.elements[uu____0] & c; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___bitwise_and_with_constant( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t c) { + return libcrux_ml_kem_vector_portable_arithmetic_bitwise_and_with_constant(v, + c); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_arithmetic_cond_subtract_3329( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + core_ops_range_Range__size_t iter = + core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter( + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, + .end = LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR}), + core_ops_range_Range__size_t, core_ops_range_Range__size_t); + while (true) { + core_option_Option__size_t uu____0 = + core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next( + &iter, size_t, core_option_Option__size_t); + if (!(uu____0.tag == core_option_None)) { + size_t i = uu____0.f0; + if (v.elements[i] >= (int16_t)3329) { + size_t uu____1 = i; + v.elements[uu____1] = v.elements[uu____1] - (int16_t)3329; + } + continue; + } + return v; + } +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___cond_subtract_3329( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_arithmetic_cond_subtract_3329(v); +} + +#define LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_BARRETT_MULTIPLIER \ + ((int32_t)20159) + +#define LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_BARRETT_SHIFT ((int32_t)26) + +#define LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_BARRETT_R \ + ((int32_t)1 << (uint32_t) \ + LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_BARRETT_SHIFT) + +static inline int16_t +libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + int16_t value) { + int32_t t = (int32_t)value * + LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_BARRETT_MULTIPLIER + + (LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_BARRETT_R >> 1U); + int16_t quotient = + (int16_t)(t >> + (uint32_t) + LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_BARRETT_SHIFT); + return value - quotient * LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[i0]); + v.elements[i0] = uu____0; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___barrett_reduce( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce(v); +} + +#define LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_MONTGOMERY_SHIFT (16U) + +#define LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_MONTGOMERY_R \ + ((int32_t)1 << (uint32_t) \ + LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_MONTGOMERY_SHIFT) + +static inline int16_t +libcrux_ml_kem_vector_portable_arithmetic_montgomery_reduce_element( + int32_t value) { + int32_t k = + (int32_t)(int16_t)value * + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_INVERSE_OF_MODULUS_MOD_MONTGOMERY_R; + int32_t k_times_modulus = + (int32_t)(int16_t)k * (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS; + int16_t c = + (int16_t)(k_times_modulus >> + (uint32_t) + LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_MONTGOMERY_SHIFT); + int16_t value_high = + (int16_t)(value >> + (uint32_t) + LIBCRUX_ML_KEM_VECTOR_PORTABLE_ARITHMETIC_MONTGOMERY_SHIFT); + return value_high - c; +} + +static inline int16_t +libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + int16_t fe, int16_t fer) { + return libcrux_ml_kem_vector_portable_arithmetic_montgomery_reduce_element( + (int32_t)fe * (int32_t)fer); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_by_constant( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t c) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[i0], c); + v.elements[i0] = uu____0; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___montgomery_multiply_by_constant( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t r) { + return libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_by_constant( + v, r); +} + +static inline uint8_t +libcrux_ml_kem_vector_portable_compress_compress_message_coefficient( + uint16_t fe) { + int16_t shifted = (int16_t)1664 - (int16_t)fe; + int16_t mask = shifted >> 15U; + int16_t shifted_to_positive = mask ^ shifted; + int16_t shifted_positive_in_range = shifted_to_positive - (int16_t)832; + return (uint8_t)(shifted_positive_in_range >> 15U & (int16_t)1); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_compress_1( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + uint8_t uu____0 = + libcrux_ml_kem_vector_portable_compress_compress_message_coefficient( + (uint16_t)v.elements[i0]); + v.elements[i0] = (int16_t)uu____0; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress_1( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_compress_1(v); +} + +static inline uint32_t +libcrux_ml_kem_vector_portable_arithmetic_get_n_least_significant_bits( + uint8_t n, uint32_t value) { + return value & ((1U << (uint32_t)n) - 1U); +} + +static inline int16_t +libcrux_ml_kem_vector_portable_compress_compress_ciphertext_coefficient( + uint8_t coefficient_bits, uint16_t fe) { + uint64_t compressed = (uint64_t)fe << (uint32_t)coefficient_bits; + compressed = compressed + 1664ULL; + compressed = compressed * 10321340ULL; + compressed = compressed >> 35U; + return (int16_t) + libcrux_ml_kem_vector_portable_arithmetic_get_n_least_significant_bits( + coefficient_bits, (uint32_t)compressed); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_ntt_ntt_layer_1_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t zeta0, + int16_t zeta1, int16_t zeta2, int16_t zeta3) { + int16_t t = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[2U], zeta0); + v.elements[2U] = v.elements[0U] - t; + v.elements[0U] = v.elements[0U] + t; + int16_t t0 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[3U], zeta0); + v.elements[3U] = v.elements[1U] - t0; + v.elements[1U] = v.elements[1U] + t0; + int16_t t1 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[6U], zeta1); + v.elements[6U] = v.elements[4U] - t1; + v.elements[4U] = v.elements[4U] + t1; + int16_t t2 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[7U], zeta1); + v.elements[7U] = v.elements[5U] - t2; + v.elements[5U] = v.elements[5U] + t2; + int16_t t3 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[(size_t)8U + (size_t)2U], zeta2); + v.elements[(size_t)8U + (size_t)2U] = + v.elements[(size_t)8U + (size_t)0U] - t3; + v.elements[(size_t)8U + (size_t)0U] = + v.elements[(size_t)8U + (size_t)0U] + t3; + int16_t t4 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[(size_t)8U + (size_t)3U], zeta2); + v.elements[(size_t)8U + (size_t)3U] = + v.elements[(size_t)8U + (size_t)1U] - t4; + v.elements[(size_t)8U + (size_t)1U] = + v.elements[(size_t)8U + (size_t)1U] + t4; + int16_t t5 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[(size_t)8U + (size_t)6U], zeta3); + v.elements[(size_t)8U + (size_t)6U] = + v.elements[(size_t)8U + (size_t)4U] - t5; + v.elements[(size_t)8U + (size_t)4U] = + v.elements[(size_t)8U + (size_t)4U] + t5; + int16_t t6 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[(size_t)8U + (size_t)7U], zeta3); + v.elements[(size_t)8U + (size_t)7U] = + v.elements[(size_t)8U + (size_t)5U] - t6; + v.elements[(size_t)8U + (size_t)5U] = + v.elements[(size_t)8U + (size_t)5U] + t6; + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ntt_layer_1_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, int16_t zeta0, + int16_t zeta1, int16_t zeta2, int16_t zeta3) { + return libcrux_ml_kem_vector_portable_ntt_ntt_layer_1_step(a, zeta0, zeta1, + zeta2, zeta3); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_ntt_ntt_layer_2_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t zeta0, + int16_t zeta1) { + int16_t t = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[4U], zeta0); + v.elements[4U] = v.elements[0U] - t; + v.elements[0U] = v.elements[0U] + t; + int16_t t0 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[5U], zeta0); + v.elements[5U] = v.elements[1U] - t0; + v.elements[1U] = v.elements[1U] + t0; + int16_t t1 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[6U], zeta0); + v.elements[6U] = v.elements[2U] - t1; + v.elements[2U] = v.elements[2U] + t1; + int16_t t2 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[7U], zeta0); + v.elements[7U] = v.elements[3U] - t2; + v.elements[3U] = v.elements[3U] + t2; + int16_t t3 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[(size_t)8U + (size_t)4U], zeta1); + v.elements[(size_t)8U + (size_t)4U] = + v.elements[(size_t)8U + (size_t)0U] - t3; + v.elements[(size_t)8U + (size_t)0U] = + v.elements[(size_t)8U + (size_t)0U] + t3; + int16_t t4 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[(size_t)8U + (size_t)5U], zeta1); + v.elements[(size_t)8U + (size_t)5U] = + v.elements[(size_t)8U + (size_t)1U] - t4; + v.elements[(size_t)8U + (size_t)1U] = + v.elements[(size_t)8U + (size_t)1U] + t4; + int16_t t5 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[(size_t)8U + (size_t)6U], zeta1); + v.elements[(size_t)8U + (size_t)6U] = + v.elements[(size_t)8U + (size_t)2U] - t5; + v.elements[(size_t)8U + (size_t)2U] = + v.elements[(size_t)8U + (size_t)2U] + t5; + int16_t t6 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[(size_t)8U + (size_t)7U], zeta1); + v.elements[(size_t)8U + (size_t)7U] = + v.elements[(size_t)8U + (size_t)3U] - t6; + v.elements[(size_t)8U + (size_t)3U] = + v.elements[(size_t)8U + (size_t)3U] + t6; + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ntt_layer_2_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, int16_t zeta0, + int16_t zeta1) { + return libcrux_ml_kem_vector_portable_ntt_ntt_layer_2_step(a, zeta0, zeta1); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_ntt_ntt_layer_3_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t zeta) { + int16_t t = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[8U], zeta); + v.elements[8U] = v.elements[0U] - t; + v.elements[0U] = v.elements[0U] + t; + int16_t t0 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[9U], zeta); + v.elements[9U] = v.elements[1U] - t0; + v.elements[1U] = v.elements[1U] + t0; + int16_t t1 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[10U], zeta); + v.elements[10U] = v.elements[2U] - t1; + v.elements[2U] = v.elements[2U] + t1; + int16_t t2 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[11U], zeta); + v.elements[11U] = v.elements[3U] - t2; + v.elements[3U] = v.elements[3U] + t2; + int16_t t3 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[12U], zeta); + v.elements[12U] = v.elements[4U] - t3; + v.elements[4U] = v.elements[4U] + t3; + int16_t t4 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[13U], zeta); + v.elements[13U] = v.elements[5U] - t4; + v.elements[5U] = v.elements[5U] + t4; + int16_t t5 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[14U], zeta); + v.elements[14U] = v.elements[6U] - t5; + v.elements[6U] = v.elements[6U] + t5; + int16_t t6 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + v.elements[15U], zeta); + v.elements[15U] = v.elements[7U] - t6; + v.elements[7U] = v.elements[7U] + t6; + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ntt_layer_3_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, int16_t zeta) { + return libcrux_ml_kem_vector_portable_ntt_ntt_layer_3_step(a, zeta); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_ntt_inv_ntt_layer_1_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t zeta0, + int16_t zeta1, int16_t zeta2, int16_t zeta3) { + int16_t a_minus_b = v.elements[2U] - v.elements[0U]; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[0U] + v.elements[2U]); + v.elements[0U] = uu____0; + int16_t uu____1 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b, zeta0); + v.elements[2U] = uu____1; + int16_t a_minus_b0 = v.elements[3U] - v.elements[1U]; + int16_t uu____2 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[1U] + v.elements[3U]); + v.elements[1U] = uu____2; + int16_t uu____3 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b0, zeta0); + v.elements[3U] = uu____3; + int16_t a_minus_b1 = v.elements[6U] - v.elements[4U]; + int16_t uu____4 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[4U] + v.elements[6U]); + v.elements[4U] = uu____4; + int16_t uu____5 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b1, zeta1); + v.elements[6U] = uu____5; + int16_t a_minus_b2 = v.elements[7U] - v.elements[5U]; + int16_t uu____6 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[5U] + v.elements[7U]); + v.elements[5U] = uu____6; + int16_t uu____7 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b2, zeta1); + v.elements[7U] = uu____7; + int16_t a_minus_b3 = + v.elements[(size_t)8U + (size_t)2U] - v.elements[(size_t)8U + (size_t)0U]; + int16_t uu____8 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[(size_t)8U + (size_t)0U] + + v.elements[(size_t)8U + (size_t)2U]); + v.elements[(size_t)8U + (size_t)0U] = uu____8; + int16_t uu____9 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b3, zeta2); + v.elements[(size_t)8U + (size_t)2U] = uu____9; + int16_t a_minus_b4 = + v.elements[(size_t)8U + (size_t)3U] - v.elements[(size_t)8U + (size_t)1U]; + int16_t uu____10 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[(size_t)8U + (size_t)1U] + + v.elements[(size_t)8U + (size_t)3U]); + v.elements[(size_t)8U + (size_t)1U] = uu____10; + int16_t uu____11 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b4, zeta2); + v.elements[(size_t)8U + (size_t)3U] = uu____11; + int16_t a_minus_b5 = + v.elements[(size_t)8U + (size_t)6U] - v.elements[(size_t)8U + (size_t)4U]; + int16_t uu____12 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[(size_t)8U + (size_t)4U] + + v.elements[(size_t)8U + (size_t)6U]); + v.elements[(size_t)8U + (size_t)4U] = uu____12; + int16_t uu____13 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b5, zeta3); + v.elements[(size_t)8U + (size_t)6U] = uu____13; + int16_t a_minus_b6 = + v.elements[(size_t)8U + (size_t)7U] - v.elements[(size_t)8U + (size_t)5U]; + int16_t uu____14 = + libcrux_ml_kem_vector_portable_arithmetic_barrett_reduce_element( + v.elements[(size_t)8U + (size_t)5U] + + v.elements[(size_t)8U + (size_t)7U]); + v.elements[(size_t)8U + (size_t)5U] = uu____14; + int16_t uu____15 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b6, zeta3); + v.elements[(size_t)8U + (size_t)7U] = uu____15; + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___inv_ntt_layer_1_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, int16_t zeta0, + int16_t zeta1, int16_t zeta2, int16_t zeta3) { + return libcrux_ml_kem_vector_portable_ntt_inv_ntt_layer_1_step( + a, zeta0, zeta1, zeta2, zeta3); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_ntt_inv_ntt_layer_2_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t zeta0, + int16_t zeta1) { + int16_t a_minus_b = v.elements[4U] - v.elements[0U]; + v.elements[0U] = v.elements[0U] + v.elements[4U]; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b, zeta0); + v.elements[4U] = uu____0; + int16_t a_minus_b0 = v.elements[5U] - v.elements[1U]; + v.elements[1U] = v.elements[1U] + v.elements[5U]; + int16_t uu____1 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b0, zeta0); + v.elements[5U] = uu____1; + int16_t a_minus_b1 = v.elements[6U] - v.elements[2U]; + v.elements[2U] = v.elements[2U] + v.elements[6U]; + int16_t uu____2 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b1, zeta0); + v.elements[6U] = uu____2; + int16_t a_minus_b2 = v.elements[7U] - v.elements[3U]; + v.elements[3U] = v.elements[3U] + v.elements[7U]; + int16_t uu____3 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b2, zeta0); + v.elements[7U] = uu____3; + int16_t a_minus_b3 = + v.elements[(size_t)8U + (size_t)4U] - v.elements[(size_t)8U + (size_t)0U]; + v.elements[(size_t)8U + (size_t)0U] = + v.elements[(size_t)8U + (size_t)0U] + v.elements[(size_t)8U + (size_t)4U]; + int16_t uu____4 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b3, zeta1); + v.elements[(size_t)8U + (size_t)4U] = uu____4; + int16_t a_minus_b4 = + v.elements[(size_t)8U + (size_t)5U] - v.elements[(size_t)8U + (size_t)1U]; + v.elements[(size_t)8U + (size_t)1U] = + v.elements[(size_t)8U + (size_t)1U] + v.elements[(size_t)8U + (size_t)5U]; + int16_t uu____5 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b4, zeta1); + v.elements[(size_t)8U + (size_t)5U] = uu____5; + int16_t a_minus_b5 = + v.elements[(size_t)8U + (size_t)6U] - v.elements[(size_t)8U + (size_t)2U]; + v.elements[(size_t)8U + (size_t)2U] = + v.elements[(size_t)8U + (size_t)2U] + v.elements[(size_t)8U + (size_t)6U]; + int16_t uu____6 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b5, zeta1); + v.elements[(size_t)8U + (size_t)6U] = uu____6; + int16_t a_minus_b6 = + v.elements[(size_t)8U + (size_t)7U] - v.elements[(size_t)8U + (size_t)3U]; + v.elements[(size_t)8U + (size_t)3U] = + v.elements[(size_t)8U + (size_t)3U] + v.elements[(size_t)8U + (size_t)7U]; + int16_t uu____7 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b6, zeta1); + v.elements[(size_t)8U + (size_t)7U] = uu____7; + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___inv_ntt_layer_2_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, int16_t zeta0, + int16_t zeta1) { + return libcrux_ml_kem_vector_portable_ntt_inv_ntt_layer_2_step(a, zeta0, + zeta1); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_ntt_inv_ntt_layer_3_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t zeta) { + int16_t a_minus_b = v.elements[8U] - v.elements[0U]; + v.elements[0U] = v.elements[0U] + v.elements[8U]; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b, zeta); + v.elements[8U] = uu____0; + int16_t a_minus_b0 = v.elements[9U] - v.elements[1U]; + v.elements[1U] = v.elements[1U] + v.elements[9U]; + int16_t uu____1 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b0, zeta); + v.elements[9U] = uu____1; + int16_t a_minus_b1 = v.elements[10U] - v.elements[2U]; + v.elements[2U] = v.elements[2U] + v.elements[10U]; + int16_t uu____2 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b1, zeta); + v.elements[10U] = uu____2; + int16_t a_minus_b2 = v.elements[11U] - v.elements[3U]; + v.elements[3U] = v.elements[3U] + v.elements[11U]; + int16_t uu____3 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b2, zeta); + v.elements[11U] = uu____3; + int16_t a_minus_b3 = v.elements[12U] - v.elements[4U]; + v.elements[4U] = v.elements[4U] + v.elements[12U]; + int16_t uu____4 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b3, zeta); + v.elements[12U] = uu____4; + int16_t a_minus_b4 = v.elements[13U] - v.elements[5U]; + v.elements[5U] = v.elements[5U] + v.elements[13U]; + int16_t uu____5 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b4, zeta); + v.elements[13U] = uu____5; + int16_t a_minus_b5 = v.elements[14U] - v.elements[6U]; + v.elements[6U] = v.elements[6U] + v.elements[14U]; + int16_t uu____6 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b5, zeta); + v.elements[14U] = uu____6; + int16_t a_minus_b6 = v.elements[15U] - v.elements[7U]; + v.elements[7U] = v.elements[7U] + v.elements[15U]; + int16_t uu____7 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_multiply_fe_by_fer( + a_minus_b6, zeta); + v.elements[15U] = uu____7; + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___inv_ntt_layer_3_step( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, int16_t zeta) { + return libcrux_ml_kem_vector_portable_ntt_inv_ntt_layer_3_step(a, zeta); +} + +typedef struct K___int16_t_int16_t_s { + int16_t fst; + int16_t snd; +} K___int16_t_int16_t; + +static inline K___int16_t_int16_t +libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials( + K___int16_t_int16_t _, K___int16_t_int16_t _0, int16_t zeta) { + int16_t a0 = _.fst; + int16_t a1 = _.snd; + int16_t b0 = _0.fst; + int16_t b1 = _0.snd; + int32_t uu____0 = (int32_t)a0 * (int32_t)b0; + int16_t uu____1 = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_reduce_element( + uu____0 + + (int32_t) + libcrux_ml_kem_vector_portable_arithmetic_montgomery_reduce_element( + (int32_t)a1 * (int32_t)b1) * + (int32_t)zeta); + return (CLITERAL(K___int16_t_int16_t){ + .fst = uu____1, + .snd = + libcrux_ml_kem_vector_portable_arithmetic_montgomery_reduce_element( + (int32_t)a0 * (int32_t)b1 + (int32_t)a1 * (int32_t)b0)}); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_ntt_ntt_multiply( + libcrux_ml_kem_vector_portable_vector_type_PortableVector *lhs, + libcrux_ml_kem_vector_portable_vector_type_PortableVector *rhs, + int16_t zeta0, int16_t zeta1, int16_t zeta2, int16_t zeta3) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector out = + libcrux_ml_kem_vector_portable_vector_type_zero(); + K___int16_t_int16_t lit0; + lit0.fst = lhs->elements[0U]; + lit0.snd = lhs->elements[1U]; + K___int16_t_int16_t lit1; + lit1.fst = rhs->elements[0U]; + lit1.snd = rhs->elements[1U]; + K___int16_t_int16_t product = + libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials(lit0, lit1, + zeta0); + out.elements[0U] = product.fst; + out.elements[1U] = product.snd; + K___int16_t_int16_t lit2; + lit2.fst = lhs->elements[2U]; + lit2.snd = lhs->elements[3U]; + K___int16_t_int16_t lit3; + lit3.fst = rhs->elements[2U]; + lit3.snd = rhs->elements[3U]; + K___int16_t_int16_t product0 = + libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials(lit2, lit3, + -zeta0); + out.elements[2U] = product0.fst; + out.elements[3U] = product0.snd; + K___int16_t_int16_t lit4; + lit4.fst = lhs->elements[4U]; + lit4.snd = lhs->elements[5U]; + K___int16_t_int16_t lit5; + lit5.fst = rhs->elements[4U]; + lit5.snd = rhs->elements[5U]; + K___int16_t_int16_t product1 = + libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials(lit4, lit5, + zeta1); + out.elements[4U] = product1.fst; + out.elements[5U] = product1.snd; + K___int16_t_int16_t lit6; + lit6.fst = lhs->elements[6U]; + lit6.snd = lhs->elements[7U]; + K___int16_t_int16_t lit7; + lit7.fst = rhs->elements[6U]; + lit7.snd = rhs->elements[7U]; + K___int16_t_int16_t product2 = + libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials(lit6, lit7, + -zeta1); + out.elements[6U] = product2.fst; + out.elements[7U] = product2.snd; + K___int16_t_int16_t lit8; + lit8.fst = lhs->elements[(size_t)8U + (size_t)0U]; + lit8.snd = lhs->elements[(size_t)8U + (size_t)1U]; + K___int16_t_int16_t lit9; + lit9.fst = rhs->elements[(size_t)8U + (size_t)0U]; + lit9.snd = rhs->elements[(size_t)8U + (size_t)1U]; + K___int16_t_int16_t product3 = + libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials(lit8, lit9, + zeta2); + out.elements[(size_t)8U + (size_t)0U] = product3.fst; + out.elements[(size_t)8U + (size_t)1U] = product3.snd; + K___int16_t_int16_t lit10; + lit10.fst = lhs->elements[(size_t)8U + (size_t)2U]; + lit10.snd = lhs->elements[(size_t)8U + (size_t)3U]; + K___int16_t_int16_t lit11; + lit11.fst = rhs->elements[(size_t)8U + (size_t)2U]; + lit11.snd = rhs->elements[(size_t)8U + (size_t)3U]; + K___int16_t_int16_t product4 = + libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials(lit10, lit11, + -zeta2); + out.elements[(size_t)8U + (size_t)2U] = product4.fst; + out.elements[(size_t)8U + (size_t)3U] = product4.snd; + K___int16_t_int16_t lit12; + lit12.fst = lhs->elements[(size_t)8U + (size_t)4U]; + lit12.snd = lhs->elements[(size_t)8U + (size_t)5U]; + K___int16_t_int16_t lit13; + lit13.fst = rhs->elements[(size_t)8U + (size_t)4U]; + lit13.snd = rhs->elements[(size_t)8U + (size_t)5U]; + K___int16_t_int16_t product5 = + libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials(lit12, lit13, + zeta3); + out.elements[(size_t)8U + (size_t)4U] = product5.fst; + out.elements[(size_t)8U + (size_t)5U] = product5.snd; + K___int16_t_int16_t lit14; + lit14.fst = lhs->elements[(size_t)8U + (size_t)6U]; + lit14.snd = lhs->elements[(size_t)8U + (size_t)7U]; + K___int16_t_int16_t lit; + lit.fst = rhs->elements[(size_t)8U + (size_t)6U]; + lit.snd = rhs->elements[(size_t)8U + (size_t)7U]; + K___int16_t_int16_t product6 = + libcrux_ml_kem_vector_portable_ntt_ntt_multiply_binomials(lit14, lit, + -zeta3); + out.elements[(size_t)8U + (size_t)6U] = product6.fst; + out.elements[(size_t)8U + (size_t)7U] = product6.snd; + return out; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ntt_multiply( + libcrux_ml_kem_vector_portable_vector_type_PortableVector *lhs, + libcrux_ml_kem_vector_portable_vector_type_PortableVector *rhs, + int16_t zeta0, int16_t zeta1, int16_t zeta2, int16_t zeta3) { + return libcrux_ml_kem_vector_portable_ntt_ntt_multiply(lhs, rhs, zeta0, zeta1, + zeta2, zeta3); +} + +static inline void libcrux_ml_kem_vector_portable_serialize_serialize_1( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, + uint8_t ret[2U]) { + uint8_t result[2U] = {0U}; + for (size_t i = (size_t)0U; i < (size_t)8U; i++) { + size_t i0 = i; + size_t uu____0 = (size_t)0U; + result[uu____0] = (uint32_t)result[uu____0] | + (uint32_t)(uint8_t)v.elements[i0] << (uint32_t)i0; + } + for (size_t i = (size_t)8U; i < (size_t)16U; i++) { + size_t i0 = i; + size_t uu____1 = (size_t)1U; + result[uu____1] = + (uint32_t)result[uu____1] | (uint32_t)(uint8_t)v.elements[i0] + << (uint32_t)(i0 - (size_t)8U); + } + memcpy(ret, result, (size_t)2U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_1( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, + uint8_t ret[2U]) { + uint8_t ret0[2U]; + libcrux_ml_kem_vector_portable_serialize_serialize_1(a, ret0); + memcpy(ret, ret0, (size_t)2U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_serialize_deserialize_1(Eurydice_slice v) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector result = + libcrux_ml_kem_vector_portable_vector_type_zero(); + for (size_t i = (size_t)0U; i < (size_t)8U; i++) { + size_t i0 = i; + uint8_t *uu____0 = + &Eurydice_slice_index(v, (size_t)0U, uint8_t, uint8_t *, uint8_t); + result.elements[i0] = (int16_t)((uint32_t)uu____0[0U] >> (uint32_t)i0 & 1U); + } + for (size_t i = (size_t)8U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + uint8_t *uu____1 = + &Eurydice_slice_index(v, (size_t)1U, uint8_t, uint8_t *, uint8_t); + result.elements[i0] = + (int16_t)((uint32_t)uu____1[0U] >> (uint32_t)(i0 - (size_t)8U) & 1U); + } + return result; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_1( + Eurydice_slice a) { + return libcrux_ml_kem_vector_portable_serialize_deserialize_1(a); +} + +static inline void libcrux_ml_kem_vector_portable_serialize_serialize_4( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, + uint8_t ret[8U]) { + uint8_t result[8U] = {0U}; + result[0U] = (uint32_t)(uint8_t)v.elements[1U] << 4U | + (uint32_t)(uint8_t)v.elements[0U]; + result[1U] = (uint32_t)(uint8_t)v.elements[3U] << 4U | + (uint32_t)(uint8_t)v.elements[2U]; + result[2U] = (uint32_t)(uint8_t)v.elements[5U] << 4U | + (uint32_t)(uint8_t)v.elements[4U]; + result[3U] = (uint32_t)(uint8_t)v.elements[7U] << 4U | + (uint32_t)(uint8_t)v.elements[6U]; + result[4U] = (uint32_t)(uint8_t)v.elements[(size_t)8U + (size_t)1U] << 4U | + (uint32_t)(uint8_t)v.elements[(size_t)8U + (size_t)0U]; + result[5U] = (uint32_t)(uint8_t)v.elements[(size_t)8U + (size_t)3U] << 4U | + (uint32_t)(uint8_t)v.elements[(size_t)8U + (size_t)2U]; + result[6U] = (uint32_t)(uint8_t)v.elements[(size_t)8U + (size_t)5U] << 4U | + (uint32_t)(uint8_t)v.elements[(size_t)8U + (size_t)4U]; + result[7U] = (uint32_t)(uint8_t)v.elements[(size_t)8U + (size_t)7U] << 4U | + (uint32_t)(uint8_t)v.elements[(size_t)8U + (size_t)6U]; + memcpy(ret, result, (size_t)8U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_4( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, + uint8_t ret[8U]) { + uint8_t ret0[8U]; + libcrux_ml_kem_vector_portable_serialize_serialize_4(a, ret0); + memcpy(ret, ret0, (size_t)8U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_serialize_deserialize_4(Eurydice_slice bytes) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector v = + libcrux_ml_kem_vector_portable_vector_type_zero(); + uint8_t *uu____0 = + &Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, uint8_t); + v.elements[0U] = (int16_t)((uint32_t)uu____0[0U] & 15U); + uint8_t *uu____1 = + &Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, uint8_t); + v.elements[1U] = (int16_t)((uint32_t)uu____1[0U] >> 4U & 15U); + uint8_t *uu____2 = + &Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + v.elements[2U] = (int16_t)((uint32_t)uu____2[0U] & 15U); + uint8_t *uu____3 = + &Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + v.elements[3U] = (int16_t)((uint32_t)uu____3[0U] >> 4U & 15U); + uint8_t *uu____4 = + &Eurydice_slice_index(bytes, (size_t)2U, uint8_t, uint8_t *, uint8_t); + v.elements[4U] = (int16_t)((uint32_t)uu____4[0U] & 15U); + uint8_t *uu____5 = + &Eurydice_slice_index(bytes, (size_t)2U, uint8_t, uint8_t *, uint8_t); + v.elements[5U] = (int16_t)((uint32_t)uu____5[0U] >> 4U & 15U); + uint8_t *uu____6 = + &Eurydice_slice_index(bytes, (size_t)3U, uint8_t, uint8_t *, uint8_t); + v.elements[6U] = (int16_t)((uint32_t)uu____6[0U] & 15U); + uint8_t *uu____7 = + &Eurydice_slice_index(bytes, (size_t)3U, uint8_t, uint8_t *, uint8_t); + v.elements[7U] = (int16_t)((uint32_t)uu____7[0U] >> 4U & 15U); + uint8_t *uu____8 = + &Eurydice_slice_index(bytes, (size_t)4U, uint8_t, uint8_t *, uint8_t); + v.elements[8U] = (int16_t)((uint32_t)uu____8[0U] & 15U); + uint8_t *uu____9 = + &Eurydice_slice_index(bytes, (size_t)4U, uint8_t, uint8_t *, uint8_t); + v.elements[9U] = (int16_t)((uint32_t)uu____9[0U] >> 4U & 15U); + uint8_t *uu____10 = + &Eurydice_slice_index(bytes, (size_t)5U, uint8_t, uint8_t *, uint8_t); + v.elements[10U] = (int16_t)((uint32_t)uu____10[0U] & 15U); + uint8_t *uu____11 = + &Eurydice_slice_index(bytes, (size_t)5U, uint8_t, uint8_t *, uint8_t); + v.elements[11U] = (int16_t)((uint32_t)uu____11[0U] >> 4U & 15U); + uint8_t *uu____12 = + &Eurydice_slice_index(bytes, (size_t)6U, uint8_t, uint8_t *, uint8_t); + v.elements[12U] = (int16_t)((uint32_t)uu____12[0U] & 15U); + uint8_t *uu____13 = + &Eurydice_slice_index(bytes, (size_t)6U, uint8_t, uint8_t *, uint8_t); + v.elements[13U] = (int16_t)((uint32_t)uu____13[0U] >> 4U & 15U); + uint8_t *uu____14 = + &Eurydice_slice_index(bytes, (size_t)7U, uint8_t, uint8_t *, uint8_t); + v.elements[14U] = (int16_t)((uint32_t)uu____14[0U] & 15U); + uint8_t *uu____15 = + &Eurydice_slice_index(bytes, (size_t)7U, uint8_t, uint8_t *, uint8_t); + v.elements[15U] = (int16_t)((uint32_t)uu____15[0U] >> 4U & 15U); + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_4( + Eurydice_slice a) { + return libcrux_ml_kem_vector_portable_serialize_deserialize_4(a); +} + +static inline void libcrux_ml_kem_vector_portable_serialize_serialize_5( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, + uint8_t ret[10U]) { + uint8_t result[10U] = {0U}; + result[0U] = (uint8_t)((v.elements[1U] & (int16_t)7) << 5U | v.elements[0U]); + result[1U] = + (uint8_t)(((v.elements[3U] & (int16_t)1) << 7U | v.elements[2U] << 2U) | + v.elements[1U] >> 3U); + result[2U] = + (uint8_t)((v.elements[4U] & (int16_t)15) << 4U | v.elements[3U] >> 1U); + result[3U] = + (uint8_t)(((v.elements[6U] & (int16_t)3) << 6U | v.elements[5U] << 1U) | + v.elements[4U] >> 4U); + result[4U] = (uint8_t)(v.elements[7U] << 3U | v.elements[6U] >> 2U); + result[5U] = + (uint8_t)((v.elements[(size_t)8U + (size_t)1U] & (int16_t)7) << 5U | + v.elements[(size_t)8U + (size_t)0U]); + result[6U] = + (uint8_t)(((v.elements[(size_t)8U + (size_t)3U] & (int16_t)1) << 7U | + v.elements[(size_t)8U + (size_t)2U] << 2U) | + v.elements[(size_t)8U + (size_t)1U] >> 3U); + result[7U] = + (uint8_t)((v.elements[(size_t)8U + (size_t)4U] & (int16_t)15) << 4U | + v.elements[(size_t)8U + (size_t)3U] >> 1U); + result[8U] = + (uint8_t)(((v.elements[(size_t)8U + (size_t)6U] & (int16_t)3) << 6U | + v.elements[(size_t)8U + (size_t)5U] << 1U) | + v.elements[(size_t)8U + (size_t)4U] >> 4U); + result[9U] = (uint8_t)(v.elements[(size_t)8U + (size_t)7U] << 3U | + v.elements[(size_t)8U + (size_t)6U] >> 2U); + memcpy(ret, result, (size_t)10U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_5( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, + uint8_t ret[10U]) { + uint8_t ret0[10U]; + libcrux_ml_kem_vector_portable_serialize_serialize_5(a, ret0); + memcpy(ret, ret0, (size_t)10U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_serialize_deserialize_5(Eurydice_slice bytes) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector v = + libcrux_ml_kem_vector_portable_vector_type_zero(); + uint8_t *uu____0 = + &Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, uint8_t); + v.elements[0U] = (int16_t)((uint32_t)uu____0[0U] & 31U); + uint8_t uu____1 = ((uint32_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t) & + 3U) + << 3U; + uint8_t *uu____2 = + &Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, uint8_t); + v.elements[1U] = (int16_t)((uint32_t)uu____1 | (uint32_t)uu____2[0U] >> 5U); + uint8_t *uu____3 = + &Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + v.elements[2U] = (int16_t)((uint32_t)uu____3[0U] >> 2U & 31U); + uint8_t uu____4 = ((uint32_t)Eurydice_slice_index(bytes, (size_t)2U, uint8_t, + uint8_t *, uint8_t) & + 15U) + << 1U; + uint8_t *uu____5 = + &Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + v.elements[3U] = (int16_t)((uint32_t)uu____4 | (uint32_t)uu____5[0U] >> 7U); + uint8_t uu____6 = ((uint32_t)Eurydice_slice_index(bytes, (size_t)3U, uint8_t, + uint8_t *, uint8_t) & + 1U) + << 4U; + uint8_t *uu____7 = + &Eurydice_slice_index(bytes, (size_t)2U, uint8_t, uint8_t *, uint8_t); + v.elements[4U] = (int16_t)((uint32_t)uu____6 | (uint32_t)uu____7[0U] >> 4U); + uint8_t *uu____8 = + &Eurydice_slice_index(bytes, (size_t)3U, uint8_t, uint8_t *, uint8_t); + v.elements[5U] = (int16_t)((uint32_t)uu____8[0U] >> 1U & 31U); + uint8_t uu____9 = ((uint32_t)Eurydice_slice_index(bytes, (size_t)4U, uint8_t, + uint8_t *, uint8_t) & + 7U) + << 2U; + uint8_t *uu____10 = + &Eurydice_slice_index(bytes, (size_t)3U, uint8_t, uint8_t *, uint8_t); + v.elements[6U] = (int16_t)((uint32_t)uu____9 | (uint32_t)uu____10[0U] >> 6U); + uint8_t *uu____11 = + &Eurydice_slice_index(bytes, (size_t)4U, uint8_t, uint8_t *, uint8_t); + v.elements[7U] = (int16_t)((uint32_t)uu____11[0U] >> 3U); + uint8_t *uu____12 = &Eurydice_slice_index(bytes, (size_t)5U + (size_t)0U, + uint8_t, uint8_t *, uint8_t); + v.elements[8U] = (int16_t)((uint32_t)uu____12[0U] & 31U); + uint8_t uu____13 = + ((uint32_t)Eurydice_slice_index(bytes, (size_t)5U + (size_t)1U, uint8_t, + uint8_t *, uint8_t) & + 3U) + << 3U; + uint8_t *uu____14 = &Eurydice_slice_index(bytes, (size_t)5U + (size_t)0U, + uint8_t, uint8_t *, uint8_t); + v.elements[9U] = (int16_t)((uint32_t)uu____13 | (uint32_t)uu____14[0U] >> 5U); + uint8_t *uu____15 = &Eurydice_slice_index(bytes, (size_t)5U + (size_t)1U, + uint8_t, uint8_t *, uint8_t); + v.elements[10U] = (int16_t)((uint32_t)uu____15[0U] >> 2U & 31U); + uint8_t uu____16 = + ((uint32_t)Eurydice_slice_index(bytes, (size_t)5U + (size_t)2U, uint8_t, + uint8_t *, uint8_t) & + 15U) + << 1U; + uint8_t *uu____17 = &Eurydice_slice_index(bytes, (size_t)5U + (size_t)1U, + uint8_t, uint8_t *, uint8_t); + v.elements[11U] = + (int16_t)((uint32_t)uu____16 | (uint32_t)uu____17[0U] >> 7U); + uint8_t uu____18 = + ((uint32_t)Eurydice_slice_index(bytes, (size_t)5U + (size_t)3U, uint8_t, + uint8_t *, uint8_t) & + 1U) + << 4U; + uint8_t *uu____19 = &Eurydice_slice_index(bytes, (size_t)5U + (size_t)2U, + uint8_t, uint8_t *, uint8_t); + v.elements[12U] = + (int16_t)((uint32_t)uu____18 | (uint32_t)uu____19[0U] >> 4U); + uint8_t *uu____20 = &Eurydice_slice_index(bytes, (size_t)5U + (size_t)3U, + uint8_t, uint8_t *, uint8_t); + v.elements[13U] = (int16_t)((uint32_t)uu____20[0U] >> 1U & 31U); + uint8_t uu____21 = + ((uint32_t)Eurydice_slice_index(bytes, (size_t)5U + (size_t)4U, uint8_t, + uint8_t *, uint8_t) & + 7U) + << 2U; + uint8_t *uu____22 = &Eurydice_slice_index(bytes, (size_t)5U + (size_t)3U, + uint8_t, uint8_t *, uint8_t); + v.elements[14U] = + (int16_t)((uint32_t)uu____21 | (uint32_t)uu____22[0U] >> 6U); + uint8_t *uu____23 = &Eurydice_slice_index(bytes, (size_t)5U + (size_t)4U, + uint8_t, uint8_t *, uint8_t); + v.elements[15U] = (int16_t)((uint32_t)uu____23[0U] >> 3U); + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_5( + Eurydice_slice a) { + return libcrux_ml_kem_vector_portable_serialize_deserialize_5(a); +} + +static inline void libcrux_ml_kem_vector_portable_serialize_serialize_10( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, + uint8_t ret[20U]) { + uint8_t result[20U] = {0U}; + result[0U] = (uint8_t)(v.elements[0U] & (int16_t)255); + result[1U] = (uint32_t)(uint8_t)(v.elements[1U] & (int16_t)63) << 2U | + (uint32_t)(uint8_t)(v.elements[0U] >> 8U & (int16_t)3); + result[2U] = (uint32_t)(uint8_t)(v.elements[2U] & (int16_t)15) << 4U | + (uint32_t)(uint8_t)(v.elements[1U] >> 6U & (int16_t)15); + result[3U] = (uint32_t)(uint8_t)(v.elements[3U] & (int16_t)3) << 6U | + (uint32_t)(uint8_t)(v.elements[2U] >> 4U & (int16_t)63); + result[4U] = (uint8_t)(v.elements[3U] >> 2U & (int16_t)255); + result[5U] = (uint8_t)(v.elements[4U] & (int16_t)255); + result[6U] = (uint32_t)(uint8_t)(v.elements[5U] & (int16_t)63) << 2U | + (uint32_t)(uint8_t)(v.elements[4U] >> 8U & (int16_t)3); + result[7U] = (uint32_t)(uint8_t)(v.elements[6U] & (int16_t)15) << 4U | + (uint32_t)(uint8_t)(v.elements[5U] >> 6U & (int16_t)15); + result[8U] = (uint32_t)(uint8_t)(v.elements[7U] & (int16_t)3) << 6U | + (uint32_t)(uint8_t)(v.elements[6U] >> 4U & (int16_t)63); + result[9U] = (uint8_t)(v.elements[7U] >> 2U & (int16_t)255); + result[10U] = (uint8_t)(v.elements[(size_t)8U + (size_t)0U] & (int16_t)255); + result[11U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)1U] & (int16_t)63) + << 2U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)0U] >> 8U & + (int16_t)3); + result[12U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)2U] & (int16_t)15) + << 4U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)1U] >> 6U & + (int16_t)15); + result[13U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)3U] & (int16_t)3) + << 6U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)2U] >> 4U & + (int16_t)63); + result[14U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)3U] >> 2U & (int16_t)255); + result[15U] = (uint8_t)(v.elements[(size_t)8U + (size_t)4U] & (int16_t)255); + result[16U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)5U] & (int16_t)63) + << 2U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)4U] >> 8U & + (int16_t)3); + result[17U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)6U] & (int16_t)15) + << 4U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)5U] >> 6U & + (int16_t)15); + result[18U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)7U] & (int16_t)3) + << 6U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)6U] >> 4U & + (int16_t)63); + result[19U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)7U] >> 2U & (int16_t)255); + memcpy(ret, result, (size_t)20U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_10( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, + uint8_t ret[20U]) { + uint8_t ret0[20U]; + libcrux_ml_kem_vector_portable_serialize_serialize_10(a, ret0); + memcpy(ret, ret0, (size_t)20U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_serialize_deserialize_10(Eurydice_slice bytes) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector result = + libcrux_ml_kem_vector_portable_vector_type_zero(); + int16_t uu____0 = ((int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)3) + << 8U; + uint8_t *uu____1 = + &Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, uint8_t); + result.elements[0U] = uu____0 | ((int16_t)uu____1[0U] & (int16_t)255); + int16_t uu____2 = ((int16_t)Eurydice_slice_index(bytes, (size_t)2U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)15) + << 6U; + uint8_t *uu____3 = + &Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + result.elements[1U] = uu____2 | (int16_t)uu____3[0U] >> 2U; + int16_t uu____4 = ((int16_t)Eurydice_slice_index(bytes, (size_t)3U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)63) + << 4U; + uint8_t *uu____5 = + &Eurydice_slice_index(bytes, (size_t)2U, uint8_t, uint8_t *, uint8_t); + result.elements[2U] = uu____4 | (int16_t)uu____5[0U] >> 4U; + int16_t uu____6 = (int16_t)Eurydice_slice_index(bytes, (size_t)4U, uint8_t, + uint8_t *, uint8_t) + << 2U; + uint8_t *uu____7 = + &Eurydice_slice_index(bytes, (size_t)3U, uint8_t, uint8_t *, uint8_t); + result.elements[3U] = uu____6 | (int16_t)uu____7[0U] >> 6U; + int16_t uu____8 = ((int16_t)Eurydice_slice_index(bytes, (size_t)6U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)3) + << 8U; + uint8_t *uu____9 = + &Eurydice_slice_index(bytes, (size_t)5U, uint8_t, uint8_t *, uint8_t); + result.elements[4U] = uu____8 | ((int16_t)uu____9[0U] & (int16_t)255); + int16_t uu____10 = ((int16_t)Eurydice_slice_index(bytes, (size_t)7U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)15) + << 6U; + uint8_t *uu____11 = + &Eurydice_slice_index(bytes, (size_t)6U, uint8_t, uint8_t *, uint8_t); + result.elements[5U] = uu____10 | (int16_t)uu____11[0U] >> 2U; + int16_t uu____12 = ((int16_t)Eurydice_slice_index(bytes, (size_t)8U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)63) + << 4U; + uint8_t *uu____13 = + &Eurydice_slice_index(bytes, (size_t)7U, uint8_t, uint8_t *, uint8_t); + result.elements[6U] = uu____12 | (int16_t)uu____13[0U] >> 4U; + int16_t uu____14 = (int16_t)Eurydice_slice_index(bytes, (size_t)9U, uint8_t, + uint8_t *, uint8_t) + << 2U; + uint8_t *uu____15 = + &Eurydice_slice_index(bytes, (size_t)8U, uint8_t, uint8_t *, uint8_t); + result.elements[7U] = uu____14 | (int16_t)uu____15[0U] >> 6U; + int16_t uu____16 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)10U + (size_t)1U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)3) + << 8U; + uint8_t *uu____17 = &Eurydice_slice_index(bytes, (size_t)10U + (size_t)0U, + uint8_t, uint8_t *, uint8_t); + result.elements[8U] = uu____16 | ((int16_t)uu____17[0U] & (int16_t)255); + int16_t uu____18 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)10U + (size_t)2U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)15) + << 6U; + uint8_t *uu____19 = &Eurydice_slice_index(bytes, (size_t)10U + (size_t)1U, + uint8_t, uint8_t *, uint8_t); + result.elements[9U] = uu____18 | (int16_t)uu____19[0U] >> 2U; + int16_t uu____20 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)10U + (size_t)3U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)63) + << 4U; + uint8_t *uu____21 = &Eurydice_slice_index(bytes, (size_t)10U + (size_t)2U, + uint8_t, uint8_t *, uint8_t); + result.elements[10U] = uu____20 | (int16_t)uu____21[0U] >> 4U; + int16_t uu____22 = + (int16_t)Eurydice_slice_index(bytes, (size_t)10U + (size_t)4U, uint8_t, + uint8_t *, uint8_t) + << 2U; + uint8_t *uu____23 = &Eurydice_slice_index(bytes, (size_t)10U + (size_t)3U, + uint8_t, uint8_t *, uint8_t); + result.elements[11U] = uu____22 | (int16_t)uu____23[0U] >> 6U; + int16_t uu____24 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)10U + (size_t)6U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)3) + << 8U; + uint8_t *uu____25 = &Eurydice_slice_index(bytes, (size_t)10U + (size_t)5U, + uint8_t, uint8_t *, uint8_t); + result.elements[12U] = uu____24 | ((int16_t)uu____25[0U] & (int16_t)255); + int16_t uu____26 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)10U + (size_t)7U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)15) + << 6U; + uint8_t *uu____27 = &Eurydice_slice_index(bytes, (size_t)10U + (size_t)6U, + uint8_t, uint8_t *, uint8_t); + result.elements[13U] = uu____26 | (int16_t)uu____27[0U] >> 2U; + int16_t uu____28 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)10U + (size_t)8U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)63) + << 4U; + uint8_t *uu____29 = &Eurydice_slice_index(bytes, (size_t)10U + (size_t)7U, + uint8_t, uint8_t *, uint8_t); + result.elements[14U] = uu____28 | (int16_t)uu____29[0U] >> 4U; + int16_t uu____30 = + (int16_t)Eurydice_slice_index(bytes, (size_t)10U + (size_t)9U, uint8_t, + uint8_t *, uint8_t) + << 2U; + uint8_t *uu____31 = &Eurydice_slice_index(bytes, (size_t)10U + (size_t)8U, + uint8_t, uint8_t *, uint8_t); + result.elements[15U] = uu____30 | (int16_t)uu____31[0U] >> 6U; + return result; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_10( + Eurydice_slice a) { + return libcrux_ml_kem_vector_portable_serialize_deserialize_10(a); +} + +static inline void libcrux_ml_kem_vector_portable_serialize_serialize_11( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, + uint8_t ret[22U]) { + uint8_t result[22U] = {0U}; + result[0U] = (uint8_t)v.elements[0U]; + result[1U] = (uint32_t)(uint8_t)(v.elements[1U] & (int16_t)31) << 3U | + (uint32_t)(uint8_t)(v.elements[0U] >> 8U); + result[2U] = (uint32_t)(uint8_t)(v.elements[2U] & (int16_t)3) << 6U | + (uint32_t)(uint8_t)(v.elements[1U] >> 5U); + result[3U] = (uint8_t)(v.elements[2U] >> 2U & (int16_t)255); + result[4U] = (uint32_t)(uint8_t)(v.elements[3U] & (int16_t)127) << 1U | + (uint32_t)(uint8_t)(v.elements[2U] >> 10U); + result[5U] = (uint32_t)(uint8_t)(v.elements[4U] & (int16_t)15) << 4U | + (uint32_t)(uint8_t)(v.elements[3U] >> 7U); + result[6U] = (uint32_t)(uint8_t)(v.elements[5U] & (int16_t)1) << 7U | + (uint32_t)(uint8_t)(v.elements[4U] >> 4U); + result[7U] = (uint8_t)(v.elements[5U] >> 1U & (int16_t)255); + result[8U] = (uint32_t)(uint8_t)(v.elements[6U] & (int16_t)63) << 2U | + (uint32_t)(uint8_t)(v.elements[5U] >> 9U); + result[9U] = (uint32_t)(uint8_t)(v.elements[7U] & (int16_t)7) << 5U | + (uint32_t)(uint8_t)(v.elements[6U] >> 6U); + result[10U] = (uint8_t)(v.elements[7U] >> 3U); + result[11U] = (uint8_t)v.elements[(size_t)8U + (size_t)0U]; + result[12U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)1U] & (int16_t)31) + << 3U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)0U] >> 8U); + result[13U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)2U] & (int16_t)3) + << 6U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)1U] >> 5U); + result[14U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)2U] >> 2U & (int16_t)255); + result[15U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)3U] & (int16_t)127) + << 1U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)2U] >> 10U); + result[16U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)4U] & (int16_t)15) + << 4U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)3U] >> 7U); + result[17U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)5U] & (int16_t)1) + << 7U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)4U] >> 4U); + result[18U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)5U] >> 1U & (int16_t)255); + result[19U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)6U] & (int16_t)63) + << 2U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)5U] >> 9U); + result[20U] = + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)7U] & (int16_t)7) + << 5U | + (uint32_t)(uint8_t)(v.elements[(size_t)8U + (size_t)6U] >> 6U); + result[21U] = (uint8_t)(v.elements[(size_t)8U + (size_t)7U] >> 3U); + memcpy(ret, result, (size_t)22U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_11( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, + uint8_t ret[22U]) { + uint8_t ret0[22U]; + libcrux_ml_kem_vector_portable_serialize_serialize_11(a, ret0); + memcpy(ret, ret0, (size_t)22U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_serialize_deserialize_11(Eurydice_slice bytes) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector result = + libcrux_ml_kem_vector_portable_vector_type_zero(); + int16_t uu____0 = ((int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)7) + << 8U; + uint8_t *uu____1 = + &Eurydice_slice_index(bytes, (size_t)0U, uint8_t, uint8_t *, uint8_t); + result.elements[0U] = uu____0 | (int16_t)uu____1[0U]; + int16_t uu____2 = ((int16_t)Eurydice_slice_index(bytes, (size_t)2U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)63) + << 5U; + uint8_t *uu____3 = + &Eurydice_slice_index(bytes, (size_t)1U, uint8_t, uint8_t *, uint8_t); + result.elements[1U] = uu____2 | (int16_t)uu____3[0U] >> 3U; + int16_t uu____4 = ((int16_t)Eurydice_slice_index(bytes, (size_t)4U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)1) + << 10U; + int16_t uu____5 = + uu____4 | (int16_t)Eurydice_slice_index(bytes, (size_t)3U, uint8_t, + uint8_t *, uint8_t) + << 2U; + uint8_t *uu____6 = + &Eurydice_slice_index(bytes, (size_t)2U, uint8_t, uint8_t *, uint8_t); + result.elements[2U] = uu____5 | (int16_t)uu____6[0U] >> 6U; + int16_t uu____7 = ((int16_t)Eurydice_slice_index(bytes, (size_t)5U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)15) + << 7U; + uint8_t *uu____8 = + &Eurydice_slice_index(bytes, (size_t)4U, uint8_t, uint8_t *, uint8_t); + result.elements[3U] = uu____7 | (int16_t)uu____8[0U] >> 1U; + int16_t uu____9 = ((int16_t)Eurydice_slice_index(bytes, (size_t)6U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)127) + << 4U; + uint8_t *uu____10 = + &Eurydice_slice_index(bytes, (size_t)5U, uint8_t, uint8_t *, uint8_t); + result.elements[4U] = uu____9 | (int16_t)uu____10[0U] >> 4U; + int16_t uu____11 = ((int16_t)Eurydice_slice_index(bytes, (size_t)8U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)3) + << 9U; + int16_t uu____12 = + uu____11 | (int16_t)Eurydice_slice_index(bytes, (size_t)7U, uint8_t, + uint8_t *, uint8_t) + << 1U; + uint8_t *uu____13 = + &Eurydice_slice_index(bytes, (size_t)6U, uint8_t, uint8_t *, uint8_t); + result.elements[5U] = uu____12 | (int16_t)uu____13[0U] >> 7U; + int16_t uu____14 = ((int16_t)Eurydice_slice_index(bytes, (size_t)9U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)31) + << 6U; + uint8_t *uu____15 = + &Eurydice_slice_index(bytes, (size_t)8U, uint8_t, uint8_t *, uint8_t); + result.elements[6U] = uu____14 | (int16_t)uu____15[0U] >> 2U; + int16_t uu____16 = (int16_t)Eurydice_slice_index(bytes, (size_t)10U, uint8_t, + uint8_t *, uint8_t) + << 3U; + uint8_t *uu____17 = + &Eurydice_slice_index(bytes, (size_t)9U, uint8_t, uint8_t *, uint8_t); + result.elements[7U] = uu____16 | (int16_t)uu____17[0U] >> 5U; + int16_t uu____18 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)1U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)7) + << 8U; + uint8_t *uu____19 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)0U, + uint8_t, uint8_t *, uint8_t); + result.elements[8U] = uu____18 | (int16_t)uu____19[0U]; + int16_t uu____20 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)2U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)63) + << 5U; + uint8_t *uu____21 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)1U, + uint8_t, uint8_t *, uint8_t); + result.elements[9U] = uu____20 | (int16_t)uu____21[0U] >> 3U; + int16_t uu____22 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)4U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)1) + << 10U; + int16_t uu____23 = + uu____22 | (int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)3U, + uint8_t, uint8_t *, uint8_t) + << 2U; + uint8_t *uu____24 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)2U, + uint8_t, uint8_t *, uint8_t); + result.elements[10U] = uu____23 | (int16_t)uu____24[0U] >> 6U; + int16_t uu____25 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)5U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)15) + << 7U; + uint8_t *uu____26 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)4U, + uint8_t, uint8_t *, uint8_t); + result.elements[11U] = uu____25 | (int16_t)uu____26[0U] >> 1U; + int16_t uu____27 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)6U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)127) + << 4U; + uint8_t *uu____28 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)5U, + uint8_t, uint8_t *, uint8_t); + result.elements[12U] = uu____27 | (int16_t)uu____28[0U] >> 4U; + int16_t uu____29 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)8U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)3) + << 9U; + int16_t uu____30 = + uu____29 | (int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)7U, + uint8_t, uint8_t *, uint8_t) + << 1U; + uint8_t *uu____31 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)6U, + uint8_t, uint8_t *, uint8_t); + result.elements[13U] = uu____30 | (int16_t)uu____31[0U] >> 7U; + int16_t uu____32 = + ((int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)9U, uint8_t, + uint8_t *, uint8_t) & + (int16_t)31) + << 6U; + uint8_t *uu____33 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)8U, + uint8_t, uint8_t *, uint8_t); + result.elements[14U] = uu____32 | (int16_t)uu____33[0U] >> 2U; + int16_t uu____34 = + (int16_t)Eurydice_slice_index(bytes, (size_t)11U + (size_t)10U, uint8_t, + uint8_t *, uint8_t) + << 3U; + uint8_t *uu____35 = &Eurydice_slice_index(bytes, (size_t)11U + (size_t)9U, + uint8_t, uint8_t *, uint8_t); + result.elements[15U] = uu____34 | (int16_t)uu____35[0U] >> 5U; + return result; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_11( + Eurydice_slice a) { + return libcrux_ml_kem_vector_portable_serialize_deserialize_11(a); +} + +static inline void libcrux_ml_kem_vector_portable_serialize_serialize_12( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, + uint8_t ret[24U]) { + uint8_t result[24U] = {0U}; + result[0U] = (uint8_t)(v.elements[0U] & (int16_t)255); + result[1U] = + (uint8_t)(v.elements[0U] >> 8U | (v.elements[1U] & (int16_t)15) << 4U); + result[2U] = (uint8_t)(v.elements[1U] >> 4U & (int16_t)255); + result[3U] = (uint8_t)(v.elements[2U] & (int16_t)255); + result[4U] = + (uint8_t)(v.elements[2U] >> 8U | (v.elements[3U] & (int16_t)15) << 4U); + result[5U] = (uint8_t)(v.elements[3U] >> 4U & (int16_t)255); + result[6U] = (uint8_t)(v.elements[4U] & (int16_t)255); + result[7U] = + (uint8_t)(v.elements[4U] >> 8U | (v.elements[5U] & (int16_t)15) << 4U); + result[8U] = (uint8_t)(v.elements[5U] >> 4U & (int16_t)255); + result[9U] = (uint8_t)(v.elements[6U] & (int16_t)255); + result[10U] = + (uint8_t)(v.elements[6U] >> 8U | (v.elements[7U] & (int16_t)15) << 4U); + result[11U] = (uint8_t)(v.elements[7U] >> 4U & (int16_t)255); + result[12U] = (uint8_t)(v.elements[(size_t)8U + (size_t)0U] & (int16_t)255); + result[13U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)0U] >> 8U | + (v.elements[(size_t)8U + (size_t)1U] & (int16_t)15) << 4U); + result[14U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)1U] >> 4U & (int16_t)255); + result[15U] = (uint8_t)(v.elements[(size_t)8U + (size_t)2U] & (int16_t)255); + result[16U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)2U] >> 8U | + (v.elements[(size_t)8U + (size_t)3U] & (int16_t)15) << 4U); + result[17U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)3U] >> 4U & (int16_t)255); + result[18U] = (uint8_t)(v.elements[(size_t)8U + (size_t)4U] & (int16_t)255); + result[19U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)4U] >> 8U | + (v.elements[(size_t)8U + (size_t)5U] & (int16_t)15) << 4U); + result[20U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)5U] >> 4U & (int16_t)255); + result[21U] = (uint8_t)(v.elements[(size_t)8U + (size_t)6U] & (int16_t)255); + result[22U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)6U] >> 8U | + (v.elements[(size_t)8U + (size_t)7U] & (int16_t)15) << 4U); + result[23U] = + (uint8_t)(v.elements[(size_t)8U + (size_t)7U] >> 4U & (int16_t)255); + memcpy(ret, result, (size_t)24U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_12( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, + uint8_t ret[24U]) { + uint8_t ret0[24U]; + libcrux_ml_kem_vector_portable_serialize_serialize_12(a, ret0); + memcpy(ret, ret0, (size_t)24U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_serialize_deserialize_12(Eurydice_slice bytes) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector re = + libcrux_ml_kem_vector_portable_vector_type_zero(); + int16_t byte0 = (int16_t)Eurydice_slice_index(bytes, (size_t)0U, uint8_t, + uint8_t *, uint8_t); + int16_t byte1 = (int16_t)Eurydice_slice_index(bytes, (size_t)1U, uint8_t, + uint8_t *, uint8_t); + int16_t byte2 = (int16_t)Eurydice_slice_index(bytes, (size_t)2U, uint8_t, + uint8_t *, uint8_t); + int16_t byte3 = (int16_t)Eurydice_slice_index(bytes, (size_t)3U, uint8_t, + uint8_t *, uint8_t); + int16_t byte4 = (int16_t)Eurydice_slice_index(bytes, (size_t)4U, uint8_t, + uint8_t *, uint8_t); + int16_t byte5 = (int16_t)Eurydice_slice_index(bytes, (size_t)5U, uint8_t, + uint8_t *, uint8_t); + int16_t byte6 = (int16_t)Eurydice_slice_index(bytes, (size_t)6U, uint8_t, + uint8_t *, uint8_t); + int16_t byte7 = (int16_t)Eurydice_slice_index(bytes, (size_t)7U, uint8_t, + uint8_t *, uint8_t); + int16_t byte8 = (int16_t)Eurydice_slice_index(bytes, (size_t)8U, uint8_t, + uint8_t *, uint8_t); + int16_t byte9 = (int16_t)Eurydice_slice_index(bytes, (size_t)9U, uint8_t, + uint8_t *, uint8_t); + int16_t byte10 = (int16_t)Eurydice_slice_index(bytes, (size_t)10U, uint8_t, + uint8_t *, uint8_t); + int16_t byte11 = (int16_t)Eurydice_slice_index(bytes, (size_t)11U, uint8_t, + uint8_t *, uint8_t); + re.elements[0U] = (byte1 & (int16_t)15) << 8U | (byte0 & (int16_t)255); + re.elements[1U] = byte2 << 4U | (byte1 >> 4U & (int16_t)15); + re.elements[2U] = (byte4 & (int16_t)15) << 8U | (byte3 & (int16_t)255); + re.elements[3U] = byte5 << 4U | (byte4 >> 4U & (int16_t)15); + re.elements[4U] = (byte7 & (int16_t)15) << 8U | (byte6 & (int16_t)255); + re.elements[5U] = byte8 << 4U | (byte7 >> 4U & (int16_t)15); + re.elements[6U] = (byte10 & (int16_t)15) << 8U | (byte9 & (int16_t)255); + re.elements[7U] = byte11 << 4U | (byte10 >> 4U & (int16_t)15); + int16_t byte12 = (int16_t)Eurydice_slice_index(bytes, (size_t)12U, uint8_t, + uint8_t *, uint8_t); + int16_t byte13 = (int16_t)Eurydice_slice_index(bytes, (size_t)13U, uint8_t, + uint8_t *, uint8_t); + int16_t byte14 = (int16_t)Eurydice_slice_index(bytes, (size_t)14U, uint8_t, + uint8_t *, uint8_t); + int16_t byte15 = (int16_t)Eurydice_slice_index(bytes, (size_t)15U, uint8_t, + uint8_t *, uint8_t); + int16_t byte16 = (int16_t)Eurydice_slice_index(bytes, (size_t)16U, uint8_t, + uint8_t *, uint8_t); + int16_t byte17 = (int16_t)Eurydice_slice_index(bytes, (size_t)17U, uint8_t, + uint8_t *, uint8_t); + int16_t byte18 = (int16_t)Eurydice_slice_index(bytes, (size_t)18U, uint8_t, + uint8_t *, uint8_t); + int16_t byte19 = (int16_t)Eurydice_slice_index(bytes, (size_t)19U, uint8_t, + uint8_t *, uint8_t); + int16_t byte20 = (int16_t)Eurydice_slice_index(bytes, (size_t)20U, uint8_t, + uint8_t *, uint8_t); + int16_t byte21 = (int16_t)Eurydice_slice_index(bytes, (size_t)21U, uint8_t, + uint8_t *, uint8_t); + int16_t byte22 = (int16_t)Eurydice_slice_index(bytes, (size_t)22U, uint8_t, + uint8_t *, uint8_t); + int16_t byte23 = (int16_t)Eurydice_slice_index(bytes, (size_t)23U, uint8_t, + uint8_t *, uint8_t); + re.elements[8U] = (byte13 & (int16_t)15) << 8U | (byte12 & (int16_t)255); + re.elements[9U] = byte14 << 4U | (byte13 >> 4U & (int16_t)15); + re.elements[10U] = (byte16 & (int16_t)15) << 8U | (byte15 & (int16_t)255); + re.elements[11U] = byte17 << 4U | (byte16 >> 4U & (int16_t)15); + re.elements[12U] = (byte19 & (int16_t)15) << 8U | (byte18 & (int16_t)255); + re.elements[13U] = byte20 << 4U | (byte19 >> 4U & (int16_t)15); + re.elements[14U] = (byte22 & (int16_t)15) << 8U | (byte21 & (int16_t)255); + re.elements[15U] = byte23 << 4U | (byte22 >> 4U & (int16_t)15); + return re; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_12( + Eurydice_slice a) { + return libcrux_ml_kem_vector_portable_serialize_deserialize_12(a); +} + +static inline size_t libcrux_ml_kem_vector_portable_sampling_rej_sample( + Eurydice_slice a, Eurydice_slice result) { + size_t sampled = (size_t)0U; + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(a, uint8_t, size_t) / (size_t)3U; i++) { + size_t i0 = i; + int16_t b1 = (int16_t)Eurydice_slice_index(a, i0 * (size_t)3U + (size_t)0U, + uint8_t, uint8_t *, uint8_t); + int16_t b2 = (int16_t)Eurydice_slice_index(a, i0 * (size_t)3U + (size_t)1U, + uint8_t, uint8_t *, uint8_t); + int16_t b3 = (int16_t)Eurydice_slice_index(a, i0 * (size_t)3U + (size_t)2U, + uint8_t, uint8_t *, uint8_t); + int16_t d1 = (b2 & (int16_t)15) << 8U | b1; + int16_t d2 = b3 << 4U | b2 >> 4U; + bool uu____0; + int16_t uu____1; + bool uu____2; + size_t uu____3; + int16_t uu____4; + size_t uu____5; + int16_t uu____6; + if (d1 < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS) { + if (sampled < (size_t)16U) { + int16_t uu____7 = d1; + Eurydice_slice_index(result, sampled, int16_t, int16_t *, int16_t) = + uu____7; + sampled++; + uu____1 = d2; + uu____6 = LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS; + uu____0 = uu____1 < uu____6; + if (uu____0) { + uu____3 = sampled; + uu____2 = uu____3 < (size_t)16U; + if (uu____2) { + uu____4 = d2; + uu____5 = sampled; + Eurydice_slice_index(result, uu____5, int16_t, int16_t *, int16_t) = + uu____4; + sampled++; + continue; + } + } + continue; + } + } + uu____1 = d2; + uu____6 = LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS; + uu____0 = uu____1 < uu____6; + if (uu____0) { + uu____3 = sampled; + uu____2 = uu____3 < (size_t)16U; + if (uu____2) { + uu____4 = d2; + uu____5 = sampled; + Eurydice_slice_index(result, uu____5, int16_t, int16_t *, int16_t) = + uu____4; + sampled++; + continue; + } + } + } + return sampled; +} + +static inline size_t +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___rej_sample( + Eurydice_slice a, Eurydice_slice out) { + return libcrux_ml_kem_vector_portable_sampling_rej_sample(a, out); +} + +#define LIBCRUX_ML_KEM_MLKEM768_VECTOR_U_COMPRESSION_FACTOR_768 ((size_t)10U) + +#define LIBCRUX_ML_KEM_MLKEM768_C1_BLOCK_SIZE_768 \ + (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \ + LIBCRUX_ML_KEM_MLKEM768_VECTOR_U_COMPRESSION_FACTOR_768 / (size_t)8U) + +#define LIBCRUX_ML_KEM_MLKEM768_RANK_768 ((size_t)3U) + +#define LIBCRUX_ML_KEM_MLKEM768_C1_SIZE_768 \ + (LIBCRUX_ML_KEM_MLKEM768_C1_BLOCK_SIZE_768 * LIBCRUX_ML_KEM_MLKEM768_RANK_768) + +#define LIBCRUX_ML_KEM_MLKEM768_VECTOR_V_COMPRESSION_FACTOR_768 ((size_t)4U) + +#define LIBCRUX_ML_KEM_MLKEM768_C2_SIZE_768 \ + (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \ + LIBCRUX_ML_KEM_MLKEM768_VECTOR_V_COMPRESSION_FACTOR_768 / (size_t)8U) + +#define LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_CIPHERTEXT_SIZE_768 \ + (LIBCRUX_ML_KEM_MLKEM768_C1_SIZE_768 + LIBCRUX_ML_KEM_MLKEM768_C2_SIZE_768) + +#define LIBCRUX_ML_KEM_MLKEM768_T_AS_NTT_ENCODED_SIZE_768 \ + (LIBCRUX_ML_KEM_MLKEM768_RANK_768 * \ + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \ + LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_COEFFICIENT / (size_t)8U) + +#define LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_PUBLIC_KEY_SIZE_768 \ + (LIBCRUX_ML_KEM_MLKEM768_T_AS_NTT_ENCODED_SIZE_768 + (size_t)32U) + +#define LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_SECRET_KEY_SIZE_768 \ + (LIBCRUX_ML_KEM_MLKEM768_RANK_768 * \ + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * \ + LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_COEFFICIENT / (size_t)8U) + +#define LIBCRUX_ML_KEM_MLKEM768_ETA1 ((size_t)2U) + +#define LIBCRUX_ML_KEM_MLKEM768_ETA1_RANDOMNESS_SIZE \ + (LIBCRUX_ML_KEM_MLKEM768_ETA1 * (size_t)64U) + +#define LIBCRUX_ML_KEM_MLKEM768_ETA2 ((size_t)2U) + +#define LIBCRUX_ML_KEM_MLKEM768_ETA2_RANDOMNESS_SIZE \ + (LIBCRUX_ML_KEM_MLKEM768_ETA2 * (size_t)64U) + +#define LIBCRUX_ML_KEM_MLKEM768_IMPLICIT_REJECTION_HASH_INPUT_SIZE \ + (LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE + \ + LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_CIPHERTEXT_SIZE_768) + +typedef libcrux_ml_kem_types_MlKemPrivateKey____2400size_t + libcrux_ml_kem_mlkem768_MlKem768PrivateKey; + +typedef libcrux_ml_kem_types_MlKemPublicKey____1184size_t + libcrux_ml_kem_mlkem768_MlKem768PublicKey; + +#define LIBCRUX_ML_KEM_MLKEM768_RANKED_BYTES_PER_RING_ELEMENT_768 \ + (LIBCRUX_ML_KEM_MLKEM768_RANK_768 * \ + LIBCRUX_ML_KEM_CONSTANTS_BITS_PER_RING_ELEMENT / (size_t)8U) + +#define LIBCRUX_ML_KEM_MLKEM768_SECRET_KEY_SIZE_768 \ + (LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_SECRET_KEY_SIZE_768 + \ + LIBCRUX_ML_KEM_MLKEM768_CPA_PKE_PUBLIC_KEY_SIZE_768 + \ + LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE + \ + LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE) + +typedef struct + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_s { + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficients[16U]; +} libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector; + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + void) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + lit; + lit.coefficients[0U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[1U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[2U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[3U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[4U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[5U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[6U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[7U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[8U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[9U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[10U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[11U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[12U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[13U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[14U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + lit.coefficients[15U] = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + return lit; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_ind_cpa_deserialize_then_decompress_u_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1088size_t_10size_t( + size_t _) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_decompress_ciphertext_coefficient___10int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int32_t decompressed = (int32_t)v.elements[i0] * + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS; + decompressed = (decompressed << 1U) + ((int32_t)1 << (uint32_t)(int32_t)10); + decompressed = decompressed >> (uint32_t)((int32_t)10 + (int32_t)1); + v.elements[i0] = (int16_t)decompressed; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___decompress_ciphertext_coefficient___10int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_decompress_ciphertext_coefficient___10int32_t( + v); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_then_decompress_10__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)20U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)20U, .end = i0 * (size_t)20U + (size_t)20U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_10( + bytes); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___decompress_ciphertext_coefficient___10int32_t( + coefficient); + re.coefficients[i0] = uu____0; + } + return re; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_decompress_ciphertext_coefficient___11int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int32_t decompressed = (int32_t)v.elements[i0] * + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS; + decompressed = (decompressed << 1U) + ((int32_t)1 << (uint32_t)(int32_t)11); + decompressed = decompressed >> (uint32_t)((int32_t)11 + (int32_t)1); + v.elements[i0] = (int16_t)decompressed; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___decompress_ciphertext_coefficient___11int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_decompress_ciphertext_coefficient___11int32_t( + v); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_then_decompress_11__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)22U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)22U, .end = i0 * (size_t)22U + (size_t)22U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_11( + bytes); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___decompress_ciphertext_coefficient___11int32_t( + coefficient); + re.coefficients[i0] = uu____0; + } + return re; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_then_decompress_ring_element_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_10size_t( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0; + uu____0 = + libcrux_ml_kem_serialize_deserialize_then_decompress_10__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + serialized); + return uu____0; +} + +typedef struct + K___libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_vector_portable_vector_type_PortableVector_s { + libcrux_ml_kem_vector_portable_vector_type_PortableVector fst; + libcrux_ml_kem_vector_portable_vector_type_PortableVector snd; +} K___libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_vector_portable_vector_type_PortableVector; + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_traits_montgomery_multiply_fe__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v, int16_t fer) { + return libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___montgomery_multiply_by_constant( + v, fer); +} + +static inline K___libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_ntt_ntt_layer_int_vec_step__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, + libcrux_ml_kem_vector_portable_vector_type_PortableVector b, + int16_t zeta_r) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector t = + libcrux_ml_kem_vector_traits_montgomery_multiply_fe__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + b, zeta_r); + b = libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___sub( + a, &t); + a = libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + a, &t); + return (CLITERAL( + K___libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_vector_portable_vector_type_PortableVector){ + .fst = a, .snd = b}); +} + +static inline void +libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + size_t layer, size_t _initial_coefficient_bound) { + size_t step = (size_t)1U << (uint32_t)layer; + for (size_t i0 = (size_t)0U; i0 < (size_t)128U >> (uint32_t)layer; i0++) { + size_t round = i0; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + size_t offset = round * step * (size_t)2U; + size_t offset_vec = offset / (size_t)16U; + size_t step_vec = step / (size_t)16U; + for (size_t i = offset_vec; i < offset_vec + step_vec; i++) { + size_t j = i; + K___libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0 = + libcrux_ml_kem_ntt_ntt_layer_int_vec_step__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re->coefficients[j], re->coefficients[j + step_vec], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R + [zeta_i[0U]]); + libcrux_ml_kem_vector_portable_vector_type_PortableVector x = uu____0.fst; + libcrux_ml_kem_vector_portable_vector_type_PortableVector y = uu____0.snd; + re->coefficients[j] = x; + re->coefficients[j + step_vec] = y; + } + } +} + +static inline void +libcrux_ml_kem_ntt_ntt_at_layer_3__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + size_t _layer, size_t _initial_coefficient_bound) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ntt_layer_3_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]]); + re->coefficients[round] = uu____0; + } +} + +static inline void +libcrux_ml_kem_ntt_ntt_at_layer_2__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + size_t _layer, size_t _initial_coefficient_bound) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ntt_layer_2_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] + + (size_t)1U]); + re->coefficients[round] = uu____0; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + } +} + +static inline void +libcrux_ml_kem_ntt_ntt_at_layer_1__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + size_t _layer, size_t _initial_coefficient_bound) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] + (size_t)1U; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ntt_layer_1_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] + + (size_t)1U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] + + (size_t)2U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] + + (size_t)3U]); + re->coefficients[round] = uu____0; + zeta_i[0U] = zeta_i[0U] + (size_t)3U; + } +} + +static inline void +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___poly_barrett_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *self) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___barrett_reduce( + self->coefficients[i0]); + self->coefficients[i0] = uu____0; + } +} + +static inline void +libcrux_ml_kem_ntt_ntt_vector_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_10size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re) { + size_t zeta_i = (size_t)0U; + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)7U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)6U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)5U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)4U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_3__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)3U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_2__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)2U, (size_t)3328U); + libcrux_ml_kem_ntt_ntt_at_layer_1__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)1U, (size_t)3328U); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___poly_barrett_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re); +} + +static inline void +libcrux_ml_kem_ind_cpa_deserialize_then_decompress_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1088size_t_10size_t( + uint8_t *ciphertext, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + u_as_ntt[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + u_as_ntt[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len( + Eurydice_array_to_slice((size_t)1088U, ciphertext, uint8_t, + Eurydice_slice), + uint8_t, size_t) / + (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * + (size_t)10U / (size_t)8U); + i++) { + size_t i0 = i; + Eurydice_slice u_bytes = Eurydice_array_to_subslice( + (size_t)1088U, ciphertext, + (CLITERAL(core_ops_range_Range__size_t){ + .start = + i0 * (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * + (size_t)10U / (size_t)8U), + .end = i0 * (LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * + (size_t)10U / (size_t)8U) + + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT * + (size_t)10U / (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0 = + libcrux_ml_kem_serialize_deserialize_then_decompress_ring_element_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_10size_t( + u_bytes); + u_as_ntt[i0] = uu____0; + libcrux_ml_kem_ntt_ntt_vector_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_10size_t( + &u_as_ntt[i0]); + } + memcpy( + ret, u_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_decompress_ciphertext_coefficient___4int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int32_t decompressed = (int32_t)v.elements[i0] * + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS; + decompressed = (decompressed << 1U) + ((int32_t)1 << (uint32_t)(int32_t)4); + decompressed = decompressed >> (uint32_t)((int32_t)4 + (int32_t)1); + v.elements[i0] = (int16_t)decompressed; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___decompress_ciphertext_coefficient___4int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_decompress_ciphertext_coefficient___4int32_t( + v); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_then_decompress_4__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)8U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)8U, .end = i0 * (size_t)8U + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_4( + bytes); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___decompress_ciphertext_coefficient___4int32_t( + coefficient); + re.coefficients[i0] = uu____0; + } + return re; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_decompress_ciphertext_coefficient___5int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int32_t decompressed = (int32_t)v.elements[i0] * + (int32_t)LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS; + decompressed = (decompressed << 1U) + ((int32_t)1 << (uint32_t)(int32_t)5); + decompressed = decompressed >> (uint32_t)((int32_t)5 + (int32_t)1); + v.elements[i0] = (int16_t)decompressed; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___decompress_ciphertext_coefficient___5int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_decompress_ciphertext_coefficient___5int32_t( + v); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_then_decompress_5__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)10U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)10U, .end = i0 * (size_t)10U + (size_t)10U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_5( + bytes); + re.coefficients[i0] = uu____0; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____1 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___decompress_ciphertext_coefficient___5int32_t( + re.coefficients[i0]); + re.coefficients[i0] = uu____1; + } + return re; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_then_decompress_ring_element_v__libcrux_ml_kem_vector_portable_vector_type_PortableVector_4size_t( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0; + uu____0 = + libcrux_ml_kem_serialize_deserialize_then_decompress_4__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + serialized); + return uu____0; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_ind_cpa_deserialize_secret_key_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + size_t _) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_to_uncompressed_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)24U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)24U, .end = i0 * (size_t)24U + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_12( + bytes); + re.coefficients[i0] = uu____0; + } + return re; +} + +static inline void +libcrux_ml_kem_ind_cpa_deserialize_secret_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + Eurydice_slice secret_key, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + secret_as_ntt[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + secret_as_ntt[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(secret_key, uint8_t, size_t) / + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT; + i++) { + size_t i0 = i; + Eurydice_slice secret_bytes = Eurydice_slice_subslice( + secret_key, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT, + .end = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT + + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0 = + libcrux_ml_kem_serialize_deserialize_to_uncompressed_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + secret_bytes); + secret_as_ntt[i0] = uu____0; + } + memcpy( + ret, secret_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *rhs) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + out = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ntt_multiply( + &self->coefficients[i0], &rhs->coefficients[i0], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[(size_t)64U + + (size_t)4U * i0], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[(size_t)64U + + (size_t)4U * i0 + + (size_t)1U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[(size_t)64U + + (size_t)4U * i0 + + (size_t)2U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[(size_t)64U + + (size_t)4U * i0 + + (size_t)3U]); + out.coefficients[i0] = uu____0; + } + return out; +} + +static inline void +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *rhs) { + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)16U, self->coefficients, + libcrux_ml_kem_vector_portable_vector_type_PortableVector, + Eurydice_slice), + libcrux_ml_kem_vector_portable_vector_type_PortableVector, + size_t); + i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + self->coefficients[i0], &rhs->coefficients[i0]); + self->coefficients[i0] = uu____0; + } +} + +static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_1__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + size_t _layer) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___inv_ntt_layer_1_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] - + (size_t)1U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] - + (size_t)2U], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] - + (size_t)3U]); + re->coefficients[round] = uu____0; + zeta_i[0U] = zeta_i[0U] - (size_t)3U; + } +} + +static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_2__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + size_t _layer) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___inv_ntt_layer_2_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U] - + (size_t)1U]); + re->coefficients[round] = uu____0; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + } +} + +static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_3__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + size_t _layer) { + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t round = i; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___inv_ntt_layer_3_step( + re->coefficients[round], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R[zeta_i[0U]]); + re->coefficients[round] = uu____0; + } +} + +static inline K___libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_invert_ntt_inv_ntt_layer_int_vec_step_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a, + libcrux_ml_kem_vector_portable_vector_type_PortableVector b, + int16_t zeta_r) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector a_minus_b = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___sub( + b, &a); + a = libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___barrett_reduce( + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + a, &b)); + b = libcrux_ml_kem_vector_traits_montgomery_multiply_fe__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + a_minus_b, zeta_r); + return (CLITERAL( + K___libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_vector_portable_vector_type_PortableVector){ + .fst = a, .snd = b}); +} + +static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + size_t *zeta_i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + size_t layer) { + size_t step = (size_t)1U << (uint32_t)layer; + for (size_t i0 = (size_t)0U; i0 < (size_t)128U >> (uint32_t)layer; i0++) { + size_t round = i0; + zeta_i[0U] = zeta_i[0U] - (size_t)1U; + size_t offset = round * step * (size_t)2U; + size_t offset_vec = + offset / LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; + size_t step_vec = + step / LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; + for (size_t i = offset_vec; i < offset_vec + step_vec; i++) { + size_t j = i; + K___libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0 = + libcrux_ml_kem_invert_ntt_inv_ntt_layer_int_vec_step_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re->coefficients[j], re->coefficients[j + step_vec], + libcrux_ml_kem_polynomial_ZETAS_TIMES_MONTGOMERY_R + [zeta_i[0U]]); + libcrux_ml_kem_vector_portable_vector_type_PortableVector x = uu____0.fst; + libcrux_ml_kem_vector_portable_vector_type_PortableVector y = uu____0.snd; + re->coefficients[j] = x; + re->coefficients[j + step_vec] = y; + } + } +} + +static inline void +libcrux_ml_kem_invert_ntt_invert_ntt_montgomery__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re) { + size_t zeta_i = + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT / (size_t)2U; + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_1__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)1U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_2__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)2U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_3__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)3U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)4U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)5U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)6U); + libcrux_ml_kem_invert_ntt_invert_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)7U); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___poly_barrett_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___subtract_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + b) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector + coefficient_normal_form = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___montgomery_multiply_by_constant( + b.coefficients[i0], (int16_t)1441); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___barrett_reduce( + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___sub( + self->coefficients[i0], &coefficient_normal_form)); + b.coefficients[i0] = uu____0; + } + return b; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_matrix_compute_message__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *v, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *secret_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *u_as_ntt) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + product = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &secret_as_ntt[i0], &u_as_ntt[i0]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + &result, &product); + } + libcrux_ml_kem_invert_ntt_invert_ntt_montgomery__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + &result); + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___subtract_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + v, result); + return result; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_arithmetic_shift_right___15int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + v.elements[i0] = v.elements[i0] >> (uint32_t)(int32_t)15; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___shift_right___15int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_arithmetic_shift_right___15int32_t(v); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_vector_portable_vector_type_PortableVector a) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector t = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___shift_right___15int32_t( + a); + libcrux_ml_kem_vector_portable_vector_type_PortableVector fm = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___bitwise_and_with_constant( + t, LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_MODULUS); + return libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + a, &fm); +} + +static inline void +libcrux_ml_kem_serialize_compress_then_serialize_message__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re, + uint8_t ret[32U]) { + uint8_t serialized[32U] = {0U}; + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re.coefficients[i0]); + libcrux_ml_kem_vector_portable_vector_type_PortableVector + coefficient_compressed = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress_1( + coefficient); + uint8_t bytes[2U]; + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_1( + coefficient_compressed, bytes); + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)2U * i0, .end = (size_t)2U * i0 + (size_t)2U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)2U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, serialized, (size_t)32U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_ind_cpa_decrypt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1088size_t_960size_t_10size_t_4size_t( + Eurydice_slice secret_key, uint8_t *ciphertext, uint8_t ret[32U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + u_as_ntt[3U]; + libcrux_ml_kem_ind_cpa_deserialize_then_decompress_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1088size_t_10size_t( + ciphertext, u_as_ntt); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + v = libcrux_ml_kem_serialize_deserialize_then_decompress_ring_element_v__libcrux_ml_kem_vector_portable_vector_type_PortableVector_4size_t( + Eurydice_array_to_subslice_from((size_t)1088U, ciphertext, + (size_t)960U, uint8_t, size_t, + Eurydice_slice)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + secret_as_ntt[3U]; + libcrux_ml_kem_ind_cpa_deserialize_secret_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + secret_key, secret_as_ntt); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + message = + libcrux_ml_kem_matrix_compute_message__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + &v, secret_as_ntt, u_as_ntt); + uint8_t ret0[32U]; + libcrux_ml_kem_serialize_compress_then_serialize_message__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + message, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____G___3size_t( + Eurydice_slice input, uint8_t ret[64U]) { + uint8_t digest[64U] = {0U}; + libcrux_sha3_portable_sha512( + Eurydice_array_to_slice((size_t)64U, digest, uint8_t, Eurydice_slice), + input); + memcpy(ret, digest, (size_t)64U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____PRF___3size_t_32size_t( + Eurydice_slice input, uint8_t ret[32U]) { + uint8_t digest[32U] = {0U}; + libcrux_sha3_portable_shake256( + Eurydice_array_to_slice((size_t)32U, digest, uint8_t, Eurydice_slice), + input); + memcpy(ret, digest, (size_t)32U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_ring_elements_reduced_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_1152size_t_3size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_to_reduced_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice serialized) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; + i < + core_slice___Slice_T___len(serialized, uint8_t, size_t) / (size_t)24U; + i++) { + size_t i0 = i; + Eurydice_slice bytes = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)24U, .end = i0 * (size_t)24U + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_12( + bytes); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___cond_subtract_3329( + coefficient); + re.coefficients[i0] = uu____0; + } + return re; +} + +static inline void +libcrux_ml_kem_serialize_deserialize_ring_elements_reduced__libcrux_ml_kem_vector_portable_vector_type_PortableVector_1152size_t_3size_t( + Eurydice_slice public_key, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + deserialized_pk[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + deserialized_pk[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(public_key, uint8_t, size_t) / + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT; + i++) { + size_t i0 = i; + Eurydice_slice ring_element = Eurydice_slice_subslice( + public_key, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT, + .end = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT + + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0 = + libcrux_ml_kem_serialize_deserialize_to_reduced_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + ring_element); + deserialized_pk[i0] = uu____0; + } + memcpy( + ret, deserialized_pk, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_matrix_sample_matrix_A_closure_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + size_t _j) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline void +libcrux_ml_kem_matrix_sample_matrix_A_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + size_t _i, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret0[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + ret0[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + memcpy( + ret, ret0, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); +} + +typedef struct + libcrux_ml_kem_hash_functions_portable_PortableHash____3size_t_s { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t shake128_state[3U]; +} libcrux_ml_kem_hash_functions_portable_PortableHash____3size_t; + +static inline libcrux_ml_kem_hash_functions_portable_PortableHash____3size_t +libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____shake128_init_absorb___3size_t( + uint8_t input[3U][34U]) { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t state[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + state[i] = libcrux_sha3_portable_incremental_shake128_init(); + } + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_sha3_portable_incremental_shake128_absorb_final( + &state[i0], Eurydice_array_to_slice((size_t)34U, input[i0], uint8_t, + Eurydice_slice)); + } + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t uu____0[3U]; + memcpy( + uu____0, state, + (size_t)3U * + sizeof(libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t)); + libcrux_ml_kem_hash_functions_portable_PortableHash____3size_t lit; + memcpy( + lit.shake128_state, uu____0, + (size_t)3U * + sizeof(libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t)); + return lit; +} + +static inline void +libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____shake128_squeeze_three_blocks___3size_t( + libcrux_ml_kem_hash_functions_portable_PortableHash____3size_t *self, + uint8_t ret[3U][504U]) { + uint8_t out[3U][504U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_sha3_portable_incremental_shake128_squeeze_first_three_blocks( + &self->shake128_state[i0], + Eurydice_array_to_slice((size_t)504U, out[i0], uint8_t, + Eurydice_slice)); + } + memcpy(ret, out, (size_t)3U * sizeof(uint8_t[504U])); +} + +static inline bool +libcrux_ml_kem_sampling_sample_from_uniform_distribution_next__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_504size_t( + uint8_t randomness[3U][504U], size_t *sampled_coefficients, + int16_t (*out)[272U]) { + for (size_t i0 = (size_t)0U; i0 < (size_t)3U; i0++) { + size_t i1 = i0; + for (size_t i = (size_t)0U; i < (size_t)504U / (size_t)24U; i++) { + size_t r = i; + if (sampled_coefficients[i1] < + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT) { + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)504U, randomness[i1], + (CLITERAL(core_ops_range_Range__size_t){ + .start = r * (size_t)24U, + .end = r * (size_t)24U + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + size_t sampled = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___rej_sample( + uu____0, + Eurydice_array_to_subslice( + (size_t)272U, out[i1], + (CLITERAL(core_ops_range_Range__size_t){ + .start = sampled_coefficients[i1], + .end = sampled_coefficients[i1] + (size_t)16U}), + int16_t, core_ops_range_Range__size_t, Eurydice_slice)); + size_t uu____1 = i1; + sampled_coefficients[uu____1] = sampled_coefficients[uu____1] + sampled; + } + } + } + bool done = true; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + if (sampled_coefficients[i0] >= + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT) { + sampled_coefficients[i0] = + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT; + } else { + done = false; + } + } + return done; +} + +static inline void +libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____shake128_squeeze_block___3size_t( + libcrux_ml_kem_hash_functions_portable_PortableHash____3size_t *self, + uint8_t ret[3U][168U]) { + uint8_t out[3U][168U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_sha3_portable_incremental_shake128_squeeze_next_block( + &self->shake128_state[i0], + Eurydice_array_to_slice((size_t)168U, out[i0], uint8_t, + Eurydice_slice)); + } + memcpy(ret, out, (size_t)3U * sizeof(uint8_t[168U])); +} + +static inline bool +libcrux_ml_kem_sampling_sample_from_uniform_distribution_next__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_168size_t( + uint8_t randomness[3U][168U], size_t *sampled_coefficients, + int16_t (*out)[272U]) { + for (size_t i0 = (size_t)0U; i0 < (size_t)3U; i0++) { + size_t i1 = i0; + for (size_t i = (size_t)0U; i < (size_t)168U / (size_t)24U; i++) { + size_t r = i; + if (sampled_coefficients[i1] < + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT) { + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)168U, randomness[i1], + (CLITERAL(core_ops_range_Range__size_t){ + .start = r * (size_t)24U, + .end = r * (size_t)24U + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + size_t sampled = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___rej_sample( + uu____0, + Eurydice_array_to_subslice( + (size_t)272U, out[i1], + (CLITERAL(core_ops_range_Range__size_t){ + .start = sampled_coefficients[i1], + .end = sampled_coefficients[i1] + (size_t)16U}), + int16_t, core_ops_range_Range__size_t, Eurydice_slice)); + size_t uu____1 = i1; + sampled_coefficients[uu____1] = sampled_coefficients[uu____1] + sampled; + } + } + } + bool done = true; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + if (sampled_coefficients[i0] >= + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT) { + sampled_coefficients[i0] = + LIBCRUX_ML_KEM_CONSTANTS_COEFFICIENTS_IN_RING_ELEMENT; + } else { + done = false; + } + } + return done; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___from_i16_array__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice a) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___from_i16_array( + Eurydice_slice_subslice( + a, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * (size_t)16U, + .end = (i0 + (size_t)1U) * (size_t)16U}), + int16_t, core_ops_range_Range__size_t, Eurydice_slice)); + result.coefficients[i0] = uu____0; + } + return result; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_sampling_sample_from_xof_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + int16_t s[272U]) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___from_i16_array__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_array_to_subslice((size_t)272U, s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)256U}), + int16_t, core_ops_range_Range__size_t, + Eurydice_slice)); +} + +static inline void +libcrux_ml_kem_sampling_sample_from_xof__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + uint8_t seeds[3U][34U], + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U]) { + size_t sampled_coefficients[3U] = {0U}; + int16_t out[3U][272U] = {{0U}}; + uint8_t uu____0[3U][34U]; + memcpy(uu____0, seeds, (size_t)3U * sizeof(uint8_t[34U])); + libcrux_ml_kem_hash_functions_portable_PortableHash____3size_t xof_state = + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____shake128_init_absorb___3size_t( + uu____0); + uint8_t randomness0[3U][504U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____shake128_squeeze_three_blocks___3size_t( + &xof_state, randomness0); + uint8_t uu____1[3U][504U]; + memcpy(uu____1, randomness0, (size_t)3U * sizeof(uint8_t[504U])); + bool done = + libcrux_ml_kem_sampling_sample_from_uniform_distribution_next__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_504size_t( + uu____1, sampled_coefficients, out); + while (true) { + if (done) { + break; + } else { + uint8_t randomness[3U][168U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____shake128_squeeze_block___3size_t( + &xof_state, randomness); + uint8_t uu____2[3U][168U]; + memcpy(uu____2, randomness, (size_t)3U * sizeof(uint8_t[168U])); + done = + libcrux_ml_kem_sampling_sample_from_uniform_distribution_next__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_168size_t( + uu____2, sampled_coefficients, out); + } + } + int16_t uu____3[3U][272U]; + memcpy(uu____3, out, (size_t)3U * sizeof(int16_t[272U])); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret0[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + ret0[i] = + libcrux_ml_kem_sampling_sample_from_xof_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + uu____3[i]); + } + memcpy( + ret, ret0, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); +} + +static inline void +libcrux_ml_kem_matrix_sample_matrix_A__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + uint8_t seed[34U], bool transpose, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U][3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + A_transpose[3U][3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + libcrux_ml_kem_matrix_sample_matrix_A_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + i, A_transpose[i]); + } + for (size_t i0 = (size_t)0U; i0 < (size_t)3U; i0++) { + size_t i1 = i0; + uint8_t uu____0[34U]; + memcpy(uu____0, seed, (size_t)34U * sizeof(uint8_t)); + uint8_t seeds[3U][34U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + memcpy(seeds[i], uu____0, (size_t)34U * sizeof(uint8_t)); + } + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t j = i; + seeds[j][32U] = (uint8_t)i1; + seeds[j][33U] = (uint8_t)j; + } + uint8_t uu____1[3U][34U]; + memcpy(uu____1, seeds, (size_t)3U * sizeof(uint8_t[34U])); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + sampled[3U]; + libcrux_ml_kem_sampling_sample_from_xof__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + uu____1, sampled); + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, sampled, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + size_t); + i++) { + size_t j = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + sample = sampled[j]; + if (transpose) { + A_transpose[j][i1] = sample; + } else { + A_transpose[i1][j] = sample; + } + } + } + memcpy( + ret, A_transpose, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + [3U])); +} + +typedef struct + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t_s { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + fst[3U]; + uint8_t snd; +} K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t; + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_2size_t_128size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline void +libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____PRFxN___3size_t_128size_t( + uint8_t (*input)[33U], uint8_t ret[3U][128U]) { + uint8_t out[3U][128U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_sha3_portable_shake256( + Eurydice_array_to_slice((size_t)128U, out[i0], uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)33U, input[i0], uint8_t, + Eurydice_slice)); + } + memcpy(ret, out, (size_t)3U * sizeof(uint8_t[128U])); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_sampling_sample_from_binomial_distribution_2__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice randomness) { + int16_t sampled_i16s[256U] = {0U}; + for (size_t i0 = (size_t)0U; + i0 < + core_slice___Slice_T___len(randomness, uint8_t, size_t) / (size_t)4U; + i0++) { + size_t chunk_number = i0; + Eurydice_slice byte_chunk = Eurydice_slice_subslice( + randomness, + (CLITERAL(core_ops_range_Range__size_t){ + .start = chunk_number * (size_t)4U, + .end = chunk_number * (size_t)4U + (size_t)4U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint32_t uu____0 = (uint32_t)Eurydice_slice_index( + byte_chunk, (size_t)0U, uint8_t, uint8_t *, uint8_t); + uint32_t uu____1 = + uu____0 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)1U, + uint8_t, uint8_t *, uint8_t) + << 8U; + uint32_t uu____2 = + uu____1 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)2U, + uint8_t, uint8_t *, uint8_t) + << 16U; + uint32_t random_bits_as_u32 = + uu____2 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)3U, + uint8_t, uint8_t *, uint8_t) + << 24U; + uint32_t even_bits = random_bits_as_u32 & 1431655765U; + uint32_t odd_bits = random_bits_as_u32 >> 1U & 1431655765U; + uint32_t coin_toss_outcomes = even_bits + odd_bits; + for (uint32_t i = 0U; i < CORE_NUM__U32_8__BITS / 4U; i++) { + uint32_t outcome_set = i; + uint32_t outcome_set0 = outcome_set * 4U; + int16_t outcome_1 = + (int16_t)(coin_toss_outcomes >> (uint32_t)outcome_set0 & 3U); + int16_t outcome_2 = + (int16_t)(coin_toss_outcomes >> (uint32_t)(outcome_set0 + 2U) & 3U); + size_t offset = (size_t)(outcome_set0 >> 2U); + sampled_i16s[(size_t)8U * chunk_number + offset] = outcome_1 - outcome_2; + } + } + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___from_i16_array__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_array_to_slice((size_t)256U, sampled_i16s, int16_t, + Eurydice_slice)); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_sampling_sample_from_binomial_distribution_3__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_slice randomness) { + int16_t sampled_i16s[256U] = {0U}; + for (size_t i0 = (size_t)0U; + i0 < + core_slice___Slice_T___len(randomness, uint8_t, size_t) / (size_t)3U; + i0++) { + size_t chunk_number = i0; + Eurydice_slice byte_chunk = Eurydice_slice_subslice( + randomness, + (CLITERAL(core_ops_range_Range__size_t){ + .start = chunk_number * (size_t)3U, + .end = chunk_number * (size_t)3U + (size_t)3U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint32_t uu____0 = (uint32_t)Eurydice_slice_index( + byte_chunk, (size_t)0U, uint8_t, uint8_t *, uint8_t); + uint32_t uu____1 = + uu____0 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)1U, + uint8_t, uint8_t *, uint8_t) + << 8U; + uint32_t random_bits_as_u24 = + uu____1 | (uint32_t)Eurydice_slice_index(byte_chunk, (size_t)2U, + uint8_t, uint8_t *, uint8_t) + << 16U; + uint32_t first_bits = random_bits_as_u24 & 2396745U; + uint32_t second_bits = random_bits_as_u24 >> 1U & 2396745U; + uint32_t third_bits = random_bits_as_u24 >> 2U & 2396745U; + uint32_t coin_toss_outcomes = first_bits + second_bits + third_bits; + for (int32_t i = (int32_t)0; i < (int32_t)24 / (int32_t)6; i++) { + int32_t outcome_set = i; + int32_t outcome_set0 = outcome_set * (int32_t)6; + int16_t outcome_1 = + (int16_t)(coin_toss_outcomes >> (uint32_t)outcome_set0 & 7U); + int16_t outcome_2 = (int16_t)(coin_toss_outcomes >> + (uint32_t)(outcome_set0 + (int32_t)3) & + 7U); + size_t offset = (size_t)(outcome_set0 / (int32_t)6); + sampled_i16s[(size_t)4U * chunk_number + offset] = outcome_1 - outcome_2; + } + } + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___from_i16_array__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + Eurydice_array_to_slice((size_t)256U, sampled_i16s, int16_t, + Eurydice_slice)); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_sampling_sample_from_binomial_distribution__libcrux_ml_kem_vector_portable_vector_type_PortableVector_2size_t( + Eurydice_slice randomness) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0; + uu____0 = + libcrux_ml_kem_sampling_sample_from_binomial_distribution_2__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + randomness); + return uu____0; +} + +static inline void +libcrux_ml_kem_ntt_ntt_at_layer_7__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re) { + size_t step = LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT / (size_t)2U; + for (size_t i = (size_t)0U; i < step; i++) { + size_t j = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector t = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___multiply_by_constant( + re->coefficients[j + step], (int16_t)-1600); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___sub( + re->coefficients[j], &t); + re->coefficients[j + step] = uu____0; + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____1 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + re->coefficients[j], &t); + re->coefficients[j] = uu____1; + } +} + +static inline void +libcrux_ml_kem_ntt_ntt_binomially_sampled_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re) { + libcrux_ml_kem_ntt_ntt_at_layer_7__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re); + size_t zeta_i = (size_t)1U; + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)6U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)5U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_4_plus__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)4U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_3__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)3U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_2__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)2U, (size_t)3U); + libcrux_ml_kem_ntt_ntt_at_layer_1__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &zeta_i, re, (size_t)1U, (size_t)3U); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___poly_barrett_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re); +} + +static inline K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t +libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_2size_t_128size_t( + uint8_t prf_input[33U], uint8_t domain_separator) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re_as_ntt[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + re_as_ntt[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + uint8_t uu____0[33U]; + memcpy(uu____0, prf_input, (size_t)33U * sizeof(uint8_t)); + uint8_t prf_inputs[3U][33U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + memcpy(prf_inputs[i], uu____0, (size_t)33U * sizeof(uint8_t)); + } + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + prf_inputs[i0][32U] = domain_separator; + domain_separator = (uint32_t)domain_separator + 1U; + } + uint8_t prf_outputs[3U][128U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____PRFxN___3size_t_128size_t( + prf_inputs, prf_outputs); + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____1 = + libcrux_ml_kem_sampling_sample_from_binomial_distribution__libcrux_ml_kem_vector_portable_vector_type_PortableVector_2size_t( + Eurydice_array_to_slice((size_t)128U, prf_outputs[i0], uint8_t, + Eurydice_slice)); + re_as_ntt[i0] = uu____1; + libcrux_ml_kem_ntt_ntt_binomially_sampled_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &re_as_ntt[i0]); + } + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____2[3U]; + memcpy( + uu____2, re_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t + lit; + memcpy( + lit.fst, uu____2, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + lit.snd = domain_separator; + return lit; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_ind_cpa_sample_ring_element_cbd_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_128size_t_2size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t +libcrux_ml_kem_ind_cpa_sample_ring_element_cbd__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_128size_t_2size_t( + uint8_t prf_input[33U], uint8_t domain_separator) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + error_1[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + error_1[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + uint8_t uu____0[33U]; + memcpy(uu____0, prf_input, (size_t)33U * sizeof(uint8_t)); + uint8_t prf_inputs[3U][33U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + memcpy(prf_inputs[i], uu____0, (size_t)33U * sizeof(uint8_t)); + } + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + prf_inputs[i0][32U] = domain_separator; + domain_separator = (uint32_t)domain_separator + 1U; + } + uint8_t prf_outputs[3U][128U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____PRFxN___3size_t_128size_t( + prf_inputs, prf_outputs); + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____1 = + libcrux_ml_kem_sampling_sample_from_binomial_distribution__libcrux_ml_kem_vector_portable_vector_type_PortableVector_2size_t( + Eurydice_array_to_slice((size_t)128U, prf_outputs[i0], uint8_t, + Eurydice_slice)); + error_1[i0] = uu____1; + } + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____2[3U]; + memcpy( + uu____2, error_1, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t + lit; + memcpy( + lit.fst, uu____2, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + lit.snd = domain_separator; + return lit; +} + +static inline void +libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____PRF___3size_t_128size_t( + Eurydice_slice input, uint8_t ret[128U]) { + uint8_t digest[128U] = {0U}; + libcrux_sha3_portable_shake256( + Eurydice_array_to_slice((size_t)128U, digest, uint8_t, Eurydice_slice), + input); + memcpy(ret, digest, (size_t)128U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_matrix_compute_vector_u_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline void +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_error_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *error) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t j = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector + coefficient_normal_form = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___montgomery_multiply_by_constant( + self->coefficients[j], (int16_t)1441); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___barrett_reduce( + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + coefficient_normal_form, &error->coefficients[j])); + self->coefficients[j] = uu____0; + } +} + +static inline void +libcrux_ml_kem_matrix_compute_vector_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector ( + *a_as_ntt)[3U], + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *r_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *error_1, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + result[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + result[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + for ( + size_t i0 = (size_t)0U; + i0 < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, a_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + [3U], + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + [3U], + size_t); + i0++) { + size_t i1 = i0; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *row = a_as_ntt[i1]; + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, row, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + size_t); + i++) { + size_t j = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *a_element = &row[j]; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + product = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + a_element, &r_as_ntt[j]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + &result[i1], &product); + } + libcrux_ml_kem_invert_ntt_invert_ntt_montgomery__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + &result[i1]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_error_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &result[i1], &error_1[i1]); + } + memcpy( + ret, result, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_traits_decompress_1__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___ZERO(); + return libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___bitwise_and_with_constant( + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___sub( + uu____0, &v), + (int16_t)1665); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_then_decompress_message__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + uint8_t serialized[32U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; i < (size_t)16U; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector + coefficient_compressed = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___deserialize_1( + Eurydice_array_to_subslice( + (size_t)32U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)2U * i0, + .end = (size_t)2U * i0 + (size_t)2U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_traits_decompress_1__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + coefficient_compressed); + re.coefficients[i0] = uu____0; + } + return re; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_message_error_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *message, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + result) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector + coefficient_normal_form = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___montgomery_multiply_by_constant( + result.coefficients[i0], (int16_t)1441); + libcrux_ml_kem_vector_portable_vector_type_PortableVector tmp = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + self->coefficients[i0], &message->coefficients[i0]); + libcrux_ml_kem_vector_portable_vector_type_PortableVector tmp0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + coefficient_normal_form, &tmp); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___barrett_reduce( + tmp0); + result.coefficients[i0] = uu____0; + } + return result; +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_matrix_compute_ring_element_v__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *t_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *r_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *error_2, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *message) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + product = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &t_as_ntt[i0], &r_as_ntt[i0]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + &result, &product); + } + libcrux_ml_kem_invert_ntt_invert_ntt_montgomery__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + &result); + result = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_message_error_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + error_2, message, result); + return result; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_compress___10int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_compress_compress_ciphertext_coefficient( + (uint8_t)(int32_t)10, (uint16_t)v.elements[i0]); + v.elements[i0] = uu____0; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress___10int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_compress___10int32_t(v); +} + +static inline void +libcrux_ml_kem_serialize_compress_then_serialize_10__libcrux_ml_kem_vector_portable_vector_type_PortableVector_320size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + uint8_t ret[320U]) { + uint8_t serialized[320U] = {0U}; + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress___10int32_t( + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re->coefficients[i0])); + uint8_t bytes[20U]; + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_10( + coefficient, bytes); + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)320U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)20U * i0, .end = (size_t)20U * i0 + (size_t)20U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)20U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, serialized, (size_t)320U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_compress___11int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_compress_compress_ciphertext_coefficient( + (uint8_t)(int32_t)11, (uint16_t)v.elements[i0]); + v.elements[i0] = uu____0; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress___11int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_compress___11int32_t(v); +} + +static inline void +libcrux_ml_kem_serialize_compress_then_serialize_11__libcrux_ml_kem_vector_portable_vector_type_PortableVector_320size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + uint8_t ret[320U]) { + uint8_t serialized[320U] = {0U}; + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress___11int32_t( + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re->coefficients[i0])); + uint8_t bytes[22U]; + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_11( + coefficient, bytes); + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)320U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)22U * i0, .end = (size_t)22U * i0 + (size_t)22U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)22U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, serialized, (size_t)320U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_serialize_compress_then_serialize_ring_element_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_10size_t_320size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + uint8_t ret[320U]) { + uint8_t uu____0[320U]; + libcrux_ml_kem_serialize_compress_then_serialize_10__libcrux_ml_kem_vector_portable_vector_type_PortableVector_320size_t( + re, uu____0); + memcpy(ret, uu____0, (size_t)320U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_ind_cpa_compress_then_serialize_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_960size_t_10size_t_320size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + input[3U], + Eurydice_slice out) { + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, input, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + size_t); + i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = input[i0]; + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * ((size_t)960U / (size_t)3U), + .end = (i0 + (size_t)1U) * ((size_t)960U / (size_t)3U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret[320U]; + libcrux_ml_kem_serialize_compress_then_serialize_ring_element_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_10size_t_320size_t( + &re, ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)320U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_compress___4int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_compress_compress_ciphertext_coefficient( + (uint8_t)(int32_t)4, (uint16_t)v.elements[i0]); + v.elements[i0] = uu____0; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress___4int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_compress___4int32_t(v); +} + +static inline void +libcrux_ml_kem_serialize_compress_then_serialize_4__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re, + Eurydice_slice serialized) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress___4int32_t( + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re.coefficients[i0])); + uint8_t bytes[8U]; + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_4( + coefficient, bytes); + Eurydice_slice uu____0 = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)8U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_compress_compress___5int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_VECTOR_TRAITS_FIELD_ELEMENTS_IN_VECTOR; i++) { + size_t i0 = i; + int16_t uu____0 = + libcrux_ml_kem_vector_portable_compress_compress_ciphertext_coefficient( + (uint8_t)(int32_t)5, (uint16_t)v.elements[i0]); + v.elements[i0] = uu____0; + } + return v; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress___5int32_t( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable_compress_compress___5int32_t(v); +} + +static inline void +libcrux_ml_kem_serialize_compress_then_serialize_5__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re, + Eurydice_slice serialized) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficients = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___compress___5int32_t( + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re.coefficients[i0])); + uint8_t bytes[10U]; + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_5( + coefficients, bytes); + Eurydice_slice uu____0 = Eurydice_slice_subslice( + serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)10U * i0, .end = (size_t)10U * i0 + (size_t)10U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)10U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_ml_kem_serialize_compress_then_serialize_ring_element_v__libcrux_ml_kem_vector_portable_vector_type_PortableVector_4size_t_128size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re, + Eurydice_slice out) { + libcrux_ml_kem_serialize_compress_then_serialize_4__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re, out); +} + +static inline void +libcrux_ml_kem_ind_cpa_encrypt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + Eurydice_slice public_key, uint8_t message[32U], Eurydice_slice randomness, + uint8_t ret[1088U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + t_as_ntt[3U]; + libcrux_ml_kem_serialize_deserialize_ring_elements_reduced__libcrux_ml_kem_vector_portable_vector_type_PortableVector_1152size_t_3size_t( + Eurydice_slice_subslice_to(public_key, (size_t)1152U, uint8_t, size_t, + Eurydice_slice), + t_as_ntt); + Eurydice_slice seed = Eurydice_slice_subslice_from( + public_key, (size_t)1152U, uint8_t, size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + A_transpose[3U][3U]; + uint8_t ret0[34U]; + libcrux_ml_kem_utils_into_padded_array___34size_t(seed, ret0); + libcrux_ml_kem_matrix_sample_matrix_A__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + ret0, false, A_transpose); + uint8_t prf_input[33U]; + libcrux_ml_kem_utils_into_padded_array___33size_t(randomness, prf_input); + uint8_t uu____0[33U]; + memcpy(uu____0, prf_input, (size_t)33U * sizeof(uint8_t)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t + uu____1 = + libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_2size_t_128size_t( + uu____0, 0U); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + r_as_ntt[3U]; + memcpy( + r_as_ntt, uu____1.fst, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + uint8_t domain_separator0 = uu____1.snd; + uint8_t uu____2[33U]; + memcpy(uu____2, prf_input, (size_t)33U * sizeof(uint8_t)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t + uu____3 = + libcrux_ml_kem_ind_cpa_sample_ring_element_cbd__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_128size_t_2size_t( + uu____2, domain_separator0); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + error_1[3U]; + memcpy( + error_1, uu____3.fst, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + uint8_t domain_separator = uu____3.snd; + prf_input[32U] = domain_separator; + uint8_t prf_output[128U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____PRF___3size_t_128size_t( + Eurydice_array_to_slice((size_t)33U, prf_input, uint8_t, Eurydice_slice), + prf_output); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + error_2 = + libcrux_ml_kem_sampling_sample_from_binomial_distribution__libcrux_ml_kem_vector_portable_vector_type_PortableVector_2size_t( + Eurydice_array_to_slice((size_t)128U, prf_output, uint8_t, + Eurydice_slice)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + u[3U]; + libcrux_ml_kem_matrix_compute_vector_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + A_transpose, r_as_ntt, error_1, u); + uint8_t uu____4[32U]; + memcpy(uu____4, message, (size_t)32U * sizeof(uint8_t)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + message_as_ring_element = + libcrux_ml_kem_serialize_deserialize_then_decompress_message__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + uu____4); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + v = libcrux_ml_kem_matrix_compute_ring_element_v__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + t_as_ntt, r_as_ntt, &error_2, &message_as_ring_element); + uint8_t ciphertext[1088U] = {0U}; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____5[3U]; + memcpy( + uu____5, u, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + libcrux_ml_kem_ind_cpa_compress_then_serialize_u__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_960size_t_10size_t_320size_t( + uu____5, Eurydice_array_to_subslice( + (size_t)1088U, ciphertext, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)960U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____6 = v; + libcrux_ml_kem_serialize_compress_then_serialize_ring_element_v__libcrux_ml_kem_vector_portable_vector_type_PortableVector_4size_t_128size_t( + uu____6, + Eurydice_array_to_subslice_from((size_t)1088U, ciphertext, (size_t)960U, + uint8_t, size_t, Eurydice_slice)); + memcpy(ret, ciphertext, (size_t)1088U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___kdf__libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1088size_t( + Eurydice_slice shared_secret, libcrux_ml_kem_mlkem768_MlKem768Ciphertext *_, + uint8_t ret[32U]) { + uint8_t out[32U] = {0U}; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_slice((size_t)32U, out, uint8_t, Eurydice_slice), + shared_secret, uint8_t, void *); + memcpy(ret, out, (size_t)32U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_ind_cca_decapsulate__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___libcrux_ml_kem_ind_cca_MlKem_3size_t_2400size_t_1152size_t_1184size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t_1120size_t( + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t *private_key, + libcrux_ml_kem_mlkem768_MlKem768Ciphertext *ciphertext, uint8_t ret[32U]) { + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____0 = + core_slice___Slice_T___split_at( + Eurydice_array_to_slice((size_t)2400U, private_key->value, uint8_t, + Eurydice_slice), + (size_t)1152U, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice ind_cpa_secret_key = uu____0.fst; + Eurydice_slice secret_key0 = uu____0.snd; + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____1 = + core_slice___Slice_T___split_at( + secret_key0, (size_t)1184U, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice ind_cpa_public_key = uu____1.fst; + Eurydice_slice secret_key = uu____1.snd; + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____2 = + core_slice___Slice_T___split_at( + secret_key, LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice ind_cpa_public_key_hash = uu____2.fst; + Eurydice_slice implicit_rejection_value = uu____2.snd; + uint8_t decrypted[32U]; + libcrux_ml_kem_ind_cpa_decrypt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1088size_t_960size_t_10size_t_4size_t( + ind_cpa_secret_key, ciphertext->value, decrypted); + uint8_t to_hash0[64U]; + libcrux_ml_kem_utils_into_padded_array___64size_t( + Eurydice_array_to_slice((size_t)32U, decrypted, uint8_t, Eurydice_slice), + to_hash0); + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice_from( + (size_t)64U, to_hash0, LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE, + uint8_t, size_t, Eurydice_slice), + ind_cpa_public_key_hash, uint8_t, void *); + uint8_t hashed[64U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____G___3size_t( + Eurydice_array_to_slice((size_t)64U, to_hash0, uint8_t, Eurydice_slice), + hashed); + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____3 = + core_slice___Slice_T___split_at( + Eurydice_array_to_slice((size_t)64U, hashed, uint8_t, Eurydice_slice), + LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice shared_secret0 = uu____3.fst; + Eurydice_slice pseudorandomness = uu____3.snd; + uint8_t to_hash[1120U]; + libcrux_ml_kem_utils_into_padded_array___1120size_t(implicit_rejection_value, + to_hash); + Eurydice_slice uu____4 = Eurydice_array_to_subslice_from( + (size_t)1120U, to_hash, LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE, + uint8_t, size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____4, + libcrux_ml_kem_types___core__convert__AsRef__Slice_u8___for_libcrux_ml_kem__types__MlKemCiphertext_SIZE___1__as_ref___1088size_t( + ciphertext), + uint8_t, void *); + uint8_t implicit_rejection_shared_secret0[32U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____PRF___3size_t_32size_t( + Eurydice_array_to_slice((size_t)1120U, to_hash, uint8_t, Eurydice_slice), + implicit_rejection_shared_secret0); + Eurydice_slice uu____5 = ind_cpa_public_key; + uint8_t uu____6[32U]; + memcpy(uu____6, decrypted, (size_t)32U * sizeof(uint8_t)); + uint8_t expected_ciphertext[1088U]; + libcrux_ml_kem_ind_cpa_encrypt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + uu____5, uu____6, pseudorandomness, expected_ciphertext); + Eurydice_slice uu____7 = + libcrux_ml_kem_types___core__convert__AsRef__Slice_u8___for_libcrux_ml_kem__types__MlKemCiphertext_SIZE___1__as_ref___1088size_t( + ciphertext); + uint8_t selector = + libcrux_ml_kem_constant_time_ops_compare_ciphertexts_in_constant_time( + uu____7, Eurydice_array_to_slice((size_t)1088U, expected_ciphertext, + uint8_t, Eurydice_slice)); + uint8_t implicit_rejection_shared_secret[32U]; + libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___kdf__libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1088size_t( + Eurydice_array_to_slice((size_t)32U, implicit_rejection_shared_secret0, + uint8_t, Eurydice_slice), + ciphertext, implicit_rejection_shared_secret); + uint8_t shared_secret[32U]; + libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___kdf__libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1088size_t( + shared_secret0, ciphertext, shared_secret); + uint8_t ret0[32U]; + libcrux_ml_kem_constant_time_ops_select_shared_secret_in_constant_time( + Eurydice_array_to_slice((size_t)32U, shared_secret, uint8_t, + Eurydice_slice), + Eurydice_array_to_slice((size_t)32U, implicit_rejection_shared_secret, + uint8_t, Eurydice_slice), + selector, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_ind_cca_instantiations_portable_decapsulate___3size_t_2400size_t_1152size_t_1184size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t_1120size_t( + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t *private_key, + libcrux_ml_kem_mlkem768_MlKem768Ciphertext *ciphertext, uint8_t ret[32U]) { + uint8_t ret0[32U]; + libcrux_ml_kem_ind_cca_decapsulate__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___libcrux_ml_kem_ind_cca_MlKem_3size_t_2400size_t_1152size_t_1184size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t_1120size_t( + private_key, ciphertext, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +static inline void libcrux_ml_kem_mlkem768_portable_decapsulate( + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t *private_key, + libcrux_ml_kem_mlkem768_MlKem768Ciphertext *ciphertext, uint8_t ret[32U]) { + uint8_t ret0[32U]; + libcrux_ml_kem_ind_cca_instantiations_portable_decapsulate___3size_t_2400size_t_1152size_t_1184size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t_1120size_t( + private_key, ciphertext, ret0); + memcpy(ret, ret0, (size_t)32U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___entropy_preprocess__libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + Eurydice_slice randomness, uint8_t ret[32U]) { + uint8_t out[32U] = {0U}; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_slice((size_t)32U, out, uint8_t, Eurydice_slice), + randomness, uint8_t, void *); + memcpy(ret, out, (size_t)32U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____H___3size_t( + Eurydice_slice input, uint8_t ret[32U]) { + uint8_t digest[32U] = {0U}; + libcrux_sha3_portable_sha256( + Eurydice_array_to_slice((size_t)32U, digest, uint8_t, Eurydice_slice), + input); + memcpy(ret, digest, (size_t)32U * sizeof(uint8_t)); +} + +static inline K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ +libcrux_ml_kem_ind_cca_encapsulate__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___libcrux_ml_kem_ind_cca_MlKem_3size_t_1088size_t_1184size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *public_key, + uint8_t randomness[32U]) { + uint8_t randomness0[32U]; + libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___entropy_preprocess__libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + Eurydice_array_to_slice((size_t)32U, randomness, uint8_t, Eurydice_slice), + randomness0); + uint8_t to_hash[64U]; + libcrux_ml_kem_utils_into_padded_array___64size_t( + Eurydice_array_to_slice((size_t)32U, randomness0, uint8_t, + Eurydice_slice), + to_hash); + Eurydice_slice uu____0 = Eurydice_array_to_subslice_from( + (size_t)64U, to_hash, LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE, uint8_t, + size_t, Eurydice_slice); + uint8_t ret[32U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____H___3size_t( + Eurydice_array_to_slice( + (size_t)1184U, + libcrux_ml_kem_types__libcrux_ml_kem__types__MlKemPublicKey_SIZE__18__as_slice___1184size_t( + public_key), + uint8_t, Eurydice_slice), + ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)32U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + uint8_t hashed[64U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____G___3size_t( + Eurydice_array_to_slice((size_t)64U, to_hash, uint8_t, Eurydice_slice), + hashed); + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____1 = + core_slice___Slice_T___split_at( + Eurydice_array_to_slice((size_t)64U, hashed, uint8_t, Eurydice_slice), + LIBCRUX_ML_KEM_CONSTANTS_SHARED_SECRET_SIZE, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice shared_secret = uu____1.fst; + Eurydice_slice pseudorandomness = uu____1.snd; + Eurydice_slice uu____2 = Eurydice_array_to_slice( + (size_t)1184U, + libcrux_ml_kem_types__libcrux_ml_kem__types__MlKemPublicKey_SIZE__18__as_slice___1184size_t( + public_key), + uint8_t, Eurydice_slice); + uint8_t uu____3[32U]; + memcpy(uu____3, randomness0, (size_t)32U * sizeof(uint8_t)); + uint8_t ciphertext[1088U]; + libcrux_ml_kem_ind_cpa_encrypt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1088size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + uu____2, uu____3, pseudorandomness, ciphertext); + uint8_t uu____4[1088U]; + memcpy(uu____4, ciphertext, (size_t)1088U * sizeof(uint8_t)); + libcrux_ml_kem_mlkem768_MlKem768Ciphertext ciphertext0 = + libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemCiphertext_SIZE___2__from___1088size_t( + uu____4); + uint8_t shared_secret_array[32U]; + libcrux_ml_kem_ind_cca___libcrux_ml_kem__ind_cca__Variant_for_libcrux_ml_kem__ind_cca__MlKem___kdf__libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1088size_t( + shared_secret, &ciphertext0, shared_secret_array); + libcrux_ml_kem_mlkem768_MlKem768Ciphertext uu____5 = ciphertext0; + uint8_t uu____6[32U]; + memcpy(uu____6, shared_secret_array, (size_t)32U * sizeof(uint8_t)); + K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ lit; + lit.fst = uu____5; + memcpy(lit.snd, uu____6, (size_t)32U * sizeof(uint8_t)); + return lit; +} + +static inline K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ +libcrux_ml_kem_ind_cca_instantiations_portable_encapsulate___3size_t_1088size_t_1184size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *public_key, + uint8_t randomness[32U]) { + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *uu____0 = public_key; + uint8_t uu____1[32U]; + memcpy(uu____1, randomness, (size_t)32U * sizeof(uint8_t)); + return libcrux_ml_kem_ind_cca_encapsulate__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___libcrux_ml_kem_ind_cca_MlKem_3size_t_1088size_t_1184size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + uu____0, uu____1); +} + +static inline K___libcrux_ml_kem_types_MlKemCiphertext___1088size_t___uint8_t_32size_t_ +libcrux_ml_kem_mlkem768_portable_encapsulate( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *public_key, + uint8_t randomness[32U]) { + libcrux_ml_kem_types_MlKemPublicKey____1184size_t *uu____0 = public_key; + uint8_t uu____1[32U]; + memcpy(uu____1, randomness, (size_t)32U * sizeof(uint8_t)); + return libcrux_ml_kem_ind_cca_instantiations_portable_encapsulate___3size_t_1088size_t_1184size_t_1152size_t_960size_t_128size_t_10size_t_4size_t_320size_t_2size_t_128size_t_2size_t_128size_t( + uu____0, uu____1); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_matrix_compute_As_plus_e_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_traits_to_standard_domain__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_vector_portable_vector_type_PortableVector v) { + return libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___montgomery_multiply_by_constant( + v, LIBCRUX_ML_KEM_VECTOR_TRAITS_MONTGOMERY_R_SQUARED_MOD_FIELD_MODULUS); +} + +static inline void +libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_standard_error_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *self, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *error) { + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t j = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector + coefficient_normal_form = + libcrux_ml_kem_vector_traits_to_standard_domain__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + self->coefficients[j]); + libcrux_ml_kem_vector_portable_vector_type_PortableVector uu____0 = + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___barrett_reduce( + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___add( + coefficient_normal_form, &error->coefficients[j])); + self->coefficients[j] = uu____0; + } +} + +static inline void +libcrux_ml_kem_matrix_compute_As_plus_e__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector ( + *matrix_A)[3U], + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *s_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *error_as_ntt, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + result[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + result[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + for ( + size_t i0 = (size_t)0U; + i0 < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, matrix_A, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + [3U], + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + [3U], + size_t); + i0++) { + size_t i1 = i0; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *row = matrix_A[i1]; + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, row, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + size_t); + i++) { + size_t j = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *matrix_element = &row[j]; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + product = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ntt_multiply__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + matrix_element, &s_as_ntt[j]); + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_to_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + &result[i1], &product); + } + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___add_standard_error_reduce__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &result[i1], &error_as_ntt[i1]); + } + memcpy( + ret, result, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); +} + +static inline void +libcrux_ml_kem_serialize_serialize_uncompressed_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + *re, + uint8_t ret[384U]) { + uint8_t serialized[384U] = {0U}; + for (size_t i = (size_t)0U; + i < LIBCRUX_ML_KEM_POLYNOMIAL_VECTORS_IN_RING_ELEMENT; i++) { + size_t i0 = i; + libcrux_ml_kem_vector_portable_vector_type_PortableVector coefficient = + libcrux_ml_kem_vector_traits_to_unsigned_representative__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + re->coefficients[i0]); + uint8_t bytes[24U]; + libcrux_ml_kem_vector_portable___libcrux_ml_kem__vector__traits__Operations_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___serialize_12( + coefficient, bytes); + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)384U, serialized, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)24U * i0, .end = (size_t)24U * i0 + (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)24U, bytes, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, serialized, (size_t)384U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_ind_cpa_serialize_secret_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1152size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + key[3U], + uint8_t ret[1152U]) { + uint8_t out[1152U] = {0U}; + for ( + size_t i = (size_t)0U; + i < + core_slice___Slice_T___len( + Eurydice_array_to_slice( + (size_t)3U, key, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + Eurydice_slice), + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector, + size_t); + i++) { + size_t i0 = i; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + re = key[i0]; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)1152U, out, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT, + .end = (i0 + (size_t)1U) * + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret0[384U]; + libcrux_ml_kem_serialize_serialize_uncompressed_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + &re, ret0); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)384U, ret0, uint8_t, Eurydice_slice), + uint8_t, void *); + } + memcpy(ret, out, (size_t)1152U * sizeof(uint8_t)); +} + +static inline void +libcrux_ml_kem_ind_cpa_serialize_public_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1152size_t_1184size_t( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + t_as_ntt[3U], + Eurydice_slice seed_for_a, uint8_t ret[1184U]) { + uint8_t public_key_serialized[1184U] = {0U}; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)1184U, public_key_serialized, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = (size_t)1152U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____1[3U]; + memcpy( + uu____1, t_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + uint8_t ret0[1152U]; + libcrux_ml_kem_ind_cpa_serialize_secret_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1152size_t( + uu____1, ret0); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)1152U, ret0, uint8_t, Eurydice_slice), + uint8_t, void *); + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice_from((size_t)1184U, public_key_serialized, + (size_t)1152U, uint8_t, size_t, + Eurydice_slice), + seed_for_a, uint8_t, void *); + memcpy(ret, public_key_serialized, (size_t)1184U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_utils_extraction_helper_Keypair768 +libcrux_ml_kem_ind_cpa_generate_keypair__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1152size_t_1184size_t_1152size_t_2size_t_128size_t( + Eurydice_slice key_generation_seed) { + uint8_t hashed[64U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____G___3size_t( + key_generation_seed, hashed); + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____0 = + core_slice___Slice_T___split_at( + Eurydice_array_to_slice((size_t)64U, hashed, uint8_t, Eurydice_slice), + (size_t)32U, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice seed_for_A = uu____0.fst; + Eurydice_slice seed_for_secret_and_error = uu____0.snd; + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + A_transpose[3U][3U]; + uint8_t ret[34U]; + libcrux_ml_kem_utils_into_padded_array___34size_t(seed_for_A, ret); + libcrux_ml_kem_matrix_sample_matrix_A__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t( + ret, true, A_transpose); + uint8_t prf_input[33U]; + libcrux_ml_kem_utils_into_padded_array___33size_t(seed_for_secret_and_error, + prf_input); + uint8_t uu____1[33U]; + memcpy(uu____1, prf_input, (size_t)33U * sizeof(uint8_t)); + K___libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t__uint8_t + uu____2 = + libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_2size_t_128size_t( + uu____1, 0U); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + secret_as_ntt[3U]; + memcpy( + secret_as_ntt, uu____2.fst, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + uint8_t domain_separator = uu____2.snd; + uint8_t uu____3[33U]; + memcpy(uu____3, prf_input, (size_t)33U * sizeof(uint8_t)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + error_as_ntt[3U]; + memcpy( + error_as_ntt, + libcrux_ml_kem_ind_cpa_sample_vector_cbd_then_ntt__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_2size_t_128size_t( + uu____3, domain_separator) + .fst, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + t_as_ntt[3U]; + libcrux_ml_kem_matrix_compute_As_plus_e__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t( + A_transpose, secret_as_ntt, error_as_ntt, t_as_ntt); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____4[3U]; + memcpy( + uu____4, t_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + uint8_t public_key_serialized[1184U]; + libcrux_ml_kem_ind_cpa_serialize_public_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1152size_t_1184size_t( + uu____4, seed_for_A, public_key_serialized); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____5[3U]; + memcpy( + uu____5, secret_as_ntt, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + uint8_t secret_key_serialized[1152U]; + libcrux_ml_kem_ind_cpa_serialize_secret_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1152size_t( + uu____5, secret_key_serialized); + uint8_t uu____6[1152U]; + memcpy(uu____6, secret_key_serialized, (size_t)1152U * sizeof(uint8_t)); + uint8_t uu____7[1184U]; + memcpy(uu____7, public_key_serialized, (size_t)1184U * sizeof(uint8_t)); + libcrux_ml_kem_utils_extraction_helper_Keypair768 lit; + memcpy(lit.fst, uu____6, (size_t)1152U * sizeof(uint8_t)); + memcpy(lit.snd, uu____7, (size_t)1184U * sizeof(uint8_t)); + return lit; +} + +static inline void +libcrux_ml_kem_ind_cca_serialize_kem_secret_key__libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_2400size_t( + Eurydice_slice private_key, Eurydice_slice public_key, + Eurydice_slice implicit_rejection_value, uint8_t ret[2400U]) { + uint8_t out[2400U] = {0U}; + size_t pointer = (size_t)0U; + uint8_t *uu____0 = out; + size_t uu____1 = pointer; + size_t uu____2 = pointer; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)2400U, uu____0, + (CLITERAL(core_ops_range_Range__size_t){ + .start = uu____1, + .end = uu____2 + + core_slice___Slice_T___len(private_key, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + private_key, uint8_t, void *); + pointer = pointer + core_slice___Slice_T___len(private_key, uint8_t, size_t); + uint8_t *uu____3 = out; + size_t uu____4 = pointer; + size_t uu____5 = pointer; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)2400U, uu____3, + (CLITERAL(core_ops_range_Range__size_t){ + .start = uu____4, + .end = uu____5 + + core_slice___Slice_T___len(public_key, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + public_key, uint8_t, void *); + pointer = pointer + core_slice___Slice_T___len(public_key, uint8_t, size_t); + Eurydice_slice uu____6 = Eurydice_array_to_subslice( + (size_t)2400U, out, + (CLITERAL(core_ops_range_Range__size_t){ + .start = pointer, + .end = pointer + LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret0[32U]; + libcrux_ml_kem_hash_functions_portable___libcrux_ml_kem__hash_functions__Hash_K__for_libcrux_ml_kem__hash_functions__portable__PortableHash_K____H___3size_t( + public_key, ret0); + core_slice___Slice_T___copy_from_slice( + uu____6, + Eurydice_array_to_slice((size_t)32U, ret0, uint8_t, Eurydice_slice), + uint8_t, void *); + pointer = pointer + LIBCRUX_ML_KEM_CONSTANTS_H_DIGEST_SIZE; + uint8_t *uu____7 = out; + size_t uu____8 = pointer; + size_t uu____9 = pointer; + core_slice___Slice_T___copy_from_slice( + Eurydice_array_to_subslice( + (size_t)2400U, uu____7, + (CLITERAL(core_ops_range_Range__size_t){ + .start = uu____8, + .end = uu____9 + core_slice___Slice_T___len( + implicit_rejection_value, uint8_t, size_t)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + implicit_rejection_value, uint8_t, void *); + memcpy(ret, out, (size_t)2400U * sizeof(uint8_t)); +} + +static inline libcrux_ml_kem_mlkem768_MlKem768KeyPair +libcrux_ml_kem_ind_cca_generate_keypair__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1152size_t_2400size_t_1184size_t_1152size_t_2size_t_128size_t( + uint8_t randomness[64U]) { + Eurydice_slice ind_cpa_keypair_randomness = Eurydice_array_to_subslice( + (size_t)64U, randomness, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, + .end = LIBCRUX_ML_KEM_CONSTANTS_CPA_PKE_KEY_GENERATION_SEED_SIZE}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + Eurydice_slice implicit_rejection_value = Eurydice_array_to_subslice_from( + (size_t)64U, randomness, + LIBCRUX_ML_KEM_CONSTANTS_CPA_PKE_KEY_GENERATION_SEED_SIZE, uint8_t, + size_t, Eurydice_slice); + libcrux_ml_kem_utils_extraction_helper_Keypair768 uu____0 = + libcrux_ml_kem_ind_cpa_generate_keypair__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1152size_t_1184size_t_1152size_t_2size_t_128size_t( + ind_cpa_keypair_randomness); + uint8_t ind_cpa_private_key[1152U]; + memcpy(ind_cpa_private_key, uu____0.fst, (size_t)1152U * sizeof(uint8_t)); + uint8_t public_key[1184U]; + memcpy(public_key, uu____0.snd, (size_t)1184U * sizeof(uint8_t)); + uint8_t secret_key_serialized[2400U]; + libcrux_ml_kem_ind_cca_serialize_kem_secret_key__libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_2400size_t( + Eurydice_array_to_slice((size_t)1152U, ind_cpa_private_key, uint8_t, + Eurydice_slice), + Eurydice_array_to_slice((size_t)1184U, public_key, uint8_t, + Eurydice_slice), + implicit_rejection_value, secret_key_serialized); + uint8_t uu____1[2400U]; + memcpy(uu____1, secret_key_serialized, (size_t)2400U * sizeof(uint8_t)); + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t private_key = + libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemPrivateKey_SIZE___8__from___2400size_t( + uu____1); + libcrux_ml_kem_types_MlKemPrivateKey____2400size_t uu____2 = private_key; + uint8_t uu____3[1184U]; + memcpy(uu____3, public_key, (size_t)1184U * sizeof(uint8_t)); + return libcrux_ml_kem_types__libcrux_ml_kem__types__MlKemKeyPair_PRIVATE_KEY_SIZE__PUBLIC_KEY_SIZE___from___2400size_t_1184size_t( + uu____2, + libcrux_ml_kem_types___core__convert__From__Array_u8__SIZE___for_libcrux_ml_kem__types__MlKemPublicKey_SIZE___14__from___1184size_t( + uu____3)); +} + +static inline libcrux_ml_kem_mlkem768_MlKem768KeyPair +libcrux_ml_kem_ind_cca_instantiations_portable_generate_keypair___3size_t_1152size_t_2400size_t_1184size_t_1152size_t_2size_t_128size_t( + uint8_t randomness[64U]) { + uint8_t uu____0[64U]; + memcpy(uu____0, randomness, (size_t)64U * sizeof(uint8_t)); + return libcrux_ml_kem_ind_cca_generate_keypair__libcrux_ml_kem_vector_portable_vector_type_PortableVector_libcrux_ml_kem_hash_functions_portable_PortableHash___3size_t___3size_t_1152size_t_2400size_t_1184size_t_1152size_t_2size_t_128size_t( + uu____0); +} + +static inline libcrux_ml_kem_mlkem768_MlKem768KeyPair +libcrux_ml_kem_mlkem768_portable_generate_key_pair(uint8_t randomness[64U]) { + uint8_t uu____0[64U]; + memcpy(uu____0, randomness, (size_t)64U * sizeof(uint8_t)); + return libcrux_ml_kem_ind_cca_instantiations_portable_generate_keypair___3size_t_1152size_t_2400size_t_1184size_t_1152size_t_2size_t_128size_t( + uu____0); +} + +static inline libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_serialize_deserialize_ring_elements_reduced_closure__libcrux_ml_kem_vector_portable_vector_type_PortableVector_1184size_t_3size_t( + size_t _i) { + return libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); +} + +static inline void +libcrux_ml_kem_serialize_deserialize_ring_elements_reduced__libcrux_ml_kem_vector_portable_vector_type_PortableVector_1184size_t_3size_t( + Eurydice_slice public_key, + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + ret[3U]) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + deserialized_pk[3U]; + for (size_t i = (size_t)0U; i < (size_t)3U; i++) { + deserialized_pk[i] = + libcrux_ml_kem_polynomial__libcrux_ml_kem__polynomial__PolynomialRingElement_Vector__TraitClause_0___ZERO__libcrux_ml_kem_vector_portable_vector_type_PortableVector(); + } + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(public_key, uint8_t, size_t) / + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT; + i++) { + size_t i0 = i; + Eurydice_slice ring_element = Eurydice_slice_subslice( + public_key, + (CLITERAL(core_ops_range_Range__size_t){ + .start = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT, + .end = i0 * LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT + + LIBCRUX_ML_KEM_CONSTANTS_BYTES_PER_RING_ELEMENT}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0 = + libcrux_ml_kem_serialize_deserialize_to_reduced_ring_element__libcrux_ml_kem_vector_portable_vector_type_PortableVector( + ring_element); + deserialized_pk[i0] = uu____0; + } + memcpy( + ret, deserialized_pk, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); +} + +static inline bool +libcrux_ml_kem_ind_cca_validate_public_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1152size_t_1184size_t( + uint8_t *public_key) { + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + deserialized_pk[3U]; + libcrux_ml_kem_serialize_deserialize_ring_elements_reduced__libcrux_ml_kem_vector_portable_vector_type_PortableVector_1184size_t_3size_t( + Eurydice_array_to_subslice_to((size_t)1184U, public_key, (size_t)1152U, + uint8_t, size_t, Eurydice_slice), + deserialized_pk); + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector + uu____0[3U]; + memcpy( + uu____0, deserialized_pk, + (size_t)3U * + sizeof( + libcrux_ml_kem_polynomial_PolynomialRingElement__libcrux_ml_kem_vector_portable_vector_type_PortableVector)); + uint8_t public_key_serialized[1184U]; + libcrux_ml_kem_ind_cpa_serialize_public_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1152size_t_1184size_t( + uu____0, + Eurydice_array_to_subslice_from((size_t)1184U, public_key, (size_t)1152U, + uint8_t, size_t, Eurydice_slice), + public_key_serialized); + return core_array_equality___core__cmp__PartialEq__Array_U__N___for__Array_T__N____eq( + (size_t)1184U, public_key, public_key_serialized, uint8_t, uint8_t, bool); +} + +static inline bool +libcrux_ml_kem_ind_cca_instantiations_portable_validate_public_key___3size_t_1152size_t_1184size_t( + uint8_t *public_key) { + return libcrux_ml_kem_ind_cca_validate_public_key__libcrux_ml_kem_vector_portable_vector_type_PortableVector_3size_t_1152size_t_1184size_t( + public_key); +} + +static inline core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__ +libcrux_ml_kem_mlkem768_portable_validate_public_key( + libcrux_ml_kem_types_MlKemPublicKey____1184size_t public_key) { + core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__ + uu____0; + if (libcrux_ml_kem_ind_cca_instantiations_portable_validate_public_key___3size_t_1152size_t_1184size_t( + public_key.value)) { + uu____0 = (CLITERAL( + core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__){ + .tag = core_option_Some, .f0 = public_key}); + } else { + uu____0 = (CLITERAL( + core_option_Option__libcrux_ml_kem_types_MlKemPublicKey___1184size_t__){ + .tag = core_option_None}); + } + return uu____0; +} + +static inline libcrux_ml_kem_vector_portable_vector_type_PortableVector +libcrux_ml_kem_vector_portable_vector_type___core__clone__Clone_for_libcrux_ml_kem__vector__portable__vector_type__PortableVector___clone( + libcrux_ml_kem_vector_portable_vector_type_PortableVector *self) { + return self[0U]; +} + +typedef int16_t libcrux_ml_kem_vector_portable_vector_type_FieldElement; + +typedef int16_t + libcrux_ml_kem_vector_portable_arithmetic_MontgomeryFieldElement; + +typedef int16_t + libcrux_ml_kem_vector_portable_arithmetic_FieldElementTimesMontgomeryR; + +#if defined(__cplusplus) +} +#endif + +#define __libcrux_mlkem768_portable_H_DEFINED +#endif diff --git a/third_party/libcrux/libcrux_sha3_avx2.h b/third_party/libcrux/libcrux_sha3_avx2.h new file mode 100644 index 0000000000..01bc3b9381 --- /dev/null +++ b/third_party/libcrux/libcrux_sha3_avx2.h @@ -0,0 +1,2270 @@ +/* + This file was generated by KaRaMeL + KaRaMeL invocation: /home/franziskus/eurydice//eurydice --config ../cg.yaml + -funroll-loops 0 ../../libcrux_ml_kem.llbc ../../libcrux_sha3.llbc F* version: + KaRaMeL version: 42a43169 + */ + +#ifndef __libcrux_sha3_avx2_H +#define __libcrux_sha3_avx2_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "eurydice_glue.h" +#include "intrinsics/libcrux_intrinsics_avx2.h" +#include "libcrux_core.h" +#include "libcrux_sha3_portable.h" + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero( + void) { + return libcrux_intrinsics_avx2_mm256_set1_epi64x((int64_t)0); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__veor5q_u64(core_core_arch_x86___m256i a, + core_core_arch_x86___m256i b, + core_core_arch_x86___m256i c, + core_core_arch_x86___m256i d, + core_core_arch_x86___m256i e) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + core_core_arch_x86___m256i cd = libcrux_intrinsics_avx2_mm256_xor_si256(c, d); + core_core_arch_x86___m256i abcd = + libcrux_intrinsics_avx2_mm256_xor_si256(ab, cd); + return libcrux_intrinsics_avx2_mm256_xor_si256(abcd, e); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor5( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b, + core_core_arch_x86___m256i c, core_core_arch_x86___m256i d, + core_core_arch_x86___m256i e) { + return libcrux_sha3_simd_avx2__veor5q_u64(a, b, c, d, e); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___1int32_t_63int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)1, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)63, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vrax1q_u64(core_core_arch_x86___m256i a, + core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i uu____0 = a; + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_sha3_simd_avx2_rotate_left___1int32_t_63int32_t(b)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___rotate_left1_and_xor( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vrax1q_u64(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vbcaxq_u64(core_core_arch_x86___m256i a, + core_core_arch_x86___m256i b, + core_core_arch_x86___m256i c) { + core_core_arch_x86___m256i uu____0 = a; + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_andnot_si256(c, b)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___and_not_xor( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b, + core_core_arch_x86___m256i c) { + return libcrux_sha3_simd_avx2__vbcaxq_u64(a, b, c); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__veorq_n_u64(core_core_arch_x86___m256i a, uint64_t c) { + core_core_arch_x86___m256i c0 = + libcrux_intrinsics_avx2_mm256_set1_epi64x((int64_t)c); + return libcrux_intrinsics_avx2_mm256_xor_si256(a, c0); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_constant( + core_core_arch_x86___m256i a, uint64_t c) { + return libcrux_sha3_simd_avx2__veorq_n_u64(a, c); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_intrinsics_avx2_mm256_xor_si256(a, b); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2_slice_4(Eurydice_slice a[4U], size_t start, size_t len, + Eurydice_slice ret[4U]) { + Eurydice_slice uu____0 = Eurydice_slice_subslice( + a[0U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + Eurydice_slice uu____1 = Eurydice_slice_subslice( + a[1U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + Eurydice_slice uu____2 = Eurydice_slice_subslice( + a[2U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + ret[0U] = uu____0; + ret[1U] = uu____1; + ret[2U] = uu____2; + ret[3U] = Eurydice_slice_subslice(a[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + len}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___slice_n( + Eurydice_slice a[4U], size_t start, size_t len, Eurydice_slice ret[4U]) { + Eurydice_slice uu____0[4U]; + memcpy(uu____0, a, (size_t)4U * sizeof(Eurydice_slice)); + Eurydice_slice ret0[4U]; + libcrux_sha3_simd_avx2_slice_4(uu____0, start, len, ret0); + memcpy(ret, ret0, (size_t)4U * sizeof(Eurydice_slice)); +} + +__attribute__((target( + "avx2"))) static inline K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t_ +libcrux_sha3_simd_avx2_split_at_mut_4(Eurydice_slice out[4U], size_t mid) { + Eurydice_slice out0 = out[0U]; + Eurydice_slice out1 = out[1U]; + Eurydice_slice out2 = out[2U]; + Eurydice_slice out3 = out[3U]; + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____0 = + core_slice___Slice_T___split_at_mut( + out0, mid, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice out00 = uu____0.fst; + Eurydice_slice out01 = uu____0.snd; + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____1 = + core_slice___Slice_T___split_at_mut( + out1, mid, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice out10 = uu____1.fst; + Eurydice_slice out11 = uu____1.snd; + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____2 = + core_slice___Slice_T___split_at_mut( + out2, mid, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice out20 = uu____2.fst; + Eurydice_slice out21 = uu____2.snd; + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____3 = + core_slice___Slice_T___split_at_mut( + out3, mid, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice out30 = uu____3.fst; + Eurydice_slice out31 = uu____3.snd; + K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t_ lit; + lit.fst[0U] = out00; + lit.fst[1U] = out10; + lit.fst[2U] = out20; + lit.fst[3U] = out30; + lit.snd[0U] = out01; + lit.snd[1U] = out11; + lit.snd[2U] = out21; + lit.snd[3U] = out31; + return lit; +} + +__attribute__((target( + "avx2"))) static inline K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t_ +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___split_at_mut_n( + Eurydice_slice a[4U], size_t mid) { + return libcrux_sha3_simd_avx2_split_at_mut_4(a, mid); +} + +typedef struct + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t_s { + core_core_arch_x86___m256i st[5U][5U]; +} libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t; + +__attribute__((target( + "avx2"))) static inline libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t +libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__core_core_arch_x86___m256i_4size_t( + void) { + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + lit; + lit.st[0U][0U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[0U][1U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[0U][2U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[0U][3U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[0U][4U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[1U][0U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[1U][1U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[1U][2U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[1U][3U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[1U][4U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[2U][0U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[2U][1U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[2U][2U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[2U][3U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[2U][4U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[3U][0U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[3U][1U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[3U][2U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[3U][3U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[3U][4U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[4U][0U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[4U][1U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[4U][2U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[4U][3U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + lit.st[4U][4U] = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___zero(); + return lit; +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2_load_block___136size_t( + core_core_arch_x86___m256i (*s)[5U], Eurydice_slice blocks[4U]) { + for (size_t i = (size_t)0U; i < (size_t)136U / (size_t)32U; i++) { + size_t i0 = i; + core_core_arch_x86___m256i v00 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8(Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i v10 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8(Eurydice_slice_subslice( + blocks[1U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i v20 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8(Eurydice_slice_subslice( + blocks[2U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i v30 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8(Eurydice_slice_subslice( + blocks[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i v0l = + libcrux_intrinsics_avx2_mm256_unpacklo_epi64(v00, v10); + core_core_arch_x86___m256i v1h = + libcrux_intrinsics_avx2_mm256_unpackhi_epi64(v00, v10); + core_core_arch_x86___m256i v2l = + libcrux_intrinsics_avx2_mm256_unpacklo_epi64(v20, v30); + core_core_arch_x86___m256i v3h = + libcrux_intrinsics_avx2_mm256_unpackhi_epi64(v20, v30); + core_core_arch_x86___m256i v0 = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)32, v0l, v2l, core_core_arch_x86___m256i); + core_core_arch_x86___m256i v1 = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)32, v1h, v3h, core_core_arch_x86___m256i); + core_core_arch_x86___m256i v2 = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)49, v0l, v2l, core_core_arch_x86___m256i); + core_core_arch_x86___m256i v3 = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)49, v1h, v3h, core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____0 = + libcrux_intrinsics_avx2_mm256_xor_si256( + s[(size_t)4U * i0 / (size_t)5U][(size_t)4U * i0 % (size_t)5U], v0); + s[(size_t)4U * i0 / (size_t)5U][(size_t)4U * i0 % (size_t)5U] = uu____0; + core_core_arch_x86___m256i uu____1 = + libcrux_intrinsics_avx2_mm256_xor_si256( + s[((size_t)4U * i0 + (size_t)1U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)1U) % (size_t)5U], + v1); + s[((size_t)4U * i0 + (size_t)1U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)1U) % (size_t)5U] = uu____1; + core_core_arch_x86___m256i uu____2 = + libcrux_intrinsics_avx2_mm256_xor_si256( + s[((size_t)4U * i0 + (size_t)2U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)2U) % (size_t)5U], + v2); + s[((size_t)4U * i0 + (size_t)2U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)2U) % (size_t)5U] = uu____2; + core_core_arch_x86___m256i uu____3 = + libcrux_intrinsics_avx2_mm256_xor_si256( + s[((size_t)4U * i0 + (size_t)3U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)3U) % (size_t)5U], + v3); + s[((size_t)4U * i0 + (size_t)3U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)3U) % (size_t)5U] = uu____3; + } + size_t rem = (size_t)136U % (size_t)32U; + size_t start = (size_t)32U * ((size_t)136U / (size_t)32U); + uint8_t u8s[32U] = {0U}; + Eurydice_slice uu____4 = Eurydice_array_to_subslice( + (size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____4, + Eurydice_slice_subslice(blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____5 = Eurydice_array_to_subslice( + (size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)8U, + .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____5, + Eurydice_slice_subslice(blocks[1U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____6 = Eurydice_array_to_subslice( + (size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)16U, + .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____6, + Eurydice_slice_subslice(blocks[2U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____7 = Eurydice_array_to_subslice( + (size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)24U, + .end = (size_t)32U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____7, + Eurydice_slice_subslice(blocks[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + core_core_arch_x86___m256i u = libcrux_intrinsics_avx2_mm256_loadu_si256_u8( + core_array___Array_T__N__23__as_slice((size_t)32U, u8s, uint8_t, + Eurydice_slice)); + size_t i0 = (size_t)4U * ((size_t)136U / (size_t)32U) / (size_t)5U; + size_t j0 = (size_t)4U * ((size_t)136U / (size_t)32U) % (size_t)5U; + core_core_arch_x86___m256i uu____8 = + libcrux_intrinsics_avx2_mm256_xor_si256(s[i0][j0], u); + s[i0][j0] = uu____8; + if (rem == (size_t)16U) { + uint8_t u8s0[32U] = {0U}; + Eurydice_slice uu____9 = Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____9, + Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start + (size_t)8U, .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____10 = Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)8U, + .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____10, + Eurydice_slice_subslice( + blocks[1U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start + (size_t)8U, .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____11 = Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)16U, + .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____11, + Eurydice_slice_subslice( + blocks[2U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start + (size_t)8U, .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____12 = Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)24U, + .end = (size_t)32U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____12, + Eurydice_slice_subslice( + blocks[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start + (size_t)8U, .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + core_core_arch_x86___m256i u0 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8( + core_array___Array_T__N__23__as_slice((size_t)32U, u8s0, uint8_t, + Eurydice_slice)); + size_t i = + ((size_t)4U * ((size_t)136U / (size_t)32U) + (size_t)1U) / (size_t)5U; + size_t j = + ((size_t)4U * ((size_t)136U / (size_t)32U) + (size_t)1U) % (size_t)5U; + core_core_arch_x86___m256i uu____13 = + libcrux_intrinsics_avx2_mm256_xor_si256(s[i][j], u0); + s[i][j] = uu____13; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___load_block___136size_t( + core_core_arch_x86___m256i (*a)[5U], Eurydice_slice b[4U]) { + core_core_arch_x86___m256i(*uu____0)[5U] = a; + Eurydice_slice uu____1[4U]; + memcpy(uu____1, b, (size_t)4U * sizeof(Eurydice_slice)); + libcrux_sha3_simd_avx2_load_block___136size_t(uu____0, uu____1); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___36int32_t_28int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)36, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)28, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___36int32_t_28int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___36int32_t_28int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___36int32_t_28int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___36int32_t_28int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___3int32_t_61int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)3, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)61, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___3int32_t_61int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___3int32_t_61int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___3int32_t_61int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___3int32_t_61int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___41int32_t_23int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)41, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)23, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___41int32_t_23int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___41int32_t_23int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___41int32_t_23int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___41int32_t_23int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___18int32_t_46int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)18, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)46, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___18int32_t_46int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___18int32_t_46int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___18int32_t_46int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___18int32_t_46int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___1int32_t_63int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___1int32_t_63int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___1int32_t_63int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___1int32_t_63int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___44int32_t_20int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)44, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)20, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___44int32_t_20int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___44int32_t_20int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___44int32_t_20int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___44int32_t_20int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___10int32_t_54int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)10, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)54, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___10int32_t_54int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___10int32_t_54int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___10int32_t_54int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___10int32_t_54int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___45int32_t_19int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)45, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)19, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___45int32_t_19int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___45int32_t_19int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___45int32_t_19int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___45int32_t_19int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___2int32_t_62int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)2, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)62, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___2int32_t_62int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___2int32_t_62int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___2int32_t_62int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___2int32_t_62int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___62int32_t_2int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)62, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)2, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___62int32_t_2int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___62int32_t_2int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___62int32_t_2int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___62int32_t_2int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___6int32_t_58int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)6, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)58, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___6int32_t_58int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___6int32_t_58int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___6int32_t_58int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___6int32_t_58int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___43int32_t_21int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)43, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)21, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___43int32_t_21int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___43int32_t_21int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___43int32_t_21int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___43int32_t_21int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___15int32_t_49int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)15, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)49, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___15int32_t_49int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___15int32_t_49int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___15int32_t_49int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___15int32_t_49int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___61int32_t_3int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)61, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)3, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___61int32_t_3int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___61int32_t_3int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___61int32_t_3int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___61int32_t_3int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___28int32_t_36int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)28, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)36, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___28int32_t_36int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___28int32_t_36int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___28int32_t_36int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___28int32_t_36int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___55int32_t_9int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)55, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)9, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___55int32_t_9int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___55int32_t_9int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___55int32_t_9int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___55int32_t_9int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___25int32_t_39int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)25, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)39, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___25int32_t_39int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___25int32_t_39int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___25int32_t_39int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___25int32_t_39int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___21int32_t_43int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)21, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)43, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___21int32_t_43int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___21int32_t_43int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___21int32_t_43int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___21int32_t_43int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___56int32_t_8int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)56, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)8, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___56int32_t_8int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___56int32_t_8int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___56int32_t_8int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___56int32_t_8int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___27int32_t_37int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)27, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)37, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___27int32_t_37int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___27int32_t_37int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___27int32_t_37int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___27int32_t_37int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___20int32_t_44int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)20, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)44, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___20int32_t_44int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___20int32_t_44int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___20int32_t_44int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___20int32_t_44int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___39int32_t_25int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)39, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)25, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___39int32_t_25int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___39int32_t_25int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___39int32_t_25int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___39int32_t_25int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___8int32_t_56int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)8, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)56, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___8int32_t_56int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___8int32_t_56int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___8int32_t_56int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___8int32_t_56int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2_rotate_left___14int32_t_50int32_t( + core_core_arch_x86___m256i x) { + core_core_arch_x86___m256i uu____0 = libcrux_intrinsics_avx2_mm256_slli_epi64( + (int32_t)14, x, core_core_arch_x86___m256i); + return libcrux_intrinsics_avx2_mm256_xor_si256( + uu____0, libcrux_intrinsics_avx2_mm256_srli_epi64( + (int32_t)50, x, core_core_arch_x86___m256i)); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2__vxarq_u64___14int32_t_50int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + core_core_arch_x86___m256i ab = libcrux_intrinsics_avx2_mm256_xor_si256(a, b); + return libcrux_sha3_simd_avx2_rotate_left___14int32_t_50int32_t(ab); +} + +__attribute__((target("avx2"))) static inline core_core_arch_x86___m256i +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___14int32_t_50int32_t( + core_core_arch_x86___m256i a, core_core_arch_x86___m256i b) { + return libcrux_sha3_simd_avx2__vxarq_u64___14int32_t_50int32_t(a, b); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_theta_rho__core_core_arch_x86___m256i_4size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s) { + core_core_arch_x86___m256i uu____0 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor5( + s->st[0U][0U], s->st[1U][0U], s->st[2U][0U], s->st[3U][0U], + s->st[4U][0U]); + core_core_arch_x86___m256i uu____1 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor5( + s->st[0U][1U], s->st[1U][1U], s->st[2U][1U], s->st[3U][1U], + s->st[4U][1U]); + core_core_arch_x86___m256i uu____2 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor5( + s->st[0U][2U], s->st[1U][2U], s->st[2U][2U], s->st[3U][2U], + s->st[4U][2U]); + core_core_arch_x86___m256i uu____3 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor5( + s->st[0U][3U], s->st[1U][3U], s->st[2U][3U], s->st[3U][3U], + s->st[4U][3U]); + core_core_arch_x86___m256i c[5U] = { + uu____0, uu____1, uu____2, uu____3, + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor5( + s->st[0U][4U], s->st[1U][4U], s->st[2U][4U], s->st[3U][4U], + s->st[4U][4U])}; + core_core_arch_x86___m256i uu____4 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___rotate_left1_and_xor( + c[((size_t)0U + (size_t)4U) % (size_t)5U], + c[((size_t)0U + (size_t)1U) % (size_t)5U]); + core_core_arch_x86___m256i uu____5 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___rotate_left1_and_xor( + c[((size_t)1U + (size_t)4U) % (size_t)5U], + c[((size_t)1U + (size_t)1U) % (size_t)5U]); + core_core_arch_x86___m256i uu____6 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___rotate_left1_and_xor( + c[((size_t)2U + (size_t)4U) % (size_t)5U], + c[((size_t)2U + (size_t)1U) % (size_t)5U]); + core_core_arch_x86___m256i uu____7 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___rotate_left1_and_xor( + c[((size_t)3U + (size_t)4U) % (size_t)5U], + c[((size_t)3U + (size_t)1U) % (size_t)5U]); + core_core_arch_x86___m256i t[5U] = { + uu____4, uu____5, uu____6, uu____7, + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___rotate_left1_and_xor( + c[((size_t)4U + (size_t)4U) % (size_t)5U], + c[((size_t)4U + (size_t)1U) % (size_t)5U])}; + core_core_arch_x86___m256i uu____8 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor( + s->st[0U][0U], t[0U]); + s->st[0U][0U] = uu____8; + core_core_arch_x86___m256i uu____9 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___36int32_t_28int32_t( + s->st[1U][0U], t[0U]); + s->st[1U][0U] = uu____9; + core_core_arch_x86___m256i uu____10 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___3int32_t_61int32_t( + s->st[2U][0U], t[0U]); + s->st[2U][0U] = uu____10; + core_core_arch_x86___m256i uu____11 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___41int32_t_23int32_t( + s->st[3U][0U], t[0U]); + s->st[3U][0U] = uu____11; + core_core_arch_x86___m256i uu____12 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___18int32_t_46int32_t( + s->st[4U][0U], t[0U]); + s->st[4U][0U] = uu____12; + core_core_arch_x86___m256i uu____13 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___1int32_t_63int32_t( + s->st[0U][1U], t[1U]); + s->st[0U][1U] = uu____13; + core_core_arch_x86___m256i uu____14 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___44int32_t_20int32_t( + s->st[1U][1U], t[1U]); + s->st[1U][1U] = uu____14; + core_core_arch_x86___m256i uu____15 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___10int32_t_54int32_t( + s->st[2U][1U], t[1U]); + s->st[2U][1U] = uu____15; + core_core_arch_x86___m256i uu____16 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___45int32_t_19int32_t( + s->st[3U][1U], t[1U]); + s->st[3U][1U] = uu____16; + core_core_arch_x86___m256i uu____17 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___2int32_t_62int32_t( + s->st[4U][1U], t[1U]); + s->st[4U][1U] = uu____17; + core_core_arch_x86___m256i uu____18 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___62int32_t_2int32_t( + s->st[0U][2U], t[2U]); + s->st[0U][2U] = uu____18; + core_core_arch_x86___m256i uu____19 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___6int32_t_58int32_t( + s->st[1U][2U], t[2U]); + s->st[1U][2U] = uu____19; + core_core_arch_x86___m256i uu____20 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___43int32_t_21int32_t( + s->st[2U][2U], t[2U]); + s->st[2U][2U] = uu____20; + core_core_arch_x86___m256i uu____21 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___15int32_t_49int32_t( + s->st[3U][2U], t[2U]); + s->st[3U][2U] = uu____21; + core_core_arch_x86___m256i uu____22 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___61int32_t_3int32_t( + s->st[4U][2U], t[2U]); + s->st[4U][2U] = uu____22; + core_core_arch_x86___m256i uu____23 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___28int32_t_36int32_t( + s->st[0U][3U], t[3U]); + s->st[0U][3U] = uu____23; + core_core_arch_x86___m256i uu____24 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___55int32_t_9int32_t( + s->st[1U][3U], t[3U]); + s->st[1U][3U] = uu____24; + core_core_arch_x86___m256i uu____25 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___25int32_t_39int32_t( + s->st[2U][3U], t[3U]); + s->st[2U][3U] = uu____25; + core_core_arch_x86___m256i uu____26 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___21int32_t_43int32_t( + s->st[3U][3U], t[3U]); + s->st[3U][3U] = uu____26; + core_core_arch_x86___m256i uu____27 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___56int32_t_8int32_t( + s->st[4U][3U], t[3U]); + s->st[4U][3U] = uu____27; + core_core_arch_x86___m256i uu____28 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___27int32_t_37int32_t( + s->st[0U][4U], t[4U]); + s->st[0U][4U] = uu____28; + core_core_arch_x86___m256i uu____29 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___20int32_t_44int32_t( + s->st[1U][4U], t[4U]); + s->st[1U][4U] = uu____29; + core_core_arch_x86___m256i uu____30 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___39int32_t_25int32_t( + s->st[2U][4U], t[4U]); + s->st[2U][4U] = uu____30; + core_core_arch_x86___m256i uu____31 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___8int32_t_56int32_t( + s->st[3U][4U], t[4U]); + s->st[3U][4U] = uu____31; + core_core_arch_x86___m256i uu____32 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_and_rotate___14int32_t_50int32_t( + s->st[4U][4U], t[4U]); + s->st[4U][4U] = uu____32; +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_pi__core_core_arch_x86___m256i_4size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s) { + core_core_arch_x86___m256i old[5U][5U]; + memcpy(old, s->st, (size_t)5U * sizeof(core_core_arch_x86___m256i[5U])); + s->st[0U][1U] = old[1U][1U]; + s->st[0U][2U] = old[2U][2U]; + s->st[0U][3U] = old[3U][3U]; + s->st[0U][4U] = old[4U][4U]; + s->st[1U][0U] = old[0U][3U]; + s->st[1U][1U] = old[1U][4U]; + s->st[1U][2U] = old[2U][0U]; + s->st[1U][3U] = old[3U][1U]; + s->st[1U][4U] = old[4U][2U]; + s->st[2U][0U] = old[0U][1U]; + s->st[2U][1U] = old[1U][2U]; + s->st[2U][2U] = old[2U][3U]; + s->st[2U][3U] = old[3U][4U]; + s->st[2U][4U] = old[4U][0U]; + s->st[3U][0U] = old[0U][4U]; + s->st[3U][1U] = old[1U][0U]; + s->st[3U][2U] = old[2U][1U]; + s->st[3U][3U] = old[3U][2U]; + s->st[3U][4U] = old[4U][3U]; + s->st[4U][0U] = old[0U][2U]; + s->st[4U][1U] = old[1U][3U]; + s->st[4U][2U] = old[2U][4U]; + s->st[4U][3U] = old[3U][0U]; + s->st[4U][4U] = old[4U][1U]; +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_chi__core_core_arch_x86___m256i_4size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s) { + core_core_arch_x86___m256i old[5U][5U]; + memcpy(old, s->st, (size_t)5U * sizeof(core_core_arch_x86___m256i[5U])); + for (size_t i0 = (size_t)0U; i0 < (size_t)5U; i0++) { + size_t i1 = i0; + for (size_t i = (size_t)0U; i < (size_t)5U; i++) { + size_t j = i; + core_core_arch_x86___m256i uu____0 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___and_not_xor( + s->st[i1][j], old[i1][(j + (size_t)2U) % (size_t)5U], + old[i1][(j + (size_t)1U) % (size_t)5U]); + s->st[i1][j] = uu____0; + } + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_iota__core_core_arch_x86___m256i_4size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + size_t i) { + core_core_arch_x86___m256i uu____0 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___xor_constant( + s->st[0U][0U], libcrux_sha3_generic_keccak_ROUNDCONSTANTS[i]); + s->st[0U][0U] = uu____0; +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_keccakf1600__core_core_arch_x86___m256i_4size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s) { + for (size_t i = (size_t)0U; i < (size_t)24U; i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_theta_rho__core_core_arch_x86___m256i_4size_t( + s); + libcrux_sha3_generic_keccak_pi__core_core_arch_x86___m256i_4size_t(s); + libcrux_sha3_generic_keccak_chi__core_core_arch_x86___m256i_4size_t(s); + libcrux_sha3_generic_keccak_iota__core_core_arch_x86___m256i_4size_t(s, i0); + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_absorb_block__core_core_arch_x86___m256i_4size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice blocks[4U]) { + core_core_arch_x86___m256i(*uu____0)[5U] = s->st; + Eurydice_slice uu____1[4U]; + memcpy(uu____1, blocks, (size_t)4U * sizeof(Eurydice_slice)); + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___load_block___136size_t( + uu____0, uu____1); + libcrux_sha3_generic_keccak_keccakf1600__core_core_arch_x86___m256i_4size_t( + s); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2_load_block_full___136size_t( + core_core_arch_x86___m256i (*s)[5U], uint8_t blocks[4U][200U]) { + Eurydice_slice buf[4U] = {Eurydice_array_to_slice((size_t)200U, blocks[0U], + uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, blocks[1U], + uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, blocks[2U], + uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, blocks[3U], + uint8_t, Eurydice_slice)}; + libcrux_sha3_simd_avx2_load_block___136size_t(s, buf); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___load_block_full___136size_t( + core_core_arch_x86___m256i (*a)[5U], uint8_t b[4U][200U]) { + core_core_arch_x86___m256i(*uu____0)[5U] = a; + uint8_t uu____1[4U][200U]; + memcpy(uu____1, b, (size_t)4U * sizeof(uint8_t[200U])); + libcrux_sha3_simd_avx2_load_block_full___136size_t(uu____0, uu____1); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_absorb_final__core_core_arch_x86___m256i_4size_t_136size_t_31uint8_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice last[4U]) { + size_t last_len = core_slice___Slice_T___len(last[0U], uint8_t, size_t); + uint8_t blocks[4U][200U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)4U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)200U, blocks[i0], + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = last_len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice(uu____0, last[i0], uint8_t, void *); + blocks[i0][last_len] = 31U; + size_t uu____1 = i0; + size_t uu____2 = (size_t)136U - (size_t)1U; + blocks[uu____1][uu____2] = (uint32_t)blocks[uu____1][uu____2] | 128U; + } + core_core_arch_x86___m256i(*uu____3)[5U] = s->st; + uint8_t uu____4[4U][200U]; + memcpy(uu____4, blocks, (size_t)4U * sizeof(uint8_t[200U])); + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___load_block_full___136size_t( + uu____3, uu____4); + libcrux_sha3_generic_keccak_keccakf1600__core_core_arch_x86___m256i_4size_t( + s); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2_store_block___136size_t( + core_core_arch_x86___m256i (*s)[5U], Eurydice_slice out[4U]) { + for (size_t i = (size_t)0U; i < (size_t)136U / (size_t)32U; i++) { + size_t i0 = i; + core_core_arch_x86___m256i v0l = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)32, + s[(size_t)4U * i0 / (size_t)5U][(size_t)4U * i0 % (size_t)5U], + s[((size_t)4U * i0 + (size_t)2U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)2U) % (size_t)5U], + core_core_arch_x86___m256i); + core_core_arch_x86___m256i v1h = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)32, + s[((size_t)4U * i0 + (size_t)1U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)1U) % (size_t)5U], + s[((size_t)4U * i0 + (size_t)3U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)3U) % (size_t)5U], + core_core_arch_x86___m256i); + core_core_arch_x86___m256i v2l = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)49, + s[(size_t)4U * i0 / (size_t)5U][(size_t)4U * i0 % (size_t)5U], + s[((size_t)4U * i0 + (size_t)2U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)2U) % (size_t)5U], + core_core_arch_x86___m256i); + core_core_arch_x86___m256i v3h = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)49, + s[((size_t)4U * i0 + (size_t)1U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)1U) % (size_t)5U], + s[((size_t)4U * i0 + (size_t)3U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)3U) % (size_t)5U], + core_core_arch_x86___m256i); + core_core_arch_x86___m256i v0 = + libcrux_intrinsics_avx2_mm256_unpacklo_epi64(v0l, v1h); + core_core_arch_x86___m256i v1 = + libcrux_intrinsics_avx2_mm256_unpackhi_epi64(v0l, v1h); + core_core_arch_x86___m256i v2 = + libcrux_intrinsics_avx2_mm256_unpacklo_epi64(v2l, v3h); + core_core_arch_x86___m256i v3 = + libcrux_intrinsics_avx2_mm256_unpackhi_epi64(v2l, v3h); + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_slice_subslice(out[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + v0); + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_slice_subslice(out[1U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + v1); + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_slice_subslice(out[2U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + v2); + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_slice_subslice(out[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + v3); + } + size_t rem = (size_t)136U % (size_t)32U; + size_t start = (size_t)32U * ((size_t)136U / (size_t)32U); + uint8_t u8s[32U] = {0U}; + size_t i0 = (size_t)4U * ((size_t)136U / (size_t)32U) / (size_t)5U; + size_t j0 = (size_t)4U * ((size_t)136U / (size_t)32U) % (size_t)5U; + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_array_to_slice((size_t)32U, u8s, uint8_t, Eurydice_slice), + s[i0][j0]); + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____1 = Eurydice_slice_subslice( + out[1U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____1, + Eurydice_array_to_subslice((size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U, .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____2 = Eurydice_slice_subslice( + out[2U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____2, + Eurydice_array_to_subslice((size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)16U, .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____3 = Eurydice_slice_subslice( + out[3U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____3, + Eurydice_array_to_subslice((size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)24U, .end = (size_t)32U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + if (rem == (size_t)16U) { + uint8_t u8s0[32U] = {0U}; + size_t i = + ((size_t)4U * ((size_t)136U / (size_t)32U) + (size_t)1U) / (size_t)5U; + size_t j = + ((size_t)4U * ((size_t)136U / (size_t)32U) + (size_t)1U) % (size_t)5U; + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_array_to_slice((size_t)32U, u8s0, uint8_t, Eurydice_slice), + s[i][j]); + Eurydice_slice uu____4 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){.start = start + (size_t)8U, + .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____4, + Eurydice_array_to_subslice((size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____5 = Eurydice_slice_subslice( + out[1U], + (CLITERAL(core_ops_range_Range__size_t){.start = start + (size_t)8U, + .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____5, + Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)8U, + .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____6 = Eurydice_slice_subslice( + out[2U], + (CLITERAL(core_ops_range_Range__size_t){.start = start + (size_t)8U, + .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____6, + Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)16U, + .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____7 = Eurydice_slice_subslice( + out[3U], + (CLITERAL(core_ops_range_Range__size_t){.start = start + (size_t)8U, + .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____7, + Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)24U, + .end = (size_t)32U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2_store_block_full___136size_t( + core_core_arch_x86___m256i (*s)[5U], uint8_t ret[4U][200U]) { + uint8_t out0[200U] = {0U}; + uint8_t out1[200U] = {0U}; + uint8_t out2[200U] = {0U}; + uint8_t out3[200U] = {0U}; + Eurydice_slice buf[4U] = { + Eurydice_array_to_slice((size_t)200U, out0, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, out1, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, out2, uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, out3, uint8_t, Eurydice_slice)}; + libcrux_sha3_simd_avx2_store_block___136size_t(s, buf); + uint8_t uu____0[200U]; + memcpy(uu____0, out0, (size_t)200U * sizeof(uint8_t)); + uint8_t uu____1[200U]; + memcpy(uu____1, out1, (size_t)200U * sizeof(uint8_t)); + uint8_t uu____2[200U]; + memcpy(uu____2, out2, (size_t)200U * sizeof(uint8_t)); + uint8_t uu____3[200U]; + memcpy(uu____3, out3, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[0U], uu____0, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[1U], uu____1, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[2U], uu____2, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[3U], uu____3, (size_t)200U * sizeof(uint8_t)); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block_full___136size_t( + core_core_arch_x86___m256i (*a)[5U], uint8_t ret[4U][200U]) { + uint8_t ret0[4U][200U]; + libcrux_sha3_simd_avx2_store_block_full___136size_t(a, ret0); + memcpy(ret, ret0, (size_t)4U * sizeof(uint8_t[200U])); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_squeeze_first_and_last__core_core_arch_x86___m256i_4size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice out[4U]) { + uint8_t b[4U][200U]; + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block_full___136size_t( + s->st, b); + for (size_t i = (size_t)0U; i < (size_t)4U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block___136size_t( + core_core_arch_x86___m256i (*a)[5U], Eurydice_slice b[4U]) { + libcrux_sha3_simd_avx2_store_block___136size_t(a, b); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_squeeze_first_block__core_core_arch_x86___m256i_4size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice out[4U]) { + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block___136size_t( + s->st, out); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_squeeze_next_block__core_core_arch_x86___m256i_4size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice out[4U]) { + libcrux_sha3_generic_keccak_keccakf1600__core_core_arch_x86___m256i_4size_t( + s); + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block___136size_t( + s->st, out); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_squeeze_last__core_core_arch_x86___m256i_4size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + s, + Eurydice_slice out[4U]) { + libcrux_sha3_generic_keccak_keccakf1600__core_core_arch_x86___m256i_4size_t( + &s); + uint8_t b[4U][200U]; + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block_full___136size_t( + s.st, b); + for (size_t i = (size_t)0U; i < (size_t)4U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_keccak__core_core_arch_x86___m256i_4size_t_136size_t_31uint8_t( + Eurydice_slice data[4U], Eurydice_slice out[4U]) { + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t s = + libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__core_core_arch_x86___m256i_4size_t(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(data[0U], uint8_t, size_t) / (size_t)136U; + i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *uu____0 = &s; + Eurydice_slice uu____1[4U]; + memcpy(uu____1, data, (size_t)4U * sizeof(Eurydice_slice)); + Eurydice_slice ret[4U]; + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___slice_n( + uu____1, i0 * (size_t)136U, (size_t)136U, ret); + libcrux_sha3_generic_keccak_absorb_block__core_core_arch_x86___m256i_4size_t_136size_t( + uu____0, ret); + } + size_t rem = + core_slice___Slice_T___len(data[0U], uint8_t, size_t) % (size_t)136U; + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *uu____2 = &s; + Eurydice_slice uu____3[4U]; + memcpy(uu____3, data, (size_t)4U * sizeof(Eurydice_slice)); + Eurydice_slice ret[4U]; + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___slice_n( + uu____3, core_slice___Slice_T___len(data[0U], uint8_t, size_t) - rem, rem, + ret); + libcrux_sha3_generic_keccak_absorb_final__core_core_arch_x86___m256i_4size_t_136size_t_31uint8_t( + uu____2, ret); + size_t outlen = core_slice___Slice_T___len(out[0U], uint8_t, size_t); + size_t blocks = outlen / (size_t)136U; + size_t last = outlen - outlen % (size_t)136U; + if (blocks == (size_t)0U) { + libcrux_sha3_generic_keccak_squeeze_first_and_last__core_core_arch_x86___m256i_4size_t_136size_t( + &s, out); + } else { + K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t_ uu____4 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___split_at_mut_n( + out, (size_t)136U); + Eurydice_slice o0[4U]; + memcpy(o0, uu____4.fst, (size_t)4U * sizeof(Eurydice_slice)); + Eurydice_slice o1[4U]; + memcpy(o1, uu____4.snd, (size_t)4U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__core_core_arch_x86___m256i_4size_t_136size_t( + &s, o0); + core_ops_range_Range__size_t iter = + core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter( + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)1U, + .end = blocks}), + core_ops_range_Range__size_t, core_ops_range_Range__size_t); + while (true) { + if (core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next( + &iter, size_t, core_option_Option__size_t) + .tag == core_option_None) { + break; + } else { + K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t_ uu____5 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___split_at_mut_n( + o1, (size_t)136U); + Eurydice_slice o[4U]; + memcpy(o, uu____5.fst, (size_t)4U * sizeof(Eurydice_slice)); + Eurydice_slice orest[4U]; + memcpy(orest, uu____5.snd, (size_t)4U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__core_core_arch_x86___m256i_4size_t_136size_t( + &s, o); + memcpy(o1, orest, (size_t)4U * sizeof(Eurydice_slice)); + } + } + if (last < outlen) { + libcrux_sha3_generic_keccak_squeeze_last__core_core_arch_x86___m256i_4size_t_136size_t( + s, o1); + } + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_avx2_x4_shake256(Eurydice_slice input0, Eurydice_slice input1, + Eurydice_slice input2, Eurydice_slice input3, + Eurydice_slice out0, Eurydice_slice out1, + Eurydice_slice out2, Eurydice_slice out3) { + Eurydice_slice buf0[4U] = {input0, input1, input2, input3}; + Eurydice_slice buf[4U] = {out0, out1, out2, out3}; + libcrux_sha3_generic_keccak_keccak__core_core_arch_x86___m256i_4size_t_136size_t_31uint8_t( + buf0, buf); +} + +typedef libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + libcrux_sha3_avx2_x4_incremental_KeccakState; + +__attribute__((target( + "avx2"))) static inline libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t +libcrux_sha3_avx2_x4_incremental_shake128_init(void) { + return libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__core_core_arch_x86___m256i_4size_t(); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2_load_block___168size_t( + core_core_arch_x86___m256i (*s)[5U], Eurydice_slice blocks[4U]) { + for (size_t i = (size_t)0U; i < (size_t)168U / (size_t)32U; i++) { + size_t i0 = i; + core_core_arch_x86___m256i v00 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8(Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i v10 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8(Eurydice_slice_subslice( + blocks[1U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i v20 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8(Eurydice_slice_subslice( + blocks[2U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i v30 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8(Eurydice_slice_subslice( + blocks[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice)); + core_core_arch_x86___m256i v0l = + libcrux_intrinsics_avx2_mm256_unpacklo_epi64(v00, v10); + core_core_arch_x86___m256i v1h = + libcrux_intrinsics_avx2_mm256_unpackhi_epi64(v00, v10); + core_core_arch_x86___m256i v2l = + libcrux_intrinsics_avx2_mm256_unpacklo_epi64(v20, v30); + core_core_arch_x86___m256i v3h = + libcrux_intrinsics_avx2_mm256_unpackhi_epi64(v20, v30); + core_core_arch_x86___m256i v0 = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)32, v0l, v2l, core_core_arch_x86___m256i); + core_core_arch_x86___m256i v1 = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)32, v1h, v3h, core_core_arch_x86___m256i); + core_core_arch_x86___m256i v2 = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)49, v0l, v2l, core_core_arch_x86___m256i); + core_core_arch_x86___m256i v3 = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)49, v1h, v3h, core_core_arch_x86___m256i); + core_core_arch_x86___m256i uu____0 = + libcrux_intrinsics_avx2_mm256_xor_si256( + s[(size_t)4U * i0 / (size_t)5U][(size_t)4U * i0 % (size_t)5U], v0); + s[(size_t)4U * i0 / (size_t)5U][(size_t)4U * i0 % (size_t)5U] = uu____0; + core_core_arch_x86___m256i uu____1 = + libcrux_intrinsics_avx2_mm256_xor_si256( + s[((size_t)4U * i0 + (size_t)1U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)1U) % (size_t)5U], + v1); + s[((size_t)4U * i0 + (size_t)1U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)1U) % (size_t)5U] = uu____1; + core_core_arch_x86___m256i uu____2 = + libcrux_intrinsics_avx2_mm256_xor_si256( + s[((size_t)4U * i0 + (size_t)2U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)2U) % (size_t)5U], + v2); + s[((size_t)4U * i0 + (size_t)2U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)2U) % (size_t)5U] = uu____2; + core_core_arch_x86___m256i uu____3 = + libcrux_intrinsics_avx2_mm256_xor_si256( + s[((size_t)4U * i0 + (size_t)3U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)3U) % (size_t)5U], + v3); + s[((size_t)4U * i0 + (size_t)3U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)3U) % (size_t)5U] = uu____3; + } + size_t rem = (size_t)168U % (size_t)32U; + size_t start = (size_t)32U * ((size_t)168U / (size_t)32U); + uint8_t u8s[32U] = {0U}; + Eurydice_slice uu____4 = Eurydice_array_to_subslice( + (size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____4, + Eurydice_slice_subslice(blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____5 = Eurydice_array_to_subslice( + (size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)8U, + .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____5, + Eurydice_slice_subslice(blocks[1U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____6 = Eurydice_array_to_subslice( + (size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)16U, + .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____6, + Eurydice_slice_subslice(blocks[2U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____7 = Eurydice_array_to_subslice( + (size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)24U, + .end = (size_t)32U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____7, + Eurydice_slice_subslice(blocks[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + core_core_arch_x86___m256i u = libcrux_intrinsics_avx2_mm256_loadu_si256_u8( + core_array___Array_T__N__23__as_slice((size_t)32U, u8s, uint8_t, + Eurydice_slice)); + size_t i0 = (size_t)4U * ((size_t)168U / (size_t)32U) / (size_t)5U; + size_t j0 = (size_t)4U * ((size_t)168U / (size_t)32U) % (size_t)5U; + core_core_arch_x86___m256i uu____8 = + libcrux_intrinsics_avx2_mm256_xor_si256(s[i0][j0], u); + s[i0][j0] = uu____8; + if (rem == (size_t)16U) { + uint8_t u8s0[32U] = {0U}; + Eurydice_slice uu____9 = Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____9, + Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start + (size_t)8U, .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____10 = Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)8U, + .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____10, + Eurydice_slice_subslice( + blocks[1U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start + (size_t)8U, .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____11 = Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)16U, + .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____11, + Eurydice_slice_subslice( + blocks[2U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start + (size_t)8U, .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____12 = Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)24U, + .end = (size_t)32U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____12, + Eurydice_slice_subslice( + blocks[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start + (size_t)8U, .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + core_core_arch_x86___m256i u0 = + libcrux_intrinsics_avx2_mm256_loadu_si256_u8( + core_array___Array_T__N__23__as_slice((size_t)32U, u8s0, uint8_t, + Eurydice_slice)); + size_t i = + ((size_t)4U * ((size_t)168U / (size_t)32U) + (size_t)1U) / (size_t)5U; + size_t j = + ((size_t)4U * ((size_t)168U / (size_t)32U) + (size_t)1U) % (size_t)5U; + core_core_arch_x86___m256i uu____13 = + libcrux_intrinsics_avx2_mm256_xor_si256(s[i][j], u0); + s[i][j] = uu____13; + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2_load_block_full___168size_t( + core_core_arch_x86___m256i (*s)[5U], uint8_t blocks[4U][200U]) { + Eurydice_slice buf[4U] = {Eurydice_array_to_slice((size_t)200U, blocks[0U], + uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, blocks[1U], + uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, blocks[2U], + uint8_t, Eurydice_slice), + Eurydice_array_to_slice((size_t)200U, blocks[3U], + uint8_t, Eurydice_slice)}; + libcrux_sha3_simd_avx2_load_block___168size_t(s, buf); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___load_block_full___168size_t( + core_core_arch_x86___m256i (*a)[5U], uint8_t b[4U][200U]) { + core_core_arch_x86___m256i(*uu____0)[5U] = a; + uint8_t uu____1[4U][200U]; + memcpy(uu____1, b, (size_t)4U * sizeof(uint8_t[200U])); + libcrux_sha3_simd_avx2_load_block_full___168size_t(uu____0, uu____1); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_absorb_final__core_core_arch_x86___m256i_4size_t_168size_t_31uint8_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice last[4U]) { + size_t last_len = core_slice___Slice_T___len(last[0U], uint8_t, size_t); + uint8_t blocks[4U][200U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)4U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)200U, blocks[i0], + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = last_len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice(uu____0, last[i0], uint8_t, void *); + blocks[i0][last_len] = 31U; + size_t uu____1 = i0; + size_t uu____2 = (size_t)168U - (size_t)1U; + blocks[uu____1][uu____2] = (uint32_t)blocks[uu____1][uu____2] | 128U; + } + core_core_arch_x86___m256i(*uu____3)[5U] = s->st; + uint8_t uu____4[4U][200U]; + memcpy(uu____4, blocks, (size_t)4U * sizeof(uint8_t[200U])); + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___load_block_full___168size_t( + uu____3, uu____4); + libcrux_sha3_generic_keccak_keccakf1600__core_core_arch_x86___m256i_4size_t( + s); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_avx2_x4_incremental_shake128_absorb_final( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice data0, Eurydice_slice data1, Eurydice_slice data2, + Eurydice_slice data3) { + Eurydice_slice buf[4U] = {data0, data1, data2, data3}; + libcrux_sha3_generic_keccak_absorb_final__core_core_arch_x86___m256i_4size_t_168size_t_31uint8_t( + s, buf); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2_store_block___168size_t( + core_core_arch_x86___m256i (*s)[5U], Eurydice_slice out[4U]) { + for (size_t i = (size_t)0U; i < (size_t)168U / (size_t)32U; i++) { + size_t i0 = i; + core_core_arch_x86___m256i v0l = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)32, + s[(size_t)4U * i0 / (size_t)5U][(size_t)4U * i0 % (size_t)5U], + s[((size_t)4U * i0 + (size_t)2U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)2U) % (size_t)5U], + core_core_arch_x86___m256i); + core_core_arch_x86___m256i v1h = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)32, + s[((size_t)4U * i0 + (size_t)1U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)1U) % (size_t)5U], + s[((size_t)4U * i0 + (size_t)3U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)3U) % (size_t)5U], + core_core_arch_x86___m256i); + core_core_arch_x86___m256i v2l = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)49, + s[(size_t)4U * i0 / (size_t)5U][(size_t)4U * i0 % (size_t)5U], + s[((size_t)4U * i0 + (size_t)2U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)2U) % (size_t)5U], + core_core_arch_x86___m256i); + core_core_arch_x86___m256i v3h = + libcrux_intrinsics_avx2_mm256_permute2x128_si256( + (int32_t)49, + s[((size_t)4U * i0 + (size_t)1U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)1U) % (size_t)5U], + s[((size_t)4U * i0 + (size_t)3U) / (size_t)5U] + [((size_t)4U * i0 + (size_t)3U) % (size_t)5U], + core_core_arch_x86___m256i); + core_core_arch_x86___m256i v0 = + libcrux_intrinsics_avx2_mm256_unpacklo_epi64(v0l, v1h); + core_core_arch_x86___m256i v1 = + libcrux_intrinsics_avx2_mm256_unpackhi_epi64(v0l, v1h); + core_core_arch_x86___m256i v2 = + libcrux_intrinsics_avx2_mm256_unpacklo_epi64(v2l, v3h); + core_core_arch_x86___m256i v3 = + libcrux_intrinsics_avx2_mm256_unpackhi_epi64(v2l, v3h); + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_slice_subslice(out[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + v0); + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_slice_subslice(out[1U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + v1); + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_slice_subslice(out[2U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + v2); + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_slice_subslice(out[3U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)32U * i0, + .end = (size_t)32U * (i0 + (size_t)1U)}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + v3); + } + size_t rem = (size_t)168U % (size_t)32U; + size_t start = (size_t)32U * ((size_t)168U / (size_t)32U); + uint8_t u8s[32U] = {0U}; + size_t i0 = (size_t)4U * ((size_t)168U / (size_t)32U) / (size_t)5U; + size_t j0 = (size_t)4U * ((size_t)168U / (size_t)32U) % (size_t)5U; + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_array_to_slice((size_t)32U, u8s, uint8_t, Eurydice_slice), + s[i0][j0]); + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____1 = Eurydice_slice_subslice( + out[1U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____1, + Eurydice_array_to_subslice((size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U, .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____2 = Eurydice_slice_subslice( + out[2U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____2, + Eurydice_array_to_subslice((size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)16U, .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____3 = Eurydice_slice_subslice( + out[3U], + (CLITERAL(core_ops_range_Range__size_t){.start = start, + .end = start + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____3, + Eurydice_array_to_subslice((size_t)32U, u8s, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)24U, .end = (size_t)32U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + if (rem == (size_t)16U) { + uint8_t u8s0[32U] = {0U}; + size_t i = + ((size_t)4U * ((size_t)168U / (size_t)32U) + (size_t)1U) / (size_t)5U; + size_t j = + ((size_t)4U * ((size_t)168U / (size_t)32U) + (size_t)1U) % (size_t)5U; + libcrux_intrinsics_avx2_mm256_storeu_si256_u8( + Eurydice_array_to_slice((size_t)32U, u8s0, uint8_t, Eurydice_slice), + s[i][j]); + Eurydice_slice uu____4 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){.start = start + (size_t)8U, + .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____4, + Eurydice_array_to_subslice((size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)0U, .end = (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____5 = Eurydice_slice_subslice( + out[1U], + (CLITERAL(core_ops_range_Range__size_t){.start = start + (size_t)8U, + .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____5, + Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)8U, + .end = (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____6 = Eurydice_slice_subslice( + out[2U], + (CLITERAL(core_ops_range_Range__size_t){.start = start + (size_t)8U, + .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____6, + Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)16U, + .end = (size_t)24U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + Eurydice_slice uu____7 = Eurydice_slice_subslice( + out[3U], + (CLITERAL(core_ops_range_Range__size_t){.start = start + (size_t)8U, + .end = start + (size_t)16U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice( + uu____7, + Eurydice_array_to_subslice( + (size_t)32U, u8s0, + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)24U, + .end = (size_t)32U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + uint8_t, void *); + } +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block___168size_t( + core_core_arch_x86___m256i (*a)[5U], Eurydice_slice b[4U]) { + libcrux_sha3_simd_avx2_store_block___168size_t(a, b); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_squeeze_next_block__core_core_arch_x86___m256i_4size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice out[4U]) { + libcrux_sha3_generic_keccak_keccakf1600__core_core_arch_x86___m256i_4size_t( + s); + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block___168size_t( + s->st, out); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_avx2_x4_incremental_shake128_squeeze_next_block( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice out0, Eurydice_slice out1, Eurydice_slice out2, + Eurydice_slice out3) { + Eurydice_slice buf[4U] = {out0, out1, out2, out3}; + libcrux_sha3_generic_keccak_squeeze_next_block__core_core_arch_x86___m256i_4size_t_168size_t( + s, buf); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_squeeze_first_block__core_core_arch_x86___m256i_4size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice out[4U]) { + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___store_block___168size_t( + s->st, out); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_generic_keccak_squeeze_first_three_blocks__core_core_arch_x86___m256i_4size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice out[4U]) { + K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t_ uu____0 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___split_at_mut_n( + out, (size_t)168U); + Eurydice_slice o0[4U]; + memcpy(o0, uu____0.fst, (size_t)4U * sizeof(Eurydice_slice)); + Eurydice_slice o10[4U]; + memcpy(o10, uu____0.snd, (size_t)4U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__core_core_arch_x86___m256i_4size_t_168size_t( + s, o0); + K___Eurydice_slice_uint8_t_4size_t__Eurydice_slice_uint8_t_4size_t_ uu____1 = + libcrux_sha3_simd_avx2___libcrux_sha3__traits__internal__KeccakItem_4__usize__for_core__core_arch__x86____m256i___split_at_mut_n( + o10, (size_t)168U); + Eurydice_slice o1[4U]; + memcpy(o1, uu____1.fst, (size_t)4U * sizeof(Eurydice_slice)); + Eurydice_slice o2[4U]; + memcpy(o2, uu____1.snd, (size_t)4U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__core_core_arch_x86___m256i_4size_t_168size_t( + s, o1); + libcrux_sha3_generic_keccak_squeeze_next_block__core_core_arch_x86___m256i_4size_t_168size_t( + s, o2); +} + +__attribute__((target("avx2"))) static inline void +libcrux_sha3_avx2_x4_incremental_shake128_squeeze_first_three_blocks( + libcrux_sha3_generic_keccak_KeccakState__core_core_arch_x86___m256i__4size_t + *s, + Eurydice_slice out0, Eurydice_slice out1, Eurydice_slice out2, + Eurydice_slice out3) { + Eurydice_slice buf[4U] = {out0, out1, out2, out3}; + libcrux_sha3_generic_keccak_squeeze_first_three_blocks__core_core_arch_x86___m256i_4size_t_168size_t( + s, buf); +} + +#if defined(__cplusplus) +} +#endif + +#define __libcrux_sha3_avx2_H_DEFINED +#endif diff --git a/third_party/libcrux/libcrux_sha3_portable.h b/third_party/libcrux/libcrux_sha3_portable.h new file mode 100644 index 0000000000..cf5acbaab7 --- /dev/null +++ b/third_party/libcrux/libcrux_sha3_portable.h @@ -0,0 +1,2781 @@ +/* + This file was generated by KaRaMeL + KaRaMeL invocation: /home/franziskus/eurydice//eurydice --config ../cg.yaml + -funroll-loops 0 ../../libcrux_ml_kem.llbc ../../libcrux_sha3.llbc F* version: + KaRaMeL version: 42a43169 + */ + +#ifndef __libcrux_sha3_portable_H +#define __libcrux_sha3_portable_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include "eurydice_glue.h" +#include "libcrux_core.h" + +static const uint64_t libcrux_sha3_generic_keccak_ROUNDCONSTANTS[24U] = { + 1ULL, + 32898ULL, + 9223372036854808714ULL, + 9223372039002292224ULL, + 32907ULL, + 2147483649ULL, + 9223372039002292353ULL, + 9223372036854808585ULL, + 138ULL, + 136ULL, + 2147516425ULL, + 2147483658ULL, + 2147516555ULL, + 9223372036854775947ULL, + 9223372036854808713ULL, + 9223372036854808579ULL, + 9223372036854808578ULL, + 9223372036854775936ULL, + 32778ULL, + 9223372039002259466ULL, + 9223372039002292353ULL, + 9223372036854808704ULL, + 2147483649ULL, + 9223372039002292232ULL}; + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero( + void) { + return 0ULL; +} + +static inline uint64_t libcrux_sha3_portable_keccak__veor5q_u64( + uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e) { + uint64_t ab = a ^ b; + uint64_t cd = c ^ d; + uint64_t abcd = ab ^ cd; + return abcd ^ e; +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor5( + uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e) { + return libcrux_sha3_portable_keccak__veor5q_u64(a, b, c, d, e); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___1int32_t_63int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)1 | x >> (uint32_t)(int32_t)63; +} + +static inline uint64_t libcrux_sha3_portable_keccak__vrax1q_u64(uint64_t a, + uint64_t b) { + uint64_t uu____0 = a; + return uu____0 ^ + libcrux_sha3_portable_keccak_rotate_left___1int32_t_63int32_t(b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___rotate_left1_and_xor( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vrax1q_u64(a, b); +} + +static inline uint64_t libcrux_sha3_portable_keccak__vbcaxq_u64(uint64_t a, + uint64_t b, + uint64_t c) { + return a ^ (b & ~c); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___and_not_xor( + uint64_t a, uint64_t b, uint64_t c) { + return libcrux_sha3_portable_keccak__vbcaxq_u64(a, b, c); +} + +static inline uint64_t libcrux_sha3_portable_keccak__veorq_n_u64(uint64_t a, + uint64_t c) { + return a ^ c; +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_constant( + uint64_t a, uint64_t c) { + return libcrux_sha3_portable_keccak__veorq_n_u64(a, c); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor( + uint64_t a, uint64_t b) { + return a ^ b; +} + +static inline void libcrux_sha3_portable_keccak_slice_1( + Eurydice_slice a[1U], size_t start, size_t len, Eurydice_slice ret[1U]) { + ret[0U] = Eurydice_slice_subslice(a[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = start, .end = start + len}), + uint8_t, core_ops_range_Range__size_t, + Eurydice_slice); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + Eurydice_slice a[1U], size_t start, size_t len, Eurydice_slice ret[1U]) { + Eurydice_slice uu____0[1U]; + memcpy(uu____0, a, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret0[1U]; + libcrux_sha3_portable_keccak_slice_1(uu____0, start, len, ret0); + memcpy(ret, ret0, (size_t)1U * sizeof(Eurydice_slice)); +} + +static inline K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ +libcrux_sha3_portable_keccak_split_at_mut_1(Eurydice_slice out[1U], + size_t mid) { + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t uu____0 = + core_slice___Slice_T___split_at_mut( + out[0U], mid, uint8_t, + K___Eurydice_slice_uint8_t_Eurydice_slice_uint8_t); + Eurydice_slice out00 = uu____0.fst; + Eurydice_slice out01 = uu____0.snd; + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ lit; + lit.fst[0U] = out00; + lit.snd[0U] = out01; + return lit; +} + +static inline K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + Eurydice_slice a[1U], size_t mid) { + return libcrux_sha3_portable_keccak_split_at_mut_1(a, mid); +} + +typedef struct libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t_s { + uint64_t st[5U][5U]; +} libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t; + +static inline libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t +libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t( + void) { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t lit; + lit.st[0U][0U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[0U][1U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[0U][2U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[0U][3U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[0U][4U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[1U][0U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[1U][1U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[1U][2U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[1U][3U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[1U][4U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[2U][0U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[2U][1U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[2U][2U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[2U][3U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[2U][4U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[3U][0U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[3U][1U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[3U][2U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[3U][3U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[3U][4U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[4U][0U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[4U][1U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[4U][2U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[4U][3U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + lit.st[4U][4U] = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___zero(); + return lit; +} + +static inline void libcrux_sha3_portable_keccak_load_block___72size_t( + uint64_t (*s)[5U], Eurydice_slice blocks[1U]) { + for (size_t i = (size_t)0U; i < (size_t)72U / (size_t)8U; i++) { + size_t i0 = i; + uint8_t ret[8U]; + core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + Eurydice_slice, uint8_t[8U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_8size_t__core_array_TryFromSliceError( + dst, ret); + uint64_t uu____0 = core_num__u64_9__from_le_bytes(ret); + size_t uu____1 = i0 / (size_t)5U; + size_t uu____2 = i0 % (size_t)5U; + s[uu____1][uu____2] = s[uu____1][uu____2] ^ uu____0; + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___72size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + uint64_t(*uu____0)[5U] = a; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, b, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak_load_block___72size_t(uu____0, uu____1); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___36int32_t_28int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)36 | x >> (uint32_t)(int32_t)28; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___36int32_t_28int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___36int32_t_28int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___36int32_t_28int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___36int32_t_28int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___3int32_t_61int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)3 | x >> (uint32_t)(int32_t)61; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___3int32_t_61int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___3int32_t_61int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___3int32_t_61int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___3int32_t_61int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___41int32_t_23int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)41 | x >> (uint32_t)(int32_t)23; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___41int32_t_23int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___41int32_t_23int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___41int32_t_23int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___41int32_t_23int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___18int32_t_46int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)18 | x >> (uint32_t)(int32_t)46; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___18int32_t_46int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___18int32_t_46int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___18int32_t_46int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___18int32_t_46int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___1int32_t_63int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___1int32_t_63int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___1int32_t_63int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___1int32_t_63int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___44int32_t_20int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)44 | x >> (uint32_t)(int32_t)20; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___44int32_t_20int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___44int32_t_20int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___44int32_t_20int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___44int32_t_20int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___10int32_t_54int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)10 | x >> (uint32_t)(int32_t)54; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___10int32_t_54int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___10int32_t_54int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___10int32_t_54int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___10int32_t_54int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___45int32_t_19int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)45 | x >> (uint32_t)(int32_t)19; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___45int32_t_19int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___45int32_t_19int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___45int32_t_19int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___45int32_t_19int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___2int32_t_62int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)2 | x >> (uint32_t)(int32_t)62; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___2int32_t_62int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___2int32_t_62int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___2int32_t_62int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___2int32_t_62int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___62int32_t_2int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)62 | x >> (uint32_t)(int32_t)2; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___62int32_t_2int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___62int32_t_2int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___62int32_t_2int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___62int32_t_2int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___6int32_t_58int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)6 | x >> (uint32_t)(int32_t)58; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___6int32_t_58int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___6int32_t_58int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___6int32_t_58int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___6int32_t_58int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___43int32_t_21int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)43 | x >> (uint32_t)(int32_t)21; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___43int32_t_21int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___43int32_t_21int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___43int32_t_21int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___43int32_t_21int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___15int32_t_49int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)15 | x >> (uint32_t)(int32_t)49; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___15int32_t_49int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___15int32_t_49int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___15int32_t_49int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___15int32_t_49int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___61int32_t_3int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)61 | x >> (uint32_t)(int32_t)3; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___61int32_t_3int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___61int32_t_3int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___61int32_t_3int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___61int32_t_3int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___28int32_t_36int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)28 | x >> (uint32_t)(int32_t)36; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___28int32_t_36int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___28int32_t_36int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___28int32_t_36int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___28int32_t_36int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___55int32_t_9int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)55 | x >> (uint32_t)(int32_t)9; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___55int32_t_9int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___55int32_t_9int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___55int32_t_9int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___55int32_t_9int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___25int32_t_39int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)25 | x >> (uint32_t)(int32_t)39; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___25int32_t_39int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___25int32_t_39int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___25int32_t_39int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___25int32_t_39int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___21int32_t_43int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)21 | x >> (uint32_t)(int32_t)43; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___21int32_t_43int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___21int32_t_43int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___21int32_t_43int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___21int32_t_43int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___56int32_t_8int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)56 | x >> (uint32_t)(int32_t)8; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___56int32_t_8int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___56int32_t_8int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___56int32_t_8int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___56int32_t_8int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___27int32_t_37int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)27 | x >> (uint32_t)(int32_t)37; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___27int32_t_37int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___27int32_t_37int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___27int32_t_37int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___27int32_t_37int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___20int32_t_44int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)20 | x >> (uint32_t)(int32_t)44; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___20int32_t_44int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___20int32_t_44int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___20int32_t_44int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___20int32_t_44int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___39int32_t_25int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)39 | x >> (uint32_t)(int32_t)25; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___39int32_t_25int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___39int32_t_25int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___39int32_t_25int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___39int32_t_25int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___8int32_t_56int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)8 | x >> (uint32_t)(int32_t)56; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___8int32_t_56int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___8int32_t_56int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___8int32_t_56int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___8int32_t_56int32_t(a, b); +} + +static inline uint64_t +libcrux_sha3_portable_keccak_rotate_left___14int32_t_50int32_t(uint64_t x) { + return x << (uint32_t)(int32_t)14 | x >> (uint32_t)(int32_t)50; +} + +static inline uint64_t +libcrux_sha3_portable_keccak__vxarq_u64___14int32_t_50int32_t(uint64_t a, + uint64_t b) { + uint64_t ab = a ^ b; + return libcrux_sha3_portable_keccak_rotate_left___14int32_t_50int32_t(ab); +} + +static inline uint64_t +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___14int32_t_50int32_t( + uint64_t a, uint64_t b) { + return libcrux_sha3_portable_keccak__vxarq_u64___14int32_t_50int32_t(a, b); +} + +static inline void libcrux_sha3_generic_keccak_theta_rho__uint64_t_1size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s) { + uint64_t uu____0 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor5( + s->st[0U][0U], s->st[1U][0U], s->st[2U][0U], s->st[3U][0U], + s->st[4U][0U]); + uint64_t uu____1 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor5( + s->st[0U][1U], s->st[1U][1U], s->st[2U][1U], s->st[3U][1U], + s->st[4U][1U]); + uint64_t uu____2 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor5( + s->st[0U][2U], s->st[1U][2U], s->st[2U][2U], s->st[3U][2U], + s->st[4U][2U]); + uint64_t uu____3 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor5( + s->st[0U][3U], s->st[1U][3U], s->st[2U][3U], s->st[3U][3U], + s->st[4U][3U]); + uint64_t c[5U] = { + uu____0, uu____1, uu____2, uu____3, + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor5( + s->st[0U][4U], s->st[1U][4U], s->st[2U][4U], s->st[3U][4U], + s->st[4U][4U])}; + uint64_t uu____4 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___rotate_left1_and_xor( + c[((size_t)0U + (size_t)4U) % (size_t)5U], + c[((size_t)0U + (size_t)1U) % (size_t)5U]); + uint64_t uu____5 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___rotate_left1_and_xor( + c[((size_t)1U + (size_t)4U) % (size_t)5U], + c[((size_t)1U + (size_t)1U) % (size_t)5U]); + uint64_t uu____6 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___rotate_left1_and_xor( + c[((size_t)2U + (size_t)4U) % (size_t)5U], + c[((size_t)2U + (size_t)1U) % (size_t)5U]); + uint64_t uu____7 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___rotate_left1_and_xor( + c[((size_t)3U + (size_t)4U) % (size_t)5U], + c[((size_t)3U + (size_t)1U) % (size_t)5U]); + uint64_t t[5U] = { + uu____4, uu____5, uu____6, uu____7, + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___rotate_left1_and_xor( + c[((size_t)4U + (size_t)4U) % (size_t)5U], + c[((size_t)4U + (size_t)1U) % (size_t)5U])}; + uint64_t uu____8 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor( + s->st[0U][0U], t[0U]); + s->st[0U][0U] = uu____8; + uint64_t uu____9 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___36int32_t_28int32_t( + s->st[1U][0U], t[0U]); + s->st[1U][0U] = uu____9; + uint64_t uu____10 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___3int32_t_61int32_t( + s->st[2U][0U], t[0U]); + s->st[2U][0U] = uu____10; + uint64_t uu____11 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___41int32_t_23int32_t( + s->st[3U][0U], t[0U]); + s->st[3U][0U] = uu____11; + uint64_t uu____12 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___18int32_t_46int32_t( + s->st[4U][0U], t[0U]); + s->st[4U][0U] = uu____12; + uint64_t uu____13 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___1int32_t_63int32_t( + s->st[0U][1U], t[1U]); + s->st[0U][1U] = uu____13; + uint64_t uu____14 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___44int32_t_20int32_t( + s->st[1U][1U], t[1U]); + s->st[1U][1U] = uu____14; + uint64_t uu____15 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___10int32_t_54int32_t( + s->st[2U][1U], t[1U]); + s->st[2U][1U] = uu____15; + uint64_t uu____16 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___45int32_t_19int32_t( + s->st[3U][1U], t[1U]); + s->st[3U][1U] = uu____16; + uint64_t uu____17 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___2int32_t_62int32_t( + s->st[4U][1U], t[1U]); + s->st[4U][1U] = uu____17; + uint64_t uu____18 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___62int32_t_2int32_t( + s->st[0U][2U], t[2U]); + s->st[0U][2U] = uu____18; + uint64_t uu____19 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___6int32_t_58int32_t( + s->st[1U][2U], t[2U]); + s->st[1U][2U] = uu____19; + uint64_t uu____20 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___43int32_t_21int32_t( + s->st[2U][2U], t[2U]); + s->st[2U][2U] = uu____20; + uint64_t uu____21 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___15int32_t_49int32_t( + s->st[3U][2U], t[2U]); + s->st[3U][2U] = uu____21; + uint64_t uu____22 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___61int32_t_3int32_t( + s->st[4U][2U], t[2U]); + s->st[4U][2U] = uu____22; + uint64_t uu____23 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___28int32_t_36int32_t( + s->st[0U][3U], t[3U]); + s->st[0U][3U] = uu____23; + uint64_t uu____24 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___55int32_t_9int32_t( + s->st[1U][3U], t[3U]); + s->st[1U][3U] = uu____24; + uint64_t uu____25 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___25int32_t_39int32_t( + s->st[2U][3U], t[3U]); + s->st[2U][3U] = uu____25; + uint64_t uu____26 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___21int32_t_43int32_t( + s->st[3U][3U], t[3U]); + s->st[3U][3U] = uu____26; + uint64_t uu____27 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___56int32_t_8int32_t( + s->st[4U][3U], t[3U]); + s->st[4U][3U] = uu____27; + uint64_t uu____28 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___27int32_t_37int32_t( + s->st[0U][4U], t[4U]); + s->st[0U][4U] = uu____28; + uint64_t uu____29 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___20int32_t_44int32_t( + s->st[1U][4U], t[4U]); + s->st[1U][4U] = uu____29; + uint64_t uu____30 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___39int32_t_25int32_t( + s->st[2U][4U], t[4U]); + s->st[2U][4U] = uu____30; + uint64_t uu____31 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___8int32_t_56int32_t( + s->st[3U][4U], t[4U]); + s->st[3U][4U] = uu____31; + uint64_t uu____32 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_and_rotate___14int32_t_50int32_t( + s->st[4U][4U], t[4U]); + s->st[4U][4U] = uu____32; +} + +static inline void libcrux_sha3_generic_keccak_pi__uint64_t_1size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s) { + uint64_t old[5U][5U]; + memcpy(old, s->st, (size_t)5U * sizeof(uint64_t[5U])); + s->st[0U][1U] = old[1U][1U]; + s->st[0U][2U] = old[2U][2U]; + s->st[0U][3U] = old[3U][3U]; + s->st[0U][4U] = old[4U][4U]; + s->st[1U][0U] = old[0U][3U]; + s->st[1U][1U] = old[1U][4U]; + s->st[1U][2U] = old[2U][0U]; + s->st[1U][3U] = old[3U][1U]; + s->st[1U][4U] = old[4U][2U]; + s->st[2U][0U] = old[0U][1U]; + s->st[2U][1U] = old[1U][2U]; + s->st[2U][2U] = old[2U][3U]; + s->st[2U][3U] = old[3U][4U]; + s->st[2U][4U] = old[4U][0U]; + s->st[3U][0U] = old[0U][4U]; + s->st[3U][1U] = old[1U][0U]; + s->st[3U][2U] = old[2U][1U]; + s->st[3U][3U] = old[3U][2U]; + s->st[3U][4U] = old[4U][3U]; + s->st[4U][0U] = old[0U][2U]; + s->st[4U][1U] = old[1U][3U]; + s->st[4U][2U] = old[2U][4U]; + s->st[4U][3U] = old[3U][0U]; + s->st[4U][4U] = old[4U][1U]; +} + +static inline void libcrux_sha3_generic_keccak_chi__uint64_t_1size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s) { + uint64_t old[5U][5U]; + memcpy(old, s->st, (size_t)5U * sizeof(uint64_t[5U])); + for (size_t i0 = (size_t)0U; i0 < (size_t)5U; i0++) { + size_t i1 = i0; + for (size_t i = (size_t)0U; i < (size_t)5U; i++) { + size_t j = i; + uint64_t uu____0 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___and_not_xor( + s->st[i1][j], old[i1][(j + (size_t)2U) % (size_t)5U], + old[i1][(j + (size_t)1U) % (size_t)5U]); + s->st[i1][j] = uu____0; + } + } +} + +static inline void libcrux_sha3_generic_keccak_iota__uint64_t_1size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, size_t i) { + uint64_t uu____0 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___xor_constant( + s->st[0U][0U], libcrux_sha3_generic_keccak_ROUNDCONSTANTS[i]); + s->st[0U][0U] = uu____0; +} + +static inline void libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s) { + for (size_t i = (size_t)0U; i < (size_t)24U; i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_theta_rho__uint64_t_1size_t(s); + libcrux_sha3_generic_keccak_pi__uint64_t_1size_t(s); + libcrux_sha3_generic_keccak_chi__uint64_t_1size_t(s); + libcrux_sha3_generic_keccak_iota__uint64_t_1size_t(s, i0); + } +} + +static inline void +libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_72size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice blocks[1U]) { + uint64_t(*uu____0)[5U] = s->st; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, blocks, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___72size_t( + uu____0, uu____1); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_load_block_full___72size_t( + uint64_t (*s)[5U], uint8_t blocks[1U][200U]) { + Eurydice_slice buf[1U] = {Eurydice_array_to_slice((size_t)200U, blocks[0U], + uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_load_block___72size_t(s, buf); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___72size_t( + uint64_t (*a)[5U], uint8_t b[1U][200U]) { + uint64_t(*uu____0)[5U] = a; + uint8_t uu____1[1U][200U]; + memcpy(uu____1, b, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak_load_block_full___72size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_72size_t_6uint8_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice last[1U]) { + size_t last_len = core_slice___Slice_T___len(last[0U], uint8_t, size_t); + uint8_t blocks[1U][200U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)200U, blocks[i0], + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = last_len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice(uu____0, last[i0], uint8_t, void *); + blocks[i0][last_len] = 6U; + size_t uu____1 = i0; + size_t uu____2 = (size_t)72U - (size_t)1U; + blocks[uu____1][uu____2] = (uint32_t)blocks[uu____1][uu____2] | 128U; + } + uint64_t(*uu____3)[5U] = s->st; + uint8_t uu____4[1U][200U]; + memcpy(uu____4, blocks, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___72size_t( + uu____3, uu____4); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_store_block___72size_t( + uint64_t (*s)[5U], Eurydice_slice out[1U]) { + for (size_t i = (size_t)0U; i < (size_t)72U / (size_t)8U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret[8U]; + core_num__u64_9__to_le_bytes(s[i0 / (size_t)5U][i0 % (size_t)5U], ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)8U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +static inline void libcrux_sha3_portable_keccak_store_block_full___72size_t( + uint64_t (*s)[5U], uint8_t ret[1U][200U]) { + uint8_t out[200U] = {0U}; + Eurydice_slice buf[1U] = { + Eurydice_array_to_slice((size_t)200U, out, uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_store_block___72size_t(s, buf); + uint8_t uu____0[200U]; + memcpy(uu____0, out, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[0U], uu____0, (size_t)200U * sizeof(uint8_t)); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___72size_t( + uint64_t (*a)[5U], uint8_t ret[1U][200U]) { + uint8_t ret0[1U][200U]; + libcrux_sha3_portable_keccak_store_block_full___72size_t(a, ret0); + memcpy(ret, ret0, (size_t)1U * sizeof(uint8_t[200U])); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_72size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___72size_t( + s->st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___72size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + libcrux_sha3_portable_keccak_store_block___72size_t(a, b); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_72size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___72size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_72size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___72size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_72size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(&s); + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___72size_t( + s.st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_72size_t_6uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s = + libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(data[0U], uint8_t, size_t) / (size_t)72U; + i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____0 = &s; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____1, i0 * (size_t)72U, (size_t)72U, ret); + libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_72size_t(uu____0, + ret); + } + size_t rem = + core_slice___Slice_T___len(data[0U], uint8_t, size_t) % (size_t)72U; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____2 = &s; + Eurydice_slice uu____3[1U]; + memcpy(uu____3, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____3, core_slice___Slice_T___len(data[0U], uint8_t, size_t) - rem, rem, + ret); + libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_72size_t_6uint8_t( + uu____2, ret); + size_t outlen = core_slice___Slice_T___len(out[0U], uint8_t, size_t); + size_t blocks = outlen / (size_t)72U; + size_t last = outlen - outlen % (size_t)72U; + if (blocks == (size_t)0U) { + libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_72size_t( + &s, out); + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____4 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + out, (size_t)72U); + Eurydice_slice o0[1U]; + memcpy(o0, uu____4.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o1[1U]; + memcpy(o1, uu____4.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_72size_t( + &s, o0); + core_ops_range_Range__size_t iter = + core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter( + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)1U, + .end = blocks}), + core_ops_range_Range__size_t, core_ops_range_Range__size_t); + while (true) { + if (core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next( + &iter, size_t, core_option_Option__size_t) + .tag == core_option_None) { + break; + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____5 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o1, (size_t)72U); + Eurydice_slice o[1U]; + memcpy(o, uu____5.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice orest[1U]; + memcpy(orest, uu____5.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_72size_t( + &s, o); + memcpy(o1, orest, (size_t)1U * sizeof(Eurydice_slice)); + } + } + if (last < outlen) { + libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_72size_t(s, + o1); + } + } +} + +static inline void libcrux_sha3_portable_keccakx1___72size_t_6uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + Eurydice_slice uu____0[1U]; + memcpy(uu____0, data, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_72size_t_6uint8_t( + uu____0, out); +} + +static inline void libcrux_sha3_portable_sha512(Eurydice_slice digest, + Eurydice_slice data) { + Eurydice_slice buf0[1U] = {data}; + Eurydice_slice buf[1U] = {digest}; + libcrux_sha3_portable_keccakx1___72size_t_6uint8_t(buf0, buf); +} + +static inline void libcrux_sha3_portable_keccak_load_block___136size_t( + uint64_t (*s)[5U], Eurydice_slice blocks[1U]) { + for (size_t i = (size_t)0U; i < (size_t)136U / (size_t)8U; i++) { + size_t i0 = i; + uint8_t ret[8U]; + core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + Eurydice_slice, uint8_t[8U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_8size_t__core_array_TryFromSliceError( + dst, ret); + uint64_t uu____0 = core_num__u64_9__from_le_bytes(ret); + size_t uu____1 = i0 / (size_t)5U; + size_t uu____2 = i0 % (size_t)5U; + s[uu____1][uu____2] = s[uu____1][uu____2] ^ uu____0; + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___136size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + uint64_t(*uu____0)[5U] = a; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, b, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak_load_block___136size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice blocks[1U]) { + uint64_t(*uu____0)[5U] = s->st; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, blocks, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___136size_t( + uu____0, uu____1); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_load_block_full___136size_t( + uint64_t (*s)[5U], uint8_t blocks[1U][200U]) { + Eurydice_slice buf[1U] = {Eurydice_array_to_slice((size_t)200U, blocks[0U], + uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_load_block___136size_t(s, buf); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___136size_t( + uint64_t (*a)[5U], uint8_t b[1U][200U]) { + uint64_t(*uu____0)[5U] = a; + uint8_t uu____1[1U][200U]; + memcpy(uu____1, b, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak_load_block_full___136size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_136size_t_6uint8_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice last[1U]) { + size_t last_len = core_slice___Slice_T___len(last[0U], uint8_t, size_t); + uint8_t blocks[1U][200U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)200U, blocks[i0], + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = last_len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice(uu____0, last[i0], uint8_t, void *); + blocks[i0][last_len] = 6U; + size_t uu____1 = i0; + size_t uu____2 = (size_t)136U - (size_t)1U; + blocks[uu____1][uu____2] = (uint32_t)blocks[uu____1][uu____2] | 128U; + } + uint64_t(*uu____3)[5U] = s->st; + uint8_t uu____4[1U][200U]; + memcpy(uu____4, blocks, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___136size_t( + uu____3, uu____4); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_store_block___136size_t( + uint64_t (*s)[5U], Eurydice_slice out[1U]) { + for (size_t i = (size_t)0U; i < (size_t)136U / (size_t)8U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret[8U]; + core_num__u64_9__to_le_bytes(s[i0 / (size_t)5U][i0 % (size_t)5U], ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)8U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +static inline void libcrux_sha3_portable_keccak_store_block_full___136size_t( + uint64_t (*s)[5U], uint8_t ret[1U][200U]) { + uint8_t out[200U] = {0U}; + Eurydice_slice buf[1U] = { + Eurydice_array_to_slice((size_t)200U, out, uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_store_block___136size_t(s, buf); + uint8_t uu____0[200U]; + memcpy(uu____0, out, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[0U], uu____0, (size_t)200U * sizeof(uint8_t)); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___136size_t( + uint64_t (*a)[5U], uint8_t ret[1U][200U]) { + uint8_t ret0[1U][200U]; + libcrux_sha3_portable_keccak_store_block_full___136size_t(a, ret0); + memcpy(ret, ret0, (size_t)1U * sizeof(uint8_t[200U])); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___136size_t( + s->st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___136size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + libcrux_sha3_portable_keccak_store_block___136size_t(a, b); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___136size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___136size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_136size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(&s); + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___136size_t( + s.st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_136size_t_6uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s = + libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(data[0U], uint8_t, size_t) / (size_t)136U; + i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____0 = &s; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____1, i0 * (size_t)136U, (size_t)136U, ret); + libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_136size_t( + uu____0, ret); + } + size_t rem = + core_slice___Slice_T___len(data[0U], uint8_t, size_t) % (size_t)136U; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____2 = &s; + Eurydice_slice uu____3[1U]; + memcpy(uu____3, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____3, core_slice___Slice_T___len(data[0U], uint8_t, size_t) - rem, rem, + ret); + libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_136size_t_6uint8_t( + uu____2, ret); + size_t outlen = core_slice___Slice_T___len(out[0U], uint8_t, size_t); + size_t blocks = outlen / (size_t)136U; + size_t last = outlen - outlen % (size_t)136U; + if (blocks == (size_t)0U) { + libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_136size_t( + &s, out); + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____4 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + out, (size_t)136U); + Eurydice_slice o0[1U]; + memcpy(o0, uu____4.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o1[1U]; + memcpy(o1, uu____4.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_136size_t( + &s, o0); + core_ops_range_Range__size_t iter = + core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter( + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)1U, + .end = blocks}), + core_ops_range_Range__size_t, core_ops_range_Range__size_t); + while (true) { + if (core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next( + &iter, size_t, core_option_Option__size_t) + .tag == core_option_None) { + break; + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____5 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o1, (size_t)136U); + Eurydice_slice o[1U]; + memcpy(o, uu____5.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice orest[1U]; + memcpy(orest, uu____5.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_136size_t( + &s, o); + memcpy(o1, orest, (size_t)1U * sizeof(Eurydice_slice)); + } + } + if (last < outlen) { + libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_136size_t(s, + o1); + } + } +} + +static inline void libcrux_sha3_portable_keccakx1___136size_t_6uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + Eurydice_slice uu____0[1U]; + memcpy(uu____0, data, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_136size_t_6uint8_t( + uu____0, out); +} + +static inline void libcrux_sha3_portable_sha256(Eurydice_slice digest, + Eurydice_slice data) { + Eurydice_slice buf0[1U] = {data}; + Eurydice_slice buf[1U] = {digest}; + libcrux_sha3_portable_keccakx1___136size_t_6uint8_t(buf0, buf); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_136size_t_31uint8_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice last[1U]) { + size_t last_len = core_slice___Slice_T___len(last[0U], uint8_t, size_t); + uint8_t blocks[1U][200U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)200U, blocks[i0], + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = last_len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice(uu____0, last[i0], uint8_t, void *); + blocks[i0][last_len] = 31U; + size_t uu____1 = i0; + size_t uu____2 = (size_t)136U - (size_t)1U; + blocks[uu____1][uu____2] = (uint32_t)blocks[uu____1][uu____2] | 128U; + } + uint64_t(*uu____3)[5U] = s->st; + uint8_t uu____4[1U][200U]; + memcpy(uu____4, blocks, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___136size_t( + uu____3, uu____4); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void +libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_136size_t_31uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s = + libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(data[0U], uint8_t, size_t) / (size_t)136U; + i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____0 = &s; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____1, i0 * (size_t)136U, (size_t)136U, ret); + libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_136size_t( + uu____0, ret); + } + size_t rem = + core_slice___Slice_T___len(data[0U], uint8_t, size_t) % (size_t)136U; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____2 = &s; + Eurydice_slice uu____3[1U]; + memcpy(uu____3, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____3, core_slice___Slice_T___len(data[0U], uint8_t, size_t) - rem, rem, + ret); + libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_136size_t_31uint8_t( + uu____2, ret); + size_t outlen = core_slice___Slice_T___len(out[0U], uint8_t, size_t); + size_t blocks = outlen / (size_t)136U; + size_t last = outlen - outlen % (size_t)136U; + if (blocks == (size_t)0U) { + libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_136size_t( + &s, out); + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____4 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + out, (size_t)136U); + Eurydice_slice o0[1U]; + memcpy(o0, uu____4.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o1[1U]; + memcpy(o1, uu____4.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_136size_t( + &s, o0); + core_ops_range_Range__size_t iter = + core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter( + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)1U, + .end = blocks}), + core_ops_range_Range__size_t, core_ops_range_Range__size_t); + while (true) { + if (core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next( + &iter, size_t, core_option_Option__size_t) + .tag == core_option_None) { + break; + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____5 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o1, (size_t)136U); + Eurydice_slice o[1U]; + memcpy(o, uu____5.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice orest[1U]; + memcpy(orest, uu____5.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_136size_t( + &s, o); + memcpy(o1, orest, (size_t)1U * sizeof(Eurydice_slice)); + } + } + if (last < outlen) { + libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_136size_t(s, + o1); + } + } +} + +static inline void libcrux_sha3_portable_keccakx1___136size_t_31uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + Eurydice_slice uu____0[1U]; + memcpy(uu____0, data, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_136size_t_31uint8_t( + uu____0, out); +} + +static inline void libcrux_sha3_portable_shake256(Eurydice_slice digest, + Eurydice_slice data) { + Eurydice_slice buf0[1U] = {data}; + Eurydice_slice buf[1U] = {digest}; + libcrux_sha3_portable_keccakx1___136size_t_31uint8_t(buf0, buf); +} + +static inline void libcrux_sha3_neon_sha512(Eurydice_slice digest, + Eurydice_slice data) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +static inline void libcrux_sha3_neon_sha256(Eurydice_slice digest, + Eurydice_slice data) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +static inline void libcrux_sha3_neon_x2_shake256(Eurydice_slice input0, + Eurydice_slice input1, + Eurydice_slice out0, + Eurydice_slice out1) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +typedef libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t + libcrux_sha3_portable_KeccakState; + +typedef struct libcrux_sha3_neon_x2_incremental_KeccakState_s { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t state[2U]; +} libcrux_sha3_neon_x2_incremental_KeccakState; + +static inline libcrux_sha3_neon_x2_incremental_KeccakState +libcrux_sha3_neon_x2_incremental_shake128_init(void) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +static inline void libcrux_sha3_neon_x2_incremental_shake128_absorb_final( + libcrux_sha3_neon_x2_incremental_KeccakState *s, Eurydice_slice data0, + Eurydice_slice data1) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +static inline void libcrux_sha3_neon_x2_incremental_shake128_squeeze_next_block( + libcrux_sha3_neon_x2_incremental_KeccakState *s, Eurydice_slice out0, + Eurydice_slice out1) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +static inline void +libcrux_sha3_neon_x2_incremental_shake128_squeeze_first_three_blocks( + libcrux_sha3_neon_x2_incremental_KeccakState *s, Eurydice_slice out0, + Eurydice_slice out1) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +static inline libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t +libcrux_sha3_portable_incremental_shake128_init(void) { + return libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t(); +} + +static inline void libcrux_sha3_portable_keccak_load_block___168size_t( + uint64_t (*s)[5U], Eurydice_slice blocks[1U]) { + for (size_t i = (size_t)0U; i < (size_t)168U / (size_t)8U; i++) { + size_t i0 = i; + uint8_t ret[8U]; + core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + Eurydice_slice, uint8_t[8U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_8size_t__core_array_TryFromSliceError( + dst, ret); + uint64_t uu____0 = core_num__u64_9__from_le_bytes(ret); + size_t uu____1 = i0 / (size_t)5U; + size_t uu____2 = i0 % (size_t)5U; + s[uu____1][uu____2] = s[uu____1][uu____2] ^ uu____0; + } +} + +static inline void libcrux_sha3_portable_keccak_load_block_full___168size_t( + uint64_t (*s)[5U], uint8_t blocks[1U][200U]) { + Eurydice_slice buf[1U] = {Eurydice_array_to_slice((size_t)200U, blocks[0U], + uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_load_block___168size_t(s, buf); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___168size_t( + uint64_t (*a)[5U], uint8_t b[1U][200U]) { + uint64_t(*uu____0)[5U] = a; + uint8_t uu____1[1U][200U]; + memcpy(uu____1, b, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak_load_block_full___168size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_168size_t_31uint8_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice last[1U]) { + size_t last_len = core_slice___Slice_T___len(last[0U], uint8_t, size_t); + uint8_t blocks[1U][200U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)200U, blocks[i0], + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = last_len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice(uu____0, last[i0], uint8_t, void *); + blocks[i0][last_len] = 31U; + size_t uu____1 = i0; + size_t uu____2 = (size_t)168U - (size_t)1U; + blocks[uu____1][uu____2] = (uint32_t)blocks[uu____1][uu____2] | 128U; + } + uint64_t(*uu____3)[5U] = s->st; + uint8_t uu____4[1U][200U]; + memcpy(uu____4, blocks, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___168size_t( + uu____3, uu____4); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_incremental_shake128_absorb_final( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice data0) { + Eurydice_slice buf[1U] = {data0}; + libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_168size_t_31uint8_t( + s, buf); +} + +static inline void libcrux_sha3_portable_keccak_store_block___168size_t( + uint64_t (*s)[5U], Eurydice_slice out[1U]) { + for (size_t i = (size_t)0U; i < (size_t)168U / (size_t)8U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret[8U]; + core_num__u64_9__to_le_bytes(s[i0 / (size_t)5U][i0 % (size_t)5U], ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)8U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___168size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + libcrux_sha3_portable_keccak_store_block___168size_t(a, b); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___168size_t( + s->st, out); +} + +static inline void +libcrux_sha3_portable_incremental_shake128_squeeze_next_block( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out0) { + Eurydice_slice buf[1U] = {out0}; + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + s, buf); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___168size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_three_blocks__uint64_t_1size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____0 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + out, (size_t)168U); + Eurydice_slice o0[1U]; + memcpy(o0, uu____0.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o10[1U]; + memcpy(o10, uu____0.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_168size_t( + s, o0); + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____1 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o10, (size_t)168U); + Eurydice_slice o1[1U]; + memcpy(o1, uu____1.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o2[1U]; + memcpy(o2, uu____1.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + s, o1); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + s, o2); +} + +static inline void +libcrux_sha3_portable_incremental_shake128_squeeze_first_three_blocks( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out0) { + Eurydice_slice buf[1U] = {out0}; + libcrux_sha3_generic_keccak_squeeze_first_three_blocks__uint64_t_1size_t_168size_t( + s, buf); +} + +#define libcrux_sha3_Sha224 0 +#define libcrux_sha3_Sha256 1 +#define libcrux_sha3_Sha384 2 +#define libcrux_sha3_Sha512 3 + +typedef uint8_t libcrux_sha3_Algorithm; + +static inline size_t libcrux_sha3_digest_size(libcrux_sha3_Algorithm mode) { + size_t uu____0; + switch (mode) { + case libcrux_sha3_Sha224: { + uu____0 = (size_t)28U; + break; + } + case libcrux_sha3_Sha256: { + uu____0 = (size_t)32U; + break; + } + case libcrux_sha3_Sha384: { + uu____0 = (size_t)48U; + break; + } + case libcrux_sha3_Sha512: { + uu____0 = (size_t)64U; + break; + } + default: { + KRML_HOST_EPRINTF("KaRaMeL incomplete match at %s:%d\n", __FILE__, + __LINE__); + KRML_HOST_EXIT(253U); + } + } + return uu____0; +} + +static inline void libcrux_sha3_portable_keccak_load_block___144size_t( + uint64_t (*s)[5U], Eurydice_slice blocks[1U]) { + for (size_t i = (size_t)0U; i < (size_t)144U / (size_t)8U; i++) { + size_t i0 = i; + uint8_t ret[8U]; + core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + Eurydice_slice, uint8_t[8U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_8size_t__core_array_TryFromSliceError( + dst, ret); + uint64_t uu____0 = core_num__u64_9__from_le_bytes(ret); + size_t uu____1 = i0 / (size_t)5U; + size_t uu____2 = i0 % (size_t)5U; + s[uu____1][uu____2] = s[uu____1][uu____2] ^ uu____0; + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___144size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + uint64_t(*uu____0)[5U] = a; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, b, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak_load_block___144size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_144size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice blocks[1U]) { + uint64_t(*uu____0)[5U] = s->st; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, blocks, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___144size_t( + uu____0, uu____1); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_load_block_full___144size_t( + uint64_t (*s)[5U], uint8_t blocks[1U][200U]) { + Eurydice_slice buf[1U] = {Eurydice_array_to_slice((size_t)200U, blocks[0U], + uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_load_block___144size_t(s, buf); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___144size_t( + uint64_t (*a)[5U], uint8_t b[1U][200U]) { + uint64_t(*uu____0)[5U] = a; + uint8_t uu____1[1U][200U]; + memcpy(uu____1, b, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak_load_block_full___144size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_144size_t_6uint8_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice last[1U]) { + size_t last_len = core_slice___Slice_T___len(last[0U], uint8_t, size_t); + uint8_t blocks[1U][200U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)200U, blocks[i0], + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = last_len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice(uu____0, last[i0], uint8_t, void *); + blocks[i0][last_len] = 6U; + size_t uu____1 = i0; + size_t uu____2 = (size_t)144U - (size_t)1U; + blocks[uu____1][uu____2] = (uint32_t)blocks[uu____1][uu____2] | 128U; + } + uint64_t(*uu____3)[5U] = s->st; + uint8_t uu____4[1U][200U]; + memcpy(uu____4, blocks, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___144size_t( + uu____3, uu____4); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_store_block___144size_t( + uint64_t (*s)[5U], Eurydice_slice out[1U]) { + for (size_t i = (size_t)0U; i < (size_t)144U / (size_t)8U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret[8U]; + core_num__u64_9__to_le_bytes(s[i0 / (size_t)5U][i0 % (size_t)5U], ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)8U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +static inline void libcrux_sha3_portable_keccak_store_block_full___144size_t( + uint64_t (*s)[5U], uint8_t ret[1U][200U]) { + uint8_t out[200U] = {0U}; + Eurydice_slice buf[1U] = { + Eurydice_array_to_slice((size_t)200U, out, uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_store_block___144size_t(s, buf); + uint8_t uu____0[200U]; + memcpy(uu____0, out, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[0U], uu____0, (size_t)200U * sizeof(uint8_t)); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___144size_t( + uint64_t (*a)[5U], uint8_t ret[1U][200U]) { + uint8_t ret0[1U][200U]; + libcrux_sha3_portable_keccak_store_block_full___144size_t(a, ret0); + memcpy(ret, ret0, (size_t)1U * sizeof(uint8_t[200U])); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_144size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___144size_t( + s->st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___144size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + libcrux_sha3_portable_keccak_store_block___144size_t(a, b); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_144size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___144size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_144size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___144size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_144size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(&s); + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___144size_t( + s.st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_144size_t_6uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s = + libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(data[0U], uint8_t, size_t) / (size_t)144U; + i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____0 = &s; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____1, i0 * (size_t)144U, (size_t)144U, ret); + libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_144size_t( + uu____0, ret); + } + size_t rem = + core_slice___Slice_T___len(data[0U], uint8_t, size_t) % (size_t)144U; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____2 = &s; + Eurydice_slice uu____3[1U]; + memcpy(uu____3, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____3, core_slice___Slice_T___len(data[0U], uint8_t, size_t) - rem, rem, + ret); + libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_144size_t_6uint8_t( + uu____2, ret); + size_t outlen = core_slice___Slice_T___len(out[0U], uint8_t, size_t); + size_t blocks = outlen / (size_t)144U; + size_t last = outlen - outlen % (size_t)144U; + if (blocks == (size_t)0U) { + libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_144size_t( + &s, out); + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____4 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + out, (size_t)144U); + Eurydice_slice o0[1U]; + memcpy(o0, uu____4.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o1[1U]; + memcpy(o1, uu____4.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_144size_t( + &s, o0); + core_ops_range_Range__size_t iter = + core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter( + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)1U, + .end = blocks}), + core_ops_range_Range__size_t, core_ops_range_Range__size_t); + while (true) { + if (core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next( + &iter, size_t, core_option_Option__size_t) + .tag == core_option_None) { + break; + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____5 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o1, (size_t)144U); + Eurydice_slice o[1U]; + memcpy(o, uu____5.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice orest[1U]; + memcpy(orest, uu____5.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_144size_t( + &s, o); + memcpy(o1, orest, (size_t)1U * sizeof(Eurydice_slice)); + } + } + if (last < outlen) { + libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_144size_t(s, + o1); + } + } +} + +static inline void libcrux_sha3_portable_keccakx1___144size_t_6uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + Eurydice_slice uu____0[1U]; + memcpy(uu____0, data, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_144size_t_6uint8_t( + uu____0, out); +} + +static inline void libcrux_sha3_portable_sha224(Eurydice_slice digest, + Eurydice_slice data) { + Eurydice_slice buf0[1U] = {data}; + Eurydice_slice buf[1U] = {digest}; + libcrux_sha3_portable_keccakx1___144size_t_6uint8_t(buf0, buf); +} + +static inline void libcrux_sha3_portable_keccak_load_block___104size_t( + uint64_t (*s)[5U], Eurydice_slice blocks[1U]) { + for (size_t i = (size_t)0U; i < (size_t)104U / (size_t)8U; i++) { + size_t i0 = i; + uint8_t ret[8U]; + core_result_Result__uint8_t_8size_t__core_array_TryFromSliceError dst; + Eurydice_slice_to_array2( + &dst, + Eurydice_slice_subslice( + blocks[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice), + Eurydice_slice, uint8_t[8U], void *); + core_result__core__result__Result_T__E___unwrap__uint8_t_8size_t__core_array_TryFromSliceError( + dst, ret); + uint64_t uu____0 = core_num__u64_9__from_le_bytes(ret); + size_t uu____1 = i0 / (size_t)5U; + size_t uu____2 = i0 % (size_t)5U; + s[uu____1][uu____2] = s[uu____1][uu____2] ^ uu____0; + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___104size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + uint64_t(*uu____0)[5U] = a; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, b, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak_load_block___104size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_104size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice blocks[1U]) { + uint64_t(*uu____0)[5U] = s->st; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, blocks, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___104size_t( + uu____0, uu____1); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_load_block_full___104size_t( + uint64_t (*s)[5U], uint8_t blocks[1U][200U]) { + Eurydice_slice buf[1U] = {Eurydice_array_to_slice((size_t)200U, blocks[0U], + uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_load_block___104size_t(s, buf); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___104size_t( + uint64_t (*a)[5U], uint8_t b[1U][200U]) { + uint64_t(*uu____0)[5U] = a; + uint8_t uu____1[1U][200U]; + memcpy(uu____1, b, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak_load_block_full___104size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_104size_t_6uint8_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice last[1U]) { + size_t last_len = core_slice___Slice_T___len(last[0U], uint8_t, size_t); + uint8_t blocks[1U][200U] = {{0U}}; + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_array_to_subslice( + (size_t)200U, blocks[i0], + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)0U, + .end = last_len}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + core_slice___Slice_T___copy_from_slice(uu____0, last[i0], uint8_t, void *); + blocks[i0][last_len] = 6U; + size_t uu____1 = i0; + size_t uu____2 = (size_t)104U - (size_t)1U; + blocks[uu____1][uu____2] = (uint32_t)blocks[uu____1][uu____2] | 128U; + } + uint64_t(*uu____3)[5U] = s->st; + uint8_t uu____4[1U][200U]; + memcpy(uu____4, blocks, (size_t)1U * sizeof(uint8_t[200U])); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block_full___104size_t( + uu____3, uu____4); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_store_block___104size_t( + uint64_t (*s)[5U], Eurydice_slice out[1U]) { + for (size_t i = (size_t)0U; i < (size_t)104U / (size_t)8U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = Eurydice_slice_subslice( + out[0U], + (CLITERAL(core_ops_range_Range__size_t){ + .start = (size_t)8U * i0, .end = (size_t)8U * i0 + (size_t)8U}), + uint8_t, core_ops_range_Range__size_t, Eurydice_slice); + uint8_t ret[8U]; + core_num__u64_9__to_le_bytes(s[i0 / (size_t)5U][i0 % (size_t)5U], ret); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_slice((size_t)8U, ret, uint8_t, Eurydice_slice), + uint8_t, void *); + } +} + +static inline void libcrux_sha3_portable_keccak_store_block_full___104size_t( + uint64_t (*s)[5U], uint8_t ret[1U][200U]) { + uint8_t out[200U] = {0U}; + Eurydice_slice buf[1U] = { + Eurydice_array_to_slice((size_t)200U, out, uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_store_block___104size_t(s, buf); + uint8_t uu____0[200U]; + memcpy(uu____0, out, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[0U], uu____0, (size_t)200U * sizeof(uint8_t)); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___104size_t( + uint64_t (*a)[5U], uint8_t ret[1U][200U]) { + uint8_t ret0[1U][200U]; + libcrux_sha3_portable_keccak_store_block_full___104size_t(a, ret0); + memcpy(ret, ret0, (size_t)1U * sizeof(uint8_t[200U])); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_104size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___104size_t( + s->st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___104size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + libcrux_sha3_portable_keccak_store_block___104size_t(a, b); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_104size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___104size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_104size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block___104size_t( + s->st, out); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_104size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(&s); + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___104size_t( + s.st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_104size_t_6uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s = + libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(data[0U], uint8_t, size_t) / (size_t)104U; + i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____0 = &s; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____1, i0 * (size_t)104U, (size_t)104U, ret); + libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_104size_t( + uu____0, ret); + } + size_t rem = + core_slice___Slice_T___len(data[0U], uint8_t, size_t) % (size_t)104U; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____2 = &s; + Eurydice_slice uu____3[1U]; + memcpy(uu____3, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____3, core_slice___Slice_T___len(data[0U], uint8_t, size_t) - rem, rem, + ret); + libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_104size_t_6uint8_t( + uu____2, ret); + size_t outlen = core_slice___Slice_T___len(out[0U], uint8_t, size_t); + size_t blocks = outlen / (size_t)104U; + size_t last = outlen - outlen % (size_t)104U; + if (blocks == (size_t)0U) { + libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_104size_t( + &s, out); + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____4 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + out, (size_t)104U); + Eurydice_slice o0[1U]; + memcpy(o0, uu____4.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o1[1U]; + memcpy(o1, uu____4.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_104size_t( + &s, o0); + core_ops_range_Range__size_t iter = + core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter( + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)1U, + .end = blocks}), + core_ops_range_Range__size_t, core_ops_range_Range__size_t); + while (true) { + if (core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next( + &iter, size_t, core_option_Option__size_t) + .tag == core_option_None) { + break; + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____5 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o1, (size_t)104U); + Eurydice_slice o[1U]; + memcpy(o, uu____5.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice orest[1U]; + memcpy(orest, uu____5.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_104size_t( + &s, o); + memcpy(o1, orest, (size_t)1U * sizeof(Eurydice_slice)); + } + } + if (last < outlen) { + libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_104size_t(s, + o1); + } + } +} + +static inline void libcrux_sha3_portable_keccakx1___104size_t_6uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + Eurydice_slice uu____0[1U]; + memcpy(uu____0, data, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_104size_t_6uint8_t( + uu____0, out); +} + +static inline void libcrux_sha3_portable_sha384(Eurydice_slice digest, + Eurydice_slice data) { + Eurydice_slice buf0[1U] = {data}; + Eurydice_slice buf[1U] = {digest}; + libcrux_sha3_portable_keccakx1___104size_t_6uint8_t(buf0, buf); +} + +static inline void libcrux_sha3_sha224_ema(Eurydice_slice digest, + Eurydice_slice payload) { + libcrux_sha3_portable_sha224(digest, payload); +} + +static inline void libcrux_sha3_sha224(Eurydice_slice data, uint8_t ret[28U]) { + uint8_t out[28U] = {0U}; + libcrux_sha3_sha224_ema( + Eurydice_array_to_slice((size_t)28U, out, uint8_t, Eurydice_slice), data); + memcpy(ret, out, (size_t)28U * sizeof(uint8_t)); +} + +static inline void libcrux_sha3_sha256_ema(Eurydice_slice digest, + Eurydice_slice payload) { + libcrux_sha3_portable_sha256(digest, payload); +} + +static inline void libcrux_sha3_sha256(Eurydice_slice data, uint8_t ret[32U]) { + uint8_t out[32U] = {0U}; + libcrux_sha3_sha256_ema( + Eurydice_array_to_slice((size_t)32U, out, uint8_t, Eurydice_slice), data); + memcpy(ret, out, (size_t)32U * sizeof(uint8_t)); +} + +static inline void libcrux_sha3_sha384_ema(Eurydice_slice digest, + Eurydice_slice payload) { + libcrux_sha3_portable_sha384(digest, payload); +} + +static inline void libcrux_sha3_sha384(Eurydice_slice data, uint8_t ret[48U]) { + uint8_t out[48U] = {0U}; + libcrux_sha3_sha384_ema( + Eurydice_array_to_slice((size_t)48U, out, uint8_t, Eurydice_slice), data); + memcpy(ret, out, (size_t)48U * sizeof(uint8_t)); +} + +static inline void libcrux_sha3_sha512_ema(Eurydice_slice digest, + Eurydice_slice payload) { + libcrux_sha3_portable_sha512(digest, payload); +} + +static inline void libcrux_sha3_sha512(Eurydice_slice data, uint8_t ret[64U]) { + uint8_t out[64U] = {0U}; + libcrux_sha3_sha512_ema( + Eurydice_array_to_slice((size_t)64U, out, uint8_t, Eurydice_slice), data); + memcpy(ret, out, (size_t)64U * sizeof(uint8_t)); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___168size_t( + uint64_t (*a)[5U], Eurydice_slice b[1U]) { + uint64_t(*uu____0)[5U] = a; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, b, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak_load_block___168size_t(uu____0, uu____1); +} + +static inline void +libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice blocks[1U]) { + uint64_t(*uu____0)[5U] = s->st; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, blocks, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___load_block___168size_t( + uu____0, uu____1); + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(s); +} + +static inline void libcrux_sha3_portable_keccak_store_block_full___168size_t( + uint64_t (*s)[5U], uint8_t ret[1U][200U]) { + uint8_t out[200U] = {0U}; + Eurydice_slice buf[1U] = { + Eurydice_array_to_slice((size_t)200U, out, uint8_t, Eurydice_slice)}; + libcrux_sha3_portable_keccak_store_block___168size_t(s, buf); + uint8_t uu____0[200U]; + memcpy(uu____0, out, (size_t)200U * sizeof(uint8_t)); + memcpy(ret[0U], uu____0, (size_t)200U * sizeof(uint8_t)); +} + +static inline void +libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___168size_t( + uint64_t (*a)[5U], uint8_t ret[1U][200U]) { + uint8_t ret0[1U][200U]; + libcrux_sha3_portable_keccak_store_block_full___168size_t(a, ret0); + memcpy(ret, ret0, (size_t)1U * sizeof(uint8_t[200U])); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___168size_t( + s->st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s, + Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_keccakf1600__uint64_t_1size_t(&s); + uint8_t b[1U][200U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___store_block_full___168size_t( + s.st, b); + for (size_t i = (size_t)0U; i < (size_t)1U; i++) { + size_t i0 = i; + Eurydice_slice uu____0 = out[i0]; + uint8_t *uu____1 = b[i0]; + core_ops_range_Range__size_t lit; + lit.start = (size_t)0U; + lit.end = core_slice___Slice_T___len(out[i0], uint8_t, size_t); + core_slice___Slice_T___copy_from_slice( + uu____0, + Eurydice_array_to_subslice((size_t)200U, uu____1, lit, uint8_t, + core_ops_range_Range__size_t, + Eurydice_slice), + uint8_t, void *); + } +} + +static inline void +libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_168size_t_31uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t s = + libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t(); + for (size_t i = (size_t)0U; + i < core_slice___Slice_T___len(data[0U], uint8_t, size_t) / (size_t)168U; + i++) { + size_t i0 = i; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____0 = &s; + Eurydice_slice uu____1[1U]; + memcpy(uu____1, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____1, i0 * (size_t)168U, (size_t)168U, ret); + libcrux_sha3_generic_keccak_absorb_block__uint64_t_1size_t_168size_t( + uu____0, ret); + } + size_t rem = + core_slice___Slice_T___len(data[0U], uint8_t, size_t) % (size_t)168U; + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *uu____2 = &s; + Eurydice_slice uu____3[1U]; + memcpy(uu____3, data, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice ret[1U]; + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___slice_n( + uu____3, core_slice___Slice_T___len(data[0U], uint8_t, size_t) - rem, rem, + ret); + libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_168size_t_31uint8_t( + uu____2, ret); + size_t outlen = core_slice___Slice_T___len(out[0U], uint8_t, size_t); + size_t blocks = outlen / (size_t)168U; + size_t last = outlen - outlen % (size_t)168U; + if (blocks == (size_t)0U) { + libcrux_sha3_generic_keccak_squeeze_first_and_last__uint64_t_1size_t_168size_t( + &s, out); + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____4 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + out, (size_t)168U); + Eurydice_slice o0[1U]; + memcpy(o0, uu____4.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o1[1U]; + memcpy(o1, uu____4.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_168size_t( + &s, o0); + core_ops_range_Range__size_t iter = + core_iter_traits_collect___core__iter__traits__collect__IntoIterator_for_I__1__into_iter( + (CLITERAL(core_ops_range_Range__size_t){.start = (size_t)1U, + .end = blocks}), + core_ops_range_Range__size_t, core_ops_range_Range__size_t); + while (true) { + if (core_iter_range___core__iter__traits__iterator__Iterator_for_core__ops__range__Range_A___6__next( + &iter, size_t, core_option_Option__size_t) + .tag == core_option_None) { + break; + } else { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____5 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o1, (size_t)168U); + Eurydice_slice o[1U]; + memcpy(o, uu____5.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice orest[1U]; + memcpy(orest, uu____5.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + &s, o); + memcpy(o1, orest, (size_t)1U * sizeof(Eurydice_slice)); + } + } + if (last < outlen) { + libcrux_sha3_generic_keccak_squeeze_last__uint64_t_1size_t_168size_t(s, + o1); + } + } +} + +static inline void libcrux_sha3_portable_keccakx1___168size_t_31uint8_t( + Eurydice_slice data[1U], Eurydice_slice out[1U]) { + Eurydice_slice uu____0[1U]; + memcpy(uu____0, data, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_keccak__uint64_t_1size_t_168size_t_31uint8_t( + uu____0, out); +} + +static inline void libcrux_sha3_portable_shake128(Eurydice_slice digest, + Eurydice_slice data) { + Eurydice_slice buf0[1U] = {data}; + Eurydice_slice buf[1U] = {digest}; + libcrux_sha3_portable_keccakx1___168size_t_31uint8_t(buf0, buf); +} + +static const size_t libcrux_sha3_generic_keccak__PI[24U] = { + (size_t)6U, (size_t)12U, (size_t)18U, (size_t)24U, (size_t)3U, + (size_t)9U, (size_t)10U, (size_t)16U, (size_t)22U, (size_t)1U, + (size_t)7U, (size_t)13U, (size_t)19U, (size_t)20U, (size_t)4U, + (size_t)5U, (size_t)11U, (size_t)17U, (size_t)23U, (size_t)2U, + (size_t)8U, (size_t)14U, (size_t)15U, (size_t)21U}; + +static const size_t libcrux_sha3_generic_keccak__ROTC[24U] = { + (size_t)1U, (size_t)62U, (size_t)28U, (size_t)27U, (size_t)36U, + (size_t)44U, (size_t)6U, (size_t)55U, (size_t)20U, (size_t)3U, + (size_t)10U, (size_t)43U, (size_t)25U, (size_t)39U, (size_t)41U, + (size_t)45U, (size_t)15U, (size_t)21U, (size_t)8U, (size_t)18U, + (size_t)2U, (size_t)61U, (size_t)56U, (size_t)14U}; + +static inline void libcrux_sha3_neon_sha224(Eurydice_slice digest, + Eurydice_slice data) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +static inline void libcrux_sha3_neon_sha384(Eurydice_slice digest, + Eurydice_slice data) { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); +} + +static inline void +libcrux_sha3_generic_keccak_squeeze_first_five_blocks__uint64_t_1size_t_168size_t( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out[1U]) { + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____0 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + out, (size_t)168U); + Eurydice_slice o0[1U]; + memcpy(o0, uu____0.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o10[1U]; + memcpy(o10, uu____0.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_168size_t( + s, o0); + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____1 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o10, (size_t)168U); + Eurydice_slice o1[1U]; + memcpy(o1, uu____1.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o20[1U]; + memcpy(o20, uu____1.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + s, o1); + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____2 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o20, (size_t)168U); + Eurydice_slice o2[1U]; + memcpy(o2, uu____2.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o30[1U]; + memcpy(o30, uu____2.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + s, o2); + K___Eurydice_slice_uint8_t_1size_t__Eurydice_slice_uint8_t_1size_t_ uu____3 = + libcrux_sha3_portable_keccak___libcrux_sha3__traits__internal__KeccakItem_1__usize__for_u64___split_at_mut_n( + o30, (size_t)168U); + Eurydice_slice o3[1U]; + memcpy(o3, uu____3.fst, (size_t)1U * sizeof(Eurydice_slice)); + Eurydice_slice o4[1U]; + memcpy(o4, uu____3.snd, (size_t)1U * sizeof(Eurydice_slice)); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + s, o3); + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_168size_t( + s, o4); +} + +static inline void +libcrux_sha3_portable_incremental_shake128_squeeze_first_five_blocks( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out0) { + Eurydice_slice buf[1U] = {out0}; + libcrux_sha3_generic_keccak_squeeze_first_five_blocks__uint64_t_1size_t_168size_t( + s, buf); +} + +static inline void libcrux_sha3_portable_incremental_shake256_absorb_final( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice data0) { + Eurydice_slice buf[1U] = {data0}; + libcrux_sha3_generic_keccak_absorb_final__uint64_t_1size_t_136size_t_31uint8_t( + s, buf); +} + +static inline libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t +libcrux_sha3_portable_incremental_shake256_init(void) { + return libcrux_sha3_generic_keccak__libcrux_sha3__generic_keccak__KeccakState_T__N__TraitClause_0__1__new__uint64_t_1size_t(); +} + +static inline void +libcrux_sha3_portable_incremental_shake256_squeeze_first_block( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out0) { + Eurydice_slice buf[1U] = {out0}; + libcrux_sha3_generic_keccak_squeeze_first_block__uint64_t_1size_t_136size_t( + s, buf); +} + +static inline void +libcrux_sha3_portable_incremental_shake256_squeeze_next_block( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *s, + Eurydice_slice out0) { + Eurydice_slice buf[1U] = {out0}; + libcrux_sha3_generic_keccak_squeeze_next_block__uint64_t_1size_t_136size_t( + s, buf); +} + +static inline libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t +libcrux_sha3_portable___core__clone__Clone_for_libcrux_sha3__portable__KeccakState___clone( + libcrux_sha3_generic_keccak_KeccakState__uint64_t__1size_t *self) { + return self[0U]; +} + +static inline uint32_t +libcrux_sha3___core__convert__From_libcrux_sha3__Algorithm__for_u32__1__from( + libcrux_sha3_Algorithm v) { + uint32_t uu____0; + switch (v) { + case libcrux_sha3_Sha224: { + uu____0 = 1U; + break; + } + case libcrux_sha3_Sha256: { + uu____0 = 2U; + break; + } + case libcrux_sha3_Sha384: { + uu____0 = 3U; + break; + } + case libcrux_sha3_Sha512: { + uu____0 = 4U; + break; + } + default: { + KRML_HOST_EPRINTF("KaRaMeL incomplete match at %s:%d\n", __FILE__, + __LINE__); + KRML_HOST_EXIT(253U); + } + } + return uu____0; +} + +static inline libcrux_sha3_Algorithm +libcrux_sha3___core__convert__From_u32__for_libcrux_sha3__Algorithm___from( + uint32_t v) { + libcrux_sha3_Algorithm uu____0; + switch (v) { + case 1U: { + uu____0 = libcrux_sha3_Sha224; + break; + } + case 2U: { + uu____0 = libcrux_sha3_Sha256; + break; + } + case 3U: { + uu____0 = libcrux_sha3_Sha384; + break; + } + case 4U: { + uu____0 = libcrux_sha3_Sha512; + break; + } + default: { + KRML_HOST_EPRINTF("KaRaMeL abort at %s:%d\n%s\n", __FILE__, __LINE__, + "panic!"); + KRML_HOST_EXIT(255U); + } + } + return uu____0; +} + +typedef uint8_t libcrux_sha3_Sha3_512Digest[64U]; + +typedef uint8_t libcrux_sha3_Sha3_384Digest[48U]; + +typedef uint8_t libcrux_sha3_Sha3_256Digest[32U]; + +typedef uint8_t libcrux_sha3_Sha3_224Digest[28U]; + +#if defined(__cplusplus) +} +#endif + +#define __libcrux_sha3_portable_H_DEFINED +#endif diff --git a/tool/speed.cc b/tool/speed.cc index 4390e1e5d0..bca12748c8 100644 --- a/tool/speed.cc +++ b/tool/speed.cc @@ -42,6 +42,7 @@ #include #define OPENSSL_UNSTABLE_EXPERIMENTAL_KYBER #include +#include #define OPENSSL_UNSTABLE_EXPERIMENTAL_SPX #include #include @@ -1132,6 +1133,53 @@ static bool SpeedKyber(const std::string &selected) { return true; } +static bool SpeedMLKEM(const std::string &selected) { + if (!selected.empty() && selected != "MLKEM") { + return true; + } + + TimeResults results; + + uint8_t ciphertext[MLKEM768_CIPHERTEXTBYTES]; + // This ciphertext is nonsense, but MLKEM decap is constant-time so, for the + // purposes of timing, it's fine. + memset(ciphertext, 42, sizeof(ciphertext)); + if (!TimeFunctionParallel(&results, [&]() -> bool { + uint8_t priv[MLKEM768_SECRETKEYBYTES]; + uint8_t encoded_public_key[MLKEM768_PUBLICKEYBYTES]; + uint8_t randomness[64]; + RAND_bytes(randomness, 64); + Mlkem768_GenerateKeyPair(encoded_public_key, priv, randomness); + uint8_t shared_secret[MLKEM768_SHAREDSECRETBYTES]; + Mlkem768_Decapsulate(shared_secret, &ciphertext, &priv); + return true; + })) { + fprintf(stderr, "Failed to time Mlkem768_GenerateKeyPair + Mlkem768_Decapsulate.\n"); + return false; + } + + results.Print("ML-KEM-768 generate + decap"); + + uint8_t priv[MLKEM768_SECRETKEYBYTES]; + uint8_t encoded_public_key[MLKEM768_PUBLICKEYBYTES]; + uint8_t randomness[64]; + RAND_bytes(randomness, 64); + Mlkem768_GenerateKeyPair(encoded_public_key, priv, randomness); + + if (!TimeFunctionParallel(&results, [&]() -> bool { + uint8_t shared_secret[MLKEM768_SHAREDSECRETBYTES]; + Mlkem768_Encapsulate(ciphertext, shared_secret, &encoded_public_key, randomness); + return true; + })) { + fprintf(stderr, "Failed to time Mlkem768_Encapsulate.\n"); + return false; + } + + results.Print("ML-KEM parse + encap"); + + return true; +} + static bool SpeedDilithium(const std::string &selected) { if (!selected.empty() && selected != "Dilithium") { return true; @@ -1777,6 +1825,7 @@ bool Speed(const std::vector &args) { !SpeedRSAKeyGen(selected) || // !SpeedHRSS(selected) || // !SpeedKyber(selected) || // + !SpeedMLKEM(selected) || // !SpeedDilithium(selected) || // !SpeedSpx(selected) || // !SpeedHashToCurve(selected) || //