Hex Artifact Content

Artifact 141e7b6f906f79c8e6769f5c368254971211e41c51fef52f79b8a72ee3fe8fd6:


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