Artifact
7beb0ce3a7bf218c3377b1c269bf18c6811bc7cb86c67bc0033878d2dfc6c3cd:
0000: 23 20 41 75 74 6f 20 67 65 6e 65 72 61 74 65 64 # Auto generated
0010: 20 74 65 73 74 20 63 61 73 65 73 20 66 6f 72 20 test cases for
0020: 64 69 67 65 73 74 2e 63 73 76 0a 0a 23 20 4c 6f digest.csv..# Lo
0030: 61 64 20 54 63 6c 20 54 65 73 74 20 70 61 63 6b ad Tcl Test pack
0040: 61 67 65 0a 69 66 20 7b 5b 6c 73 65 61 72 63 68 age.if {[lsearch
0050: 20 5b 6e 61 6d 65 73 70 61 63 65 20 63 68 69 6c [namespace chil
0060: 64 72 65 6e 5d 20 3a 3a 74 63 6c 74 65 73 74 5d dren] ::tcltest]
0070: 20 3d 3d 20 2d 31 7d 20 7b 0a 09 70 61 63 6b 61 == -1} {..packa
0080: 67 65 20 72 65 71 75 69 72 65 20 74 63 6c 74 65 ge require tclte
0090: 73 74 0a 09 6e 61 6d 65 73 70 61 63 65 20 69 6d st..namespace im
00a0: 70 6f 72 74 20 3a 3a 74 63 6c 74 65 73 74 3a 3a port ::tcltest::
00b0: 2a 0a 7d 0a 0a 73 65 74 20 61 75 74 6f 5f 70 61 *.}..set auto_pa
00c0: 74 68 20 5b 63 6f 6e 63 61 74 20 5b 6c 69 73 74 th [concat [list
00d0: 20 5b 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b [file dirname [
00e0: 66 69 6c 65 20 64 69 72 6e 61 6d 65 20 5b 69 6e file dirname [in
00f0: 66 6f 20 73 63 72 69 70 74 5d 5d 5d 5d 20 24 61 fo script]]]] $a
0100: 75 74 6f 5f 70 61 74 68 5d 0a 0a 70 61 63 6b 61 uto_path]..packa
0110: 67 65 20 72 65 71 75 69 72 65 20 74 6c 73 0a 0a ge require tls..
0120: 23 20 43 6f 6e 73 74 72 61 69 6e 74 73 0a 73 6f # Constraints.so
0130: 75 72 63 65 20 63 6f 6d 6d 6f 6e 2e 74 63 6c 0a urce common.tcl.
0140: 0a 23 20 48 65 6c 70 65 72 20 66 75 6e 63 74 69 .# Helper functi
0150: 6f 6e 73 0a 70 72 6f 63 20 72 65 61 64 5f 63 68 ons.proc read_ch
0160: 61 6e 20 7b 63 6d 64 20 66 69 6c 65 6e 61 6d 65 an {cmd filename
0170: 20 61 72 67 73 7d 20 7b 73 65 74 20 63 68 20 5b args} {set ch [
0180: 6f 70 65 6e 20 24 66 69 6c 65 6e 61 6d 65 20 72 open $filename r
0190: 62 5d 3b 66 63 6f 6e 66 69 67 75 72 65 20 24 63 b];fconfigure $c
01a0: 68 20 2d 74 72 61 6e 73 6c 61 74 69 6f 6e 20 62 h -translation b
01b0: 69 6e 61 72 79 3b 73 65 74 20 62 73 69 7a 65 20 inary;set bsize
01c0: 5b 66 63 6f 6e 66 69 67 75 72 65 20 24 63 68 20 [fconfigure $ch
01d0: 2d 62 75 66 66 65 72 73 69 7a 65 5d 3b 73 65 74 -buffersize];set
01e0: 20 6e 65 77 20 5b 24 63 6d 64 20 7b 2a 7d 24 61 new [$cmd {*}$a
01f0: 72 67 73 20 2d 63 68 61 6e 20 24 63 68 5d 3b 77 rgs -chan $ch];w
0200: 68 69 6c 65 20 7b 21 5b 65 6f 66 20 24 6e 65 77 hile {![eof $new
0210: 5d 7d 20 7b 73 65 74 20 72 65 73 75 6c 74 20 5b ]} {set result [
0220: 72 65 61 64 20 24 6e 65 77 20 24 62 73 69 7a 65 read $new $bsize
0230: 5d 7d 3b 63 6c 6f 73 65 20 24 6e 65 77 3b 72 65 ]};close $new;re
0240: 74 75 72 6e 20 24 72 65 73 75 6c 74 7d 0a 70 72 turn $result}.pr
0250: 6f 63 20 61 63 63 75 6d 75 6c 61 74 65 20 7b 73 oc accumulate {s
0260: 74 72 69 6e 67 20 61 72 67 73 7d 20 7b 73 65 74 tring args} {set
0270: 20 63 6d 64 20 5b 7b 2a 7d 24 61 72 67 73 20 2d cmd [{*}$args -
0280: 63 6f 6d 6d 61 6e 64 20 64 63 6d 64 5d 3b 24 63 command dcmd];$c
0290: 6d 64 20 75 70 64 61 74 65 20 5b 73 74 72 69 6e md update [strin
02a0: 67 20 72 61 6e 67 65 20 24 73 74 72 69 6e 67 20 g range $string
02b0: 30 20 32 30 5d 3b 24 63 6d 64 20 75 70 64 61 74 0 20];$cmd updat
02c0: 65 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 e [string range
02d0: 24 73 74 72 69 6e 67 20 32 31 20 65 6e 64 5d 3b $string 21 end];
02e0: 72 65 74 75 72 6e 20 5b 24 63 6d 64 20 66 69 6e return [$cmd fin
02f0: 61 6c 69 7a 65 5d 7d 0a 0a 73 65 74 20 74 65 73 alize]}..set tes
0300: 74 5f 64 61 74 61 20 22 45 78 61 6d 70 6c 65 20 t_data "Example
0310: 73 74 72 69 6e 67 20 66 6f 72 20 6d 65 73 73 61 string for messa
0320: 67 65 20 64 69 67 65 73 74 20 74 65 73 74 73 2e ge digest tests.
0330: 5c 6e 22 0a 73 65 74 20 74 65 73 74 5f 66 69 6c \n".set test_fil
0340: 65 20 22 6d 64 5f 64 61 74 61 2e 64 61 74 22 0a e "md_data.dat".
0350: 73 65 74 20 74 65 73 74 5f 6b 65 79 20 22 45 78 set test_key "Ex
0360: 61 6d 70 6c 65 20 6b 65 79 22 0a 3a 3a 74 63 6c ample key".::tcl
0370: 74 65 73 74 3a 3a 6d 61 6b 65 46 69 6c 65 20 24 test::makeFile $
0380: 74 65 73 74 5f 64 61 74 61 20 24 74 65 73 74 5f test_data $test_
0390: 66 69 6c 65 0a 0a 23 20 54 65 73 74 20 64 69 67 file..# Test dig
03a0: 65 73 74 20 73 68 6f 72 74 2d 63 75 74 20 63 6f est short-cut co
03b0: 6d 6d 61 6e 64 73 0a 0a 0a 74 65 73 74 20 44 69 mmands...test Di
03c0: 67 65 73 74 5f 43 6d 64 73 2d 31 2e 31 20 7b 6d gest_Cmds-1.1 {m
03d0: 64 34 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a d4 cmd} -body {.
03e0: 09 3a 3a 74 6c 73 3a 3a 6d 64 34 20 24 74 65 73 .::tls::md4 $tes
03f0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
0400: 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32 sult {793399f792
0410: 65 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62 eca2752c6af3234b
0420: 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 a70858}..test Di
0430: 67 65 73 74 5f 43 6d 64 73 2d 31 2e 32 20 7b 6d gest_Cmds-1.2 {m
0440: 64 35 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a d5 cmd} -body {.
0450: 09 3a 3a 74 6c 73 3a 3a 6d 64 35 20 24 74 65 73 .::tls::md5 $tes
0460: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
0470: 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 sult {962bf0803b
0480: 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 4232ec23bd8427bb
0490: 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 94ea09}..test Di
04a0: 67 65 73 74 5f 43 6d 64 73 2d 31 2e 33 20 7b 73 gest_Cmds-1.3 {s
04b0: 68 61 31 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b ha1 cmd} -body {
04c0: 0a 09 3a 3a 74 6c 73 3a 3a 73 68 61 31 20 24 74 ..::tls::sha1 $t
04d0: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d est_data. } -
04e0: 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 result {4fe03b7f
04f0: 32 35 36 38 35 35 31 64 66 61 66 62 39 38 63 61 2568551dfafb98ca
0500: 36 30 30 34 65 36 35 63 34 62 37 31 61 61 37 64 6004e65c4b71aa7d
0510: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 }..test Digest_C
0520: 6d 64 73 2d 31 2e 34 20 7b 73 68 61 32 35 36 20 mds-1.4 {sha256
0530: 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a cmd} -body {..::
0540: 74 6c 73 3a 3a 73 68 61 32 35 36 20 24 74 65 73 tls::sha256 $tes
0550: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
0560: 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 sult {9d3578fc13
0570: 38 32 30 35 63 66 30 65 65 34 62 34 63 65 66 33 8205cf0ee4b4cef3
0580: 35 66 65 31 30 31 62 62 34 65 63 61 63 37 62 31 5fe101bb4ecac7b1
0590: 36 31 34 63 31 38 65 36 66 61 34 38 62 35 63 37 614c18e6fa48b5c7
05a0: 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 44 69 f95e19}..test Di
05b0: 67 65 73 74 5f 43 6d 64 73 2d 31 2e 35 20 7b 73 gest_Cmds-1.5 {s
05c0: 68 61 35 31 32 20 63 6d 64 7d 20 2d 62 6f 64 79 ha512 cmd} -body
05d0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 73 68 61 35 31 {..::tls::sha51
05e0: 32 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 2 $test_data.
05f0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 } -result {d178
0600: 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38 e759dc5912707158
0610: 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64 8d2fad173c06238d
0620: 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30 87e800a6403c0a30
0630: 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65 daa4faaf05d0e7ce
0640: 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30 04916afaa6a58a30
0650: 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32 cbeb597dacb01c62
0660: 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33 f9fb9d89bab9da63
0670: 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 23 0c699e4816f1}..#
0680: 20 54 65 73 74 20 64 69 67 65 73 74 20 63 6f 6d Test digest com
0690: 6d 61 6e 64 20 66 6f 72 20 63 68 61 6e 6e 65 6c mand for channel
06a0: 0a 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 ...test Digest_C
06b0: 68 61 6e 2d 32 2e 31 20 7b 6d 64 34 7d 20 2d 62 han-2.1 {md4} -b
06c0: 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68 61 6e ody {..read_chan
06d0: 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 24 ::tls::digest $
06e0: 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 test_file -diges
06f0: 74 20 6d 64 34 0a 20 20 20 20 7d 20 2d 72 65 73 t md4. } -res
0700: 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 ult {793399f792e
0710: 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62 61 ca2752c6af3234ba
0720: 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 70858}..test Dig
0730: 65 73 74 5f 43 68 61 6e 2d 32 2e 32 20 7b 6d 64 est_Chan-2.2 {md
0740: 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 72 65 61 64 5} -body {..read
0750: 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 64 69 67 _chan ::tls::dig
0760: 65 73 74 20 24 74 65 73 74 5f 66 69 6c 65 20 2d est $test_file -
0770: 64 69 67 65 73 74 20 6d 64 35 0a 20 20 20 20 7d digest md5. }
0780: 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 -result {962bf0
0790: 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 803b4232ec23bd84
07a0: 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 27bb94ea09}..tes
07b0: 74 20 44 69 67 65 73 74 5f 43 68 61 6e 2d 32 2e t Digest_Chan-2.
07c0: 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 3 {sha1} -body {
07d0: 0a 09 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c ..read_chan ::tl
07e0: 73 3a 3a 64 69 67 65 73 74 20 24 74 65 73 74 5f s::digest $test_
07f0: 66 69 6c 65 20 2d 64 69 67 65 73 74 20 73 68 61 file -digest sha
0800: 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 1. } -result
0810: 7b 34 66 65 30 33 62 37 66 32 35 36 38 35 35 31 {4fe03b7f2568551
0820: 64 66 61 66 62 39 38 63 61 36 30 30 34 65 36 35 dfafb98ca6004e65
0830: 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 c4b71aa7d}..test
0840: 20 44 69 67 65 73 74 5f 43 68 61 6e 2d 32 2e 34 Digest_Chan-2.4
0850: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 {sha256} -body
0860: 7b 0a 09 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 {..read_chan ::t
0870: 6c 73 3a 3a 64 69 67 65 73 74 20 24 74 65 73 74 ls::digest $test
0880: 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20 73 68 _file -digest sh
0890: 61 32 35 36 0a 20 20 20 20 7d 20 2d 72 65 73 75 a256. } -resu
08a0: 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32 lt {9d3578fc1382
08b0: 30 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66 05cf0ee4b4cef35f
08c0: 65 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31 e101bb4ecac7b161
08d0: 34 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39 4c18e6fa48b5c7f9
08e0: 35 65 31 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 5e19}..test Dige
08f0: 73 74 5f 43 68 61 6e 2d 32 2e 35 20 7b 73 68 61 st_Chan-2.5 {sha
0900: 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 72 65 512} -body {..re
0910: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 64 ad_chan ::tls::d
0920: 69 67 65 73 74 20 24 74 65 73 74 5f 66 69 6c 65 igest $test_file
0930: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 0a -digest sha512.
0940: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 } -result {d
0950: 31 37 38 65 37 35 39 64 63 35 39 31 32 37 30 37 178e759dc5912707
0960: 31 35 38 38 64 32 66 61 64 31 37 33 63 30 36 32 1588d2fad173c062
0970: 33 38 64 38 37 65 38 30 30 61 36 34 30 33 63 30 38d87e800a6403c0
0980: 61 33 30 64 61 61 34 66 61 61 66 30 35 64 30 65 a30daa4faaf05d0e
0990: 37 63 65 30 34 39 31 36 61 66 61 61 36 61 35 38 7ce04916afaa6a58
09a0: 61 33 30 63 62 65 62 35 39 37 64 61 63 62 30 31 a30cbeb597dacb01
09b0: 63 36 32 66 39 66 62 39 64 38 39 62 61 62 39 64 c62f9fb9d89bab9d
09c0: 61 36 33 30 63 36 39 39 65 34 38 31 36 66 31 7d a630c699e4816f1}
09d0: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 68 ..test Digest_Ch
09e0: 61 6e 2d 32 2e 36 20 7b 6d 64 35 20 62 69 6e 7d an-2.6 {md5 bin}
09f0: 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 -body {..binary
0a00: 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 72 65 61 encode hex [rea
0a10: 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 64 69 d_chan ::tls::di
0a20: 67 65 73 74 20 24 74 65 73 74 5f 66 69 6c 65 20 gest $test_file
0a30: 2d 62 69 6e 20 2d 64 69 67 65 73 74 20 6d 64 35 -bin -digest md5
0a40: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 ]. } -result
0a50: 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 {962bf0803b4232e
0a60: 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 c23bd8427bb94ea0
0a70: 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 9}..test Digest_
0a80: 43 68 61 6e 2d 32 2e 37 20 7b 6d 64 35 20 68 65 Chan-2.7 {md5 he
0a90: 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 72 65 61 64 x} -body {..read
0aa0: 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 64 69 67 _chan ::tls::dig
0ab0: 65 73 74 20 24 74 65 73 74 5f 66 69 6c 65 20 2d est $test_file -
0ac0: 68 65 78 20 2d 64 69 67 65 73 74 20 6d 64 35 0a hex -digest md5.
0ad0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 } -result {9
0ae0: 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 62bf0803b4232ec2
0af0: 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 3bd8427bb94ea09}
0b00: 0a 0a 23 20 54 65 73 74 20 64 69 67 65 73 74 20 ..# Test digest
0b10: 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 6f 62 6a 65 command for obje
0b20: 63 74 20 63 6f 6d 6d 61 6e 64 0a 0a 0a 74 65 73 ct command...tes
0b30: 74 20 44 69 67 65 73 74 5f 43 6f 6d 6d 61 6e 64 t Digest_Command
0b40: 2d 33 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 -3.1 {md4} -body
0b50: 20 7b 0a 09 61 63 63 75 6d 75 6c 61 74 65 20 24 {..accumulate $
0b60: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a test_data ::tls:
0b70: 3a 64 69 67 65 73 74 20 2d 64 69 67 65 73 74 20 :digest -digest
0b80: 6d 64 34 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c md4. } -resul
0b90: 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 t {793399f792eca
0ba0: 32 37 35 32 63 36 61 66 33 32 33 34 62 61 37 30 2752c6af3234ba70
0bb0: 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 858}..test Diges
0bc0: 74 5f 43 6f 6d 6d 61 6e 64 2d 33 2e 32 20 7b 6d t_Command-3.2 {m
0bd0: 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 61 63 63 d5} -body {..acc
0be0: 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 umulate $test_da
0bf0: 74 61 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 ta ::tls::digest
0c00: 20 2d 64 69 67 65 73 74 20 6d 64 35 0a 20 20 20 -digest md5.
0c10: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 } -result {962b
0c20: 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64 f0803b4232ec23bd
0c30: 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 8427bb94ea09}..t
0c40: 65 73 74 20 44 69 67 65 73 74 5f 43 6f 6d 6d 61 est Digest_Comma
0c50: 6e 64 2d 33 2e 33 20 7b 73 68 61 31 7d 20 2d 62 nd-3.3 {sha1} -b
0c60: 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c 61 74 ody {..accumulat
0c70: 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 e $test_data ::t
0c80: 6c 73 3a 3a 64 69 67 65 73 74 20 2d 64 69 67 65 ls::digest -dige
0c90: 73 74 20 73 68 61 31 0a 20 20 20 20 7d 20 2d 72 st sha1. } -r
0ca0: 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 esult {4fe03b7f2
0cb0: 35 36 38 35 35 31 64 66 61 66 62 39 38 63 61 36 568551dfafb98ca6
0cc0: 30 30 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 004e65c4b71aa7d}
0cd0: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 6f ..test Digest_Co
0ce0: 6d 6d 61 6e 64 2d 33 2e 34 20 7b 73 68 61 32 35 mmand-3.4 {sha25
0cf0: 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 61 63 63 75 6} -body {..accu
0d00: 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 mulate $test_dat
0d10: 61 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 a ::tls::digest
0d20: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 0a 20 -digest sha256.
0d30: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64 } -result {9d
0d40: 33 35 37 38 66 63 31 33 38 32 30 35 63 66 30 65 3578fc138205cf0e
0d50: 65 34 62 34 63 65 66 33 35 66 65 31 30 31 62 62 e4b4cef35fe101bb
0d60: 34 65 63 61 63 37 62 31 36 31 34 63 31 38 65 36 4ecac7b1614c18e6
0d70: 66 61 34 38 62 35 63 37 66 39 35 65 31 39 7d 0a fa48b5c7f95e19}.
0d80: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 6f 6d .test Digest_Com
0d90: 6d 61 6e 64 2d 33 2e 35 20 7b 73 68 61 35 31 32 mand-3.5 {sha512
0da0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 61 63 63 75 6d } -body {..accum
0db0: 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 ulate $test_data
0dc0: 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d ::tls::digest -
0dd0: 64 69 67 65 73 74 20 73 68 61 35 31 32 0a 20 20 digest sha512.
0de0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 } -result {d17
0df0: 38 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35 8e759dc591270715
0e00: 38 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38 88d2fad173c06238
0e10: 64 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33 d87e800a6403c0a3
0e20: 30 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63 0daa4faaf05d0e7c
0e30: 65 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33 e04916afaa6a58a3
0e40: 30 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36 0cbeb597dacb01c6
0e50: 32 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36 2f9fb9d89bab9da6
0e60: 33 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 30c699e4816f1}..
0e70: 74 65 73 74 20 44 69 67 65 73 74 5f 43 6f 6d 6d test Digest_Comm
0e80: 61 6e 64 2d 33 2e 36 20 7b 6d 64 35 20 62 69 6e and-3.6 {md5 bin
0e90: 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 } -body {..binar
0ea0: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 61 63 y encode hex [ac
0eb0: 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 cumulate $test_d
0ec0: 61 74 61 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 ata ::tls::diges
0ed0: 74 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 62 t -digest md5 -b
0ee0: 69 6e 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c in]. } -resul
0ef0: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 t {962bf0803b423
0f00: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65 2ec23bd8427bb94e
0f10: 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 a09}..test Diges
0f20: 74 5f 43 6f 6d 6d 61 6e 64 2d 33 2e 37 20 7b 6d t_Command-3.7 {m
0f30: 64 35 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b 0a d5 hex} -body {.
0f40: 09 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 .accumulate $tes
0f50: 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 64 69 t_data ::tls::di
0f60: 67 65 73 74 20 2d 64 69 67 65 73 74 20 6d 64 35 gest -digest md5
0f70: 20 2d 68 65 78 0a 20 20 20 20 7d 20 2d 72 65 73 -hex. } -res
0f80: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 ult {962bf0803b4
0f90: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 232ec23bd8427bb9
0fa0: 34 65 61 30 39 7d 0a 0a 23 20 54 65 73 74 20 64 4ea09}..# Test d
0fb0: 69 67 65 73 74 20 63 6f 6d 6d 61 6e 64 20 66 6f igest command fo
0fc0: 72 20 64 61 74 61 20 73 68 6f 72 74 63 75 74 0a r data shortcut.
0fd0: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 44 61 ..test Digest_Da
0fe0: 74 61 2d 34 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f ta-4.1 {md4} -bo
0ff0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 dy {..::tls::dig
1000: 65 73 74 20 6d 64 34 20 24 74 65 73 74 5f 64 61 est md4 $test_da
1010: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ta. } -result
1020: 20 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 32 {793399f792eca2
1030: 37 35 32 63 36 61 66 33 32 33 34 62 61 37 30 38 752c6af3234ba708
1040: 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 58}..test Digest
1050: 5f 44 61 74 61 2d 34 2e 32 20 7b 6d 64 35 7d 20 _Data-4.2 {md5}
1060: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
1070: 64 69 67 65 73 74 20 6d 64 35 20 24 74 65 73 74 digest md5 $test
1080: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 _data. } -res
1090: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 ult {962bf0803b4
10a0: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 232ec23bd8427bb9
10b0: 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 4ea09}..test Dig
10c0: 65 73 74 5f 44 61 74 61 2d 34 2e 33 20 7b 73 68 est_Data-4.3 {sh
10d0: 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 a1} -body {..::t
10e0: 6c 73 3a 3a 64 69 67 65 73 74 20 73 68 61 31 20 ls::digest sha1
10f0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d $test_data. }
1100: 20 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62 -result {4fe03b
1110: 37 66 32 35 36 38 35 35 31 64 66 61 66 62 39 38 7f2568551dfafb98
1120: 63 61 36 30 30 34 65 36 35 63 34 62 37 31 61 61 ca6004e65c4b71aa
1130: 37 64 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 7d}..test Digest
1140: 5f 44 61 74 61 2d 34 2e 34 20 7b 73 68 61 32 35 _Data-4.4 {sha25
1150: 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 6} -body {..::tl
1160: 73 3a 3a 64 69 67 65 73 74 20 73 68 61 32 35 36 s::digest sha256
1170: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 $test_data.
1180: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 37 } -result {9d357
1190: 38 66 63 31 33 38 32 30 35 63 66 30 65 65 34 62 8fc138205cf0ee4b
11a0: 34 63 65 66 33 35 66 65 31 30 31 62 62 34 65 63 4cef35fe101bb4ec
11b0: 61 63 37 62 31 36 31 34 63 31 38 65 36 66 61 34 ac7b1614c18e6fa4
11c0: 38 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 8b5c7f95e19}..te
11d0: 73 74 20 44 69 67 65 73 74 5f 44 61 74 61 2d 34 st Digest_Data-4
11e0: 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 .5 {sha512} -bod
11f0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 y {..::tls::dige
1200: 73 74 20 73 68 61 35 31 32 20 24 74 65 73 74 5f st sha512 $test_
1210: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 data. } -resu
1220: 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39 lt {d178e759dc59
1230: 31 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37 127071588d2fad17
1240: 33 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36 3c06238d87e800a6
1250: 34 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66 403c0a30daa4faaf
1260: 30 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61 05d0e7ce04916afa
1270: 61 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64 a6a58a30cbeb597d
1280: 61 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39 acb01c62f9fb9d89
1290: 62 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38 bab9da630c699e48
12a0: 31 36 66 31 7d 0a 0a 23 20 54 65 73 74 20 64 69 16f1}..# Test di
12b0: 67 65 73 74 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 gest command for
12c0: 20 64 61 74 61 0a 0a 74 65 73 74 20 44 69 67 65 data..test Dige
12d0: 73 74 5f 44 61 74 61 2d 34 2e 36 20 7b 6d 64 34 st_Data-4.6 {md4
12e0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
12f0: 3a 3a 64 69 67 65 73 74 20 2d 64 69 67 65 73 74 ::digest -digest
1300: 20 6d 64 34 20 2d 64 61 74 61 20 24 74 65 73 74 md4 -data $test
1310: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 _data. } -res
1320: 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 ult {793399f792e
1330: 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62 61 ca2752c6af3234ba
1340: 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 70858}..test Dig
1350: 65 73 74 5f 44 61 74 61 2d 34 2e 37 20 7b 6d 64 est_Data-4.7 {md
1360: 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 5} -body {..::tl
1370: 73 3a 3a 64 69 67 65 73 74 20 2d 64 69 67 65 73 s::digest -diges
1380: 74 20 6d 64 35 20 2d 64 61 74 61 20 24 74 65 73 t md5 -data $tes
1390: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
13a0: 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 sult {962bf0803b
13b0: 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 4232ec23bd8427bb
13c0: 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 94ea09}..test Di
13d0: 67 65 73 74 5f 44 61 74 61 2d 34 2e 38 20 7b 73 gest_Data-4.8 {s
13e0: 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a ha1} -body {..::
13f0: 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 64 69 67 tls::digest -dig
1400: 65 73 74 20 73 68 61 31 20 2d 64 61 74 61 20 24 est sha1 -data $
1410: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 test_data. }
1420: 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37 -result {4fe03b7
1430: 66 32 35 36 38 35 35 31 64 66 61 66 62 39 38 63 f2568551dfafb98c
1440: 61 36 30 30 34 65 36 35 63 34 62 37 31 61 61 37 a6004e65c4b71aa7
1450: 64 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f d}..test Digest_
1460: 44 61 74 61 2d 34 2e 39 20 7b 73 68 61 32 35 36 Data-4.9 {sha256
1470: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
1480: 3a 3a 64 69 67 65 73 74 20 2d 64 69 67 65 73 74 ::digest -digest
1490: 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 24 74 sha256 -data $t
14a0: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d est_data. } -
14b0: 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 result {9d3578fc
14c0: 31 33 38 32 30 35 63 66 30 65 65 34 62 34 63 65 138205cf0ee4b4ce
14d0: 66 33 35 66 65 31 30 31 62 62 34 65 63 61 63 37 f35fe101bb4ecac7
14e0: 62 31 36 31 34 63 31 38 65 36 66 61 34 38 62 35 b1614c18e6fa48b5
14f0: 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 c7f95e19}..test
1500: 44 69 67 65 73 74 5f 44 61 74 61 2d 34 2e 31 30 Digest_Data-4.10
1510: 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 {sha512} -body
1520: 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 {..::tls::digest
1530: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20 -digest sha512
1540: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 -data $test_data
1550: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
1560: 64 31 37 38 65 37 35 39 64 63 35 39 31 32 37 30 d178e759dc591270
1570: 37 31 35 38 38 64 32 66 61 64 31 37 33 63 30 36 71588d2fad173c06
1580: 32 33 38 64 38 37 65 38 30 30 61 36 34 30 33 63 238d87e800a6403c
1590: 30 61 33 30 64 61 61 34 66 61 61 66 30 35 64 30 0a30daa4faaf05d0
15a0: 65 37 63 65 30 34 39 31 36 61 66 61 61 36 61 35 e7ce04916afaa6a5
15b0: 38 61 33 30 63 62 65 62 35 39 37 64 61 63 62 30 8a30cbeb597dacb0
15c0: 31 63 36 32 66 39 66 62 39 64 38 39 62 61 62 39 1c62f9fb9d89bab9
15d0: 64 61 36 33 30 63 36 39 39 65 34 38 31 36 66 31 da630c699e4816f1
15e0: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 44 }..test Digest_D
15f0: 61 74 61 2d 34 2e 31 31 20 7b 6d 64 35 20 62 69 ata-4.11 {md5 bi
1600: 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 n} -body {..bina
1610: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a ry encode hex [:
1620: 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 64 69 :tls::digest -di
1630: 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20 24 gest md5 -data $
1640: 74 65 73 74 5f 64 61 74 61 20 2d 62 69 6e 5d 0a test_data -bin].
1650: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 } -result {9
1660: 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 62bf0803b4232ec2
1670: 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 3bd8427bb94ea09}
1680: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 44 61 ..test Digest_Da
1690: 74 61 2d 34 2e 31 32 20 7b 6d 64 35 20 68 65 78 ta-4.12 {md5 hex
16a0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
16b0: 3a 3a 64 69 67 65 73 74 20 2d 64 69 67 65 73 74 ::digest -digest
16c0: 20 6d 64 35 20 2d 64 61 74 61 20 24 74 65 73 74 md5 -data $test
16d0: 5f 64 61 74 61 20 2d 68 65 78 0a 20 20 20 20 7d _data -hex. }
16e0: 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 -result {962bf0
16f0: 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 803b4232ec23bd84
1700: 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 23 20 54 27bb94ea09}..# T
1710: 65 73 74 20 64 69 67 65 73 74 20 63 6f 6d 6d 61 est digest comma
1720: 6e 64 20 66 6f 72 20 66 69 6c 65 0a 0a 0a 74 65 nd for file...te
1730: 73 74 20 44 69 67 65 73 74 5f 46 69 6c 65 2d 35 st Digest_File-5
1740: 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b .1 {md4} -body {
1750: 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 ..::tls::digest
1760: 2d 64 69 67 65 73 74 20 6d 64 34 20 2d 66 69 6c -digest md4 -fil
1770: 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 e $test_file.
1780: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39 33 33 } -result {7933
1790: 39 39 66 37 39 32 65 63 61 32 37 35 32 63 36 61 99f792eca2752c6a
17a0: 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a 0a 74 f3234ba70858}..t
17b0: 65 73 74 20 44 69 67 65 73 74 5f 46 69 6c 65 2d est Digest_File-
17c0: 35 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 5.2 {md5} -body
17d0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 {..::tls::digest
17e0: 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 66 69 -digest md5 -fi
17f0: 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 le $test_file.
1800: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 } -result {962
1810: 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62 bf0803b4232ec23b
1820: 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a d8427bb94ea09}..
1830: 74 65 73 74 20 44 69 67 65 73 74 5f 46 69 6c 65 test Digest_File
1840: 2d 35 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 -5.3 {sha1} -bod
1850: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 y {..::tls::dige
1860: 73 74 20 2d 64 69 67 65 73 74 20 73 68 61 31 20 st -digest sha1
1870: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 -file $test_file
1880: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
1890: 34 66 65 30 33 62 37 66 32 35 36 38 35 35 31 64 4fe03b7f2568551d
18a0: 66 61 66 62 39 38 63 61 36 30 30 34 65 36 35 63 fafb98ca6004e65c
18b0: 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20 4b71aa7d}..test
18c0: 44 69 67 65 73 74 5f 46 69 6c 65 2d 35 2e 34 20 Digest_File-5.4
18d0: 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b {sha256} -body {
18e0: 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 ..::tls::digest
18f0: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d -digest sha256 -
1900: 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a file $test_file.
1910: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 } -result {9
1920: 64 33 35 37 38 66 63 31 33 38 32 30 35 63 66 30 d3578fc138205cf0
1930: 65 65 34 62 34 63 65 66 33 35 66 65 31 30 31 62 ee4b4cef35fe101b
1940: 62 34 65 63 61 63 37 62 31 36 31 34 63 31 38 65 b4ecac7b1614c18e
1950: 36 66 61 34 38 62 35 63 37 66 39 35 65 31 39 7d 6fa48b5c7f95e19}
1960: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 46 69 ..test Digest_Fi
1970: 6c 65 2d 35 2e 35 20 7b 73 68 61 35 31 32 7d 20 le-5.5 {sha512}
1980: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
1990: 64 69 67 65 73 74 20 2d 64 69 67 65 73 74 20 73 digest -digest s
19a0: 68 61 35 31 32 20 2d 66 69 6c 65 20 24 74 65 73 ha512 -file $tes
19b0: 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 t_file. } -re
19c0: 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63 sult {d178e759dc
19d0: 35 39 31 32 37 30 37 31 35 38 38 64 32 66 61 64 59127071588d2fad
19e0: 31 37 33 63 30 36 32 33 38 64 38 37 65 38 30 30 173c06238d87e800
19f0: 61 36 34 30 33 63 30 61 33 30 64 61 61 34 66 61 a6403c0a30daa4fa
1a00: 61 66 30 35 64 30 65 37 63 65 30 34 39 31 36 61 af05d0e7ce04916a
1a10: 66 61 61 36 61 35 38 61 33 30 63 62 65 62 35 39 faa6a58a30cbeb59
1a20: 37 64 61 63 62 30 31 63 36 32 66 39 66 62 39 64 7dacb01c62f9fb9d
1a30: 38 39 62 61 62 39 64 61 36 33 30 63 36 39 39 65 89bab9da630c699e
1a40: 34 38 31 36 66 31 7d 0a 0a 74 65 73 74 20 44 69 4816f1}..test Di
1a50: 67 65 73 74 5f 46 69 6c 65 2d 35 2e 36 20 7b 6d gest_File-5.6 {m
1a60: 64 35 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a d5 bin} -body {.
1a70: 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 .binary encode h
1a80: 65 78 20 5b 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 ex [::tls::diges
1a90: 74 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 66 t -digest md5 -f
1aa0: 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 20 2d ile $test_file -
1ab0: 62 69 6e 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 bin]. } -resu
1ac0: 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 lt {962bf0803b42
1ad0: 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 32ec23bd8427bb94
1ae0: 65 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 ea09}..test Dige
1af0: 73 74 5f 46 69 6c 65 2d 35 2e 37 20 7b 6d 64 35 st_File-5.7 {md5
1b00: 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a hex} -body {..:
1b10: 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 64 69 :tls::digest -di
1b20: 67 65 73 74 20 6d 64 35 20 2d 66 69 6c 65 20 24 gest md5 -file $
1b30: 74 65 73 74 5f 66 69 6c 65 20 2d 68 65 78 0a 20 test_file -hex.
1b40: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 } -result {96
1b50: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33 2bf0803b4232ec23
1b60: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a bd8427bb94ea09}.
1b70: 0a 23 20 54 65 73 74 20 48 4d 41 43 20 63 6f 6d .# Test HMAC com
1b80: 6d 61 6e 64 0a 0a 0a 74 65 73 74 20 48 4d 41 43 mand...test HMAC
1b90: 2d 36 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 -6.1 {data} -bod
1ba0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 y {..::tls::hmac
1bb0: 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 6b 65 -digest md5 -ke
1bc0: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 y $test_key -dat
1bd0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 a $test_data.
1be0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 } -result {f983
1bf0: 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 27ef3e20ab6d388f
1c00: 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 676c6a79d93d}..t
1c10: 65 73 74 20 48 4d 41 43 2d 36 2e 32 20 7b 66 69 est HMAC-6.2 {fi
1c20: 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 le} -body {..::t
1c30: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 ls::hmac -digest
1c40: 20 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74 5f md5 -key $test_
1c50: 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74 5f key -file $test_
1c60: 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 file. } -resu
1c70: 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 lt {f98327ef3e20
1c80: 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 ab6d388f676c6a79
1c90: 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41 43 d93d}..test HMAC
1ca0: 2d 36 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d -6.3 {channel} -
1cb0: 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68 61 body {..read_cha
1cc0: 6e 20 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 24 74 n ::tls::hmac $t
1cd0: 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 est_file -digest
1ce0: 20 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74 5f md5 -key $test_
1cf0: 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c key. } -resul
1d00: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 t {f98327ef3e20a
1d10: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64 b6d388f676c6a79d
1d20: 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41 43 2d 93d}..test HMAC-
1d30: 36 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6.4 {command} -b
1d40: 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c 61 74 ody {..accumulat
1d50: 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 e $test_data ::t
1d60: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 ls::hmac -digest
1d70: 20 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74 5f md5 -key $test_
1d80: 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c key. } -resul
1d90: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 t {f98327ef3e20a
1da0: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64 b6d388f676c6a79d
1db0: 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41 43 2d 93d}..test HMAC-
1dc0: 36 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d 6.5 {data bin} -
1dd0: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 body {..binary e
1de0: 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 ncode hex [::tls
1df0: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 6d ::hmac -digest m
1e00: 64 35 20 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65 d5 -bin -key $te
1e10: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 st_key -data $te
1e20: 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d st_data]. } -
1e30: 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 result {f98327ef
1e40: 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 3e20ab6d388f676c
1e50: 36 61 37 39 64 39 33 64 7d 0a 0a 23 20 54 65 73 6a79d93d}..# Tes
1e60: 74 20 44 69 67 65 73 74 20 48 4d 41 43 0a 0a 0a t Digest HMAC...
1e70: 74 65 73 74 20 44 69 67 65 73 74 5f 48 4d 41 43 test Digest_HMAC
1e80: 2d 37 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 -7.1 {data} -bod
1e90: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 y {..::tls::dige
1ea0: 73 74 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d st -digest md5 -
1eb0: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 key $test_key -d
1ec0: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 ata $test_data.
1ed0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 } -result {f9
1ee0: 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38 8327ef3e20ab6d38
1ef0: 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 8f676c6a79d93d}.
1f00: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 48 4d 41 .test Digest_HMA
1f10: 43 2d 37 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f C-7.2 {file} -bo
1f20: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 dy {..::tls::dig
1f30: 65 73 74 20 2d 64 69 67 65 73 74 20 6d 64 35 20 est -digest md5
1f40: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d -key $test_key -
1f50: 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a file $test_file.
1f60: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 } -result {f
1f70: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33 98327ef3e20ab6d3
1f80: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 88f676c6a79d93d}
1f90: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 48 4d ..test Digest_HM
1fa0: 41 43 2d 37 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d AC-7.3 {channel}
1fb0: 20 2d 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 -body {..read_c
1fc0: 68 61 6e 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 han ::tls::diges
1fd0: 74 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 t $test_file -di
1fe0: 67 65 73 74 20 6d 64 35 20 2d 6b 65 79 20 24 74 gest md5 -key $t
1ff0: 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 est_key. } -r
2000: 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 esult {f98327ef3
2010: 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 e20ab6d388f676c6
2020: 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 44 a79d93d}..test D
2030: 69 67 65 73 74 5f 48 4d 41 43 2d 37 2e 34 20 7b igest_HMAC-7.4 {
2040: 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b command} -body {
2050: 0a 09 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 ..accumulate $te
2060: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 64 st_data ::tls::d
2070: 69 67 65 73 74 20 2d 64 69 67 65 73 74 20 6d 64 igest -digest md
2080: 35 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 5 -key $test_key
2090: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
20a0: 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 f98327ef3e20ab6d
20b0: 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 388f676c6a79d93d
20c0: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 48 }..test Digest_H
20d0: 4d 41 43 2d 37 2e 35 20 7b 64 61 74 61 20 62 69 MAC-7.5 {data bi
20e0: 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 n} -body {..bina
20f0: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a ry encode hex [:
2100: 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 64 69 :tls::digest -di
2110: 67 65 73 74 20 6d 64 35 20 2d 62 69 6e 20 2d 6b gest md5 -bin -k
2120: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 ey $test_key -da
2130: 74 61 20 24 74 65 73 74 5f 64 61 74 61 5d 0a 20 ta $test_data].
2140: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 } -result {f9
2150: 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38 8327ef3e20ab6d38
2160: 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 8f676c6a79d93d}.
2170: 0a 23 20 54 65 73 74 20 43 4d 41 43 20 63 6f 6d .# Test CMAC com
2180: 6d 61 6e 64 0a 73 65 74 20 74 65 73 74 5f 63 69 mand.set test_ci
2190: 70 68 65 72 20 22 61 65 73 2d 31 32 38 2d 63 62 pher "aes-128-cb
21a0: 63 22 0a 73 65 74 20 74 65 73 74 5f 6b 65 79 20 c".set test_key
21b0: 22 45 78 61 6d 70 6c 65 20 6b 65 79 20 31 32 33 "Example key 123
21c0: 34 22 0a 0a 0a 74 65 73 74 20 43 4d 41 43 2d 38 4"...test CMAC-8
21d0: 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 .1 {data} -body
21e0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d {..::tls::cmac -
21f0: 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 cipher $test_cip
2200: 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b her -key $test_k
2210: 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 ey -data $test_d
2220: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ata. } -resul
2230: 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 t {baf5c20f9973e
2240: 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35 2d606b14c7efdfe5
2250: 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41 43 2d 2fa}..test CMAC-
2260: 38 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f 64 79 8.2 {file} -body
2270: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 {..::tls::cmac
2280: 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 -cipher $test_ci
2290: 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f pher -key $test_
22a0: 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74 5f key -file $test_
22b0: 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 file. } -resu
22c0: 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 lt {baf5c20f9973
22d0: 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65 e2d606b14c7efdfe
22e0: 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41 43 52fa}..test CMAC
22f0: 2d 38 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d -8.3 {channel} -
2300: 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68 61 body {..read_cha
2310: 6e 20 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 24 74 n ::tls::cmac $t
2320: 65 73 74 5f 66 69 6c 65 20 2d 63 69 70 68 65 72 est_file -cipher
2330: 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b $test_cipher -k
2340: 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 ey $test_key.
2350: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 } -result {baf5
2360: 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 c20f9973e2d606b1
2370: 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 4c7efdfe52fa}..t
2380: 65 73 74 20 43 4d 41 43 2d 38 2e 34 20 7b 63 6f est CMAC-8.4 {co
2390: 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 mmand} -body {..
23a0: 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 accumulate $test
23b0: 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 63 6d 61 _data ::tls::cma
23c0: 63 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f c -cipher $test_
23d0: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 cipher -key $tes
23e0: 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 t_key. } -res
23f0: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 ult {baf5c20f997
2400: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 3e2d606b14c7efdf
2410: 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41 e52fa}..test CMA
2420: 43 2d 38 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d C-8.5 {data bin}
2430: 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 -body {..binary
2440: 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 encode hex [::t
2450: 6c 73 3a 3a 63 6d 61 63 20 2d 62 69 6e 20 2d 63 ls::cmac -bin -c
2460: 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 ipher $test_ciph
2470: 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 er -key $test_ke
2480: 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 y -data $test_da
2490: 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ta]. } -resul
24a0: 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 t {baf5c20f9973e
24b0: 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35 2d606b14c7efdfe5
24c0: 32 66 61 7d 0a 0a 23 20 54 65 73 74 20 44 69 67 2fa}..# Test Dig
24d0: 65 73 74 20 43 4d 41 43 0a 0a 0a 74 65 73 74 20 est CMAC...test
24e0: 44 69 67 65 73 74 5f 43 4d 41 43 2d 39 2e 31 20 Digest_CMAC-9.1
24f0: 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 {data} -body {..
2500: 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 63 ::tls::digest -c
2510: 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 ipher $test_ciph
2520: 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 er -key $test_ke
2530: 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 y -data $test_da
2540: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ta. } -result
2550: 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 32 {baf5c20f9973e2
2560: 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35 32 d606b14c7efdfe52
2570: 66 61 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 fa}..test Digest
2580: 5f 43 4d 41 43 2d 39 2e 32 20 7b 66 69 6c 65 7d _CMAC-9.2 {file}
2590: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
25a0: 3a 64 69 67 65 73 74 20 2d 63 69 70 68 65 72 20 :digest -cipher
25b0: 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 $test_cipher -ke
25c0: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c y $test_key -fil
25d0: 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 e $test_file.
25e0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 } -result {baf5
25f0: 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 c20f9973e2d606b1
2600: 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 4c7efdfe52fa}..t
2610: 65 73 74 20 44 69 67 65 73 74 5f 43 4d 41 43 2d est Digest_CMAC-
2620: 39 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 9.3 {channel} -b
2630: 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68 61 6e ody {..read_chan
2640: 20 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 24 ::tls::digest $
2650: 74 65 73 74 5f 66 69 6c 65 20 2d 63 69 70 68 65 test_file -ciphe
2660: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d r $test_cipher -
2670: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 key $test_key.
2680: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 } -result {baf
2690: 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 5c20f9973e2d606b
26a0: 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 14c7efdfe52fa}..
26b0: 74 65 73 74 20 44 69 67 65 73 74 5f 43 4d 41 43 test Digest_CMAC
26c0: 2d 39 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d -9.4 {command} -
26d0: 62 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c 61 body {..accumula
26e0: 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a te $test_data ::
26f0: 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 63 69 70 tls::digest -cip
2700: 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 her $test_cipher
2710: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a -key $test_key.
2720: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 } -result {b
2730: 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30 af5c20f9973e2d60
2740: 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 6b14c7efdfe52fa}
2750: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 4d ..test Digest_CM
2760: 41 43 2d 39 2e 35 20 7b 64 61 74 61 20 62 69 6e AC-9.5 {data bin
2770: 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 } -body {..binar
2780: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a y encode hex [::
2790: 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 62 69 6e tls::digest -bin
27a0: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 -cipher $test_c
27b0: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 ipher -key $test
27c0: 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 _key -data $test
27d0: 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 _data]. } -re
27e0: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 sult {baf5c20f99
27f0: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 73e2d606b14c7efd
2800: 66 65 35 32 66 61 7d 0a 0a 23 20 54 65 73 74 20 fe52fa}..# Test
2810: 4d 41 43 20 63 6f 6d 6d 61 6e 64 0a 0a 0a 74 65 MAC command...te
2820: 73 74 20 4d 41 43 2d 31 30 2e 31 20 7b 48 4d 41 st MAC-10.1 {HMA
2830: 43 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 C} -constraints
2840: 7b 6e 65 77 5f 61 70 69 7d 20 2d 62 6f 64 79 20 {new_api} -body
2850: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 64 {..::tls::mac -d
2860: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6d 61 igest sha256 -ma
2870: 63 20 68 6d 61 63 20 2d 6b 65 79 20 24 74 65 73 c hmac -key $tes
2880: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 t_key -data $tes
2890: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
28a0: 73 75 6c 74 20 7b 34 39 38 65 66 35 65 66 37 31 sult {498ef5ef71
28b0: 34 32 34 66 38 31 64 61 37 34 39 39 62 32 65 65 424f81da7499b2ee
28c0: 61 65 31 64 30 61 33 34 38 64 64 34 30 62 38 34 ae1d0a348dd40b84
28d0: 31 65 61 32 37 62 64 64 65 34 39 34 66 36 62 63 1ea27bdde494f6bc
28e0: 39 30 34 36 66 66 7d 0a 0a 74 65 73 74 20 4d 41 9046ff}..test MA
28f0: 43 2d 31 30 2e 32 20 7b 43 4d 41 43 7d 20 2d 63 C-10.2 {CMAC} -c
2900: 6f 6e 73 74 72 61 69 6e 74 73 20 7b 6e 65 77 5f onstraints {new_
2910: 61 70 69 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a api} -body {..::
2920: 74 6c 73 3a 3a 6d 61 63 20 2d 63 69 70 68 65 72 tls::mac -cipher
2930: 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 64 $test_cipher -d
2940: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6d 61 igest sha256 -ma
2950: 63 20 63 6d 61 63 20 2d 6b 65 79 20 24 74 65 73 c cmac -key $tes
2960: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 t_key -data $tes
2970: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
2980: 73 75 6c 74 20 7b 34 39 38 65 66 35 65 66 37 31 sult {498ef5ef71
2990: 34 32 34 66 38 31 64 61 37 34 39 39 62 32 65 65 424f81da7499b2ee
29a0: 61 65 31 64 30 61 33 34 38 64 64 34 30 62 38 34 ae1d0a348dd40b84
29b0: 31 65 61 32 37 62 64 64 65 34 39 34 66 36 62 63 1ea27bdde494f6bc
29c0: 39 30 34 36 66 66 7d 0a 0a 23 20 44 69 67 65 73 9046ff}..# Diges
29d0: 74 20 45 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a t Error Cases...
29e0: 74 65 73 74 20 44 69 67 65 73 74 5f 45 72 72 6f test Digest_Erro
29f0: 72 73 2d 31 31 2e 31 20 7b 54 6f 6f 20 66 65 77 rs-11.1 {Too few
2a00: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 args} -body {..
2a10: 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 0a 20 20 ::tls::digest.
2a20: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f } -result {wro
2a30: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c ng # args: shoul
2a40: 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 64 69 67 d be "::tls::dig
2a50: 65 73 74 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 est ?-bin|-hex?
2a60: 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f ?-cipher name? ?
2a70: 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d -digest name? ?-
2a80: 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e key key? ?-mac n
2a90: 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 ame? [-channel c
2aa0: 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 han | -command c
2ab0: 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66 mdName | -file f
2ac0: 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61 ilename | ?-data
2ad0: 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74 75 72 ? data]"} -retur
2ae0: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 nCodes {1}..test
2af0: 20 44 69 67 65 73 74 5f 45 72 72 6f 72 73 2d 31 Digest_Errors-1
2b00: 31 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 1.2 {Too many ar
2b10: 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 gs} -body {..::t
2b20: 6c 73 3a 3a 64 69 67 65 73 74 20 74 6f 6f 20 6d ls::digest too m
2b30: 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 any command line
2b40: 20 61 72 67 73 20 74 6f 20 70 61 73 73 20 74 68 args to pass th
2b50: 65 20 74 65 73 74 20 77 69 74 68 6f 75 74 20 61 e test without a
2b60: 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 69 6c 69 n error or faili
2b70: 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ng. } -result
2b80: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 {wrong # args:
2b90: 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 should be "::tls
2ba0: 3a 3a 64 69 67 65 73 74 20 3f 2d 62 69 6e 7c 2d ::digest ?-bin|-
2bb0: 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 hex? ?-cipher na
2bc0: 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d me? ?-digest nam
2bd0: 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d e? ?-key key? ?-
2be0: 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e mac name? [-chan
2bf0: 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d nel chan | -comm
2c00: 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 and cmdName | -f
2c10: 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f ile filename | ?
2c20: 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d -data? data]"} -
2c30: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a returnCodes {1}.
2c40: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 45 72 72 .test Digest_Err
2c50: 6f 72 73 2d 31 31 2e 33 20 7b 49 6e 76 61 6c 69 ors-11.3 {Invali
2c60: 64 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 20 d digest} -body
2c70: 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 {..::tls::digest
2c80: 20 62 6f 67 75 73 20 64 61 74 61 0a 20 20 20 20 bogus data.
2c90: 7d 20 2d 72 65 73 75 6c 74 20 7b 49 6e 76 61 6c } -result {Inval
2ca0: 69 64 20 64 69 67 65 73 74 20 22 62 6f 67 75 73 id digest "bogus
2cb0: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 "} -returnCodes
2cc0: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 {1}..test Digest
2cd0: 5f 45 72 72 6f 72 73 2d 31 31 2e 34 20 7b 49 6e _Errors-11.4 {In
2ce0: 76 61 6c 69 64 20 64 69 67 65 73 74 20 41 72 67 valid digest Arg
2cf0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
2d00: 3a 3a 64 69 67 65 73 74 20 2d 64 69 67 65 73 74 ::digest -digest
2d10: 20 62 6f 67 75 73 20 2d 64 61 74 61 20 64 61 74 bogus -data dat
2d20: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 a. } -result
2d30: 7b 49 6e 76 61 6c 69 64 20 64 69 67 65 73 74 20 {Invalid digest
2d40: 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75 72 6e "bogus"} -return
2d50: 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 Codes {1}..test
2d60: 44 69 67 65 73 74 5f 45 72 72 6f 72 73 2d 31 31 Digest_Errors-11
2d70: 2e 35 20 7b 4e 6f 20 64 69 67 65 73 74 7d 20 2d .5 {No digest} -
2d80: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 64 body {..::tls::d
2d90: 69 67 65 73 74 20 2d 68 65 78 20 2d 64 61 74 61 igest -hex -data
2da0: 20 76 61 6c 75 65 0a 20 20 20 20 7d 20 2d 72 65 value. } -re
2db0: 73 75 6c 74 20 7b 4e 6f 20 64 69 67 65 73 74 20 sult {No digest
2dc0: 73 70 65 63 69 66 69 65 64 7d 20 2d 72 65 74 75 specified} -retu
2dd0: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 rnCodes {1}..tes
2de0: 74 20 44 69 67 65 73 74 5f 45 72 72 6f 72 73 2d t Digest_Errors-
2df0: 31 31 2e 36 20 7b 49 6e 76 61 6c 69 64 20 6f 70 11.6 {Invalid op
2e00: 74 69 6f 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a tion} -body {..:
2e10: 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 64 69 :tls::digest -di
2e20: 67 65 73 74 20 73 68 61 32 35 36 20 2d 62 6f 67 gest sha256 -bog
2e30: 75 73 20 76 61 6c 75 65 0a 20 20 20 20 7d 20 2d us value. } -
2e40: 72 65 73 75 6c 74 20 7b 62 61 64 20 6f 70 74 69 result {bad opti
2e50: 6f 6e 20 22 2d 62 6f 67 75 73 22 3a 20 6d 75 73 on "-bogus": mus
2e60: 74 20 62 65 20 2d 62 69 6e 2c 20 2d 63 68 61 6e t be -bin, -chan
2e70: 6e 65 6c 2c 20 2d 63 69 70 68 65 72 2c 20 2d 63 nel, -cipher, -c
2e80: 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74 61 2c 20 2d ommand, -data, -
2e90: 64 69 67 65 73 74 2c 20 2d 66 69 6c 65 2c 20 2d digest, -file, -
2ea0: 66 69 6c 65 6e 61 6d 65 2c 20 2d 68 65 78 2c 20 filename, -hex,
2eb0: 2d 6b 65 79 2c 20 6f 72 20 2d 6d 61 63 7d 20 2d -key, or -mac} -
2ec0: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a returnCodes {1}.
2ed0: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 45 72 72 .test Digest_Err
2ee0: 6f 72 73 2d 31 31 2e 37 20 7b 49 6e 76 61 6c 69 ors-11.7 {Invali
2ef0: 64 20 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a d file} -body {.
2f00: 09 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d .::tls::digest -
2f10: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 66 digest sha256 -f
2f20: 69 6c 65 20 62 6f 67 75 73 0a 20 20 20 20 7d 20 ile bogus. }
2f30: 2d 72 65 73 75 6c 74 20 7b 63 6f 75 6c 64 6e 27 -result {couldn'
2f40: 74 20 6f 70 65 6e 20 22 62 6f 67 75 73 22 3a 20 t open "bogus":
2f50: 6e 6f 20 73 75 63 68 20 66 69 6c 65 20 6f 72 20 no such file or
2f60: 64 69 72 65 63 74 6f 72 79 7d 20 2d 72 65 74 75 directory} -retu
2f70: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 rnCodes {1}..tes
2f80: 74 20 44 69 67 65 73 74 5f 45 72 72 6f 72 73 2d t Digest_Errors-
2f90: 31 31 2e 38 20 7b 49 6e 76 61 6c 69 64 20 63 68 11.8 {Invalid ch
2fa0: 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 annel} -body {..
2fb0: 3a 3a 74 6c 73 3a 3a 64 69 67 65 73 74 20 2d 64 ::tls::digest -d
2fc0: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 63 68 igest sha256 -ch
2fd0: 61 6e 6e 65 6c 20 62 6f 67 75 73 0a 20 20 20 20 annel bogus.
2fe0: 7d 20 2d 72 65 73 75 6c 74 20 7b 63 61 6e 20 6e } -result {can n
2ff0: 6f 74 20 66 69 6e 64 20 63 68 61 6e 6e 65 6c 20 ot find channel
3000: 6e 61 6d 65 64 20 22 62 6f 67 75 73 22 7d 20 2d named "bogus"} -
3010: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a returnCodes {1}.
3020: 0a 23 20 43 4d 41 43 20 45 72 72 6f 72 20 43 61 .# CMAC Error Ca
3030: 73 65 73 0a 0a 0a 74 65 73 74 20 43 4d 41 43 5f ses...test CMAC_
3040: 45 72 72 6f 72 73 2d 31 32 2e 31 20 7b 54 6f 6f Errors-12.1 {Too
3050: 20 66 65 77 20 61 72 67 73 7d 20 2d 62 6f 64 79 few args} -body
3060: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 0a {..::tls::cmac.
3070: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 } -result {w
3080: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f rong # args: sho
3090: 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 63 uld be "::tls::c
30a0: 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 mac ?-bin|-hex?
30b0: 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f ?-cipher name? ?
30c0: 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d -digest name? ?-
30d0: 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e key key? ?-mac n
30e0: 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 ame? [-channel c
30f0: 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 han | -command c
3100: 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66 mdName | -file f
3110: 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61 ilename | ?-data
3120: 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74 75 72 ? data]"} -retur
3130: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 nCodes {1}..test
3140: 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32 2e CMAC_Errors-12.
3150: 32 20 7b 4e 6f 20 63 69 70 68 65 72 7d 20 2d 62 2 {No cipher} -b
3160: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d ody {..::tls::cm
3170: 61 63 20 2d 68 65 78 20 2d 64 61 74 61 20 76 61 ac -hex -data va
3180: 6c 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c lue. } -resul
3190: 74 20 7b 4e 6f 20 63 69 70 68 65 72 20 73 70 65 t {No cipher spe
31a0: 63 69 66 69 65 64 7d 20 2d 72 65 74 75 72 6e 43 cified} -returnC
31b0: 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 43 odes {1}..test C
31c0: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32 2e 33 20 MAC_Errors-12.3
31d0: 7b 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20 7b {No key} -body {
31e0: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 ..::tls::cmac -c
31f0: 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 ipher $test_ciph
3200: 65 72 20 2d 64 61 74 61 20 76 61 6c 75 65 0a 20 er -data value.
3210: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f } -result {No
3220: 20 6b 65 79 20 73 70 65 63 69 66 69 65 64 7d 20 key specified}
3230: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d -returnCodes {1}
3240: 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f ..test CMAC_Erro
3250: 72 73 2d 31 32 2e 34 20 7b 49 6e 76 61 6c 69 64 rs-12.4 {Invalid
3260: 20 63 69 70 68 65 72 7d 20 2d 62 6f 64 79 20 7b cipher} -body {
3270: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 ..::tls::cmac -c
3280: 69 70 68 65 72 20 62 6f 67 75 73 20 2d 64 61 74 ipher bogus -dat
3290: 61 20 76 61 6c 75 65 0a 20 20 20 20 7d 20 2d 72 a value. } -r
32a0: 65 73 75 6c 74 20 7b 49 6e 76 61 6c 69 64 20 63 esult {Invalid c
32b0: 69 70 68 65 72 20 22 62 6f 67 75 73 22 7d 20 2d ipher "bogus"} -
32c0: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a returnCodes {1}.
32d0: 0a 23 20 48 4d 41 43 20 45 72 72 6f 72 20 43 61 .# HMAC Error Ca
32e0: 73 65 73 0a 0a 0a 74 65 73 74 20 48 4d 41 43 5f ses...test HMAC_
32f0: 45 72 72 6f 72 73 2d 31 33 2e 31 20 7b 54 6f 6f Errors-13.1 {Too
3300: 20 66 65 77 20 61 72 67 73 7d 20 2d 62 6f 64 79 few args} -body
3310: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 0a {..::tls::hmac.
3320: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 } -result {w
3330: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f rong # args: sho
3340: 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 68 uld be "::tls::h
3350: 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 mac ?-bin|-hex?
3360: 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f ?-cipher name? ?
3370: 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d -digest name? ?-
3380: 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e key key? ?-mac n
3390: 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 ame? [-channel c
33a0: 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 han | -command c
33b0: 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66 mdName | -file f
33c0: 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61 ilename | ?-data
33d0: 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74 75 72 ? data]"} -retur
33e0: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 nCodes {1}..test
33f0: 20 48 4d 41 43 5f 45 72 72 6f 72 73 2d 31 33 2e HMAC_Errors-13.
3400: 32 20 7b 4e 6f 20 64 69 67 65 73 74 7d 20 2d 62 2 {No digest} -b
3410: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d ody {..::tls::hm
3420: 61 63 20 2d 68 65 78 20 2d 64 61 74 61 20 76 61 ac -hex -data va
3430: 6c 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c lue. } -resul
3440: 74 20 7b 4e 6f 20 64 69 67 65 73 74 20 73 70 65 t {No digest spe
3450: 63 69 66 69 65 64 7d 20 2d 72 65 74 75 72 6e 43 cified} -returnC
3460: 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 odes {1}..test H
3470: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 33 2e 33 20 MAC_Errors-13.3
3480: 7b 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20 7b {No key} -body {
3490: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 ..::tls::hmac -d
34a0: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 igest sha256 -da
34b0: 74 61 20 76 61 6c 75 65 0a 20 20 20 20 7d 20 2d ta value. } -
34c0: 72 65 73 75 6c 74 20 7b 4e 6f 20 6b 65 79 20 73 result {No key s
34d0: 70 65 63 69 66 69 65 64 7d 20 2d 72 65 74 75 72 pecified} -retur
34e0: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 23 20 4d 41 nCodes {1}..# MA
34f0: 43 20 45 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a C Error Cases...
3500: 74 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73 2d test MAC_Errors-
3510: 31 34 2e 31 20 7b 54 6f 6f 20 66 65 77 20 61 72 14.1 {Too few ar
3520: 67 73 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 gs} -constraints
3530: 20 7b 6e 65 77 5f 61 70 69 7d 20 2d 62 6f 64 79 {new_api} -body
3540: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 6d 61 63 0a {..::tls::mmac.
3550: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 } -result {w
3560: 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f rong # args: sho
3570: 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d uld be "::tls::m
3580: 61 63 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f ac ?-bin|-hex? ?
3590: 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d -cipher name? ?-
35a0: 64 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b digest name? ?-k
35b0: 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 ey key? ?-mac na
35c0: 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 me? [-channel ch
35d0: 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d an | -command cm
35e0: 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 dName | -file fi
35f0: 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f lename | ?-data?
3600: 20 64 61 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e data]"} -return
3610: 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 Codes {1}..test
3620: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 34 2e 32 20 MAC_Errors-14.2
3630: 7b 4e 6f 20 6b 65 79 7d 20 2d 63 6f 6e 73 74 72 {No key} -constr
3640: 61 69 6e 74 73 20 7b 6e 65 77 5f 61 70 69 7d 20 aints {new_api}
3650: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
3660: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 mac -digest sha2
3670: 35 36 20 2d 64 61 74 61 20 76 61 6c 75 65 0a 20 56 -data value.
3680: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f } -result {No
3690: 20 6b 65 79 20 73 70 65 63 69 66 69 65 64 7d 20 key specified}
36a0: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d -returnCodes {1}
36b0: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41 ..# RFC 4231 HMA
36c0: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20 C Examples Test
36d0: 43 61 73 65 20 23 31 0a 73 65 74 20 6b 65 79 20 Case #1.set key
36e0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 [binary decode h
36f0: 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 ex [string repea
3700: 74 20 22 30 62 22 20 32 30 5d 5d 0a 73 65 74 20 t "0b" 20]].set
3710: 64 61 74 61 20 22 48 69 20 54 68 65 72 65 22 0a data "Hi There".
3720: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 ..test RFC4231_T
3730: 43 31 2d 31 35 2e 31 20 7b 73 68 61 32 32 34 7d C1-15.1 {sha224}
3740: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
3750: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 :hmac -digest sh
3760: 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d a224 -key $key -
3770: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d data $data. }
3780: 20 2d 72 65 73 75 6c 74 20 7b 38 39 36 66 62 31 -result {896fb1
3790: 31 32 38 61 62 62 64 66 31 39 36 38 33 32 31 30 128abbdf19683210
37a0: 37 63 64 34 39 64 66 33 33 66 34 37 62 34 62 31 7cd49df33f47b4b1
37b0: 31 36 39 39 31 32 62 61 34 66 35 33 36 38 34 62 169912ba4f53684b
37c0: 32 32 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 22}..test RFC423
37d0: 31 5f 54 43 31 2d 31 35 2e 32 20 7b 73 68 61 32 1_TC1-15.2 {sha2
37e0: 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 56} -body {..::t
37f0: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 ls::hmac -digest
3800: 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 sha256 -key $ke
3810: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 y -data $data.
3820: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 30 33 } -result {b03
3830: 34 34 63 36 31 64 38 64 62 33 38 35 33 35 63 61 44c61d8db38535ca
3840: 38 61 66 63 65 61 66 30 62 66 31 32 62 38 38 31 8afceaf0bf12b881
3850: 64 63 32 30 30 63 39 38 33 33 64 61 37 32 36 65 dc200c9833da726e
3860: 39 33 37 36 63 32 65 33 32 63 66 66 37 7d 0a 0a 9376c2e32cff7}..
3870: 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 31 test RFC4231_TC1
3880: 2d 31 35 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d -15.3 {sha384} -
3890: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 body {..::tls::h
38a0: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 33 mac -digest sha3
38b0: 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 84 -key $key -da
38c0: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d ta $data. } -
38d0: 72 65 73 75 6c 74 20 7b 61 66 64 30 33 39 34 34 result {afd03944
38e0: 64 38 34 38 39 35 36 32 36 62 30 38 32 35 66 34 d84895626b0825f4
38f0: 61 62 34 36 39 30 37 66 31 35 66 39 64 61 64 62 ab46907f15f9dadb
3900: 65 34 31 30 31 65 63 36 38 32 61 61 30 33 34 63 e4101ec682aa034c
3910: 37 63 65 62 63 35 39 63 66 61 65 61 39 65 61 39 7cebc59cfaea9ea9
3920: 30 37 36 65 64 65 37 66 34 61 66 31 35 32 65 38 076ede7f4af152e8
3930: 62 32 66 61 39 63 62 36 7d 0a 0a 74 65 73 74 20 b2fa9cb6}..test
3940: 52 46 43 34 32 33 31 5f 54 43 31 2d 31 35 2e 34 RFC4231_TC1-15.4
3950: 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 {sha512} -body
3960: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d {..::tls::hmac -
3970: 64 69 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b digest sha512 -k
3980: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 ey $key -data $d
3990: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ata. } -resul
39a0: 74 20 7b 38 37 61 61 37 63 64 65 61 35 65 66 36 t {87aa7cdea5ef6
39b0: 31 39 64 34 66 66 30 62 34 32 34 31 61 31 64 36 19d4ff0b4241a1d6
39c0: 63 62 30 32 33 37 39 66 34 65 32 63 65 34 65 63 cb02379f4e2ce4ec
39d0: 32 37 38 37 61 64 30 62 33 30 35 34 35 65 31 37 2787ad0b30545e17
39e0: 63 64 65 64 61 61 38 33 33 62 37 64 36 62 38 61 cdedaa833b7d6b8a
39f0: 37 30 32 30 33 38 62 32 37 34 65 61 65 61 33 66 702038b274eaea3f
3a00: 34 65 34 62 65 39 64 39 31 34 65 65 62 36 31 66 4e4be9d914eeb61f
3a10: 31 37 30 32 65 36 39 36 63 32 30 33 61 31 32 36 1702e696c203a126
3a20: 38 35 34 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 854}..# RFC 4231
3a30: 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54 HMAC Examples T
3a40: 65 73 74 20 43 61 73 65 20 23 32 20 2d 20 54 65 est Case #2 - Te
3a50: 73 74 20 77 69 74 68 20 61 20 6b 65 79 20 73 68 st with a key sh
3a60: 6f 72 74 65 72 20 74 68 61 6e 20 74 68 65 20 6c orter than the l
3a70: 65 6e 67 74 68 20 6f 66 20 74 68 65 20 48 4d 41 ength of the HMA
3a80: 43 20 6f 75 74 70 75 74 2e 0a 73 65 74 20 6b 65 C output..set ke
3a90: 79 20 22 4a 65 66 65 22 0a 73 65 74 20 64 61 74 y "Jefe".set dat
3aa0: 61 20 22 77 68 61 74 20 64 6f 20 79 61 20 77 61 a "what do ya wa
3ab0: 6e 74 20 66 6f 72 20 6e 6f 74 68 69 6e 67 3f 22 nt for nothing?"
3ac0: 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f ...test RFC4231_
3ad0: 54 43 32 2d 31 36 2e 31 20 7b 73 68 61 32 32 34 TC2-16.1 {sha224
3ae0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
3af0: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 ::hmac -digest s
3b00: 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 ha224 -key $key
3b10: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 -data $data.
3b20: 7d 20 2d 72 65 73 75 6c 74 20 7b 61 33 30 65 30 } -result {a30e0
3b30: 31 30 39 38 62 63 36 64 62 62 66 34 35 36 39 30 1098bc6dbbf45690
3b40: 66 33 61 37 65 39 65 36 64 30 66 38 62 62 65 61 f3a7e9e6d0f8bbea
3b50: 32 61 33 39 65 36 31 34 38 30 30 38 66 64 30 35 2a39e6148008fd05
3b60: 65 34 34 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 e44}..test RFC42
3b70: 33 31 5f 54 43 32 2d 31 36 2e 32 20 7b 73 68 61 31_TC2-16.2 {sha
3b80: 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 256} -body {..::
3b90: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 tls::hmac -diges
3ba0: 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b t sha256 -key $k
3bb0: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 ey -data $data.
3bc0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35 62 } -result {5b
3bd0: 64 63 63 31 34 36 62 66 36 30 37 35 34 65 36 61 dcc146bf60754e6a
3be0: 30 34 32 34 32 36 30 38 39 35 37 35 63 37 35 61 042426089575c75a
3bf0: 30 30 33 66 30 38 39 64 32 37 33 39 38 33 39 64 003f089d2739839d
3c00: 65 63 35 38 62 39 36 34 65 63 33 38 34 33 7d 0a ec58b964ec3843}.
3c10: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 .test RFC4231_TC
3c20: 32 2d 31 36 2e 33 20 7b 73 68 61 33 38 34 7d 20 2-16.3 {sha384}
3c30: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
3c40: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 hmac -digest sha
3c50: 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 384 -key $key -d
3c60: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 ata $data. }
3c70: 2d 72 65 73 75 6c 74 20 7b 61 66 34 35 64 32 65 -result {af45d2e
3c80: 33 37 36 34 38 34 30 33 31 36 31 37 66 37 38 64 376484031617f78d
3c90: 32 62 35 38 61 36 62 31 62 39 63 37 65 66 34 36 2b58a6b1b9c7ef46
3ca0: 34 66 35 61 30 31 62 34 37 65 34 32 65 63 33 37 4f5a01b47e42ec37
3cb0: 33 36 33 32 32 34 34 35 65 38 65 32 32 34 30 63 36322445e8e2240c
3cc0: 61 35 65 36 39 65 32 63 37 38 62 33 32 33 39 65 a5e69e2c78b3239e
3cd0: 63 66 61 62 32 31 36 34 39 7d 0a 0a 74 65 73 74 cfab21649}..test
3ce0: 20 52 46 43 34 32 33 31 5f 54 43 32 2d 31 36 2e RFC4231_TC2-16.
3cf0: 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 4 {sha512} -body
3d00: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 {..::tls::hmac
3d10: 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20 2d -digest sha512 -
3d20: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 key $key -data $
3d30: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 data. } -resu
3d40: 6c 74 20 7b 31 36 34 62 37 61 37 62 66 63 66 38 lt {164b7a7bfcf8
3d50: 31 39 65 32 65 33 39 35 66 62 65 37 33 62 35 36 19e2e395fbe73b56
3d60: 65 30 61 33 38 37 62 64 36 34 32 32 32 65 38 33 e0a387bd64222e83
3d70: 31 66 64 36 31 30 32 37 30 63 64 37 65 61 32 35 1fd610270cd7ea25
3d80: 30 35 35 34 39 37 35 38 62 66 37 35 63 30 35 61 05549758bf75c05a
3d90: 39 39 34 61 36 64 30 33 34 66 36 35 66 38 66 30 994a6d034f65f8f0
3da0: 65 36 66 64 63 61 65 61 62 31 61 33 34 64 34 61 e6fdcaeab1a34d4a
3db0: 36 62 34 62 36 33 36 65 30 37 30 61 33 38 62 63 6b4b636e070a38bc
3dc0: 65 37 33 37 7d 0a 0a 23 20 52 46 43 20 34 32 33 e737}..# RFC 423
3dd0: 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 1 HMAC Examples
3de0: 54 65 73 74 20 43 61 73 65 20 23 33 20 2d 20 54 Test Case #3 - T
3df0: 65 73 74 20 77 69 74 68 20 61 20 63 6f 6d 62 69 est with a combi
3e00: 6e 65 64 20 6c 65 6e 67 74 68 20 6f 66 20 6b 65 ned length of ke
3e10: 79 20 61 6e 64 20 64 61 74 61 20 74 68 61 74 20 y and data that
3e20: 69 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20 36 is larger than 6
3e30: 34 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b 4 bytes (= block
3e40: 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d 32 32 34 -size of SHA-224
3e50: 20 61 6e 64 20 53 48 41 2d 32 35 36 29 2e 0a 73 and SHA-256)..s
3e60: 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 et key [binary d
3e70: 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e ecode hex [strin
3e80: 67 20 72 65 70 65 61 74 20 22 61 61 22 20 32 30 g repeat "aa" 20
3e90: 5d 5d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e ]].set data [bin
3ea0: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b ary decode hex [
3eb0: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 64 string repeat "d
3ec0: 64 22 20 35 30 5d 5d 0a 0a 0a 74 65 73 74 20 52 d" 50]]...test R
3ed0: 46 43 34 32 33 31 5f 54 43 33 2d 31 37 2e 31 20 FC4231_TC3-17.1
3ee0: 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b {sha224} -body {
3ef0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 ..::tls::hmac -d
3f00: 69 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 igest sha224 -ke
3f10: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 y $key -data $da
3f20: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ta. } -result
3f30: 20 7b 37 66 62 33 63 62 33 35 38 38 63 36 63 31 {7fb3cb3588c6c1
3f40: 66 36 66 66 61 39 36 39 34 64 37 64 36 61 64 32 f6ffa9694d7d6ad2
3f50: 36 34 39 33 36 35 62 30 63 31 66 36 35 64 36 39 649365b0c1f65d69
3f60: 64 31 65 63 38 33 33 33 65 61 7d 0a 0a 74 65 73 d1ec8333ea}..tes
3f70: 74 20 52 46 43 34 32 33 31 5f 54 43 33 2d 31 37 t RFC4231_TC3-17
3f80: 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 .2 {sha256} -bod
3f90: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 y {..::tls::hmac
3fa0: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 -digest sha256
3fb0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 -key $key -data
3fc0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 $data. } -res
3fd0: 75 6c 74 20 7b 37 37 33 65 61 39 31 65 33 36 38 ult {773ea91e368
3fe0: 30 30 65 34 36 38 35 34 64 62 38 65 62 64 30 39 00e46854db8ebd09
3ff0: 31 38 31 61 37 32 39 35 39 30 39 38 62 33 65 66 181a72959098b3ef
4000: 38 63 31 32 32 64 39 36 33 35 35 31 34 63 65 64 8c122d9635514ced
4010: 35 36 35 66 65 7d 0a 0a 74 65 73 74 20 52 46 43 565fe}..test RFC
4020: 34 32 33 31 5f 54 43 33 2d 31 37 2e 33 20 7b 73 4231_TC3-17.3 {s
4030: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 ha384} -body {..
4040: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 ::tls::hmac -dig
4050: 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 est sha384 -key
4060: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 $key -data $data
4070: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
4080: 38 38 30 36 32 36 30 38 64 33 65 36 61 64 38 61 88062608d3e6ad8a
4090: 30 61 61 32 61 63 65 30 31 34 63 38 61 38 36 66 0aa2ace014c8a86f
40a0: 30 61 61 36 33 35 64 39 34 37 61 63 39 66 65 62 0aa635d947ac9feb
40b0: 65 38 33 65 66 34 65 35 35 39 36 36 31 34 34 62 e83ef4e55966144b
40c0: 32 61 35 61 62 33 39 64 63 31 33 38 31 34 62 39 2a5ab39dc13814b9
40d0: 34 65 33 61 62 36 65 31 30 31 61 33 34 66 32 37 4e3ab6e101a34f27
40e0: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f }..test RFC4231_
40f0: 54 43 33 2d 31 37 2e 34 20 7b 73 68 61 35 31 32 TC3-17.4 {sha512
4100: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
4110: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 ::hmac -digest s
4120: 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 ha512 -key $key
4130: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 -data $data.
4140: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 61 37 33 62 } -result {fa73b
4150: 30 30 38 39 64 35 36 61 32 38 34 65 66 62 30 66 0089d56a284efb0f
4160: 30 37 35 36 63 38 39 30 62 65 39 62 31 62 35 64 0756c890be9b1b5d
4170: 62 64 64 38 65 65 38 31 61 33 36 35 35 66 38 33 bdd8ee81a3655f83
4180: 65 33 33 62 32 32 37 39 64 33 39 62 66 33 65 38 e33b2279d39bf3e8
4190: 34 38 32 37 39 61 37 32 32 63 38 30 36 62 34 38 48279a722c806b48
41a0: 35 61 34 37 65 36 37 63 38 30 37 62 39 34 36 61 5a47e67c807b946a
41b0: 33 33 37 62 65 65 38 39 34 32 36 37 34 32 37 38 337bee8942674278
41c0: 38 35 39 65 31 33 32 39 32 66 62 7d 0a 0a 23 20 859e13292fb}..#
41d0: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 RFC 4231 HMAC Ex
41e0: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 amples Test Case
41f0: 20 23 34 20 2d 20 54 65 73 74 20 77 69 74 68 20 #4 - Test with
4200: 61 20 63 6f 6d 62 69 6e 65 64 20 6c 65 6e 67 74 a combined lengt
4210: 68 20 6f 66 20 6b 65 79 20 61 6e 64 20 64 61 74 h of key and dat
4220: 61 20 74 68 61 74 20 69 73 20 6c 61 72 67 65 72 a that is larger
4230: 20 74 68 61 6e 20 36 34 20 62 79 74 65 73 20 28 than 64 bytes (
4240: 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 = block-size of
4250: 53 48 41 2d 32 32 34 20 61 6e 64 20 53 48 41 2d SHA-224 and SHA-
4260: 32 35 36 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62 256)..set key [b
4270: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 inary decode hex
4280: 20 22 30 31 30 32 30 33 30 34 30 35 30 36 30 37 "01020304050607
4290: 30 38 30 39 30 61 30 62 30 63 30 64 30 65 30 66 08090a0b0c0d0e0f
42a0: 31 30 31 31 31 32 31 33 31 34 31 35 31 36 31 37 1011121314151617
42b0: 31 38 31 39 22 5d 0a 73 65 74 20 64 61 74 61 20 1819"].set data
42c0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 [binary decode h
42d0: 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 ex [string repea
42e0: 74 20 22 63 64 22 20 35 30 5d 5d 0a 0a 0a 74 65 t "cd" 50]]...te
42f0: 73 74 20 52 46 43 34 32 33 31 5f 54 43 34 2d 31 st RFC4231_TC4-1
4300: 38 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 8.1 {sha224} -bo
4310: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 dy {..::tls::hma
4320: 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 c -digest sha224
4330: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 -key $key -data
4340: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 $data. } -re
4350: 73 75 6c 74 20 7b 36 63 31 31 35 30 36 38 37 34 sult {6c11506874
4360: 30 31 33 63 61 63 36 61 32 61 62 63 31 62 62 33 013cac6a2abc1bb3
4370: 38 32 36 32 37 63 65 63 36 61 39 30 64 38 36 65 82627cec6a90d86e
4380: 66 63 30 31 32 64 65 37 61 66 65 63 35 61 7d 0a fc012de7afec5a}.
4390: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 .test RFC4231_TC
43a0: 34 2d 31 38 2e 32 20 7b 73 68 61 32 35 36 7d 20 4-18.2 {sha256}
43b0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
43c0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 hmac -digest sha
43d0: 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 256 -key $key -d
43e0: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 ata $data. }
43f0: 2d 72 65 73 75 6c 74 20 7b 38 32 35 35 38 61 33 -result {82558a3
4400: 38 39 61 34 34 33 63 30 65 61 34 63 63 38 31 39 89a443c0ea4cc819
4410: 38 39 39 66 32 30 38 33 61 38 35 66 30 66 61 61 899f2083a85f0faa
4420: 33 65 35 37 38 66 38 30 37 37 61 32 65 33 66 66 3e578f8077a2e3ff
4430: 34 36 37 32 39 36 36 35 62 7d 0a 0a 74 65 73 74 46729665b}..test
4440: 20 52 46 43 34 32 33 31 5f 54 43 34 2d 31 38 2e RFC4231_TC4-18.
4450: 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 3 {sha384} -body
4460: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 {..::tls::hmac
4470: 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20 2d -digest sha384 -
4480: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 key $key -data $
4490: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 data. } -resu
44a0: 6c 74 20 7b 33 65 38 61 36 39 62 37 37 38 33 63 lt {3e8a69b7783c
44b0: 32 35 38 35 31 39 33 33 61 62 36 32 39 30 61 66 25851933ab6290af
44c0: 36 63 61 37 37 61 39 39 38 31 34 38 30 38 35 30 6ca77a9981480850
44d0: 30 30 39 63 63 35 35 37 37 63 36 65 31 66 35 37 009cc5577c6e1f57
44e0: 33 62 34 65 36 38 30 31 64 64 32 33 63 34 61 37 3b4e6801dd23c4a7
44f0: 64 36 37 39 63 63 66 38 61 33 38 36 63 36 37 34 d679ccf8a386c674
4500: 63 66 66 62 7d 0a 0a 74 65 73 74 20 52 46 43 34 cffb}..test RFC4
4510: 32 33 31 5f 54 43 34 2d 31 38 2e 34 20 7b 73 68 231_TC4-18.4 {sh
4520: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a a512} -body {..:
4530: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 :tls::hmac -dige
4540: 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 st sha512 -key $
4550: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a key -data $data.
4560: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 } -result {b
4570: 30 62 61 34 36 35 36 33 37 34 35 38 63 36 39 39 0ba465637458c699
4580: 30 65 35 61 38 63 35 66 36 31 64 34 61 66 37 65 0e5a8c5f61d4af7e
4590: 35 37 36 64 39 37 66 66 39 34 62 38 37 32 64 65 576d97ff94b872de
45a0: 37 36 66 38 30 35 30 33 36 31 65 65 33 64 62 61 76f8050361ee3dba
45b0: 39 31 63 61 35 63 31 31 61 61 32 35 65 62 34 64 91ca5c11aa25eb4d
45c0: 36 37 39 32 37 35 63 63 35 37 38 38 30 36 33 61 679275cc5788063a
45d0: 35 66 31 39 37 34 31 31 32 30 63 34 66 32 64 65 5f19741120c4f2de
45e0: 32 61 64 65 62 65 62 31 30 61 32 39 38 64 64 7d 2adebeb10a298dd}
45f0: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41 ..# RFC 4231 HMA
4600: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20 C Examples Test
4610: 43 61 73 65 20 23 35 20 2d 20 54 65 73 74 20 77 Case #5 - Test w
4620: 69 74 68 20 61 20 74 72 75 6e 63 61 74 69 6f 6e ith a truncation
4630: 20 6f 66 20 6f 75 74 70 75 74 20 74 6f 20 31 32 of output to 12
4640: 38 20 62 69 74 73 2e 0a 73 65 74 20 6b 65 79 20 8 bits..set key
4650: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 [binary decode h
4660: 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 ex [string repea
4670: 74 20 22 30 63 22 20 32 30 5d 5d 0a 73 65 74 20 t "0c" 20]].set
4680: 64 61 74 61 20 22 54 65 73 74 20 57 69 74 68 20 data "Test With
4690: 54 72 75 6e 63 61 74 69 6f 6e 22 0a 0a 0a 74 65 Truncation"...te
46a0: 73 74 20 52 46 43 34 32 33 31 5f 54 43 35 2d 31 st RFC4231_TC5-1
46b0: 39 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 9.1 {sha224} -bo
46c0: 64 79 20 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e dy {..string ran
46d0: 67 65 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 ge [::tls::hmac
46e0: 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 20 2d -digest sha224 -
46f0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 key $key -data $
4700: 64 61 74 61 5d 20 30 20 33 31 0a 20 20 20 20 7d data] 0 31. }
4710: 20 2d 72 65 73 75 6c 74 20 7b 30 65 32 61 65 61 -result {0e2aea
4720: 36 38 61 39 30 63 38 64 33 37 63 39 38 38 62 63 68a90c8d37c988bc
4730: 64 62 39 66 63 61 36 66 61 38 7d 0a 0a 74 65 73 db9fca6fa8}..tes
4740: 74 20 52 46 43 34 32 33 31 5f 54 43 35 2d 31 39 t RFC4231_TC5-19
4750: 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 .2 {sha256} -bod
4760: 79 20 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 y {..string rang
4770: 65 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d e [::tls::hmac -
4780: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b digest sha256 -k
4790: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 ey $key -data $d
47a0: 61 74 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 ata] 0 31. }
47b0: 2d 72 65 73 75 6c 74 20 7b 61 33 62 36 31 36 37 -result {a3b6167
47c0: 34 37 33 31 30 30 65 65 30 36 65 30 63 37 39 36 473100ee06e0c796
47d0: 63 32 39 35 35 35 35 32 62 7d 0a 0a 74 65 73 74 c2955552b}..test
47e0: 20 52 46 43 34 32 33 31 5f 54 43 35 2d 31 39 2e RFC4231_TC5-19.
47f0: 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 3 {sha384} -body
4800: 20 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 {..string range
4810: 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 [::tls::hmac -d
4820: 69 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65 igest sha384 -ke
4830: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 y $key -data $da
4840: 74 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d ta] 0 31. } -
4850: 72 65 73 75 6c 74 20 7b 33 61 62 66 33 34 63 33 result {3abf34c3
4860: 35 30 33 62 32 61 32 33 61 34 36 65 66 63 36 31 503b2a23a46efc61
4870: 39 62 61 65 66 38 39 37 7d 0a 0a 74 65 73 74 20 9baef897}..test
4880: 52 46 43 34 32 33 31 5f 54 43 35 2d 31 39 2e 34 RFC4231_TC5-19.4
4890: 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 {sha512} -body
48a0: 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20 {..string range
48b0: 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 [::tls::hmac -di
48c0: 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 gest sha512 -key
48d0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 $key -data $dat
48e0: 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 a] 0 31. } -r
48f0: 65 73 75 6c 74 20 7b 34 31 35 66 61 64 36 32 37 esult {415fad627
4900: 31 35 38 30 61 35 33 31 64 34 31 37 39 62 63 38 1580a531d4179bc8
4910: 39 31 64 38 37 61 36 7d 0a 0a 23 20 52 46 43 20 91d87a6}..# RFC
4920: 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 4231 HMAC Exampl
4930: 65 73 20 54 65 73 74 20 43 61 73 65 20 23 36 20 es Test Case #6
4940: 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 6b 65 - Test with a ke
4950: 79 20 6c 61 72 67 65 72 20 74 68 61 6e 20 31 32 y larger than 12
4960: 38 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b 8 bytes (= block
4970: 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d 33 38 34 -size of SHA-384
4980: 20 61 6e 64 20 53 48 41 2d 35 31 32 29 2e 0a 73 and SHA-512)..s
4990: 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 et key [binary d
49a0: 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e ecode hex [strin
49b0: 67 20 72 65 70 65 61 74 20 22 61 61 22 20 31 33 g repeat "aa" 13
49c0: 31 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 54 65 1]].set data "Te
49d0: 73 74 20 55 73 69 6e 67 20 4c 61 72 67 65 72 20 st Using Larger
49e0: 54 68 61 6e 20 42 6c 6f 63 6b 2d 53 69 7a 65 20 Than Block-Size
49f0: 4b 65 79 20 2d 20 48 61 73 68 20 4b 65 79 20 46 Key - Hash Key F
4a00: 69 72 73 74 22 0a 0a 0a 74 65 73 74 20 52 46 43 irst"...test RFC
4a10: 34 32 33 31 5f 54 43 36 2d 32 30 2e 31 20 7b 73 4231_TC6-20.1 {s
4a20: 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 ha224} -body {..
4a30: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 ::tls::hmac -dig
4a40: 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 est sha224 -key
4a50: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 $key -data $data
4a60: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
4a70: 39 35 65 39 61 30 64 62 39 36 32 30 39 35 61 64 95e9a0db962095ad
4a80: 61 65 62 65 39 62 32 64 36 66 30 64 62 63 65 32 aebe9b2d6f0dbce2
4a90: 64 34 39 39 66 31 31 32 66 32 64 32 62 37 32 37 d499f112f2d2b727
4aa0: 33 66 61 36 38 37 30 65 7d 0a 0a 74 65 73 74 20 3fa6870e}..test
4ab0: 52 46 43 34 32 33 31 5f 54 43 36 2d 32 30 2e 32 RFC4231_TC6-20.2
4ac0: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 {sha256} -body
4ad0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d {..::tls::hmac -
4ae0: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b digest sha256 -k
4af0: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 ey $key -data $d
4b00: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ata. } -resul
4b10: 74 20 7b 36 30 65 34 33 31 35 39 31 65 65 30 62 t {60e431591ee0b
4b20: 36 37 66 30 64 38 61 32 36 61 61 63 62 66 35 62 67f0d8a26aacbf5b
4b30: 37 37 66 38 65 30 62 63 36 32 31 33 37 32 38 63 77f8e0bc6213728c
4b40: 35 31 34 30 35 34 36 30 34 30 66 30 65 65 33 37 5140546040f0ee37
4b50: 66 35 34 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 f54}..test RFC42
4b60: 33 31 5f 54 43 36 2d 32 30 2e 33 20 7b 73 68 61 31_TC6-20.3 {sha
4b70: 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 384} -body {..::
4b80: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 tls::hmac -diges
4b90: 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b t sha384 -key $k
4ba0: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 ey -data $data.
4bb0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 65 } -result {4e
4bc0: 63 65 30 38 34 34 38 35 38 31 33 65 39 30 38 38 ce084485813e9088
4bd0: 64 32 63 36 33 61 30 34 31 62 63 35 62 34 34 66 d2c63a041bc5b44f
4be0: 39 65 66 31 30 31 32 61 32 62 35 38 38 66 33 63 9ef1012a2b588f3c
4bf0: 64 31 31 66 30 35 30 33 33 61 63 34 63 36 30 63 d11f05033ac4c60c
4c00: 32 65 66 36 61 62 34 30 33 30 66 65 38 32 39 36 2ef6ab4030fe8296
4c10: 32 34 38 64 66 31 36 33 66 34 34 39 35 32 7d 0a 248df163f44952}.
4c20: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 .test RFC4231_TC
4c30: 36 2d 32 30 2e 34 20 7b 73 68 61 35 31 32 7d 20 6-20.4 {sha512}
4c40: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
4c50: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 hmac -digest sha
4c60: 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 512 -key $key -d
4c70: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 ata $data. }
4c80: 2d 72 65 73 75 6c 74 20 7b 38 30 62 32 34 32 36 -result {80b2426
4c90: 33 63 37 63 31 61 33 65 62 62 37 31 34 39 33 63 3c7c1a3ebb71493c
4ca0: 31 64 64 37 62 65 38 62 34 39 62 34 36 64 31 66 1dd7be8b49b46d1f
4cb0: 34 31 62 34 61 65 65 63 31 31 32 31 62 30 31 33 41b4aeec1121b013
4cc0: 37 38 33 66 38 66 33 35 32 36 62 35 36 64 30 33 783f8f3526b56d03
4cd0: 37 65 30 35 66 32 35 39 38 62 64 30 66 64 32 32 7e05f2598bd0fd22
4ce0: 31 35 64 36 61 31 65 35 32 39 35 65 36 34 66 37 15d6a1e5295e64f7
4cf0: 33 66 36 33 66 30 61 65 63 38 62 39 31 35 61 39 3f63f0aec8b915a9
4d00: 38 35 64 37 38 36 35 39 38 7d 0a 0a 23 20 52 46 85d786598}..# RF
4d10: 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d C 4231 HMAC Exam
4d20: 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 20 23 ples Test Case #
4d30: 37 20 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 7 - Test with a
4d40: 6b 65 79 20 61 6e 64 20 64 61 74 61 20 74 68 61 key and data tha
4d50: 74 20 69 73 20 6c 61 72 67 65 72 20 74 68 61 6e t is larger than
4d60: 20 31 32 38 20 62 79 74 65 73 20 28 3d 20 62 6c 128 bytes (= bl
4d70: 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d ock-size of SHA-
4d80: 33 38 34 20 61 6e 64 20 53 48 41 2d 35 31 32 29 384 and SHA-512)
4d90: 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 ..set key [binar
4da0: 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74 y decode hex [st
4db0: 72 69 6e 67 20 72 65 70 65 61 74 20 22 61 61 22 ring repeat "aa"
4dc0: 20 31 33 31 5d 5d 0a 73 65 74 20 64 61 74 61 20 131]].set data
4dd0: 22 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20 "This is a test
4de0: 75 73 69 6e 67 20 61 20 6c 61 72 67 65 72 20 74 using a larger t
4df0: 68 61 6e 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6b han block-size k
4e00: 65 79 20 61 6e 64 20 61 20 6c 61 72 67 65 72 20 ey and a larger
4e10: 74 68 61 6e 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 than block-size
4e20: 64 61 74 61 2e 20 54 68 65 20 6b 65 79 20 6e 65 data. The key ne
4e30: 65 64 73 20 74 6f 20 62 65 20 68 61 73 68 65 64 eds to be hashed
4e40: 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20 75 73 before being us
4e50: 65 64 20 62 79 20 74 68 65 20 48 4d 41 43 20 61 ed by the HMAC a
4e60: 6c 67 6f 72 69 74 68 6d 2e 22 0a 0a 0a 74 65 73 lgorithm."...tes
4e70: 74 20 52 46 43 34 32 33 31 5f 54 43 37 2d 32 31 t RFC4231_TC7-21
4e80: 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 .1 {sha224} -bod
4e90: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 y {..::tls::hmac
4ea0: 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 20 -digest sha224
4eb0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 -key $key -data
4ec0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 $data. } -res
4ed0: 75 6c 74 20 7b 33 61 38 35 34 31 36 36 61 63 35 ult {3a854166ac5
4ee0: 64 39 66 30 32 33 66 35 34 64 35 31 37 64 30 62 d9f023f54d517d0b
4ef0: 33 39 64 62 64 39 34 36 37 37 30 64 62 39 63 32 39dbd946770db9c2
4f00: 62 39 35 63 39 66 36 66 35 36 35 64 31 7d 0a 0a b95c9f6f565d1}..
4f10: 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 37 test RFC4231_TC7
4f20: 2d 32 31 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d -21.2 {sha256} -
4f30: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 body {..::tls::h
4f40: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 mac -digest sha2
4f50: 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 56 -key $key -da
4f60: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d ta $data. } -
4f70: 72 65 73 75 6c 74 20 7b 39 62 30 39 66 66 61 37 result {9b09ffa7
4f80: 31 62 39 34 32 66 63 62 32 37 36 33 35 66 62 63 1b942fcb27635fbc
4f90: 64 35 62 30 65 39 34 34 62 66 64 63 36 33 36 34 d5b0e944bfdc6364
4fa0: 34 66 30 37 31 33 39 33 38 61 37 66 35 31 35 33 4f0713938a7f5153
4fb0: 35 63 33 61 33 35 65 32 7d 0a 0a 74 65 73 74 20 5c3a35e2}..test
4fc0: 52 46 43 34 32 33 31 5f 54 43 37 2d 32 31 2e 33 RFC4231_TC7-21.3
4fd0: 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 {sha384} -body
4fe0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d {..::tls::hmac -
4ff0: 64 69 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b digest sha384 -k
5000: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 ey $key -data $d
5010: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ata. } -resul
5020: 74 20 7b 36 36 31 37 31 37 38 65 39 34 31 66 30 t {6617178e941f0
5030: 32 30 64 33 35 31 65 32 66 32 35 34 65 38 66 64 20d351e2f254e8fd
5040: 33 32 63 36 30 32 34 32 30 66 65 62 30 62 38 66 32c602420feb0b8f
5050: 62 39 61 64 63 63 65 62 62 38 32 34 36 31 65 39 b9adccebb82461e9
5060: 39 63 35 61 36 37 38 63 63 33 31 65 37 39 39 31 9c5a678cc31e7991
5070: 37 36 64 33 38 36 30 65 36 31 31 30 63 34 36 35 76d3860e6110c465
5080: 32 33 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 23e}..test RFC42
5090: 33 31 5f 54 43 37 2d 32 31 2e 34 20 7b 73 68 61 31_TC7-21.4 {sha
50a0: 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 512} -body {..::
50b0: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 tls::hmac -diges
50c0: 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b t sha512 -key $k
50d0: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 ey -data $data.
50e0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 33 } -result {e3
50f0: 37 62 36 61 37 37 35 64 63 38 37 64 62 61 61 34 7b6a775dc87dbaa4
5100: 64 66 61 39 66 39 36 65 35 65 33 66 66 64 64 65 dfa9f96e5e3ffdde
5110: 62 64 37 31 66 38 38 36 37 32 38 39 38 36 35 64 bd71f8867289865d
5120: 66 35 61 33 32 64 32 30 63 64 63 39 34 34 62 36 f5a32d20cdc944b6
5130: 30 32 32 63 61 63 33 63 34 39 38 32 62 31 30 64 022cac3c4982b10d
5140: 35 65 65 62 35 35 63 33 65 34 64 65 31 35 31 33 5eeb55c3e4de1513
5150: 34 36 37 36 66 62 36 64 65 30 34 34 36 30 36 35 4676fb6de0446065
5160: 63 39 37 34 34 30 66 61 38 63 36 61 35 38 7d 0a c97440fa8c6a58}.
5170: 0a 23 20 43 6c 65 61 6e 75 70 0a 3a 3a 74 63 6c .# Cleanup.::tcl
5180: 74 65 73 74 3a 3a 72 65 6d 6f 76 65 46 69 6c 65 test::removeFile
5190: 20 24 74 65 73 74 5f 66 69 6c 65 0a 0a 23 20 43 $test_file..# C
51a0: 6c 65 61 6e 75 70 0a 3a 3a 74 63 6c 74 65 73 74 leanup.::tcltest
51b0: 3a 3a 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 72 ::cleanupTests.r
51c0: 65 74 75 72 6e 0a eturn.