Artifact
c515cc31cb3b58f67782d6bf30a5e38db230b0e0e793785ca86bd6130454ab8b:
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 6d 64 20 24 74 65 73 74 ::tls::md $test
06e0: 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20 6d 64 _file -digest md
06f0: 34 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 4. } -result
0700: 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37 {793399f792eca27
0710: 35 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35 52c6af3234ba7085
0720: 38 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 8}..test Digest_
0730: 43 68 61 6e 2d 32 2e 32 20 7b 6d 64 35 7d 20 2d Chan-2.2 {md5} -
0740: 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68 61 body {..read_cha
0750: 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 n ::tls::md $tes
0760: 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20 6d t_file -digest m
0770: 64 35 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 d5. } -result
0780: 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 {962bf0803b4232
0790: 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 ec23bd8427bb94ea
07a0: 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 09}..test Digest
07b0: 5f 43 68 61 6e 2d 32 2e 33 20 7b 73 68 61 31 7d _Chan-2.3 {sha1}
07c0: 20 2d 62 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 -body {..read_c
07d0: 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 han ::tls::md $t
07e0: 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 est_file -digest
07f0: 20 73 68 61 31 0a 20 20 20 20 7d 20 2d 72 65 73 sha1. } -res
0800: 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 ult {4fe03b7f256
0810: 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30 8551dfafb98ca600
0820: 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 4e65c4b71aa7d}..
0830: 74 65 73 74 20 44 69 67 65 73 74 5f 43 68 61 6e test Digest_Chan
0840: 2d 32 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d 62 -2.4 {sha256} -b
0850: 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68 61 6e ody {..read_chan
0860: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 ::tls::md $test
0870: 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20 73 68 _file -digest sh
0880: 61 32 35 36 0a 20 20 20 20 7d 20 2d 72 65 73 75 a256. } -resu
0890: 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32 lt {9d3578fc1382
08a0: 30 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66 05cf0ee4b4cef35f
08b0: 65 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31 e101bb4ecac7b161
08c0: 34 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39 4c18e6fa48b5c7f9
08d0: 35 65 31 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 5e19}..test Dige
08e0: 73 74 5f 43 68 61 6e 2d 32 2e 35 20 7b 73 68 61 st_Chan-2.5 {sha
08f0: 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 72 65 512} -body {..re
0900: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d ad_chan ::tls::m
0910: 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 d $test_file -di
0920: 67 65 73 74 20 73 68 61 35 31 32 0a 20 20 20 20 gest sha512.
0930: 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65 } -result {d178e
0940: 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38 759dc59127071588
0950: 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38 d2fad173c06238d8
0960: 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64 7e800a6403c0a30d
0970: 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30 aa4faaf05d0e7ce0
0980: 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63 4916afaa6a58a30c
0990: 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66 beb597dacb01c62f
09a0: 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30 9fb9d89bab9da630
09b0: 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 c699e4816f1}..te
09c0: 73 74 20 44 69 67 65 73 74 5f 43 68 61 6e 2d 32 st Digest_Chan-2
09d0: 2e 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62 6f .6 {md5 bin} -bo
09e0: 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 dy {..binary enc
09f0: 6f 64 65 20 68 65 78 20 5b 72 65 61 64 5f 63 68 ode hex [read_ch
0a00: 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 an ::tls::md $te
0a10: 73 74 5f 66 69 6c 65 20 2d 62 69 6e 20 2d 64 69 st_file -bin -di
0a20: 67 65 73 74 20 6d 64 35 5d 0a 20 20 20 20 7d 20 gest md5]. }
0a30: 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 -result {962bf08
0a40: 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 03b4232ec23bd842
0a50: 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 7bb94ea09}..test
0a60: 20 44 69 67 65 73 74 5f 43 68 61 6e 2d 32 2e 37 Digest_Chan-2.7
0a70: 20 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64 79 {md5 hex} -body
0a80: 20 7b 0a 09 72 65 61 64 5f 63 68 61 6e 20 3a 3a {..read_chan ::
0a90: 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69 tls::md $test_fi
0aa0: 6c 65 20 2d 68 65 78 20 2d 64 69 67 65 73 74 20 le -hex -digest
0ab0: 6d 64 35 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c md5. } -resul
0ac0: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 t {962bf0803b423
0ad0: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65 2ec23bd8427bb94e
0ae0: 61 30 39 7d 0a 0a 23 20 54 65 73 74 20 64 69 67 a09}..# Test dig
0af0: 65 73 74 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 est command for
0b00: 6f 62 6a 65 63 74 20 63 6f 6d 6d 61 6e 64 0a 0a object command..
0b10: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 6f 6d .test Digest_Com
0b20: 6d 61 6e 64 2d 33 2e 31 20 7b 6d 64 34 7d 20 2d mand-3.1 {md4} -
0b30: 62 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c 61 body {..accumula
0b40: 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a te $test_data ::
0b50: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 tls::md -digest
0b60: 6d 64 34 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c md4. } -resul
0b70: 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 t {793399f792eca
0b80: 32 37 35 32 63 36 61 66 33 32 33 34 62 61 37 30 2752c6af3234ba70
0b90: 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 858}..test Diges
0ba0: 74 5f 43 6f 6d 6d 61 6e 64 2d 33 2e 32 20 7b 6d t_Command-3.2 {m
0bb0: 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 61 63 63 d5} -body {..acc
0bc0: 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 umulate $test_da
0bd0: 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 ta ::tls::md -di
0be0: 67 65 73 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d gest md5. } -
0bf0: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 result {962bf080
0c00: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37 3b4232ec23bd8427
0c10: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 bb94ea09}..test
0c20: 44 69 67 65 73 74 5f 43 6f 6d 6d 61 6e 64 2d 33 Digest_Command-3
0c30: 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 .3 {sha1} -body
0c40: 7b 0a 09 61 63 63 75 6d 75 6c 61 74 65 20 24 74 {..accumulate $t
0c50: 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a est_data ::tls::
0c60: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 0a md -digest sha1.
0c70: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 } -result {4
0c80: 66 65 30 33 62 37 66 32 35 36 38 35 35 31 64 66 fe03b7f2568551df
0c90: 61 66 62 39 38 63 61 36 30 30 34 65 36 35 63 34 afb98ca6004e65c4
0ca0: 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20 44 b71aa7d}..test D
0cb0: 69 67 65 73 74 5f 43 6f 6d 6d 61 6e 64 2d 33 2e igest_Command-3.
0cc0: 34 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 4 {sha256} -body
0cd0: 20 7b 0a 09 61 63 63 75 6d 75 6c 61 74 65 20 24 {..accumulate $
0ce0: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a test_data ::tls:
0cf0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 :md -digest sha2
0d00: 35 36 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 56. } -result
0d10: 20 7b 39 64 33 35 37 38 66 63 31 33 38 32 30 35 {9d3578fc138205
0d20: 63 66 30 65 65 34 62 34 63 65 66 33 35 66 65 31 cf0ee4b4cef35fe1
0d30: 30 31 62 62 34 65 63 61 63 37 62 31 36 31 34 63 01bb4ecac7b1614c
0d40: 31 38 65 36 66 61 34 38 62 35 63 37 66 39 35 65 18e6fa48b5c7f95e
0d50: 31 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 19}..test Digest
0d60: 5f 43 6f 6d 6d 61 6e 64 2d 33 2e 35 20 7b 73 68 _Command-3.5 {sh
0d70: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 61 a512} -body {..a
0d80: 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f ccumulate $test_
0d90: 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d data ::tls::md -
0da0: 64 69 67 65 73 74 20 73 68 61 35 31 32 0a 20 20 digest sha512.
0db0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 } -result {d17
0dc0: 38 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35 8e759dc591270715
0dd0: 38 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38 88d2fad173c06238
0de0: 64 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33 d87e800a6403c0a3
0df0: 30 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63 0daa4faaf05d0e7c
0e00: 65 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33 e04916afaa6a58a3
0e10: 30 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36 0cbeb597dacb01c6
0e20: 32 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36 2f9fb9d89bab9da6
0e30: 33 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 30c699e4816f1}..
0e40: 74 65 73 74 20 44 69 67 65 73 74 5f 43 6f 6d 6d test Digest_Comm
0e50: 61 6e 64 2d 33 2e 36 20 7b 6d 64 35 20 62 69 6e and-3.6 {md5 bin
0e60: 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 } -body {..binar
0e70: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 61 63 y encode hex [ac
0e80: 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 cumulate $test_d
0e90: 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 ata ::tls::md -d
0ea0: 69 67 65 73 74 20 6d 64 35 20 2d 62 69 6e 5d 0a igest md5 -bin].
0eb0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 } -result {9
0ec0: 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 62bf0803b4232ec2
0ed0: 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 3bd8427bb94ea09}
0ee0: 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 6f ..test Digest_Co
0ef0: 6d 6d 61 6e 64 2d 33 2e 37 20 7b 6d 64 35 20 68 mmand-3.7 {md5 h
0f00: 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 61 63 63 ex} -body {..acc
0f10: 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 umulate $test_da
0f20: 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 ta ::tls::md -di
0f30: 67 65 73 74 20 6d 64 35 20 2d 68 65 78 0a 20 20 gest md5 -hex.
0f40: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 } -result {962
0f50: 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62 bf0803b4232ec23b
0f60: 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a d8427bb94ea09}..
0f70: 23 20 54 65 73 74 20 64 69 67 65 73 74 20 63 6f # Test digest co
0f80: 6d 6d 61 6e 64 20 66 6f 72 20 64 61 74 61 20 73 mmand for data s
0f90: 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73 74 20 44 hortcut...test D
0fa0: 69 67 65 73 74 5f 44 61 74 61 2d 34 2e 31 20 7b igest_Data-4.1 {
0fb0: 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a md4} -body {..::
0fc0: 74 6c 73 3a 3a 6d 64 20 6d 64 34 20 24 74 65 73 tls::md md4 $tes
0fd0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
0fe0: 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32 sult {793399f792
0ff0: 65 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62 eca2752c6af3234b
1000: 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 a70858}..test Di
1010: 67 65 73 74 5f 44 61 74 61 2d 34 2e 32 20 7b 6d gest_Data-4.2 {m
1020: 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 d5} -body {..::t
1030: 6c 73 3a 3a 6d 64 20 6d 64 35 20 24 74 65 73 74 ls::md md5 $test
1040: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 _data. } -res
1050: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 ult {962bf0803b4
1060: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 232ec23bd8427bb9
1070: 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 4ea09}..test Dig
1080: 65 73 74 5f 44 61 74 61 2d 34 2e 33 20 7b 73 68 est_Data-4.3 {sh
1090: 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 a1} -body {..::t
10a0: 6c 73 3a 3a 6d 64 20 73 68 61 31 20 24 74 65 73 ls::md sha1 $tes
10b0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
10c0: 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 sult {4fe03b7f25
10d0: 36 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30 68551dfafb98ca60
10e0: 30 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 04e65c4b71aa7d}.
10f0: 0a 74 65 73 74 20 44 69 67 65 73 74 5f 44 61 74 .test Digest_Dat
1100: 61 2d 34 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d a-4.4 {sha256} -
1110: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d body {..::tls::m
1120: 64 20 73 68 61 32 35 36 20 24 74 65 73 74 5f 64 d sha256 $test_d
1130: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ata. } -resul
1140: 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32 30 t {9d3578fc13820
1150: 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66 65 5cf0ee4b4cef35fe
1160: 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31 34 101bb4ecac7b1614
1170: 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39 35 c18e6fa48b5c7f95
1180: 65 31 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 e19}..test Diges
1190: 74 5f 44 61 74 61 2d 34 2e 35 20 7b 73 68 61 35 t_Data-4.5 {sha5
11a0: 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 12} -body {..::t
11b0: 6c 73 3a 3a 6d 64 20 73 68 61 35 31 32 20 24 74 ls::md sha512 $t
11c0: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d est_data. } -
11d0: 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39 result {d178e759
11e0: 64 63 35 39 31 32 37 30 37 31 35 38 38 64 32 66 dc59127071588d2f
11f0: 61 64 31 37 33 63 30 36 32 33 38 64 38 37 65 38 ad173c06238d87e8
1200: 30 30 61 36 34 30 33 63 30 61 33 30 64 61 61 34 00a6403c0a30daa4
1210: 66 61 61 66 30 35 64 30 65 37 63 65 30 34 39 31 faaf05d0e7ce0491
1220: 36 61 66 61 61 36 61 35 38 61 33 30 63 62 65 62 6afaa6a58a30cbeb
1230: 35 39 37 64 61 63 62 30 31 63 36 32 66 39 66 62 597dacb01c62f9fb
1240: 39 64 38 39 62 61 62 39 64 61 36 33 30 63 36 39 9d89bab9da630c69
1250: 39 65 34 38 31 36 66 31 7d 0a 0a 23 20 54 65 73 9e4816f1}..# Tes
1260: 74 20 64 69 67 65 73 74 20 63 6f 6d 6d 61 6e 64 t digest command
1270: 20 66 6f 72 20 64 61 74 61 0a 0a 74 65 73 74 20 for data..test
1280: 44 69 67 65 73 74 5f 44 61 74 61 2d 34 2e 36 20 Digest_Data-4.6
1290: 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a {md4} -body {..:
12a0: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 :tls::md -digest
12b0: 20 6d 64 34 20 2d 64 61 74 61 20 24 74 65 73 74 md4 -data $test
12c0: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 _data. } -res
12d0: 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 ult {793399f792e
12e0: 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62 61 ca2752c6af3234ba
12f0: 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 44 69 67 70858}..test Dig
1300: 65 73 74 5f 44 61 74 61 2d 34 2e 37 20 7b 6d 64 est_Data-4.7 {md
1310: 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 5} -body {..::tl
1320: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 s::md -digest md
1330: 35 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 5 -data $test_da
1340: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ta. } -result
1350: 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 {962bf0803b4232
1360: 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 ec23bd8427bb94ea
1370: 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 09}..test Digest
1380: 5f 44 61 74 61 2d 34 2e 38 20 7b 73 68 61 31 7d _Data-4.8 {sha1}
1390: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
13a0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 :md -digest sha1
13b0: 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 -data $test_dat
13c0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 a. } -result
13d0: 7b 34 66 65 30 33 62 37 66 32 35 36 38 35 35 31 {4fe03b7f2568551
13e0: 64 66 61 66 62 39 38 63 61 36 30 30 34 65 36 35 dfafb98ca6004e65
13f0: 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 c4b71aa7d}..test
1400: 20 44 69 67 65 73 74 5f 44 61 74 61 2d 34 2e 39 Digest_Data-4.9
1410: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 {sha256} -body
1420: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 {..::tls::md -di
1430: 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 gest sha256 -dat
1440: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 a $test_data.
1450: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 } -result {9d35
1460: 37 38 66 63 31 33 38 32 30 35 63 66 30 65 65 34 78fc138205cf0ee4
1470: 62 34 63 65 66 33 35 66 65 31 30 31 62 62 34 65 b4cef35fe101bb4e
1480: 63 61 63 37 62 31 36 31 34 63 31 38 65 36 66 61 cac7b1614c18e6fa
1490: 34 38 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 48b5c7f95e19}..t
14a0: 65 73 74 20 44 69 67 65 73 74 5f 44 61 74 61 2d est Digest_Data-
14b0: 34 2e 31 30 20 7b 73 68 61 35 31 32 7d 20 2d 62 4.10 {sha512} -b
14c0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 ody {..::tls::md
14d0: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20 -digest sha512
14e0: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 -data $test_data
14f0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
1500: 64 31 37 38 65 37 35 39 64 63 35 39 31 32 37 30 d178e759dc591270
1510: 37 31 35 38 38 64 32 66 61 64 31 37 33 63 30 36 71588d2fad173c06
1520: 32 33 38 64 38 37 65 38 30 30 61 36 34 30 33 63 238d87e800a6403c
1530: 30 61 33 30 64 61 61 34 66 61 61 66 30 35 64 30 0a30daa4faaf05d0
1540: 65 37 63 65 30 34 39 31 36 61 66 61 61 36 61 35 e7ce04916afaa6a5
1550: 38 61 33 30 63 62 65 62 35 39 37 64 61 63 62 30 8a30cbeb597dacb0
1560: 31 63 36 32 66 39 66 62 39 64 38 39 62 61 62 39 1c62f9fb9d89bab9
1570: 64 61 36 33 30 63 36 39 39 65 34 38 31 36 66 31 da630c699e4816f1
1580: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 44 }..test Digest_D
1590: 61 74 61 2d 34 2e 31 31 20 7b 6d 64 35 20 62 69 ata-4.11 {md5 bi
15a0: 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 n} -body {..bina
15b0: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a ry encode hex [:
15c0: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 :tls::md -digest
15d0: 20 6d 64 35 20 2d 64 61 74 61 20 24 74 65 73 74 md5 -data $test
15e0: 5f 64 61 74 61 20 2d 62 69 6e 5d 0a 20 20 20 20 _data -bin].
15f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 } -result {962bf
1600: 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38 0803b4232ec23bd8
1610: 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 427bb94ea09}..te
1620: 73 74 20 44 69 67 65 73 74 5f 44 61 74 61 2d 34 st Digest_Data-4
1630: 2e 31 32 20 7b 6d 64 35 20 68 65 78 7d 20 2d 62 .12 {md5 hex} -b
1640: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 ody {..::tls::md
1650: 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 -digest md5 -da
1660: 74 61 20 24 74 65 73 74 5f 64 61 74 61 20 2d 68 ta $test_data -h
1670: 65 78 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ex. } -result
1680: 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 {962bf0803b4232
1690: 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 ec23bd8427bb94ea
16a0: 30 39 7d 0a 0a 23 20 54 65 73 74 20 64 69 67 65 09}..# Test dige
16b0: 73 74 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 66 st command for f
16c0: 69 6c 65 0a 0a 0a 74 65 73 74 20 44 69 67 65 73 ile...test Diges
16d0: 74 5f 46 69 6c 65 2d 35 2e 31 20 7b 6d 64 34 7d t_File-5.1 {md4}
16e0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
16f0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 34 20 :md -digest md4
1700: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 -file $test_file
1710: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
1720: 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37 35 793399f792eca275
1730: 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35 38 2c6af3234ba70858
1740: 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 46 }..test Digest_F
1750: 69 6c 65 2d 35 2e 32 20 7b 6d 64 35 7d 20 2d 62 ile-5.2 {md5} -b
1760: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 ody {..::tls::md
1770: 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 66 69 -digest md5 -fi
1780: 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 le $test_file.
1790: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 } -result {962
17a0: 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62 bf0803b4232ec23b
17b0: 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a d8427bb94ea09}..
17c0: 74 65 73 74 20 44 69 67 65 73 74 5f 46 69 6c 65 test Digest_File
17d0: 2d 35 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 -5.3 {sha1} -bod
17e0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d y {..::tls::md -
17f0: 64 69 67 65 73 74 20 73 68 61 31 20 2d 66 69 6c digest sha1 -fil
1800: 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 e $test_file.
1810: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 } -result {4fe0
1820: 33 62 37 66 32 35 36 38 35 35 31 64 66 61 66 62 3b7f2568551dfafb
1830: 39 38 63 61 36 30 30 34 65 36 35 63 34 62 37 31 98ca6004e65c4b71
1840: 61 61 37 64 7d 0a 0a 74 65 73 74 20 44 69 67 65 aa7d}..test Dige
1850: 73 74 5f 46 69 6c 65 2d 35 2e 34 20 7b 73 68 61 st_File-5.4 {sha
1860: 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 256} -body {..::
1870: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 tls::md -digest
1880: 73 68 61 32 35 36 20 2d 66 69 6c 65 20 24 74 65 sha256 -file $te
1890: 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 st_file. } -r
18a0: 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31 esult {9d3578fc1
18b0: 33 38 32 30 35 63 66 30 65 65 34 62 34 63 65 66 38205cf0ee4b4cef
18c0: 33 35 66 65 31 30 31 62 62 34 65 63 61 63 37 62 35fe101bb4ecac7b
18d0: 31 36 31 34 63 31 38 65 36 66 61 34 38 62 35 63 1614c18e6fa48b5c
18e0: 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 44 7f95e19}..test D
18f0: 69 67 65 73 74 5f 46 69 6c 65 2d 35 2e 35 20 7b igest_File-5.5 {
1900: 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a sha512} -body {.
1910: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 .::tls::md -dige
1920: 73 74 20 73 68 61 35 31 32 20 2d 66 69 6c 65 20 st sha512 -file
1930: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d $test_file. }
1940: 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 -result {d178e7
1950: 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38 64 59dc59127071588d
1960: 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38 37 2fad173c06238d87
1970: 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64 61 e800a6403c0a30da
1980: 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30 34 a4faaf05d0e7ce04
1990: 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63 62 916afaa6a58a30cb
19a0: 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66 39 eb597dacb01c62f9
19b0: 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30 63 fb9d89bab9da630c
19c0: 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 73 699e4816f1}..tes
19d0: 74 20 44 69 67 65 73 74 5f 46 69 6c 65 2d 35 2e t Digest_File-5.
19e0: 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64 6 {md5 bin} -bod
19f0: 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f y {..binary enco
1a00: 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 6d de hex [::tls::m
1a10: 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 66 d -digest md5 -f
1a20: 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 20 2d ile $test_file -
1a30: 62 69 6e 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 bin]. } -resu
1a40: 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 lt {962bf0803b42
1a50: 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 32ec23bd8427bb94
1a60: 65 61 30 39 7d 0a 0a 74 65 73 74 20 44 69 67 65 ea09}..test Dige
1a70: 73 74 5f 46 69 6c 65 2d 35 2e 37 20 7b 6d 64 35 st_File-5.7 {md5
1a80: 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a hex} -body {..:
1a90: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 :tls::md -digest
1aa0: 20 6d 64 35 20 2d 66 69 6c 65 20 24 74 65 73 74 md5 -file $test
1ab0: 5f 66 69 6c 65 20 2d 68 65 78 0a 20 20 20 20 7d _file -hex. }
1ac0: 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 -result {962bf0
1ad0: 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 803b4232ec23bd84
1ae0: 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 23 20 54 27bb94ea09}..# T
1af0: 65 73 74 20 48 4d 41 43 20 63 6f 6d 6d 61 6e 64 est HMAC command
1b00: 0a 0a 0a 74 65 73 74 20 48 4d 41 43 2d 36 2e 31 ...test HMAC-6.1
1b10: 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a {data} -body {.
1b20: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 .::tls::hmac -di
1b30: 67 65 73 74 20 6d 64 35 20 2d 6b 65 79 20 24 74 gest md5 -key $t
1b40: 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 est_key -data $t
1b50: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d est_data. } -
1b60: 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 result {f98327ef
1b70: 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 3e20ab6d388f676c
1b80: 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 6a79d93d}..test
1b90: 48 4d 41 43 2d 36 2e 32 20 7b 66 69 6c 65 7d 20 HMAC-6.2 {file}
1ba0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
1bb0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 6d 64 35 hmac -digest md5
1bc0: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 -key $test_key
1bd0: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 -file $test_file
1be0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
1bf0: 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 f98327ef3e20ab6d
1c00: 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 388f676c6a79d93d
1c10: 7d 0a 0a 74 65 73 74 20 48 4d 41 43 2d 36 2e 33 }..test HMAC-6.3
1c20: 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 {channel} -body
1c30: 20 7b 0a 09 72 65 61 64 5f 63 68 61 6e 20 3a 3a {..read_chan ::
1c40: 74 6c 73 3a 3a 68 6d 61 63 20 24 74 65 73 74 5f tls::hmac $test_
1c50: 66 69 6c 65 20 2d 64 69 67 65 73 74 20 6d 64 35 file -digest md5
1c60: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a -key $test_key.
1c70: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 } -result {f
1c80: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33 98327ef3e20ab6d3
1c90: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 88f676c6a79d93d}
1ca0: 0a 0a 74 65 73 74 20 48 4d 41 43 2d 36 2e 34 20 ..test HMAC-6.4
1cb0: 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 {command} -body
1cc0: 7b 0a 09 61 63 63 75 6d 75 6c 61 74 65 20 24 74 {..accumulate $t
1cd0: 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a est_data ::tls::
1ce0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 6d 64 35 hmac -digest md5
1cf0: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a -key $test_key.
1d00: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 } -result {f
1d10: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33 98327ef3e20ab6d3
1d20: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 88f676c6a79d93d}
1d30: 0a 0a 74 65 73 74 20 48 4d 41 43 2d 36 2e 35 20 ..test HMAC-6.5
1d40: 7b 64 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64 79 {data bin} -body
1d50: 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 {..binary encod
1d60: 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 68 6d e hex [::tls::hm
1d70: 61 63 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d ac -digest md5 -
1d80: 62 69 6e 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b bin -key $test_k
1d90: 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 ey -data $test_d
1da0: 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 ata]. } -resu
1db0: 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 lt {f98327ef3e20
1dc0: 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 ab6d388f676c6a79
1dd0: 64 39 33 64 7d 0a 0a 23 20 54 65 73 74 20 44 69 d93d}..# Test Di
1de0: 67 65 73 74 20 48 4d 41 43 0a 0a 0a 74 65 73 74 gest HMAC...test
1df0: 20 44 69 67 65 73 74 5f 48 4d 41 43 2d 37 2e 31 Digest_HMAC-7.1
1e00: 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a {data} -body {.
1e10: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 .::tls::md -dige
1e20: 73 74 20 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 st md5 -key $tes
1e30: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 t_key -data $tes
1e40: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
1e50: 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 sult {f98327ef3e
1e60: 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 20ab6d388f676c6a
1e70: 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 44 69 79d93d}..test Di
1e80: 67 65 73 74 5f 48 4d 41 43 2d 37 2e 32 20 7b 66 gest_HMAC-7.2 {f
1e90: 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a ile} -body {..::
1ea0: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 tls::md -digest
1eb0: 6d 64 35 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b md5 -key $test_k
1ec0: 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 ey -file $test_f
1ed0: 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c ile. } -resul
1ee0: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 t {f98327ef3e20a
1ef0: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64 b6d388f676c6a79d
1f00: 39 33 64 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 93d}..test Diges
1f10: 74 5f 48 4d 41 43 2d 37 2e 33 20 7b 63 68 61 6e t_HMAC-7.3 {chan
1f20: 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 72 65 nel} -body {..re
1f30: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d ad_chan ::tls::m
1f40: 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 d $test_file -di
1f50: 67 65 73 74 20 6d 64 35 20 2d 6b 65 79 20 24 74 gest md5 -key $t
1f60: 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 est_key. } -r
1f70: 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 esult {f98327ef3
1f80: 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 e20ab6d388f676c6
1f90: 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 44 a79d93d}..test D
1fa0: 69 67 65 73 74 5f 48 4d 41 43 2d 37 2e 34 20 7b igest_HMAC-7.4 {
1fb0: 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b command} -body {
1fc0: 0a 09 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 ..accumulate $te
1fd0: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d st_data ::tls::m
1fe0: 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 6b d -digest md5 -k
1ff0: 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 ey $test_key.
2000: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 } -result {f983
2010: 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 27ef3e20ab6d388f
2020: 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 676c6a79d93d}..t
2030: 65 73 74 20 44 69 67 65 73 74 5f 48 4d 41 43 2d est Digest_HMAC-
2040: 37 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d 7.5 {data bin} -
2050: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 body {..binary e
2060: 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 ncode hex [::tls
2070: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 ::md -digest md5
2080: 20 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65 73 74 -bin -key $test
2090: 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 _key -data $test
20a0: 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 _data]. } -re
20b0: 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 sult {f98327ef3e
20c0: 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 20ab6d388f676c6a
20d0: 37 39 64 39 33 64 7d 0a 0a 23 20 54 65 73 74 20 79d93d}..# Test
20e0: 43 4d 41 43 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 CMAC command.set
20f0: 20 74 65 73 74 5f 63 69 70 68 65 72 20 22 61 65 test_cipher "ae
2100: 73 2d 31 32 38 2d 63 62 63 22 0a 73 65 74 20 74 s-128-cbc".set t
2110: 65 73 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65 est_key "Example
2120: 20 6b 65 79 20 31 32 33 34 22 0a 0a 0a 74 65 73 key 1234"...tes
2130: 74 20 43 4d 41 43 2d 38 2e 31 20 7b 64 61 74 61 t CMAC-8.1 {data
2140: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
2150: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24 ::cmac -cipher $
2160: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 test_cipher -key
2170: 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 $test_key -data
2180: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 $test_data.
2190: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 } -result {baf5c
21a0: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 20f9973e2d606b14
21b0: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 c7efdfe52fa}..te
21c0: 73 74 20 43 4d 41 43 2d 38 2e 32 20 7b 66 69 6c st CMAC-8.2 {fil
21d0: 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c e} -body {..::tl
21e0: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 s::cmac -cipher
21f0: 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 $test_cipher -ke
2200: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c y $test_key -fil
2210: 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 e $test_file.
2220: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 } -result {baf5
2230: 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 c20f9973e2d606b1
2240: 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 4c7efdfe52fa}..t
2250: 65 73 74 20 43 4d 41 43 2d 38 2e 33 20 7b 63 68 est CMAC-8.3 {ch
2260: 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 annel} -body {..
2270: 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a read_chan ::tls:
2280: 3a 63 6d 61 63 20 24 74 65 73 74 5f 66 69 6c 65 :cmac $test_file
2290: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 -cipher $test_c
22a0: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 ipher -key $test
22b0: 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 _key. } -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 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d -8.4 {command} -
2300: 62 6f 64 79 20 7b 0a 09 61 63 63 75 6d 75 6c 61 body {..accumula
2310: 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a te $test_data ::
2320: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 tls::cmac -ciphe
2330: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d r $test_cipher -
2340: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 key $test_key.
2350: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 } -result {baf
2360: 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 5c20f9973e2d606b
2370: 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 14c7efdfe52fa}..
2380: 74 65 73 74 20 43 4d 41 43 2d 38 2e 35 20 7b 64 test CMAC-8.5 {d
2390: 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b ata bin} -body {
23a0: 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 ..binary encode
23b0: 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 63 6d 61 63 hex [::tls::cmac
23c0: 20 2d 62 69 6e 20 2d 63 69 70 68 65 72 20 24 74 -bin -cipher $t
23d0: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 est_cipher -key
23e0: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 $test_key -data
23f0: 24 74 65 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 $test_data].
2400: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 } -result {baf5c
2410: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 20f9973e2d606b14
2420: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 23 20 c7efdfe52fa}..#
2430: 54 65 73 74 20 44 69 67 65 73 74 20 43 4d 41 43 Test Digest CMAC
2440: 0a 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f 43 ...test Digest_C
2450: 4d 41 43 2d 39 2e 31 20 7b 64 61 74 61 7d 20 2d MAC-9.1 {data} -
2460: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d body {..::tls::m
2470: 64 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f d -cipher $test_
2480: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 cipher -key $tes
2490: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 t_key -data $tes
24a0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 t_data. } -re
24b0: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 sult {baf5c20f99
24c0: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 73e2d606b14c7efd
24d0: 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 44 69 fe52fa}..test Di
24e0: 67 65 73 74 5f 43 4d 41 43 2d 39 2e 32 20 7b 66 gest_CMAC-9.2 {f
24f0: 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a ile} -body {..::
2500: 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 tls::md -cipher
2510: 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 $test_cipher -ke
2520: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c y $test_key -fil
2530: 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 e $test_file.
2540: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 } -result {baf5
2550: 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 c20f9973e2d606b1
2560: 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 4c7efdfe52fa}..t
2570: 65 73 74 20 44 69 67 65 73 74 5f 43 4d 41 43 2d est Digest_CMAC-
2580: 39 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 9.3 {channel} -b
2590: 6f 64 79 20 7b 0a 09 72 65 61 64 5f 63 68 61 6e ody {..read_chan
25a0: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 ::tls::md $test
25b0: 5f 66 69 6c 65 20 2d 63 69 70 68 65 72 20 24 74 _file -cipher $t
25c0: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 est_cipher -key
25d0: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 $test_key. }
25e0: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 -result {baf5c20
25f0: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37 f9973e2d606b14c7
2600: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 efdfe52fa}..test
2610: 20 44 69 67 65 73 74 5f 43 4d 41 43 2d 39 2e 34 Digest_CMAC-9.4
2620: 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 {command} -body
2630: 20 7b 0a 09 61 63 63 75 6d 75 6c 61 74 65 20 24 {..accumulate $
2640: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a test_data ::tls:
2650: 3a 6d 64 20 2d 63 69 70 68 65 72 20 24 74 65 73 :md -cipher $tes
2660: 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 t_cipher -key $t
2670: 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 est_key. } -r
2680: 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 esult {baf5c20f9
2690: 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 973e2d606b14c7ef
26a0: 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 44 dfe52fa}..test D
26b0: 69 67 65 73 74 5f 43 4d 41 43 2d 39 2e 35 20 7b igest_CMAC-9.5 {
26c0: 64 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64 79 20 data bin} -body
26d0: 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 {..binary encode
26e0: 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 6d 64 20 hex [::tls::md
26f0: 2d 62 69 6e 20 2d 63 69 70 68 65 72 20 24 74 65 -bin -cipher $te
2700: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 st_cipher -key $
2710: 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 test_key -data $
2720: 74 65 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d test_data]. }
2730: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 -result {baf5c2
2740: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 0f9973e2d606b14c
2750: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 23 20 54 7efdfe52fa}..# T
2760: 65 73 74 20 4d 41 43 20 63 6f 6d 6d 61 6e 64 0a est MAC command.
2770: 0a 0a 74 65 73 74 20 4d 41 43 2d 31 30 2e 31 20 ..test MAC-10.1
2780: 7b 48 4d 41 43 7d 20 2d 63 6f 6e 73 74 72 61 69 {HMAC} -constrai
2790: 6e 74 73 20 7b 6e 65 77 5f 61 70 69 7d 20 2d 62 nts {new_api} -b
27a0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 ody {..::tls::ma
27b0: 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 c -digest sha256
27c0: 20 2d 6d 61 63 20 68 6d 61 63 20 2d 6b 65 79 20 -mac hmac -key
27d0: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 $test_key -data
27e0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d $test_data. }
27f0: 20 2d 72 65 73 75 6c 74 20 7b 34 39 38 65 66 35 -result {498ef5
2800: 65 66 37 31 34 32 34 66 38 31 64 61 37 34 39 39 ef71424f81da7499
2810: 62 32 65 65 61 65 31 64 30 61 33 34 38 64 64 34 b2eeae1d0a348dd4
2820: 30 62 38 34 31 65 61 32 37 62 64 64 65 34 39 34 0b841ea27bdde494
2830: 66 36 62 63 39 30 34 36 66 66 7d 0a 0a 74 65 73 f6bc9046ff}..tes
2840: 74 20 4d 41 43 2d 31 30 2e 32 20 7b 43 4d 41 43 t MAC-10.2 {CMAC
2850: 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b } -constraints {
2860: 6e 65 77 5f 61 70 69 7d 20 2d 62 6f 64 79 20 7b new_api} -body {
2870: 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 63 69 ..::tls::mac -ci
2880: 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 pher $test_ciphe
2890: 72 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 r -digest sha256
28a0: 20 2d 6d 61 63 20 63 6d 61 63 20 2d 6b 65 79 20 -mac cmac -key
28b0: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 $test_key -data
28c0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d $test_data. }
28d0: 20 2d 72 65 73 75 6c 74 20 7b 34 39 38 65 66 35 -result {498ef5
28e0: 65 66 37 31 34 32 34 66 38 31 64 61 37 34 39 39 ef71424f81da7499
28f0: 62 32 65 65 61 65 31 64 30 61 33 34 38 64 64 34 b2eeae1d0a348dd4
2900: 30 62 38 34 31 65 61 32 37 62 64 64 65 34 39 34 0b841ea27bdde494
2910: 66 36 62 63 39 30 34 36 66 66 7d 0a 0a 23 20 44 f6bc9046ff}..# D
2920: 69 67 65 73 74 20 45 72 72 6f 72 20 43 61 73 65 igest Error Case
2930: 73 0a 0a 0a 74 65 73 74 20 44 69 67 65 73 74 5f s...test Digest_
2940: 45 72 72 6f 72 73 2d 31 31 2e 31 20 7b 54 6f 6f Errors-11.1 {Too
2950: 20 66 65 77 20 61 72 67 73 7d 20 2d 62 6f 64 79 few args} -body
2960: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 0a 20 20 {..::tls::md.
2970: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f } -result {wro
2980: 6e 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c ng # args: shoul
2990: 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 64 20 d be "::tls::md
29a0: 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 ?-bin|-hex? ?-ci
29b0: 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 pher name? ?-dig
29c0: 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 est name? ?-key
29d0: 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f key? ?-mac name?
29e0: 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 [-channel chan
29f0: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 | -command cmdNa
2a00: 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e me | -file filen
2a10: 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 ame | ?-data? da
2a20: 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 ta]"} -returnCod
2a30: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 es {1}..test Dig
2a40: 65 73 74 5f 45 72 72 6f 72 73 2d 31 31 2e 32 20 est_Errors-11.2
2a50: 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 67 73 7d 20 {Too many args}
2a60: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
2a70: 6d 64 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d 6d md too many comm
2a80: 61 6e 64 20 6c 69 6e 65 20 61 72 67 73 20 74 6f and line args to
2a90: 20 70 61 73 73 20 74 68 65 20 74 65 73 74 20 77 pass the test w
2aa0: 69 74 68 6f 75 74 20 61 6e 20 65 72 72 6f 72 20 ithout an error
2ab0: 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20 20 20 7d or failing. }
2ac0: 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 -result {wrong
2ad0: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 # args: should b
2ae0: 65 20 22 3a 3a 74 6c 73 3a 3a 6d 64 20 3f 2d 62 e "::tls::md ?-b
2af0: 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 in|-hex? ?-ciphe
2b00: 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 r name? ?-digest
2b10: 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 name? ?-key key
2b20: 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d ? ?-mac name? [-
2b30: 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d channel chan | -
2b40: 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 command cmdName
2b50: 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 | -file filename
2b60: 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d | ?-data? data]
2b70: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 "} -returnCodes
2b80: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 {1}..test Digest
2b90: 5f 45 72 72 6f 72 73 2d 31 31 2e 33 20 7b 49 6e _Errors-11.3 {In
2ba0: 76 61 6c 69 64 20 64 69 67 65 73 74 7d 20 2d 62 valid digest} -b
2bb0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 ody {..::tls::md
2bc0: 20 62 6f 67 75 73 20 64 61 74 61 0a 20 20 20 20 bogus data.
2bd0: 7d 20 2d 72 65 73 75 6c 74 20 7b 49 6e 76 61 6c } -result {Inval
2be0: 69 64 20 64 69 67 65 73 74 20 22 62 6f 67 75 73 id digest "bogus
2bf0: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 "} -returnCodes
2c00: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 {1}..test Digest
2c10: 5f 45 72 72 6f 72 73 2d 31 31 2e 34 20 7b 49 6e _Errors-11.4 {In
2c20: 76 61 6c 69 64 20 64 69 67 65 73 74 20 41 72 67 valid digest Arg
2c30: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
2c40: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 62 6f 67 ::md -digest bog
2c50: 75 73 20 2d 64 61 74 61 20 64 61 74 61 0a 20 20 us -data data.
2c60: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 49 6e 76 } -result {Inv
2c70: 61 6c 69 64 20 64 69 67 65 73 74 20 22 62 6f 67 alid digest "bog
2c80: 75 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 us"} -returnCode
2c90: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 s {1}..test Dige
2ca0: 73 74 5f 45 72 72 6f 72 73 2d 31 31 2e 35 20 7b st_Errors-11.5 {
2cb0: 4e 6f 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 No digest} -body
2cc0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 68 {..::tls::md -h
2cd0: 65 78 20 2d 64 61 74 61 20 76 61 6c 75 65 0a 20 ex -data value.
2ce0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f } -result {No
2cf0: 20 64 69 67 65 73 74 20 73 70 65 63 69 66 69 65 digest specifie
2d00: 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 d} -returnCodes
2d10: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 {1}..test Digest
2d20: 5f 45 72 72 6f 72 73 2d 31 31 2e 36 20 7b 49 6e _Errors-11.6 {In
2d30: 76 61 6c 69 64 20 6f 70 74 69 6f 6e 7d 20 2d 62 valid option} -b
2d40: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 ody {..::tls::md
2d50: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 -digest sha256
2d60: 2d 62 6f 67 75 73 20 76 61 6c 75 65 0a 20 20 20 -bogus value.
2d70: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 64 20 } -result {bad
2d80: 6f 70 74 69 6f 6e 20 22 2d 62 6f 67 75 73 22 3a option "-bogus":
2d90: 20 6d 75 73 74 20 62 65 20 2d 62 69 6e 2c 20 2d must be -bin, -
2da0: 63 68 61 6e 6e 65 6c 2c 20 2d 63 69 70 68 65 72 channel, -cipher
2db0: 2c 20 2d 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74 , -command, -dat
2dc0: 61 2c 20 2d 64 69 67 65 73 74 2c 20 2d 66 69 6c a, -digest, -fil
2dd0: 65 2c 20 2d 66 69 6c 65 6e 61 6d 65 2c 20 2d 68 e, -filename, -h
2de0: 65 78 2c 20 2d 6b 65 79 2c 20 6f 72 20 2d 6d 61 ex, -key, or -ma
2df0: 63 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 c} -returnCodes
2e00: 7b 31 7d 0a 0a 74 65 73 74 20 44 69 67 65 73 74 {1}..test Digest
2e10: 5f 45 72 72 6f 72 73 2d 31 31 2e 37 20 7b 49 6e _Errors-11.7 {In
2e20: 76 61 6c 69 64 20 66 69 6c 65 7d 20 2d 62 6f 64 valid file} -bod
2e30: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d y {..::tls::md -
2e40: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 66 digest sha256 -f
2e50: 69 6c 65 20 62 6f 67 75 73 0a 20 20 20 20 7d 20 ile bogus. }
2e60: 2d 72 65 73 75 6c 74 20 7b 63 6f 75 6c 64 6e 27 -result {couldn'
2e70: 74 20 6f 70 65 6e 20 22 62 6f 67 75 73 22 3a 20 t open "bogus":
2e80: 6e 6f 20 73 75 63 68 20 66 69 6c 65 20 6f 72 20 no such file or
2e90: 64 69 72 65 63 74 6f 72 79 7d 20 2d 72 65 74 75 directory} -retu
2ea0: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 rnCodes {1}..tes
2eb0: 74 20 44 69 67 65 73 74 5f 45 72 72 6f 72 73 2d t Digest_Errors-
2ec0: 31 31 2e 38 20 7b 49 6e 76 61 6c 69 64 20 63 68 11.8 {Invalid ch
2ed0: 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 annel} -body {..
2ee0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 ::tls::md -diges
2ef0: 74 20 73 68 61 32 35 36 20 2d 63 68 61 6e 6e 65 t sha256 -channe
2f00: 6c 20 62 6f 67 75 73 0a 20 20 20 20 7d 20 2d 72 l bogus. } -r
2f10: 65 73 75 6c 74 20 7b 63 61 6e 20 6e 6f 74 20 66 esult {can not f
2f20: 69 6e 64 20 63 68 61 6e 6e 65 6c 20 6e 61 6d 65 ind channel name
2f30: 64 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75 d "bogus"} -retu
2f40: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 23 20 43 rnCodes {1}..# C
2f50: 4d 41 43 20 45 72 72 6f 72 20 43 61 73 65 73 0a MAC Error Cases.
2f60: 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f ..test CMAC_Erro
2f70: 72 73 2d 31 32 2e 31 20 7b 54 6f 6f 20 66 65 77 rs-12.1 {Too few
2f80: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 args} -body {..
2f90: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 0a 20 20 20 20 ::tls::cmac.
2fa0: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 } -result {wrong
2fb0: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 # args: should
2fc0: 62 65 20 22 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 be "::tls::cmac
2fd0: 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 ?-bin|-hex? ?-ci
2fe0: 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 pher name? ?-dig
2ff0: 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 est name? ?-key
3000: 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f key? ?-mac name?
3010: 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 [-channel chan
3020: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 | -command cmdNa
3030: 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e me | -file filen
3040: 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 ame | ?-data? da
3050: 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 ta]"} -returnCod
3060: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 43 4d 41 es {1}..test CMA
3070: 43 5f 45 72 72 6f 72 73 2d 31 32 2e 32 20 7b 4e C_Errors-12.2 {N
3080: 6f 20 63 69 70 68 65 72 7d 20 2d 62 6f 64 79 20 o cipher} -body
3090: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d {..::tls::cmac -
30a0: 68 65 78 20 2d 64 61 74 61 20 76 61 6c 75 65 0a hex -data value.
30b0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e } -result {N
30c0: 6f 20 63 69 70 68 65 72 20 73 70 65 63 69 66 69 o cipher specifi
30d0: 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 ed} -returnCodes
30e0: 20 7b 31 7d 0a 0a 74 65 73 74 20 43 4d 41 43 5f {1}..test CMAC_
30f0: 45 72 72 6f 72 73 2d 31 32 2e 33 20 7b 4e 6f 20 Errors-12.3 {No
3100: 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a key} -body {..::
3110: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 tls::cmac -ciphe
3120: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d r $test_cipher -
3130: 64 61 74 61 20 76 61 6c 75 65 0a 20 20 20 20 7d data value. }
3140: 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6b 65 79 -result {No key
3150: 20 73 70 65 63 69 66 69 65 64 7d 20 2d 72 65 74 specified} -ret
3160: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 urnCodes {1}..te
3170: 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 st CMAC_Errors-1
3180: 32 2e 34 20 7b 49 6e 76 61 6c 69 64 20 63 69 70 2.4 {Invalid cip
3190: 68 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a her} -body {..::
31a0: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 tls::cmac -ciphe
31b0: 72 20 62 6f 67 75 73 20 2d 64 61 74 61 20 76 61 r bogus -data va
31c0: 6c 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c lue. } -resul
31d0: 74 20 7b 49 6e 76 61 6c 69 64 20 63 69 70 68 65 t {Invalid ciphe
31e0: 72 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75 r "bogus"} -retu
31f0: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 23 20 48 rnCodes {1}..# H
3200: 4d 41 43 20 45 72 72 6f 72 20 43 61 73 65 73 0a MAC Error Cases.
3210: 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f ..test HMAC_Erro
3220: 72 73 2d 31 33 2e 31 20 7b 54 6f 6f 20 66 65 77 rs-13.1 {Too few
3230: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 args} -body {..
3240: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 0a 20 20 20 20 ::tls::hmac.
3250: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 } -result {wrong
3260: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 # args: should
3270: 62 65 20 22 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 be "::tls::hmac
3280: 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 ?-bin|-hex? ?-ci
3290: 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 pher name? ?-dig
32a0: 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 est name? ?-key
32b0: 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f key? ?-mac name?
32c0: 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 [-channel chan
32d0: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 | -command cmdNa
32e0: 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e me | -file filen
32f0: 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 ame | ?-data? da
3300: 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 ta]"} -returnCod
3310: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 es {1}..test HMA
3320: 43 5f 45 72 72 6f 72 73 2d 31 33 2e 32 20 7b 4e C_Errors-13.2 {N
3330: 6f 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 20 o digest} -body
3340: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d {..::tls::hmac -
3350: 68 65 78 20 2d 64 61 74 61 20 76 61 6c 75 65 0a hex -data value.
3360: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e } -result {N
3370: 6f 20 64 69 67 65 73 74 20 73 70 65 63 69 66 69 o digest specifi
3380: 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 ed} -returnCodes
3390: 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f {1}..test HMAC_
33a0: 45 72 72 6f 72 73 2d 31 33 2e 33 20 7b 4e 6f 20 Errors-13.3 {No
33b0: 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a key} -body {..::
33c0: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 tls::hmac -diges
33d0: 74 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 76 t sha256 -data v
33e0: 61 6c 75 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 alue. } -resu
33f0: 6c 74 20 7b 4e 6f 20 6b 65 79 20 73 70 65 63 69 lt {No key speci
3400: 66 69 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 fied} -returnCod
3410: 65 73 20 7b 31 7d 0a 0a 23 20 4d 41 43 20 45 72 es {1}..# MAC Er
3420: 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74 ror Cases...test
3430: 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31 34 2e 31 MAC_Errors-14.1
3440: 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20 {Too few args}
3450: 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 6e 65 -constraints {ne
3460: 77 5f 61 70 69 7d 20 2d 62 6f 64 79 20 7b 0a 09 w_api} -body {..
3470: 3a 3a 74 6c 73 3a 3a 6d 6d 61 63 0a 20 20 20 20 ::tls::mmac.
3480: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 } -result {wrong
3490: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 # args: should
34a0: 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 61 63 20 3f be "::tls::mac ?
34b0: 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 -bin|-hex? ?-cip
34c0: 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 her name? ?-dige
34d0: 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b st name? ?-key k
34e0: 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 ey? ?-mac name?
34f0: 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c [-channel chan |
3500: 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d -command cmdNam
3510: 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 e | -file filena
3520: 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 me | ?-data? dat
3530: 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 a]"} -returnCode
3540: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f s {1}..test MAC_
3550: 45 72 72 6f 72 73 2d 31 34 2e 32 20 7b 4e 6f 20 Errors-14.2 {No
3560: 6b 65 79 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74 key} -constraint
3570: 73 20 7b 6e 65 77 5f 61 70 69 7d 20 2d 62 6f 64 s {new_api} -bod
3580: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 y {..::tls::mac
3590: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d -digest sha256 -
35a0: 64 61 74 61 20 76 61 6c 75 65 0a 20 20 20 20 7d data value. }
35b0: 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6b 65 79 -result {No key
35c0: 20 73 70 65 63 69 66 69 65 64 7d 20 2d 72 65 74 specified} -ret
35d0: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 23 20 urnCodes {1}..#
35e0: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 RFC 4231 HMAC Ex
35f0: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 amples Test Case
3600: 20 23 31 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e #1.set key [bin
3610: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b ary decode hex [
3620: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 30 string repeat "0
3630: 62 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74 61 b" 20]].set data
3640: 20 22 48 69 20 54 68 65 72 65 22 0a 0a 0a 74 65 "Hi There"...te
3650: 73 74 20 52 46 43 34 32 33 31 5f 54 43 31 2d 31 st RFC4231_TC1-1
3660: 35 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 5.1 {sha224} -bo
3670: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 dy {..::tls::hma
3680: 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 c -digest sha224
3690: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 -key $key -data
36a0: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 $data. } -re
36b0: 73 75 6c 74 20 7b 38 39 36 66 62 31 31 32 38 61 sult {896fb1128a
36c0: 62 62 64 66 31 39 36 38 33 32 31 30 37 63 64 34 bbdf196832107cd4
36d0: 39 64 66 33 33 66 34 37 62 34 62 31 31 36 39 39 9df33f47b4b11699
36e0: 31 32 62 61 34 66 35 33 36 38 34 62 32 32 7d 0a 12ba4f53684b22}.
36f0: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 .test RFC4231_TC
3700: 31 2d 31 35 2e 32 20 7b 73 68 61 32 35 36 7d 20 1-15.2 {sha256}
3710: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
3720: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 hmac -digest sha
3730: 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 256 -key $key -d
3740: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 ata $data. }
3750: 2d 72 65 73 75 6c 74 20 7b 62 30 33 34 34 63 36 -result {b0344c6
3760: 31 64 38 64 62 33 38 35 33 35 63 61 38 61 66 63 1d8db38535ca8afc
3770: 65 61 66 30 62 66 31 32 62 38 38 31 64 63 32 30 eaf0bf12b881dc20
3780: 30 63 39 38 33 33 64 61 37 32 36 65 39 33 37 36 0c9833da726e9376
3790: 63 32 65 33 32 63 66 66 37 7d 0a 0a 74 65 73 74 c2e32cff7}..test
37a0: 20 52 46 43 34 32 33 31 5f 54 43 31 2d 31 35 2e RFC4231_TC1-15.
37b0: 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 3 {sha384} -body
37c0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 {..::tls::hmac
37d0: 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20 2d -digest sha384 -
37e0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 key $key -data $
37f0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 data. } -resu
3800: 6c 74 20 7b 61 66 64 30 33 39 34 34 64 38 34 38 lt {afd03944d848
3810: 39 35 36 32 36 62 30 38 32 35 66 34 61 62 34 36 95626b0825f4ab46
3820: 39 30 37 66 31 35 66 39 64 61 64 62 65 34 31 30 907f15f9dadbe410
3830: 31 65 63 36 38 32 61 61 30 33 34 63 37 63 65 62 1ec682aa034c7ceb
3840: 63 35 39 63 66 61 65 61 39 65 61 39 30 37 36 65 c59cfaea9ea9076e
3850: 64 65 37 66 34 61 66 31 35 32 65 38 62 32 66 61 de7f4af152e8b2fa
3860: 39 63 62 36 7d 0a 0a 74 65 73 74 20 52 46 43 34 9cb6}..test RFC4
3870: 32 33 31 5f 54 43 31 2d 31 35 2e 34 20 7b 73 68 231_TC1-15.4 {sh
3880: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a a512} -body {..:
3890: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 :tls::hmac -dige
38a0: 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 st sha512 -key $
38b0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a key -data $data.
38c0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 } -result {8
38d0: 37 61 61 37 63 64 65 61 35 65 66 36 31 39 64 34 7aa7cdea5ef619d4
38e0: 66 66 30 62 34 32 34 31 61 31 64 36 63 62 30 32 ff0b4241a1d6cb02
38f0: 33 37 39 66 34 65 32 63 65 34 65 63 32 37 38 37 379f4e2ce4ec2787
3900: 61 64 30 62 33 30 35 34 35 65 31 37 63 64 65 64 ad0b30545e17cded
3910: 61 61 38 33 33 62 37 64 36 62 38 61 37 30 32 30 aa833b7d6b8a7020
3920: 33 38 62 32 37 34 65 61 65 61 33 66 34 65 34 62 38b274eaea3f4e4b
3930: 65 39 64 39 31 34 65 65 62 36 31 66 31 37 30 32 e9d914eeb61f1702
3940: 65 36 39 36 63 32 30 33 61 31 32 36 38 35 34 7d e696c203a126854}
3950: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41 ..# RFC 4231 HMA
3960: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20 C Examples Test
3970: 43 61 73 65 20 23 32 20 2d 20 54 65 73 74 20 77 Case #2 - Test w
3980: 69 74 68 20 61 20 6b 65 79 20 73 68 6f 72 74 65 ith a key shorte
3990: 72 20 74 68 61 6e 20 74 68 65 20 6c 65 6e 67 74 r than the lengt
39a0: 68 20 6f 66 20 74 68 65 20 48 4d 41 43 20 6f 75 h of the HMAC ou
39b0: 74 70 75 74 2e 0a 73 65 74 20 6b 65 79 20 22 4a tput..set key "J
39c0: 65 66 65 22 0a 73 65 74 20 64 61 74 61 20 22 77 efe".set data "w
39d0: 68 61 74 20 64 6f 20 79 61 20 77 61 6e 74 20 66 hat do ya want f
39e0: 6f 72 20 6e 6f 74 68 69 6e 67 3f 22 0a 0a 0a 74 or nothing?"...t
39f0: 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 32 2d est RFC4231_TC2-
3a00: 31 36 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 16.1 {sha224} -b
3a10: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d ody {..::tls::hm
3a20: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 ac -digest sha22
3a30: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 4 -key $key -dat
3a40: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 a $data. } -r
3a50: 65 73 75 6c 74 20 7b 61 33 30 65 30 31 30 39 38 esult {a30e01098
3a60: 62 63 36 64 62 62 66 34 35 36 39 30 66 33 61 37 bc6dbbf45690f3a7
3a70: 65 39 65 36 64 30 66 38 62 62 65 61 32 61 33 39 e9e6d0f8bbea2a39
3a80: 65 36 31 34 38 30 30 38 66 64 30 35 65 34 34 7d e6148008fd05e44}
3a90: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 ..test RFC4231_T
3aa0: 43 32 2d 31 36 2e 32 20 7b 73 68 61 32 35 36 7d C2-16.2 {sha256}
3ab0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
3ac0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 :hmac -digest sh
3ad0: 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d a256 -key $key -
3ae0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d data $data. }
3af0: 20 2d 72 65 73 75 6c 74 20 7b 35 62 64 63 63 31 -result {5bdcc1
3b00: 34 36 62 66 36 30 37 35 34 65 36 61 30 34 32 34 46bf60754e6a0424
3b10: 32 36 30 38 39 35 37 35 63 37 35 61 30 30 33 66 26089575c75a003f
3b20: 30 38 39 64 32 37 33 39 38 33 39 64 65 63 35 38 089d2739839dec58
3b30: 62 39 36 34 65 63 33 38 34 33 7d 0a 0a 74 65 73 b964ec3843}..tes
3b40: 74 20 52 46 43 34 32 33 31 5f 54 43 32 2d 31 36 t RFC4231_TC2-16
3b50: 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 .3 {sha384} -bod
3b60: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 y {..::tls::hmac
3b70: 20 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20 -digest sha384
3b80: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 -key $key -data
3b90: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 $data. } -res
3ba0: 75 6c 74 20 7b 61 66 34 35 64 32 65 33 37 36 34 ult {af45d2e3764
3bb0: 38 34 30 33 31 36 31 37 66 37 38 64 32 62 35 38 84031617f78d2b58
3bc0: 61 36 62 31 62 39 63 37 65 66 34 36 34 66 35 61 a6b1b9c7ef464f5a
3bd0: 30 31 62 34 37 65 34 32 65 63 33 37 33 36 33 32 01b47e42ec373632
3be0: 32 34 34 35 65 38 65 32 32 34 30 63 61 35 65 36 2445e8e2240ca5e6
3bf0: 39 65 32 63 37 38 62 33 32 33 39 65 63 66 61 62 9e2c78b3239ecfab
3c00: 32 31 36 34 39 7d 0a 0a 74 65 73 74 20 52 46 43 21649}..test RFC
3c10: 34 32 33 31 5f 54 43 32 2d 31 36 2e 34 20 7b 73 4231_TC2-16.4 {s
3c20: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 ha512} -body {..
3c30: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 ::tls::hmac -dig
3c40: 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 est sha512 -key
3c50: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 $key -data $data
3c60: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
3c70: 31 36 34 62 37 61 37 62 66 63 66 38 31 39 65 32 164b7a7bfcf819e2
3c80: 65 33 39 35 66 62 65 37 33 62 35 36 65 30 61 33 e395fbe73b56e0a3
3c90: 38 37 62 64 36 34 32 32 32 65 38 33 31 66 64 36 87bd64222e831fd6
3ca0: 31 30 32 37 30 63 64 37 65 61 32 35 30 35 35 34 10270cd7ea250554
3cb0: 39 37 35 38 62 66 37 35 63 30 35 61 39 39 34 61 9758bf75c05a994a
3cc0: 36 64 30 33 34 66 36 35 66 38 66 30 65 36 66 64 6d034f65f8f0e6fd
3cd0: 63 61 65 61 62 31 61 33 34 64 34 61 36 62 34 62 caeab1a34d4a6b4b
3ce0: 36 33 36 65 30 37 30 61 33 38 62 63 65 37 33 37 636e070a38bce737
3cf0: 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d }..# RFC 4231 HM
3d00: 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 AC Examples Test
3d10: 20 43 61 73 65 20 23 33 20 2d 20 54 65 73 74 20 Case #3 - Test
3d20: 77 69 74 68 20 61 20 63 6f 6d 62 69 6e 65 64 20 with a combined
3d30: 6c 65 6e 67 74 68 20 6f 66 20 6b 65 79 20 61 6e length of key an
3d40: 64 20 64 61 74 61 20 74 68 61 74 20 69 73 20 6c d data that is l
3d50: 61 72 67 65 72 20 74 68 61 6e 20 36 34 20 62 79 arger than 64 by
3d60: 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a tes (= block-siz
3d70: 65 20 6f 66 20 53 48 41 2d 32 32 34 20 61 6e 64 e of SHA-224 and
3d80: 20 53 48 41 2d 32 35 36 29 2e 0a 73 65 74 20 6b SHA-256)..set k
3d90: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 ey [binary decod
3da0: 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65 e hex [string re
3db0: 70 65 61 74 20 22 61 61 22 20 32 30 5d 5d 0a 73 peat "aa" 20]].s
3dc0: 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 et data [binary
3dd0: 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 decode hex [stri
3de0: 6e 67 20 72 65 70 65 61 74 20 22 64 64 22 20 35 ng repeat "dd" 5
3df0: 30 5d 5d 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 0]]...test RFC42
3e00: 33 31 5f 54 43 33 2d 31 37 2e 31 20 7b 73 68 61 31_TC3-17.1 {sha
3e10: 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 224} -body {..::
3e20: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 tls::hmac -diges
3e30: 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b t sha224 -key $k
3e40: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 ey -data $data.
3e50: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 66 } -result {7f
3e60: 62 33 63 62 33 35 38 38 63 36 63 31 66 36 66 66 b3cb3588c6c1f6ff
3e70: 61 39 36 39 34 64 37 64 36 61 64 32 36 34 39 33 a9694d7d6ad26493
3e80: 36 35 62 30 63 31 66 36 35 64 36 39 64 31 65 63 65b0c1f65d69d1ec
3e90: 38 33 33 33 65 61 7d 0a 0a 74 65 73 74 20 52 46 8333ea}..test RF
3ea0: 43 34 32 33 31 5f 54 43 33 2d 31 37 2e 32 20 7b C4231_TC3-17.2 {
3eb0: 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a sha256} -body {.
3ec0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 .::tls::hmac -di
3ed0: 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 gest sha256 -key
3ee0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 $key -data $dat
3ef0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 a. } -result
3f00: 7b 37 37 33 65 61 39 31 65 33 36 38 30 30 65 34 {773ea91e36800e4
3f10: 36 38 35 34 64 62 38 65 62 64 30 39 31 38 31 61 6854db8ebd09181a
3f20: 37 32 39 35 39 30 39 38 62 33 65 66 38 63 31 32 72959098b3ef8c12
3f30: 32 64 39 36 33 35 35 31 34 63 65 64 35 36 35 66 2d9635514ced565f
3f40: 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 e}..test RFC4231
3f50: 5f 54 43 33 2d 31 37 2e 33 20 7b 73 68 61 33 38 _TC3-17.3 {sha38
3f60: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 4} -body {..::tl
3f70: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 s::hmac -digest
3f80: 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 sha384 -key $key
3f90: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 -data $data.
3fa0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 38 30 36 } -result {8806
3fb0: 32 36 30 38 64 33 65 36 61 64 38 61 30 61 61 32 2608d3e6ad8a0aa2
3fc0: 61 63 65 30 31 34 63 38 61 38 36 66 30 61 61 36 ace014c8a86f0aa6
3fd0: 33 35 64 39 34 37 61 63 39 66 65 62 65 38 33 65 35d947ac9febe83e
3fe0: 66 34 65 35 35 39 36 36 31 34 34 62 32 61 35 61 f4e55966144b2a5a
3ff0: 62 33 39 64 63 31 33 38 31 34 62 39 34 65 33 61 b39dc13814b94e3a
4000: 62 36 65 31 30 31 61 33 34 66 32 37 7d 0a 0a 74 b6e101a34f27}..t
4010: 65 73 74 20 52 46 43 34 32 33 31 5f 54 43 33 2d est RFC4231_TC3-
4020: 31 37 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 17.4 {sha512} -b
4030: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d ody {..::tls::hm
4040: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 ac -digest sha51
4050: 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 2 -key $key -dat
4060: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 a $data. } -r
4070: 65 73 75 6c 74 20 7b 66 61 37 33 62 30 30 38 39 esult {fa73b0089
4080: 64 35 36 61 32 38 34 65 66 62 30 66 30 37 35 36 d56a284efb0f0756
4090: 63 38 39 30 62 65 39 62 31 62 35 64 62 64 64 38 c890be9b1b5dbdd8
40a0: 65 65 38 31 61 33 36 35 35 66 38 33 65 33 33 62 ee81a3655f83e33b
40b0: 32 32 37 39 64 33 39 62 66 33 65 38 34 38 32 37 2279d39bf3e84827
40c0: 39 61 37 32 32 63 38 30 36 62 34 38 35 61 34 37 9a722c806b485a47
40d0: 65 36 37 63 38 30 37 62 39 34 36 61 33 33 37 62 e67c807b946a337b
40e0: 65 65 38 39 34 32 36 37 34 32 37 38 38 35 39 65 ee8942674278859e
40f0: 31 33 32 39 32 66 62 7d 0a 0a 23 20 52 46 43 20 13292fb}..# RFC
4100: 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 4231 HMAC Exampl
4110: 65 73 20 54 65 73 74 20 43 61 73 65 20 23 34 20 es Test Case #4
4120: 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 63 6f - Test with a co
4130: 6d 62 69 6e 65 64 20 6c 65 6e 67 74 68 20 6f 66 mbined length of
4140: 20 6b 65 79 20 61 6e 64 20 64 61 74 61 20 74 68 key and data th
4150: 61 74 20 69 73 20 6c 61 72 67 65 72 20 74 68 61 at is larger tha
4160: 6e 20 36 34 20 62 79 74 65 73 20 28 3d 20 62 6c n 64 bytes (= bl
4170: 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d ock-size of SHA-
4180: 32 32 34 20 61 6e 64 20 53 48 41 2d 32 35 36 29 224 and SHA-256)
4190: 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 ..set key [binar
41a0: 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 30 31 y decode hex "01
41b0: 30 32 30 33 30 34 30 35 30 36 30 37 30 38 30 39 0203040506070809
41c0: 30 61 30 62 30 63 30 64 30 65 30 66 31 30 31 31 0a0b0c0d0e0f1011
41d0: 31 32 31 33 31 34 31 35 31 36 31 37 31 38 31 39 1213141516171819
41e0: 22 5d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e "].set data [bin
41f0: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b ary decode hex [
4200: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 63 string repeat "c
4210: 64 22 20 35 30 5d 5d 0a 0a 0a 74 65 73 74 20 52 d" 50]]...test R
4220: 46 43 34 32 33 31 5f 54 43 34 2d 31 38 2e 31 20 FC4231_TC4-18.1
4230: 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b {sha224} -body {
4240: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 ..::tls::hmac -d
4250: 69 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 igest sha224 -ke
4260: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 y $key -data $da
4270: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 ta. } -result
4280: 20 7b 36 63 31 31 35 30 36 38 37 34 30 31 33 63 {6c11506874013c
4290: 61 63 36 61 32 61 62 63 31 62 62 33 38 32 36 32 ac6a2abc1bb38262
42a0: 37 63 65 63 36 61 39 30 64 38 36 65 66 63 30 31 7cec6a90d86efc01
42b0: 32 64 65 37 61 66 65 63 35 61 7d 0a 0a 74 65 73 2de7afec5a}..tes
42c0: 74 20 52 46 43 34 32 33 31 5f 54 43 34 2d 31 38 t RFC4231_TC4-18
42d0: 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 .2 {sha256} -bod
42e0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 y {..::tls::hmac
42f0: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 -digest sha256
4300: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 -key $key -data
4310: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 $data. } -res
4320: 75 6c 74 20 7b 38 32 35 35 38 61 33 38 39 61 34 ult {82558a389a4
4330: 34 33 63 30 65 61 34 63 63 38 31 39 38 39 39 66 43c0ea4cc819899f
4340: 32 30 38 33 61 38 35 66 30 66 61 61 33 65 35 37 2083a85f0faa3e57
4350: 38 66 38 30 37 37 61 32 65 33 66 66 34 36 37 32 8f8077a2e3ff4672
4360: 39 36 36 35 62 7d 0a 0a 74 65 73 74 20 52 46 43 9665b}..test RFC
4370: 34 32 33 31 5f 54 43 34 2d 31 38 2e 33 20 7b 73 4231_TC4-18.3 {s
4380: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 ha384} -body {..
4390: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 ::tls::hmac -dig
43a0: 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 est sha384 -key
43b0: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 $key -data $data
43c0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b . } -result {
43d0: 33 65 38 61 36 39 62 37 37 38 33 63 32 35 38 35 3e8a69b7783c2585
43e0: 31 39 33 33 61 62 36 32 39 30 61 66 36 63 61 37 1933ab6290af6ca7
43f0: 37 61 39 39 38 31 34 38 30 38 35 30 30 30 39 63 7a9981480850009c
4400: 63 35 35 37 37 63 36 65 31 66 35 37 33 62 34 65 c5577c6e1f573b4e
4410: 36 38 30 31 64 64 32 33 63 34 61 37 64 36 37 39 6801dd23c4a7d679
4420: 63 63 66 38 61 33 38 36 63 36 37 34 63 66 66 62 ccf8a386c674cffb
4430: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f }..test RFC4231_
4440: 54 43 34 2d 31 38 2e 34 20 7b 73 68 61 35 31 32 TC4-18.4 {sha512
4450: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 } -body {..::tls
4460: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 ::hmac -digest s
4470: 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 ha512 -key $key
4480: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 -data $data.
4490: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 30 62 61 34 } -result {b0ba4
44a0: 36 35 36 33 37 34 35 38 63 36 39 39 30 65 35 61 65637458c6990e5a
44b0: 38 63 35 66 36 31 64 34 61 66 37 65 35 37 36 64 8c5f61d4af7e576d
44c0: 39 37 66 66 39 34 62 38 37 32 64 65 37 36 66 38 97ff94b872de76f8
44d0: 30 35 30 33 36 31 65 65 33 64 62 61 39 31 63 61 050361ee3dba91ca
44e0: 35 63 31 31 61 61 32 35 65 62 34 64 36 37 39 32 5c11aa25eb4d6792
44f0: 37 35 63 63 35 37 38 38 30 36 33 61 35 66 31 39 75cc5788063a5f19
4500: 37 34 31 31 32 30 63 34 66 32 64 65 32 61 64 65 741120c4f2de2ade
4510: 62 65 62 31 30 61 32 39 38 64 64 7d 0a 0a 23 20 beb10a298dd}..#
4520: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 RFC 4231 HMAC Ex
4530: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 amples Test Case
4540: 20 23 35 20 2d 20 54 65 73 74 20 77 69 74 68 20 #5 - Test with
4550: 61 20 74 72 75 6e 63 61 74 69 6f 6e 20 6f 66 20 a truncation of
4560: 6f 75 74 70 75 74 20 74 6f 20 31 32 38 20 62 69 output to 128 bi
4570: 74 73 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e ts..set key [bin
4580: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b ary decode hex [
4590: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 30 string repeat "0
45a0: 63 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74 61 c" 20]].set data
45b0: 20 22 54 65 73 74 20 57 69 74 68 20 54 72 75 6e "Test With Trun
45c0: 63 61 74 69 6f 6e 22 0a 0a 0a 74 65 73 74 20 52 cation"...test R
45d0: 46 43 34 32 33 31 5f 54 43 35 2d 31 39 2e 31 20 FC4231_TC5-19.1
45e0: 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b {sha224} -body {
45f0: 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b ..string range [
4600: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 ::tls::hmac -dig
4610: 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 est sha224 -key
4620: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 $key -data $data
4630: 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 ] 0 31. } -re
4640: 73 75 6c 74 20 7b 30 65 32 61 65 61 36 38 61 39 sult {0e2aea68a9
4650: 30 63 38 64 33 37 63 39 38 38 62 63 64 62 39 66 0c8d37c988bcdb9f
4660: 63 61 36 66 61 38 7d 0a 0a 74 65 73 74 20 52 46 ca6fa8}..test RF
4670: 43 34 32 33 31 5f 54 43 35 2d 31 39 2e 32 20 7b C4231_TC5-19.2 {
4680: 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a sha256} -body {.
4690: 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a .string range [:
46a0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 :tls::hmac -dige
46b0: 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 st sha256 -key $
46c0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d key -data $data]
46d0: 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 0 31. } -res
46e0: 75 6c 74 20 7b 61 33 62 36 31 36 37 34 37 33 31 ult {a3b61674731
46f0: 30 30 65 65 30 36 65 30 63 37 39 36 63 32 39 35 00ee06e0c796c295
4700: 35 35 35 32 62 7d 0a 0a 74 65 73 74 20 52 46 43 5552b}..test RFC
4710: 34 32 33 31 5f 54 43 35 2d 31 39 2e 33 20 7b 73 4231_TC5-19.3 {s
4720: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 ha384} -body {..
4730: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a string range [::
4740: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 tls::hmac -diges
4750: 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b t sha384 -key $k
4760: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20 ey -data $data]
4770: 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 0 31. } -resu
4780: 6c 74 20 7b 33 61 62 66 33 34 63 33 35 30 33 62 lt {3abf34c3503b
4790: 32 61 32 33 61 34 36 65 66 63 36 31 39 62 61 65 2a23a46efc619bae
47a0: 66 38 39 37 7d 0a 0a 74 65 73 74 20 52 46 43 34 f897}..test RFC4
47b0: 32 33 31 5f 54 43 35 2d 31 39 2e 34 20 7b 73 68 231_TC5-19.4 {sh
47c0: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 a512} -body {..s
47d0: 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74 tring range [::t
47e0: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 ls::hmac -digest
47f0: 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 sha512 -key $ke
4800: 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20 30 y -data $data] 0
4810: 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 31. } -resul
4820: 74 20 7b 34 31 35 66 61 64 36 32 37 31 35 38 30 t {415fad6271580
4830: 61 35 33 31 64 34 31 37 39 62 63 38 39 31 64 38 a531d4179bc891d8
4840: 37 61 36 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 7a6}..# RFC 4231
4850: 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54 HMAC Examples T
4860: 65 73 74 20 43 61 73 65 20 23 36 20 2d 20 54 65 est Case #6 - Te
4870: 73 74 20 77 69 74 68 20 61 20 6b 65 79 20 6c 61 st with a key la
4880: 72 67 65 72 20 74 68 61 6e 20 31 32 38 20 62 79 rger than 128 by
4890: 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a tes (= block-siz
48a0: 65 20 6f 66 20 53 48 41 2d 33 38 34 20 61 6e 64 e of SHA-384 and
48b0: 20 53 48 41 2d 35 31 32 29 2e 0a 73 65 74 20 6b SHA-512)..set k
48c0: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 ey [binary decod
48d0: 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65 e hex [string re
48e0: 70 65 61 74 20 22 61 61 22 20 31 33 31 5d 5d 0a peat "aa" 131]].
48f0: 73 65 74 20 64 61 74 61 20 22 54 65 73 74 20 55 set data "Test U
4900: 73 69 6e 67 20 4c 61 72 67 65 72 20 54 68 61 6e sing Larger Than
4910: 20 42 6c 6f 63 6b 2d 53 69 7a 65 20 4b 65 79 20 Block-Size Key
4920: 2d 20 48 61 73 68 20 4b 65 79 20 46 69 72 73 74 - Hash Key First
4930: 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 "...test RFC4231
4940: 5f 54 43 36 2d 32 30 2e 31 20 7b 73 68 61 32 32 _TC6-20.1 {sha22
4950: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 4} -body {..::tl
4960: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 s::hmac -digest
4970: 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 sha224 -key $key
4980: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 -data $data.
4990: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 35 65 39 } -result {95e9
49a0: 61 30 64 62 39 36 32 30 39 35 61 64 61 65 62 65 a0db962095adaebe
49b0: 39 62 32 64 36 66 30 64 62 63 65 32 64 34 39 39 9b2d6f0dbce2d499
49c0: 66 31 31 32 66 32 64 32 62 37 32 37 33 66 61 36 f112f2d2b7273fa6
49d0: 38 37 30 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 870e}..test RFC4
49e0: 32 33 31 5f 54 43 36 2d 32 30 2e 32 20 7b 73 68 231_TC6-20.2 {sh
49f0: 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a a256} -body {..:
4a00: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 :tls::hmac -dige
4a10: 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 st sha256 -key $
4a20: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a key -data $data.
4a30: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 } -result {6
4a40: 30 65 34 33 31 35 39 31 65 65 30 62 36 37 66 30 0e431591ee0b67f0
4a50: 64 38 61 32 36 61 61 63 62 66 35 62 37 37 66 38 d8a26aacbf5b77f8
4a60: 65 30 62 63 36 32 31 33 37 32 38 63 35 31 34 30 e0bc6213728c5140
4a70: 35 34 36 30 34 30 66 30 65 65 33 37 66 35 34 7d 546040f0ee37f54}
4a80: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 ..test RFC4231_T
4a90: 43 36 2d 32 30 2e 33 20 7b 73 68 61 33 38 34 7d C6-20.3 {sha384}
4aa0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
4ab0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 :hmac -digest sh
4ac0: 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d a384 -key $key -
4ad0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d data $data. }
4ae0: 20 2d 72 65 73 75 6c 74 20 7b 34 65 63 65 30 38 -result {4ece08
4af0: 34 34 38 35 38 31 33 65 39 30 38 38 64 32 63 36 4485813e9088d2c6
4b00: 33 61 30 34 31 62 63 35 62 34 34 66 39 65 66 31 3a041bc5b44f9ef1
4b10: 30 31 32 61 32 62 35 38 38 66 33 63 64 31 31 66 012a2b588f3cd11f
4b20: 30 35 30 33 33 61 63 34 63 36 30 63 32 65 66 36 05033ac4c60c2ef6
4b30: 61 62 34 30 33 30 66 65 38 32 39 36 32 34 38 64 ab4030fe8296248d
4b40: 66 31 36 33 66 34 34 39 35 32 7d 0a 0a 74 65 73 f163f44952}..tes
4b50: 74 20 52 46 43 34 32 33 31 5f 54 43 36 2d 32 30 t RFC4231_TC6-20
4b60: 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 .4 {sha512} -bod
4b70: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 y {..::tls::hmac
4b80: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20 -digest sha512
4b90: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 -key $key -data
4ba0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 $data. } -res
4bb0: 75 6c 74 20 7b 38 30 62 32 34 32 36 33 63 37 63 ult {80b24263c7c
4bc0: 31 61 33 65 62 62 37 31 34 39 33 63 31 64 64 37 1a3ebb71493c1dd7
4bd0: 62 65 38 62 34 39 62 34 36 64 31 66 34 31 62 34 be8b49b46d1f41b4
4be0: 61 65 65 63 31 31 32 31 62 30 31 33 37 38 33 66 aeec1121b013783f
4bf0: 38 66 33 35 32 36 62 35 36 64 30 33 37 65 30 35 8f3526b56d037e05
4c00: 66 32 35 39 38 62 64 30 66 64 32 32 31 35 64 36 f2598bd0fd2215d6
4c10: 61 31 65 35 32 39 35 65 36 34 66 37 33 66 36 33 a1e5295e64f73f63
4c20: 66 30 61 65 63 38 62 39 31 35 61 39 38 35 64 37 f0aec8b915a985d7
4c30: 38 36 35 39 38 7d 0a 0a 23 20 52 46 43 20 34 32 86598}..# RFC 42
4c40: 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 31 HMAC Examples
4c50: 20 54 65 73 74 20 43 61 73 65 20 23 37 20 2d 20 Test Case #7 -
4c60: 54 65 73 74 20 77 69 74 68 20 61 20 6b 65 79 20 Test with a key
4c70: 61 6e 64 20 64 61 74 61 20 74 68 61 74 20 69 73 and data that is
4c80: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 31 32 38 larger than 128
4c90: 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d bytes (= block-
4ca0: 73 69 7a 65 20 6f 66 20 53 48 41 2d 33 38 34 20 size of SHA-384
4cb0: 61 6e 64 20 53 48 41 2d 35 31 32 29 2e 0a 73 65 and SHA-512)..se
4cc0: 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 t key [binary de
4cd0: 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67 code hex [string
4ce0: 20 72 65 70 65 61 74 20 22 61 61 22 20 31 33 31 repeat "aa" 131
4cf0: 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 54 68 69 ]].set data "Thi
4d00: 73 20 69 73 20 61 20 74 65 73 74 20 75 73 69 6e s is a test usin
4d10: 67 20 61 20 6c 61 72 67 65 72 20 74 68 61 6e 20 g a larger than
4d20: 62 6c 6f 63 6b 2d 73 69 7a 65 20 6b 65 79 20 61 block-size key a
4d30: 6e 64 20 61 20 6c 61 72 67 65 72 20 74 68 61 6e nd a larger than
4d40: 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 64 61 74 61 block-size data
4d50: 2e 20 54 68 65 20 6b 65 79 20 6e 65 65 64 73 20 . The key needs
4d60: 74 6f 20 62 65 20 68 61 73 68 65 64 20 62 65 66 to be hashed bef
4d70: 6f 72 65 20 62 65 69 6e 67 20 75 73 65 64 20 62 ore being used b
4d80: 79 20 74 68 65 20 48 4d 41 43 20 61 6c 67 6f 72 y the HMAC algor
4d90: 69 74 68 6d 2e 22 0a 0a 0a 74 65 73 74 20 52 46 ithm."...test RF
4da0: 43 34 32 33 31 5f 54 43 37 2d 32 31 2e 31 20 7b C4231_TC7-21.1 {
4db0: 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a sha224} -body {.
4dc0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 .::tls::hmac -di
4dd0: 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 gest sha224 -key
4de0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 $key -data $dat
4df0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 a. } -result
4e00: 7b 33 61 38 35 34 31 36 36 61 63 35 64 39 66 30 {3a854166ac5d9f0
4e10: 32 33 66 35 34 64 35 31 37 64 30 62 33 39 64 62 23f54d517d0b39db
4e20: 64 39 34 36 37 37 30 64 62 39 63 32 62 39 35 63 d946770db9c2b95c
4e30: 39 66 36 66 35 36 35 64 31 7d 0a 0a 74 65 73 74 9f6f565d1}..test
4e40: 20 52 46 43 34 32 33 31 5f 54 43 37 2d 32 31 2e RFC4231_TC7-21.
4e50: 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 2 {sha256} -body
4e60: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 {..::tls::hmac
4e70: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d -digest sha256 -
4e80: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 key $key -data $
4e90: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 data. } -resu
4ea0: 6c 74 20 7b 39 62 30 39 66 66 61 37 31 62 39 34 lt {9b09ffa71b94
4eb0: 32 66 63 62 32 37 36 33 35 66 62 63 64 35 62 30 2fcb27635fbcd5b0
4ec0: 65 39 34 34 62 66 64 63 36 33 36 34 34 66 30 37 e944bfdc63644f07
4ed0: 31 33 39 33 38 61 37 66 35 31 35 33 35 63 33 61 13938a7f51535c3a
4ee0: 33 35 65 32 7d 0a 0a 74 65 73 74 20 52 46 43 34 35e2}..test RFC4
4ef0: 32 33 31 5f 54 43 37 2d 32 31 2e 33 20 7b 73 68 231_TC7-21.3 {sh
4f00: 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a a384} -body {..:
4f10: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 :tls::hmac -dige
4f20: 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 st sha384 -key $
4f30: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a key -data $data.
4f40: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 } -result {6
4f50: 36 31 37 31 37 38 65 39 34 31 66 30 32 30 64 33 617178e941f020d3
4f60: 35 31 65 32 66 32 35 34 65 38 66 64 33 32 63 36 51e2f254e8fd32c6
4f70: 30 32 34 32 30 66 65 62 30 62 38 66 62 39 61 64 02420feb0b8fb9ad
4f80: 63 63 65 62 62 38 32 34 36 31 65 39 39 63 35 61 ccebb82461e99c5a
4f90: 36 37 38 63 63 33 31 65 37 39 39 31 37 36 64 33 678cc31e799176d3
4fa0: 38 36 30 65 36 31 31 30 63 34 36 35 32 33 65 7d 860e6110c46523e}
4fb0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 54 ..test RFC4231_T
4fc0: 43 37 2d 32 31 2e 34 20 7b 73 68 61 35 31 32 7d C7-21.4 {sha512}
4fd0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a -body {..::tls:
4fe0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 :hmac -digest sh
4ff0: 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d a512 -key $key -
5000: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d data $data. }
5010: 20 2d 72 65 73 75 6c 74 20 7b 65 33 37 62 36 61 -result {e37b6a
5020: 37 37 35 64 63 38 37 64 62 61 61 34 64 66 61 39 775dc87dbaa4dfa9
5030: 66 39 36 65 35 65 33 66 66 64 64 65 62 64 37 31 f96e5e3ffddebd71
5040: 66 38 38 36 37 32 38 39 38 36 35 64 66 35 61 33 f8867289865df5a3
5050: 32 64 32 30 63 64 63 39 34 34 62 36 30 32 32 63 2d20cdc944b6022c
5060: 61 63 33 63 34 39 38 32 62 31 30 64 35 65 65 62 ac3c4982b10d5eeb
5070: 35 35 63 33 65 34 64 65 31 35 31 33 34 36 37 36 55c3e4de15134676
5080: 66 62 36 64 65 30 34 34 36 30 36 35 63 39 37 34 fb6de0446065c974
5090: 34 30 66 61 38 63 36 61 35 38 7d 0a 0a 23 20 4e 40fa8c6a58}..# N
50a0: 49 53 54 20 38 30 30 2d 33 38 62 20 52 65 63 6f IST 800-38b Reco
50b0: 6d 6d 65 6e 64 61 74 69 6f 6e 20 66 6f 72 20 42 mmendation for B
50c0: 6c 6f 63 6b 20 43 69 70 68 65 72 20 4d 6f 64 65 lock Cipher Mode
50d0: 73 20 6f 66 20 4f 70 65 72 61 74 69 6f 6e 3a 20 s of Operation:
50e0: 54 68 65 20 43 4d 41 43 20 4d 6f 64 65 20 66 6f The CMAC Mode fo
50f0: 72 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e r Authentication
5100: 0a 23 20 41 45 53 2d 31 32 38 0a 73 65 74 20 6b .# AES-128.set k
5110: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 ey [binary decod
5120: 65 20 68 65 78 20 22 32 62 37 65 31 35 31 36 32 e hex "2b7e15162
5130: 38 61 65 64 32 61 36 61 62 66 37 31 35 38 38 30 8aed2a6abf715880
5140: 39 63 66 34 66 33 63 22 5d 0a 73 65 74 20 64 61 9cf4f3c"].set da
5150: 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 ta [binary decod
5160: 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32 e hex "6bc1bee22
5170: 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37 e409f96e93d7e117
5180: 33 39 33 31 37 32 61 22 5d 0a 0a 0a 74 65 73 74 393172a"]...test
5190: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 NIST800-38b-AES
51a0: 31 32 38 2d 32 32 2e 31 20 7b 6c 65 6e 3d 31 32 128-22.1 {len=12
51b0: 38 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 8} -body {..::tl
51c0: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 s::cmac -cipher
51d0: 61 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79 aes-128-cbc -key
51e0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 $key -data $dat
51f0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 a. } -result
5200: 7b 30 37 30 61 31 36 62 34 36 62 34 64 34 31 34 {070a16b46b4d414
5210: 34 66 37 39 62 64 64 39 64 64 30 34 61 32 38 37 4f79bdd9dd04a287
5220: 63 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e c}.set data [bin
5230: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 ary decode hex "
5240: 36 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36 6bc1bee22e409f96
5250: 65 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61 e93d7e117393172a
5260: 61 65 32 64 38 61 35 37 31 65 30 33 61 63 39 63 ae2d8a571e03ac9c
5270: 39 65 62 37 36 66 61 63 34 35 61 66 38 65 35 31 9eb76fac45af8e51
5280: 33 30 63 38 31 63 34 36 61 33 35 63 65 34 31 31 30c81c46a35ce411
5290: 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 "]..test NIST800
52a0: 2d 33 38 62 2d 41 45 53 31 32 38 2d 32 32 2e 32 -38b-AES128-22.2
52b0: 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d 62 6f 64 79 {len=320} -body
52c0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 {..::tls::cmac
52d0: 2d 63 69 70 68 65 72 20 61 65 73 2d 31 32 38 2d -cipher aes-128-
52e0: 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 cbc -key $key -d
52f0: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 ata $data. }
5300: 2d 72 65 73 75 6c 74 20 7b 64 66 61 36 36 37 34 -result {dfa6674
5310: 37 64 65 39 61 65 36 33 30 33 30 63 61 33 32 36 7de9ae63030ca326
5320: 31 31 34 39 37 63 38 32 37 7d 0a 73 65 74 20 64 11497c827}.set d
5330: 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f ata [binary deco
5340: 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32 de hex "6bc1bee2
5350: 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31 2e409f96e93d7e11
5360: 37 33 39 33 31 37 32 61 61 65 32 64 38 61 35 37 7393172aae2d8a57
5370: 31 65 30 33 61 63 39 63 39 65 62 37 36 66 61 63 1e03ac9c9eb76fac
5380: 34 35 61 66 38 65 35 31 33 30 63 38 31 63 34 36 45af8e5130c81c46
5390: 61 33 35 63 65 34 31 31 65 35 66 62 63 31 31 39 a35ce411e5fbc119
53a0: 31 61 30 61 35 32 65 66 66 36 39 66 32 34 34 35 1a0a52eff69f2445
53b0: 64 66 34 66 39 62 31 37 61 64 32 62 34 31 37 62 df4f9b17ad2b417b
53c0: 65 36 36 63 33 37 31 30 22 5d 0a 0a 74 65 73 74 e66c3710"]..test
53d0: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 NIST800-38b-AES
53e0: 31 32 38 2d 32 32 2e 33 20 7b 6c 65 6e 3d 35 31 128-22.3 {len=51
53f0: 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 2} -body {..::tl
5400: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 s::cmac -cipher
5410: 61 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79 aes-128-cbc -key
5420: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 $key -data $dat
5430: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 a. } -result
5440: 7b 35 31 66 30 62 65 62 66 37 65 33 62 39 64 39 {51f0bebf7e3b9d9
5450: 32 66 63 34 39 37 34 31 37 37 39 33 36 33 63 66 2fc49741779363cf
5460: 65 7d 0a 0a 23 20 41 45 53 2d 31 39 32 0a 73 65 e}..# AES-192.se
5470: 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 t key [binary de
5480: 63 6f 64 65 20 68 65 78 20 22 38 65 37 33 62 30 code hex "8e73b0
5490: 66 37 64 61 30 65 36 34 35 32 63 38 31 30 66 33 f7da0e6452c810f3
54a0: 32 62 38 30 39 30 37 39 65 35 36 32 66 38 65 61 2b809079e562f8ea
54b0: 64 32 35 32 32 63 36 62 37 62 22 5d 0a 73 65 74 d2522c6b7b"].set
54c0: 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 data [binary de
54d0: 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62 65 code hex "6bc1be
54e0: 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37 65 e22e409f96e93d7e
54f0: 31 31 37 33 39 33 31 37 32 61 22 5d 0a 0a 0a 74 117393172a"]...t
5500: 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d est NIST800-38b-
5510: 41 45 53 2d 31 39 32 2d 32 33 2e 31 20 7b 6c 65 AES-192-23.1 {le
5520: 6e 3d 31 32 38 7d 20 2d 62 6f 64 79 20 7b 0a 09 n=128} -body {..
5530: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 ::tls::cmac -cip
5540: 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62 63 20 her aes-192-cbc
5550: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 -key $key -data
5560: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 $data. } -res
5570: 75 6c 74 20 7b 39 65 39 39 61 37 62 66 33 31 65 ult {9e99a7bf31e
5580: 37 31 30 39 30 30 36 36 32 66 36 35 65 36 31 37 710900662f65e617
5590: 63 35 31 38 34 7d 0a 73 65 74 20 64 61 74 61 20 c5184}.set data
55a0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 [binary decode h
55b0: 65 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30 ex "6bc1bee22e40
55c0: 39 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33 9f96e93d7e117393
55d0: 31 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33 172aae2d8a571e03
55e0: 61 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66 ac9c9eb76fac45af
55f0: 38 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63 8e5130c81c46a35c
5600: 65 34 31 31 22 5d 0a 0a 74 65 73 74 20 4e 49 53 e411"]..test NIS
5610: 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 31 39 32 T800-38b-AES-192
5620: 2d 32 33 2e 32 20 7b 6c 65 6e 3d 33 32 30 7d 20 -23.2 {len=320}
5630: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a -body {..::tls::
5640: 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 cmac -cipher aes
5650: 2d 31 39 32 2d 63 62 63 20 2d 6b 65 79 20 24 6b -192-cbc -key $k
5660: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 ey -data $data.
5670: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 61 } -result {8a
5680: 31 64 65 35 62 65 32 65 62 33 31 61 61 64 30 38 1de5be2eb31aad08
5690: 39 61 38 32 65 36 65 65 39 30 38 62 30 65 7d 0a 9a82e6ee908b0e}.
56a0: 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 set data [binary
56b0: 20 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 decode hex "6bc
56c0: 31 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33 1bee22e409f96e93
56d0: 64 37 65 31 31 37 33 39 33 31 37 32 61 61 65 32 d7e117393172aae2
56e0: 64 38 61 35 37 31 65 30 33 61 63 39 63 39 65 62 d8a571e03ac9c9eb
56f0: 37 36 66 61 63 34 35 61 66 38 65 35 31 33 30 63 76fac45af8e5130c
5700: 38 31 63 34 36 61 33 35 63 65 34 31 31 65 35 66 81c46a35ce411e5f
5710: 62 63 31 31 39 31 61 30 61 35 32 65 66 66 36 39 bc1191a0a52eff69
5720: 66 32 34 34 35 64 66 34 66 39 62 31 37 61 64 32 f2445df4f9b17ad2
5730: 62 34 31 37 62 65 36 36 63 33 37 31 30 22 5d 0a b417be66c3710"].
5740: 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 .test NIST800-38
5750: 62 2d 41 45 53 2d 31 39 32 2d 32 33 2e 33 20 7b b-AES-192-23.3 {
5760: 6c 65 6e 3d 35 31 32 7d 20 2d 62 6f 64 79 20 7b len=512} -body {
5770: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 ..::tls::cmac -c
5780: 69 70 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62 ipher aes-192-cb
5790: 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 c -key $key -dat
57a0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 a $data. } -r
57b0: 65 73 75 6c 74 20 7b 61 31 64 35 64 66 30 65 65 esult {a1d5df0ee
57c0: 64 37 39 30 66 37 39 34 64 37 37 35 38 39 36 35 d790f794d7758965
57d0: 39 66 33 39 61 31 31 7d 0a 0a 23 20 41 45 53 2d 9f39a11}..# AES-
57e0: 32 35 36 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 256.set key [bin
57f0: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 ary decode hex "
5800: 36 30 33 64 65 62 31 30 31 35 63 61 37 31 62 65 603deb1015ca71be
5810: 32 62 37 33 61 65 66 30 38 35 37 64 37 37 38 31 2b73aef0857d7781
5820: 31 66 33 35 32 63 30 37 33 62 36 31 30 38 64 37 1f352c073b6108d7
5830: 32 64 39 38 31 30 61 33 30 39 31 34 64 66 66 34 2d9810a30914dff4
5840: 22 5d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e "].set data [bin
5850: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 ary decode hex "
5860: 36 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36 6bc1bee22e409f96
5870: 65 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61 e93d7e117393172a
5880: 22 5d 0a 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 "]...test NIST80
5890: 30 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d 32 34 0-38b-AES-256-24
58a0: 2e 31 20 7b 6c 65 6e 3d 31 32 38 7d 20 2d 62 6f .1 {len=128} -bo
58b0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 dy {..::tls::cma
58c0: 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 32 35 c -cipher aes-25
58d0: 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 6-cbc -key $key
58e0: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 -data $data.
58f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 32 38 61 37 30 } -result {28a70
5900: 32 33 66 34 35 32 65 38 66 38 32 62 64 34 62 66 23f452e8f82bd4bf
5910: 32 38 64 38 63 33 37 63 33 35 63 7d 0a 73 65 74 28d8c37c35c}.set
5920: 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 data [binary de
5930: 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62 65 code hex "6bc1be
5940: 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37 65 e22e409f96e93d7e
5950: 31 31 37 33 39 33 31 37 32 61 61 65 32 64 38 61 117393172aae2d8a
5960: 35 37 31 65 30 33 61 63 39 63 39 65 62 37 36 66 571e03ac9c9eb76f
5970: 61 63 34 35 61 66 38 65 35 31 33 30 63 38 31 63 ac45af8e5130c81c
5980: 34 36 61 33 35 63 65 34 31 31 22 5d 0a 0a 74 65 46a35ce411"]..te
5990: 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 st NIST800-38b-A
59a0: 45 53 2d 32 35 36 2d 32 34 2e 32 20 7b 6c 65 6e ES-256-24.2 {len
59b0: 3d 33 32 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a =320} -body {..:
59c0: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 :tls::cmac -ciph
59d0: 65 72 20 61 65 73 2d 32 35 36 2d 63 62 63 20 2d er aes-256-cbc -
59e0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 key $key -data $
59f0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 data. } -resu
5a00: 6c 74 20 7b 61 61 66 33 64 38 66 31 64 65 35 36 lt {aaf3d8f1de56
5a10: 34 30 63 32 33 32 66 35 62 31 36 39 62 39 63 39 40c232f5b169b9c9
5a20: 31 31 65 36 7d 0a 73 65 74 20 64 61 74 61 20 5b 11e6}.set data [
5a30: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 binary decode he
5a40: 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39 x "6bc1bee22e409
5a50: 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31 f96e93d7e1173931
5a60: 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33 61 72aae2d8a571e03a
5a70: 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66 38 c9c9eb76fac45af8
5a80: 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63 65 e5130c81c46a35ce
5a90: 34 31 31 65 35 66 62 63 31 31 39 31 61 30 61 35 411e5fbc1191a0a5
5aa0: 32 65 66 66 36 39 66 32 34 34 35 64 66 34 66 39 2eff69f2445df4f9
5ab0: 62 31 37 61 64 32 62 34 31 37 62 65 36 36 63 33 b17ad2b417be66c3
5ac0: 37 31 30 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 710"]..test NIST
5ad0: 38 30 30 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d 800-38b-AES-256-
5ae0: 32 34 2e 33 20 7b 6c 65 6e 3d 35 31 32 7d 20 2d 24.3 {len=512} -
5af0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 body {..::tls::c
5b00: 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d mac -cipher aes-
5b10: 32 35 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 256-cbc -key $ke
5b20: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 y -data $data.
5b30: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 65 31 39 } -result {e19
5b40: 39 32 31 39 30 35 34 39 66 36 65 64 35 36 39 36 92190549f6ed5696
5b50: 61 32 63 30 35 36 63 33 31 35 34 31 30 7d 0a 0a a2c056c315410}..
5b60: 23 20 43 6c 65 61 6e 75 70 0a 3a 3a 74 63 6c 74 # Cleanup.::tclt
5b70: 65 73 74 3a 3a 72 65 6d 6f 76 65 46 69 6c 65 20 est::removeFile
5b80: 24 74 65 73 74 5f 66 69 6c 65 0a 0a 23 20 43 6c $test_file..# Cl
5b90: 65 61 6e 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a eanup.::tcltest:
5ba0: 3a 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 72 65 :cleanupTests.re
5bb0: 74 75 72 6e 0a turn.