Giter Site home page Giter Site logo

Comments (6)

smuellerDD avatar smuellerDD commented on September 17, 2024

from acvpparser.

ShowKnight avatar ShowKnight commented on September 17, 2024

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

image
image

image

image

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.

smuellerDD avatar smuellerDD commented on September 17, 2024

from acvpparser.

ShowKnight avatar ShowKnight commented on September 17, 2024

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.

jaden1q84 avatar jaden1q84 commented on September 17, 2024

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.

smuellerDD avatar smuellerDD commented on September 17, 2024

from acvpparser.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.