Hex Artifact Content

Artifact cdebbb86d7e2db9406a38894d3033f23fd360f4386b396ce92c6c6f7c385ada3:


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 3b 73 65 74  name args} {;set
01e0: 20 63 68 20 5b 6f 70 65 6e 20 24 66 69 6c 65 6e   ch [open $filen
01f0: 61 6d 65 20 72 62 5d 3b 73 65 74 20 62 73 69 7a  ame rb];set bsiz
0200: 65 20 5b 66 63 6f 6e 66 69 67 75 72 65 20 24 63  e [fconfigure $c
0210: 68 20 2d 62 75 66 66 65 72 73 69 7a 65 5d 3b 73  h -buffersize];s
0220: 65 74 20 6e 65 77 20 5b 24 63 6d 64 20 7b 2a 7d  et new [$cmd {*}
0230: 24 61 72 67 73 20 2d 63 68 61 6e 20 24 63 68 5d  $args -chan $ch]
0240: 3b 77 68 69 6c 65 20 7b 21 5b 65 6f 66 20 24 6e  ;while {![eof $n
0250: 65 77 5d 7d 20 7b 73 65 74 20 6d 64 20 5b 72 65  ew]} {set md [re
0260: 61 64 20 24 6e 65 77 20 24 62 73 69 7a 65 5d 7d  ad $new $bsize]}
0270: 3b 63 6c 6f 73 65 20 24 6e 65 77 3b 72 65 74 75  ;close $new;retu
0280: 72 6e 20 24 6d 64 7d 0a 70 72 6f 63 20 64 69 67  rn $md}.proc dig
0290: 65 73 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 7b  est_write_chan {
02a0: 63 6d 64 20 66 69 6c 65 6e 61 6d 65 20 64 61 74  cmd filename dat
02b0: 61 20 61 72 67 73 7d 20 7b 3b 73 65 74 20 63 68  a args} {;set ch
02c0: 20 5b 6f 70 65 6e 20 24 66 69 6c 65 6e 61 6d 65   [open $filename
02d0: 20 77 62 5d 3b 73 65 74 20 6e 65 77 20 5b 24 63   wb];set new [$c
02e0: 6d 64 20 7b 2a 7d 24 61 72 67 73 20 2d 63 68 61  md {*}$args -cha
02f0: 6e 20 24 63 68 5d 3b 70 75 74 73 20 2d 6e 6f 6e  n $ch];puts -non
0300: 65 77 6c 69 6e 65 20 24 6e 65 77 20 24 64 61 74  ewline $new $dat
0310: 61 3b 66 6c 75 73 68 20 24 6e 65 77 3b 63 6c 6f  a;flush $new;clo
0320: 73 65 20 24 6e 65 77 3b 73 65 74 20 63 68 20 5b  se $new;set ch [
0330: 6f 70 65 6e 20 24 66 69 6c 65 6e 61 6d 65 20 72  open $filename r
0340: 62 5d 3b 73 65 74 20 6d 64 20 5b 72 65 61 64 20  b];set md [read 
0350: 24 63 68 5d 3b 63 6c 6f 73 65 20 24 63 68 3b 72  $ch];close $ch;r
0360: 65 74 75 72 6e 20 24 6d 64 7d 0a 70 72 6f 63 20  eturn $md}.proc 
0370: 64 69 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74  digest_accumulat
0380: 65 20 7b 73 74 72 69 6e 67 20 61 72 67 73 7d 20  e {string args} 
0390: 7b 3b 73 65 74 20 63 6d 64 20 5b 7b 2a 7d 24 61  {;set cmd [{*}$a
03a0: 72 67 73 20 2d 63 6f 6d 6d 61 6e 64 20 64 63 6d  rgs -command dcm
03b0: 64 5d 3b 20 24 63 6d 64 20 75 70 64 61 74 65 20  d]; $cmd update 
03c0: 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 73  [string range $s
03d0: 74 72 69 6e 67 20 30 20 32 30 5d 3b 24 63 6d 64  tring 0 20];$cmd
03e0: 20 75 70 64 61 74 65 20 5b 73 74 72 69 6e 67 20   update [string 
03f0: 72 61 6e 67 65 20 24 73 74 72 69 6e 67 20 32 31  range $string 21
0400: 20 65 6e 64 5d 3b 72 65 74 75 72 6e 20 5b 24 63   end];return [$c
0410: 6d 64 20 66 69 6e 61 6c 69 7a 65 5d 7d 0a 0a 73  md finalize]}..s
0420: 65 74 20 74 65 73 74 5f 64 61 74 61 20 22 45 78  et test_data "Ex
0430: 61 6d 70 6c 65 20 73 74 72 69 6e 67 20 66 6f 72  ample string for
0440: 20 6d 65 73 73 61 67 65 20 64 69 67 65 73 74 20   message digest 
0450: 74 65 73 74 73 2e 5c 6e 22 0a 73 65 74 20 74 65  tests.\n".set te
0460: 73 74 5f 66 69 6c 65 20 22 6d 64 5f 64 61 74 61  st_file "md_data
0470: 2e 64 61 74 22 0a 73 65 74 20 74 65 73 74 5f 61  .dat".set test_a
0480: 6c 74 5f 66 69 6c 65 20 22 6d 64 5f 61 6c 74 5f  lt_file "md_alt_
0490: 64 61 74 61 2e 64 61 74 22 0a 73 65 74 20 74 65  data.dat".set te
04a0: 73 74 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65 20  st_key "Example 
04b0: 6b 65 79 22 0a 3a 3a 74 63 6c 74 65 73 74 3a 3a  key".::tcltest::
04c0: 6d 61 6b 65 46 69 6c 65 20 24 74 65 73 74 5f 64  makeFile $test_d
04d0: 61 74 61 20 24 74 65 73 74 5f 66 69 6c 65 0a 0a  ata $test_file..
04e0: 23 20 54 65 73 74 20 73 68 6f 72 74 2d 63 75 74  # Test short-cut
04f0: 20 63 6f 6d 6d 61 6e 64 73 0a 0a 0a 74 65 73 74   commands...test
0500: 20 53 68 6f 72 74 63 75 74 5f 43 6d 64 73 2d 31   Shortcut_Cmds-1
0510: 2e 31 20 7b 6d 64 34 20 63 6d 64 7d 20 2d 63 6f  .1 {md4 cmd} -co
0520: 6e 73 74 72 61 69 6e 74 73 20 7b 6d 64 34 7d 20  nstraints {md4} 
0530: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
0540: 6d 64 34 20 24 74 65 73 74 5f 64 61 74 61 0a 20  md4 $test_data. 
0550: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39     } -result {79
0560: 33 33 39 39 66 37 39 32 65 63 61 32 37 35 32 63  3399f792eca2752c
0570: 36 61 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a  6af3234ba70858}.
0580: 0a 74 65 73 74 20 53 68 6f 72 74 63 75 74 5f 43  .test Shortcut_C
0590: 6d 64 73 2d 31 2e 32 20 7b 6d 64 35 20 63 6d 64  mds-1.2 {md5 cmd
05a0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
05b0: 3a 3a 6d 64 35 20 24 74 65 73 74 5f 64 61 74 61  ::md5 $test_data
05c0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
05d0: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
05e0: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
05f0: 7d 0a 0a 74 65 73 74 20 53 68 6f 72 74 63 75 74  }..test Shortcut
0600: 5f 43 6d 64 73 2d 31 2e 33 20 7b 73 68 61 31 20  _Cmds-1.3 {sha1 
0610: 63 6d 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  cmd} -body {..::
0620: 74 6c 73 3a 3a 73 68 61 31 20 24 74 65 73 74 5f  tls::sha1 $test_
0630: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
0640: 6c 74 20 7b 34 66 65 30 33 62 37 66 32 35 36 38  lt {4fe03b7f2568
0650: 35 35 31 64 66 61 66 62 39 38 63 61 36 30 30 34  551dfafb98ca6004
0660: 65 36 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74  e65c4b71aa7d}..t
0670: 65 73 74 20 53 68 6f 72 74 63 75 74 5f 43 6d 64  est Shortcut_Cmd
0680: 73 2d 31 2e 34 20 7b 73 68 61 32 35 36 20 63 6d  s-1.4 {sha256 cm
0690: 64 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  d} -body {..::tl
06a0: 73 3a 3a 73 68 61 32 35 36 20 24 74 65 73 74 5f  s::sha256 $test_
06b0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
06c0: 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 38 32  lt {9d3578fc1382
06d0: 30 35 63 66 30 65 65 34 62 34 63 65 66 33 35 66  05cf0ee4b4cef35f
06e0: 65 31 30 31 62 62 34 65 63 61 63 37 62 31 36 31  e101bb4ecac7b161
06f0: 34 63 31 38 65 36 66 61 34 38 62 35 63 37 66 39  4c18e6fa48b5c7f9
0700: 35 65 31 39 7d 0a 0a 74 65 73 74 20 53 68 6f 72  5e19}..test Shor
0710: 74 63 75 74 5f 43 6d 64 73 2d 31 2e 35 20 7b 73  tcut_Cmds-1.5 {s
0720: 68 61 35 31 32 20 63 6d 64 7d 20 2d 62 6f 64 79  ha512 cmd} -body
0730: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 73 68 61 35 31   {..::tls::sha51
0740: 32 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  2 $test_data.   
0750: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 38   } -result {d178
0760: 65 37 35 39 64 63 35 39 31 32 37 30 37 31 35 38  e759dc5912707158
0770: 38 64 32 66 61 64 31 37 33 63 30 36 32 33 38 64  8d2fad173c06238d
0780: 38 37 65 38 30 30 61 36 34 30 33 63 30 61 33 30  87e800a6403c0a30
0790: 64 61 61 34 66 61 61 66 30 35 64 30 65 37 63 65  daa4faaf05d0e7ce
07a0: 30 34 39 31 36 61 66 61 61 36 61 35 38 61 33 30  04916afaa6a58a30
07b0: 63 62 65 62 35 39 37 64 61 63 62 30 31 63 36 32  cbeb597dacb01c62
07c0: 66 39 66 62 39 64 38 39 62 61 62 39 64 61 36 33  f9fb9d89bab9da63
07d0: 30 63 36 39 39 65 34 38 31 36 66 31 7d 0a 0a 0a  0c699e4816f1}...
07e0: 23 20 54 65 73 74 20 4d 44 20 63 6f 6d 6d 61 6e  # Test MD comman
07f0: 64 20 66 6f 72 20 72 65 61 64 20 63 68 61 6e 6e  d for read chann
0800: 65 6c 0a 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61  el...test MD_Cha
0810: 6e 5f 52 65 61 64 2d 32 2e 31 20 7b 6d 64 34 7d  n_Read-2.1 {md4}
0820: 20 2d 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 6d   -constraints {m
0830: 64 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  d4} -body {..dig
0840: 65 73 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a  est_read_chan ::
0850: 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69  tls::md $test_fi
0860: 6c 65 20 2d 64 69 67 65 73 74 20 6d 64 34 0a 20  le -digest md4. 
0870: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39     } -result {79
0880: 33 33 39 39 66 37 39 32 65 63 61 32 37 35 32 63  3399f792eca2752c
0890: 36 61 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a  6af3234ba70858}.
08a0: 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 52 65  .test MD_Chan_Re
08b0: 61 64 2d 32 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f  ad-2.2 {md5} -bo
08c0: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61  dy {..digest_rea
08d0: 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64  d_chan ::tls::md
08e0: 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67   $test_file -dig
08f0: 65 73 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d 72  est md5.    } -r
0900: 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33  esult {962bf0803
0910: 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62  b4232ec23bd8427b
0920: 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d  b94ea09}..test M
0930: 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e 33 20  D_Chan_Read-2.3 
0940: 7b 73 68 61 31 7d 20 2d 62 6f 64 79 20 7b 0a 09  {sha1} -body {..
0950: 64 69 67 65 73 74 5f 72 65 61 64 5f 63 68 61 6e  digest_read_chan
0960: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74   ::tls::md $test
0970: 5f 66 69 6c 65 20 2d 64 69 67 65 73 74 20 73 68  _file -digest sh
0980: 61 31 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  a1.    } -result
0990: 20 7b 34 66 65 30 33 62 37 66 32 35 36 38 35 35   {4fe03b7f256855
09a0: 31 64 66 61 66 62 39 38 63 61 36 30 30 34 65 36  1dfafb98ca6004e6
09b0: 35 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73  5c4b71aa7d}..tes
09c0: 74 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32  t MD_Chan_Read-2
09d0: 2e 34 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64  .4 {sha256} -bod
09e0: 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64  y {..digest_read
09f0: 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _chan ::tls::md 
0a00: 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65  $test_file -dige
0a10: 73 74 20 73 68 61 32 35 36 0a 20 20 20 20 7d 20  st sha256.    } 
0a20: 2d 72 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66  -result {9d3578f
0a30: 63 31 33 38 32 30 35 63 66 30 65 65 34 62 34 63  c138205cf0ee4b4c
0a40: 65 66 33 35 66 65 31 30 31 62 62 34 65 63 61 63  ef35fe101bb4ecac
0a50: 37 62 31 36 31 34 63 31 38 65 36 66 61 34 38 62  7b1614c18e6fa48b
0a60: 35 63 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74  5c7f95e19}..test
0a70: 20 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e   MD_Chan_Read-2.
0a80: 35 20 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79  5 {sha512} -body
0a90: 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f   {..digest_read_
0aa0: 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24  chan ::tls::md $
0ab0: 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65 73  test_file -diges
0ac0: 74 20 73 68 61 35 31 32 0a 20 20 20 20 7d 20 2d  t sha512.    } -
0ad0: 72 65 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39  result {d178e759
0ae0: 64 63 35 39 31 32 37 30 37 31 35 38 38 64 32 66  dc59127071588d2f
0af0: 61 64 31 37 33 63 30 36 32 33 38 64 38 37 65 38  ad173c06238d87e8
0b00: 30 30 61 36 34 30 33 63 30 61 33 30 64 61 61 34  00a6403c0a30daa4
0b10: 66 61 61 66 30 35 64 30 65 37 63 65 30 34 39 31  faaf05d0e7ce0491
0b20: 36 61 66 61 61 36 61 35 38 61 33 30 63 62 65 62  6afaa6a58a30cbeb
0b30: 35 39 37 64 61 63 62 30 31 63 36 32 66 39 66 62  597dacb01c62f9fb
0b40: 39 64 38 39 62 61 62 39 64 61 36 33 30 63 36 39  9d89bab9da630c69
0b50: 39 65 34 38 31 36 66 31 7d 0a 0a 74 65 73 74 20  9e4816f1}..test 
0b60: 4d 44 5f 43 68 61 6e 5f 52 65 61 64 2d 32 2e 36  MD_Chan_Read-2.6
0b70: 20 7b 6d 64 35 20 62 69 6e 7d 20 2d 62 6f 64 79   {md5 bin} -body
0b80: 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e 63 6f 64   {..binary encod
0b90: 65 20 68 65 78 20 5b 64 69 67 65 73 74 5f 72 65  e hex [digest_re
0ba0: 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d  ad_chan ::tls::m
0bb0: 64 20 24 74 65 73 74 5f 66 69 6c 65 20 2d 62 69  d $test_file -bi
0bc0: 6e 20 2d 64 69 67 65 73 74 20 6d 64 35 5d 0a 20  n -digest md5]. 
0bd0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36     } -result {96
0be0: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33  2bf0803b4232ec23
0bf0: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a  bd8427bb94ea09}.
0c00: 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 52 65  .test MD_Chan_Re
0c10: 61 64 2d 32 2e 37 20 7b 6d 64 35 20 68 65 78 7d  ad-2.7 {md5 hex}
0c20: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
0c30: 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c 73  _read_chan ::tls
0c40: 3a 3a 6d 64 20 24 74 65 73 74 5f 66 69 6c 65 20  ::md $test_file 
0c50: 2d 68 65 78 20 2d 64 69 67 65 73 74 20 6d 64 35  -hex -digest md5
0c60: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
0c70: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
0c80: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
0c90: 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20 63 6f 6d  }..# Test MD com
0ca0: 6d 61 6e 64 20 66 6f 72 20 77 72 69 74 65 20 63  mand for write c
0cb0: 68 61 6e 6e 65 6c 0a 0a 0a 74 65 73 74 20 4d 44  hannel...test MD
0cc0: 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33 2e 31 20  _Chan_Write-3.1 
0cd0: 7b 6d 64 34 7d 20 2d 63 6f 6e 73 74 72 61 69 6e  {md4} -constrain
0ce0: 74 73 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b  ts {md4} -body {
0cf0: 0a 09 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63  ..digest_write_c
0d00: 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74  han ::tls::md $t
0d10: 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65  est_alt_file $te
0d20: 73 74 5f 64 61 74 61 20 2d 64 69 67 65 73 74 20  st_data -digest 
0d30: 6d 64 34 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  md4.    } -resul
0d40: 74 20 7b 37 39 33 33 39 39 66 37 39 32 65 63 61  t {793399f792eca
0d50: 32 37 35 32 63 36 61 66 33 32 33 34 62 61 37 30  2752c6af3234ba70
0d60: 38 35 38 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68  858}..test MD_Ch
0d70: 61 6e 5f 57 72 69 74 65 2d 33 2e 32 20 7b 6d 64  an_Write-3.2 {md
0d80: 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65  5} -body {..dige
0d90: 73 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a 3a  st_write_chan ::
0da0: 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61 6c  tls::md $test_al
0db0: 74 5f 66 69 6c 65 20 24 74 65 73 74 5f 64 61 74  t_file $test_dat
0dc0: 61 20 2d 64 69 67 65 73 74 20 6d 64 35 0a 20 20  a -digest md5.  
0dd0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32    } -result {962
0de0: 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62  bf0803b4232ec23b
0df0: 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a  d8427bb94ea09}..
0e00: 74 65 73 74 20 4d 44 5f 43 68 61 6e 5f 57 72 69  test MD_Chan_Wri
0e10: 74 65 2d 33 2e 33 20 7b 73 68 61 31 7d 20 2d 62  te-3.3 {sha1} -b
0e20: 6f 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 77 72  ody {..digest_wr
0e30: 69 74 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a  ite_chan ::tls::
0e40: 6d 64 20 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c  md $test_alt_fil
0e50: 65 20 24 74 65 73 74 5f 64 61 74 61 20 2d 64 69  e $test_data -di
0e60: 67 65 73 74 20 73 68 61 31 0a 20 20 20 20 7d 20  gest sha1.    } 
0e70: 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 33 62 37  -result {4fe03b7
0e80: 66 32 35 36 38 35 35 31 64 66 61 66 62 39 38 63  f2568551dfafb98c
0e90: 61 36 30 30 34 65 36 35 63 34 62 37 31 61 61 37  a6004e65c4b71aa7
0ea0: 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e  d}..test MD_Chan
0eb0: 5f 57 72 69 74 65 2d 33 2e 34 20 7b 73 68 61 32  _Write-3.4 {sha2
0ec0: 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  56} -body {..dig
0ed0: 65 73 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a  est_write_chan :
0ee0: 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61  :tls::md $test_a
0ef0: 6c 74 5f 66 69 6c 65 20 24 74 65 73 74 5f 64 61  lt_file $test_da
0f00: 74 61 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  ta -digest sha25
0f10: 36 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  6.    } -result 
0f20: 7b 39 64 33 35 37 38 66 63 31 33 38 32 30 35 63  {9d3578fc138205c
0f30: 66 30 65 65 34 62 34 63 65 66 33 35 66 65 31 30  f0ee4b4cef35fe10
0f40: 31 62 62 34 65 63 61 63 37 62 31 36 31 34 63 31  1bb4ecac7b1614c1
0f50: 38 65 36 66 61 34 38 62 35 63 37 66 39 35 65 31  8e6fa48b5c7f95e1
0f60: 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e  9}..test MD_Chan
0f70: 5f 57 72 69 74 65 2d 33 2e 35 20 7b 73 68 61 35  _Write-3.5 {sha5
0f80: 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67  12} -body {..dig
0f90: 65 73 74 5f 77 72 69 74 65 5f 63 68 61 6e 20 3a  est_write_chan :
0fa0: 3a 74 6c 73 3a 3a 6d 64 20 24 74 65 73 74 5f 61  :tls::md $test_a
0fb0: 6c 74 5f 66 69 6c 65 20 24 74 65 73 74 5f 64 61  lt_file $test_da
0fc0: 74 61 20 2d 64 69 67 65 73 74 20 73 68 61 35 31  ta -digest sha51
0fd0: 32 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  2.    } -result 
0fe0: 7b 64 31 37 38 65 37 35 39 64 63 35 39 31 32 37  {d178e759dc59127
0ff0: 30 37 31 35 38 38 64 32 66 61 64 31 37 33 63 30  071588d2fad173c0
1000: 36 32 33 38 64 38 37 65 38 30 30 61 36 34 30 33  6238d87e800a6403
1010: 63 30 61 33 30 64 61 61 34 66 61 61 66 30 35 64  c0a30daa4faaf05d
1020: 30 65 37 63 65 30 34 39 31 36 61 66 61 61 36 61  0e7ce04916afaa6a
1030: 35 38 61 33 30 63 62 65 62 35 39 37 64 61 63 62  58a30cbeb597dacb
1040: 30 31 63 36 32 66 39 66 62 39 64 38 39 62 61 62  01c62f9fb9d89bab
1050: 39 64 61 36 33 30 63 36 39 39 65 34 38 31 36 66  9da630c699e4816f
1060: 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 68 61 6e  1}..test MD_Chan
1070: 5f 57 72 69 74 65 2d 33 2e 36 20 7b 6d 64 35 20  _Write-3.6 {md5 
1080: 62 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69  bin} -body {..bi
1090: 6e 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20  nary encode hex 
10a0: 5b 64 69 67 65 73 74 5f 77 72 69 74 65 5f 63 68  [digest_write_ch
10b0: 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74 65  an ::tls::md $te
10c0: 73 74 5f 61 6c 74 5f 66 69 6c 65 20 24 74 65 73  st_alt_file $tes
10d0: 74 5f 64 61 74 61 20 2d 62 69 6e 20 2d 64 69 67  t_data -bin -dig
10e0: 65 73 74 20 6d 64 35 5d 0a 20 20 20 20 7d 20 2d  est md5].    } -
10f0: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
1100: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
1110: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
1120: 4d 44 5f 43 68 61 6e 5f 57 72 69 74 65 2d 33 2e  MD_Chan_Write-3.
1130: 37 20 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64  7 {md5 hex} -bod
1140: 79 20 7b 0a 09 64 69 67 65 73 74 5f 77 72 69 74  y {..digest_writ
1150: 65 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64  e_chan ::tls::md
1160: 20 24 74 65 73 74 5f 61 6c 74 5f 66 69 6c 65 20   $test_alt_file 
1170: 24 74 65 73 74 5f 64 61 74 61 20 2d 68 65 78 20  $test_data -hex 
1180: 2d 64 69 67 65 73 74 20 6d 64 35 0a 20 20 20 20  -digest md5.    
1190: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66  } -result {962bf
11a0: 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64 38  0803b4232ec23bd8
11b0: 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 23 20  427bb94ea09}..# 
11c0: 54 65 73 74 20 4d 44 20 63 6f 6d 6d 61 6e 64 20  Test MD command 
11d0: 66 6f 72 20 6f 62 6a 65 63 74 20 63 6f 6d 6d 61  for object comma
11e0: 6e 64 0a 0a 0a 74 65 73 74 20 4d 44 5f 43 6f 6d  nd...test MD_Com
11f0: 6d 61 6e 64 2d 34 2e 31 20 7b 6d 64 34 7d 20 2d  mand-4.1 {md4} -
1200: 63 6f 6e 73 74 72 61 69 6e 74 73 20 7b 6d 64 34  constraints {md4
1210: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
1220: 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65  t_accumulate $te
1230: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 6d  st_data ::tls::m
1240: 64 20 2d 64 69 67 65 73 74 20 6d 64 34 0a 20 20  d -digest md4.  
1250: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39 33    } -result {793
1260: 33 39 39 66 37 39 32 65 63 61 32 37 35 32 63 36  399f792eca2752c6
1270: 61 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a 0a  af3234ba70858}..
1280: 74 65 73 74 20 4d 44 5f 43 6f 6d 6d 61 6e 64 2d  test MD_Command-
1290: 34 2e 32 20 7b 6d 64 35 7d 20 2d 62 6f 64 79 20  4.2 {md5} -body 
12a0: 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75  {..digest_accumu
12b0: 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20  late $test_data 
12c0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
12d0: 74 20 6d 64 35 0a 20 20 20 20 7d 20 2d 72 65 73  t md5.    } -res
12e0: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34  ult {962bf0803b4
12f0: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39  232ec23bd8427bb9
1300: 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f  4ea09}..test MD_
1310: 43 6f 6d 6d 61 6e 64 2d 34 2e 33 20 7b 73 68 61  Command-4.3 {sha
1320: 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65  1} -body {..dige
1330: 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74  st_accumulate $t
1340: 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a  est_data ::tls::
1350: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 0a  md -digest sha1.
1360: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34      } -result {4
1370: 66 65 30 33 62 37 66 32 35 36 38 35 35 31 64 66  fe03b7f2568551df
1380: 61 66 62 39 38 63 61 36 30 30 34 65 36 35 63 34  afb98ca6004e65c4
1390: 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20 4d  b71aa7d}..test M
13a0: 44 5f 43 6f 6d 6d 61 6e 64 2d 34 2e 34 20 7b 73  D_Command-4.4 {s
13b0: 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha256} -body {..
13c0: 64 69 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74  digest_accumulat
13d0: 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74  e $test_data ::t
13e0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
13f0: 68 61 32 35 36 0a 20 20 20 20 7d 20 2d 72 65 73  ha256.    } -res
1400: 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31 33 38  ult {9d3578fc138
1410: 32 30 35 63 66 30 65 65 34 62 34 63 65 66 33 35  205cf0ee4b4cef35
1420: 66 65 31 30 31 62 62 34 65 63 61 63 37 62 31 36  fe101bb4ecac7b16
1430: 31 34 63 31 38 65 36 66 61 34 38 62 35 63 37 66  14c18e6fa48b5c7f
1440: 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 4d 44 5f  95e19}..test MD_
1450: 43 6f 6d 6d 61 6e 64 2d 34 2e 35 20 7b 73 68 61  Command-4.5 {sha
1460: 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69  512} -body {..di
1470: 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74 65 20  gest_accumulate 
1480: 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73  $test_data ::tls
1490: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
14a0: 35 31 32 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  512.    } -resul
14b0: 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39 31  t {d178e759dc591
14c0: 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37 33  27071588d2fad173
14d0: 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36 34  c06238d87e800a64
14e0: 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66 30  03c0a30daa4faaf0
14f0: 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61 61  5d0e7ce04916afaa
1500: 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64 61  6a58a30cbeb597da
1510: 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39 62  cb01c62f9fb9d89b
1520: 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38 31  ab9da630c699e481
1530: 36 66 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 43 6f  6f1}..test MD_Co
1540: 6d 6d 61 6e 64 2d 34 2e 36 20 7b 6d 64 35 20 62  mmand-4.6 {md5 b
1550: 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e  in} -body {..bin
1560: 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b  ary encode hex [
1570: 64 69 67 65 73 74 5f 61 63 63 75 6d 75 6c 61 74  digest_accumulat
1580: 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a 3a 74  e $test_data ::t
1590: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d  ls::md -digest m
15a0: 64 35 20 2d 62 69 6e 5d 0a 20 20 20 20 7d 20 2d  d5 -bin].    } -
15b0: 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30  result {962bf080
15c0: 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37  3b4232ec23bd8427
15d0: 62 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20  bb94ea09}..test 
15e0: 4d 44 5f 43 6f 6d 6d 61 6e 64 2d 34 2e 37 20 7b  MD_Command-4.7 {
15f0: 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64 79 20 7b  md5 hex} -body {
1600: 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d 75 6c  ..digest_accumul
1610: 61 74 65 20 24 74 65 73 74 5f 64 61 74 61 20 3a  ate $test_data :
1620: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
1630: 20 6d 64 35 20 2d 68 65 78 0a 20 20 20 20 7d 20   md5 -hex.    } 
1640: 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38  -result {962bf08
1650: 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32  03b4232ec23bd842
1660: 37 62 62 39 34 65 61 30 39 7d 0a 0a 23 20 54 65  7bb94ea09}..# Te
1670: 73 74 20 4d 44 20 63 6f 6d 6d 61 6e 64 20 66 6f  st MD command fo
1680: 72 20 64 61 74 61 20 73 68 6f 72 74 63 75 74 0a  r data shortcut.
1690: 0a 0a 74 65 73 74 20 4d 44 5f 53 68 6f 72 74 63  ..test MD_Shortc
16a0: 75 74 2d 35 2e 31 20 7b 6d 64 34 7d 20 2d 63 6f  ut-5.1 {md4} -co
16b0: 6e 73 74 72 61 69 6e 74 73 20 7b 6d 64 34 7d 20  nstraints {md4} 
16c0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
16d0: 6d 64 20 6d 64 34 20 24 74 65 73 74 5f 64 61 74  md md4 $test_dat
16e0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
16f0: 7b 37 39 33 33 39 39 66 37 39 32 65 63 61 32 37  {793399f792eca27
1700: 35 32 63 36 61 66 33 32 33 34 62 61 37 30 38 35  52c6af3234ba7085
1710: 38 7d 0a 0a 74 65 73 74 20 4d 44 5f 53 68 6f 72  8}..test MD_Shor
1720: 74 63 75 74 2d 35 2e 32 20 7b 6d 64 35 7d 20 2d  tcut-5.2 {md5} -
1730: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
1740: 64 20 6d 64 35 20 24 74 65 73 74 5f 64 61 74 61  d md5 $test_data
1750: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1760: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
1770: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
1780: 7d 0a 0a 74 65 73 74 20 4d 44 5f 53 68 6f 72 74  }..test MD_Short
1790: 63 75 74 2d 35 2e 33 20 7b 73 68 61 31 7d 20 2d  cut-5.3 {sha1} -
17a0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
17b0: 64 20 73 68 61 31 20 24 74 65 73 74 5f 64 61 74  d sha1 $test_dat
17c0: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
17d0: 7b 34 66 65 30 33 62 37 66 32 35 36 38 35 35 31  {4fe03b7f2568551
17e0: 64 66 61 66 62 39 38 63 61 36 30 30 34 65 36 35  dfafb98ca6004e65
17f0: 63 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74  c4b71aa7d}..test
1800: 20 4d 44 5f 53 68 6f 72 74 63 75 74 2d 35 2e 34   MD_Shortcut-5.4
1810: 20 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20   {sha256} -body 
1820: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 73 68 61  {..::tls::md sha
1830: 32 35 36 20 24 74 65 73 74 5f 64 61 74 61 0a 20  256 $test_data. 
1840: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 64     } -result {9d
1850: 33 35 37 38 66 63 31 33 38 32 30 35 63 66 30 65  3578fc138205cf0e
1860: 65 34 62 34 63 65 66 33 35 66 65 31 30 31 62 62  e4b4cef35fe101bb
1870: 34 65 63 61 63 37 62 31 36 31 34 63 31 38 65 36  4ecac7b1614c18e6
1880: 66 61 34 38 62 35 63 37 66 39 35 65 31 39 7d 0a  fa48b5c7f95e19}.
1890: 0a 74 65 73 74 20 4d 44 5f 53 68 6f 72 74 63 75  .test MD_Shortcu
18a0: 74 2d 35 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d  t-5.5 {sha512} -
18b0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
18c0: 64 20 73 68 61 35 31 32 20 24 74 65 73 74 5f 64  d sha512 $test_d
18d0: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
18e0: 74 20 7b 64 31 37 38 65 37 35 39 64 63 35 39 31  t {d178e759dc591
18f0: 32 37 30 37 31 35 38 38 64 32 66 61 64 31 37 33  27071588d2fad173
1900: 63 30 36 32 33 38 64 38 37 65 38 30 30 61 36 34  c06238d87e800a64
1910: 30 33 63 30 61 33 30 64 61 61 34 66 61 61 66 30  03c0a30daa4faaf0
1920: 35 64 30 65 37 63 65 30 34 39 31 36 61 66 61 61  5d0e7ce04916afaa
1930: 36 61 35 38 61 33 30 63 62 65 62 35 39 37 64 61  6a58a30cbeb597da
1940: 63 62 30 31 63 36 32 66 39 66 62 39 64 38 39 62  cb01c62f9fb9d89b
1950: 61 62 39 64 61 36 33 30 63 36 39 39 65 34 38 31  ab9da630c699e481
1960: 36 66 31 7d 0a 0a 23 20 54 65 73 74 20 4d 44 20  6f1}..# Test MD 
1970: 63 6f 6d 6d 61 6e 64 20 66 6f 72 20 64 61 74 61  command for data
1980: 0a 0a 0a 74 65 73 74 20 4d 44 5f 44 61 74 61 2d  ...test MD_Data-
1990: 36 2e 31 20 7b 6d 64 34 7d 20 2d 63 6f 6e 73 74  6.1 {md4} -const
19a0: 72 61 69 6e 74 73 20 7b 6d 64 34 7d 20 2d 62 6f  raints {md4} -bo
19b0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
19c0: 2d 64 69 67 65 73 74 20 6d 64 34 20 2d 64 61 74  -digest md4 -dat
19d0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
19e0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 37 39 33 33   } -result {7933
19f0: 39 39 66 37 39 32 65 63 61 32 37 35 32 63 36 61  99f792eca2752c6a
1a00: 66 33 32 33 34 62 61 37 30 38 35 38 7d 0a 0a 74  f3234ba70858}..t
1a10: 65 73 74 20 4d 44 5f 44 61 74 61 2d 36 2e 32 20  est MD_Data-6.2 
1a20: 7b 6d 64 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  {md5} -body {..:
1a30: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
1a40: 20 6d 64 35 20 2d 64 61 74 61 20 24 74 65 73 74   md5 -data $test
1a50: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
1a60: 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33 62 34  ult {962bf0803b4
1a70: 32 33 32 65 63 32 33 62 64 38 34 32 37 62 62 39  232ec23bd8427bb9
1a80: 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d 44 5f  4ea09}..test MD_
1a90: 44 61 74 61 2d 36 2e 33 20 7b 73 68 61 31 7d 20  Data-6.3 {sha1} 
1aa0: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
1ab0: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 20  md -digest sha1 
1ac0: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
1ad0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1ae0: 34 66 65 30 33 62 37 66 32 35 36 38 35 35 31 64  4fe03b7f2568551d
1af0: 66 61 66 62 39 38 63 61 36 30 30 34 65 36 35 63  fafb98ca6004e65c
1b00: 34 62 37 31 61 61 37 64 7d 0a 0a 74 65 73 74 20  4b71aa7d}..test 
1b10: 4d 44 5f 44 61 74 61 2d 36 2e 34 20 7b 73 68 61  MD_Data-6.4 {sha
1b20: 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  256} -body {..::
1b30: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
1b40: 73 68 61 32 35 36 20 2d 64 61 74 61 20 24 74 65  sha256 -data $te
1b50: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
1b60: 65 73 75 6c 74 20 7b 39 64 33 35 37 38 66 63 31  esult {9d3578fc1
1b70: 33 38 32 30 35 63 66 30 65 65 34 62 34 63 65 66  38205cf0ee4b4cef
1b80: 33 35 66 65 31 30 31 62 62 34 65 63 61 63 37 62  35fe101bb4ecac7b
1b90: 31 36 31 34 63 31 38 65 36 66 61 34 38 62 35 63  1614c18e6fa48b5c
1ba0: 37 66 39 35 65 31 39 7d 0a 0a 74 65 73 74 20 4d  7f95e19}..test M
1bb0: 44 5f 44 61 74 61 2d 36 2e 35 20 7b 73 68 61 35  D_Data-6.5 {sha5
1bc0: 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  12} -body {..::t
1bd0: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
1be0: 68 61 35 31 32 20 2d 64 61 74 61 20 24 74 65 73  ha512 -data $tes
1bf0: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
1c00: 73 75 6c 74 20 7b 64 31 37 38 65 37 35 39 64 63  sult {d178e759dc
1c10: 35 39 31 32 37 30 37 31 35 38 38 64 32 66 61 64  59127071588d2fad
1c20: 31 37 33 63 30 36 32 33 38 64 38 37 65 38 30 30  173c06238d87e800
1c30: 61 36 34 30 33 63 30 61 33 30 64 61 61 34 66 61  a6403c0a30daa4fa
1c40: 61 66 30 35 64 30 65 37 63 65 30 34 39 31 36 61  af05d0e7ce04916a
1c50: 66 61 61 36 61 35 38 61 33 30 63 62 65 62 35 39  faa6a58a30cbeb59
1c60: 37 64 61 63 62 30 31 63 36 32 66 39 66 62 39 64  7dacb01c62f9fb9d
1c70: 38 39 62 61 62 39 64 61 36 33 30 63 36 39 39 65  89bab9da630c699e
1c80: 34 38 31 36 66 31 7d 0a 0a 74 65 73 74 20 4d 44  4816f1}..test MD
1c90: 5f 44 61 74 61 2d 36 2e 36 20 7b 6d 64 35 20 62  _Data-6.6 {md5 b
1ca0: 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e  in} -body {..bin
1cb0: 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b  ary encode hex [
1cc0: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
1cd0: 74 20 6d 64 35 20 2d 64 61 74 61 20 24 74 65 73  t md5 -data $tes
1ce0: 74 5f 64 61 74 61 20 2d 62 69 6e 5d 0a 20 20 20  t_data -bin].   
1cf0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36 32 62   } -result {962b
1d00: 66 30 38 30 33 62 34 32 33 32 65 63 32 33 62 64  f0803b4232ec23bd
1d10: 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a 0a 74  8427bb94ea09}..t
1d20: 65 73 74 20 4d 44 5f 44 61 74 61 2d 36 2e 37 20  est MD_Data-6.7 
1d30: 7b 6d 64 35 20 68 65 78 7d 20 2d 62 6f 64 79 20  {md5 hex} -body 
1d40: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
1d50: 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20 24  gest md5 -data $
1d60: 74 65 73 74 5f 64 61 74 61 20 2d 68 65 78 0a 20  test_data -hex. 
1d70: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 36     } -result {96
1d80: 32 62 66 30 38 30 33 62 34 32 33 32 65 63 32 33  2bf0803b4232ec23
1d90: 62 64 38 34 32 37 62 62 39 34 65 61 30 39 7d 0a  bd8427bb94ea09}.
1da0: 0a 23 20 54 65 73 74 20 4d 44 20 63 6f 6d 6d 61  .# Test MD comma
1db0: 6e 64 20 66 6f 72 20 66 69 6c 65 0a 0a 0a 74 65  nd for file...te
1dc0: 73 74 20 4d 44 5f 46 69 6c 65 2d 37 2e 31 20 7b  st MD_File-7.1 {
1dd0: 6d 64 34 7d 20 2d 63 6f 6e 73 74 72 61 69 6e 74  md4} -constraint
1de0: 73 20 7b 6d 64 34 7d 20 2d 62 6f 64 79 20 7b 0a  s {md4} -body {.
1df0: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
1e00: 73 74 20 6d 64 34 20 2d 66 69 6c 65 20 24 74 65  st md4 -file $te
1e10: 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72  st_file.    } -r
1e20: 65 73 75 6c 74 20 7b 37 39 33 33 39 39 66 37 39  esult {793399f79
1e30: 32 65 63 61 32 37 35 32 63 36 61 66 33 32 33 34  2eca2752c6af3234
1e40: 62 61 37 30 38 35 38 7d 0a 0a 74 65 73 74 20 4d  ba70858}..test M
1e50: 44 5f 46 69 6c 65 2d 37 2e 32 20 7b 6d 64 35 7d  D_File-7.2 {md5}
1e60: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
1e70: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
1e80: 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c 65  -file $test_file
1e90: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
1ea0: 39 36 32 62 66 30 38 30 33 62 34 32 33 32 65 63  962bf0803b4232ec
1eb0: 32 33 62 64 38 34 32 37 62 62 39 34 65 61 30 39  23bd8427bb94ea09
1ec0: 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c 65 2d  }..test MD_File-
1ed0: 37 2e 33 20 7b 73 68 61 31 7d 20 2d 62 6f 64 79  7.3 {sha1} -body
1ee0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
1ef0: 69 67 65 73 74 20 73 68 61 31 20 2d 66 69 6c 65  igest sha1 -file
1f00: 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20   $test_file.    
1f10: 7d 20 2d 72 65 73 75 6c 74 20 7b 34 66 65 30 33  } -result {4fe03
1f20: 62 37 66 32 35 36 38 35 35 31 64 66 61 66 62 39  b7f2568551dfafb9
1f30: 38 63 61 36 30 30 34 65 36 35 63 34 62 37 31 61  8ca6004e65c4b71a
1f40: 61 37 64 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69  a7d}..test MD_Fi
1f50: 6c 65 2d 37 2e 34 20 7b 73 68 61 32 35 36 7d 20  le-7.4 {sha256} 
1f60: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
1f70: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35  md -digest sha25
1f80: 36 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69  6 -file $test_fi
1f90: 6c 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  le.    } -result
1fa0: 20 7b 39 64 33 35 37 38 66 63 31 33 38 32 30 35   {9d3578fc138205
1fb0: 63 66 30 65 65 34 62 34 63 65 66 33 35 66 65 31  cf0ee4b4cef35fe1
1fc0: 30 31 62 62 34 65 63 61 63 37 62 31 36 31 34 63  01bb4ecac7b1614c
1fd0: 31 38 65 36 66 61 34 38 62 35 63 37 66 39 35 65  18e6fa48b5c7f95e
1fe0: 31 39 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c  19}..test MD_Fil
1ff0: 65 2d 37 2e 35 20 7b 73 68 61 35 31 32 7d 20 2d  e-7.5 {sha512} -
2000: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
2010: 64 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32  d -digest sha512
2020: 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c   -file $test_fil
2030: 65 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  e.    } -result 
2040: 7b 64 31 37 38 65 37 35 39 64 63 35 39 31 32 37  {d178e759dc59127
2050: 30 37 31 35 38 38 64 32 66 61 64 31 37 33 63 30  071588d2fad173c0
2060: 36 32 33 38 64 38 37 65 38 30 30 61 36 34 30 33  6238d87e800a6403
2070: 63 30 61 33 30 64 61 61 34 66 61 61 66 30 35 64  c0a30daa4faaf05d
2080: 30 65 37 63 65 30 34 39 31 36 61 66 61 61 36 61  0e7ce04916afaa6a
2090: 35 38 61 33 30 63 62 65 62 35 39 37 64 61 63 62  58a30cbeb597dacb
20a0: 30 31 63 36 32 66 39 66 62 39 64 38 39 62 61 62  01c62f9fb9d89bab
20b0: 39 64 61 36 33 30 63 36 39 39 65 34 38 31 36 66  9da630c699e4816f
20c0: 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 46 69 6c 65  1}..test MD_File
20d0: 2d 37 2e 36 20 7b 6d 64 35 20 62 69 6e 7d 20 2d  -7.6 {md5 bin} -
20e0: 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65  body {..binary e
20f0: 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73  ncode hex [::tls
2100: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35  ::md -digest md5
2110: 20 2d 66 69 6c 65 20 24 74 65 73 74 5f 66 69 6c   -file $test_fil
2120: 65 20 2d 62 69 6e 5d 0a 20 20 20 20 7d 20 2d 72  e -bin].    } -r
2130: 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38 30 33  esult {962bf0803
2140: 62 34 32 33 32 65 63 32 33 62 64 38 34 32 37 62  b4232ec23bd8427b
2150: 62 39 34 65 61 30 39 7d 0a 0a 74 65 73 74 20 4d  b94ea09}..test M
2160: 44 5f 46 69 6c 65 2d 37 2e 37 20 7b 6d 64 35 20  D_File-7.7 {md5 
2170: 68 65 78 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  hex} -body {..::
2180: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
2190: 6d 64 35 20 2d 66 69 6c 65 20 24 74 65 73 74 5f  md5 -file $test_
21a0: 66 69 6c 65 20 2d 68 65 78 0a 20 20 20 20 7d 20  file -hex.    } 
21b0: 2d 72 65 73 75 6c 74 20 7b 39 36 32 62 66 30 38  -result {962bf08
21c0: 30 33 62 34 32 33 32 65 63 32 33 62 64 38 34 32  03b4232ec23bd842
21d0: 37 62 62 39 34 65 61 30 39 7d 0a 0a 23 20 4d 44  7bb94ea09}..# MD
21e0: 20 45 72 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74   Error Cases...t
21f0: 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e  est MD_Errors-8.
2200: 31 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d  1 {Too few args}
2210: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
2220: 3a 6d 64 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  :md.    } -resul
2230: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  t {wrong # args:
2240: 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c   should be "::tl
2250: 73 3a 3a 6d 64 20 3f 2d 62 69 6e 7c 2d 68 65 78  s::md ?-bin|-hex
2260: 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65 3f  ? ?-cipher name?
2270: 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f 20   ?-digest name? 
2280: 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61 63  ?-key key? ?-mac
2290: 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65 6c   name? [-channel
22a0: 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e 64   chan | -command
22b0: 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c 65   cmdName | -file
22c0: 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64 61   filename | ?-da
22d0: 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65 74  ta? data]"} -ret
22e0: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65  urnCodes {1}..te
22f0: 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 32  st MD_Errors-8.2
2300: 20 7b 54 6f 6f 20 6d 61 6e 79 20 61 72 67 73 7d   {Too many args}
2310: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
2320: 3a 6d 64 20 74 6f 6f 20 6d 61 6e 79 20 63 6f 6d  :md too many com
2330: 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67 73 20 74  mand line args t
2340: 6f 20 70 61 73 73 20 74 68 65 20 74 65 73 74 20  o pass the test 
2350: 77 69 74 68 6f 75 74 20 61 6e 20 65 72 72 6f 72  without an error
2360: 20 6f 72 20 66 61 69 6c 69 6e 67 0a 20 20 20 20   or failing.    
2370: 7d 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67  } -result {wrong
2380: 20 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20   # args: should 
2390: 62 65 20 22 3a 3a 74 6c 73 3a 3a 6d 64 20 3f 2d  be "::tls::md ?-
23a0: 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68  bin|-hex? ?-ciph
23b0: 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73  er name? ?-diges
23c0: 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65  t name? ?-key ke
23d0: 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b  y? ?-mac name? [
23e0: 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20  -channel chan | 
23f0: 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65  -command cmdName
2400: 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d   | -file filenam
2410: 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61  e | ?-data? data
2420: 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ]"} -returnCodes
2430: 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 44 5f 45 72   {1}..test MD_Er
2440: 72 6f 72 73 2d 38 2e 33 20 7b 49 6e 76 61 6c 69  rors-8.3 {Invali
2450: 64 20 64 69 67 65 73 74 7d 20 2d 62 6f 64 79 20  d digest} -body 
2460: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 62 6f 67  {..::tls::md bog
2470: 75 73 20 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  us data.    } -r
2480: 65 73 75 6c 74 20 7b 69 6e 76 61 6c 69 64 20 64  esult {invalid d
2490: 69 67 65 73 74 20 22 62 6f 67 75 73 22 7d 20 2d  igest "bogus"} -
24a0: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
24b0: 0a 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d  .test MD_Errors-
24c0: 38 2e 34 20 7b 49 6e 76 61 6c 69 64 20 64 69 67  8.4 {Invalid dig
24d0: 65 73 74 20 41 72 67 7d 20 2d 62 6f 64 79 20 7b  est Arg} -body {
24e0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
24f0: 65 73 74 20 62 6f 67 75 73 20 2d 64 61 74 61 20  est bogus -data 
2500: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
2510: 6c 74 20 7b 69 6e 76 61 6c 69 64 20 64 69 67 65  lt {invalid dige
2520: 73 74 20 22 62 6f 67 75 73 22 7d 20 2d 72 65 74  st "bogus"} -ret
2530: 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65  urnCodes {1}..te
2540: 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 35  st MD_Errors-8.5
2550: 20 7b 4e 6f 20 64 69 67 65 73 74 7d 20 2d 62 6f   {No digest} -bo
2560: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
2570: 2d 68 65 78 20 2d 64 61 74 61 20 76 61 6c 75 65  -hex -data value
2580: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
2590: 6e 6f 20 64 69 67 65 73 74 7d 20 2d 72 65 74 75  no digest} -retu
25a0: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
25b0: 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 36 20  t MD_Errors-8.6 
25c0: 7b 49 6e 76 61 6c 69 64 20 6f 70 74 69 6f 6e 7d  {Invalid option}
25d0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
25e0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 32  :md -digest sha2
25f0: 35 36 20 2d 62 6f 67 75 73 20 76 61 6c 75 65 0a  56 -bogus value.
2600: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
2610: 61 64 20 6f 70 74 69 6f 6e 20 22 2d 62 6f 67 75  ad option "-bogu
2620: 73 22 3a 20 6d 75 73 74 20 62 65 20 2d 62 69 6e  s": must be -bin
2630: 2c 20 2d 62 69 6e 61 72 79 2c 20 2d 68 65 78 2c  , -binary, -hex,
2640: 20 2d 68 65 78 61 64 65 63 69 6d 61 6c 2c 20 2d   -hexadecimal, -
2650: 63 68 61 6e 2c 20 2d 63 68 61 6e 6e 65 6c 2c 20  chan, -channel, 
2660: 2d 63 69 70 68 65 72 2c 20 2d 63 6f 6d 6d 61 6e  -cipher, -comman
2670: 64 2c 20 2d 64 61 74 61 2c 20 2d 64 69 67 65 73  d, -data, -diges
2680: 74 2c 20 2d 66 69 6c 65 2c 20 2d 66 69 6c 65 6e  t, -file, -filen
2690: 61 6d 65 2c 20 2d 68 61 73 68 2c 20 2d 6b 65 79  ame, -hash, -key
26a0: 2c 20 6f 72 20 2d 6d 61 63 7d 20 2d 72 65 74 75  , or -mac} -retu
26b0: 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73  rnCodes {1}..tes
26c0: 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 37 20  t MD_Errors-8.7 
26d0: 7b 49 6e 76 61 6c 69 64 20 66 69 6c 65 7d 20 2d  {Invalid file} -
26e0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
26f0: 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36  d -digest sha256
2700: 20 2d 66 69 6c 65 20 62 6f 67 75 73 0a 20 20 20   -file bogus.   
2710: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 63 6f 75 6c   } -result {coul
2720: 64 6e 27 74 20 6f 70 65 6e 20 22 62 6f 67 75 73  dn't open "bogus
2730: 22 3a 20 6e 6f 20 73 75 63 68 20 66 69 6c 65 20  ": no such file 
2740: 6f 72 20 64 69 72 65 63 74 6f 72 79 7d 20 2d 72  or directory} -r
2750: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
2760: 74 65 73 74 20 4d 44 5f 45 72 72 6f 72 73 2d 38  test MD_Errors-8
2770: 2e 38 20 7b 49 6e 76 61 6c 69 64 20 63 68 61 6e  .8 {Invalid chan
2780: 6e 65 6c 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  nel} -body {..::
2790: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
27a0: 73 68 61 32 35 36 20 2d 63 68 61 6e 6e 65 6c 20  sha256 -channel 
27b0: 62 6f 67 75 73 0a 20 20 20 20 7d 20 2d 72 65 73  bogus.    } -res
27c0: 75 6c 74 20 7b 63 61 6e 20 6e 6f 74 20 66 69 6e  ult {can not fin
27d0: 64 20 63 68 61 6e 6e 65 6c 20 6e 61 6d 65 64 20  d channel named 
27e0: 22 62 6f 67 75 73 22 7d 20 2d 72 65 74 75 72 6e  "bogus"} -return
27f0: 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20  Codes {1}..test 
2800: 4d 44 5f 45 72 72 6f 72 73 2d 38 2e 39 20 7b 4e  MD_Errors-8.9 {N
2810: 6f 20 6f 70 65 72 61 74 69 6f 6e 7d 20 2d 62 6f  o operation} -bo
2820: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
2830: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
2840: 62 69 6e 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  bin.    } -resul
2850: 74 20 7b 4e 6f 20 6f 70 65 72 61 74 69 6f 6e 3a  t {No operation:
2860: 20 55 73 65 20 2d 63 68 61 6e 6e 65 6c 2c 20 2d   Use -channel, -
2870: 63 6f 6d 6d 61 6e 64 2c 20 2d 64 61 74 61 2c 20  command, -data, 
2880: 6f 72 20 2d 66 69 6c 65 20 6f 70 74 69 6f 6e 7d  or -file option}
2890: 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31   -returnCodes {1
28a0: 7d 0a 0a 0a 23 20 54 65 73 74 20 43 4d 41 43 20  }...# Test CMAC 
28b0: 63 6f 6d 6d 61 6e 64 0a 73 65 74 20 74 65 73 74  command.set test
28c0: 5f 63 69 70 68 65 72 20 22 61 65 73 2d 31 32 38  _cipher "aes-128
28d0: 2d 63 62 63 22 0a 73 65 74 20 74 65 73 74 5f 6b  -cbc".set test_k
28e0: 65 79 20 22 45 78 61 6d 70 6c 65 20 6b 65 79 20  ey "Example key 
28f0: 31 32 33 34 22 0a 0a 0a 74 65 73 74 20 43 4d 41  1234"...test CMA
2900: 43 2d 39 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f  C-9.1 {data} -bo
2910: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61  dy {..::tls::cma
2920: 63 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  c -cipher $test_
2930: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
2940: 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73  t_key -data $tes
2950: 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65  t_data.    } -re
2960: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39  sult {baf5c20f99
2970: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64  73e2d606b14c7efd
2980: 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d  fe52fa}..test CM
2990: 41 43 2d 39 2e 32 20 7b 66 69 6c 65 7d 20 2d 62  AC-9.2 {file} -b
29a0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d  ody {..::tls::cm
29b0: 61 63 20 2d 63 69 70 68 65 72 20 24 74 65 73 74  ac -cipher $test
29c0: 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65  _cipher -key $te
29d0: 73 74 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74 65  st_key -file $te
29e0: 73 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72  st_file.    } -r
29f0: 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39  esult {baf5c20f9
2a00: 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66  973e2d606b14c7ef
2a10: 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43  dfe52fa}..test C
2a20: 4d 41 43 2d 39 2e 33 20 7b 63 68 61 6e 6e 65 6c  MAC-9.3 {channel
2a30: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
2a40: 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c  t_read_chan ::tl
2a50: 73 3a 3a 63 6d 61 63 20 24 74 65 73 74 5f 66 69  s::cmac $test_fi
2a60: 6c 65 20 2d 63 69 70 68 65 72 20 24 74 65 73 74  le -cipher $test
2a70: 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65  _cipher -key $te
2a80: 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65  st_key.    } -re
2a90: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39  sult {baf5c20f99
2aa0: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64  73e2d606b14c7efd
2ab0: 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d  fe52fa}..test CM
2ac0: 41 43 2d 39 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d  AC-9.4 {command}
2ad0: 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73 74   -body {..digest
2ae0: 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65 73  _accumulate $tes
2af0: 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 63 6d  t_data ::tls::cm
2b00: 61 63 20 2d 63 69 70 68 65 72 20 24 74 65 73 74  ac -cipher $test
2b10: 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65  _cipher -key $te
2b20: 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65  st_key.    } -re
2b30: 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39  sult {baf5c20f99
2b40: 37 33 65 32 64 36 30 36 62 31 34 63 37 65 66 64  73e2d606b14c7efd
2b50: 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20 43 4d  fe52fa}..test CM
2b60: 41 43 2d 39 2e 35 20 7b 64 61 74 61 20 62 69 6e  AC-9.5 {data bin
2b70: 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72  } -body {..binar
2b80: 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a  y encode hex [::
2b90: 74 6c 73 3a 3a 63 6d 61 63 20 2d 62 69 6e 20 2d  tls::cmac -bin -
2ba0: 63 69 70 68 65 72 20 24 74 65 73 74 5f 63 69 70  cipher $test_cip
2bb0: 68 65 72 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b  her -key $test_k
2bc0: 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64  ey -data $test_d
2bd0: 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75  ata].    } -resu
2be0: 6c 74 20 7b 62 61 66 35 63 32 30 66 39 39 37 33  lt {baf5c20f9973
2bf0: 65 32 64 36 30 36 62 31 34 63 37 65 66 64 66 65  e2d606b14c7efdfe
2c00: 35 32 66 61 7d 0a 0a 23 20 54 65 73 74 20 4d 44  52fa}..# Test MD
2c10: 20 43 4d 41 43 0a 0a 0a 74 65 73 74 20 4d 44 5f   CMAC...test MD_
2c20: 43 4d 41 43 2d 31 30 2e 31 20 7b 64 61 74 61 7d  CMAC-10.1 {data}
2c30: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
2c40: 3a 6d 64 20 2d 63 69 70 68 65 72 20 24 74 65 73  :md -cipher $tes
2c50: 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74  t_cipher -key $t
2c60: 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74  est_key -data $t
2c70: 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d  est_data.    } -
2c80: 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32 30 66  result {baf5c20f
2c90: 39 39 37 33 65 32 64 36 30 36 62 31 34 63 37 65  9973e2d606b14c7e
2ca0: 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73 74 20  fdfe52fa}..test 
2cb0: 4d 44 5f 43 4d 41 43 2d 31 30 2e 32 20 7b 66 69  MD_CMAC-10.2 {fi
2cc0: 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  le} -body {..::t
2cd0: 6c 73 3a 3a 6d 64 20 2d 63 69 70 68 65 72 20 24  ls::md -cipher $
2ce0: 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b 65 79  test_cipher -key
2cf0: 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69 6c 65   $test_key -file
2d00: 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20 20 20   $test_file.    
2d10: 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63  } -result {baf5c
2d20: 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34  20f9973e2d606b14
2d30: 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65  c7efdfe52fa}..te
2d40: 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 33 20  st MD_CMAC-10.3 
2d50: 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64 79 20  {channel} -body 
2d60: 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64 5f 63  {..digest_read_c
2d70: 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20 24 74  han ::tls::md $t
2d80: 65 73 74 5f 66 69 6c 65 20 2d 63 69 70 68 65 72  est_file -cipher
2d90: 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b   $test_cipher -k
2da0: 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20 20 20  ey $test_key.   
2db0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35   } -result {baf5
2dc0: 63 32 30 66 39 39 37 33 65 32 64 36 30 36 62 31  c20f9973e2d606b1
2dd0: 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74  4c7efdfe52fa}..t
2de0: 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30 2e 34  est MD_CMAC-10.4
2df0: 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f 64 79   {command} -body
2e00: 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63 75 6d   {..digest_accum
2e10: 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61 74 61  ulate $test_data
2e20: 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 63 69 70 68   ::tls::md -ciph
2e30: 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72 20  er $test_cipher 
2e40: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20  -key $test_key. 
2e50: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61     } -result {ba
2e60: 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36  f5c20f9973e2d606
2e70: 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a  b14c7efdfe52fa}.
2e80: 0a 74 65 73 74 20 4d 44 5f 43 4d 41 43 2d 31 30  .test MD_CMAC-10
2e90: 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20 2d 62  .5 {data bin} -b
2ea0: 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20 65 6e  ody {..binary en
2eb0: 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c 73 3a  code hex [::tls:
2ec0: 3a 6d 64 20 2d 62 69 6e 20 2d 63 69 70 68 65 72  :md -bin -cipher
2ed0: 20 24 74 65 73 74 5f 63 69 70 68 65 72 20 2d 6b   $test_cipher -k
2ee0: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61  ey $test_key -da
2ef0: 74 61 20 24 74 65 73 74 5f 64 61 74 61 5d 0a 20  ta $test_data]. 
2f00: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 61     } -result {ba
2f10: 66 35 63 32 30 66 39 39 37 33 65 32 64 36 30 36  f5c20f9973e2d606
2f20: 62 31 34 63 37 65 66 64 66 65 35 32 66 61 7d 0a  b14c7efdfe52fa}.
2f30: 0a 23 20 54 65 73 74 20 43 4d 41 43 20 53 68 6f  .# Test CMAC Sho
2f40: 72 74 63 75 74 0a 0a 0a 74 65 73 74 20 43 4d 41  rtcut...test CMA
2f50: 43 5f 53 68 6f 72 74 63 75 74 2d 31 31 2e 31 20  C_Shortcut-11.1 
2f60: 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b 0a 09  {data} -body {..
2f70: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 24 74 65 73  ::tls::cmac $tes
2f80: 74 5f 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74  t_cipher -key $t
2f90: 65 73 74 5f 6b 65 79 20 24 74 65 73 74 5f 64 61  est_key $test_da
2fa0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
2fb0: 20 7b 62 61 66 35 63 32 30 66 39 39 37 33 65 32   {baf5c20f9973e2
2fc0: 64 36 30 36 62 31 34 63 37 65 66 64 66 65 35 32  d606b14c7efdfe52
2fd0: 66 61 7d 0a 0a 23 20 43 4d 41 43 20 45 72 72 6f  fa}..# CMAC Erro
2fe0: 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74 20 43  r Cases...test C
2ff0: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32 2e 31 20  MAC_Errors-12.1 
3000: 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d 20 2d  {Too few args} -
3010: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
3020: 6d 61 63 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  mac.    } -resul
3030: 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a  t {wrong # args:
3040: 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c   should be "::tl
3050: 73 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68  s::cmac ?-bin|-h
3060: 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d  ex? ?-cipher nam
3070: 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65  e? ?-digest name
3080: 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d  ? ?-key key? ?-m
3090: 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e  ac name? [-chann
30a0: 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61  el chan | -comma
30b0: 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69  nd cmdName | -fi
30c0: 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d  le filename | ?-
30d0: 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72  data? data]"} -r
30e0: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
30f0: 74 65 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73  test CMAC_Errors
3100: 2d 31 32 2e 32 20 7b 54 6f 6f 20 6d 61 6e 79 20  -12.2 {Too many 
3110: 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  args} -body {..:
3120: 3a 74 6c 73 3a 3a 63 6d 61 63 20 74 6f 6f 20 6d  :tls::cmac too m
3130: 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  any command line
3140: 20 61 72 67 73 20 74 6f 20 70 61 73 73 20 74 68   args to pass th
3150: 65 20 74 65 73 74 20 77 69 74 68 6f 75 74 20 61  e test without a
3160: 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 69 6c 69  n error or faili
3170: 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ng.    } -result
3180: 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73 3a 20   {wrong # args: 
3190: 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74 6c 73  should be "::tls
31a0: 3a 3a 63 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68 65  ::cmac ?-bin|-he
31b0: 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d 65  x? ?-cipher name
31c0: 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65 3f  ? ?-digest name?
31d0: 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d 61   ?-key key? ?-ma
31e0: 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e 65  c name? [-channe
31f0: 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61 6e  l chan | -comman
3200: 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69 6c  d cmdName | -fil
3210: 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d 64  e filename | ?-d
3220: 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72 65  ata? data]"} -re
3230: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74  turnCodes {1}..t
3240: 65 73 74 20 43 4d 41 43 5f 45 72 72 6f 72 73 2d  est CMAC_Errors-
3250: 31 32 2e 33 20 7b 4e 6f 20 63 69 70 68 65 72 7d  12.3 {No cipher}
3260: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
3270: 3a 63 6d 61 63 20 2d 68 65 78 20 2d 64 61 74 61  :cmac -hex -data
3280: 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20   $test_data.    
3290: 7d 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20 63 69  } -result {no ci
32a0: 70 68 65 72 7d 20 2d 72 65 74 75 72 6e 43 6f 64  pher} -returnCod
32b0: 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 43 4d 41  es {1}..test CMA
32c0: 43 5f 45 72 72 6f 72 73 2d 31 32 2e 34 20 7b 4e  C_Errors-12.4 {N
32d0: 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20 7b 0a 09  o key} -body {..
32e0: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70  ::tls::cmac -cip
32f0: 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72  her $test_cipher
3300: 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74   -data $test_dat
3310: 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  a.    } -result 
3320: 7b 6e 6f 20 6b 65 79 7d 20 2d 72 65 74 75 72 6e  {no key} -return
3330: 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20  Codes {1}..test 
3340: 43 4d 41 43 5f 45 72 72 6f 72 73 2d 31 32 2e 35  CMAC_Errors-12.5
3350: 20 7b 49 6e 76 61 6c 69 64 20 63 69 70 68 65 72   {Invalid cipher
3360: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
3370: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 62  ::cmac -cipher b
3380: 6f 67 75 73 20 2d 64 61 74 61 20 24 74 65 73 74  ogus -data $test
3390: 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  _data.    } -res
33a0: 75 6c 74 20 7b 69 6e 76 61 6c 69 64 20 63 69 70  ult {invalid cip
33b0: 68 65 72 20 22 62 6f 67 75 73 22 7d 20 2d 72 65  her "bogus"} -re
33c0: 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 0a  turnCodes {1}...
33d0: 23 20 54 65 73 74 20 48 4d 41 43 20 63 6f 6d 6d  # Test HMAC comm
33e0: 61 6e 64 0a 73 65 74 20 74 65 73 74 5f 64 69 67  and.set test_dig
33f0: 65 73 74 20 6d 64 35 0a 73 65 74 20 74 65 73 74  est md5.set test
3400: 5f 6b 65 79 20 22 45 78 61 6d 70 6c 65 20 6b 65  _key "Example ke
3410: 79 22 0a 0a 0a 74 65 73 74 20 48 4d 41 43 2d 31  y"...test HMAC-1
3420: 33 2e 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79  3.1 {data} -body
3430: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20   {..::tls::hmac 
3440: 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f 64 69  -digest $test_di
3450: 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f  gest -key $test_
3460: 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74 5f  key -data $test_
3470: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
3480: 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30  lt {f98327ef3e20
3490: 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39  ab6d388f676c6a79
34a0: 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d 41 43  d93d}..test HMAC
34b0: 2d 31 33 2e 32 20 7b 66 69 6c 65 7d 20 2d 62 6f  -13.2 {file} -bo
34c0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61  dy {..::tls::hma
34d0: 63 20 2d 64 69 67 65 73 74 20 24 74 65 73 74 5f  c -digest $test_
34e0: 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65 73  digest -key $tes
34f0: 74 5f 6b 65 79 20 2d 66 69 6c 65 20 24 74 65 73  t_key -file $tes
3500: 74 5f 66 69 6c 65 0a 20 20 20 20 7d 20 2d 72 65  t_file.    } -re
3510: 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65  sult {f98327ef3e
3520: 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61  20ab6d388f676c6a
3530: 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d  79d93d}..test HM
3540: 41 43 2d 31 33 2e 33 20 7b 63 68 61 6e 6e 65 6c  AC-13.3 {channel
3550: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
3560: 74 5f 72 65 61 64 5f 63 68 61 6e 20 3a 3a 74 6c  t_read_chan ::tl
3570: 73 3a 3a 68 6d 61 63 20 24 74 65 73 74 5f 66 69  s::hmac $test_fi
3580: 6c 65 20 2d 64 69 67 65 73 74 20 24 74 65 73 74  le -digest $test
3590: 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74 65  _digest -key $te
35a0: 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72 65  st_key.    } -re
35b0: 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65  sult {f98327ef3e
35c0: 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61  20ab6d388f676c6a
35d0: 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48 4d  79d93d}..test HM
35e0: 41 43 2d 31 33 2e 34 20 7b 63 6f 6d 6d 61 6e 64  AC-13.4 {command
35f0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 64 69 67 65 73  } -body {..diges
3600: 74 5f 61 63 63 75 6d 75 6c 61 74 65 20 24 74 65  t_accumulate $te
3610: 73 74 5f 64 61 74 61 20 3a 3a 74 6c 73 3a 3a 68  st_data ::tls::h
3620: 6d 61 63 20 2d 64 69 67 65 73 74 20 24 74 65 73  mac -digest $tes
3630: 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20 24 74  t_digest -key $t
3640: 65 73 74 5f 6b 65 79 0a 20 20 20 20 7d 20 2d 72  est_key.    } -r
3650: 65 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33  esult {f98327ef3
3660: 65 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36  e20ab6d388f676c6
3670: 61 37 39 64 39 33 64 7d 0a 0a 74 65 73 74 20 48  a79d93d}..test H
3680: 4d 41 43 2d 31 33 2e 35 20 7b 64 61 74 61 20 62  MAC-13.5 {data b
3690: 69 6e 7d 20 2d 62 6f 64 79 20 7b 0a 09 62 69 6e  in} -body {..bin
36a0: 61 72 79 20 65 6e 63 6f 64 65 20 68 65 78 20 5b  ary encode hex [
36b0: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
36c0: 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74  est $test_digest
36d0: 20 2d 62 69 6e 20 2d 6b 65 79 20 24 74 65 73 74   -bin -key $test
36e0: 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65 73 74  _key -data $test
36f0: 5f 64 61 74 61 5d 0a 20 20 20 20 7d 20 2d 72 65  _data].    } -re
3700: 73 75 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65  sult {f98327ef3e
3710: 32 30 61 62 36 64 33 38 38 66 36 37 36 63 36 61  20ab6d388f676c6a
3720: 37 39 64 39 33 64 7d 0a 0a 23 20 54 65 73 74 20  79d93d}..# Test 
3730: 4d 44 20 48 4d 41 43 0a 0a 0a 74 65 73 74 20 4d  MD HMAC...test M
3740: 44 5f 48 4d 41 43 2d 31 34 2e 31 20 7b 64 61 74  D_HMAC-14.1 {dat
3750: 61 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  a} -body {..::tl
3760: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 24 74  s::md -digest $t
3770: 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20  est_digest -key 
3780: 24 74 65 73 74 5f 6b 65 79 20 2d 64 61 74 61 20  $test_key -data 
3790: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
37a0: 20 2d 72 65 73 75 6c 74 20 7b 66 39 38 33 32 37   -result {f98327
37b0: 65 66 33 65 32 30 61 62 36 64 33 38 38 66 36 37  ef3e20ab6d388f67
37c0: 36 63 36 61 37 39 64 39 33 64 7d 0a 0a 74 65 73  6c6a79d93d}..tes
37d0: 74 20 4d 44 5f 48 4d 41 43 2d 31 34 2e 32 20 7b  t MD_HMAC-14.2 {
37e0: 66 69 6c 65 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  file} -body {..:
37f0: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
3800: 20 24 74 65 73 74 5f 64 69 67 65 73 74 20 2d 6b   $test_digest -k
3810: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 66 69  ey $test_key -fi
3820: 6c 65 20 24 74 65 73 74 5f 66 69 6c 65 0a 20 20  le $test_file.  
3830: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39 38    } -result {f98
3840: 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38 38  327ef3e20ab6d388
3850: 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a 0a  f676c6a79d93d}..
3860: 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31 34 2e  test MD_HMAC-14.
3870: 33 20 7b 63 68 61 6e 6e 65 6c 7d 20 2d 62 6f 64  3 {channel} -bod
3880: 79 20 7b 0a 09 64 69 67 65 73 74 5f 72 65 61 64  y {..digest_read
3890: 5f 63 68 61 6e 20 3a 3a 74 6c 73 3a 3a 6d 64 20  _chan ::tls::md 
38a0: 24 74 65 73 74 5f 66 69 6c 65 20 2d 64 69 67 65  $test_file -dige
38b0: 73 74 20 24 74 65 73 74 5f 64 69 67 65 73 74 20  st $test_digest 
38c0: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 0a 20  -key $test_key. 
38d0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 66 39     } -result {f9
38e0: 38 33 32 37 65 66 33 65 32 30 61 62 36 64 33 38  8327ef3e20ab6d38
38f0: 38 66 36 37 36 63 36 61 37 39 64 39 33 64 7d 0a  8f676c6a79d93d}.
3900: 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d 31 34  .test MD_HMAC-14
3910: 2e 34 20 7b 63 6f 6d 6d 61 6e 64 7d 20 2d 62 6f  .4 {command} -bo
3920: 64 79 20 7b 0a 09 64 69 67 65 73 74 5f 61 63 63  dy {..digest_acc
3930: 75 6d 75 6c 61 74 65 20 24 74 65 73 74 5f 64 61  umulate $test_da
3940: 74 61 20 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  ta ::tls::md -di
3950: 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73  gest $test_diges
3960: 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79  t -key $test_key
3970: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3980: 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64  f98327ef3e20ab6d
3990: 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64  388f676c6a79d93d
39a0: 7d 0a 0a 74 65 73 74 20 4d 44 5f 48 4d 41 43 2d  }..test MD_HMAC-
39b0: 31 34 2e 35 20 7b 64 61 74 61 20 62 69 6e 7d 20  14.5 {data bin} 
39c0: 2d 62 6f 64 79 20 7b 0a 09 62 69 6e 61 72 79 20  -body {..binary 
39d0: 65 6e 63 6f 64 65 20 68 65 78 20 5b 3a 3a 74 6c  encode hex [::tl
39e0: 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 24 74  s::md -digest $t
39f0: 65 73 74 5f 64 69 67 65 73 74 20 2d 62 69 6e 20  est_digest -bin 
3a00: 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d  -key $test_key -
3a10: 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 5d  data $test_data]
3a20: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
3a30: 66 39 38 33 32 37 65 66 33 65 32 30 61 62 36 64  f98327ef3e20ab6d
3a40: 33 38 38 66 36 37 36 63 36 61 37 39 64 39 33 64  388f676c6a79d93d
3a50: 7d 0a 0a 23 20 54 65 73 74 20 48 4d 41 43 20 53  }..# Test HMAC S
3a60: 68 6f 72 74 63 75 74 0a 0a 0a 74 65 73 74 20 48  hortcut...test H
3a70: 4d 41 43 5f 53 68 6f 72 74 63 75 74 2d 31 35 2e  MAC_Shortcut-15.
3a80: 31 20 7b 64 61 74 61 7d 20 2d 62 6f 64 79 20 7b  1 {data} -body {
3a90: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 24 74  ..::tls::hmac $t
3aa0: 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20  est_digest -key 
3ab0: 24 74 65 73 74 5f 6b 65 79 20 24 74 65 73 74 5f  $test_key $test_
3ac0: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
3ad0: 6c 74 20 7b 66 39 38 33 32 37 65 66 33 65 32 30  lt {f98327ef3e20
3ae0: 61 62 36 64 33 38 38 66 36 37 36 63 36 61 37 39  ab6d388f676c6a79
3af0: 64 39 33 64 7d 0a 0a 23 20 48 4d 41 43 20 45 72  d93d}..# HMAC Er
3b00: 72 6f 72 20 43 61 73 65 73 0a 0a 0a 74 65 73 74  ror Cases...test
3b10: 20 48 4d 41 43 5f 45 72 72 6f 72 73 2d 31 36 2e   HMAC_Errors-16.
3b20: 31 20 7b 54 6f 6f 20 66 65 77 20 61 72 67 73 7d  1 {Too few args}
3b30: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
3b40: 3a 68 6d 61 63 0a 20 20 20 20 7d 20 2d 72 65 73  :hmac.    } -res
3b50: 75 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67  ult {wrong # arg
3b60: 73 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a  s: should be "::
3b70: 74 6c 73 3a 3a 68 6d 61 63 20 3f 2d 62 69 6e 7c  tls::hmac ?-bin|
3b80: 2d 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e  -hex? ?-cipher n
3b90: 61 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61  ame? ?-digest na
3ba0: 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f  me? ?-key key? ?
3bb0: 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61  -mac name? [-cha
3bc0: 6e 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d  nnel chan | -com
3bd0: 6d 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d  mand cmdName | -
3be0: 66 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20  file filename | 
3bf0: 3f 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20  ?-data? data]"} 
3c00: 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d  -returnCodes {1}
3c10: 0a 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f  ..test HMAC_Erro
3c20: 72 73 2d 31 36 2e 32 20 7b 54 6f 6f 20 6d 61 6e  rs-16.2 {Too man
3c30: 79 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a  y args} -body {.
3c40: 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 74 6f 6f  .::tls::hmac too
3c50: 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69   many command li
3c60: 6e 65 20 61 72 67 73 20 74 6f 20 70 61 73 73 20  ne args to pass 
3c70: 74 68 65 20 74 65 73 74 20 77 69 74 68 6f 75 74  the test without
3c80: 20 61 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 69   an error or fai
3c90: 6c 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 75  ling.    } -resu
3ca0: 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73  lt {wrong # args
3cb0: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74  : should be "::t
3cc0: 6c 73 3a 3a 68 6d 61 63 20 3f 2d 62 69 6e 7c 2d  ls::hmac ?-bin|-
3cd0: 68 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61  hex? ?-cipher na
3ce0: 6d 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d  me? ?-digest nam
3cf0: 65 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d  e? ?-key key? ?-
3d00: 6d 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e  mac name? [-chan
3d10: 6e 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d  nel chan | -comm
3d20: 61 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66  and cmdName | -f
3d30: 69 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f  ile filename | ?
3d40: 2d 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d  -data? data]"} -
3d50: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
3d60: 0a 74 65 73 74 20 48 4d 41 43 5f 45 72 72 6f 72  .test HMAC_Error
3d70: 73 2d 31 36 2e 33 20 7b 4e 6f 20 64 69 67 65 73  s-16.3 {No diges
3d80: 74 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  t} -body {..::tl
3d90: 73 3a 3a 68 6d 61 63 20 2d 68 65 78 20 2d 64 61  s::hmac -hex -da
3da0: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
3db0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20    } -result {no 
3dc0: 64 69 67 65 73 74 7d 20 2d 72 65 74 75 72 6e 43  digest} -returnC
3dd0: 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48  odes {1}..test H
3de0: 4d 41 43 5f 45 72 72 6f 72 73 2d 31 36 2e 34 20  MAC_Errors-16.4 
3df0: 7b 4e 6f 20 6b 65 79 7d 20 2d 62 6f 64 79 20 7b  {No key} -body {
3e00: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
3e10: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 61  igest sha256 -da
3e20: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
3e30: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 6e 6f 20    } -result {no 
3e40: 6b 65 79 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65  key} -returnCode
3e50: 73 20 7b 31 7d 0a 0a 74 65 73 74 20 48 4d 41 43  s {1}..test HMAC
3e60: 5f 45 72 72 6f 72 73 2d 31 36 2e 35 20 7b 49 6e  _Errors-16.5 {In
3e70: 76 61 6c 69 64 20 64 69 67 65 73 74 7d 20 2d 62  valid digest} -b
3e80: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
3e90: 20 2d 64 69 67 65 73 74 20 62 6f 67 75 73 20 2d   -digest bogus -
3ea0: 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64  key $test_key -d
3eb0: 61 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20  ata $test_data. 
3ec0: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 69 6e     } -result {in
3ed0: 76 61 6c 69 64 20 64 69 67 65 73 74 20 22 62 6f  valid digest "bo
3ee0: 67 75 73 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64  gus"} -returnCod
3ef0: 65 73 20 7b 31 7d 0a 0a 0a 23 20 54 65 73 74 20  es {1}...# Test 
3f00: 4d 41 43 20 63 6f 6d 6d 61 6e 64 0a 73 65 74 20  MAC command.set 
3f10: 74 65 73 74 5f 63 69 70 68 65 72 20 22 61 65 73  test_cipher "aes
3f20: 2d 31 32 38 2d 63 62 63 22 0a 73 65 74 20 74 65  -128-cbc".set te
3f30: 73 74 5f 64 69 67 65 73 74 20 73 68 61 32 35 36  st_digest sha256
3f40: 0a 73 65 74 20 74 65 73 74 5f 6b 65 79 20 22 45  .set test_key "E
3f50: 78 61 6d 70 6c 65 20 6b 65 79 20 31 32 33 34 22  xample key 1234"
3f60: 0a 0a 0a 74 65 73 74 20 4d 41 43 2d 31 37 2e 31  ...test MAC-17.1
3f70: 20 7b 43 4d 41 43 7d 20 2d 62 6f 64 79 20 7b 0a   {CMAC} -body {.
3f80: 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 2d 63 69 70  .::tls::mac -cip
3f90: 68 65 72 20 24 74 65 73 74 5f 63 69 70 68 65 72  her $test_cipher
3fa0: 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65 79 20   -key $test_key 
3fb0: 2d 6d 61 63 20 63 6d 61 63 20 2d 64 61 74 61 20  -mac cmac -data 
3fc0: 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20 20 7d  $test_data.    }
3fd0: 20 2d 72 65 73 75 6c 74 20 7b 62 61 66 35 63 32   -result {baf5c2
3fe0: 30 66 39 39 37 33 65 32 64 36 30 36 62 31 34 63  0f9973e2d606b14c
3ff0: 37 65 66 64 66 65 35 32 66 61 7d 0a 0a 74 65 73  7efdfe52fa}..tes
4000: 74 20 4d 41 43 2d 31 37 2e 32 20 7b 48 4d 41 43  t MAC-17.2 {HMAC
4010: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
4020: 3a 3a 6d 61 63 20 2d 64 69 67 65 73 74 20 24 74  ::mac -digest $t
4030: 65 73 74 5f 64 69 67 65 73 74 20 2d 6b 65 79 20  est_digest -key 
4040: 24 74 65 73 74 5f 6b 65 79 20 2d 6d 61 63 20 68  $test_key -mac h
4050: 6d 61 63 20 2d 64 61 74 61 20 24 74 65 73 74 5f  mac -data $test_
4060: 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75  data.    } -resu
4070: 6c 74 20 7b 36 37 36 64 61 66 39 36 33 37 30 64  lt {676daf96370d
4080: 30 65 33 63 35 35 39 38 35 35 37 64 61 33 38 61  0e3c5598557da38a
4090: 39 61 38 31 30 61 34 66 62 61 63 62 62 32 64 31  9a810a4fbacbb2d1
40a0: 30 63 36 37 66 36 64 66 61 38 33 66 31 30 66 34  0c67f6dfa83f10f4
40b0: 38 65 39 36 7d 0a 0a 74 65 73 74 20 4d 41 43 2d  8e96}..test MAC-
40c0: 31 37 2e 33 20 7b 4d 44 2d 43 4d 41 43 7d 20 2d  17.3 {MD-CMAC} -
40d0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
40e0: 64 20 2d 63 69 70 68 65 72 20 24 74 65 73 74 5f  d -cipher $test_
40f0: 63 69 70 68 65 72 20 2d 6b 65 79 20 24 74 65 73  cipher -key $tes
4100: 74 5f 6b 65 79 20 2d 6d 61 63 20 63 6d 61 63 20  t_key -mac cmac 
4110: 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61 74 61  -data $test_data
4120: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
4130: 62 61 66 35 63 32 30 66 39 39 37 33 65 32 64 36  baf5c20f9973e2d6
4140: 30 36 62 31 34 63 37 65 66 64 66 65 35 32 66 61  06b14c7efdfe52fa
4150: 7d 0a 0a 74 65 73 74 20 4d 41 43 2d 31 37 2e 34  }..test MAC-17.4
4160: 20 7b 4d 44 2d 48 4d 41 43 7d 20 2d 62 6f 64 79   {MD-HMAC} -body
4170: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
4180: 69 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65  igest $test_dige
4190: 73 74 20 2d 6b 65 79 20 24 74 65 73 74 5f 6b 65  st -key $test_ke
41a0: 79 20 2d 6d 61 63 20 68 6d 61 63 20 2d 64 61 74  y -mac hmac -dat
41b0: 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20 20  a $test_data.   
41c0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 37 36 64   } -result {676d
41d0: 61 66 39 36 33 37 30 64 30 65 33 63 35 35 39 38  af96370d0e3c5598
41e0: 35 35 37 64 61 33 38 61 39 61 38 31 30 61 34 66  557da38a9a810a4f
41f0: 62 61 63 62 62 32 64 31 30 63 36 37 66 36 64 66  bacbb2d10c67f6df
4200: 61 38 33 66 31 30 66 34 38 65 39 36 7d 0a 0a 23  a83f10f48e96}..#
4210: 20 4d 41 43 20 45 72 72 6f 72 20 43 61 73 65 73   MAC Error Cases
4220: 0a 0a 0a 74 65 73 74 20 4d 41 43 5f 45 72 72 6f  ...test MAC_Erro
4230: 72 73 2d 31 38 2e 31 20 7b 54 6f 6f 20 66 65 77  rs-18.1 {Too few
4240: 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b 0a 09   args} -body {..
4250: 3a 3a 74 6c 73 3a 3a 6d 61 63 0a 20 20 20 20 7d  ::tls::mac.    }
4260: 20 2d 72 65 73 75 6c 74 20 7b 77 72 6f 6e 67 20   -result {wrong 
4270: 23 20 61 72 67 73 3a 20 73 68 6f 75 6c 64 20 62  # args: should b
4280: 65 20 22 3a 3a 74 6c 73 3a 3a 6d 61 63 20 3f 2d  e "::tls::mac ?-
4290: 62 69 6e 7c 2d 68 65 78 3f 20 3f 2d 63 69 70 68  bin|-hex? ?-ciph
42a0: 65 72 20 6e 61 6d 65 3f 20 3f 2d 64 69 67 65 73  er name? ?-diges
42b0: 74 20 6e 61 6d 65 3f 20 3f 2d 6b 65 79 20 6b 65  t name? ?-key ke
42c0: 79 3f 20 3f 2d 6d 61 63 20 6e 61 6d 65 3f 20 5b  y? ?-mac name? [
42d0: 2d 63 68 61 6e 6e 65 6c 20 63 68 61 6e 20 7c 20  -channel chan | 
42e0: 2d 63 6f 6d 6d 61 6e 64 20 63 6d 64 4e 61 6d 65  -command cmdName
42f0: 20 7c 20 2d 66 69 6c 65 20 66 69 6c 65 6e 61 6d   | -file filenam
4300: 65 20 7c 20 3f 2d 64 61 74 61 3f 20 64 61 74 61  e | ?-data? data
4310: 5d 22 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73  ]"} -returnCodes
4320: 20 7b 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45   {1}..test MAC_E
4330: 72 72 6f 72 73 2d 31 38 2e 32 20 7b 4e 6f 20 6d  rrors-18.2 {No m
4340: 61 63 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  ac} -body {..::t
4350: 6c 73 3a 3a 6d 61 63 20 2d 6b 65 79 20 24 74 65  ls::mac -key $te
4360: 73 74 5f 6b 65 79 20 2d 64 61 74 61 20 24 74 65  st_key -data $te
4370: 73 74 5f 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  st_data.    } -r
4380: 65 73 75 6c 74 20 7b 6e 6f 20 4d 41 43 7d 20 2d  esult {no MAC} -
4390: 72 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a  returnCodes {1}.
43a0: 0a 74 65 73 74 20 4d 41 43 5f 45 72 72 6f 72 73  .test MAC_Errors
43b0: 2d 31 38 2e 33 20 7b 4e 6f 20 6b 65 79 7d 20 2d  -18.3 {No key} -
43c0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
43d0: 61 63 20 2d 6d 61 63 20 68 6d 61 63 20 2d 64 69  ac -mac hmac -di
43e0: 67 65 73 74 20 24 74 65 73 74 5f 64 69 67 65 73  gest $test_diges
43f0: 74 20 2d 64 61 74 61 20 24 74 65 73 74 5f 64 61  t -data $test_da
4400: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
4410: 20 7b 6e 6f 20 6b 65 79 7d 20 2d 72 65 74 75 72   {no key} -retur
4420: 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a 74 65 73 74  nCodes {1}..test
4430: 20 4d 41 43 5f 45 72 72 6f 72 73 2d 31 38 2e 34   MAC_Errors-18.4
4440: 20 7b 49 6e 76 61 6c 69 64 20 4d 41 43 7d 20 2d   {Invalid MAC} -
4450: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
4460: 61 63 20 2d 6d 61 63 20 62 6f 67 75 73 20 2d 6b  ac -mac bogus -k
4470: 65 79 20 24 74 65 73 74 5f 6b 65 79 20 2d 64 61  ey $test_key -da
4480: 74 61 20 24 74 65 73 74 5f 64 61 74 61 0a 20 20  ta $test_data.  
4490: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 69 6e 76    } -result {inv
44a0: 61 6c 69 64 20 4d 41 43 20 22 62 6f 67 75 73 22  alid MAC "bogus"
44b0: 7d 20 2d 72 65 74 75 72 6e 43 6f 64 65 73 20 7b  } -returnCodes {
44c0: 31 7d 0a 0a 74 65 73 74 20 4d 41 43 5f 45 72 72  1}..test MAC_Err
44d0: 6f 72 73 2d 31 38 2e 35 20 7b 54 6f 6f 20 6d 61  ors-18.5 {Too ma
44e0: 6e 79 20 61 72 67 73 7d 20 2d 62 6f 64 79 20 7b  ny args} -body {
44f0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 61 63 20 74 6f 6f  ..::tls::mac too
4500: 20 6d 61 6e 79 20 63 6f 6d 6d 61 6e 64 20 6c 69   many command li
4510: 6e 65 20 61 72 67 73 20 74 6f 20 70 61 73 73 20  ne args to pass 
4520: 74 68 65 20 74 65 73 74 20 77 69 74 68 6f 75 74  the test without
4530: 20 61 6e 20 65 72 72 6f 72 20 6f 72 20 66 61 69   an error or fai
4540: 6c 69 6e 67 0a 20 20 20 20 7d 20 2d 72 65 73 75  ling.    } -resu
4550: 6c 74 20 7b 77 72 6f 6e 67 20 23 20 61 72 67 73  lt {wrong # args
4560: 3a 20 73 68 6f 75 6c 64 20 62 65 20 22 3a 3a 74  : should be "::t
4570: 6c 73 3a 3a 6d 61 63 20 3f 2d 62 69 6e 7c 2d 68  ls::mac ?-bin|-h
4580: 65 78 3f 20 3f 2d 63 69 70 68 65 72 20 6e 61 6d  ex? ?-cipher nam
4590: 65 3f 20 3f 2d 64 69 67 65 73 74 20 6e 61 6d 65  e? ?-digest name
45a0: 3f 20 3f 2d 6b 65 79 20 6b 65 79 3f 20 3f 2d 6d  ? ?-key key? ?-m
45b0: 61 63 20 6e 61 6d 65 3f 20 5b 2d 63 68 61 6e 6e  ac name? [-chann
45c0: 65 6c 20 63 68 61 6e 20 7c 20 2d 63 6f 6d 6d 61  el chan | -comma
45d0: 6e 64 20 63 6d 64 4e 61 6d 65 20 7c 20 2d 66 69  nd cmdName | -fi
45e0: 6c 65 20 66 69 6c 65 6e 61 6d 65 20 7c 20 3f 2d  le filename | ?-
45f0: 64 61 74 61 3f 20 64 61 74 61 5d 22 7d 20 2d 72  data? data]"} -r
4600: 65 74 75 72 6e 43 6f 64 65 73 20 7b 31 7d 0a 0a  eturnCodes {1}..
4610: 0a 23 20 52 46 43 20 31 33 32 31 20 4d 65 73 73  .# RFC 1321 Mess
4620: 61 67 65 20 44 69 67 65 73 74 20 35 0a 0a 0a 74  age Digest 5...t
4630: 65 73 74 20 52 46 43 31 33 32 31 2d 4d 44 35 2d  est RFC1321-MD5-
4640: 31 39 2e 31 20 7b 54 43 31 7d 20 2d 62 6f 64 79  19.1 {TC1} -body
4650: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64   {..::tls::md -d
4660: 69 67 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20  igest md5 -data 
4670: 22 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  "".    } -result
4680: 20 7b 64 34 31 64 38 63 64 39 38 66 30 30 62 32   {d41d8cd98f00b2
4690: 30 34 65 39 38 30 30 39 39 38 65 63 66 38 34 32  04e9800998ecf842
46a0: 37 65 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32  7e}..test RFC132
46b0: 31 2d 4d 44 35 2d 31 39 2e 32 20 7b 54 43 32 7d  1-MD5-19.2 {TC2}
46c0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
46d0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
46e0: 2d 64 61 74 61 20 22 61 22 0a 20 20 20 20 7d 20  -data "a".    } 
46f0: 2d 72 65 73 75 6c 74 20 7b 30 63 63 31 37 35 62  -result {0cc175b
4700: 39 63 30 66 31 62 36 61 38 33 31 63 33 39 39 65  9c0f1b6a831c399e
4710: 32 36 39 37 37 32 36 36 31 7d 0a 0a 74 65 73 74  269772661}..test
4720: 20 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e   RFC1321-MD5-19.
4730: 33 20 7b 54 43 33 7d 20 2d 62 6f 64 79 20 7b 0a  3 {TC3} -body {.
4740: 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65  .::tls::md -dige
4750: 73 74 20 6d 64 35 20 2d 64 61 74 61 20 22 61 62  st md5 -data "ab
4760: 63 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  c".    } -result
4770: 20 7b 39 30 30 31 35 30 39 38 33 63 64 32 34 66   {900150983cd24f
4780: 62 30 64 36 39 36 33 66 37 64 32 38 65 31 37 66  b0d6963f7d28e17f
4790: 37 32 7d 0a 0a 74 65 73 74 20 52 46 43 31 33 32  72}..test RFC132
47a0: 31 2d 4d 44 35 2d 31 39 2e 34 20 7b 54 43 34 7d  1-MD5-19.4 {TC4}
47b0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
47c0: 3a 6d 64 20 2d 64 69 67 65 73 74 20 6d 64 35 20  :md -digest md5 
47d0: 2d 64 61 74 61 20 22 6d 65 73 73 61 67 65 20 64  -data "message d
47e0: 69 67 65 73 74 22 0a 20 20 20 20 7d 20 2d 72 65  igest".    } -re
47f0: 73 75 6c 74 20 7b 66 39 36 62 36 39 37 64 37 63  sult {f96b697d7c
4800: 62 37 39 33 38 64 35 32 35 61 32 66 33 31 61 61  b7938d525a2f31aa
4810: 66 31 36 31 64 30 7d 0a 0a 74 65 73 74 20 52 46  f161d0}..test RF
4820: 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e 35 20 7b  C1321-MD5-19.5 {
4830: 54 43 35 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  TC5} -body {..::
4840: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
4850: 6d 64 35 20 2d 64 61 74 61 20 22 61 62 63 64 65  md5 -data "abcde
4860: 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75  fghijklmnopqrstu
4870: 76 77 78 79 7a 22 0a 20 20 20 20 7d 20 2d 72 65  vwxyz".    } -re
4880: 73 75 6c 74 20 7b 63 33 66 63 64 33 64 37 36 31  sult {c3fcd3d761
4890: 39 32 65 34 30 30 37 64 66 62 34 39 36 63 63 61  92e4007dfb496cca
48a0: 36 37 65 31 33 62 7d 0a 0a 74 65 73 74 20 52 46  67e13b}..test RF
48b0: 43 31 33 32 31 2d 4d 44 35 2d 31 39 2e 36 20 7b  C1321-MD5-19.6 {
48c0: 54 43 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  TC6} -body {..::
48d0: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
48e0: 6d 64 35 20 2d 64 61 74 61 20 22 41 42 43 44 45  md5 -data "ABCDE
48f0: 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55  FGHIJKLMNOPQRSTU
4900: 56 57 58 59 5a 61 62 63 64 65 66 67 68 69 6a 6b  VWXYZabcdefghijk
4910: 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 30  lmnopqrstuvwxyz0
4920: 31 32 33 34 35 36 37 38 39 22 0a 20 20 20 20 7d  123456789".    }
4930: 20 2d 72 65 73 75 6c 74 20 7b 64 31 37 34 61 62   -result {d174ab
4940: 39 38 64 32 37 37 64 39 66 35 61 35 36 31 31 63  98d277d9f5a5611c
4950: 32 63 39 66 34 31 39 64 39 66 7d 0a 0a 74 65 73  2c9f419d9f}..tes
4960: 74 20 52 46 43 31 33 32 31 2d 4d 44 35 2d 31 39  t RFC1321-MD5-19
4970: 2e 37 20 7b 54 43 37 7d 20 2d 62 6f 64 79 20 7b  .7 {TC7} -body {
4980: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
4990: 65 73 74 20 6d 64 35 20 2d 64 61 74 61 20 5b 73  est md5 -data [s
49a0: 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 31 32  tring repeat "12
49b0: 33 34 35 36 37 38 39 30 22 20 38 5d 0a 20 20 20  34567890" 8].   
49c0: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35 37 65 64   } -result {57ed
49d0: 66 34 61 32 32 62 65 33 63 39 35 35 61 63 34 39  f4a22be3c955ac49
49e0: 64 61 32 65 32 31 30 37 62 36 37 61 7d 0a 0a 23  da2e2107b67a}..#
49f0: 20 52 46 43 20 36 32 33 34 20 53 48 41 31 0a 0a   RFC 6234 SHA1..
4a00: 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44  .test RFC6234-MD
4a10: 2d 53 48 41 31 2d 32 30 2e 31 20 7b 54 43 31 7d  -SHA1-20.1 {TC1}
4a20: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
4a30: 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31  :md -digest sha1
4a40: 20 2d 64 61 74 61 20 22 61 62 63 22 0a 20 20 20   -data "abc".   
4a50: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61 39 39 39   } -result {a999
4a60: 33 65 33 36 34 37 30 36 38 31 36 61 62 61 33 65  3e364706816aba3e
4a70: 32 35 37 31 37 38 35 30 63 32 36 63 39 63 64 30  25717850c26c9cd0
4a80: 64 38 39 64 7d 0a 0a 74 65 73 74 20 52 46 43 36  d89d}..test RFC6
4a90: 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 32  234-MD-SHA1-20.2
4aa0: 20 7b 54 43 32 5f 31 7d 20 2d 62 6f 64 79 20 7b   {TC2_1} -body {
4ab0: 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67  ..::tls::md -dig
4ac0: 65 73 74 20 73 68 61 31 20 2d 64 61 74 61 20 22  est sha1 -data "
4ad0: 61 62 63 64 62 63 64 65 63 64 65 66 64 65 66 67  abcdbcdecdefdefg
4ae0: 65 66 67 68 66 67 68 69 67 68 69 6a 68 69 6a 6b  efghfghighijhijk
4af0: 69 6a 6b 6c 6a 6b 6c 6d 6b 6c 6d 6e 6c 6d 6e 6f  ijkljklmklmnlmno
4b00: 6d 6e 6f 70 6e 6f 70 71 22 0a 20 20 20 20 7d 20  mnopnopq".    } 
4b10: 2d 72 65 73 75 6c 74 20 7b 38 34 39 38 33 65 34  -result {84983e4
4b20: 34 31 63 33 62 64 32 36 65 62 61 61 65 34 61 61  41c3bd26ebaae4aa
4b30: 31 66 39 35 31 32 39 65 35 65 35 34 36 37 30 66  1f95129e5e54670f
4b40: 31 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34  1}..test RFC6234
4b50: 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 33 20 7b 54  -MD-SHA1-20.3 {T
4b60: 43 33 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  C3} -body {..::t
4b70: 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73  ls::md -digest s
4b80: 68 61 31 20 2d 64 61 74 61 20 5b 73 74 72 69 6e  ha1 -data [strin
4b90: 67 20 72 65 70 65 61 74 20 22 61 22 20 31 30 30  g repeat "a" 100
4ba0: 30 30 30 30 5d 0a 20 20 20 20 7d 20 2d 72 65 73  0000].    } -res
4bb0: 75 6c 74 20 7b 33 34 61 61 39 37 33 63 64 34 63  ult {34aa973cd4c
4bc0: 34 64 61 61 34 66 36 31 65 65 62 32 62 64 62 61  4daa4f61eeb2bdba
4bd0: 64 32 37 33 31 36 35 33 34 30 31 36 66 7d 0a 0a  d27316534016f}..
4be0: 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d  test RFC6234-MD-
4bf0: 53 48 41 31 2d 32 30 2e 34 20 7b 54 43 34 7d 20  SHA1-20.4 {TC4} 
4c00: 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a  -body {..::tls::
4c10: 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61 31 20  md -digest sha1 
4c20: 2d 64 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65  -data [string re
4c30: 70 65 61 74 20 22 30 31 32 33 34 35 36 37 22 20  peat "01234567" 
4c40: 38 30 5d 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  80].    } -resul
4c50: 74 20 7b 64 65 61 33 35 36 61 32 63 64 64 64 39  t {dea356a2cddd9
4c60: 30 63 37 61 37 65 63 65 64 63 35 65 62 62 35 36  0c7a7ecedc5ebb56
4c70: 33 39 33 34 66 34 36 30 34 35 32 7d 0a 0a 74 65  3934f460452}..te
4c80: 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48  st RFC6234-MD-SH
4c90: 41 31 2d 32 30 2e 35 20 7b 54 43 36 7d 20 2d 62  A1-20.5 {TC6} -b
4ca0: 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64  ody {..::tls::md
4cb0: 20 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d 64   -digest sha1 -d
4cc0: 61 74 61 20 22 5c 78 35 65 22 0a 20 20 20 20 7d  ata "\x5e".    }
4cd0: 20 2d 72 65 73 75 6c 74 20 7b 35 65 36 66 38 30   -result {5e6f80
4ce0: 61 33 34 61 39 37 39 38 63 61 66 63 36 61 35 64  a34a9798cafc6a5d
4cf0: 62 39 36 63 63 35 37 62 61 34 63 34 64 62 35 39  b96cc57ba4c4db59
4d00: 63 32 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33  c2}..test RFC623
4d10: 34 2d 4d 44 2d 53 48 41 31 2d 32 30 2e 36 20 7b  4-MD-SHA1-20.6 {
4d20: 54 43 38 5f 31 7d 20 2d 62 6f 64 79 20 7b 0a 09  TC8_1} -body {..
4d30: 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73  ::tls::md -diges
4d40: 74 20 73 68 61 31 20 2d 64 61 74 61 20 22 5c 78  t sha1 -data "\x
4d50: 39 61 5c 78 37 64 5c 78 66 64 5c 78 66 31 5c 78  9a\x7d\xfd\xf1\x
4d60: 65 63 5c 78 65 61 5c 78 64 30 5c 78 36 65 5c 78  ec\xea\xd0\x6e\x
4d70: 64 36 5c 78 34 36 5c 78 61 61 5c 78 35 35 5c 78  d6\x46\xaa\x55\x
4d80: 66 65 5c 78 37 35 5c 78 37 31 5c 78 34 36 22 0a  fe\x75\x71\x46".
4d90: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 38      } -result {8
4da0: 32 61 62 66 66 36 36 30 35 64 62 65 31 63 31 37  2abff6605dbe1c17
4db0: 64 65 66 31 32 61 33 39 34 66 61 32 32 61 38 32  def12a394fa22a82
4dc0: 62 35 34 34 61 33 35 7d 0a 0a 74 65 73 74 20 52  b544a35}..test R
4dd0: 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 31 2d 32  FC6234-MD-SHA1-2
4de0: 30 2e 37 20 7b 54 43 31 30 5f 31 7d 20 2d 62 6f  0.7 {TC10_1} -bo
4df0: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
4e00: 2d 64 69 67 65 73 74 20 73 68 61 31 20 2d 64 61  -digest sha1 -da
4e10: 74 61 20 22 5c 78 66 37 5c 78 38 66 5c 78 39 32  ta "\xf7\x8f\x92
4e20: 5c 78 31 34 5c 78 31 62 5c 78 63 64 5c 78 31 37  \x14\x1b\xcd\x17
4e30: 5c 78 30 61 5c 78 65 38 5c 78 39 62 5c 78 34 66  \x0a\xe8\x9b\x4f
4e40: 5c 78 62 61 5c 78 31 35 5c 78 61 31 5c 78 64 35  \xba\x15\xa1\xd5
4e50: 5c 78 39 66 5c 78 33 66 5c 78 64 38 5c 78 34 64  \x9f\x3f\xd8\x4d
4e60: 5c 78 32 32 5c 78 33 63 5c 78 39 32 5c 78 35 31  \x22\x3c\x92\x51
4e70: 5c 78 62 64 5c 78 61 63 5c 78 62 62 5c 78 61 65  \xbd\xac\xbb\xae
4e80: 5c 78 36 31 5c 78 64 30 5c 78 35 65 5c 78 64 31  \x61\xd0\x5e\xd1
4e90: 5c 78 31 35 5c 78 61 30 5c 78 36 61 5c 78 37 63  \x15\xa0\x6a\x7c
4ea0: 5c 78 65 31 5c 78 31 37 5c 78 62 37 5c 78 62 65  \xe1\x17\xb7\xbe
4eb0: 5c 78 65 61 5c 78 64 32 5c 78 34 34 5c 78 32 31  \xea\xd2\x44\x21
4ec0: 5c 78 64 65 5c 78 64 39 5c 78 63 33 5c 78 32 35  \xde\xd9\xc3\x25
4ed0: 5c 78 39 32 5c 78 62 64 5c 78 35 37 5c 78 65 64  \x92\xbd\x57\xed
4ee0: 5c 78 65 61 5c 78 65 33 5c 78 39 63 5c 78 33 39  \xea\xe3\x9c\x39
4ef0: 5c 78 66 61 5c 78 31 66 5c 78 65 38 5c 78 39 34  \xfa\x1f\xe8\x94
4f00: 5c 78 36 61 5c 78 38 34 5c 78 64 30 5c 78 63 66  \x6a\x84\xd0\xcf
4f10: 5c 78 31 66 5c 78 37 62 5c 78 65 65 5c 78 61 64  \x1f\x7b\xee\xad
4f20: 5c 78 31 37 5c 78 31 33 5c 78 65 32 5c 78 65 30  \x17\x13\xe2\xe0
4f30: 5c 78 39 35 5c 78 39 38 5c 78 39 37 5c 78 33 34  \x95\x98\x97\x34
4f40: 5c 78 37 66 5c 78 36 37 5c 78 63 38 5c 78 30 62  \x7f\x67\xc8\x0b
4f50: 5c 78 30 34 5c 78 30 30 5c 78 63 32 5c 78 30 39  \x04\x00\xc2\x09
4f60: 5c 78 38 31 5c 78 35 64 5c 78 36 62 5c 78 31 30  \x81\x5d\x6b\x10
4f70: 5c 78 61 36 5c 78 38 33 5c 78 38 33 5c 78 36 66  \xa6\x83\x83\x6f
4f80: 5c 78 64 35 5c 78 35 36 5c 78 32 61 5c 78 35 36  \xd5\x56\x2a\x56
4f90: 5c 78 63 61 5c 78 62 31 5c 78 61 32 5c 78 38 65  \xca\xb1\xa2\x8e
4fa0: 5c 78 38 31 5c 78 62 36 5c 78 35 37 5c 78 36 36  \x81\xb6\x57\x66
4fb0: 5c 78 35 34 5c 78 36 33 5c 78 31 63 5c 78 66 31  \x54\x63\x1c\xf1
4fc0: 5c 78 36 35 5c 78 36 36 5c 78 62 38 5c 78 36 65  \x65\x66\xb8\x6e
4fd0: 5c 78 33 62 5c 78 33 33 5c 78 61 31 5c 78 30 38  \x3b\x33\xa1\x08
4fe0: 5c 78 62 30 5c 78 35 33 5c 78 30 37 5c 78 63 30  \xb0\x53\x07\xc0
4ff0: 5c 78 30 61 5c 78 66 66 5c 78 31 34 5c 78 61 37  \x0a\xff\x14\xa7
5000: 5c 78 36 38 5c 78 65 64 5c 78 37 33 5c 78 35 30  \x68\xed\x73\x50
5010: 5c 78 36 30 5c 78 36 61 5c 78 30 66 5c 78 38 35  \x60\x6a\x0f\x85
5020: 5c 78 65 36 5c 78 61 39 5c 78 31 64 5c 78 33 39  \xe6\xa9\x1d\x39
5030: 5c 78 36 66 5c 78 35 62 5c 78 35 63 5c 78 62 65  \x6f\x5b\x5c\xbe
5040: 5c 78 35 37 5c 78 37 66 5c 78 39 62 5c 78 33 38  \x57\x7f\x9b\x38
5050: 5c 78 38 30 5c 78 37 63 5c 78 37 64 5c 78 35 32  \x80\x7c\x7d\x52
5060: 5c 78 33 64 5c 78 36 64 5c 78 37 39 5c 78 32 66  \x3d\x6d\x79\x2f
5070: 5c 78 36 65 5c 78 62 63 5c 78 32 34 5c 78 61 34  \x6e\xbc\x24\xa4
5080: 5c 78 65 63 5c 78 66 32 5c 78 62 33 5c 78 61 34  \xec\xf2\xb3\xa4
5090: 5c 78 32 37 5c 78 63 64 5c 78 62 62 5c 78 66 62  \x27\xcd\xbb\xfb
50a0: 22 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20  ".    } -result 
50b0: 7b 63 62 30 30 38 32 63 38 66 31 39 37 64 32 36  {cb0082c8f197d26
50c0: 30 39 39 31 62 61 36 61 34 36 30 65 37 36 65 32  0991ba6a460e76e2
50d0: 30 32 62 61 64 32 37 62 33 7d 0a 0a 23 20 52 46  02bad27b3}..# RF
50e0: 43 20 36 32 33 34 20 53 48 41 32 35 36 0a 0a 0a  C 6234 SHA256...
50f0: 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d  test RFC6234-MD-
5100: 53 48 41 32 35 36 2d 32 31 2e 31 20 7b 54 43 31  SHA256-21.1 {TC1
5110: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
5120: 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20 73 68 61  ::md -digest sha
5130: 32 35 36 20 2d 64 61 74 61 20 22 61 62 63 22 0a  256 -data "abc".
5140: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62      } -result {b
5150: 61 37 38 31 36 62 66 38 66 30 31 63 66 65 61 34  a7816bf8f01cfea4
5160: 31 34 31 34 30 64 65 35 64 61 65 32 32 32 33 62  14140de5dae2223b
5170: 30 30 33 36 31 61 33 39 36 31 37 37 61 39 63 62  00361a396177a9cb
5180: 34 31 30 66 66 36 31 66 32 30 30 31 35 61 64 7d  410ff61f20015ad}
5190: 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d  ..test RFC6234-M
51a0: 44 2d 53 48 41 32 35 36 2d 32 31 2e 32 20 7b 54  D-SHA256-21.2 {T
51b0: 43 32 5f 31 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  C2_1} -body {..:
51c0: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
51d0: 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 22 61   sha256 -data "a
51e0: 62 63 64 62 63 64 65 63 64 65 66 64 65 66 67 65  bcdbcdecdefdefge
51f0: 66 67 68 66 67 68 69 67 68 69 6a 68 69 6a 6b 69  fghfghighijhijki
5200: 6a 6b 6c 6a 6b 6c 6d 6b 6c 6d 6e 6c 6d 6e 6f 6d  jkljklmklmnlmnom
5210: 6e 6f 70 6e 6f 70 71 22 0a 20 20 20 20 7d 20 2d  nopnopq".    } -
5220: 72 65 73 75 6c 74 20 7b 32 34 38 64 36 61 36 31  result {248d6a61
5230: 64 32 30 36 33 38 62 38 65 35 63 30 32 36 39 33  d20638b8e5c02693
5240: 30 63 33 65 36 30 33 39 61 33 33 63 65 34 35 39  0c3e6039a33ce459
5250: 36 34 66 66 32 31 36 37 66 36 65 63 65 64 64 34  64ff2167f6ecedd4
5260: 31 39 64 62 30 36 63 31 7d 0a 0a 74 65 73 74 20  19db06c1}..test 
5270: 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41 32 35  RFC6234-MD-SHA25
5280: 36 2d 32 31 2e 33 20 7b 54 43 33 7d 20 2d 62 6f  6-21.3 {TC3} -bo
5290: 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20  dy {..::tls::md 
52a0: 2d 64 69 67 65 73 74 20 73 68 61 32 35 36 20 2d  -digest sha256 -
52b0: 64 61 74 61 20 5b 73 74 72 69 6e 67 20 72 65 70  data [string rep
52c0: 65 61 74 20 22 61 22 20 31 30 30 30 30 30 30 5d  eat "a" 1000000]
52d0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
52e0: 63 64 63 37 36 65 35 63 39 39 31 34 66 62 39 32  cdc76e5c9914fb92
52f0: 38 31 61 31 63 37 65 32 38 34 64 37 33 65 36 37  81a1c7e284d73e67
5300: 66 31 38 30 39 61 34 38 61 34 39 37 32 30 30 65  f1809a48a497200e
5310: 30 34 36 64 33 39 63 63 63 37 31 31 32 63 64 30  046d39ccc7112cd0
5320: 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d  }..test RFC6234-
5330: 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e 34 20 7b  MD-SHA256-21.4 {
5340: 54 43 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a  TC4} -body {..::
5350: 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74 20  tls::md -digest 
5360: 73 68 61 32 35 36 20 2d 64 61 74 61 20 5b 73 74  sha256 -data [st
5370: 72 69 6e 67 20 72 65 70 65 61 74 20 22 30 31 32  ring repeat "012
5380: 33 34 35 36 37 22 20 38 30 5d 0a 20 20 20 20 7d  34567" 80].    }
5390: 20 2d 72 65 73 75 6c 74 20 7b 35 39 34 38 34 37   -result {594847
53a0: 33 32 38 34 35 31 62 64 66 61 38 35 30 35 36 32  328451bdfa850562
53b0: 32 35 34 36 32 63 63 31 64 38 36 37 64 38 37 37  25462cc1d867d877
53c0: 66 62 33 38 38 64 66 30 63 65 33 35 66 32 35 61  fb388df0ce35f25a
53d0: 62 35 35 36 32 62 66 62 62 35 7d 0a 0a 74 65 73  b5562bfbb5}..tes
53e0: 74 20 52 46 43 36 32 33 34 2d 4d 44 2d 53 48 41  t RFC6234-MD-SHA
53f0: 32 35 36 2d 32 31 2e 35 20 7b 54 43 36 7d 20 2d  256-21.5 {TC6} -
5400: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d  body {..::tls::m
5410: 64 20 2d 64 69 67 65 73 74 20 73 68 61 32 35 36  d -digest sha256
5420: 20 2d 64 61 74 61 20 22 5c 78 31 39 22 0a 20 20   -data "\x19".  
5430: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 36 38 61    } -result {68a
5440: 61 32 65 32 65 65 35 64 66 66 39 36 65 33 33 35  a2e2ee5dff96e335
5450: 35 65 36 63 37 65 65 33 37 33 65 33 64 36 61 34  5e6c7ee373e3d6a4
5460: 65 31 37 66 37 35 66 39 35 31 38 64 38 34 33 37  e17f75f9518d8437
5470: 30 39 63 30 63 39 62 63 33 65 33 64 34 7d 0a 0a  09c0c9bc3e3d4}..
5480: 74 65 73 74 20 52 46 43 36 32 33 34 2d 4d 44 2d  test RFC6234-MD-
5490: 53 48 41 32 35 36 2d 32 31 2e 36 20 7b 54 43 38  SHA256-21.6 {TC8
54a0: 5f 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a  _256} -body {..:
54b0: 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69 67 65 73 74  :tls::md -digest
54c0: 20 73 68 61 32 35 36 20 2d 64 61 74 61 20 22 5c   sha256 -data "\
54d0: 78 65 33 5c 78 64 37 5c 78 32 35 5c 78 37 30 5c  xe3\xd7\x25\x70\
54e0: 78 64 63 5c 78 64 64 5c 78 37 38 5c 78 37 63 5c  xdc\xdd\x78\x7c\
54f0: 78 65 33 5c 78 38 38 5c 78 37 61 5c 78 62 32 5c  xe3\x88\x7a\xb2\
5500: 78 63 64 5c 78 36 38 5c 78 34 36 5c 78 35 32 22  xcd\x68\x46\x52"
5510: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
5520: 31 37 35 65 65 36 39 62 30 32 62 61 39 62 35 38  175ee69b02ba9b58
5530: 65 32 62 30 61 35 66 64 31 33 38 31 39 63 65 61  e2b0a5fd13819cea
5540: 35 37 33 66 33 39 34 30 61 39 34 66 38 32 35 31  573f3940a94f8251
5550: 32 38 63 66 34 32 30 39 62 65 61 62 62 34 65 38  28cf4209beabb4e8
5560: 7d 0a 0a 74 65 73 74 20 52 46 43 36 32 33 34 2d  }..test RFC6234-
5570: 4d 44 2d 53 48 41 32 35 36 2d 32 31 2e 37 20 7b  MD-SHA256-21.7 {
5580: 54 43 31 30 5f 32 35 36 7d 20 2d 62 6f 64 79 20  TC10_256} -body 
5590: 7b 0a 09 3a 3a 74 6c 73 3a 3a 6d 64 20 2d 64 69  {..::tls::md -di
55a0: 67 65 73 74 20 73 68 61 32 35 36 20 2d 64 61 74  gest sha256 -dat
55b0: 61 20 22 5c 78 38 33 5c 78 32 36 5c 78 37 35 5c  a "\x83\x26\x75\
55c0: 78 34 65 5c 78 32 32 5c 78 37 37 5c 78 33 37 5c  x4e\x22\x77\x37\
55d0: 78 32 66 5c 78 34 66 5c 78 63 31 5c 78 32 62 5c  x2f\x4f\xc1\x2b\
55e0: 78 32 30 5c 78 35 32 5c 78 37 61 5c 78 66 65 5c  x20\x52\x7a\xfe\
55f0: 78 66 30 5c 78 34 64 5c 78 38 61 5c 78 30 35 5c  xf0\x4d\x8a\x05\
5600: 78 36 39 5c 78 37 31 5c 78 62 31 5c 78 31 61 5c  x69\x71\xb1\x1a\
5610: 78 64 35 5c 78 37 31 5c 78 32 33 5c 78 61 37 5c  xd5\x71\x23\xa7\
5620: 78 63 31 5c 78 33 37 5c 78 37 36 5c 78 30 30 5c  xc1\x37\x76\x00\
5630: 78 30 30 5c 78 64 37 5c 78 62 65 5c 78 66 36 5c  x00\xd7\xbe\xf6\
5640: 78 66 33 5c 78 63 31 5c 78 66 37 5c 78 61 39 5c  xf3\xc1\xf7\xa9\
5650: 78 30 38 5c 78 33 61 5c 78 61 33 5c 78 39 64 5c  x08\x3a\xa3\x9d\
5660: 78 38 31 5c 78 30 64 5c 78 62 33 5c 78 31 30 5c  x81\x0d\xb3\x10\
5670: 78 37 37 5c 78 37 64 5c 78 61 62 5c 78 38 62 5c  x77\x7d\xab\x8b\
5680: 78 31 65 5c 78 37 66 5c 78 30 32 5c 78 62 38 5c  x1e\x7f\x02\xb8\
5690: 78 34 61 5c 78 32 36 5c 78 63 37 5c 78 37 33 5c  x4a\x26\xc7\x73\
56a0: 78 33 32 5c 78 35 66 5c 78 38 62 5c 78 32 33 5c  x32\x5f\x8b\x23\
56b0: 78 37 34 5c 78 64 65 5c 78 37 61 5c 78 34 62 5c  x74\xde\x7a\x4b\
56c0: 78 35 61 5c 78 35 38 5c 78 63 62 5c 78 35 63 5c  x5a\x58\xcb\x5c\
56d0: 78 35 63 5c 78 66 33 5c 78 35 62 5c 78 63 65 5c  x5c\xf3\x5b\xce\
56e0: 78 65 36 5c 78 66 62 5c 78 39 34 5c 78 36 65 5c  xe6\xfb\x94\x6e\
56f0: 78 35 62 5c 78 64 36 5c 78 39 34 5c 78 66 61 5c  x5b\xd6\x94\xfa\
5700: 78 35 39 5c 78 33 61 5c 78 38 62 5c 78 65 62 5c  x59\x3a\x8b\xeb\
5710: 78 33 66 5c 78 39 64 5c 78 36 35 5c 78 39 32 5c  x3f\x9d\x65\x92\
5720: 78 65 63 5c 78 65 64 5c 78 61 61 5c 78 36 36 5c  xec\xed\xaa\x66\
5730: 78 63 61 5c 78 38 32 5c 78 61 32 5c 78 39 64 5c  xca\x82\xa2\x9d\
5740: 78 30 63 5c 78 35 31 5c 78 62 63 5c 78 66 39 5c  x0c\x51\xbc\xf9\
5750: 78 33 33 5c 78 36 32 5c 78 33 30 5c 78 65 35 5c  x33\x62\x30\xe5\
5760: 78 64 37 5c 78 38 34 5c 78 65 34 5c 78 63 30 5c  xd7\x84\xe4\xc0\
5770: 78 61 34 5c 78 33 66 5c 78 38 64 5c 78 37 39 5c  xa4\x3f\x8d\x79\
5780: 78 61 33 5c 78 30 61 5c 78 31 36 5c 78 35 63 5c  xa3\x0a\x16\x5c\
5790: 78 62 61 5c 78 62 65 5c 78 34 35 5c 78 32 62 5c  xba\xbe\x45\x2b\
57a0: 78 37 37 5c 78 34 62 5c 78 39 63 5c 78 37 31 5c  x77\x4b\x9c\x71\
57b0: 78 30 39 5c 78 61 39 5c 78 37 64 5c 78 31 33 5c  x09\xa9\x7d\x13\
57c0: 78 38 66 5c 78 31 32 5c 78 39 32 5c 78 32 38 5c  x8f\x12\x92\x28\
57d0: 78 39 36 5c 78 36 66 5c 78 36 63 5c 78 30 61 5c  x96\x6f\x6c\x0a\
57e0: 78 64 63 5c 78 31 30 5c 78 36 61 5c 78 61 64 5c  xdc\x10\x6a\xad\
57f0: 78 35 61 5c 78 39 66 5c 78 64 64 5c 78 33 30 5c  x5a\x9f\xdd\x30\
5800: 78 38 32 5c 78 35 37 5c 78 36 39 5c 78 62 32 5c  x82\x57\x69\xb2\
5810: 78 63 36 5c 78 37 31 5c 78 61 66 5c 78 36 37 5c  xc6\x71\xaf\x67\
5820: 78 35 39 5c 78 64 66 5c 78 32 38 5c 78 65 62 5c  x59\xdf\x28\xeb\
5830: 78 33 39 5c 78 33 64 5c 78 35 34 5c 78 64 36 22  x39\x3d\x54\xd6"
5840: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
5850: 39 37 64 62 63 61 37 64 66 34 36 64 36 32 63 38  97dbca7df46d62c8
5860: 61 34 32 32 63 39 34 31 64 64 37 65 38 33 35 62  a422c941dd7e835b
5870: 38 61 64 33 33 36 31 37 36 33 66 37 65 39 62 32  8ad3361763f7e9b2
5880: 64 39 35 66 34 66 30 64 61 36 65 31 63 63 62 63  d95f4f0da6e1ccbc
5890: 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d  }..# RFC 4231 HM
58a0: 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74  AC Examples Test
58b0: 20 43 61 73 65 20 23 31 0a 73 65 74 20 6b 65 79   Case #1.set key
58c0: 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20   [binary decode 
58d0: 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65  hex [string repe
58e0: 61 74 20 22 30 62 22 20 32 30 5d 5d 0a 73 65 74  at "0b" 20]].set
58f0: 20 64 61 74 61 20 22 48 69 20 54 68 65 72 65 22   data "Hi There"
5900: 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  ...test RFC4231_
5910: 48 4d 41 43 5f 54 43 31 2d 32 32 2e 31 20 7b 73  HMAC_TC1-22.1 {s
5920: 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha224} -body {..
5930: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
5940: 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20  est sha224 -key 
5950: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
5960: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
5970: 38 39 36 66 62 31 31 32 38 61 62 62 64 66 31 39  896fb1128abbdf19
5980: 36 38 33 32 31 30 37 63 64 34 39 64 66 33 33 66  6832107cd49df33f
5990: 34 37 62 34 62 31 31 36 39 39 31 32 62 61 34 66  47b4b1169912ba4f
59a0: 35 33 36 38 34 62 32 32 7d 0a 0a 74 65 73 74 20  53684b22}..test 
59b0: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 31  RFC4231_HMAC_TC1
59c0: 2d 32 32 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d  -22.2 {sha256} -
59d0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
59e0: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32  mac -digest sha2
59f0: 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  56 -key $key -da
5a00: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
5a10: 72 65 73 75 6c 74 20 7b 62 30 33 34 34 63 36 31  result {b0344c61
5a20: 64 38 64 62 33 38 35 33 35 63 61 38 61 66 63 65  d8db38535ca8afce
5a30: 61 66 30 62 66 31 32 62 38 38 31 64 63 32 30 30  af0bf12b881dc200
5a40: 63 39 38 33 33 64 61 37 32 36 65 39 33 37 36 63  c9833da726e9376c
5a50: 32 65 33 32 63 66 66 37 7d 0a 0a 74 65 73 74 20  2e32cff7}..test 
5a60: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 31  RFC4231_HMAC_TC1
5a70: 2d 32 32 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d  -22.3 {sha384} -
5a80: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
5a90: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 33  mac -digest sha3
5aa0: 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  84 -key $key -da
5ab0: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
5ac0: 72 65 73 75 6c 74 20 7b 61 66 64 30 33 39 34 34  result {afd03944
5ad0: 64 38 34 38 39 35 36 32 36 62 30 38 32 35 66 34  d84895626b0825f4
5ae0: 61 62 34 36 39 30 37 66 31 35 66 39 64 61 64 62  ab46907f15f9dadb
5af0: 65 34 31 30 31 65 63 36 38 32 61 61 30 33 34 63  e4101ec682aa034c
5b00: 37 63 65 62 63 35 39 63 66 61 65 61 39 65 61 39  7cebc59cfaea9ea9
5b10: 30 37 36 65 64 65 37 66 34 61 66 31 35 32 65 38  076ede7f4af152e8
5b20: 62 32 66 61 39 63 62 36 7d 0a 0a 74 65 73 74 20  b2fa9cb6}..test 
5b30: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 31  RFC4231_HMAC_TC1
5b40: 2d 32 32 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d  -22.4 {sha512} -
5b50: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
5b60: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35  mac -digest sha5
5b70: 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  12 -key $key -da
5b80: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
5b90: 72 65 73 75 6c 74 20 7b 38 37 61 61 37 63 64 65  result {87aa7cde
5ba0: 61 35 65 66 36 31 39 64 34 66 66 30 62 34 32 34  a5ef619d4ff0b424
5bb0: 31 61 31 64 36 63 62 30 32 33 37 39 66 34 65 32  1a1d6cb02379f4e2
5bc0: 63 65 34 65 63 32 37 38 37 61 64 30 62 33 30 35  ce4ec2787ad0b305
5bd0: 34 35 65 31 37 63 64 65 64 61 61 38 33 33 62 37  45e17cdedaa833b7
5be0: 64 36 62 38 61 37 30 32 30 33 38 62 32 37 34 65  d6b8a702038b274e
5bf0: 61 65 61 33 66 34 65 34 62 65 39 64 39 31 34 65  aea3f4e4be9d914e
5c00: 65 62 36 31 66 31 37 30 32 65 36 39 36 63 32 30  eb61f1702e696c20
5c10: 33 61 31 32 36 38 35 34 7d 0a 0a 23 20 52 46 43  3a126854}..# RFC
5c20: 20 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70   4231 HMAC Examp
5c30: 6c 65 73 20 54 65 73 74 20 43 61 73 65 20 23 32  les Test Case #2
5c40: 20 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 6b   - Test with a k
5c50: 65 79 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20  ey shorter than 
5c60: 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68  the length of th
5c70: 65 20 48 4d 41 43 20 6f 75 74 70 75 74 2e 0a 73  e HMAC output..s
5c80: 65 74 20 6b 65 79 20 22 4a 65 66 65 22 0a 73 65  et key "Jefe".se
5c90: 74 20 64 61 74 61 20 22 77 68 61 74 20 64 6f 20  t data "what do 
5ca0: 79 61 20 77 61 6e 74 20 66 6f 72 20 6e 6f 74 68  ya want for noth
5cb0: 69 6e 67 3f 22 0a 0a 0a 74 65 73 74 20 52 46 43  ing?"...test RFC
5cc0: 34 32 33 31 5f 48 4d 41 43 5f 54 43 32 2d 32 33  4231_HMAC_TC2-23
5cd0: 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64  .1 {sha224} -bod
5ce0: 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63  y {..::tls::hmac
5cf0: 20 2d 64 69 67 65 73 74 20 73 68 61 32 32 34 20   -digest sha224 
5d00: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
5d10: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
5d20: 75 6c 74 20 7b 61 33 30 65 30 31 30 39 38 62 63  ult {a30e01098bc
5d30: 36 64 62 62 66 34 35 36 39 30 66 33 61 37 65 39  6dbbf45690f3a7e9
5d40: 65 36 64 30 66 38 62 62 65 61 32 61 33 39 65 36  e6d0f8bbea2a39e6
5d50: 31 34 38 30 30 38 66 64 30 35 65 34 34 7d 0a 0a  148008fd05e44}..
5d60: 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41  test RFC4231_HMA
5d70: 43 5f 54 43 32 2d 32 33 2e 32 20 7b 73 68 61 32  C_TC2-23.2 {sha2
5d80: 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  56} -body {..::t
5d90: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
5da0: 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65   sha256 -key $ke
5db0: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
5dc0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 35 62 64    } -result {5bd
5dd0: 63 63 31 34 36 62 66 36 30 37 35 34 65 36 61 30  cc146bf60754e6a0
5de0: 34 32 34 32 36 30 38 39 35 37 35 63 37 35 61 30  42426089575c75a0
5df0: 30 33 66 30 38 39 64 32 37 33 39 38 33 39 64 65  03f089d2739839de
5e00: 63 35 38 62 39 36 34 65 63 33 38 34 33 7d 0a 0a  c58b964ec3843}..
5e10: 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41  test RFC4231_HMA
5e20: 43 5f 54 43 32 2d 32 33 2e 33 20 7b 73 68 61 33  C_TC2-23.3 {sha3
5e30: 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  84} -body {..::t
5e40: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
5e50: 20 73 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65   sha384 -key $ke
5e60: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
5e70: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61 66 34    } -result {af4
5e80: 35 64 32 65 33 37 36 34 38 34 30 33 31 36 31 37  5d2e376484031617
5e90: 66 37 38 64 32 62 35 38 61 36 62 31 62 39 63 37  f78d2b58a6b1b9c7
5ea0: 65 66 34 36 34 66 35 61 30 31 62 34 37 65 34 32  ef464f5a01b47e42
5eb0: 65 63 33 37 33 36 33 32 32 34 34 35 65 38 65 32  ec3736322445e8e2
5ec0: 32 34 30 63 61 35 65 36 39 65 32 63 37 38 62 33  240ca5e69e2c78b3
5ed0: 32 33 39 65 63 66 61 62 32 31 36 34 39 7d 0a 0a  239ecfab21649}..
5ee0: 74 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41  test RFC4231_HMA
5ef0: 43 5f 54 43 32 2d 32 33 2e 34 20 7b 73 68 61 35  C_TC2-23.4 {sha5
5f00: 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74  12} -body {..::t
5f10: 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74  ls::hmac -digest
5f20: 20 73 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65   sha512 -key $ke
5f30: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
5f40: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 31 36 34    } -result {164
5f50: 62 37 61 37 62 66 63 66 38 31 39 65 32 65 33 39  b7a7bfcf819e2e39
5f60: 35 66 62 65 37 33 62 35 36 65 30 61 33 38 37 62  5fbe73b56e0a387b
5f70: 64 36 34 32 32 32 65 38 33 31 66 64 36 31 30 32  d64222e831fd6102
5f80: 37 30 63 64 37 65 61 32 35 30 35 35 34 39 37 35  70cd7ea250554975
5f90: 38 62 66 37 35 63 30 35 61 39 39 34 61 36 64 30  8bf75c05a994a6d0
5fa0: 33 34 66 36 35 66 38 66 30 65 36 66 64 63 61 65  34f65f8f0e6fdcae
5fb0: 61 62 31 61 33 34 64 34 61 36 62 34 62 36 33 36  ab1a34d4a6b4b636
5fc0: 65 30 37 30 61 33 38 62 63 65 37 33 37 7d 0a 0a  e070a38bce737}..
5fd0: 23 20 52 46 43 20 34 32 33 31 20 48 4d 41 43 20  # RFC 4231 HMAC 
5fe0: 45 78 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61  Examples Test Ca
5ff0: 73 65 20 23 33 20 2d 20 54 65 73 74 20 77 69 74  se #3 - Test wit
6000: 68 20 61 20 63 6f 6d 62 69 6e 65 64 20 6c 65 6e  h a combined len
6010: 67 74 68 20 6f 66 20 6b 65 79 20 61 6e 64 20 64  gth of key and d
6020: 61 74 61 20 74 68 61 74 20 69 73 20 6c 61 72 67  ata that is larg
6030: 65 72 20 74 68 61 6e 20 36 34 20 62 79 74 65 73  er than 64 bytes
6040: 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f   (= block-size o
6050: 66 20 53 48 41 2d 32 32 34 20 61 6e 64 20 53 48  f SHA-224 and SH
6060: 41 2d 32 35 36 29 2e 0a 73 65 74 20 6b 65 79 20  A-256)..set key 
6070: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
6080: 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65 61  ex [string repea
6090: 74 20 22 61 61 22 20 32 30 5d 5d 0a 73 65 74 20  t "aa" 20]].set 
60a0: 64 61 74 61 20 5b 62 69 6e 61 72 79 20 64 65 63  data [binary dec
60b0: 6f 64 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20  ode hex [string 
60c0: 72 65 70 65 61 74 20 22 64 64 22 20 35 30 5d 5d  repeat "dd" 50]]
60d0: 0a 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  ...test RFC4231_
60e0: 48 4d 41 43 5f 54 43 33 2d 32 34 2e 31 20 7b 73  HMAC_TC3-24.1 {s
60f0: 68 61 32 32 34 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha224} -body {..
6100: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
6110: 65 73 74 20 73 68 61 32 32 34 20 2d 6b 65 79 20  est sha224 -key 
6120: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
6130: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
6140: 37 66 62 33 63 62 33 35 38 38 63 36 63 31 66 36  7fb3cb3588c6c1f6
6150: 66 66 61 39 36 39 34 64 37 64 36 61 64 32 36 34  ffa9694d7d6ad264
6160: 39 33 36 35 62 30 63 31 66 36 35 64 36 39 64 31  9365b0c1f65d69d1
6170: 65 63 38 33 33 33 65 61 7d 0a 0a 74 65 73 74 20  ec8333ea}..test 
6180: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 33  RFC4231_HMAC_TC3
6190: 2d 32 34 2e 32 20 7b 73 68 61 32 35 36 7d 20 2d  -24.2 {sha256} -
61a0: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
61b0: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32  mac -digest sha2
61c0: 35 36 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  56 -key $key -da
61d0: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
61e0: 72 65 73 75 6c 74 20 7b 37 37 33 65 61 39 31 65  result {773ea91e
61f0: 33 36 38 30 30 65 34 36 38 35 34 64 62 38 65 62  36800e46854db8eb
6200: 64 30 39 31 38 31 61 37 32 39 35 39 30 39 38 62  d09181a72959098b
6210: 33 65 66 38 63 31 32 32 64 39 36 33 35 35 31 34  3ef8c122d9635514
6220: 63 65 64 35 36 35 66 65 7d 0a 0a 74 65 73 74 20  ced565fe}..test 
6230: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 33  RFC4231_HMAC_TC3
6240: 2d 32 34 2e 33 20 7b 73 68 61 33 38 34 7d 20 2d  -24.3 {sha384} -
6250: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
6260: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 33  mac -digest sha3
6270: 38 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  84 -key $key -da
6280: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
6290: 72 65 73 75 6c 74 20 7b 38 38 30 36 32 36 30 38  result {88062608
62a0: 64 33 65 36 61 64 38 61 30 61 61 32 61 63 65 30  d3e6ad8a0aa2ace0
62b0: 31 34 63 38 61 38 36 66 30 61 61 36 33 35 64 39  14c8a86f0aa635d9
62c0: 34 37 61 63 39 66 65 62 65 38 33 65 66 34 65 35  47ac9febe83ef4e5
62d0: 35 39 36 36 31 34 34 62 32 61 35 61 62 33 39 64  5966144b2a5ab39d
62e0: 63 31 33 38 31 34 62 39 34 65 33 61 62 36 65 31  c13814b94e3ab6e1
62f0: 30 31 61 33 34 66 32 37 7d 0a 0a 74 65 73 74 20  01a34f27}..test 
6300: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 33  RFC4231_HMAC_TC3
6310: 2d 32 34 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d  -24.4 {sha512} -
6320: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
6330: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 35  mac -digest sha5
6340: 31 32 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  12 -key $key -da
6350: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
6360: 72 65 73 75 6c 74 20 7b 66 61 37 33 62 30 30 38  result {fa73b008
6370: 39 64 35 36 61 32 38 34 65 66 62 30 66 30 37 35  9d56a284efb0f075
6380: 36 63 38 39 30 62 65 39 62 31 62 35 64 62 64 64  6c890be9b1b5dbdd
6390: 38 65 65 38 31 61 33 36 35 35 66 38 33 65 33 33  8ee81a3655f83e33
63a0: 62 32 32 37 39 64 33 39 62 66 33 65 38 34 38 32  b2279d39bf3e8482
63b0: 37 39 61 37 32 32 63 38 30 36 62 34 38 35 61 34  79a722c806b485a4
63c0: 37 65 36 37 63 38 30 37 62 39 34 36 61 33 33 37  7e67c807b946a337
63d0: 62 65 65 38 39 34 32 36 37 34 32 37 38 38 35 39  bee8942674278859
63e0: 65 31 33 32 39 32 66 62 7d 0a 0a 23 20 52 46 43  e13292fb}..# RFC
63f0: 20 34 32 33 31 20 48 4d 41 43 20 45 78 61 6d 70   4231 HMAC Examp
6400: 6c 65 73 20 54 65 73 74 20 43 61 73 65 20 23 34  les Test Case #4
6410: 20 2d 20 54 65 73 74 20 77 69 74 68 20 61 20 63   - Test with a c
6420: 6f 6d 62 69 6e 65 64 20 6c 65 6e 67 74 68 20 6f  ombined length o
6430: 66 20 6b 65 79 20 61 6e 64 20 64 61 74 61 20 74  f key and data t
6440: 68 61 74 20 69 73 20 6c 61 72 67 65 72 20 74 68  hat is larger th
6450: 61 6e 20 36 34 20 62 79 74 65 73 20 28 3d 20 62  an 64 bytes (= b
6460: 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48 41  lock-size of SHA
6470: 2d 32 32 34 20 61 6e 64 20 53 48 41 2d 32 35 36  -224 and SHA-256
6480: 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61  )..set key [bina
6490: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 30  ry decode hex "0
64a0: 31 30 32 30 33 30 34 30 35 30 36 30 37 30 38 30  1020304050607080
64b0: 39 30 61 30 62 30 63 30 64 30 65 30 66 31 30 31  90a0b0c0d0e0f101
64c0: 31 31 32 31 33 31 34 31 35 31 36 31 37 31 38 31  1121314151617181
64d0: 39 22 5d 0a 73 65 74 20 64 61 74 61 20 5b 62 69  9"].set data [bi
64e0: 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20  nary decode hex 
64f0: 5b 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22  [string repeat "
6500: 63 64 22 20 35 30 5d 5d 0a 0a 0a 74 65 73 74 20  cd" 50]]...test 
6510: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 34  RFC4231_HMAC_TC4
6520: 2d 32 35 2e 31 20 7b 73 68 61 32 32 34 7d 20 2d  -25.1 {sha224} -
6530: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 68  body {..::tls::h
6540: 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68 61 32  mac -digest sha2
6550: 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61  24 -key $key -da
6560: 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d  ta $data.    } -
6570: 72 65 73 75 6c 74 20 7b 36 63 31 31 35 30 36 38  result {6c115068
6580: 37 34 30 31 33 63 61 63 36 61 32 61 62 63 31 62  74013cac6a2abc1b
6590: 62 33 38 32 36 32 37 63 65 63 36 61 39 30 64 38  b382627cec6a90d8
65a0: 36 65 66 63 30 31 32 64 65 37 61 66 65 63 35 61  6efc012de7afec5a
65b0: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
65c0: 48 4d 41 43 5f 54 43 34 2d 32 35 2e 32 20 7b 73  HMAC_TC4-25.2 {s
65d0: 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha256} -body {..
65e0: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
65f0: 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20  est sha256 -key 
6600: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
6610: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
6620: 38 32 35 35 38 61 33 38 39 61 34 34 33 63 30 65  82558a389a443c0e
6630: 61 34 63 63 38 31 39 38 39 39 66 32 30 38 33 61  a4cc819899f2083a
6640: 38 35 66 30 66 61 61 33 65 35 37 38 66 38 30 37  85f0faa3e578f807
6650: 37 61 32 65 33 66 66 34 36 37 32 39 36 36 35 62  7a2e3ff46729665b
6660: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
6670: 48 4d 41 43 5f 54 43 34 2d 32 35 2e 33 20 7b 73  HMAC_TC4-25.3 {s
6680: 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha384} -body {..
6690: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
66a0: 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65 79 20  est sha384 -key 
66b0: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
66c0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
66d0: 33 65 38 61 36 39 62 37 37 38 33 63 32 35 38 35  3e8a69b7783c2585
66e0: 31 39 33 33 61 62 36 32 39 30 61 66 36 63 61 37  1933ab6290af6ca7
66f0: 37 61 39 39 38 31 34 38 30 38 35 30 30 30 39 63  7a9981480850009c
6700: 63 35 35 37 37 63 36 65 31 66 35 37 33 62 34 65  c5577c6e1f573b4e
6710: 36 38 30 31 64 64 32 33 63 34 61 37 64 36 37 39  6801dd23c4a7d679
6720: 63 63 66 38 61 33 38 36 63 36 37 34 63 66 66 62  ccf8a386c674cffb
6730: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
6740: 48 4d 41 43 5f 54 43 34 2d 32 35 2e 34 20 7b 73  HMAC_TC4-25.4 {s
6750: 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha512} -body {..
6760: 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67  ::tls::hmac -dig
6770: 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65 79 20  est sha512 -key 
6780: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
6790: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
67a0: 62 30 62 61 34 36 35 36 33 37 34 35 38 63 36 39  b0ba465637458c69
67b0: 39 30 65 35 61 38 63 35 66 36 31 64 34 61 66 37  90e5a8c5f61d4af7
67c0: 65 35 37 36 64 39 37 66 66 39 34 62 38 37 32 64  e576d97ff94b872d
67d0: 65 37 36 66 38 30 35 30 33 36 31 65 65 33 64 62  e76f8050361ee3db
67e0: 61 39 31 63 61 35 63 31 31 61 61 32 35 65 62 34  a91ca5c11aa25eb4
67f0: 64 36 37 39 32 37 35 63 63 35 37 38 38 30 36 33  d679275cc5788063
6800: 61 35 66 31 39 37 34 31 31 32 30 63 34 66 32 64  a5f19741120c4f2d
6810: 65 32 61 64 65 62 65 62 31 30 61 32 39 38 64 64  e2adebeb10a298dd
6820: 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20 48 4d  }..# RFC 4231 HM
6830: 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65 73 74  AC Examples Test
6840: 20 43 61 73 65 20 23 35 20 2d 20 54 65 73 74 20   Case #5 - Test 
6850: 77 69 74 68 20 61 20 74 72 75 6e 63 61 74 69 6f  with a truncatio
6860: 6e 20 6f 66 20 6f 75 74 70 75 74 20 74 6f 20 31  n of output to 1
6870: 32 38 20 62 69 74 73 2e 0a 73 65 74 20 6b 65 79  28 bits..set key
6880: 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20   [binary decode 
6890: 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65 70 65  hex [string repe
68a0: 61 74 20 22 30 63 22 20 32 30 5d 5d 0a 73 65 74  at "0c" 20]].set
68b0: 20 64 61 74 61 20 22 54 65 73 74 20 57 69 74 68   data "Test With
68c0: 20 54 72 75 6e 63 61 74 69 6f 6e 22 0a 0a 0a 74   Truncation"...t
68d0: 65 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43  est RFC4231_HMAC
68e0: 5f 54 43 35 2d 32 36 2e 31 20 7b 73 68 61 32 32  _TC5-26.1 {sha22
68f0: 34 7d 20 2d 62 6f 64 79 20 7b 0a 09 73 74 72 69  4} -body {..stri
6900: 6e 67 20 72 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a  ng range [::tls:
6910: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
6920: 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a224 -key $key -
6930: 64 61 74 61 20 24 64 61 74 61 5d 20 30 20 33 31  data $data] 0 31
6940: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
6950: 30 65 32 61 65 61 36 38 61 39 30 63 38 64 33 37  0e2aea68a90c8d37
6960: 63 39 38 38 62 63 64 62 39 66 63 61 36 66 61 38  c988bcdb9fca6fa8
6970: 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33 31 5f  }..test RFC4231_
6980: 48 4d 41 43 5f 54 43 35 2d 32 36 2e 32 20 7b 73  HMAC_TC5-26.2 {s
6990: 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b 0a 09  ha256} -body {..
69a0: 73 74 72 69 6e 67 20 72 61 6e 67 65 20 5b 3a 3a  string range [::
69b0: 74 6c 73 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73  tls::hmac -diges
69c0: 74 20 73 68 61 32 35 36 20 2d 6b 65 79 20 24 6b  t sha256 -key $k
69d0: 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 5d 20  ey -data $data] 
69e0: 30 20 33 31 0a 20 20 20 20 7d 20 2d 72 65 73 75  0 31.    } -resu
69f0: 6c 74 20 7b 61 33 62 36 31 36 37 34 37 33 31 30  lt {a3b616747310
6a00: 30 65 65 30 36 65 30 63 37 39 36 63 32 39 35 35  0ee06e0c796c2955
6a10: 35 35 32 62 7d 0a 0a 74 65 73 74 20 52 46 43 34  552b}..test RFC4
6a20: 32 33 31 5f 48 4d 41 43 5f 54 43 35 2d 32 36 2e  231_HMAC_TC5-26.
6a30: 33 20 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79  3 {sha384} -body
6a40: 20 7b 0a 09 73 74 72 69 6e 67 20 72 61 6e 67 65   {..string range
6a50: 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64   [::tls::hmac -d
6a60: 69 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65  igest sha384 -ke
6a70: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
6a80: 74 61 5d 20 30 20 33 31 0a 20 20 20 20 7d 20 2d  ta] 0 31.    } -
6a90: 72 65 73 75 6c 74 20 7b 33 61 62 66 33 34 63 33  result {3abf34c3
6aa0: 35 30 33 62 32 61 32 33 61 34 36 65 66 63 36 31  503b2a23a46efc61
6ab0: 39 62 61 65 66 38 39 37 7d 0a 0a 74 65 73 74 20  9baef897}..test 
6ac0: 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54 43 35  RFC4231_HMAC_TC5
6ad0: 2d 32 36 2e 34 20 7b 73 68 61 35 31 32 7d 20 2d  -26.4 {sha512} -
6ae0: 62 6f 64 79 20 7b 0a 09 73 74 72 69 6e 67 20 72  body {..string r
6af0: 61 6e 67 65 20 5b 3a 3a 74 6c 73 3a 3a 68 6d 61  ange [::tls::hma
6b00: 63 20 2d 64 69 67 65 73 74 20 73 68 61 35 31 32  c -digest sha512
6b10: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
6b20: 20 24 64 61 74 61 5d 20 30 20 33 31 0a 20 20 20   $data] 0 31.   
6b30: 20 7d 20 2d 72 65 73 75 6c 74 20 7b 34 31 35 66   } -result {415f
6b40: 61 64 36 32 37 31 35 38 30 61 35 33 31 64 34 31  ad6271580a531d41
6b50: 37 39 62 63 38 39 31 64 38 37 61 36 7d 0a 0a 23  79bc891d87a6}..#
6b60: 20 52 46 43 20 34 32 33 31 20 48 4d 41 43 20 45   RFC 4231 HMAC E
6b70: 78 61 6d 70 6c 65 73 20 54 65 73 74 20 43 61 73  xamples Test Cas
6b80: 65 20 23 36 20 2d 20 54 65 73 74 20 77 69 74 68  e #6 - Test with
6b90: 20 61 20 6b 65 79 20 6c 61 72 67 65 72 20 74 68   a key larger th
6ba0: 61 6e 20 31 32 38 20 62 79 74 65 73 20 28 3d 20  an 128 bytes (= 
6bb0: 62 6c 6f 63 6b 2d 73 69 7a 65 20 6f 66 20 53 48  block-size of SH
6bc0: 41 2d 33 38 34 20 61 6e 64 20 53 48 41 2d 35 31  A-384 and SHA-51
6bd0: 32 29 2e 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e  2)..set key [bin
6be0: 61 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 5b  ary decode hex [
6bf0: 73 74 72 69 6e 67 20 72 65 70 65 61 74 20 22 61  string repeat "a
6c00: 61 22 20 31 33 31 5d 5d 0a 73 65 74 20 64 61 74  a" 131]].set dat
6c10: 61 20 22 54 65 73 74 20 55 73 69 6e 67 20 4c 61  a "Test Using La
6c20: 72 67 65 72 20 54 68 61 6e 20 42 6c 6f 63 6b 2d  rger Than Block-
6c30: 53 69 7a 65 20 4b 65 79 20 2d 20 48 61 73 68 20  Size Key - Hash 
6c40: 4b 65 79 20 46 69 72 73 74 22 0a 0a 0a 74 65 73  Key First"...tes
6c50: 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f 54  t RFC4231_HMAC_T
6c60: 43 36 2d 32 37 2e 31 20 7b 73 68 61 32 32 34 7d  C6-27.1 {sha224}
6c70: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
6c80: 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73 68  :hmac -digest sh
6c90: 61 32 32 34 20 2d 6b 65 79 20 24 6b 65 79 20 2d  a224 -key $key -
6ca0: 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d  data $data.    }
6cb0: 20 2d 72 65 73 75 6c 74 20 7b 39 35 65 39 61 30   -result {95e9a0
6cc0: 64 62 39 36 32 30 39 35 61 64 61 65 62 65 39 62  db962095adaebe9b
6cd0: 32 64 36 66 30 64 62 63 65 32 64 34 39 39 66 31  2d6f0dbce2d499f1
6ce0: 31 32 66 32 64 32 62 37 32 37 33 66 61 36 38 37  12f2d2b7273fa687
6cf0: 30 65 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  0e}..test RFC423
6d00: 31 5f 48 4d 41 43 5f 54 43 36 2d 32 37 2e 32 20  1_HMAC_TC6-27.2 
6d10: 7b 73 68 61 32 35 36 7d 20 2d 62 6f 64 79 20 7b  {sha256} -body {
6d20: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
6d30: 69 67 65 73 74 20 73 68 61 32 35 36 20 2d 6b 65  igest sha256 -ke
6d40: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
6d50: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
6d60: 20 7b 36 30 65 34 33 31 35 39 31 65 65 30 62 36   {60e431591ee0b6
6d70: 37 66 30 64 38 61 32 36 61 61 63 62 66 35 62 37  7f0d8a26aacbf5b7
6d80: 37 66 38 65 30 62 63 36 32 31 33 37 32 38 63 35  7f8e0bc6213728c5
6d90: 31 34 30 35 34 36 30 34 30 66 30 65 65 33 37 66  140546040f0ee37f
6da0: 35 34 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  54}..test RFC423
6db0: 31 5f 48 4d 41 43 5f 54 43 36 2d 32 37 2e 33 20  1_HMAC_TC6-27.3 
6dc0: 7b 73 68 61 33 38 34 7d 20 2d 62 6f 64 79 20 7b  {sha384} -body {
6dd0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
6de0: 69 67 65 73 74 20 73 68 61 33 38 34 20 2d 6b 65  igest sha384 -ke
6df0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
6e00: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
6e10: 20 7b 34 65 63 65 30 38 34 34 38 35 38 31 33 65   {4ece084485813e
6e20: 39 30 38 38 64 32 63 36 33 61 30 34 31 62 63 35  9088d2c63a041bc5
6e30: 62 34 34 66 39 65 66 31 30 31 32 61 32 62 35 38  b44f9ef1012a2b58
6e40: 38 66 33 63 64 31 31 66 30 35 30 33 33 61 63 34  8f3cd11f05033ac4
6e50: 63 36 30 63 32 65 66 36 61 62 34 30 33 30 66 65  c60c2ef6ab4030fe
6e60: 38 32 39 36 32 34 38 64 66 31 36 33 66 34 34 39  8296248df163f449
6e70: 35 32 7d 0a 0a 74 65 73 74 20 52 46 43 34 32 33  52}..test RFC423
6e80: 31 5f 48 4d 41 43 5f 54 43 36 2d 32 37 2e 34 20  1_HMAC_TC6-27.4 
6e90: 7b 73 68 61 35 31 32 7d 20 2d 62 6f 64 79 20 7b  {sha512} -body {
6ea0: 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d 64  ..::tls::hmac -d
6eb0: 69 67 65 73 74 20 73 68 61 35 31 32 20 2d 6b 65  igest sha512 -ke
6ec0: 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61  y $key -data $da
6ed0: 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74  ta.    } -result
6ee0: 20 7b 38 30 62 32 34 32 36 33 63 37 63 31 61 33   {80b24263c7c1a3
6ef0: 65 62 62 37 31 34 39 33 63 31 64 64 37 62 65 38  ebb71493c1dd7be8
6f00: 62 34 39 62 34 36 64 31 66 34 31 62 34 61 65 65  b49b46d1f41b4aee
6f10: 63 31 31 32 31 62 30 31 33 37 38 33 66 38 66 33  c1121b013783f8f3
6f20: 35 32 36 62 35 36 64 30 33 37 65 30 35 66 32 35  526b56d037e05f25
6f30: 39 38 62 64 30 66 64 32 32 31 35 64 36 61 31 65  98bd0fd2215d6a1e
6f40: 35 32 39 35 65 36 34 66 37 33 66 36 33 66 30 61  5295e64f73f63f0a
6f50: 65 63 38 62 39 31 35 61 39 38 35 64 37 38 36 35  ec8b915a985d7865
6f60: 39 38 7d 0a 0a 23 20 52 46 43 20 34 32 33 31 20  98}..# RFC 4231 
6f70: 48 4d 41 43 20 45 78 61 6d 70 6c 65 73 20 54 65  HMAC Examples Te
6f80: 73 74 20 43 61 73 65 20 23 37 20 2d 20 54 65 73  st Case #7 - Tes
6f90: 74 20 77 69 74 68 20 61 20 6b 65 79 20 61 6e 64  t with a key and
6fa0: 20 64 61 74 61 20 74 68 61 74 20 69 73 20 6c 61   data that is la
6fb0: 72 67 65 72 20 74 68 61 6e 20 31 32 38 20 62 79  rger than 128 by
6fc0: 74 65 73 20 28 3d 20 62 6c 6f 63 6b 2d 73 69 7a  tes (= block-siz
6fd0: 65 20 6f 66 20 53 48 41 2d 33 38 34 20 61 6e 64  e of SHA-384 and
6fe0: 20 53 48 41 2d 35 31 32 29 2e 0a 73 65 74 20 6b   SHA-512)..set k
6ff0: 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64  ey [binary decod
7000: 65 20 68 65 78 20 5b 73 74 72 69 6e 67 20 72 65  e hex [string re
7010: 70 65 61 74 20 22 61 61 22 20 31 33 31 5d 5d 0a  peat "aa" 131]].
7020: 73 65 74 20 64 61 74 61 20 22 54 68 69 73 20 69  set data "This i
7030: 73 20 61 20 74 65 73 74 20 75 73 69 6e 67 20 61  s a test using a
7040: 20 6c 61 72 67 65 72 20 74 68 61 6e 20 62 6c 6f   larger than blo
7050: 63 6b 2d 73 69 7a 65 20 6b 65 79 20 61 6e 64 20  ck-size key and 
7060: 61 20 6c 61 72 67 65 72 20 74 68 61 6e 20 62 6c  a larger than bl
7070: 6f 63 6b 2d 73 69 7a 65 20 64 61 74 61 2e 20 54  ock-size data. T
7080: 68 65 20 6b 65 79 20 6e 65 65 64 73 20 74 6f 20  he key needs to 
7090: 62 65 20 68 61 73 68 65 64 20 62 65 66 6f 72 65  be hashed before
70a0: 20 62 65 69 6e 67 20 75 73 65 64 20 62 79 20 74   being used by t
70b0: 68 65 20 48 4d 41 43 20 61 6c 67 6f 72 69 74 68  he HMAC algorith
70c0: 6d 2e 22 0a 0a 0a 74 65 73 74 20 52 46 43 34 32  m."...test RFC42
70d0: 33 31 5f 48 4d 41 43 5f 54 43 37 2d 32 38 2e 31  31_HMAC_TC7-28.1
70e0: 20 7b 73 68 61 32 32 34 7d 20 2d 62 6f 64 79 20   {sha224} -body 
70f0: 7b 0a 09 3a 3a 74 6c 73 3a 3a 68 6d 61 63 20 2d  {..::tls::hmac -
7100: 64 69 67 65 73 74 20 73 68 61 32 32 34 20 2d 6b  digest sha224 -k
7110: 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20 24 64  ey $key -data $d
7120: 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c  ata.    } -resul
7130: 74 20 7b 33 61 38 35 34 31 36 36 61 63 35 64 39  t {3a854166ac5d9
7140: 66 30 32 33 66 35 34 64 35 31 37 64 30 62 33 39  f023f54d517d0b39
7150: 64 62 64 39 34 36 37 37 30 64 62 39 63 32 62 39  dbd946770db9c2b9
7160: 35 63 39 66 36 66 35 36 35 64 31 7d 0a 0a 74 65  5c9f6f565d1}..te
7170: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
7180: 54 43 37 2d 32 38 2e 32 20 7b 73 68 61 32 35 36  TC7-28.2 {sha256
7190: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
71a0: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
71b0: 68 61 32 35 36 20 2d 6b 65 79 20 24 6b 65 79 20  ha256 -key $key 
71c0: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
71d0: 7d 20 2d 72 65 73 75 6c 74 20 7b 39 62 30 39 66  } -result {9b09f
71e0: 66 61 37 31 62 39 34 32 66 63 62 32 37 36 33 35  fa71b942fcb27635
71f0: 66 62 63 64 35 62 30 65 39 34 34 62 66 64 63 36  fbcd5b0e944bfdc6
7200: 33 36 34 34 66 30 37 31 33 39 33 38 61 37 66 35  3644f0713938a7f5
7210: 31 35 33 35 63 33 61 33 35 65 32 7d 0a 0a 74 65  1535c3a35e2}..te
7220: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
7230: 54 43 37 2d 32 38 2e 33 20 7b 73 68 61 33 38 34  TC7-28.3 {sha384
7240: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
7250: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
7260: 68 61 33 38 34 20 2d 6b 65 79 20 24 6b 65 79 20  ha384 -key $key 
7270: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
7280: 7d 20 2d 72 65 73 75 6c 74 20 7b 36 36 31 37 31  } -result {66171
7290: 37 38 65 39 34 31 66 30 32 30 64 33 35 31 65 32  78e941f020d351e2
72a0: 66 32 35 34 65 38 66 64 33 32 63 36 30 32 34 32  f254e8fd32c60242
72b0: 30 66 65 62 30 62 38 66 62 39 61 64 63 63 65 62  0feb0b8fb9adcceb
72c0: 62 38 32 34 36 31 65 39 39 63 35 61 36 37 38 63  b82461e99c5a678c
72d0: 63 33 31 65 37 39 39 31 37 36 64 33 38 36 30 65  c31e799176d3860e
72e0: 36 31 31 30 63 34 36 35 32 33 65 7d 0a 0a 74 65  6110c46523e}..te
72f0: 73 74 20 52 46 43 34 32 33 31 5f 48 4d 41 43 5f  st RFC4231_HMAC_
7300: 54 43 37 2d 32 38 2e 34 20 7b 73 68 61 35 31 32  TC7-28.4 {sha512
7310: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
7320: 3a 3a 68 6d 61 63 20 2d 64 69 67 65 73 74 20 73  ::hmac -digest s
7330: 68 61 35 31 32 20 2d 6b 65 79 20 24 6b 65 79 20  ha512 -key $key 
7340: 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20 20 20  -data $data.    
7350: 7d 20 2d 72 65 73 75 6c 74 20 7b 65 33 37 62 36  } -result {e37b6
7360: 61 37 37 35 64 63 38 37 64 62 61 61 34 64 66 61  a775dc87dbaa4dfa
7370: 39 66 39 36 65 35 65 33 66 66 64 64 65 62 64 37  9f96e5e3ffddebd7
7380: 31 66 38 38 36 37 32 38 39 38 36 35 64 66 35 61  1f8867289865df5a
7390: 33 32 64 32 30 63 64 63 39 34 34 62 36 30 32 32  32d20cdc944b6022
73a0: 63 61 63 33 63 34 39 38 32 62 31 30 64 35 65 65  cac3c4982b10d5ee
73b0: 62 35 35 63 33 65 34 64 65 31 35 31 33 34 36 37  b55c3e4de1513467
73c0: 36 66 62 36 64 65 30 34 34 36 30 36 35 63 39 37  6fb6de0446065c97
73d0: 34 34 30 66 61 38 63 36 61 35 38 7d 0a 0a 23 20  440fa8c6a58}..# 
73e0: 4e 49 53 54 20 38 30 30 2d 33 38 62 20 52 65 63  NIST 800-38b Rec
73f0: 6f 6d 6d 65 6e 64 61 74 69 6f 6e 20 66 6f 72 20  ommendation for 
7400: 42 6c 6f 63 6b 20 43 69 70 68 65 72 20 4d 6f 64  Block Cipher Mod
7410: 65 73 20 6f 66 20 4f 70 65 72 61 74 69 6f 6e 3a  es of Operation:
7420: 20 54 68 65 20 43 4d 41 43 20 4d 6f 64 65 20 66   The CMAC Mode f
7430: 6f 72 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f  or Authenticatio
7440: 6e 0a 23 20 41 45 53 2d 31 32 38 0a 73 65 74 20  n.# AES-128.set 
7450: 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  key [binary deco
7460: 64 65 20 68 65 78 20 22 32 62 37 65 31 35 31 36  de hex "2b7e1516
7470: 32 38 61 65 64 32 61 36 61 62 66 37 31 35 38 38  28aed2a6abf71588
7480: 30 39 63 66 34 66 33 63 22 5d 0a 0a 0a 74 65 73  09cf4f3c"]...tes
7490: 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45  t NIST800-38b-AE
74a0: 53 31 32 38 2d 32 39 2e 31 20 7b 6c 65 6e 3d 30  S128-29.1 {len=0
74b0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
74c0: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61  ::cmac -cipher a
74d0: 65 73 2d 31 32 38 2d 63 62 63 20 2d 6b 65 79 20  es-128-cbc -key 
74e0: 24 6b 65 79 20 2d 64 61 74 61 20 22 22 0a 20 20  $key -data "".  
74f0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 62 62 31    } -result {bb1
7500: 64 36 39 32 39 65 39 35 39 33 37 32 38 37 66 61  d6929e95937287fa
7510: 33 37 64 31 32 39 62 37 35 36 37 34 36 7d 0a 73  37d129b756746}.s
7520: 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20  et data [binary 
7530: 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31  decode hex "6bc1
7540: 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64  bee22e409f96e93d
7550: 37 65 31 31 37 33 39 33 31 37 32 61 22 5d 0a 0a  7e117393172a"]..
7560: 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62  test NIST800-38b
7570: 2d 41 45 53 31 32 38 2d 32 39 2e 32 20 7b 6c 65  -AES128-29.2 {le
7580: 6e 3d 31 32 38 7d 20 2d 62 6f 64 79 20 7b 0a 09  n=128} -body {..
7590: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70  ::tls::cmac -cip
75a0: 68 65 72 20 61 65 73 2d 31 32 38 2d 63 62 63 20  her aes-128-cbc 
75b0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
75c0: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
75d0: 75 6c 74 20 7b 30 37 30 61 31 36 62 34 36 62 34  ult {070a16b46b4
75e0: 64 34 31 34 34 66 37 39 62 64 64 39 64 64 30 34  d4144f79bdd9dd04
75f0: 61 32 38 37 63 7d 0a 73 65 74 20 64 61 74 61 20  a287c}.set data 
7600: 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68  [binary decode h
7610: 65 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30  ex "6bc1bee22e40
7620: 39 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33  9f96e93d7e117393
7630: 31 37 32 61 61 65 32 64 38 61 35 37 31 65 30 33  172aae2d8a571e03
7640: 61 63 39 63 39 65 62 37 36 66 61 63 34 35 61 66  ac9c9eb76fac45af
7650: 38 65 35 31 33 30 63 38 31 63 34 36 61 33 35 63  8e5130c81c46a35c
7660: 65 34 31 31 22 5d 0a 0a 74 65 73 74 20 4e 49 53  e411"]..test NIS
7670: 54 38 30 30 2d 33 38 62 2d 41 45 53 31 32 38 2d  T800-38b-AES128-
7680: 32 39 2e 33 20 7b 6c 65 6e 3d 33 32 30 7d 20 2d  29.3 {len=320} -
7690: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
76a0: 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d  mac -cipher aes-
76b0: 31 32 38 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65  128-cbc -key $ke
76c0: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
76d0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 64 66 61    } -result {dfa
76e0: 36 36 37 34 37 64 65 39 61 65 36 33 30 33 30 63  66747de9ae63030c
76f0: 61 33 32 36 31 31 34 39 37 63 38 32 37 7d 0a 73  a32611497c827}.s
7700: 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20  et data [binary 
7710: 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31  decode hex "6bc1
7720: 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64  bee22e409f96e93d
7730: 37 65 31 31 37 33 39 33 31 37 32 61 61 65 32 64  7e117393172aae2d
7740: 38 61 35 37 31 65 30 33 61 63 39 63 39 65 62 37  8a571e03ac9c9eb7
7750: 36 66 61 63 34 35 61 66 38 65 35 31 33 30 63 38  6fac45af8e5130c8
7760: 31 63 34 36 61 33 35 63 65 34 31 31 65 35 66 62  1c46a35ce411e5fb
7770: 63 31 31 39 31 61 30 61 35 32 65 66 66 36 39 66  c1191a0a52eff69f
7780: 32 34 34 35 64 66 34 66 39 62 31 37 61 64 32 62  2445df4f9b17ad2b
7790: 34 31 37 62 65 36 36 63 33 37 31 30 22 5d 0a 0a  417be66c3710"]..
77a0: 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62  test NIST800-38b
77b0: 2d 41 45 53 31 32 38 2d 32 39 2e 34 20 7b 6c 65  -AES128-29.4 {le
77c0: 6e 3d 35 31 32 7d 20 2d 62 6f 64 79 20 7b 0a 09  n=512} -body {..
77d0: 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69 70  ::tls::cmac -cip
77e0: 68 65 72 20 61 65 73 2d 31 32 38 2d 63 62 63 20  her aes-128-cbc 
77f0: 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61 20  -key $key -data 
7800: 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65 73  $data.    } -res
7810: 75 6c 74 20 7b 35 31 66 30 62 65 62 66 37 65 33  ult {51f0bebf7e3
7820: 62 39 64 39 32 66 63 34 39 37 34 31 37 37 39 33  b9d92fc497417793
7830: 36 33 63 66 65 7d 0a 0a 23 20 41 45 53 2d 31 39  63cfe}..# AES-19
7840: 32 0a 73 65 74 20 6b 65 79 20 5b 62 69 6e 61 72  2.set key [binar
7850: 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 38 65  y decode hex "8e
7860: 37 33 62 30 66 37 64 61 30 65 36 34 35 32 63 38  73b0f7da0e6452c8
7870: 31 30 66 33 32 62 38 30 39 30 37 39 65 35 36 32  10f32b809079e562
7880: 66 38 65 61 64 32 35 32 32 63 36 62 37 62 22 5d  f8ead2522c6b7b"]
7890: 0a 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d  ...test NIST800-
78a0: 33 38 62 2d 41 45 53 2d 31 39 32 2d 33 30 2e 31  38b-AES-192-30.1
78b0: 20 7b 6c 65 6e 3d 30 7d 20 2d 62 6f 64 79 20 7b   {len=0} -body {
78c0: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63  ..::tls::cmac -c
78d0: 69 70 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62  ipher aes-192-cb
78e0: 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  c -key $key -dat
78f0: 61 20 22 22 0a 20 20 20 20 7d 20 2d 72 65 73 75  a "".    } -resu
7900: 6c 74 20 7b 64 31 37 64 64 66 34 36 61 64 61 61  lt {d17ddf46adaa
7910: 63 64 65 35 33 31 63 61 63 34 38 33 64 65 37 61  cde531cac483de7a
7920: 39 33 36 37 7d 0a 73 65 74 20 64 61 74 61 20 5b  9367}.set data [
7930: 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20 68 65  binary decode he
7940: 78 20 22 36 62 63 31 62 65 65 32 32 65 34 30 39  x "6bc1bee22e409
7950: 66 39 36 65 39 33 64 37 65 31 31 37 33 39 33 31  f96e93d7e1173931
7960: 37 32 61 22 5d 0a 0a 74 65 73 74 20 4e 49 53 54  72a"]..test NIST
7970: 38 30 30 2d 33 38 62 2d 41 45 53 2d 31 39 32 2d  800-38b-AES-192-
7980: 33 30 2e 32 20 7b 6c 65 6e 3d 31 32 38 7d 20 2d  30.2 {len=128} -
7990: 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63  body {..::tls::c
79a0: 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65 73 2d  mac -cipher aes-
79b0: 31 39 32 2d 63 62 63 20 2d 6b 65 79 20 24 6b 65  192-cbc -key $ke
79c0: 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a 20 20  y -data $data.  
79d0: 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 39 65 39    } -result {9e9
79e0: 39 61 37 62 66 33 31 65 37 31 30 39 30 30 36 36  9a7bf31e71090066
79f0: 32 66 36 35 65 36 31 37 63 35 31 38 34 7d 0a 73  2f65e617c5184}.s
7a00: 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79 20  et data [binary 
7a10: 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63 31  decode hex "6bc1
7a20: 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33 64  bee22e409f96e93d
7a30: 37 65 31 31 37 33 39 33 31 37 32 61 61 65 32 64  7e117393172aae2d
7a40: 38 61 35 37 31 65 30 33 61 63 39 63 39 65 62 37  8a571e03ac9c9eb7
7a50: 36 66 61 63 34 35 61 66 38 65 35 31 33 30 63 38  6fac45af8e5130c8
7a60: 31 63 34 36 61 33 35 63 65 34 31 31 22 5d 0a 0a  1c46a35ce411"]..
7a70: 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38 62  test NIST800-38b
7a80: 2d 41 45 53 2d 31 39 32 2d 33 30 2e 33 20 7b 6c  -AES-192-30.3 {l
7a90: 65 6e 3d 33 32 30 7d 20 2d 62 6f 64 79 20 7b 0a  en=320} -body {.
7aa0: 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63 69  .::tls::cmac -ci
7ab0: 70 68 65 72 20 61 65 73 2d 31 39 32 2d 63 62 63  pher aes-192-cbc
7ac0: 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74 61   -key $key -data
7ad0: 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72 65   $data.    } -re
7ae0: 73 75 6c 74 20 7b 38 61 31 64 65 35 62 65 32 65  sult {8a1de5be2e
7af0: 62 33 31 61 61 64 30 38 39 61 38 32 65 36 65 65  b31aad089a82e6ee
7b00: 39 30 38 62 30 65 7d 0a 73 65 74 20 64 61 74 61  908b0e}.set data
7b10: 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65 20   [binary decode 
7b20: 68 65 78 20 22 36 62 63 31 62 65 65 32 32 65 34  hex "6bc1bee22e4
7b30: 30 39 66 39 36 65 39 33 64 37 65 31 31 37 33 39  09f96e93d7e11739
7b40: 33 31 37 32 61 61 65 32 64 38 61 35 37 31 65 30  3172aae2d8a571e0
7b50: 33 61 63 39 63 39 65 62 37 36 66 61 63 34 35 61  3ac9c9eb76fac45a
7b60: 66 38 65 35 31 33 30 63 38 31 63 34 36 61 33 35  f8e5130c81c46a35
7b70: 63 65 34 31 31 65 35 66 62 63 31 31 39 31 61 30  ce411e5fbc1191a0
7b80: 61 35 32 65 66 66 36 39 66 32 34 34 35 64 66 34  a52eff69f2445df4
7b90: 66 39 62 31 37 61 64 32 62 34 31 37 62 65 36 36  f9b17ad2b417be66
7ba0: 63 33 37 31 30 22 5d 0a 0a 74 65 73 74 20 4e 49  c3710"]..test NI
7bb0: 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 31 39  ST800-38b-AES-19
7bc0: 32 2d 33 30 2e 34 20 7b 6c 65 6e 3d 35 31 32 7d  2-30.4 {len=512}
7bd0: 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73 3a   -body {..::tls:
7be0: 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61 65  :cmac -cipher ae
7bf0: 73 2d 31 39 32 2d 63 62 63 20 2d 6b 65 79 20 24  s-192-cbc -key $
7c00: 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61 0a  key -data $data.
7c10: 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 61      } -result {a
7c20: 31 64 35 64 66 30 65 65 64 37 39 30 66 37 39 34  1d5df0eed790f794
7c30: 64 37 37 35 38 39 36 35 39 66 33 39 61 31 31 7d  d77589659f39a11}
7c40: 0a 0a 23 20 41 45 53 2d 32 35 36 0a 73 65 74 20  ..# AES-256.set 
7c50: 6b 65 79 20 5b 62 69 6e 61 72 79 20 64 65 63 6f  key [binary deco
7c60: 64 65 20 68 65 78 20 22 36 30 33 64 65 62 31 30  de hex "603deb10
7c70: 31 35 63 61 37 31 62 65 32 62 37 33 61 65 66 30  15ca71be2b73aef0
7c80: 38 35 37 64 37 37 38 31 31 66 33 35 32 63 30 37  857d77811f352c07
7c90: 33 62 36 31 30 38 64 37 32 64 39 38 31 30 61 33  3b6108d72d9810a3
7ca0: 30 39 31 34 64 66 66 34 22 5d 0a 0a 0a 74 65 73  0914dff4"]...tes
7cb0: 74 20 4e 49 53 54 38 30 30 2d 33 38 62 2d 41 45  t NIST800-38b-AE
7cc0: 53 2d 32 35 36 2d 33 31 2e 31 20 7b 6c 65 6e 3d  S-256-31.1 {len=
7cd0: 30 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c  0} -body {..::tl
7ce0: 73 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20  s::cmac -cipher 
7cf0: 61 65 73 2d 32 35 36 2d 63 62 63 20 2d 6b 65 79  aes-256-cbc -key
7d00: 20 24 6b 65 79 20 2d 64 61 74 61 20 22 22 0a 20   $key -data "". 
7d10: 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b 30 32     } -result {02
7d20: 38 39 36 32 66 36 31 62 37 62 66 38 39 65 66 63  8962f61b7bf89efc
7d30: 36 62 35 35 31 66 34 36 36 37 64 39 38 33 7d 0a  6b551f4667d983}.
7d40: 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61 72 79  set data [binary
7d50: 20 64 65 63 6f 64 65 20 68 65 78 20 22 36 62 63   decode hex "6bc
7d60: 31 62 65 65 32 32 65 34 30 39 66 39 36 65 39 33  1bee22e409f96e93
7d70: 64 37 65 31 31 37 33 39 33 31 37 32 61 22 5d 0a  d7e117393172a"].
7d80: 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d 33 38  .test NIST800-38
7d90: 62 2d 41 45 53 2d 32 35 36 2d 33 31 2e 32 20 7b  b-AES-256-31.2 {
7da0: 6c 65 6e 3d 31 32 38 7d 20 2d 62 6f 64 79 20 7b  len=128} -body {
7db0: 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20 2d 63  ..::tls::cmac -c
7dc0: 69 70 68 65 72 20 61 65 73 2d 32 35 36 2d 63 62  ipher aes-256-cb
7dd0: 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64 61 74  c -key $key -dat
7de0: 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20 2d 72  a $data.    } -r
7df0: 65 73 75 6c 74 20 7b 32 38 61 37 30 32 33 66 34  esult {28a7023f4
7e00: 35 32 65 38 66 38 32 62 64 34 62 66 32 38 64 38  52e8f82bd4bf28d8
7e10: 63 33 37 63 33 35 63 7d 0a 73 65 74 20 64 61 74  c37c35c}.set dat
7e20: 61 20 5b 62 69 6e 61 72 79 20 64 65 63 6f 64 65  a [binary decode
7e30: 20 68 65 78 20 22 36 62 63 31 62 65 65 32 32 65   hex "6bc1bee22e
7e40: 34 30 39 66 39 36 65 39 33 64 37 65 31 31 37 33  409f96e93d7e1173
7e50: 39 33 31 37 32 61 61 65 32 64 38 61 35 37 31 65  93172aae2d8a571e
7e60: 30 33 61 63 39 63 39 65 62 37 36 66 61 63 34 35  03ac9c9eb76fac45
7e70: 61 66 38 65 35 31 33 30 63 38 31 63 34 36 61 33  af8e5130c81c46a3
7e80: 35 63 65 34 31 31 22 5d 0a 0a 74 65 73 74 20 4e  5ce411"]..test N
7e90: 49 53 54 38 30 30 2d 33 38 62 2d 41 45 53 2d 32  IST800-38b-AES-2
7ea0: 35 36 2d 33 31 2e 33 20 7b 6c 65 6e 3d 33 32 30  56-31.3 {len=320
7eb0: 7d 20 2d 62 6f 64 79 20 7b 0a 09 3a 3a 74 6c 73  } -body {..::tls
7ec0: 3a 3a 63 6d 61 63 20 2d 63 69 70 68 65 72 20 61  ::cmac -cipher a
7ed0: 65 73 2d 32 35 36 2d 63 62 63 20 2d 6b 65 79 20  es-256-cbc -key 
7ee0: 24 6b 65 79 20 2d 64 61 74 61 20 24 64 61 74 61  $key -data $data
7ef0: 0a 20 20 20 20 7d 20 2d 72 65 73 75 6c 74 20 7b  .    } -result {
7f00: 61 61 66 33 64 38 66 31 64 65 35 36 34 30 63 32  aaf3d8f1de5640c2
7f10: 33 32 66 35 62 31 36 39 62 39 63 39 31 31 65 36  32f5b169b9c911e6
7f20: 7d 0a 73 65 74 20 64 61 74 61 20 5b 62 69 6e 61  }.set data [bina
7f30: 72 79 20 64 65 63 6f 64 65 20 68 65 78 20 22 36  ry decode hex "6
7f40: 62 63 31 62 65 65 32 32 65 34 30 39 66 39 36 65  bc1bee22e409f96e
7f50: 39 33 64 37 65 31 31 37 33 39 33 31 37 32 61 61  93d7e117393172aa
7f60: 65 32 64 38 61 35 37 31 65 30 33 61 63 39 63 39  e2d8a571e03ac9c9
7f70: 65 62 37 36 66 61 63 34 35 61 66 38 65 35 31 33  eb76fac45af8e513
7f80: 30 63 38 31 63 34 36 61 33 35 63 65 34 31 31 65  0c81c46a35ce411e
7f90: 35 66 62 63 31 31 39 31 61 30 61 35 32 65 66 66  5fbc1191a0a52eff
7fa0: 36 39 66 32 34 34 35 64 66 34 66 39 62 31 37 61  69f2445df4f9b17a
7fb0: 64 32 62 34 31 37 62 65 36 36 63 33 37 31 30 22  d2b417be66c3710"
7fc0: 5d 0a 0a 74 65 73 74 20 4e 49 53 54 38 30 30 2d  ]..test NIST800-
7fd0: 33 38 62 2d 41 45 53 2d 32 35 36 2d 33 31 2e 34  38b-AES-256-31.4
7fe0: 20 7b 6c 65 6e 3d 35 31 32 7d 20 2d 62 6f 64 79   {len=512} -body
7ff0: 20 7b 0a 09 3a 3a 74 6c 73 3a 3a 63 6d 61 63 20   {..::tls::cmac 
8000: 2d 63 69 70 68 65 72 20 61 65 73 2d 32 35 36 2d  -cipher aes-256-
8010: 63 62 63 20 2d 6b 65 79 20 24 6b 65 79 20 2d 64  cbc -key $key -d
8020: 61 74 61 20 24 64 61 74 61 0a 20 20 20 20 7d 20  ata $data.    } 
8030: 2d 72 65 73 75 6c 74 20 7b 65 31 39 39 32 31 39  -result {e199219
8040: 30 35 34 39 66 36 65 64 35 36 39 36 61 32 63 30  0549f6ed5696a2c0
8050: 35 36 63 33 31 35 34 31 30 7d 0a 0a 23 20 43 6c  56c315410}..# Cl
8060: 65 61 6e 75 70 0a 3a 3a 74 63 6c 74 65 73 74 3a  eanup.::tcltest:
8070: 3a 72 65 6d 6f 76 65 46 69 6c 65 20 24 74 65 73  :removeFile $tes
8080: 74 5f 66 69 6c 65 0a 3a 3a 74 63 6c 74 65 73 74  t_file.::tcltest
8090: 3a 3a 72 65 6d 6f 76 65 46 69 6c 65 20 24 74 65  ::removeFile $te
80a0: 73 74 5f 61 6c 74 5f 66 69 6c 65 0a 0a 23 20 43  st_alt_file..# C
80b0: 6c 65 61 6e 75 70 0a 3a 3a 74 63 6c 74 65 73 74  leanup.::tcltest
80c0: 3a 3a 63 6c 65 61 6e 75 70 54 65 73 74 73 0a 72  ::cleanupTests.r
80d0: 65 74 75 72 6e 0a                                eturn.