Comments (6)
from acvpparser.
Hi we try servel times and found:
For SHA* test,use test case,len is little than the msg len,it test faild, but if len is same as the msg len,it passed,How to calculate the excepted len? Its about the len problem for SHA* test
Can you give us a clue or patch?
https://pages.nist.gov/ACVP/draft-celi-acvp-sha.html#name-sha-requirements-covered
Test case: SHA1
"vsId": 627946,
"algorithm": "SHA-1",
"revision": "1.0",
"isSample": false,
"testGroups": [
{
"tgId": 1,
"testType": "AFT",
"tests": [
{
"tcId": 1,
"msg": "",
"len": 0
},
{
"tcId": 2,
"msg": "BE368ED9AD921E640F892BF7314CE23548FECFB20F920A89ADC11B8A521A427EB21E38F7DFEB9312C4F81C8CC5F53E9223F3B763B0",
"len": 420
},
{
"tcId": 3,
"msg": "6CD3C2189CB3DC2B5B6E724F59BAD85FF967F8C167ACFB5B310F9576E7A9EBF701CB8C6817DBCF8B923706BC7B90C53544C8B3C6C3FB7EFB3BDBF26A3F6E60622AEFE01CF01D28AB2EBCBAE6A63735257BD2E7460A14E4E3E67C874084FC464F1DAEF3B0B43F082A10BFDBA8DD6779C31A796685BD7C111C9E965BF8493B690865984C1FF8519CE256A4C41D3385784276CE7BEE06ABE76BCCEA0053215ED0D6DB0F2E57A9EE9194696F31A4E7DE08A0E97D591810441793F1F60C8BE604518649ADFB3A2463C1CFE88A321E3FD761DB75E65772E71A82D64952B969BC78209B8D717C49BB7C8740F03E32951A60E6A961C90406A1DEF9C7F5B4B6ADA2B00E1B1F4E7F2680C1A479EEF951DEE0788B00005C1BCA9541EA0C97FF095FF67438401F150FA560E9057B9599468BEB91C6FF12AF23DAF22D2E2CF3E00F863B381335833D70A9799FAF22370DF9C56EDDECA787429609ABBB7D8FBC8745100B3C878D5CB569D8374C43AAB6CD966FBCECB438F01AC4C0C56FEAED15A7F5BB4A65EFCF7DB6B02316DEC04A055D7996A69337B0408F75FB0A03420ED87EB6F99847062E623F02F49CF4C86615D0C2077CC36BCCA18E005294520C7EAB4F17E144D41CC964F65A125FD73E40E20A4F1681ED5DEE61FBCFB50E6B24BE5160CDDD37AA7062E945F4DAB3CBC66F4310BDB9125DE1772A4F8BB539040D59D10FDE264683539FC561746164883DEBB106B91DC4F5CC31891260894A35C25FA75B62F1B77977FC2C82AEDE8F688B8CD6D7EAFD63B2B53201979FBC7F7E22723E05C9F01514C19A021CD07A27CDC728CEE0096EA80263714B760679157A18FCFED6AC56915A6CDE4492FFC52200A8060EB536987D234AEC5A5B4A81F5062D03E1F47CD1D3D7DC07788691F2EEBDCA97F7FB7F427DFAF37BA67E2C6D61E766D485EE82EE96A0038FF7B4956E9CF36C88C6AA675BDCB2F264E31371D765D3BA0DF72EE45B4693405F575BF5705FD48F1857923F1BF55C056A4BC981D8FF58E9EB24F3452C0BC21B07C65CB9E01D3E2C62EC71304DBEE1013A5AEE1D619908BA0F3A12B08C397D8987E1FDFAF6985E58692B18E1BB6825FFD5817EA99349FB05C353504077A7597DCE2A9873BCB682B90283675C9CCA0D617A8857E5B74BB21E53BAB3795362DBCE87B7ADC6C9A0882D6735F347684EBE74CAA3A35377DF357BF3621244E3E9EEF7C8CFAB5B3ED6031FDDCFC4EAC7A582660197614058A49C3312EA9ECCBE65FD2C20BAECEAB4BE0A2DE5FDF6141246669230D2AAE11411B0B5BA601B4905E71BD3E5D9332C39B33AAA7677520B5858952C33A2B5DA39E10555E7249FF16880A33609506CA7749834E4AEE2C0196799D8585183C9A71F2324507EA9C66C97E98D368EB9A532B0E6B1FD4BD2FF5C3185FFAF9337D8F7B933EFAC851D8C269780B9AC3EF39D65476D8E2A7B82D90ED1A96E0CD05FEF5197CC2A2C1CEAA041112B7E22E3CF07A190CE0D80876EC3E35E0C99255E9F5217A39B7D44932E3352EC179B3D64391D68CECCAA227590EB1312BF5A503F8C56AA68E45BFF39D46C3CF081137081D4A2BA5ED6B3B549BAFDFF98B51B016B25D5FF861D1208F57A418081F5DF739083C62DC0C776158DDEC77AEF4F797954EE30D1F2A3F448026383D4EA3F921137EB4F122E6FF19DF7C8A37C65146A77512DBE1407175CE197F69DB2636DDC2F5B2C9159C6CAA7150439E751858C409E15E742C86EEF3FC94515DCD584F5D5DF182708A5B4805C93F42D0346DEA1F774CC20A8394AF65665D245D8235E9D42077EC7F37B010CC0BC1E8FBEC553120F1F393D72C6FD52A50DA00BB2753C7D23B4F25658EFBF2EB03EE7A58DF003F87184BB169E8050345FD7B5B2A9B34BA863AC81C0BDC298C835D9BFC4FB5D2A5ABE4BBEFC1DA029A377B01AF1B7F5087003E302B64CC0422E82D8B6C825C9E478C76DA7B0234F8B6462CC8301F31BA2ECA1E38CE1D7F3C665FDE04BA9048C6FF8B00C0B58E1A85390C2D8AA13243E0ECE83BD5493C09486D2C6895A76DE4E3F0EE1A73E01E824A9F4774D745CC68EED56592BF9459B4FA1F00FF57F8B9EC8DE393770A2139667F87B00EFE3608694C84414F93FBC89747F83BAD669E29FAAE458AFFCF38ED5005196E680B81AD15AC679D81F3685238C342B017715E7FEE0FDBB0AB4BD4D0EA0654B7E634ABDA17EF8D0BC68C59D67F10D6D480231384DCFFA333E5B9BCA2D84E29DBA9C742EF97E2D30AF63B7F9143A14A47EE8D1F13E1FE7F290443DCCB1A8327263D9D77C958C541BF3715635C28A777A264D725FF7447792190BBB4F981EA2059778858BB63CF1F348C937B7B000FE4D93D5ED53ADC9ECE9658FB9877F9CE329270834C2D80B5013A12029E42FDB21D2933AEC7D49C90FCA3B5F950850911370AD6590D3D391888053351CBD942848F8960818930F908EB9DA0854608BA348BDDDBC0C76D5B9DAABCDFA0DD682E9D291C020AB994EF12CB9DA668BAE3D547A5F0DA1A568B8091943A369823A486B1E67B693B70602545F8324C47FEEFB7E1550365641A34F8B237726ADEFAC72537E5A55872C52A6B2B54D42F4F3DB7E41F19117F68DC6C575ECE4E45DB8B7A3A076189FFE2EED112B48C41D07173C6E07D4DF65914EEA6A1C5A84723D7DEF76D2525A3163E1551F552266E2F9E51FF86120624D2F89F7FCA97C81554E4033902BBC0225119D9068200CED874B95E69FAFD2B4710E1932D4796DCEF44B772C42ABB276E084CFCD15937066605E6F687870CCCA7C84DF42A29C86F4DEB325DA886F4DF6B40C596A784F394E52BDD15D6E4A801825FF9D8EA2668539EF481C4EE3C52233BBDDB2FA8AF2C8181381AB29D4763CFB00079FAAA307D46908E25D42694CCFFDE5A7D3AB478221C5A83E9676CF8C1C4C8A859BB3C109D98F88F87CAAB67258ABF67AB7F0C2C9809DB960B27A975D63858F15B6C1F8C6769B989672C61FD9245CBB2FD23313AB604347927839A57027FDC09A85DCD113D9CAADC99C250AC82E339A59EABF59222012F089D5D093246534BD7F8E4E0AC0B4A5ED2D5533BC52CB1D650B5C08A4E57B50E8909D87B9C4F802FB5877D7E5953EF66091A2D47308A38E0F8D978B27608F335573E34BB717378E03C83C61E0DAA8FA9685693218D0C2CDDA549EEF54FBCD39BA56B08E91D57DC9C5BBA737D67DE2AC7AEC86F298498A0600752134E0FB4BA90012DFC38925E91F76017DA2D6C540FB897FE89EA4CD4C981A39B278F4F5CB415E7DFD19796C2C658B2DBFE4E1A43FB4EC1428AC3AA826FD2C572FB58B724B37E65D49147A2F0FB02A2346CBCA78EF49ED3DED3E2BB39CA7927946871E5686D3F98A5DD0EE2CF2D952545FD74FBB7672DC4C0C104642C0422C39436F06620489FA968740EDCD97FB4E3382EDF5CADED5E64EE922E0816A7ECB499C8626430CD54055A22E8F5EC3C770EE93B0C18D8DCABF69B0153946DF9CC5149FAF9508E9E3E2427B83959E3F9862206BC01E31956AF9318F0E24EF19BDD737CCCEF727E9DCAEB1E054F886FA4C79D7025102B6D493E596D57CE59693C499720891EAB77166736E76F2C37903CEAE74A6B8B3B12FE1C9B984688C5B4B25A2A3CDFA55AAC32091B60032969C4B6A0163D830BC3666656C5E3AAFD6011E75A10F8F0EE3033086A564F11A169C3E02675C6BAACEEC3533B2B0FD8631668580D218D0D69EB2C66B0EA91CF1681B166BE46C145D83F08C71E42DC1A96C3F31C25659352D08226E7DB9ED9D5D5E195F74586BC76328DDDA0945D8FB0F2E7E56AA047B0AC98F6ED5ABCF3F395DF9D04AE13CF029C4EB363F6322C49DDFCE3FBCF14B952FA8F89C64822EB099683EFCCDE1B6C94EEB71A03F32220565F3F1045A68A7765AC7B201A88BDD9B672A68636688B88EE428A66469A45CE1A8A326421D97DB03CBA587846E9AF3F54FDB469C15CCA88C360E9A356A711DE24A229C9C812D74ADC67E2E0F16EE9D7E5E10D58786A904473FA96F9043A181F9B49C730C1B50062560CF451813E837A79EDFD4EA6AD280BF2EB7EC8752D57D0B9643F94C943C5E34FD4058096634FD2C2EC267C0AB183DAFEB094879850567BAD6AD4D1116646806A08004A6806BC87931738CBA9055B6E5530FB2FC42FEB503E8DA7330AC2EA1BD7CF81461FD8EBD9C078D783A0750974BDDFB3FB623E6FEB4E202373E09CE06A9AF940B279F92DE92C7D4E343B5970420187CFEB2D65151881FB5F4DC218372EAD12DD30D70B1C6DCAE1607736F1E68D6E058C17CB8D7D780A17DD7646F8EA8CD4852601E6FE478DBF9B98AAFD1F305F718626ACA50BD3D314A40F3EB8BBE9438C5D9667315833B4B231239F40923C39567632505C76EA6B0C577A1A9319DEC33AF93D195866D583F683238F76C02A8EDEA238979F243CC976CECE06DC2A37F5C09A7F8B00FADB6F0DB17499204159FA5E3644CAEF9F7D9A643E1433F5C3356B1C43D0D0BA88A5036D2836FCBEA0E76B02C3C9F1B55439916B3A13A61E48B7248E333A27AC5CBE2827FA1F2930C8D497E4127C8CE7C3BE568B7D0D78B0CD1D8C5147C57338EB7D7F50D1D5538AA50E9892C4933BD5088C73A6733309DC0EF9FD4D89EE3F41475C972E5195943744A9BE86E967AACA6B163F8706DA7582ABD0E645ECB8544395621A6F7D86EB48337A80E8B5D58D153FE9E5DE51D4C361ABF4D53CDDA7B1C5B2547C967CEAD450F4917BCA3C219760EDC3ED9E9DE6B7F1F8975A31F7FFD98F44DD0A2D569AD92D8863C4E9C6BBF8E626AD1CB736F682DC81B31156185CD4D97B42863507BE2E0A7B249520A339A509CD528EACB934F1CAF231EB64A554521DA488238BC5C658B579D5CC28C194EE6D37B6AA6A7A79419ECE4BFB607387C0474D56B5B1A6FCC077BCE9261AD3C036CDB27F0C65BB9F745A39CA68863E15BE9FD0BFE9184280CC443C45E9CED39B6956F239963227B107364F185273211CDDA6D7F9963D1728E728913416A2D5C3528C5D89831BDC969946FCE02149C97D785308BFB20607A6E0953552A8A0F7E43690421BF0B94FE6666A1FBDE3F7BE3C9B39F50EA6EC53B4882E22F2E222E09904C0F7FF8644974D61CF8BE5DAAFD503683795893A1CC50E6FC8606806B1B6124FDA4DD91B265410C32F0B8C1AA39D08B629A49855507352BA1305DA757A7C8D5BA68957D88B4D0CCFCAF9AD4F7F2175A2F5E2833EF1B8F9320644685323FBBCDC7B0B3C39201E98ACC389EE498578FE7B591E711758E846C2C297D70419F079D92332A87D9CCEA16719DC27587BDBA9FD6862239DB4DFEF2368D8E7E1659268EAE26A054F7646FD9C9C05F7280BCF9BAA995CB682FB5C2328621EC49A4B5D6CF0E433081786435A1F051ED9F80871424D53535EF2836D3DEA818B92B065E2BB761E1F994E1CEF1DF84F39F03926C4B414CF2A9CE6D38AF09D810506843B8959155800BCDC661197F03A127D940ADF0F880FCE39DEF7F376DADC1F7F94DF380AACCDFAF8564CC3C308E974DA4A45CC9D00B9C5DC2656071030570980291A8145145CC34087DFC96DCBF48FC5E803CDC47C489A16244C67902E82D81FDAAFD798CF7CFE380A28C59AB00A088DC655930876C44FE0B350C21294ED896D7A9997F482763B9B2C44A8AC294D67065EFC7DB8105299528459EEEB182A7CD2F50EE83710676A43EDA35B1036D45AA25BFA3CF1A07E9C42B0885C0CBA095E8754DF8083EFC2E09BCE3E36ACB549FAC046891456B1B1B275B2D7FA10E358620470105A11B4A14B7050CEA372F42F3AAAB95F451C2DAE978EF135253B53316A71910AFBCFF4943FABA54205294083AAD8134D424DA9F32F4BC02E85D44CF0D25617E4169F072DF7FB8D0EEF5D1A77DD9709722C058762758789E31DEC6FCCBAB4BF1F811E3AD42A3F52E9D03F9AB94EFE1B1580E7857175B8E23153314D2AC57D2E6A164955D8ACAA79B1771D1B77D8FD344B175529E93EB568D6F6C77E83F0A9E6CB9753966349326ACAD0A406DE6FF918D1D53DF4CC48A5DDACAC9F0B17754A759DFB8B50D1AF09890C0172AEFC42157601FEF3CE4647E276C805456CD25E6C3D9FA068F3E5FAF7A5A3843CAEBF8DC2F239716963B2CA1606EF714BC974CD2D48B0325CDF544EC76B42A6B87C4ED1E833EEBA59FF873C6FDC7FDD42AD665A4C5BE08B6087C1B18C73711080028675C4323EB203A1292DD430DA1E90E0C2387BE2A93EF2330406C6127B630D7B4D29DAF0BE24E5C25D157AF2BE84AE87C3E7D67E6BED2C41668257049460D6A40072B568A654E8B8B6E7EFF56058B57B2B7A7332072DEE02926125A6DD9CCA2CEAFB4B53FFDA023739FDAC79EFDEA28C2934815EADC19F4BC6B522A86C02964341FFD422E4FE8FACB900F38679D4D7D509B1A953E00C2CDF1E30528F86BB580D64062EA7B3CC5DF268616ADA809D9C3944C963C40FFA6990A767EF42F1182E23FB7423F5EE1CBE6D75D94E49BCD4270D7323A7D4FF5361A81C3CC45259B3CBD6CB07AEC7AB0F7CEC9E431791A285AD6BBA48F6BCEF194BAA3BCF054B093CD06D4AF0CF4A5FE15669E096CE2AFD9D770167CD6F2A2136C79A71EEA8E1795D834C8DF52F19873559297317D3B6B3DD98E4B07EA8AC897E627A0A767F992AA981D44D61E876622780107A18888390D210F187F38B1B11F0CE966BB1412725D341FBBB6488A4AF20D83B99BA9D57F4CE0B4B9DA56C6C853D38D606B7B75A6319CAF7707D51BC1D8EB6F44010384AA6D52E02EBA44110CAB2590D2086336635384BD205242D22F116EFDED6373EDE2A797C5A1DCC72AECBF03B9D8022D30D6D6D2B7EEE62C4032F4BCF5E732CE0E64FF94FF3B3A0D340B75A54C9477C6EA075430BB73D6ED79A6D101AF12D09E900B962FA0EE32870792468EDA61D31332A3D1C685C2DBA6949E8531C043A17C984E051FA7A86ABDCDDBF5951A6B8BFCD691434E8F68EE952B3FD80BADFE60FB2960F8645CABA475F25F31745804E46CA83130213ECADD92B461C94A1E5D1CFF4E4D9A00D8322C08B2801B6CFDA4F6F28BF668C8FFB148C361D29888B456F60DCC2D194EF7706510F831D0878C3F654EE87DA3146AE92C699C93713D4524388509A9AC62F3DF702D0CD3B02A18E754D311DFAEEEDC01B5788E0B2E699F71E4AA5BE96EE312752C996A81162063BA72CCFB0EAF2BCE946E788CBED62076DCAE22F413E68DB451E1BF097F834A784039662DA7444D94DABC",
"len": 40991
},
{
"tcId": 4,
"msg": "EF8D662FABB9E5C1483E4B192D79EBB6296FD5A4EE09812510744115F5287A4CA4D55C30DE3E58F0B3E390AA1F07B5BED610712198E3700BBE442DC4AA59A4D8A8AA20A2F881C65A916E885E553F693E38EB6F5A0122F6857854B2E458EA5F3C01E5E98805AEAA05AA72048FA8E8A0316886AEC955E6FE92326651A287B08C95FE3146F570D1C4A7F48500FFB528EBC9F73A9525405D2D88DB1A5A0A565E8AEB31F9B854F2976BFDEC2F26436F99AC8C70E7C1529BFE8FB686398CDC8FB0971B08B05961B51CB1F88D30E40FD3B38267F729BB2DB9D35B8B5B6DB16450392ED03F3A36F201A3B5EBD5BB263749EAE4775DDCD5BE40D6153F625B056B0847B3B3682DFAB7EB2044CCA83BC3CF12FDE66098F9EBC3EC573E39B2221246705E27D94A3935700B7D3149E081D57ECFC761B4E1B5893060FDEC5D9E06351C6A654EBDBAD39674B2C7D6622A0CC198B49C7FE73EBCEBBEDBA2ED20ADA83821DF1B56E21A8A1B0FEEA031CD74A4D30DDE99C59667D437C147A907962384D4A4D50AC6FD1AE032BA72A7FB76BE33282378D0A5824D0D2CA618B1824D044DF7A9D6AFC09C880C1E841C52E354BA10B2C9F64BE3DB2EEB5495A78F0939644ECD163CB587313D1EAF1CEBD46DE1E2D47521EB269C1163F41F5DE13DBB7768CA588A348668EF729E30929D07CF4E4975D362C67203BCD9019C6564F9CF2DB10C64BB22F717B6373B942EE37552C0198457B02B6C438D857B414C3C602AC68CD407F0082912A0E5FE80",
"len": 4370
},
{
"tcId": 5,
"msg": "EF9DC18CB9AE20A4A27C8A6526840B26B949005AC85459F00724FA2233565B7DFAF92C1B797283BEEE8DE55137437F92549E6B364E1B231DB93B013B6F0F3089CFC1A8A61861C522815075ED72132B085E693165DE293FA39F467B3C97031164795762624BDFFB84024B618FBEC2623277963E7E73ABDF3025F48415E5C76FE0DE32AFD447A29E9EE7A50FBF5B6396255A610406E5EF99272DA804EA7CE329120ABAF354E7BC957B9D226C0AD10CDA28DF02F90ED97A9DD1899592DB1C3DC355AFE0CC358C77265371DD8181BF20BABE8523283E38D8F2D8F07FCC0E1005591EA42B2D8DCD5F4A094331E9CC538C4F57A3A4E0755C6780DD6C9992D87E6B835BA9D30C0E785E65659884A7B9B65F7085584C79936102F3B23BA7EC30C2E28DE8E9A02DC211A9A41B3841784E19BA8358C857BD0C526AFBD5971FB61C7B9DA510D2C1723BB83ADB155ACDFE5AD888D1F3C467CC69F360A85DDBE5FEECBEFEE7369C50D8EBAC47C096BFB06EFCC8D7BB960C751D62D44161ABAB20837AD39AC7C9C8C9329220DC66E1CAA0AB550C557E5F60D08984C6B001CEE2F9C815298B396B057B5247351C6895FBE412D41042A57537AB060B05CB431B0E67B0897262C5DF74BB99B1CAB40868DD8F4E0BCD0E3695813A77ED6AAE249D2D1CFB3F8544234BF1E1E446D826B1AF9870B92A6870380BA535CD95ACB5BF590071D87A63A2D994B9B67C051BDBC94ED024A32809270D05995EE05ED8DD026DE4FE20A17581D23D98C0517575D16A8592A470AF21A25923134DFC37DE72550B2DF1D484615DF540D3C4CA60481E519596BED12FE62E5DB98483FF68C2A40065229B95C765014465D458DD7F5DDFA510B4C0DBDED777A4C3B93B87A5C3C999B144283FEF310654709FA8A78CF014F50C27C3305C55448D6088C6CDBB73E20E7BE5CF9450EBCCD3E71D312564D82F8884F6FB87D0457F7ED8792BBC04EF73A3C50F81BA7A9BEA07AF9377DBD41F068A46CBBD2F15A71DFD9E4A303CF17C675CF905446D64745442240F2EEC411DCB08B61B386A4C6CA9097AE42ECEDC1014DE7FB6F99F29BEA77F36099DBCB096E1CF190E4F065AE715F2A46C2A0BF58A4BC3CDDF8322ECE21705219553605F4D77A4F0245B29D3E2BC02DBE48340C3C9148969FB0A263BD3F3723622EB18EBEFD727ACEDD50815B3BCD807BEF4DE564D260AAC3D5036752292C52C6EDD90BAC3C3D0C4D98DEBD5C0C6BA31814ACC9921E313B3A5DCADBE9A013AD9A8CADA6FEE59508D8E003B60DBB088E910D0765F6A6FF94B4B8114144F5EC514EEC7864BAFCB03F9AA3907192E5D32BBF0FB1D5F16299F2F168A38F050FAC4951969BC0E6C7BE42C318E890B9D0FD78273671113F3DC7EAAD5F2C795F933863344A22705DFA621020F113D94D47521DC1E3025D92E0939406F9DB48F7DF53F6F235D80BEEDF7B2973E3F1D2B1EEC468A80458936A0A98EC56312FB923F61412C3C5C811AFFA223A966C680BECE9A55692FF3EEBF217DCBA47880630F9F1B5FBEFDEDC77257747E6F04AAB26C4C0945C42298AD9D203F1A05CED8917C1326521B32CEC614607603DB910EFC3D81987D0BFE7435F136928FC20227E85B500F7E00E63204C913443A588BE231AE011C2BB933E38D9327384F3997DB589ACE8DBFC0BCFF59AB53AEEF8A075D2985CC259D5CC2B8E911D03CFE3FDF587600CE43B7B369FDD39E78EC701AF55DCE27782E900FDC28DC844129BE909FD299C5C9E2E9D584A1B25C357B859F3F28398ECD9C10791C41E5B6173A551C5A0919FC8DB1432EEA9BC58AA7AE51C1E0F5C09644189BB7D127750D13D4714A2A5A0C853B6492FFC07FA76755E39E914CF78A88868176668E55631EAF05AC92031B6C463F9EB96D7C4717BC7F280D32442410BE66726598A24A25F4D01146D83A268F6315E4B55FB7F2FCEA181AB0B2483531F7DDE6B8927C802AF4FC6F5E793331D731DA5769761BECA72104E21ACF3F2064308A780811586BB87F5AD14C5D1403CE32E9F1D4AE67BA71E5F810FC370187C44ACC727B0364BF23AF05CF308BD2A132031B1A55056B32A5077B6CD07A1ABE4E8D5D1EFE4604EB4D3CF741E10CC1EB52C88D16F74E132169CABA81ECB3FC1AEEE4DBF2772569BF1A12686826D4FD6187681ECC9509A5287FD24466071EFDB7A71C14DE6C4953739720209A7892F5AE32C3A0E869A33705C3483BCA9900E13AACE2FB1A8330232650886FCC0F6872BB9CDD66E85BAA98A038980E8F6FA5FA04EE3004EB4C908B9BABFA930245719DD3D7AB6E9305D16AB1CC49AD0ECDCF22E58CB33DAD3C48650B706CBBC65A66E9E5A8DC5E928988B82DDD4135B19DFC0865C2EF692D5546B0343DF61BBFFD49F301F9490AD634E5D2F7E092F3EC7EA3038C2CB70E4F68E32EB5B293765A7E9AC0CF2FB454A188371CD33CD21085FA64C7B252985ABC1920B44FE8950D51B711C9F318EC5346575626877527701D311748C1E32D6C468FD9BD80FAABF7AEBC93FAACEF439D4324AAE1C0E0E897D4A3B0F9E045C9E5B1BEB936B43179F33717076E0AFC13CE2AF98C8BC6DF2AFFC48DEEF8EFE10CB62C9EF6C0BF6C94D1B073BEEBDEAD23C39C9EDAECFBF682A87F76A349032866F602E41D2EC1AE6F05E486804B87AA7469D4F02354D90F9C49CDB8712E70795630BD46965514F8B5BFF5B3FC963E5060F0A515C25959223C993B3227756E62B7E31CBE9BE69B1B7D974B7A7917A8D77BF52FDF91285C74EF572D336E9291FF3A6CC9A76DB8458ED0363C1ECE487B6BCAABC4B774A8D1818A8A78DF756B53BBB619C4F481758140ACA28862A9E6FF6836A29EC04E4618FF614B1AECFAF031589AE607CFB2B20E696A14FF8DA832CCA77773D1A6C5ECA3BFE977A691DEED55AA2E3295748E76DA084B62ACF006007709DCFBD84E9C618D2E5C96468EBA59CC1905058E213AA9A151C06C08511AFE542E0462E9AB045AB1BE53D01E2FC89C7653B5C9F05A307D6AC4A6DEA94C1FE1007AC40F2B30AB81E2F761BE9CA76E48306BBA26301D7B1A3D3195952CE950117CEE798C77F9083079E7E76D766DAD005BD5C7FB5F9ACF7A093C0635632569CA62D62A49A9C81DF6651BC3019782584364F6BA94B3B2E9A938215495F16D4A3CE77EEFCEB113F9146A7BAC4944099B5DD1F7A2AF60514950A6DD5DA0DE86721363070B32E02A3B09A61CE5FB058E8497C0351A6380AF43F2B3D1F8EA1B9F335076B3D9CA9F5D92EC59235EA443FB209FC7793E11D6E8C53AD1AA907316922B04C129F6262E4C0F0044F34A45E8159D4243117E46A5F2786CD80616AC5DD9E1A56946B9DF3D65AF45BFE20451579F40E856EC4AF837944D7B09358DDF93CCE44B42A1E52AFDF4308E09B5DCF16F81A267E5AA7B422322474E73B7D56DF5B8FB9AD573D0F8052692D2306E1C7CE2C130DCA381968F69B9BD159BEA538EC660FE2432BFB09E5E45E97C39E4FDE039E138C7469DCEF3DF2C5A8612313FEEA2CAB72C4E545E1D867778707577BBC441CF44D9D8F65B7F8D4C7A90DD3917D8B65CF3F5AB3DAF7EB913BDA01B5C4059BF39BF2809F44B96BE6069FFD3172F421795CCB7CF7AFFFEF94ECC248D19E1F74A4DA80C7B2F6E8512C16EA93CA6CD873648B9FD538CA76744385776795E582D0BA4A4A09E678CD193204274E244394EC74784E546EB9DF0EE467407FF01A5553650ED75F794CCBD2E00E6F17D95AFBA4056781CB58E7FF71A9A356B22BAD27A11BE0A91FE7BA741623875C6E2B68D23B398C2D37BB51540E0EBF19CD430F5A3C7CBA608B961530529F5D3CAD160E30A39099A185E9845B9C8C3F1517ECF3536054527C5C2C42D4FB1236DC16EDE04D23D6E6A0966FAE8EF8F6ACEE4AF022695B540A8D4331E7AA51303134789D52299A89E55A564EA76AC195AE43D693E50C468F5949377AD729315CEF5DFA7024875A83824FFC891894BD21E81A7B18E7206E0BA4BD248CCD1CF9E1E34EC344ACC9B0097CDDD473380B2C7DD5E477B12B148BD2828759D4B0B74176C334B4251273267FCB862D931310B31E71D5442E73BD369793F5D7D3297B8F8A50E763EB09BE531A12EB4E418C3FA87A7A63504041B25E271FDDE3458D394B39C7D9D2DB6B2D81C23585C0D1E43655973B650C94B5774403A2CF188B6068BFF3BD5277E1D6E3DF8717E5B7A5D60116184963AE4D0CE86C3FBB89DF2AB499A7CD4B96D31A4EBEFAE9B2397D01B71FAD6219AD052835EB6A704CA6A0B1CD91A075076EA563832FC56EABE4589778B8E67C5BACBC550ECF3BF11A562A142D86EDEAB0F5DA9D7BE92ED60213F771FC84C676DAEE58BB9C516AC20C214CB1E5E7828376351C3F2FC14AB46858A67991283266E8301BD02A443FCD150A7EC69D970EC88D88BA2EEBCE86D6BE831FBC3E7FEC6AE7EA2914B0102C306407EDD6B7E93767F4E4F99DB33A513124CBE0767483D502C116AFD4FF03AD67066D695CFFAB829F1994401382CD61B7DF28187D97529DCD44CD825A8850FC54F87C4B14F210593D2977A9127139F063515805FB7885C371625B6D38E8CBF6A286D12D7330B2EFC50371035AA3E008B2066B069EF3630605EF7BC7E1F55C8E2CD24CF279CC16CE57D7197E7EABB2CD4A3D629576F8A90F992AF969FF0AC6DE61EFAF0D714A4614BBE21F27E31C511F597AD2A8D3DE9DFBDFDE3CDFE0B2B0571EFC7ACFCB0C481CC6365414D488CDD5EADA3CAF41C5DADCDF9A39B9472C4B0FF6D3D0B0D25BF9762A346EAEBB5D75F99783EC2BA2A72ACFAD2D2BA482723154E50F524A824559F705DF568C956809EB5EBC2B9861301F293E53160C32FF5560A10436A528B495A33C4D5BA1D04922C3597EA3D7F2F2591BB47AFF38087644618126F5D84B4349E2741E6ADA2BB3A43D8B3E827760D6A796DC620892B709A1872787757486ADE1FBF604AE9A89357DBD0DB621CA1D6BE916BB7C862D3F2007229913EFA970B1D3ACE8BFE369ED431362AF47D2DE2C5ABB3750E6267A7AEA9BD96E9BDD9C982CE4C0746E04B88359FCC1D6E117DAF995BE56B087D67572483AED7866A3CA04EA63C702AC73EA914BBF275BB8A295F7F4203265E2871BF4078CC87896044261589A9996EFCF39C8243937A3CA7D1F3093837CA92522BF63FAD6D1E63C2ECA6342F1D8B7D3297B70C9578881EB16AAD972E4876067A57311326CA06B20031FACBB02BA755672351B03E44E9833D1F0BB4211E93BFB85861D670F2A08249F7537EFBC73DBB1ECEB7C2062E60DA2DA007C74E50AB53B0F690EFE6C6221CE559DEA11F172542E45A04CA7044B44B48469C931185DA26967094210A221723992606BC79AB20CA35174D2A7741C245179B13FDE9BB44EC14564A3FE1585A33867A0C328BCDE65A44864E5473F07EE2B0777964559F9FA75A90885E056550836BBF1CF62274BC9101679D89609F7E9CB651A533DDC5F0A37030A9465EE7C3E00FB0F3F08D353257A9552846430FD603D8E745C9475E325FB1A82D56CA65E629AFDE9938A35785FC1AEC901025A24D9D8773AC451173C0A6E9954613334D423B654DE890AD5F75852C553D08071DF4F9BD5EA20CA14D779671449616DAB25357F4992C189A0AFA2B804D90870A33ED81AC22C584A338D29366829BA988F5D0BCDC473BF29DA31A82E3474773DEDC1B0AEE1F0CAD6F2F9D308BCBBBB68FDF70C7BF7165273CDB9EBACE34B240695C5D203B2986F9BB902E416C78CC3C5DEAB99787AED03DFE56347718C83D9F7109A9580617A14774F6748FAD637D7350B9830DD2234812B66539DC70FDF03021DBA4E9EC1EF5E0F68DBAD1C186A33632A7730AFA5D7915F39578FDF699D52FC83616509BAE1AC5C47F694D393DA62F632E74462DBA68362C3E9806E4BA5E61DAF20D69B60466A8EF9EC56493A7548B9C5DB654FBB023D7A1CC570057086489E3FCF48FC9448B1B8571F64F900A04833EEF114942405CCF83D6AE431FEA18E7EE576E9828957AAFA4FA97587FA5AC4E0F74EC6FF052DF50951D2343F230141CC877F53C5A15F82D5F019A2392F3ECA51AA0733408E15DE393C8AC20C0DBAF411E284A6C4AC6F082AAF5514C36731B433FE41FA371324514E440054A96A320B04FD296AC352C8B3843E4684DF44225971542C5E18BFF13B4D68198D5FF34671343478E5A0A308403C5A9A084E91D967F160280FDB463F7DE2CA0DEBB2E4EE1E469536B8CC13B9B9640784581DD4057B73CC924E118D064ACD25195A5C6C67C0B2B7FC540D2D3463CE59BCC1B0EC82FC246A783AC580B622E923C5E07767F300E95544A0D029E5CBE757EEC7CFEF8EB32570C24F8D5135F758AC9DF2F93BDBBD016CD13FBFA86CE6DA056BFB980ECF8736DF1C5325148DBA94E4693D30BFD1735366F6BF76A57241C3E7443B0BAADBC1E9CE92CA8F2F23F80C47E531EA30EE1E2097A653F0B955A9A9AB6248ECB9E27A16736E1EBE11EB19DAC758CC6F3BED465050F50E24D25557ED50DC9A28FEBF6514544DF7973E4F15A5EB062611231A6645AB47AC3F16CE446AE55D0D07B0E4E0ED69EF698232F1B7FD14051316A05D2A7DE42B0DFFACCEE3DDD02A68D62C29AAFE3CC64E6D784A70D92758EDFA8C14954E1359515BC31DD3B85CE1ECA3AADF36021F9F2B35AB5DB73586F0FD608740BFDCCE13B5622BCA7D681C19AB0F8017AA24D9955B2BF16361C8DB9D264065CFB207F16CBB55040F977ACB1CB90D2672B2AD3163505968B1298968D971C3252884B526D18252A4FBA809CEA3DD1B0CEA822D404B88EA64F8F973BF6050AC19661E8837A617A8A01318DA6DD5324224E909B9658B4943D0BC5B3E9A2245DDB615DF00E5E20416A407D8898F79A6C01773B6053E06C1F867048A5BBCBBB078BCA834349529B5DAEE27A02763D0487AF817DA4A9AE265EA2A742ABBDD125E442F3C79F7D4BED7D1BE30E783F0EC4CB1A0474DFB1FFF95168008D36D1B740BF5CBB133B061E8C245F2DA2A3018E5F31DC1460FC9082A1562ECDBC0B704CA8BE8610089C40A0E17B0105605156261F240BFD837A75C6CF675755DBE79B8F2BC17CFACB1EB4692F5F8ED4C361E9F8AA08B557989A0E27B9512EBD0771FE6E51C4674A480030D27DA49991A02F17FE225EC5DA57EB53910BC4FAFBF3320FC8F13105DB5E0A576FE50D42EC2D1BECB44D21EF1538EF9F559FC5549F7015E1C090C4AB8EE3631E1375FCCBF740F35660646B11D2F29E8D9CBFE73E7E1FCB6CAF0283E1837A53215EF4E3B5C68C5F3CDC45726ADCC4E242704827E202C012F529C356567DD19BD4D149D6B7370ED7C2A3EA009312F5300758FFB11F51246935AA18C49C4F0328DCD6875E0ECC3D42236779066DF7BF0DEC61A759A4AE725A3156A2F279303F3DA859F65020E191ACB2A46191AD55C1D89E91F6DB8AAB80D528A6419E7AEFE882F9245A2FD05D9FE33B320327859B0270F71DE263B536600287C6ADBEC4CCDEB5CDE52CAFC6B8F680F3AA13ECAE089DD665046D59A5B66627D420E6C6DE938D4F1EB13021716977647788181B5E36256E8F8A50501DFF66FC049E193C1D6E0B0DC57022D3772B60B75689590CB26AC5ED5F0236E99F52C14384A74CD21ECDEDD094CC8622258470C475F1A4DD42EDA55170360A093EA1D84D944657E9F1D6A8FB649BF859BC3625690D7589779E558BDC913CA8C7C9526C8F24445A48ED7E3BFD694530CCC8348E1AFFD35BAD2EFE91EE9145662BD2103E9568C28E4A53253C6922B87630421D23F7687CD807E9D553B28EAD6E29E75CB7DF7574E9EC2DF699D9DB458282B1209BFF6F4D888BEFB20A52AEBA42EAFD17ACA53B2750DE1A9144F106C9BBF228026ED3966B419201F106C453047D70E9A0A19737AA8521F2326AB0E1887AF6785D592C2D2A8B9CACE24FBE4943108740247B83BE344F812E9BFC2209EE7651AF4E09638BBF9763225FCB872DB3BDEE54729F57DA2A4483C0E2EDC28DAFFC78697B72053364FBE17C55AC02B610641C5E8BD00468DFCB23533CC887A115B8CE60839791D01A7A24790637A54D99BE896A8ED8447C5EFDFF0D421FAD8972E9B5FAF99C769BCEAB36D04C6364DED86572EA53F888C9B3C9FEF831607D534A72DC6D167FB30CA8DD6317A1F8445DF4306DC170F9FC4F54CA78AAA9217733C2D6C892BF5B114424E5E24E49DF922C72A619A6923E2A13079DC627C3D7F08D2BACF73424B9020FD6FFFF9B0B03ED1CF03C8299ACA0E0BA0CEF4DC368E6442480EF5034FA8468F741C64772FA3700535F2F0E09FC717A7DE3F3BA8FAE45D41E72FBD20D574A4A0044810B271CC2ADC77CFC073D06B91E52FAA7814686AF764AED6437A7FE7F51666C14C11CC475256338413D2690C184A8A1D08AA6B2B817059FCF9C4027E608B82297FE8D61C023874E33FE9DB3141A89A65D8C073775FE6CA220DEE9FA739738DCF03CAB4B2B042FD7C21AB124B9267CB798B5BF1EE5A861434BB867F1FB4968E32554DB92D2225A1AACECE1D541B65A88CEE345DC7A5C33CDCF7F6F8720DCC2A5EFF2DD13B14D9ADC90397D19742EC0B93F88CCBFED58D600668CDE6CFEEA542A045602027198119DA13335505E9A58AFEC6C737506C8FBF3F54CABC2EB3A0FC78BDBB3CEDCAF27B0FFD586E94CCB4F124FCBA90EB3DE05B824DEB3994B1173261A801DADAEA679957D25550C8120D2A6E7F6D25C622A49A98960755444A4D654E0060A1F72350B20260B3AFB878F189A34F63C2164532E24A191E2B9C89FA0B81EDC9D9BBD079D221836B19050E9396C183FF3E55CF5317DA1C72511592358D79D8DE2C0FD32DA28DB9B1697D0CFEBC4A13DDB21753C44039F98CC972E78BF30CC80603CADDAA9F5616923A0F8D1166E5C538A18522559FDC8909BA5283B91FF3C0F66E73E48182D542F46CF380C92393FF6D0C077FB4033699E84C607FE24A6365DAF8B0854652D1402139258C19A4F56A1A54CE1C85AEB9A6F3BA3772C2F67C39F8ED45DEADAE345B088D2E4DAA2A541FDF23567E645C7300B77E337A8DF9CD4F86EFB64DC4B4AD70B35278F8AF71052714C54CB045E3098F3B0A737B1EC78D6185DDBECF7148C50BF3BC418DEB8E0B2AD952223B7B732D25BF07B689C0A10CF4C04486DA9BDE9956E0C8237328C8B6F1B4341C2BBC4DC62CB85A8DEABFC5D4170F8A56A27FBF7ED59DFE6921BFC5804D12564FB4B83C9F16E70699FA9437354A09C338A915A92803E8B4485B64CD5332352201D52FDDFA28534C4BA7A34769E639CDEEF2F7B58F140B7F929264D24352CE3D221E1D4F3818D6307E84DD53837B46AD2DA800014F77403F2447F6B078B1D128FB26A2D0B347960F14472CCF534FC76942DD84349BA963E4EEB0B6CE07CA77AB5410834AC4896AB1FCBBAAD37C2ECFFB35FE9AD07D25597E91677A1E1992AADF3A891E032B1D47DD8DE179D508156C48CED040D2A992547233AE682C6718B35690D2E8C8779EAB76D12462B1976D0CF9B3C136CCC93BB2037175A1D674190210B2F142350F0009E59D2A0E5BB5A5C7D564FC4569094647D30817E881842880DF6038777F4291F5F94A4013310EDA3B5A1725FF14F882290A70A4C6E4F95425B05B1D15D11FDF1B63F13DEB3270D897EEFCC1D5C9D8FBFC95E9975E7E15C717357283E9A6A9383BCD0FD810D51812A1AF02DCC",
"len": 54807
},
{
"tcId": 6,
"msg": "72DC2D30E9499093015F66B3DC0928E3D1B492F46B93790A00917A55B0D06FF992B0F34D34C36DEEF2D9C75A9C1B0A3657BE862F74FC88652961F45637836CC9B903CEE63F7FA157E306F1F4F8A36CF4E7B2D81C9A28FC619733CDD51B50F5E4CDC0FD090FF1E92FDB2057705E2099F6370FA72D673A8AB60CDED829AF7C783B774F14929AA3038FE03F5724DF083F705C7C51938C6D33E25297AC1380C96F324536799D90F57388A2339A9B1CDD4DB8F159F21EAEBD72F1EDA5870D2CA6C27ADA73022CC131C94F9B0050FE5E2088DAA4D8BA43444AA647633BCE5A440E88F332F9BBA5B7F291AB9D37695404D52DBC00CC1BB59AF4739619B91F53DD6786045454D48BDC89A6C08E5438B8E1BF01838FABC2CA12DD480684982E5EB32000D5EF4A140558BC68C2972E92E2FBF82F4718D273DD3C764E685A2D48454C3DEF213733B0100719550389FE406146A233CCDD7A9CA2413809A05B1B1EAEBFF1C1D890D9852FC50DC2B574B5164516AA8479DB07370D167FFABD62761EC9CECAB89F44570CCB1B0FD41588B2213CF56C1679E5ED787891052F9CA4A13E99224A6796F10CB22D2469665480C813451C9F5FA10F41143661A9ACF6843034826354DE9BF83EDB540D26BBFA24DA213DFCB4CDD924A2EE00E660D4CC61BF53DF638B2EA20610FAE9798343FD41FB9635760DB6D810980D92F6E4ABF22754D85124FCF5BA10984BB28DDD723235E4E59253FC21391078DC58453E3A52C288C6EBB678E2278DE9329846C750ECF153D131376E7BEE408ECA062482A44231917ADEC9638606151C00CEEA62C8DA7E00DBEA806CE33C66904F3C7FF8448DB81CFA0FA2CFEDCC3E529D1AABE17E8FCB49FF68105D5E2CA11CAEB630C458B337ACAF68F193247E68EB47DF98845914478001D8AB7B3A6785ECA3C64D56B88631359F04F5C510CC21ABE34AC4E31844E2FC0DE94B8AE9D7B1A52E026045294C360CC3B1C93B1054694C629452EB0DB4EE030C77A2EE93F4E66840061A791984403635D2970747EF73AFD8DE7FD040F1AC497B7AC969836CDF5BB9102A8304412BE16593DDB9FD6A7ED6E0265A72509F796B8A1EBB4566A5C9138C9472C6C554D63250CF70BA5D366737BF2F0E4D7F6BF02BD7F0D7DA747CB1D54D3AF064A23E06EF74D9DD40CB505B62F930C1177A164D7CF91504CB434A0C2E0F3B0AB898616881478864CCE7EA41DBBB1B2581AAC01058F289C60ABF4D78D8A6C42A0C2C167D1FB16CD88A6F4005C020C318BB23B3F3394837CF16801AED1F13D30CECAA619FD4D749349DFA598FC29F4724AC6D8BACB2B1D46DCBEB5468E609D2E4FE02A50744708647CF65A40EB602BA6BE900F7F2F7D10E91B2A50F5A1E199A42080F917D0B3025A460837EC1438613DA457381804BDBF3907FB0386A14E6CB4D27E894C9DD00DF6B8143CEEB628E42EA0F2440EA67C22A9DD96F7EEB9CA6E72E6FE050867023FF865EE8427679CCFFFE9CD410FB143A2E786E05EDDC873D54C4B947B8618CDEBE20205525953A98A3C64C0629F06AA0752742DD642F441FDC837E7D0E1C934C04C5C47B9C8A617055D23531FB64C1D241C8634BAE90A3839CBCE087058F6BD8F8486AEAC2AC68D972F06E08B3E0DBBC0A840D79F48B946EAF87270564D460C3DBE812D721CB564E4158D742FF530AC4C1445B665347C00A1F8BB519FAAA3149326D5BBDA49D0165EA60C0B596B3FA65A022AF961E933137A5B774223141AF020D6DF5F9B8AAE771DB79FA857E66C294AEE75AA9AD3FB7286714688C0FDCDFE4E53F1B5848A84CFACC5DD5D5BB994C0D4384FF1126944228C63EA105A5B4CFB04EB51ECA740518ADF8803EF0687D6609190D40DE8D2E9A030A8F5D6155447B0B4D3D5221A2651B83628C3FC0984DB8249FF74920BF1DEEA1D7C0308F887B3A3741D73D20A10500632DFFFB7CCF71C43A1FE6DC8F7CBCE38B5EF327A3C849835E090F325D88D80A7B87C6DDA3A84D95FE63F9D90CD943467334C5F9AC8187290BA2A4C964702834F8F3B5D3C330185157A0A82AF2542602D373A285BCD1FE315A890DBBF9A535A68EEB2D32DC16BA16BA81CAAAB2E2B3185E9E6F9A17B620262592E97D46D2D3224A5A0DA66C84A1420EB93BDCF723C34307548ECDC780019B929AB77D58C9D0F65EC1CE7626BB6DEC6B371A1952B2C0DC10424717C831E418D13361DA710C7929D38D8EB700D4864E6B57FEAB99D3CEF474288AD2F2A384ED78CE4AAC0AD84369E3B3EC20A634059A1439BA4D1E5CE71BDF6CB2B5765CDDBFAE35EB066E9B8826A41C0880EEAE6027DD012FCF62322264D4B94792FFE886EC34DBCF065BE39C44081D7F40C1BCD527FEB19DFD48119A7E3C47E90ADF9043245DCA3DC3D65ED87BFE78E0FDB15EABBEC42723420CE4B6719FA565345E9ABCE91A319F6D7A994E21F4A9E1FF833924A17B47A59B7A5D55FC37B75D2580CD25E0776436D500270669C39DA062E0EE29FCCAE601837B344E50069F94800211BF940BC2EDAD35EF887DCB20CFC8AE5C9CCB386036406231A265116CC488A4D18A92664EBE7DB9615C012764B51D9960BDCB2838528DA425E3CA3FA70E91F0AFE1803E69286B27C4048AEDDB6645FBE10C20FDB5388552C9FC8EBAE541BEEC49DD8DA9B0FFA580BA8061BDA557A0B49DB08165FBDBCE3D8B313E0EA926A826C22F447C1AE3AB62711CD983751084070A38E08E67801C8E59A88D5B62169C9404D6CE295EABEC7E3EE9E5176A27E5188DA02546BAADFD9059A3270762E94B563343AB5A2911A7307E9B3B6410753181AFF045AE6DD0D8AF31F73A06DB6B1A794DF58C9CA89408D24E9316935C2E8794A903727D63994CBFE053EF32E3F6C3952F98939809DB84226DA848BA8FB80321291EFC9E014912E18D95772CB7767B964DA64B6050B1B2A5A274C6757BDA555780A6A85F8D103C7AF8E449BC812696341EC494E50F84C8D17E8AAF3DC40AC6D752F8524DAA995BE18C5BE41883303051B18B8041B1A74FD3F452F9E8F2C8D6DDFCCCEDB17847BF9E05458D5F57BC247772A2069AE8C2A43FA9CB956A3861271ABB3CD4A8A8A2F4B726680455E7F99E89BD314919E2911AD17495536CFFE5070A9A7559F645E1A8BCBCE82C039418D4FD37944F3F6BC28F14331A8A505EB0A0526C986EBCF7D61E0C71B5DB72A64EEBFFE6B21D9F3773A3093150CC63EE1971985AD2517F18BBB0543487B30FCBC065007E796ACF49FB24BD188677A72B529424C4A7320B4E69785182669A5B31BC8FA9F8F7B6833E363F8DDD9FE9900C32BBCFE3E4CB5A695EF834FCA9058888015D021684DAE621770990019C69469E74FA88EF235D8EBFA62DD2DED7FA47C6412947E6870407BAAAF340728B009730D60BF7F0CCCAB249438A1B8C949014B87C1B02349A1CA96BEB55B9D6A7D149C1BA676EEBB2C3E2445DE2023170F30F63C9E844D5C2519845F7AAB4AF0E102C45BC8C7FA4F4DEA0C0F0C5853361A015A004C7E7D317064D390C63C95384D309E31564D28693132BB1BB5CDB108BA4A8C1FD398218F441A98E1213B8208F5B1CCBD610D70A6212D986E0DB15C1945F4CC58459AEA19FE0F4ED6E34986D9A0C8DD01D6F70D76A2D1AACDA21F8E82F18C3AA80532C1C2C3A3B46E841377CBFB4A7D8C444D9580ACC18B175DBDBDA27DC2FA5B1572141E45115F7C87BA482DE8F87B6FB1FC55EBD7402A194116E413104C28CC4150C466AA3F889A397CD0D6EADC2E31D0DDEE969F3BBBE9E8CE4DDDBB88E9588132FA173A4C3DA082E527932A12E79EF49FABF994BA0F4B680EB2E7E01B8F51000AF9C26B22D17CD783409E8723E8ABA63DF94AE9F9538B05653A1BC90533D383AEB712BE8DCCEDDA85F2F83504A0921A7BED13EF030FC71DA8503800BC02CA7B75A327B5F3178341D84DF9B06123559D3AC7CBDFAF4926D67D05D6110EB6287FA359686A4DDCD247CCB32839E634238E6146C6E4727DD4DE0D7592D55F4FF50077DFE484B1B6E401AC4E4D7417244C0FEB356103C6A05F97EE1A1121DE8E860A374F5E32340EC3C25A8D84D215B2E81E976153E55A2C5FD612289375793E9F311053370F42E3714F1ABB30168661C0719F9A506DBFA66D6E5EA125B54DEE7D8AA40B43D63487B8F7DF138BC79AAE7737EDD153F6C9334C54397B86FBEB4052A682CAC4FD99AE52E39119A0FC0AA6D9E5AD0105908500557908ED84977B4A11800F866E64941438E371E8F71EBC4531BE030245FCC0623CE13F6911D281D4DC98385D414C54DCE7E30DD602B1E184D22AB0166C47D249DD50C2C3418C0746B974AAE8A39E7FF1C46F4A2846ADB30FA470E529194B497770DBEBB13E294C220B5483B5C19605B743D951B5BF5325C91200EC9DBE129B3D3A6C8EA955C3DB2614F98B7C76C510910E933BB48873D40F753185194F612B86C0FA8AD237045A8F8DDA299362AB0A971A3BFED9A95C37B53EC5BDA04368F04E9CEE17816C3ADD0D7CD510B03912C532E1C8724FBFC874D88BE70D1411C7549E9A52B637DDFC5F9C8BBEA21E34B3AC4BD9CF67A7F79AA14315E57DBBC758BC1EF34573D55EAEF2596079EA510B9ACDF9A2C47CDDE657E41E2804D6D045C006660FBDA8F2BD4F0046AD5DFFEBA8D957FCB5C38BCDCECBCCAC4831246EF5AFA76055832A639783CD2E823BA9B2F42C4F5C73DC7FED205BE93A1130867A7D92824700F407F825CBD935A0BC29B805EDECCEBB920177E6B8546D7B502F60B96DEABBE3AF90D0FB0AEE755456A584C9648A40A13FE8584E75F6A1D4F2F304312D9C5630E31C903E8E0EA3FA4FEDDD5A29607E64608E45C41B9F003FDF6EF9BEE8B53233FFBE29E2EEB12F85BC73DD76367133FCA1FCF66FC045EF0D0F8EEFBD94506E2D6403DB6D5D205166EE160A0AAC0FBECF1C8E0F46E2A647CB1B870330281DABB67E8985F530507AB133E90618110A9402BF17CB4016ECA6FA090BBDD7E1855FE43E2B0530127DD6E7CE2633999040D6D95EF4C57801E9E183B9A873073848E76772A668F7D3F307849FCD29F86060927C12E620C8FCD29A9712E9231A0266A4F81E93FA32BCF9CF8FBDC24A9C80F46CECC2757DDD30F60B7CD925E19372B556EA59BAFCDD4D64E190C361CF084F63CD048C95DF69410EA31B614797AE8A92E17CDA99F04E08E982A1DEBEDBE4117CC470D47C265432217459F8F5B6C006C05FAF45D07503E49180B2FA118AC558AC012817AE7EEA32275D4FADE4DF89AC8CB3698434801294DC1F4356688B8F71223ED88F634CCA29D3E3C5F319E003D4E71B85910BE79774908B6468A8BE15FD40599DE8B470C80254656BDC04B3204087EC148E88DFDAB0279CF02B5F1E9F3FBFDAA63A208BB0FBAA1E60D6A7BF1190A6C37737EDD5C7F693CE74756C6210C54C038B1643D7040F14025450C66E8E9C026C8D7FD3DB434AE0FA01348AD4FE0E6F2745265B140D34335B133110B8E0A4F30F4A6A608FFC8139E62A510B375A37337509A703719B5CD6FE0FC06C7D211B4B1C6BE51C317378DE5897E660D422332B7FAE41C43BB16EE4669BE408CAD9C1DC9B252D7A75B6E1B6CDD2B4E08FB372D2089B464EFDA67039E66AC3133A46B11D88762446F43BB6C5FD4F7AABEB454F29BF1E4F8BF74A42CF7C21A63C7CDEF6388EA025DEED21F048173D994075EC6B8C974FE2308F3FCDAE451168F483DDF3868FE09856D1E679A15EDECBB4F887D0E5263A1A70658629270707B556C35F16D2E291D846D181C6A1B057B6A866C4B60A682C43AAB0E618582769E8989829F915772279BE82491169D4CB568DDE4080EFA05D80BC649DF56C406A8FE2FB9B7D16D594F8E7B45657F8E8A838B64268B2B74CD4340530CEBA701A3E04EA31FA120D71A8E69107DDC3D452C18B2F0E0FAA4544C1DD0DA8EEBFBC35F0C5882AAABA63C746C5ECADF78929E1DCF3E08AE060DFB63F84FC5DE944379594988107A5A146B2060F7EEF5084D9BE2AE6FD264540CE81DD2DDBF16C69D6B5A54D32D14754C8CA1A35CBBEF2BCE41B8658B7B009ECD2C769C85C7E7B60E7D1BE71AC44905016E2A6F7132818285A29AC5762443B95275191C3215E477FC13D5DE3E75CD68062F8ACF355313E749A9B2693FE3CAE35B5A5CE72C4F348C3E60C28519CA2C380CD9A840089E13AE5C466C67A222D8BF98EEA86AADDA41AF6F936D4901702DB511558C17A262D103C409C26EFEA41FACA9C4F546803D8D99F04BA2D9A2D7B81FB46B0CC1CE82838E3428A73B7332FA126C1021BA90E1211D175B9926F0052C6B4436A0F9B78CBCCB7F8628A15BA4F4897293DFCE43FD555565C34E8B4D03145CC902DF68BB6DA54CDE64B8E63786E165E6E62A0462F56E249E5C675CD89B30376C5F273C09DB709C9841C4B122F4B2CC2026267D3A80BCF03EE9432B0A3D8EA316DADAE952018C0D6365851EE6AD0EE188719A663E461246497A3D96E8D3011D60AB5E30D53A3DBA8D65C44DC6056A7C7F2BFF0B5AEE4E750BAF2490BC1A7227B24B2351298D0C887DF5558DBC1DF66D0AFAB05BFBB46983FC88BEE2C3BBB0E3F2806BBC7375772F86FBBFC4724BFEC992E74B6DFD65A81D0897C7A1BD93833CB9C7D8BAE788555667ADC1A3D1711AC42A7C7646F86AABCB3B5245C8CCDFDD489E91358D0F2846082E44D7A830E3704E5F93809BDB22CEEF55E8E32E90839A3E56F18641C07A58AA185268C65900B31E80D64C671D343925D3F60867D25E5A960A30A8E402F124ABFA9ED01547A1E55D50B68CEB1AA56FFFD68933E4265248E868B0673F5D04D40DC2660C8D3310AE06DA2EBA1B47C247717006E8D6FFE612062B0426F6A7C08B0BD1D4AE6116DF05BF5F32CB395974EC8EA70FFFE90FA6E270C8236D39D00E38A567148F3451EE806FEFF87CE157DB29983DF604DF66F3206008FF50974FF4B7DC132214830C2A84ACEF66DC2F06EA7019BABC2E87EB4BC87C989B5ED69A6FD6CB2783CBC7F4E4556B7EF02B2E6FB8FC66D6EB0725C0DF60DFEA08686196039C1A944CE803514604C2E2EE674B2BB28401FDF4D9368A6A180F871C0EF8A7375AE53B56E1F4B9FA5BAF229290D8EFE8FCF8011099F0E8D7717641A2FEACF6265572C7563327AB851197E4C20EFCE159B185C9051FFDAA213C6F7E8C7ACB924071308F7232A16DC5FD200D44112547EF03BB6D90EC6857E5E4FAF8A1ECA9A61EDBF6E756ECE4151F16B66D76E28F1B34116A3621EA6D3659877C5648C0837B6B97EFD32D59585A39DC57FD23C1DE613B42B82568143D0EAE2340AF471EF27713D92F5543CB5DEC36D34B5EF91C5A9936C3753A3797559AED339E8B468F2D843B511A7D5B1524B17DF0BDBEAF2A424DAE863E75A32EC82E578A6B687CDADDF391FA893B6A09207538196800C6AC24589B1B662383BF7EC48C84867C8A5DCAE5F0836BD383DD6814AAC13422F354B2DD06F5C646C0CE77FCCD0C19D21DCB366D3B5B54788A2B4E626126F2FABB4CD1A557A447C1CB054145FBF6FFD140CA3B9CBBF06FC4F909824EB7914C021372F2CDDD599D5968F25DAA204E820D7905F3AE29066DAE1AAFFEF4FDAFB428B062937E0378",
"len": 43008
},
Test case results:
2: Digests do not match
3: Digests do not match
4: Digests do not match
5: Digests do not match
7: Digests do not match
from acvpparser.
from acvpparser.
Am Dienstag, 24. August 2021, 11:28:26 CEST schrieb Knight: Hi Knight,
Hi we try servel times and found: For SHA* test,use test case,len is little than the msg len,it test faild, but if len is same as the msg len,it passed,How to calculate the excepted len?
I am not sure I understand: For the SHA tests, the input as provided by the test vector is to be used. The parser provides a msg buffer which has msg->buf with the actual data and msg->len with the byte length. You should not change, pad or do anything to that input. Simply provide that to your hash implementation. For the output, the message digest output size is to be used, e.g. 160 bits for SHA-1. So I am not sure where do you think some lengths are needed to be calculated. Ciao Stephan
I found for the sha* tests, they should be calcuted by bit then the response can be match. The msg lenth of input is bit length,not byte length. Its the problem
from acvpparser.
Am Dienstag, 24. August 2021, 11:28:26 CEST schrieb Knight: Hi Knight,
Hi we try servel times and found: For SHA* test,use test case,len is little than the msg len,it test faild, but if len is same as the msg len,it passed,How to calculate the excepted len?
I am not sure I understand: For the SHA tests, the input as provided by the test vector is to be used. The parser provides a msg buffer which has msg->buf with the actual data and msg->len with the byte length. You should not change, pad or do anything to that input. Simply provide that to your hash implementation. For the output, the message digest output size is to be used, e.g. 160 bits for SHA-1. So I am not sure where do you think some lengths are needed to be calculated. Ciao Stephan
Hi smuellerDD,
I am workmate of Knight. I do some code test with this issue. I think I found the root cause is the bit length in the acvp.
We reviewed the "ACVP Secure Hash Algorithm (SHA) JSON Specification" (https://pages.nist.gov/ACVP/draft-celi-acvp-sha.txt), found that the problem might be related with the length of SHA* message. For instance, in one of the testcases in SHA-1 AFT:
request.json:
{
"tcId": 1,
"msg": "F6EB4374909131CCCAA2D690D74BE58A11EF7E59B593A83B1212208680",
"len": 226
},
expected.json:
{
"tcId": 1,
"md": "41CF7C313415517A0A7BEE598C18193E6EC75A91"
},
No matter how to run SHA1, only get D75D30056F682760C88D0310596CAD8C11C547FA, does not match the expected md. From the draft-celi-acvp-sha.txt, it defines the 'len' value is the message lengths in bits, the given value is 226 bits in above case. However, the 'msg' contains 58 big-endian hex data, which convert to bits length is 232 bits which doesn't match the given 'len = 226'.
So, we reviewed the SHA-1 algorithm implementation(https://www.ietf.org/rfc/rfc3174.txt), found out in the RFC, the SHA1 algorithm defines how to caculate message less then 512 bits.
4. Message Padding
SHA-1 is used to compute a message digest for a message or data file
that is provided as input. The message or data file should be
considered to be a bit string. The length of the message is the
number of bits in the message (the empty message has length 0). If
the number of bits in a message is a multiple of 8, for compactness
we can represent the message in hex. The purpose of message padding
is to make the total length of a padded message a multiple of 512.
SHA-1 sequentially processes blocks of 512 bits when computing the
message digest. The following specifies how this padding shall be
performed. As a summary, a "1" followed by m "0"s followed by a 64-
bit integer are appended to the end of the message to produce a
padded message of length 512 * n. The 64-bit integer is the length
of the original message. The padded message is then processed by the
SHA-1 as n 512-bit blocks.
So, we wrote some test code with based on a SHA1 C source (https://github.com/jaden1q84/sha1 which is forked from https://github.com/clibs/sha1) by adding functions SHA1Update_Bits and SHA1Final_Bits.
You could review the code I modified if you want (jaden1q84/sha1@a3668dd).
/**
* @brief If bitlen is NOT 8 bits aligned, SHA1Update_Bits only update to the data[bitlen>>3], then return the last char byte and bits left.
* eg:
* data(in hex string) = 0xF6EB4374909131CCCAA2D690D74BE58A11EF7E59B593A83B1212208680
* binlen = 226
* The require binlen is 226, and data is 232 bits(29 Bytes). SHA1Update_Bits only caculates 0xF6EB...2086, leaves the last 0x80 byte,
* return in the lastchar and lastcharbitlen will be 6 bits (232-226). The lastchar and lastcharbitlen is needed in SHA1Final_Bits,
* to do the message padding and finish final caculation.
*
* In the example above, will get SHA1 41CF7C313415517A0A7BEE598C18193E6EC75A91.
* If do with SHA1Update with length 232 bits(29 Bytes), will get D75D30056F682760C88D0310596CAD8C11C547FA.
*
* @param context Same with SHA1Update
* @param data Same with SHA1Update
* @param bitlen in bits length of data
* @param lastchar return the last byte if bitlen is not multiple with 8, which is needed in SHA1Final_Bits
* @param lastcharbitlen return the bits length of left
*/
void SHA1Update_Bits(
SHA1_CTX *context,
const unsigned char *data,
uint32_t bitlen,
unsigned char *lastchar,
uint32_t *lastcharbitlen);
/**
* @brief Finial finish the caculation with last byte and last bitlen.
*
* @param digest Same with SHA1Final
* @param context Same with SHA1Final
* @param lastchar from SHA1Update_Bits
* @param lastcharbitlen from SHA1Update_Bits
*/
void SHA1Final_Bits(
unsigned char digest[20],
SHA1_CTX *context,
unsigned char lastchar,
uint32_t lastcharbitlen);
With the above bit caculation, we finally got SHA1 41CF7C313415517A0A7BEE598C18193E6EC75A91, the same with the expected json.
In summary, the problem is the openssl only support do digest in bytes length.
from acvpparser.
from acvpparser.
Related Issues (20)
- Build Error: EVP_PKEY_SSHKDF HOT 3
- Cross Compiling support HOT 2
- Compiling with openssl 1.1.1 gives error of fips.h not found HOT 1
- RSA KeyGen parse bitlens Issues HOT 2
- Build acvp for Mac Arm HOT 3
- RSA Decrypt Primitive Sp800-56Br2 vector not supported HOT 1
- DSA PQGGen gMode not supports CANONICAL generation mode HOT 1
- make openssl failed HOT 2
- [Question] Imputing meaning from directory names HOT 1
- Openssl safePrimes_keyGen ffdhe2048 error HOT 9
- Unknown cipher algorithm KAS2 HOT 3
- Support for NSS HOT 1
- Examples openssl3 fips provider with jitter entropy backends HOT 3
- Buffer alloc error with ECDH test vector HOT 3
- RSA keyGen keyFormat does not match HOT 2
- make openssl Error EVP_KDF HOT 2
- EVP_PKEY_CTX_new_from_name failing when testing EDDSA HOT 6
- openssl3 tls kdf-components parsing failing HOT 5
- LDT SHA tests are killed HOT 2
- SHA MCT (or LDT) cipher interface function working example availability HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from acvpparser.