Hex Artifact Content

Artifact 7ee14183fab6eacd2e212b52c7aa94514e47ad6f5632a6c360e384725576cedb:


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 20 2d 20 53 65 65 20 63 6f 6d 6d 6f 6e  ons - See common
0160: 2e 74 63 6c 0a 70 72 6f 63 20 64 69 67 65 73 74  .tcl.proc digest
0170: 5f 72 65 61 64 5f 63 68 61 6e 20 7b 63 6d 64 20  _read_chan {cmd 
0180: 66 69 6c 65 6e 61 6d 65 20 61 72 67 73 7d 20 7b  filename args} {
0190: 3b 73 65 74 20 63 68 20 5b 6f 70 65 6e 20 24 66  ;set ch [open $f
01a0: 69 6c 65 6e 61 6d 65 20 72 62 5d 3b 73 65 74 20  ilename rb];set 
01b0: 62 73 69 7a 65 20 5b 66 63 6f 6e 66 69 67 75 72  bsize [fconfigur
01c0: 65 20 24 63 68 20 2d 62 75 66 66 65 72 73 69 7a  e $ch -buffersiz
01d0: 65 5d 3b 73 65 74 20 6e 65 77 20 5b 24 63 6d 64  e];set new [$cmd
01e0: 20 7b 2a 7d 24 61 72 67 73 20 2d 63 68 61 6e 20   {*}$args -chan 
01f0: 24 63 68 5d 3b 77 68 69 6c 65 20 7b 21 5b 65 6f  $ch];while {![eo
0200: 66 20 24 6e 65 77 5d 7d 20 7b 73 65 74 20 6d 64  f $new]} {set md
0210: 20 5b 72 65 61 64 20 24 6e 65 77 20 24 62 73 69   [read $new $bsi
0220: 7a 65 5d 7d 3b 63 6c 6f 73 65 20 24 6e 65 77 3b  ze]};close $new;
0230: 72 65 74 75 72 6e 20 24 6d 64 7d 0a 70 72 6f 63  return $md}.proc
0240: 20 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68   digest_write_ch
0250: 61 6e 20 7b 63 6d 64 20 66 69 6c 65 6e 61 6d 65  an {cmd filename
0260: 20 64 61 74 61 20 61 72 67 73 7d 20 7b 3b 73 65   data args} {;se
0270: 74 20 63 68 20 5b 6f 70 65 6e 20 24 66 69 6c 65  t ch [open $file
0280: 6e 61 6d 65 20 77 62 5d 3b 73 65 74 20 6e 65 77  name wb];set new
0290: 20 5b 24 63 6d 64 20 7b 2a 7d 24 61 72 67 73 20   [$cmd {*}$args 
02a0: 2d 63 68 61 6e 20 24 63 68 5d 3b 70 75 74 73 20  -chan $ch];puts 
02b0: 2d 6e 6f 6e 65 77 6c 69 6e 65 20 24 6e 65 77 20  -nonewline $new 
02c0: 24 64 61 74 61 3b 66 6c 75 73 68 20 24 6e 65 77  $data;flush $new
02d0: 3b 63 6c 6f 73 65 20 24 6e 65 77 3b 73 65 74 20  ;close $new;set 
02e0: 63 68 20 5b 6f 70 65 6e 20 24 66 69 6c 65 6e 61  ch [open $filena
02f0: 6d 65 20 72 62 5d 3b 73 65 74 20 6d 64 20 5b 72  me rb];set md [r
0300: 65 61 64 20 24 63 68 5d 3b 63 6c 6f 73 65 20 24  ead $ch];close $
0310: 63 68 3b 72 65 74 75 72 6e 20 24 6d 64 7d 0a 70  ch;return $md}.p
0320: 72 6f 63 20 64 69 67 65 73 74 5f 61 63 63 75 6d  roc digest_accum
0330: 75 6c 61 74 65 20 7b 73 74 72 69 6e 67 20 61 72  ulate {string ar
0340: 67 73 7d 20 7b 3b 73 65 74 20 63 6d 64 20 5b 7b  gs} {;set cmd [{
0350: 2a 7d 24 61 72 67 73 20 2d 63 6f 6d 6d 61 6e 64  *}$args -command
0360: 20 64 63 6d 64 5d 3b 20 24 63 6d 64 20 75 70 64   dcmd]; $cmd upd
0370: 61 74 65 20 5b 73 74 72 69 6e 67 20 72 61 6e 67  ate [string rang
0380: 65 20 24 73 74 72 69 6e 67 20 30 20 32 30 5d 3b  e $string 0 20];
0390: 24 63 6d 64 20 75 70 64 61 74 65 20 5b 73 74 72  $cmd update [str
03a0: 69 6e 67 20 72 61 6e 67 65 20 24 73 74 72 69 6e  ing range $strin
03b0: 67 20 32 31 20 65 6e 64 5d 3b 72 65 74 75 72 6e  g 21 end];return
03c0: 20 5b 24 63 6d 64 20 66 69 6e 61 6c 69 7a 65 5d   [$cmd finalize]
03d0: 7d 0a 0a 73 65 74 20 74 65 73 74 5f 64 61 74 61  }..set test_data
03e0: 20 22 45 78 61 6d 70 6c 65 20 73 74 72 69 6e 67   "Example string
03f0: 20 66 6f 72 20 6d 65 73 73 61 67 65 20 64 69 67   for message dig
0400: 65 73 74 20 74 65 73 74 73 2e 5c 6e 22 0a 73 65  est tests.\n".se
0410: 74 20 74 65 73 74 5f 66 69 6c 65 20 22 6d 64 5f  t test_file "md_
0420: 64 61 74 61 2e 64 61 74 22 0a 73 65 74 20 74 65  data.dat".set te
0430: 73 74 5f 61 6c 74 5f 66 69 6c 65 20 22 6d 64 5f  st_alt_file "md_
0440: 61 6c 74 5f 64 61 74 61 2e 64 61 74 22 0a 73 65  alt_data.dat".se
0450: 74 20 74 65 73 74 5f 6b 65 79 20 22 45 78 61 6d  t test_key "Exam
0460: 70 6c 65 20 6b 65 79 22 0a 3a 3a 74 63 6c 74 65  ple key".::tclte
0470: 73 74 3a 3a 6d 61 6b 65 46 69 6c 65 20 24 74 65  st::makeFile $te
0480: 73 74 5f 64 61 74 61 20 24 74 65 73 74 5f 66 69  st_data $test_fi
0490: 6c 65 0a 0a 23 20 54 65 73 74 20 73 68 6f 72 74  le..# Test short
04a0: 2d 63 75 74 20 63 6f 6d 6d 61 6e 64 73 0a 0a 0a  -cut commands...
04b0: 74 65 73 74 20 53 68 6f 72 74 63 75 74 5f 43 6d  test Shortcut_Cm
04c0: 64 73 2d 31 2e 31 20 7b 6d 64 34 20 63 6d 64 7d  ds-1.1 {md4 cmd}
04d0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
04e0: 3a 6d 64 34 20 24 74 65 73 74 5f 64 61 74 61 0a  :md4 $test_data.
04f0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37      } -result {7
0500: 39 33 33 39 39 66 37 39 32 65 63 61 32 37 35 32  93399f792eca2752
0510: 63 36 61 66 33 32 33 34 62 61 37 30 38 35 38 7d  c6af3234ba70858}
0520: 0a 0a 74 65 73 74 20 53 68 6f 72 74 63 75 74 5f  ..test Shortcut_
0530: 43 6d 64 73 2d 31 2e 32 20 7b 6d 64 35 20 63 6d  Cmds-1.2 {md5 cm
0540: 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  d} -body {..::tl
0550: 73 3a 3a 6d 64 35 20 24 74 65 73 74 5f 64 61 74  s::md5 $test_dat
0560: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
0570: 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65  {962bf0803b4232e
0580: 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30  c23bd8427bb94ea0
0590: 39 7d 0a 0a 74 65 73 74 20 53 68 6f 72 74 63 75  9}..test Shortcu
05a0: 74 5f 43 6d 64 73 2d 31 2e 33 20 7b 73 68 61 31  t_Cmds-1.3 {sha1
05b0: 20 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a   cmd} -body {..:
05c0: 3a 74 6c 73 3a 3a 73 68 61 31 20 24 74 65 73 74  :tls::sha1 $test
05d0: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
05e0: 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36  ult {4fe03b7f256
05f0: 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30  8551dfafb98ca600
0600: 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a  4e65c4b71aa7d}..
0610: 74 65 73 74 20 53 68 6f 72 74 63 75 74 5f 43 6d  test Shortcut_Cm
0620: 64 73 2d 31 2e 34 20 7b 73 68 61 32 35 36 20 63  ds-1.4 {sha256 c
0630: 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  md} -body {..::t
0640: 6c 73 3a 3a 73 68 61 32 35 36 20 24 74 65 73 74  ls::sha256 $test
0650: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
0660: 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 38  ult {9d3578fc138
0670: 32 30 35 63 66 30 65 65 34 62 34 63 65 66 33 35  205cf0ee4b4cef35
0680: 66 65 31 30 31 62 62 34 65 63 61 63 37 62 31 36  fe101bb4ecac7b16
0690: 31 34 63 31 38 65 36 66 61 34 38 62 35 63 37 66  14c18e6fa48b5c7f
06a0: 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 53 68 6f  95e19}..test Sho
06b0: 72 74 63 75 74 5f 43 6d 64 73 2d 31 2e 35 20 7b  rtcut_Cmds-1.5 {
06c0: 73 68 61 35 31 32 20 63 6d 64 7d 20 2d 62 6f 64  sha512 cmd} -bod
06d0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 73 68 61 35  y {..::tls::sha5
06e0: 31 32 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  12 $test_data.  
06f0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37    } -result {d17
0700: 38 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35  8e759dc591270715
0710: 38 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38  88d2fad173c06238
0720: 64 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33  d87e800a6403c0a3
0730: 30 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63  0daa4faaf05d0e7c
0740: 65 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33  e04916afaa6a58a3
0750: 30 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36  0cbeb597dacb01c6
0760: 32 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36  2f9fb9d89bab9da6
0770: 33 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a  30c699e4816f1}..
0780: 0a 23 20 54 65 73 74 20 4d 44 20 63 6f 6d 6d 61  .# Test MD comma
0790: 6e 64 20 66 6f 72 20 72 65 61 64 20 63 68 61 6e  nd for read chan
07a0: 6e 65 6c 0a 0a 0a 74 65 73 74 20 4d 44 5f 43 68  nel...test MD_Ch
07b0: 61 6e 5f 52 65 61 64 2d 32 2e 31 20 7b 6d 64 34  an_Read-2.1 {md4
07c0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
07d0: 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c  t_read_chan ::tl
07e0: 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69 6c 65  s::md $test_file
07f0: 20 2d 64 69 67 65 73 74 20 6d 64 34 0a 20 20 20   -digest md4.   
0800: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39 33 33   } -result {7933
0810: 39 39 66 37 39 32 65 63 61 32 37 35 32 63 36 61  99f792eca2752c6a
0820: 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a 0a 74  f3234ba70858}..t
0830: 65 73 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64  est MD_Chan_Read
0840: 2d 32 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f 64 79  -2.2 {md5} -body
0850: 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f   {..digest_read_
0860: 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24  chan ::tls::md $
0870: 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73  test_file -diges
0880: 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d 72 65 73  t md5.    } -res
0890: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34  ult {962bf0803b4
08a0: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39  232ec23bd8427bb9
08b0: 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f  4ea09}..test MD_
08c0: 43 68 61 6e 5f 52 65 61 64 2d 32 2e 33 20 7b 73  Chan_Read-2.3 {s
08d0: 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  ha1} -body {..di
08e0: 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a  gest_read_chan :
08f0: 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66  :tls::md $test_f
0900: 69 6c 65 20 2d 64 69 67 65 73 74 20 73 68 61 31  ile -digest sha1
0910: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
0920: 34 66 65 30 33 62 37 66 32 35 36 38 35 35 31 64  4fe03b7f2568551d
0930: 66 61 66 62 39 38 63 61 36 30 30 34 65 36 35 63  fafb98ca6004e65c
0940: 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20  4b71aa7d}..test 
0950: 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e 34  MD_Chan_Read-2.4
0960: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20   {sha256} -body 
0970: 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63  {..digest_read_c
0980: 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74  han ::tls::md $t
0990: 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74  est_file -digest
09a0: 20 73 68 61 32 35 36 0a 20 20 20 20 7d 20 2d 72   sha256.    } -r
09b0: 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31  esult {9d3578fc1
09c0: 33 38 32 30 35 63 66 30 65 65 34 62 34 63 65 66  38205cf0ee4b4cef
09d0: 33 35 66 65 31 30 31 62 62 34 65 63 61 63 37 62  35fe101bb4ecac7b
09e0: 31 36 31 34 63 31 38 65 36 66 61 34 38 62 35 63  1614c18e6fa48b5c
09f0: 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 4d  7f95e19}..test M
0a00: 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e 35 20  D_Chan_Read-2.5 
0a10: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
0a20: 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68  ..digest_read_ch
0a30: 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65  an ::tls::md $te
0a40: 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20  st_file -digest 
0a50: 73 68 61 35 31 32 0a 20 20 20 20 7d 20 2d 72 65  sha512.    } -re
0a60: 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63  sult {d178e759dc
0a70: 35 39 31 32 37 30 37 31 35 38 38 64 32 66 61 64  59127071588d2fad
0a80: 31 37 33 63 30 36 32 33 38 64 38 37 65 38 30 30  173c06238d87e800
0a90: 61 36 34 30 33 63 30 61 33 30 64 61 61 34 66 61  a6403c0a30daa4fa
0aa0: 61 66 30 35 64 30 65 37 63 65 30 34 39 31 36 61  af05d0e7ce04916a
0ab0: 66 61 61 36 61 35 38 61 33 30 63 62 65 62 35 39  faa6a58a30cbeb59
0ac0: 37 64 61 63 62 30 31 63 36 32 66 39 66 62 39 64  7dacb01c62f9fb9d
0ad0: 38 39 62 61 62 39 64 61 36 33 30 63 36 39 39 65  89bab9da630c699e
0ae0: 34 38 31 36 66 31 7d 0a 0a 74 65 73 74 20 4d 44  4816f1}..test MD
0af0: 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e 36 20 7b  _Chan_Read-2.6 {
0b00: 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b  md5 bin} -body {
0b10: 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20  ..binary encode 
0b20: 68 65 78 20 5b 64 69 67 65 73 74 5f 72 65 61 64  hex [digest_read
0b30: 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _chan ::tls::md 
0b40: 24 74 65 73 74 5f 66 69 6c 65 20 2d 62 69 6e 20  $test_file -bin 
0b50: 2d 64 69 67 65 73 74 20 6d 64 35 5d 0a 20 20 20  -digest md5].   
0b60: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62   } -result {962b
0b70: 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64  f0803b4232ec23bd
0b80: 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74  8427bb94ea09}..t
0b90: 65 73 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64  est MD_Chan_Read
0ba0: 2d 32 2e 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d  -2.7 {md5 hex} -
0bb0: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72  body {..digest_r
0bc0: 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a  ead_chan ::tls::
0bd0: 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 68  md $test_file -h
0be0: 65 78 20 2d 64 69 67 65 73 74 20 6d 64 35 0a 20  ex -digest md5. 
0bf0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36     } -result {96
0c00: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33  2bf0803b4232ec23
0c10: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a  bd8427bb94ea09}.
0c20: 0a 23 20 54 65 73 74 20 4d 44 20 63 6f 6d 6d 61  .# Test MD comma
0c30: 6e 64 20 66 6f 72 20 77 72 69 74 65 20 63 68 61  nd for write cha
0c40: 6e 6e 65 6c 0a 0a 0a 74 65 73 74 20 4d 44 5f 43  nnel...test MD_C
0c50: 68 61 6e 5f 57 72 69 74 65 2d 33 2e 31 20 7b 6d  han_Write-3.1 {m
0c60: 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  d4} -body {..dig
0c70: 65 73 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a  est_write_chan :
0c80: 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61  :tls::md $test_a
0c90: 6c 74 5f 66 69 6c 65 20 24 74 65 73 74 5f 64 61  lt_file $test_da
0ca0: 74 61 20 2d 64 69 67 65 73 74 20 6d 64 34 0a 20  ta -digest md4. 
0cb0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39     } -result {79
0cc0: 33 33 39 39 66 37 39 32 65 63 61 32 37 35 32 63  3399f792eca2752c
0cd0: 36 61 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a  6af3234ba70858}.
0ce0: 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 57 72  .test MD_Chan_Wr
0cf0: 69 74 65 2d 33 2e 32 20 7b 6d 64 35 7d 20 2d 62  ite-3.2 {md5} -b
0d00: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 77 72  ody {..digest_wr
0d10: 69 74 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a  ite_chan ::tls::
0d20: 6d 64 20 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c  md $test_alt_fil
0d30: 65 20 24 74 65 73 74 5f 64 61 74 61 20 2d 64 69  e $test_data -di
0d40: 67 65 73 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d  gest md5.    } -
0d50: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
0d60: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
0d70: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
0d80: 4d 44 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33 2e  MD_Chan_Write-3.
0d90: 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b  3 {sha1} -body {
0da0: 0a 09 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63  ..digest_write_c
0db0: 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74  han ::tls::md $t
0dc0: 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65  est_alt_file $te
0dd0: 73 74 5f 64 61 74 61 20 2d 64 69 67 65 73 74 20  st_data -digest 
0de0: 73 68 61 31 0a 20 20 20 20 7d 20 2d 72 65 73 75  sha1.    } -resu
0df0: 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38  lt {4fe03b7f2568
0e00: 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34  551dfafb98ca6004
0e10: 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74  e65c4b71aa7d}..t
0e20: 65 73 74 20 4d 44 5f 43 68 61 6e 5f 57 72 69 74  est MD_Chan_Writ
0e30: 65 2d 33 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d  e-3.4 {sha256} -
0e40: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 77  body {..digest_w
0e50: 72 69 74 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a  rite_chan ::tls:
0e60: 3a 6d 64 20 24 74 65 73 74 5f 61 6c 74 5f 66 69  :md $test_alt_fi
0e70: 6c 65 20 24 74 65 73 74 5f 64 61 74 61 20 2d 64  le $test_data -d
0e80: 69 67 65 73 74 20 73 68 61 32 35 36 0a 20 20 20  igest sha256.   
0e90: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64 33 35   } -result {9d35
0ea0: 37 38 66 63 31 33 38 32 30 35 63 66 30 65 65 34  78fc138205cf0ee4
0eb0: 62 34 63 65 66 33 35 66 65 31 30 31 62 62 34 65  b4cef35fe101bb4e
0ec0: 63 61 63 37 62 31 36 31 34 63 31 38 65 36 66 61  cac7b1614c18e6fa
0ed0: 34 38 62 35 63 37 66 39 35 65 31 39 7d 0a 0a 74  48b5c7f95e19}..t
0ee0: 65 73 74 20 4d 44 5f 43 68 61 6e 5f 57 72 69 74  est MD_Chan_Writ
0ef0: 65 2d 33 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d  e-3.5 {sha512} -
0f00: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 77  body {..digest_w
0f10: 72 69 74 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a  rite_chan ::tls:
0f20: 3a 6d 64 20 24 74 65 73 74 5f 61 6c 74 5f 66 69  :md $test_alt_fi
0f30: 6c 65 20 24 74 65 73 74 5f 64 61 74 61 20 2d 64  le $test_data -d
0f40: 69 67 65 73 74 20 73 68 61 35 31 32 0a 20 20 20  igest sha512.   
0f50: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38   } -result {d178
0f60: 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38  e759dc5912707158
0f70: 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64  8d2fad173c06238d
0f80: 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30  87e800a6403c0a30
0f90: 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65  daa4faaf05d0e7ce
0fa0: 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30  04916afaa6a58a30
0fb0: 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32  cbeb597dacb01c62
0fc0: 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33  f9fb9d89bab9da63
0fd0: 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 74  0c699e4816f1}..t
0fe0: 65 73 74 20 4d 44 5f 43 68 61 6e 5f 57 72 69 74  est MD_Chan_Writ
0ff0: 65 2d 33 2e 36 20 7b 6d 64 35 20 62 69 6e 7d 20  e-3.6 {md5 bin} 
1000: 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20  -body {..binary 
1010: 65 6e 63 6f 64 65 20 68 65 78 20 5b 64 69 67 65  encode hex [dige
1020: 73 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a 3a  st_write_chan ::
1030: 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61 6c  tls::md $test_al
1040: 74 5f 66 69 6c 65 20 24 74 65 73 74 5f 64 61 74  t_file $test_dat
1050: 61 20 2d 62 69 6e 20 2d 64 69 67 65 73 74 20 6d  a -bin -digest m
1060: 64 35 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  d5].    } -resul
1070: 74 20 7b 39 36 32 62 66 30 38 30 33 62 34 32 33  t {962bf0803b423
1080: 32 65 63 32 33 62 64 38 34 32 37 62 62 39 34 65  2ec23bd8427bb94e
1090: 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68  a09}..test MD_Ch
10a0: 61 6e 5f 57 72 69 74 65 2d 33 2e 37 20 7b 6d 64  an_Write-3.7 {md
10b0: 35 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09  5 hex} -body {..
10c0: 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68 61  digest_write_cha
10d0: 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73  n ::tls::md $tes
10e0: 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73 74  t_alt_file $test
10f0: 5f 64 61 74 61 20 2d 68 65 78 20 2d 64 69 67 65  _data -hex -dige
1100: 73 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d 72 65  st md5.    } -re
1110: 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62  sult {962bf0803b
1120: 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62  4232ec23bd8427bb
1130: 39 34 65 61 30 39 7d 0a 0a 23 20 54 65 73 74 20  94ea09}..# Test 
1140: 4d 44 20 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 6f  MD command for o
1150: 62 6a 65 63 74 20 63 6f 6d 6d 61 6e 64 0a 0a 0a  bject command...
1160: 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61 6e 64 2d  test MD_Command-
1170: 34 2e 31 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20  4.1 {md4} -body 
1180: 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75  {..digest_accumu
1190: 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20  late $test_data 
11a0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
11b0: 74 20 6d 64 34 0a 20 20 20 20 7d 20 2d 72 65 73  t md4.    } -res
11c0: 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32 65  ult {793399f792e
11d0: 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62 61  ca2752c6af3234ba
11e0: 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 4d 44 5f  70858}..test MD_
11f0: 43 6f 6d 6d 61 6e 64 2d 34 2e 32 20 7b 6d 64 35  Command-4.2 {md5
1200: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
1210: 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65  t_accumulate $te
1220: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d  st_data ::tls::m
1230: 64 20 2d 64 69 67 65 73 74 20 6d 64 35 0a 20 20  d -digest md5.  
1240: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32    } -result {962
1250: 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62  bf0803b4232ec23b
1260: 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a  d8427bb94ea09}..
1270: 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61 6e 64 2d  test MD_Command-
1280: 34 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79  4.3 {sha1} -body
1290: 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d   {..digest_accum
12a0: 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61  ulate $test_data
12b0: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65   ::tls::md -dige
12c0: 73 74 20 73 68 61 31 0a 20 20 20 20 7d 20 2d 72  st sha1.    } -r
12d0: 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32  esult {4fe03b7f2
12e0: 35 36 38 35 35 31 64 66 61 66 62 39 38 63 61 36  568551dfafb98ca6
12f0: 30 30 34 65 36 35 63 34 62 37 31 61 61 37 64 7d  004e65c4b71aa7d}
1300: 0a 0a 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61 6e  ..test MD_Comman
1310: 64 2d 34 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d  d-4.4 {sha256} -
1320: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61  body {..digest_a
1330: 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f  ccumulate $test_
1340: 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  data ::tls::md -
1350: 64 69 67 65 73 74 20 73 68 61 32 35 36 0a 20 20  digest sha256.  
1360: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64 33    } -result {9d3
1370: 35 37 38 66 63 31 33 38 32 30 35 63 66 30 65 65  578fc138205cf0ee
1380: 34 62 34 63 65 66 33 35 66 65 31 30 31 62 62 34  4b4cef35fe101bb4
1390: 65 63 61 63 37 62 31 36 31 34 63 31 38 65 36 66  ecac7b1614c18e6f
13a0: 61 34 38 62 35 63 37 66 39 35 65 31 39 7d 0a 0a  a48b5c7f95e19}..
13b0: 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61 6e 64 2d  test MD_Command-
13c0: 34 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f  4.5 {sha512} -bo
13d0: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63  dy {..digest_acc
13e0: 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61  umulate $test_da
13f0: 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  ta ::tls::md -di
1400: 67 65 73 74 20 73 68 61 35 31 32 0a 20 20 20 20  gest sha512.    
1410: 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38 65  } -result {d178e
1420: 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38 38  759dc59127071588
1430: 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64 38  d2fad173c06238d8
1440: 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30 64  7e800a6403c0a30d
1450: 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65 30  aa4faaf05d0e7ce0
1460: 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30 63  4916afaa6a58a30c
1470: 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32 66  beb597dacb01c62f
1480: 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33 30  9fb9d89bab9da630
1490: 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 74 65  c699e4816f1}..te
14a0: 73 74 20 4d 44 5f 43 6f 6d 6d 61 6e 64 2d 34 2e  st MD_Command-4.
14b0: 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64  6 {md5 bin} -bod
14c0: 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f  y {..binary enco
14d0: 64 65 20 68 65 78 20 5b 64 69 67 65 73 74 5f 61  de hex [digest_a
14e0: 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f  ccumulate $test_
14f0: 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  data ::tls::md -
1500: 64 69 67 65 73 74 20 6d 64 35 20 2d 62 69 6e 5d  digest md5 -bin]
1510: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1520: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
1530: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
1540: 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61  }..test MD_Comma
1550: 6e 64 2d 34 2e 37 20 7b 6d 64 35 20 68 65 78 7d  nd-4.7 {md5 hex}
1560: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
1570: 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73  _accumulate $tes
1580: 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64  t_data ::tls::md
1590: 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 68 65   -digest md5 -he
15a0: 78 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  x.    } -result 
15b0: 7b 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65  {962bf0803b4232e
15c0: 63 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30  c23bd8427bb94ea0
15d0: 39 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20 63 6f  9}..# Test MD co
15e0: 6d 6d 61 6e 64 20 66 6f 72 20 64 61 74 61 20 73  mmand for data s
15f0: 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73 74 20 4d  hortcut...test M
1600: 44 5f 53 68 6f 72 74 63 75 74 2d 35 2e 31 20 7b  D_Shortcut-5.1 {
1610: 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  md4} -body {..::
1620: 74 6c 73 3a 3a 6d 64 20 6d 64 34 20 24 74 65 73  tls::md md4 $tes
1630: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
1640: 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32  sult {793399f792
1650: 65 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62  eca2752c6af3234b
1660: 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 4d 44  a70858}..test MD
1670: 5f 53 68 6f 72 74 63 75 74 2d 35 2e 32 20 7b 6d  _Shortcut-5.2 {m
1680: 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  d5} -body {..::t
1690: 6c 73 3a 3a 6d 64 20 6d 64 35 20 24 74 65 73 74  ls::md md5 $test
16a0: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
16b0: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34  ult {962bf0803b4
16c0: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39  232ec23bd8427bb9
16d0: 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f  4ea09}..test MD_
16e0: 53 68 6f 72 74 63 75 74 2d 35 2e 33 20 7b 73 68  Shortcut-5.3 {sh
16f0: 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  a1} -body {..::t
1700: 6c 73 3a 3a 6d 64 20 73 68 61 31 20 24 74 65 73  ls::md sha1 $tes
1710: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
1720: 73 75 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35  sult {4fe03b7f25
1730: 36 38 35 35 31 64 66 61 66 62 39 38 63 61 36 30  68551dfafb98ca60
1740: 30 34 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a  04e65c4b71aa7d}.
1750: 0a 74 65 73 74 20 4d 44 5f 53 68 6f 72 74 63 75  .test MD_Shortcu
1760: 74 2d 35 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d  t-5.4 {sha256} -
1770: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
1780: 64 20 73 68 61 32 35 36 20 24 74 65 73 74 5f 64  d sha256 $test_d
1790: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
17a0: 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32 30  t {9d3578fc13820
17b0: 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66 65  5cf0ee4b4cef35fe
17c0: 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31 34  101bb4ecac7b1614
17d0: 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39 35  c18e6fa48b5c7f95
17e0: 65 31 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 53 68  e19}..test MD_Sh
17f0: 6f 72 74 63 75 74 2d 35 2e 35 20 7b 73 68 61 35  ortcut-5.5 {sha5
1800: 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  12} -body {..::t
1810: 6c 73 3a 3a 6d 64 20 73 68 61 35 31 32 20 24 74  ls::md sha512 $t
1820: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
1830: 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39  result {d178e759
1840: 64 63 35 39 31 32 37 30 37 31 35 38 38 64 32 66  dc59127071588d2f
1850: 61 64 31 37 33 63 30 36 32 33 38 64 38 37 65 38  ad173c06238d87e8
1860: 30 30 61 36 34 30 33 63 30 61 33 30 64 61 61 34  00a6403c0a30daa4
1870: 66 61 61 66 30 35 64 30 65 37 63 65 30 34 39 31  faaf05d0e7ce0491
1880: 36 61 66 61 61 36 61 35 38 61 33 30 63 62 65 62  6afaa6a58a30cbeb
1890: 35 39 37 64 61 63 62 30 31 63 36 32 66 39 66 62  597dacb01c62f9fb
18a0: 39 64 38 39 62 61 62 39 64 61 36 33 30 63 36 39  9d89bab9da630c69
18b0: 39 65 34 38 31 36 66 31 7d 0a 0a 23 20 54 65 73  9e4816f1}..# Tes
18c0: 74 20 4d 44 20 63 6f 6d 6d 61 6e 64 20 66 6f 72  t MD command for
18d0: 20 64 61 74 61 0a 0a 0a 74 65 73 74 20 4d 44 5f   data...test MD_
18e0: 44 61 74 61 2d 36 2e 31 20 7b 6d 64 34 7d 20 2d  Data-6.1 {md4} -
18f0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
1900: 64 20 2d 64 69 67 65 73 74 20 6d 64 34 20 2d 64  d -digest md4 -d
1910: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20  ata $test_data. 
1920: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39     } -result {79
1930: 33 33 39 39 66 37 39 32 65 63 61 32 37 35 32 63  3399f792eca2752c
1940: 36 61 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a  6af3234ba70858}.
1950: 0a 74 65 73 74 20 4d 44 5f 44 61 74 61 2d 36 2e  .test MD_Data-6.
1960: 32 20 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a  2 {md5} -body {.
1970: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
1980: 73 74 20 6d 64 35 20 2d 64 61 74 61 20 24 74 65  st md5 -data $te
1990: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
19a0: 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33  esult {962bf0803
19b0: 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62  b4232ec23bd8427b
19c0: 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d  b94ea09}..test M
19d0: 44 5f 44 61 74 61 2d 36 2e 33 20 7b 73 68 61 31  D_Data-6.3 {sha1
19e0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
19f0: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
1a00: 31 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61  1 -data $test_da
1a10: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
1a20: 20 7b 34 66 65 30 33 62 37 66 32 35 36 38 35 35   {4fe03b7f256855
1a30: 31 64 66 61 66 62 39 38 63 61 36 30 30 34 65 36  1dfafb98ca6004e6
1a40: 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73  5c4b71aa7d}..tes
1a50: 74 20 4d 44 5f 44 61 74 61 2d 36 2e 34 20 7b 73  t MD_Data-6.4 {s
1a60: 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha256} -body {..
1a70: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
1a80: 74 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 24  t sha256 -data $
1a90: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
1aa0: 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66  -result {9d3578f
1ab0: 63 31 33 38 32 30 35 63 66 30 65 65 34 62 34 63  c138205cf0ee4b4c
1ac0: 65 66 33 35 66 65 31 30 31 62 62 34 65 63 61 63  ef35fe101bb4ecac
1ad0: 37 62 31 36 31 34 63 31 38 65 36 66 61 34 38 62  7b1614c18e6fa48b
1ae0: 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74  5c7f95e19}..test
1af0: 20 4d 44 5f 44 61 74 61 2d 36 2e 35 20 7b 73 68   MD_Data-6.5 {sh
1b00: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a512} -body {..:
1b10: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
1b20: 20 73 68 61 35 31 32 20 2d 64 61 74 61 20 24 74   sha512 -data $t
1b30: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
1b40: 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39  result {d178e759
1b50: 64 63 35 39 31 32 37 30 37 31 35 38 38 64 32 66  dc59127071588d2f
1b60: 61 64 31 37 33 63 30 36 32 33 38 64 38 37 65 38  ad173c06238d87e8
1b70: 30 30 61 36 34 30 33 63 30 61 33 30 64 61 61 34  00a6403c0a30daa4
1b80: 66 61 61 66 30 35 64 30 65 37 63 65 30 34 39 31  faaf05d0e7ce0491
1b90: 36 61 66 61 61 36 61 35 38 61 33 30 63 62 65 62  6afaa6a58a30cbeb
1ba0: 35 39 37 64 61 63 62 30 31 63 36 32 66 39 66 62  597dacb01c62f9fb
1bb0: 39 64 38 39 62 61 62 39 64 61 36 33 30 63 36 39  9d89bab9da630c69
1bc0: 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 73 74 20  9e4816f1}..test 
1bd0: 4d 44 5f 44 61 74 61 2d 36 2e 36 20 7b 6d 64 35  MD_Data-6.6 {md5
1be0: 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62   bin} -body {..b
1bf0: 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78  inary encode hex
1c00: 20 5b 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67   [::tls::md -dig
1c10: 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20 24 74  est md5 -data $t
1c20: 65 73 74 5f 64 61 74 61 20 2d 62 69 6e 5d 0a 20  est_data -bin]. 
1c30: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36     } -result {96
1c40: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33  2bf0803b4232ec23
1c50: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a  bd8427bb94ea09}.
1c60: 0a 74 65 73 74 20 4d 44 5f 44 61 74 61 2d 36 2e  .test MD_Data-6.
1c70: 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64  7 {md5 hex} -bod
1c80: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
1c90: 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61  digest md5 -data
1ca0: 20 24 74 65 73 74 5f 64 61 74 61 20 2d 68 65 78   $test_data -hex
1cb0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1cc0: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
1cd0: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
1ce0: 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20 63 6f 6d  }..# Test MD com
1cf0: 6d 61 6e 64 20 66 6f 72 20 66 69 6c 65 0a 0a 0a  mand for file...
1d00: 74 65 73 74 20 4d 44 5f 46 69 6c 65 2d 37 2e 31  test MD_File-7.1
1d10: 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09   {md4} -body {..
1d20: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
1d30: 74 20 6d 64 34 20 2d 66 69 6c 65 20 24 74 65 73  t md4 -file $tes
1d40: 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65  t_file.    } -re
1d50: 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39 32  sult {793399f792
1d60: 65 63 61 32 37 35 32 63 36 61 66 33 32 33 34 62  eca2752c6af3234b
1d70: 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 4d 44  a70858}..test MD
1d80: 5f 46 69 6c 65 2d 37 2e 32 20 7b 6d 64 35 7d 20  _File-7.2 {md5} 
1d90: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
1da0: 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d  md -digest md5 -
1db0: 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a  file $test_file.
1dc0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
1dd0: 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32  62bf0803b4232ec2
1de0: 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d  3bd8427bb94ea09}
1df0: 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c 65 2d 37  ..test MD_File-7
1e00: 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20  .3 {sha1} -body 
1e10: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
1e20: 67 65 73 74 20 73 68 61 31 20 2d 66 69 6c 65 20  gest sha1 -file 
1e30: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d  $test_file.    }
1e40: 20 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62   -result {4fe03b
1e50: 37 66 32 35 36 38 35 35 31 64 66 61 66 62 39 38  7f2568551dfafb98
1e60: 63 61 36 30 30 34 65 36 35 63 34 62 37 31 61 61  ca6004e65c4b71aa
1e70: 37 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c  7d}..test MD_Fil
1e80: 65 2d 37 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d  e-7.4 {sha256} -
1e90: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
1ea0: 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36  d -digest sha256
1eb0: 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c   -file $test_fil
1ec0: 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  e.    } -result 
1ed0: 7b 39 64 33 35 37 38 66 63 31 33 38 32 30 35 63  {9d3578fc138205c
1ee0: 66 30 65 65 34 62 34 63 65 66 33 35 66 65 31 30  f0ee4b4cef35fe10
1ef0: 31 62 62 34 65 63 61 63 37 62 31 36 31 34 63 31  1bb4ecac7b1614c1
1f00: 38 65 36 66 61 34 38 62 35 63 37 66 39 35 65 31  8e6fa48b5c7f95e1
1f10: 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c 65  9}..test MD_File
1f20: 2d 37 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d 62  -7.5 {sha512} -b
1f30: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
1f40: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20   -digest sha512 
1f50: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65  -file $test_file
1f60: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1f70: 64 31 37 38 65 37 35 39 64 63 35 39 31 32 37 30  d178e759dc591270
1f80: 37 31 35 38 38 64 32 66 61 64 31 37 33 63 30 36  71588d2fad173c06
1f90: 32 33 38 64 38 37 65 38 30 30 61 36 34 30 33 63  238d87e800a6403c
1fa0: 30 61 33 30 64 61 61 34 66 61 61 66 30 35 64 30  0a30daa4faaf05d0
1fb0: 65 37 63 65 30 34 39 31 36 61 66 61 61 36 61 35  e7ce04916afaa6a5
1fc0: 38 61 33 30 63 62 65 62 35 39 37 64 61 63 62 30  8a30cbeb597dacb0
1fd0: 31 63 36 32 66 39 66 62 39 64 38 39 62 61 62 39  1c62f9fb9d89bab9
1fe0: 64 61 36 33 30 63 36 39 39 65 34 38 31 36 66 31  da630c699e4816f1
1ff0: 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c 65 2d  }..test MD_File-
2000: 37 2e 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62  7.6 {md5 bin} -b
2010: 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e  ody {..binary en
2020: 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a  code hex [::tls:
2030: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
2040: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65  -file $test_file
2050: 20 2d 62 69 6e 5d 0a 20 20 20 20 7d 20 2d 72 65   -bin].    } -re
2060: 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62  sult {962bf0803b
2070: 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62  4232ec23bd8427bb
2080: 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44  94ea09}..test MD
2090: 5f 46 69 6c 65 2d 37 2e 37 20 7b 6d 64 35 20 68  _File-7.7 {md5 h
20a0: 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  ex} -body {..::t
20b0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
20c0: 64 35 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66  d5 -file $test_f
20d0: 69 6c 65 20 2d 68 65 78 0a 20 20 20 20 7d 20 2d  ile -hex.    } -
20e0: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
20f0: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
2100: 62 62 39 34 65 61 30 39 7d 0a 0a 23 20 4d 44 20  bb94ea09}..# MD 
2110: 45 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65  Error Cases...te
2120: 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 31  st MD_Errors-8.1
2130: 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20   {Too few args} 
2140: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2150: 6d 64 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  md.    } -result
2160: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20   {wrong # args: 
2170: 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73  should be "::tls
2180: 3a 3a 6d 64 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f  ::md ?-bin|-hex?
2190: 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f 20   ?-cipher name? 
21a0: 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f  ?-digest name? ?
21b0: 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20  -key key? ?-mac 
21c0: 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20  name? [-channel 
21d0: 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20  chan | -command 
21e0: 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20  cmdName | -file 
21f0: 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74  filename | ?-dat
2200: 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74 75  a? data]"} -retu
2210: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
2220: 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 32 20  t MD_Errors-8.2 
2230: 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 67 73 7d 20  {Too many args} 
2240: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2250: 6d 64 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d 6d  md too many comm
2260: 61 6e 64 20 6c 69 6e 65 20 61 72 67 73 20 74 6f  and line args to
2270: 20 70 61 73 73 20 74 68 65 20 74 65 73 74 20 77   pass the test w
2280: 69 74 68 6f 75 74 20 61 6e 20 65 72 72 6f 72 20  ithout an error 
2290: 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20 20 20 7d  or failing.    }
22a0: 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20   -result {wrong 
22b0: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62  # args: should b
22c0: 65 20 22 3a 3a 74 6c 73 3a 3a 6d 64 20 3f 2d 62  e "::tls::md ?-b
22d0: 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65  in|-hex? ?-ciphe
22e0: 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74  r name? ?-digest
22f0: 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79   name? ?-key key
2300: 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d  ? ?-mac name? [-
2310: 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d  channel chan | -
2320: 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20  command cmdName 
2330: 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65  | -file filename
2340: 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d   | ?-data? data]
2350: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  "} -returnCodes 
2360: 7b 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72  {1}..test MD_Err
2370: 6f 72 73 2d 38 2e 33 20 7b 49 6e 76 61 6c 69 64  ors-8.3 {Invalid
2380: 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 20 7b   digest} -body {
2390: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 62 6f 67 75  ..::tls::md bogu
23a0: 73 20 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  s data.    } -re
23b0: 73 75 6c 74 20 7b 69 6e 76 61 6c 69 64 20 64 69  sult {invalid di
23c0: 67 65 73 74 20 22 62 6f 67 75 73 22 7d 20 2d 72  gest "bogus"} -r
23d0: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
23e0: 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38  test MD_Errors-8
23f0: 2e 34 20 7b 49 6e 76 61 6c 69 64 20 64 69 67 65  .4 {Invalid dige
2400: 73 74 20 41 72 67 7d 20 2d 62 6f 64 79 20 7b 0a  st Arg} -body {.
2410: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
2420: 73 74 20 62 6f 67 75 73 20 2d 64 61 74 61 20 64  st bogus -data d
2430: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
2440: 74 20 7b 69 6e 76 61 6c 69 64 20 64 69 67 65 73  t {invalid diges
2450: 74 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75  t "bogus"} -retu
2460: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
2470: 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 35 20  t MD_Errors-8.5 
2480: 7b 4e 6f 20 64 69 67 65 73 74 7d 20 2d 62 6f 64  {No digest} -bod
2490: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
24a0: 68 65 78 20 2d 64 61 74 61 20 76 61 6c 75 65 0a  hex -data value.
24b0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 6e      } -result {n
24c0: 6f 20 64 69 67 65 73 74 7d 20 2d 72 65 74 75 72  o digest} -retur
24d0: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74  nCodes {1}..test
24e0: 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 36 20 7b   MD_Errors-8.6 {
24f0: 49 6e 76 61 6c 69 64 20 6f 70 74 69 6f 6e 7d 20  Invalid option} 
2500: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2510: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  md -digest sha25
2520: 36 20 2d 62 6f 67 75 73 20 76 61 6c 75 65 0a 20  6 -bogus value. 
2530: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61     } -result {ba
2540: 64 20 6f 70 74 69 6f 6e 20 22 2d 62 6f 67 75 73  d option "-bogus
2550: 22 3a 20 6d 75 73 74 20 62 65 20 2d 62 69 6e 2c  ": must be -bin,
2560: 20 2d 62 69 6e 61 72 79 2c 20 2d 68 65 78 2c 20   -binary, -hex, 
2570: 2d 68 65 78 61 64 65 63 69 6d 61 6c 2c 20 2d 63  -hexadecimal, -c
2580: 68 61 6e 2c 20 2d 63 68 61 6e 6e 65 6c 2c 20 2d  han, -channel, -
2590: 63 69 70 68 65 72 2c 20 2d 63 6f 6d 6d 61 6e 64  cipher, -command
25a0: 2c 20 2d 64 61 74 61 2c 20 2d 64 69 67 65 73 74  , -data, -digest
25b0: 2c 20 2d 66 69 6c 65 2c 20 2d 66 69 6c 65 6e 61  , -file, -filena
25c0: 6d 65 2c 20 2d 68 61 73 68 2c 20 2d 6b 65 79 2c  me, -hash, -key,
25d0: 20 6f 72 20 2d 6d 61 63 7d 20 2d 72 65 74 75 72   or -mac} -retur
25e0: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74  nCodes {1}..test
25f0: 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 37 20 7b   MD_Errors-8.7 {
2600: 49 6e 76 61 6c 69 64 20 66 69 6c 65 7d 20 2d 62  Invalid file} -b
2610: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
2620: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
2630: 2d 66 69 6c 65 20 62 6f 67 75 73 0a 20 20 20 20  -file bogus.    
2640: 7d 20 2d 72 65 73 75 6c 74 20 7b 63 6f 75 6c 64  } -result {could
2650: 6e 27 74 20 6f 70 65 6e 20 22 62 6f 67 75 73 22  n't open "bogus"
2660: 3a 20 6e 6f 20 73 75 63 68 20 66 69 6c 65 20 6f  : no such file o
2670: 72 20 64 69 72 65 63 74 6f 72 79 7d 20 2d 72 65  r directory} -re
2680: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74  turnCodes {1}..t
2690: 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e  est MD_Errors-8.
26a0: 38 20 7b 49 6e 76 61 6c 69 64 20 63 68 61 6e 6e  8 {Invalid chann
26b0: 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  el} -body {..::t
26c0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
26d0: 68 61 32 35 36 20 2d 63 68 61 6e 6e 65 6c 20 62  ha256 -channel b
26e0: 6f 67 75 73 0a 20 20 20 20 7d 20 2d 72 65 73 75  ogus.    } -resu
26f0: 6c 74 20 7b 63 61 6e 20 6e 6f 74 20 66 69 6e 64  lt {can not find
2700: 20 63 68 61 6e 6e 65 6c 20 6e 61 6d 65 64 20 22   channel named "
2710: 62 6f 67 75 73 22 7d 20 2d 72 65 74 75 72 6e 43  bogus"} -returnC
2720: 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d  odes {1}..test M
2730: 44 5f 45 72 72 6f 72 73 2d 38 2e 39 20 7b 4e 6f  D_Errors-8.9 {No
2740: 20 6f 70 65 72 61 74 69 6f 6e 7d 20 2d 62 6f 64   operation} -bod
2750: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
2760: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 62  digest sha256 -b
2770: 69 6e 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  in.    } -result
2780: 20 7b 4e 6f 20 6f 70 65 72 61 74 69 6f 6e 3a 20   {No operation: 
2790: 55 73 65 20 2d 63 68 61 6e 6e 65 6c 2c 20 2d 63  Use -channel, -c
27a0: 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74 61 2c 20 6f  ommand, -data, o
27b0: 72 20 2d 66 69 6c 65 20 6f 70 74 69 6f 6e 7d 20  r -file option} 
27c0: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
27d0: 0a 0a 0a 23 20 54 65 73 74 20 43 4d 41 43 20 63  ...# Test CMAC c
27e0: 6f 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73 74 5f  ommand.set test_
27f0: 63 69 70 68 65 72 20 22 61 65 73 2d 31 32 38 2d  cipher "aes-128-
2800: 63 62 63 22 0a 73 65 74 20 74 65 73 74 5f 6b 65  cbc".set test_ke
2810: 79 20 22 45 78 61 6d 70 6c 65 20 6b 65 79 20 31  y "Example key 1
2820: 32 33 34 22 0a 0a 0a 74 65 73 74 20 43 4d 41 43  234"...test CMAC
2830: 2d 39 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64  -9.1 {data} -bod
2840: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63  y {..::tls::cmac
2850: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63   -cipher $test_c
2860: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74  ipher -key $test
2870: 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74  _key -data $test
2880: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
2890: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
28a0: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
28b0: 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41  e52fa}..test CMA
28c0: 43 2d 39 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f  C-9.2 {file} -bo
28d0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61  dy {..::tls::cma
28e0: 63 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  c -cipher $test_
28f0: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
2900: 74 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73  t_key -file $tes
2910: 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65  t_file.    } -re
2920: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39  sult {baf5c20f99
2930: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64  73e2d606b14c7efd
2940: 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d  fe52fa}..test CM
2950: 41 43 2d 39 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d  AC-9.3 {channel}
2960: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
2970: 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73  _read_chan ::tls
2980: 3a 3a 63 6d 61 63 20 24 74 65 73 74 5f 66 69 6c  ::cmac $test_fil
2990: 65 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  e -cipher $test_
29a0: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
29b0: 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73  t_key.    } -res
29c0: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
29d0: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
29e0: 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41  e52fa}..test CMA
29f0: 43 2d 39 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20  C-9.4 {command} 
2a00: 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f  -body {..digest_
2a10: 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74  accumulate $test
2a20: 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 63 6d 61  _data ::tls::cma
2a30: 63 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  c -cipher $test_
2a40: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
2a50: 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73  t_key.    } -res
2a60: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
2a70: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
2a80: 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41  e52fa}..test CMA
2a90: 43 2d 39 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d  C-9.5 {data bin}
2aa0: 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79   -body {..binary
2ab0: 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74   encode hex [::t
2ac0: 6c 73 3a 3a 63 6d 61 63 20 2d 62 69 6e 20 2d 63  ls::cmac -bin -c
2ad0: 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68  ipher $test_ciph
2ae0: 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65  er -key $test_ke
2af0: 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61  y -data $test_da
2b00: 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ta].    } -resul
2b10: 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65  t {baf5c20f9973e
2b20: 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35  2d606b14c7efdfe5
2b30: 32 66 61 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20  2fa}..# Test MD 
2b40: 43 4d 41 43 0a 0a 0a 74 65 73 74 20 4d 44 5f 43  CMAC...test MD_C
2b50: 4d 41 43 2d 31 30 2e 31 20 7b 64 61 74 61 7d 20  MAC-10.1 {data} 
2b60: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2b70: 6d 64 20 2d 63 69 70 68 65 72 20 24 74 65 73 74  md -cipher $test
2b80: 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65  _cipher -key $te
2b90: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
2ba0: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
2bb0: 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39  esult {baf5c20f9
2bc0: 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66  973e2d606b14c7ef
2bd0: 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 4d  dfe52fa}..test M
2be0: 44 5f 43 4d 41 43 2d 31 30 2e 32 20 7b 66 69 6c  D_CMAC-10.2 {fil
2bf0: 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  e} -body {..::tl
2c00: 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 24 74  s::md -cipher $t
2c10: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20  est_cipher -key 
2c20: 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20  $test_key -file 
2c30: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d  $test_file.    }
2c40: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
2c50: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
2c60: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73  7efdfe52fa}..tes
2c70: 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 33 20 7b  t MD_CMAC-10.3 {
2c80: 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b  channel} -body {
2c90: 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68  ..digest_read_ch
2ca0: 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65  an ::tls::md $te
2cb0: 73 74 5f 66 69 6c 65 20 2d 63 69 70 68 65 72 20  st_file -cipher 
2cc0: 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65  $test_cipher -ke
2cd0: 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20  y $test_key.    
2ce0: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63  } -result {baf5c
2cf0: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34  20f9973e2d606b14
2d00: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65  c7efdfe52fa}..te
2d10: 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 34 20  st MD_CMAC-10.4 
2d20: 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20  {command} -body 
2d30: 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75  {..digest_accumu
2d40: 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20  late $test_data 
2d50: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65  ::tls::md -ciphe
2d60: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d  r $test_cipher -
2d70: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20  key $test_key.  
2d80: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66    } -result {baf
2d90: 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62  5c20f9973e2d606b
2da0: 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a  14c7efdfe52fa}..
2db0: 74 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e  test MD_CMAC-10.
2dc0: 35 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d 62 6f  5 {data bin} -bo
2dd0: 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63  dy {..binary enc
2de0: 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a  ode hex [::tls::
2df0: 6d 64 20 2d 62 69 6e 20 2d 63 69 70 68 65 72 20  md -bin -cipher 
2e00: 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65  $test_cipher -ke
2e10: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74  y $test_key -dat
2e20: 61 20 24 74 65 73 74 5f 64 61 74 61 5d 0a 20 20  a $test_data].  
2e30: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66    } -result {baf
2e40: 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62  5c20f9973e2d606b
2e50: 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a  14c7efdfe52fa}..
2e60: 23 20 54 65 73 74 20 43 4d 41 43 20 53 68 6f 72  # Test CMAC Shor
2e70: 74 63 75 74 0a 0a 0a 74 65 73 74 20 43 4d 41 43  tcut...test CMAC
2e80: 5f 53 68 6f 72 74 63 75 74 2d 31 31 2e 31 20 7b  _Shortcut-11.1 {
2e90: 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  data} -body {..:
2ea0: 3a 74 6c 73 3a 3a 63 6d 61 63 20 24 74 65 73 74  :tls::cmac $test
2eb0: 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65  _cipher -key $te
2ec0: 73 74 5f 6b 65 79 20 24 74 65 73 74 5f 64 61 74  st_key $test_dat
2ed0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
2ee0: 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64  {baf5c20f9973e2d
2ef0: 36 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66  606b14c7efdfe52f
2f00: 61 7d 0a 0a 23 20 43 4d 41 43 20 45 72 72 6f 72  a}..# CMAC Error
2f10: 20 43 61 73 65 73 0a 0a 0a 74 65 73 74 20 43 4d   Cases...test CM
2f20: 41 43 5f 45 72 72 6f 72 73 2d 31 32 2e 31 20 7b  AC_Errors-12.1 {
2f30: 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20 2d 62  Too few args} -b
2f40: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
2f50: 61 63 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ac.    } -result
2f60: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20   {wrong # args: 
2f70: 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73  should be "::tls
2f80: 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65  ::cmac ?-bin|-he
2f90: 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65  x? ?-cipher name
2fa0: 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f  ? ?-digest name?
2fb0: 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61   ?-key key? ?-ma
2fc0: 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65  c name? [-channe
2fd0: 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e  l chan | -comman
2fe0: 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c  d cmdName | -fil
2ff0: 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64  e filename | ?-d
3000: 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65  ata? data]"} -re
3010: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74  turnCodes {1}..t
3020: 65 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d  est CMAC_Errors-
3030: 31 32 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79 20 61  12.2 {Too many a
3040: 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  rgs} -body {..::
3050: 74 6c 73 3a 3a 63 6d 61 63 20 74 6f 6f 20 6d 61  tls::cmac too ma
3060: 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  ny command line 
3070: 61 72 67 73 20 74 6f 20 70 61 73 73 20 74 68 65  args to pass the
3080: 20 74 65 73 74 20 77 69 74 68 6f 75 74 20 61 6e   test without an
3090: 20 65 72 72 6f 72 20 6f 72 20 66 61 69 6c 69 6e   error or failin
30a0: 67 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  g.    } -result 
30b0: 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73  {wrong # args: s
30c0: 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a  hould be "::tls:
30d0: 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65 78  :cmac ?-bin|-hex
30e0: 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f  ? ?-cipher name?
30f0: 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20   ?-digest name? 
3100: 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63  ?-key key? ?-mac
3110: 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c   name? [-channel
3120: 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64   chan | -command
3130: 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65   cmdName | -file
3140: 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61   filename | ?-da
3150: 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74  ta? data]"} -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 33 20 7b 4e 6f 20 63 69 70 68 65 72 7d 20  2.3 {No cipher} 
3190: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
31a0: 63 6d 61 63 20 2d 68 65 78 20 2d 64 61 74 61 20  cmac -hex -data 
31b0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
31c0: 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20 63 69 70   -result {no cip
31d0: 68 65 72 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  her} -returnCode
31e0: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 43 4d 41 43  s {1}..test CMAC
31f0: 5f 45 72 72 6f 72 73 2d 31 32 2e 34 20 7b 4e 6f  _Errors-12.4 {No
3200: 20 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a   key} -body {..:
3210: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68  :tls::cmac -ciph
3220: 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20  er $test_cipher 
3230: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
3240: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3250: 6e 6f 20 6b 65 79 7d 20 2d 72 65 74 75 72 6e 43  no key} -returnC
3260: 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 43  odes {1}..test C
3270: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32 2e 35 20  MAC_Errors-12.5 
3280: 7b 49 6e 76 61 6c 69 64 20 63 69 70 68 65 72 7d  {Invalid cipher}
3290: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
32a0: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 62 6f  :cmac -cipher bo
32b0: 67 75 73 20 2d 64 61 74 61 20 24 74 65 73 74 5f  gus -data $test_
32c0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
32d0: 6c 74 20 7b 69 6e 76 61 6c 69 64 20 63 69 70 68  lt {invalid ciph
32e0: 65 72 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74  er "bogus"} -ret
32f0: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 0a 23  urnCodes {1}...#
3300: 20 54 65 73 74 20 48 4d 41 43 20 63 6f 6d 6d 61   Test HMAC comma
3310: 6e 64 0a 73 65 74 20 74 65 73 74 5f 64 69 67 65  nd.set test_dige
3320: 73 74 20 6d 64 35 0a 73 65 74 20 74 65 73 74 5f  st md5.set test_
3330: 6b 65 79 20 22 45 78 61 6d 70 6c 65 20 6b 65 79  key "Example key
3340: 22 0a 0a 0a 74 65 73 74 20 48 4d 41 43 2d 31 33  "...test HMAC-13
3350: 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20  .1 {data} -body 
3360: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
3370: 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69 67  digest $test_dig
3380: 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b  est -key $test_k
3390: 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64  ey -data $test_d
33a0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
33b0: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61  t {f98327ef3e20a
33c0: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64  b6d388f676c6a79d
33d0: 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41 43 2d  93d}..test HMAC-
33e0: 31 33 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f 64  13.2 {file} -bod
33f0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
3400: 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64   -digest $test_d
3410: 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74  igest -key $test
3420: 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74  _key -file $test
3430: 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73  _file.    } -res
3440: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
3450: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
3460: 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41  9d93d}..test HMA
3470: 43 2d 31 33 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d  C-13.3 {channel}
3480: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
3490: 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73  _read_chan ::tls
34a0: 3a 3a 68 6d 61 63 20 24 74 65 73 74 5f 66 69 6c  ::hmac $test_fil
34b0: 65 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f  e -digest $test_
34c0: 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73  digest -key $tes
34d0: 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73  t_key.    } -res
34e0: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
34f0: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
3500: 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41  9d93d}..test HMA
3510: 43 2d 31 33 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d  C-13.4 {command}
3520: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
3530: 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73  _accumulate $tes
3540: 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 68 6d  t_data ::tls::hm
3550: 61 63 20 2d 64 69 67 65 73 74 20 24 74 65 73 74  ac -digest $test
3560: 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65  _digest -key $te
3570: 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65  st_key.    } -re
3580: 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65  sult {f98327ef3e
3590: 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61  20ab6d388f676c6a
35a0: 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d  79d93d}..test HM
35b0: 41 43 2d 31 33 2e 35 20 7b 64 61 74 61 20 62 69  AC-13.5 {data bi
35c0: 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61  n} -body {..bina
35d0: 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a  ry encode hex [:
35e0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
35f0: 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74 20  st $test_digest 
3600: 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65 73 74 5f  -bin -key $test_
3610: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
3620: 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73  data].    } -res
3630: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
3640: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
3650: 39 64 39 33 64 7d 0a 0a 23 20 54 65 73 74 20 4d  9d93d}..# Test M
3660: 44 20 48 4d 41 43 0a 0a 0a 74 65 73 74 20 4d 44  D HMAC...test MD
3670: 5f 48 4d 41 43 2d 31 34 2e 31 20 7b 64 61 74 61  _HMAC-14.1 {data
3680: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3690: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 24 74 65  ::md -digest $te
36a0: 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24  st_digest -key $
36b0: 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24  test_key -data $
36c0: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
36d0: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
36e0: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
36f0: 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74  c6a79d93d}..test
3700: 20 4d 44 5f 48 4d 41 43 2d 31 34 2e 32 20 7b 66   MD_HMAC-14.2 {f
3710: 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  ile} -body {..::
3720: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
3730: 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65  $test_digest -ke
3740: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c  y $test_key -fil
3750: 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20  e $test_file.   
3760: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33   } -result {f983
3770: 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66  27ef3e20ab6d388f
3780: 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74  676c6a79d93d}..t
3790: 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31 34 2e 33  est MD_HMAC-14.3
37a0: 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79   {channel} -body
37b0: 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f   {..digest_read_
37c0: 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24  chan ::tls::md $
37d0: 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73  test_file -diges
37e0: 74 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d  t $test_digest -
37f0: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20  key $test_key.  
3800: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38    } -result {f98
3810: 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38  327ef3e20ab6d388
3820: 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a  f676c6a79d93d}..
3830: 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31 34 2e  test MD_HMAC-14.
3840: 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64  4 {command} -bod
3850: 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75  y {..digest_accu
3860: 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74  mulate $test_dat
3870: 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  a ::tls::md -dig
3880: 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74  est $test_digest
3890: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a   -key $test_key.
38a0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66      } -result {f
38b0: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33  98327ef3e20ab6d3
38c0: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d  88f676c6a79d93d}
38d0: 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31  ..test MD_HMAC-1
38e0: 34 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d  4.5 {data bin} -
38f0: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65  body {..binary e
3900: 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73  ncode hex [::tls
3910: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 24 74 65  ::md -digest $te
3920: 73 74 5f 64 69 67 65 73 74 20 2d 62 69 6e 20 2d  st_digest -bin -
3930: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64  key $test_key -d
3940: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 5d 0a  ata $test_data].
3950: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66      } -result {f
3960: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33  98327ef3e20ab6d3
3970: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d  88f676c6a79d93d}
3980: 0a 0a 23 20 54 65 73 74 20 48 4d 41 43 20 53 68  ..# Test HMAC Sh
3990: 6f 72 74 63 75 74 0a 0a 0a 74 65 73 74 20 48 4d  ortcut...test HM
39a0: 41 43 5f 53 68 6f 72 74 63 75 74 2d 31 35 2e 31  AC_Shortcut-15.1
39b0: 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a   {data} -body {.
39c0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 24 74 65  .::tls::hmac $te
39d0: 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24  st_digest -key $
39e0: 74 65 73 74 5f 6b 65 79 20 24 74 65 73 74 5f 64  test_key $test_d
39f0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
3a00: 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61  t {f98327ef3e20a
3a10: 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64  b6d388f676c6a79d
3a20: 39 33 64 7d 0a 0a 23 20 48 4d 41 43 20 45 72 72  93d}..# HMAC Err
3a30: 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74 20  or Cases...test 
3a40: 48 4d 41 43 5f 45 72 72 6f 72 73 2d 31 36 2e 31  HMAC_Errors-16.1
3a50: 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20   {Too few args} 
3a60: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
3a70: 68 6d 61 63 0a 20 20 20 20 7d 20 2d 72 65 73 75  hmac.    } -resu
3a80: 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73  lt {wrong # args
3a90: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74  : should be "::t
3aa0: 6c 73 3a 3a 68 6d 61 63 20 3f 2d 62 69 6e 7c 2d  ls::hmac ?-bin|-
3ab0: 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61  hex? ?-cipher na
3ac0: 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d  me? ?-digest nam
3ad0: 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d  e? ?-key key? ?-
3ae0: 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e  mac name? [-chan
3af0: 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d  nel chan | -comm
3b00: 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66  and cmdName | -f
3b10: 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f  ile filename | ?
3b20: 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d  -data? data]"} -
3b30: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
3b40: 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f 72  .test HMAC_Error
3b50: 73 2d 31 36 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79  s-16.2 {Too many
3b60: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09   args} -body {..
3b70: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 74 6f 6f 20  ::tls::hmac too 
3b80: 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  many command lin
3b90: 65 20 61 72 67 73 20 74 6f 20 70 61 73 73 20 74  e args to pass t
3ba0: 68 65 20 74 65 73 74 20 77 69 74 68 6f 75 74 20  he test without 
3bb0: 61 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 69 6c  an error or fail
3bc0: 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ing.    } -resul
3bd0: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  t {wrong # args:
3be0: 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c   should be "::tl
3bf0: 73 3a 3a 68 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68  s::hmac ?-bin|-h
3c00: 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d  ex? ?-cipher nam
3c10: 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65  e? ?-digest name
3c20: 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d  ? ?-key key? ?-m
3c30: 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e  ac name? [-chann
3c40: 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61  el chan | -comma
3c50: 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69  nd cmdName | -fi
3c60: 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d  le filename | ?-
3c70: 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72  data? data]"} -r
3c80: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
3c90: 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f 72 73  test HMAC_Errors
3ca0: 2d 31 36 2e 33 20 7b 4e 6f 20 64 69 67 65 73 74  -16.3 {No digest
3cb0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3cc0: 3a 3a 68 6d 61 63 20 2d 68 65 78 20 2d 64 61 74  ::hmac -hex -dat
3cd0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
3ce0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20 64   } -result {no d
3cf0: 69 67 65 73 74 7d 20 2d 72 65 74 75 72 6e 43 6f  igest} -returnCo
3d00: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d  des {1}..test HM
3d10: 41 43 5f 45 72 72 6f 72 73 2d 31 36 2e 34 20 7b  AC_Errors-16.4 {
3d20: 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a  No key} -body {.
3d30: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
3d40: 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74  gest sha256 -dat
3d50: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
3d60: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20 6b   } -result {no k
3d70: 65 79 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ey} -returnCodes
3d80: 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f   {1}..test HMAC_
3d90: 45 72 72 6f 72 73 2d 31 36 2e 35 20 7b 49 6e 76  Errors-16.5 {Inv
3da0: 61 6c 69 64 20 64 69 67 65 73 74 7d 20 2d 62 6f  alid digest} -bo
3db0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
3dc0: 2d 64 69 67 65 73 74 20 62 6f 67 75 73 20 2d 6b  -digest bogus -k
3dd0: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61  ey $test_key -da
3de0: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
3df0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76    } -result {inv
3e00: 61 6c 69 64 20 64 69 67 65 73 74 20 22 62 6f 67  alid digest "bog
3e10: 75 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  us"} -returnCode
3e20: 73 20 7b 31 7d 0a 0a 0a 23 20 54 65 73 74 20 4d  s {1}...# Test M
3e30: 41 43 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 20 74  AC command.set t
3e40: 65 73 74 5f 63 69 70 68 65 72 20 22 61 65 73 2d  est_cipher "aes-
3e50: 31 32 38 2d 63 62 63 22 0a 73 65 74 20 74 65 73  128-cbc".set tes
3e60: 74 5f 64 69 67 65 73 74 20 73 68 61 32 35 36 0a  t_digest sha256.
3e70: 73 65 74 20 74 65 73 74 5f 6b 65 79 20 22 45 78  set test_key "Ex
3e80: 61 6d 70 6c 65 20 6b 65 79 20 31 32 33 34 22 0a  ample key 1234".
3e90: 0a 0a 74 65 73 74 20 4d 41 43 2d 31 37 2e 31 20  ..test MAC-17.1 
3ea0: 7b 43 4d 41 43 7d 20 2d 62 6f 64 79 20 7b 0a 09  {CMAC} -body {..
3eb0: 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 63 69 70 68  ::tls::mac -ciph
3ec0: 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20  er $test_cipher 
3ed0: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d  -key $test_key -
3ee0: 6d 61 63 20 63 6d 61 63 20 2d 64 61 74 61 20 24  mac cmac -data $
3ef0: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
3f00: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
3f10: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
3f20: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
3f30: 20 4d 41 43 2d 31 37 2e 32 20 7b 48 4d 41 43 7d   MAC-17.2 {HMAC}
3f40: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
3f50: 3a 6d 61 63 20 2d 64 69 67 65 73 74 20 24 74 65  :mac -digest $te
3f60: 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24  st_digest -key $
3f70: 74 65 73 74 5f 6b 65 79 20 2d 6d 61 63 20 68 6d  test_key -mac hm
3f80: 61 63 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64  ac -data $test_d
3f90: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
3fa0: 74 20 7b 36 37 36 64 61 66 39 36 33 37 30 64 30  t {676daf96370d0
3fb0: 65 33 63 35 35 39 38 35 35 37 64 61 33 38 61 39  e3c5598557da38a9
3fc0: 61 38 31 30 61 34 66 62 61 63 62 62 32 64 31 30  a810a4fbacbb2d10
3fd0: 63 36 37 66 36 64 66 61 38 33 66 31 30 66 34 38  c67f6dfa83f10f48
3fe0: 65 39 36 7d 0a 0a 74 65 73 74 20 4d 41 43 2d 31  e96}..test MAC-1
3ff0: 37 2e 33 20 7b 4d 44 2d 43 4d 41 43 7d 20 2d 62  7.3 {MD-CMAC} -b
4000: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
4010: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63   -cipher $test_c
4020: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74  ipher -key $test
4030: 5f 6b 65 79 20 2d 6d 61 63 20 63 6d 61 63 20 2d  _key -mac cmac -
4040: 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a  data $test_data.
4050: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
4060: 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30  af5c20f9973e2d60
4070: 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d  6b14c7efdfe52fa}
4080: 0a 0a 74 65 73 74 20 4d 41 43 2d 31 37 2e 34 20  ..test MAC-17.4 
4090: 7b 4d 44 2d 48 4d 41 43 7d 20 2d 62 6f 64 79 20  {MD-HMAC} -body 
40a0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
40b0: 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73  gest $test_diges
40c0: 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  t -key $test_key
40d0: 20 2d 6d 61 63 20 68 6d 61 63 20 2d 64 61 74 61   -mac hmac -data
40e0: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
40f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 36 37 36 64 61  } -result {676da
4100: 66 39 36 33 37 30 64 30 65 33 63 35 35 39 38 35  f96370d0e3c55985
4110: 35 37 64 61 33 38 61 39 61 38 31 30 61 34 66 62  57da38a9a810a4fb
4120: 61 63 62 62 32 64 31 30 63 36 37 66 36 64 66 61  acbb2d10c67f6dfa
4130: 38 33 66 31 30 66 34 38 65 39 36 7d 0a 0a 23 20  83f10f48e96}..# 
4140: 4d 41 43 20 45 72 72 6f 72 20 43 61 73 65 73 0a  MAC Error Cases.
4150: 0a 0a 74 65 73 74 20 4d 41 43 5f 45 72 72 6f 72  ..test MAC_Error
4160: 73 2d 31 38 2e 31 20 7b 54 6f 6f 20 66 65 77 20  s-18.1 {Too few 
4170: 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  args} -body {..:
4180: 3a 74 6c 73 3a 3a 6d 61 63 0a 20 20 20 20 7d 20  :tls::mac.    } 
4190: 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23  -result {wrong #
41a0: 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65   args: should be
41b0: 20 22 3a 3a 74 6c 73 3a 3a 6d 61 63 20 3f 2d 62   "::tls::mac ?-b
41c0: 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65  in|-hex? ?-ciphe
41d0: 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74  r name? ?-digest
41e0: 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79   name? ?-key key
41f0: 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d  ? ?-mac name? [-
4200: 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d  channel chan | -
4210: 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20  command cmdName 
4220: 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65  | -file filename
4230: 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d   | ?-data? data]
4240: 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  "} -returnCodes 
4250: 7b 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45 72  {1}..test MAC_Er
4260: 72 6f 72 73 2d 31 38 2e 32 20 7b 4e 6f 20 6d 61  rors-18.2 {No ma
4270: 63 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  c} -body {..::tl
4280: 73 3a 3a 6d 61 63 20 2d 6b 65 79 20 24 74 65 73  s::mac -key $tes
4290: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73  t_key -data $tes
42a0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
42b0: 73 75 6c 74 20 7b 6e 6f 20 4d 41 43 7d 20 2d 72  sult {no MAC} -r
42c0: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
42d0: 74 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73 2d  test MAC_Errors-
42e0: 31 38 2e 33 20 7b 4e 6f 20 6b 65 79 7d 20 2d 62  18.3 {No key} -b
42f0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61  ody {..::tls::ma
4300: 63 20 2d 6d 61 63 20 68 6d 61 63 20 2d 64 69 67  c -mac hmac -dig
4310: 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74  est $test_digest
4320: 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74   -data $test_dat
4330: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
4340: 7b 6e 6f 20 6b 65 79 7d 20 2d 72 65 74 75 72 6e  {no key} -return
4350: 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20  Codes {1}..test 
4360: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 38 2e 34 20  MAC_Errors-18.4 
4370: 7b 49 6e 76 61 6c 69 64 20 4d 41 43 7d 20 2d 62  {Invalid MAC} -b
4380: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61  ody {..::tls::ma
4390: 63 20 2d 6d 61 63 20 62 6f 67 75 73 20 2d 6b 65  c -mac bogus -ke
43a0: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74  y $test_key -dat
43b0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
43c0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76 61   } -result {inva
43d0: 6c 69 64 20 4d 41 43 20 22 62 6f 67 75 73 22 7d  lid MAC "bogus"}
43e0: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
43f0: 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45 72 72 6f  }..test MAC_Erro
4400: 72 73 2d 31 38 2e 35 20 7b 54 6f 6f 20 6d 61 6e  rs-18.5 {Too man
4410: 79 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a  y args} -body {.
4420: 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 74 6f 6f 20  .::tls::mac too 
4430: 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  many command lin
4440: 65 20 61 72 67 73 20 74 6f 20 70 61 73 73 20 74  e args to pass t
4450: 68 65 20 74 65 73 74 20 77 69 74 68 6f 75 74 20  he test without 
4460: 61 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 69 6c  an error or fail
4470: 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ing.    } -resul
4480: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  t {wrong # args:
4490: 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c   should be "::tl
44a0: 73 3a 3a 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65  s::mac ?-bin|-he
44b0: 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65  x? ?-cipher name
44c0: 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f  ? ?-digest name?
44d0: 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61   ?-key key? ?-ma
44e0: 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65  c name? [-channe
44f0: 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e  l chan | -comman
4500: 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c  d cmdName | -fil
4510: 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64  e filename | ?-d
4520: 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65  ata? data]"} -re
4530: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 0a  turnCodes {1}...
4540: 23 20 52 46 43 20 31 33 32 31 20 4d 65 73 73 61  # RFC 1321 Messa
4550: 67 65 20 44 69 67 65 73 74 20 35 0a 0a 0a 74 65  ge Digest 5...te
4560: 73 74 20 52 46 43 31 33 32 31 2d 4d 44 35 2d 31  st RFC1321-MD5-1
4570: 39 2e 31 20 7b 54 43 31 7d 20 2d 62 6f 64 79 20  9.1 {TC1} -body 
4580: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
4590: 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20 22  gest md5 -data "
45a0: 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ".    } -result 
45b0: 7b 64 34 31 64 38 63 64 39 38 66 30 30 62 32 30  {d41d8cd98f00b20
45c0: 34 65 39 38 30 30 39 39 38 65 63 66 38 34 32 37  4e9800998ecf8427
45d0: 65 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32 31  e}..test RFC1321
45e0: 2d 4d 44 35 2d 31 39 2e 32 20 7b 54 43 32 7d 20  -MD5-19.2 {TC2} 
45f0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
4600: 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d  md -digest md5 -
4610: 64 61 74 61 20 22 61 22 0a 20 20 20 20 7d 20 2d  data "a".    } -
4620: 72 65 73 75 6c 74 20 7b 30 63 63 31 37 35 62 39  result {0cc175b9
4630: 63 30 66 31 62 36 61 38 33 31 63 33 39 39 65 32  c0f1b6a831c399e2
4640: 36 39 37 37 32 36 36 31 7d 0a 0a 74 65 73 74 20  69772661}..test 
4650: 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e 33  RFC1321-MD5-19.3
4660: 20 7b 54 43 33 7d 20 2d 62 6f 64 79 20 7b 0a 09   {TC3} -body {..
4670: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
4680: 74 20 6d 64 35 20 2d 64 61 74 61 20 22 61 62 63  t md5 -data "abc
4690: 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ".    } -result 
46a0: 7b 39 30 30 31 35 30 39 38 33 63 64 32 34 66 62  {900150983cd24fb
46b0: 30 64 36 39 36 33 66 37 64 32 38 65 31 37 66 37  0d6963f7d28e17f7
46c0: 32 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32 31  2}..test RFC1321
46d0: 2d 4d 44 35 2d 31 39 2e 34 20 7b 54 43 34 7d 20  -MD5-19.4 {TC4} 
46e0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
46f0: 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d  md -digest md5 -
4700: 64 61 74 61 20 22 6d 65 73 73 61 67 65 20 64 69  data "message di
4710: 67 65 73 74 22 0a 20 20 20 20 7d 20 2d 72 65 73  gest".    } -res
4720: 75 6c 74 20 7b 66 39 36 62 36 39 37 64 37 63 62  ult {f96b697d7cb
4730: 37 39 33 38 64 35 32 35 61 32 66 33 31 61 61 66  7938d525a2f31aaf
4740: 31 36 31 64 30 7d 0a 0a 74 65 73 74 20 52 46 43  161d0}..test RFC
4750: 31 33 32 31 2d 4d 44 35 2d 31 39 2e 35 20 7b 54  1321-MD5-19.5 {T
4760: 43 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C5} -body {..::t
4770: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
4780: 64 35 20 2d 64 61 74 61 20 22 61 62 63 64 65 66  d5 -data "abcdef
4790: 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76  ghijklmnopqrstuv
47a0: 77 78 79 7a 22 0a 20 20 20 20 7d 20 2d 72 65 73  wxyz".    } -res
47b0: 75 6c 74 20 7b 63 33 66 63 64 33 64 37 36 31 39  ult {c3fcd3d7619
47c0: 32 65 34 30 30 37 64 66 62 34 39 36 63 63 61 36  2e4007dfb496cca6
47d0: 37 65 31 33 62 7d 0a 0a 74 65 73 74 20 52 46 43  7e13b}..test RFC
47e0: 31 33 32 31 2d 4d 44 35 2d 31 39 2e 36 20 7b 54  1321-MD5-19.6 {T
47f0: 43 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C6} -body {..::t
4800: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
4810: 64 35 20 2d 64 61 74 61 20 22 41 42 43 44 45 46  d5 -data "ABCDEF
4820: 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56  GHIJKLMNOPQRSTUV
4830: 57 58 59 5a 61 62 63 64 65 66 67 68 69 6a 6b 6c  WXYZabcdefghijkl
4840: 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 30 31  mnopqrstuvwxyz01
4850: 32 33 34 35 36 37 38 39 22 0a 20 20 20 20 7d 20  23456789".    } 
4860: 2d 72 65 73 75 6c 74 20 7b 64 31 37 34 61 62 39  -result {d174ab9
4870: 38 64 32 37 37 64 39 66 35 61 35 36 31 31 63 32  8d277d9f5a5611c2
4880: 63 39 66 34 31 39 64 39 66 7d 0a 0a 74 65 73 74  c9f419d9f}..test
4890: 20 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e   RFC1321-MD5-19.
48a0: 37 20 7b 54 43 37 7d 20 2d 62 6f 64 79 20 7b 0a  7 {TC7} -body {.
48b0: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
48c0: 73 74 20 6d 64 35 20 2d 64 61 74 61 20 5b 73 74  st md5 -data [st
48d0: 72 69 6e 67 20 72 65 70 65 61 74 20 22 31 32 33  ring repeat "123
48e0: 34 35 36 37 38 39 30 22 20 38 5d 0a 20 20 20 20  4567890" 8].    
48f0: 7d 20 2d 72 65 73 75 6c 74 20 7b 35 37 65 64 66  } -result {57edf
4900: 34 61 32 32 62 65 33 63 39 35 35 61 63 34 39 64  4a22be3c955ac49d
4910: 61 32 65 32 31 30 37 62 36 37 61 7d 0a 0a 23 20  a2e2107b67a}..# 
4920: 52 46 43 20 36 32 33 34 20 53 48 41 31 0a 0a 0a  RFC 6234 SHA1...
4930: 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d  test RFC6234-MD-
4940: 53 48 41 31 2d 32 30 2e 31 20 7b 54 43 31 7d 20  SHA1-20.1 {TC1} 
4950: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
4960: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 20  md -digest sha1 
4970: 2d 64 61 74 61 20 22 61 62 63 22 0a 20 20 20 20  -data "abc".    
4980: 7d 20 2d 72 65 73 75 6c 74 20 7b 61 39 39 39 33  } -result {a9993
4990: 65 33 36 34 37 30 36 38 31 36 61 62 61 33 65 32  e364706816aba3e2
49a0: 35 37 31 37 38 35 30 63 32 36 63 39 63 64 30 64  5717850c26c9cd0d
49b0: 38 39 64 7d 0a 0a 74 65 73 74 20 52 46 43 36 32  89d}..test RFC62
49c0: 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 32 20  34-MD-SHA1-20.2 
49d0: 7b 54 43 32 5f 31 7d 20 2d 62 6f 64 79 20 7b 0a  {TC2_1} -body {.
49e0: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
49f0: 73 74 20 73 68 61 31 20 2d 64 61 74 61 20 22 61  st sha1 -data "a
4a00: 62 63 64 62 63 64 65 63 64 65 66 64 65 66 67 65  bcdbcdecdefdefge
4a10: 66 67 68 66 67 68 69 67 68 69 6a 68 69 6a 6b 69  fghfghighijhijki
4a20: 6a 6b 6c 6a 6b 6c 6d 6b 6c 6d 6e 6c 6d 6e 6f 6d  jkljklmklmnlmnom
4a30: 6e 6f 70 6e 6f 70 71 22 0a 20 20 20 20 7d 20 2d  nopnopq".    } -
4a40: 72 65 73 75 6c 74 20 7b 38 34 39 38 33 65 34 34  result {84983e44
4a50: 31 63 33 62 64 32 36 65 62 61 61 65 34 61 61 31  1c3bd26ebaae4aa1
4a60: 66 39 35 31 32 39 65 35 65 35 34 36 37 30 66 31  f95129e5e54670f1
4a70: 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d  }..test RFC6234-
4a80: 4d 44 2d 53 48 41 31 2d 32 30 2e 33 20 7b 54 43  MD-SHA1-20.3 {TC
4a90: 33 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  3} -body {..::tl
4aa0: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68  s::md -digest sh
4ab0: 61 31 20 2d 64 61 74 61 20 5b 73 74 72 69 6e 67  a1 -data [string
4ac0: 20 72 65 70 65 61 74 20 22 61 22 20 31 30 30 30   repeat "a" 1000
4ad0: 30 30 30 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75  000].    } -resu
4ae0: 6c 74 20 7b 33 34 61 61 39 37 33 63 64 34 63 34  lt {34aa973cd4c4
4af0: 64 61 61 34 66 36 31 65 65 62 32 62 64 62 61 64  daa4f61eeb2bdbad
4b00: 32 37 33 31 36 35 33 34 30 31 36 66 7d 0a 0a 74  27316534016f}..t
4b10: 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53  est RFC6234-MD-S
4b20: 48 41 31 2d 32 30 2e 34 20 7b 54 43 34 7d 20 2d  HA1-20.4 {TC4} -
4b30: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
4b40: 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d  d -digest sha1 -
4b50: 64 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65 70  data [string rep
4b60: 65 61 74 20 22 30 31 32 33 34 35 36 37 22 20 38  eat "01234567" 8
4b70: 30 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  0].    } -result
4b80: 20 7b 64 65 61 33 35 36 61 32 63 64 64 64 39 30   {dea356a2cddd90
4b90: 63 37 61 37 65 63 65 64 63 35 65 62 62 35 36 33  c7a7ecedc5ebb563
4ba0: 39 33 34 66 34 36 30 34 35 32 7d 0a 0a 74 65 73  934f460452}..tes
4bb0: 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41  t RFC6234-MD-SHA
4bc0: 31 2d 32 30 2e 35 20 7b 54 43 36 7d 20 2d 62 6f  1-20.5 {TC6} -bo
4bd0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
4be0: 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d 64 61  -digest sha1 -da
4bf0: 74 61 20 22 5c 78 35 65 22 0a 20 20 20 20 7d 20  ta "\x5e".    } 
4c00: 2d 72 65 73 75 6c 74 20 7b 35 65 36 66 38 30 61  -result {5e6f80a
4c10: 33 34 61 39 37 39 38 63 61 66 63 36 61 35 64 62  34a9798cafc6a5db
4c20: 39 36 63 63 35 37 62 61 34 63 34 64 62 35 39 63  96cc57ba4c4db59c
4c30: 32 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34  2}..test RFC6234
4c40: 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 36 20 7b 54  -MD-SHA1-20.6 {T
4c50: 43 38 5f 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  C8_1} -body {..:
4c60: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
4c70: 20 73 68 61 31 20 2d 64 61 74 61 20 22 5c 78 39   sha1 -data "\x9
4c80: 61 5c 78 37 64 5c 78 66 64 5c 78 66 31 5c 78 65  a\x7d\xfd\xf1\xe
4c90: 63 5c 78 65 61 5c 78 64 30 5c 78 36 65 5c 78 64  c\xea\xd0\x6e\xd
4ca0: 36 5c 78 34 36 5c 78 61 61 5c 78 35 35 5c 78 66  6\x46\xaa\x55\xf
4cb0: 65 5c 78 37 35 5c 78 37 31 5c 78 34 36 22 0a 20  e\x75\x71\x46". 
4cc0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 32     } -result {82
4cd0: 61 62 66 66 36 36 30 35 64 62 65 31 63 31 37 64  abff6605dbe1c17d
4ce0: 65 66 31 32 61 33 39 34 66 61 32 32 61 38 32 62  ef12a394fa22a82b
4cf0: 35 34 34 61 33 35 7d 0a 0a 74 65 73 74 20 52 46  544a35}..test RF
4d00: 43 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30  C6234-MD-SHA1-20
4d10: 2e 37 20 7b 54 43 31 30 5f 31 7d 20 2d 62 6f 64  .7 {TC10_1} -bod
4d20: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
4d30: 64 69 67 65 73 74 20 73 68 61 31 20 2d 64 61 74  digest sha1 -dat
4d40: 61 20 22 5c 78 66 37 5c 78 38 66 5c 78 39 32 5c  a "\xf7\x8f\x92\
4d50: 78 31 34 5c 78 31 62 5c 78 63 64 5c 78 31 37 5c  x14\x1b\xcd\x17\
4d60: 78 30 61 5c 78 65 38 5c 78 39 62 5c 78 34 66 5c  x0a\xe8\x9b\x4f\
4d70: 78 62 61 5c 78 31 35 5c 78 61 31 5c 78 64 35 5c  xba\x15\xa1\xd5\
4d80: 78 39 66 5c 78 33 66 5c 78 64 38 5c 78 34 64 5c  x9f\x3f\xd8\x4d\
4d90: 78 32 32 5c 78 33 63 5c 78 39 32 5c 78 35 31 5c  x22\x3c\x92\x51\
4da0: 78 62 64 5c 78 61 63 5c 78 62 62 5c 78 61 65 5c  xbd\xac\xbb\xae\
4db0: 78 36 31 5c 78 64 30 5c 78 35 65 5c 78 64 31 5c  x61\xd0\x5e\xd1\
4dc0: 78 31 35 5c 78 61 30 5c 78 36 61 5c 78 37 63 5c  x15\xa0\x6a\x7c\
4dd0: 78 65 31 5c 78 31 37 5c 78 62 37 5c 78 62 65 5c  xe1\x17\xb7\xbe\
4de0: 78 65 61 5c 78 64 32 5c 78 34 34 5c 78 32 31 5c  xea\xd2\x44\x21\
4df0: 78 64 65 5c 78 64 39 5c 78 63 33 5c 78 32 35 5c  xde\xd9\xc3\x25\
4e00: 78 39 32 5c 78 62 64 5c 78 35 37 5c 78 65 64 5c  x92\xbd\x57\xed\
4e10: 78 65 61 5c 78 65 33 5c 78 39 63 5c 78 33 39 5c  xea\xe3\x9c\x39\
4e20: 78 66 61 5c 78 31 66 5c 78 65 38 5c 78 39 34 5c  xfa\x1f\xe8\x94\
4e30: 78 36 61 5c 78 38 34 5c 78 64 30 5c 78 63 66 5c  x6a\x84\xd0\xcf\
4e40: 78 31 66 5c 78 37 62 5c 78 65 65 5c 78 61 64 5c  x1f\x7b\xee\xad\
4e50: 78 31 37 5c 78 31 33 5c 78 65 32 5c 78 65 30 5c  x17\x13\xe2\xe0\
4e60: 78 39 35 5c 78 39 38 5c 78 39 37 5c 78 33 34 5c  x95\x98\x97\x34\
4e70: 78 37 66 5c 78 36 37 5c 78 63 38 5c 78 30 62 5c  x7f\x67\xc8\x0b\
4e80: 78 30 34 5c 78 30 30 5c 78 63 32 5c 78 30 39 5c  x04\x00\xc2\x09\
4e90: 78 38 31 5c 78 35 64 5c 78 36 62 5c 78 31 30 5c  x81\x5d\x6b\x10\
4ea0: 78 61 36 5c 78 38 33 5c 78 38 33 5c 78 36 66 5c  xa6\x83\x83\x6f\
4eb0: 78 64 35 5c 78 35 36 5c 78 32 61 5c 78 35 36 5c  xd5\x56\x2a\x56\
4ec0: 78 63 61 5c 78 62 31 5c 78 61 32 5c 78 38 65 5c  xca\xb1\xa2\x8e\
4ed0: 78 38 31 5c 78 62 36 5c 78 35 37 5c 78 36 36 5c  x81\xb6\x57\x66\
4ee0: 78 35 34 5c 78 36 33 5c 78 31 63 5c 78 66 31 5c  x54\x63\x1c\xf1\
4ef0: 78 36 35 5c 78 36 36 5c 78 62 38 5c 78 36 65 5c  x65\x66\xb8\x6e\
4f00: 78 33 62 5c 78 33 33 5c 78 61 31 5c 78 30 38 5c  x3b\x33\xa1\x08\
4f10: 78 62 30 5c 78 35 33 5c 78 30 37 5c 78 63 30 5c  xb0\x53\x07\xc0\
4f20: 78 30 61 5c 78 66 66 5c 78 31 34 5c 78 61 37 5c  x0a\xff\x14\xa7\
4f30: 78 36 38 5c 78 65 64 5c 78 37 33 5c 78 35 30 5c  x68\xed\x73\x50\
4f40: 78 36 30 5c 78 36 61 5c 78 30 66 5c 78 38 35 5c  x60\x6a\x0f\x85\
4f50: 78 65 36 5c 78 61 39 5c 78 31 64 5c 78 33 39 5c  xe6\xa9\x1d\x39\
4f60: 78 36 66 5c 78 35 62 5c 78 35 63 5c 78 62 65 5c  x6f\x5b\x5c\xbe\
4f70: 78 35 37 5c 78 37 66 5c 78 39 62 5c 78 33 38 5c  x57\x7f\x9b\x38\
4f80: 78 38 30 5c 78 37 63 5c 78 37 64 5c 78 35 32 5c  x80\x7c\x7d\x52\
4f90: 78 33 64 5c 78 36 64 5c 78 37 39 5c 78 32 66 5c  x3d\x6d\x79\x2f\
4fa0: 78 36 65 5c 78 62 63 5c 78 32 34 5c 78 61 34 5c  x6e\xbc\x24\xa4\
4fb0: 78 65 63 5c 78 66 32 5c 78 62 33 5c 78 61 34 5c  xec\xf2\xb3\xa4\
4fc0: 78 32 37 5c 78 63 64 5c 78 62 62 5c 78 66 62 22  x27\xcd\xbb\xfb"
4fd0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4fe0: 63 62 30 30 38 32 63 38 66 31 39 37 64 32 36 30  cb0082c8f197d260
4ff0: 39 39 31 62 61 36 61 34 36 30 65 37 36 65 32 30  991ba6a460e76e20
5000: 32 62 61 64 32 37 62 33 7d 0a 0a 23 20 52 46 43  2bad27b3}..# RFC
5010: 20 36 32 33 34 20 53 48 41 32 35 36 0a 0a 0a 74   6234 SHA256...t
5020: 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53  est RFC6234-MD-S
5030: 48 41 32 35 36 2d 32 31 2e 31 20 7b 54 43 31 7d  HA256-21.1 {TC1}
5040: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
5050: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32  :md -digest sha2
5060: 35 36 20 2d 64 61 74 61 20 22 61 62 63 22 0a 20  56 -data "abc". 
5070: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61     } -result {ba
5080: 37 38 31 36 62 66 38 66 30 31 63 66 65 61 34 31  7816bf8f01cfea41
5090: 34 31 34 30 64 65 35 64 61 65 32 32 32 33 62 30  4140de5dae2223b0
50a0: 30 33 36 31 61 33 39 36 31 37 37 61 39 63 62 34  0361a396177a9cb4
50b0: 31 30 66 66 36 31 66 32 30 30 31 35 61 64 7d 0a  10ff61f20015ad}.
50c0: 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44  .test RFC6234-MD
50d0: 2d 53 48 41 32 35 36 2d 32 31 2e 32 20 7b 54 43  -SHA256-21.2 {TC
50e0: 32 5f 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  2_1} -body {..::
50f0: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
5100: 73 68 61 32 35 36 20 2d 64 61 74 61 20 22 61 62  sha256 -data "ab
5110: 63 64 62 63 64 65 63 64 65 66 64 65 66 67 65 66  cdbcdecdefdefgef
5120: 67 68 66 67 68 69 67 68 69 6a 68 69 6a 6b 69 6a  ghfghighijhijkij
5130: 6b 6c 6a 6b 6c 6d 6b 6c 6d 6e 6c 6d 6e 6f 6d 6e  kljklmklmnlmnomn
5140: 6f 70 6e 6f 70 71 22 0a 20 20 20 20 7d 20 2d 72  opnopq".    } -r
5150: 65 73 75 6c 74 20 7b 32 34 38 64 36 61 36 31 64  esult {248d6a61d
5160: 32 30 36 33 38 62 38 65 35 63 30 32 36 39 33 30  20638b8e5c026930
5170: 63 33 65 36 30 33 39 61 33 33 63 65 34 35 39 36  c3e6039a33ce4596
5180: 34 66 66 32 31 36 37 66 36 65 63 65 64 64 34 31  4ff2167f6ecedd41
5190: 39 64 62 30 36 63 31 7d 0a 0a 74 65 73 74 20 52  9db06c1}..test R
51a0: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32 35 36  FC6234-MD-SHA256
51b0: 2d 32 31 2e 33 20 7b 54 43 33 7d 20 2d 62 6f 64  -21.3 {TC3} -bod
51c0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
51d0: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 64  digest sha256 -d
51e0: 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65 70 65  ata [string repe
51f0: 61 74 20 22 61 22 20 31 30 30 30 30 30 30 5d 0a  at "a" 1000000].
5200: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 63      } -result {c
5210: 64 63 37 36 65 35 63 39 39 31 34 66 62 39 32 38  dc76e5c9914fb928
5220: 31 61 31 63 37 65 32 38 34 64 37 33 65 36 37 66  1a1c7e284d73e67f
5230: 31 38 30 39 61 34 38 61 34 39 37 32 30 30 65 30  1809a48a497200e0
5240: 34 36 64 33 39 63 63 63 37 31 31 32 63 64 30 7d  46d39ccc7112cd0}
5250: 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d  ..test RFC6234-M
5260: 44 2d 53 48 41 32 35 36 2d 32 31 2e 34 20 7b 54  D-SHA256-21.4 {T
5270: 43 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C4} -body {..::t
5280: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
5290: 68 61 32 35 36 20 2d 64 61 74 61 20 5b 73 74 72  ha256 -data [str
52a0: 69 6e 67 20 72 65 70 65 61 74 20 22 30 31 32 33  ing repeat "0123
52b0: 34 35 36 37 22 20 38 30 5d 0a 20 20 20 20 7d 20  4567" 80].    } 
52c0: 2d 72 65 73 75 6c 74 20 7b 35 39 34 38 34 37 33  -result {5948473
52d0: 32 38 34 35 31 62 64 66 61 38 35 30 35 36 32 32  28451bdfa8505622
52e0: 35 34 36 32 63 63 31 64 38 36 37 64 38 37 37 66  5462cc1d867d877f
52f0: 62 33 38 38 64 66 30 63 65 33 35 66 32 35 61 62  b388df0ce35f25ab
5300: 35 35 36 32 62 66 62 62 35 7d 0a 0a 74 65 73 74  5562bfbb5}..test
5310: 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32   RFC6234-MD-SHA2
5320: 35 36 2d 32 31 2e 35 20 7b 54 43 36 7d 20 2d 62  56-21.5 {TC6} -b
5330: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
5340: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
5350: 2d 64 61 74 61 20 22 5c 78 31 39 22 0a 20 20 20  -data "\x19".   
5360: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 38 61 61   } -result {68aa
5370: 32 65 32 65 65 35 64 66 66 39 36 65 33 33 35 35  2e2ee5dff96e3355
5380: 65 36 63 37 65 65 33 37 33 65 33 64 36 61 34 65  e6c7ee373e3d6a4e
5390: 31 37 66 37 35 66 39 35 31 38 64 38 34 33 37 30  17f75f9518d84370
53a0: 39 63 30 63 39 62 63 33 65 33 64 34 7d 0a 0a 74  9c0c9bc3e3d4}..t
53b0: 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53  est RFC6234-MD-S
53c0: 48 41 32 35 36 2d 32 31 2e 36 20 7b 54 43 38 5f  HA256-21.6 {TC8_
53d0: 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  256} -body {..::
53e0: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
53f0: 73 68 61 32 35 36 20 2d 64 61 74 61 20 22 5c 78  sha256 -data "\x
5400: 65 33 5c 78 64 37 5c 78 32 35 5c 78 37 30 5c 78  e3\xd7\x25\x70\x
5410: 64 63 5c 78 64 64 5c 78 37 38 5c 78 37 63 5c 78  dc\xdd\x78\x7c\x
5420: 65 33 5c 78 38 38 5c 78 37 61 5c 78 62 32 5c 78  e3\x88\x7a\xb2\x
5430: 63 64 5c 78 36 38 5c 78 34 36 5c 78 35 32 22 0a  cd\x68\x46\x52".
5440: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 31      } -result {1
5450: 37 35 65 65 36 39 62 30 32 62 61 39 62 35 38 65  75ee69b02ba9b58e
5460: 32 62 30 61 35 66 64 31 33 38 31 39 63 65 61 35  2b0a5fd13819cea5
5470: 37 33 66 33 39 34 30 61 39 34 66 38 32 35 31 32  73f3940a94f82512
5480: 38 63 66 34 32 30 39 62 65 61 62 62 34 65 38 7d  8cf4209beabb4e8}
5490: 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d  ..test RFC6234-M
54a0: 44 2d 53 48 41 32 35 36 2d 32 31 2e 37 20 7b 54  D-SHA256-21.7 {T
54b0: 43 31 30 5f 32 35 36 7d 20 2d 62 6f 64 79 20 7b  C10_256} -body {
54c0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
54d0: 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 61  est sha256 -data
54e0: 20 22 5c 78 38 33 5c 78 32 36 5c 78 37 35 5c 78   "\x83\x26\x75\x
54f0: 34 65 5c 78 32 32 5c 78 37 37 5c 78 33 37 5c 78  4e\x22\x77\x37\x
5500: 32 66 5c 78 34 66 5c 78 63 31 5c 78 32 62 5c 78  2f\x4f\xc1\x2b\x
5510: 32 30 5c 78 35 32 5c 78 37 61 5c 78 66 65 5c 78  20\x52\x7a\xfe\x
5520: 66 30 5c 78 34 64 5c 78 38 61 5c 78 30 35 5c 78  f0\x4d\x8a\x05\x
5530: 36 39 5c 78 37 31 5c 78 62 31 5c 78 31 61 5c 78  69\x71\xb1\x1a\x
5540: 64 35 5c 78 37 31 5c 78 32 33 5c 78 61 37 5c 78  d5\x71\x23\xa7\x
5550: 63 31 5c 78 33 37 5c 78 37 36 5c 78 30 30 5c 78  c1\x37\x76\x00\x
5560: 30 30 5c 78 64 37 5c 78 62 65 5c 78 66 36 5c 78  00\xd7\xbe\xf6\x
5570: 66 33 5c 78 63 31 5c 78 66 37 5c 78 61 39 5c 78  f3\xc1\xf7\xa9\x
5580: 30 38 5c 78 33 61 5c 78 61 33 5c 78 39 64 5c 78  08\x3a\xa3\x9d\x
5590: 38 31 5c 78 30 64 5c 78 62 33 5c 78 31 30 5c 78  81\x0d\xb3\x10\x
55a0: 37 37 5c 78 37 64 5c 78 61 62 5c 78 38 62 5c 78  77\x7d\xab\x8b\x
55b0: 31 65 5c 78 37 66 5c 78 30 32 5c 78 62 38 5c 78  1e\x7f\x02\xb8\x
55c0: 34 61 5c 78 32 36 5c 78 63 37 5c 78 37 33 5c 78  4a\x26\xc7\x73\x
55d0: 33 32 5c 78 35 66 5c 78 38 62 5c 78 32 33 5c 78  32\x5f\x8b\x23\x
55e0: 37 34 5c 78 64 65 5c 78 37 61 5c 78 34 62 5c 78  74\xde\x7a\x4b\x
55f0: 35 61 5c 78 35 38 5c 78 63 62 5c 78 35 63 5c 78  5a\x58\xcb\x5c\x
5600: 35 63 5c 78 66 33 5c 78 35 62 5c 78 63 65 5c 78  5c\xf3\x5b\xce\x
5610: 65 36 5c 78 66 62 5c 78 39 34 5c 78 36 65 5c 78  e6\xfb\x94\x6e\x
5620: 35 62 5c 78 64 36 5c 78 39 34 5c 78 66 61 5c 78  5b\xd6\x94\xfa\x
5630: 35 39 5c 78 33 61 5c 78 38 62 5c 78 65 62 5c 78  59\x3a\x8b\xeb\x
5640: 33 66 5c 78 39 64 5c 78 36 35 5c 78 39 32 5c 78  3f\x9d\x65\x92\x
5650: 65 63 5c 78 65 64 5c 78 61 61 5c 78 36 36 5c 78  ec\xed\xaa\x66\x
5660: 63 61 5c 78 38 32 5c 78 61 32 5c 78 39 64 5c 78  ca\x82\xa2\x9d\x
5670: 30 63 5c 78 35 31 5c 78 62 63 5c 78 66 39 5c 78  0c\x51\xbc\xf9\x
5680: 33 33 5c 78 36 32 5c 78 33 30 5c 78 65 35 5c 78  33\x62\x30\xe5\x
5690: 64 37 5c 78 38 34 5c 78 65 34 5c 78 63 30 5c 78  d7\x84\xe4\xc0\x
56a0: 61 34 5c 78 33 66 5c 78 38 64 5c 78 37 39 5c 78  a4\x3f\x8d\x79\x
56b0: 61 33 5c 78 30 61 5c 78 31 36 5c 78 35 63 5c 78  a3\x0a\x16\x5c\x
56c0: 62 61 5c 78 62 65 5c 78 34 35 5c 78 32 62 5c 78  ba\xbe\x45\x2b\x
56d0: 37 37 5c 78 34 62 5c 78 39 63 5c 78 37 31 5c 78  77\x4b\x9c\x71\x
56e0: 30 39 5c 78 61 39 5c 78 37 64 5c 78 31 33 5c 78  09\xa9\x7d\x13\x
56f0: 38 66 5c 78 31 32 5c 78 39 32 5c 78 32 38 5c 78  8f\x12\x92\x28\x
5700: 39 36 5c 78 36 66 5c 78 36 63 5c 78 30 61 5c 78  96\x6f\x6c\x0a\x
5710: 64 63 5c 78 31 30 5c 78 36 61 5c 78 61 64 5c 78  dc\x10\x6a\xad\x
5720: 35 61 5c 78 39 66 5c 78 64 64 5c 78 33 30 5c 78  5a\x9f\xdd\x30\x
5730: 38 32 5c 78 35 37 5c 78 36 39 5c 78 62 32 5c 78  82\x57\x69\xb2\x
5740: 63 36 5c 78 37 31 5c 78 61 66 5c 78 36 37 5c 78  c6\x71\xaf\x67\x
5750: 35 39 5c 78 64 66 5c 78 32 38 5c 78 65 62 5c 78  59\xdf\x28\xeb\x
5760: 33 39 5c 78 33 64 5c 78 35 34 5c 78 64 36 22 0a  39\x3d\x54\xd6".
5770: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39      } -result {9
5780: 37 64 62 63 61 37 64 66 34 36 64 36 32 63 38 61  7dbca7df46d62c8a
5790: 34 32 32 63 39 34 31 64 64 37 65 38 33 35 62 38  422c941dd7e835b8
57a0: 61 64 33 33 36 31 37 36 33 66 37 65 39 62 32 64  ad3361763f7e9b2d
57b0: 39 35 66 34 66 30 64 61 36 65 31 63 63 62 63 7d  95f4f0da6e1ccbc}
57c0: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41  ..# RFC 4231 HMA
57d0: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20  C Examples Test 
57e0: 43 61 73 65 20 23 31 0a 73 65 74 20 6b 65 79 20  Case #1.set key 
57f0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
5800: 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61  ex [string repea
5810: 74 20 22 30 62 22 20 32 30 5d 5d 0a 73 65 74 20  t "0b" 20]].set 
5820: 64 61 74 61 20 22 48 69 20 54 68 65 72 65 22 0a  data "Hi There".
5830: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
5840: 4d 41 43 5f 54 43 31 2d 32 32 2e 31 20 7b 73 68  MAC_TC1-22.1 {sh
5850: 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a224} -body {..:
5860: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
5870: 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24  st sha224 -key $
5880: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
5890: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38      } -result {8
58a0: 39 36 66 62 31 31 32 38 61 62 62 64 66 31 39 36  96fb1128abbdf196
58b0: 38 33 32 31 30 37 63 64 34 39 64 66 33 33 66 34  832107cd49df33f4
58c0: 37 62 34 62 31 31 36 39 39 31 32 62 61 34 66 35  7b4b1169912ba4f5
58d0: 33 36 38 34 62 32 32 7d 0a 0a 74 65 73 74 20 52  3684b22}..test R
58e0: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 31 2d  FC4231_HMAC_TC1-
58f0: 32 32 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62  22.2 {sha256} -b
5900: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
5910: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  ac -digest sha25
5920: 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  6 -key $key -dat
5930: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
5940: 65 73 75 6c 74 20 7b 62 30 33 34 34 63 36 31 64  esult {b0344c61d
5950: 38 64 62 33 38 35 33 35 63 61 38 61 66 63 65 61  8db38535ca8afcea
5960: 66 30 62 66 31 32 62 38 38 31 64 63 32 30 30 63  f0bf12b881dc200c
5970: 39 38 33 33 64 61 37 32 36 65 39 33 37 36 63 32  9833da726e9376c2
5980: 65 33 32 63 66 66 37 7d 0a 0a 74 65 73 74 20 52  e32cff7}..test R
5990: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 31 2d  FC4231_HMAC_TC1-
59a0: 32 32 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62  22.3 {sha384} -b
59b0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
59c0: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 33 38  ac -digest sha38
59d0: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
59e0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
59f0: 65 73 75 6c 74 20 7b 61 66 64 30 33 39 34 34 64  esult {afd03944d
5a00: 38 34 38 39 35 36 32 36 62 30 38 32 35 66 34 61  84895626b0825f4a
5a10: 62 34 36 39 30 37 66 31 35 66 39 64 61 64 62 65  b46907f15f9dadbe
5a20: 34 31 30 31 65 63 36 38 32 61 61 30 33 34 63 37  4101ec682aa034c7
5a30: 63 65 62 63 35 39 63 66 61 65 61 39 65 61 39 30  cebc59cfaea9ea90
5a40: 37 36 65 64 65 37 66 34 61 66 31 35 32 65 38 62  76ede7f4af152e8b
5a50: 32 66 61 39 63 62 36 7d 0a 0a 74 65 73 74 20 52  2fa9cb6}..test R
5a60: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 31 2d  FC4231_HMAC_TC1-
5a70: 32 32 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62  22.4 {sha512} -b
5a80: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
5a90: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35 31  ac -digest sha51
5aa0: 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  2 -key $key -dat
5ab0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
5ac0: 65 73 75 6c 74 20 7b 38 37 61 61 37 63 64 65 61  esult {87aa7cdea
5ad0: 35 65 66 36 31 39 64 34 66 66 30 62 34 32 34 31  5ef619d4ff0b4241
5ae0: 61 31 64 36 63 62 30 32 33 37 39 66 34 65 32 63  a1d6cb02379f4e2c
5af0: 65 34 65 63 32 37 38 37 61 64 30 62 33 30 35 34  e4ec2787ad0b3054
5b00: 35 65 31 37 63 64 65 64 61 61 38 33 33 62 37 64  5e17cdedaa833b7d
5b10: 36 62 38 61 37 30 32 30 33 38 62 32 37 34 65 61  6b8a702038b274ea
5b20: 65 61 33 66 34 65 34 62 65 39 64 39 31 34 65 65  ea3f4e4be9d914ee
5b30: 62 36 31 66 31 37 30 32 65 36 39 36 63 32 30 33  b61f1702e696c203
5b40: 61 31 32 36 38 35 34 7d 0a 0a 23 20 52 46 43 20  a126854}..# RFC 
5b50: 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c  4231 HMAC Exampl
5b60: 65 73 20 54 65 73 74 20 43 61 73 65 20 23 32 20  es Test Case #2 
5b70: 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 6b 65  - Test with a ke
5b80: 79 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 74  y shorter than t
5b90: 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65  he length of the
5ba0: 20 48 4d 41 43 20 6f 75 74 70 75 74 2e 0a 73 65   HMAC output..se
5bb0: 74 20 6b 65 79 20 22 4a 65 66 65 22 0a 73 65 74  t key "Jefe".set
5bc0: 20 64 61 74 61 20 22 77 68 61 74 20 64 6f 20 79   data "what do y
5bd0: 61 20 77 61 6e 74 20 66 6f 72 20 6e 6f 74 68 69  a want for nothi
5be0: 6e 67 3f 22 0a 0a 0a 74 65 73 74 20 52 46 43 34  ng?"...test RFC4
5bf0: 32 33 31 5f 48 4d 41 43 5f 54 43 32 2d 32 33 2e  231_HMAC_TC2-23.
5c00: 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79  1 {sha224} -body
5c10: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
5c20: 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 20 2d  -digest sha224 -
5c30: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
5c40: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
5c50: 6c 74 20 7b 61 33 30 65 30 31 30 39 38 62 63 36  lt {a30e01098bc6
5c60: 64 62 62 66 34 35 36 39 30 66 33 61 37 65 39 65  dbbf45690f3a7e9e
5c70: 36 64 30 66 38 62 62 65 61 32 61 33 39 65 36 31  6d0f8bbea2a39e61
5c80: 34 38 30 30 38 66 64 30 35 65 34 34 7d 0a 0a 74  48008fd05e44}..t
5c90: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
5ca0: 5f 54 43 32 2d 32 33 2e 32 20 7b 73 68 61 32 35  _TC2-23.2 {sha25
5cb0: 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  6} -body {..::tl
5cc0: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
5cd0: 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79  sha256 -key $key
5ce0: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
5cf0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35 62 64 63   } -result {5bdc
5d00: 63 31 34 36 62 66 36 30 37 35 34 65 36 61 30 34  c146bf60754e6a04
5d10: 32 34 32 36 30 38 39 35 37 35 63 37 35 61 30 30  2426089575c75a00
5d20: 33 66 30 38 39 64 32 37 33 39 38 33 39 64 65 63  3f089d2739839dec
5d30: 35 38 62 39 36 34 65 63 33 38 34 33 7d 0a 0a 74  58b964ec3843}..t
5d40: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
5d50: 5f 54 43 32 2d 32 33 2e 33 20 7b 73 68 61 33 38  _TC2-23.3 {sha38
5d60: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
5d70: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
5d80: 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79  sha384 -key $key
5d90: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
5da0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61 66 34 35   } -result {af45
5db0: 64 32 65 33 37 36 34 38 34 30 33 31 36 31 37 66  d2e376484031617f
5dc0: 37 38 64 32 62 35 38 61 36 62 31 62 39 63 37 65  78d2b58a6b1b9c7e
5dd0: 66 34 36 34 66 35 61 30 31 62 34 37 65 34 32 65  f464f5a01b47e42e
5de0: 63 33 37 33 36 33 32 32 34 34 35 65 38 65 32 32  c3736322445e8e22
5df0: 34 30 63 61 35 65 36 39 65 32 63 37 38 62 33 32  40ca5e69e2c78b32
5e00: 33 39 65 63 66 61 62 32 31 36 34 39 7d 0a 0a 74  39ecfab21649}..t
5e10: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
5e20: 5f 54 43 32 2d 32 33 2e 34 20 7b 73 68 61 35 31  _TC2-23.4 {sha51
5e30: 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  2} -body {..::tl
5e40: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
5e50: 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79  sha512 -key $key
5e60: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
5e70: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 31 36 34 62   } -result {164b
5e80: 37 61 37 62 66 63 66 38 31 39 65 32 65 33 39 35  7a7bfcf819e2e395
5e90: 66 62 65 37 33 62 35 36 65 30 61 33 38 37 62 64  fbe73b56e0a387bd
5ea0: 36 34 32 32 32 65 38 33 31 66 64 36 31 30 32 37  64222e831fd61027
5eb0: 30 63 64 37 65 61 32 35 30 35 35 34 39 37 35 38  0cd7ea2505549758
5ec0: 62 66 37 35 63 30 35 61 39 39 34 61 36 64 30 33  bf75c05a994a6d03
5ed0: 34 66 36 35 66 38 66 30 65 36 66 64 63 61 65 61  4f65f8f0e6fdcaea
5ee0: 62 31 61 33 34 64 34 61 36 62 34 62 36 33 36 65  b1a34d4a6b4b636e
5ef0: 30 37 30 61 33 38 62 63 65 37 33 37 7d 0a 0a 23  070a38bce737}..#
5f00: 20 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45   RFC 4231 HMAC E
5f10: 78 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73  xamples Test Cas
5f20: 65 20 23 33 20 2d 20 54 65 73 74 20 77 69 74 68  e #3 - Test with
5f30: 20 61 20 63 6f 6d 62 69 6e 65 64 20 6c 65 6e 67   a combined leng
5f40: 74 68 20 6f 66 20 6b 65 79 20 61 6e 64 20 64 61  th of key and da
5f50: 74 61 20 74 68 61 74 20 69 73 20 6c 61 72 67 65  ta that is large
5f60: 72 20 74 68 61 6e 20 36 34 20 62 79 74 65 73 20  r than 64 bytes 
5f70: 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66  (= block-size of
5f80: 20 53 48 41 2d 32 32 34 20 61 6e 64 20 53 48 41   SHA-224 and SHA
5f90: 2d 32 35 36 29 2e 0a 73 65 74 20 6b 65 79 20 5b  -256)..set key [
5fa0: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
5fb0: 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  x [string repeat
5fc0: 20 22 61 61 22 20 32 30 5d 5d 0a 73 65 74 20 64   "aa" 20]].set d
5fd0: 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  ata [binary deco
5fe0: 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72  de hex [string r
5ff0: 65 70 65 61 74 20 22 64 64 22 20 35 30 5d 5d 0a  epeat "dd" 50]].
6000: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
6010: 4d 41 43 5f 54 43 33 2d 32 34 2e 31 20 7b 73 68  MAC_TC3-24.1 {sh
6020: 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a224} -body {..:
6030: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
6040: 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24  st sha224 -key $
6050: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
6060: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37      } -result {7
6070: 66 62 33 63 62 33 35 38 38 63 36 63 31 66 36 66  fb3cb3588c6c1f6f
6080: 66 61 39 36 39 34 64 37 64 36 61 64 32 36 34 39  fa9694d7d6ad2649
6090: 33 36 35 62 30 63 31 66 36 35 64 36 39 64 31 65  365b0c1f65d69d1e
60a0: 63 38 33 33 33 65 61 7d 0a 0a 74 65 73 74 20 52  c8333ea}..test R
60b0: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 33 2d  FC4231_HMAC_TC3-
60c0: 32 34 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62  24.2 {sha256} -b
60d0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
60e0: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  ac -digest sha25
60f0: 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  6 -key $key -dat
6100: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
6110: 65 73 75 6c 74 20 7b 37 37 33 65 61 39 31 65 33  esult {773ea91e3
6120: 36 38 30 30 65 34 36 38 35 34 64 62 38 65 62 64  6800e46854db8ebd
6130: 30 39 31 38 31 61 37 32 39 35 39 30 39 38 62 33  09181a72959098b3
6140: 65 66 38 63 31 32 32 64 39 36 33 35 35 31 34 63  ef8c122d9635514c
6150: 65 64 35 36 35 66 65 7d 0a 0a 74 65 73 74 20 52  ed565fe}..test R
6160: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 33 2d  FC4231_HMAC_TC3-
6170: 32 34 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62  24.3 {sha384} -b
6180: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
6190: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 33 38  ac -digest sha38
61a0: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
61b0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
61c0: 65 73 75 6c 74 20 7b 38 38 30 36 32 36 30 38 64  esult {88062608d
61d0: 33 65 36 61 64 38 61 30 61 61 32 61 63 65 30 31  3e6ad8a0aa2ace01
61e0: 34 63 38 61 38 36 66 30 61 61 36 33 35 64 39 34  4c8a86f0aa635d94
61f0: 37 61 63 39 66 65 62 65 38 33 65 66 34 65 35 35  7ac9febe83ef4e55
6200: 39 36 36 31 34 34 62 32 61 35 61 62 33 39 64 63  966144b2a5ab39dc
6210: 31 33 38 31 34 62 39 34 65 33 61 62 36 65 31 30  13814b94e3ab6e10
6220: 31 61 33 34 66 32 37 7d 0a 0a 74 65 73 74 20 52  1a34f27}..test R
6230: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 33 2d  FC4231_HMAC_TC3-
6240: 32 34 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62  24.4 {sha512} -b
6250: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
6260: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35 31  ac -digest sha51
6270: 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  2 -key $key -dat
6280: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
6290: 65 73 75 6c 74 20 7b 66 61 37 33 62 30 30 38 39  esult {fa73b0089
62a0: 64 35 36 61 32 38 34 65 66 62 30 66 30 37 35 36  d56a284efb0f0756
62b0: 63 38 39 30 62 65 39 62 31 62 35 64 62 64 64 38  c890be9b1b5dbdd8
62c0: 65 65 38 31 61 33 36 35 35 66 38 33 65 33 33 62  ee81a3655f83e33b
62d0: 32 32 37 39 64 33 39 62 66 33 65 38 34 38 32 37  2279d39bf3e84827
62e0: 39 61 37 32 32 63 38 30 36 62 34 38 35 61 34 37  9a722c806b485a47
62f0: 65 36 37 63 38 30 37 62 39 34 36 61 33 33 37 62  e67c807b946a337b
6300: 65 65 38 39 34 32 36 37 34 32 37 38 38 35 39 65  ee8942674278859e
6310: 31 33 32 39 32 66 62 7d 0a 0a 23 20 52 46 43 20  13292fb}..# RFC 
6320: 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c  4231 HMAC Exampl
6330: 65 73 20 54 65 73 74 20 43 61 73 65 20 23 34 20  es Test Case #4 
6340: 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 63 6f  - Test with a co
6350: 6d 62 69 6e 65 64 20 6c 65 6e 67 74 68 20 6f 66  mbined length of
6360: 20 6b 65 79 20 61 6e 64 20 64 61 74 61 20 74 68   key and data th
6370: 61 74 20 69 73 20 6c 61 72 67 65 72 20 74 68 61  at is larger tha
6380: 6e 20 36 34 20 62 79 74 65 73 20 28 3d 20 62 6c  n 64 bytes (= bl
6390: 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d  ock-size of SHA-
63a0: 32 32 34 20 61 6e 64 20 53 48 41 2d 32 35 36 29  224 and SHA-256)
63b0: 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72  ..set key [binar
63c0: 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 30 31  y decode hex "01
63d0: 30 32 30 33 30 34 30 35 30 36 30 37 30 38 30 39  0203040506070809
63e0: 30 61 30 62 30 63 30 64 30 65 30 66 31 30 31 31  0a0b0c0d0e0f1011
63f0: 31 32 31 33 31 34 31 35 31 36 31 37 31 38 31 39  1213141516171819
6400: 22 5d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e  "].set data [bin
6410: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b  ary decode hex [
6420: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 63  string repeat "c
6430: 64 22 20 35 30 5d 5d 0a 0a 0a 74 65 73 74 20 52  d" 50]]...test R
6440: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 34 2d  FC4231_HMAC_TC4-
6450: 32 35 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62  25.1 {sha224} -b
6460: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
6470: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32  ac -digest sha22
6480: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
6490: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
64a0: 65 73 75 6c 74 20 7b 36 63 31 31 35 30 36 38 37  esult {6c1150687
64b0: 34 30 31 33 63 61 63 36 61 32 61 62 63 31 62 62  4013cac6a2abc1bb
64c0: 33 38 32 36 32 37 63 65 63 36 61 39 30 64 38 36  382627cec6a90d86
64d0: 65 66 63 30 31 32 64 65 37 61 66 65 63 35 61 7d  efc012de7afec5a}
64e0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
64f0: 4d 41 43 5f 54 43 34 2d 32 35 2e 32 20 7b 73 68  MAC_TC4-25.2 {sh
6500: 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a256} -body {..:
6510: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
6520: 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24  st sha256 -key $
6530: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
6540: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38      } -result {8
6550: 32 35 35 38 61 33 38 39 61 34 34 33 63 30 65 61  2558a389a443c0ea
6560: 34 63 63 38 31 39 38 39 39 66 32 30 38 33 61 38  4cc819899f2083a8
6570: 35 66 30 66 61 61 33 65 35 37 38 66 38 30 37 37  5f0faa3e578f8077
6580: 61 32 65 33 66 66 34 36 37 32 39 36 36 35 62 7d  a2e3ff46729665b}
6590: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
65a0: 4d 41 43 5f 54 43 34 2d 32 35 2e 33 20 7b 73 68  MAC_TC4-25.3 {sh
65b0: 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a384} -body {..:
65c0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
65d0: 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24  st sha384 -key $
65e0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
65f0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 33      } -result {3
6600: 65 38 61 36 39 62 37 37 38 33 63 32 35 38 35 31  e8a69b7783c25851
6610: 39 33 33 61 62 36 32 39 30 61 66 36 63 61 37 37  933ab6290af6ca77
6620: 61 39 39 38 31 34 38 30 38 35 30 30 30 39 63 63  a9981480850009cc
6630: 35 35 37 37 63 36 65 31 66 35 37 33 62 34 65 36  5577c6e1f573b4e6
6640: 38 30 31 64 64 32 33 63 34 61 37 64 36 37 39 63  801dd23c4a7d679c
6650: 63 66 38 61 33 38 36 63 36 37 34 63 66 66 62 7d  cf8a386c674cffb}
6660: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
6670: 4d 41 43 5f 54 43 34 2d 32 35 2e 34 20 7b 73 68  MAC_TC4-25.4 {sh
6680: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a512} -body {..:
6690: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
66a0: 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24  st sha512 -key $
66b0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
66c0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
66d0: 30 62 61 34 36 35 36 33 37 34 35 38 63 36 39 39  0ba465637458c699
66e0: 30 65 35 61 38 63 35 66 36 31 64 34 61 66 37 65  0e5a8c5f61d4af7e
66f0: 35 37 36 64 39 37 66 66 39 34 62 38 37 32 64 65  576d97ff94b872de
6700: 37 36 66 38 30 35 30 33 36 31 65 65 33 64 62 61  76f8050361ee3dba
6710: 39 31 63 61 35 63 31 31 61 61 32 35 65 62 34 64  91ca5c11aa25eb4d
6720: 36 37 39 32 37 35 63 63 35 37 38 38 30 36 33 61  679275cc5788063a
6730: 35 66 31 39 37 34 31 31 32 30 63 34 66 32 64 65  5f19741120c4f2de
6740: 32 61 64 65 62 65 62 31 30 61 32 39 38 64 64 7d  2adebeb10a298dd}
6750: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41  ..# RFC 4231 HMA
6760: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20  C Examples Test 
6770: 43 61 73 65 20 23 35 20 2d 20 54 65 73 74 20 77  Case #5 - Test w
6780: 69 74 68 20 61 20 74 72 75 6e 63 61 74 69 6f 6e  ith a truncation
6790: 20 6f 66 20 6f 75 74 70 75 74 20 74 6f 20 31 32   of output to 12
67a0: 38 20 62 69 74 73 2e 0a 73 65 74 20 6b 65 79 20  8 bits..set key 
67b0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
67c0: 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61  ex [string repea
67d0: 74 20 22 30 63 22 20 32 30 5d 5d 0a 73 65 74 20  t "0c" 20]].set 
67e0: 64 61 74 61 20 22 54 65 73 74 20 57 69 74 68 20  data "Test With 
67f0: 54 72 75 6e 63 61 74 69 6f 6e 22 0a 0a 0a 74 65  Truncation"...te
6800: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
6810: 54 43 35 2d 32 36 2e 31 20 7b 73 68 61 32 32 34  TC5-26.1 {sha224
6820: 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 74 72 69 6e  } -body {..strin
6830: 67 20 72 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a  g range [::tls::
6840: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
6850: 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  224 -key $key -d
6860: 61 74 61 20 24 64 61 74 61 5d 20 30 20 33 31 0a  ata $data] 0 31.
6870: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30      } -result {0
6880: 65 32 61 65 61 36 38 61 39 30 63 38 64 33 37 63  e2aea68a90c8d37c
6890: 39 38 38 62 63 64 62 39 66 63 61 36 66 61 38 7d  988bcdb9fca6fa8}
68a0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
68b0: 4d 41 43 5f 54 43 35 2d 32 36 2e 32 20 7b 73 68  MAC_TC5-26.2 {sh
68c0: 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 73  a256} -body {..s
68d0: 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74  tring range [::t
68e0: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
68f0: 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65   sha256 -key $ke
6900: 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20 30  y -data $data] 0
6910: 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c   31.    } -resul
6920: 74 20 7b 61 33 62 36 31 36 37 34 37 33 31 30 30  t {a3b6167473100
6930: 65 65 30 36 65 30 63 37 39 36 63 32 39 35 35 35  ee06e0c796c29555
6940: 35 32 62 7d 0a 0a 74 65 73 74 20 52 46 43 34 32  52b}..test RFC42
6950: 33 31 5f 48 4d 41 43 5f 54 43 35 2d 32 36 2e 33  31_HMAC_TC5-26.3
6960: 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 20   {sha384} -body 
6970: 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20  {..string range 
6980: 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  [::tls::hmac -di
6990: 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79  gest sha384 -key
69a0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
69b0: 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72  a] 0 31.    } -r
69c0: 65 73 75 6c 74 20 7b 33 61 62 66 33 34 63 33 35  esult {3abf34c35
69d0: 30 33 62 32 61 32 33 61 34 36 65 66 63 36 31 39  03b2a23a46efc619
69e0: 62 61 65 66 38 39 37 7d 0a 0a 74 65 73 74 20 52  baef897}..test R
69f0: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 35 2d  FC4231_HMAC_TC5-
6a00: 32 36 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62  26.4 {sha512} -b
6a10: 6f 64 79 20 7b 0a 09 73 74 72 69 6e 67 20 72 61  ody {..string ra
6a20: 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63  nge [::tls::hmac
6a30: 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20   -digest sha512 
6a40: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
6a50: 24 64 61 74 61 5d 20 30 20 33 31 0a 20 20 20 20  $data] 0 31.    
6a60: 7d 20 2d 72 65 73 75 6c 74 20 7b 34 31 35 66 61  } -result {415fa
6a70: 64 36 32 37 31 35 38 30 61 35 33 31 64 34 31 37  d6271580a531d417
6a80: 39 62 63 38 39 31 64 38 37 61 36 7d 0a 0a 23 20  9bc891d87a6}..# 
6a90: 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45 78  RFC 4231 HMAC Ex
6aa0: 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73 65  amples Test Case
6ab0: 20 23 36 20 2d 20 54 65 73 74 20 77 69 74 68 20   #6 - Test with 
6ac0: 61 20 6b 65 79 20 6c 61 72 67 65 72 20 74 68 61  a key larger tha
6ad0: 6e 20 31 32 38 20 62 79 74 65 73 20 28 3d 20 62  n 128 bytes (= b
6ae0: 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41  lock-size of SHA
6af0: 2d 33 38 34 20 61 6e 64 20 53 48 41 2d 35 31 32  -384 and SHA-512
6b00: 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61  )..set key [bina
6b10: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b 73  ry decode hex [s
6b20: 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 61 61  tring repeat "aa
6b30: 22 20 31 33 31 5d 5d 0a 73 65 74 20 64 61 74 61  " 131]].set data
6b40: 20 22 54 65 73 74 20 55 73 69 6e 67 20 4c 61 72   "Test Using Lar
6b50: 67 65 72 20 54 68 61 6e 20 42 6c 6f 63 6b 2d 53  ger Than Block-S
6b60: 69 7a 65 20 4b 65 79 20 2d 20 48 61 73 68 20 4b  ize Key - Hash K
6b70: 65 79 20 46 69 72 73 74 22 0a 0a 0a 74 65 73 74  ey First"...test
6b80: 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43   RFC4231_HMAC_TC
6b90: 36 2d 32 37 2e 31 20 7b 73 68 61 32 32 34 7d 20  6-27.1 {sha224} 
6ba0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
6bb0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
6bc0: 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  224 -key $key -d
6bd0: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
6be0: 2d 72 65 73 75 6c 74 20 7b 39 35 65 39 61 30 64  -result {95e9a0d
6bf0: 62 39 36 32 30 39 35 61 64 61 65 62 65 39 62 32  b962095adaebe9b2
6c00: 64 36 66 30 64 62 63 65 32 64 34 39 39 66 31 31  d6f0dbce2d499f11
6c10: 32 66 32 64 32 62 37 32 37 33 66 61 36 38 37 30  2f2d2b7273fa6870
6c20: 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  e}..test RFC4231
6c30: 5f 48 4d 41 43 5f 54 43 36 2d 32 37 2e 32 20 7b  _HMAC_TC6-27.2 {
6c40: 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a  sha256} -body {.
6c50: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
6c60: 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79  gest sha256 -key
6c70: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
6c80: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
6c90: 7b 36 30 65 34 33 31 35 39 31 65 65 30 62 36 37  {60e431591ee0b67
6ca0: 66 30 64 38 61 32 36 61 61 63 62 66 35 62 37 37  f0d8a26aacbf5b77
6cb0: 66 38 65 30 62 63 36 32 31 33 37 32 38 63 35 31  f8e0bc6213728c51
6cc0: 34 30 35 34 36 30 34 30 66 30 65 65 33 37 66 35  40546040f0ee37f5
6cd0: 34 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  4}..test RFC4231
6ce0: 5f 48 4d 41 43 5f 54 43 36 2d 32 37 2e 33 20 7b  _HMAC_TC6-27.3 {
6cf0: 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a  sha384} -body {.
6d00: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
6d10: 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79  gest sha384 -key
6d20: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
6d30: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
6d40: 7b 34 65 63 65 30 38 34 34 38 35 38 31 33 65 39  {4ece084485813e9
6d50: 30 38 38 64 32 63 36 33 61 30 34 31 62 63 35 62  088d2c63a041bc5b
6d60: 34 34 66 39 65 66 31 30 31 32 61 32 62 35 38 38  44f9ef1012a2b588
6d70: 66 33 63 64 31 31 66 30 35 30 33 33 61 63 34 63  f3cd11f05033ac4c
6d80: 36 30 63 32 65 66 36 61 62 34 30 33 30 66 65 38  60c2ef6ab4030fe8
6d90: 32 39 36 32 34 38 64 66 31 36 33 66 34 34 39 35  296248df163f4495
6da0: 32 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  2}..test RFC4231
6db0: 5f 48 4d 41 43 5f 54 43 36 2d 32 37 2e 34 20 7b  _HMAC_TC6-27.4 {
6dc0: 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a  sha512} -body {.
6dd0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
6de0: 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79  gest sha512 -key
6df0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
6e00: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
6e10: 7b 38 30 62 32 34 32 36 33 63 37 63 31 61 33 65  {80b24263c7c1a3e
6e20: 62 62 37 31 34 39 33 63 31 64 64 37 62 65 38 62  bb71493c1dd7be8b
6e30: 34 39 62 34 36 64 31 66 34 31 62 34 61 65 65 63  49b46d1f41b4aeec
6e40: 31 31 32 31 62 30 31 33 37 38 33 66 38 66 33 35  1121b013783f8f35
6e50: 32 36 62 35 36 64 30 33 37 65 30 35 66 32 35 39  26b56d037e05f259
6e60: 38 62 64 30 66 64 32 32 31 35 64 36 61 31 65 35  8bd0fd2215d6a1e5
6e70: 32 39 35 65 36 34 66 37 33 66 36 33 66 30 61 65  295e64f73f63f0ae
6e80: 63 38 62 39 31 35 61 39 38 35 64 37 38 36 35 39  c8b915a985d78659
6e90: 38 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48  8}..# RFC 4231 H
6ea0: 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73  MAC Examples Tes
6eb0: 74 20 43 61 73 65 20 23 37 20 2d 20 54 65 73 74  t Case #7 - Test
6ec0: 20 77 69 74 68 20 61 20 6b 65 79 20 61 6e 64 20   with a key and 
6ed0: 64 61 74 61 20 74 68 61 74 20 69 73 20 6c 61 72  data that is lar
6ee0: 67 65 72 20 74 68 61 6e 20 31 32 38 20 62 79 74  ger than 128 byt
6ef0: 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65  es (= block-size
6f00: 20 6f 66 20 53 48 41 2d 33 38 34 20 61 6e 64 20   of SHA-384 and 
6f10: 53 48 41 2d 35 31 32 29 2e 0a 73 65 74 20 6b 65  SHA-512)..set ke
6f20: 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  y [binary decode
6f30: 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70   hex [string rep
6f40: 65 61 74 20 22 61 61 22 20 31 33 31 5d 5d 0a 73  eat "aa" 131]].s
6f50: 65 74 20 64 61 74 61 20 22 54 68 69 73 20 69 73  et data "This is
6f60: 20 61 20 74 65 73 74 20 75 73 69 6e 67 20 61 20   a test using a 
6f70: 6c 61 72 67 65 72 20 74 68 61 6e 20 62 6c 6f 63  larger than bloc
6f80: 6b 2d 73 69 7a 65 20 6b 65 79 20 61 6e 64 20 61  k-size key and a
6f90: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 62 6c 6f   larger than blo
6fa0: 63 6b 2d 73 69 7a 65 20 64 61 74 61 2e 20 54 68  ck-size data. Th
6fb0: 65 20 6b 65 79 20 6e 65 65 64 73 20 74 6f 20 62  e key needs to b
6fc0: 65 20 68 61 73 68 65 64 20 62 65 66 6f 72 65 20  e hashed before 
6fd0: 62 65 69 6e 67 20 75 73 65 64 20 62 79 20 74 68  being used by th
6fe0: 65 20 48 4d 41 43 20 61 6c 67 6f 72 69 74 68 6d  e HMAC algorithm
6ff0: 2e 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33  ."...test RFC423
7000: 31 5f 48 4d 41 43 5f 54 43 37 2d 32 38 2e 31 20  1_HMAC_TC7-28.1 
7010: 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b  {sha224} -body {
7020: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
7030: 69 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65  igest sha224 -ke
7040: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
7050: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
7060: 20 7b 33 61 38 35 34 31 36 36 61 63 35 64 39 66   {3a854166ac5d9f
7070: 30 32 33 66 35 34 64 35 31 37 64 30 62 33 39 64  023f54d517d0b39d
7080: 62 64 39 34 36 37 37 30 64 62 39 63 32 62 39 35  bd946770db9c2b95
7090: 63 39 66 36 66 35 36 35 64 31 7d 0a 0a 74 65 73  c9f6f565d1}..tes
70a0: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
70b0: 43 37 2d 32 38 2e 32 20 7b 73 68 61 32 35 36 7d  C7-28.2 {sha256}
70c0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
70d0: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
70e0: 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a256 -key $key -
70f0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
7100: 20 2d 72 65 73 75 6c 74 20 7b 39 62 30 39 66 66   -result {9b09ff
7110: 61 37 31 62 39 34 32 66 63 62 32 37 36 33 35 66  a71b942fcb27635f
7120: 62 63 64 35 62 30 65 39 34 34 62 66 64 63 36 33  bcd5b0e944bfdc63
7130: 36 34 34 66 30 37 31 33 39 33 38 61 37 66 35 31  644f0713938a7f51
7140: 35 33 35 63 33 61 33 35 65 32 7d 0a 0a 74 65 73  535c3a35e2}..tes
7150: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
7160: 43 37 2d 32 38 2e 33 20 7b 73 68 61 33 38 34 7d  C7-28.3 {sha384}
7170: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
7180: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
7190: 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a384 -key $key -
71a0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
71b0: 20 2d 72 65 73 75 6c 74 20 7b 36 36 31 37 31 37   -result {661717
71c0: 38 65 39 34 31 66 30 32 30 64 33 35 31 65 32 66  8e941f020d351e2f
71d0: 32 35 34 65 38 66 64 33 32 63 36 30 32 34 32 30  254e8fd32c602420
71e0: 66 65 62 30 62 38 66 62 39 61 64 63 63 65 62 62  feb0b8fb9adccebb
71f0: 38 32 34 36 31 65 39 39 63 35 61 36 37 38 63 63  82461e99c5a678cc
7200: 33 31 65 37 39 39 31 37 36 64 33 38 36 30 65 36  31e799176d3860e6
7210: 31 31 30 63 34 36 35 32 33 65 7d 0a 0a 74 65 73  110c46523e}..tes
7220: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
7230: 43 37 2d 32 38 2e 34 20 7b 73 68 61 35 31 32 7d  C7-28.4 {sha512}
7240: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
7250: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
7260: 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a512 -key $key -
7270: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
7280: 20 2d 72 65 73 75 6c 74 20 7b 65 33 37 62 36 61   -result {e37b6a
7290: 37 37 35 64 63 38 37 64 62 61 61 34 64 66 61 39  775dc87dbaa4dfa9
72a0: 66 39 36 65 35 65 33 66 66 64 64 65 62 64 37 31  f96e5e3ffddebd71
72b0: 66 38 38 36 37 32 38 39 38 36 35 64 66 35 61 33  f8867289865df5a3
72c0: 32 64 32 30 63 64 63 39 34 34 62 36 30 32 32 63  2d20cdc944b6022c
72d0: 61 63 33 63 34 39 38 32 62 31 30 64 35 65 65 62  ac3c4982b10d5eeb
72e0: 35 35 63 33 65 34 64 65 31 35 31 33 34 36 37 36  55c3e4de15134676
72f0: 66 62 36 64 65 30 34 34 36 30 36 35 63 39 37 34  fb6de0446065c974
7300: 34 30 66 61 38 63 36 61 35 38 7d 0a 0a 23 20 4e  40fa8c6a58}..# N
7310: 49 53 54 20 38 30 30 2d 33 38 62 20 52 65 63 6f  IST 800-38b Reco
7320: 6d 6d 65 6e 64 61 74 69 6f 6e 20 66 6f 72 20 42  mmendation for B
7330: 6c 6f 63 6b 20 43 69 70 68 65 72 20 4d 6f 64 65  lock Cipher Mode
7340: 73 20 6f 66 20 4f 70 65 72 61 74 69 6f 6e 3a 20  s of Operation: 
7350: 54 68 65 20 43 4d 41 43 20 4d 6f 64 65 20 66 6f  The CMAC Mode fo
7360: 72 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e  r Authentication
7370: 0a 23 20 41 45 53 2d 31 32 38 0a 73 65 74 20 6b  .# AES-128.set k
7380: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ey [binary decod
7390: 65 20 68 65 78 20 22 32 62 37 65 31 35 31 36 32  e hex "2b7e15162
73a0: 38 61 65 64 32 61 36 61 62 66 37 31 35 38 38 30  8aed2a6abf715880
73b0: 39 63 66 34 66 33 63 22 5d 0a 0a 0a 74 65 73 74  9cf4f3c"]...test
73c0: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53   NIST800-38b-AES
73d0: 31 32 38 2d 32 39 2e 31 20 7b 6c 65 6e 3d 30 7d  128-29.1 {len=0}
73e0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
73f0: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65  :cmac -cipher ae
7400: 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79 20 24  s-128-cbc -key $
7410: 6b 65 79 20 2d 64 61 74 61 20 22 22 0a 20 20 20  key -data "".   
7420: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 62 31 64   } -result {bb1d
7430: 36 39 32 39 65 39 35 39 33 37 32 38 37 66 61 33  6929e95937287fa3
7440: 37 64 31 32 39 62 37 35 36 37 34 36 7d 0a 73 65  7d129b756746}.se
7450: 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64  t data [binary d
7460: 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62  ecode hex "6bc1b
7470: 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37  ee22e409f96e93d7
7480: 65 31 31 37 33 39 33 31 37 32 61 22 5d 0a 0a 74  e117393172a"]..t
7490: 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d  est NIST800-38b-
74a0: 41 45 53 31 32 38 2d 32 39 2e 32 20 7b 6c 65 6e  AES128-29.2 {len
74b0: 3d 31 32 38 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  =128} -body {..:
74c0: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68  :tls::cmac -ciph
74d0: 65 72 20 61 65 73 2d 31 32 38 2d 63 62 63 20 2d  er aes-128-cbc -
74e0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
74f0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
7500: 6c 74 20 7b 30 37 30 61 31 36 62 34 36 62 34 64  lt {070a16b46b4d
7510: 34 31 34 34 66 37 39 62 64 64 39 64 64 30 34 61  4144f79bdd9dd04a
7520: 32 38 37 63 7d 0a 73 65 74 20 64 61 74 61 20 5b  287c}.set data [
7530: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
7540: 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39  x "6bc1bee22e409
7550: 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31  f96e93d7e1173931
7560: 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33 61  72aae2d8a571e03a
7570: 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66 38  c9c9eb76fac45af8
7580: 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63 65  e5130c81c46a35ce
7590: 34 31 31 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54  411"]..test NIST
75a0: 38 30 30 2d 33 38 62 2d 41 45 53 31 32 38 2d 32  800-38b-AES128-2
75b0: 39 2e 33 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d 62  9.3 {len=320} -b
75c0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
75d0: 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 31  ac -cipher aes-1
75e0: 32 38 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79  28-cbc -key $key
75f0: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
7600: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 66 61 36   } -result {dfa6
7610: 36 37 34 37 64 65 39 61 65 36 33 30 33 30 63 61  6747de9ae63030ca
7620: 33 32 36 31 31 34 39 37 63 38 32 37 7d 0a 73 65  32611497c827}.se
7630: 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64  t data [binary d
7640: 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62  ecode hex "6bc1b
7650: 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37  ee22e409f96e93d7
7660: 65 31 31 37 33 39 33 31 37 32 61 61 65 32 64 38  e117393172aae2d8
7670: 61 35 37 31 65 30 33 61 63 39 63 39 65 62 37 36  a571e03ac9c9eb76
7680: 66 61 63 34 35 61 66 38 65 35 31 33 30 63 38 31  fac45af8e5130c81
7690: 63 34 36 61 33 35 63 65 34 31 31 65 35 66 62 63  c46a35ce411e5fbc
76a0: 31 31 39 31 61 30 61 35 32 65 66 66 36 39 66 32  1191a0a52eff69f2
76b0: 34 34 35 64 66 34 66 39 62 31 37 61 64 32 62 34  445df4f9b17ad2b4
76c0: 31 37 62 65 36 36 63 33 37 31 30 22 5d 0a 0a 74  17be66c3710"]..t
76d0: 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d  est NIST800-38b-
76e0: 41 45 53 31 32 38 2d 32 39 2e 34 20 7b 6c 65 6e  AES128-29.4 {len
76f0: 3d 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  =512} -body {..:
7700: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68  :tls::cmac -ciph
7710: 65 72 20 61 65 73 2d 31 32 38 2d 63 62 63 20 2d  er aes-128-cbc -
7720: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
7730: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
7740: 6c 74 20 7b 35 31 66 30 62 65 62 66 37 65 33 62  lt {51f0bebf7e3b
7750: 39 64 39 32 66 63 34 39 37 34 31 37 37 39 33 36  9d92fc4974177936
7760: 33 63 66 65 7d 0a 0a 23 20 41 45 53 2d 31 39 32  3cfe}..# AES-192
7770: 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79  .set key [binary
7780: 20 64 65 63 6f 64 65 20 68 65 78 20 22 38 65 37   decode hex "8e7
7790: 33 62 30 66 37 64 61 30 65 36 34 35 32 63 38 31  3b0f7da0e6452c81
77a0: 30 66 33 32 62 38 30 39 30 37 39 65 35 36 32 66  0f32b809079e562f
77b0: 38 65 61 64 32 35 32 32 63 36 62 37 62 22 5d 0a  8ead2522c6b7b"].
77c0: 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33  ..test NIST800-3
77d0: 38 62 2d 41 45 53 2d 31 39 32 2d 33 30 2e 31 20  8b-AES-192-30.1 
77e0: 7b 6c 65 6e 3d 30 7d 20 2d 62 6f 64 79 20 7b 0a  {len=0} -body {.
77f0: 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69  .::tls::cmac -ci
7800: 70 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62 63  pher aes-192-cbc
7810: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
7820: 20 22 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c   "".    } -resul
7830: 74 20 7b 64 31 37 64 64 66 34 36 61 64 61 61 63  t {d17ddf46adaac
7840: 64 65 35 33 31 63 61 63 34 38 33 64 65 37 61 39  de531cac483de7a9
7850: 33 36 37 7d 0a 73 65 74 20 64 61 74 61 20 5b 62  367}.set data [b
7860: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
7870: 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39 66   "6bc1bee22e409f
7880: 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31 37  96e93d7e11739317
7890: 32 61 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38  2a"]..test NIST8
78a0: 30 30 2d 33 38 62 2d 41 45 53 2d 31 39 32 2d 33  00-38b-AES-192-3
78b0: 30 2e 32 20 7b 6c 65 6e 3d 31 32 38 7d 20 2d 62  0.2 {len=128} -b
78c0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
78d0: 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 31  ac -cipher aes-1
78e0: 39 32 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79  92-cbc -key $key
78f0: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
7900: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 65 39 39   } -result {9e99
7910: 61 37 62 66 33 31 65 37 31 30 39 30 30 36 36 32  a7bf31e710900662
7920: 66 36 35 65 36 31 37 63 35 31 38 34 7d 0a 73 65  f65e617c5184}.se
7930: 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64  t data [binary d
7940: 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62  ecode hex "6bc1b
7950: 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37  ee22e409f96e93d7
7960: 65 31 31 37 33 39 33 31 37 32 61 61 65 32 64 38  e117393172aae2d8
7970: 61 35 37 31 65 30 33 61 63 39 63 39 65 62 37 36  a571e03ac9c9eb76
7980: 66 61 63 34 35 61 66 38 65 35 31 33 30 63 38 31  fac45af8e5130c81
7990: 63 34 36 61 33 35 63 65 34 31 31 22 5d 0a 0a 74  c46a35ce411"]..t
79a0: 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d  est NIST800-38b-
79b0: 41 45 53 2d 31 39 32 2d 33 30 2e 33 20 7b 6c 65  AES-192-30.3 {le
79c0: 6e 3d 33 32 30 7d 20 2d 62 6f 64 79 20 7b 0a 09  n=320} -body {..
79d0: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70  ::tls::cmac -cip
79e0: 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62 63 20  her aes-192-cbc 
79f0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
7a00: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
7a10: 75 6c 74 20 7b 38 61 31 64 65 35 62 65 32 65 62  ult {8a1de5be2eb
7a20: 33 31 61 61 64 30 38 39 61 38 32 65 36 65 65 39  31aad089a82e6ee9
7a30: 30 38 62 30 65 7d 0a 73 65 74 20 64 61 74 61 20  08b0e}.set data 
7a40: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
7a50: 65 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30  ex "6bc1bee22e40
7a60: 39 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33  9f96e93d7e117393
7a70: 31 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33  172aae2d8a571e03
7a80: 61 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66  ac9c9eb76fac45af
7a90: 38 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63  8e5130c81c46a35c
7aa0: 65 34 31 31 65 35 66 62 63 31 31 39 31 61 30 61  e411e5fbc1191a0a
7ab0: 35 32 65 66 66 36 39 66 32 34 34 35 64 66 34 66  52eff69f2445df4f
7ac0: 39 62 31 37 61 64 32 62 34 31 37 62 65 36 36 63  9b17ad2b417be66c
7ad0: 33 37 31 30 22 5d 0a 0a 74 65 73 74 20 4e 49 53  3710"]..test NIS
7ae0: 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 31 39 32  T800-38b-AES-192
7af0: 2d 33 30 2e 34 20 7b 6c 65 6e 3d 35 31 32 7d 20  -30.4 {len=512} 
7b00: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
7b10: 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73  cmac -cipher aes
7b20: 2d 31 39 32 2d 63 62 63 20 2d 6b 65 79 20 24 6b  -192-cbc -key $k
7b30: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
7b40: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61 31     } -result {a1
7b50: 64 35 64 66 30 65 65 64 37 39 30 66 37 39 34 64  d5df0eed790f794d
7b60: 37 37 35 38 39 36 35 39 66 33 39 61 31 31 7d 0a  77589659f39a11}.
7b70: 0a 23 20 41 45 53 2d 32 35 36 0a 73 65 74 20 6b  .# AES-256.set k
7b80: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ey [binary decod
7b90: 65 20 68 65 78 20 22 36 30 33 64 65 62 31 30 31  e hex "603deb101
7ba0: 35 63 61 37 31 62 65 32 62 37 33 61 65 66 30 38  5ca71be2b73aef08
7bb0: 35 37 64 37 37 38 31 31 66 33 35 32 63 30 37 33  57d77811f352c073
7bc0: 62 36 31 30 38 64 37 32 64 39 38 31 30 61 33 30  b6108d72d9810a30
7bd0: 39 31 34 64 66 66 34 22 5d 0a 0a 0a 74 65 73 74  914dff4"]...test
7be0: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53   NIST800-38b-AES
7bf0: 2d 32 35 36 2d 33 31 2e 31 20 7b 6c 65 6e 3d 30  -256-31.1 {len=0
7c00: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
7c10: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61  ::cmac -cipher a
7c20: 65 73 2d 32 35 36 2d 63 62 63 20 2d 6b 65 79 20  es-256-cbc -key 
7c30: 24 6b 65 79 20 2d 64 61 74 61 20 22 22 0a 20 20  $key -data "".  
7c40: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30 32 38    } -result {028
7c50: 39 36 32 66 36 31 62 37 62 66 38 39 65 66 63 36  962f61b7bf89efc6
7c60: 62 35 35 31 66 34 36 36 37 64 39 38 33 7d 0a 73  b551f4667d983}.s
7c70: 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20  et data [binary 
7c80: 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31  decode hex "6bc1
7c90: 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64  bee22e409f96e93d
7ca0: 37 65 31 31 37 33 39 33 31 37 32 61 22 5d 0a 0a  7e117393172a"]..
7cb0: 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62  test NIST800-38b
7cc0: 2d 41 45 53 2d 32 35 36 2d 33 31 2e 32 20 7b 6c  -AES-256-31.2 {l
7cd0: 65 6e 3d 31 32 38 7d 20 2d 62 6f 64 79 20 7b 0a  en=128} -body {.
7ce0: 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69  .::tls::cmac -ci
7cf0: 70 68 65 72 20 61 65 73 2d 32 35 36 2d 63 62 63  pher aes-256-cbc
7d00: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
7d10: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65   $data.    } -re
7d20: 73 75 6c 74 20 7b 32 38 61 37 30 32 33 66 34 35  sult {28a7023f45
7d30: 32 65 38 66 38 32 62 64 34 62 66 32 38 64 38 63  2e8f82bd4bf28d8c
7d40: 33 37 63 33 35 63 7d 0a 73 65 74 20 64 61 74 61  37c35c}.set data
7d50: 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20   [binary decode 
7d60: 68 65 78 20 22 36 62 63 31 62 65 65 32 32 65 34  hex "6bc1bee22e4
7d70: 30 39 66 39 36 65 39 33 64 37 65 31 31 37 33 39  09f96e93d7e11739
7d80: 33 31 37 32 61 61 65 32 64 38 61 35 37 31 65 30  3172aae2d8a571e0
7d90: 33 61 63 39 63 39 65 62 37 36 66 61 63 34 35 61  3ac9c9eb76fac45a
7da0: 66 38 65 35 31 33 30 63 38 31 63 34 36 61 33 35  f8e5130c81c46a35
7db0: 63 65 34 31 31 22 5d 0a 0a 74 65 73 74 20 4e 49  ce411"]..test NI
7dc0: 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 32 35  ST800-38b-AES-25
7dd0: 36 2d 33 31 2e 33 20 7b 6c 65 6e 3d 33 32 30 7d  6-31.3 {len=320}
7de0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
7df0: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65  :cmac -cipher ae
7e00: 73 2d 32 35 36 2d 63 62 63 20 2d 6b 65 79 20 24  s-256-cbc -key $
7e10: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
7e20: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61      } -result {a
7e30: 61 66 33 64 38 66 31 64 65 35 36 34 30 63 32 33  af3d8f1de5640c23
7e40: 32 66 35 62 31 36 39 62 39 63 39 31 31 65 36 7d  2f5b169b9c911e6}
7e50: 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72  .set data [binar
7e60: 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36 62  y decode hex "6b
7e70: 63 31 62 65 65 32 32 65 34 30 39 66 39 36 65 39  c1bee22e409f96e9
7e80: 33 64 37 65 31 31 37 33 39 33 31 37 32 61 61 65  3d7e117393172aae
7e90: 32 64 38 61 35 37 31 65 30 33 61 63 39 63 39 65  2d8a571e03ac9c9e
7ea0: 62 37 36 66 61 63 34 35 61 66 38 65 35 31 33 30  b76fac45af8e5130
7eb0: 63 38 31 63 34 36 61 33 35 63 65 34 31 31 65 35  c81c46a35ce411e5
7ec0: 66 62 63 31 31 39 31 61 30 61 35 32 65 66 66 36  fbc1191a0a52eff6
7ed0: 39 66 32 34 34 35 64 66 34 66 39 62 31 37 61 64  9f2445df4f9b17ad
7ee0: 32 62 34 31 37 62 65 36 36 63 33 37 31 30 22 5d  2b417be66c3710"]
7ef0: 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33  ..test NIST800-3
7f00: 38 62 2d 41 45 53 2d 32 35 36 2d 33 31 2e 34 20  8b-AES-256-31.4 
7f10: 7b 6c 65 6e 3d 35 31 32 7d 20 2d 62 6f 64 79 20  {len=512} -body 
7f20: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d  {..::tls::cmac -
7f30: 63 69 70 68 65 72 20 61 65 73 2d 32 35 36 2d 63  cipher aes-256-c
7f40: 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  bc -key $key -da
7f50: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
7f60: 72 65 73 75 6c 74 20 7b 65 31 39 39 32 31 39 30  result {e1992190
7f70: 35 34 39 66 36 65 64 35 36 39 36 61 32 63 30 35  549f6ed5696a2c05
7f80: 36 63 33 31 35 34 31 30 7d 0a 0a 23 20 43 6c 65  6c315410}..# Cle
7f90: 61 6e 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a  anup.::tcltest::
7fa0: 72 65 6d 6f 76 65 46 69 6c 65 20 24 74 65 73 74  removeFile $test
7fb0: 5f 66 69 6c 65 0a 3a 3a 74 63 6c 74 65 73 74 3a  _file.::tcltest:
7fc0: 3a 72 65 6d 6f 76 65 46 69 6c 65 20 24 74 65 73  :removeFile $tes
7fd0: 74 5f 61 6c 74 5f 66 69 6c 65 0a 0a 23 20 43 6c  t_alt_file..# Cl
7fe0: 65 61 6e 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a  eanup.::tcltest:
7ff0: 3a 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 72 65  :cleanupTests.re
8000: 74 75 72 6e 0a                                   turn.