Hex Artifact Content

Artifact fa6ff50353aca406fdf43aec88319413027292f511f6374235342dc47fe999b1:


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 49 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 49 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 4e      } -result {N
24c0: 6f 20 64 69 67 65 73 74 20 73 70 65 63 69 66 69  o digest specifi
24d0: 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ed} -returnCodes
24e0: 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72   {1}..test MD_Er
24f0: 72 6f 72 73 2d 38 2e 36 20 7b 49 6e 76 61 6c 69  rors-8.6 {Invali
2500: 64 20 6f 70 74 69 6f 6e 7d 20 2d 62 6f 64 79 20  d option} -body 
2510: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
2520: 67 65 73 74 20 73 68 61 32 35 36 20 2d 62 6f 67  gest sha256 -bog
2530: 75 73 20 76 61 6c 75 65 0a 20 20 20 20 7d 20 2d  us value.    } -
2540: 72 65 73 75 6c 74 20 7b 62 61 64 20 6f 70 74 69  result {bad opti
2550: 6f 6e 20 22 2d 62 6f 67 75 73 22 3a 20 6d 75 73  on "-bogus": mus
2560: 74 20 62 65 20 2d 62 69 6e 2c 20 2d 63 68 61 6e  t be -bin, -chan
2570: 6e 65 6c 2c 20 2d 63 69 70 68 65 72 2c 20 2d 63  nel, -cipher, -c
2580: 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74 61 2c 20 2d  ommand, -data, -
2590: 64 69 67 65 73 74 2c 20 2d 66 69 6c 65 2c 20 2d  digest, -file, -
25a0: 66 69 6c 65 6e 61 6d 65 2c 20 2d 68 65 78 2c 20  filename, -hex, 
25b0: 2d 6b 65 79 2c 20 6f 72 20 2d 6d 61 63 7d 20 2d  -key, or -mac} -
25c0: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
25d0: 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d  .test MD_Errors-
25e0: 38 2e 37 20 7b 49 6e 76 61 6c 69 64 20 66 69 6c  8.7 {Invalid fil
25f0: 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  e} -body {..::tl
2600: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68  s::md -digest sh
2610: 61 32 35 36 20 2d 66 69 6c 65 20 62 6f 67 75 73  a256 -file bogus
2620: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
2630: 63 6f 75 6c 64 6e 27 74 20 6f 70 65 6e 20 22 62  couldn't open "b
2640: 6f 67 75 73 22 3a 20 6e 6f 20 73 75 63 68 20 66  ogus": no such f
2650: 69 6c 65 20 6f 72 20 64 69 72 65 63 74 6f 72 79  ile or directory
2660: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
2670: 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f  1}..test MD_Erro
2680: 72 73 2d 38 2e 38 20 7b 49 6e 76 61 6c 69 64 20  rs-8.8 {Invalid 
2690: 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b  channel} -body {
26a0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
26b0: 65 73 74 20 73 68 61 32 35 36 20 2d 63 68 61 6e  est sha256 -chan
26c0: 6e 65 6c 20 62 6f 67 75 73 0a 20 20 20 20 7d 20  nel bogus.    } 
26d0: 2d 72 65 73 75 6c 74 20 7b 63 61 6e 20 6e 6f 74  -result {can not
26e0: 20 66 69 6e 64 20 63 68 61 6e 6e 65 6c 20 6e 61   find channel na
26f0: 6d 65 64 20 22 62 6f 67 75 73 22 7d 20 2d 72 65  med "bogus"} -re
2700: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74  turnCodes {1}..t
2710: 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e  est MD_Errors-8.
2720: 39 20 7b 4e 6f 20 6f 70 65 72 61 74 69 6f 6e 7d  9 {No operation}
2730: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
2740: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32  :md -digest sha2
2750: 35 36 20 2d 62 69 6e 0a 20 20 20 20 7d 20 2d 72  56 -bin.    } -r
2760: 65 73 75 6c 74 20 7b 4e 6f 20 6f 70 65 72 61 74  esult {No operat
2770: 69 6f 6e 20 73 70 65 63 69 66 69 65 64 3a 20 55  ion specified: U
2780: 73 65 20 2d 63 68 61 6e 6e 65 6c 2c 20 2d 63 6f  se -channel, -co
2790: 6d 6d 61 6e 64 2c 20 2d 64 61 74 61 2c 20 6f 72  mmand, -data, or
27a0: 20 2d 66 69 6c 65 20 6f 70 74 69 6f 6e 7d 20 2d   -file option} -
27b0: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
27c0: 0a 0a 23 20 54 65 73 74 20 43 4d 41 43 20 63 6f  ..# Test CMAC co
27d0: 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73 74 5f 63  mmand.set test_c
27e0: 69 70 68 65 72 20 22 61 65 73 2d 31 32 38 2d 63  ipher "aes-128-c
27f0: 62 63 22 0a 73 65 74 20 74 65 73 74 5f 6b 65 79  bc".set test_key
2800: 20 22 45 78 61 6d 70 6c 65 20 6b 65 79 20 31 32   "Example key 12
2810: 33 34 22 0a 0a 0a 74 65 73 74 20 43 4d 41 43 2d  34"...test CMAC-
2820: 39 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79  9.1 {data} -body
2830: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20   {..::tls::cmac 
2840: 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 69  -cipher $test_ci
2850: 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f  pher -key $test_
2860: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
2870: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
2880: 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33  lt {baf5c20f9973
2890: 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65  e2d606b14c7efdfe
28a0: 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41 43  52fa}..test CMAC
28b0: 2d 39 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f 64  -9.2 {file} -bod
28c0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63  y {..::tls::cmac
28d0: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63   -cipher $test_c
28e0: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74  ipher -key $test
28f0: 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74  _key -file $test
2900: 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73  _file.    } -res
2910: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
2920: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
2930: 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41  e52fa}..test CMA
2940: 43 2d 39 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20  C-9.3 {channel} 
2950: 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f  -body {..digest_
2960: 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a  read_chan ::tls:
2970: 3a 63 6d 61 63 20 24 74 65 73 74 5f 66 69 6c 65  :cmac $test_file
2980: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63   -cipher $test_c
2990: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74  ipher -key $test
29a0: 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75  _key.    } -resu
29b0: 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33  lt {baf5c20f9973
29c0: 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65  e2d606b14c7efdfe
29d0: 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41 43  52fa}..test CMAC
29e0: 2d 39 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d  -9.4 {command} -
29f0: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61  body {..digest_a
2a00: 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f  ccumulate $test_
2a10: 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 63 6d 61 63  data ::tls::cmac
2a20: 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f 63   -cipher $test_c
2a30: 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74  ipher -key $test
2a40: 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75  _key.    } -resu
2a50: 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33  lt {baf5c20f9973
2a60: 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65  e2d606b14c7efdfe
2a70: 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d 41 43  52fa}..test CMAC
2a80: 2d 39 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20  -9.5 {data bin} 
2a90: 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20  -body {..binary 
2aa0: 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c  encode hex [::tl
2ab0: 73 3a 3a 63 6d 61 63 20 2d 62 69 6e 20 2d 63 69  s::cmac -bin -ci
2ac0: 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65  pher $test_ciphe
2ad0: 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  r -key $test_key
2ae0: 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74   -data $test_dat
2af0: 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  a].    } -result
2b00: 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 32   {baf5c20f9973e2
2b10: 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35 32  d606b14c7efdfe52
2b20: 66 61 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20 43  fa}..# Test MD C
2b30: 4d 41 43 0a 0a 0a 74 65 73 74 20 4d 44 5f 43 4d  MAC...test MD_CM
2b40: 41 43 2d 31 30 2e 31 20 7b 64 61 74 61 7d 20 2d  AC-10.1 {data} -
2b50: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
2b60: 64 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  d -cipher $test_
2b70: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
2b80: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73  t_key -data $tes
2b90: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
2ba0: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39  sult {baf5c20f99
2bb0: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64  73e2d606b14c7efd
2bc0: 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 4d 44  fe52fa}..test MD
2bd0: 5f 43 4d 41 43 2d 31 30 2e 32 20 7b 66 69 6c 65  _CMAC-10.2 {file
2be0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
2bf0: 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 24 74 65  ::md -cipher $te
2c00: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24  st_cipher -key $
2c10: 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20 24  test_key -file $
2c20: 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20  test_file.    } 
2c30: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
2c40: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
2c50: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
2c60: 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 33 20 7b 63   MD_CMAC-10.3 {c
2c70: 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a  hannel} -body {.
2c80: 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61  .digest_read_cha
2c90: 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73  n ::tls::md $tes
2ca0: 74 5f 66 69 6c 65 20 2d 63 69 70 68 65 72 20 24  t_file -cipher $
2cb0: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2cc0: 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d   $test_key.    }
2cd0: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
2ce0: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
2cf0: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73  7efdfe52fa}..tes
2d00: 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 34 20 7b  t MD_CMAC-10.4 {
2d10: 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b  command} -body {
2d20: 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75 6c  ..digest_accumul
2d30: 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a  ate $test_data :
2d40: 3a 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72  :tls::md -cipher
2d50: 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b   $test_cipher -k
2d60: 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20  ey $test_key.   
2d70: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35   } -result {baf5
2d80: 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31  c20f9973e2d606b1
2d90: 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74  4c7efdfe52fa}..t
2da0: 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 35  est MD_CMAC-10.5
2db0: 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64   {data bin} -bod
2dc0: 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f  y {..binary enco
2dd0: 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 6d  de hex [::tls::m
2de0: 64 20 2d 62 69 6e 20 2d 63 69 70 68 65 72 20 24  d -bin -cipher $
2df0: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2e00: 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61   $test_key -data
2e10: 20 24 74 65 73 74 5f 64 61 74 61 5d 0a 20 20 20   $test_data].   
2e20: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35   } -result {baf5
2e30: 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31  c20f9973e2d606b1
2e40: 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 23  4c7efdfe52fa}..#
2e50: 20 54 65 73 74 20 43 4d 41 43 20 53 68 6f 72 74   Test CMAC Short
2e60: 63 75 74 0a 0a 0a 74 65 73 74 20 43 4d 41 43 5f  cut...test CMAC_
2e70: 53 68 6f 72 74 63 75 74 2d 31 31 2e 31 20 7b 64  Shortcut-11.1 {d
2e80: 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  ata} -body {..::
2e90: 74 6c 73 3a 3a 63 6d 61 63 20 24 74 65 73 74 5f  tls::cmac $test_
2ea0: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
2eb0: 74 5f 6b 65 79 20 24 74 65 73 74 5f 64 61 74 61  t_key $test_data
2ec0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
2ed0: 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36  baf5c20f9973e2d6
2ee0: 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61  06b14c7efdfe52fa
2ef0: 7d 0a 0a 23 20 43 4d 41 43 20 45 72 72 6f 72 20  }..# CMAC Error 
2f00: 43 61 73 65 73 0a 0a 0a 74 65 73 74 20 43 4d 41  Cases...test CMA
2f10: 43 5f 45 72 72 6f 72 73 2d 31 32 2e 31 20 7b 54  C_Errors-12.1 {T
2f20: 6f 6f 20 66 65 77 20 61 72 67 73 7d 20 2d 62 6f  oo few args} -bo
2f30: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61  dy {..::tls::cma
2f40: 63 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  c.    } -result 
2f50: 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73  {wrong # args: s
2f60: 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a  hould be "::tls:
2f70: 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65 78  :cmac ?-bin|-hex
2f80: 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f  ? ?-cipher name?
2f90: 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20   ?-digest name? 
2fa0: 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63  ?-key key? ?-mac
2fb0: 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c   name? [-channel
2fc0: 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64   chan | -command
2fd0: 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65   cmdName | -file
2fe0: 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61   filename | ?-da
2ff0: 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74  ta? data]"} -ret
3000: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65  urnCodes {1}..te
3010: 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31  st CMAC_Errors-1
3020: 32 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79 20 61 72  2.2 {Too many ar
3030: 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  gs} -body {..::t
3040: 6c 73 3a 3a 63 6d 61 63 20 74 6f 6f 20 6d 61 6e  ls::cmac too man
3050: 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61  y command line a
3060: 72 67 73 20 74 6f 20 70 61 73 73 20 74 68 65 20  rgs to pass the 
3070: 74 65 73 74 20 77 69 74 68 6f 75 74 20 61 6e 20  test without an 
3080: 65 72 72 6f 72 20 6f 72 20 66 61 69 6c 69 6e 67  error or failing
3090: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
30a0: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68  wrong # args: sh
30b0: 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a  ould be "::tls::
30c0: 63 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f  cmac ?-bin|-hex?
30d0: 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f 20   ?-cipher name? 
30e0: 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f  ?-digest name? ?
30f0: 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20  -key key? ?-mac 
3100: 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20  name? [-channel 
3110: 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20  chan | -command 
3120: 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20  cmdName | -file 
3130: 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74  filename | ?-dat
3140: 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74 75  a? data]"} -retu
3150: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
3160: 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32  t CMAC_Errors-12
3170: 2e 33 20 7b 4e 6f 20 63 69 70 68 65 72 7d 20 2d  .3 {No cipher} -
3180: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
3190: 6d 61 63 20 2d 68 65 78 20 2d 64 61 74 61 20 24  mac -hex -data $
31a0: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
31b0: 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 63 69 70 68  -result {No ciph
31c0: 65 72 20 73 70 65 63 69 66 69 65 64 7d 20 2d 72  er specified} -r
31d0: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
31e0: 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73  test CMAC_Errors
31f0: 2d 31 32 2e 34 20 7b 4e 6f 20 6b 65 79 7d 20 2d  -12.4 {No key} -
3200: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
3210: 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74 65 73  mac -cipher $tes
3220: 74 5f 63 69 70 68 65 72 20 2d 64 61 74 61 20 24  t_cipher -data $
3230: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
3240: 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6b 65 79 20  -result {No key 
3250: 73 70 65 63 69 66 69 65 64 7d 20 2d 72 65 74 75  specified} -retu
3260: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
3270: 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32  t CMAC_Errors-12
3280: 2e 35 20 7b 49 6e 76 61 6c 69 64 20 63 69 70 68  .5 {Invalid ciph
3290: 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  er} -body {..::t
32a0: 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72  ls::cmac -cipher
32b0: 20 62 6f 67 75 73 20 2d 64 61 74 61 20 24 74 65   bogus -data $te
32c0: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
32d0: 65 73 75 6c 74 20 7b 49 6e 76 61 6c 69 64 20 63  esult {Invalid c
32e0: 69 70 68 65 72 20 22 62 6f 67 75 73 22 7d 20 2d  ipher "bogus"} -
32f0: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
3300: 0a 0a 23 20 54 65 73 74 20 48 4d 41 43 20 63 6f  ..# Test HMAC co
3310: 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73 74 5f 64  mmand.set test_d
3320: 69 67 65 73 74 20 6d 64 35 0a 73 65 74 20 74 65  igest md5.set te
3330: 73 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65 20  st_key "Example 
3340: 6b 65 79 22 0a 0a 0a 74 65 73 74 20 48 4d 41 43  key"...test HMAC
3350: 2d 31 33 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f  -13.1 {data} -bo
3360: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61  dy {..::tls::hma
3370: 63 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f  c -digest $test_
3380: 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73  digest -key $tes
3390: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73  t_key -data $tes
33a0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
33b0: 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65  sult {f98327ef3e
33c0: 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61  20ab6d388f676c6a
33d0: 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d  79d93d}..test HM
33e0: 41 43 2d 31 33 2e 32 20 7b 66 69 6c 65 7d 20 2d  AC-13.2 {file} -
33f0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
3400: 6d 61 63 20 2d 64 69 67 65 73 74 20 24 74 65 73  mac -digest $tes
3410: 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74  t_digest -key $t
3420: 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74  est_key -file $t
3430: 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d  est_file.    } -
3440: 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66  result {f98327ef
3450: 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63  3e20ab6d388f676c
3460: 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20  6a79d93d}..test 
3470: 48 4d 41 43 2d 31 33 2e 33 20 7b 63 68 61 6e 6e  HMAC-13.3 {chann
3480: 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  el} -body {..dig
3490: 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a  est_read_chan ::
34a0: 74 6c 73 3a 3a 68 6d 61 63 20 24 74 65 73 74 5f  tls::hmac $test_
34b0: 66 69 6c 65 20 2d 64 69 67 65 73 74 20 24 74 65  file -digest $te
34c0: 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24  st_digest -key $
34d0: 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d  test_key.    } -
34e0: 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66  result {f98327ef
34f0: 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63  3e20ab6d388f676c
3500: 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20  6a79d93d}..test 
3510: 48 4d 41 43 2d 31 33 2e 34 20 7b 63 6f 6d 6d 61  HMAC-13.4 {comma
3520: 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  nd} -body {..dig
3530: 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24  est_accumulate $
3540: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a  test_data ::tls:
3550: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 24 74  :hmac -digest $t
3560: 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20  est_digest -key 
3570: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20  $test_key.    } 
3580: 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65  -result {f98327e
3590: 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36  f3e20ab6d388f676
35a0: 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74  c6a79d93d}..test
35b0: 20 48 4d 41 43 2d 31 33 2e 35 20 7b 64 61 74 61   HMAC-13.5 {data
35c0: 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62   bin} -body {..b
35d0: 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78  inary encode hex
35e0: 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64   [::tls::hmac -d
35f0: 69 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65  igest $test_dige
3600: 73 74 20 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65  st -bin -key $te
3610: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
3620: 73 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d  st_data].    } -
3630: 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66  result {f98327ef
3640: 33 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63  3e20ab6d388f676c
3650: 36 61 37 39 64 39 33 64 7d 0a 0a 23 20 54 65 73  6a79d93d}..# Tes
3660: 74 20 4d 44 20 48 4d 41 43 0a 0a 0a 74 65 73 74  t MD HMAC...test
3670: 20 4d 44 5f 48 4d 41 43 2d 31 34 2e 31 20 7b 64   MD_HMAC-14.1 {d
3680: 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  ata} -body {..::
3690: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
36a0: 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65  $test_digest -ke
36b0: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74  y $test_key -dat
36c0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
36d0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33   } -result {f983
36e0: 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66  27ef3e20ab6d388f
36f0: 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74  676c6a79d93d}..t
3700: 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31 34 2e 32  est MD_HMAC-14.2
3710: 20 7b 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a   {file} -body {.
3720: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
3730: 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74 20  st $test_digest 
3740: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d  -key $test_key -
3750: 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a  file $test_file.
3760: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66      } -result {f
3770: 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33  98327ef3e20ab6d3
3780: 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d  88f676c6a79d93d}
3790: 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31  ..test MD_HMAC-1
37a0: 34 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62  4.3 {channel} -b
37b0: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65  ody {..digest_re
37c0: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d  ad_chan ::tls::m
37d0: 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69  d $test_file -di
37e0: 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73  gest $test_diges
37f0: 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  t -key $test_key
3800: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3810: 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64  f98327ef3e20ab6d
3820: 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64  388f676c6a79d93d
3830: 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d  }..test MD_HMAC-
3840: 31 34 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d  14.4 {command} -
3850: 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61  body {..digest_a
3860: 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f  ccumulate $test_
3870: 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  data ::tls::md -
3880: 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69 67  digest $test_dig
3890: 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b  est -key $test_k
38a0: 65 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ey.    } -result
38b0: 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 62   {f98327ef3e20ab
38c0: 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64 39  6d388f676c6a79d9
38d0: 33 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41  3d}..test MD_HMA
38e0: 43 2d 31 34 2e 35 20 7b 64 61 74 61 20 62 69 6e  C-14.5 {data bin
38f0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72  } -body {..binar
3900: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a  y encode hex [::
3910: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
3920: 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 62 69  $test_digest -bi
3930: 6e 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  n -key $test_key
3940: 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74   -data $test_dat
3950: 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  a].    } -result
3960: 20 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 62   {f98327ef3e20ab
3970: 36 64 33 38 38 66 36 37 36 63 36 61 37 39 64 39  6d388f676c6a79d9
3980: 33 64 7d 0a 0a 23 20 54 65 73 74 20 48 4d 41 43  3d}..# Test HMAC
3990: 20 53 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73 74   Shortcut...test
39a0: 20 48 4d 41 43 5f 53 68 6f 72 74 63 75 74 2d 31   HMAC_Shortcut-1
39b0: 35 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79  5.1 {data} -body
39c0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
39d0: 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65  $test_digest -ke
39e0: 79 20 24 74 65 73 74 5f 6b 65 79 20 24 74 65 73  y $test_key $tes
39f0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
3a00: 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65  sult {f98327ef3e
3a10: 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61  20ab6d388f676c6a
3a20: 37 39 64 39 33 64 7d 0a 0a 23 20 48 4d 41 43 20  79d93d}..# HMAC 
3a30: 45 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65  Error Cases...te
3a40: 73 74 20 48 4d 41 43 5f 45 72 72 6f 72 73 2d 31  st HMAC_Errors-1
3a50: 36 2e 31 20 7b 54 6f 6f 20 66 65 77 20 61 72 67  6.1 {Too few arg
3a60: 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  s} -body {..::tl
3a70: 73 3a 3a 68 6d 61 63 0a 20 20 20 20 7d 20 2d 72  s::hmac.    } -r
3a80: 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61  esult {wrong # a
3a90: 72 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22  rgs: should be "
3aa0: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 3f 2d 62 69  ::tls::hmac ?-bi
3ab0: 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72  n|-hex? ?-cipher
3ac0: 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20   name? ?-digest 
3ad0: 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f  name? ?-key key?
3ae0: 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63   ?-mac name? [-c
3af0: 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63  hannel chan | -c
3b00: 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c  ommand cmdName |
3b10: 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20   -file filename 
3b20: 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22  | ?-data? data]"
3b30: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
3b40: 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45 72  1}..test HMAC_Er
3b50: 72 6f 72 73 2d 31 36 2e 32 20 7b 54 6f 6f 20 6d  rors-16.2 {Too m
3b60: 61 6e 79 20 61 72 67 73 7d 20 2d 62 6f 64 79 20  any args} -body 
3b70: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 74  {..::tls::hmac t
3b80: 6f 6f 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20  oo many command 
3b90: 6c 69 6e 65 20 61 72 67 73 20 74 6f 20 70 61 73  line args to pas
3ba0: 73 20 74 68 65 20 74 65 73 74 20 77 69 74 68 6f  s the test witho
3bb0: 75 74 20 61 6e 20 65 72 72 6f 72 20 6f 72 20 66  ut an error or f
3bc0: 61 69 6c 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65  ailing.    } -re
3bd0: 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72  sult {wrong # ar
3be0: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a  gs: should be ":
3bf0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 3f 2d 62 69 6e  :tls::hmac ?-bin
3c00: 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20  |-hex? ?-cipher 
3c10: 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e  name? ?-digest n
3c20: 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20  ame? ?-key key? 
3c30: 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68  ?-mac name? [-ch
3c40: 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f  annel chan | -co
3c50: 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20  mmand cmdName | 
3c60: 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c  -file filename |
3c70: 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d   ?-data? data]"}
3c80: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
3c90: 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72  }..test HMAC_Err
3ca0: 6f 72 73 2d 31 36 2e 33 20 7b 4e 6f 20 64 69 67  ors-16.3 {No dig
3cb0: 65 73 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  est} -body {..::
3cc0: 74 6c 73 3a 3a 68 6d 61 63 20 2d 68 65 78 20 2d  tls::hmac -hex -
3cd0: 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a  data $test_data.
3ce0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e      } -result {N
3cf0: 6f 20 64 69 67 65 73 74 20 73 70 65 63 69 66 69  o digest specifi
3d00: 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ed} -returnCodes
3d10: 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43 5f   {1}..test HMAC_
3d20: 45 72 72 6f 72 73 2d 31 36 2e 34 20 7b 4e 6f 20  Errors-16.4 {No 
3d30: 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  key} -body {..::
3d40: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
3d50: 74 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 24  t sha256 -data $
3d60: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
3d70: 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6b 65 79 20  -result {No key 
3d80: 73 70 65 63 69 66 69 65 64 7d 20 2d 72 65 74 75  specified} -retu
3d90: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
3da0: 74 20 48 4d 41 43 5f 45 72 72 6f 72 73 2d 31 36  t HMAC_Errors-16
3db0: 2e 35 20 7b 49 6e 76 61 6c 69 64 20 64 69 67 65  .5 {Invalid dige
3dc0: 73 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  st} -body {..::t
3dd0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 62  ls::md -digest b
3de0: 6f 67 75 73 20 2d 6b 65 79 20 24 74 65 73 74 5f  ogus -key $test_
3df0: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
3e00: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
3e10: 6c 74 20 7b 49 6e 76 61 6c 69 64 20 64 69 67 65  lt {Invalid dige
3e20: 73 74 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74  st "bogus"} -ret
3e30: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 0a 23  urnCodes {1}...#
3e40: 20 54 65 73 74 20 4d 41 43 20 63 6f 6d 6d 61 6e   Test MAC comman
3e50: 64 0a 73 65 74 20 74 65 73 74 5f 63 69 70 68 65  d.set test_ciphe
3e60: 72 20 22 61 65 73 2d 31 32 38 2d 63 62 63 22 0a  r "aes-128-cbc".
3e70: 73 65 74 20 74 65 73 74 5f 64 69 67 65 73 74 20  set test_digest 
3e80: 73 68 61 32 35 36 0a 73 65 74 20 74 65 73 74 5f  sha256.set test_
3e90: 6b 65 79 20 22 45 78 61 6d 70 6c 65 20 6b 65 79  key "Example key
3ea0: 20 31 32 33 34 22 0a 0a 0a 74 65 73 74 20 4d 41   1234"...test MA
3eb0: 43 2d 31 37 2e 31 20 7b 43 4d 41 43 7d 20 2d 62  C-17.1 {CMAC} -b
3ec0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61  ody {..::tls::ma
3ed0: 63 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  c -cipher $test_
3ee0: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
3ef0: 74 5f 6b 65 79 20 2d 6d 61 63 20 63 6d 61 63 20  t_key -mac cmac 
3f00: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
3f10: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3f20: 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36  baf5c20f9973e2d6
3f30: 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61  06b14c7efdfe52fa
3f40: 7d 0a 0a 74 65 73 74 20 4d 41 43 2d 31 37 2e 32  }..test MAC-17.2
3f50: 20 7b 48 4d 41 43 7d 20 2d 62 6f 64 79 20 7b 0a   {HMAC} -body {.
3f60: 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 64 69 67  .::tls::mac -dig
3f70: 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74  est $test_digest
3f80: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
3f90: 2d 6d 61 63 20 68 6d 61 63 20 2d 64 61 74 61 20  -mac hmac -data 
3fa0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
3fb0: 20 2d 72 65 73 75 6c 74 20 7b 36 37 36 64 61 66   -result {676daf
3fc0: 39 36 33 37 30 64 30 65 33 63 35 35 39 38 35 35  96370d0e3c559855
3fd0: 37 64 61 33 38 61 39 61 38 31 30 61 34 66 62 61  7da38a9a810a4fba
3fe0: 63 62 62 32 64 31 30 63 36 37 66 36 64 66 61 38  cbb2d10c67f6dfa8
3ff0: 33 66 31 30 66 34 38 65 39 36 7d 0a 0a 74 65 73  3f10f48e96}..tes
4000: 74 20 4d 41 43 2d 31 37 2e 33 20 7b 4d 44 2d 43  t MAC-17.3 {MD-C
4010: 4d 41 43 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  MAC} -body {..::
4020: 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20  tls::md -cipher 
4030: 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65  $test_cipher -ke
4040: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 6d 61 63  y $test_key -mac
4050: 20 63 6d 61 63 20 2d 64 61 74 61 20 24 74 65 73   cmac -data $tes
4060: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
4070: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39  sult {baf5c20f99
4080: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64  73e2d606b14c7efd
4090: 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 4d 41  fe52fa}..test MA
40a0: 43 2d 31 37 2e 34 20 7b 4d 44 2d 48 4d 41 43 7d  C-17.4 {MD-HMAC}
40b0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
40c0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 24 74 65 73  :md -digest $tes
40d0: 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74  t_digest -key $t
40e0: 65 73 74 5f 6b 65 79 20 2d 6d 61 63 20 68 6d 61  est_key -mac hma
40f0: 63 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61  c -data $test_da
4100: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
4110: 20 7b 36 37 36 64 61 66 39 36 33 37 30 64 30 65   {676daf96370d0e
4120: 33 63 35 35 39 38 35 35 37 64 61 33 38 61 39 61  3c5598557da38a9a
4130: 38 31 30 61 34 66 62 61 63 62 62 32 64 31 30 63  810a4fbacbb2d10c
4140: 36 37 66 36 64 66 61 38 33 66 31 30 66 34 38 65  67f6dfa83f10f48e
4150: 39 36 7d 0a 0a 23 20 4d 41 43 20 45 72 72 6f 72  96}..# MAC Error
4160: 20 43 61 73 65 73 0a 0a 0a 74 65 73 74 20 4d 41   Cases...test MA
4170: 43 5f 45 72 72 6f 72 73 2d 31 38 2e 31 20 7b 54  C_Errors-18.1 {T
4180: 6f 6f 20 66 65 77 20 61 72 67 73 7d 20 2d 62 6f  oo few args} -bo
4190: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63  dy {..::tls::mac
41a0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
41b0: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68  wrong # args: sh
41c0: 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a  ould be "::tls::
41d0: 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20  mac ?-bin|-hex? 
41e0: 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f  ?-cipher name? ?
41f0: 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d  -digest name? ?-
4200: 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e  key key? ?-mac n
4210: 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63  ame? [-channel c
4220: 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63  han | -command c
4230: 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66  mdName | -file f
4240: 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61  ilename | ?-data
4250: 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74 75 72  ? data]"} -retur
4260: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74  nCodes {1}..test
4270: 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31 38 2e 32   MAC_Errors-18.2
4280: 20 7b 4e 6f 20 6d 61 63 7d 20 2d 62 6f 64 79 20   {No mac} -body 
4290: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 6b  {..::tls::mac -k
42a0: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61  ey $test_key -da
42b0: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
42c0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20    } -result {No 
42d0: 4d 41 43 20 73 70 65 63 69 66 69 65 64 7d 20 2d  MAC specified} -
42e0: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
42f0: 0a 74 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73  .test MAC_Errors
4300: 2d 31 38 2e 33 20 7b 4e 6f 20 6b 65 79 7d 20 2d  -18.3 {No key} -
4310: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
4320: 61 63 20 2d 6d 61 63 20 68 6d 61 63 20 2d 64 61  ac -mac hmac -da
4330: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
4340: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20    } -result {No 
4350: 6b 65 79 20 73 70 65 63 69 66 69 65 64 7d 20 2d  key specified} -
4360: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
4370: 0a 74 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73  .test MAC_Errors
4380: 2d 31 38 2e 34 20 7b 49 6e 76 61 6c 69 64 20 4d  -18.4 {Invalid M
4390: 41 43 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  AC} -body {..::t
43a0: 6c 73 3a 3a 6d 61 63 20 2d 6d 61 63 20 73 63 72  ls::mac -mac scr
43b0: 79 70 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b  ypt -key $test_k
43c0: 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64  ey -data $test_d
43d0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
43e0: 74 20 7b 49 6e 76 61 6c 69 64 20 4d 41 43 20 22  t {Invalid MAC "
43f0: 73 63 72 79 70 74 22 7d 20 2d 72 65 74 75 72 6e  scrypt"} -return
4400: 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20  Codes {1}..test 
4410: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 38 2e 35 20  MAC_Errors-18.5 
4420: 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 67 73 7d 20  {Too many args} 
4430: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
4440: 6d 61 63 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d  mac too many com
4450: 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 73 20 74  mand line args t
4460: 6f 20 70 61 73 73 20 74 68 65 20 74 65 73 74 20  o pass the test 
4470: 77 69 74 68 6f 75 74 20 61 6e 20 65 72 72 6f 72  without an error
4480: 20 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20 20 20   or failing.    
4490: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67  } -result {wrong
44a0: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
44b0: 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 61 63 20 3f  be "::tls::mac ?
44c0: 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70  -bin|-hex? ?-cip
44d0: 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65  her name? ?-dige
44e0: 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b  st name? ?-key k
44f0: 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20  ey? ?-mac name? 
4500: 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c  [-channel chan |
4510: 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d   -command cmdNam
4520: 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61  e | -file filena
4530: 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74  me | ?-data? dat
4540: 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  a]"} -returnCode
4550: 73 20 7b 31 7d 0a 0a 0a 23 20 52 46 43 20 31 33  s {1}...# RFC 13
4560: 32 31 20 4d 65 73 73 61 67 65 20 44 69 67 65 73  21 Message Diges
4570: 74 20 35 0a 0a 0a 74 65 73 74 20 52 46 43 31 33  t 5...test RFC13
4580: 32 31 2d 4d 44 35 2d 31 39 2e 31 20 7b 54 43 31  21-MD5-19.1 {TC1
4590: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
45a0: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35  ::md -digest md5
45b0: 20 2d 64 61 74 61 20 22 22 0a 20 20 20 20 7d 20   -data "".    } 
45c0: 2d 72 65 73 75 6c 74 20 7b 64 34 31 64 38 63 64  -result {d41d8cd
45d0: 39 38 66 30 30 62 32 30 34 65 39 38 30 30 39 39  98f00b204e980099
45e0: 38 65 63 66 38 34 32 37 65 7d 0a 0a 74 65 73 74  8ecf8427e}..test
45f0: 20 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e   RFC1321-MD5-19.
4600: 32 20 7b 54 43 32 7d 20 2d 62 6f 64 79 20 7b 0a  2 {TC2} -body {.
4610: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
4620: 73 74 20 6d 64 35 20 2d 64 61 74 61 20 22 61 22  st md5 -data "a"
4630: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4640: 30 63 63 31 37 35 62 39 63 30 66 31 62 36 61 38  0cc175b9c0f1b6a8
4650: 33 31 63 33 39 39 65 32 36 39 37 37 32 36 36 31  31c399e269772661
4660: 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32 31 2d  }..test RFC1321-
4670: 4d 44 35 2d 31 39 2e 33 20 7b 54 43 33 7d 20 2d  MD5-19.3 {TC3} -
4680: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
4690: 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64  d -digest md5 -d
46a0: 61 74 61 20 22 61 62 63 22 0a 20 20 20 20 7d 20  ata "abc".    } 
46b0: 2d 72 65 73 75 6c 74 20 7b 39 30 30 31 35 30 39  -result {9001509
46c0: 38 33 63 64 32 34 66 62 30 64 36 39 36 33 66 37  83cd24fb0d6963f7
46d0: 64 32 38 65 31 37 66 37 32 7d 0a 0a 74 65 73 74  d28e17f72}..test
46e0: 20 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e   RFC1321-MD5-19.
46f0: 34 20 7b 54 43 34 7d 20 2d 62 6f 64 79 20 7b 0a  4 {TC4} -body {.
4700: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
4710: 73 74 20 6d 64 35 20 2d 64 61 74 61 20 22 6d 65  st md5 -data "me
4720: 73 73 61 67 65 20 64 69 67 65 73 74 22 0a 20 20  ssage digest".  
4730: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 36    } -result {f96
4740: 62 36 39 37 64 37 63 62 37 39 33 38 64 35 32 35  b697d7cb7938d525
4750: 61 32 66 33 31 61 61 66 31 36 31 64 30 7d 0a 0a  a2f31aaf161d0}..
4760: 74 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44 35  test RFC1321-MD5
4770: 2d 31 39 2e 35 20 7b 54 43 35 7d 20 2d 62 6f 64  -19.5 {TC5} -bod
4780: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
4790: 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61  digest md5 -data
47a0: 20 22 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e   "abcdefghijklmn
47b0: 6f 70 71 72 73 74 75 76 77 78 79 7a 22 0a 20 20  opqrstuvwxyz".  
47c0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 63 33 66    } -result {c3f
47d0: 63 64 33 64 37 36 31 39 32 65 34 30 30 37 64 66  cd3d76192e4007df
47e0: 62 34 39 36 63 63 61 36 37 65 31 33 62 7d 0a 0a  b496cca67e13b}..
47f0: 74 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44 35  test RFC1321-MD5
4800: 2d 31 39 2e 36 20 7b 54 43 36 7d 20 2d 62 6f 64  -19.6 {TC6} -bod
4810: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
4820: 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61  digest md5 -data
4830: 20 22 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e   "ABCDEFGHIJKLMN
4840: 4f 50 51 52 53 54 55 56 57 58 59 5a 61 62 63 64  OPQRSTUVWXYZabcd
4850: 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74  efghijklmnopqrst
4860: 75 76 77 78 79 7a 30 31 32 33 34 35 36 37 38 39  uvwxyz0123456789
4870: 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ".    } -result 
4880: 7b 64 31 37 34 61 62 39 38 64 32 37 37 64 39 66  {d174ab98d277d9f
4890: 35 61 35 36 31 31 63 32 63 39 66 34 31 39 64 39  5a5611c2c9f419d9
48a0: 66 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32 31  f}..test RFC1321
48b0: 2d 4d 44 35 2d 31 39 2e 37 20 7b 54 43 37 7d 20  -MD5-19.7 {TC7} 
48c0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
48d0: 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20 2d  md -digest md5 -
48e0: 64 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65 70  data [string rep
48f0: 65 61 74 20 22 31 32 33 34 35 36 37 38 39 30 22  eat "1234567890"
4900: 20 38 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c   8].    } -resul
4910: 74 20 7b 35 37 65 64 66 34 61 32 32 62 65 33 63  t {57edf4a22be3c
4920: 39 35 35 61 63 34 39 64 61 32 65 32 31 30 37 62  955ac49da2e2107b
4930: 36 37 61 7d 0a 0a 23 20 52 46 43 20 36 32 33 34  67a}..# RFC 6234
4940: 20 53 48 41 31 0a 0a 0a 74 65 73 74 20 52 46 43   SHA1...test RFC
4950: 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e  6234-MD-SHA1-20.
4960: 31 20 7b 54 43 31 7d 20 2d 62 6f 64 79 20 7b 0a  1 {TC1} -body {.
4970: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
4980: 73 74 20 73 68 61 31 20 2d 64 61 74 61 20 22 61  st sha1 -data "a
4990: 62 63 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  bc".    } -resul
49a0: 74 20 7b 61 39 39 39 33 65 33 36 34 37 30 36 38  t {a9993e3647068
49b0: 31 36 61 62 61 33 65 32 35 37 31 37 38 35 30 63  16aba3e25717850c
49c0: 32 36 63 39 63 64 30 64 38 39 64 7d 0a 0a 74 65  26c9cd0d89d}..te
49d0: 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48  st RFC6234-MD-SH
49e0: 41 31 2d 32 30 2e 32 20 7b 54 43 32 5f 31 7d 20  A1-20.2 {TC2_1} 
49f0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
4a00: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 20  md -digest sha1 
4a10: 2d 64 61 74 61 20 22 61 62 63 64 62 63 64 65 63  -data "abcdbcdec
4a20: 64 65 66 64 65 66 67 65 66 67 68 66 67 68 69 67  defdefgefghfghig
4a30: 68 69 6a 68 69 6a 6b 69 6a 6b 6c 6a 6b 6c 6d 6b  hijhijkijkljklmk
4a40: 6c 6d 6e 6c 6d 6e 6f 6d 6e 6f 70 6e 6f 70 71 22  lmnlmnomnopnopq"
4a50: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4a60: 38 34 39 38 33 65 34 34 31 63 33 62 64 32 36 65  84983e441c3bd26e
4a70: 62 61 61 65 34 61 61 31 66 39 35 31 32 39 65 35  baae4aa1f95129e5
4a80: 65 35 34 36 37 30 66 31 7d 0a 0a 74 65 73 74 20  e54670f1}..test 
4a90: 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d  RFC6234-MD-SHA1-
4aa0: 32 30 2e 33 20 7b 54 43 33 7d 20 2d 62 6f 64 79  20.3 {TC3} -body
4ab0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
4ac0: 69 67 65 73 74 20 73 68 61 31 20 2d 64 61 74 61  igest sha1 -data
4ad0: 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20   [string repeat 
4ae0: 22 61 22 20 31 30 30 30 30 30 30 5d 0a 20 20 20  "a" 1000000].   
4af0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 33 34 61 61   } -result {34aa
4b00: 39 37 33 63 64 34 63 34 64 61 61 34 66 36 31 65  973cd4c4daa4f61e
4b10: 65 62 32 62 64 62 61 64 32 37 33 31 36 35 33 34  eb2bdbad27316534
4b20: 30 31 36 66 7d 0a 0a 74 65 73 74 20 52 46 43 36  016f}..test RFC6
4b30: 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 34  234-MD-SHA1-20.4
4b40: 20 7b 54 43 34 7d 20 2d 62 6f 64 79 20 7b 0a 09   {TC4} -body {..
4b50: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
4b60: 74 20 73 68 61 31 20 2d 64 61 74 61 20 5b 73 74  t sha1 -data [st
4b70: 72 69 6e 67 20 72 65 70 65 61 74 20 22 30 31 32  ring repeat "012
4b80: 33 34 35 36 37 22 20 38 30 5d 0a 20 20 20 20 7d  34567" 80].    }
4b90: 20 2d 72 65 73 75 6c 74 20 7b 64 65 61 33 35 36   -result {dea356
4ba0: 61 32 63 64 64 64 39 30 63 37 61 37 65 63 65 64  a2cddd90c7a7eced
4bb0: 63 35 65 62 62 35 36 33 39 33 34 66 34 36 30 34  c5ebb563934f4604
4bc0: 35 32 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33  52}..test RFC623
4bd0: 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 35 20 7b  4-MD-SHA1-20.5 {
4be0: 54 43 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  TC6} -body {..::
4bf0: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
4c00: 73 68 61 31 20 2d 64 61 74 61 20 22 5c 78 35 65  sha1 -data "\x5e
4c10: 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ".    } -result 
4c20: 7b 35 65 36 66 38 30 61 33 34 61 39 37 39 38 63  {5e6f80a34a9798c
4c30: 61 66 63 36 61 35 64 62 39 36 63 63 35 37 62 61  afc6a5db96cc57ba
4c40: 34 63 34 64 62 35 39 63 32 7d 0a 0a 74 65 73 74  4c4db59c2}..test
4c50: 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 31   RFC6234-MD-SHA1
4c60: 2d 32 30 2e 36 20 7b 54 43 38 5f 31 7d 20 2d 62  -20.6 {TC8_1} -b
4c70: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
4c80: 20 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d 64   -digest sha1 -d
4c90: 61 74 61 20 22 5c 78 39 61 5c 78 37 64 5c 78 66  ata "\x9a\x7d\xf
4ca0: 64 5c 78 66 31 5c 78 65 63 5c 78 65 61 5c 78 64  d\xf1\xec\xea\xd
4cb0: 30 5c 78 36 65 5c 78 64 36 5c 78 34 36 5c 78 61  0\x6e\xd6\x46\xa
4cc0: 61 5c 78 35 35 5c 78 66 65 5c 78 37 35 5c 78 37  a\x55\xfe\x75\x7
4cd0: 31 5c 78 34 36 22 0a 20 20 20 20 7d 20 2d 72 65  1\x46".    } -re
4ce0: 73 75 6c 74 20 7b 38 32 61 62 66 66 36 36 30 35  sult {82abff6605
4cf0: 64 62 65 31 63 31 37 64 65 66 31 32 61 33 39 34  dbe1c17def12a394
4d00: 66 61 32 32 61 38 32 62 35 34 34 61 33 35 7d 0a  fa22a82b544a35}.
4d10: 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44  .test RFC6234-MD
4d20: 2d 53 48 41 31 2d 32 30 2e 37 20 7b 54 43 31 30  -SHA1-20.7 {TC10
4d30: 5f 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  _1} -body {..::t
4d40: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
4d50: 68 61 31 20 2d 64 61 74 61 20 22 5c 78 66 37 5c  ha1 -data "\xf7\
4d60: 78 38 66 5c 78 39 32 5c 78 31 34 5c 78 31 62 5c  x8f\x92\x14\x1b\
4d70: 78 63 64 5c 78 31 37 5c 78 30 61 5c 78 65 38 5c  xcd\x17\x0a\xe8\
4d80: 78 39 62 5c 78 34 66 5c 78 62 61 5c 78 31 35 5c  x9b\x4f\xba\x15\
4d90: 78 61 31 5c 78 64 35 5c 78 39 66 5c 78 33 66 5c  xa1\xd5\x9f\x3f\
4da0: 78 64 38 5c 78 34 64 5c 78 32 32 5c 78 33 63 5c  xd8\x4d\x22\x3c\
4db0: 78 39 32 5c 78 35 31 5c 78 62 64 5c 78 61 63 5c  x92\x51\xbd\xac\
4dc0: 78 62 62 5c 78 61 65 5c 78 36 31 5c 78 64 30 5c  xbb\xae\x61\xd0\
4dd0: 78 35 65 5c 78 64 31 5c 78 31 35 5c 78 61 30 5c  x5e\xd1\x15\xa0\
4de0: 78 36 61 5c 78 37 63 5c 78 65 31 5c 78 31 37 5c  x6a\x7c\xe1\x17\
4df0: 78 62 37 5c 78 62 65 5c 78 65 61 5c 78 64 32 5c  xb7\xbe\xea\xd2\
4e00: 78 34 34 5c 78 32 31 5c 78 64 65 5c 78 64 39 5c  x44\x21\xde\xd9\
4e10: 78 63 33 5c 78 32 35 5c 78 39 32 5c 78 62 64 5c  xc3\x25\x92\xbd\
4e20: 78 35 37 5c 78 65 64 5c 78 65 61 5c 78 65 33 5c  x57\xed\xea\xe3\
4e30: 78 39 63 5c 78 33 39 5c 78 66 61 5c 78 31 66 5c  x9c\x39\xfa\x1f\
4e40: 78 65 38 5c 78 39 34 5c 78 36 61 5c 78 38 34 5c  xe8\x94\x6a\x84\
4e50: 78 64 30 5c 78 63 66 5c 78 31 66 5c 78 37 62 5c  xd0\xcf\x1f\x7b\
4e60: 78 65 65 5c 78 61 64 5c 78 31 37 5c 78 31 33 5c  xee\xad\x17\x13\
4e70: 78 65 32 5c 78 65 30 5c 78 39 35 5c 78 39 38 5c  xe2\xe0\x95\x98\
4e80: 78 39 37 5c 78 33 34 5c 78 37 66 5c 78 36 37 5c  x97\x34\x7f\x67\
4e90: 78 63 38 5c 78 30 62 5c 78 30 34 5c 78 30 30 5c  xc8\x0b\x04\x00\
4ea0: 78 63 32 5c 78 30 39 5c 78 38 31 5c 78 35 64 5c  xc2\x09\x81\x5d\
4eb0: 78 36 62 5c 78 31 30 5c 78 61 36 5c 78 38 33 5c  x6b\x10\xa6\x83\
4ec0: 78 38 33 5c 78 36 66 5c 78 64 35 5c 78 35 36 5c  x83\x6f\xd5\x56\
4ed0: 78 32 61 5c 78 35 36 5c 78 63 61 5c 78 62 31 5c  x2a\x56\xca\xb1\
4ee0: 78 61 32 5c 78 38 65 5c 78 38 31 5c 78 62 36 5c  xa2\x8e\x81\xb6\
4ef0: 78 35 37 5c 78 36 36 5c 78 35 34 5c 78 36 33 5c  x57\x66\x54\x63\
4f00: 78 31 63 5c 78 66 31 5c 78 36 35 5c 78 36 36 5c  x1c\xf1\x65\x66\
4f10: 78 62 38 5c 78 36 65 5c 78 33 62 5c 78 33 33 5c  xb8\x6e\x3b\x33\
4f20: 78 61 31 5c 78 30 38 5c 78 62 30 5c 78 35 33 5c  xa1\x08\xb0\x53\
4f30: 78 30 37 5c 78 63 30 5c 78 30 61 5c 78 66 66 5c  x07\xc0\x0a\xff\
4f40: 78 31 34 5c 78 61 37 5c 78 36 38 5c 78 65 64 5c  x14\xa7\x68\xed\
4f50: 78 37 33 5c 78 35 30 5c 78 36 30 5c 78 36 61 5c  x73\x50\x60\x6a\
4f60: 78 30 66 5c 78 38 35 5c 78 65 36 5c 78 61 39 5c  x0f\x85\xe6\xa9\
4f70: 78 31 64 5c 78 33 39 5c 78 36 66 5c 78 35 62 5c  x1d\x39\x6f\x5b\
4f80: 78 35 63 5c 78 62 65 5c 78 35 37 5c 78 37 66 5c  x5c\xbe\x57\x7f\
4f90: 78 39 62 5c 78 33 38 5c 78 38 30 5c 78 37 63 5c  x9b\x38\x80\x7c\
4fa0: 78 37 64 5c 78 35 32 5c 78 33 64 5c 78 36 64 5c  x7d\x52\x3d\x6d\
4fb0: 78 37 39 5c 78 32 66 5c 78 36 65 5c 78 62 63 5c  x79\x2f\x6e\xbc\
4fc0: 78 32 34 5c 78 61 34 5c 78 65 63 5c 78 66 32 5c  x24\xa4\xec\xf2\
4fd0: 78 62 33 5c 78 61 34 5c 78 32 37 5c 78 63 64 5c  xb3\xa4\x27\xcd\
4fe0: 78 62 62 5c 78 66 62 22 0a 20 20 20 20 7d 20 2d  xbb\xfb".    } -
4ff0: 72 65 73 75 6c 74 20 7b 63 62 30 30 38 32 63 38  result {cb0082c8
5000: 66 31 39 37 64 32 36 30 39 39 31 62 61 36 61 34  f197d260991ba6a4
5010: 36 30 65 37 36 65 32 30 32 62 61 64 32 37 62 33  60e76e202bad27b3
5020: 7d 0a 0a 23 20 52 46 43 20 36 32 33 34 20 53 48  }..# RFC 6234 SH
5030: 41 32 35 36 0a 0a 0a 74 65 73 74 20 52 46 43 36  A256...test RFC6
5040: 32 33 34 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31  234-MD-SHA256-21
5050: 2e 31 20 7b 54 43 31 7d 20 2d 62 6f 64 79 20 7b  .1 {TC1} -body {
5060: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
5070: 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 61  est sha256 -data
5080: 20 22 61 62 63 22 0a 20 20 20 20 7d 20 2d 72 65   "abc".    } -re
5090: 73 75 6c 74 20 7b 62 61 37 38 31 36 62 66 38 66  sult {ba7816bf8f
50a0: 30 31 63 66 65 61 34 31 34 31 34 30 64 65 35 64  01cfea414140de5d
50b0: 61 65 32 32 32 33 62 30 30 33 36 31 61 33 39 36  ae2223b00361a396
50c0: 31 37 37 61 39 63 62 34 31 30 66 66 36 31 66 32  177a9cb410ff61f2
50d0: 30 30 31 35 61 64 7d 0a 0a 74 65 73 74 20 52 46  0015ad}..test RF
50e0: 43 36 32 33 34 2d 4d 44 2d 53 48 41 32 35 36 2d  C6234-MD-SHA256-
50f0: 32 31 2e 32 20 7b 54 43 32 5f 31 7d 20 2d 62 6f  21.2 {TC2_1} -bo
5100: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
5110: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
5120: 64 61 74 61 20 22 61 62 63 64 62 63 64 65 63 64  data "abcdbcdecd
5130: 65 66 64 65 66 67 65 66 67 68 66 67 68 69 67 68  efdefgefghfghigh
5140: 69 6a 68 69 6a 6b 69 6a 6b 6c 6a 6b 6c 6d 6b 6c  ijhijkijkljklmkl
5150: 6d 6e 6c 6d 6e 6f 6d 6e 6f 70 6e 6f 70 71 22 0a  mnlmnomnopnopq".
5160: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 32      } -result {2
5170: 34 38 64 36 61 36 31 64 32 30 36 33 38 62 38 65  48d6a61d20638b8e
5180: 35 63 30 32 36 39 33 30 63 33 65 36 30 33 39 61  5c026930c3e6039a
5190: 33 33 63 65 34 35 39 36 34 66 66 32 31 36 37 66  33ce45964ff2167f
51a0: 36 65 63 65 64 64 34 31 39 64 62 30 36 63 31 7d  6ecedd419db06c1}
51b0: 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d  ..test RFC6234-M
51c0: 44 2d 53 48 41 32 35 36 2d 32 31 2e 33 20 7b 54  D-SHA256-21.3 {T
51d0: 43 33 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C3} -body {..::t
51e0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
51f0: 68 61 32 35 36 20 2d 64 61 74 61 20 5b 73 74 72  ha256 -data [str
5200: 69 6e 67 20 72 65 70 65 61 74 20 22 61 22 20 31  ing repeat "a" 1
5210: 30 30 30 30 30 30 5d 0a 20 20 20 20 7d 20 2d 72  000000].    } -r
5220: 65 73 75 6c 74 20 7b 63 64 63 37 36 65 35 63 39  esult {cdc76e5c9
5230: 39 31 34 66 62 39 32 38 31 61 31 63 37 65 32 38  914fb9281a1c7e28
5240: 34 64 37 33 65 36 37 66 31 38 30 39 61 34 38 61  4d73e67f1809a48a
5250: 34 39 37 32 30 30 65 30 34 36 64 33 39 63 63 63  497200e046d39ccc
5260: 37 31 31 32 63 64 30 7d 0a 0a 74 65 73 74 20 52  7112cd0}..test R
5270: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32 35 36  FC6234-MD-SHA256
5280: 2d 32 31 2e 34 20 7b 54 43 34 7d 20 2d 62 6f 64  -21.4 {TC4} -bod
5290: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
52a0: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 64  digest sha256 -d
52b0: 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65 70 65  ata [string repe
52c0: 61 74 20 22 30 31 32 33 34 35 36 37 22 20 38 30  at "01234567" 80
52d0: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ].    } -result 
52e0: 7b 35 39 34 38 34 37 33 32 38 34 35 31 62 64 66  {594847328451bdf
52f0: 61 38 35 30 35 36 32 32 35 34 36 32 63 63 31 64  a85056225462cc1d
5300: 38 36 37 64 38 37 37 66 62 33 38 38 64 66 30 63  867d877fb388df0c
5310: 65 33 35 66 32 35 61 62 35 35 36 32 62 66 62 62  e35f25ab5562bfbb
5320: 35 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34  5}..test RFC6234
5330: 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e 35 20  -MD-SHA256-21.5 
5340: 7b 54 43 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  {TC6} -body {..:
5350: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
5360: 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 22 5c   sha256 -data "\
5370: 78 31 39 22 0a 20 20 20 20 7d 20 2d 72 65 73 75  x19".    } -resu
5380: 6c 74 20 7b 36 38 61 61 32 65 32 65 65 35 64 66  lt {68aa2e2ee5df
5390: 66 39 36 65 33 33 35 35 65 36 63 37 65 65 33 37  f96e3355e6c7ee37
53a0: 33 65 33 64 36 61 34 65 31 37 66 37 35 66 39 35  3e3d6a4e17f75f95
53b0: 31 38 64 38 34 33 37 30 39 63 30 63 39 62 63 33  18d843709c0c9bc3
53c0: 65 33 64 34 7d 0a 0a 74 65 73 74 20 52 46 43 36  e3d4}..test RFC6
53d0: 32 33 34 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31  234-MD-SHA256-21
53e0: 2e 36 20 7b 54 43 38 5f 32 35 36 7d 20 2d 62 6f  .6 {TC8_256} -bo
53f0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
5400: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
5410: 64 61 74 61 20 22 5c 78 65 33 5c 78 64 37 5c 78  data "\xe3\xd7\x
5420: 32 35 5c 78 37 30 5c 78 64 63 5c 78 64 64 5c 78  25\x70\xdc\xdd\x
5430: 37 38 5c 78 37 63 5c 78 65 33 5c 78 38 38 5c 78  78\x7c\xe3\x88\x
5440: 37 61 5c 78 62 32 5c 78 63 64 5c 78 36 38 5c 78  7a\xb2\xcd\x68\x
5450: 34 36 5c 78 35 32 22 0a 20 20 20 20 7d 20 2d 72  46\x52".    } -r
5460: 65 73 75 6c 74 20 7b 31 37 35 65 65 36 39 62 30  esult {175ee69b0
5470: 32 62 61 39 62 35 38 65 32 62 30 61 35 66 64 31  2ba9b58e2b0a5fd1
5480: 33 38 31 39 63 65 61 35 37 33 66 33 39 34 30 61  3819cea573f3940a
5490: 39 34 66 38 32 35 31 32 38 63 66 34 32 30 39 62  94f825128cf4209b
54a0: 65 61 62 62 34 65 38 7d 0a 0a 74 65 73 74 20 52  eabb4e8}..test R
54b0: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32 35 36  FC6234-MD-SHA256
54c0: 2d 32 31 2e 37 20 7b 54 43 31 30 5f 32 35 36 7d  -21.7 {TC10_256}
54d0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
54e0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32  :md -digest sha2
54f0: 35 36 20 2d 64 61 74 61 20 22 5c 78 38 33 5c 78  56 -data "\x83\x
5500: 32 36 5c 78 37 35 5c 78 34 65 5c 78 32 32 5c 78  26\x75\x4e\x22\x
5510: 37 37 5c 78 33 37 5c 78 32 66 5c 78 34 66 5c 78  77\x37\x2f\x4f\x
5520: 63 31 5c 78 32 62 5c 78 32 30 5c 78 35 32 5c 78  c1\x2b\x20\x52\x
5530: 37 61 5c 78 66 65 5c 78 66 30 5c 78 34 64 5c 78  7a\xfe\xf0\x4d\x
5540: 38 61 5c 78 30 35 5c 78 36 39 5c 78 37 31 5c 78  8a\x05\x69\x71\x
5550: 62 31 5c 78 31 61 5c 78 64 35 5c 78 37 31 5c 78  b1\x1a\xd5\x71\x
5560: 32 33 5c 78 61 37 5c 78 63 31 5c 78 33 37 5c 78  23\xa7\xc1\x37\x
5570: 37 36 5c 78 30 30 5c 78 30 30 5c 78 64 37 5c 78  76\x00\x00\xd7\x
5580: 62 65 5c 78 66 36 5c 78 66 33 5c 78 63 31 5c 78  be\xf6\xf3\xc1\x
5590: 66 37 5c 78 61 39 5c 78 30 38 5c 78 33 61 5c 78  f7\xa9\x08\x3a\x
55a0: 61 33 5c 78 39 64 5c 78 38 31 5c 78 30 64 5c 78  a3\x9d\x81\x0d\x
55b0: 62 33 5c 78 31 30 5c 78 37 37 5c 78 37 64 5c 78  b3\x10\x77\x7d\x
55c0: 61 62 5c 78 38 62 5c 78 31 65 5c 78 37 66 5c 78  ab\x8b\x1e\x7f\x
55d0: 30 32 5c 78 62 38 5c 78 34 61 5c 78 32 36 5c 78  02\xb8\x4a\x26\x
55e0: 63 37 5c 78 37 33 5c 78 33 32 5c 78 35 66 5c 78  c7\x73\x32\x5f\x
55f0: 38 62 5c 78 32 33 5c 78 37 34 5c 78 64 65 5c 78  8b\x23\x74\xde\x
5600: 37 61 5c 78 34 62 5c 78 35 61 5c 78 35 38 5c 78  7a\x4b\x5a\x58\x
5610: 63 62 5c 78 35 63 5c 78 35 63 5c 78 66 33 5c 78  cb\x5c\x5c\xf3\x
5620: 35 62 5c 78 63 65 5c 78 65 36 5c 78 66 62 5c 78  5b\xce\xe6\xfb\x
5630: 39 34 5c 78 36 65 5c 78 35 62 5c 78 64 36 5c 78  94\x6e\x5b\xd6\x
5640: 39 34 5c 78 66 61 5c 78 35 39 5c 78 33 61 5c 78  94\xfa\x59\x3a\x
5650: 38 62 5c 78 65 62 5c 78 33 66 5c 78 39 64 5c 78  8b\xeb\x3f\x9d\x
5660: 36 35 5c 78 39 32 5c 78 65 63 5c 78 65 64 5c 78  65\x92\xec\xed\x
5670: 61 61 5c 78 36 36 5c 78 63 61 5c 78 38 32 5c 78  aa\x66\xca\x82\x
5680: 61 32 5c 78 39 64 5c 78 30 63 5c 78 35 31 5c 78  a2\x9d\x0c\x51\x
5690: 62 63 5c 78 66 39 5c 78 33 33 5c 78 36 32 5c 78  bc\xf9\x33\x62\x
56a0: 33 30 5c 78 65 35 5c 78 64 37 5c 78 38 34 5c 78  30\xe5\xd7\x84\x
56b0: 65 34 5c 78 63 30 5c 78 61 34 5c 78 33 66 5c 78  e4\xc0\xa4\x3f\x
56c0: 38 64 5c 78 37 39 5c 78 61 33 5c 78 30 61 5c 78  8d\x79\xa3\x0a\x
56d0: 31 36 5c 78 35 63 5c 78 62 61 5c 78 62 65 5c 78  16\x5c\xba\xbe\x
56e0: 34 35 5c 78 32 62 5c 78 37 37 5c 78 34 62 5c 78  45\x2b\x77\x4b\x
56f0: 39 63 5c 78 37 31 5c 78 30 39 5c 78 61 39 5c 78  9c\x71\x09\xa9\x
5700: 37 64 5c 78 31 33 5c 78 38 66 5c 78 31 32 5c 78  7d\x13\x8f\x12\x
5710: 39 32 5c 78 32 38 5c 78 39 36 5c 78 36 66 5c 78  92\x28\x96\x6f\x
5720: 36 63 5c 78 30 61 5c 78 64 63 5c 78 31 30 5c 78  6c\x0a\xdc\x10\x
5730: 36 61 5c 78 61 64 5c 78 35 61 5c 78 39 66 5c 78  6a\xad\x5a\x9f\x
5740: 64 64 5c 78 33 30 5c 78 38 32 5c 78 35 37 5c 78  dd\x30\x82\x57\x
5750: 36 39 5c 78 62 32 5c 78 63 36 5c 78 37 31 5c 78  69\xb2\xc6\x71\x
5760: 61 66 5c 78 36 37 5c 78 35 39 5c 78 64 66 5c 78  af\x67\x59\xdf\x
5770: 32 38 5c 78 65 62 5c 78 33 39 5c 78 33 64 5c 78  28\xeb\x39\x3d\x
5780: 35 34 5c 78 64 36 22 0a 20 20 20 20 7d 20 2d 72  54\xd6".    } -r
5790: 65 73 75 6c 74 20 7b 39 37 64 62 63 61 37 64 66  esult {97dbca7df
57a0: 34 36 64 36 32 63 38 61 34 32 32 63 39 34 31 64  46d62c8a422c941d
57b0: 64 37 65 38 33 35 62 38 61 64 33 33 36 31 37 36  d7e835b8ad336176
57c0: 33 66 37 65 39 62 32 64 39 35 66 34 66 30 64 61  3f7e9b2d95f4f0da
57d0: 36 65 31 63 63 62 63 7d 0a 0a 23 20 52 46 43 20  6e1ccbc}..# RFC 
57e0: 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c  4231 HMAC Exampl
57f0: 65 73 20 54 65 73 74 20 43 61 73 65 20 23 31 0a  es Test Case #1.
5800: 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20  set key [binary 
5810: 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69  decode hex [stri
5820: 6e 67 20 72 65 70 65 61 74 20 22 30 62 22 20 32  ng repeat "0b" 2
5830: 30 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 48 69  0]].set data "Hi
5840: 20 54 68 65 72 65 22 0a 0a 0a 74 65 73 74 20 52   There"...test R
5850: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 31 2d  FC4231_HMAC_TC1-
5860: 32 32 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62  22.1 {sha224} -b
5870: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
5880: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32  ac -digest sha22
5890: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
58a0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
58b0: 65 73 75 6c 74 20 7b 38 39 36 66 62 31 31 32 38  esult {896fb1128
58c0: 61 62 62 64 66 31 39 36 38 33 32 31 30 37 63 64  abbdf196832107cd
58d0: 34 39 64 66 33 33 66 34 37 62 34 62 31 31 36 39  49df33f47b4b1169
58e0: 39 31 32 62 61 34 66 35 33 36 38 34 62 32 32 7d  912ba4f53684b22}
58f0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
5900: 4d 41 43 5f 54 43 31 2d 32 32 2e 32 20 7b 73 68  MAC_TC1-22.2 {sh
5910: 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a256} -body {..:
5920: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
5930: 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24  st sha256 -key $
5940: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
5950: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
5960: 30 33 34 34 63 36 31 64 38 64 62 33 38 35 33 35  0344c61d8db38535
5970: 63 61 38 61 66 63 65 61 66 30 62 66 31 32 62 38  ca8afceaf0bf12b8
5980: 38 31 64 63 32 30 30 63 39 38 33 33 64 61 37 32  81dc200c9833da72
5990: 36 65 39 33 37 36 63 32 65 33 32 63 66 66 37 7d  6e9376c2e32cff7}
59a0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
59b0: 4d 41 43 5f 54 43 31 2d 32 32 2e 33 20 7b 73 68  MAC_TC1-22.3 {sh
59c0: 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a384} -body {..:
59d0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
59e0: 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24  st sha384 -key $
59f0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
5a00: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61      } -result {a
5a10: 66 64 30 33 39 34 34 64 38 34 38 39 35 36 32 36  fd03944d84895626
5a20: 62 30 38 32 35 66 34 61 62 34 36 39 30 37 66 31  b0825f4ab46907f1
5a30: 35 66 39 64 61 64 62 65 34 31 30 31 65 63 36 38  5f9dadbe4101ec68
5a40: 32 61 61 30 33 34 63 37 63 65 62 63 35 39 63 66  2aa034c7cebc59cf
5a50: 61 65 61 39 65 61 39 30 37 36 65 64 65 37 66 34  aea9ea9076ede7f4
5a60: 61 66 31 35 32 65 38 62 32 66 61 39 63 62 36 7d  af152e8b2fa9cb6}
5a70: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
5a80: 4d 41 43 5f 54 43 31 2d 32 32 2e 34 20 7b 73 68  MAC_TC1-22.4 {sh
5a90: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a512} -body {..:
5aa0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
5ab0: 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24  st sha512 -key $
5ac0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
5ad0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38      } -result {8
5ae0: 37 61 61 37 63 64 65 61 35 65 66 36 31 39 64 34  7aa7cdea5ef619d4
5af0: 66 66 30 62 34 32 34 31 61 31 64 36 63 62 30 32  ff0b4241a1d6cb02
5b00: 33 37 39 66 34 65 32 63 65 34 65 63 32 37 38 37  379f4e2ce4ec2787
5b10: 61 64 30 62 33 30 35 34 35 65 31 37 63 64 65 64  ad0b30545e17cded
5b20: 61 61 38 33 33 62 37 64 36 62 38 61 37 30 32 30  aa833b7d6b8a7020
5b30: 33 38 62 32 37 34 65 61 65 61 33 66 34 65 34 62  38b274eaea3f4e4b
5b40: 65 39 64 39 31 34 65 65 62 36 31 66 31 37 30 32  e9d914eeb61f1702
5b50: 65 36 39 36 63 32 30 33 61 31 32 36 38 35 34 7d  e696c203a126854}
5b60: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41  ..# RFC 4231 HMA
5b70: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20  C Examples Test 
5b80: 43 61 73 65 20 23 32 20 2d 20 54 65 73 74 20 77  Case #2 - Test w
5b90: 69 74 68 20 61 20 6b 65 79 20 73 68 6f 72 74 65  ith a key shorte
5ba0: 72 20 74 68 61 6e 20 74 68 65 20 6c 65 6e 67 74  r than the lengt
5bb0: 68 20 6f 66 20 74 68 65 20 48 4d 41 43 20 6f 75  h of the HMAC ou
5bc0: 74 70 75 74 2e 0a 73 65 74 20 6b 65 79 20 22 4a  tput..set key "J
5bd0: 65 66 65 22 0a 73 65 74 20 64 61 74 61 20 22 77  efe".set data "w
5be0: 68 61 74 20 64 6f 20 79 61 20 77 61 6e 74 20 66  hat do ya want f
5bf0: 6f 72 20 6e 6f 74 68 69 6e 67 3f 22 0a 0a 0a 74  or nothing?"...t
5c00: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
5c10: 5f 54 43 32 2d 32 33 2e 31 20 7b 73 68 61 32 32  _TC2-23.1 {sha22
5c20: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
5c30: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
5c40: 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79  sha224 -key $key
5c50: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
5c60: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61 33 30 65   } -result {a30e
5c70: 30 31 30 39 38 62 63 36 64 62 62 66 34 35 36 39  01098bc6dbbf4569
5c80: 30 66 33 61 37 65 39 65 36 64 30 66 38 62 62 65  0f3a7e9e6d0f8bbe
5c90: 61 32 61 33 39 65 36 31 34 38 30 30 38 66 64 30  a2a39e6148008fd0
5ca0: 35 65 34 34 7d 0a 0a 74 65 73 74 20 52 46 43 34  5e44}..test RFC4
5cb0: 32 33 31 5f 48 4d 41 43 5f 54 43 32 2d 32 33 2e  231_HMAC_TC2-23.
5cc0: 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79  2 {sha256} -body
5cd0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
5ce0: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
5cf0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
5d00: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
5d10: 6c 74 20 7b 35 62 64 63 63 31 34 36 62 66 36 30  lt {5bdcc146bf60
5d20: 37 35 34 65 36 61 30 34 32 34 32 36 30 38 39 35  754e6a0424260895
5d30: 37 35 63 37 35 61 30 30 33 66 30 38 39 64 32 37  75c75a003f089d27
5d40: 33 39 38 33 39 64 65 63 35 38 62 39 36 34 65 63  39839dec58b964ec
5d50: 33 38 34 33 7d 0a 0a 74 65 73 74 20 52 46 43 34  3843}..test RFC4
5d60: 32 33 31 5f 48 4d 41 43 5f 54 43 32 2d 32 33 2e  231_HMAC_TC2-23.
5d70: 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79  3 {sha384} -body
5d80: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
5d90: 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20 2d  -digest sha384 -
5da0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
5db0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
5dc0: 6c 74 20 7b 61 66 34 35 64 32 65 33 37 36 34 38  lt {af45d2e37648
5dd0: 34 30 33 31 36 31 37 66 37 38 64 32 62 35 38 61  4031617f78d2b58a
5de0: 36 62 31 62 39 63 37 65 66 34 36 34 66 35 61 30  6b1b9c7ef464f5a0
5df0: 31 62 34 37 65 34 32 65 63 33 37 33 36 33 32 32  1b47e42ec3736322
5e00: 34 34 35 65 38 65 32 32 34 30 63 61 35 65 36 39  445e8e2240ca5e69
5e10: 65 32 63 37 38 62 33 32 33 39 65 63 66 61 62 32  e2c78b3239ecfab2
5e20: 31 36 34 39 7d 0a 0a 74 65 73 74 20 52 46 43 34  1649}..test RFC4
5e30: 32 33 31 5f 48 4d 41 43 5f 54 43 32 2d 32 33 2e  231_HMAC_TC2-23.
5e40: 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79  4 {sha512} -body
5e50: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
5e60: 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20 2d  -digest sha512 -
5e70: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
5e80: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
5e90: 6c 74 20 7b 31 36 34 62 37 61 37 62 66 63 66 38  lt {164b7a7bfcf8
5ea0: 31 39 65 32 65 33 39 35 66 62 65 37 33 62 35 36  19e2e395fbe73b56
5eb0: 65 30 61 33 38 37 62 64 36 34 32 32 32 65 38 33  e0a387bd64222e83
5ec0: 31 66 64 36 31 30 32 37 30 63 64 37 65 61 32 35  1fd610270cd7ea25
5ed0: 30 35 35 34 39 37 35 38 62 66 37 35 63 30 35 61  05549758bf75c05a
5ee0: 39 39 34 61 36 64 30 33 34 66 36 35 66 38 66 30  994a6d034f65f8f0
5ef0: 65 36 66 64 63 61 65 61 62 31 61 33 34 64 34 61  e6fdcaeab1a34d4a
5f00: 36 62 34 62 36 33 36 65 30 37 30 61 33 38 62 63  6b4b636e070a38bc
5f10: 65 37 33 37 7d 0a 0a 23 20 52 46 43 20 34 32 33  e737}..# RFC 423
5f20: 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20  1 HMAC Examples 
5f30: 54 65 73 74 20 43 61 73 65 20 23 33 20 2d 20 54  Test Case #3 - T
5f40: 65 73 74 20 77 69 74 68 20 61 20 63 6f 6d 62 69  est with a combi
5f50: 6e 65 64 20 6c 65 6e 67 74 68 20 6f 66 20 6b 65  ned length of ke
5f60: 79 20 61 6e 64 20 64 61 74 61 20 74 68 61 74 20  y and data that 
5f70: 69 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20 36  is larger than 6
5f80: 34 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b  4 bytes (= block
5f90: 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d 32 32 34  -size of SHA-224
5fa0: 20 61 6e 64 20 53 48 41 2d 32 35 36 29 2e 0a 73   and SHA-256)..s
5fb0: 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64  et key [binary d
5fc0: 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e  ecode hex [strin
5fd0: 67 20 72 65 70 65 61 74 20 22 61 61 22 20 32 30  g repeat "aa" 20
5fe0: 5d 5d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e  ]].set data [bin
5ff0: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b  ary decode hex [
6000: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 64  string repeat "d
6010: 64 22 20 35 30 5d 5d 0a 0a 0a 74 65 73 74 20 52  d" 50]]...test R
6020: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 33 2d  FC4231_HMAC_TC3-
6030: 32 34 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62  24.1 {sha224} -b
6040: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
6050: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32  ac -digest sha22
6060: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
6070: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
6080: 65 73 75 6c 74 20 7b 37 66 62 33 63 62 33 35 38  esult {7fb3cb358
6090: 38 63 36 63 31 66 36 66 66 61 39 36 39 34 64 37  8c6c1f6ffa9694d7
60a0: 64 36 61 64 32 36 34 39 33 36 35 62 30 63 31 66  d6ad2649365b0c1f
60b0: 36 35 64 36 39 64 31 65 63 38 33 33 33 65 61 7d  65d69d1ec8333ea}
60c0: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
60d0: 4d 41 43 5f 54 43 33 2d 32 34 2e 32 20 7b 73 68  MAC_TC3-24.2 {sh
60e0: 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a256} -body {..:
60f0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
6100: 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24  st sha256 -key $
6110: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
6120: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37      } -result {7
6130: 37 33 65 61 39 31 65 33 36 38 30 30 65 34 36 38  73ea91e36800e468
6140: 35 34 64 62 38 65 62 64 30 39 31 38 31 61 37 32  54db8ebd09181a72
6150: 39 35 39 30 39 38 62 33 65 66 38 63 31 32 32 64  959098b3ef8c122d
6160: 39 36 33 35 35 31 34 63 65 64 35 36 35 66 65 7d  9635514ced565fe}
6170: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
6180: 4d 41 43 5f 54 43 33 2d 32 34 2e 33 20 7b 73 68  MAC_TC3-24.3 {sh
6190: 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a384} -body {..:
61a0: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
61b0: 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24  st sha384 -key $
61c0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
61d0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38      } -result {8
61e0: 38 30 36 32 36 30 38 64 33 65 36 61 64 38 61 30  8062608d3e6ad8a0
61f0: 61 61 32 61 63 65 30 31 34 63 38 61 38 36 66 30  aa2ace014c8a86f0
6200: 61 61 36 33 35 64 39 34 37 61 63 39 66 65 62 65  aa635d947ac9febe
6210: 38 33 65 66 34 65 35 35 39 36 36 31 34 34 62 32  83ef4e55966144b2
6220: 61 35 61 62 33 39 64 63 31 33 38 31 34 62 39 34  a5ab39dc13814b94
6230: 65 33 61 62 36 65 31 30 31 61 33 34 66 32 37 7d  e3ab6e101a34f27}
6240: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
6250: 4d 41 43 5f 54 43 33 2d 32 34 2e 34 20 7b 73 68  MAC_TC3-24.4 {sh
6260: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a512} -body {..:
6270: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
6280: 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24  st sha512 -key $
6290: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
62a0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66      } -result {f
62b0: 61 37 33 62 30 30 38 39 64 35 36 61 32 38 34 65  a73b0089d56a284e
62c0: 66 62 30 66 30 37 35 36 63 38 39 30 62 65 39 62  fb0f0756c890be9b
62d0: 31 62 35 64 62 64 64 38 65 65 38 31 61 33 36 35  1b5dbdd8ee81a365
62e0: 35 66 38 33 65 33 33 62 32 32 37 39 64 33 39 62  5f83e33b2279d39b
62f0: 66 33 65 38 34 38 32 37 39 61 37 32 32 63 38 30  f3e848279a722c80
6300: 36 62 34 38 35 61 34 37 65 36 37 63 38 30 37 62  6b485a47e67c807b
6310: 39 34 36 61 33 33 37 62 65 65 38 39 34 32 36 37  946a337bee894267
6320: 34 32 37 38 38 35 39 65 31 33 32 39 32 66 62 7d  4278859e13292fb}
6330: 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41  ..# RFC 4231 HMA
6340: 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20  C Examples Test 
6350: 43 61 73 65 20 23 34 20 2d 20 54 65 73 74 20 77  Case #4 - Test w
6360: 69 74 68 20 61 20 63 6f 6d 62 69 6e 65 64 20 6c  ith a combined l
6370: 65 6e 67 74 68 20 6f 66 20 6b 65 79 20 61 6e 64  ength of key and
6380: 20 64 61 74 61 20 74 68 61 74 20 69 73 20 6c 61   data that is la
6390: 72 67 65 72 20 74 68 61 6e 20 36 34 20 62 79 74  rger than 64 byt
63a0: 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65  es (= block-size
63b0: 20 6f 66 20 53 48 41 2d 32 32 34 20 61 6e 64 20   of SHA-224 and 
63c0: 53 48 41 2d 32 35 36 29 2e 0a 73 65 74 20 6b 65  SHA-256)..set ke
63d0: 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  y [binary decode
63e0: 20 68 65 78 20 22 30 31 30 32 30 33 30 34 30 35   hex "0102030405
63f0: 30 36 30 37 30 38 30 39 30 61 30 62 30 63 30 64  060708090a0b0c0d
6400: 30 65 30 66 31 30 31 31 31 32 31 33 31 34 31 35  0e0f101112131415
6410: 31 36 31 37 31 38 31 39 22 5d 0a 73 65 74 20 64  16171819"].set d
6420: 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  ata [binary deco
6430: 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72  de hex [string r
6440: 65 70 65 61 74 20 22 63 64 22 20 35 30 5d 5d 0a  epeat "cd" 50]].
6450: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
6460: 4d 41 43 5f 54 43 34 2d 32 35 2e 31 20 7b 73 68  MAC_TC4-25.1 {sh
6470: 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a224} -body {..:
6480: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
6490: 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24  st sha224 -key $
64a0: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
64b0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36      } -result {6
64c0: 63 31 31 35 30 36 38 37 34 30 31 33 63 61 63 36  c11506874013cac6
64d0: 61 32 61 62 63 31 62 62 33 38 32 36 32 37 63 65  a2abc1bb382627ce
64e0: 63 36 61 39 30 64 38 36 65 66 63 30 31 32 64 65  c6a90d86efc012de
64f0: 37 61 66 65 63 35 61 7d 0a 0a 74 65 73 74 20 52  7afec5a}..test R
6500: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 34 2d  FC4231_HMAC_TC4-
6510: 32 35 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62  25.2 {sha256} -b
6520: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
6530: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  ac -digest sha25
6540: 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  6 -key $key -dat
6550: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
6560: 65 73 75 6c 74 20 7b 38 32 35 35 38 61 33 38 39  esult {82558a389
6570: 61 34 34 33 63 30 65 61 34 63 63 38 31 39 38 39  a443c0ea4cc81989
6580: 39 66 32 30 38 33 61 38 35 66 30 66 61 61 33 65  9f2083a85f0faa3e
6590: 35 37 38 66 38 30 37 37 61 32 65 33 66 66 34 36  578f8077a2e3ff46
65a0: 37 32 39 36 36 35 62 7d 0a 0a 74 65 73 74 20 52  729665b}..test R
65b0: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 34 2d  FC4231_HMAC_TC4-
65c0: 32 35 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62  25.3 {sha384} -b
65d0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
65e0: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 33 38  ac -digest sha38
65f0: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
6600: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
6610: 65 73 75 6c 74 20 7b 33 65 38 61 36 39 62 37 37  esult {3e8a69b77
6620: 38 33 63 32 35 38 35 31 39 33 33 61 62 36 32 39  83c25851933ab629
6630: 30 61 66 36 63 61 37 37 61 39 39 38 31 34 38 30  0af6ca77a9981480
6640: 38 35 30 30 30 39 63 63 35 35 37 37 63 36 65 31  850009cc5577c6e1
6650: 66 35 37 33 62 34 65 36 38 30 31 64 64 32 33 63  f573b4e6801dd23c
6660: 34 61 37 64 36 37 39 63 63 66 38 61 33 38 36 63  4a7d679ccf8a386c
6670: 36 37 34 63 66 66 62 7d 0a 0a 74 65 73 74 20 52  674cffb}..test R
6680: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 34 2d  FC4231_HMAC_TC4-
6690: 32 35 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62  25.4 {sha512} -b
66a0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
66b0: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35 31  ac -digest sha51
66c0: 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  2 -key $key -dat
66d0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
66e0: 65 73 75 6c 74 20 7b 62 30 62 61 34 36 35 36 33  esult {b0ba46563
66f0: 37 34 35 38 63 36 39 39 30 65 35 61 38 63 35 66  7458c6990e5a8c5f
6700: 36 31 64 34 61 66 37 65 35 37 36 64 39 37 66 66  61d4af7e576d97ff
6710: 39 34 62 38 37 32 64 65 37 36 66 38 30 35 30 33  94b872de76f80503
6720: 36 31 65 65 33 64 62 61 39 31 63 61 35 63 31 31  61ee3dba91ca5c11
6730: 61 61 32 35 65 62 34 64 36 37 39 32 37 35 63 63  aa25eb4d679275cc
6740: 35 37 38 38 30 36 33 61 35 66 31 39 37 34 31 31  5788063a5f197411
6750: 32 30 63 34 66 32 64 65 32 61 64 65 62 65 62 31  20c4f2de2adebeb1
6760: 30 61 32 39 38 64 64 7d 0a 0a 23 20 52 46 43 20  0a298dd}..# RFC 
6770: 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70 6c  4231 HMAC Exampl
6780: 65 73 20 54 65 73 74 20 43 61 73 65 20 23 35 20  es Test Case #5 
6790: 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 74 72  - Test with a tr
67a0: 75 6e 63 61 74 69 6f 6e 20 6f 66 20 6f 75 74 70  uncation of outp
67b0: 75 74 20 74 6f 20 31 32 38 20 62 69 74 73 2e 0a  ut to 128 bits..
67c0: 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20  set key [binary 
67d0: 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69  decode hex [stri
67e0: 6e 67 20 72 65 70 65 61 74 20 22 30 63 22 20 32  ng repeat "0c" 2
67f0: 30 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 54 65  0]].set data "Te
6800: 73 74 20 57 69 74 68 20 54 72 75 6e 63 61 74 69  st With Truncati
6810: 6f 6e 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32  on"...test RFC42
6820: 33 31 5f 48 4d 41 43 5f 54 43 35 2d 32 36 2e 31  31_HMAC_TC5-26.1
6830: 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20   {sha224} -body 
6840: 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65 20  {..string range 
6850: 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  [::tls::hmac -di
6860: 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79  gest sha224 -key
6870: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
6880: 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d 72  a] 0 31.    } -r
6890: 65 73 75 6c 74 20 7b 30 65 32 61 65 61 36 38 61  esult {0e2aea68a
68a0: 39 30 63 38 64 33 37 63 39 38 38 62 63 64 62 39  90c8d37c988bcdb9
68b0: 66 63 61 36 66 61 38 7d 0a 0a 74 65 73 74 20 52  fca6fa8}..test R
68c0: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 35 2d  FC4231_HMAC_TC5-
68d0: 32 36 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62  26.2 {sha256} -b
68e0: 6f 64 79 20 7b 0a 09 73 74 72 69 6e 67 20 72 61  ody {..string ra
68f0: 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63  nge [::tls::hmac
6900: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
6910: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
6920: 24 64 61 74 61 5d 20 30 20 33 31 0a 20 20 20 20  $data] 0 31.    
6930: 7d 20 2d 72 65 73 75 6c 74 20 7b 61 33 62 36 31  } -result {a3b61
6940: 36 37 34 37 33 31 30 30 65 65 30 36 65 30 63 37  67473100ee06e0c7
6950: 39 36 63 32 39 35 35 35 35 32 62 7d 0a 0a 74 65  96c2955552b}..te
6960: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
6970: 54 43 35 2d 32 36 2e 33 20 7b 73 68 61 33 38 34  TC5-26.3 {sha384
6980: 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 74 72 69 6e  } -body {..strin
6990: 67 20 72 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a  g range [::tls::
69a0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
69b0: 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  384 -key $key -d
69c0: 61 74 61 20 24 64 61 74 61 5d 20 30 20 33 31 0a  ata $data] 0 31.
69d0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 33      } -result {3
69e0: 61 62 66 33 34 63 33 35 30 33 62 32 61 32 33 61  abf34c3503b2a23a
69f0: 34 36 65 66 63 36 31 39 62 61 65 66 38 39 37 7d  46efc619baef897}
6a00: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
6a10: 4d 41 43 5f 54 43 35 2d 32 36 2e 34 20 7b 73 68  MAC_TC5-26.4 {sh
6a20: 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 73  a512} -body {..s
6a30: 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74  tring range [::t
6a40: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
6a50: 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65   sha512 -key $ke
6a60: 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20 30  y -data $data] 0
6a70: 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c   31.    } -resul
6a80: 74 20 7b 34 31 35 66 61 64 36 32 37 31 35 38 30  t {415fad6271580
6a90: 61 35 33 31 64 34 31 37 39 62 63 38 39 31 64 38  a531d4179bc891d8
6aa0: 37 61 36 7d 0a 0a 23 20 52 46 43 20 34 32 33 31  7a6}..# RFC 4231
6ab0: 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54   HMAC Examples T
6ac0: 65 73 74 20 43 61 73 65 20 23 36 20 2d 20 54 65  est Case #6 - Te
6ad0: 73 74 20 77 69 74 68 20 61 20 6b 65 79 20 6c 61  st with a key la
6ae0: 72 67 65 72 20 74 68 61 6e 20 31 32 38 20 62 79  rger than 128 by
6af0: 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a  tes (= block-siz
6b00: 65 20 6f 66 20 53 48 41 2d 33 38 34 20 61 6e 64  e of SHA-384 and
6b10: 20 53 48 41 2d 35 31 32 29 2e 0a 73 65 74 20 6b   SHA-512)..set k
6b20: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ey [binary decod
6b30: 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65  e hex [string re
6b40: 70 65 61 74 20 22 61 61 22 20 31 33 31 5d 5d 0a  peat "aa" 131]].
6b50: 73 65 74 20 64 61 74 61 20 22 54 65 73 74 20 55  set data "Test U
6b60: 73 69 6e 67 20 4c 61 72 67 65 72 20 54 68 61 6e  sing Larger Than
6b70: 20 42 6c 6f 63 6b 2d 53 69 7a 65 20 4b 65 79 20   Block-Size Key 
6b80: 2d 20 48 61 73 68 20 4b 65 79 20 46 69 72 73 74  - Hash Key First
6b90: 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  "...test RFC4231
6ba0: 5f 48 4d 41 43 5f 54 43 36 2d 32 37 2e 31 20 7b  _HMAC_TC6-27.1 {
6bb0: 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a  sha224} -body {.
6bc0: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
6bd0: 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79  gest sha224 -key
6be0: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
6bf0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
6c00: 7b 39 35 65 39 61 30 64 62 39 36 32 30 39 35 61  {95e9a0db962095a
6c10: 64 61 65 62 65 39 62 32 64 36 66 30 64 62 63 65  daebe9b2d6f0dbce
6c20: 32 64 34 39 39 66 31 31 32 66 32 64 32 62 37 32  2d499f112f2d2b72
6c30: 37 33 66 61 36 38 37 30 65 7d 0a 0a 74 65 73 74  73fa6870e}..test
6c40: 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43   RFC4231_HMAC_TC
6c50: 36 2d 32 37 2e 32 20 7b 73 68 61 32 35 36 7d 20  6-27.2 {sha256} 
6c60: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
6c70: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
6c80: 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  256 -key $key -d
6c90: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
6ca0: 2d 72 65 73 75 6c 74 20 7b 36 30 65 34 33 31 35  -result {60e4315
6cb0: 39 31 65 65 30 62 36 37 66 30 64 38 61 32 36 61  91ee0b67f0d8a26a
6cc0: 61 63 62 66 35 62 37 37 66 38 65 30 62 63 36 32  acbf5b77f8e0bc62
6cd0: 31 33 37 32 38 63 35 31 34 30 35 34 36 30 34 30  13728c5140546040
6ce0: 66 30 65 65 33 37 66 35 34 7d 0a 0a 74 65 73 74  f0ee37f54}..test
6cf0: 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43   RFC4231_HMAC_TC
6d00: 36 2d 32 37 2e 33 20 7b 73 68 61 33 38 34 7d 20  6-27.3 {sha384} 
6d10: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
6d20: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
6d30: 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  384 -key $key -d
6d40: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
6d50: 2d 72 65 73 75 6c 74 20 7b 34 65 63 65 30 38 34  -result {4ece084
6d60: 34 38 35 38 31 33 65 39 30 38 38 64 32 63 36 33  485813e9088d2c63
6d70: 61 30 34 31 62 63 35 62 34 34 66 39 65 66 31 30  a041bc5b44f9ef10
6d80: 31 32 61 32 62 35 38 38 66 33 63 64 31 31 66 30  12a2b588f3cd11f0
6d90: 35 30 33 33 61 63 34 63 36 30 63 32 65 66 36 61  5033ac4c60c2ef6a
6da0: 62 34 30 33 30 66 65 38 32 39 36 32 34 38 64 66  b4030fe8296248df
6db0: 31 36 33 66 34 34 39 35 32 7d 0a 0a 74 65 73 74  163f44952}..test
6dc0: 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43   RFC4231_HMAC_TC
6dd0: 36 2d 32 37 2e 34 20 7b 73 68 61 35 31 32 7d 20  6-27.4 {sha512} 
6de0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
6df0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
6e00: 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  512 -key $key -d
6e10: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
6e20: 2d 72 65 73 75 6c 74 20 7b 38 30 62 32 34 32 36  -result {80b2426
6e30: 33 63 37 63 31 61 33 65 62 62 37 31 34 39 33 63  3c7c1a3ebb71493c
6e40: 31 64 64 37 62 65 38 62 34 39 62 34 36 64 31 66  1dd7be8b49b46d1f
6e50: 34 31 62 34 61 65 65 63 31 31 32 31 62 30 31 33  41b4aeec1121b013
6e60: 37 38 33 66 38 66 33 35 32 36 62 35 36 64 30 33  783f8f3526b56d03
6e70: 37 65 30 35 66 32 35 39 38 62 64 30 66 64 32 32  7e05f2598bd0fd22
6e80: 31 35 64 36 61 31 65 35 32 39 35 65 36 34 66 37  15d6a1e5295e64f7
6e90: 33 66 36 33 66 30 61 65 63 38 62 39 31 35 61 39  3f63f0aec8b915a9
6ea0: 38 35 64 37 38 36 35 39 38 7d 0a 0a 23 20 52 46  85d786598}..# RF
6eb0: 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d  C 4231 HMAC Exam
6ec0: 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 20 23  ples Test Case #
6ed0: 37 20 2d 20 54 65 73 74 20 77 69 74 68 20 61 20  7 - Test with a 
6ee0: 6b 65 79 20 61 6e 64 20 64 61 74 61 20 74 68 61  key and data tha
6ef0: 74 20 69 73 20 6c 61 72 67 65 72 20 74 68 61 6e  t is larger than
6f00: 20 31 32 38 20 62 79 74 65 73 20 28 3d 20 62 6c   128 bytes (= bl
6f10: 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d  ock-size of SHA-
6f20: 33 38 34 20 61 6e 64 20 53 48 41 2d 35 31 32 29  384 and SHA-512)
6f30: 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72  ..set key [binar
6f40: 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74  y decode hex [st
6f50: 72 69 6e 67 20 72 65 70 65 61 74 20 22 61 61 22  ring repeat "aa"
6f60: 20 31 33 31 5d 5d 0a 73 65 74 20 64 61 74 61 20   131]].set data 
6f70: 22 54 68 69 73 20 69 73 20 61 20 74 65 73 74 20  "This is a test 
6f80: 75 73 69 6e 67 20 61 20 6c 61 72 67 65 72 20 74  using a larger t
6f90: 68 61 6e 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6b  han block-size k
6fa0: 65 79 20 61 6e 64 20 61 20 6c 61 72 67 65 72 20  ey and a larger 
6fb0: 74 68 61 6e 20 62 6c 6f 63 6b 2d 73 69 7a 65 20  than block-size 
6fc0: 64 61 74 61 2e 20 54 68 65 20 6b 65 79 20 6e 65  data. The key ne
6fd0: 65 64 73 20 74 6f 20 62 65 20 68 61 73 68 65 64  eds to be hashed
6fe0: 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20 75 73   before being us
6ff0: 65 64 20 62 79 20 74 68 65 20 48 4d 41 43 20 61  ed by the HMAC a
7000: 6c 67 6f 72 69 74 68 6d 2e 22 0a 0a 0a 74 65 73  lgorithm."...tes
7010: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
7020: 43 37 2d 32 38 2e 31 20 7b 73 68 61 32 32 34 7d  C7-28.1 {sha224}
7030: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
7040: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
7050: 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a224 -key $key -
7060: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
7070: 20 2d 72 65 73 75 6c 74 20 7b 33 61 38 35 34 31   -result {3a8541
7080: 36 36 61 63 35 64 39 66 30 32 33 66 35 34 64 35  66ac5d9f023f54d5
7090: 31 37 64 30 62 33 39 64 62 64 39 34 36 37 37 30  17d0b39dbd946770
70a0: 64 62 39 63 32 62 39 35 63 39 66 36 66 35 36 35  db9c2b95c9f6f565
70b0: 64 31 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  d1}..test RFC423
70c0: 31 5f 48 4d 41 43 5f 54 43 37 2d 32 38 2e 32 20  1_HMAC_TC7-28.2 
70d0: 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b  {sha256} -body {
70e0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
70f0: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65  igest sha256 -ke
7100: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
7110: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
7120: 20 7b 39 62 30 39 66 66 61 37 31 62 39 34 32 66   {9b09ffa71b942f
7130: 63 62 32 37 36 33 35 66 62 63 64 35 62 30 65 39  cb27635fbcd5b0e9
7140: 34 34 62 66 64 63 36 33 36 34 34 66 30 37 31 33  44bfdc63644f0713
7150: 39 33 38 61 37 66 35 31 35 33 35 63 33 61 33 35  938a7f51535c3a35
7160: 65 32 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  e2}..test RFC423
7170: 31 5f 48 4d 41 43 5f 54 43 37 2d 32 38 2e 33 20  1_HMAC_TC7-28.3 
7180: 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b  {sha384} -body {
7190: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
71a0: 69 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65  igest sha384 -ke
71b0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
71c0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
71d0: 20 7b 36 36 31 37 31 37 38 65 39 34 31 66 30 32   {6617178e941f02
71e0: 30 64 33 35 31 65 32 66 32 35 34 65 38 66 64 33  0d351e2f254e8fd3
71f0: 32 63 36 30 32 34 32 30 66 65 62 30 62 38 66 62  2c602420feb0b8fb
7200: 39 61 64 63 63 65 62 62 38 32 34 36 31 65 39 39  9adccebb82461e99
7210: 63 35 61 36 37 38 63 63 33 31 65 37 39 39 31 37  c5a678cc31e79917
7220: 36 64 33 38 36 30 65 36 31 31 30 63 34 36 35 32  6d3860e6110c4652
7230: 33 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  3e}..test RFC423
7240: 31 5f 48 4d 41 43 5f 54 43 37 2d 32 38 2e 34 20  1_HMAC_TC7-28.4 
7250: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
7260: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
7270: 69 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65  igest sha512 -ke
7280: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
7290: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
72a0: 20 7b 65 33 37 62 36 61 37 37 35 64 63 38 37 64   {e37b6a775dc87d
72b0: 62 61 61 34 64 66 61 39 66 39 36 65 35 65 33 66  baa4dfa9f96e5e3f
72c0: 66 64 64 65 62 64 37 31 66 38 38 36 37 32 38 39  fddebd71f8867289
72d0: 38 36 35 64 66 35 61 33 32 64 32 30 63 64 63 39  865df5a32d20cdc9
72e0: 34 34 62 36 30 32 32 63 61 63 33 63 34 39 38 32  44b6022cac3c4982
72f0: 62 31 30 64 35 65 65 62 35 35 63 33 65 34 64 65  b10d5eeb55c3e4de
7300: 31 35 31 33 34 36 37 36 66 62 36 64 65 30 34 34  15134676fb6de044
7310: 36 30 36 35 63 39 37 34 34 30 66 61 38 63 36 61  6065c97440fa8c6a
7320: 35 38 7d 0a 0a 23 20 4e 49 53 54 20 38 30 30 2d  58}..# NIST 800-
7330: 33 38 62 20 52 65 63 6f 6d 6d 65 6e 64 61 74 69  38b Recommendati
7340: 6f 6e 20 66 6f 72 20 42 6c 6f 63 6b 20 43 69 70  on for Block Cip
7350: 68 65 72 20 4d 6f 64 65 73 20 6f 66 20 4f 70 65  her Modes of Ope
7360: 72 61 74 69 6f 6e 3a 20 54 68 65 20 43 4d 41 43  ration: The CMAC
7370: 20 4d 6f 64 65 20 66 6f 72 20 41 75 74 68 65 6e   Mode for Authen
7380: 74 69 63 61 74 69 6f 6e 0a 23 20 41 45 53 2d 31  tication.# AES-1
7390: 32 38 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61  28.set key [bina
73a0: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 32  ry decode hex "2
73b0: 62 37 65 31 35 31 36 32 38 61 65 64 32 61 36 61  b7e151628aed2a6a
73c0: 62 66 37 31 35 38 38 30 39 63 66 34 66 33 63 22  bf7158809cf4f3c"
73d0: 5d 0a 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30  ]...test NIST800
73e0: 2d 33 38 62 2d 41 45 53 31 32 38 2d 32 39 2e 31  -38b-AES128-29.1
73f0: 20 7b 6c 65 6e 3d 30 7d 20 2d 62 6f 64 79 20 7b   {len=0} -body {
7400: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63  ..::tls::cmac -c
7410: 69 70 68 65 72 20 61 65 73 2d 31 32 38 2d 63 62  ipher aes-128-cb
7420: 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  c -key $key -dat
7430: 61 20 22 22 0a 20 20 20 20 7d 20 2d 72 65 73 75  a "".    } -resu
7440: 6c 74 20 7b 62 62 31 64 36 39 32 39 65 39 35 39  lt {bb1d6929e959
7450: 33 37 32 38 37 66 61 33 37 64 31 32 39 62 37 35  37287fa37d129b75
7460: 36 37 34 36 7d 0a 73 65 74 20 64 61 74 61 20 5b  6746}.set data [
7470: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
7480: 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39  x "6bc1bee22e409
7490: 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31  f96e93d7e1173931
74a0: 37 32 61 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54  72a"]..test NIST
74b0: 38 30 30 2d 33 38 62 2d 41 45 53 31 32 38 2d 32  800-38b-AES128-2
74c0: 39 2e 32 20 7b 6c 65 6e 3d 31 32 38 7d 20 2d 62  9.2 {len=128} -b
74d0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
74e0: 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 31  ac -cipher aes-1
74f0: 32 38 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79  28-cbc -key $key
7500: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
7510: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30 37 30 61   } -result {070a
7520: 31 36 62 34 36 62 34 64 34 31 34 34 66 37 39 62  16b46b4d4144f79b
7530: 64 64 39 64 64 30 34 61 32 38 37 63 7d 0a 73 65  dd9dd04a287c}.se
7540: 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64  t data [binary d
7550: 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62  ecode hex "6bc1b
7560: 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37  ee22e409f96e93d7
7570: 65 31 31 37 33 39 33 31 37 32 61 61 65 32 64 38  e117393172aae2d8
7580: 61 35 37 31 65 30 33 61 63 39 63 39 65 62 37 36  a571e03ac9c9eb76
7590: 66 61 63 34 35 61 66 38 65 35 31 33 30 63 38 31  fac45af8e5130c81
75a0: 63 34 36 61 33 35 63 65 34 31 31 22 5d 0a 0a 74  c46a35ce411"]..t
75b0: 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d  est NIST800-38b-
75c0: 41 45 53 31 32 38 2d 32 39 2e 33 20 7b 6c 65 6e  AES128-29.3 {len
75d0: 3d 33 32 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  =320} -body {..:
75e0: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68  :tls::cmac -ciph
75f0: 65 72 20 61 65 73 2d 31 32 38 2d 63 62 63 20 2d  er aes-128-cbc -
7600: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
7610: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
7620: 6c 74 20 7b 64 66 61 36 36 37 34 37 64 65 39 61  lt {dfa66747de9a
7630: 65 36 33 30 33 30 63 61 33 32 36 31 31 34 39 37  e63030ca32611497
7640: 63 38 32 37 7d 0a 73 65 74 20 64 61 74 61 20 5b  c827}.set data [
7650: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
7660: 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39  x "6bc1bee22e409
7670: 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31  f96e93d7e1173931
7680: 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33 61  72aae2d8a571e03a
7690: 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66 38  c9c9eb76fac45af8
76a0: 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63 65  e5130c81c46a35ce
76b0: 34 31 31 65 35 66 62 63 31 31 39 31 61 30 61 35  411e5fbc1191a0a5
76c0: 32 65 66 66 36 39 66 32 34 34 35 64 66 34 66 39  2eff69f2445df4f9
76d0: 62 31 37 61 64 32 62 34 31 37 62 65 36 36 63 33  b17ad2b417be66c3
76e0: 37 31 30 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54  710"]..test NIST
76f0: 38 30 30 2d 33 38 62 2d 41 45 53 31 32 38 2d 32  800-38b-AES128-2
7700: 39 2e 34 20 7b 6c 65 6e 3d 35 31 32 7d 20 2d 62  9.4 {len=512} -b
7710: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
7720: 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 31  ac -cipher aes-1
7730: 32 38 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79  28-cbc -key $key
7740: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
7750: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35 31 66 30   } -result {51f0
7760: 62 65 62 66 37 65 33 62 39 64 39 32 66 63 34 39  bebf7e3b9d92fc49
7770: 37 34 31 37 37 39 33 36 33 63 66 65 7d 0a 0a 23  741779363cfe}..#
7780: 20 41 45 53 2d 31 39 32 0a 73 65 74 20 6b 65 79   AES-192.set key
7790: 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20   [binary decode 
77a0: 68 65 78 20 22 38 65 37 33 62 30 66 37 64 61 30  hex "8e73b0f7da0
77b0: 65 36 34 35 32 63 38 31 30 66 33 32 62 38 30 39  e6452c810f32b809
77c0: 30 37 39 65 35 36 32 66 38 65 61 64 32 35 32 32  079e562f8ead2522
77d0: 63 36 62 37 62 22 5d 0a 0a 0a 74 65 73 74 20 4e  c6b7b"]...test N
77e0: 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 31  IST800-38b-AES-1
77f0: 39 32 2d 33 30 2e 31 20 7b 6c 65 6e 3d 30 7d 20  92-30.1 {len=0} 
7800: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
7810: 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73  cmac -cipher aes
7820: 2d 31 39 32 2d 63 62 63 20 2d 6b 65 79 20 24 6b  -192-cbc -key $k
7830: 65 79 20 2d 64 61 74 61 20 22 22 0a 20 20 20 20  ey -data "".    
7840: 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 64 64  } -result {d17dd
7850: 66 34 36 61 64 61 61 63 64 65 35 33 31 63 61 63  f46adaacde531cac
7860: 34 38 33 64 65 37 61 39 33 36 37 7d 0a 73 65 74  483de7a9367}.set
7870: 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65   data [binary de
7880: 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62 65  code hex "6bc1be
7890: 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37 65  e22e409f96e93d7e
78a0: 31 31 37 33 39 33 31 37 32 61 22 5d 0a 0a 74 65  117393172a"]..te
78b0: 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41  st NIST800-38b-A
78c0: 45 53 2d 31 39 32 2d 33 30 2e 32 20 7b 6c 65 6e  ES-192-30.2 {len
78d0: 3d 31 32 38 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  =128} -body {..:
78e0: 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68  :tls::cmac -ciph
78f0: 65 72 20 61 65 73 2d 31 39 32 2d 63 62 63 20 2d  er aes-192-cbc -
7900: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
7910: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
7920: 6c 74 20 7b 39 65 39 39 61 37 62 66 33 31 65 37  lt {9e99a7bf31e7
7930: 31 30 39 30 30 36 36 32 66 36 35 65 36 31 37 63  10900662f65e617c
7940: 35 31 38 34 7d 0a 73 65 74 20 64 61 74 61 20 5b  5184}.set data [
7950: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
7960: 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39  x "6bc1bee22e409
7970: 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31  f96e93d7e1173931
7980: 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33 61  72aae2d8a571e03a
7990: 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66 38  c9c9eb76fac45af8
79a0: 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63 65  e5130c81c46a35ce
79b0: 34 31 31 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54  411"]..test NIST
79c0: 38 30 30 2d 33 38 62 2d 41 45 53 2d 31 39 32 2d  800-38b-AES-192-
79d0: 33 30 2e 33 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d  30.3 {len=320} -
79e0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
79f0: 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d  mac -cipher aes-
7a00: 31 39 32 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65  192-cbc -key $ke
7a10: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
7a20: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 61 31    } -result {8a1
7a30: 64 65 35 62 65 32 65 62 33 31 61 61 64 30 38 39  de5be2eb31aad089
7a40: 61 38 32 65 36 65 65 39 30 38 62 30 65 7d 0a 73  a82e6ee908b0e}.s
7a50: 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20  et data [binary 
7a60: 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31  decode hex "6bc1
7a70: 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64  bee22e409f96e93d
7a80: 37 65 31 31 37 33 39 33 31 37 32 61 61 65 32 64  7e117393172aae2d
7a90: 38 61 35 37 31 65 30 33 61 63 39 63 39 65 62 37  8a571e03ac9c9eb7
7aa0: 36 66 61 63 34 35 61 66 38 65 35 31 33 30 63 38  6fac45af8e5130c8
7ab0: 31 63 34 36 61 33 35 63 65 34 31 31 65 35 66 62  1c46a35ce411e5fb
7ac0: 63 31 31 39 31 61 30 61 35 32 65 66 66 36 39 66  c1191a0a52eff69f
7ad0: 32 34 34 35 64 66 34 66 39 62 31 37 61 64 32 62  2445df4f9b17ad2b
7ae0: 34 31 37 62 65 36 36 63 33 37 31 30 22 5d 0a 0a  417be66c3710"]..
7af0: 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62  test NIST800-38b
7b00: 2d 41 45 53 2d 31 39 32 2d 33 30 2e 34 20 7b 6c  -AES-192-30.4 {l
7b10: 65 6e 3d 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a  en=512} -body {.
7b20: 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69  .::tls::cmac -ci
7b30: 70 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62 63  pher aes-192-cbc
7b40: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
7b50: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65   $data.    } -re
7b60: 73 75 6c 74 20 7b 61 31 64 35 64 66 30 65 65 64  sult {a1d5df0eed
7b70: 37 39 30 66 37 39 34 64 37 37 35 38 39 36 35 39  790f794d77589659
7b80: 66 33 39 61 31 31 7d 0a 0a 23 20 41 45 53 2d 32  f39a11}..# AES-2
7b90: 35 36 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61  56.set key [bina
7ba0: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36  ry decode hex "6
7bb0: 30 33 64 65 62 31 30 31 35 63 61 37 31 62 65 32  03deb1015ca71be2
7bc0: 62 37 33 61 65 66 30 38 35 37 64 37 37 38 31 31  b73aef0857d77811
7bd0: 66 33 35 32 63 30 37 33 62 36 31 30 38 64 37 32  f352c073b6108d72
7be0: 64 39 38 31 30 61 33 30 39 31 34 64 66 66 34 22  d9810a30914dff4"
7bf0: 5d 0a 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30  ]...test NIST800
7c00: 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d 33 31 2e  -38b-AES-256-31.
7c10: 31 20 7b 6c 65 6e 3d 30 7d 20 2d 62 6f 64 79 20  1 {len=0} -body 
7c20: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d  {..::tls::cmac -
7c30: 63 69 70 68 65 72 20 61 65 73 2d 32 35 36 2d 63  cipher aes-256-c
7c40: 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  bc -key $key -da
7c50: 74 61 20 22 22 0a 20 20 20 20 7d 20 2d 72 65 73  ta "".    } -res
7c60: 75 6c 74 20 7b 30 32 38 39 36 32 66 36 31 62 37  ult {028962f61b7
7c70: 62 66 38 39 65 66 63 36 62 35 35 31 66 34 36 36  bf89efc6b551f466
7c80: 37 64 39 38 33 7d 0a 73 65 74 20 64 61 74 61 20  7d983}.set data 
7c90: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
7ca0: 65 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30  ex "6bc1bee22e40
7cb0: 39 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33  9f96e93d7e117393
7cc0: 31 37 32 61 22 5d 0a 0a 74 65 73 74 20 4e 49 53  172a"]..test NIS
7cd0: 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 32 35 36  T800-38b-AES-256
7ce0: 2d 33 31 2e 32 20 7b 6c 65 6e 3d 31 32 38 7d 20  -31.2 {len=128} 
7cf0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
7d00: 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73  cmac -cipher aes
7d10: 2d 32 35 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b  -256-cbc -key $k
7d20: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
7d30: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 32 38     } -result {28
7d40: 61 37 30 32 33 66 34 35 32 65 38 66 38 32 62 64  a7023f452e8f82bd
7d50: 34 62 66 32 38 64 38 63 33 37 63 33 35 63 7d 0a  4bf28d8c37c35c}.
7d60: 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79  set data [binary
7d70: 20 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63   decode hex "6bc
7d80: 31 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33  1bee22e409f96e93
7d90: 64 37 65 31 31 37 33 39 33 31 37 32 61 61 65 32  d7e117393172aae2
7da0: 64 38 61 35 37 31 65 30 33 61 63 39 63 39 65 62  d8a571e03ac9c9eb
7db0: 37 36 66 61 63 34 35 61 66 38 65 35 31 33 30 63  76fac45af8e5130c
7dc0: 38 31 63 34 36 61 33 35 63 65 34 31 31 22 5d 0a  81c46a35ce411"].
7dd0: 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38  .test NIST800-38
7de0: 62 2d 41 45 53 2d 32 35 36 2d 33 31 2e 33 20 7b  b-AES-256-31.3 {
7df0: 6c 65 6e 3d 33 32 30 7d 20 2d 62 6f 64 79 20 7b  len=320} -body {
7e00: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63  ..::tls::cmac -c
7e10: 69 70 68 65 72 20 61 65 73 2d 32 35 36 2d 63 62  ipher aes-256-cb
7e20: 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  c -key $key -dat
7e30: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
7e40: 65 73 75 6c 74 20 7b 61 61 66 33 64 38 66 31 64  esult {aaf3d8f1d
7e50: 65 35 36 34 30 63 32 33 32 66 35 62 31 36 39 62  e5640c232f5b169b
7e60: 39 63 39 31 31 65 36 7d 0a 73 65 74 20 64 61 74  9c911e6}.set dat
7e70: 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  a [binary decode
7e80: 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32 65   hex "6bc1bee22e
7e90: 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37 33  409f96e93d7e1173
7ea0: 39 33 31 37 32 61 61 65 32 64 38 61 35 37 31 65  93172aae2d8a571e
7eb0: 30 33 61 63 39 63 39 65 62 37 36 66 61 63 34 35  03ac9c9eb76fac45
7ec0: 61 66 38 65 35 31 33 30 63 38 31 63 34 36 61 33  af8e5130c81c46a3
7ed0: 35 63 65 34 31 31 65 35 66 62 63 31 31 39 31 61  5ce411e5fbc1191a
7ee0: 30 61 35 32 65 66 66 36 39 66 32 34 34 35 64 66  0a52eff69f2445df
7ef0: 34 66 39 62 31 37 61 64 32 62 34 31 37 62 65 36  4f9b17ad2b417be6
7f00: 36 63 33 37 31 30 22 5d 0a 0a 74 65 73 74 20 4e  6c3710"]..test N
7f10: 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 32  IST800-38b-AES-2
7f20: 35 36 2d 33 31 2e 34 20 7b 6c 65 6e 3d 35 31 32  56-31.4 {len=512
7f30: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
7f40: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61  ::cmac -cipher a
7f50: 65 73 2d 32 35 36 2d 63 62 63 20 2d 6b 65 79 20  es-256-cbc -key 
7f60: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
7f70: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
7f80: 65 31 39 39 32 31 39 30 35 34 39 66 36 65 64 35  e1992190549f6ed5
7f90: 36 39 36 61 32 63 30 35 36 63 33 31 35 34 31 30  696a2c056c315410
7fa0: 7d 0a 0a 23 20 43 6c 65 61 6e 75 70 0a 3a 3a 74  }..# Cleanup.::t
7fb0: 63 6c 74 65 73 74 3a 3a 72 65 6d 6f 76 65 46 69  cltest::removeFi
7fc0: 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 3a 3a  le $test_file.::
7fd0: 74 63 6c 74 65 73 74 3a 3a 72 65 6d 6f 76 65 46  tcltest::removeF
7fe0: 69 6c 65 20 24 74 65 73 74 5f 61 6c 74 5f 66 69  ile $test_alt_fi
7ff0: 6c 65 0a 0a 23 20 43 6c 65 61 6e 75 70 0a 3a 3a  le..# Cleanup.::
8000: 74 63 6c 74 65 73 74 3a 3a 63 6c 65 61 6e 75 70  tcltest::cleanup
8010: 54 65 73 74 73 0a 72 65 74 75 72 6e 0a           Tests.return.