diff --git a/src/lib/pubkey/ecc_key/ecc_key.cpp b/src/lib/pubkey/ecc_key/ecc_key.cpp index bbd6861911a..243243962ba 100644 --- a/src/lib/pubkey/ecc_key/ecc_key.cpp +++ b/src/lib/pubkey/ecc_key/ecc_key.cpp @@ -95,6 +95,7 @@ EC_PrivateKey::EC_PrivateKey(RandomNumberGenerator& rng, if(x == 0) { m_private_key = ec_group.random_scalar(rng); } else { + BOTAN_ARG_CHECK(x > 0 && x < ec_group.get_order(), "ECC private key out of range"); m_private_key = x; } @@ -143,6 +144,10 @@ EC_PrivateKey::EC_PrivateKey(const AlgorithmIdentifier& alg_id, .decode_optional_string(public_key_bits, ASN1_Type::BitString, 1, ASN1_Class::ExplicitContextSpecific) .end_cons(); + if(m_private_key < 1 || m_private_key >= m_domain_params.get_order()) { + throw Decoding_Error("Invalid EC private key"); + } + if(public_key_bits.empty()) { if(with_modular_inverse) { // ECKCDSA diff --git a/src/lib/pubkey/ecdsa/ecdsa.cpp b/src/lib/pubkey/ecdsa/ecdsa.cpp index ff129d6a973..7b5321b25a3 100644 --- a/src/lib/pubkey/ecdsa/ecdsa.cpp +++ b/src/lib/pubkey/ecdsa/ecdsa.cpp @@ -158,7 +158,7 @@ AlgorithmIdentifier ECDSA_Signature_Operation::algorithm_identifier() const { secure_vector ECDSA_Signature_Operation::raw_sign(const uint8_t msg[], size_t msg_len, RandomNumberGenerator& rng) { - BigInt m = BigInt::from_bytes_with_max_bits(msg, msg_len, m_group.get_order_bits()); + BigInt m = m_group.mod_order(BigInt::from_bytes_with_max_bits(msg, msg_len, m_group.get_order_bits())); #if defined(BOTAN_HAS_RFC6979_GENERATOR) const BigInt k = m_rfc6979->nonce_for(m); diff --git a/src/tests/data/pubkey/ecdh.vec b/src/tests/data/pubkey/ecdh.vec index 336fd0acbeb..954a2efd1fd 100644 --- a/src/tests/data/pubkey/ecdh.vec +++ b/src/tests/data/pubkey/ecdh.vec @@ -528,7 +528,7 @@ Secret = 0x59137e38152350b195c9718d39673d519838055ad908dd4757152fd8255c09bf CounterKey = 0432B3881D7C703DB9BF613F52E9C917F096839835C025DC022967BBD1C9886B6B152BF2581D33558431F325E3543EF6EA3BEB58F793669392DAC37FB6D21DEA69 K = 7d89e7b7ff24d8ddba08b88cc7495972cdaa5a53c0df32253d6bbe895a9992f4 -Secret = 0xf5f8e0174610a661277979b58ce5c90fee6c9b3bb346a90a7196255e40b132ef +Secret = 0x3fbc88b3ad5d0d217670bccbea385b49a90335a7273e9765198510479dadd0e CounterKey = 04917473C20297D8F46097D95932559BEFD24F7D6E12C95EA8BABB446D0016E3683EC7C0E04474E0F6A26927301E8D82EBB45B36960675119B42726EC10BEAE371 K = 1909e8b5c758243338c4532ecd7a1f3bb7fb5dff03032c018fe91d2c693af985 @@ -592,7 +592,7 @@ Secret = 0xb601ac425d5dbf9e1735c5e2d5bdb79ca98b3d5be4a2cfd6f2273f150e064d9d CounterKey = 04CC326C5058CC9A69BDF973FC9C884D2CE0FB14A345D75A42B9EDB4E6ADC86354C62A2257D0E3E8A6493E626EC3EA9D523BF647DEEDDE79E916FD69845DF9D60C K = c2c562835ed929f9bda8e99cc6e3c37501f0dd3871b8c963e0f55acad1d0ff23 -Secret = 0xfefb1dda1845312b5fce6b81b2be205af2f3a274f5a212f66c0d9fc33d7ae535 +Secret = 0xcfe064e0d0a5b9c4fbbfd98e47bdcff9f173a93b4cf53624c0fcb6976a48f54 CounterKey = 0437F36537B7C11B67BB28BBE176195157C45B35436A041B8EECA6C890A0FD52AC83F3246923B4D29F14B62292A32AA6AB05EC840877FF2B23EE96B0CB7DC313C1 K = c0f58047196666c8ca9d51546a7deb57017aa46f680441de3f64edd361050e1b diff --git a/src/tests/data/pubkey/ecdsa_rfc6979.vec b/src/tests/data/pubkey/ecdsa_rfc6979.vec index b423624c22d..7b91a6aa3fc 100644 --- a/src/tests/data/pubkey/ecdsa_rfc6979.vec +++ b/src/tests/data/pubkey/ecdsa_rfc6979.vec @@ -194,40 +194,40 @@ Signature = 013E99020ABF5CEE7525D16B69B229652AB6BDF2AFFCAEF38773B4B7D08725F10CDB # Brainpool tests (generated by botan) Group = brainpool256r1 -X = 0xC9AFA9D845BA75166B5C215767B1D6934E50C3DB36E89B127B8A622B120F6721 +X = 0x1fb451fca3cbcb5a2cf616c6ca2e4921c21749378186f41aeb6c53a87ac7107a Msg = 73616D706C65 Hash = SHA-1 -Signature = 3145D09CC6F119C5CBF7DFF330C248108E2DDB190B07488125CD88AE2BE0BB305E13FFB288494C288AE30B6C932E72330541E39A288F658699BC53381951AE37 +Signature = 20F9F06E2DBA6E76B06D976F35F7C1CF01C53BAD67D14E1AEB4C937C574006AB451D80AD5FBB18C921BE857384455D2EDFCFA17A26612B882FC6219F76EF2475 Hash = SHA-224 -Signature = 2BA902B3465D975F99DF5013D9D1BE908F71455DD8B9C3B3867F974C9D9805EA4FBE5F6F2C3534B059EA23FBE783DBAF9B15F534264F43927162956D30FF484A +Signature = 0F7CCB34B69122FFB3C2BBE353599E247D7BD063C5C227471ABD88ED33EF085B00C6905954E22DD942C50A61D9F11C2F1F556163E9EC316216BFB03D9A84E4D6 Hash = SHA-256 -Signature = 591D196BFD2BCD2AFAF6FC303934EE957EED8593082D9FFAA83893D5F168E56E0DCEE6583F22E2E686CB55ECC66B894895E6D300F8693ACE3DA8C2D4A2A615D6 +Signature = 8A0DD08A985FF3654C57406B4D703DB6230DCC51B49F9E33C42BB3BF9CB94D4088081F3484D13CE49DC458772209503F28BC74DCEFD4467651913ED8B4FB157B Hash = SHA-384 -Signature = 1F6D853E37EACECC978C75DAEC814FC09317092F4A2B9EC663BF0BC51E57B15A00B76461EB72776236BA54BE13D56498860C6D3C417F07AEB1D0B42E3261B4E0 +Signature = 55ED3C3129842B8B05B709788DA02BF5DB978BFF7CD0D32BBEDA86A9FB086A658641874AC1AC699B0CF0DE37B11BFFF7BC19DE1D952F325D44B9C9190B69A2B4 Hash = SHA-512 -Signature = 3861F86C0B5A5D93342F734EAFB0F85757901A7D2696D2DDDC30B38102987BDC0521AABEC38CD35FCC0B0188BA66D9E18DE4F6E8FE9FF5E53569B502639477B7 +Signature = 7DF8188175911F5F392EBCE1AE4A5224E9820A6A9610C27E0E377BA0EAFBADE21897194A4D3A8B6070C52942C031FD39CECAC1E11B06B672CFE07407222BAA58 Msg = 74657374 Hash = SHA-1 -Signature = 222F9288B54516A39A0735F69DD83DE1652DD31DEB95FA7A950B2234BAE0887E2DA98516C4B374F9172894CEDDF7208EAD3F6060A2B4B11C96458E209A6AB279 +Signature = 6C5566EBE8451D7B570B77625AD39552A87F3C1027225898DB84BF8B6883E2A72663DA3B1BB5890CC31CCA6DC2A5EE433ACA93EC75822F0F4AB3FB0489E268A0 Hash = SHA-224 -Signature = 2813785404749F87DE6D07AB80292E86FB9492122C0A35F236880210C377E5BC81E31C02BD457D19346B2DC293E81EE9DC5B8897E4ED1C8B5185B8C39776444A +Signature = 64E870EA31375F24493B78F7CBC419D8404267F7A30264C5F8D9088C70D9042388299F272F9412BF6312C4CB2D4908E3F5D130E2A82EBB8CB8E19564942EFBF1 Hash = SHA-256 -Signature = 8B75FB302FE9253278815380D1B8D98D3EC3ACA7DB1B4BEAC1ACBE32D1249417230C64E3D5B4EFCF8073CB794322AA35FC6E38DBAC70199AC06034E7259E2558 +Signature = 775C60E466714C243DA46299F615F39DA63E3CC408427B252B2C5455B26E51CD2E083610ACB691454B164B6CAAE346B2BA97397F4559752CEBE2278686652175 Hash = SHA-384 -Signature = 26119D75A15EE75084792FA79D07660A87A43A0BC9E01CFE6E0D5B5C996CC7141952B973BD81DE39EC7FD0FD0E2C5D8CDE2B70DB933B07028D85A6AC643A8947 +Signature = 251DA880F2E51EF9B6197A392E31122443699D2799AE274CD98FA2113755887F0EC9CB474086E644EB530A8B6B1133E50288EB935E47E2781D4EF30D07E5DE72 Hash = SHA-512 -Signature = 84039C443BB9D976701D639B3E4F49762A23ED313BC009D71EF48EBCF317E61306B712F9ADE609D50394C2EEA3380A29029347823216165769E69C7AFB0021FF +Signature = 20C8C64A7B9366F28E310E97A4FF6903D73B0F87D369C840F54E14BC05D86CE67D6AA7088D28E88B0B717FBA9F0CBAD0B0639B27D7AEE1530174FCD20E9C0366 Group = brainpool384r1 X = 0x6B9D3DAD2E1B8C1C05B19875B6659F4DE23C3B667BF297BA9AA47740787137D896D5724E4C70A825F872C9EA60D2EDF5 @@ -244,7 +244,7 @@ Hash = SHA-256 Signature = 738A695B46D4F93E1C4EAF2B07EC2AEF9B4029A7131C1BE131788D07E09EF1C63BCE6783CA6D2692914258CAF8348246792D75E0363246CA0A973CB475541A61FD1B43B5F606E3C35F85F59B75B076F4C322D736B8986C3D7C52E6981E5B678F Hash = SHA-384 -Signature = 7F58979116F712AD482269BC1A0101B054087BDB7F18085688DF7A1D284CA526793400FF547150F2FD3331BAF96050596FFECC3671F57DCE14F16997E54732FA37250EC7068C9475808AA22D23D310CE07EE00DC24C58FAE11FF63CF6C61A016 +Signature = 307146655F407E66057DFA6C89C423E20F04CBBCE9F53BB6D6409EFB6692766164AE060C071333A3A43BC1A2975324EA6FB43A1CB66505D5E882CC2049E3F83408DCE5373CB80C8D1DAA686153919C862AE1BF19C464C1F949B6783708A11BE3 Hash = SHA-512 Signature = 213AE17E4FE67D867D14B6E58640BCC450F20E507B0CE327C8FA13F7D879442CE5A68526B46EA1B57A77DC8176C919367A09BF974C01D6692DF70B7B79570B48DBFF8E793FF468D46D63B09E9E9D0F44F10DCA4654E736A72C18016AE4DC617B @@ -264,45 +264,44 @@ Hash = SHA-384 Signature = 665944E820E0052D34A720E08A5A63508D24DA14D67C88636E1362756ED4C3BFED946532F20E088260C0ED4E714157070AF09D9150C711361A2DD58E148841D797C0D6B98C8D032365BB1DD8C39383F6F7E6E19946143E5DEA08D4EC1FAB350D Hash = SHA-512 -Signature = 14AA3D90105782F288176707FBF3B239D1301E34D76018B5194C1CDD8C878D7FF44351CD22AFA130CB3C722A69172A881F9B1E4A98C9BEA26C8750708DF7AB6946FEBA23E328C980942092B8C3F8FE4ECCD24F7B7A316F39AFAB696F30E6BDF8 - +Signature = 1E3B404D9E796AEB1790543093A17D29EA51CBBA77AB2234CEA8F147FD8C9A805B471798A9B9C99D25A8B17CB793B5FB56A5D341A6B53B02FEBEB3915F0AB1984B5887916360AF7D1900ED82A75C99091B63AD6C36FFA0BDD906DE21E9E4468D Group = brainpool512r1 -X = 0xD06DAA62BA3B25D2FB40133DA757205DE67F5BB0018FEE8C86E1B68C7E75CAA896EB32F1F47C70855836A6D16FCC1466F6D8FBEC67DB89EC0C08B0E996B83538 +X = 0x25900ca9de516147bb6b2c8f738d24561b4ecdfc4dc61c7db07e19c20e42c237199d97f158b60842a96905a689289380ce56fcbd3a58c366e35e50933e7dec45 Msg = 73616D706C65 Hash = SHA-1 -Signature = 9F359636EA685CBE5EE9C4CD81118880F28D0BCC4F2085ECF6C6ECD12D32983AC47F81FFC6F76C2F76BBA7731EC5758BCC637BEFE3D7193FC121A17E6828EED98164C35FCDBFDC6C7049209FB2237F206EC31DAA9C6DE12E9F3A3E5CDA7845A7969EC82F0944905352328FA94BDEDBFD1BF20FEE91D2AAF67280B8C2CF8097B2 +Signature = 37890369060DE13377C6B5E1DEAED5FD9CA8423D90D63D9FFFC63AE95869D15FFAD0C351BC047EBAFF2DF348B806FDE52FF14E2851D961280D11D23C896D8CFB635DE0889AF405A6DA2A854C775DC0CD15263E17BF49192ADBC74F825CC952F846909514BB7DD919A5EFA236C0A5562D46CA7F77ED066539686EB943106DB648 Hash = SHA-224 -Signature = 185D75AA7DD7EB59CA38480C262F7062B09533CA294E4CEEC9356076A359828D2527A695002FF1D1FF27DD8A88F5B28DFCED0E2AB964A38F7BD6CFD57C5784A59C07761461DEB3E6561B809E9C76EEE87FD3DE6023A8E4FE3C0E0B35449922345E308CDDD4E0161AD4E5912780FC492B9EBE70E642537F243BAFDCC129415358 +Signature = 7844ADE7246A2F66183CA3EDDA68A9A23782AB668E3D3CEEBA455C56C148254F22CEDA256047485C18B04664EF02C9CB6DF97C5E6A4BEACF079E160E5B6424336B17AA7841A88DDD35CD5AADC58A06BE411BEEF7707A0EB6B48BD19DF73718993B0C4C7E8F0F3A2B8933A835571CC00AA1635E95913F45A0BFB1F481DB4E39DC Hash = SHA-256 -Signature = 4CF9E0866DCA62AF7E49B1BCC2C7DE589238E2C6B592A05AFBFB3B48078477D1204CFEE8EE7EEDF9254FB86A162ED1C87B2892811B51DCF305FD0946DA94F06B086F4908EC8AE3E680EDBE29B9E52B9856C6E4E134810408C062A6E8D383C585D3D5A5D6202379FD765E80C74C9E6760A03DC2F02B8342EBA09BC71DB3F6B394 +Signature = 8DA68001333AB45D91DDBC16335270FCD27A45378A1347A5D213D53596522C821605F75C265365B6E99362B5BA4085D87CA53FF172DB5B9DBBC2E2A93EA72FCE29B2EB24388EA2B09C60D7592D43A2BBBB19503003CA3C66F454E5240C5871036C16EB09F2045B78CF562833C429AF4DB9B4301998C04D507FE52C77F8AA8F0D Hash = SHA-384 -Signature = 7FF6052F11A704057815619986D820B357404B6EC085FC7F0745BF2098A06C4CB6624713259281E3EF8A99DBD643BA45C94DC96EFD9577E7C4E5913F888224530A22E727CF63B8FE86F191D198244A12E7BB10E610E4A704246EEC676DCDB4D134D2052ECB067B506A7ECB68AC5C6CFBD36461B79F1C00DAEC826053819C88EB +Signature = 8225202A8795F5354E63C98A7B566905D482B9CFD31EDC97E4F162B8EE1F9E5D32688B535286250DA42EEC2954D9F96D1B4BC8E1E2A16D4484F17A754FB0956D6116E15868B7791BD018BDB4387B0EDBC91EAAD83AF9001CFCF59DE0B501CC3C2F581E7109E9E56A3A41B83988EB2F7401C2B9E200DB1C0AEB4B966F1F5BCD0D Hash = SHA-512 -Signature = 53A5E6AB40FA0092DAA5D57307D60288FD1EFEA3D87CC8AFEC926D5D5850C584BDD24924056670CE54E68C273EEF6227708D052F14AE21F34417279DDE107A4F2445FD8D08F6DF2933D2A16C9851022D7D62C370B08F65282BCD0425CC3938C0D4B1069D430AFA1ACC5F0A708458E821AE448D9036634961709E1AEBE30FAAC7 +Signature = 5EBF8ACF5DD1F978C51D27BE837B209DA5F2B5E476A4FD202D69F7495851046F61D2B0D729A1969473F332A96B894B30E08B32B9438B85A3EF3F4F8176B3FBC6937EE71B18488244990A9845724F5265F0B1D757E5C134EE92645ADEA0ABC5D5BF6CC9B5880BC92EB91476A10F686AB6398F67CB490EE4CEC7B190B51A718801 Msg = 74657374 Hash = SHA-1 -Signature = 1A17F1667459C2725AF2295739DB03A8E01D2DF796744D6A0345181ACBCFFE09EDEDD5C38104F4CD190F7E36269322AAEA6CB909AEB580EB80DDF9C90246B45F46084FEC2E22ACB8A73589539AAAAF826CCCA560F426E43B1EED0E0322AE6AD84CAE7B1A313D2DF2D113A36306F0D9D7DC72824DC355AD0323B1FD10742E32C8 +Signature = 9BB22E5881F30C9D7605C1E6720CCC10A1ED4615FA2BB6425B0076DD7AFDA8409984048181A0FE672A5A05BA7C6DA0CF71CE5C5C06677811D1CCB980DEEA60E636BE5B76D1EBF55DB0EB9D7DB8613F7861815D9E0C9FA1199319F6F7C778121B91F8381EA5B7D0AB81B376AEC01E3D5BAC595D67C38AD0DBE2FB2A30A96829F2 Hash = SHA-224 -Signature = 95869AF9CB492DB00FE123B30F682E9B97054F9B29DBA6396FCEAFA4ECAA30317441AA526CC5FD666A920072FECBA1761141140CC1EC37C359A51ED3B22742C93C072CAD99DF9397320FF7A4B2AAF699D1657461BFEC85A81A0B194D6669DFA94BA7B7803930289E1D27B7CFE216EA3821AAD80C5E7D94BD8E532678CDFA4B25 +Signature = 3115BE779F392C150D6E2295518986A1FCDD6830374D575739DD20447AA29635505BB9A66EFD78AA573D2780E2B9E14CC0836BD5E19FA868CF7DA3CBA6B9541709BFCA5EC6F16F323BB06149C51B62B32B33173ADB954C7BE3FA38A0829E0EF46671ADA7B41A16D58ACFF2EC5066E3D951AF779920DF9EA3ADB6D5BB66D4D41C Hash = SHA-256 -Signature = 0F008D33B72EBDFA4B712B9507E17AE14F228A9E3F3B94C71BAAEB78C811EDDA3750ECF54A70E7F30ABF4B358C787FCFA22631D4D258D023C32464F6C977BB40599024AAF2853937CB04E9D42976CD11CDC3706258571C7383300BC8576BE63B58D247C37961F78F70D38A2E959DFBE4D7E4D83FBE5541AEDD6E2C4CCDBEF97F +Signature = 333709E9645BD592D895D36273786224967D12584CD89D5C0445CF2B7632D77B5D67F0BC8EE80978ACE98149744FEA4DEDCC9F23DA6240833294BD129DC02F354C3FE17C3E875CFAEABB04D7246C4E6DFCFEB6B43B961C885BD80D14B6AE3F1EB131C01C92589C381756BFEF9528D8B0D5A103A05CEE4CFAC93406EE4520F8EC Hash = SHA-384 -Signature = 68A9D5E7EB435DB2BD4EA20BEBBBFD17DEADADC318E88D87C7799B68EFB423BFA48F691A2A52BDD972CDECA3C4DBBABD486199D2D1B33C683CB8C237C8F6F4955C14B440C7FA677D809007A9F03D1F6A55181A9438066E226BF3785FD55130ABB6D13A78FA7AFCCC28C442004C4EC1FBCC75D7C9FF7D64F16FE75833860B4078 +Signature = 83345CDAA86DD4BC9277F1D265D966A4942E7B55BA67B1D85088E73E076B743D3FFD335348B1AA0781CDEED65A75220736FB56B00547A4192469CA8397E7C70D493C4A2232FC2B70E447A68B1CFB400F283F18BDF9EA6475A3D0D5F19A023C1ECEA50E38AAF64D37FD7865514019F29DE917811FDF7FADA8B3AC7B9B4420178D Hash = SHA-512 -Signature = 582D94BDDA4C53EF4148AA4663D5183F122A5E4210E955E2D28E00C00EFC41FB91B340915C0D8C47A0AE7FEBD12A5C2DF1C72DD9DD7369A818689F5F3D5D1E5BA7F13830FCB00FC85A9DA30314BBC11CD8ECA63D296237ADD513B30C8D9A33C590BE0927C5E879207A3B84B317BB859590832818C0DD054FD6F709C8D24BFC56 +Signature = 70E77D016A44FFC6477CAD61B3DA2FE76636EF719CE4F7FB6F5B595D6C1CB47014EE603B02C876220FAF6F9B5C99BCDBB0D32865733E8C2117B64643B0A69E463975E732F8F427DBC5EE61E671D16BE084DB29D1AA74F51A91BE2BA1F52DDADAEEAB32466DD1267F4B4AD446AD552B6ED874D4A8BEC8E10BB32BF57E807F610A # secp160r1 RFC 6979 signatures, generated by botan @@ -314,13 +313,13 @@ Hash = SHA-1 Signature = 00CC9CD383D3EA80ADC9165C25F6F82A2ABB41943E00A74AEB2B96B8F7D6FC03F67ED226FCE0BAA6D7EB Hash = SHA-224 -Signature = 00AB01FAF31D1044023725665A95CE1AEF6680CE6E00ECEE1D6FED07ACF9ED7F197D2C29022D1592E5DF +Signature = 0079AE88FBDEB910D6F9B04A95CEB9F31C74D5A92E004DABC7C8CD9782048E99CF557B47DC6AA0897111 Hash = SHA-256 -Signature = 00766B26E5C3201982F5B3AB1AC92C018F5A990CB6008C16BF4AB8CF6EE3ED4A821B3A890CD30E2F6925 +Signature = 008C422AB8D872F72CCAE96D25B6BAB211ED37E2B400CFFCFFFEF03DA48393B59DA732D507EEB6152FC6 Hash = SHA-384 -Signature = 009AD138B36636B550705112D14574EF6E7996263F00F360D79AD85661B305D56D64A20DA33182E1462B +Signature = 001BD1ABBA8EEE1CFE7377220CCCC1471E0829FCA8002762E43B57D4E751254C4BE5AB341185DD6526C5 Hash = SHA-512 Signature = 0024A0B0069722A4A3DDAF40B0EE66BAD0B117D658003A6DB6DEEF2EB563115FA48D7E0FECB540802E13 @@ -331,16 +330,16 @@ Hash = SHA-1 Signature = 007FF876220B4EAF1E1F9C9694685CDA37B1DF45CA00D2A7917831648FB5A3351C22ED605BA8B8B6C16C Hash = SHA-224 -Signature = 00A616A5A4C482D60F44900916D9665BFD090854FC003BD6C529D45F5F70BD6F242981E23A119EEAE23A +Signature = 00F23514C94EC076484FABF967962854A0D52A1CB300E78E11723A5DB31145C76AC75F6E4EA6BA5D7D53 Hash = SHA-256 -Signature = 007F281E95A74F5EF24B40D489AD270284E8E52E5D00F4803ACFD86356DC95E9AD39930C09050C6CCA4B +Signature = 004C5D5F86F7D572A86B74CADAA8178AEC726F033800A6BA6D77FFAA78C876A715B848E06E8083331D28 Hash = SHA-384 Signature = 00C114E2B133AD8E725AF43AEFC381BE87063DB3FC00CAFAEB1949015CF4EC9EC2476F3970D3D97E08FF Hash = SHA-512 -Signature = 0080F3C4742E7341BE2E4D86E88757AB96F62427B500FD634D64F554BEC04211952798147420BBC98E15 +Signature = 00219BCC5107EE087F0DD79CDD116E137FD0C6ED640097EA2AFEB72C3B06817FDBA989C7A7D10A608C4C # frp256v1 (generated by botan)