Hex Artifact Content

Artifact c72f5245d13352ee23f49eb2b839b2918435780f11e8fb415b32e9e4fcfa5ce6:


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 62 69 6e 61  t be -bin, -bina
2570: 72 79 2c 20 2d 68 65 78 2c 20 2d 68 65 78 61 64  ry, -hex, -hexad
2580: 65 63 69 6d 61 6c 2c 20 2d 63 68 61 6e 2c 20 2d  ecimal, -chan, -
2590: 63 68 61 6e 6e 65 6c 2c 20 2d 63 69 70 68 65 72  channel, -cipher
25a0: 2c 20 2d 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74  , -command, -dat
25b0: 61 2c 20 2d 64 69 67 65 73 74 2c 20 2d 66 69 6c  a, -digest, -fil
25c0: 65 2c 20 2d 66 69 6c 65 6e 61 6d 65 2c 20 2d 68  e, -filename, -h
25d0: 61 73 68 2c 20 2d 6b 65 79 2c 20 6f 72 20 2d 6d  ash, -key, or -m
25e0: 61 63 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ac} -returnCodes
25f0: 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72   {1}..test MD_Er
2600: 72 6f 72 73 2d 38 2e 37 20 7b 49 6e 76 61 6c 69  rors-8.7 {Invali
2610: 64 20 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a  d file} -body {.
2620: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
2630: 73 74 20 73 68 61 32 35 36 20 2d 66 69 6c 65 20  st sha256 -file 
2640: 62 6f 67 75 73 0a 20 20 20 20 7d 20 2d 72 65 73  bogus.    } -res
2650: 75 6c 74 20 7b 63 6f 75 6c 64 6e 27 74 20 6f 70  ult {couldn't op
2660: 65 6e 20 22 62 6f 67 75 73 22 3a 20 6e 6f 20 73  en "bogus": no s
2670: 75 63 68 20 66 69 6c 65 20 6f 72 20 64 69 72 65  uch file or dire
2680: 63 74 6f 72 79 7d 20 2d 72 65 74 75 72 6e 43 6f  ctory} -returnCo
2690: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 44  des {1}..test MD
26a0: 5f 45 72 72 6f 72 73 2d 38 2e 38 20 7b 49 6e 76  _Errors-8.8 {Inv
26b0: 61 6c 69 64 20 63 68 61 6e 6e 65 6c 7d 20 2d 62  alid channel} -b
26c0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
26d0: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
26e0: 2d 63 68 61 6e 6e 65 6c 20 62 6f 67 75 73 0a 20  -channel bogus. 
26f0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 63 61     } -result {ca
2700: 6e 20 6e 6f 74 20 66 69 6e 64 20 63 68 61 6e 6e  n not find chann
2710: 65 6c 20 6e 61 6d 65 64 20 22 62 6f 67 75 73 22  el named "bogus"
2720: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
2730: 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f  1}..test MD_Erro
2740: 72 73 2d 38 2e 39 20 7b 4e 6f 20 6f 70 65 72 61  rs-8.9 {No opera
2750: 74 69 6f 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  tion} -body {..:
2760: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
2770: 20 73 68 61 32 35 36 20 2d 62 69 6e 0a 20 20 20   sha256 -bin.   
2780: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f 20 6f   } -result {No o
2790: 70 65 72 61 74 69 6f 6e 20 73 70 65 63 69 66 69  peration specifi
27a0: 65 64 3a 20 55 73 65 20 2d 63 68 61 6e 6e 65 6c  ed: Use -channel
27b0: 2c 20 2d 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74  , -command, -dat
27c0: 61 2c 20 6f 72 20 2d 66 69 6c 65 20 6f 70 74 69  a, or -file opti
27d0: 6f 6e 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  on} -returnCodes
27e0: 20 7b 31 7d 0a 0a 0a 23 20 54 65 73 74 20 43 4d   {1}...# Test CM
27f0: 41 43 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 20 74  AC command.set t
2800: 65 73 74 5f 63 69 70 68 65 72 20 22 61 65 73 2d  est_cipher "aes-
2810: 31 32 38 2d 63 62 63 22 0a 73 65 74 20 74 65 73  128-cbc".set tes
2820: 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65 20 6b  t_key "Example k
2830: 65 79 20 31 32 33 34 22 0a 0a 0a 74 65 73 74 20  ey 1234"...test 
2840: 43 4d 41 43 2d 39 2e 31 20 7b 64 61 74 61 7d 20  CMAC-9.1 {data} 
2850: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
2860: 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74 65  cmac -cipher $te
2870: 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24  st_cipher -key $
2880: 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24  test_key -data $
2890: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
28a0: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
28b0: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
28c0: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
28d0: 20 43 4d 41 43 2d 39 2e 32 20 7b 66 69 6c 65 7d   CMAC-9.2 {file}
28e0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
28f0: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74  :cmac -cipher $t
2900: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20  est_cipher -key 
2910: 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20  $test_key -file 
2920: 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d  $test_file.    }
2930: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
2940: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
2950: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73  7efdfe52fa}..tes
2960: 74 20 43 4d 41 43 2d 39 2e 33 20 7b 63 68 61 6e  t CMAC-9.3 {chan
2970: 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  nel} -body {..di
2980: 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a  gest_read_chan :
2990: 3a 74 6c 73 3a 3a 63 6d 61 63 20 24 74 65 73 74  :tls::cmac $test
29a0: 5f 66 69 6c 65 20 2d 63 69 70 68 65 72 20 24 74  _file -cipher $t
29b0: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20  est_cipher -key 
29c0: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20  $test_key.    } 
29d0: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
29e0: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
29f0: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
2a00: 20 43 4d 41 43 2d 39 2e 34 20 7b 63 6f 6d 6d 61   CMAC-9.4 {comma
2a10: 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  nd} -body {..dig
2a20: 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24  est_accumulate $
2a30: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a  test_data ::tls:
2a40: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 24 74  :cmac -cipher $t
2a50: 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20  est_cipher -key 
2a60: 24 74 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20  $test_key.    } 
2a70: 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30  -result {baf5c20
2a80: 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37  f9973e2d606b14c7
2a90: 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74  efdfe52fa}..test
2aa0: 20 43 4d 41 43 2d 39 2e 35 20 7b 64 61 74 61 20   CMAC-9.5 {data 
2ab0: 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69  bin} -body {..bi
2ac0: 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20  nary encode hex 
2ad0: 5b 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 62 69  [::tls::cmac -bi
2ae0: 6e 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  n -cipher $test_
2af0: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
2b00: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73  t_key -data $tes
2b10: 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72  t_data].    } -r
2b20: 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39  esult {baf5c20f9
2b30: 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66  973e2d606b14c7ef
2b40: 64 66 65 35 32 66 61 7d 0a 0a 23 20 54 65 73 74  dfe52fa}..# Test
2b50: 20 4d 44 20 43 4d 41 43 0a 0a 0a 74 65 73 74 20   MD CMAC...test 
2b60: 4d 44 5f 43 4d 41 43 2d 31 30 2e 31 20 7b 64 61  MD_CMAC-10.1 {da
2b70: 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  ta} -body {..::t
2b80: 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 24  ls::md -cipher $
2b90: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2ba0: 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61   $test_key -data
2bb0: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
2bc0: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63  } -result {baf5c
2bd0: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34  20f9973e2d606b14
2be0: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65  c7efdfe52fa}..te
2bf0: 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 32 20  st MD_CMAC-10.2 
2c00: 7b 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09  {file} -body {..
2c10: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65  ::tls::md -ciphe
2c20: 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d  r $test_cipher -
2c30: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66  key $test_key -f
2c40: 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20  ile $test_file. 
2c50: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61     } -result {ba
2c60: 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36  f5c20f9973e2d606
2c70: 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a  b14c7efdfe52fa}.
2c80: 0a 74 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30  .test MD_CMAC-10
2c90: 2e 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f  .3 {channel} -bo
2ca0: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61  dy {..digest_rea
2cb0: 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64  d_chan ::tls::md
2cc0: 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 63 69 70   $test_file -cip
2cd0: 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72  her $test_cipher
2ce0: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a   -key $test_key.
2cf0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
2d00: 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30  af5c20f9973e2d60
2d10: 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d  6b14c7efdfe52fa}
2d20: 0a 0a 74 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31  ..test MD_CMAC-1
2d30: 30 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62  0.4 {command} -b
2d40: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63  ody {..digest_ac
2d50: 63 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64  cumulate $test_d
2d60: 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63  ata ::tls::md -c
2d70: 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68  ipher $test_ciph
2d80: 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65  er -key $test_ke
2d90: 79 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  y.    } -result 
2da0: 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64  {baf5c20f9973e2d
2db0: 36 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66  606b14c7efdfe52f
2dc0: 61 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 4d 41 43  a}..test MD_CMAC
2dd0: 2d 31 30 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d  -10.5 {data bin}
2de0: 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79   -body {..binary
2df0: 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74   encode hex [::t
2e00: 6c 73 3a 3a 6d 64 20 2d 62 69 6e 20 2d 63 69 70  ls::md -bin -cip
2e10: 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72  her $test_cipher
2e20: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
2e30: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
2e40: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ].    } -result 
2e50: 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64  {baf5c20f9973e2d
2e60: 36 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66  606b14c7efdfe52f
2e70: 61 7d 0a 0a 23 20 54 65 73 74 20 43 4d 41 43 20  a}..# Test CMAC 
2e80: 53 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73 74 20  Shortcut...test 
2e90: 43 4d 41 43 5f 53 68 6f 72 74 63 75 74 2d 31 31  CMAC_Shortcut-11
2ea0: 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20  .1 {data} -body 
2eb0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 24  {..::tls::cmac $
2ec0: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2ed0: 20 24 74 65 73 74 5f 6b 65 79 20 24 74 65 73 74   $test_key $test
2ee0: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
2ef0: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
2f00: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
2f10: 65 35 32 66 61 7d 0a 0a 23 20 43 4d 41 43 20 45  e52fa}..# CMAC E
2f20: 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73  rror Cases...tes
2f30: 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32  t CMAC_Errors-12
2f40: 2e 31 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73  .1 {Too few args
2f50: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
2f60: 3a 3a 63 6d 61 63 0a 20 20 20 20 7d 20 2d 72 65  ::cmac.    } -re
2f70: 73 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72  sult {wrong # ar
2f80: 67 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a  gs: should be ":
2f90: 3a 74 6c 73 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e  :tls::cmac ?-bin
2fa0: 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20  |-hex? ?-cipher 
2fb0: 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e  name? ?-digest n
2fc0: 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20  ame? ?-key key? 
2fd0: 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68  ?-mac name? [-ch
2fe0: 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f  annel chan | -co
2ff0: 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20  mmand cmdName | 
3000: 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c  -file filename |
3010: 20 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d   ?-data? data]"}
3020: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
3030: 7d 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72  }..test CMAC_Err
3040: 6f 72 73 2d 31 32 2e 32 20 7b 54 6f 6f 20 6d 61  ors-12.2 {Too ma
3050: 6e 79 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b  ny args} -body {
3060: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 74 6f  ..::tls::cmac to
3070: 6f 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c  o many command l
3080: 69 6e 65 20 61 72 67 73 20 74 6f 20 70 61 73 73  ine args to pass
3090: 20 74 68 65 20 74 65 73 74 20 77 69 74 68 6f 75   the test withou
30a0: 74 20 61 6e 20 65 72 72 6f 72 20 6f 72 20 66 61  t an error or fa
30b0: 69 6c 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73  iling.    } -res
30c0: 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67  ult {wrong # arg
30d0: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a  s: should be "::
30e0: 74 6c 73 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c  tls::cmac ?-bin|
30f0: 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e  -hex? ?-cipher n
3100: 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61  ame? ?-digest na
3110: 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f  me? ?-key key? ?
3120: 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61  -mac name? [-cha
3130: 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d  nnel chan | -com
3140: 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d  mand cmdName | -
3150: 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20  file filename | 
3160: 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20  ?-data? data]"} 
3170: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
3180: 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f  ..test CMAC_Erro
3190: 72 73 2d 31 32 2e 33 20 7b 4e 6f 20 63 69 70 68  rs-12.3 {No ciph
31a0: 65 72 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  er} -body {..::t
31b0: 6c 73 3a 3a 63 6d 61 63 20 2d 68 65 78 20 2d 64  ls::cmac -hex -d
31c0: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20  ata $test_data. 
31d0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f     } -result {No
31e0: 20 63 69 70 68 65 72 20 73 70 65 63 69 66 69 65   cipher specifie
31f0: 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20  d} -returnCodes 
3200: 7b 31 7d 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45  {1}..test CMAC_E
3210: 72 72 6f 72 73 2d 31 32 2e 34 20 7b 4e 6f 20 6b  rrors-12.4 {No k
3220: 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  ey} -body {..::t
3230: 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72  ls::cmac -cipher
3240: 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 64   $test_cipher -d
3250: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20  ata $test_data. 
3260: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f     } -result {No
3270: 20 6b 65 79 20 73 70 65 63 69 66 69 65 64 7d 20   key specified} 
3280: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
3290: 0a 0a 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f  ..test CMAC_Erro
32a0: 72 73 2d 31 32 2e 35 20 7b 49 6e 76 61 6c 69 64  rs-12.5 {Invalid
32b0: 20 63 69 70 68 65 72 7d 20 2d 62 6f 64 79 20 7b   cipher} -body {
32c0: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63  ..::tls::cmac -c
32d0: 69 70 68 65 72 20 62 6f 67 75 73 20 2d 64 61 74  ipher bogus -dat
32e0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
32f0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 49 6e 76 61   } -result {Inva
3300: 6c 69 64 20 63 69 70 68 65 72 20 22 62 6f 67 75  lid cipher "bogu
3310: 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  s"} -returnCodes
3320: 20 7b 31 7d 0a 0a 0a 23 20 54 65 73 74 20 48 4d   {1}...# Test HM
3330: 41 43 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 20 74  AC command.set t
3340: 65 73 74 5f 64 69 67 65 73 74 20 6d 64 35 0a 73  est_digest md5.s
3350: 65 74 20 74 65 73 74 5f 6b 65 79 20 22 45 78 61  et test_key "Exa
3360: 6d 70 6c 65 20 6b 65 79 22 0a 0a 0a 74 65 73 74  mple key"...test
3370: 20 48 4d 41 43 2d 31 33 2e 31 20 7b 64 61 74 61   HMAC-13.1 {data
3380: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3390: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 24  ::hmac -digest $
33a0: 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79  test_digest -key
33b0: 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61   $test_key -data
33c0: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
33d0: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32  } -result {f9832
33e0: 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36  7ef3e20ab6d388f6
33f0: 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65  76c6a79d93d}..te
3400: 73 74 20 48 4d 41 43 2d 31 33 2e 32 20 7b 66 69  st HMAC-13.2 {fi
3410: 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  le} -body {..::t
3420: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
3430: 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b   $test_digest -k
3440: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69  ey $test_key -fi
3450: 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20  le $test_file.  
3460: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38    } -result {f98
3470: 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38  327ef3e20ab6d388
3480: 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a  f676c6a79d93d}..
3490: 74 65 73 74 20 48 4d 41 43 2d 31 33 2e 33 20 7b  test HMAC-13.3 {
34a0: 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b  channel} -body {
34b0: 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68  ..digest_read_ch
34c0: 61 6e 20 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 24  an ::tls::hmac $
34d0: 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73  test_file -diges
34e0: 74 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d  t $test_digest -
34f0: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20  key $test_key.  
3500: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38    } -result {f98
3510: 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38  327ef3e20ab6d388
3520: 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a  f676c6a79d93d}..
3530: 74 65 73 74 20 48 4d 41 43 2d 31 33 2e 34 20 7b  test HMAC-13.4 {
3540: 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79 20 7b  command} -body {
3550: 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75 6c  ..digest_accumul
3560: 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a  ate $test_data :
3570: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
3580: 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74 20  st $test_digest 
3590: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20  -key $test_key. 
35a0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39     } -result {f9
35b0: 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38  8327ef3e20ab6d38
35c0: 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a  8f676c6a79d93d}.
35d0: 0a 74 65 73 74 20 48 4d 41 43 2d 31 33 2e 35 20  .test HMAC-13.5 
35e0: 7b 64 61 74 61 20 62 69 6e 7d 20 2d 62 6f 64 79  {data bin} -body
35f0: 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64   {..binary encod
3600: 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a 3a 68 6d  e hex [::tls::hm
3610: 61 63 20 2d 64 69 67 65 73 74 20 24 74 65 73 74  ac -digest $test
3620: 5f 64 69 67 65 73 74 20 2d 62 69 6e 20 2d 6b 65  _digest -bin -ke
3630: 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74  y $test_key -dat
3640: 61 20 24 74 65 73 74 5f 64 61 74 61 5d 0a 20 20  a $test_data].  
3650: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38    } -result {f98
3660: 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38  327ef3e20ab6d388
3670: 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a  f676c6a79d93d}..
3680: 23 20 54 65 73 74 20 4d 44 20 48 4d 41 43 0a 0a  # Test MD HMAC..
3690: 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31 34  .test MD_HMAC-14
36a0: 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20  .1 {data} -body 
36b0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
36c0: 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73  gest $test_diges
36d0: 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  t -key $test_key
36e0: 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74   -data $test_dat
36f0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
3700: 7b 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36  {f98327ef3e20ab6
3710: 64 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33  d388f676c6a79d93
3720: 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43  d}..test MD_HMAC
3730: 2d 31 34 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f  -14.2 {file} -bo
3740: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
3750: 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69  -digest $test_di
3760: 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f  gest -key $test_
3770: 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73 74 5f  key -file $test_
3780: 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75  file.    } -resu
3790: 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30  lt {f98327ef3e20
37a0: 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39  ab6d388f676c6a79
37b0: 64 39 33 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 48  d93d}..test MD_H
37c0: 4d 41 43 2d 31 34 2e 33 20 7b 63 68 61 6e 6e 65  MAC-14.3 {channe
37d0: 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65  l} -body {..dige
37e0: 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74  st_read_chan ::t
37f0: 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69 6c  ls::md $test_fil
3800: 65 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f  e -digest $test_
3810: 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73  digest -key $tes
3820: 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65 73  t_key.    } -res
3830: 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32  ult {f98327ef3e2
3840: 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37  0ab6d388f676c6a7
3850: 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 4d 44 5f  9d93d}..test MD_
3860: 48 4d 41 43 2d 31 34 2e 34 20 7b 63 6f 6d 6d 61  HMAC-14.4 {comma
3870: 6e 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  nd} -body {..dig
3880: 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24  est_accumulate $
3890: 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a  test_data ::tls:
38a0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 24 74 65 73  :md -digest $tes
38b0: 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74  t_digest -key $t
38c0: 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72  est_key.    } -r
38d0: 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33  esult {f98327ef3
38e0: 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36  e20ab6d388f676c6
38f0: 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 4d  a79d93d}..test M
3900: 44 5f 48 4d 41 43 2d 31 34 2e 35 20 7b 64 61 74  D_HMAC-14.5 {dat
3910: 61 20 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09  a bin} -body {..
3920: 62 69 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65  binary encode he
3930: 78 20 5b 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  x [::tls::md -di
3940: 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73  gest $test_diges
3950: 74 20 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65 73  t -bin -key $tes
3960: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73  t_key -data $tes
3970: 74 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72  t_data].    } -r
3980: 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33  esult {f98327ef3
3990: 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36  e20ab6d388f676c6
39a0: 61 37 39 64 39 33 64 7d 0a 0a 23 20 54 65 73 74  a79d93d}..# Test
39b0: 20 48 4d 41 43 20 53 68 6f 72 74 63 75 74 0a 0a   HMAC Shortcut..
39c0: 0a 74 65 73 74 20 48 4d 41 43 5f 53 68 6f 72 74  .test HMAC_Short
39d0: 63 75 74 2d 31 35 2e 31 20 7b 64 61 74 61 7d 20  cut-15.1 {data} 
39e0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
39f0: 68 6d 61 63 20 24 74 65 73 74 5f 64 69 67 65 73  hmac $test_diges
3a00: 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  t -key $test_key
3a10: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
3a20: 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32  } -result {f9832
3a30: 37 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36  7ef3e20ab6d388f6
3a40: 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 23 20  76c6a79d93d}..# 
3a50: 48 4d 41 43 20 45 72 72 6f 72 20 43 61 73 65 73  HMAC Error Cases
3a60: 0a 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72  ...test HMAC_Err
3a70: 6f 72 73 2d 31 36 2e 31 20 7b 54 6f 6f 20 66 65  ors-16.1 {Too fe
3a80: 77 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a  w args} -body {.
3a90: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 0a 20 20 20  .::tls::hmac.   
3aa0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e   } -result {wron
3ab0: 67 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64  g # args: should
3ac0: 20 62 65 20 22 3a 3a 74 6c 73 3a 3a 68 6d 61 63   be "::tls::hmac
3ad0: 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63   ?-bin|-hex? ?-c
3ae0: 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69  ipher name? ?-di
3af0: 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79  gest name? ?-key
3b00: 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65   key? ?-mac name
3b10: 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e  ? [-channel chan
3b20: 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e   | -command cmdN
3b30: 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65  ame | -file file
3b40: 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64  name | ?-data? d
3b50: 61 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f  ata]"} -returnCo
3b60: 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d  des {1}..test HM
3b70: 41 43 5f 45 72 72 6f 72 73 2d 31 36 2e 32 20 7b  AC_Errors-16.2 {
3b80: 54 6f 6f 20 6d 61 6e 79 20 61 72 67 73 7d 20 2d  Too many args} -
3b90: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
3ba0: 6d 61 63 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d  mac too many com
3bb0: 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 73 20 74  mand line args t
3bc0: 6f 20 70 61 73 73 20 74 68 65 20 74 65 73 74 20  o pass the test 
3bd0: 77 69 74 68 6f 75 74 20 61 6e 20 65 72 72 6f 72  without an error
3be0: 20 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20 20 20   or failing.    
3bf0: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67  } -result {wrong
3c00: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
3c10: 62 65 20 22 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20  be "::tls::hmac 
3c20: 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69  ?-bin|-hex? ?-ci
3c30: 70 68 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67  pher name? ?-dig
3c40: 65 73 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20  est name? ?-key 
3c50: 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f  key? ?-mac name?
3c60: 20 5b 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20   [-channel chan 
3c70: 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61  | -command cmdNa
3c80: 6d 65 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e  me | -file filen
3c90: 61 6d 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61  ame | ?-data? da
3ca0: 74 61 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64  ta]"} -returnCod
3cb0: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41  es {1}..test HMA
3cc0: 43 5f 45 72 72 6f 72 73 2d 31 36 2e 33 20 7b 4e  C_Errors-16.3 {N
3cd0: 6f 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 20  o digest} -body 
3ce0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
3cf0: 68 65 78 20 2d 64 61 74 61 20 24 74 65 73 74 5f  hex -data $test_
3d00: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
3d10: 6c 74 20 7b 4e 6f 20 64 69 67 65 73 74 20 73 70  lt {No digest sp
3d20: 65 63 69 66 69 65 64 7d 20 2d 72 65 74 75 72 6e  ecified} -return
3d30: 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20  Codes {1}..test 
3d40: 48 4d 41 43 5f 45 72 72 6f 72 73 2d 31 36 2e 34  HMAC_Errors-16.4
3d50: 20 7b 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20   {No key} -body 
3d60: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
3d70: 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 64  digest sha256 -d
3d80: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20  ata $test_data. 
3d90: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 4e 6f     } -result {No
3da0: 20 6b 65 79 20 73 70 65 63 69 66 69 65 64 7d 20   key specified} 
3db0: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
3dc0: 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f  ..test HMAC_Erro
3dd0: 72 73 2d 31 36 2e 35 20 7b 49 6e 76 61 6c 69 64  rs-16.5 {Invalid
3de0: 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 20 7b   digest} -body {
3df0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
3e00: 65 73 74 20 62 6f 67 75 73 20 2d 6b 65 79 20 24  est bogus -key $
3e10: 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24  test_key -data $
3e20: 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20  test_data.    } 
3e30: 2d 72 65 73 75 6c 74 20 7b 49 6e 76 61 6c 69 64  -result {Invalid
3e40: 20 64 69 67 65 73 74 20 22 62 6f 67 75 73 22 7d   digest "bogus"}
3e50: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
3e60: 7d 0a 0a 0a 23 20 54 65 73 74 20 4d 41 43 20 63  }...# Test MAC c
3e70: 6f 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73 74 5f  ommand.set test_
3e80: 63 69 70 68 65 72 20 22 61 65 73 2d 31 32 38 2d  cipher "aes-128-
3e90: 63 62 63 22 0a 73 65 74 20 74 65 73 74 5f 64 69  cbc".set test_di
3ea0: 67 65 73 74 20 73 68 61 32 35 36 0a 73 65 74 20  gest sha256.set 
3eb0: 74 65 73 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c  test_key "Exampl
3ec0: 65 20 6b 65 79 20 31 32 33 34 22 0a 0a 0a 74 65  e key 1234"...te
3ed0: 73 74 20 4d 41 43 2d 31 37 2e 31 20 7b 43 4d 41  st MAC-17.1 {CMA
3ee0: 43 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  C} -body {..::tl
3ef0: 73 3a 3a 6d 61 63 20 2d 63 69 70 68 65 72 20 24  s::mac -cipher $
3f00: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
3f10: 20 24 74 65 73 74 5f 6b 65 79 20 2d 6d 61 63 20   $test_key -mac 
3f20: 63 6d 61 63 20 2d 64 61 74 61 20 24 74 65 73 74  cmac -data $test
3f30: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
3f40: 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37  ult {baf5c20f997
3f50: 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66  3e2d606b14c7efdf
3f60: 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 4d 41 43  e52fa}..test MAC
3f70: 2d 31 37 2e 32 20 7b 48 4d 41 43 7d 20 2d 62 6f  -17.2 {HMAC} -bo
3f80: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63  dy {..::tls::mac
3f90: 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64   -digest $test_d
3fa0: 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74  igest -key $test
3fb0: 5f 6b 65 79 20 2d 6d 61 63 20 68 6d 61 63 20 2d  _key -mac hmac -
3fc0: 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a  data $test_data.
3fd0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36      } -result {6
3fe0: 37 36 64 61 66 39 36 33 37 30 64 30 65 33 63 35  76daf96370d0e3c5
3ff0: 35 39 38 35 35 37 64 61 33 38 61 39 61 38 31 30  598557da38a9a810
4000: 61 34 66 62 61 63 62 62 32 64 31 30 63 36 37 66  a4fbacbb2d10c67f
4010: 36 64 66 61 38 33 66 31 30 66 34 38 65 39 36 7d  6dfa83f10f48e96}
4020: 0a 0a 74 65 73 74 20 4d 41 43 2d 31 37 2e 33 20  ..test MAC-17.3 
4030: 7b 4d 44 2d 43 4d 41 43 7d 20 2d 62 6f 64 79 20  {MD-CMAC} -body 
4040: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63 69  {..::tls::md -ci
4050: 70 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65  pher $test_ciphe
4060: 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  r -key $test_key
4070: 20 2d 6d 61 63 20 63 6d 61 63 20 2d 64 61 74 61   -mac cmac -data
4080: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
4090: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63  } -result {baf5c
40a0: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34  20f9973e2d606b14
40b0: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65  c7efdfe52fa}..te
40c0: 73 74 20 4d 41 43 2d 31 37 2e 34 20 7b 4d 44 2d  st MAC-17.4 {MD-
40d0: 48 4d 41 43 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  HMAC} -body {..:
40e0: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
40f0: 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b   $test_digest -k
4100: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 6d 61  ey $test_key -ma
4110: 63 20 68 6d 61 63 20 2d 64 61 74 61 20 24 74 65  c hmac -data $te
4120: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
4130: 65 73 75 6c 74 20 7b 36 37 36 64 61 66 39 36 33  esult {676daf963
4140: 37 30 64 30 65 33 63 35 35 39 38 35 35 37 64 61  70d0e3c5598557da
4150: 33 38 61 39 61 38 31 30 61 34 66 62 61 63 62 62  38a9a810a4fbacbb
4160: 32 64 31 30 63 36 37 66 36 64 66 61 38 33 66 31  2d10c67f6dfa83f1
4170: 30 66 34 38 65 39 36 7d 0a 0a 23 20 4d 41 43 20  0f48e96}..# MAC 
4180: 45 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65  Error Cases...te
4190: 73 74 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31 38  st MAC_Errors-18
41a0: 2e 31 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73  .1 {Too few args
41b0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
41c0: 3a 3a 6d 61 63 0a 20 20 20 20 7d 20 2d 72 65 73  ::mac.    } -res
41d0: 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67  ult {wrong # arg
41e0: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a  s: should be "::
41f0: 74 6c 73 3a 3a 6d 61 63 20 3f 2d 62 69 6e 7c 2d  tls::mac ?-bin|-
4200: 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61  hex? ?-cipher na
4210: 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d  me? ?-digest nam
4220: 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d  e? ?-key key? ?-
4230: 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e  mac name? [-chan
4240: 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d  nel chan | -comm
4250: 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66  and cmdName | -f
4260: 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f  ile filename | ?
4270: 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d  -data? data]"} -
4280: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
4290: 0a 74 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73  .test MAC_Errors
42a0: 2d 31 38 2e 32 20 7b 4e 6f 20 6d 61 63 7d 20 2d  -18.2 {No mac} -
42b0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
42c0: 61 63 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65  ac -key $test_ke
42d0: 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61  y -data $test_da
42e0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
42f0: 20 7b 4e 6f 20 4d 41 43 20 73 70 65 63 69 66 69   {No MAC specifi
4300: 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ed} -returnCodes
4310: 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45   {1}..test MAC_E
4320: 72 72 6f 72 73 2d 31 38 2e 33 20 7b 4e 6f 20 6b  rrors-18.3 {No k
4330: 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  ey} -body {..::t
4340: 6c 73 3a 3a 6d 61 63 20 2d 6d 61 63 20 68 6d 61  ls::mac -mac hma
4350: 63 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61  c -data $test_da
4360: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
4370: 20 7b 4e 6f 20 6b 65 79 20 73 70 65 63 69 66 69   {No key specifi
4380: 65 64 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ed} -returnCodes
4390: 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45   {1}..test MAC_E
43a0: 72 72 6f 72 73 2d 31 38 2e 34 20 7b 49 6e 76 61  rrors-18.4 {Inva
43b0: 6c 69 64 20 4d 41 43 7d 20 2d 62 6f 64 79 20 7b  lid MAC} -body {
43c0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 6d 61  ..::tls::mac -ma
43d0: 63 20 73 63 72 79 70 74 20 2d 6b 65 79 20 24 74  c scrypt -key $t
43e0: 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74  est_key -data $t
43f0: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
4400: 72 65 73 75 6c 74 20 7b 49 6e 76 61 6c 69 64 20  result {Invalid 
4410: 4d 41 43 20 22 73 63 72 79 70 74 22 7d 20 2d 72  MAC "scrypt"} -r
4420: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
4430: 74 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73 2d  test MAC_Errors-
4440: 31 38 2e 35 20 7b 54 6f 6f 20 6d 61 6e 79 20 61  18.5 {Too many a
4450: 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  rgs} -body {..::
4460: 74 6c 73 3a 3a 6d 61 63 20 74 6f 6f 20 6d 61 6e  tls::mac too man
4470: 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61  y command line a
4480: 72 67 73 20 74 6f 20 70 61 73 73 20 74 68 65 20  rgs to pass the 
4490: 74 65 73 74 20 77 69 74 68 6f 75 74 20 61 6e 20  test without an 
44a0: 65 72 72 6f 72 20 6f 72 20 66 61 69 6c 69 6e 67  error or failing
44b0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
44c0: 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20 73 68  wrong # args: sh
44d0: 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73 3a 3a  ould be "::tls::
44e0: 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65 78 3f 20  mac ?-bin|-hex? 
44f0: 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f 20 3f  ?-cipher name? ?
4500: 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20 3f 2d  -digest name? ?-
4510: 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63 20 6e  key key? ?-mac n
4520: 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c 20 63  ame? [-channel c
4530: 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64 20 63  han | -command c
4540: 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65 20 66  mdName | -file f
4550: 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61 74 61  ilename | ?-data
4560: 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74 75 72  ? data]"} -retur
4570: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 0a 23 20 52  nCodes {1}...# R
4580: 46 43 20 31 33 32 31 20 4d 65 73 73 61 67 65 20  FC 1321 Message 
4590: 44 69 67 65 73 74 20 35 0a 0a 0a 74 65 73 74 20  Digest 5...test 
45a0: 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e 31  RFC1321-MD5-19.1
45b0: 20 7b 54 43 31 7d 20 2d 62 6f 64 79 20 7b 0a 09   {TC1} -body {..
45c0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
45d0: 74 20 6d 64 35 20 2d 64 61 74 61 20 22 22 0a 20  t md5 -data "". 
45e0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 34     } -result {d4
45f0: 31 64 38 63 64 39 38 66 30 30 62 32 30 34 65 39  1d8cd98f00b204e9
4600: 38 30 30 39 39 38 65 63 66 38 34 32 37 65 7d 0a  800998ecf8427e}.
4610: 0a 74 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44  .test RFC1321-MD
4620: 35 2d 31 39 2e 32 20 7b 54 43 32 7d 20 2d 62 6f  5-19.2 {TC2} -bo
4630: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
4640: 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74  -digest md5 -dat
4650: 61 20 22 61 22 0a 20 20 20 20 7d 20 2d 72 65 73  a "a".    } -res
4660: 75 6c 74 20 7b 30 63 63 31 37 35 62 39 63 30 66  ult {0cc175b9c0f
4670: 31 62 36 61 38 33 31 63 33 39 39 65 32 36 39 37  1b6a831c399e2697
4680: 37 32 36 36 31 7d 0a 0a 74 65 73 74 20 52 46 43  72661}..test RFC
4690: 31 33 32 31 2d 4d 44 35 2d 31 39 2e 33 20 7b 54  1321-MD5-19.3 {T
46a0: 43 33 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C3} -body {..::t
46b0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
46c0: 64 35 20 2d 64 61 74 61 20 22 61 62 63 22 0a 20  d5 -data "abc". 
46d0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 30     } -result {90
46e0: 30 31 35 30 39 38 33 63 64 32 34 66 62 30 64 36  0150983cd24fb0d6
46f0: 39 36 33 66 37 64 32 38 65 31 37 66 37 32 7d 0a  963f7d28e17f72}.
4700: 0a 74 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44  .test RFC1321-MD
4710: 35 2d 31 39 2e 34 20 7b 54 43 34 7d 20 2d 62 6f  5-19.4 {TC4} -bo
4720: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
4730: 2d 64 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74  -digest md5 -dat
4740: 61 20 22 6d 65 73 73 61 67 65 20 64 69 67 65 73  a "message diges
4750: 74 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  t".    } -result
4760: 20 7b 66 39 36 62 36 39 37 64 37 63 62 37 39 33   {f96b697d7cb793
4770: 38 64 35 32 35 61 32 66 33 31 61 61 66 31 36 31  8d525a2f31aaf161
4780: 64 30 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32  d0}..test RFC132
4790: 31 2d 4d 44 35 2d 31 39 2e 35 20 7b 54 43 35 7d  1-MD5-19.5 {TC5}
47a0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
47b0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
47c0: 2d 64 61 74 61 20 22 61 62 63 64 65 66 67 68 69  -data "abcdefghi
47d0: 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79  jklmnopqrstuvwxy
47e0: 7a 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  z".    } -result
47f0: 20 7b 63 33 66 63 64 33 64 37 36 31 39 32 65 34   {c3fcd3d76192e4
4800: 30 30 37 64 66 62 34 39 36 63 63 61 36 37 65 31  007dfb496cca67e1
4810: 33 62 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32  3b}..test RFC132
4820: 31 2d 4d 44 35 2d 31 39 2e 36 20 7b 54 43 36 7d  1-MD5-19.6 {TC6}
4830: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
4840: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
4850: 2d 64 61 74 61 20 22 41 42 43 44 45 46 47 48 49  -data "ABCDEFGHI
4860: 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59  JKLMNOPQRSTUVWXY
4870: 5a 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f  Zabcdefghijklmno
4880: 70 71 72 73 74 75 76 77 78 79 7a 30 31 32 33 34  pqrstuvwxyz01234
4890: 35 36 37 38 39 22 0a 20 20 20 20 7d 20 2d 72 65  56789".    } -re
48a0: 73 75 6c 74 20 7b 64 31 37 34 61 62 39 38 64 32  sult {d174ab98d2
48b0: 37 37 64 39 66 35 61 35 36 31 31 63 32 63 39 66  77d9f5a5611c2c9f
48c0: 34 31 39 64 39 66 7d 0a 0a 74 65 73 74 20 52 46  419d9f}..test RF
48d0: 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e 37 20 7b  C1321-MD5-19.7 {
48e0: 54 43 37 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  TC7} -body {..::
48f0: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
4900: 6d 64 35 20 2d 64 61 74 61 20 5b 73 74 72 69 6e  md5 -data [strin
4910: 67 20 72 65 70 65 61 74 20 22 31 32 33 34 35 36  g repeat "123456
4920: 37 38 39 30 22 20 38 5d 0a 20 20 20 20 7d 20 2d  7890" 8].    } -
4930: 72 65 73 75 6c 74 20 7b 35 37 65 64 66 34 61 32  result {57edf4a2
4940: 32 62 65 33 63 39 35 35 61 63 34 39 64 61 32 65  2be3c955ac49da2e
4950: 32 31 30 37 62 36 37 61 7d 0a 0a 23 20 52 46 43  2107b67a}..# RFC
4960: 20 36 32 33 34 20 53 48 41 31 0a 0a 0a 74 65 73   6234 SHA1...tes
4970: 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41  t RFC6234-MD-SHA
4980: 31 2d 32 30 2e 31 20 7b 54 43 31 7d 20 2d 62 6f  1-20.1 {TC1} -bo
4990: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
49a0: 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d 64 61  -digest sha1 -da
49b0: 74 61 20 22 61 62 63 22 0a 20 20 20 20 7d 20 2d  ta "abc".    } -
49c0: 72 65 73 75 6c 74 20 7b 61 39 39 39 33 65 33 36  result {a9993e36
49d0: 34 37 30 36 38 31 36 61 62 61 33 65 32 35 37 31  4706816aba3e2571
49e0: 37 38 35 30 63 32 36 63 39 63 64 30 64 38 39 64  7850c26c9cd0d89d
49f0: 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d  }..test RFC6234-
4a00: 4d 44 2d 53 48 41 31 2d 32 30 2e 32 20 7b 54 43  MD-SHA1-20.2 {TC
4a10: 32 5f 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  2_1} -body {..::
4a20: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
4a30: 73 68 61 31 20 2d 64 61 74 61 20 22 61 62 63 64  sha1 -data "abcd
4a40: 62 63 64 65 63 64 65 66 64 65 66 67 65 66 67 68  bcdecdefdefgefgh
4a50: 66 67 68 69 67 68 69 6a 68 69 6a 6b 69 6a 6b 6c  fghighijhijkijkl
4a60: 6a 6b 6c 6d 6b 6c 6d 6e 6c 6d 6e 6f 6d 6e 6f 70  jklmklmnlmnomnop
4a70: 6e 6f 70 71 22 0a 20 20 20 20 7d 20 2d 72 65 73  nopq".    } -res
4a80: 75 6c 74 20 7b 38 34 39 38 33 65 34 34 31 63 33  ult {84983e441c3
4a90: 62 64 32 36 65 62 61 61 65 34 61 61 31 66 39 35  bd26ebaae4aa1f95
4aa0: 31 32 39 65 35 65 35 34 36 37 30 66 31 7d 0a 0a  129e5e54670f1}..
4ab0: 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d  test RFC6234-MD-
4ac0: 53 48 41 31 2d 32 30 2e 33 20 7b 54 43 33 7d 20  SHA1-20.3 {TC3} 
4ad0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
4ae0: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 20  md -digest sha1 
4af0: 2d 64 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65  -data [string re
4b00: 70 65 61 74 20 22 61 22 20 31 30 30 30 30 30 30  peat "a" 1000000
4b10: 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ].    } -result 
4b20: 7b 33 34 61 61 39 37 33 63 64 34 63 34 64 61 61  {34aa973cd4c4daa
4b30: 34 66 36 31 65 65 62 32 62 64 62 61 64 32 37 33  4f61eeb2bdbad273
4b40: 31 36 35 33 34 30 31 36 66 7d 0a 0a 74 65 73 74  16534016f}..test
4b50: 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 31   RFC6234-MD-SHA1
4b60: 2d 32 30 2e 34 20 7b 54 43 34 7d 20 2d 62 6f 64  -20.4 {TC4} -bod
4b70: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d  y {..::tls::md -
4b80: 64 69 67 65 73 74 20 73 68 61 31 20 2d 64 61 74  digest sha1 -dat
4b90: 61 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  a [string repeat
4ba0: 20 22 30 31 32 33 34 35 36 37 22 20 38 30 5d 0a   "01234567" 80].
4bb0: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64      } -result {d
4bc0: 65 61 33 35 36 61 32 63 64 64 64 39 30 63 37 61  ea356a2cddd90c7a
4bd0: 37 65 63 65 64 63 35 65 62 62 35 36 33 39 33 34  7ecedc5ebb563934
4be0: 66 34 36 30 34 35 32 7d 0a 0a 74 65 73 74 20 52  f460452}..test R
4bf0: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32  FC6234-MD-SHA1-2
4c00: 30 2e 35 20 7b 54 43 36 7d 20 2d 62 6f 64 79 20  0.5 {TC6} -body 
4c10: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
4c20: 67 65 73 74 20 73 68 61 31 20 2d 64 61 74 61 20  gest sha1 -data 
4c30: 22 5c 78 35 65 22 0a 20 20 20 20 7d 20 2d 72 65  "\x5e".    } -re
4c40: 73 75 6c 74 20 7b 35 65 36 66 38 30 61 33 34 61  sult {5e6f80a34a
4c50: 39 37 39 38 63 61 66 63 36 61 35 64 62 39 36 63  9798cafc6a5db96c
4c60: 63 35 37 62 61 34 63 34 64 62 35 39 63 32 7d 0a  c57ba4c4db59c2}.
4c70: 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44  .test RFC6234-MD
4c80: 2d 53 48 41 31 2d 32 30 2e 36 20 7b 54 43 38 5f  -SHA1-20.6 {TC8_
4c90: 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  1} -body {..::tl
4ca0: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68  s::md -digest sh
4cb0: 61 31 20 2d 64 61 74 61 20 22 5c 78 39 61 5c 78  a1 -data "\x9a\x
4cc0: 37 64 5c 78 66 64 5c 78 66 31 5c 78 65 63 5c 78  7d\xfd\xf1\xec\x
4cd0: 65 61 5c 78 64 30 5c 78 36 65 5c 78 64 36 5c 78  ea\xd0\x6e\xd6\x
4ce0: 34 36 5c 78 61 61 5c 78 35 35 5c 78 66 65 5c 78  46\xaa\x55\xfe\x
4cf0: 37 35 5c 78 37 31 5c 78 34 36 22 0a 20 20 20 20  75\x71\x46".    
4d00: 7d 20 2d 72 65 73 75 6c 74 20 7b 38 32 61 62 66  } -result {82abf
4d10: 66 36 36 30 35 64 62 65 31 63 31 37 64 65 66 31  f6605dbe1c17def1
4d20: 32 61 33 39 34 66 61 32 32 61 38 32 62 35 34 34  2a394fa22a82b544
4d30: 61 33 35 7d 0a 0a 74 65 73 74 20 52 46 43 36 32  a35}..test RFC62
4d40: 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 37 20  34-MD-SHA1-20.7 
4d50: 7b 54 43 31 30 5f 31 7d 20 2d 62 6f 64 79 20 7b  {TC10_1} -body {
4d60: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
4d70: 65 73 74 20 73 68 61 31 20 2d 64 61 74 61 20 22  est sha1 -data "
4d80: 5c 78 66 37 5c 78 38 66 5c 78 39 32 5c 78 31 34  \xf7\x8f\x92\x14
4d90: 5c 78 31 62 5c 78 63 64 5c 78 31 37 5c 78 30 61  \x1b\xcd\x17\x0a
4da0: 5c 78 65 38 5c 78 39 62 5c 78 34 66 5c 78 62 61  \xe8\x9b\x4f\xba
4db0: 5c 78 31 35 5c 78 61 31 5c 78 64 35 5c 78 39 66  \x15\xa1\xd5\x9f
4dc0: 5c 78 33 66 5c 78 64 38 5c 78 34 64 5c 78 32 32  \x3f\xd8\x4d\x22
4dd0: 5c 78 33 63 5c 78 39 32 5c 78 35 31 5c 78 62 64  \x3c\x92\x51\xbd
4de0: 5c 78 61 63 5c 78 62 62 5c 78 61 65 5c 78 36 31  \xac\xbb\xae\x61
4df0: 5c 78 64 30 5c 78 35 65 5c 78 64 31 5c 78 31 35  \xd0\x5e\xd1\x15
4e00: 5c 78 61 30 5c 78 36 61 5c 78 37 63 5c 78 65 31  \xa0\x6a\x7c\xe1
4e10: 5c 78 31 37 5c 78 62 37 5c 78 62 65 5c 78 65 61  \x17\xb7\xbe\xea
4e20: 5c 78 64 32 5c 78 34 34 5c 78 32 31 5c 78 64 65  \xd2\x44\x21\xde
4e30: 5c 78 64 39 5c 78 63 33 5c 78 32 35 5c 78 39 32  \xd9\xc3\x25\x92
4e40: 5c 78 62 64 5c 78 35 37 5c 78 65 64 5c 78 65 61  \xbd\x57\xed\xea
4e50: 5c 78 65 33 5c 78 39 63 5c 78 33 39 5c 78 66 61  \xe3\x9c\x39\xfa
4e60: 5c 78 31 66 5c 78 65 38 5c 78 39 34 5c 78 36 61  \x1f\xe8\x94\x6a
4e70: 5c 78 38 34 5c 78 64 30 5c 78 63 66 5c 78 31 66  \x84\xd0\xcf\x1f
4e80: 5c 78 37 62 5c 78 65 65 5c 78 61 64 5c 78 31 37  \x7b\xee\xad\x17
4e90: 5c 78 31 33 5c 78 65 32 5c 78 65 30 5c 78 39 35  \x13\xe2\xe0\x95
4ea0: 5c 78 39 38 5c 78 39 37 5c 78 33 34 5c 78 37 66  \x98\x97\x34\x7f
4eb0: 5c 78 36 37 5c 78 63 38 5c 78 30 62 5c 78 30 34  \x67\xc8\x0b\x04
4ec0: 5c 78 30 30 5c 78 63 32 5c 78 30 39 5c 78 38 31  \x00\xc2\x09\x81
4ed0: 5c 78 35 64 5c 78 36 62 5c 78 31 30 5c 78 61 36  \x5d\x6b\x10\xa6
4ee0: 5c 78 38 33 5c 78 38 33 5c 78 36 66 5c 78 64 35  \x83\x83\x6f\xd5
4ef0: 5c 78 35 36 5c 78 32 61 5c 78 35 36 5c 78 63 61  \x56\x2a\x56\xca
4f00: 5c 78 62 31 5c 78 61 32 5c 78 38 65 5c 78 38 31  \xb1\xa2\x8e\x81
4f10: 5c 78 62 36 5c 78 35 37 5c 78 36 36 5c 78 35 34  \xb6\x57\x66\x54
4f20: 5c 78 36 33 5c 78 31 63 5c 78 66 31 5c 78 36 35  \x63\x1c\xf1\x65
4f30: 5c 78 36 36 5c 78 62 38 5c 78 36 65 5c 78 33 62  \x66\xb8\x6e\x3b
4f40: 5c 78 33 33 5c 78 61 31 5c 78 30 38 5c 78 62 30  \x33\xa1\x08\xb0
4f50: 5c 78 35 33 5c 78 30 37 5c 78 63 30 5c 78 30 61  \x53\x07\xc0\x0a
4f60: 5c 78 66 66 5c 78 31 34 5c 78 61 37 5c 78 36 38  \xff\x14\xa7\x68
4f70: 5c 78 65 64 5c 78 37 33 5c 78 35 30 5c 78 36 30  \xed\x73\x50\x60
4f80: 5c 78 36 61 5c 78 30 66 5c 78 38 35 5c 78 65 36  \x6a\x0f\x85\xe6
4f90: 5c 78 61 39 5c 78 31 64 5c 78 33 39 5c 78 36 66  \xa9\x1d\x39\x6f
4fa0: 5c 78 35 62 5c 78 35 63 5c 78 62 65 5c 78 35 37  \x5b\x5c\xbe\x57
4fb0: 5c 78 37 66 5c 78 39 62 5c 78 33 38 5c 78 38 30  \x7f\x9b\x38\x80
4fc0: 5c 78 37 63 5c 78 37 64 5c 78 35 32 5c 78 33 64  \x7c\x7d\x52\x3d
4fd0: 5c 78 36 64 5c 78 37 39 5c 78 32 66 5c 78 36 65  \x6d\x79\x2f\x6e
4fe0: 5c 78 62 63 5c 78 32 34 5c 78 61 34 5c 78 65 63  \xbc\x24\xa4\xec
4ff0: 5c 78 66 32 5c 78 62 33 5c 78 61 34 5c 78 32 37  \xf2\xb3\xa4\x27
5000: 5c 78 63 64 5c 78 62 62 5c 78 66 62 22 0a 20 20  \xcd\xbb\xfb".  
5010: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 63 62 30    } -result {cb0
5020: 30 38 32 63 38 66 31 39 37 64 32 36 30 39 39 31  082c8f197d260991
5030: 62 61 36 61 34 36 30 65 37 36 65 32 30 32 62 61  ba6a460e76e202ba
5040: 64 32 37 62 33 7d 0a 0a 23 20 52 46 43 20 36 32  d27b3}..# RFC 62
5050: 33 34 20 53 48 41 32 35 36 0a 0a 0a 74 65 73 74  34 SHA256...test
5060: 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32   RFC6234-MD-SHA2
5070: 35 36 2d 32 31 2e 31 20 7b 54 43 31 7d 20 2d 62  56-21.1 {TC1} -b
5080: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
5090: 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20   -digest sha256 
50a0: 2d 64 61 74 61 20 22 61 62 63 22 0a 20 20 20 20  -data "abc".    
50b0: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 37 38 31  } -result {ba781
50c0: 36 62 66 38 66 30 31 63 66 65 61 34 31 34 31 34  6bf8f01cfea41414
50d0: 30 64 65 35 64 61 65 32 32 32 33 62 30 30 33 36  0de5dae2223b0036
50e0: 31 61 33 39 36 31 37 37 61 39 63 62 34 31 30 66  1a396177a9cb410f
50f0: 66 36 31 66 32 30 30 31 35 61 64 7d 0a 0a 74 65  f61f20015ad}..te
5100: 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48  st RFC6234-MD-SH
5110: 41 32 35 36 2d 32 31 2e 32 20 7b 54 43 32 5f 31  A256-21.2 {TC2_1
5120: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
5130: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
5140: 32 35 36 20 2d 64 61 74 61 20 22 61 62 63 64 62  256 -data "abcdb
5150: 63 64 65 63 64 65 66 64 65 66 67 65 66 67 68 66  cdecdefdefgefghf
5160: 67 68 69 67 68 69 6a 68 69 6a 6b 69 6a 6b 6c 6a  ghighijhijkijklj
5170: 6b 6c 6d 6b 6c 6d 6e 6c 6d 6e 6f 6d 6e 6f 70 6e  klmklmnlmnomnopn
5180: 6f 70 71 22 0a 20 20 20 20 7d 20 2d 72 65 73 75  opq".    } -resu
5190: 6c 74 20 7b 32 34 38 64 36 61 36 31 64 32 30 36  lt {248d6a61d206
51a0: 33 38 62 38 65 35 63 30 32 36 39 33 30 63 33 65  38b8e5c026930c3e
51b0: 36 30 33 39 61 33 33 63 65 34 35 39 36 34 66 66  6039a33ce45964ff
51c0: 32 31 36 37 66 36 65 63 65 64 64 34 31 39 64 62  2167f6ecedd419db
51d0: 30 36 63 31 7d 0a 0a 74 65 73 74 20 52 46 43 36  06c1}..test RFC6
51e0: 32 33 34 2d 4d 44 2d 53 48 41 32 35 36 2d 32 31  234-MD-SHA256-21
51f0: 2e 33 20 7b 54 43 33 7d 20 2d 62 6f 64 79 20 7b  .3 {TC3} -body {
5200: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
5210: 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74 61  est sha256 -data
5220: 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20   [string repeat 
5230: 22 61 22 20 31 30 30 30 30 30 30 5d 0a 20 20 20  "a" 1000000].   
5240: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 63 64 63 37   } -result {cdc7
5250: 36 65 35 63 39 39 31 34 66 62 39 32 38 31 61 31  6e5c9914fb9281a1
5260: 63 37 65 32 38 34 64 37 33 65 36 37 66 31 38 30  c7e284d73e67f180
5270: 39 61 34 38 61 34 39 37 32 30 30 65 30 34 36 64  9a48a497200e046d
5280: 33 39 63 63 63 37 31 31 32 63 64 30 7d 0a 0a 74  39ccc7112cd0}..t
5290: 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53  est RFC6234-MD-S
52a0: 48 41 32 35 36 2d 32 31 2e 34 20 7b 54 43 34 7d  HA256-21.4 {TC4}
52b0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
52c0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32  :md -digest sha2
52d0: 35 36 20 2d 64 61 74 61 20 5b 73 74 72 69 6e 67  56 -data [string
52e0: 20 72 65 70 65 61 74 20 22 30 31 32 33 34 35 36   repeat "0123456
52f0: 37 22 20 38 30 5d 0a 20 20 20 20 7d 20 2d 72 65  7" 80].    } -re
5300: 73 75 6c 74 20 7b 35 39 34 38 34 37 33 32 38 34  sult {5948473284
5310: 35 31 62 64 66 61 38 35 30 35 36 32 32 35 34 36  51bdfa8505622546
5320: 32 63 63 31 64 38 36 37 64 38 37 37 66 62 33 38  2cc1d867d877fb38
5330: 38 64 66 30 63 65 33 35 66 32 35 61 62 35 35 36  8df0ce35f25ab556
5340: 32 62 66 62 62 35 7d 0a 0a 74 65 73 74 20 52 46  2bfbb5}..test RF
5350: 43 36 32 33 34 2d 4d 44 2d 53 48 41 32 35 36 2d  C6234-MD-SHA256-
5360: 32 31 2e 35 20 7b 54 43 36 7d 20 2d 62 6f 64 79  21.5 {TC6} -body
5370: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
5380: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 61  igest sha256 -da
5390: 74 61 20 22 5c 78 31 39 22 0a 20 20 20 20 7d 20  ta "\x19".    } 
53a0: 2d 72 65 73 75 6c 74 20 7b 36 38 61 61 32 65 32  -result {68aa2e2
53b0: 65 65 35 64 66 66 39 36 65 33 33 35 35 65 36 63  ee5dff96e3355e6c
53c0: 37 65 65 33 37 33 65 33 64 36 61 34 65 31 37 66  7ee373e3d6a4e17f
53d0: 37 35 66 39 35 31 38 64 38 34 33 37 30 39 63 30  75f9518d843709c0
53e0: 63 39 62 63 33 65 33 64 34 7d 0a 0a 74 65 73 74  c9bc3e3d4}..test
53f0: 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32   RFC6234-MD-SHA2
5400: 35 36 2d 32 31 2e 36 20 7b 54 43 38 5f 32 35 36  56-21.6 {TC8_256
5410: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
5420: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
5430: 32 35 36 20 2d 64 61 74 61 20 22 5c 78 65 33 5c  256 -data "\xe3\
5440: 78 64 37 5c 78 32 35 5c 78 37 30 5c 78 64 63 5c  xd7\x25\x70\xdc\
5450: 78 64 64 5c 78 37 38 5c 78 37 63 5c 78 65 33 5c  xdd\x78\x7c\xe3\
5460: 78 38 38 5c 78 37 61 5c 78 62 32 5c 78 63 64 5c  x88\x7a\xb2\xcd\
5470: 78 36 38 5c 78 34 36 5c 78 35 32 22 0a 20 20 20  x68\x46\x52".   
5480: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 31 37 35 65   } -result {175e
5490: 65 36 39 62 30 32 62 61 39 62 35 38 65 32 62 30  e69b02ba9b58e2b0
54a0: 61 35 66 64 31 33 38 31 39 63 65 61 35 37 33 66  a5fd13819cea573f
54b0: 33 39 34 30 61 39 34 66 38 32 35 31 32 38 63 66  3940a94f825128cf
54c0: 34 32 30 39 62 65 61 62 62 34 65 38 7d 0a 0a 74  4209beabb4e8}..t
54d0: 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53  est RFC6234-MD-S
54e0: 48 41 32 35 36 2d 32 31 2e 37 20 7b 54 43 31 30  HA256-21.7 {TC10
54f0: 5f 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  _256} -body {..:
5500: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
5510: 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 22 5c   sha256 -data "\
5520: 78 38 33 5c 78 32 36 5c 78 37 35 5c 78 34 65 5c  x83\x26\x75\x4e\
5530: 78 32 32 5c 78 37 37 5c 78 33 37 5c 78 32 66 5c  x22\x77\x37\x2f\
5540: 78 34 66 5c 78 63 31 5c 78 32 62 5c 78 32 30 5c  x4f\xc1\x2b\x20\
5550: 78 35 32 5c 78 37 61 5c 78 66 65 5c 78 66 30 5c  x52\x7a\xfe\xf0\
5560: 78 34 64 5c 78 38 61 5c 78 30 35 5c 78 36 39 5c  x4d\x8a\x05\x69\
5570: 78 37 31 5c 78 62 31 5c 78 31 61 5c 78 64 35 5c  x71\xb1\x1a\xd5\
5580: 78 37 31 5c 78 32 33 5c 78 61 37 5c 78 63 31 5c  x71\x23\xa7\xc1\
5590: 78 33 37 5c 78 37 36 5c 78 30 30 5c 78 30 30 5c  x37\x76\x00\x00\
55a0: 78 64 37 5c 78 62 65 5c 78 66 36 5c 78 66 33 5c  xd7\xbe\xf6\xf3\
55b0: 78 63 31 5c 78 66 37 5c 78 61 39 5c 78 30 38 5c  xc1\xf7\xa9\x08\
55c0: 78 33 61 5c 78 61 33 5c 78 39 64 5c 78 38 31 5c  x3a\xa3\x9d\x81\
55d0: 78 30 64 5c 78 62 33 5c 78 31 30 5c 78 37 37 5c  x0d\xb3\x10\x77\
55e0: 78 37 64 5c 78 61 62 5c 78 38 62 5c 78 31 65 5c  x7d\xab\x8b\x1e\
55f0: 78 37 66 5c 78 30 32 5c 78 62 38 5c 78 34 61 5c  x7f\x02\xb8\x4a\
5600: 78 32 36 5c 78 63 37 5c 78 37 33 5c 78 33 32 5c  x26\xc7\x73\x32\
5610: 78 35 66 5c 78 38 62 5c 78 32 33 5c 78 37 34 5c  x5f\x8b\x23\x74\
5620: 78 64 65 5c 78 37 61 5c 78 34 62 5c 78 35 61 5c  xde\x7a\x4b\x5a\
5630: 78 35 38 5c 78 63 62 5c 78 35 63 5c 78 35 63 5c  x58\xcb\x5c\x5c\
5640: 78 66 33 5c 78 35 62 5c 78 63 65 5c 78 65 36 5c  xf3\x5b\xce\xe6\
5650: 78 66 62 5c 78 39 34 5c 78 36 65 5c 78 35 62 5c  xfb\x94\x6e\x5b\
5660: 78 64 36 5c 78 39 34 5c 78 66 61 5c 78 35 39 5c  xd6\x94\xfa\x59\
5670: 78 33 61 5c 78 38 62 5c 78 65 62 5c 78 33 66 5c  x3a\x8b\xeb\x3f\
5680: 78 39 64 5c 78 36 35 5c 78 39 32 5c 78 65 63 5c  x9d\x65\x92\xec\
5690: 78 65 64 5c 78 61 61 5c 78 36 36 5c 78 63 61 5c  xed\xaa\x66\xca\
56a0: 78 38 32 5c 78 61 32 5c 78 39 64 5c 78 30 63 5c  x82\xa2\x9d\x0c\
56b0: 78 35 31 5c 78 62 63 5c 78 66 39 5c 78 33 33 5c  x51\xbc\xf9\x33\
56c0: 78 36 32 5c 78 33 30 5c 78 65 35 5c 78 64 37 5c  x62\x30\xe5\xd7\
56d0: 78 38 34 5c 78 65 34 5c 78 63 30 5c 78 61 34 5c  x84\xe4\xc0\xa4\
56e0: 78 33 66 5c 78 38 64 5c 78 37 39 5c 78 61 33 5c  x3f\x8d\x79\xa3\
56f0: 78 30 61 5c 78 31 36 5c 78 35 63 5c 78 62 61 5c  x0a\x16\x5c\xba\
5700: 78 62 65 5c 78 34 35 5c 78 32 62 5c 78 37 37 5c  xbe\x45\x2b\x77\
5710: 78 34 62 5c 78 39 63 5c 78 37 31 5c 78 30 39 5c  x4b\x9c\x71\x09\
5720: 78 61 39 5c 78 37 64 5c 78 31 33 5c 78 38 66 5c  xa9\x7d\x13\x8f\
5730: 78 31 32 5c 78 39 32 5c 78 32 38 5c 78 39 36 5c  x12\x92\x28\x96\
5740: 78 36 66 5c 78 36 63 5c 78 30 61 5c 78 64 63 5c  x6f\x6c\x0a\xdc\
5750: 78 31 30 5c 78 36 61 5c 78 61 64 5c 78 35 61 5c  x10\x6a\xad\x5a\
5760: 78 39 66 5c 78 64 64 5c 78 33 30 5c 78 38 32 5c  x9f\xdd\x30\x82\
5770: 78 35 37 5c 78 36 39 5c 78 62 32 5c 78 63 36 5c  x57\x69\xb2\xc6\
5780: 78 37 31 5c 78 61 66 5c 78 36 37 5c 78 35 39 5c  x71\xaf\x67\x59\
5790: 78 64 66 5c 78 32 38 5c 78 65 62 5c 78 33 39 5c  xdf\x28\xeb\x39\
57a0: 78 33 64 5c 78 35 34 5c 78 64 36 22 0a 20 20 20  x3d\x54\xd6".   
57b0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 37 64 62   } -result {97db
57c0: 63 61 37 64 66 34 36 64 36 32 63 38 61 34 32 32  ca7df46d62c8a422
57d0: 63 39 34 31 64 64 37 65 38 33 35 62 38 61 64 33  c941dd7e835b8ad3
57e0: 33 36 31 37 36 33 66 37 65 39 62 32 64 39 35 66  361763f7e9b2d95f
57f0: 34 66 30 64 61 36 65 31 63 63 62 63 7d 0a 0a 23  4f0da6e1ccbc}..#
5800: 20 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45   RFC 4231 HMAC E
5810: 78 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73  xamples Test Cas
5820: 65 20 23 31 0a 73 65 74 20 6b 65 79 20 5b 62 69  e #1.set key [bi
5830: 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20  nary decode hex 
5840: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22  [string repeat "
5850: 30 62 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74  0b" 20]].set dat
5860: 61 20 22 48 69 20 54 68 65 72 65 22 0a 0a 0a 74  a "Hi There"...t
5870: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
5880: 5f 54 43 31 2d 32 32 2e 31 20 7b 73 68 61 32 32  _TC1-22.1 {sha22
5890: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
58a0: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
58b0: 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79  sha224 -key $key
58c0: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
58d0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 39 36 66   } -result {896f
58e0: 62 31 31 32 38 61 62 62 64 66 31 39 36 38 33 32  b1128abbdf196832
58f0: 31 30 37 63 64 34 39 64 66 33 33 66 34 37 62 34  107cd49df33f47b4
5900: 62 31 31 36 39 39 31 32 62 61 34 66 35 33 36 38  b1169912ba4f5368
5910: 34 62 32 32 7d 0a 0a 74 65 73 74 20 52 46 43 34  4b22}..test RFC4
5920: 32 33 31 5f 48 4d 41 43 5f 54 43 31 2d 32 32 2e  231_HMAC_TC1-22.
5930: 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79  2 {sha256} -body
5940: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
5950: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
5960: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
5970: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
5980: 6c 74 20 7b 62 30 33 34 34 63 36 31 64 38 64 62  lt {b0344c61d8db
5990: 33 38 35 33 35 63 61 38 61 66 63 65 61 66 30 62  38535ca8afceaf0b
59a0: 66 31 32 62 38 38 31 64 63 32 30 30 63 39 38 33  f12b881dc200c983
59b0: 33 64 61 37 32 36 65 39 33 37 36 63 32 65 33 32  3da726e9376c2e32
59c0: 63 66 66 37 7d 0a 0a 74 65 73 74 20 52 46 43 34  cff7}..test RFC4
59d0: 32 33 31 5f 48 4d 41 43 5f 54 43 31 2d 32 32 2e  231_HMAC_TC1-22.
59e0: 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79  3 {sha384} -body
59f0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
5a00: 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20 2d  -digest sha384 -
5a10: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
5a20: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
5a30: 6c 74 20 7b 61 66 64 30 33 39 34 34 64 38 34 38  lt {afd03944d848
5a40: 39 35 36 32 36 62 30 38 32 35 66 34 61 62 34 36  95626b0825f4ab46
5a50: 39 30 37 66 31 35 66 39 64 61 64 62 65 34 31 30  907f15f9dadbe410
5a60: 31 65 63 36 38 32 61 61 30 33 34 63 37 63 65 62  1ec682aa034c7ceb
5a70: 63 35 39 63 66 61 65 61 39 65 61 39 30 37 36 65  c59cfaea9ea9076e
5a80: 64 65 37 66 34 61 66 31 35 32 65 38 62 32 66 61  de7f4af152e8b2fa
5a90: 39 63 62 36 7d 0a 0a 74 65 73 74 20 52 46 43 34  9cb6}..test RFC4
5aa0: 32 33 31 5f 48 4d 41 43 5f 54 43 31 2d 32 32 2e  231_HMAC_TC1-22.
5ab0: 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79  4 {sha512} -body
5ac0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
5ad0: 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20 2d  -digest sha512 -
5ae0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
5af0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
5b00: 6c 74 20 7b 38 37 61 61 37 63 64 65 61 35 65 66  lt {87aa7cdea5ef
5b10: 36 31 39 64 34 66 66 30 62 34 32 34 31 61 31 64  619d4ff0b4241a1d
5b20: 36 63 62 30 32 33 37 39 66 34 65 32 63 65 34 65  6cb02379f4e2ce4e
5b30: 63 32 37 38 37 61 64 30 62 33 30 35 34 35 65 31  c2787ad0b30545e1
5b40: 37 63 64 65 64 61 61 38 33 33 62 37 64 36 62 38  7cdedaa833b7d6b8
5b50: 61 37 30 32 30 33 38 62 32 37 34 65 61 65 61 33  a702038b274eaea3
5b60: 66 34 65 34 62 65 39 64 39 31 34 65 65 62 36 31  f4e4be9d914eeb61
5b70: 66 31 37 30 32 65 36 39 36 63 32 30 33 61 31 32  f1702e696c203a12
5b80: 36 38 35 34 7d 0a 0a 23 20 52 46 43 20 34 32 33  6854}..# RFC 423
5b90: 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20  1 HMAC Examples 
5ba0: 54 65 73 74 20 43 61 73 65 20 23 32 20 2d 20 54  Test Case #2 - T
5bb0: 65 73 74 20 77 69 74 68 20 61 20 6b 65 79 20 73  est with a key s
5bc0: 68 6f 72 74 65 72 20 74 68 61 6e 20 74 68 65 20  horter than the 
5bd0: 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 48 4d  length of the HM
5be0: 41 43 20 6f 75 74 70 75 74 2e 0a 73 65 74 20 6b  AC output..set k
5bf0: 65 79 20 22 4a 65 66 65 22 0a 73 65 74 20 64 61  ey "Jefe".set da
5c00: 74 61 20 22 77 68 61 74 20 64 6f 20 79 61 20 77  ta "what do ya w
5c10: 61 6e 74 20 66 6f 72 20 6e 6f 74 68 69 6e 67 3f  ant for nothing?
5c20: 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31  "...test RFC4231
5c30: 5f 48 4d 41 43 5f 54 43 32 2d 32 33 2e 31 20 7b  _HMAC_TC2-23.1 {
5c40: 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a  sha224} -body {.
5c50: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69  .::tls::hmac -di
5c60: 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79  gest sha224 -key
5c70: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
5c80: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
5c90: 7b 61 33 30 65 30 31 30 39 38 62 63 36 64 62 62  {a30e01098bc6dbb
5ca0: 66 34 35 36 39 30 66 33 61 37 65 39 65 36 64 30  f45690f3a7e9e6d0
5cb0: 66 38 62 62 65 61 32 61 33 39 65 36 31 34 38 30  f8bbea2a39e61480
5cc0: 30 38 66 64 30 35 65 34 34 7d 0a 0a 74 65 73 74  08fd05e44}..test
5cd0: 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43   RFC4231_HMAC_TC
5ce0: 32 2d 32 33 2e 32 20 7b 73 68 61 32 35 36 7d 20  2-23.2 {sha256} 
5cf0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
5d00: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
5d10: 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  256 -key $key -d
5d20: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
5d30: 2d 72 65 73 75 6c 74 20 7b 35 62 64 63 63 31 34  -result {5bdcc14
5d40: 36 62 66 36 30 37 35 34 65 36 61 30 34 32 34 32  6bf60754e6a04242
5d50: 36 30 38 39 35 37 35 63 37 35 61 30 30 33 66 30  6089575c75a003f0
5d60: 38 39 64 32 37 33 39 38 33 39 64 65 63 35 38 62  89d2739839dec58b
5d70: 39 36 34 65 63 33 38 34 33 7d 0a 0a 74 65 73 74  964ec3843}..test
5d80: 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43   RFC4231_HMAC_TC
5d90: 32 2d 32 33 2e 33 20 7b 73 68 61 33 38 34 7d 20  2-23.3 {sha384} 
5da0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
5db0: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
5dc0: 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  384 -key $key -d
5dd0: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
5de0: 2d 72 65 73 75 6c 74 20 7b 61 66 34 35 64 32 65  -result {af45d2e
5df0: 33 37 36 34 38 34 30 33 31 36 31 37 66 37 38 64  376484031617f78d
5e00: 32 62 35 38 61 36 62 31 62 39 63 37 65 66 34 36  2b58a6b1b9c7ef46
5e10: 34 66 35 61 30 31 62 34 37 65 34 32 65 63 33 37  4f5a01b47e42ec37
5e20: 33 36 33 32 32 34 34 35 65 38 65 32 32 34 30 63  36322445e8e2240c
5e30: 61 35 65 36 39 65 32 63 37 38 62 33 32 33 39 65  a5e69e2c78b3239e
5e40: 63 66 61 62 32 31 36 34 39 7d 0a 0a 74 65 73 74  cfab21649}..test
5e50: 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43   RFC4231_HMAC_TC
5e60: 32 2d 32 33 2e 34 20 7b 73 68 61 35 31 32 7d 20  2-23.4 {sha512} 
5e70: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
5e80: 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61  hmac -digest sha
5e90: 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  512 -key $key -d
5ea0: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
5eb0: 2d 72 65 73 75 6c 74 20 7b 31 36 34 62 37 61 37  -result {164b7a7
5ec0: 62 66 63 66 38 31 39 65 32 65 33 39 35 66 62 65  bfcf819e2e395fbe
5ed0: 37 33 62 35 36 65 30 61 33 38 37 62 64 36 34 32  73b56e0a387bd642
5ee0: 32 32 65 38 33 31 66 64 36 31 30 32 37 30 63 64  22e831fd610270cd
5ef0: 37 65 61 32 35 30 35 35 34 39 37 35 38 62 66 37  7ea2505549758bf7
5f00: 35 63 30 35 61 39 39 34 61 36 64 30 33 34 66 36  5c05a994a6d034f6
5f10: 35 66 38 66 30 65 36 66 64 63 61 65 61 62 31 61  5f8f0e6fdcaeab1a
5f20: 33 34 64 34 61 36 62 34 62 36 33 36 65 30 37 30  34d4a6b4b636e070
5f30: 61 33 38 62 63 65 37 33 37 7d 0a 0a 23 20 52 46  a38bce737}..# RF
5f40: 43 20 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d  C 4231 HMAC Exam
5f50: 70 6c 65 73 20 54 65 73 74 20 43 61 73 65 20 23  ples Test Case #
5f60: 33 20 2d 20 54 65 73 74 20 77 69 74 68 20 61 20  3 - Test with a 
5f70: 63 6f 6d 62 69 6e 65 64 20 6c 65 6e 67 74 68 20  combined length 
5f80: 6f 66 20 6b 65 79 20 61 6e 64 20 64 61 74 61 20  of key and data 
5f90: 74 68 61 74 20 69 73 20 6c 61 72 67 65 72 20 74  that is larger t
5fa0: 68 61 6e 20 36 34 20 62 79 74 65 73 20 28 3d 20  han 64 bytes (= 
5fb0: 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48  block-size of SH
5fc0: 41 2d 32 32 34 20 61 6e 64 20 53 48 41 2d 32 35  A-224 and SHA-25
5fd0: 36 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e  6)..set key [bin
5fe0: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b  ary decode hex [
5ff0: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 61  string repeat "a
6000: 61 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74 61  a" 20]].set data
6010: 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20   [binary decode 
6020: 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65  hex [string repe
6030: 61 74 20 22 64 64 22 20 35 30 5d 5d 0a 0a 0a 74  at "dd" 50]]...t
6040: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
6050: 5f 54 43 33 2d 32 34 2e 31 20 7b 73 68 61 32 32  _TC3-24.1 {sha22
6060: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
6070: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
6080: 73 68 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79  sha224 -key $key
6090: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
60a0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 66 62 33   } -result {7fb3
60b0: 63 62 33 35 38 38 63 36 63 31 66 36 66 66 61 39  cb3588c6c1f6ffa9
60c0: 36 39 34 64 37 64 36 61 64 32 36 34 39 33 36 35  694d7d6ad2649365
60d0: 62 30 63 31 66 36 35 64 36 39 64 31 65 63 38 33  b0c1f65d69d1ec83
60e0: 33 33 65 61 7d 0a 0a 74 65 73 74 20 52 46 43 34  33ea}..test RFC4
60f0: 32 33 31 5f 48 4d 41 43 5f 54 43 33 2d 32 34 2e  231_HMAC_TC3-24.
6100: 32 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79  2 {sha256} -body
6110: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
6120: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
6130: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
6140: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
6150: 6c 74 20 7b 37 37 33 65 61 39 31 65 33 36 38 30  lt {773ea91e3680
6160: 30 65 34 36 38 35 34 64 62 38 65 62 64 30 39 31  0e46854db8ebd091
6170: 38 31 61 37 32 39 35 39 30 39 38 62 33 65 66 38  81a72959098b3ef8
6180: 63 31 32 32 64 39 36 33 35 35 31 34 63 65 64 35  c122d9635514ced5
6190: 36 35 66 65 7d 0a 0a 74 65 73 74 20 52 46 43 34  65fe}..test RFC4
61a0: 32 33 31 5f 48 4d 41 43 5f 54 43 33 2d 32 34 2e  231_HMAC_TC3-24.
61b0: 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79  3 {sha384} -body
61c0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
61d0: 2d 64 69 67 65 73 74 20 73 68 61 33 38 34 20 2d  -digest sha384 -
61e0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
61f0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
6200: 6c 74 20 7b 38 38 30 36 32 36 30 38 64 33 65 36  lt {88062608d3e6
6210: 61 64 38 61 30 61 61 32 61 63 65 30 31 34 63 38  ad8a0aa2ace014c8
6220: 61 38 36 66 30 61 61 36 33 35 64 39 34 37 61 63  a86f0aa635d947ac
6230: 39 66 65 62 65 38 33 65 66 34 65 35 35 39 36 36  9febe83ef4e55966
6240: 31 34 34 62 32 61 35 61 62 33 39 64 63 31 33 38  144b2a5ab39dc138
6250: 31 34 62 39 34 65 33 61 62 36 65 31 30 31 61 33  14b94e3ab6e101a3
6260: 34 66 32 37 7d 0a 0a 74 65 73 74 20 52 46 43 34  4f27}..test RFC4
6270: 32 33 31 5f 48 4d 41 43 5f 54 43 33 2d 32 34 2e  231_HMAC_TC3-24.
6280: 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79  4 {sha512} -body
6290: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
62a0: 2d 64 69 67 65 73 74 20 73 68 61 35 31 32 20 2d  -digest sha512 -
62b0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
62c0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
62d0: 6c 74 20 7b 66 61 37 33 62 30 30 38 39 64 35 36  lt {fa73b0089d56
62e0: 61 32 38 34 65 66 62 30 66 30 37 35 36 63 38 39  a284efb0f0756c89
62f0: 30 62 65 39 62 31 62 35 64 62 64 64 38 65 65 38  0be9b1b5dbdd8ee8
6300: 31 61 33 36 35 35 66 38 33 65 33 33 62 32 32 37  1a3655f83e33b227
6310: 39 64 33 39 62 66 33 65 38 34 38 32 37 39 61 37  9d39bf3e848279a7
6320: 32 32 63 38 30 36 62 34 38 35 61 34 37 65 36 37  22c806b485a47e67
6330: 63 38 30 37 62 39 34 36 61 33 33 37 62 65 65 38  c807b946a337bee8
6340: 39 34 32 36 37 34 32 37 38 38 35 39 65 31 33 32  942674278859e132
6350: 39 32 66 62 7d 0a 0a 23 20 52 46 43 20 34 32 33  92fb}..# RFC 423
6360: 31 20 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20  1 HMAC Examples 
6370: 54 65 73 74 20 43 61 73 65 20 23 34 20 2d 20 54  Test Case #4 - T
6380: 65 73 74 20 77 69 74 68 20 61 20 63 6f 6d 62 69  est with a combi
6390: 6e 65 64 20 6c 65 6e 67 74 68 20 6f 66 20 6b 65  ned length of ke
63a0: 79 20 61 6e 64 20 64 61 74 61 20 74 68 61 74 20  y and data that 
63b0: 69 73 20 6c 61 72 67 65 72 20 74 68 61 6e 20 36  is larger than 6
63c0: 34 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63 6b  4 bytes (= block
63d0: 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d 32 32 34  -size of SHA-224
63e0: 20 61 6e 64 20 53 48 41 2d 32 35 36 29 2e 0a 73   and SHA-256)..s
63f0: 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64  et key [binary d
6400: 65 63 6f 64 65 20 68 65 78 20 22 30 31 30 32 30  ecode hex "01020
6410: 33 30 34 30 35 30 36 30 37 30 38 30 39 30 61 30  30405060708090a0
6420: 62 30 63 30 64 30 65 30 66 31 30 31 31 31 32 31  b0c0d0e0f1011121
6430: 33 31 34 31 35 31 36 31 37 31 38 31 39 22 5d 0a  3141516171819"].
6440: 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79  set data [binary
6450: 20 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72   decode hex [str
6460: 69 6e 67 20 72 65 70 65 61 74 20 22 63 64 22 20  ing repeat "cd" 
6470: 35 30 5d 5d 0a 0a 0a 74 65 73 74 20 52 46 43 34  50]]...test RFC4
6480: 32 33 31 5f 48 4d 41 43 5f 54 43 34 2d 32 35 2e  231_HMAC_TC4-25.
6490: 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79  1 {sha224} -body
64a0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
64b0: 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 20 2d  -digest sha224 -
64c0: 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24  key $key -data $
64d0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
64e0: 6c 74 20 7b 36 63 31 31 35 30 36 38 37 34 30 31  lt {6c1150687401
64f0: 33 63 61 63 36 61 32 61 62 63 31 62 62 33 38 32  3cac6a2abc1bb382
6500: 36 32 37 63 65 63 36 61 39 30 64 38 36 65 66 63  627cec6a90d86efc
6510: 30 31 32 64 65 37 61 66 65 63 35 61 7d 0a 0a 74  012de7afec5a}..t
6520: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
6530: 5f 54 43 34 2d 32 35 2e 32 20 7b 73 68 61 32 35  _TC4-25.2 {sha25
6540: 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  6} -body {..::tl
6550: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
6560: 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79  sha256 -key $key
6570: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
6580: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 32 35 35   } -result {8255
6590: 38 61 33 38 39 61 34 34 33 63 30 65 61 34 63 63  8a389a443c0ea4cc
65a0: 38 31 39 38 39 39 66 32 30 38 33 61 38 35 66 30  819899f2083a85f0
65b0: 66 61 61 33 65 35 37 38 66 38 30 37 37 61 32 65  faa3e578f8077a2e
65c0: 33 66 66 34 36 37 32 39 36 36 35 62 7d 0a 0a 74  3ff46729665b}..t
65d0: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
65e0: 5f 54 43 34 2d 32 35 2e 33 20 7b 73 68 61 33 38  _TC4-25.3 {sha38
65f0: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  4} -body {..::tl
6600: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
6610: 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79  sha384 -key $key
6620: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
6630: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 33 65 38 61   } -result {3e8a
6640: 36 39 62 37 37 38 33 63 32 35 38 35 31 39 33 33  69b7783c25851933
6650: 61 62 36 32 39 30 61 66 36 63 61 37 37 61 39 39  ab6290af6ca77a99
6660: 38 31 34 38 30 38 35 30 30 30 39 63 63 35 35 37  81480850009cc557
6670: 37 63 36 65 31 66 35 37 33 62 34 65 36 38 30 31  7c6e1f573b4e6801
6680: 64 64 32 33 63 34 61 37 64 36 37 39 63 63 66 38  dd23c4a7d679ccf8
6690: 61 33 38 36 63 36 37 34 63 66 66 62 7d 0a 0a 74  a386c674cffb}..t
66a0: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
66b0: 5f 54 43 34 2d 32 35 2e 34 20 7b 73 68 61 35 31  _TC4-25.4 {sha51
66c0: 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  2} -body {..::tl
66d0: 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20  s::hmac -digest 
66e0: 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79  sha512 -key $key
66f0: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
6700: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 30 62 61   } -result {b0ba
6710: 34 36 35 36 33 37 34 35 38 63 36 39 39 30 65 35  465637458c6990e5
6720: 61 38 63 35 66 36 31 64 34 61 66 37 65 35 37 36  a8c5f61d4af7e576
6730: 64 39 37 66 66 39 34 62 38 37 32 64 65 37 36 66  d97ff94b872de76f
6740: 38 30 35 30 33 36 31 65 65 33 64 62 61 39 31 63  8050361ee3dba91c
6750: 61 35 63 31 31 61 61 32 35 65 62 34 64 36 37 39  a5c11aa25eb4d679
6760: 32 37 35 63 63 35 37 38 38 30 36 33 61 35 66 31  275cc5788063a5f1
6770: 39 37 34 31 31 32 30 63 34 66 32 64 65 32 61 64  9741120c4f2de2ad
6780: 65 62 65 62 31 30 61 32 39 38 64 64 7d 0a 0a 23  ebeb10a298dd}..#
6790: 20 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45   RFC 4231 HMAC E
67a0: 78 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73  xamples Test Cas
67b0: 65 20 23 35 20 2d 20 54 65 73 74 20 77 69 74 68  e #5 - Test with
67c0: 20 61 20 74 72 75 6e 63 61 74 69 6f 6e 20 6f 66   a truncation of
67d0: 20 6f 75 74 70 75 74 20 74 6f 20 31 32 38 20 62   output to 128 b
67e0: 69 74 73 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69  its..set key [bi
67f0: 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20  nary decode hex 
6800: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22  [string repeat "
6810: 30 63 22 20 32 30 5d 5d 0a 73 65 74 20 64 61 74  0c" 20]].set dat
6820: 61 20 22 54 65 73 74 20 57 69 74 68 20 54 72 75  a "Test With Tru
6830: 6e 63 61 74 69 6f 6e 22 0a 0a 0a 74 65 73 74 20  ncation"...test 
6840: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 35  RFC4231_HMAC_TC5
6850: 2d 32 36 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d  -26.1 {sha224} -
6860: 62 6f 64 79 20 7b 0a 09 73 74 72 69 6e 67 20 72  body {..string r
6870: 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61  ange [::tls::hma
6880: 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 34  c -digest sha224
6890: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
68a0: 20 24 64 61 74 61 5d 20 30 20 33 31 0a 20 20 20   $data] 0 31.   
68b0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30 65 32 61   } -result {0e2a
68c0: 65 61 36 38 61 39 30 63 38 64 33 37 63 39 38 38  ea68a90c8d37c988
68d0: 62 63 64 62 39 66 63 61 36 66 61 38 7d 0a 0a 74  bcdb9fca6fa8}..t
68e0: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
68f0: 5f 54 43 35 2d 32 36 2e 32 20 7b 73 68 61 32 35  _TC5-26.2 {sha25
6900: 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 74 72 69  6} -body {..stri
6910: 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a  ng range [::tls:
6920: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
6930: 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a256 -key $key -
6940: 64 61 74 61 20 24 64 61 74 61 5d 20 30 20 33 31  data $data] 0 31
6950: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
6960: 61 33 62 36 31 36 37 34 37 33 31 30 30 65 65 30  a3b6167473100ee0
6970: 36 65 30 63 37 39 36 63 32 39 35 35 35 35 32 62  6e0c796c2955552b
6980: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
6990: 48 4d 41 43 5f 54 43 35 2d 32 36 2e 33 20 7b 73  HMAC_TC5-26.3 {s
69a0: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha384} -body {..
69b0: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a  string range [::
69c0: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
69d0: 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b  t sha384 -key $k
69e0: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20  ey -data $data] 
69f0: 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75  0 31.    } -resu
6a00: 6c 74 20 7b 33 61 62 66 33 34 63 33 35 30 33 62  lt {3abf34c3503b
6a10: 32 61 32 33 61 34 36 65 66 63 36 31 39 62 61 65  2a23a46efc619bae
6a20: 66 38 39 37 7d 0a 0a 74 65 73 74 20 52 46 43 34  f897}..test RFC4
6a30: 32 33 31 5f 48 4d 41 43 5f 54 43 35 2d 32 36 2e  231_HMAC_TC5-26.
6a40: 34 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79  4 {sha512} -body
6a50: 20 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65   {..string range
6a60: 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64   [::tls::hmac -d
6a70: 69 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65  igest sha512 -ke
6a80: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
6a90: 74 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d  ta] 0 31.    } -
6aa0: 72 65 73 75 6c 74 20 7b 34 31 35 66 61 64 36 32  result {415fad62
6ab0: 37 31 35 38 30 61 35 33 31 64 34 31 37 39 62 63  71580a531d4179bc
6ac0: 38 39 31 64 38 37 61 36 7d 0a 0a 23 20 52 46 43  891d87a6}..# RFC
6ad0: 20 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70   4231 HMAC Examp
6ae0: 6c 65 73 20 54 65 73 74 20 43 61 73 65 20 23 36  les Test Case #6
6af0: 20 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 6b   - Test with a k
6b00: 65 79 20 6c 61 72 67 65 72 20 74 68 61 6e 20 31  ey larger than 1
6b10: 32 38 20 62 79 74 65 73 20 28 3d 20 62 6c 6f 63  28 bytes (= bloc
6b20: 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41 2d 33 38  k-size of SHA-38
6b30: 34 20 61 6e 64 20 53 48 41 2d 35 31 32 29 2e 0a  4 and SHA-512)..
6b40: 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20  set key [binary 
6b50: 64 65 63 6f 64 65 20 68 65 78 20 5b 73 74 72 69  decode hex [stri
6b60: 6e 67 20 72 65 70 65 61 74 20 22 61 61 22 20 31  ng repeat "aa" 1
6b70: 33 31 5d 5d 0a 73 65 74 20 64 61 74 61 20 22 54  31]].set data "T
6b80: 65 73 74 20 55 73 69 6e 67 20 4c 61 72 67 65 72  est Using Larger
6b90: 20 54 68 61 6e 20 42 6c 6f 63 6b 2d 53 69 7a 65   Than Block-Size
6ba0: 20 4b 65 79 20 2d 20 48 61 73 68 20 4b 65 79 20   Key - Hash Key 
6bb0: 46 69 72 73 74 22 0a 0a 0a 74 65 73 74 20 52 46  First"...test RF
6bc0: 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 36 2d 32  C4231_HMAC_TC6-2
6bd0: 37 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f  7.1 {sha224} -bo
6be0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61  dy {..::tls::hma
6bf0: 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 34  c -digest sha224
6c00: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
6c10: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65   $data.    } -re
6c20: 73 75 6c 74 20 7b 39 35 65 39 61 30 64 62 39 36  sult {95e9a0db96
6c30: 32 30 39 35 61 64 61 65 62 65 39 62 32 64 36 66  2095adaebe9b2d6f
6c40: 30 64 62 63 65 32 64 34 39 39 66 31 31 32 66 32  0dbce2d499f112f2
6c50: 64 32 62 37 32 37 33 66 61 36 38 37 30 65 7d 0a  d2b7273fa6870e}.
6c60: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d  .test RFC4231_HM
6c70: 41 43 5f 54 43 36 2d 32 37 2e 32 20 7b 73 68 61  AC_TC6-27.2 {sha
6c80: 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  256} -body {..::
6c90: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
6ca0: 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b  t sha256 -key $k
6cb0: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
6cc0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 30     } -result {60
6cd0: 65 34 33 31 35 39 31 65 65 30 62 36 37 66 30 64  e431591ee0b67f0d
6ce0: 38 61 32 36 61 61 63 62 66 35 62 37 37 66 38 65  8a26aacbf5b77f8e
6cf0: 30 62 63 36 32 31 33 37 32 38 63 35 31 34 30 35  0bc6213728c51405
6d00: 34 36 30 34 30 66 30 65 65 33 37 66 35 34 7d 0a  46040f0ee37f54}.
6d10: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d  .test RFC4231_HM
6d20: 41 43 5f 54 43 36 2d 32 37 2e 33 20 7b 73 68 61  AC_TC6-27.3 {sha
6d30: 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  384} -body {..::
6d40: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
6d50: 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b  t sha384 -key $k
6d60: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
6d70: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 65     } -result {4e
6d80: 63 65 30 38 34 34 38 35 38 31 33 65 39 30 38 38  ce084485813e9088
6d90: 64 32 63 36 33 61 30 34 31 62 63 35 62 34 34 66  d2c63a041bc5b44f
6da0: 39 65 66 31 30 31 32 61 32 62 35 38 38 66 33 63  9ef1012a2b588f3c
6db0: 64 31 31 66 30 35 30 33 33 61 63 34 63 36 30 63  d11f05033ac4c60c
6dc0: 32 65 66 36 61 62 34 30 33 30 66 65 38 32 39 36  2ef6ab4030fe8296
6dd0: 32 34 38 64 66 31 36 33 66 34 34 39 35 32 7d 0a  248df163f44952}.
6de0: 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d  .test RFC4231_HM
6df0: 41 43 5f 54 43 36 2d 32 37 2e 34 20 7b 73 68 61  AC_TC6-27.4 {sha
6e00: 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  512} -body {..::
6e10: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
6e20: 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b  t sha512 -key $k
6e30: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20  ey -data $data. 
6e40: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38 30     } -result {80
6e50: 62 32 34 32 36 33 63 37 63 31 61 33 65 62 62 37  b24263c7c1a3ebb7
6e60: 31 34 39 33 63 31 64 64 37 62 65 38 62 34 39 62  1493c1dd7be8b49b
6e70: 34 36 64 31 66 34 31 62 34 61 65 65 63 31 31 32  46d1f41b4aeec112
6e80: 31 62 30 31 33 37 38 33 66 38 66 33 35 32 36 62  1b013783f8f3526b
6e90: 35 36 64 30 33 37 65 30 35 66 32 35 39 38 62 64  56d037e05f2598bd
6ea0: 30 66 64 32 32 31 35 64 36 61 31 65 35 32 39 35  0fd2215d6a1e5295
6eb0: 65 36 34 66 37 33 66 36 33 66 30 61 65 63 38 62  e64f73f63f0aec8b
6ec0: 39 31 35 61 39 38 35 64 37 38 36 35 39 38 7d 0a  915a985d786598}.
6ed0: 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d 41 43  .# RFC 4231 HMAC
6ee0: 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20 43   Examples Test C
6ef0: 61 73 65 20 23 37 20 2d 20 54 65 73 74 20 77 69  ase #7 - Test wi
6f00: 74 68 20 61 20 6b 65 79 20 61 6e 64 20 64 61 74  th a key and dat
6f10: 61 20 74 68 61 74 20 69 73 20 6c 61 72 67 65 72  a that is larger
6f20: 20 74 68 61 6e 20 31 32 38 20 62 79 74 65 73 20   than 128 bytes 
6f30: 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66  (= block-size of
6f40: 20 53 48 41 2d 33 38 34 20 61 6e 64 20 53 48 41   SHA-384 and SHA
6f50: 2d 35 31 32 29 2e 0a 73 65 74 20 6b 65 79 20 5b  -512)..set key [
6f60: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
6f70: 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74  x [string repeat
6f80: 20 22 61 61 22 20 31 33 31 5d 5d 0a 73 65 74 20   "aa" 131]].set 
6f90: 64 61 74 61 20 22 54 68 69 73 20 69 73 20 61 20  data "This is a 
6fa0: 74 65 73 74 20 75 73 69 6e 67 20 61 20 6c 61 72  test using a lar
6fb0: 67 65 72 20 74 68 61 6e 20 62 6c 6f 63 6b 2d 73  ger than block-s
6fc0: 69 7a 65 20 6b 65 79 20 61 6e 64 20 61 20 6c 61  ize key and a la
6fd0: 72 67 65 72 20 74 68 61 6e 20 62 6c 6f 63 6b 2d  rger than block-
6fe0: 73 69 7a 65 20 64 61 74 61 2e 20 54 68 65 20 6b  size data. The k
6ff0: 65 79 20 6e 65 65 64 73 20 74 6f 20 62 65 20 68  ey needs to be h
7000: 61 73 68 65 64 20 62 65 66 6f 72 65 20 62 65 69  ashed before bei
7010: 6e 67 20 75 73 65 64 20 62 79 20 74 68 65 20 48  ng used by the H
7020: 4d 41 43 20 61 6c 67 6f 72 69 74 68 6d 2e 22 0a  MAC algorithm.".
7030: 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f 48  ..test RFC4231_H
7040: 4d 41 43 5f 54 43 37 2d 32 38 2e 31 20 7b 73 68  MAC_TC7-28.1 {sh
7050: 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  a224} -body {..:
7060: 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65  :tls::hmac -dige
7070: 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20 24  st sha224 -key $
7080: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
7090: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 33      } -result {3
70a0: 61 38 35 34 31 36 36 61 63 35 64 39 66 30 32 33  a854166ac5d9f023
70b0: 66 35 34 64 35 31 37 64 30 62 33 39 64 62 64 39  f54d517d0b39dbd9
70c0: 34 36 37 37 30 64 62 39 63 32 62 39 35 63 39 66  46770db9c2b95c9f
70d0: 36 66 35 36 35 64 31 7d 0a 0a 74 65 73 74 20 52  6f565d1}..test R
70e0: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 37 2d  FC4231_HMAC_TC7-
70f0: 32 38 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d 62  28.2 {sha256} -b
7100: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
7110: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  ac -digest sha25
7120: 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  6 -key $key -dat
7130: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
7140: 65 73 75 6c 74 20 7b 39 62 30 39 66 66 61 37 31  esult {9b09ffa71
7150: 62 39 34 32 66 63 62 32 37 36 33 35 66 62 63 64  b942fcb27635fbcd
7160: 35 62 30 65 39 34 34 62 66 64 63 36 33 36 34 34  5b0e944bfdc63644
7170: 66 30 37 31 33 39 33 38 61 37 66 35 31 35 33 35  f0713938a7f51535
7180: 63 33 61 33 35 65 32 7d 0a 0a 74 65 73 74 20 52  c3a35e2}..test R
7190: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 37 2d  FC4231_HMAC_TC7-
71a0: 32 38 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d 62  28.3 {sha384} -b
71b0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
71c0: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 33 38  ac -digest sha38
71d0: 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  4 -key $key -dat
71e0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
71f0: 65 73 75 6c 74 20 7b 36 36 31 37 31 37 38 65 39  esult {6617178e9
7200: 34 31 66 30 32 30 64 33 35 31 65 32 66 32 35 34  41f020d351e2f254
7210: 65 38 66 64 33 32 63 36 30 32 34 32 30 66 65 62  e8fd32c602420feb
7220: 30 62 38 66 62 39 61 64 63 63 65 62 62 38 32 34  0b8fb9adccebb824
7230: 36 31 65 39 39 63 35 61 36 37 38 63 63 33 31 65  61e99c5a678cc31e
7240: 37 39 39 31 37 36 64 33 38 36 30 65 36 31 31 30  799176d3860e6110
7250: 63 34 36 35 32 33 65 7d 0a 0a 74 65 73 74 20 52  c46523e}..test R
7260: 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 37 2d  FC4231_HMAC_TC7-
7270: 32 38 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d 62  28.4 {sha512} -b
7280: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d  ody {..::tls::hm
7290: 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35 31  ac -digest sha51
72a0: 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  2 -key $key -dat
72b0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
72c0: 65 73 75 6c 74 20 7b 65 33 37 62 36 61 37 37 35  esult {e37b6a775
72d0: 64 63 38 37 64 62 61 61 34 64 66 61 39 66 39 36  dc87dbaa4dfa9f96
72e0: 65 35 65 33 66 66 64 64 65 62 64 37 31 66 38 38  e5e3ffddebd71f88
72f0: 36 37 32 38 39 38 36 35 64 66 35 61 33 32 64 32  67289865df5a32d2
7300: 30 63 64 63 39 34 34 62 36 30 32 32 63 61 63 33  0cdc944b6022cac3
7310: 63 34 39 38 32 62 31 30 64 35 65 65 62 35 35 63  c4982b10d5eeb55c
7320: 33 65 34 64 65 31 35 31 33 34 36 37 36 66 62 36  3e4de15134676fb6
7330: 64 65 30 34 34 36 30 36 35 63 39 37 34 34 30 66  de0446065c97440f
7340: 61 38 63 36 61 35 38 7d 0a 0a 23 20 4e 49 53 54  a8c6a58}..# NIST
7350: 20 38 30 30 2d 33 38 62 20 52 65 63 6f 6d 6d 65   800-38b Recomme
7360: 6e 64 61 74 69 6f 6e 20 66 6f 72 20 42 6c 6f 63  ndation for Bloc
7370: 6b 20 43 69 70 68 65 72 20 4d 6f 64 65 73 20 6f  k Cipher Modes o
7380: 66 20 4f 70 65 72 61 74 69 6f 6e 3a 20 54 68 65  f Operation: The
7390: 20 43 4d 41 43 20 4d 6f 64 65 20 66 6f 72 20 41   CMAC Mode for A
73a0: 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 0a 23 20  uthentication.# 
73b0: 41 45 53 2d 31 32 38 0a 73 65 74 20 6b 65 79 20  AES-128.set key 
73c0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
73d0: 65 78 20 22 32 62 37 65 31 35 31 36 32 38 61 65  ex "2b7e151628ae
73e0: 64 32 61 36 61 62 66 37 31 35 38 38 30 39 63 66  d2a6abf7158809cf
73f0: 34 66 33 63 22 5d 0a 0a 0a 74 65 73 74 20 4e 49  4f3c"]...test NI
7400: 53 54 38 30 30 2d 33 38 62 2d 41 45 53 31 32 38  ST800-38b-AES128
7410: 2d 32 39 2e 31 20 7b 6c 65 6e 3d 30 7d 20 2d 62  -29.1 {len=0} -b
7420: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
7430: 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 31  ac -cipher aes-1
7440: 32 38 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79  28-cbc -key $key
7450: 20 2d 64 61 74 61 20 22 22 0a 20 20 20 20 7d 20   -data "".    } 
7460: 2d 72 65 73 75 6c 74 20 7b 62 62 31 64 36 39 32  -result {bb1d692
7470: 39 65 39 35 39 33 37 32 38 37 66 61 33 37 64 31  9e95937287fa37d1
7480: 32 39 62 37 35 36 37 34 36 7d 0a 73 65 74 20 64  29b756746}.set d
7490: 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  ata [binary deco
74a0: 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32  de hex "6bc1bee2
74b0: 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31  2e409f96e93d7e11
74c0: 37 33 39 33 31 37 32 61 22 5d 0a 0a 74 65 73 74  7393172a"]..test
74d0: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53   NIST800-38b-AES
74e0: 31 32 38 2d 32 39 2e 32 20 7b 6c 65 6e 3d 31 32  128-29.2 {len=12
74f0: 38 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  8} -body {..::tl
7500: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20  s::cmac -cipher 
7510: 61 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79  aes-128-cbc -key
7520: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
7530: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
7540: 7b 30 37 30 61 31 36 62 34 36 62 34 64 34 31 34  {070a16b46b4d414
7550: 34 66 37 39 62 64 64 39 64 64 30 34 61 32 38 37  4f79bdd9dd04a287
7560: 63 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e  c}.set data [bin
7570: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22  ary decode hex "
7580: 36 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36  6bc1bee22e409f96
7590: 65 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61  e93d7e117393172a
75a0: 61 65 32 64 38 61 35 37 31 65 30 33 61 63 39 63  ae2d8a571e03ac9c
75b0: 39 65 62 37 36 66 61 63 34 35 61 66 38 65 35 31  9eb76fac45af8e51
75c0: 33 30 63 38 31 63 34 36 61 33 35 63 65 34 31 31  30c81c46a35ce411
75d0: 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30  "]..test NIST800
75e0: 2d 33 38 62 2d 41 45 53 31 32 38 2d 32 39 2e 33  -38b-AES128-29.3
75f0: 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d 62 6f 64 79   {len=320} -body
7600: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20   {..::tls::cmac 
7610: 2d 63 69 70 68 65 72 20 61 65 73 2d 31 32 38 2d  -cipher aes-128-
7620: 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  cbc -key $key -d
7630: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
7640: 2d 72 65 73 75 6c 74 20 7b 64 66 61 36 36 37 34  -result {dfa6674
7650: 37 64 65 39 61 65 36 33 30 33 30 63 61 33 32 36  7de9ae63030ca326
7660: 31 31 34 39 37 63 38 32 37 7d 0a 73 65 74 20 64  11497c827}.set d
7670: 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  ata [binary deco
7680: 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32  de hex "6bc1bee2
7690: 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31  2e409f96e93d7e11
76a0: 37 33 39 33 31 37 32 61 61 65 32 64 38 61 35 37  7393172aae2d8a57
76b0: 31 65 30 33 61 63 39 63 39 65 62 37 36 66 61 63  1e03ac9c9eb76fac
76c0: 34 35 61 66 38 65 35 31 33 30 63 38 31 63 34 36  45af8e5130c81c46
76d0: 61 33 35 63 65 34 31 31 65 35 66 62 63 31 31 39  a35ce411e5fbc119
76e0: 31 61 30 61 35 32 65 66 66 36 39 66 32 34 34 35  1a0a52eff69f2445
76f0: 64 66 34 66 39 62 31 37 61 64 32 62 34 31 37 62  df4f9b17ad2b417b
7700: 65 36 36 63 33 37 31 30 22 5d 0a 0a 74 65 73 74  e66c3710"]..test
7710: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53   NIST800-38b-AES
7720: 31 32 38 2d 32 39 2e 34 20 7b 6c 65 6e 3d 35 31  128-29.4 {len=51
7730: 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  2} -body {..::tl
7740: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20  s::cmac -cipher 
7750: 61 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79  aes-128-cbc -key
7760: 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74   $key -data $dat
7770: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
7780: 7b 35 31 66 30 62 65 62 66 37 65 33 62 39 64 39  {51f0bebf7e3b9d9
7790: 32 66 63 34 39 37 34 31 37 37 39 33 36 33 63 66  2fc49741779363cf
77a0: 65 7d 0a 0a 23 20 41 45 53 2d 31 39 32 0a 73 65  e}..# AES-192.se
77b0: 74 20 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65  t key [binary de
77c0: 63 6f 64 65 20 68 65 78 20 22 38 65 37 33 62 30  code hex "8e73b0
77d0: 66 37 64 61 30 65 36 34 35 32 63 38 31 30 66 33  f7da0e6452c810f3
77e0: 32 62 38 30 39 30 37 39 65 35 36 32 66 38 65 61  2b809079e562f8ea
77f0: 64 32 35 32 32 63 36 62 37 62 22 5d 0a 0a 0a 74  d2522c6b7b"]...t
7800: 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d  est NIST800-38b-
7810: 41 45 53 2d 31 39 32 2d 33 30 2e 31 20 7b 6c 65  AES-192-30.1 {le
7820: 6e 3d 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  n=0} -body {..::
7830: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65  tls::cmac -ciphe
7840: 72 20 61 65 73 2d 31 39 32 2d 63 62 63 20 2d 6b  r aes-192-cbc -k
7850: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 22 22  ey $key -data ""
7860: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
7870: 64 31 37 64 64 66 34 36 61 64 61 61 63 64 65 35  d17ddf46adaacde5
7880: 33 31 63 61 63 34 38 33 64 65 37 61 39 33 36 37  31cac483de7a9367
7890: 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61  }.set data [bina
78a0: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36  ry decode hex "6
78b0: 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36 65  bc1bee22e409f96e
78c0: 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61 22  93d7e117393172a"
78d0: 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d  ]..test NIST800-
78e0: 33 38 62 2d 41 45 53 2d 31 39 32 2d 33 30 2e 32  38b-AES-192-30.2
78f0: 20 7b 6c 65 6e 3d 31 32 38 7d 20 2d 62 6f 64 79   {len=128} -body
7900: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20   {..::tls::cmac 
7910: 2d 63 69 70 68 65 72 20 61 65 73 2d 31 39 32 2d  -cipher aes-192-
7920: 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  cbc -key $key -d
7930: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
7940: 2d 72 65 73 75 6c 74 20 7b 39 65 39 39 61 37 62  -result {9e99a7b
7950: 66 33 31 65 37 31 30 39 30 30 36 36 32 66 36 35  f31e710900662f65
7960: 65 36 31 37 63 35 31 38 34 7d 0a 73 65 74 20 64  e617c5184}.set d
7970: 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  ata [binary deco
7980: 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65 32  de hex "6bc1bee2
7990: 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31 31  2e409f96e93d7e11
79a0: 37 33 39 33 31 37 32 61 61 65 32 64 38 61 35 37  7393172aae2d8a57
79b0: 31 65 30 33 61 63 39 63 39 65 62 37 36 66 61 63  1e03ac9c9eb76fac
79c0: 34 35 61 66 38 65 35 31 33 30 63 38 31 63 34 36  45af8e5130c81c46
79d0: 61 33 35 63 65 34 31 31 22 5d 0a 0a 74 65 73 74  a35ce411"]..test
79e0: 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53   NIST800-38b-AES
79f0: 2d 31 39 32 2d 33 30 2e 33 20 7b 6c 65 6e 3d 33  -192-30.3 {len=3
7a00: 32 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  20} -body {..::t
7a10: 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72  ls::cmac -cipher
7a20: 20 61 65 73 2d 31 39 32 2d 63 62 63 20 2d 6b 65   aes-192-cbc -ke
7a30: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
7a40: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
7a50: 20 7b 38 61 31 64 65 35 62 65 32 65 62 33 31 61   {8a1de5be2eb31a
7a60: 61 64 30 38 39 61 38 32 65 36 65 65 39 30 38 62  ad089a82e6ee908b
7a70: 30 65 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69  0e}.set data [bi
7a80: 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20  nary decode hex 
7a90: 22 36 62 63 31 62 65 65 32 32 65 34 30 39 66 39  "6bc1bee22e409f9
7aa0: 36 65 39 33 64 37 65 31 31 37 33 39 33 31 37 32  6e93d7e117393172
7ab0: 61 61 65 32 64 38 61 35 37 31 65 30 33 61 63 39  aae2d8a571e03ac9
7ac0: 63 39 65 62 37 36 66 61 63 34 35 61 66 38 65 35  c9eb76fac45af8e5
7ad0: 31 33 30 63 38 31 63 34 36 61 33 35 63 65 34 31  130c81c46a35ce41
7ae0: 31 65 35 66 62 63 31 31 39 31 61 30 61 35 32 65  1e5fbc1191a0a52e
7af0: 66 66 36 39 66 32 34 34 35 64 66 34 66 39 62 31  ff69f2445df4f9b1
7b00: 37 61 64 32 62 34 31 37 62 65 36 36 63 33 37 31  7ad2b417be66c371
7b10: 30 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30  0"]..test NIST80
7b20: 30 2d 33 38 62 2d 41 45 53 2d 31 39 32 2d 33 30  0-38b-AES-192-30
7b30: 2e 34 20 7b 6c 65 6e 3d 35 31 32 7d 20 2d 62 6f  .4 {len=512} -bo
7b40: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61  dy {..::tls::cma
7b50: 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 31 39  c -cipher aes-19
7b60: 32 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20  2-cbc -key $key 
7b70: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
7b80: 7d 20 2d 72 65 73 75 6c 74 20 7b 61 31 64 35 64  } -result {a1d5d
7b90: 66 30 65 65 64 37 39 30 66 37 39 34 64 37 37 35  f0eed790f794d775
7ba0: 38 39 36 35 39 66 33 39 61 31 31 7d 0a 0a 23 20  89659f39a11}..# 
7bb0: 41 45 53 2d 32 35 36 0a 73 65 74 20 6b 65 79 20  AES-256.set key 
7bc0: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
7bd0: 65 78 20 22 36 30 33 64 65 62 31 30 31 35 63 61  ex "603deb1015ca
7be0: 37 31 62 65 32 62 37 33 61 65 66 30 38 35 37 64  71be2b73aef0857d
7bf0: 37 37 38 31 31 66 33 35 32 63 30 37 33 62 36 31  77811f352c073b61
7c00: 30 38 64 37 32 64 39 38 31 30 61 33 30 39 31 34  08d72d9810a30914
7c10: 64 66 66 34 22 5d 0a 0a 0a 74 65 73 74 20 4e 49  dff4"]...test NI
7c20: 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 32 35  ST800-38b-AES-25
7c30: 36 2d 33 31 2e 31 20 7b 6c 65 6e 3d 30 7d 20 2d  6-31.1 {len=0} -
7c40: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
7c50: 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d  mac -cipher aes-
7c60: 32 35 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65  256-cbc -key $ke
7c70: 79 20 2d 64 61 74 61 20 22 22 0a 20 20 20 20 7d  y -data "".    }
7c80: 20 2d 72 65 73 75 6c 74 20 7b 30 32 38 39 36 32   -result {028962
7c90: 66 36 31 62 37 62 66 38 39 65 66 63 36 62 35 35  f61b7bf89efc6b55
7ca0: 31 66 34 36 36 37 64 39 38 33 7d 0a 73 65 74 20  1f4667d983}.set 
7cb0: 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63  data [binary dec
7cc0: 6f 64 65 20 68 65 78 20 22 36 62 63 31 62 65 65  ode hex "6bc1bee
7cd0: 32 32 65 34 30 39 66 39 36 65 39 33 64 37 65 31  22e409f96e93d7e1
7ce0: 31 37 33 39 33 31 37 32 61 22 5d 0a 0a 74 65 73  17393172a"]..tes
7cf0: 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45  t NIST800-38b-AE
7d00: 53 2d 32 35 36 2d 33 31 2e 32 20 7b 6c 65 6e 3d  S-256-31.2 {len=
7d10: 31 32 38 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  128} -body {..::
7d20: 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65  tls::cmac -ciphe
7d30: 72 20 61 65 73 2d 32 35 36 2d 63 62 63 20 2d 6b  r aes-256-cbc -k
7d40: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
7d50: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
7d60: 74 20 7b 32 38 61 37 30 32 33 66 34 35 32 65 38  t {28a7023f452e8
7d70: 66 38 32 62 64 34 62 66 32 38 64 38 63 33 37 63  f82bd4bf28d8c37c
7d80: 33 35 63 7d 0a 73 65 74 20 64 61 74 61 20 5b 62  35c}.set data [b
7d90: 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78  inary decode hex
7da0: 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39 66   "6bc1bee22e409f
7db0: 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31 37  96e93d7e11739317
7dc0: 32 61 61 65 32 64 38 61 35 37 31 65 30 33 61 63  2aae2d8a571e03ac
7dd0: 39 63 39 65 62 37 36 66 61 63 34 35 61 66 38 65  9c9eb76fac45af8e
7de0: 35 31 33 30 63 38 31 63 34 36 61 33 35 63 65 34  5130c81c46a35ce4
7df0: 31 31 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38  11"]..test NIST8
7e00: 30 30 2d 33 38 62 2d 41 45 53 2d 32 35 36 2d 33  00-38b-AES-256-3
7e10: 31 2e 33 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d 62  1.3 {len=320} -b
7e20: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
7e30: 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d 32  ac -cipher aes-2
7e40: 35 36 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65 79  56-cbc -key $key
7e50: 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20   -data $data.   
7e60: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61 61 66 33   } -result {aaf3
7e70: 64 38 66 31 64 65 35 36 34 30 63 32 33 32 66 35  d8f1de5640c232f5
7e80: 62 31 36 39 62 39 63 39 31 31 65 36 7d 0a 73 65  b169b9c911e6}.se
7e90: 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64  t data [binary d
7ea0: 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31 62  ecode hex "6bc1b
7eb0: 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64 37  ee22e409f96e93d7
7ec0: 65 31 31 37 33 39 33 31 37 32 61 61 65 32 64 38  e117393172aae2d8
7ed0: 61 35 37 31 65 30 33 61 63 39 63 39 65 62 37 36  a571e03ac9c9eb76
7ee0: 66 61 63 34 35 61 66 38 65 35 31 33 30 63 38 31  fac45af8e5130c81
7ef0: 63 34 36 61 33 35 63 65 34 31 31 65 35 66 62 63  c46a35ce411e5fbc
7f00: 31 31 39 31 61 30 61 35 32 65 66 66 36 39 66 32  1191a0a52eff69f2
7f10: 34 34 35 64 66 34 66 39 62 31 37 61 64 32 62 34  445df4f9b17ad2b4
7f20: 31 37 62 65 36 36 63 33 37 31 30 22 5d 0a 0a 74  17be66c3710"]..t
7f30: 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d  est NIST800-38b-
7f40: 41 45 53 2d 32 35 36 2d 33 31 2e 34 20 7b 6c 65  AES-256-31.4 {le
7f50: 6e 3d 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  n=512} -body {..
7f60: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70  ::tls::cmac -cip
7f70: 68 65 72 20 61 65 73 2d 32 35 36 2d 63 62 63 20  her aes-256-cbc 
7f80: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
7f90: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
7fa0: 75 6c 74 20 7b 65 31 39 39 32 31 39 30 35 34 39  ult {e1992190549
7fb0: 66 36 65 64 35 36 39 36 61 32 63 30 35 36 63 33  f6ed5696a2c056c3
7fc0: 31 35 34 31 30 7d 0a 0a 23 20 43 6c 65 61 6e 75  15410}..# Cleanu
7fd0: 70 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 72 65 6d  p.::tcltest::rem
7fe0: 6f 76 65 46 69 6c 65 20 24 74 65 73 74 5f 66 69  oveFile $test_fi
7ff0: 6c 65 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 72 65  le.::tcltest::re
8000: 6d 6f 76 65 46 69 6c 65 20 24 74 65 73 74 5f 61  moveFile $test_a
8010: 6c 74 5f 66 69 6c 65 0a 0a 23 20 43 6c 65 61 6e  lt_file..# Clean
8020: 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a 63 6c  up.::tcltest::cl
8030: 65 61 6e 75 70 54 65 73 74 73 0a 72 65 74 75 72  eanupTests.retur
8040: 6e 0a                                            n.