mirror of
https://github.com/emmansun/gmsm.git
synced 2025-05-10 19:16:18 +08:00
191 lines
139 KiB
Go
191 lines
139 KiB
Go
![]() |
// Copyright 2025 Sun Yimin. All rights reserved.
|
||
|
// Use of this source code is governed by a MIT-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
//go:build go1.24
|
||
|
|
||
|
package mldsa
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"encoding/hex"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
// https://github.com/usnistgov/ACVP-Server/blob/master/gen-val/json-files/ML-DSA-keyGen-FIPS204/internalProjection.json
|
||
|
var kenGen44InternalProjectionCases = []struct {
|
||
|
seed string
|
||
|
pk string
|
||
|
sk string
|
||
|
}{
|
||
|
{
|
||
|
"079EAB79AB14747CA01582B59F2624191B0C59FA219CDEB79F66669DAF0E695E",
|
||
|
"65406F1F72E6D3485C8F8AAEA6F44E59123D4FA8FE7122DB24558D2803CD3488562DBB70D635855595EFBDEE015419A0F727AF55CE5AAD68B4CF637EA3B336FA1F2771A47D7AF3967190BB7BB3F6E4CBC0765DA6188EC38674D6839DE9099EFF09DB1992375C68A5807127685373DE558EF2148CA557B9103BB68A3442A0EE485DD9CEFD1DB6DB73938E66F33EFEAF1F50F517058C85A26A5166C58AB7F03561E4331B1EC15AD6B562EE6222F1E77105AA24AF85561CDFAF4D7A23E56F80B401437EC8DF8BD038388FCC808FC7B5F04DD5C9E725AA7B33C2F0F58F09CEADC462972D15D92996826A9C92A70F7733F86A437FD1AB8A44228516B3067209CDF947A0F8CA4A2FB6DFE531852270C461A7809F08F67C79E01E1343567EA1B6E8F33F4C871AB0885D7F7A74763051D17D3B0024CABBD2202A10E92DB95A36B0067F737BD110A20301CFEC9673D311658CBFD8C4A5DA8633B236E5AFFD1B1175A6E80F2F2ECE869032306E90B3866509DBCACEE4C02206BC9F51572BD89AD918E4E5467519F3D7F288700B66C4EA0DDCF8C5477D4B015282C2AF7648E234E139298DC25840C946E33A5F4B9B22124F7D44D7E613742EAD04124A5C79579FC166BEE615867DA5AE691F819A723D55D66136869EF9D360E65BC1EE53653BB9C86F675D40F0E5D613DB96F1B4898FC5079EFF0A12AFAAF73BC9C3B8A325C6B0636098180977452024724EC26247E2FDCA9F3E040DFD5690E1190E6BDF15001A85159918201EDCB4D246076FD9B3729C2D0324851BB59AD7FB232C01FAD2CF0F2E42F28B39104077E46183C9198714483F840058E21C9FFE6B1B269C0F6F50AEF13F0B0B14C7B8031E37E7B3909A73DA0550B7503F78ED74FF78F697FA9985AAE13F7195A89F85B1D6682B58318D363C051396E2FF4098E04CFB1921A62727EFD27E205ECAB25A89D9ECD79EEC9D248294DCCC24855D6E4C7F55232994208BED3410BC5BFE0EE0DA6B6B5ED2DEAE992A73AA0BE5AA4D9227B8FA8A9AB436C92F9144FF84048EB3113A0532EF95384DAB3E49397CABF9A7E8F4CF3D031AF6B290358BF9C0D73D475CCEF219416D26BB7ED450D88D2332F031B25313A922E41A23139E0E1530DFA2DF4CE40D0F8EE9EAFEDFF307F9E49EF660D08F038CAB61074325E55D445106C14AB26B1B488D456BEF526354EECB75D70501D7BE54C3AC5E55B1114C22379E91C7BCE36F8F243CCF6078046CBDDC51B2E7B5142702834A156B7D85E206BA90DD3579653656FDF5CC98DC3DDC82A5E07D6535DE56C52A9AADB2BDC0B63B4833EEF75CB92C491D167AE3E2A33828B22CAB98C61701127332590D2285224623F603068B3E7A746D6817A48B681AA52237CAAA803E2C7155C67820AD3B4E3B88DAB30352DA6C5D2F40FDBFC3A74685DDB755417EC8414DC8D61C19BCF8EA39BAE9F8BFE88021457778B56A639C317A321385FC3567EB0741883BEE08F75AAAC4C10581D905383B03F4F27431591DD648045FD82DAB4223958A726DA9DE58B30DC9E163E4531B768EDF447BB4557E5E4E09C2DAE5A826F43F1C5732A2EE4632BFBF765ACBB75C98390A876B7C83AA040EB86B1220FF41AA3556CE5CCFBA0D8A4728F8DA735772658C9A49EF9774EC60312122FE1B8CAE1AD8ED88F47866F74FD4917F011077C2837447F4F4365739043074350E489378BD7340DE9D9802D17554C2161AF23FAC8E50BA22B664C716A46010B1A1BF2C69B6BB0C262DCD8D11DC455695ED3FBF9EFDDA12AE93CB6C3B6E0B727B65606682914EDFEDACA8EBC7954F2D6168C2AD8CAF49D956D41B1289C02BF90CA2E1B2CBAA965823CEDBB6B42827",
|
||
|
"65406F1F72E6D3485C8F8AAEA6F44E59123D4FA8FE7122DB24558D2803CD348837D32DC65CA73C587F803E9B53F140D6CAE9CBFFE502668F2E1D78DD902EBF35FF1A249BB30421EC242466166DB44F09734545111BD77975788D35AD244A1A70ED800F1BA9303493B4170F36510FF6245801C17DEA830B9B87B4122A7C22C17E909868D38270C24882201365104689A120281C3388913061891891A4026D01897121286E0490609806701409720C06684AC09100878421386922096AC1C48862828C6442510094314A382210198010148EC8B80840802C58862D120350D14271124929D01240A42471992671531060C9384E53284E100992A2C865099630533090C3122861982541A28DE138120885290C4100488090CB164E19190D11B4515C046ECB404C21B750602660D9184A1A280844026014060ECC122613040C48466809212A134584080181E484818BB08120184D5300265406490B2711E4844421360E9BA005893401CA0850C320885B060E20A5401233421A20860AC2484C086D53869154046E50162C04092948C6709BC0890B139053A611CB28818140681136041A15421124410C07621C4888E0B424D9A010C0A28D21008CE1B80581C8206190500C173144221148C445C128421B986901153291348D5AC08CD9266288A6251336296034455A0608C222688308521B228A42C84CD834129C484A19C9481823088C046E0A296D1B4601DBA84013435243240641B26040120661405020844CDCC849C3249012B528D0182A9A2030022391E1C89100A98C24C37198048101396D1C0151CB426949C271201606C1284CDBC84D42420AA3427219176C24250C09398C49882CD4B60DA2964123018E03220511104518220508286E18B070A2247109992C5C088E0BC14DE08601A3941144344C832009022805C838621CC069E09660A38240E4A090DB486811A02589368100234A10991019046911A12C1A419043382D48346D24C15193900C20C16801244819199000836C80224100984C24232D12C86408C27188A061A4363202114A64466812372821C911220104A3A44D2418698242089828518980299238440BA62DC42429821609DA4805A3C0691443708AB6910446890C154DA1C625191471CAC06461440592C82D83B42D0B43668948321B182E11C724D09244E3186D63846002316EA2221082B47104C451E0122C50B64022852D90203199962DE4B850010349E28244CA248540386500408800C0291441496AD64D46CB269DCF0B473D67C86B46F72EB97AEF1509120C8C986BE704CCB20CD9B91190D8D77E4131B29E714F42906F6044CAD43E095877DEAAD80DDCF36D14C4CE4A13BD691B165A7EC05554E31B62BC8B11E3C6A9F1FB1C6FD4B83D72FED1F35433959B2956467BAE93102778BF3AC688E5317AFC982256F75A00A90128B9E15E6D82C7CF2C056E1B6F03CE4721CAAC73F02E784913EE4BBA1534E879B549591FC6F5E3FF6FD63FF77443C0C924649226C72BC886811FF2F344E0FA9809DEF8B66DA512ED2DA2BF3F4A7F77BCFF948CE615F3CEEF127AA7A14B99E36DFBAC9986DE34E5508F509EEE917720E8A8CD36490B6027A877372266F77DE65A184A2C479DF7B2C140D972BEEDDBF2922E0302DABE44DF18204CA2C1313BB242D095884D79B3E34B0E301C6C63B816B84896214040A1DAC9F618EC30064FE93FA91225D4A0F58B939F9415A81F72EFD52CCA545B549BBD0BE2FC4561AD59056C069283EC81D1EB00D7E8F2EE415E240060B140145D6F1BD14EAE7314DD09EC38D46836B91B13F3E0F879D5086CDE1626F290DB404E5755CEC6E38CE2E488654A214907AF4B3CE8E5DE2F2CB234D95021F00DCD6633C97FD906A862432F6F722E2F5B71096AE8D0E2663C68F9490791AB9A4F468FCDF7CF42DE43CFF199BF7331ECF2F3FCB4AC9EA08633595E2488A89E46B121986BC7A0AF4730CA326D2D4A0E26ABFBA6613BD415EECC13A7B3D9FA4CF194C40389CCE7F3CFDA82CD8422B66BE29C7A8974ECED7E855309A016E428002869CF0CAAEE4439EE1B9F12281DA82396BFDE326DE439AD9A2768A50B268FAED78BFAD456AE079D9BCCB08BC40FCC6E202515FA5B0672A18CFAAAEACFB39D3BBD1B492AD8740B1FEC1FF95A680474DFF69BD42F435702FA3FFEE490FAF12A33DA6C365522BAEE47C79A1DE1D7A431AFDE00AA77E5348067E27459869CC748E87B34B029FFBE085394C1258E9512883B30AEBA032877E8C9F5F9F57AE9442CCA6F5782A03F3171BF27CF747E3F1B35C64BE5AE8A726C4EB02CF1168151DDC3703E8BF7A9A92D5E255EE143D07EBCE5B4EC9A1C467684993EE10907B33E77E5146ABA29B6FF91A28181B5CCD6EA918FAC5E69E67DCCF0CF75F2BDDD58D19CE2E36791C5CFEE515421651FD603913422A38B29C2B5E98EDA1E993280070DD6D229FB50807F99EF702880C7591149BFDD762A47BC14386D05519EB4F4C5DF4A1B50A38F3AA220139880BEFA8CB8FF1A56FEA6773F832AE30959C09B8EEF7DE21B9D28A2CE8649F82C27BA6BB880D884EDADAB2B10D72E191A8EFA8000A2A2FCC323783CC250D029E307ADFE081B6F4F7965F5587D97EED44C100867517E3642137A94ED5CA6110DE4A415B2A48DDE6AA452EAB9C63E194F66C7C32257862901943149EF61FC605AF0CF661E65D00F101FD3EB628D9969E3EA8C1A897950DC1FDE732D0FF1E1678EB22367B0D924BD497961075933F1761B29A5057B4F3E38AD48778314708CCDDC5A39D0267DA06EF0343A6F637143D71DD0FBD5D25A74B68523A150291486E210D2EA4D4D125A2417CC3FB24D30072AAF6AA43DEE0D13DCF3D781202790EBE6E790C193E05DD0F4ED7C4F
|
||
|
},
|
||
|
{
|
||
|
"22B8B2E0107C7CA17DFEC8098C05AD75CBF5F40134F24E0FF97E951981962FAF",
|
||
|
"CFF7D82A194D182A022653E7ECBB92A43D4995C2A2AF5372FEA8C29E89BAFAA555BE1010BF56598E772B22600DD2876118206C1E0E215773183534736D6467A8BC8A14CDEB65C0A09AD3C1CF74C5B3C50B74E2D0558549DB7B03AD2D29524D83F62E2E14E37C59D07405D031A927FFDAB5F32755EE3DF13CAA115A41B00BC947EB91FD84C3B7BC4B4C9B398932087DBBA3C412630F902D81D74767975B2E413527CA3222F378C59FACA6E99736FF07AF706DCBFA0DAFEF77B86F88A1F9942F8BA664DA9766E698A9AA583669DCA4F1476C5697ED33BD49703DC1D82BB37D52141EA527C9762A0772519A3DD506FF158709FCB7C0D21D31846FE4657BB8CB0DFDDC7DC78DA55D7CE29E892127F7EB1E977C4FBA4D336DDBA96BF6A27A91515CD85E9D7A7C3EA33D220AB5848A6A47B93DE2DCB57DD51519866214ADA3180DB4AF78886199D4D2B0CD501D25377CFA586A0482343D564EF321B238AADEAAD589E9595917C72AF4793976D0DFF90490791078D4FC2BDB806D48C8188C7254527F7D127BA5DCA54EBB06AAC890121D42143533CCE370B43CD6C392FC77D955BE3A4EC80BB22837503D36B29F0657D92B2948801683A174BB390C9DDDEF354C3F157915EE66AF9D04D729A02250321909CABC3967F47528B640A8C2A39ABAECCA7186017320FBF981AEF3426258787CF0F50BAE8BF68A19ACB52D650EB69AE697C1FDD7916F9D0F438187747F34CEC760C4F9B486E115085EAF4BF6364BD2277E8707D71603A7966545E0A6BE128C80983FEE509543842482C41E9660E7BD85DBBF360D426C1E88025E9BB70A65FE7908CAAFBC334A9B81E2B2E36C90DEC52C05A8BF92EE127E0C968F0D76BAD9B7055F0F66535340A251A8B1499629C3E86C549D1A243C8003A778C1F4F6645461D2DBCAE33A998489FFEFEDA7E371D4A6E389EB477179A804B7E4381121A1E041529B91E89D67DFF54A7FA5ADE4BAC369F1DA628D8B1494F24E6C52F6E74196E80488C58884D11199ACF2A927D92DB895DBF29D18134127C11730135F32A9667DB10DFD42EA93CAAB00B79B15C0078BA303ED4A2FC6056F2935744AEE406B3E0F3E225A998DF014B3E1A47F4E39D916F48AFD3C1924302C459063344E88704AA3A4078C326AC19F5A7F03D6E4A7AB4B265C2B2B28BFD96514CEE74F3BCFCEB5EEF20A8D406204BA5044A762DCD5681728901E499675FF559A11A39FD0B5FB3DA4B863652E9FC0F1714F4EE9759ED34E304E9AD5D9951FBEA453012C6E17C34834003B8955F38E50BA9352B2F1C2094DE33F98522DEA2E5A5477A7D6852B97425570C6286A9F7F457AA6AD49F05B1357D12CEF8532F37894AA9E5814575A80F3DB8FBBCA0E0BABD478AC8C9A981E09C501779793C7FF8D04FD4591597B83536F841E80D58C5F00907CE50321BCF8782A806E9CBA1716DE5E9A3E58FAF9E7B749CB2C0996BD1DE3CA8E730CA998B7D1F7F031F6136368B21221583F0D2238418C23F6D7C774630E38E2C783EFF741EA98A9DF632081ED5FF9B17184D1418F3818920787D7DDCC40A2053D04E272A2343E89994FB283AB12EBD92EA45E28CF70A2BC43AE4E0B50006229E5CD479A45ABF94725C29EE1220C71317E99004538DB2FB0E3A2178EA1E1C5016DA6D310BD173D43438872343CB02379BFEFE445487E86C2B89DF8F6F455B884CB36C6376EECCF2B6A2CB72AAC6542378B879C120C8C2B076859A51F25F0E756C1A482C1F2607F27773F21937288352C4E74BEE5B64B853B5977C4BD3324066D07D86D6126A112C3C07F34ACFDA65A531B82F4F7D9CE73FDC5D9382E91038C72D6B9C4EF3980D2F74B300152",
|
||
|
"CFF7D82A194D182A022653E7ECBB92A43D4995C2A2AF5372FEA8C29E89BAFAA5F48FED8615BDD1C92186444630394EA8A69E8B7415158B6AA508117D9CF4C4B220121A76510A66426C8869B9518399D42AFE37835ACC89938AFAA9E80C8E960227DDB44845CD1A3B488A79631B12CE365B9BEBF59EB536CE3D503204F389BCE31492404C122A5120081B336A40C84493B62D44242E49262ADBB440A3406261402C5C10845A120E0106025AB62C0CA845D3B83019354600276CE1A62400A261C8220ADCA86D043431E010654C926D1CB16DD4102DD24671C38688C104880301700A2520E1248082B22408B361232260C0C281C3A40843A2689A424908A58423B060E3242961A6241B058202446680C22D0491911BB351514271CB0869A2422E22862D5A3442E30831CAA2110C474404A7445CB82408011041420818A1101BA691CBB049D9408553222A1B3020429860E3A60C9B1086DB246804988994C8011113914424068BA42449804413212518001120070824452A01818D20862160026A1C246698A648512802D1861180A228CC10041AC8641B296E50862820478E13071148C2449BC26D19810900434903494EA0B40C11816060222E8AB40D84142A50A824C4C64DDB36040B116D40A02CA33881DC8061CC860104835162A20D51068D8C240D22419102486111320AC2084C040426D0A805623629C4343208C86D0412322040080CA5009200011489718BA230A2948592067148468C598484843030DCA2291B072D63188A0803001A2185DC106621C04CE0B88CC8A44189A2409330020802840924885A448612224A9320824AA60CDC4471002671DA04011A185042A86503C545D2108941466942448644C2319C4800912045C3B63041366123258611870C03218A1B3781D9C46D93A42C49188C59C6690B2045C8282511C8498A043101286A5808640B1490DB846984A8310AB8099C406ACBC880C3906511C24923B570D818904A060262120A1832661A19254390044C906840C681D0006A0496040207122034295432200B250812A340029008C89251DB34091BA041E31648990425A4224500194A94483062401054B47094940D61362842B060E1126C1C94914394441CB7481BB48093B881A4C04549A48888966481C46801498D1B348C10392CE398208AA4081A822422926D12346D9BB40C1CB0289A40659C048180906C5C100CC8988500170C88004251366463400E23A6708486290304444A260689046E94886430BF5903C8F73713087776B5CAEC7F4B9068318F9F07E7B14CD374C8C47E1DBCB066FC4B97A6EBB034045D5E3B921422C68021B3E92C2A7A14C6F6FCC80D21D1402EF0BF0D64881B5857BB6172362B08BB532B94011372ACD3A842E083C1911DE8EAA027EF202F9D8BFD79FC3B8853C066C39571CE590207E2A46B4CFCEB1C77DFC0BFABC68E572B55753120D6812F78B8EFD960140EB05DD4652B4F36548C731AD2222DA60FB20B3AA2C98823AB8C5248ED90DD7258C3AF4CBE81AFAA6B743C1040D2BDAD748F591EC3E2103BE0FAAF8C5823FAB57946EDF17A5936F765B36F7F266403DE618F25ABDDB1DBBE3BC07B26B0616C7BB373942870E7C83EF43FFBFCCC3BD5D804BDDB7C8AFFC9593839A622840270FAD8B4418BB5BA60B4A028F9FF422D95A1546804468F6369F9F4830771A803C8F53A3811FC2F95635F9ACFEA5FA870CE477F906758711056820A8350E461D29264F1E48CA63DCAFB5E0EF86533726DB700086BD9EEE2053F1CC4D3D5A7D5626BC142CCEBD0E86D0F63FB69DC10B48AAD81C43668E1BC263E9DDDBB2B6188150AF94F755F782EE9A84EA13C5B64A9460E479A9B61BD385E2323AA8CD8ECE37872A56B136878F23A6B2F8AB4643BC4C612D1EFCC798E2A63F7849480E48B80C3F8FA7651E19975D291DC505827A8C96062BD886681A8AF88CECC5E7750FD0F49649807429CEF0BB21EA4CC06B7B949E47FAD7A91F0E3836431C35D27A2B115CD50BB895E8273AF1D35E888504AAB42E6096FDF2DA2F3CF4166A894AB99CFFB4C725A9A76CC7D1759D98808D3357695B685B53E3BF216E1670F858D6B58FBF0346E0D60B3A304684E0414CE6E3F235609B43F6621444A330107BF1108B0F28CAD163C81394CBC1CE58DA8531EBAC480A3EFF1E78FB44628F6F926D68A32348BE2AE71FFA22351CECB047A86508C96002E82D6C43CA488C63A2D6F0ADF897E0B1D8C68A999EEC2F77D597FCB94BE4490914C16D80643E17A323009656CBC85FCE6D85CF4EAC0EEC73B10F055BF586DBB743C0085C2D55D2B2BB1B58484AC5AC1412ACEB78BDA5584C64156746CDD8C54FEDFB8E33143BD885B603B8A1A0379EA7C0648496D0C4F06E25048C8FC61C3A203EC2DF70F540EA1F00D5683578595E2073A0C8D87B35A0E38BBB95A0B621A4138E1FF8ED7A246A2CE6CD0EBC529EC0A093E5838A71CA963949EF61F2A8A448839A203B0B351AE33AB557A1291D501C36FAB9EB42F5330AEC408849A2A4811034EF6393BADF7BEC392E77D12D3C2987ED35D29CD263F4ECD89A0EF18038983687412E4E2276698DC8781C1CC7FA340CBDFAD754C435AE1729F2F140DC4A7C315C783CEA727C7F8F522A26B03F3498013CDE1BEF70EF87B55F2883BA459C41A3F5608B2322E5910CCEA08C073A3CBA4067DBAD10AB197F728B8F111257B33736C186F0E1F16E2DDC9394767531F0A5C7C1A34A68548C0FBDDD61087C45D144429266DB1CB1CE2AC831449DB76F98BBD6C5F72395D59D42E91517453959F24C71E39CEC7B63808737B75FA18C9597A8D1E15CFBA8751DB700517D8D7C922B5C39B05FF164AA51BD4390A6A761AE17BAB1884ACEACC1BF7826EF6C9BE17
|
||
|
},
|
||
|
{
|
||
|
"D9F891605500D2DC41FAF794BC21327E19FB7A09F64CA6FAB3F71E1D304601BB",
|
||
|
"EFBA808A5F745EDE4DB9881265C6B7D9F9C3CFEF37FC261598CF4B524F2C8B04D899488ABCE7D5F8FA9CDCE28DDEC4407FF2502395824BDAD0B34BA40686EA34B3B8227B03C7109C5CCBC172C92805099518B17CA2237BD897FC03CBE2694C68E2909F4601ACEF9A7CE9607F4E3599B825E4466378E0838E953E65F83FA919756EC744AC15C7F46810B4E9931CBF57CED4C4152C9E995FA4FC71EE31BE5B1D8482D29532C319ED97AB3C9C567985EAA0AF5EA816A14D6E928C6BFC33906EA1D3CB80E706B346FB34CDD8B3881BA6D625390C2B4A7F85FD5BD306F54BF26815C5D0322648DC29D3DB6715A05160E412F30D3969EE0CCDFADB9091EE71E6C59A20ABD399F99F275A219DFAB42A9DE32B7BCFCEE4295DC18D7906D4F7808444CA86E35EAE1085BD12DCE68638309417AA748657A0F5624811BEF606E95CA6F94BC97D95776D551BD4D7F33F89C4F21784010C0224414AB9AECB11E035DCB5843C2003FAB22922A1D4F8EE175B7BAB6501DD90B062BD2962FFE68645AE47AF73F648EEAA143CABDCDAE8823A0A3DC625E6CE9B00C24F6FDA28DC2975639C72A6B0ECC47B4882BCC8B1425805EB7255DCD272938BBE5A65BF6688958DC969B40B01915135D4EB74162CDDD0D23E8492E20F4B442B17900AD2CB1600900FC2106DFA4C5CED38C1E9AADE84FD968AE6FE40602288D4588C899AE928AD8E2382389B28BDB67E7CEF8C29EB9A93764CB6EE4B08BA56B7C9F8E178C4824F1A33AB3E5CBCEA81CDAFCDC4F1A42A2446B35CD4A730A89ECD64299BF95284A626D8948784FA0A1BE80BFC75F1E62E5A5018EF38844CB2B32ACB823D06C97E039CF051B7E479415CFFA6A9E634A8DB38B8ADB844FCF04B2679A8D0F0F7700526D38A11C72F39A8BEF1820FE876CC2E60DBFF965C75C6BAB66EB18045D693E06563E866F5651463683A2F92C487BEBE45367AAA2354F05DD31A44CB1441CBDBC0849C5238A38B179E00B93C6ABD9E4573A51590581191D5228E9D750D645AECA86BC9DA574EB72D2BDBE89D55564FEA68D1E0A58033D43C0E15B2D4A2B65C2216FD057CFD599B359B4A3FE2274428377830B805C94814E0385586BA5428D846175B382E598F0AD999C6A4E19CDD989E9C9E8745E000B800C2A5E5D6E6BD7944B56E1F8B69B77B95E6710E89EB7320D965D7712C676BDBD7533B5F1FE2A624F992B639142254ACFD2047E2F48664EBB2AEDE2E4B5C734ABE2D9A219150CF777A04894FD2AC7C3B61A8D64494961F87E78C44A44C95565047BB4B93969AB31B92CC753AF4D9F24EDE908D9AF17D28CC197EED11989165D30E69B5BEDB243F72EDBCE74F6F451E14AE3C9D7CEB37A3F2004A0CF10C3F9A7CEF5117AC115BC2BC2B6C184612769C5625C73BBEA1C9712FB4962D67D2CFE3487C80E5B6B79E3B3E928F9E154D8764AD947433785F5CEA600C864E19DA6676939CB96B7E9A32293ED105FFA8702610E2859A161FE04546A3B05CADBF062A089B29B65755C80E034C29488394CF1C265409AD9D1664D83434DC768B57F56751D35AFEF34B8ECB4F25170A739048BD197EF01C6240DF31C2BA7ED60B6253173B0BA02A7EAFB49FC9339CBCD96D9978873342D9542B233E10194B1BC224CAFC3611C23FA42AD97FD6F26598187E8A683317940ED057F8360ED3919DEDF3759A4E3D2C177C607847B4F9F4C05E885666F15EDD8A1F8459E4D1774ADD1AF51173D4D703FF9E6056742894C6295D135D1FC566EC67A6394FD88FD19712F82DABBA57FE1FF46B2EBE489049793131E25F1DF75B57691974DF0F70CFBE7E322FA9F2BF798FF4633E36DF7414C82F45BCB17B504849",
|
||
|
"EFBA808A5F745EDE4DB9881265C6B7D9F9C3CFEF37FC261598CF4B524F2C8B04F89CD31C1C78323CD70F04FE90E022C32474D1BEC6FB99D5A3F020CADB335A71F90B25013B05F0360218C09DFC853655C7144B7664EE29A57DBFC5E8A18AFD5837E1B8C40F9FBAAABA4261C10789A8D010468F2F17ECE83144E571D33829CA912224525B80090431921A239059C01010436E4B1442A21241DC9450531284D2408A80A681C0209291445058444D8A326A1985001CA06861046451022E13048090C6844B084A22143199008189928C20B95041A605013412C9028C924262C1908C40A80C931849DB046DE1B880DA44609CC24CCB16691A3620C8326403450191C28D84189118210A8AB6816324319326805A1061DB9005CCC45148006E04042022498DE3C82510067159C02D93160ED9B664D4160081920901234C5340419A860008272A8A24610C921142B200021944620811C81252111012A03850940409D09001221962CA2031DB848D99B40184442462282404B470C0B20DDC40061CB2910C1068A1308423430E9B400952A82563B89194008924290E8C06888914699B1685CA48924A406883148D13096E84088489220100290D1AC42943A26023B7849AA65149981158982DDB166A21A7718A30044C8411A4A0208B082CD8026484042AE1C20049B44C13348041B42D4A009094906D218971D2167252C850184450DA96409A128093904820066E89964C943060483206D8004A9088499B2224C130708A042D4BA660D8B64500051104392952B4119B460E80B60D50C00523476CD80021CA10420C16701200888830504B9864D80069D29884010929198061202065C028858B824D1221721CC304DAA00860048801B181904601D114410C452D1346280A426584A85192380A09A108148041D018685A96110A362602A200C31610C39409A3966812A630DB80800C89441C48055B484A88986898966C93320011924418044122122462240A940091D2306ED190250A372040B08901A50D603642DB82690B412E1233664C14259C4844242860232392C14408D098311427455C3282539025244309C42005DB4204039721904666891009E122400431800A2948C2029114116D81C00C9B888C231764D94041049430C0B231801409C12664C3068090C62850288AC042901B484A0A4431614030E1B6914B022A59008C03157002C3415A18080A2264E1466ACA00715836615A10695A240AE236528C204C113851183152419068D38D936CBAFC6D0CABA726F52D83AEEA8A3FF05E4255E7F63C029B9073A91EE7F10A6F099B1A4B89F76040FB3E47D0FCDAF3D918D45E4F4DE50CB74FAB524AE5F07EC05B52BAB164BE6E8D8CCC46AEB65821156B61D41EB183BFB26B33903E55F5A2F32A861936A86B5188286333383F8AF64BDEE081EF044EEBFC1297002909623F3602CA4E5E3281BE187642A758AFBE099D2363F128760C5C8E81D03E84362512BA967AF992FDBE7E296F15EA565930410D3B7D96B8A204A43A2B9BB1DA5F84D27E881BB6FB03A89B9366C3374ACA9FE67FCFF01F6E50FF36B83953880CDA97DEC97418DA486A5E0793324356C2F9DA4C4DC93B0532EFA505E499E03E351E287EBADFB8A03A2254B4CD613A800FD1C1C8C01B8FA4C38C0A0D9282196479F00984BE1BF77A4D4DC68319043AB4C5750461FC52298E9487B82D22E5CBFC6579A8DA9F76166A5516E579FF2C40A5F88F6E4FE56B91BBA46C861E2E8C9AAEB246966525C53D677C17FD78CCAC73118DAA7BE06CB81505AB8B0E8457A0ADCA59A8C9E81770A040F5B4C8FDBBF37B8F045698A5454A9E27478FCDD8D9B38CD857B99551090C967B12234B866B420BAAC46CD142D503D5DFE2D6491B425566036908E7C688B0D276CBA051E65CE7426A22F5B8B7A174571214EE917082A0B2C86B56AB246E93537422270425478BA48DA1A7784D65E9CC9018924EF9F94DA1FFE7389C1F77DD1685896E54BE9AAD552EDAEC0F6805BF5E0BFB7EBC57687F9CF6246E5E19FCF5B8A426DE2BD7868FDFE9B80E95607EE9054F99A62DC7D870B34D72636D2F1FF83B137752EF110B3FFC8507D7E2653DF554BB74C37C91E94B2E25BF2CCC6E50364951DF8C8A3EBF90A81047D3E916C11A913B5186E835033D8467B91B1C6CE39988F91209BDF8CAB8F51D1EEF05E8278FFA330A3CC019BDB1542065B483B05BC1A898607EC5ED10889DD1BA4FF7D07170C43A20D50492C068DBE45CD07508A3E3508EC6AD676139E8328F94705A2BD70DE411686F21659B4F3E79755C56A8535969BB530B3E87CBA4D82396E9155E9804289DE2A86345004C28210D82E0BD9FE9ADEE4914988991E4AA972894D1B1031B72279700B798627E334AF56BD03CB9EED6A7017F91A1664BEDB4AE4AA563F6980BFA5D4AC80C14BA7E78236CE3E889205E5E1BA7575504EC67DC4B9EEA4B93EBD3A405A581C48082972A26E9A01E6A0B207494203C3A273C6533C08BBA75EECC46396924C5F1423238AD900C388C9B00DB99C94CD429DC11AF68EF12A1F83A6B78A3CBF3B2F29AE2D2D1AE120C248BF8CFF2F89E3EF090E325A33F204D8295F1668C7AB5EBB4CDA2F4854FC77D407C7B8598D0E3F5641FFD38DB6E01B31AD6F0AB209EC6947DFF80970DD6726500E21166A91887C46777A1CD24A3EDFA94509D26EED89703A52DCF1D6FF58E01A03C20D0EEE2437D96EFF6E352B23A2253F9CDA80968BFE14F2E95DE9B25669F8C5C9CDF12A98B3AAA6D8D69482D39A1034F301A4B6ED56E2BE39508FEEC76C06036B84A19767E137DB94A56A97920E9EAC512CB689FBC8F952D298C658CDF2B3679FD7FEB7455544D3BA96BFE5EA43E31D0879E06BAB7EB0A60D24529
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func TestKeyGen44(t *testing.T) {
|
||
|
for _, c := range kenGen44InternalProjectionCases {
|
||
|
xi, _ := hex.DecodeString(c.seed)
|
||
|
pk, _ := hex.DecodeString(c.pk)
|
||
|
sk, _ := hex.DecodeString(c.sk)
|
||
|
priv, err := NewKey44(xi)
|
||
|
if err != nil {
|
||
|
t.Fatalf("NewPrivateKey44 failed: %v", err)
|
||
|
}
|
||
|
pub := priv.PublicKey()
|
||
|
pubBytes := pub.Bytes()
|
||
|
if !bytes.Equal(pubBytes, pk) {
|
||
|
t.Errorf("Public key mismatch: got %x, want %x", pubBytes, pk)
|
||
|
}
|
||
|
pub2, err := NewPublicKey44(pubBytes)
|
||
|
if err != nil {
|
||
|
t.Fatalf("faile to parse public key: %v", err)
|
||
|
}
|
||
|
if !pub.Equal(pub2) {
|
||
|
t.Errorf("Public key not equal: got %x, want %x", pubBytes, pub2.Bytes())
|
||
|
}
|
||
|
privBytes := priv.PrivateKey44.Bytes()
|
||
|
if !bytes.Equal(privBytes, sk) {
|
||
|
t.Errorf("Private key mismatch: got %x, want %x", privBytes, sk)
|
||
|
}
|
||
|
|
||
|
priv2, err := NewPrivateKey44(privBytes)
|
||
|
if err != nil {
|
||
|
t.Fatalf("failed to parse private key: %v", err)
|
||
|
}
|
||
|
if !priv.Equal(priv2) {
|
||
|
t.Errorf("Private key not equal: got %x, want %x", privBytes, priv2.Bytes())
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// https://raw.githubusercontent.com/usnistgov/ACVP-Server/refs/heads/master/gen-val/json-files/ML-DSA-sigGen-FIPS204/internalProjection.json
|
||
|
var sigGen44InternalProjectionCases = []struct {
|
||
|
mu string
|
||
|
pk string
|
||
|
sk string
|
||
|
sig string
|
||
|
}{
|
||
|
{
|
||
|
"49A3370334B906E2044557D51118839AAB8A97EF68A0746FCA362E557CFA196A4B29254F34B4EA125D83C0C3170AB1A3971D7673CB56C26EF36CB71FCB6465C5",
|
||
|
"6BD41CC40BB8620625090451FAB36D3161BBB94CFABF12023023956A84AA1C7EEAF114DB16DC85414F5969A1672D1810400AC2AB4E2A3E2ACF4B6891416B8A944C6670BE690C5DF284CCA6F770DE9355B663528020586C5397765FDF22D9B77D61744D6691B3A806B1F79AA12B456AD65C92F70C3D382CD1161B399A3442452B5BD159B7320CB73B3344ACDACEAD656BAF9E356C10877611D8D87D33C94C6B8C66F54B63BEA6EAAAB657F659DF7EBCD17EA722C646F97B120ACCCC9E3E7E5CA7672CCFD49513BB47AC94ACAE7CF49ACAD789A30BB49A349BA611250BB6641499E3B2BA469F1FF4BF8354C2F98F52C3C486F4BE05D5D78CA077AC6DBD8054A4DD8E3840DDA749BE709F748CACA7E46DDC8FDCD5507F7CDB62513D1233E03D0A26B5B5BA3C638BF45865B8185DA2078D52D6A426C96575D45C9DB41E0A7D63C759C544226EBC4E8216BD2FCEEB81E624DAB4BC656C34F2E20DF1A08D1F0E94C92250FC43675315553E13199E921DEF79C9CCEF5C15EC8D97915C5D6F6E174043C52F05ECFEE21E2AF71A9B6ED22832B1A6D09F4D6595E752AAB2AD71011739F5761D8BD775B5020FED95C9AB37882FF6F8D0E8AB1AA73D5C74F0E6A4A6F7016BCCC8CC0D8F9E7B4528C147CCBB091B37CA0D5F376E8C6EC8EF7B9D49554C0C955057BD874422160377C8785C8AD64E08AB97F5D7778A590B0D8977FEFA80993BEFF25329A78D274D730CD00FBD9A92B128BAB5960F02948BBD31658E202AD2FA50C3649BE36D0A916D1F8097C3D4852B5279E6441B4ECCF42361C678FF3EEFAE8FC0198CB07378A550EF0AC8D7AD12F0385CAC3D8600ADA648433009D763322AFA003BECCF51DABE54ECE1609C4BD8D3E14836C5A344C9521EA4DA37C1EAD95D212FF1AD5DD7CC15CFB4505ABC545451A9B01BBA2447BB467BD109CAA24106B23D6C380062743B520C4838023984D2BB18A9B7B1EAA136D4479B96D67D3D6CAC42E2904E0147578D2852888FAAF2EE7283A4725F7E006103A2E8E31D21340F648B56E16F8B49EE5EBC2E951F9DF09664C446375989DF2828006C0E6C6F694BA29E2ACEB26317BD520A4B272372939251CF8A2A813513316D507FFD8220477FB3ABD7338559BAE06DF1DE5CC4B26426F0E95DC9A76AC04FEA54C5E809E66E7CAE863B510D572C76A3BF3B011A577B265CE83B5DC95A10810B0123E6198FEC48184F62902E8564A281B036A96D71FC39F09799F7E46551510C8C4743DA0BD7C051B3A87E76E4FFD1B698525A42E6B273F2A359E736FBE5D01715FC3E1A92BC1185953B66DB4E1D0BE46E5A7EA1EA837FF7D6BE43A94D32299DF772F553EA7CEE562427B23268EBBC51A6E2C5A87F51CF5D237788CA90E661E0B43E93E8274BBEFCFAA66525AFC9AD2856AB28AA7544F2D38705A7335456A59E83DC6CD91FD3B64590CE9A7DFD38A4F3E9F7472F75F9DB6FC08C189FD3E12BA82DE42F69D286BCD943E8FB74D725A54B851D07D27AA50ED3D865C43932C11D04FE6E11A98AB8C2E8F92A8984AAB2F8D18E57D978C1AE1809CE12250E26D243D9DF8B6C4403FC40540FE33A9C583FE101BCDAA3751C5C3DA2FCC1B76E0D112486D4D19D0AFEC4CEA9A065EBBFF93733CA58126515D3DF07C6F7919B4890326BF936E12746AC341A775ED01F8C9E42C74784B6F678ED6A6A2E5371DDB7A17A17A6BC58B11BF730E9E3FD32F6A1659F33F8508CE9B78752541C4647154321BBF803A44C57B55C739870F2628DAEFB1758C880DE2F724B3EDC39345B70C771F5D2F041EF35B3FB8FE85BA5589AE7DE339FA4A6F1A5F689CE17378080D9B37B7344269D6A85793FF26600F6",
|
||
|
"6BD41CC40BB8620625090451FAB36D3161BBB94CFABF12023023956A84AA1C7E10F73A72346A7A8F171D5A67C0B271AB9B99504A0DB361FD3B195CEB38C7519F7CC04987504EA0FC5B8D34682E0D9017C7636C3B19C71D4B143A7E7DC7C2040C4DDD73E6D98CFF73DB62C6FDA15F405590ABEC5E01791DFFC814871219F9215003A285241281400681DB84098180601280415340480CC02080820053A22463A831E3B00144820513044810B790539485044626C09468D2327293144E19B108D1C021432460E1148D19A12D542640C000311C32311B4149A3189064924D41C06421144912112213220E8BA82C0019684A0471C94828A2944421916C9B166883308DCC126AC2484EC328802201615AB02908B840E4B45109010E91840404826000B98D0B97815CB6442225641A395240100A09A1690B34901930401A2301199124892448523480D4142A20B36CD4028C9826518A9688A104851B2911C3962918A34C18982CD2348421B22004132ACCB68C98A64C53302E14028D911892A000701AC02C18854414156014214844020193B864109289091486CC8669A19209808069413090D1388401A02DDA808804B48110132E09C529649285D2C84803906803012AD314208B38929CC04403C84D43104C22A24803C46C0481455836660409220B4491609820DBC2456140881922084220459B382A01258E0929484480489140062331484A144A1B016860160422854120018ECB12656486080009500BC529DAB8209B4249C1A281E0B4918A306D22A4454028641A892082B84C1B064E102871D8B27102286462266E5824919A402002871114308DCBC285CB206921943049A449C8242E82A07149B240E23405011466D192902336701C08261A001020A52121C161DB380283B86024342099860C1BA680D84026128709529040DA8461C13441200966E08801DA12125C82891CA80419479024106D13348A122210E39401114246091409D3442C4B962D18472A2428084C0408CB400DA1B61018878040067221B611D4B00100C17024036C6440096148266228868A908C5C868009992850B8414C4466E4286122172694C0689A843001B76C121305193962C2B029D0A60D20962003179148B064531681E20251090468A2906591002583948522932420329020224E0B176484A82409332EE316882091014B348C13B38841B06108050092364C0C03600B914089C82003974143106011C368201466C4146EE20249C08829101530DA0BACF0DB7EA86D4F64F7E3F923E7CEAEF2556B6826FA629F42B53F004D679165D63265CE94D619F81FBB6903BEFE248C68C5B7C24654880D43A3B1CCE8170F488665B63B062A860C9F46735ECDE2D93A1B03FD6A74BC4C1687907B7F3B1C18FFDDF4AD7708D05A1BC3DEBCBFB4F6B9CE5D76413FEEF6D4B15773648A81A46D249043CAC68369F113BB45EC3F5DD0D3134DB81017E6F57A4B920E266A7F55CC7F43090688168A167621F1402F7047FEAEB94BC72A5BD91658E568CCE4A915156F989519DA5F58EDC88FEFB52DB9E1D4939C9A9F3E5F8187A6CEBC72988BEE0D9B1A1EB5B9F3E9A7B06B1097589D9F6FD78391E0B7E97A98B16A6C25AC8838044C4F27BA7C456730253186DEC07F1EB3C7B9780A54686DF288331ACD05886E5DC017C86A2C537BA19CE360760A62303CD3A754793FC2D22A14D6FE3EDF37E0E8C1293F4FB85A7E4E4836A8FF7833A2F789D9832CE1E7E2DC4D2B75CED33B321E3AF0450F0946F12DF76C26248977F1974F14713A4AFF3D4DD1A499AEF4016966435B4B01937980E9FBE56FE68F7C84885E212DAEC6C757A8C979A4AD2468C217B46B3AC36C5B3CC2B7A814F7D7D37359BB8BADFCDC624B39C9E2015D35F950958BE5536679FFE14171B8EE77F43028A39C2A1EF151992568FA39E8296A4169B6D7BBD2631DDFED786A5060200F1774B69B0C1C1F52E419E2F42B897A11AAFD514DDA14CBE2456D27FBE6FBCE53DFA29969CA7EB58C757C65A62BFF1D4836D2303C48713FBB83E7279E9A3BA31A3BEA862D3CE45C170EE9EE6F6500E85A52724A151524951C37FDB45A3A2E576567A9C81F017BA6C62CE8168D0DCF578355AE77BBD5D69FD29F4FB29357F8CC8075F7E56F2CC5FB555AB609A5047FD45C9F1F38680F0C414E026F514A44D79228B2E3CB79043D421B30E31ACEA52760C92C8C126F8650E676BBA76B702F89B360803530CAEE6FB06B7915CEBDB76C107FE9CBBD04FDAA681954326EE65B9C5AA2B9D329932915991A8357A39B37EAA5E6BFCE751ADB1E60171DD6C5B5D7E43BF19F2373F3AEEE9628FD9842156E540894750915934F93289467156F8A4F398192648E53A1EDF4C0F71483126DD39B71DCF8EBCBE6E2A5129AA3951723FCE906853F9A37AC50546B8103A82D844F2B08A0E0637577EDD9A9A9D5D635DA73D4CC83E9EE8B3DDA50F014CD66FDB25D099D451D204198FA6A4AC39E9759B435438B1E272E4FB476208BF69B825E8AED0AD9FF052928BBDCC13A330CCC3BBC4D098B03ACC25A38917BA825F1F3EE69D79573C7E38523B6AF03026B37250D9DB6FB7BFAE0541BDA05D3F4137B3E2E2DA492059C555675F126DA318EF31A2FBC535B25758A8B3133AFE6508BE8298CDC903D2937436DFCF9F495011749FC888C17D26755F1A446F05B82FF9568F807A8480CC9E02F12953E20AA16314C994CC7560AD062D1CD0CC756A22998F7FCD3805075B563BC7B7728BD601993CA3D1F491FAB38255D46ACD1A01408EFF40FC235E8E4B08592BE1C9D4DEDE7ED08C53E93E257DCECD65A704B57C648823673E57757F3FBDFD30EA640494D8B727DDB4E60B3841FB4E38A14F5A01E100223DCF0F54541778ED4
|
||
|
"5D287B60D7AAF5E4996773AA4AB51DB069875B77E34195236A5F22CA9682F918134A44A9A1B87EBC1CCC6D8B0DA3AF6D948F17D50CB8FD8BDFE4590676B492763954A1F211DCA39DA52F7CC84A114CB675384421B312CDF7545A0ADF9231DC9297167BA03862A77D3440398FE60E6621422F80337D8AF6C18ABF348858370A77F52432E4CEB0AB8A1CEB07398BB682C5632274DF13B08E02FAC4385CF5E82F06A1454DDE091DF3A69EDA22C08152238C40828F1CB91A1EC28208E98AC789B42D5EDB4106FC6EAFF83266712213C63CE7768EAE00D74A79CB65025467905B8538F83586B0C4CA84EF5319E0A308BF2A40AFE6C7D870F6F7C949F0C192102B87AED8209EA41DC79D40F7021789C40B983E35DCBE3166E146A541EFB8B513A8353EE9F890D7F1025C32E9ACC9D3EA3F22203697A5A1494EF33C7F170E3D03C6F002CB5C84D64905C6D14D6C33C2809E65819CAE0E56FE25CB09C88BD675C45D08F4F260BE9F57724CAB4E9376AD9E64D73106BF74C734765FCD6DC8B780D17B4A4D593CB906F9AC16E7C3BAE44753B8F1E8583B6E55F7128196238D811E3C7C9E9A777A75FA86B984BE8AC4915474599CBF99290E0D1E1660A646870B3B0AA0A7FC517EF150381FD54752EEDABA8CD41AE34243AEE4E6A2343CC089D49F93A53149FA6CD4A242F7BFD0F0366C3B100E4F2C6CA263E931A001FEAADDB98EA69B9D10557CE4290B313A98ACB0633EBD36FDB23F6FD6F3F2BBE385659234593F7F22C65DDA23DC0995817492494DC8B50E031D929A324F59CD07E5E2165DEBA850D20BAFCEC2A081D0B483FF5CBA4583A8D16592BFDEA97729B47B29B9AF19BDA1853ADBA70B5AEC2AAB737B0C28CD16B1AD3AEA6C41DB94044664290C0F041A0C61C459323CB0BB0D7601CC9818FF81025338C49AA9A2FC9AC21E74F73BC3F6C63E633AE16C808E1A4AC3990C42AA3CC86750AB4C702AE256E02252CA0DDB6535AA55D1661941248CC25457BB359F1B4D98030C74900D7C9C052BAAFC492B7AD5BEC0464B020A007B84FC03BA050DD7DCBA6B3ED3F58CBF8747A8E5AAECDEFB917C12F5A09D865464AB27CB264AA034D176E6332D42C657F50D6FE1911E49D16638F43DE84723A7DB701C9829906803B9406DD49B02A46BB1EBA737D3C156FE561F6CE981D6D478D568EAC5FAF8E2F45DC5D5BBC7353990F3E212EDF5507AF74DF11006750FF4D7E099CA125E70A9F636F0853E3F9B622AFA5E3DFA1423EF2B16EC8E582B4F00F6D24D06CCE72A2A71BE94FB0E1E45BD81B14190F81F57ACF7EDD3FC773973242B0C3725C75F4CA4FC1A93AB729EC3C03DE66114FDBDED6AEE110916DDD661E1C9E295322F24DCCB0C615966154DCE750CB501BB3138346ACB45535062F2A241F3E91F362C2519AE8514E261F7851A0B4453C8CDD448BACE124595B2F871A9767FF67036DAA9E382C58379D0F9A3683A6013C3FBF5E9A6DF3985EC807B235169E027167920D5449EB6587B823504F508CA5AFBD007EB3BE06367081C0E6C7E9E6A40B208A75B7606298938F4EBD251DAF394A5BCEA227CEA803D4814AEC01B3992C9B51170B5F6051798CB8E9F574C5A52AFCB95AA127F1017A11C335696CAD6D66DF6A767841494EA5D788F44688491BF57D5347987CCCF0B8B7935DFEDE5853DFEC5BB3ADB0A459DE9B7C78F6253ED7939B0728E92448A0EF6269640B7131965D2FAFAD22E5778371C74630EDF6608980C853772579D268E181C7E916E6F098D966C9FD96A40E860C87A1FBD535ABB5BFE91BF08D4891229626D5E02E02D58E81E167D09AE6B816E4121B6035A3B7AE2A0D88BBDB3338564660EF5A6A30934E3AC88224258BB8CFFA7ADE5A5463D659153820F5D44956EA9430D9156E18D173C45FD73E1497841E7FD93DBBEA1275C5DC47DA2534BDAED2BBBF88E67FB25083F1899688B227F4DB6C5B62C21DB861B85452F104675B5FCA2EA286523E12C308B7B094B6F6E2F7F982451508FFE5F4FEB0E1D8EB4B3808A4F23DDD80F3FD6DF8E0DEF5EFBF18495D3CCCDFD4D601EF5C9AF227157E3AFFE08B4FAD8255FBC791F8F981B8ABAB8A7E6ADCE2B3FB5E4C695B5EF14BF10A316C9EBA08FFD9DCBE30A5E392090BB1CDBC6EDA50A8D9D2ECE9B06867C909B4CBAD9747486FA5D6B8418A84CD030B9AF1543B28E81D31F4DBFE81FBD85A169A378B3926417E155231DE3F72F732273ADB6A882339B246ADCF25A292B51C5D3DFFD3F9CD6BEF5B9EC3C8BB6A6933BAC714BAC6A3E0E85C56AF7E48BD8836A4DB0E695B8054EBD7C29E03A37971A9423C15F5A233261A19E147C0FB53079B1DA3CDE52E8ABD14079F1FCFDD1792F4DA54E1A4602DDB25841AD4D8072341EEC8975762A879774CF4FCFC76E538B225DE859DE7E38E10B1AFB2912E748D25D1D577D50B99137E79171F29A4A378DB61BF7D513BD67429BD60140E95CE55B381DE6DF46519D27A4AF33A3930681653AC14361D7DF0A60E7492BA766E6BA093C867E4688F34B3BD6B9E40C7D6810CA7229FD1FD9DDB599F194023E74819893A52EB7FC82FA27096671DC2AC19AB85677277AAB9A7DEF8BFF07D4DAF58B647B9750244C243A7936BBF9F2C718CB2FC646E02E3751AFC66B35E0131B7D6ADD7C2A01AC4699EA726C2E70F97CADA7D41E18CBC560B12C150D483A94256EA465867A622E82EFF21756FAAB96568FB21D0E041EA352017CD443EC573F2CE304C81CB9B3B4199992C1386A8F8E8B0B0CF004E4807E6B471EE9D15540F2B4BA130311383440B108B03EA6049E8CE411805371323CFBC17AF27D98238AD74A2BFA4440603B412069DD11FE5BFE729CE97642F82617A4D8AA9E88CAF708A1D2FA4326FCDCBE416D14A035
|
||
|
},
|
||
|
{
|
||
|
"E6847B270E001A082BE44576FD0132ED978D42797CAF959F57EF135C8F40E8FE75DB648FC11CB6D77ED6B49AC59EA1DDD7331480CCEA6F4B143D44C4D798DEDF",
|
||
|
"3741620EC815267ABFAACA2A01FF8F8847A78917B1FB034A60CE2EC4F3322F22829457022904F893A1011D7994977817784A68AAA6B2438C725542D26CB487D8DDEDC5122394BBC987C480C7A0B10A5726B93FEF7860B6F3C944D3BD25A9AFBD3BBE5860E66A4C60CEE9657117FE9693B0AE6A1AA7D162B89D575541E91E133339DDFA900177F4C9B5610D6C6E7C449DDCD5AE5CDFAC853036066211BA65EE24CDE8CBCD8D74BCCD948BB5849CE56AE568C40A7BF70F372D440C78624D49133EAE5602AAC94F1A31777EA5938F410A13C46AAB51347DBB41AA9633524E03075976625C6A5D85524D27C70903458AE05031F3FE5A4BCA916EE114087793A0796B1996DD3984F4DADF457C176C834329A291FB4D9E85CADE1EBEEA8A28BA5623E2B40C52E8BB378E646EBFF15204AA4598C3D419A57A7F91388FA34A0C49D7F31F1E34055DD3199799AAA09396E8BD6279A69186036C6E39E71CD85E63C38F55B09F0B972216E1E93B5354878FAEE682332B711FE38568AC9F91D9A6EBB4681C7B13E5FAAAB32575ED7EEEA026D12D374FA20D35873DB00F9442A16200CD37D8E5399DC1DE7623C935FE7C7B88A8E6B44AB7E990455B5743B018B4C90F76CBBD89ADCDBE166A22FFE45C9D183754858551FCB739823CB9708D7679C42CE1656BF3198F6F983AC4120940595DD4CBF14A6704886DF2C60CB16DCD060F70604C9B8A480998319A33EDDD0535B1012016A25E0F88D8F9CF8A4D73E41AEBD828BFA3736887524EC2B11319BADA5F79654E19A7B5A32B26131F3BAD949F828E543B7A3911184114BE8FFC2519F6963ECAB6A0FBEAC08E2B70D76B17EC1E1401504115C0A6498AD769A65D38096D40B48A1B4A92084D4AF284F58F47456BAC1C7C8CB90412F33049D290A9ABA43E98D806D42DF088BB4F3062306427A0ABE9EF3ABB1A2A410B9D3A9B6FF7EC6AA4E4D7070B5A822C199188440EBEA846F89F70C46ADEC20582AA1F9963BF3B3BA78BD5981C97F718C86EC49DC092AF628820E13EF21A1B273F6946A493534BD6819B1D6CC35A377B6A9165EA3091694078E190616126B1C7179E2806054B1CF34F3E9425DC689BCCEB46A9B23FC9B68C2F5F3687B23BC94A75BC0DD7AAC55D647050E7CE5F8B14751990AE976579E6BF6EC2B30A46EBD1101AAE1DD4A8F54DF88B946460D07F080EB4157C50AE054BB7BE3C50B891C9031760AB86A7DD3A42A598CF35B0A5F990E22053412FF52C8C79D34800B9A8220C60848C5E5C35AE7DD501237C5C16AE0791C301DA637744E254A5C144BE21BC3ED6E2EC1B611BBEC1DB05FF73056DDFBD2E4BEC30FDDEE996F35B97911AD2E2EBE0A89AB7FED80E20B0BBBC293DB0DDC94745545D868727344F1A7A0219FD6853C8A1B0FDD37343A130A8FB5C8AC6E730FF4F9F484F3800B012A7ADD6682F5A43CA937F367DC3F235E766B85390D12C1D172F27B6743B2FCD29D2A73CE5B17DB069A2638D2184C7F67937858706AFE8A0CBA3B20CDE61C08BA70434DDD7B4B08AECB96C3BB1DECB091BFFB1844740726064D5869E00AE18D21710EA228B57F04DA6118552077821BDBDC033FBAF3F865326F39B1AE364817400E1C97F7069AE913ED527E69AB65F042E2545DF8C5A158F5C3B3C63135077002BA4521CA53586AE5F87D4020A2560ED8CDDF32EF4D65ED950D1ABFB363BE5B298C47B8EE8E334308396E15FF9E4F7D24E7A60D1EA799292D80096F290BA52385FF5C3EB7DD73EE967D8F7B559038EE2679E688DBE6337FF59EEF513E30FEC7442F65CD9F3E5D08373391577857324922FFB00B6DD52FB0DDCB2A6CC30C0094DC02590656A4E206F",
|
||
|
"3741620EC815267ABFAACA2A01FF8F8847A78917B1FB034A60CE2EC4F3322F224DC6738D4B03C040CCED93C9C6B454A474B9DD27C19055AB1A73B05AD5D24227FC21AFC604662BA78CAC79C2C66EE2BFDC6D7ED74B78CFD53FCFA0C83B1E03B173C2828BA949640374B1FBD10377DDC4F044EC7569C0B90B73F29F1D4661508EC230821CB50401262408072E22C9712488304A200C9AB4314C2472CB400981148A63480112B47100C3400A4482D90025E0204C09B165491429C138800AA44DA3100D04A14D21182C813484C0C06C0B818D83268C9C46280017665924850C160CE4305111328A04338560306EC9C8518B0870D0008E88A430E33831E030626184214B402ED136290B0328D9948580360E9B423211C17019C0815488900B3382D2206103C9511B368404978801996813848D53B82CCB4852D086085406310C91296180819CA64CE3440001A2481136315BB84D5218514B8008E18010E4306460040A9336701B2921D33065630042D1404A8A064491226D0AA964DCC430639648C218044A482410368A6434095138468AC841E3489250242D594466A4B06D43402AC33812D02882112564848028CCC011C0161120127013A1819118709A1410099065418021D144641A402E01168CD8489150462D1A00650C38311235298B146504056922350000B0310A81110A256490842C8A107149944823A64549B46D23440158224A62486D21B46D02108940C46CC8420694906D982601102361C0203208440C5C28518138088C420804435018366618918513036821A47160A461421448DCB4415A26042482815CA601DA12650B974C0B2786644411E1C864C8380653966089008EC230208A444C21C54163B04C08116220310C24274AE1482808903162348CD4484489462A102384E13845812462C212911B308819392E181884CA322814413014222499900D0A42860911521A1592084222D8B84CA0A63060348E0BC34899347223B12D40148D04B74508B5901B8651C0C469E4242A221781E3086593C6890A4565C9862D22236ADAB42D1B374D0CA00884222060108A04958023352A92326104B5719B122219C10021B96D00370989C251E4146853A025C3A06448226D41B00811346E13A471E4983004A22104984083224559066C403812A09211D4280244B86C921650CB384E4B9004E2064D4BA248E1A23023262D248124A1B070142051CC84201A22640B291009288C9036088134492382902496091C25659A3022AD595C8E1786745B87367A2F0DDBAE06A43F6B48A1229EB4DA3EE5088D8892C3B962EEF5F44B61BF1350A5E0530756022F4D846E78A4669C8BFC29771DEA56119B9EF0E99B7B727104992CA4ADDBF3F0CF1EB4AA8D08D5B53F71FCD0CED3EB9A9038FEC2155B185487F0178791DE324AE12EB6985B5970A4A46C7848430F983DDC9196C2179E01CA14B62D9EA1E6B136CB6C30B93148663E06E775BC1954AF39CDE89AF76CCDE99069531B51401DD192DBC5201ED06A713584BB2F178E171851C92AE7BE168B1AA707584D7CABDEF6B0B8259CE50A36E2F6D7A7B2D02046F3FF2ABB950A8E64E5BEF21C860CC37FE9FD31A4678399BF1578EBC3BC5744CEC8B5E13BB11E3710D03149130859691E6EBE50470AC746B8DEE6C823DBAB784350D288E75FC1FF703C206819DDEC92409E2A1325220DA44710465158FDE308F711CD0DA82834594997CABC03D3715FF8702658E205D9F1A5F91B9C2B1652EC109BE4CAACBFA40AD00CB5281967C069A3CD94D613621335D37B6CF4495CDC4FC8D057782865C4AF229FE382ABEA37EE7A87421672D000EBB8CFAE9D6788897C7995E820A6F7B1CC6F262251E2ED13B71DFF9C6C7A8D7CF3F599F35BE993534753E5910AB8CBB4D5B86850DA412418C2391174200A0DBAA9AF224A64442E06E0F7CFFE5B5757444DBBB1310518A814066B697DA8E529080B92C28056E62C8231C95D5664F0B6272B7AF385EAD52C349320093B95572F3BEB69A4810EE4DE890CD1C13B81AE428E1F9D6058033AFDD40436C243831DF34FE96FFA421F6618F960ACF4FBF53344FD8233EED6FACBB4AB41B416B7736C986AF0418B1037B1576D717F1864018FCC61F2B0B459FD7E8F48051C6899663473A1FCB59034CAE71E38FCC43BF394D1296AF1A7BC96B939FE9D3ED61B262A611ECEA674C3D53D520429582559D9137FE210A11442BB53EC3AC0D86CD6E19559131771B1BAA23491D45187BABB138548E0DF513056BEFCF831BC5293784BB4E369E281691B6E8BACC7489EBEC86CF8ABB8823FC6B69764F8A0803809C7F2F6F0557686226729B7B9D8C0BE9F7695FF303C928F6955BEF70BE6870648BAC6FFFDA7CB1D06553C94CE605F10B54B7F1DFA2F4E6F4787DEC17E1DB072637205ED75D2F5536567125543E3406A126808BCC43A0E4152110297007B7087F3AE07E1AE6FBD8BB60F0DF8C3D7F345C05443CA89257A2B1974ED3DD5795DEB620157FBE0D6B389A7F792E8C20A5B75A5DA0000B2243E2A371393B3E78AE7695BE51EA28D0B022E184FCD593138A24339D8208B01AAA78841ABA20A86643AD425A584DA8341ACE00C436A6570092EAB5AB76222D5704868A02B075D7A416725BCA5CBDE5CB7E9D89CAC139D8C35CF9677B7CF5901E845FC1ABAD221DDEC1E0413D8E5840D471A6A0DDD5E4E26CB5E5B8DF4C13B9EB33C68B78766289DEB49CA5042D4AD4E0F26F68C754F14F745F769779FB94365E1B44390CB0E1B109A26A132C243BE57FC85F5DDB462DAA1E5B54DC67EAA8B30F6FB4CC65B266AAF3176D89480D0C7EA3983DDBC730C8EF84C350C01AF17232DAD1C78210565F80B438695D92FB52BB82EE833D6162D3C63A1E53F71
|
||
|
"484E1A950755EA020AEAF678B9BADDC9F37F9E314024D09A832964C4B71A49054CC08846417391B65529519033831D18F8769B747C69775B4D0E87598FB9EFEDC75F57D50229649B83E11EC3C4A7561464C7F714979D695CF8618C50F93B5C2ACDA28AE7D43BA01D9E4F13E2D3F7A732D26289B9E7C07BD7D81B8520B5302E5D8D6EC5865C18CE69B10AE25B6BBF8789FB764BC4B519E8A7BA0ABBD19AFB6F35F6516307F35344EA87B917642926646480CEDB3E0248387A105374FA337F6BB61BC7F9614BCE543C11A929345F9A1112648A95F68AD21866657791A4C88E9CD6EC6115A717AAE28DE1BBF90A083AA4F375A06A0507759894F93009F988AC2BCA384BACF4B351F619A237872BD6C8735DAB7533CE093D8BBA3734DB963782A5F850E36934EFBFB7C44B7D6CFC5BBDF1BEDB8BC50F3673E08DF9962EAFD4E5F822059ACE694D5EF4DFECA035C603079B876966444672395627A60F24A45D6EF8FCF9079E5F979A4F4E501F97FC404CF072015B3A13A9C90C1C558EC78F2F702D8D2A8FE5CBD2E2000C7F817119BEA4F62D557149DDC57C14B3E99758117C4B65B45C21987D163011C28A211C65959C0E67DB8B7CA4C5984473CF483702F89DFEA1E3C96A492ADB23EED7A9D97D4DADE18E46BF7016749C12EADE9061E90A4CA360D908D6B0F95B02E8DF8F1EDB015528AB2AFFC7CD41BA6393BC628FAB40D0C203DD33699E286562405C82048285A8CD7894043F15FB675A1FBC6115135EE2F3C6F8617C05C983EEBCF35D682FD100F628333F1CDF91FFE2F882FA7B12400328EAB3EFAB96B7F242FC5DE8D8605D166A66E6A48F1CD6C7C374C08EAEC2D2A463D968C5E04AC26D94EDF8ED9EF5074EAAF8F0E24D1D3742A6D7A388C77EAE08DE51DD4C5D11922B5EC3B8578D47AD3DE73702618CBC9132504D74D64AD8E5459A1976BDC559C2439A0CF07BB6FE71536B3231CA48A2DB339B683DB37FFB9E17358B4728DA04ED0B429F99ED63E05622BA7F9B71F23A34CE6BD90641DC7CDF9B1EDA427B19FA7AA66633FF325227F3472A7B5097155E987E7CC2AA51CBB569D78D81D73C663AC7F417386B6362FAAEA938A4284538C9D8E80BB4625F3D9059F03C518958B61863CCA21BBDC8AF1268F6D3AF20E3BFCE0F010C1822EE65DCA6DEAE0335D0CE0291C27DF8168FA4F19D29E8E2B99EFBFD7C1EF56DA1090E25F78DD3090EC7B176042D6EC891030031CFAB71D917A3DC9BEC7502BDE906F77CD7C5919B47822A193FBFB570A70370FB1B1ACA12F92B2B78CFABD2D87A760337C025165DF8819A2B1E8D0429FA7D3584585FB99D7E98B1394C157D63018227953122E334842EA56D6A4DB55FDAF5023E97ED1488913673C7502AB7DFF0298887D03BF632AFD2AA4F94EED9ADC3D4EF3FFFAFB1D17C13041395EE7613E2E66E7CF7278AE52145786A5517B69EA2C649766E7A3EC68521A6AD82C5416FA285D5DFE837276FE258A5907A246E2E530B9E701F94B451DD30782325189DEC4DE9E560DF8C37C17E7B090B90B61D977CC7B34C47EB4F01EE3AA786948ECB4BBD72C200D6E1CE0713DF730746C7247D55A29C288E1839CA58EDE302430FB33C85DCC04E6E8FF4A5FB4D6E14DC6E30EC13ECA6383DEDC39ACFB9D4A636B9498D79284E27310A55F4BD92AD70EAA4821900339DD334E54038EFC0B64CFBEE61AAAC968B24EE3CB3D52BEB66C533FA7BB0245A434D10BEBB9E6A64E0F55985E80E27D23663684991080108B258BE64CE1DCE08370A5C79BC8198A4BDBDDFE0825A11507449EAFE7BAA0C1EA76B9E102E94E7DE8A362DD1C7CAD56933EB0572B89BAFC04EE4CA59D0735EF90C21A81E935842E2FB760FC9761C4A215119FB396C67FDD1A95AD668B4CFEBBAF96F9D7C2A8E867573263CEBB751F36AF454963D66712CE37D2B525C1B5C4412803A85DD1D5947623539988C4AFC72D5DE78D4341C821715A49B5945B5006A9CB363CBD7CD1B3FCAF9598F62192890965144FBC74CAB9D9673444E66DCC4186A014872B733ACA3479A81E79649D7E1B0643C7471F7C946FEC641559906075D597442663F666F2D282179950C08970E09010193DC87EC2E93570C445C7D63A842BCD7C59D8B18774D4ED1F3A4E25BC5726D30B2901CE68FC3352075BA0AA0BC4AB7363FC2B841D03B3FE270CF24D648F5A06D0B68D2DC92A5DAA9997320E03FDADACB3B87EF40FE9AF8EE5051901BD2D330F8390658CF17EE8E4FD1D08DECDC2CAB251B1DBD84E48D5EE9C98385E715A54730E3934692FD8DB9F1F86EAD87778F46859F1A1C41E39B804C402524E663AB9F8B1050444D9917F9F0B545D9A29EF7A7BA5C435386EDAA6FD54C4AB9AAD8EFC1FE1C1B1681B688092C2D2CC25B56D236792793D9551DFCF522855F05F419E68960621A939A4D16C8A0AC09F4D3035AEDA9154E430432E71FFD16D438BC2470A670E731DB879A36869FA4F69C203AD14CD1E534F1AAAADC8C97107846E5A58420CC04B4C784F7E5BFBF1968E41AB70EB234116323A59416F93AFF38A95F6E599691B2A9B77A69D621C2C756CB4A1D0828101A542C7FAE6FB8FA147C16935AB4EF192932C8060D0A6F4D19E2CD0C3998CA08525F337FFFC66A1ACDA182DA984E9110B92B2605841C55B4E8BCB0858084F454661874098ADCECD5EBA7D9802FDFD1C6B5C955B85EEB067E9492B6F174C403178D42426526C926DAA02B942ECFEA6CE4086919D6859F9AADA5E61B140C1031506019ED696DE968D290E63E21184968D0702783470CB98D425DD37430BA8B1A79A1F211CD0C4E8B9FD3EB2B14C52764DCC8F792F61E60EC8F4BA0B157F7F4A253CEB540800BBA9B09DA801532CD7EBD6C84CC69CC9A372BA6840A
|
||
|
},
|
||
|
{
|
||
|
"2733AABF7EF90063187D9CDA3C1388D749E1B53D098C28581B4E92795C01FF01304532B94BBE407E17A087C303F9E51396E06D0C55691959EDF57DBE7717039F",
|
||
|
"FC7195C8941838C77419840D0DE5D8A914833E8C6E230CD13A98BA2F52525C3850FA6CA8EF02B665E600B336B37D0425D9CB16768098F051985A15198EF1E0272539D3E033355F3B5495F0E2A5C6A3981EEFCEBF7ED510AC0BD4E307A9B3B4D55077FB1D69B8E50ADE5B308EF7A6E86457CFC9AC33292BB9842D5835A05760BFE2FE18EE06B40221B40B3CBD6060A77675E3C1F91AA1717DCA1591D01468C2413A6DEEF92DEF3AE8E3AD6B9A3FD2559D098C0A969CA5940E14A654E97307253BA5D311BD1FB4C66D3A6FAF489A9C9FE4B31E7B6BEDFB792D53BE7D5038D600BAE89B3F0C831AFC87290A9408F0681C40AAFF790A93A85A6EE95C2E2608CED4E1F564C952545901EC7EFECA6C4CA1CE1F6A191AA0194D9482BA7BFE28C4E35BC783B018C2F1D8570963098EEF770AF27589FE1529E96AF3861A07C6B4144F921EA0E524ADF7B06C32854F90C935CCC8DD796A21DD3A94902A709BE93947EAE63548EF1061348B677E1A1B9A841A0FF2F5A31657E8FB7A4B963A67C91F97DAB784882FC6FEE40AD3C682A18C4C72D56612762B99FA35E4F02FA7A4F251EEC4D66ACDFF5FDF85C9C4B10A75478C242042FEB8E1C53568EFB8DE70D951D4E029829F78802A23DC1FE27CC4B2C7855415B8E0C9C705243881E93478CC352A1775F9A7A0F962CBB598E3766BEE890DEC6878A18CE67A9190D6AA115DE2C9A8640E339B956564381058060D7309CA1581DE84428E1AAF00AFF731E0CBC4BD1B6518959266123F5E3EA3AEE5BF8DF8E478B2E5A44E3155A0BE4F46AA07557AC225EEAC8ACCC458AB722DA03F498A88444087D6CE448EC98C55EC84FB46C43D2BFC15440C06984F69504FADCCD69ECC512434569389974A7CBE1911D104A3ACF178CFFACBB59DBC664A1F3DADE8F102F5F37EE168042B2BBC0C5CB26C306EB875B532FEC5048AB034A22B7754739844061F2E9FF56F3B15FEE913D61C3F4B3C8764D56088E1EB82DE499B10E934F0C51E1BEECC157FFE91120006A411ED489A6BA9939352515628B95C9DB3BD09B622EB99F8D9BCACA3841DE6D125F1DA6F18F19260270DAA0064E1CC375BD20F6CBD17A63E9C2DDCCED2F4ADEAEEECB693AFD3DE57922CAFAEE46C2A45DADF16CAF896915121D6256CBAA1A21CF7C6E41F4168289CA6127AAFEEF5A2F4EB5F5F202CC7EE318C9189FBCE517EBFF27A017C1C955A5ED5F6ACB8C259202E17E322DAA734E6D524461692942767CC68C91AC7A3E5EB79A1E2A34644F746FCD414E3A63907765D580E9856264F6CF051FD69FB4560CCA4D580523B3E241B7844EE47DFB7CA7C0749EC04D9616B075133CA6A972E44B92805CD9CFF0C87DDA282FC3D99F990DD77F684330CDE6327EEBB258DB624BC96F9E8D60AAE0E4676FFB5C158D315757C03CAF8DDF21D5084C0186D32568C1F9D34F659412E51B02DF1C5BFE4226A5CC8C27D8EB36016DFFB7B31A54F44050AB126211BA87EC0A8A1EE677E56DA03AF68C2FFC7754A92AA9F2C81A5D03F005E63E38D5D1C607D007FA34876564F1DA42C1F278F9339931EFFDCEB3BFD8E0FC7ABDD8E883F0F0CB3C8A81CDAF336DD55E902F40AAB2F5D33554C8BF592F421020DD92E5C037B36AC96CA55D4227B636C65D277EFFA85575F7CC7DD2DCB8667B9DFAB22DA7CA8CF817868809A3C1DE72838943A62908522E71F06E4D68771944CDEA76A9627DC4238652E2F3628589287C78C87A2D2B1145AA8A2842508DD9D99E073969D4E9503790011900E7F9FDDB1F612964993E7E96481B2B9AEB9AB1E62041B8BDAC89F47572B7AFD55DFE1062891291AA3870B7C155ACA6955C3AB08F5EC7E7601",
|
||
|
"FC7195C8941838C77419840D0DE5D8A914833E8C6E230CD13A98BA2F52525C38C827E74BD777C158E1202ED9F182CF87F25231D3DC65775386AC182CC04C466722875C1A0CA68312E1EC14753501314F64F7B30C293034E9F796ECF3726D1BC8B44E67F750DA461106CF602063DAD08070400A242A140B0C65C05D56E596311522272551C030DA9808C2186C24272282282251084E54822801050222056188146DD8B82D8210401B2006A09444C09691C1904DE2444219A16D1119650394899A40615B2250D1B280A3168CD09225E000844BB22091062D02067013B12108110A04130ECBA451C49601D3244289C2288A04651BB3280C462D5C32460B002513492DD83086423409138988440866CCA8105A48480203094C9065C820868CB01124811118B4294818865124089A822091B06CD9A484CA2212412469191031D9B4611C200CCBC82890346ED0A4099B848C5B384AC012820B266C9A164409236C52A66118256D141120D1846520062E1AC14C5A4290D4420E084761C94072E3888D48B60463B2055202299C988482206653C245994861521690D3A4909C16694A488214B50C081666D98809E04425201130DB8250644285C3B82D1002259A18410416909C3208E1B664C2403159A25002054D2384211C27225942041996281346260042691893859BC6314334488136815892651C366A0CB681E0266C11C8885AA46503044E8C1052DC260C24117018072D04A88CD3446A03A4051C924DE092458B0484D99471C216240C068C493228A11452429225E2009009A14918264A4018811A860023A40DA4264020A86D50802014840D9B38220C178251A608D0260D5016722192681C960C893052E30845181421DA924002A07104842D00B82401C590E142821B1864443645011240033831120729C088095B3412231212449864DB180A0A132A4C880C09146821212262809113B791821489D9828891102212C34DA1984481428ACC840050886903182119081019806D58804993006C01324824348C11C5850044661B27028926401A374D142802039920649481D4A46C813289D4188849B890D3A681C0C84CD10449DC3040D8B068144846C8068112478A812281013962411008DB4282634886C8388ECA2686230805204031DC824D02242E50168091448D03C22592C22D93100CC0A265242361E2068910153181344094C8008C0230D38424C8084E8B404843242088446D40A069CC280504438A031386DBA40C920622F2A58BF448B4FDC52BA86546559D3BBABA4E07245CABBBB2E2C616A1D0FEB6F2F0443693A93B3E464B7536421B9C52EF063EFE0A26575D77C720831A7E722A0579CC9B8444A67D78EE60A403154675A9F7ED55EE2A738034166F11CEC60F862C3909499344520719DC2867B1AA4A1EF15C814EAAFE62A2FE0AA86A7853ACB15A18A2045334CE4C34F6371E46502B4F7C7E1189FB22826B0723BED0BAEE6F432E59477A047D4321BB16642CB39F0CD6309A3090AEFC2EFA10AC0F5C9CA4E4198A2A1F9F515047705A7BC4CDE86480B19589AB0D3C4F53E63D69A5CE28BDA8FC8A7403A1CA9C1C2A0220FC462C20063F287D55902C0A48EC7A658758750288E046E7E5B94F99FC173C504A79F22661DE7E7F28595766331C9C527B8E8FE64555CCC26866340FB62E5FCB418DC1D3F20AB4A19370B61EC77E44AF3D9C2FBCC8AA1F63F1849896CDAF78E2F3394E2427377904A7F60940E47907B1694EEB2558185441AC0994BD3BB1086B18074C4B481DB10B655D6D080D5A02EDDFDA263B88E4AB3CB8CACE101EEF15D161FF59624BDDC38818B8BF2663D9CC7046C57F4C8E2F1B6DEF3BB75D590E7F96FAC9797FEFEF7F42FAE9119C2626E22A84308F5C456091F98C878612CEB8EDFBFD32239A156A17700A9C6C6588930B312680291F4481794681DBEA92F68D688590B679F5B2D364CE87F74B321193FD6D917BF907A07670A5DD976F187F65DA99C7D07E2CCD37664C8D410E0693B2573B1261D4EF1157BC0B49F253C6E96F40FAADAADAB9D144FABCE5B03D5C65396E71BC9AD8995A386A30C636857E033DF2EE73ED021D99443EF672623BB47642E2635DFA47DFD694FB8704FA34B4AA5C6F554C0C8B9447685C59715A8550C69E228D3DFD25D2DC102E7332220536FEEA999FAC09E5C073E19223FE6F9C458B8E323E9D0A747689ACF614A7EE7418A9655A2F489502387CF6593F756F760F032A6B7C3192BB2F0EDAD7583DE67A4311DBFACCDA8951201FED0FB7024F35A1603A91AFED85B2F231B099C45BD18098DB598D39E601ED38B83CFA12F47AA16D1555AE6790906A080DF5C8918DDA0CDC7C3D42B311C6097D1E086B53CEEF9632DBF9893289C6884DD88C09DFE9B005EF01377BF17775D4E9E71BE6260919F521B6FCD53C115BE6F412232607F5F49F95E03BAB3ABF46EAF32284AB24F9F72EF1F45FEC42D9FF5FAF505070360322D94C3FF4D88CA6B38DD255AD0542821E1AF1D6EAE5141767C52057FDBCCD57CEC7ABFD848E5B8BD9EF01CE925E88830C73C09BE240F12F8FE5515A215D3680CBFF69D0BB87302DFF9E2A57995360748AE0F50BE464B9BACF0236A3091886C9C80CDA01F598B9321146F102941C5FB57D2C0FDF5F651478187D10F0F7E8F8508D26CB539B0CA4B5EA40FA51F88EBCA0131FEE210DCDAACB7F507DBAEBF63B8C7AD82293D1F849FAFAB0592C408A1A03F738016D822B35282CCE2853EA558D59A351EF4B7EFEE8BA13A601642C72A0EDFC01A4FF7C24ED8FAA13A14F909F392ED82052352CED0E3E73CFFD0B9D9FF7E9C75CE2CA599EA6526059EEE3D524BFE5A9B5EC5639609F3E3ABDC3EBECA2FD94873599968E5031913AABA6B8
|
||
|
"5FAF19A1564EA9ED017BA1864E8B105F19E87C7691EA3D897B1D6368674A908A2CFED517786A40DCD051A81BD5BF542955AD1B4CA8D1E7B2B974A5DA094EABF8C8B4928B479292062E21047BA2DC47906F70B60BE2AF51FC47E518E20A101B2ED641850D900BA3A782EFA3BE1067951F3198ECD55C65D3569BD043866CD2BF738D69A0000E80904986FFF7B48AD1BD4497D42F0FB62B9E8C76B867A45F91A28977D10E9F77F23BCE117555F2D6D4270514E0CD188F56BE12053F794C0A12078A32F1B2BEF77C4D028621DC55C5B1A706DDC63EDC0D4E8BB2FBB4F86530BF460DEFA4F635775F429D2AB566F043E03A8F1C59EB89EA6DE955543AE796361F0B5A4726C171D8D2526E0315559BD93B5CA7D9972D93981FA52E2A6CAB6CDCAB29DBCB9334617931CF2109ED4B419947CB44BC02972D9F82FB1FD7678544DB0E4564EBBEF581B731741AFB39AA858A5D4415D8F3AA36B269F20147CD1387AD7164F9B0BB2B923999B03DC07B74D8E3E850CFDA26B73CBD215A71F2B0A1EBDA838D61A19DC11B2B00DC9DD4135F2733328CEDD441678DB7669C7FBF786FCBDEFC90B1D9741310495BACFDD1A3B250311ACA4434F79F43FFDB03B48032DC6A48A160AE385FE7A2DB79947967B2ECAD6E1D5E85DBFDCF6734AFCA4C35FC2ECEE4AD4F41BAD63FC16AD37736F96C8F25CE2C3CFC371DB862F38CC0994AD8F1F0E2887BA7F3591DA41402783ED6F31F991278F3CEBA7001E07B9806E6DE223218497FDF0A52D2ABF9221A17CBCB28F3BBEAB9E7E66EAC51C35E1FA735440E641D2D240B597060A421A498D29393E68DB7F0719D45E349BC66B6357613F97C75EDBD6EB7C5FAC23FFF9E5A91AE829C84F115DCA33B382577AEACBD1B44D80E3361255F3DF4B481ACC24835BEE369ED519A1D8322A2252B0A5574E165300A27AF92AA04C27054C74FEAFD36255279ACF8A81C174D0A76B471D7554B5E5D93F12ED8A4474E22DD6B46A42833A651CCB95C216540BF28947BEFE1377433EE90429D3ADCBEAB5E319DF7BFD3E3851A99A2CB058BD20255FD1934EC2F57D5A6CE31509DC5CE4C6FB36E11E2DB34DD89076761E798488F94A7D3F0B3CDED7E6BB736A24EEFE740C5D068A5B549A4BDE1651BE399C2801402DEF2E7694A6FFDCAFC3040E88CBA4C7068385A818D3664B506846C9E4FA0C3C0FD2840CB03472CE04ED367C0704CDDF434E519F3E6531993A65F7FCEBF3A05D9B29752AED0955496ECA245C8FA94FE8158767D8267C77FD9DE08174CA52CB10908BD4AF434914272562D3B9F7076F184B15347D205E3BD7751887378B589DEF610D57E9F55380F138831F0C1AB8E26847A76519E73E90D186BD1B068EDA1657316603455462BDE01CE52BDCB7B6CACB6276BBDD35E8C1C1E6543365562D03F4236C7891EB4EFCDA9AA569584B08F2FFD68B267CD2DE9254BCB1BCB9D728A72469248B155D6713712CA24DD1A155B92EC5126BC4D2D6DDFAF1038F080473E0DF6BEE316C9B61009E3EFC6365AE51C8F86EA5B38921389C9276BBFCB7E228289C56F18B7703DC19657D1B1EAE748620404BECFCCDCA0495432DF061F1BEC88C7C83F0D88BB34ED3E54528838F42B5785BD09F73BEF9EECADFA1728E4AFE75ED96B4D8FED95302F221D1D61A3BF0AE2FCE9BD5A3E133AB39FA92EB8A22D782C85E1FFF87203297B6AAD8F1BCB89E9D44845BAD0B2BDEF3D4EEE6909EB246791A342491FF607F1CE07FFBBFAA3C6F2EBEF3C1C1339FE02B019B847AC575236EF8B32571617E7F6C6475ADA6CAC830D03E8154027689DBA7A55F5C0A1F60B77F75270B35221C9F9DA917138EDF1F9BF83BA792CC7C082DE9889FD21BD2BCF9BD3845E663BB8192461EABE911B94A160498AC15C2A0EA3CC8085431F8C8D0C18060EF3C077C895180601141E322CEA6CB8FDDE33D05494C2CDFB2E7B0AF58D489D61BC84771E665AB04D5D77C0A63650D42D2E5F5F1A1FEE0B641EC0E0377FAC7CB66F4441ED0F0338569AD9B870659F47A69332CECE691EFD9FA29D471BE6C9C0D764A989D6A025C20C65B151D6E3B126DE59DB888196844AD213FCE7DBBF686E06AE643942F1F310668FC9A6997E8DD8149985ADB4A5260D7C2B2308DDAAFC4F920D0829F77A043F92C3A6A6F283FB90D9AC743C3B2E21337C36C3882CD935BABA1567B623D2338147D7EECC1D2EA2B6C1D9F12B772986FCE18B164396BC38744644A857684BF9A9508B6AE1C63D53706867709C1184327920B8402ACC426921E1F37B3BABF710D0A28BD94F973BC473344206222E0DEAFA8262A5306C103CB77B830A74F5E195D64E6E482C1CEEF23CF2A35B495457B818A079E3F94C3AB895D09D673A1858FB1265B51ADD6765DBAAEDD655428D38340EFAF8D5956C5A278C24E7C7ED37BAD5A7EC4670373EE5BED321EE5DF89A5B0864E8FCA8498FD0295E308A91D6DCA7E217AF1F5BF23FA593152571BA99E60AD56A1BD06500F51C4AEF2E302AEE804591DB9B58867EC27C23236A2D88A088556CFDEE44A6C9B06376FD55B44AF89F7AB66C45828D2D2387CCED77D27B39A2A06919283C671BDAC2296A2E49073A162731FFB0D72077CE3F45E24609B455C04581D052BC3B4A7938061F3E78A4894D2E8424CE4F291B823DE30560D184F18CF0BF18912A61B6B702DD8B99052A248844B010D4C08B7FB4CA71D37BB9179B1510CAA7D85A4F8E8B95AECB88FB415FD0D09BF0A5DAA3A460E832191C6520E8952FB39F8B69E45D623359163ACBC12EEEF8BBD17409DEFE5129BDCCCB6804DCA3E5BCF242B9BA50F9C39338BD40DC5D2596532F80D54F5D75EA5C35A2A6ED7612128E7B6FAD168302B2FEB52527855AE453BC275830A78F1D3E3543
|
||
|
},
|
||
|
{
|
||
|
"15CA516E5521EF930E337A50E5E99CDB4097B060E6CB617456F4246F0173965479D24FB32380ABB8D7D316EF2AACE4B1C8A94B8D5641F2657D75EE01D9C76624",
|
||
|
"E4740CEA7EBA1BD158647426EFF0CB56287CC4CC956089A1F163084DC648D68BAAD88FF1601724E131178F51E39E47E92D51DA5BCD63162827BF6B5D9F40BE6D2EE7182897F031FF2D9E774A459252D86247EFBAAE15F487B30AC913130A405FE05F14D2C94D37E5B0CAA8A77730D94D4A8AF04022DA69996A65191C50B0F07120FF4582F55F5E0660071CFAF0F8FF22E1CB2A8517A9DEC66D40652142752EA6E37BE4A1408BB3AC450C19021BDC443FD0F4E84975185E3F6E63276884D15E5E40D59C66476662BA1B65A9C9DCD6771926D8B1B5698D66D00E688659961701F49348CB6BDD53C8612AF1EEA223DA3F92224E8BD56A2BA07D76A1D8C7BCCF21D28A480A0453BF2E0251B5D7A307008EFEA390E0AA58B3579D5CFAA06F20302E5E8B4F7F6AC0D77E5352740DDADFF454BB6B3947A423F34BFE534BEBC51170EF98E88D49936842CC2C0FD6F4135423056284168274A89B2CC144356B0BABCE1333B9B1975C07F40E15CE8F7B258ABBDBE34CCD98890FA94386CF933CEF065F78540A7D6D20B35622705A8C56DFEAE08B81993EAEAA548CDD2F9AD4F862D68EC9DE119C0927FD3969F1DA8AF116B42AD1685C02ABB6C1505F47F71506D1E5628FB99AC2F783A9A37A507C5B1DA9928F2099AF228B3A8F8EEB7C6F54F0F9FBE23AE1CBDCEF6A5BFE60222B58E6F88F78C2EDEDB1B18CA817F5F1668764F481EAC527782054B9CB72FCC56E973D1A509A2807E3F37B464DB5BDED558E276801B69AA04A7CEDD780F7509BCF410628EB82F96073FDFAE039A1788C71E74EF1AA18FAEA8A1E589B2487FCD67B5CFAFD6F89DBA8CD5D8DED7FA043F44C8D8C38E83D436C3271693FD2D6806A661B3FA3F10B6BEEA3A0B51EEC52B41B75586F3A032F9EAF4AADD7AF2B73F04F0C2B33B4EE3140E39BEB81BA28B988733AEA0C79970B6A18D9626CA506BE490D975802C340F026FAE76E0114B1E8B0593B89E60E16D426171255727E5985A1E583E6943AADFBE9BD598F1AA9C2F16974D1CF9768026AAD4920A7DFBD24A49F3EF9571A396E0C99010D45B6DDE7583EA3C3A4CEC2F80FB3EC682B946651DF62F65DA1BE79C313E9B6F1076A13AD1AA5683122623166384F1CDDA346BDAE4E28BF66F3A6ECF300110404D8898E835C37E03FC876E12BBA32E58C5382AD0D888BAF9EE25F11AA7FCA82415B5896BE4F23540867F86ABFB52FC81BF86BD20B0C8EE236AC96408ADBFF49DEA24B4D9BC1BF6C4A8F7D557A3AD65C7ABD4840314A84B3B5AB0A862464D333D5B5A00F133EB2F09F5A3A6242D30B615C8EB630601F008260190890D739ECCC6360BF94063642CBB72E0189D272FFB98E55218E068D42468A39CC16EC0FD678A9EEA92FB8D987B5CB73A8FBA80C7305B162E9A288E53E2F06510A0B531228B915C465F733CD63FDC0292A29DF55EC4437AF9502085225C819821757EA3BE02DBDF749365A3E1A8EA555D0B15E22A4A38DF79742630A84C11AFEDA484868F1D450A50368126ED41EE7205E6DC9105A90B228DEB03BF227A1233134D7FD871570CDDB5D4935CBA2362B03AF106FB3D7EA37646CE564947AECB7AD0FDE8EE9411355AF183EA14A48B089E806E2949B231156E98C9C2C9DBD919E98D34E00AF3C00D89742BB03DB4A27A8A6E9EB38A33F9EEC95EE99C30D7575980615EF69D141312A2D0B2961B74FE484D84C0CEE876A38AB36DE1B2066661DFEC9B8D41C0D092B1F33806539AF9C999F35D271E93BF62ECCF3803EAA79044F4A50867F187DD2E196D0E5DB99BA143BBD031615B2BAF3659697A4991476A8109948AA7E39419ACA1CAEB93EE65C8D7EBAE7FB52334C4EC5",
|
||
|
"E4740CEA7EBA1BD158647426EFF0CB56287CC4CC956089A1F163084DC648D68B6099BE2361FF3F7D47E03336E55390F0F4B9AAA58DED73FEECFFC7C82396B523A05814DF13B91CAA30F098736B7491124AA54147FD1FAF4195881DFD558E462A65ACA2AC7A29256D138E154D4AB61B42DFCC5623FE14FB8422B76F811871EED3CC446A44C26D6234640B368883108C010944120851DC0208C0326219230908A78DDB924C8096889AB2210C077220C50494229101262110C51120B421E4222E4492448236304C1809209249A33624D2C225093624A2A4242133460B444262348D03B76C10840123860D0A448D49220C14242110376282022A18B36D011701A2326D21010CD2C6102137821839218406868094858CB261CB30240CA689DB2231141502D2B421A40082A180651224809CB420DB064C14180E8A0249DC48241AB809908241E148411B09800A0644CB100121426609A39020408DE402445B403280387110842558C44D60421121063298142958161052C8908046262442440033110A1829C8065212328DE128501C007283B680C41889E3B4295A0269D9442808B88D03152002A424D430110C39025C289108331050189089220E08324C60C480A3A62D00126C53B04522A88541444C12114EC8048914A40862941040B430D1340E1AB95058828CE4320650C2508A0091CAC8910C416A10244913409144462A12A921C3188162A0710A422549B6491A8550E4221261C8045CC02023208503368C09C88864406A02228D9BB20D1CC34C61284512299211A0904C845010978022346480422CCA484A134585D9404AD80610CAC88CE0207203238EA1482A43808908B80400195054362210078819048213436019266603C20C14495243108E41B60564A84521004D840220201222D8420214440D11C181C44430D28845E2B225191146181544E0326D9A00501AB24D0408801BB68C5A284884066D0B826123B2288C146813A36494A66C1CC8641A8400100526C2C4648244611A452C5A18326438400AA60021332021290ADC824C09156223060E03B03024B52092186DD9284088228A4932841AA60D44A86CD0386218846448B084609445C81850E284288338029B26451A812551C88524152219C444120601E4004002252DC9C84018990CE110605200302481401B4331999425241824504030C3A424211670C0C65124197204318E59A2841BC54C0C32104B100E63C20C63484019356ED8946D21C8700B046810B2092587A50242132D603AF3E0730A6C9EB4A63ADCC7F48710E0A1A7EBB9ED924F9B1023FABF6C1B725DBB5CB14A0CD6E01E224AD1DDFFA98D811CAD9DC04F36A1911AB22D7A626C1AC2303A982366750C42C4CF31EE20C9C67BF37A8995AEEA3E4D181D8FA30A30B4BEC329E27B07DDE3C856E44264482C492A054C5EC63CF4A46C4DE39E4C7E4CF8570F3F769522BB4400AE3D9CD50FB7EFD179C6D588A80B2312C9D0C55DF866459D37F1C70326930F409852ADE9359C0F826B55C50D1CB254185D67FDCDCB6897D9BE3C81513CE86871814F8F049CA52442BD58E70B7A2F72D26CE9015FB8D25EC1E2B440E4BC3C728667E3E99C826870C8A7B7CC77DB130287574D5390FB8D4AF1171D3F98088D265174E712A388F977E46BE849E4CE8AB87754C9582DEE15613E8893553990AF156F00D383055528F8BEC2E438E5AFEC3C3AD88E3B7C04013DACBEDC1DEBF9A98581FC2297567D6B0FD2082B21659898149E479F8E9D7A3DEC3DE5F3B2AFE7706EFF4A1A11EBF5A9621C35AA8D1DBC3574D75BC6C283A3FF6C7762632DBDE04A2FAE9BEEC15D8F9069EB30C187519F79A73B474DC347079A1CEA2A171BD90F7381C65FD21159351AEC92ADD34E41B596527D719A5DA046EC67180A8B42EC3F3A7BFE7F95ACA5DE7693A94A428A36E6851D8647FA11AC316D037A8443453B04553EB0006C0A96C42484B1C669878AC33D5CB1C87E1D03EF8AFBA26ADA364E20F53273E0144A2351F63A07E219080A0201E81BC9055D1F8BC60116AC2EAE1DE3A7255AE6ED893BAD799327BFD8E9BA985F344146925794F5A6352BC57B6DF440A03829DE65418403A0B5A3EB922423C672BC7FA80880C9921367F7D7654E1E43CDE3A0F1609569C1DCE4511F8313370FC2D34F4FC40DA1CE8F7B9ED83E673DB2F7F6A4E2280A930F12C2F2A6CF5A3FDA2544F66EF8DD34AFC84F618221BD888BB58D30B157429050622174582696F2F6D69147ADAB61A73988BE1657012345EADB1BFE4F9392CFCFDB02EE9B075E0F9387EDDA87152455A297B1DD7035B2C8A279B23BCD7915FCE7CCA491BC4DA26413654AA2460B85D89CA00247F833A927EAE3EB6094A39A9E54F0A8E8297F1703650E5DC003AAE3C39DB580FEC3DD74E156BBE7CD3E8C1880D73B0F22113501424614DFCEE47313B1C742AE684521A2AB5B19716DEE5D2149BB3AF9DBF0187B5665DE1AA7F1EF998F37CB2A22E4DC1463171C77F01E19DF635EC6D71755751D32751D6BAC16ABD31468BF2CB27A1E601675DD8F745BC569872098970D54C57B37634C4BCF394EFE62EFA97ED1DFB7A5D70C48623B612176D0CEB7D7159E397B3D6E07ADB53B469925FF25D412FC135375B4A4A67AC35D3CF653B13D6AF6E6B6927D73250B127E2A18E7FA7D16D47CE29DF63F2011F3BDC382758E7CA455380D553D74CB66812D3BD662785352A17B498179C1B2F02A2D092FB7A13D31DEF016FD3248DCD4A4A27B31C4DE54FE0CB9D728ABD09950E665B1E783025239640FEE0054D564711673D2721758891D65563CB261FE7C055880568DFC0FA31FDD96CA895F86B5E2A34537CF0D9925A7B89B87790B80BC7A2836D83B0A3F5409322322DFFA2A
|
||
|
"A3F6FC64F4487954F86252E91742971492F2C7A17D5B622F9D58831BB9DA4C763DA01F3C6007A8D3FCA1E1B30E4673E55B4892982AA2619C450794D428FA26EF08F2EEA738E45CC560CAF3279C77E1BDA4E8461E7135E5D2E9420849D1AEF8B15ACEC8317FB5940FA73B84717275D81D7AB8133AFF184479E66724B363657C6A19A6B901C4EED391CB34EA4385987C6C25C0B876556C3852FCA319D5DADD28EA5F8BA6A26BA9361B2FDC6A99A8289F6D30675D123E712A42A970F7A9913C21D80AB4376CB4E633A91C511EE57EAD5742417322EF97C5C78753742C8E7617221684D11917E238913F576EFBBCE8BD89F5A2CA11435AF98058AC619B4F3BCC669FEC0BAAEF77AF66313C4571ECA99245063755859989A79DD4C693DB0D7EAD75CB2EDFA3FDBC251E48336F5CA4723B4E507C5F185B52985A7BAE145027E2EFF61DD5ED173F4C8A6B4F95A6AA66DE81DA8017A3A0BC9FEC9CCEE969AB9C2CB8BA92F70CC5F9FFE33F63E231F7F8F0BFC9D1083A1845C0DF65F423F49EB8B8141D99736317DF331AB609A34AB8B63BDF00B80926CCFB807FC50E91B5DE582184204DD8703A9747E71478759997913932E7A4E1DFE666B29516057BB7327FDB9E12BBCF8EE60E0C506CBE08D798FF8F9DD041EBF3A53DDDD58DFE8934833B23AB1E160A5A91C8C22D9DBB6D0F39A2457484325CC8BBFCE61AF061B3CDCDE2354AA58E09A610846D1A79694631E66F96542989B718FDB5B858585EAAFEBB635FE221C47295258AE7803BF08DCBF6C3548BD7CB35D0F0B9981A07C842C35BB8AE6550EF44F842E8893206589CC4B4E4A8605BE884F97539AF31577CFECE3251DCECE89AC044135E4A7C7F3333889572255FB35B74717FED418F6B1FED1B499BCEBE1C7356A6E2384A1E8E81B7A0CA40E72CC39A508C7FC8C0F41D20DA537C841B00DBF0A3A90C15AD34768C6C7C41C2AE8F1D3BD7B36965870A40DB2B4B7A32A7B7184406FAE41EFB0375776DC5923C94F8974A00D5D000A5DEF6C44BE9E305F128BEF7ED0E401E51898B0DA44754B026C73E3A6DED71DE7566D1949E14B1D155AF121778700929C7173B8AC9D0740D9758D52ABD39F1BE97D97407C37BAD7C48374C694E0A426CE1D8275EF8B1C918B9AA01C929E72D0780DA880B40F0F3F732698A06F710F1A994ADC14427FFB176EE9FB716A9A1968232CD87B7CA1B6EC827122A769208CD32DDCCA418E02F76144E62535A4F1F2A3993EA6C274B48F8AA45445081A611C9B5AFCA412700B17F928624C0FA2C68005E1C736C9297782903B686718F2252F2841DAF92C106193005ABE6CB6FDAAF6A741DD1C385139A312274DAAFF513D4664BFBB3C603D0933535524D102971EEC98D8C7908763B6B66A45B9BAAEA63B56A77BCC7F0CA2628FF5DE82388055565F3E09FA1B8FEC2501B9BAFDAD71A135091BB0D68626D7CF199AFB21A2CDFE789F3A96EB24EF91D08DC74EA5B241D355D3D9E7921AFE65CED25BB4F2BEA1C0F09C22D960DD43906BC84BD372269655A794D03F275CA83E76694B75599B8D1130F3A670C7D5A6A0D405C88858173B07A7DB295A863A5398613B1820413B94817991E4D06E82C93303EE905E05352A8189825250B5C36DA6103BC5D2589F751F62A4E9851AE6259F265CA1F08F9E310B2F7C43AA910646A49BDA33F48C39009F604C5DBCF31A6B619E14856D305FD7BDDC7BD448D216BE3576A2A99AE2C0FA1675D8A19652503C2BB853807AABCAF3738F4FA864D0FFC3A144617453095D1C47B13209AA25A8C2D880E8D9322DC14B3C8A6783C05890D83833F4353DBC56E0B2D8F83222C905381A5B49FFA5DD81190E5E65B2456A2BC1043AA962BD1888E65952F571EDA648311C82E391623A31AFCF40AEEBE893FDF4E5401D681B37717CB17E7D80EE7CA3A2D8797B266C79DD16FF6FFF9A25EC9586F17BAA7569F133400AD35AA77CBAEA987DD2ABA43BDB738F4B3B32DA6A278F82E58FDB67BE32ACCB10F7FFEE35CB86EFD63913E328F5B4C3D880AD667E12230E3981C87BE367823C0DEAF66EDBDA493A63E54CDD8A8EDD47CF78AD8259DC4ED9750DAA2B105418C1BFF79094B443B226251812EC77544B7138A6DD47A068EBA218C45AEC92835AE3AE4D835033A1726F8FBCA65B74D52F4CCD64BBE749B3F39596F2F47F0B4A7172BC0A2EF43430001A176F9956298BFD2459BDDEC8A51E46BB43E208C8795711396564A8A03FC8B49EFB04E1B727063708B5BCEC0F7399C7C5900C3F30ACEF0B14914B3D8E555FD3B54787605F9E973A8439EA1CB7EBBD2B9A2D2AF15A2F712A2C5D271FBF9B61AC22E2CB2F94341E4A11A3FFCAACB1C3B815E27479BF9C5F1B01B9E88E26ADDB347F4C71CB20735750BFE9327E855B29E87253DC7E1337C8564EFB9F8D1F140C03EE0AE77DB5B3E5FDB76888E9B7C9E0A4C922540E3A451F2E2C2578328FA9F075E486976045BA1A591FF33844A0D0E0BDDC4843929472FB8B2A9B65652A794057707EFAE79D80A39EADE6372BD1BB412051E141FB8475DE40275911C915E5B8B607022FAB9BBBFAE1B62512AC7D25DC96AF1F67B9B7264F2E9ADD4796B27F72E43BAD08DFF38091AF359467190B0B0FF7CA17DE2BDCBFAD6BFC3FE896521585F49095F0CFCD2F15571BA7BF500186C3E3A09D4AEDA9AA3272C3B2FE3B45999A2EF89301BB9144FD81882ECB67A19AFB9C7320D90FB7F10C043DDB604C5DEB286DB6EEC40AFDA15C932A6A2AF6D511AB5B67993184994EBED2942B66F5AEB5948CDB60EFC7C99BF5D9376F081F6F2102A8AE0FD6E0D78D78CC216F203F318010538562C7DE328B1DF2678DE975712D423AF415182D594F661F29F3358525C9062BCF2ACEE596A8607
|
||
|
},
|
||
|
{
|
||
|
"697661888CB8447AC59F7997A6018D4F19B3F0EFB35CBF3879AD94389343D7D8CCE0CDD3AF57501B15E6CF7C309E91C5FDADCDEBD3F721374911DFDCD45A6095",
|
||
|
"3B24A5C19EE5965ECE5FFF30329DFEB9E00CE11350B240CA9AE3F2ECE3E4F32DE448A0436B56A361AE582DCEA821EDE60A3C10079925B8C49E8C4B5E5586CE636432EB0DC034C4ADD71855CF12613C2730E1A444E993AA40DEBA4929FA2CF463EF8235CD29690B810C743622426FBAE0F84356B9C4AC8A10C076AC50CE8ECB00D35D850AC83CF69FA36111E7BB0E4FF0C3B6B8C3BAEB0873736B7F045DD0C84EBEC4EC94B07932725785461AEB962EEC8F5AF777C134010AB8D1D2F835F0A74A9E36A15EB3A20C2DACF6225DC00FE5242706B1070A9AA10F909E823A2F17F451E79EA3D4B501E1BFA06F9CF70772232FDCF53850386D2B7F3AE4C6D52F671C9C7B4C24D2F9878BA76B8ECD1EE786F06602462D0BC58A61850FC0E96D026B7DA063B4E72823FEC0CFD6FADBA6A0D6B02CC5712048BB7580459FE4DB74903E70378A3625A8051316CDE3FCAF24AA90E6EC74B385CED50BE96C8839093036EBA48F89AF028DECE49F2C409692C9B66F07B24DB30FEAF900E94A0CC75FB286752893B52A6EEC1FFEE8A5FC315E35A2E6C6E743E7C7D7E09D7BC64F4DB4F5025AEE5EA2C487351BAB25E921597148E93E7691F614C0B4A51E34E836E34F834906CEAFC50C2F7AD1F3AE6F71C310D6534D47970B7EB24CE3CD0AD940DEA8E314CBA69C91B2F9B28E844F12956C53CB59CC550D4CED51931801418322EBB5C90C938E51ED9913DC41C2DB2C5E98F684251CC6BC21C58166B55160BD55AC4B00240B6451040C25355F1E44987DB034719E2FE04BB30F9FE532DAF89D9C158A50B0B8A0835396F9019D239EA13272FA7FE33328BB1966F45040BB054276D914FD8E17325DBB6F21C49B7F8838308A7C04F513927B464F0FEF508F808123682CE77F275EB3C753F8126E99E6558D15F4F2C59CEAE2CA947A85ABCAF0A470CE559EDFD767580C95A872C779C19186ECF3BB71E8D2D0E389EA8C005B9D6D83013E3520CF8E7C5220D2306BEF0FCE9EBB6C045C7D3A3219B08E89A4CCF0F9ADDD85CCD8F832D4A6948C1EA23309FE469E61CD48AB91433DEE00ACD3B71B6F38DE7531FD1C537E2B0173EEEB3DEE13C48236E742285E0DBAD9825A08A82D574E6EFEFDE83D124D0DCA4E87B48CB4DDB65D57367D0099EDBA896DC035DBE9D37E74AADE06E26DF12E508F8838583846BF3FFA79B5D8695A8C2774501ADF3BC2170AA7152E3793DCF2FCDAD03DFBEB00C26FEBF3E109A57965D2DD4E86C1A617C12677D8D42F5D175A02D69F0BC83E1F2874935EF5241FDEBFFAF9B66282009845FA8D3CBB2CE88434B5CFB928037A7728A23814BDAC5D88D5FE5BC023D6674760DD59487F7AA897A95864137E93BD5D9EB124E94ABAF6536354C6007D07B5C4306E87FDE0268B4EC82B8D6897A87942BEDE3DC732CADC36CE63CCF6D0FF7B55A9179B2FFFE80D2D77D38BD74D3D480AED1BB79163F8BAF2CEB9E65C30DF2DA3096B01B79EEEA48FFBCC39BD659EFBD894638072ACB6977DE6834D4912E0149CFD91666E8591F175071A9C556F6F80B7F6CC7A88E5868B8823475EE2A89FEBF3EC59761342EC0F87B8397BC130EF1832E055AA2A8BFF6BEE97BF4AC47FE58FDD2B3BACBF5D1CE8F5AC9936204BD1AA1BFDC7CD2EA48513687C714C9DF9C80AB62C9E5065DC9468C69E659805273494A8A6E43990B25741B52D540034A36E0C4AA0B9F8802430C00FF7F04E5C7B6AAA7EE4590A02BBD87C6553604743B8C47AD5ABD409C33D1177D0CC15EE0E00A882456FCBBCC514C278E71805CAB485080730399A62CEA706DBEA749327C360A1D955D327BA35A36DE00CE73247DA26C542AC21E7D2CF68689BD1",
|
||
|
"3B24A5C19EE5965ECE5FFF30329DFEB9E00CE11350B240CA9AE3F2ECE3E4F32DF3986305BBDE941BFCBBB5089FAFFD3F33951E7E157E93FEA941E127ADB8266794F1CC9949DBBF43A112D196DAD1E72B498AD70AAE8E990953710610184F1225A2AE3E2BEEE6FFBBE9D342449105009EDCA83FD1E6056CF23F1A3325622241DD49A26CC2988C4BA0899C2661A4C6495214660C1521243386A1086DDA322541A89114B87093C8890C892CD9C41003979010C72D1393499A200153B2644AC4698C826D2384718B226451900C0B18224998704A30721AA76CDA36869A02491040311B206CE4400A4A26008C0845A4303009298D042485E3B4644328699BA00C12008992124220B044C1164264C00492120D1C847048B4600B882019374D4A306D503441020710D4263159148C64C8519C92055B0292DAC60D4BA0494230721B295260844092922C5C986C1C95811CB16D1C14850219481BC72513182DCBB02C1C0962C8B44424B82C02362E6322325C2260A1421011446E19352E1B1832D1846541882C19352A49C864111329C144869B28025AC841DB040864A46403074253881100902CE3428652042E10C60DD4C640403052040500DAC24050344E4A3460CBC244920246E1A4101A4442C1888991048523396184102003B48882C490A4984588162001A611041281541885DA128E83862901A14C0B1162428631084124589280D400608108810C0140420860E1C220A04882E096241CA909E1C49064282494C20104088099146C2205418A880461248A09A408182810DB906962184440488A20398001C921DBB82D44288A9022494CA88961262840A608E224651A290089B825D4308441302094205051124004957192C681A1200112B88583164A8314849BB00D8C122E9982819036055A309010136C54286052C88D1985844C440D63B868A3B08402386C608800A19264A020091B390D0884811A35424AA611204144E22829C3120881C62048428561A0046248818CA48D23A26502050D21B6610A842001290E5CA885523800C31672C88041C0284E10418C1C030D04A2911B49408B8220D9864590980D1B3622C3846D93A43040A29111354A5BB06859924951182A424221CBC271D4A4898B380C02853011021184386081124920032C19B63003A74920B28CD4A624A324048338690036088CA065C9B62C04295221C6255218265A186CDC0032A2946894A0296316211A442A1121060AB3051BC40C1BB411D2C80D44B25122BC4828AF674BCEF5BBB5C652F181BA4C0FFFD4B193894D21C340315DA03F329F047C07AF094308A3D3565CE59D02F9A69C5854A80880CFD4C0EA71AD2E6693CD0430E87642A049DC8AB176D77DDA1031F27095BA9E5006638B8062836FCA07946DC758298F2C6BD0059CC3D391E7C8B98214B0843F626F74CD26676EBFAA8A682D120801E8DEFF1D184C6875475E950245FF27C7378E84DDE89DEA3FE7246769474A674E128D8BC8DE84B279BDE4A7FE7F4530C14187436A44314BC161AA402D8D9FF2922962CF7E4B18067CF9AFAFBF589CA8CF91A0C4E31628BA9456A2C1C26E25D8B1A4EBA882E15227D137351E66F655DCB6C7E5EC9B35B993BC8C6004F3AD0AFDE1392C33122B506A4CD8A4CE2631D5DD72F9AEE126BCBBB2930E3B010B325EDE993084BB4F753F8CAFE9B475716F571CCBFA07C99EBC928909D3861DBFD9AA0579D123A1F10C51322534A7B8FB454A56F45F5FCF32D484818D189772A76747972D21EE0861ECA0D0DF5AA8E832C4E7FBA31E102ACD88768F97F0CAE4B512C0F892886FCD34D081E9B27B9C8B9C65D723EF70224ADE1C0A36C9C9CA1A2B7C67F40EF460D5436507BEEA17F35DB3E073E8A39EB88B324DD9C1AD9C02605A2438E198DDFFE4D9E5D4050E59CFA92E8588663ED6E371BE87D01E50EA7678FEAF65DDEDD342CA742C97DB582F466802844565C0E9CCA3A20BA45DEAE11047E9CDFF04B6D2EE7FC34C446FBBD6103560A5E38EBC38C4A9263DCD7DFB5AD7CFF752C2BA936CA4C8B4EB0D014053777195005AF3C89C76271B4FA09F4693912756CFD08666983BF25C336CBB94CC4686B289EFB3B8EC32A0BB0B903695F4872EE81C0AA876EFB86720D90CA1CB90C5D1DCCD1D31306212953004499F0DDB133077C620381B06EB9C36E0D79A3CC909B9E0BE33723ACBF3106EBD1382999417C0DCDFD42E7B2CA325B906128DFC90AD17CBD8057F1B345952DABB8CD008B59A0F4D856F6181E6988C96FB65873915828B3DF9BA2E28712AF34B78744830869220A85EDFD3F8A7A77EF6F3CEC1029BE5F9E8F862E2DE4A8CC9A18475137CCAD3E90351DC715E366764ACD08D90D0E075AC1EE2A904BC2BE60F20F201977F473FBED64F06A2F8BCA9929C80806A6DCE298A18EFD87DA9C4A9303A1BE0B750A9C6B47375F0921D388EAD87DB429AE3BBF4D95899956E2105F9BE16304D77C9B4680CECA755666BF3D5E917679653CF3864F747C0DC6C462ED9B073F1F75850EA13321FEAADDC7FA66CBD8A6735D65C5F58A76B54FDFE29739A9687287364F589C6F4B3BECC02D611051A457B7516965B704146634F32CB4C87617B975563C90765580B85749100B2155FC35EE0DB2F16F4F54D6845C804D0B42D6CB974EAB416CCF62CD35FD65FB1B3F71481FAA93C37BAFE02EDE5E41DDFBCE03F42D44FE5D708B3FC03B0E40A298377E6C247BE5A6DF34D5F6F13F712EF60ACEFB8697F36AC71CF464E1A37E9AB0CF20160D3148DA0CB79D163F8B2A74BC20F06B3082B7F5A707F8873A576DBCE15FF7B6F1E60AA5EEFC7838219B8F9AE5DDCF30B8458E9DF8AC1AE5E5624E2C245422A181B0991FDAB3E59B65D850063328CF54202442F63
|
||
|
"53161CF32DE96D4FEC39809E46B8E4885BD4898C1E6BC6E72197B2E35B0AD1110A0A53895F8E2D59F5F2B571B84322653AD0C77E45380B2666C57D3BD81453FF386A514288055E105ADE843972934881FC0E320B20C6BCBC67671011425E651DA960397D11F66EF7CDBC821F81B6BC42365085CDF8B5DBAD9C0DF6C07E083C3B3503247A209664A6F086ED4B240BF36B0C3B97210F24A8EE4E1DDE496CC9D4F1561A7B16D3D519F7E563B29A592B954983CA564B1D2F15D5C9EE8DDA8AD5E0BFB4AEE8C8DA267934C3318C07613DE1AE641F1C0CBFE04B4A338B43FF733AD658B44F3095AB4FB174A796784A62A26851E89307B33A6348156EE84E2167F0B32AF71081302C3275E104F4CC02C16083E528CA6F76DFD9BE0E4CD78475D89A01B83FFB3D4FCAA7AEFE88EB7C67788BA0AE98E94A49FFD29719ABBE1CFB8771859209315FCC3EC4B0BB5B3C3402D0CE07ACDC09BE777DEB9CA20340B0F04CB0661C92793168606463945929A8F7A9DD51DD63266EA10E2F57CA2B975B8AADE95D62804A5A88C03CE8D19DB85DDBF992A4729C3A0FB89C0B9A991F03BB0AD2AB04C8E463E4CC6CC2323E33BBF8839910DB4B6E6E5DB27A7B65F40A0DF4A4E819AE6B27DD60C7F70087D09709F24D6C52312FF8C015BC7FA1D57DF15BA9A2F17ACCCECCC64FE8AB4DAAB1C723B078F25C4289B9ECD4F57259CD6F5AE2D616EDFE61708AE5713A31F025AE56C557705F3AC1779F9FCA6F7188D09E4C259EE369A77840739E40102ABD95515EC94F65860EA8B445AAAE3A087D05D78B022BC97E346CFE613DDB5BAF56A1A840B4C4EC67244C4F9B73912429FB1033353CD01D059379E9A4C576A2F2A97ECEDD3C56C2D6EF8473293BDFC1B9BFFE9CC7B38AB5A435B9871B27A4B91A83260E965913379E71DD31417253AA3E0EC9DB73E228821C5B5E5F1B478FF9A5A5A8D6771C42EA2A67ABAB6E8FC89B62F3A0F2E6C906F2ED1FBD706181775FC42E6BEA86F171D58131559857DD6DF64EC2E262103A372D7D1E207C03443A20A36A3D604DCC34E3335977AE8FCD4DF8B4C4032140CF3E6E34B2F4B34AC2BBFE38594AC5C9814C877CE22406352B4E8D08E56C6E3E7C7CBC26092487D4FEE663DA458038BD71E5C3BB86B10E265FA51AD4FD692D206B8E5AF55F07FA4BFD2A5358A99F7701D4DCCF733EFE73D1D2E098161E50492DA6839BF704FBE0DC3E2C23EDFA2AF8BC927EF39710C1673DD914F1E137EFF9855C6A9D408A507F0135B7482542D6E933BA600CA647076B45396DEE523AC5BE64445ACC8F770E20681E2AEA6C34A8307621B97841F136F79E0D9AD923AA4188E2CD9F8905301012156501AF2B6BD2FCCE4E65B86FAB8DEDC5A131EBDFCB262768118437346327F188686F099B4E6F857BF0B6509EDFD4B191F4348C6081A330C666B69536AAB45060EB2F1B93E5C992846D67740CDC4F8FE19601574B671CC16351329FE81B9620601D1209D1E15E7273DDB63CEBA3F87D7F001EFDCF481CEA85685CCB8F42D46BBB3971CB443ED7A4AE96A001D0869A844AF49F50925CBDFAF1189F0074FD02D8AA4B9E7185CCD053B2F980C4EA7E0B292B01967331BC11FFF5D809834CFDE46CD6274C11E76FA08A770D7B8AF0760E0AE693D72C5890B732732A2B3002C628AA2ACB8E777BC6633DD01B5383D96B41A198350D7D4CF25C154411F0AC95B1D206ABEF2DAA12962BAF3B1C3035FD96D196F4E398AFB9D76F59EFC3FE38E4402A552A40EF0D537CC22A9E006EE9DFE69417B536188F6379696B182B13453E1FF0C2934B570743EB39D3FA50264ABFAD011E3C83035AB39BAE041F19EE5F7E460E5554E94908BD668CE16DC9336ED0170A3C3745421DF921BE474495C4C295D931BB7F0016A4188664FB04B4A90FA9CD632BD55CE5DBD84DF3CF68AB6397A4B088B441D2375F9578AAAABE5943BD32ACDCFBC14763CEB277CE77321F147CEEF93666FA0666AD280D1935DE2DC708E4C8CC3D41BC08EF238392F8EBFDE0F9C74E6C01F9022BC874F7B96B02977EB5F38C7DC5D134309FF558CE4431E1B813557886BF57F795180BAC0A6CF6E6D4DA8CB785B9C8C119A27B71245D02755EC4933FF25A0023FB6E50C07FB2C42C24ACF27165B37AC10C46A4685BD855F4D36DC1CA99991DDDEB4D37A48F400B889E48E5E7484CE85010309D2791928928B6273524DCD3035684E0A6A7831C644D6A7C15199A8AB761E65EC1861763AEA5EF201B95A1003C4862D45A473DFB5363FAB3FF036BA02E1F66742617B9C2C9F1A345DA4AEC3BE164C6713E7C764DE6DD5E7C4B2A26678853DCA6CED47AC0B15E4D5DC9859279C8CB35957159F49347C3CC193A58AE40449333821466BA96259455A0211C07D597FCC15DC73981E7560A7C1CF0B8B23AF4A8687A21AF3D924B044B88C0863748036D730826BD50D75DF6EF18ECF260BD4B9DF63DA318CC0ACB52B993D7D0A8123B41F8ABFA9D2F53EC03C0D4FC7D934A7EFFA48FAD58B36D4C7E36CE41067D1A920864D46B8B6856911A4409A1C6C11A9A46B18C3B7F0982C27A9DC92D2E0AC1ABA0E11688E41A7CCE0714D7AB73AC47ACE28CBCB0568C0BE32F7C2BF764FD79640C4B60C1052A9F96AD43C8F37ABEF7379C85F3A58DF46F57301C8C4574989A2C6AA0E9B2B38C3F77FA4EE2A7348DBFABD55E5D82C4C692D926E867E398B451F13DFE62151F9D65B971CFC75193C98E22268FBBA7ED27809E97AF323ECEA37C0189F99B85EF58DFDB91B81400520E3D9D385489726DB944201370019431F20186FCB61FEEFDE1CB89641B8AC4703567D35927712CD7BE8434B16FACDAB47F5893A62B5E47BDC22EF3F6473ADDA1248075BFB1809580AFAACD471A1EF410
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func TestSign44(t *testing.T) {
|
||
|
var seed [32]byte
|
||
|
for _, c := range sigGen44InternalProjectionCases {
|
||
|
sk, _ := hex.DecodeString(c.sk)
|
||
|
pk, _ := hex.DecodeString(c.pk)
|
||
|
sig, _ := hex.DecodeString(c.sig)
|
||
|
mu, _ := hex.DecodeString(c.mu)
|
||
|
priv, err := NewPrivateKey44(sk)
|
||
|
if err != nil {
|
||
|
t.Fatalf("NewPrivateKey44 failed: %v", err)
|
||
|
}
|
||
|
sig2, err := priv.signInternal(seed[:], mu)
|
||
|
if err != nil {
|
||
|
t.Fatalf("failed to sign: %v", err)
|
||
|
}
|
||
|
if !bytes.Equal(sig2[:32], sig[:32]) {
|
||
|
t.Errorf("signature mismatch(signer's commitment hash): got %x, want %x", sig2[:32], sig[:32])
|
||
|
}
|
||
|
if !bytes.Equal(sig2[32:32+encodingSize18*l44], sig[32:32+encodingSize18*l44]) {
|
||
|
t.Errorf("signature mismatch(signer's response): got %x, want %x", sig2[32:32+encodingSize18*l44], sig[32:32+encodingSize18*l44])
|
||
|
}
|
||
|
if !bytes.Equal(sig2[lambda128/4+encodingSize18*l44:], sig[lambda128/4+encodingSize18*l44:]) {
|
||
|
t.Errorf("signature mismatch(hint): got %x, want %x", sig2[lambda128/4+encodingSize18*l44:], sig[lambda128/4+encodingSize18*l44:])
|
||
|
}
|
||
|
pub, err := NewPublicKey44(pk)
|
||
|
if err != nil {
|
||
|
t.Fatalf("NewPublicKey44 failed: %v", err)
|
||
|
}
|
||
|
if !pub.verifyInternal(sig, mu) {
|
||
|
t.Error("signature verification failed")
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// https://raw.githubusercontent.com/usnistgov/ACVP-Server/refs/heads/master/gen-val/json-files/ML-DSA-sigVer-FIPS204/internalProjection.json
|
||
|
var sigVer44InternalProjectionCases = []struct {
|
||
|
pk string
|
||
|
sk string
|
||
|
message string
|
||
|
context string
|
||
|
sig string
|
||
|
passed bool
|
||
|
}{
|
||
|
{
|
||
|
"96DB9EC00F0FBA0AA5D401A045778736B8310E6FDFB1351DF8342659842732C664D44AE0EFA591A97CEA3F52ECAE0CD058DCE789ED7E8BDB38E85E77880F0AF9C5133D12E9E0CC865068E311C99139553E7730C8A03104950C25220CABD458716B564CD41A7B742831EBD71B1C7EB0404446D7135203EE44D5AF99DF4758DD8EA6EB1997E7D46C8F7374EAB08034522CAEB411566801C65E78239C6580D27791EBEF9029A5A291D64B748E26D0C3E297CD1CA87DD546DAB4BB9E74734D5F506F72401B5490A83891C8CC6377693AD3F9ACAE6A05C65BA4B1FAC5955A36198CB0CDE4C70805C4ED3ECA5AF04CF3E7D01435954FFDBB0780BD1E62EABC675412168F05C81F6926A769293397BC34682F6F13039E6FC7AE0E9E8D97861C4AD0584C2D76F2A8418DCEC0F07DA34F85C0F74F212B8F94C414A04EB1FD1548E9EB94F233F9A0878DFA120F54790304E22E9FE81F6D949985128226538538EB53A32AC647BEDB768C695E6E301D733A525C796C78D5D251B1927FB7397DB29A505776BE942139924BC80435749FF75B3286F013E50F953B0BAFC5160EBAB30EA0A62728A765B9A317662BD59FC8C0618A3C535FB88C4E85F4779970817E8168B1E7DD736D5E00F3698A33737A2C587FE57E057000D16589A5810754E2D8021E6CB54B474DBD74372188E7752C2C0C5B3A293A0E17FDB89B4981FE6439E4F4CC179206AF565BBBEB0C6EC2E516C5EE216F9F769E0331300F636DE07869C13708B2C45EEE8B5DC222C26E234E826A971215D75C88845B435CA40B9132BE5D34A2AAB78FA16EC309B8FBB03B8EDA22C013A4E02046C3534E4CFAAC7DFE93B8AE6F448C27F42ECA0CF7D2B7096E90D9149C95F80ABDE8A113792AA016AE592996AE13FD6951207060D377F435EF13007E5E5544D0D0ABA9BF5C8F0F77C22CB4E0AA309A8703DB9A7A4221478D079A743F381EC70A48CEEC10A8CEE185177F5F75F4B3E40B051F863372CF1B19991195C865A810B8DBB2509CFACAADD3C4C2A77027D225D03DF53CEFABAAB70F459F96B036D9D3E1AD3687B05C513178CE8934B4718217BA984BAD5A78B3C7ED83D8F26A04C4C032D706814DD5D09310CB3B61C5D8BCE6753A58EDDDDCE37574BDEEE8EE430D3E9D4EAB124F359A194A55FBF899C60E0F2A7955320AB3A188972040DA61B8D889496324D52ECE2A13EC06291138ECFDE17D56BDFF8B9C971771D5074FA1300ACEE24E465781D8ADA07BB2AF2732B081125B56C8F37EF26FB435AE58E7722EF957D5D30D6FFA5ACAFEC3B8714DA1541EF59B1EADACE58CB48247268DAE5CA539413F77B38346E484FCEC6F92E57171A83013A245F1CA51BED348903608DD9B57BA37B3EDB5A8B0ED049CC9DFA39A65CFA214CFBBFEB797F824A2AD8CB113290D4DBB7D0FAAE9404F7F0401B2A43BC8B58D84A84D00BE4813BB152142E73E6F27449CE3899115CE5E5194ED0E2B1318139976076EA1022A92A5C12ACEA17543D4D152791B455B50149DF94A11D6CD8545E721433624F635F197E68C97E4CBA37B080F583427B342F87D0F8A9680D7F545C6E6E055D063F6EDA75C650D65858E7C30512AC90ED05C788C260B9CD90D61ED121FAD4867E65DEBBEC5C378294EA2A886055E615E7BED9DDAB758192D38220DB8EC382A903FBD24CA48C8C77D7D9DC4307A016E6D24412ABD90A37F637438D132A7C59C7AF67515AB4CAFAFFC416DA09A929C77F91153EF2FDA1D7A60BBB177F74B80352D4CBE69379A257D835063128ED6A1F7D40041A25BC07B0DC0DF7F84FDB96247D888BD8A4DFD48956DF70FECC3A1FA1E214173F94F30E0F1333A4CD35C6C83",
|
||
|
"96DB9EC00F0FBA0AA5D401A045778736B8310E6FDFB1351DF8342659842732C6B9F93080ABC1C364E614C24E94D9DFA1C14EA71ADDE6D85CC47589F61F935F9E32F3BF802AB2A5182B77DAE363424FB4C0388861933EA7EB9CE6856F4BEE9CE37B29DC444B3CBB80AAC0259085E6DA6C49E0FEEB4BB66CB8CC6478560F43AD7B14132A242552DBA084A2A26858480559982818168D12B63020036A0103464A468CD9926990A2485BA0608838859380014342085B24850C438411122D9034404B803094C26409376521002EE4B66110049162166E91328850360613B3209AB8080B3924A0086084B2082228628A402544B661D9A68043188541000D824849E1B03099B68C9202000C0405D29280140449D3980862B048A4C681DBC60812390042124802A864A0886DD420020CB30582285241140A241471A2A251D82042624669CA002462004584B8844426921B483253B09010136A1B1790A2046021829010A430181749109425110770840670E2864859406E010760E29891A0A64DD9420C631222D1B8058228120A961120374E08804C1C8424C1362658144510914451A060222662C8A48C8A96401A8429DA4089213761E2384093C08054400042B881601084CB860018C00D00391292364691A26021C74D18292E54268519473010355259847114A345C0C0601933920AA4309C420441B630089430018565094726A3B46911A5081A003124124D8904318308519A46449A2048511049C1188812818C241031CBC630D8308D54368223078C0B372C23251244948C44004903169023A070202091A0B00588442DE4069100A7814C182A2000248304129A80651CB2715192611C098C1C3489A32872240120C0B651241249CB304613B9001A032803454559425001360012838DE08081924040C8808D50C47098A22513302A20C96C99B40954180C1218824116626384441804201A03661943709B347020268001B00D59866990486E9A022E444049118151D1860544C620039700CCA43163A61192144D52B28CA0948962146C024371D00082A14640E2444482B2081A4571DC820508972508442689807113478598B264E1320153400A21C59154988124A771A338891413884232709A18858020290B8051D2284108299141C66DC1342CE48411231442E01069D9A00809B80952964022A84818246D9B104E0CB14D4C420CDA48489A1281C284450A00848B922482440852449240062414175042288D0A96681B809104893016A01BDFE2897418780C6A3C020D3975ABFA691A2398F2DDD5395404DA4A4AD5B0D77B2CE9AE680FDE18E365FE178805E5C22308553656DD94C2827F8A9891340E1F083B238F1A183505A99E8BBE0F8C3E485AE678BC3E11C972DA388C125026E7B63F903CDBC3C0A2D6F96C17A01B4F78FBBA3919B1F12D54AE80E343F5DE1ABB999A2AF2C86713505DC7E2CE4BEC8A806E3DCC17D8BE1F40C5211F00EA91BC979A9A129330560B858EF5B2D28A444DE9EF47B37CBF5BCD37717A09F32FD7FBB03D8D05B0ED029B70F8FF122A7F8CAC9518DA9EF8C022F42F8FEDFC908BA7B4B26DDF2C3E1266626C17BC58ED4FD52617EF235A8E97BB1221C791425F877FD9B49A5A66402CC294FFC2407B9BD15D2A68A365EF450B839AE1C1AAE056F73F22F8D1F1F2DFB3C8DEE53D6C885CF4309DBC492567C0D14585961E2954C2ADAF214BD69A51DC8087243E259333C3A95D532ED6D5A7F52F69637DF48677DF56A5D2F4108FB40D0FD404277F9F7BF162105F928AB76D52373D9CFBB38FA07B56541A6F0F8430CFC38592EC6B60BB3708D7EA8884477DB3D89DDD6D3B6CCC8B6F43AE1BA04E56E036D7FE10330C1977B865AE24407AFF6444F0ECE082FDAD6449BC3C8A482C62941BE978112108CE9D54CACF3072B1C61676F5A8E633BAAA4B005A354B25795A5DA82C226C4297221FF32A79AF6EBD5AEDA26ADD074B7DACB2871B8F4B4DE2A110585CF35A90E5A08F7495D606437D97DF7FAFD08F2EC161AB1C60F6CB72A4C88CF2A6BBE7479C8A37630F6DD4F44F9B7EACF2D7D73DFBE66CE6F496EB4B69C07AD6E82AF9803716A2561F271B60F2494F4FF5083AFC948A0489CEFE259708D5969AA14B28CFF8D4611865F6B2AAE288EFA886D4B363607C6BD721152F996FCEDA8439BC222941FA567BB3F9A00ADB9A683C53BECA6826DA3EB71364443DDFA4DBE78360812B325A99E72139D54204677F35C1D4AE8F27D40D17C65BB6CED051AB7BCB966CD3F6A233896250912DB569DF8132B2954E5603168FC6535A0E806B4E94A2E4750609B4E9C0DD6E0B8D4460493956F4C231DD0FF8C13965FBC17815AE29A876DCFA082D418CBDA11FDB46DE77A48090D16BAD922F330EDC649194EC07DDBCD9B4F8E11C4BC3A861FC985AC8B58EA296B5B93EADCDEB4A4CA23B31C2E0FC35C4C3221504410B8EEB1F13D8965998F35D29248EDD14D00EF2EFD006C0400D4DEBAB0689064B6023A47E1FEB088AE61E494645A0B9B999EEBF5D6604539C7CC4C0A4C7D47096D85341C08D8ADA8EEB41D193A15826C9F4C768047654AE706AE42497C9B346631E10F245D9C7FE8A7F133EFE897A00569EADEDD9FA3AED6B029CFF2217615A4CD3459959EAD5FEBBB4B558D4EB22119C7C1ED1476AC8FF5FD2AA79A9CCA1D5CD7DBCF05D85A0B553973E5E139C8E143053C3AEAE9763E331EF4AC30F6D585AFFC09CE5AB215C0ED6C0BB4645C5917B002412C31448642E62919E828D669AEC6A34F5672BCDD24CCB7BB574D81760229AC39850D277B49B58994407C38D78AF8148952D591CA7CED490B91D75B0533F365FE6AB77E87D86FF8D8505A4014F4434D5772B08FFED7A037FD09D9C99CAF9D2DC
|
||
|
"068D4E554D563CC73421A55A4C04DF319F4936F73C7A7626FFE2B65C39AA6B171C4C83B6081B12B2FE07856B7A755210B133C16721D1F1894356705F083ACFB98D1FD09F14916461B057C92E04B97D7042BF970963F837ECEB98486D7CC309C8368925F8E595CF493D256058BEDD218CC4ED2312020643B318B634E4DAA28711B0880C2646415D65D19A0FA7AC4FA2207D230F04D5BA5042B06B3A43FBA1E44DCC0DA861FE9EAFD3F1F8CC5348F31F52F93086BFEF531E58E90AC5F5154F5E9DED589ACCA19C5003E2FE58F412394D75614F93593ED1A567D949FE4FA291D249ECDE8D956980A18D89C49094BBF8A1E7596786E7994B7C7AEE044C432ADAC7739313ECB421A6DDE8372CA4BA4C946B268D28296A04655DD893AE3C4668D8BA2E7FDD28271E2F0F83D18B4CF6240F292B4BB51CE4084750BC3A0AE3312AAF738423C8CA76BFB7DCA90C32B1552198E376E067F5DC5CDDF74953E7DEFAD81CB583E16E8E07850992419279C1FF91A4A41905BC4DE03254F2B2D0507F51F86E22CE3242FAC5B1E9322D4728314F90C799D339D669FBEAE8C5DB3440F0B837D969C4C852C72B77DDF06FB738C8F83027F3C108B72A6133EB20FA6D72A3A258E9650F2061768389A28A64389CE60AE2334DD7E248A29DE989263FD551CD0241280B9D42AA2B7DFED50AAB5414EB592BF54B3B74E4CA6387A8BA4CDF7559934DDE7823F611002D6FC2BCADAC2945A4D505B52FE41BE1B94B02AF43D89A3FBB83B7D499B8C05FE0242F56559E166637EB93E71F31DC4A227830E455F2255DC5175BC313613137BC25E60B2F3E59EA3058A2683560571647CA36CBF07D84C7305E94AF8946BED953C9477647241458432162DABA56BC5AC7E40AD13A8500049B2E2F43969D0B92325DBEF2BB1EFB529B7050F08220F660A22B4D95D9F03712BB02954376B0C99311E4FBB1B75E86147AE4C27198BB073172A6F360311D762D0E7651413375365DE2E8AC89526807968B7EB34F1E45890C44C9B8AC0DAC7CBE6E4D1ABEF512932D34E0B721C84BFB2A52010CADDCE47A28344653C7A26A3E9A0975D54D935997982C8F34996EBD5297905B164B468533439AAD178DAAC0BC687926DE1BE38B86684D53330F2715D64CD3FE875FD3B8C1E890B8D81AC2E5EC5F9F5CAE4509269517BAE904076DC3FB73C7DA72971F5BC5286BE84279A34152515BA0D323889E264695A6BA98E02CD0D2317C5B15364700728037E3306D2BBE7482E4343E962DEF23EFA9DE1FCE455F4F18AFA461B5D43690DE6A5078C115EF74C688DE407CE981D5DE11E96CD8DEDDD0AFA5455C9F84FD6025B1271702CD34D915B6FEAB160FF55E0B43E6B3355B4106815346F6EE052BC534F45071488D19C5C41FC719E55F24F69B3461CA493155752270A51C92F9F8DDD0E40A3A0690936D0E30E58BD064772770D9EFE7E2FBA93E2F5602DBFA28F5AAAA987E5D8694CF8A1C44C6F37085CB254C9F4588A3A3754F4190CFD51BAFB2D52456109C8AC3C6B562928B584BEACFFF2C1D8BACFD1A00BB3408204C4A311DA79C12DE3F84F743D84C43A2A45FAA5762DD190738574EE702959593CD9B13F90537EB02A34CAC193356E2FBE51C9651C8D5BC60433654929FB52AEC9D2B99BA4828BF3AB0722D1E3E5D3E8DE9ED9C2D8233BF66565C21C4719B74D16BEA7671E4CCE982491884873C12BC65FBC62E138695D6149D7D8732AA085335FA6A31FBC23953180123C359485CE4DE8ECCCDC5D16E3B9CE539AB38E5EBA50C71CCE321F14B31C88BFF82C232BC4E48B56D1D4F15C502DE8C2246F401DF1883E5F51596A49A4BAB1CE28AD34CC7BE2C2DAD17FD6E8A01876388BC3CF64DAA16D3CF89F1E97CF5CD6A8CDA174C6566485F3D41ACF6EB536FE6FE129968B637F6F9D738B3101E696F590EE9C2F9E886752225F32E44A4EE0C82990F52EC4FDC544ED4FFD3DB896D526C8650E4F7D509F551FEE9450A86CAF9AB133C7E70D5F5AAF3E19702DDD8740B6AFDB40E9D9920BE177F28E2F9CF35E5D6DDAB4F94D8502094EE7E189421757AE0E314406BA1D65763D156C0F68A9971F92B23535255EE7E3E20B073F0838F6E401F6C92412E11FA30FEA483568E4145626F9B238FB5994D76556F7C9B07550854AC4F38D0FBE1954FB208ECA364D4AD9D4C7A468CE41A8F573D8E22C360AD38EA48E82A3CDE91DCB62708AA44F18B047733DD493F40503CD78B1761D897BC575C4CDD2E694BE17A95BA87DC21F21A6F9F66B980B80A85C87651761D5927973D04299C5F602A6A30B49553C508C68E4EA871896FD4C180F9AC3D58D37C9510E9808FA3AF41C3E028D58E4238043205CE24F3B26A1018CDA8D8DE22405240BEF7CE57F80E94B3415BDB9987A26A59D8CF7EAA133B8CDE40789E3862821EBBC15D30AC92DC018478382E3F4851906BE03B6141FC139EEFA36033F9920DEB709A24EA180D4A9439107ABEB12A303E747230464EF3B9DFAC763EF7261512FE36EA596F87C6039C268954FADCC0142D9B86490B9144D5C90AACB11CAA711D8D0B567EC658CCC5BE7DC28A23BDC38B5E92E86943A31E55B5B0B13B4D84815EB1AC11BE681EA71505CAED29E6FA867B45F9369D0823CA9FCABE9D6E6ED18FABA7A884AA380885942FF18C0D42E813531F1F0CDC30280636574AC7EDB2D70791D83012F94DA59B52D666C50F5921E991AB5045756367DBBAA1D150D45B5BFBF500E62F2C79BFA3649570440CE2A807A81E2248ADCD0877075C8BB9F00A31C21A73A8B861CA07B4F4FE137DDB6F38455BC25B051E766E9EB947FA342DB4A177134BB4442803CA032340BF1C6CC1BF0290B96D9282440DCFB7D1BB2BCD2BF4B31A7F3F9A71C8FFC855DD492B45
|
||
|
"C888E70AFA79ABB9FE4BC32124F5EE0AE2BA7542A8DA1AFCC87348125496761782B26AD8E7078B71C9931FD51802B056B0E799944EF1ED3261CF1286EB744C1D20DC23D54C9FF27C4FC433950C7BCC",
|
||
|
"D4EED978EC079FBCFE2D0703EBD24EF5849DD30E7B403BC9F04CFCBAFC71C5E3ECF0E4E66C263A49AECB503DBDE395A3A2482286C3799C7D427BC3D21FE965D3E16D231330C773A62E72D33161069634B2C4BD2F1DBCD77E004F56F4E2ADD1ED394A96D97A021440A7675A3FB5D7987EA0AF7797B2C1B149B17C9B0B5FA368F3E050139D0068EF3C68BF39FA0D4EC26D4E5141791141A71C4DAE59CDD1098452B0F1E6668E73B1EE6ADCA834E3A003FA03224408AF34CB455B9F322737DF9FD62E8CEB62D18A95147B32DD6E1C5ACCC3FA8CCF138880562A1272DD37F1D972797F98F5039E4795FBB3064E336DF26E48A73E123CE5A4B28B97841ABEDA88183F6E225A3E5BCBAC7C4A6683BE88D22BE874DD0C0D4BEBA338AC938A1A33AF4D992FEB85A374C758490B1E6778B367E946BF04DD76E31D9E99E73D795E70B61109E846DC2D7F61B298756D361F3C92ADF14DC4876022B9845D982A1BDFF067EA2AA2C9F42EEB22FB3B56906BD171B20DD16BE346605C5FBFE703823A259AED2B2E5C51F014F2912A7B5998429BDDA4F650DAB1981C15E05325E36A47C8E6B83ACB3C16122704F10BA118C9B69382C1297B63746E76D603DF80CD17ED2D3B5E7935035D85DAF0EA1D1F6E9D565FAC4A0C84E0401F7C9170F01EEB5121978E5DBBBAAC5B6042FFB689158A91D38C02886391C45A6849219780C78144E443974FF159C56C51ABDC2E11855D95C71B9C331E77384AAD25078F8CF363708067C87949D9CA91295AA0DA7146C2654F54224F1429201FCD5922F6C76F7E323B70D15F724D3F219197CFE6682259E41A1AC8EA5C5DB00FAF78A3016469C134B3A19DEFCBB0FAC3980293F10083FB1952BE10BCB93252A4AFC5AF0F20E7C31314650B52D3A6BB6BBB56755A9352AD141CE2F53E0885626A5ABD5ABEE822CEAD80C86662CFC31F18E4F769E3C543354D24BE42C360E5236F92885C6780C246065A0A3DCB2727CE27B4CEFB63A405CB1C0736087C6C8CDE4AA8C61DB5BD26917B77799E06F061806890D029AA9FA159C91FC635A84AC218A4B0EA84368D7574956F7AB34688ACCB40FAD365A2807C55263D8BCEC0ED3900CB66755D5AB346019F9334659A074098F6C76CD607A43A80CF1D0F014A4C1E7315272D50DCBC117A770D48A17829DD3F4316B46E1A5283AEDFC4202E17C50A28AEC3DF5E8C1509D5D618BF6E44E6BE9022E97B63C67500454F616EC4034AF26DC8A59DB2C798C60E0C09ED5A0FD9534CD68FEA3CB0014F19142A59FA8E116C047F3E5B9AD693F1F777403EBBF20FF0A7413463DDFA252D355B96C1B540CFB2833CD82F640ED72A1A9E86725F5B3A0F94DC7FC8CB1052BCF8A57D1D1CD1313B2784FCB922C3E4DA304498B93E1973347F5317C07E6A529C6492EDF2FE52F42573A9F9CD9A9A436B860667A7B0247EE98B35067998DCA625405F81B936E6998EA889476691ECE165939B5326AC7BCCA4CD9640B84697EC899C2938A52375DAD170A7331108C865693D945615594372982FFA073BB65249140771B34EF711BE4B6BFCD25442A94D3689E7258DF11F81AC3B0C3D8CC3E406B9BBB7431F11455429A97591946BF6BFF1B74AF5F90F3AE2C8A53ED71A1CC47D8CE4716E0E068BCFA8A68159A6FE48BCF0B8ABD2D23B4DDB412C1C3563C803A27C6F8CC774C85620F25B3F8CFED86FE702A9762179A868FCB1D5FAA1DF01AC052D5256BC2A5001BFA4BD69B66AB47A082ABE3ECA932EBFCF6BC3DA31CDCFD88A31B2EB8584AA9D4761108C287584B6A06EBADB43A5F801D70FD2936B74A94B545AF3F8741E42B5D94EA5D2339A35755489635F32148AEA1766191664C8FA968FC6F737EBE3B40B9B1E524FD3E9A85D127FD0BEC85F5C26BF2A0420FC836219E7A3DA1D6179362CC2DBF4CF1F28107B1B27A16CEEE86123E23966C747A936B789FBA3D08DFA0F42B355F37DB02C8858D5E3F4C8EDD2AFB2E9B3ECAE5B157CC72021040459D0F483A13F90ADE7C06E67082DFAC6EF51521D5DB6EB15EB9A7833EE6182B7454B6760EDD1ED4F002D219E884E75113386433EC7B4937AE970465709747CD29B39FB7ACE6C8CC7AF528192621AE9D4C39A6E8C6AADF87D5AA28C1F21359C20AE01023C88D82F0FE9B274951B83792F30FE472FAC1D258ED608FD2260C39EF74331899070982C26BE6C4096D901154D7995D5AE8170E5E6755F01842B0C28160B625BCB6EF8DAD5E4E75B9A2D513FD4D2A71F60B37442764818FDA344281BA33A59BC1F65ACBDF28D4D01CF9E4768AA831D325892FF12AF79E99C10862CDF6E6CAF7B8AA44429EF4E3648475C2FC096070E7D383A63D673B31791B746EBC41D79F64297DE9FBF846CA71B0758FAEAF61F269CA8D50C965C526CFC60DB13A0BE0FEFADB09AE835388360D5226B46E08AA6AA49E6B5B52653CF62AE78F364A97E5523B0E643068B3BA7489DC014D18900573644E610C11CE60E3C40C63E9E0FFC200B1A91177BDAE345F8A0424D904F9CC32EBDF6438DA5032A2F515A39D70D5A971AE3FF1868CDE580749136F120C1BB610EC49077417CAE92C0D830FBA3169C6DEFCFBD6B77FDD3FD0E39F42446028A29314FCA35029CC01183F5EA262582E10206D54117FC4545D90EFA1F5C121FC773AB1CBE64C31675D4CA12E47975BA7348C8388A0CE1D91DCD59BDCD83426C425243DB8AA57983C18F93DBDCA3F7C96C32132D18E3CA73E1EBBF267ABA5A228E64BCBCD47500DE9A249ECE3AA890E38BADDE673E8FBD68DF49E1C983A67CDCCED70F7D11E7DED5D1FC28FDE58CD52CD04BC80E26B611AD4AA251AB1547704DC84273E20F8C8CA72D2398FBA90AAF749EB4342AB088FAB4E476B2B1901BD06C0B8962BE12
|
||
|
true,
|
||
|
},
|
||
|
{
|
||
|
"E18AB85EAAEAFDBCBDCB3EA341FBF259727266C8BC4D0F11FB40F29798BFEF76577A44C895E622A75F6D28FEA7E90985600BFCC1D6BF914B32262E9884BB54836CAC5CAF9469DA5F4870B8901AA0B437D90CCBF38F31D5BF4FA68F30A594B077438DF7B2B8EB440C4C897B76B21712C350E8D48EB066EFC0AA5ADB2967AD41EC73E3055A26EC6A6CF5EF682B0B74750EDFD78AFEFBDFD67E2CEA6A0D69ECC05659CAF464D94156CF00E311F69830AE112C43C9B9F09DB5D14D1675A1F173B1778AA3DDF95AC398BC24F9737E06B6AFC05BE7A058D31E924F332E2B203F5C6D97A5ECEF58B678F151BDFC23B3546749E9718C225642AEBAB40BD51446C69B90AE17FA5E0FFF8B58C9502C620798FAC1F6F40CFE30A83D3BB02A5380FB293806D79A0C78B7549C6E9F4C5CA1787247D4D6F29BF144B66338675436C04B349817820831952683827D9CA9106463AFEB7F20D55E0AEFD44180FF15A891E392DA9F68A265D5DA8C2C8DB1244179CADAFECC820D55D8E0D79C5E5A2D2C88A25EBC1F5D05E58A4615C58DD06E30EC9CE4061E61992ACB2E12C7590E376B5DC5177CCA5C9ED1310C5EA8A67B35F4A39539DF3A702D3ECBC63EAC6747586B82147AB321F7FFFC10739F8E58B623CF450218C19E8EDA06E6D309867CBE18CD5F671BBB25488ADEE2CB6A72BC3D0F81910E1A45DAA3B004835202BFB5BA6DB617A59FA48DAD83362699C7DE4C4D2B2D7ED20BA9059D7F5981A463068D2057C413EAFAF3573DC16C4207B905FA125AE5644D7E4EB5FF72E28573FEECBBE9BABC235A18232BC1944262CC16827D8A2C329EC51BCC260C57E3FBC0032AC125DFD4C2A24193EEF0E78771CDC71BA1448352F10EC7ECC9F597F2934F3BF9D41E7D800239C44079778DF020F51EFFD196F53B2491F5AD85CC43E041F58BFA3D24440DCA3D5703A66129ACEDF31BFAA975D7D4EE565E8718E61F98FAC08B8C78E832C059CD52676DF96597A603D0768FC3809E2F247B99ACD53BBC37605D03FC937D415F779F0D7DEDBD477CF3CE1D022D04F4A32700AC3ABD07F74B9BA216DDB01DE3D59D8CB1F90B2EAA0CC8A8D3FAC3226F419E7B73D847C70074659631F2685604CE3D994B612661F06C3C39EB84FF0FB52882F7EDC73C5A68D7F65D85F89BF98E95E6238099C960FAB3EA753FD33036971687F5BB6E907B0D3BDC524797BDB24D83EBA3DFC008BA9BA07B991DA2BE9EFDA8B40F1E97B5B25754E7FC7769C12EFA4F9079F8BE6EAB388486AAFBC45AEC554DA05A230357AD4176F12675FF030E0168B0F130DD0C32BEBE9A2BDCC7C00AD075B29BAA570348AE857A8E7CAE49FF2ACAC887C31A093B83450557704AE71A74F8A273FD9D6A75D15F001A9F283CD91438B7D045954DAFB9620CCB48F2E18A75A278D478CABC2DF94A3E784B4EEE0A11ABF86B975A6070FF68E73265ACEF4B1E6E2A2BB58DE268E8F9D2893F71543CE7A0980E7B87A107BFDCFB70AE6F3E266168A90F379FA40450452A4603B6FC7A6604A6EC940A8249402A87558C9CC80D719648D9EE4419DD054D928AB8BD0F32B35766DE3497BE23721FD2B53F0AC5502FC5381E1FEA43EC6BCAE24E1CF9B0A76FC0129F8A27C814A664F4153D9B7732916430BF497C70D213E90608E4ED00AD9DC09CC5A1528CAB8251367C9C7617B203979D77B118E506D644E6ACD7035F2FF6172BFC1C72C904A2E103B9B4983EC38F81E726F67C7D4B1B6FF2D01FCC3B682DA9FEAD651565F78A0D98439B162A4166FB0FE034C2AA9E85222F3532F7F8D7928810B58FFBE841E93E3CA1AEA1A197200FFA153D86AF019EF79E4004C42B04E3FE7A94A379DA",
|
||
|
"E18AB85EAAEAFDBCBDCB3EA341FBF259727266C8BC4D0F11FB40F29798BFEF7697832309654C93DDF3D4F31661C1CA7E90E087187C43851F4A653C5B99F923B059E9334EB8857FA6031A59BB55DF85B5E5BA27A510194898A840039D49E66CEB7DDCA4421447F04919671060C831500CA4756A711C27514856D594FA69E0BDD00B860510B30C22B4649048828430261AC580894800A3482053C470C3308420057290322058282411B288CB30209C008C224589C0144100C58423822D22444120C9100B286C0C253102176E842442110085CA28669322494BA02D810469D426061A9729D4023221164EA2424C809470A336714C0281231932DB349013490811C1891900090A118C83C00001282DA0086184B48C49C2000C248E0B200C4A084C043172DA0620C4188A2113668C3831E2804493C24418112D1BB990088821A028120B808D80924940146E5892205BC6302409889B02300223295C408163002E010348010181A3068E21158D992466DBA00088864D1B813013276C9CB449C4A84881366C9330069C0802641822889661D124249C884D08212220096EC9084C0315855B2681D4326251084510229211A58D92289113B9914126119238710424420013500B08015C147181920D11412A9AA20DC8288D8AB80DC8126621886913064820A56523362AD816860A10718C30055AA8849B208298240E4B086594328C8200701224211A299251A4894C36800C27512403651B0469CB24861AB33099B444A4366AC9B2891B267044960920444D213885C3C60183B25103460008270DD9040A8BB8059B14261918660093316296481A19301B494212C560E3124019B92CE3A6701A350821410EC4B0908280651A2904D89609084671E2442D2396090B2910CA30910BA884C410285218862316704B384621A5102336229226308C9040E2B609E39240E0A22804C728DBB80D98B6481B250848308E004540D0A0011BC48C23458521C18551986004172284C4688A326440283192263244148489325023B34194368C202046903480C1B430110845520486102924042426D8220E89802DD9A870048050988400CC122008B1644C0801E1348250802054026610040E83145112494C9BB02CE048651816100B874C02032218982099320DD0140804212219A18C02B26961A05050C4041B428810221214B844A4162A18955020268A02084A5182085000685890289AA86CA0C28D09023012C491241504113468C2A648D38825523685CEF9FB7779B2FDDAE8A452E9754D22D24CEFC11D7F23A803F054ABBDCB3E55D4D2F07BF72FBAB7EE7967E06D1051121F77C1661B9F996EBB6A0C8DFBCE9BCB406D9F0D57DA088AF6628E2F008FBF38F027D081EE2A25826FD82C310118E0C63CF0AC0126BAEA18322E562EE2BE35DA1570AD9C099239C5886E3281465C922B3CA745232331A4121B21A1FC0370F3D98539A5F4D1C05932D1A0C08F897134C5486DBB1EDE02CCB47D8F9E9C6C7150297770C9FA91DC692D49AB3D925AFAE5EBA28C6F29F1DF9815E0ECA3F66CA2F9F64E74B2112F63B35090D5E6F5319815F3B0A2DE8810F21D5D1E5AD2F48B44DB844325BDDE9D8CF69C517D58B760864F9755D040689B7EAF212360A11B51091C5ED2554C867B59E4DC547CAE62D5F0D0424E4DB40DF27FCE399005A20E0C8755B7498A316D8563AB38649E9B94DD2E06EDF8B9DA8BD04118DF8F7FA99BA5F09FA18F564732786DF785E7401ABAFD9B4B128F96DA5D498F989F0659470DD12AA3C986079103CD08BD41298166CA85691FC8FEBEFFF35CACD212D3B7AB2AEFA2ACC51A7936D576D9F8E9909D3A785B301F09D03FC89985FD2922F539ED1F7FCDC8C9BC78655E1B0D68F4448FC30DDF710AEAD86E4452BD5D9F17DA3A83A664B892B9004729CF3717BB28C88F44F0BBE1B68C483D93AA7875057B3942440EEA9FD259AA38AF10809CCA86EBA9F5D3F575915A2D27907ACB90AF89F7CDB06F87314E1B80C34182AF2FD1CC6B3E1B4CF970DDB2F4DCE3CC15F41D0A1C1E50CA48AA96978A04CC8389398E2FF4C73B59136743E30FC94FA3FE47F568EEAF4EA51ACE06B91386E6283A2BC57881FC59CB475EDC05AC9DC0B37C074846B665D58F950BDE5A7A81D778EBAEE315FBE293A7577952FEE3B32B3E5AF711685E535540B0B98D64A8C8AF52AB492A5C14546BA52D4157C4FA87C3419868531481E85F54E3270A53D9DC8CBFBD35D569CCE90E86A23C705CCE9400194806302FA3F4C609C813DD50EDB8B497B2361DDEB3B255589D98732A943A4C07C089D844968597375A7CF684BDE4A8C2D86FF092EA8635EE387AF0FB6BA7F9609B1F28C9BC88775888BCD0E79303576EFAF0F473CCB7DB6A6F0C44FF92CABDF316F5E0887A4AFF43133F40685D6C88F0710BC3E6F98C4DCD944EFF9F80D4B2ACB68D705EC39D3F4388508EA2BEA6782CA615628A46746F9F7D47D67C20386F854F165C0BEA56391FE26EA2CB7BE46363D8D404F4A36C9C912A7C81CC9A76A2BC0A2FC5B5D174B81BE203305BED071931064A7A9ADFCC5BB42A148599ABB8AF61863EC4DF3041D4ECB1340AB5F85C6C8EBB97398358594C2FF78116C25E8EAED93B601FE8E4C3A3EACCFB21C1DD87C06B3ED1B000EFEDB77A7495CC69A2E8D683267B8F3A0EE71666D137E23421AEEF4D660C1EFA12B02907C386D0CD9DEC70F121FF31414652FA3BF30031A11E51048B4E3C2F0B9ECC8B4EC83A7073A4DECEAAFB2756B5E105DCDE3FCF60971224F1C24137A06E8ED12904ABF2E9A53EB68C8B73BEF2D0A57162E83129593AFB9B7439B3789A11909F064161B443982ABB1E1988E2B2756AA1FA1531B99C3447D6A55F3F17E64026AD2E5B32A813
|
||
|
"A3BD89BFAD0E748FD562D1849C47D72AFDACF440BA17BF2E965B9DA0F9B0EA4CB7107614E122EDC7E582EBB609B086698A2B0C39B9BDDF1AD16AE19BD65A12C118DA3422B1615609E6ADFE9932919977F773FA0C710326EC332775372BD375E31C1D47A2287DDD84387D3CE0A9124247A20C6F4B3E2EDF607C5DA08EE68E86228DA7AC74D83B8466BF383B5063A349D4B65CC5B2F6038BC89220DEACE39CBD73CDA083F2E6F9A368BF654EC9F771805B0A842AA30154C3119A936D7CA343CB0D0232C2E4FE5358E1FFC706BA14265B009D82F0AFAABFA58F8582463FDAA32FC51F63F053721EDDFA34D562A7E34993E1D2481FD309EB71F2853502DC4E8DB6626EEA03A8072E49BD55F99B1BB12BC4885E94CD91059DAF230BF781BCDB33F4CFF014D3A8D1F275A0D92570B90E7DEA07F1DE0F425CA7774193D49A7DCE22E2C6B2A9999C33B5666DD729387CDF42F8A67550DEBDF9A77989B1075E38604DC911A24FFC06235F58CF9C08EAD6312848F10DFACA98348515AFB0BCFC8C850276C10069A4273405A140E913430F562946AD93E33BD60EC97B4777300CC49F41E2DF17400077D5DCD548D1D962B0CC8DDFBC819CCE68E28E0100E17904094E72194BC30F9C35E6C749614B1D6510CA5DC17B3A5A37B98DA6EEB476E63F1E3D206636EA2C0D8D091917B8555B0ED04278E62198412AB4A80478D19DA64FFD809EBD5AEEA788B07F59BD640FE0BD05778B5AC5E4C0BDFB7A55DE72DD8DE7C77E26981361855C9D3DCBE1553DA5098776555E846DCD2418B21FDF4B44C67C61AEFB091967345BD50FC79308D96F1A5AA0233959EE95C2873FFF48BD5B6C64D1D3BBC458FFAAAAB0AE4D1A2F556418FADC3BB7A9974F1C735309C311E50A2229F7E86CF269F79558CCD1A90B09169103112DC77E965CBA40AD2E509502768158582346E7672A27A4B94E065190C9A2A39FC58866627B4D3ECFD41C919C4FA6D32339D4ABBA30C999942AF9E39A8A15C9C0ECE4A84AA4912CCF001730C3BCCFB332A1DBA5936290846ED20BF4A81C3EE705DF4D6B02D874FFDF670E4AB5376BA01FA100D9711AA80E57E781BEA47194DD4ACC682F5CEE55327A4DC03B70E76BF091AF663CF989B46E0EA959570BEF4C9FA37E322028FD4F85DEFA622688B7B8B13F8DAEF011385C7DED912CAB73332DDD7449F32898AB7D3FA077755606A2FF3B55CD8B39CCC1E897A7CBCBA53CF0FC535069C888F30D7ECAC67AB2FACF0448B937699C70877E463DD1E636177544BA5271455A4E5B36A5F23D12B713FEBA7DDEE241EAF7436D98ABB824BF9800BBDD7E8DB0B44DE22AFA2160DFDD2029FE61917F37D252C2480326923D79565706D21A33E111604CFD15B493AC3F46932BE8317B179ED2D6105F9F10004AF8DF8ECDA026714B1230DDA81D09A86321E71426DD3559E525A6F98C7FF4413DF41A1F5DF7CD275BBA081E8A613C45CB628F53E14EF565173D869BC8812B5431BA3EE463D50BF375C9621C424D966BC06E7BB8D325FC7CD97EF468EA43F0BDD64A6C20CCFDB4461A6379DDCACEE30BA670DEB83F029F9EDB0AE2171B2556EFA72DEA25593CDB9F27BABA73C3D887BB95108E413297EAC170C55DA89CDB01D5D73DB5518A781C34B111502AC3106338B37FF31DFA2D2C5C7E749E75718DB178E57E8327103A3A882D896E5FF469360F3BCE354E54E6535A65C68CC40149BD20714594FA209F07E9CD47044E8892230A39A0BF2EAD22BE7978A3C7182307D031D7F7F2187470B0FAFDE3711260CCFE2CDFB0CCD27B9517635E086AD09A04CC3E5A641A87BF02BA06723AC4C5861C82E374611DF0462A96F27EB11B2F762235C1A8F72FE2AF728EFCA013FC118796157A38E1F3CFC675368946C9FA4DFF5B196F4B4B5B9B96BAC46730E3667CB4DDBB78FF1A8B9092800D0493C69C73DABFDF068FB1EE430E1494C371854FD379C950E33DD40DDE62A920398E6AB02B7D35ED80B6E04604C0F84D0CF9ED39B2BA9B6E44F11AA8C84096E6D5B5AF3B5C218EB0AB380A6FE80D42FEE59C4D74497ED6E9CAC6D2BA2EE0258B25C85446BFDEEA5A6E37B889A3663516AC4889EECBBBAF29FC6E1A467CFCE863C2ADD51E24EE476F8A1930F8A8D357E50D4FB61644E839FBE67834064E75739E30615CFA4B4365625FCED604B695A2317469BCF09B18C41EA821618A50A63D611DE78E4A04CB4EC93F522E0906E11C470385AC8CD69186BEAB60C69A0DA5B58ED7DCE6D3DDA5B621F5928221D7707F6FBB6E300534143E03BA6CF0BAED435CC17405798651D8B6338BE1A11495412B9C1BB3DE69672993506337AB93D9420296A61762020D9A2399D8972FC865A13B6600C9FCEFDA03D9D608872174718ECABAA907B5D0A72B6618A3B86C40009CD884AB1D22A3FCAC9D5CE80A2E73B3C65245D82F643D25E684226DF99B785FC1E136FAD43AC4D3A3E90E45DAB72C4ED3113E30CC01E1D2D258E6E1F546E6BAE2379F377C46C4058311DA1137107DCC6617B4DF565B976018B241983F47E57DFB45555884926687F1958C6462FA8513F12629DAC4E100389023C9E2CEB69A0F753C0CBC236EF28FF278C157932784E2950F4FDA565BB9070179C777225800B3EC1F8BE6DD1A23400080357DE802B1579AEC3ACF69872F0123E9D647AFF30F27F6AA59457E1ECFCFDFB862855CDDF0D8C0766A3280F65D46650A05ACE902F96306915BD9DA71CE051EBAC6C6CE940B2996C049A85615B9528334B64D24ED8AA57F301A68078798091FC1473948E07B1B572A9A74A7789320FA6361737BEDC666F40FA749B063533134F121EA36B3B5E4A8313AEB537FB4277ACACB5BB8CDFA40AB7EEDFEC5234D9215EEF35B9F0EEAC5BE194075
|
||
|
"42",
|
||
|
"F79808353913CE2560933A211B55589D497DFDE6D18B707059CE924F29D5BCA634829442CC9DD68E645A6079329CF1B9721E372D914B10D19B31F347BD087E2644173FC856FC9EBDF239F00EEBAFF4A2D2EA41A63CF0DF81AB0DE7AEF539CE852413F157805C40773E237FCE5842DB25267494D4CA5E09A5529951E97F99DD6447118C65B386088C10D95E41321262BDAA705953D96BA4AD868D7F7CC9E1E2950E6B441398C666108EB47A385CFC0A8F62DD10F524AB855E797BDF8EB0701B409B0118EC3CBB7A19762EFA5F3C73AFBDF108EC826CAE7BC1026571BC19F2DA31A4C918E82130ED6E6A76A5C119E4A3CAB07526F449BD95C128D5F8CE360D0DE3897E30328408F9F73F6E9881D3EEFE6A8CC64F66C161D9BEB18C871A60B2731C398CC9946023A9EC776219BEE827CD4F8B3E7245AF99FA5D55E069E4882F700A3B636266837DE9D4C352951F0E916C267F224FF0C65ADF3C18F63208B71FC2D94248A016D8ECEF7863A7B634CF49311F4D5A5CCBCEC4EC2DACFE7AB0F6154D3B1DABF5B87F66E4FE9EF3EFFA97245900AD75E6A3B75811CA38E36EFD290FB3148849408CCEAF81EC354BD808AE0B68B71BEF90B76BFB7CC3D553BD26F268AFAE9AD54B36D8C13B86B4714FE3617F1BD03E9772D8E96DFE3985E40BBA42AAC4CEB43D577D7B839BAD48D3FC1850C5A60E1E8083B48D4459D7043D81CA8364B58EA2F7B87A58CBE882D4880A1595EE9C8A3722F08A02FB2D3F82E3E520CACFCA1044AD45D1B489896913DD2D6E5012BBFF2543E893D3B5B336B76381ED79416B0126D77EDFF5EBE207AD329D9B55126DEEFE0B8E1EB70AA67AC0095F49FF4422B1060ECA24E4360D37FBB190C3662BBA818CD473D8D5A546CF78A7985F80CFA8C69B0EC2927EC90147BDFD45A415B02B6DB393A56D9EE58E79686B6FA9A03CE3BC27AA989F042EF7A1C5C063D636EF0E91CD692A9CAE41F89AF49121CBC8E90CCFF3277D7D5E48DFD27ED33370221F1EBB1983975E94B7A3DA27104B8E951D4D8E9216758B8E981B6A34887AE4690B117037EC451DA7984EFEB42F739063FC05B1A85088C8398238BC3309A30B87CCEE2C3133D790ADFAEB5C036C77AA11C5B749E94892F582F84D66E2F060CF7BD4082F889E2DB21C4504704AE2961447E110B9B14BBEC1F33EE175F506019241D0BE404FA170295A5D2C2B686F892DDDE495148E1A120F805A39A40533C72172AE7F1BE7B59A8A61CD175BA5D96B18D5BE7859E0ABE25346E73A711201C397860850C2C597982F61D076EE168B9F3C198DFE433BCD40FD00CAC9082000B5D6EDA57A07CF8712830A4918C9D71F9CA3035FEEA1F003FB8F69F22EA7761751E78D0771CA2236A5C2E9FF6EE0E91BDC2F253667C1DA5981B5F055E6BAC4D7F75EB4F88D1DD8055AD04AE54099D91A744CE6CA2B401213BEF6D9F7A0DA712B66D930CED0C5E0872B97EEB33BD9FDDFCAF83440D43B82EDB6027A96B2CE343CC43696C6424C9FA704B831F024CB571F3C82F6304C884920F20E7432F170C3D9288E6FD9AEC2F810B0159DFB579DDB28124BB41043BC62AB4ED76DB9457FACC431C5EA973EEEC2C302A1BC08A1FFFCD4A2B709AAFE02BC470355BDB00AF5522A17C2077B025C737B486253379F7A7B9DF355D2C9F1A20F3DA637418BC5A739846E2312B63A40F7D2A6B7B4CDD39EA11BBFB7D6E982CC538E4DACC5E03E0CEF1D0A5789A46BA08E6F75A6580A4BC4A861923C372D1CF519B4D4AE42AD957F51992778599F08A15AA2D8B5E6314E4418583B5CF05041BB6139BFE8040CAD9612B595334AAC02450411D5800EF35F4C8284CB5859598D4C92F231E2B44C5A3914C6D747FA84FBE215289AC799211C90137A7018FCE5EE19F2937318627B02B5DE2A6CBB242F79984321E1E51C58DB1C49932A96C69523341B44D37365035E255E12ADE889892BFCF859985B2220F9947F4298C729F57015C6BA53EC0909A5AF135816519A42E5ABE0F0DC5F10C7E1C54510B152E860EBCA8B8EE62F652DFEA40F770EE8AC17060DDD8BF7D0DD345781EE44E6A952339F5816AC1F49FA4A5460257D6C1A7F4395EAE5004F666A8658713250939E0C4A84E815F035BFD022C1D64D22C81CBEDBBDB6BAA48857D3F815874BEA8EE88B9CDA0EE146FBDD2DF2F8601B63A4DA67248E5547D7C8E16EB8D9FCA4B10306E36DDC284ABF05E6BBED69AE6DC86D41340E6D741E0FE2905762F74AA2CB83DBD1789E48482F4C19A045EC70B1587530F11E6637E1C9556A2EB763B1600BB5DD01337448A979ADA6296CA6415B07C2F1EC3443408FD068C2B7BC664F1D71FE8032C2B40FCE9DC0BA8175AD65608C8BBDAE3F97B73D4DA8A3C8BDE5B09CA5628885735C2A7517E7FFD4DEC916FA3F257DF302EAE37B87A5B90CCBC0358169BB7A32CF3A2FED5B728AA9B8BA6E21ABD09B34AAACD1DFFC7423E733B6E896EFEC9ABC1D7818C34F482A690B2737F379C3BF29C95B6AD5791FD2327011D6F5A921413745E6E956E83A7F2B5BCF1F092A3B8FDAD558A51156C0B44756A42E139F09BD2400196DF1563070D62FD48B5C2A1258BB3A961AB0E8101DB32D23816477D2D6AD9802F6467711103B87FE15770992C4B3F26CFAFB1E376BC75989E540DD8C6F2FFB36BAE1AE820C18FF630007EC58E42CE78948BFFFDAA34CC37F81DB4B7D0DA0AD8523AC923634348A506049208A2799DA1A27DEBC6CEFF01023010F4C1C15C1A0DC9F66C4F6040ACC6C775FABB537D6690B069A136E1E7290CD5E8FB68FA4148A19F8CE4EF350E98AB0B8781207BF8FC3D05F6DC647E9CE0671927BC6D3E55A77A875823C0922AE9AC3F7DC85CBE102290DE8DE8B84912CA82A5F022345B8A860
|
||
|
false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func TestVerify44(t *testing.T) {
|
||
|
for _, c := range sigVer44InternalProjectionCases {
|
||
|
//sk, _ := hex.DecodeString(c.sk)
|
||
|
pk, _ := hex.DecodeString(c.pk)
|
||
|
sig, _ := hex.DecodeString(c.sig)
|
||
|
msg, _ := hex.DecodeString(c.message)
|
||
|
ctx, _ := hex.DecodeString(c.context)
|
||
|
|
||
|
pub, err := NewPublicKey44(pk)
|
||
|
if err != nil {
|
||
|
t.Fatalf("NewPublicKey44 failed: %v", err)
|
||
|
}
|
||
|
if pub.Verify(sig, msg, ctx) != c.passed {
|
||
|
t.Errorf("Verify failed")
|
||
|
}
|
||
|
}
|
||
|
}
|