mirror of
https://github.com/waku-org/nwaku.git
synced 2025-01-15 09:26:38 +00:00
378 lines
16 KiB
Nim
378 lines
16 KiB
Nim
import nimcrypto/hash, nimcrypto/sha, nimcrypto/utils
|
|
import unittest
|
|
|
|
when defined(nimHasUsed): {.used.}
|
|
|
|
suite "SHA1 Tests":
|
|
|
|
const
|
|
Messages = [
|
|
"",
|
|
"36",
|
|
"195A",
|
|
"DF4BD2",
|
|
"549E959E",
|
|
"F7FB1BE205",
|
|
"C0E5ABEAEA63",
|
|
"63BFC1ED7F78AB",
|
|
"7E3D7B3EADA98866",
|
|
"9E61E55D9ED37B1C20",
|
|
"9777CF90DD7C7E863506",
|
|
"4EB08C9E683C94BEA00DFA",
|
|
"0938F2E2EBB64F8AF8BBFC91",
|
|
"74C9996D14E87D3E6CBEA7029D",
|
|
"51DCA5C0F8E5D49596F32D3EB874",
|
|
"3A36EA49684820A2ADC7FC4175BA78",
|
|
"3552694CDF663FD94B224747AC406AAF",
|
|
"F216A1CBDE2446B1EDF41E93481D33E2ED",
|
|
"A3CF714BF112647E727E8CFD46499ACD35A6",
|
|
"148DE640F3C11591A6F8C5C48632C5FB79D3B7",
|
|
"63A3CC83FD1EC1B6680E9974A0514E1A9ECEBB6A",
|
|
"875A90909A8AFC92FB7070047E9D081EC92F3D08B8",
|
|
"444B25F9C9259DC217772CC4478C44B6FEFF62353673",
|
|
"487351C8A5F440E4D03386483D5FE7BB669D41ADCBFDB7",
|
|
"46B061EF132B87F6D3B0EE2462F67D910977DA20AED13705",
|
|
"3842B6137BB9D27F3CA5BAFE5BBB62858344FE4BA5C41589A5",
|
|
"44D91D3D465A4111462BA0C7EC223DA6735F4F5200453CF132C3",
|
|
"CCE73F2EABCB52F785D5A6DF63C0A105F34A91CA237FE534EE399D",
|
|
"664E6E7946839203037A65A12174B244DE8CBC6EC3F578967A84F9CE",
|
|
"9597F714B2E45E3399A7F02AEC44921BD78BE0FEFEE0C5E9B499488F6E",
|
|
"75C5AD1F3CBD22E8A95FC3B089526788FB4EBCEED3E7D4443DA6E081A35E",
|
|
"DD245BFFE6A638806667768360A95D0574E1A0BD0D18329FDB915CA484AC0D",
|
|
"0321794B739418C24E7C2E565274791C4BE749752AD234ED56CB0A6347430C6B",
|
|
"4C3DCF95C2F0B5258C651FCD1D51BD10425D6203067D0748D37D1340D9DDDA7DB3",
|
|
"B8D12582D25B45290A6E1BB95DA429BEFCFDBF5B4DD41CDF3311D6988FA17CEC0723",
|
|
"6FDA97527A662552BE15EFAEBA32A3AEA4ED449ABB5C1ED8D9BFFF544708A425D69B72",
|
|
"""09FA2792ACBB2417E8ED269041CC03C77006466E6E7AE002CF3F1AF551E8CE0BB506D7
|
|
05""",
|
|
"""5EFA2987DA0BAF0A54D8D728792BCFA707A15798DC66743754406914D1CFE3709B
|
|
1374EAEB""",
|
|
"""2836DE99C0F641CD55E89F5AF76638947B8227377EF88BFBA662E5682BABC1EC
|
|
96C6992BC9A0""",
|
|
"""42143A2B9E1D0B354DF3264D08F7B602F54AAD922A3D63006D097F683DC11B90
|
|
178423BFF2F7FE""",
|
|
"""EB60C28AD8AEDA807D69EBC87552024AD8ACA68204F1BCD29DC5A81DD228B591
|
|
E2EFB7C4DF75EF03""",
|
|
"""7DE4BA85EC54747CDC42B1F23546B7E490E31280F066E52FAC117FD3B0792E4D
|
|
E62D5843EE98C72015""",
|
|
"""E70653637BC5E388CCD8DC44E5EACE36F7398F2BAC993042B9BC2F4FB3B0EE7E
|
|
23A96439DC01134B8C7D""",
|
|
"""DD37BC9F0B3A4788F9B54966F252174C8CE487CBE59C53C22B81BF77621A7CE7
|
|
616DCB5B1E2EE63C2C309B""",
|
|
"""5F485C637AE30B1E30497F0FB7EC364E13C906E2813DAA34161B7AC4A4FD7A1B
|
|
DDD79601BBD22CEF1F57CBC7""",
|
|
"""F6C237FB3CFE95EC8414CC16D203B4874E644CC9A543465CAD2DC563488A659E
|
|
8A2E7C981E2A9F22E5E868FFE1""",
|
|
"""DA7AB3291553C659873C95913768953C6E526D3A26590898C0ADE89FF56FBD11
|
|
0F1436AF590B17FED49F8C4B2B1E""",
|
|
"""8CFA5FD56EE239CA47737591CBA103E41A18ACF8E8D257B0DBE8851134A81FF6
|
|
B2E97104B39B76E19DA256A17CE52D""",
|
|
"""57E89659D878F360AF6DE45A9A5E372EF40C384988E82640A3D5E4B76D2EF181
|
|
780B9A099AC06EF0F8A7F3F764209720""",
|
|
"""B91E64235DBD234EEA2AE14A92A173EBE835347239CFF8B02074416F55C6B60D
|
|
C6CED06AE9F8D705505F0D617E4B29AEF9""",
|
|
"""E42A67362A581E8CF3D847502215755D7AD425CA030C4360B0F7EF513E698026
|
|
5F61C9FA18DD9CE668F38DBC2A1EF8F83CD6""",
|
|
"""634DB92C22010E1CBF1E1623923180406C515272209A8ACC42DE05CC2E96A1E9
|
|
4C1F9F6B93234B7F4C55DE8B1961A3BF352259""",
|
|
"""CC6CA3A8CB391CD8A5AFF1FAA7B3FFBDD21A5A3CE66CFADDBFE8B179E4C860BE
|
|
5EC66BD2C6DE6A39A25622F9F2FCB3FC05AF12B5""",
|
|
"""7C0E6A0D35F8AC854C7245EBC73693731BBBC3E6FAB644466DE27BB522FCB993
|
|
07126AE718FE8F00742E6E5CB7A687C88447CBC961""",
|
|
"""C5581D40B331E24003901BD6BF244ACA9E9601B9D81252BB38048642731F1146
|
|
B8A4C69F88E148B2C8F8C14F15E1D6DA57B2DAA9991E""",
|
|
"""EC6B4A88713DF27C0F2D02E738B69DB43ABDA3921317259C864C1C386E9A5A3F
|
|
533DC05F3BEEB2BEC2AAC8E06DB4C6CB3CDDCF697E03D5""",
|
|
"""0321736BEBA578E90ABC1A90AA56157D871618F6DE0D764CC8C91E06C68ECD3B
|
|
9DE3824064503384DB67BEB7FE012232DACAEF93A000FBA7""",
|
|
"""D0A249A97B5F1486721A50D4C4AB3F5D674A0E29925D5BF2678EF6D8D521E456
|
|
BD84AA755328C83FC890837726A8E7877B570DBA39579AABDD""",
|
|
"""C32138531118F08C7DCC292428AD20B45AB27D9517A18445F38B8F0C2795BCDF
|
|
E3FFE384E65ECBF74D2C9D0DA88398575326074904C1709BA072""",
|
|
"""B0F4CFB939EA785EABB7E7CA7C476CDD9B227F015D905368BA00AE96B9AAF720
|
|
297491B3921267576B72C8F58D577617E844F9F0759B399C6B064C""",
|
|
"""BD02E51B0CF2C2B8D204A026B41A66FBFC2AC37EE9411FC449C8D1194A0792A2
|
|
8EE731407DFC89B6DFC2B10FAA27723A184AFEF8FD83DEF858A32D3F""",
|
|
"""E33146B83E4BB671392218DA9A77F8D9F5974147182FB95BA662CB66011989C1
|
|
6D9AF104735D6F79841AA4D1DF276615B50108DF8A29DBC9DE31F4260D""",
|
|
"""411C13C75073C1E2D4B1ECF13139BA9656CD35C14201F1C7C6F0EEB58D2DBFE3
|
|
5BFDECCC92C3961CFABB590BC1EB77EAC15732FB0275798680E0C7292E50""",
|
|
"""F2C76EF617FA2BFC8A4D6BCBB15FE88436FDC2165D3074629579079D4D5B86F5
|
|
081AB177B4C3F530376C9C924CBD421A8DAF8830D0940C4FB7589865830699""",
|
|
"""45927E32DDF801CAF35E18E7B5078B7F5435278212EC6BB99DF884F49B327C64
|
|
86FEAE46BA187DC1CC9145121E1492E6B06E9007394DC33B7748F86AC3207CFE"""
|
|
]
|
|
|
|
Digests = [
|
|
"DA39A3EE5E6B4B0D3255BFEF95601890AFD80709",
|
|
"C1DFD96EEA8CC2B62785275BCA38AC261256E278",
|
|
"0A1C2D555BBE431AD6288AF5A54F93E0449C9232",
|
|
"BF36ED5D74727DFD5D7854EC6B1D49468D8EE8AA",
|
|
"B78BAE6D14338FFCCFD5D5B5674A275F6EF9C717",
|
|
"60B7D5BB560A1ACF6FA45721BD0ABB419A841A89",
|
|
"A6D338459780C08363090FD8FC7D28DC80E8E01F",
|
|
"860328D80509500C1783169EBF0BA0C4B94DA5E5",
|
|
"24A2C34B976305277CE58C2F42D5092031572520",
|
|
"411CCEE1F6E3677DF12698411EB09D3FF580AF97",
|
|
"05C915B5ED4E4C4AFFFC202961F3174371E90B5C",
|
|
"AF320B42D7785CA6C8DD220463BE23A2D2CB5AFC",
|
|
"9F4E66B6CEEA40DCF4B9166C28F1C88474141DA9",
|
|
"E6C4363C0852951991057F40DE27EC0890466F01",
|
|
"046A7B396C01379A684A894558779B07D8C7DA20",
|
|
"D58A262EE7B6577C07228E71AE9B3E04C8ABCDA9",
|
|
"A150DE927454202D94E656DE4C7C0CA691DE955D",
|
|
"35A4B39FEF560E7EA61246676E1B7E13D587BE30",
|
|
"7CE69B1ACDCE52EA7DBD382531FA1A83DF13CAE7",
|
|
"B47BE2C64124FA9A124A887AF9551A74354CA411",
|
|
"8BB8C0D815A9C68A1D2910F39D942603D807FBCC",
|
|
"B486F87FB833EBF0328393128646A6F6E660FCB1",
|
|
"76159368F99DECE30AADCFB9B7B41DAB33688858",
|
|
"DBC1CB575CE6AEB9DC4EBF0F843BA8AEB1451E89",
|
|
"D7A98289679005EB930AB75EFD8F650F991EE952",
|
|
"FDA26FA9B4874AB701ED0BB64D134F89B9C4CC50",
|
|
"C2FF7CCDE143C8F0601F6974B1903EB8D5741B6E",
|
|
"643C9DC20A929608F6CAA9709D843CA6FA7A76F4",
|
|
"509EF787343D5B5A269229B961B96241864A3D74",
|
|
"B61CE538F1A1E6C90432B233D7AF5B6524EBFBE3",
|
|
"5B7B94076B2FC20D6ADB82479E6B28D07C902B75",
|
|
"6066DB99FC358952CF7FB0EC4D89CB0158ED91D7",
|
|
"B89962C94D60F6A332FD60F6F07D4F032A586B76",
|
|
"17BDA899C13D35413D2546212BCD8A93CEB0657B",
|
|
"BADCDD53FDC144B8BF2CC1E64D10F676EEBE66ED",
|
|
"01B4646180F1F6D2E06BBE22C20E50030322673A",
|
|
"10016DC3A2719F9034FFCC689426D28292C42FC9",
|
|
"9F42FA2BCE6EF021D93C6B2D902273797E426535",
|
|
"CDF48BACBFF6F6152515323F9B43A286E0CB8113",
|
|
"B88FB75274B9B0FD57C0045988CFCEF6C3CE6554",
|
|
"C06D3A6A12D9E8DB62E8CFF40CA23820D61D8AA7",
|
|
"6E40F9E83A4BE93874BC97CDEBB8DA6889AE2C7A",
|
|
"3EFC940C312EF0DFD4E1143812248DB89542F6A5",
|
|
"A0CF03F7BADD0C3C3C4EA3717F5A4FB7E67B2E56",
|
|
"A544E06F1A07CEB175A51D6D9C0111B3E15E9859",
|
|
"199D986ED991B99A071F450C6B1121A727E8C735",
|
|
"33BAC6104B0AD6128D091B5D5E2999099C9F05DE",
|
|
"76D7DB6E18C1F4AE225CE8CCC93C8F9A0DFEB969",
|
|
"F652F3B1549F16710C7402895911E2B86A9B2AEE",
|
|
"63FAEBB807F32BE708CF00FC35519991DC4E7F68",
|
|
"0E6730BC4A0E9322EA205F4EDFFF1FFFDA26AF0A",
|
|
"B61A3A6F42E8E6604B93196C43C9E84D5359E6FE",
|
|
"32D979CA1B3ED0ED8C890D99EC6DD85E6C16ABF4",
|
|
"6F18190BD2D02FC93BCE64756575CEA36D08B1C3",
|
|
"68F525FEEA1D8DBE0117E417CA46708D18D7629A",
|
|
"A7272E2308622FF7A339460ADC61EFD0EA8DABDC",
|
|
"AEF843B86916C16F66C84D83A6005D23FD005C9E",
|
|
"BE2CD6F380969BE59CDE2DFF5E848A44E7880BD6",
|
|
"E5EB4543DEEE8F6A5287845AF8B593A95A9749A1",
|
|
"534C850448DD486787B62BDEC2D4A0B140A1B170",
|
|
"6FBFA6E4EDCE4CC85A845BF0D228DC39ACEFC2FA",
|
|
"018872691D9B04E8220E09187DF5BC5FA6257CD9",
|
|
"D98D512A35572F8BD20DE62E9510CC21145C5BF4",
|
|
"9F3EA255F6AF95C5454E55D7354CABB45352EA0B",
|
|
"A70CFBFE7563DD0E665C7C6715A96A8D756950C0",
|
|
]
|
|
|
|
Digest1MillionA = "34AA973CD4C4DAA4F61EEB2BDBAD27316534016F"
|
|
|
|
test "SHA1 block size":
|
|
var ctx: sha1
|
|
check:
|
|
sha1.sizeBlock == 64
|
|
ctx.sizeBlock == 64
|
|
|
|
test "SHA1 digest size":
|
|
var ctx: sha1
|
|
check:
|
|
sha1.sizeDigest == 20
|
|
ctx.sizeDigest == 20
|
|
|
|
test "SHA1 compile-time test vectors":
|
|
const
|
|
check0 = sha1.digest(fromHex(stripSpaces(Messages[0])))
|
|
check1 = sha1.digest(fromHex(stripSpaces(Messages[1])))
|
|
check2 = sha1.digest(fromHex(stripSpaces(Messages[2])))
|
|
check3 = sha1.digest(fromHex(stripSpaces(Messages[3])))
|
|
check4 = sha1.digest(fromHex(stripSpaces(Messages[4])))
|
|
check5 = sha1.digest(fromHex(stripSpaces(Messages[5])))
|
|
check6 = sha1.digest(fromHex(stripSpaces(Messages[6])))
|
|
check7 = sha1.digest(fromHex(stripSpaces(Messages[7])))
|
|
check8 = sha1.digest(fromHex(stripSpaces(Messages[8])))
|
|
check9 = sha1.digest(fromHex(stripSpaces(Messages[9])))
|
|
check10 = sha1.digest(fromHex(stripSpaces(Messages[10])))
|
|
check11 = sha1.digest(fromHex(stripSpaces(Messages[11])))
|
|
check12 = sha1.digest(fromHex(stripSpaces(Messages[12])))
|
|
check13 = sha1.digest(fromHex(stripSpaces(Messages[13])))
|
|
check14 = sha1.digest(fromHex(stripSpaces(Messages[14])))
|
|
check15 = sha1.digest(fromHex(stripSpaces(Messages[15])))
|
|
check16 = sha1.digest(fromHex(stripSpaces(Messages[16])))
|
|
check17 = sha1.digest(fromHex(stripSpaces(Messages[17])))
|
|
check18 = sha1.digest(fromHex(stripSpaces(Messages[18])))
|
|
check19 = sha1.digest(fromHex(stripSpaces(Messages[19])))
|
|
check20 = sha1.digest(fromHex(stripSpaces(Messages[20])))
|
|
check21 = sha1.digest(fromHex(stripSpaces(Messages[21])))
|
|
check22 = sha1.digest(fromHex(stripSpaces(Messages[22])))
|
|
check23 = sha1.digest(fromHex(stripSpaces(Messages[23])))
|
|
check24 = sha1.digest(fromHex(stripSpaces(Messages[24])))
|
|
check25 = sha1.digest(fromHex(stripSpaces(Messages[25])))
|
|
check26 = sha1.digest(fromHex(stripSpaces(Messages[26])))
|
|
check27 = sha1.digest(fromHex(stripSpaces(Messages[27])))
|
|
check28 = sha1.digest(fromHex(stripSpaces(Messages[28])))
|
|
check29 = sha1.digest(fromHex(stripSpaces(Messages[29])))
|
|
check30 = sha1.digest(fromHex(stripSpaces(Messages[30])))
|
|
check31 = sha1.digest(fromHex(stripSpaces(Messages[31])))
|
|
check32 = sha1.digest(fromHex(stripSpaces(Messages[32])))
|
|
check33 = sha1.digest(fromHex(stripSpaces(Messages[33])))
|
|
check34 = sha1.digest(fromHex(stripSpaces(Messages[34])))
|
|
check35 = sha1.digest(fromHex(stripSpaces(Messages[35])))
|
|
check36 = sha1.digest(fromHex(stripSpaces(Messages[36])))
|
|
check37 = sha1.digest(fromHex(stripSpaces(Messages[37])))
|
|
check38 = sha1.digest(fromHex(stripSpaces(Messages[38])))
|
|
check39 = sha1.digest(fromHex(stripSpaces(Messages[39])))
|
|
check40 = sha1.digest(fromHex(stripSpaces(Messages[40])))
|
|
check41 = sha1.digest(fromHex(stripSpaces(Messages[41])))
|
|
check42 = sha1.digest(fromHex(stripSpaces(Messages[42])))
|
|
check43 = sha1.digest(fromHex(stripSpaces(Messages[43])))
|
|
check44 = sha1.digest(fromHex(stripSpaces(Messages[44])))
|
|
check45 = sha1.digest(fromHex(stripSpaces(Messages[45])))
|
|
check46 = sha1.digest(fromHex(stripSpaces(Messages[46])))
|
|
check47 = sha1.digest(fromHex(stripSpaces(Messages[47])))
|
|
check48 = sha1.digest(fromHex(stripSpaces(Messages[48])))
|
|
check49 = sha1.digest(fromHex(stripSpaces(Messages[49])))
|
|
check50 = sha1.digest(fromHex(stripSpaces(Messages[50])))
|
|
check51 = sha1.digest(fromHex(stripSpaces(Messages[51])))
|
|
check52 = sha1.digest(fromHex(stripSpaces(Messages[52])))
|
|
check53 = sha1.digest(fromHex(stripSpaces(Messages[53])))
|
|
check54 = sha1.digest(fromHex(stripSpaces(Messages[54])))
|
|
check55 = sha1.digest(fromHex(stripSpaces(Messages[55])))
|
|
check56 = sha1.digest(fromHex(stripSpaces(Messages[56])))
|
|
check57 = sha1.digest(fromHex(stripSpaces(Messages[57])))
|
|
check58 = sha1.digest(fromHex(stripSpaces(Messages[58])))
|
|
check59 = sha1.digest(fromHex(stripSpaces(Messages[59])))
|
|
check60 = sha1.digest(fromHex(stripSpaces(Messages[60])))
|
|
check61 = sha1.digest(fromHex(stripSpaces(Messages[61])))
|
|
check62 = sha1.digest(fromHex(stripSpaces(Messages[62])))
|
|
check63 = sha1.digest(fromHex(stripSpaces(Messages[63])))
|
|
check:
|
|
$check0 == Digests[0]
|
|
$check1 == Digests[1]
|
|
$check2 == Digests[2]
|
|
$check3 == Digests[3]
|
|
$check4 == Digests[4]
|
|
$check5 == Digests[5]
|
|
$check6 == Digests[6]
|
|
$check7 == Digests[7]
|
|
$check8 == Digests[8]
|
|
$check9 == Digests[9]
|
|
$check10 == Digests[10]
|
|
$check11 == Digests[11]
|
|
$check12 == Digests[12]
|
|
$check13 == Digests[13]
|
|
$check14 == Digests[14]
|
|
$check15 == Digests[15]
|
|
$check16 == Digests[16]
|
|
$check17 == Digests[17]
|
|
$check18 == Digests[18]
|
|
$check19 == Digests[19]
|
|
$check20 == Digests[20]
|
|
$check21 == Digests[21]
|
|
$check22 == Digests[22]
|
|
$check23 == Digests[23]
|
|
$check24 == Digests[24]
|
|
$check25 == Digests[25]
|
|
$check26 == Digests[26]
|
|
$check27 == Digests[27]
|
|
$check28 == Digests[28]
|
|
$check29 == Digests[29]
|
|
$check30 == Digests[30]
|
|
$check31 == Digests[31]
|
|
$check32 == Digests[32]
|
|
$check33 == Digests[33]
|
|
$check34 == Digests[34]
|
|
$check35 == Digests[35]
|
|
$check36 == Digests[36]
|
|
$check37 == Digests[37]
|
|
$check38 == Digests[38]
|
|
$check39 == Digests[39]
|
|
$check40 == Digests[40]
|
|
$check41 == Digests[41]
|
|
$check42 == Digests[42]
|
|
$check43 == Digests[43]
|
|
$check44 == Digests[44]
|
|
$check45 == Digests[45]
|
|
$check46 == Digests[46]
|
|
$check47 == Digests[47]
|
|
$check48 == Digests[48]
|
|
$check49 == Digests[49]
|
|
$check50 == Digests[50]
|
|
$check51 == Digests[51]
|
|
$check52 == Digests[52]
|
|
$check53 == Digests[53]
|
|
$check54 == Digests[54]
|
|
$check55 == Digests[55]
|
|
$check56 == Digests[56]
|
|
$check57 == Digests[57]
|
|
$check58 == Digests[58]
|
|
$check59 == Digests[59]
|
|
$check60 == Digests[60]
|
|
$check61 == Digests[61]
|
|
$check62 == Digests[62]
|
|
$check63 == Digests[63]
|
|
|
|
test "SHA1 test vectors":
|
|
for i in 0..<len(Messages):
|
|
var msg: seq[byte]
|
|
if len(Messages[i]) > 0:
|
|
msg = fromHex(stripSpaces(Messages[i]))
|
|
var edigest = fromHex(stripSpaces(Digests[i]))
|
|
var cdigest3: array[20, byte]
|
|
var ctx1, ctx2: sha1
|
|
ctx1.init()
|
|
ctx2.init()
|
|
ctx1.update(msg)
|
|
if len(msg) > 0:
|
|
ctx2.update(addr msg[0], uint(len(msg)))
|
|
else:
|
|
ctx2.update(nil, 0)
|
|
var cdigest1 = ctx1.finish()
|
|
var cdigest2 = sha1.digest(msg)
|
|
var cdigest4: string
|
|
if len(msg) > 0:
|
|
cdigest4 = $sha1.digest(addr msg[0], uint(len(msg)))
|
|
else:
|
|
cdigest4 = $sha1.digest(nil, 0)
|
|
discard ctx2.finish(cdigest3)
|
|
ctx1.clear()
|
|
ctx2.clear()
|
|
check:
|
|
edigest == cdigest1.data
|
|
edigest == cdigest2.data
|
|
edigest == cdigest3
|
|
edigest == fromHex(cdigest4)
|
|
isFullZero(ctx1) == true
|
|
isFullZero(ctx2) == true
|
|
|
|
test "SHA1 empty update() test":
|
|
var data: seq[byte]
|
|
var ctx1, ctx2: sha1
|
|
var msg = fromHex(stripSpaces(Messages[1]))
|
|
var edigest = fromHex(stripSpaces(Digests[1]))
|
|
ctx1.init()
|
|
ctx2.init()
|
|
ctx1.update(msg)
|
|
ctx2.update(addr msg[0], uint(len(msg)))
|
|
ctx1.update(data)
|
|
ctx2.update(nil, 0)
|
|
check:
|
|
ctx1.finish().data == edigest
|
|
ctx2.finish().data == edigest
|
|
|
|
test "SHA1 million test":
|
|
var ctx: sha1
|
|
var edigest = fromHex(stripSpaces(Digest1MillionA))
|
|
var am = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
ctx.init()
|
|
for i in 0..(15625 - 1):
|
|
ctx.update(am)
|
|
var cdigest = ctx.finish()
|
|
check:
|
|
cdigest.data == edigest
|