# md4.test - Copyright (C) 2003 Pat Thoyts # # $Id: md4.test,v 1.3 2003/04/18 22:28:24 patthoyts Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import ::tcltest::* } package require md4 if {[package provide md4c] == {}} { puts "md4 [package provide md4] (pure Tcl)" } else { puts "md4 [package provide md4] (using md4c)" } # ------------------------------------------------------------------------- # The RFC 1320 test vectors # foreach {n msg hash} { 1 {} {31D6CFE0D16AE931B73C59D7E0C089C0} 2 {a} {BDE52CB31DE33E46245E05FBDBD6FB24} 3 {abc} {A448017AAF21D8525FC10AE87AA6729D} 4 {message digest} {D9130A8164549FE818874806E1C7014B} 5 {abcdefghijklmnopqrstuvwxyz} {D79E1C308AA5BBCDEEA8ED63DF412DA9} 6 {ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789} {043F8582F241DB351CE627E153E7F0E4} 7 {12345678901234567890123456789012345678901234567890123456789012345678901234567890} {E33B4DDC9C38F2199C3E7B164FCC0536} } { test md4-1.$n {md4 RFC test strings} { ::md4::md4 -hex $msg } $hash } # Block length checks # these values are generated from the OpenSSL library implementation # by md4_check.c # foreach {n hash} { 0 31D6CFE0D16AE931B73C59D7E0C089C0 1 BDE52CB31DE33E46245E05FBDBD6FB24 2 0DE97E6BACB92B24D7578FFB8D58F51E 3 918D7099B77C7A06634C62CCAF5EBAC7 4 30FDB877509C742C0EF3D63DDBEC5146 5 54485D61C2BF8519C3997D2C17D41B43 6 9135D5535D445A5ADC299D227D3BDBFB 7 EB393983D7223A7271398DA9CD13F13C 8 23008F046FC579F2D373339EC07F1EF1 9 A38217D543726545E70685379586F249 10 55AEE4317CF6626378BDD590E1A10009 11 528BCA944A4FC5F156765B0C415A0AEA 12 8F919C346C23B06B46C872BE5F80D919 13 EB50153829A34A8DE50ECCEEC7D44BAE 14 0AF8EB203F383DCF6A9D888DE443572F 15 C531CB0A83667B164886E6C1538AD95E 16 877A3D1769C7FA80A74E7BD9D7602EF3 17 DF84F880A964489D9832AF34FA58E591 18 80E3D8A01982AA1E14994E453D33DD26 19 F2F147FB12388BECE57ECA1DCC5ED53F 20 1D9DB7A8B873E64A5C62727EDF6D4BBD 21 CBBE5C1D394BB0B081E960FEF4E7CA15 22 0641E7CD13C7FA26F6DA39E83CD31252 23 76D25193130828ACCF4D771ACB1E51E3 24 AB434803006332AB606B8C9D284579C9 25 EA31D4CD2D48469501E09C62DA35FDBD 26 9A374B8B9DD4D3D02AC55036236E7A4D 27 CC678CD190CBD158E2A111A6A8E6EB4B 28 DD3D0C638699B8DB7D4776A7BF415394 29 AD4914D6703EC452117852FE99D45E83 30 D4450595903614027BA328EEFA0EA601 31 B439B841FD3BECFF4E2DAC49D19ED7CF 32 7DFEF9B2EB78B2367246C381C8856478 33 B3F634CC931234DEDF1E51B0015914F9 34 C9EE7F5964094201EE080B572EF135E0 35 E02F85B1A7838B905E90E279F27FEBC8 36 1254586BFD14E030CE4086FA961CE782 37 E93B0EBE0FE3C688419FAF37511C8F5B 38 D6D79128936F4B32D01E395AECF29D82 39 7A0AC9F4F25A7C47AFA9AA7DF30D3221 40 2F195C997AADA83926FE22847CD3B37C 41 09354A0A378CFDA1FF95A8885D38C4A8 42 C2256534BFEAE9FA1EE7E86187BB965A 43 FE8F4AE6501CA2898981F60DA8C7F6AE 44 46140F97EFBD88928FF112F5367B526A 45 9D403D371C315FF969BAADD8623BC8B3 46 068D234494F92F646BA378BF505F8C47 47 AF7C0BBED49C6211F1FF4B1739E7AC27 48 14D946CC28AC58F8C5F210A06C1C6F25 49 EB8702358201CDACE81AAA2DB0C6584E 50 FB2A7C151E17EC3DF8502062D86135E3 51 2D52D26552CBC27CB68EB829E35DD24D 52 38AB80B7C2B45B568488244ADF334410 53 BD3ED6F7A3A4DD4705360984A18577E5 54 10993F670D6D785F3E87BC46E8DA89DC 55 C889C81DD86C4D2E025778944EA02881 56 D5F9A9E9257077A5F08B0B92F348B0AD 57 872097E6F78E3B53F890459D03BC6FB7 58 277F5F559A60C0AF69EFDA466786FB30 59 A70AE7F83D838CCE274D7491AA915028 60 8C6B85BECAB240CA5DB17955C4D39782 61 672A99BA40462771641359DCC4CB1DDD 62 5AE7B0C20144BC35483E8D7C16297658 63 7EA3DA77432D44C323671097D1348FC8 64 52F5076FABD22680234A3FA9F9DC5732 65 330E377BF231F3CACFECC2C182FE7E5B 66 095BA42E17C00F9336F807D8BDAE72A5 67 B714FE2E2D4EBC2D801A481FFAE39FA9 68 769051239BB45773C87C19F35071178A 69 49311D7BB7CC3C078F932E873D7769D2 70 DF01FC1E5DD0BFC600DB67201C977EFC 71 09751A7E990FB1D82C0A1293E5F5B3CC 72 040E619A227C013B5201A9796246D4AE 73 3470CE6363ED22E5496F138AA7108416 74 26A8C2B51DC60D23597CCA9025119030 75 E82ACDF62A2512470B9580B53DF18A2B 76 C5B92B27DA91D2267C23446ECB6A912C 77 CDE8AF463FF6018AE7B99AC9DE24EA36 78 A883A850600DF1EEF28C573E034E7D18 79 A7CCE750192AC057036F1B4C5A2605C8 80 721A93B051049C47487B06A59ACC7D64 81 F28AA8607F27E972E483638794C1C5FF 82 577AB2592E92823D26788493457AFB35 83 157BB5E384BBFD04719CBB1EACBAC84B 84 66385A9301518DD05B0F565F08A600EA 85 0B87DD13CDF6541F400FABE41FA5BA78 86 A6446864A8BF8D07D57D96DD908EA956 87 6979B8ECFE581790AC7CD990E8E0736E 88 F0E85BD3BA0E224FDC2306C256CD5F3A 89 60FA15155478D3C8A76E5ABBDB77CFBE 90 FCFF0A17BD61381B77355CEF66808308 91 828C52051A9693A1B54BE9352268955D 92 53A6B8D4DD7D0770A5F6DC9874E7B88C 93 00F8653F803627B70EF2E7E1654576C0 94 14A4D10648330012FE672B650C196021 95 A6A0B64C05FCD2E57D8CBBC59A1A00B7 96 DDC02B8E0A315BA8EE08851668A081A9 97 4067061356FA1E283EC5F3610E7EACF0 98 717D2EF3060CA3208DECAE86F9BDCFD9 99 7B625DF18DC2FFF7F5244A4C50915893 100 A2A3C7C3EE6088BAD252BFBBAE229BB6 101 547401415A107A8147D3BAB71991BE0E 102 E1C162A95EBE24D4A78DA81FAA6A451B 103 2A3D6778231DC7EF4AB0D96DB648D128 104 89E6CF2B88C9328A4C348A731D317D25 105 CF71FEC4631DB55308AD80186B8DCF37 106 343CA55FC783302EF9A0B33757E5EF19 107 AAD33B8FF079A18D6425470D011B4D31 108 357C138B5498B531CB174127FCF14A0F 109 73B22BE5DBAD1D26BD9071AFEBC35856 110 74101D5E7A9321DAD687B4C2AC7E7551 111 69DAEFFB60DD1DCFC8A0DDF5ED4DEA4F 112 CCBF3DFA0FAC8C6E5C2504CF15777E71 113 6EE2AD0A2A06E975C2FA8887333DE734 114 8A7DEFD65211A52A20CBD989BCB079D7 115 650A6088C41B5951EF46B09F8A8F7A16 116 F731ACBD40496A63FD33C72BFF4ADC4C 117 64279E932B0A6CF7FBEBC12969AD85F9 118 5257D42AE36DCFC8418FA40600696E16 119 E65DD227CCEF97FA1D34D70189120F76 120 B03DDBD470B47C013E0C7AB2DDD763DB 121 E5601AA6994470F918405D745EDE163C 122 6BAF506A6E6A525E9EF9BBF7E6B4F45B 123 D312F30D9FFF78E5404F8EAC3F0B665F 124 A7A1C6286070E9A7AFA4831D2BF7BAFD 125 941B80ACD86C9D9C3F27380591507DED 126 85C05A6BB4B2CF906813652C68686361 127 9733B046AD770B4E093B35DE4E09E828 128 CB4A20A561558E29460190C91DCED59F 129 2ADCD303C29F93A3EE33A560ECE91CD2 130 52B8CE960BB64E4EC2B579D4047B175E 131 6EF49AAA109B8120004FFCC801218CAF 132 370ED97ADF490F75693CD5FC73A8E3E0 133 54DE78D79AD53DA4CE46F945160B591F 134 0D9014C7B4A9EDB3D594056E78D25B9D 135 4AE5F06E7A0AB2B7142583873ACFCCFD 136 C4CA41E447A27ECEE443370B002B6459 137 9A64358C2602DA3F21D2E79B21E94BF1 138 5761A624A7BDEDAD64E543BC73213E64 139 D301A78CB6959F11E81BD7A3C6BF5BB3 140 5D726C762665398737C34803095E91F3 141 DB62B01151A01D5E4A00D87F2A48B98A 142 C310B6E1016ECB9F5A5C5A4B89F17A76 143 33C7D6E29F904B27272E75144BE07D18 144 835048E983D82FB0FA151BB8B6FA636E 145 B9FF2575260E2AD08557EEBA52B27CDD 146 BCCCBCFEAB174BDDB81CC74DD97984F6 147 9B98A75EDED6B5AF8C449B75A74C30B3 148 5F9F642231152DD8CD5CAA9B5FC59B5D 149 84D82189C5458F8647D338FD62EF1667 } { test md4-2.$n "md4 block size checks: length $n" { ::md4::md4 -hex [string repeat a $n] } $hash } ::tcltest::cleanupTests # ------------------------------------------------------------------------- # Local Variables: # mode: tcl # indent-tabs-mode: nil # End: